From 1739e0c09c04aadceee8d9a2f9b290622cdd0604 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sat, 16 Feb 2019 20:00:38 +0100 Subject: [PATCH 001/231] Highlight NimScript files (.nims) as Nim --- runtime/syntax/nim.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/syntax/nim.yaml b/runtime/syntax/nim.yaml index e766cad9..ce2985c1 100644 --- a/runtime/syntax/nim.yaml +++ b/runtime/syntax/nim.yaml @@ -1,7 +1,7 @@ filetype: nim -detect: - filename: "\\.nim$" +detect: + filename: "\\.nims?$" rules: - preproc: "[\\{\\|]\\b(atom|lit|sym|ident|call|lvalue|sideeffect|nosideeffect|param|genericparam|module|type|let|var|const|result|proc|method|iterator|converter|macro|template|field|enumfield|forvar|label|nk[a-zA-Z]+|alias|noalias)\\b[\\}\\|]" From bcb876504937509595d040af9b0aa4fe261f0dfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20Besan=C3=A7on?= Date: Mon, 29 Apr 2019 15:29:21 +0200 Subject: [PATCH 002/231] Update julia.yaml Some keywords are not in Julia and were removed. `include` is a standard function with no special property (no syntax-level highlight required) --- runtime/syntax/julia.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/syntax/julia.yaml b/runtime/syntax/julia.yaml index c92a0ddf..b8d301ff 100644 --- a/runtime/syntax/julia.yaml +++ b/runtime/syntax/julia.yaml @@ -13,11 +13,11 @@ rules: # definitions - identifier: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[(]" # keywords - - statement: "\\b(begin|break|catch|continue|function|elseif|struct|else|end|finally|for|global|local|const|if|include|import|using|require|macro|println|return|try|type|while|module)\\b" + - statement: "\\b(begin|break|catch|continue|function|elseif|struct|else|end|finally|for|global|local|let|const|if|import|using|macro|println|return|try|while|module)\\b" # decorators - identifier.macro: "@[A-Za-z0-9_]+" # operators - - symbol.operator: "[-+*/|=%<>&~^]|\\b(and|not|or|is|in)\\b" + - symbol.operator: "[-+*/|=%<>&~^]|\\b(isa|in)\\b" # parentheses - symbol.brackets: "([(){}]|\\[|\\])" # numbers From e33489c04f2937db767bcfca91834526a2a8552c Mon Sep 17 00:00:00 2001 From: Didactic Drunk <1479616+didactic-drunk@users.noreply.github.com> Date: Sun, 10 Mar 2019 10:36:42 -0700 Subject: [PATCH 003/231] Ruby syntax improvements. String interpolation for Crystal syntax. --- runtime/syntax/crystal.yaml | 6 +++- runtime/syntax/ruby.yaml | 62 +++++++++++++++++++++++++++++++------ 2 files changed, 57 insertions(+), 11 deletions(-) diff --git a/runtime/syntax/crystal.yaml b/runtime/syntax/crystal.yaml index de80e531..faf0c700 100644 --- a/runtime/syntax/crystal.yaml +++ b/runtime/syntax/crystal.yaml @@ -36,7 +36,11 @@ rules: skip: "\\\\." rules: - constant.specialChar: "\\\\." - - special: "#\\{[^}]*\\}" + - symbol.brackets: + start: "#\\{" + end: "\\}" + rules: + - default: ".*" - constant.string: start: "'" diff --git a/runtime/syntax/ruby.yaml b/runtime/syntax/ruby.yaml index b0b1816e..593fad52 100644 --- a/runtime/syntax/ruby.yaml +++ b/runtime/syntax/ruby.yaml @@ -1,26 +1,68 @@ filetype: ruby detect: - filename: "\\.rb$|\\.gemspec$|Gemfile|config.ru|Rakefile|Capfile|Vagrantfile" + filename: "\\.(rb|rake|gemspec)$|^(Gemfile|config.ru|Rakefile|Capfile|Vagrantfile|Guardfile)$" header: "^#!.*/(env +)?ruby( |$)" rules: - - statement: "\\b(BEGIN|END|alias|and|begin|break|case|class|def|defined\\?|do|else|elsif|end|ensure|false|for|if|in|module|next|nil|not|or|redo|rescue|retry|return|self|super|then|true|undef|unless|until|when|while|yield)\\b" + - comment.bright: + start: "##" + end: "$" + rules: + - todo: "(XXX|TODO|FIXME|BUG|\\?\\?\\?)" + - comment: + start: "#" + end: "$" + rules: + - todo: "(XXX|TODO|FIXME|BUG|\\?\\?\\?)" + + - statement: "\\b(BEGIN|END|alias|and|begin|break|case|class|def|defined\\?|do|else|elsif|end|ensure|for|if|in|module|next|nil|not|or|private|protected|public|redo|rescue|retry|return|self|super|then|undef|unless|until|when|while|yield)\\b" - constant: "(\\$|@|@@)?\\b[A-Z]+[0-9A-Z_a-z]*" - - constant.number: "\\b[0-9]+\\b" + - constant.number: "(?i)\\b0x[0-9a-f][0-9a-f_]*\\b" + - constant.number: "(?i)\\b0b[01][01_]*\\b" + - constant.number: "(?i)\\b[0-9][0-9_]*(['.'][0-9_]+)?(e[\\-]?[0-9_]+)?\\b" + # Ruby "Symbols" - constant: "(i?)([ ]|^):[0-9A-Z_]+\\b" - constant: "\\b(__FILE__|__LINE__)\\b" - constant: "/([^/]|(\\\\/))*/[iomx]*|%r\\{([^}]|(\\\\}))*\\}[iomx]*" - - constant.string: "`[^`]*`|%x\\{[^}]*\\}" - - constant.string: "\"([^\"]|(\\\\\"))*\"|%[QW]?\\{[^}]*\\}|%[QW]?\\([^)]*\\)|%[QW]?<[^>]*>|%[QW]?\\[[^]]*\\]|%[QW]?\\$[^$]*\\$|%[QW]?\\^[^^]*\\^|%[QW]?![^!]*!" - - special: "#\\{[^}]*\\}" - - constant.string: "'([^']|(\\\\'))*'|%[qw]\\{[^}]*\\}|%[qw]\\([^)]*\\)|%[qw]<[^>]*>|%[qw]\\[[^]]*\\]|%[qw]\\$[^$]*\\$|%[qw]\\^[^^]*\\^|%[qw]![^!]*!" - - comment: "#[^{].*$|#$" - - comment.bright: "##[^{].*$|##$" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: [] + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - symbol.brackets: + start: "#\\{" + end: "\\}" + rules: + - default: ".*" + + - constant.string.exec: + start: "`" + end: "`" + skip: "\\\\." + rules: + - symbol.brackets: + start: "#\\{" + end: "\\}" + rules: + - default: ".*" + + - constant.string: "%[QW]?\\{[^}]*\\}|%[QW]?\\([^)]*\\)|%[QW]?<[^>]*>|%[QW]?\\[[^]]*\\]|%[QW]?\\$[^$]*\\$|%[QW]?\\^[^^]*\\^|%[QW]?![^!]*!" + - constant.string: "%[qw]\\{[^}]*\\}|%[qw]\\([^)]*\\)|%[qw]<[^>]*>|%[qw]\\[[^]]*\\]|%[qw]\\$[^$]*\\$|%[qw]\\^[^^]*\\^|%[qw]![^!]*!" + - constant.string.exec: "%[x]\\{[^}]*\\}|%[x]\\([^)]*\\)|%[x]<[^>]*>|%[x]\\[[^]]*\\]|%[x]\\$[^$]*\\$|%[x]\\^[^^]*\\^|%[x]![^!]*!" + - constant.bool: "\\b(true|false|nil|TRUE|FALSE|NIL)\\b" + - symbol.operator: "[-+/*=<>!~%&|^]|\\b:" + - symbol.brackets: "([(){}]|\\[|\\])" - constant.macro: start: "<<-?'?EOT'?" end: "^EOT" rules: [] - - todo: "(XXX|TODO|FIXME|\\?\\?\\?)" - preproc.shebang: "^#!.+?( |$)" From e9337da43f5dbcd1a80a08c3a034339881bf049d Mon Sep 17 00:00:00 2001 From: Isaac Andrade Date: Wed, 31 Jul 2019 12:48:51 -0600 Subject: [PATCH 004/231] Separate keys with + sign for consistency Some textual changes (without changing formatting) were made to table header lines. This is a tiny and almost inconsequential change to improve readability. --- runtime/help/defaultkeys.md | 88 ++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/runtime/help/defaultkeys.md b/runtime/help/defaultkeys.md index a50f189e..b2d4790a 100644 --- a/runtime/help/defaultkeys.md +++ b/runtime/help/defaultkeys.md @@ -10,29 +10,29 @@ can change it! ### Power user | Key | Description of function | -|-------- |-------------------------------------------------------------------------------------------------- | +|---------- |-------------------------------------------------------------------------------------------------- | | Ctrl+E | Open a command prompt for running commands (see `> help commands` for a list of valid commands). | | Tab | In command prompt, it will autocomplete if possible. | | Ctrl+B | Run a shell command (this will close micro while your command executes). | ### Navigation -| Key | Description of function | -|-------------------------- |------------------------------------------------------------------------------------------ | -| Arrows | Move the cursor around | -| Shift+arrows | Move and select text | -| Home or CtrlLeftArrow | Move to the beginning of the current line | -| End or CtrlRightArrow | Move to the end of the current line | -| AltLeftArrow | Move cursor one word left | -| AltRightArrow | Move cursor one word right | -| Alt+{ | Move cursor to previous empty line, or beginning of document | -| Alt+} | Move cursor to next empty line, or end of document | -| PageUp | Move cursor up one page | -| PageDown | Move cursor down one page | -| CtrlHome or CtrlUpArrow | Move cursor to start of document | -| CtrlEnd or CtrlDownArrow | Move cursor to end of document | -| Ctrl+L | Jump to a line in the file (prompts with #) | -| Ctrl+W | Cycle between splits in the current tab (use `> vsplit` or `> hsplit` to create a split) | +| Key | Description of function | +|--------------------------- |------------------------------------------------------------------------------------------ | +| Arrows | Move the cursor around | +| Shift+arrows | Move and select text | +| Home or Ctrl+LeftArrow | Move to the beginning of the current line | +| End or Ctrl+RightArrow | Move to the end of the current line | +| Alt+LeftArrow | Move cursor one word left | +| Alt+RightArrow | Move cursor one word right | +| Alt+{ | Move cursor to previous empty line, or beginning of document | +| Alt+} | Move cursor to next empty line, or end of document | +| PageUp | Move cursor up one page | +| PageDown | Move cursor down one page | +| Ctrl+Home or Ctrl+UpArrow | Move cursor to start of document | +| Ctrl+End or Ctrl+DownArrow | Move cursor to end of document | +| Ctrl+L | Jump to a line in the file (prompts with #) | +| Ctrl+W | Cycle between splits in the current tab (use `> vsplit` or `> hsplit` to create a split) | ### Tabs @@ -45,7 +45,7 @@ can change it! ### Find Operations | Key | Description of function | -|-------- |------------------------------------------ | +|---------- |------------------------------------------ | | Ctrl+F | Find (opens prompt) | | Ctrl+N | Find next instance of current search | | Ctrl+P | Find previous instance of current search | @@ -53,55 +53,55 @@ can change it! ### File Operations | Key | Description of function | -|-------- |---------------------------------------------------------------- | +|---------- |------------------------------------------------------------------ | | Ctrl+Q | Close current file (quits micro if this is the last file open) | | Ctrl+O | Open a file (prompts for filename) | | Ctrl+S | Save current file | ### Text operations -| Key | Description of function | -|--------------------------------- |------------------------------------------ | -| AltShiftRightArrow | Select word right | -| AltShiftLeftArrow | Select word left | -| ShiftHome or CtrlShiftLeftArrow | Select to start of current line | -| ShiftEnd or CtrlShiftRightArrow | Select to end of current line | -| CtrlShiftUpArrow | Select to start of file | -| CtrlShiftDownArrow | Select to end of file | -| Ctrl+X | Cut selected text | -| Ctrl+C | Copy selected text | -| Ctrl+V | Paste | -| Ctrl+K | Cut current line | -| Ctrl+D | Duplicate current line | -| Ctrl+Z | Undo | -| Ctrl+Y | Redo | -| AltUpArrow | Move current line or selected lines up | -| AltDownArrow | Move current line of selected lines down | -| AltBackspace or AltCtrl+H | Delete word left | -| Ctrl+A | Select all | +| Key | Description of function | +|------------------------------------ |------------------------------------------ | +| Alt+Shift+RightArrow | Select word right | +| Alt+Shift+LeftArrow | Select word left | +| Shift+Home or Ctrl+Shift+LeftArrow | Select to start of current line | +| Shift+End or Ctrl+Shift+RightArrow | Select to end of current line | +| Ctrl+Shift+UpArrow | Select to start of file | +| Ctrl+Shift+DownArrow | Select to end of file | +| Ctrl+X | Cut selected text | +| Ctrl+C | Copy selected text | +| Ctrl+V | Paste | +| Ctrl+K | Cut current line | +| Ctrl+D | Duplicate current line | +| Ctrl+Z | Undo | +| Ctrl+Y | Redo | +| Alt+UpArrow | Move current line or selected lines up | +| Alt+DownArrow | Move current line of selected lines down | +| Alt+Backspace or Alt+Ctrl+H | Delete word left | +| Ctrl+A | Select all | ### Macros | Key | Description of function | -|-------- |---------------------------------------------------------------------------------- | +|---------- |---------------------------------------------------------------------------------- | | Ctrl+U | Toggle macro recording (press Ctrl+U to start recording and press again to stop) | | Ctrl+J | Run latest recorded macro | ### Multiple cursors | Key | Description of function | -|---------------- |---------------------------------------------------------------------------------------------- | +|------------------ |---------------------------------------------------------------------------------------------- | | Alt+N | Create new multiple cursor from selection (will select current word if no current selection) | | Alt+P | Remove latest multiple cursor | | Alt+C | Remove all multiple cursors (cancel) | | Alt+X | Skip multiple cursor selection | | Alt+M | Spawn a new cursor at the beginning of every line in the current selection | -| Ctrl-MouseLeft | Place a multiple cursor at any location | +| Ctrl+MouseLeft | Place a multiple cursor at any location | ### Other | Key | Description of function | -|-------- |----------------------------------------------------------------------------------- | +|---------- |-------------------------------------------------------------------------------------- | | Ctrl+G | Open help file | | Ctrl+H | Backspace (old terminals do not support the backspace key and use Ctrl+H instead) | | Ctrl+R | Toggle the line number ruler | @@ -109,7 +109,7 @@ can change it! ### Emacs style actions | Key | Description of function | -|------- |------------------------- | +|---------- |-------------------------- | | Alt+F | Next word | | Alt+B | Previous word | | Alt+A | Move to start of line | @@ -120,7 +120,7 @@ can change it! Warning! The function keys may not work in all terminals! | Key | Description of function | -|----- |------------------------- | +|------ |-------------------------- | | F1 | Open help | | F2 | Save | | F3 | Find | From 523592be26bf035b8085d7f2898cf9d6a67b808d Mon Sep 17 00:00:00 2001 From: Patrick Weingaertner Date: Fri, 26 Jul 2019 21:49:40 +0200 Subject: [PATCH 005/231] fix #1318. fix html comments and make them work multiline --- runtime/syntax/html.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/runtime/syntax/html.yaml b/runtime/syntax/html.yaml index d858096f..16df6586 100644 --- a/runtime/syntax/html.yaml +++ b/runtime/syntax/html.yaml @@ -18,9 +18,13 @@ rules: - symbol.tag: "<|>" - constant.string.url: "(ftp(s)?|http(s)?|git|chrome)://[^ ]+" - - comment: "" - preproc: "" + - comment: + start: "" + rules: [] + - constant.string: start: "\"" end: "\"" From 9e0d3c7cbecb5ffb5e6629ca9bd1f260e9c24828 Mon Sep 17 00:00:00 2001 From: Leap of Azzam <48548847+LeapofAzzam@users.noreply.github.com> Date: Sat, 26 Oct 2019 15:51:38 +0700 Subject: [PATCH 006/231] Update vi syntax --- runtime/syntax/vi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/syntax/vi.yaml b/runtime/syntax/vi.yaml index d7fe4962..d83a80af 100644 --- a/runtime/syntax/vi.yaml +++ b/runtime/syntax/vi.yaml @@ -24,7 +24,7 @@ rules: rules: - constant.specialChar: "\\\\." - - constant.comment: + - comment: start: "\"" end: "$" rules: [] From 1fc5b316ab4a385ba4922e7136361f5a4c1fda70 Mon Sep 17 00:00:00 2001 From: Serge Voilokov Date: Tue, 5 Nov 2019 22:57:36 -0500 Subject: [PATCH 007/231] Add mc, godoc syntax files --- runtime/syntax/godoc.yaml | 17 +++++++++++++++++ runtime/syntax/mc.yaml | 23 +++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 runtime/syntax/godoc.yaml create mode 100644 runtime/syntax/mc.yaml diff --git a/runtime/syntax/godoc.yaml b/runtime/syntax/godoc.yaml new file mode 100644 index 00000000..b7726296 --- /dev/null +++ b/runtime/syntax/godoc.yaml @@ -0,0 +1,17 @@ +# godoc +# example: go doc -all | micro + +filetype: godoc + +detect: + filename: "\\.godoc$" + header: package.*import + +rules: + - preproc: "^[^ ].*" + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/runtime/syntax/mc.yaml b/runtime/syntax/mc.yaml new file mode 100644 index 00000000..bcf11777 --- /dev/null +++ b/runtime/syntax/mc.yaml @@ -0,0 +1,23 @@ +# sendmail config files + +filetype: mc + +detect: + filename: "\\.mc$" + +rules: + - statement: "^(divert|VERSIONID|OSTYPE|DOMAIN|FEATURE|define)" + - statement: "^(DAEMON_OPTIONS|MAILER)" + - comment: + start: "#" + end: "$" + rules: [] + - comment: + start: "dnl" + end: "$" + rules: [] + - constant.string: + start: "`" + end: "'" + rules: [] + From 7a51490591f11aa06628f109aeda6b9e6201d6ff Mon Sep 17 00:00:00 2001 From: Serge Voilokov Date: Tue, 5 Nov 2019 23:27:35 -0500 Subject: [PATCH 008/231] Add textfilter command --- cmd/micro/command.go | 2 ++ cmd/micro/textfilter.go | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 cmd/micro/textfilter.go diff --git a/cmd/micro/command.go b/cmd/micro/command.go index 976880d7..f3a1b26a 100644 --- a/cmd/micro/command.go +++ b/cmd/micro/command.go @@ -58,6 +58,7 @@ func init() { "MemUsage": MemUsage, "Retab": Retab, "Raw": Raw, + "TextFilter": TextFilter, } } @@ -117,6 +118,7 @@ func DefaultCommands() map[string]StrCommand { "memusage": {"MemUsage", []Completion{NoCompletion}}, "retab": {"Retab", []Completion{NoCompletion}}, "raw": {"Raw", []Completion{NoCompletion}}, + "textfilter": {"TextFilter", []Completion{NoCompletion}}, } } diff --git a/cmd/micro/textfilter.go b/cmd/micro/textfilter.go new file mode 100644 index 00000000..ec4c91e8 --- /dev/null +++ b/cmd/micro/textfilter.go @@ -0,0 +1,35 @@ +package main + +import ( + "bytes" + "os/exec" + "strings" +) + +// TextFilter command filters the selection through the command. +// Selection goes to the command input. +// On successfull run command output replaces the current selection. +func TextFilter(args []string) { + if len(args) == 0 { + messenger.Error("usage: textfilter arguments") + return + } + v := CurView() + sel := v.Cursor.GetSelection() + if sel == "" { + v.Cursor.SelectWord() + sel = v.Cursor.GetSelection() + } + var bout, berr bytes.Buffer + cmd := exec.Command(args[0], args[1:]...) + cmd.Stdin = strings.NewReader(sel) + cmd.Stderr = &berr + cmd.Stdout = &bout + err := cmd.Run() + if err != nil { + messenger.Error(err.Error() + " " + berr.String()) + return + } + v.Cursor.DeleteSelection() + v.Buf.Insert(v.Cursor.Loc, bout.String()) +} From 1857aa4067bc97d1e5535706bfb9906036cf5f86 Mon Sep 17 00:00:00 2001 From: Serge Voilokov Date: Wed, 6 Nov 2019 07:23:04 -0500 Subject: [PATCH 009/231] Add proto syntax file --- runtime/syntax/proto.yaml | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 runtime/syntax/proto.yaml diff --git a/runtime/syntax/proto.yaml b/runtime/syntax/proto.yaml new file mode 100644 index 00000000..01e2ee0a --- /dev/null +++ b/runtime/syntax/proto.yaml @@ -0,0 +1,40 @@ +filetype: proto + +detect: + filename: "(\\.(proto)$$)" + +rules: + - identifier: "\\b[A-Z_][0-9A-Z_]+\\b" + - type: "\\b(int(8|16|32|64))|string|bytes|repeated|bool|required|map|optional|oneof|union\\b" + - statement: "\\b(import|service|enum|syntax|package|option|message|rpc|returns|extensions|to)\\b" + - constant: "'\\\\(([0-3]?[0-7]{1,2}))'" + - constant: "'\\\\x[0-9A-Fa-f]{1,2}'" + - symbol.brackets: "[(){}]|\\[|\\]" + - constant.number: "(\\b[0-9]+\\b|\\b0x[0-9A-Fa-f]+\\b)" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - preproc: "..+" + - constant.specialChar: "\\\\." + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" From be0dcd5d10c3d26b3f318bf14dd7cd79a55b0a1c Mon Sep 17 00:00:00 2001 From: tommyshem <1952659+tommyshem@users.noreply.github.com> Date: Thu, 14 Nov 2019 01:11:02 +0000 Subject: [PATCH 010/231] Add windows .bat syntax highlighting file #1388 --- runtime/syntax/bat.yaml | 58 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 runtime/syntax/bat.yaml diff --git a/runtime/syntax/bat.yaml b/runtime/syntax/bat.yaml new file mode 100644 index 00000000..e6077a57 --- /dev/null +++ b/runtime/syntax/bat.yaml @@ -0,0 +1,58 @@ +filetype: batch + +detect: + filename: "(\\.bat$)" + # header: "" + +rules: + # Numbers + - constant.number: "\\b[0-9]+\\b" + # Brackets and symbols + - special: "(\\{|\\}|\\(|\\)|\\;|\\]|\\[|`|\\\\|\\$|<|>|!|=|&|\\|)" + # Conditionals and control flow + # note (?i) means case insensitive match + - type: "\\b(?i)(case|do|done|elif|else|esac|exit|fi|for|function|if|in|local|read|return|select|then|until|while)\\b" + - type: "\\b(?i)(equ|neq|lss|leq|gtr|geq|on|off)\\b" + - type: "\\b(?i)(goto|for|in|do|call|exit|not|exist|errorlevel|defined)\\b" + - type: "\\b(?i)(prn|nul|lpt3|lpt2|lpt1|con|com4|com3|com2|com1|aux)\\b" + # keywords + - statement: "\\b(?i)(adprep|append|arp|assoc|at|atmadm|attrib|auditpol|autochk|autoconv|autofmt|bcdboot|bcdedit|bdehdcfg|bitsadmin|bootcfg|break|brea)\\b" + - statement: "\\b(?i)(cacls|cd|certreq|certutil|chcp|change|choice|cipher|chdir|chkdsk|chkntfs|chglogon|chgport|chgusr|clip|cls|clscluadmin|cluster|cmd|cmdkey|cmstp|color)\\b" + - statement: "\\b(?i)(comp|compact|convert|copy|cprofile|cscript|csvde|date|dcdiag|dcgpofix|dcpromo|defra|del|dfscmd|dfsdiag|dfsrmig|diantz|dir|dirquota|diskcomp|diskcopy|diskpart|diskperf|diskraid|diskshadow|dispdiag|doin|dnscmd|doskey|driverquery|dsacls|dsadd|dsamain|dsdbutil|dsget|dsmgmt|dsmod|dsmove|dsquery|dsrm)\\b" + - statement: "\\b(?i)(echo|edit|endlocal|erase|esentutl|eventcreate|eventquery|eventtriggers|evntcmd|expand|extract)\\b" + - statement: "\\b(?i)(fc|filescrn|find|findstr|finger|flattemp|fonde|forfiles|format|freedisk|fs|fsutil|ftp|ftype|fveupdate|getmac|gettype|gpfixup|gpresult|gpupdate|graftabl)\\b" + - statement: "\\b(?i)(hashgen|hep|help|helpctr|hostname|icacls|iisreset|inuse|ipconfig|ipxroute|irftp|ismserv|jetpack|keyb|klist|ksetup|ktmutil|ktpass|label|ldifd|ldp|lodctr|logman|logoff|lpq|lpr|macfile)\\b" + - statement: "\\b(?i)(makecab|manage-bde|mapadmin|md|mkdir|mklink|mmc|mode|more|mount|mountvol|move|mqbup|mqsvc|mqtgsvc|msdt|msg|msiexec|msinfo32|mstsc|nbtstat|net computer|net group)\\b" + - statement: "\\b(?i)(net localgroup|net print|net session|net share|net start|net stop|net use|net user|net view|net|netcfg|netdiag|netdom|netsh|netstat|nfsadmin|nfsshare|nfsstat|nlb)\\b" + - statement: "\\b(?i)(nlbmgr|nltest|nslookup|ntackup|ntcmdprompt|ntdsutil|ntfrsutl|openfiles|pagefileconfig|path|pathping|pause|pbadmin|pentnt|perfmon|ping|pnpunatten|pnputil|popd)\\b" + - statement: "\\b(?i)(powercfg|powershell|powershell_ise|print|prncnfg|prndrvr|prnjobs|prnmngr|prnport|prnqctl|prompt|pubprn|pushd|pushprinterconnections|pwlauncher|qappsrv|qprocess)\\b" + - statement: "\\b(?i)(query|quser|qwinsta|rasdial|rcp|rd|rdpsign|regentc|recover|redircmp|redirusr|reg|regini|regsvr32|relog|ren|rename|rendom|repadmin|repair-bde|replace|reset|restore)\\b" + - statement: "\\b(?i)(rxec|risetup|rmdir|robocopy|route|rpcinfo|rpcping|rsh|runas|rundll32|rwinsta|scp|sc|setlocal|session|schtasks|scwcmd|secedit|serverceipoptin|servrmanagercmd|serverweroptin|set|setspn)\\b" + - statement: "\\b(?i)(setx|sfc|shadow|shift|showmount|shutdown|sort|ssh|start|storrept|subst|sxstrace|ysocmgr|systeminfo|takeown|tapicfg|taskkill|tasklist|tcmsetup|telnet|tftp|time)\\b" + - statement: "\\b(?i)(timeout|title|tlntadmn|tpmvscmgr|tpmvscmgr|tacerpt|tracert|tree|tscon|tsdiscon|tsecimp|tskill|tsprof|type|typeperf|tzutil|uddiconfig|umount|unlodctr|ver|verify)\\b" + - statement: "\\b(?i)(verifier|verif|vol|vssadmin|w32tm|waitfor|wbadmin|wdsutil|wecutil|wevtutil|where|whoami|winnt|winnt32|winpop|winrm|winrs|winsat|wlbs|mic|wscript|xcopy)\\b" + # / Flags + - constant: "(/\\w+)" + # Variables + - special: "(%%\\w+)" + - special: "(%\\w+%)" + # Conditional flags + - type: "--[a-z-]+" + - type: "\\ -[a-z]+" + + - identifier: "\\$\\{?[0-9A-Z_!@#$*?-]+\\}?" + - identifier: "\\$\\{?[0-9A-Z_!@#$*?-]+\\}?" + # "" String + - constant.string: + start: \" + end: \" + skip: \. + rules: + - constant.specialChar: (\\0|\\\\|\\t|\\n|\\r|\\"|\\') + - constant.unicode: \\u\{[[:xdigit:]]+} + # '' string + - constant.string: "(\\'.+\\')" + # rem as comment + - comment.rem: "(?i)(rem\\s.*)" + # :: as comment + - comment.rem: "(?i)(\\:\\:\\s.*)" From 78fd9fb22544e3a0fd039dd3b2501abd29131f03 Mon Sep 17 00:00:00 2001 From: Dull Bananas Date: Fri, 15 Nov 2019 18:37:41 -0700 Subject: [PATCH 011/231] Add jinja syntax --- runtime/syntax/jinja2.yaml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 runtime/syntax/jinja2.yaml diff --git a/runtime/syntax/jinja2.yaml b/runtime/syntax/jinja2.yaml new file mode 100644 index 00000000..ee6ad08e --- /dev/null +++ b/runtime/syntax/jinja2.yaml @@ -0,0 +1,30 @@ +filetype: jinja2 + +detect: + filename: "\\.html$" + +rules: + - include: "html" + #- special.expression: "({{|}})" + #- default: + # start: "{{" + # end: "}}" + # limit-group: special.expression + # rules: + # - include: "python" + #- special.statement: "({%-?|-?%})" + - special: "({{|}}|{%-?|-?%})" + - default: + start: "({%-?|{{)" + end: "(-?%}|}})" + limit-group: special + rules: + - include: "python" + - statement: "\\b(ignore missing|with(out)? context|block|call|endblock|endcall|endfilter|endfor|endmacro|endraw|endset|extends|filter|for|include|macro|raw|recursive|scoped|set)\\b" + - identifier.builtinfunc: "\\b(attr|batch|capitalize|center|count|d|default|dictsort|e|escape|filesizeformat|first|forceescape|groupby|indent|join|last|length|lower|pprint|random|reject|rejectattr|replace|reverse|safe|select|selectattr|striptags|title|tojson|trim|truncate|unique|upper|urlencode|urlize|wordcount|wordwrap|xmlattr)\\b" + - identifier.builtintest: "\\b(callable|defined|divisibleby|eq|equalto|escaped|even|ge|gt|iterable|le|lower|lt|mapping|ne|none|number|odd|sameas|sequence|string|undefined|upper)\\b" + - identifier.defaultglobal: "\\b(lipsum|cycler|joiner|namespace)\\b" + - comment: + start: "{#" + end: "#}" + rules: [] From 4662f0c5005f6338af6f895acc17f521faf20cc0 Mon Sep 17 00:00:00 2001 From: Dull Bananas Date: Fri, 15 Nov 2019 18:38:33 -0700 Subject: [PATCH 012/231] Remove old code --- runtime/syntax/jinja2.yaml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/runtime/syntax/jinja2.yaml b/runtime/syntax/jinja2.yaml index ee6ad08e..2a1141c6 100644 --- a/runtime/syntax/jinja2.yaml +++ b/runtime/syntax/jinja2.yaml @@ -5,14 +5,6 @@ detect: rules: - include: "html" - #- special.expression: "({{|}})" - #- default: - # start: "{{" - # end: "}}" - # limit-group: special.expression - # rules: - # - include: "python" - #- special.statement: "({%-?|-?%})" - special: "({{|}}|{%-?|-?%})" - default: start: "({%-?|{{)" From 7d1dc1183ca22e15de6c5fb83d2ea09e4c94aec2 Mon Sep 17 00:00:00 2001 From: Dull Bananas Date: Fri, 15 Nov 2019 18:42:17 -0700 Subject: [PATCH 013/231] Improve JavaScript syntax --- runtime/syntax/javascript.yaml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/runtime/syntax/javascript.yaml b/runtime/syntax/javascript.yaml index dfce4272..e0ffa193 100644 --- a/runtime/syntax/javascript.yaml +++ b/runtime/syntax/javascript.yaml @@ -8,7 +8,8 @@ rules: - constant.number: "\\b[-+]?([1-9][0-9]*|0[0-7]*|0x[0-9a-fA-F]+)([uU][lL]?|[lL][uU]?)?\\b" - constant.number: "\\b[-+]?([0-9]+\\.[0-9]*|[0-9]*\\.[0-9]+)([EePp][+-]?[0-9]+)?[fFlL]?" - constant.number: "\\b[-+]?([0-9]+[EePp][+-]?[0-9]+)[fFlL]?" - - identifier: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[(]" + #- identifier: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[(]" + # ^ this is not correct usage of the identifier color - symbol.brackets: "(\\{|\\})" - symbol.brackets: "(\\(|\\))" - symbol.brackets: "(\\[|\\])" @@ -20,15 +21,19 @@ rules: - statement: "\\b(for|function|class|extends|get|if|import|from|in|of|instanceof|let|new|return|set)\\b" - statement: "\\b(super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b" # reserved but unassigned - - error: "\\b(enum|implements|interface|package|private|protected|public)" - - constant: "\\b(null|undefined|NaN)\\b" + - error: "\\b(enum|implements|interface|package|private|protected|public|TODO)" + - constant: "\\b(globalThis|Infinity|null|undefined|NaN)\\b" - constant: "\\b(true|false)\\b" - - type: "\\b(Array|Boolean|Date|Enumerator|Error|Function|Math)\\b" + - type: "\\b(Array|Boolean|Date|Enumerator|Error|Function|Math|Map|Set|WeakMap|WeakSet)\\b" - type: "\\b(Number|Object|RegExp|String)\\b" # - constant: "/[^*]([^/]|(\\\\/))*[^\\\\]/[gim]*" - constant: "\\\\[0-7][0-7]?[0-7]?|\\\\x[0-9a-fA-F]+|\\\\[bfnrt'\"\\?\\\\]" - comment: "^#!.*/(env +)?node( |$)" + - identifier: "\\b(alert|decodeURI|decodeURIComponent|document|encodeURI|encodeURIComponent|escape|eval|isFinite|isNaN|parseFloat|parseInt|unescape|uneval|window)\\b" + - identifier: "\\b(Intl|WebAssembly)\\b" + - identifier: "\\b(Arguments)\\b" + - constant.string: start: "\"" From 5b869cb836e71d774824a19a16fead33a6ba9a14 Mon Sep 17 00:00:00 2001 From: Johann Mortara Date: Fri, 29 Nov 2019 12:05:54 +0100 Subject: [PATCH 014/231] Corrected tex comment start separator --- runtime/syntax/tex.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runtime/syntax/tex.yaml b/runtime/syntax/tex.yaml index f331af1f..3fcdbcbc 100644 --- a/runtime/syntax/tex.yaml +++ b/runtime/syntax/tex.yaml @@ -20,9 +20,10 @@ rules: - special: "[&\\\\]" # macros - statement: "\\\\@?[a-zA-Z_]+" + - statement: "\\\\%" # comments - comment: - start: "%" + start: "[^\\\\]%" end: "$" rules: [] - comment: From 5d81fc7815ad9f7b5ed197c6a7921815b1b831dd Mon Sep 17 00:00:00 2001 From: nergel3 Date: Tue, 17 Dec 2019 11:38:22 +0100 Subject: [PATCH 015/231] vue syntax (+typescript) & svelte syntax --- runtime/syntax/svelte.yaml | 27 +++++++++++++++++++++++++++ runtime/syntax/vue.yaml | 12 +++++++++--- 2 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 runtime/syntax/svelte.yaml diff --git a/runtime/syntax/svelte.yaml b/runtime/syntax/svelte.yaml new file mode 100644 index 00000000..2059e982 --- /dev/null +++ b/runtime/syntax/svelte.yaml @@ -0,0 +1,27 @@ +filetype: svelte + +detect: + filename: "\\.svelte$" + +rules: + - default: + start: "" + rules: + - include: "javascript" + + - default: + start: "" + rules: + - include: "typescript" + - default: + start: "" + end: "" + rules: + - include: "css" + - default: + start: "^" + end: "$" + rules: + - include: "html5" \ No newline at end of file diff --git a/runtime/syntax/vue.yaml b/runtime/syntax/vue.yaml index 4c1c3040..f6df706d 100644 --- a/runtime/syntax/vue.yaml +++ b/runtime/syntax/vue.yaml @@ -11,14 +11,20 @@ rules: - include: "html5" - default: - start: "" - end: "" + start: "" rules: - include: "javascript" + + - default: + start: "" + end: "" + rules: + - include: "typescript" - default: start: "" end: "" rules: - include: "css" - \ No newline at end of file + From d9735e5c3be7218392f2c3b4cd315d8f6d4834d6 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 25 Dec 2019 16:17:31 -0500 Subject: [PATCH 016/231] Update readme --- runtime/syntax/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/runtime/syntax/README.md b/runtime/syntax/README.md index 2d4e42db..7d1a9de4 100644 --- a/runtime/syntax/README.md +++ b/runtime/syntax/README.md @@ -64,5 +64,4 @@ Here is a list of the files that have been converted to properly use colorscheme # License -Because the nano syntax files I have modified are distributed under the GNU GPLv3 license, these files are also distributed -under that license. See [LICENSE](LICENSE). +See [LICENSE](LICENSE). From dc68183fc114ab2911d6ba934cf5df019566d0cf Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 25 Aug 2018 23:06:44 -0400 Subject: [PATCH 017/231] Start refactor --- .gitignore | 3 + Makefile | 9 +- cmd/micro/actionhandler.go | 40 + cmd/micro/actions.go | 2328 --------------------- cmd/micro/actions_other.go | 9 - cmd/micro/actions_posix.go | 37 - cmd/micro/autocomplete.go | 249 --- cmd/micro/bindings.go | 616 ------ cmd/micro/buffer.go | 974 +++------ cmd/micro/buffer_test.go | 117 -- cmd/micro/cellview.go | 238 --- cmd/micro/colorscheme.go | 45 +- cmd/micro/colorscheme_test.go | 62 + cmd/micro/command.go | 694 ------ cmd/micro/cursor.go | 299 +-- cmd/micro/cursor_test.go | 1 + cmd/micro/debug.go | 27 + cmd/micro/eventhandler.go | 77 +- cmd/micro/highlighter.go | 28 - cmd/micro/job.go | 88 - cmd/micro/keymenu.go | 20 - cmd/micro/{lineArray.go => line_array.go} | 139 +- cmd/micro/line_array_test.go | 60 + cmd/micro/loc.go | 147 +- cmd/micro/lua.go | 3 +- cmd/micro/message.go | 38 + cmd/micro/messenger.go | 669 ------ cmd/micro/micro.go | 421 +--- cmd/micro/plugin.go | 184 -- cmd/micro/pluginmanager.go | 622 ------ cmd/micro/pluginmanager_test.go | 56 - cmd/micro/profile.go | 14 + cmd/micro/rtfiles.go | 43 +- cmd/micro/rtfiles_test.go | 42 + cmd/micro/runtime.go | 2 +- cmd/micro/scrollbar.go | 20 - cmd/micro/search.go | 214 -- cmd/micro/settings.go | 626 +++--- cmd/micro/shell.go | 129 -- cmd/micro/shell_supported.go | 18 - cmd/micro/shell_unsupported.go | 11 - cmd/micro/split_tree.go | 317 --- cmd/micro/stack.go | 12 +- cmd/micro/stack_test.go | 35 + cmd/micro/statusline.go | 160 +- cmd/micro/tab.go | 293 --- cmd/micro/terminal.go | 228 -- cmd/micro/util.go | 331 +-- cmd/micro/util_test.go | 344 +-- cmd/micro/view.go | 1117 ---------- cmd/micro/window.go | 187 ++ 51 files changed, 1621 insertions(+), 10822 deletions(-) create mode 100644 cmd/micro/actionhandler.go delete mode 100644 cmd/micro/actions.go delete mode 100644 cmd/micro/actions_other.go delete mode 100644 cmd/micro/actions_posix.go delete mode 100644 cmd/micro/autocomplete.go delete mode 100644 cmd/micro/bindings.go delete mode 100644 cmd/micro/buffer_test.go delete mode 100644 cmd/micro/cellview.go create mode 100644 cmd/micro/colorscheme_test.go delete mode 100644 cmd/micro/command.go create mode 100644 cmd/micro/cursor_test.go create mode 100644 cmd/micro/debug.go delete mode 100644 cmd/micro/highlighter.go delete mode 100644 cmd/micro/job.go delete mode 100644 cmd/micro/keymenu.go rename cmd/micro/{lineArray.go => line_array.go} (60%) create mode 100644 cmd/micro/line_array_test.go create mode 100644 cmd/micro/message.go delete mode 100644 cmd/micro/messenger.go delete mode 100644 cmd/micro/plugin.go delete mode 100644 cmd/micro/pluginmanager.go delete mode 100644 cmd/micro/pluginmanager_test.go create mode 100644 cmd/micro/profile.go create mode 100644 cmd/micro/rtfiles_test.go delete mode 100644 cmd/micro/scrollbar.go delete mode 100644 cmd/micro/search.go delete mode 100644 cmd/micro/shell.go delete mode 100644 cmd/micro/shell_supported.go delete mode 100644 cmd/micro/shell_unsupported.go delete mode 100644 cmd/micro/split_tree.go create mode 100644 cmd/micro/stack_test.go delete mode 100644 cmd/micro/tab.go delete mode 100644 cmd/micro/terminal.go delete mode 100644 cmd/micro/view.go create mode 100644 cmd/micro/window.go diff --git a/.gitignore b/.gitignore index 08c1a639..acfa0730 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,6 @@ tmp.sh test/ .idea/ packages/ +todo.txt +test.txt +log.txt diff --git a/Makefile b/Makefile index e03ee2fc..08a70768 100644 --- a/Makefile +++ b/Makefile @@ -9,28 +9,29 @@ ADDITIONAL_GO_LINKER_FLAGS := $(shell GOOS=$(shell go env GOHOSTOS) \ GOARCH=$(shell go env GOHOSTARCH) \ go run tools/info-plist.go "$(VERSION)") GOBIN ?= $(shell go env GOPATH)/bin +GOVARS := -X main.Version=$(VERSION) -X main.CommitHash=$(HASH) -X 'main.CompileDate=$(DATE)' -X main.Debug=OFF # Builds micro after checking dependencies but without updating the runtime build: update - go build -ldflags "-s -w -X main.Version=$(VERSION) -X main.CommitHash=$(HASH) -X 'main.CompileDate=$(DATE)' $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro + go build -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro # Builds micro after building the runtime and checking dependencies build-all: runtime build # Builds micro without checking for dependencies build-quick: - go build -ldflags "-s -w -X main.Version=$(VERSION) -X main.CommitHash=$(HASH) -X 'main.CompileDate=$(DATE)' $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro + go build -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro # Same as 'build' but installs to $GOBIN afterward install: update - go install -ldflags "-s -w -X main.Version=$(VERSION) -X main.CommitHash=$(HASH) -X 'main.CompileDate=$(DATE)' $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro + go install -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro # Same as 'build-all' but installs to $GOBIN afterward install-all: runtime install # Same as 'build-quick' but installs to $GOBIN afterward install-quick: - go install -ldflags "-s -w -X main.Version=$(VERSION) -X main.CommitHash=$(HASH) -X 'main.CompileDate=$(DATE)' $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro + go install -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro update: git pull diff --git a/cmd/micro/actionhandler.go b/cmd/micro/actionhandler.go new file mode 100644 index 00000000..3cceabd8 --- /dev/null +++ b/cmd/micro/actionhandler.go @@ -0,0 +1,40 @@ +package main + +import "time" + +// The ActionHandler connects the buffer and the window +// It provides a cursor (or multiple) and defines a set of actions +// that can be taken on the buffer +// The ActionHandler can access the window for necessary info about +// visual positions for mouse clicks and scrolling +type ActionHandler struct { + Buf *Buffer + Win *Window + + // Since tcell doesn't differentiate between a mouse release event + // and a mouse move event with no keys pressed, we need to keep + // track of whether or not the mouse was pressed (or not released) last event to determine + // mouse release events + mouseReleased bool + + // We need to keep track of insert key press toggle + isOverwriteMode bool + // This stores when the last click was + // This is useful for detecting double and triple clicks + lastClickTime time.Time + lastLoc Loc + + // lastCutTime stores when the last ctrl+k was issued. + // It is used for clearing the clipboard to replace it with fresh cut lines. + lastCutTime time.Time + + // freshClip returns true if the clipboard has never been pasted. + freshClip bool + + // Was the last mouse event actually a double click? + // Useful for detecting triple clicks -- if a double click is detected + // but the last mouse event was actually a double click, it's a triple click + doubleClick bool + // Same here, just to keep track for mouse move events + tripleClick bool +} diff --git a/cmd/micro/actions.go b/cmd/micro/actions.go deleted file mode 100644 index 83eec144..00000000 --- a/cmd/micro/actions.go +++ /dev/null @@ -1,2328 +0,0 @@ -package main - -import ( - "fmt" - "os" - "regexp" - "strconv" - "strings" - "time" - "unicode/utf8" - - "github.com/yuin/gopher-lua" - "github.com/zyedidia/clipboard" - "github.com/zyedidia/micro/cmd/micro/shellwords" - "github.com/zyedidia/tcell" -) - -// PreActionCall executes the lua pre callback if possible -func PreActionCall(funcName string, view *View, args ...interface{}) bool { - executeAction := true - for pl := range loadedPlugins { - ret, err := Call(pl+".pre"+funcName, append([]interface{}{view}, args...)...) - if err != nil && !strings.HasPrefix(err.Error(), "function does not exist") { - TermMessage(err) - continue - } - if ret == lua.LFalse { - executeAction = false - } - } - return executeAction -} - -// PostActionCall executes the lua plugin callback if possible -func PostActionCall(funcName string, view *View, args ...interface{}) bool { - relocate := true - for pl := range loadedPlugins { - ret, err := Call(pl+".on"+funcName, append([]interface{}{view}, args...)...) - if err != nil && !strings.HasPrefix(err.Error(), "function does not exist") { - TermMessage(err) - continue - } - if ret == lua.LFalse { - relocate = false - } - } - return relocate -} - -func (v *View) deselect(index int) bool { - if v.Cursor.HasSelection() { - v.Cursor.Loc = v.Cursor.CurSelection[index] - v.Cursor.ResetSelection() - v.Cursor.StoreVisualX() - return true - } - return false -} - -// MousePress is the event that should happen when a normal click happens -// This is almost always bound to left click -func (v *View) MousePress(usePlugin bool, e *tcell.EventMouse) bool { - if usePlugin && !PreActionCall("MousePress", v, e) { - return false - } - - x, y := e.Position() - x -= v.lineNumOffset - v.leftCol + v.x - y += v.Topline - v.y - - // This is usually bound to left click - v.MoveToMouseClick(x, y) - if v.mouseReleased { - if len(v.Buf.cursors) > 1 { - for i := 1; i < len(v.Buf.cursors); i++ { - v.Buf.cursors[i] = nil - } - v.Buf.cursors = v.Buf.cursors[:1] - v.Buf.UpdateCursors() - v.Cursor.ResetSelection() - v.Relocate() - } - if time.Since(v.lastClickTime)/time.Millisecond < doubleClickThreshold && (x == v.lastLoc.X && y == v.lastLoc.Y) { - if v.doubleClick { - // Triple click - v.lastClickTime = time.Now() - - v.tripleClick = true - v.doubleClick = false - - v.Cursor.SelectLine() - v.Cursor.CopySelection("primary") - } else { - // Double click - v.lastClickTime = time.Now() - - v.doubleClick = true - v.tripleClick = false - - v.Cursor.SelectWord() - v.Cursor.CopySelection("primary") - } - } else { - v.doubleClick = false - v.tripleClick = false - v.lastClickTime = time.Now() - - v.Cursor.OrigSelection[0] = v.Cursor.Loc - v.Cursor.CurSelection[0] = v.Cursor.Loc - v.Cursor.CurSelection[1] = v.Cursor.Loc - } - v.mouseReleased = false - } else if !v.mouseReleased { - if v.tripleClick { - v.Cursor.AddLineToSelection() - } else if v.doubleClick { - v.Cursor.AddWordToSelection() - } else { - v.Cursor.SetSelectionEnd(v.Cursor.Loc) - v.Cursor.CopySelection("primary") - } - } - - v.lastLoc = Loc{x, y} - - if usePlugin { - PostActionCall("MousePress", v, e) - } - return false -} - -// ScrollUpAction scrolls the view up -func (v *View) ScrollUpAction(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("ScrollUp", v) { - return false - } - - scrollspeed := int(v.Buf.Settings["scrollspeed"].(float64)) - v.ScrollUp(scrollspeed) - - if usePlugin { - PostActionCall("ScrollUp", v) - } - } - return false -} - -// ScrollDownAction scrolls the view up -func (v *View) ScrollDownAction(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("ScrollDown", v) { - return false - } - - scrollspeed := int(v.Buf.Settings["scrollspeed"].(float64)) - v.ScrollDown(scrollspeed) - - if usePlugin { - PostActionCall("ScrollDown", v) - } - } - return false -} - -// Center centers the view on the cursor -func (v *View) Center(usePlugin bool) bool { - if usePlugin && !PreActionCall("Center", v) { - return false - } - - v.Topline = v.Cursor.Y - v.Height/2 - if v.Topline+v.Height > v.Buf.NumLines { - v.Topline = v.Buf.NumLines - v.Height - } - if v.Topline < 0 { - v.Topline = 0 - } - - if usePlugin { - return PostActionCall("Center", v) - } - return true -} - -// CursorUp moves the cursor up -func (v *View) CursorUp(usePlugin bool) bool { - if usePlugin && !PreActionCall("CursorUp", v) { - return false - } - - v.deselect(0) - v.Cursor.Up() - - if usePlugin { - return PostActionCall("CursorUp", v) - } - return true -} - -// CursorDown moves the cursor down -func (v *View) CursorDown(usePlugin bool) bool { - if usePlugin && !PreActionCall("CursorDown", v) { - return false - } - - v.deselect(1) - v.Cursor.Down() - - if usePlugin { - return PostActionCall("CursorDown", v) - } - return true -} - -// CursorLeft moves the cursor left -func (v *View) CursorLeft(usePlugin bool) bool { - if usePlugin && !PreActionCall("CursorLeft", v) { - return false - } - - if v.Cursor.HasSelection() { - v.Cursor.Loc = v.Cursor.CurSelection[0] - v.Cursor.ResetSelection() - v.Cursor.StoreVisualX() - } else { - tabstospaces := v.Buf.Settings["tabstospaces"].(bool) - tabmovement := v.Buf.Settings["tabmovement"].(bool) - if tabstospaces && tabmovement { - tabsize := int(v.Buf.Settings["tabsize"].(float64)) - line := v.Buf.Line(v.Cursor.Y) - if v.Cursor.X-tabsize >= 0 && line[v.Cursor.X-tabsize:v.Cursor.X] == Spaces(tabsize) && IsStrWhitespace(line[0:v.Cursor.X-tabsize]) { - for i := 0; i < tabsize; i++ { - v.Cursor.Left() - } - } else { - v.Cursor.Left() - } - } else { - v.Cursor.Left() - } - } - - if usePlugin { - return PostActionCall("CursorLeft", v) - } - return true -} - -// CursorRight moves the cursor right -func (v *View) CursorRight(usePlugin bool) bool { - if usePlugin && !PreActionCall("CursorRight", v) { - return false - } - - if v.Cursor.HasSelection() { - v.Cursor.Loc = v.Cursor.CurSelection[1] - v.Cursor.ResetSelection() - v.Cursor.StoreVisualX() - } else { - tabstospaces := v.Buf.Settings["tabstospaces"].(bool) - tabmovement := v.Buf.Settings["tabmovement"].(bool) - if tabstospaces && tabmovement { - tabsize := int(v.Buf.Settings["tabsize"].(float64)) - line := v.Buf.Line(v.Cursor.Y) - if v.Cursor.X+tabsize < Count(line) && line[v.Cursor.X:v.Cursor.X+tabsize] == Spaces(tabsize) && IsStrWhitespace(line[0:v.Cursor.X]) { - for i := 0; i < tabsize; i++ { - v.Cursor.Right() - } - } else { - v.Cursor.Right() - } - } else { - v.Cursor.Right() - } - } - - if usePlugin { - return PostActionCall("CursorRight", v) - } - return true -} - -// WordRight moves the cursor one word to the right -func (v *View) WordRight(usePlugin bool) bool { - if usePlugin && !PreActionCall("WordRight", v) { - return false - } - - v.Cursor.WordRight() - - if usePlugin { - return PostActionCall("WordRight", v) - } - return true -} - -// WordLeft moves the cursor one word to the left -func (v *View) WordLeft(usePlugin bool) bool { - if usePlugin && !PreActionCall("WordLeft", v) { - return false - } - - v.Cursor.WordLeft() - - if usePlugin { - return PostActionCall("WordLeft", v) - } - return true -} - -// SelectUp selects up one line -func (v *View) SelectUp(usePlugin bool) bool { - if usePlugin && !PreActionCall("SelectUp", v) { - return false - } - - if !v.Cursor.HasSelection() { - v.Cursor.OrigSelection[0] = v.Cursor.Loc - } - v.Cursor.Up() - v.Cursor.SelectTo(v.Cursor.Loc) - - if usePlugin { - return PostActionCall("SelectUp", v) - } - return true -} - -// SelectDown selects down one line -func (v *View) SelectDown(usePlugin bool) bool { - if usePlugin && !PreActionCall("SelectDown", v) { - return false - } - - if !v.Cursor.HasSelection() { - v.Cursor.OrigSelection[0] = v.Cursor.Loc - } - v.Cursor.Down() - v.Cursor.SelectTo(v.Cursor.Loc) - - if usePlugin { - return PostActionCall("SelectDown", v) - } - return true -} - -// SelectLeft selects the character to the left of the cursor -func (v *View) SelectLeft(usePlugin bool) bool { - if usePlugin && !PreActionCall("SelectLeft", v) { - return false - } - - loc := v.Cursor.Loc - count := v.Buf.End() - if loc.GreaterThan(count) { - loc = count - } - if !v.Cursor.HasSelection() { - v.Cursor.OrigSelection[0] = loc - } - v.Cursor.Left() - v.Cursor.SelectTo(v.Cursor.Loc) - - if usePlugin { - return PostActionCall("SelectLeft", v) - } - return true -} - -// SelectRight selects the character to the right of the cursor -func (v *View) SelectRight(usePlugin bool) bool { - if usePlugin && !PreActionCall("SelectRight", v) { - return false - } - - loc := v.Cursor.Loc - count := v.Buf.End() - if loc.GreaterThan(count) { - loc = count - } - if !v.Cursor.HasSelection() { - v.Cursor.OrigSelection[0] = loc - } - v.Cursor.Right() - v.Cursor.SelectTo(v.Cursor.Loc) - - if usePlugin { - return PostActionCall("SelectRight", v) - } - return true -} - -// SelectWordRight selects the word to the right of the cursor -func (v *View) SelectWordRight(usePlugin bool) bool { - if usePlugin && !PreActionCall("SelectWordRight", v) { - return false - } - - if !v.Cursor.HasSelection() { - v.Cursor.OrigSelection[0] = v.Cursor.Loc - } - v.Cursor.WordRight() - v.Cursor.SelectTo(v.Cursor.Loc) - - if usePlugin { - return PostActionCall("SelectWordRight", v) - } - return true -} - -// SelectWordLeft selects the word to the left of the cursor -func (v *View) SelectWordLeft(usePlugin bool) bool { - if usePlugin && !PreActionCall("SelectWordLeft", v) { - return false - } - - if !v.Cursor.HasSelection() { - v.Cursor.OrigSelection[0] = v.Cursor.Loc - } - v.Cursor.WordLeft() - v.Cursor.SelectTo(v.Cursor.Loc) - - if usePlugin { - return PostActionCall("SelectWordLeft", v) - } - return true -} - -// StartOfLine moves the cursor to the start of the line -func (v *View) StartOfLine(usePlugin bool) bool { - if usePlugin && !PreActionCall("StartOfLine", v) { - return false - } - - v.deselect(0) - - if v.Cursor.X != 0 { - v.Cursor.Start() - } else { - v.Cursor.StartOfText() - } - - if usePlugin { - return PostActionCall("StartOfLine", v) - } - return true -} - -// EndOfLine moves the cursor to the end of the line -func (v *View) EndOfLine(usePlugin bool) bool { - if usePlugin && !PreActionCall("EndOfLine", v) { - return false - } - - v.deselect(0) - - v.Cursor.End() - - if usePlugin { - return PostActionCall("EndOfLine", v) - } - return true -} - -// SelectLine selects the entire current line -func (v *View) SelectLine(usePlugin bool) bool { - if usePlugin && !PreActionCall("SelectLine", v) { - return false - } - - v.Cursor.SelectLine() - - if usePlugin { - return PostActionCall("SelectLine", v) - } - return true -} - -// SelectToStartOfLine selects to the start of the current line -func (v *View) SelectToStartOfLine(usePlugin bool) bool { - if usePlugin && !PreActionCall("SelectToStartOfLine", v) { - return false - } - - if !v.Cursor.HasSelection() { - v.Cursor.OrigSelection[0] = v.Cursor.Loc - } - v.Cursor.Start() - v.Cursor.SelectTo(v.Cursor.Loc) - - if usePlugin { - return PostActionCall("SelectToStartOfLine", v) - } - return true -} - -// SelectToEndOfLine selects to the end of the current line -func (v *View) SelectToEndOfLine(usePlugin bool) bool { - if usePlugin && !PreActionCall("SelectToEndOfLine", v) { - return false - } - - if !v.Cursor.HasSelection() { - v.Cursor.OrigSelection[0] = v.Cursor.Loc - } - v.Cursor.End() - v.Cursor.SelectTo(v.Cursor.Loc) - - if usePlugin { - return PostActionCall("SelectToEndOfLine", v) - } - return true -} - -// ParagraphPrevious moves the cursor to the previous empty line, or beginning of the buffer if there's none -func (v *View) ParagraphPrevious(usePlugin bool) bool { - if usePlugin && !PreActionCall("ParagraphPrevious", v) { - return false - } - var line int - for line = v.Cursor.Y; line > 0; line-- { - if len(v.Buf.lines[line].data) == 0 && line != v.Cursor.Y { - v.Cursor.X = 0 - v.Cursor.Y = line - break - } - } - // If no empty line found. move cursor to end of buffer - if line == 0 { - v.Cursor.Loc = v.Buf.Start() - } - - if usePlugin { - return PostActionCall("ParagraphPrevious", v) - } - return true -} - -// ParagraphNext moves the cursor to the next empty line, or end of the buffer if there's none -func (v *View) ParagraphNext(usePlugin bool) bool { - if usePlugin && !PreActionCall("ParagraphNext", v) { - return false - } - - var line int - for line = v.Cursor.Y; line < len(v.Buf.lines); line++ { - if len(v.Buf.lines[line].data) == 0 && line != v.Cursor.Y { - v.Cursor.X = 0 - v.Cursor.Y = line - break - } - } - // If no empty line found. move cursor to end of buffer - if line == len(v.Buf.lines) { - v.Cursor.Loc = v.Buf.End() - } - - if usePlugin { - return PostActionCall("ParagraphNext", v) - } - return true -} - -// Retab changes all tabs to spaces or all spaces to tabs depending -// on the user's settings -func (v *View) Retab(usePlugin bool) bool { - if usePlugin && !PreActionCall("Retab", v) { - return false - } - - toSpaces := v.Buf.Settings["tabstospaces"].(bool) - tabsize := int(v.Buf.Settings["tabsize"].(float64)) - dirty := false - - for i := 0; i < v.Buf.NumLines; i++ { - l := v.Buf.Line(i) - - ws := GetLeadingWhitespace(l) - if ws != "" { - if toSpaces { - ws = strings.Replace(ws, "\t", Spaces(tabsize), -1) - } else { - ws = strings.Replace(ws, Spaces(tabsize), "\t", -1) - } - } - - l = strings.TrimLeft(l, " \t") - v.Buf.lines[i].data = []byte(ws + l) - dirty = true - } - - v.Buf.IsModified = dirty - - if usePlugin { - return PostActionCall("Retab", v) - } - return true -} - -// CursorStart moves the cursor to the start of the buffer -func (v *View) CursorStart(usePlugin bool) bool { - if usePlugin && !PreActionCall("CursorStart", v) { - return false - } - - v.deselect(0) - - v.Cursor.X = 0 - v.Cursor.Y = 0 - - if usePlugin { - return PostActionCall("CursorStart", v) - } - return true -} - -// CursorEnd moves the cursor to the end of the buffer -func (v *View) CursorEnd(usePlugin bool) bool { - if usePlugin && !PreActionCall("CursorEnd", v) { - return false - } - - v.deselect(0) - - v.Cursor.Loc = v.Buf.End() - v.Cursor.StoreVisualX() - - if usePlugin { - return PostActionCall("CursorEnd", v) - } - return true -} - -// SelectToStart selects the text from the cursor to the start of the buffer -func (v *View) SelectToStart(usePlugin bool) bool { - if usePlugin && !PreActionCall("SelectToStart", v) { - return false - } - - if !v.Cursor.HasSelection() { - v.Cursor.OrigSelection[0] = v.Cursor.Loc - } - v.CursorStart(false) - v.Cursor.SelectTo(v.Buf.Start()) - - if usePlugin { - return PostActionCall("SelectToStart", v) - } - return true -} - -// SelectToEnd selects the text from the cursor to the end of the buffer -func (v *View) SelectToEnd(usePlugin bool) bool { - if usePlugin && !PreActionCall("SelectToEnd", v) { - return false - } - - if !v.Cursor.HasSelection() { - v.Cursor.OrigSelection[0] = v.Cursor.Loc - } - v.CursorEnd(false) - v.Cursor.SelectTo(v.Buf.End()) - - if usePlugin { - return PostActionCall("SelectToEnd", v) - } - return true -} - -// InsertSpace inserts a space -func (v *View) InsertSpace(usePlugin bool) bool { - if usePlugin && !PreActionCall("InsertSpace", v) { - return false - } - - if v.Cursor.HasSelection() { - v.Cursor.DeleteSelection() - v.Cursor.ResetSelection() - } - v.Buf.Insert(v.Cursor.Loc, " ") - // v.Cursor.Right() - - if usePlugin { - return PostActionCall("InsertSpace", v) - } - return true -} - -// InsertNewline inserts a newline plus possible some whitespace if autoindent is on -func (v *View) InsertNewline(usePlugin bool) bool { - if usePlugin && !PreActionCall("InsertNewline", v) { - return false - } - - // Insert a newline - if v.Cursor.HasSelection() { - v.Cursor.DeleteSelection() - v.Cursor.ResetSelection() - } - - ws := GetLeadingWhitespace(v.Buf.Line(v.Cursor.Y)) - cx := v.Cursor.X - v.Buf.Insert(v.Cursor.Loc, "\n") - // v.Cursor.Right() - - if v.Buf.Settings["autoindent"].(bool) { - if cx < len(ws) { - ws = ws[0:cx] - } - v.Buf.Insert(v.Cursor.Loc, ws) - // for i := 0; i < len(ws); i++ { - // v.Cursor.Right() - // } - - // Remove the whitespaces if keepautoindent setting is off - if IsSpacesOrTabs(v.Buf.Line(v.Cursor.Y-1)) && !v.Buf.Settings["keepautoindent"].(bool) { - line := v.Buf.Line(v.Cursor.Y - 1) - v.Buf.Remove(Loc{0, v.Cursor.Y - 1}, Loc{Count(line), v.Cursor.Y - 1}) - } - } - v.Cursor.LastVisualX = v.Cursor.GetVisualX() - - if usePlugin { - return PostActionCall("InsertNewline", v) - } - return true -} - -// Backspace deletes the previous character -func (v *View) Backspace(usePlugin bool) bool { - if usePlugin && !PreActionCall("Backspace", v) { - return false - } - - // Delete a character - if v.Cursor.HasSelection() { - v.Cursor.DeleteSelection() - v.Cursor.ResetSelection() - } else if v.Cursor.Loc.GreaterThan(v.Buf.Start()) { - // We have to do something a bit hacky here because we want to - // delete the line by first moving left and then deleting backwards - // but the undo redo would place the cursor in the wrong place - // So instead we move left, save the position, move back, delete - // and restore the position - - // If the user is using spaces instead of tabs and they are deleting - // whitespace at the start of the line, we should delete as if it's a - // tab (tabSize number of spaces) - lineStart := sliceEnd(v.Buf.LineBytes(v.Cursor.Y), v.Cursor.X) - tabSize := int(v.Buf.Settings["tabsize"].(float64)) - if v.Buf.Settings["tabstospaces"].(bool) && IsSpaces(lineStart) && utf8.RuneCount(lineStart) != 0 && utf8.RuneCount(lineStart)%tabSize == 0 { - loc := v.Cursor.Loc - v.Buf.Remove(loc.Move(-tabSize, v.Buf), loc) - } else { - loc := v.Cursor.Loc - v.Buf.Remove(loc.Move(-1, v.Buf), loc) - } - } - v.Cursor.LastVisualX = v.Cursor.GetVisualX() - - if usePlugin { - return PostActionCall("Backspace", v) - } - return true -} - -// DeleteWordRight deletes the word to the right of the cursor -func (v *View) DeleteWordRight(usePlugin bool) bool { - if usePlugin && !PreActionCall("DeleteWordRight", v) { - return false - } - - v.SelectWordRight(false) - if v.Cursor.HasSelection() { - v.Cursor.DeleteSelection() - v.Cursor.ResetSelection() - } - - if usePlugin { - return PostActionCall("DeleteWordRight", v) - } - return true -} - -// DeleteWordLeft deletes the word to the left of the cursor -func (v *View) DeleteWordLeft(usePlugin bool) bool { - if usePlugin && !PreActionCall("DeleteWordLeft", v) { - return false - } - - v.SelectWordLeft(false) - if v.Cursor.HasSelection() { - v.Cursor.DeleteSelection() - v.Cursor.ResetSelection() - } - - if usePlugin { - return PostActionCall("DeleteWordLeft", v) - } - return true -} - -// Delete deletes the next character -func (v *View) Delete(usePlugin bool) bool { - if usePlugin && !PreActionCall("Delete", v) { - return false - } - - if v.Cursor.HasSelection() { - v.Cursor.DeleteSelection() - v.Cursor.ResetSelection() - } else { - loc := v.Cursor.Loc - if loc.LessThan(v.Buf.End()) { - v.Buf.Remove(loc, loc.Move(1, v.Buf)) - } - } - - if usePlugin { - return PostActionCall("Delete", v) - } - return true -} - -// IndentSelection indents the current selection -func (v *View) IndentSelection(usePlugin bool) bool { - if usePlugin && !PreActionCall("IndentSelection", v) { - return false - } - - if v.Cursor.HasSelection() { - start := v.Cursor.CurSelection[0] - end := v.Cursor.CurSelection[1] - if end.Y < start.Y { - start, end = end, start - v.Cursor.SetSelectionStart(start) - v.Cursor.SetSelectionEnd(end) - } - - startY := start.Y - endY := end.Move(-1, v.Buf).Y - endX := end.Move(-1, v.Buf).X - tabsize := len(v.Buf.IndentString()) - for y := startY; y <= endY; y++ { - v.Buf.Insert(Loc{0, y}, v.Buf.IndentString()) - if y == startY && start.X > 0 { - v.Cursor.SetSelectionStart(start.Move(tabsize, v.Buf)) - } - if y == endY { - v.Cursor.SetSelectionEnd(Loc{endX + tabsize + 1, endY}) - } - } - v.Cursor.Relocate() - - if usePlugin { - return PostActionCall("IndentSelection", v) - } - return true - } - return false -} - -// OutdentLine moves the current line back one indentation -func (v *View) OutdentLine(usePlugin bool) bool { - if usePlugin && !PreActionCall("OutdentLine", v) { - return false - } - - if v.Cursor.HasSelection() { - return false - } - - for x := 0; x < len(v.Buf.IndentString()); x++ { - if len(GetLeadingWhitespace(v.Buf.Line(v.Cursor.Y))) == 0 { - break - } - v.Buf.Remove(Loc{0, v.Cursor.Y}, Loc{1, v.Cursor.Y}) - } - v.Cursor.Relocate() - - if usePlugin { - return PostActionCall("OutdentLine", v) - } - return true -} - -// OutdentSelection takes the current selection and moves it back one indent level -func (v *View) OutdentSelection(usePlugin bool) bool { - if usePlugin && !PreActionCall("OutdentSelection", v) { - return false - } - - if v.Cursor.HasSelection() { - start := v.Cursor.CurSelection[0] - end := v.Cursor.CurSelection[1] - if end.Y < start.Y { - start, end = end, start - v.Cursor.SetSelectionStart(start) - v.Cursor.SetSelectionEnd(end) - } - - startY := start.Y - endY := end.Move(-1, v.Buf).Y - for y := startY; y <= endY; y++ { - for x := 0; x < len(v.Buf.IndentString()); x++ { - if len(GetLeadingWhitespace(v.Buf.Line(y))) == 0 { - break - } - v.Buf.Remove(Loc{0, y}, Loc{1, y}) - } - } - v.Cursor.Relocate() - - if usePlugin { - return PostActionCall("OutdentSelection", v) - } - return true - } - return false -} - -// InsertTab inserts a tab or spaces -func (v *View) InsertTab(usePlugin bool) bool { - if usePlugin && !PreActionCall("InsertTab", v) { - return false - } - - if v.Cursor.HasSelection() { - return false - } - - tabBytes := len(v.Buf.IndentString()) - bytesUntilIndent := tabBytes - (v.Cursor.GetVisualX() % tabBytes) - v.Buf.Insert(v.Cursor.Loc, v.Buf.IndentString()[:bytesUntilIndent]) - // for i := 0; i < bytesUntilIndent; i++ { - // v.Cursor.Right() - // } - - if usePlugin { - return PostActionCall("InsertTab", v) - } - return true -} - -// SaveAll saves all open buffers -func (v *View) SaveAll(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("SaveAll", v) { - return false - } - - for _, t := range tabs { - for _, v := range t.Views { - v.Save(false) - } - } - - if usePlugin { - return PostActionCall("SaveAll", v) - } - } - return false -} - -// Save the buffer to disk -func (v *View) Save(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("Save", v) { - return false - } - - if v.Type.Scratch == true { - // We can't save any view type with scratch set. eg help and log text - return false - } - // If this is an empty buffer, ask for a filename - if v.Buf.Path == "" { - v.SaveAs(false) - } else { - v.saveToFile(v.Buf.Path) - } - - if usePlugin { - return PostActionCall("Save", v) - } - } - return false -} - -// This function saves the buffer to `filename` and changes the buffer's path and name -// to `filename` if the save is successful -func (v *View) saveToFile(filename string) { - err := v.Buf.SaveAs(filename) - if err != nil { - if strings.HasSuffix(err.Error(), "permission denied") { - choice, _ := messenger.YesNoPrompt("Permission denied. Do you want to save this file using sudo? (y,n)") - if choice { - err = v.Buf.SaveAsWithSudo(filename) - if err != nil { - messenger.Error(err.Error()) - } else { - v.Buf.Path = filename - v.Buf.name = filename - messenger.Message("Saved " + filename) - } - } - messenger.Reset() - messenger.Clear() - } else { - messenger.Error(err.Error()) - } - } else { - v.Buf.Path = filename - v.Buf.name = filename - messenger.Message("Saved " + filename) - } -} - -// SaveAs saves the buffer to disk with the given name -func (v *View) SaveAs(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("SaveAs", v) { - return false - } - - filename, canceled := messenger.Prompt("Filename: ", "", "Save", NoCompletion) - if !canceled { - // the filename might or might not be quoted, so unquote first then join the strings. - args, err := shellwords.Split(filename) - filename = strings.Join(args, " ") - if err != nil { - messenger.Error("Error parsing arguments: ", err) - return false - } - v.saveToFile(filename) - } - - if usePlugin { - PostActionCall("SaveAs", v) - } - } - return false -} - -// Find opens a prompt and searches forward for the input -func (v *View) Find(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("Find", v) { - return false - } - - searchStr := "" - if v.Cursor.HasSelection() { - searchStart = v.Cursor.CurSelection[1] - searchStart = v.Cursor.CurSelection[1] - searchStr = v.Cursor.GetSelection() - } else { - searchStart = v.Cursor.Loc - } - BeginSearch(searchStr) - - if usePlugin { - return PostActionCall("Find", v) - } - } - return true -} - -// FindNext searches forwards for the last used search term -func (v *View) FindNext(usePlugin bool) bool { - if usePlugin && !PreActionCall("FindNext", v) { - return false - } - - if v.Cursor.HasSelection() { - searchStart = v.Cursor.CurSelection[1] - // lastSearch = v.Cursor.GetSelection() - } else { - searchStart = v.Cursor.Loc - } - if lastSearch == "" { - return true - } - messenger.Message("Finding: " + lastSearch) - Search(lastSearch, v, true) - - if usePlugin { - return PostActionCall("FindNext", v) - } - return true -} - -// FindPrevious searches backwards for the last used search term -func (v *View) FindPrevious(usePlugin bool) bool { - if usePlugin && !PreActionCall("FindPrevious", v) { - return false - } - - if v.Cursor.HasSelection() { - searchStart = v.Cursor.CurSelection[0] - } else { - searchStart = v.Cursor.Loc - } - messenger.Message("Finding: " + lastSearch) - Search(lastSearch, v, false) - - if usePlugin { - return PostActionCall("FindPrevious", v) - } - return true -} - -// Undo undoes the last action -func (v *View) Undo(usePlugin bool) bool { - if usePlugin && !PreActionCall("Undo", v) { - return false - } - - if v.Buf.curCursor == 0 { - v.Buf.clearCursors() - } - - v.Buf.Undo() - messenger.Message("Undid action") - - if usePlugin { - return PostActionCall("Undo", v) - } - return true -} - -// Redo redoes the last action -func (v *View) Redo(usePlugin bool) bool { - if usePlugin && !PreActionCall("Redo", v) { - return false - } - - if v.Buf.curCursor == 0 { - v.Buf.clearCursors() - } - - v.Buf.Redo() - messenger.Message("Redid action") - - if usePlugin { - return PostActionCall("Redo", v) - } - return true -} - -// Copy the selection to the system clipboard -func (v *View) Copy(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("Copy", v) { - return false - } - - if v.Cursor.HasSelection() { - v.Cursor.CopySelection("clipboard") - v.freshClip = true - messenger.Message("Copied selection") - } - - if usePlugin { - return PostActionCall("Copy", v) - } - } - return true -} - -// CutLine cuts the current line to the clipboard -func (v *View) CutLine(usePlugin bool) bool { - if usePlugin && !PreActionCall("CutLine", v) { - return false - } - - v.Cursor.SelectLine() - if !v.Cursor.HasSelection() { - return false - } - if v.freshClip == true { - if v.Cursor.HasSelection() { - if clip, err := clipboard.ReadAll("clipboard"); err != nil { - messenger.Error(err) - } else { - clipboard.WriteAll(clip+v.Cursor.GetSelection(), "clipboard") - } - } - } else if time.Since(v.lastCutTime)/time.Second > 10*time.Second || v.freshClip == false { - v.Copy(true) - } - v.freshClip = true - v.lastCutTime = time.Now() - v.Cursor.DeleteSelection() - v.Cursor.ResetSelection() - messenger.Message("Cut line") - - if usePlugin { - return PostActionCall("CutLine", v) - } - return true -} - -// Cut the selection to the system clipboard -func (v *View) Cut(usePlugin bool) bool { - if usePlugin && !PreActionCall("Cut", v) { - return false - } - - if v.Cursor.HasSelection() { - v.Cursor.CopySelection("clipboard") - v.Cursor.DeleteSelection() - v.Cursor.ResetSelection() - v.freshClip = true - messenger.Message("Cut selection") - - if usePlugin { - return PostActionCall("Cut", v) - } - return true - } else { - return v.CutLine(usePlugin) - } -} - -// DuplicateLine duplicates the current line or selection -func (v *View) DuplicateLine(usePlugin bool) bool { - if usePlugin && !PreActionCall("DuplicateLine", v) { - return false - } - - if v.Cursor.HasSelection() { - v.Buf.Insert(v.Cursor.CurSelection[1], v.Cursor.GetSelection()) - } else { - v.Cursor.End() - v.Buf.Insert(v.Cursor.Loc, "\n"+v.Buf.Line(v.Cursor.Y)) - // v.Cursor.Right() - } - - messenger.Message("Duplicated line") - - if usePlugin { - return PostActionCall("DuplicateLine", v) - } - return true -} - -// DeleteLine deletes the current line -func (v *View) DeleteLine(usePlugin bool) bool { - if usePlugin && !PreActionCall("DeleteLine", v) { - return false - } - - v.Cursor.SelectLine() - if !v.Cursor.HasSelection() { - return false - } - v.Cursor.DeleteSelection() - v.Cursor.ResetSelection() - messenger.Message("Deleted line") - - if usePlugin { - return PostActionCall("DeleteLine", v) - } - return true -} - -// MoveLinesUp moves up the current line or selected lines if any -func (v *View) MoveLinesUp(usePlugin bool) bool { - if usePlugin && !PreActionCall("MoveLinesUp", v) { - return false - } - - if v.Cursor.HasSelection() { - if v.Cursor.CurSelection[0].Y == 0 { - messenger.Message("Can not move further up") - return true - } - start := v.Cursor.CurSelection[0].Y - end := v.Cursor.CurSelection[1].Y - if start > end { - end, start = start, end - } - - v.Buf.MoveLinesUp( - start, - end, - ) - v.Cursor.CurSelection[1].Y -= 1 - messenger.Message("Moved up selected line(s)") - } else { - if v.Cursor.Loc.Y == 0 { - messenger.Message("Can not move further up") - return true - } - v.Buf.MoveLinesUp( - v.Cursor.Loc.Y, - v.Cursor.Loc.Y+1, - ) - messenger.Message("Moved up current line") - } - v.Buf.IsModified = true - - if usePlugin { - return PostActionCall("MoveLinesUp", v) - } - return true -} - -// MoveLinesDown moves down the current line or selected lines if any -func (v *View) MoveLinesDown(usePlugin bool) bool { - if usePlugin && !PreActionCall("MoveLinesDown", v) { - return false - } - - if v.Cursor.HasSelection() { - if v.Cursor.CurSelection[1].Y >= len(v.Buf.lines) { - messenger.Message("Can not move further down") - return true - } - start := v.Cursor.CurSelection[0].Y - end := v.Cursor.CurSelection[1].Y - if start > end { - end, start = start, end - } - - v.Buf.MoveLinesDown( - start, - end, - ) - messenger.Message("Moved down selected line(s)") - } else { - if v.Cursor.Loc.Y >= len(v.Buf.lines)-1 { - messenger.Message("Can not move further down") - return true - } - v.Buf.MoveLinesDown( - v.Cursor.Loc.Y, - v.Cursor.Loc.Y+1, - ) - messenger.Message("Moved down current line") - } - v.Buf.IsModified = true - - if usePlugin { - return PostActionCall("MoveLinesDown", v) - } - return true -} - -// Paste whatever is in the system clipboard into the buffer -// Delete and paste if the user has a selection -func (v *View) Paste(usePlugin bool) bool { - if usePlugin && !PreActionCall("Paste", v) { - return false - } - - clip, _ := clipboard.ReadAll("clipboard") - v.paste(clip) - - if usePlugin { - return PostActionCall("Paste", v) - } - return true -} - -// PastePrimary pastes from the primary clipboard (only use on linux) -func (v *View) PastePrimary(usePlugin bool) bool { - if usePlugin && !PreActionCall("Paste", v) { - return false - } - - clip, _ := clipboard.ReadAll("primary") - v.paste(clip) - - if usePlugin { - return PostActionCall("Paste", v) - } - return true -} - -// JumpToMatchingBrace moves the cursor to the matching brace if it is -// currently on a brace -func (v *View) JumpToMatchingBrace(usePlugin bool) bool { - if usePlugin && !PreActionCall("JumpToMatchingBrace", v) { - return false - } - - for _, bp := range bracePairs { - r := v.Cursor.RuneUnder(v.Cursor.X) - if r == bp[0] || r == bp[1] { - matchingBrace := v.Buf.FindMatchingBrace(bp, v.Cursor.Loc) - v.Cursor.GotoLoc(matchingBrace) - } - } - - if usePlugin { - return PostActionCall("JumpToMatchingBrace", v) - } - return true -} - -// SelectAll selects the entire buffer -func (v *View) SelectAll(usePlugin bool) bool { - if usePlugin && !PreActionCall("SelectAll", v) { - return false - } - - v.Cursor.SetSelectionStart(v.Buf.Start()) - v.Cursor.SetSelectionEnd(v.Buf.End()) - // Put the cursor at the beginning - v.Cursor.X = 0 - v.Cursor.Y = 0 - - if usePlugin { - return PostActionCall("SelectAll", v) - } - return true -} - -// OpenFile opens a new file in the buffer -func (v *View) OpenFile(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("OpenFile", v) { - return false - } - - if v.CanClose() { - input, canceled := messenger.Prompt("> ", "open ", "Open", CommandCompletion) - if !canceled { - HandleCommand(input) - if usePlugin { - return PostActionCall("OpenFile", v) - } - } - } - } - return false -} - -// Start moves the viewport to the start of the buffer -func (v *View) Start(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("Start", v) { - return false - } - - v.Topline = 0 - - if usePlugin { - return PostActionCall("Start", v) - } - } - return false -} - -// End moves the viewport to the end of the buffer -func (v *View) End(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("End", v) { - return false - } - - if v.Height > v.Buf.NumLines { - v.Topline = 0 - } else { - v.Topline = v.Buf.NumLines - v.Height - } - - if usePlugin { - return PostActionCall("End", v) - } - } - return false -} - -// PageUp scrolls the view up a page -func (v *View) PageUp(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("PageUp", v) { - return false - } - - if v.Topline > v.Height { - v.ScrollUp(v.Height) - } else { - v.Topline = 0 - } - - if usePlugin { - return PostActionCall("PageUp", v) - } - } - return false -} - -// PageDown scrolls the view down a page -func (v *View) PageDown(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("PageDown", v) { - return false - } - - if v.Buf.NumLines-(v.Topline+v.Height) > v.Height { - v.ScrollDown(v.Height) - } else if v.Buf.NumLines >= v.Height { - v.Topline = v.Buf.NumLines - v.Height - } - - if usePlugin { - return PostActionCall("PageDown", v) - } - } - return false -} - -// SelectPageUp selects up one page -func (v *View) SelectPageUp(usePlugin bool) bool { - if usePlugin && !PreActionCall("SelectPageUp", v) { - return false - } - - if !v.Cursor.HasSelection() { - v.Cursor.OrigSelection[0] = v.Cursor.Loc - } - v.Cursor.UpN(v.Height) - v.Cursor.SelectTo(v.Cursor.Loc) - - if usePlugin { - return PostActionCall("SelectPageUp", v) - } - return true -} - -// SelectPageDown selects down one page -func (v *View) SelectPageDown(usePlugin bool) bool { - if usePlugin && !PreActionCall("SelectPageDown", v) { - return false - } - - if !v.Cursor.HasSelection() { - v.Cursor.OrigSelection[0] = v.Cursor.Loc - } - v.Cursor.DownN(v.Height) - v.Cursor.SelectTo(v.Cursor.Loc) - - if usePlugin { - return PostActionCall("SelectPageDown", v) - } - return true -} - -// CursorPageUp places the cursor a page up -func (v *View) CursorPageUp(usePlugin bool) bool { - if usePlugin && !PreActionCall("CursorPageUp", v) { - return false - } - - v.deselect(0) - - if v.Cursor.HasSelection() { - v.Cursor.Loc = v.Cursor.CurSelection[0] - v.Cursor.ResetSelection() - v.Cursor.StoreVisualX() - } - v.Cursor.UpN(v.Height) - - if usePlugin { - return PostActionCall("CursorPageUp", v) - } - return true -} - -// CursorPageDown places the cursor a page up -func (v *View) CursorPageDown(usePlugin bool) bool { - if usePlugin && !PreActionCall("CursorPageDown", v) { - return false - } - - v.deselect(0) - - if v.Cursor.HasSelection() { - v.Cursor.Loc = v.Cursor.CurSelection[1] - v.Cursor.ResetSelection() - v.Cursor.StoreVisualX() - } - v.Cursor.DownN(v.Height) - - if usePlugin { - return PostActionCall("CursorPageDown", v) - } - return true -} - -// HalfPageUp scrolls the view up half a page -func (v *View) HalfPageUp(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("HalfPageUp", v) { - return false - } - - if v.Topline > v.Height/2 { - v.ScrollUp(v.Height / 2) - } else { - v.Topline = 0 - } - - if usePlugin { - return PostActionCall("HalfPageUp", v) - } - } - return false -} - -// HalfPageDown scrolls the view down half a page -func (v *View) HalfPageDown(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("HalfPageDown", v) { - return false - } - - if v.Buf.NumLines-(v.Topline+v.Height) > v.Height/2 { - v.ScrollDown(v.Height / 2) - } else { - if v.Buf.NumLines >= v.Height { - v.Topline = v.Buf.NumLines - v.Height - } - } - - if usePlugin { - return PostActionCall("HalfPageDown", v) - } - } - return false -} - -// ToggleRuler turns line numbers off and on -func (v *View) ToggleRuler(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("ToggleRuler", v) { - return false - } - - if v.Buf.Settings["ruler"] == false { - v.Buf.Settings["ruler"] = true - messenger.Message("Enabled ruler") - } else { - v.Buf.Settings["ruler"] = false - messenger.Message("Disabled ruler") - } - - if usePlugin { - return PostActionCall("ToggleRuler", v) - } - } - return false -} - -// JumpLine jumps to a line and moves the view accordingly. -func (v *View) JumpLine(usePlugin bool) bool { - if usePlugin && !PreActionCall("JumpLine", v) { - return false - } - - // Prompt for line number - message := fmt.Sprintf("Jump to line:col (1 - %v) # ", v.Buf.NumLines) - input, canceled := messenger.Prompt(message, "", "LineNumber", NoCompletion) - if canceled { - return false - } - var lineInt int - var colInt int - var err error - if strings.Contains(input, ":") { - split := strings.Split(input, ":") - lineInt, err = strconv.Atoi(split[0]) - if err != nil { - messenger.Message("Invalid line number") - return false - } - colInt, err = strconv.Atoi(split[1]) - if err != nil { - messenger.Message("Invalid column number") - return false - } - } else { - lineInt, err = strconv.Atoi(input) - if err != nil { - messenger.Message("Invalid line number") - return false - } - } - lineInt-- - // Move cursor and view if possible. - if lineInt < v.Buf.NumLines && lineInt >= 0 { - v.Cursor.X = colInt - v.Cursor.Y = lineInt - - if usePlugin { - return PostActionCall("JumpLine", v) - } - return true - } - messenger.Error("Only ", v.Buf.NumLines, " lines to jump") - return false -} - -// ClearStatus clears the messenger bar -func (v *View) ClearStatus(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("ClearStatus", v) { - return false - } - - messenger.Message("") - - if usePlugin { - return PostActionCall("ClearStatus", v) - } - } - return false -} - -// ToggleHelp toggles the help screen -func (v *View) ToggleHelp(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("ToggleHelp", v) { - return false - } - - if v.Type != vtHelp { - // Open the default help - v.openHelp("help") - } else { - v.Quit(true) - } - - if usePlugin { - return PostActionCall("ToggleHelp", v) - } - } - return true -} - -// ToggleKeyMenu toggles the keymenu option and resizes all tabs -func (v *View) ToggleKeyMenu(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("ToggleBindings", v) { - return false - } - - globalSettings["keymenu"] = !globalSettings["keymenu"].(bool) - for _, tab := range tabs { - tab.Resize() - } - - if usePlugin { - return PostActionCall("ToggleBindings", v) - } - } - return true -} - -// ShellMode opens a terminal to run a shell command -func (v *View) ShellMode(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("ShellMode", v) { - return false - } - - input, canceled := messenger.Prompt("$ ", "", "Shell", NoCompletion) - if !canceled { - // The true here is for openTerm to make the command interactive - HandleShellCommand(input, true, true) - if usePlugin { - return PostActionCall("ShellMode", v) - } - } - } - return false -} - -// CommandMode lets the user enter a command -func (v *View) CommandMode(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("CommandMode", v) { - return false - } - - input, canceled := messenger.Prompt("> ", "", "Command", CommandCompletion) - if !canceled { - HandleCommand(input) - if usePlugin { - return PostActionCall("CommandMode", v) - } - } - } - - return false -} - -// ToggleOverwriteMode lets the user toggle the text overwrite mode -func (v *View) ToggleOverwriteMode(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("ToggleOverwriteMode", v) { - return false - } - - v.isOverwriteMode = !v.isOverwriteMode - - if usePlugin { - return PostActionCall("ToggleOverwriteMode", v) - } - } - return false -} - -// Escape leaves current mode -func (v *View) Escape(usePlugin bool) bool { - if v.mainCursor() { - // check if user is searching, or the last search is still active - if searching || lastSearch != "" { - ExitSearch(v) - return true - } - // check if a prompt is shown, hide it and don't quit - if messenger.hasPrompt { - messenger.Reset() // FIXME - return true - } - } - - return false -} - -// Quit this will close the current tab or view that is open -func (v *View) Quit(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("Quit", v) { - return false - } - - // Make sure not to quit if there are unsaved changes - if v.CanClose() { - v.CloseBuffer() - if len(tabs[curTab].Views) > 1 { - v.splitNode.Delete() - tabs[v.TabNum].Cleanup() - tabs[v.TabNum].Resize() - } else if len(tabs) > 1 { - if len(tabs[v.TabNum].Views) == 1 { - tabs = tabs[:v.TabNum+copy(tabs[v.TabNum:], tabs[v.TabNum+1:])] - for i, t := range tabs { - t.SetNum(i) - } - if curTab >= len(tabs) { - curTab-- - } - if curTab == 0 { - CurView().ToggleTabbar() - } - } - } else { - if usePlugin { - PostActionCall("Quit", v) - } - - screen.Fini() - messenger.SaveHistory() - os.Exit(0) - } - } - - if usePlugin { - return PostActionCall("Quit", v) - } - } - return false -} - -// QuitAll quits the whole editor; all splits and tabs -func (v *View) QuitAll(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("QuitAll", v) { - return false - } - - closeAll := true - for _, tab := range tabs { - for _, v := range tab.Views { - if !v.CanClose() { - closeAll = false - } - } - } - - if closeAll { - // only quit if all of the buffers can be closed and the user confirms that they actually want to quit everything - shouldQuit, _ := messenger.YesNoPrompt("Do you want to quit micro (all open files will be closed)?") - - if shouldQuit { - for _, tab := range tabs { - for _, v := range tab.Views { - v.CloseBuffer() - } - } - - if usePlugin { - PostActionCall("QuitAll", v) - } - - screen.Fini() - messenger.SaveHistory() - os.Exit(0) - } - } - } - - return false -} - -// AddTab adds a new tab with an empty buffer -func (v *View) AddTab(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("AddTab", v) { - return false - } - - tab := NewTabFromView(NewView(NewBufferFromString("", ""))) - tab.SetNum(len(tabs)) - tabs = append(tabs, tab) - curTab = len(tabs) - 1 - if len(tabs) == 2 { - for _, t := range tabs { - for _, v := range t.Views { - v.ToggleTabbar() - } - } - } - - if usePlugin { - return PostActionCall("AddTab", v) - } - } - return true -} - -// PreviousTab switches to the previous tab in the tab list -func (v *View) PreviousTab(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("PreviousTab", v) { - return false - } - - if curTab > 0 { - curTab-- - } else if curTab == 0 { - curTab = len(tabs) - 1 - } - - if usePlugin { - return PostActionCall("PreviousTab", v) - } - } - return false -} - -// NextTab switches to the next tab in the tab list -func (v *View) NextTab(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("NextTab", v) { - return false - } - - if curTab < len(tabs)-1 { - curTab++ - } else if curTab == len(tabs)-1 { - curTab = 0 - } - - if usePlugin { - return PostActionCall("NextTab", v) - } - } - return false -} - -// VSplitBinding opens an empty vertical split -func (v *View) VSplitBinding(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("VSplit", v) { - return false - } - - v.VSplit(NewBufferFromString("", "")) - - if usePlugin { - return PostActionCall("VSplit", v) - } - } - return false -} - -// HSplitBinding opens an empty horizontal split -func (v *View) HSplitBinding(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("HSplit", v) { - return false - } - - v.HSplit(NewBufferFromString("", "")) - - if usePlugin { - return PostActionCall("HSplit", v) - } - } - return false -} - -// Unsplit closes all splits in the current tab except the active one -func (v *View) Unsplit(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("Unsplit", v) { - return false - } - - curView := tabs[curTab].CurView - for i := len(tabs[curTab].Views) - 1; i >= 0; i-- { - view := tabs[curTab].Views[i] - if view != nil && view.Num != curView { - view.Quit(true) - // messenger.Message("Quit ", view.Buf.Path) - } - } - - if usePlugin { - return PostActionCall("Unsplit", v) - } - } - return false -} - -// NextSplit changes the view to the next split -func (v *View) NextSplit(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("NextSplit", v) { - return false - } - - tab := tabs[curTab] - if tab.CurView < len(tab.Views)-1 { - tab.CurView++ - } else { - tab.CurView = 0 - } - - if usePlugin { - return PostActionCall("NextSplit", v) - } - } - return false -} - -// PreviousSplit changes the view to the previous split -func (v *View) PreviousSplit(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("PreviousSplit", v) { - return false - } - - tab := tabs[curTab] - if tab.CurView > 0 { - tab.CurView-- - } else { - tab.CurView = len(tab.Views) - 1 - } - - if usePlugin { - return PostActionCall("PreviousSplit", v) - } - } - return false -} - -var curMacro []interface{} -var recordingMacro bool - -// ToggleMacro toggles recording of a macro -func (v *View) ToggleMacro(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("ToggleMacro", v) { - return false - } - - recordingMacro = !recordingMacro - - if recordingMacro { - curMacro = []interface{}{} - messenger.Message("Recording") - } else { - messenger.Message("Stopped recording") - } - - if usePlugin { - return PostActionCall("ToggleMacro", v) - } - } - return true -} - -// PlayMacro plays back the most recently recorded macro -func (v *View) PlayMacro(usePlugin bool) bool { - if usePlugin && !PreActionCall("PlayMacro", v) { - return false - } - - for _, action := range curMacro { - switch t := action.(type) { - case rune: - // Insert a character - if v.Cursor.HasSelection() { - v.Cursor.DeleteSelection() - v.Cursor.ResetSelection() - } - v.Buf.Insert(v.Cursor.Loc, string(t)) - // v.Cursor.Right() - - for pl := range loadedPlugins { - _, err := Call(pl+".onRune", string(t), v) - if err != nil && !strings.HasPrefix(err.Error(), "function does not exist") { - TermMessage(err) - } - } - case func(*View, bool) bool: - t(v, true) - } - } - - if usePlugin { - return PostActionCall("PlayMacro", v) - } - return true -} - -// SpawnMultiCursor creates a new multiple cursor at the next occurrence of the current selection or current word -func (v *View) SpawnMultiCursor(usePlugin bool) bool { - spawner := v.Buf.cursors[len(v.Buf.cursors)-1] - // You can only spawn a cursor from the main cursor - if v.Cursor == spawner { - if usePlugin && !PreActionCall("SpawnMultiCursor", v) { - return false - } - - if !spawner.HasSelection() { - spawner.SelectWord() - } else { - c := &Cursor{ - buf: v.Buf, - } - - sel := spawner.GetSelection() - - searchStart = spawner.CurSelection[1] - v.Cursor = c - Search(regexp.QuoteMeta(sel), v, true) - - for _, cur := range v.Buf.cursors { - if c.Loc == cur.Loc { - return false - } - } - v.Buf.cursors = append(v.Buf.cursors, c) - v.Buf.UpdateCursors() - v.Relocate() - v.Cursor = spawner - } - - if usePlugin { - PostActionCall("SpawnMultiCursor", v) - } - } - - return false -} - -// SpawnMultiCursorSelect adds a cursor at the beginning of each line of a selection -func (v *View) SpawnMultiCursorSelect(usePlugin bool) bool { - if v.Cursor == &v.Buf.Cursor { - if usePlugin && !PreActionCall("SpawnMultiCursorSelect", v) { - return false - } - - // Avoid cases where multiple cursors already exist, that would create problems - if len(v.Buf.cursors) > 1 { - return false - } - - var startLine int - var endLine int - - a, b := v.Cursor.CurSelection[0].Y, v.Cursor.CurSelection[1].Y - if a > b { - startLine, endLine = b, a - } else { - startLine, endLine = a, b - } - - if v.Cursor.HasSelection() { - v.Cursor.ResetSelection() - v.Cursor.GotoLoc(Loc{0, startLine}) - - for i := startLine; i <= endLine; i++ { - c := &Cursor{ - buf: v.Buf, - } - c.GotoLoc(Loc{0, i}) - v.Buf.cursors = append(v.Buf.cursors, c) - } - v.Buf.MergeCursors() - v.Buf.UpdateCursors() - } else { - return false - } - - if usePlugin { - PostActionCall("SpawnMultiCursorSelect", v) - } - - messenger.Message("Added cursors from selection") - } - return false -} - -// MouseMultiCursor is a mouse action which puts a new cursor at the mouse position -func (v *View) MouseMultiCursor(usePlugin bool, e *tcell.EventMouse) bool { - if v.Cursor == &v.Buf.Cursor { - if usePlugin && !PreActionCall("SpawnMultiCursorAtMouse", v, e) { - return false - } - x, y := e.Position() - x -= v.lineNumOffset - v.leftCol + v.x - y += v.Topline - v.y - - c := &Cursor{ - buf: v.Buf, - } - v.Cursor = c - v.MoveToMouseClick(x, y) - v.Relocate() - v.Cursor = &v.Buf.Cursor - - v.Buf.cursors = append(v.Buf.cursors, c) - v.Buf.MergeCursors() - v.Buf.UpdateCursors() - - if usePlugin { - PostActionCall("SpawnMultiCursorAtMouse", v) - } - } - return false -} - -// SkipMultiCursor moves the current multiple cursor to the next available position -func (v *View) SkipMultiCursor(usePlugin bool) bool { - cursor := v.Buf.cursors[len(v.Buf.cursors)-1] - - if v.mainCursor() { - if usePlugin && !PreActionCall("SkipMultiCursor", v) { - return false - } - sel := cursor.GetSelection() - - searchStart = cursor.CurSelection[1] - v.Cursor = cursor - Search(regexp.QuoteMeta(sel), v, true) - v.Relocate() - v.Cursor = cursor - - if usePlugin { - PostActionCall("SkipMultiCursor", v) - } - } - return false -} - -// RemoveMultiCursor removes the latest multiple cursor -func (v *View) RemoveMultiCursor(usePlugin bool) bool { - end := len(v.Buf.cursors) - if end > 1 { - if v.mainCursor() { - if usePlugin && !PreActionCall("RemoveMultiCursor", v) { - return false - } - - v.Buf.cursors[end-1] = nil - v.Buf.cursors = v.Buf.cursors[:end-1] - v.Buf.UpdateCursors() - v.Relocate() - - if usePlugin { - return PostActionCall("RemoveMultiCursor", v) - } - return true - } - } else { - v.RemoveAllMultiCursors(usePlugin) - } - return false -} - -// RemoveAllMultiCursors removes all cursors except the base cursor -func (v *View) RemoveAllMultiCursors(usePlugin bool) bool { - if v.mainCursor() { - if usePlugin && !PreActionCall("RemoveAllMultiCursors", v) { - return false - } - - v.Buf.clearCursors() - v.Relocate() - - if usePlugin { - return PostActionCall("RemoveAllMultiCursors", v) - } - return true - } - return false -} diff --git a/cmd/micro/actions_other.go b/cmd/micro/actions_other.go deleted file mode 100644 index 10a099ef..00000000 --- a/cmd/micro/actions_other.go +++ /dev/null @@ -1,9 +0,0 @@ -// +build plan9 nacl windows - -package main - -func (v *View) Suspend(usePlugin bool) bool { - messenger.Error("Suspend is only supported on Posix") - - return false -} diff --git a/cmd/micro/actions_posix.go b/cmd/micro/actions_posix.go deleted file mode 100644 index eb67d689..00000000 --- a/cmd/micro/actions_posix.go +++ /dev/null @@ -1,37 +0,0 @@ -// +build linux darwin dragonfly solaris openbsd netbsd freebsd - -package main - -import "syscall" - -// Suspend sends micro to the background. This is the same as pressing CtrlZ in most unix programs. -// This only works on linux and has no default binding. -// This code was adapted from the suspend code in nsf/godit -func (v *View) Suspend(usePlugin bool) bool { - if usePlugin && !PreActionCall("Suspend", v) { - return false - } - - screenWasNil := screen == nil - - if !screenWasNil { - screen.Fini() - screen = nil - } - - // suspend the process - pid := syscall.Getpid() - err := syscall.Kill(pid, syscall.SIGSTOP) - if err != nil { - TermMessage(err) - } - - if !screenWasNil { - InitScreen() - } - - if usePlugin { - return PostActionCall("Suspend", v) - } - return true -} diff --git a/cmd/micro/autocomplete.go b/cmd/micro/autocomplete.go deleted file mode 100644 index 3ecc3f16..00000000 --- a/cmd/micro/autocomplete.go +++ /dev/null @@ -1,249 +0,0 @@ -package main - -import ( - "io/ioutil" - "os" - "strings" -) - -var pluginCompletions []func(string) []string - -// This file is meant (for now) for autocompletion in command mode, not -// while coding. This helps micro autocomplete commands and then filenames -// for example with `vsplit filename`. - -// FileComplete autocompletes filenames -func FileComplete(input string) (string, []string) { - var sep string = string(os.PathSeparator) - dirs := strings.Split(input, sep) - - var files []os.FileInfo - var err error - if len(dirs) > 1 { - directories := strings.Join(dirs[:len(dirs)-1], sep) + sep - - directories = ReplaceHome(directories) - files, err = ioutil.ReadDir(directories) - } else { - files, err = ioutil.ReadDir(".") - } - - var suggestions []string - if err != nil { - return "", suggestions - } - for _, f := range files { - name := f.Name() - if f.IsDir() { - name += sep - } - if strings.HasPrefix(name, dirs[len(dirs)-1]) { - suggestions = append(suggestions, name) - } - } - - var chosen string - if len(suggestions) == 1 { - if len(dirs) > 1 { - chosen = strings.Join(dirs[:len(dirs)-1], sep) + sep + suggestions[0] - } else { - chosen = suggestions[0] - } - } else { - if len(dirs) > 1 { - chosen = strings.Join(dirs[:len(dirs)-1], sep) + sep - } - } - - return chosen, suggestions -} - -// CommandComplete autocompletes commands -func CommandComplete(input string) (string, []string) { - var suggestions []string - for cmd := range commands { - if strings.HasPrefix(cmd, input) { - suggestions = append(suggestions, cmd) - } - } - - var chosen string - if len(suggestions) == 1 { - chosen = suggestions[0] - } - return chosen, suggestions -} - -// HelpComplete autocompletes help topics -func HelpComplete(input string) (string, []string) { - var suggestions []string - - for _, file := range ListRuntimeFiles(RTHelp) { - topic := file.Name() - if strings.HasPrefix(topic, input) { - suggestions = append(suggestions, topic) - } - } - - var chosen string - if len(suggestions) == 1 { - chosen = suggestions[0] - } - return chosen, suggestions -} - -// ColorschemeComplete tab-completes names of colorschemes. -func ColorschemeComplete(input string) (string, []string) { - var suggestions []string - files := ListRuntimeFiles(RTColorscheme) - - for _, f := range files { - if strings.HasPrefix(f.Name(), input) { - suggestions = append(suggestions, f.Name()) - } - } - - var chosen string - if len(suggestions) == 1 { - chosen = suggestions[0] - } - - return chosen, suggestions -} - -func contains(s []string, e string) bool { - for _, a := range s { - if a == e { - return true - } - } - return false -} - -// OptionComplete autocompletes options -func OptionComplete(input string) (string, []string) { - var suggestions []string - localSettings := DefaultLocalSettings() - for option := range globalSettings { - if strings.HasPrefix(option, input) { - suggestions = append(suggestions, option) - } - } - for option := range localSettings { - if strings.HasPrefix(option, input) && !contains(suggestions, option) { - suggestions = append(suggestions, option) - } - } - - var chosen string - if len(suggestions) == 1 { - chosen = suggestions[0] - } - return chosen, suggestions -} - -// OptionValueComplete completes values for various options -func OptionValueComplete(inputOpt, input string) (string, []string) { - inputOpt = strings.TrimSpace(inputOpt) - var suggestions []string - localSettings := DefaultLocalSettings() - var optionVal interface{} - for k, option := range globalSettings { - if k == inputOpt { - optionVal = option - } - } - for k, option := range localSettings { - if k == inputOpt { - optionVal = option - } - } - - switch optionVal.(type) { - case bool: - if strings.HasPrefix("on", input) { - suggestions = append(suggestions, "on") - } else if strings.HasPrefix("true", input) { - suggestions = append(suggestions, "true") - } - if strings.HasPrefix("off", input) { - suggestions = append(suggestions, "off") - } else if strings.HasPrefix("false", input) { - suggestions = append(suggestions, "false") - } - case string: - switch inputOpt { - case "colorscheme": - _, suggestions = ColorschemeComplete(input) - case "fileformat": - if strings.HasPrefix("unix", input) { - suggestions = append(suggestions, "unix") - } - if strings.HasPrefix("dos", input) { - suggestions = append(suggestions, "dos") - } - case "sucmd": - if strings.HasPrefix("sudo", input) { - suggestions = append(suggestions, "sudo") - } - if strings.HasPrefix("doas", input) { - suggestions = append(suggestions, "doas") - } - } - } - - var chosen string - if len(suggestions) == 1 { - chosen = suggestions[0] - } - return chosen, suggestions -} - -// MakeCompletion registers a function from a plugin for autocomplete commands -func MakeCompletion(function string) Completion { - pluginCompletions = append(pluginCompletions, LuaFunctionComplete(function)) - return Completion(-len(pluginCompletions)) -} - -// PluginComplete autocompletes from plugin function -func PluginComplete(complete Completion, input string) (chosen string, suggestions []string) { - idx := int(-complete) - 1 - - if len(pluginCompletions) <= idx { - return "", nil - } - suggestions = pluginCompletions[idx](input) - - if len(suggestions) == 1 { - chosen = suggestions[0] - } - return -} - -// PluginCmdComplete completes with possible choices for the `> plugin` command -func PluginCmdComplete(input string) (chosen string, suggestions []string) { - for _, cmd := range []string{"install", "remove", "search", "update", "list"} { - if strings.HasPrefix(cmd, input) { - suggestions = append(suggestions, cmd) - } - } - - if len(suggestions) == 1 { - chosen = suggestions[0] - } - return chosen, suggestions -} - -// PluginnameComplete completes with the names of loaded plugins -func PluginNameComplete(input string) (chosen string, suggestions []string) { - for _, pp := range GetAllPluginPackages() { - if strings.HasPrefix(pp.Name, input) { - suggestions = append(suggestions, pp.Name) - } - } - - if len(suggestions) == 1 { - chosen = suggestions[0] - } - return chosen, suggestions -} diff --git a/cmd/micro/bindings.go b/cmd/micro/bindings.go deleted file mode 100644 index e3a02841..00000000 --- a/cmd/micro/bindings.go +++ /dev/null @@ -1,616 +0,0 @@ -package main - -import ( - "fmt" - "io/ioutil" - "os" - "strings" - "unicode" - - "github.com/flynn/json5" - "github.com/zyedidia/tcell" -) - -var bindingsStr map[string]string -var bindings map[Key][]func(*View, bool) bool -var mouseBindings map[Key][]func(*View, bool, *tcell.EventMouse) bool -var helpBinding string -var kmenuBinding string - -var mouseBindingActions = map[string]func(*View, bool, *tcell.EventMouse) bool{ - "MousePress": (*View).MousePress, - "MouseMultiCursor": (*View).MouseMultiCursor, -} - -var bindingActions = map[string]func(*View, bool) bool{ - "CursorUp": (*View).CursorUp, - "CursorDown": (*View).CursorDown, - "CursorPageUp": (*View).CursorPageUp, - "CursorPageDown": (*View).CursorPageDown, - "CursorLeft": (*View).CursorLeft, - "CursorRight": (*View).CursorRight, - "CursorStart": (*View).CursorStart, - "CursorEnd": (*View).CursorEnd, - "SelectToStart": (*View).SelectToStart, - "SelectToEnd": (*View).SelectToEnd, - "SelectUp": (*View).SelectUp, - "SelectDown": (*View).SelectDown, - "SelectLeft": (*View).SelectLeft, - "SelectRight": (*View).SelectRight, - "WordRight": (*View).WordRight, - "WordLeft": (*View).WordLeft, - "SelectWordRight": (*View).SelectWordRight, - "SelectWordLeft": (*View).SelectWordLeft, - "DeleteWordRight": (*View).DeleteWordRight, - "DeleteWordLeft": (*View).DeleteWordLeft, - "SelectLine": (*View).SelectLine, - "SelectToStartOfLine": (*View).SelectToStartOfLine, - "SelectToEndOfLine": (*View).SelectToEndOfLine, - "ParagraphPrevious": (*View).ParagraphPrevious, - "ParagraphNext": (*View).ParagraphNext, - "InsertNewline": (*View).InsertNewline, - "InsertSpace": (*View).InsertSpace, - "Backspace": (*View).Backspace, - "Delete": (*View).Delete, - "InsertTab": (*View).InsertTab, - "Save": (*View).Save, - "SaveAll": (*View).SaveAll, - "SaveAs": (*View).SaveAs, - "Find": (*View).Find, - "FindNext": (*View).FindNext, - "FindPrevious": (*View).FindPrevious, - "Center": (*View).Center, - "Undo": (*View).Undo, - "Redo": (*View).Redo, - "Copy": (*View).Copy, - "Cut": (*View).Cut, - "CutLine": (*View).CutLine, - "DuplicateLine": (*View).DuplicateLine, - "DeleteLine": (*View).DeleteLine, - "MoveLinesUp": (*View).MoveLinesUp, - "MoveLinesDown": (*View).MoveLinesDown, - "IndentSelection": (*View).IndentSelection, - "OutdentSelection": (*View).OutdentSelection, - "OutdentLine": (*View).OutdentLine, - "Paste": (*View).Paste, - "PastePrimary": (*View).PastePrimary, - "SelectAll": (*View).SelectAll, - "OpenFile": (*View).OpenFile, - "Start": (*View).Start, - "End": (*View).End, - "PageUp": (*View).PageUp, - "PageDown": (*View).PageDown, - "SelectPageUp": (*View).SelectPageUp, - "SelectPageDown": (*View).SelectPageDown, - "HalfPageUp": (*View).HalfPageUp, - "HalfPageDown": (*View).HalfPageDown, - "StartOfLine": (*View).StartOfLine, - "EndOfLine": (*View).EndOfLine, - "ToggleHelp": (*View).ToggleHelp, - "ToggleKeyMenu": (*View).ToggleKeyMenu, - "ToggleRuler": (*View).ToggleRuler, - "JumpLine": (*View).JumpLine, - "ClearStatus": (*View).ClearStatus, - "ShellMode": (*View).ShellMode, - "CommandMode": (*View).CommandMode, - "ToggleOverwriteMode": (*View).ToggleOverwriteMode, - "Escape": (*View).Escape, - "Quit": (*View).Quit, - "QuitAll": (*View).QuitAll, - "AddTab": (*View).AddTab, - "PreviousTab": (*View).PreviousTab, - "NextTab": (*View).NextTab, - "NextSplit": (*View).NextSplit, - "PreviousSplit": (*View).PreviousSplit, - "Unsplit": (*View).Unsplit, - "VSplit": (*View).VSplitBinding, - "HSplit": (*View).HSplitBinding, - "ToggleMacro": (*View).ToggleMacro, - "PlayMacro": (*View).PlayMacro, - "Suspend": (*View).Suspend, - "ScrollUp": (*View).ScrollUpAction, - "ScrollDown": (*View).ScrollDownAction, - "SpawnMultiCursor": (*View).SpawnMultiCursor, - "SpawnMultiCursorSelect": (*View).SpawnMultiCursorSelect, - "RemoveMultiCursor": (*View).RemoveMultiCursor, - "RemoveAllMultiCursors": (*View).RemoveAllMultiCursors, - "SkipMultiCursor": (*View).SkipMultiCursor, - "JumpToMatchingBrace": (*View).JumpToMatchingBrace, - - // This was changed to InsertNewline but I don't want to break backwards compatibility - "InsertEnter": (*View).InsertNewline, -} - -var bindingMouse = map[string]tcell.ButtonMask{ - "MouseLeft": tcell.Button1, - "MouseMiddle": tcell.Button2, - "MouseRight": tcell.Button3, - "MouseWheelUp": tcell.WheelUp, - "MouseWheelDown": tcell.WheelDown, - "MouseWheelLeft": tcell.WheelLeft, - "MouseWheelRight": tcell.WheelRight, -} - -var bindingKeys = map[string]tcell.Key{ - "Up": tcell.KeyUp, - "Down": tcell.KeyDown, - "Right": tcell.KeyRight, - "Left": tcell.KeyLeft, - "UpLeft": tcell.KeyUpLeft, - "UpRight": tcell.KeyUpRight, - "DownLeft": tcell.KeyDownLeft, - "DownRight": tcell.KeyDownRight, - "Center": tcell.KeyCenter, - "PageUp": tcell.KeyPgUp, - "PageDown": tcell.KeyPgDn, - "Home": tcell.KeyHome, - "End": tcell.KeyEnd, - "Insert": tcell.KeyInsert, - "Delete": tcell.KeyDelete, - "Help": tcell.KeyHelp, - "Exit": tcell.KeyExit, - "Clear": tcell.KeyClear, - "Cancel": tcell.KeyCancel, - "Print": tcell.KeyPrint, - "Pause": tcell.KeyPause, - "Backtab": tcell.KeyBacktab, - "F1": tcell.KeyF1, - "F2": tcell.KeyF2, - "F3": tcell.KeyF3, - "F4": tcell.KeyF4, - "F5": tcell.KeyF5, - "F6": tcell.KeyF6, - "F7": tcell.KeyF7, - "F8": tcell.KeyF8, - "F9": tcell.KeyF9, - "F10": tcell.KeyF10, - "F11": tcell.KeyF11, - "F12": tcell.KeyF12, - "F13": tcell.KeyF13, - "F14": tcell.KeyF14, - "F15": tcell.KeyF15, - "F16": tcell.KeyF16, - "F17": tcell.KeyF17, - "F18": tcell.KeyF18, - "F19": tcell.KeyF19, - "F20": tcell.KeyF20, - "F21": tcell.KeyF21, - "F22": tcell.KeyF22, - "F23": tcell.KeyF23, - "F24": tcell.KeyF24, - "F25": tcell.KeyF25, - "F26": tcell.KeyF26, - "F27": tcell.KeyF27, - "F28": tcell.KeyF28, - "F29": tcell.KeyF29, - "F30": tcell.KeyF30, - "F31": tcell.KeyF31, - "F32": tcell.KeyF32, - "F33": tcell.KeyF33, - "F34": tcell.KeyF34, - "F35": tcell.KeyF35, - "F36": tcell.KeyF36, - "F37": tcell.KeyF37, - "F38": tcell.KeyF38, - "F39": tcell.KeyF39, - "F40": tcell.KeyF40, - "F41": tcell.KeyF41, - "F42": tcell.KeyF42, - "F43": tcell.KeyF43, - "F44": tcell.KeyF44, - "F45": tcell.KeyF45, - "F46": tcell.KeyF46, - "F47": tcell.KeyF47, - "F48": tcell.KeyF48, - "F49": tcell.KeyF49, - "F50": tcell.KeyF50, - "F51": tcell.KeyF51, - "F52": tcell.KeyF52, - "F53": tcell.KeyF53, - "F54": tcell.KeyF54, - "F55": tcell.KeyF55, - "F56": tcell.KeyF56, - "F57": tcell.KeyF57, - "F58": tcell.KeyF58, - "F59": tcell.KeyF59, - "F60": tcell.KeyF60, - "F61": tcell.KeyF61, - "F62": tcell.KeyF62, - "F63": tcell.KeyF63, - "F64": tcell.KeyF64, - "CtrlSpace": tcell.KeyCtrlSpace, - "CtrlA": tcell.KeyCtrlA, - "CtrlB": tcell.KeyCtrlB, - "CtrlC": tcell.KeyCtrlC, - "CtrlD": tcell.KeyCtrlD, - "CtrlE": tcell.KeyCtrlE, - "CtrlF": tcell.KeyCtrlF, - "CtrlG": tcell.KeyCtrlG, - "CtrlH": tcell.KeyCtrlH, - "CtrlI": tcell.KeyCtrlI, - "CtrlJ": tcell.KeyCtrlJ, - "CtrlK": tcell.KeyCtrlK, - "CtrlL": tcell.KeyCtrlL, - "CtrlM": tcell.KeyCtrlM, - "CtrlN": tcell.KeyCtrlN, - "CtrlO": tcell.KeyCtrlO, - "CtrlP": tcell.KeyCtrlP, - "CtrlQ": tcell.KeyCtrlQ, - "CtrlR": tcell.KeyCtrlR, - "CtrlS": tcell.KeyCtrlS, - "CtrlT": tcell.KeyCtrlT, - "CtrlU": tcell.KeyCtrlU, - "CtrlV": tcell.KeyCtrlV, - "CtrlW": tcell.KeyCtrlW, - "CtrlX": tcell.KeyCtrlX, - "CtrlY": tcell.KeyCtrlY, - "CtrlZ": tcell.KeyCtrlZ, - "CtrlLeftSq": tcell.KeyCtrlLeftSq, - "CtrlBackslash": tcell.KeyCtrlBackslash, - "CtrlRightSq": tcell.KeyCtrlRightSq, - "CtrlCarat": tcell.KeyCtrlCarat, - "CtrlUnderscore": tcell.KeyCtrlUnderscore, - "CtrlPageUp": tcell.KeyCtrlPgUp, - "CtrlPageDown": tcell.KeyCtrlPgDn, - "Tab": tcell.KeyTab, - "Esc": tcell.KeyEsc, - "Escape": tcell.KeyEscape, - "Enter": tcell.KeyEnter, - "Backspace": tcell.KeyBackspace2, - "OldBackspace": tcell.KeyBackspace, - - // I renamed these keys to PageUp and PageDown but I don't want to break someone's keybindings - "PgUp": tcell.KeyPgUp, - "PgDown": tcell.KeyPgDn, -} - -// The Key struct holds the data for a keypress (keycode + modifiers) -type Key struct { - keyCode tcell.Key - modifiers tcell.ModMask - buttons tcell.ButtonMask - r rune - escape string -} - -// InitBindings initializes the keybindings for micro -func InitBindings() { - bindings = make(map[Key][]func(*View, bool) bool) - bindingsStr = make(map[string]string) - mouseBindings = make(map[Key][]func(*View, bool, *tcell.EventMouse) bool) - - var parsed map[string]string - defaults := DefaultBindings() - - filename := configDir + "/bindings.json" - if _, e := os.Stat(filename); e == nil { - input, err := ioutil.ReadFile(filename) - if err != nil { - TermMessage("Error reading bindings.json file: " + err.Error()) - return - } - - err = json5.Unmarshal(input, &parsed) - if err != nil { - TermMessage("Error reading bindings.json:", err.Error()) - } - } - - parseBindings(defaults) - parseBindings(parsed) -} - -func parseBindings(userBindings map[string]string) { - for k, v := range userBindings { - BindKey(k, v) - } -} - -// findKey will find binding Key 'b' using string 'k' -func findKey(k string) (b Key, ok bool) { - modifiers := tcell.ModNone - - // First, we'll strip off all the modifiers in the name and add them to the - // ModMask -modSearch: - for { - switch { - case strings.HasPrefix(k, "-"): - // We optionally support dashes between modifiers - k = k[1:] - case strings.HasPrefix(k, "Ctrl") && k != "CtrlH": - // CtrlH technically does not have a 'Ctrl' modifier because it is really backspace - k = k[4:] - modifiers |= tcell.ModCtrl - case strings.HasPrefix(k, "Alt"): - k = k[3:] - modifiers |= tcell.ModAlt - case strings.HasPrefix(k, "Shift"): - k = k[5:] - modifiers |= tcell.ModShift - case strings.HasPrefix(k, "\x1b"): - return Key{ - keyCode: -1, - modifiers: modifiers, - buttons: -1, - r: 0, - escape: k, - }, true - default: - break modSearch - } - } - - if len(k) == 0 { - return Key{buttons: -1}, false - } - - // Control is handled specially, since some character codes in bindingKeys - // are different when Control is depressed. We should check for Control keys - // first. - if modifiers&tcell.ModCtrl != 0 { - // see if the key is in bindingKeys with the Ctrl prefix. - k = string(unicode.ToUpper(rune(k[0]))) + k[1:] - if code, ok := bindingKeys["Ctrl"+k]; ok { - // It is, we're done. - return Key{ - keyCode: code, - modifiers: modifiers, - buttons: -1, - r: 0, - }, true - } - } - - // See if we can find the key in bindingKeys - if code, ok := bindingKeys[k]; ok { - return Key{ - keyCode: code, - modifiers: modifiers, - buttons: -1, - r: 0, - }, true - } - - // See if we can find the key in bindingMouse - if code, ok := bindingMouse[k]; ok { - return Key{ - modifiers: modifiers, - buttons: code, - r: 0, - }, true - } - - // If we were given one character, then we've got a rune. - if len(k) == 1 { - return Key{ - keyCode: tcell.KeyRune, - modifiers: modifiers, - buttons: -1, - r: rune(k[0]), - }, true - } - - // We don't know what happened. - return Key{buttons: -1}, false -} - -// findAction will find 'action' using string 'v' -func findAction(v string) (action func(*View, bool) bool) { - action, ok := bindingActions[v] - if !ok { - // If the user seems to be binding a function that doesn't exist - // We hope that it's a lua function that exists and bind it to that - action = LuaFunctionBinding(v) - } - return action -} - -func findMouseAction(v string) func(*View, bool, *tcell.EventMouse) bool { - action, ok := mouseBindingActions[v] - if !ok { - // If the user seems to be binding a function that doesn't exist - // We hope that it's a lua function that exists and bind it to that - action = LuaFunctionMouseBinding(v) - } - return action -} - -// TryBindKey tries to bind a key by writing to configDir/bindings.json -// This function is unused for now -func TryBindKey(k, v string) { - filename := configDir + "/bindings.json" - if _, e := os.Stat(filename); e == nil { - input, err := ioutil.ReadFile(filename) - if err != nil { - TermMessage("Error reading bindings.json file: " + err.Error()) - return - } - - conflict := -1 - lines := strings.Split(string(input), "\n") - for i, l := range lines { - parts := strings.Split(l, ":") - if len(parts) >= 2 { - if strings.Contains(parts[0], k) { - conflict = i - TermMessage("Warning: Keybinding conflict:", k, " has been overwritten") - } - } - } - - binding := fmt.Sprintf(" \"%s\": \"%s\",", k, v) - if conflict == -1 { - lines = append([]string{lines[0], binding}, lines[conflict:]...) - } else { - lines = append(append(lines[:conflict], binding), lines[conflict+1:]...) - } - txt := strings.Join(lines, "\n") - err = ioutil.WriteFile(filename, []byte(txt), 0644) - if err != nil { - TermMessage("Error") - } - } -} - -// BindKey takes a key and an action and binds the two together -func BindKey(k, v string) { - key, ok := findKey(k) - if !ok { - TermMessage("Unknown keybinding: " + k) - return - } - if v == "ToggleHelp" { - helpBinding = k - } - if v == "ToggleKeyMenu" { - kmenuBinding = k - } - if helpBinding == k && v != "ToggleHelp" { - helpBinding = "" - } - if kmenuBinding == k && v != "ToggleKeyMenu" { - kmenuBinding = "" - } - - actionNames := strings.Split(v, ",") - if actionNames[0] == "UnbindKey" { - delete(bindings, key) - delete(mouseBindings, key) - delete(bindingsStr, k) - if len(actionNames) == 1 { - return - } - actionNames = append(actionNames[:0], actionNames[1:]...) - } - actions := make([]func(*View, bool) bool, 0, len(actionNames)) - mouseActions := make([]func(*View, bool, *tcell.EventMouse) bool, 0, len(actionNames)) - for _, actionName := range actionNames { - if strings.HasPrefix(actionName, "Mouse") { - mouseActions = append(mouseActions, findMouseAction(actionName)) - } else if strings.HasPrefix(actionName, "command:") { - cmd := strings.SplitN(actionName, ":", 2)[1] - actions = append(actions, CommandAction(cmd)) - } else if strings.HasPrefix(actionName, "command-edit:") { - cmd := strings.SplitN(actionName, ":", 2)[1] - actions = append(actions, CommandEditAction(cmd)) - } else { - actions = append(actions, findAction(actionName)) - } - } - - if len(actions) > 0 { - // Can't have a binding be both mouse and normal - delete(mouseBindings, key) - bindings[key] = actions - bindingsStr[k] = v - } else if len(mouseActions) > 0 { - // Can't have a binding be both mouse and normal - delete(bindings, key) - mouseBindings[key] = mouseActions - } -} - -// DefaultBindings returns a map containing micro's default keybindings -func DefaultBindings() map[string]string { - return map[string]string{ - "Up": "CursorUp", - "Down": "CursorDown", - "Right": "CursorRight", - "Left": "CursorLeft", - "ShiftUp": "SelectUp", - "ShiftDown": "SelectDown", - "ShiftLeft": "SelectLeft", - "ShiftRight": "SelectRight", - "AltLeft": "WordLeft", - "AltRight": "WordRight", - "AltUp": "MoveLinesUp", - "AltDown": "MoveLinesDown", - "AltShiftRight": "SelectWordRight", - "AltShiftLeft": "SelectWordLeft", - "CtrlLeft": "StartOfLine", - "CtrlRight": "EndOfLine", - "CtrlShiftLeft": "SelectToStartOfLine", - "ShiftHome": "SelectToStartOfLine", - "CtrlShiftRight": "SelectToEndOfLine", - "ShiftEnd": "SelectToEndOfLine", - "CtrlUp": "CursorStart", - "CtrlDown": "CursorEnd", - "CtrlShiftUp": "SelectToStart", - "CtrlShiftDown": "SelectToEnd", - "Alt-{": "ParagraphPrevious", - "Alt-}": "ParagraphNext", - "Enter": "InsertNewline", - "CtrlH": "Backspace", - "Backspace": "Backspace", - "Alt-CtrlH": "DeleteWordLeft", - "Alt-Backspace": "DeleteWordLeft", - "Tab": "IndentSelection,InsertTab", - "Backtab": "OutdentSelection,OutdentLine", - "CtrlO": "OpenFile", - "CtrlS": "Save", - "CtrlF": "Find", - "CtrlN": "FindNext", - "CtrlP": "FindPrevious", - "CtrlZ": "Undo", - "CtrlY": "Redo", - "CtrlC": "Copy", - "CtrlX": "Cut", - "CtrlK": "CutLine", - "CtrlD": "DuplicateLine", - "CtrlV": "Paste", - "CtrlA": "SelectAll", - "CtrlT": "AddTab", - "Alt,": "PreviousTab", - "Alt.": "NextTab", - "Home": "StartOfLine", - "End": "EndOfLine", - "CtrlHome": "CursorStart", - "CtrlEnd": "CursorEnd", - "PageUp": "CursorPageUp", - "PageDown": "CursorPageDown", - "CtrlPageUp": "PreviousTab", - "CtrlPageDown": "NextTab", - "CtrlG": "ToggleHelp", - "Alt-g": "ToggleKeyMenu", - "CtrlR": "ToggleRuler", - "CtrlL": "JumpLine", - "Delete": "Delete", - "CtrlB": "ShellMode", - "CtrlQ": "Quit", - "CtrlE": "CommandMode", - "CtrlW": "NextSplit", - "CtrlU": "ToggleMacro", - "CtrlJ": "PlayMacro", - "Insert": "ToggleOverwriteMode", - - // Emacs-style keybindings - "Alt-f": "WordRight", - "Alt-b": "WordLeft", - "Alt-a": "StartOfLine", - "Alt-e": "EndOfLine", - // "Alt-p": "CursorUp", - // "Alt-n": "CursorDown", - - // Integration with file managers - "F2": "Save", - "F3": "Find", - "F4": "Quit", - "F7": "Find", - "F10": "Quit", - "Esc": "Escape", - - // Mouse bindings - "MouseWheelUp": "ScrollUp", - "MouseWheelDown": "ScrollDown", - "MouseLeft": "MousePress", - "MouseMiddle": "PastePrimary", - "Ctrl-MouseLeft": "MouseMultiCursor", - - "Alt-n": "SpawnMultiCursor", - "Alt-m": "SpawnMultiCursorSelect", - "Alt-p": "RemoveMultiCursor", - "Alt-c": "RemoveAllMultiCursors", - "Alt-x": "SkipMultiCursor", - } -} diff --git a/cmd/micro/buffer.go b/cmd/micro/buffer.go index c0161b34..747ace3d 100644 --- a/cmd/micro/buffer.go +++ b/cmd/micro/buffer.go @@ -4,44 +4,43 @@ import ( "bufio" "bytes" "crypto/md5" - "encoding/gob" "errors" "io" "io/ioutil" + "log" "os" "os/exec" "os/signal" "path/filepath" - "strconv" "strings" "time" - "unicode" "unicode/utf8" "github.com/zyedidia/micro/cmd/micro/highlight" ) +// LargeFileThreshold is the number of bytes when fastdirty is forced +// because hashing is too slow const LargeFileThreshold = 50000 +// The BufType defines what kind of buffer this is +type BufType struct { + Kind int + Readonly bool // The file cannot be edited + Scratch bool // The file cannot be saved +} + var ( - // 0 - no line type detected - // 1 - lf detected - // 2 - crlf detected - fileformat = 0 + btDefault = BufType{0, false, false} + btHelp = BufType{1, true, true} + btLog = BufType{2, true, true} + btScratch = BufType{3, false, true} + btRaw = BufType{4, true, true} ) -// Buffer stores the text for files that are loaded into the text editor -// It uses a rope to efficiently store the string and contains some -// simple functions for saving and wrapper functions for modifying the rope type Buffer struct { - // The eventhandler for undo/redo - *EventHandler - // This stores all the text in the buffer as an array of lines *LineArray - - Cursor Cursor - cursors []*Cursor // for multiple cursors - curCursor int // the current cursor + *EventHandler // Path to the file on disk Path string @@ -51,30 +50,22 @@ type Buffer struct { name string // Whether or not the buffer has been modified since it was opened - IsModified bool + isModified bool // Stores the last modification time of the file the buffer is pointing to ModTime time.Time - // NumLines is the number of lines in the buffer - NumLines int - syntaxDef *highlight.Def highlighter *highlight.Highlighter // Hash of the original buffer -- empty if fastdirty is on origHash [md5.Size]byte - // Buffer local settings + // Settings customized by the user Settings map[string]interface{} -} -// The SerializedBuffer holds the types that get serialized when a buffer is saved -// These are used for the savecursor and saveundo options -type SerializedBuffer struct { - EventHandler *EventHandler - Cursor Cursor - ModTime time.Time + // Type of the buffer (e.g. help, raw, scratch etc..) + Type BufType } // NewBufferFromFile opens a new buffer using the given path @@ -82,8 +73,13 @@ type SerializedBuffer struct { // It will return an empty buffer if the path does not exist // and an error if the file is a directory func NewBufferFromFile(path string) (*Buffer, error) { + var err error filename, cursorPosition := GetPathAndCursorPosition(path) - filename = ReplaceHome(filename) + filename, err = ReplaceHome(filename) + if err != nil { + return nil, err + } + file, err := os.Open(filename) fileInfo, _ := os.Stat(filename) @@ -110,20 +106,10 @@ func NewBufferFromString(text, path string) *Buffer { } // NewBuffer creates a new buffer from a given reader with a given path +// Ensure that ReadSettings and InitGlobalSettings have been called before creating +// a new buffer func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []string) *Buffer { - // check if the file is already open in a tab. If it's open return the buffer to that tab - if path != "" { - for _, tab := range tabs { - for _, view := range tab.Views { - if view.Buf.Path == path { - return view.Buf - } - } - } - } - b := new(Buffer) - b.LineArray = NewLineArray(size, reader) b.Settings = DefaultLocalSettings() for k, v := range globalSettings { @@ -131,12 +117,9 @@ func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []strin b.Settings[k] = v } } + InitLocalSettings(b) - if fileformat == 1 { - b.Settings["fileformat"] = "unix" - } else if fileformat == 2 { - b.Settings["fileformat"] = "dos" - } + b.LineArray = NewLineArray(uint64(size), FFAuto, reader) absPath, _ := filepath.Abs(path) @@ -148,110 +131,21 @@ func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []strin b.EventHandler = NewEventHandler(b) - b.Update() b.UpdateRules() - - if _, err := os.Stat(configDir + "/buffers/"); os.IsNotExist(err) { - os.Mkdir(configDir+"/buffers/", os.ModePerm) - } - - cursorLocation, cursorLocationError := GetBufferCursorLocation(cursorPosition, b) - b.Cursor = Cursor{ - Loc: cursorLocation, - buf: b, - } - - InitLocalSettings(b) - - if cursorLocationError != nil && len(*flagStartPos) == 0 && (b.Settings["savecursor"].(bool) || b.Settings["saveundo"].(bool)) { - // If either savecursor or saveundo is turned on, we need to load the serialized information - // from ~/.config/micro/buffers - file, err := os.Open(configDir + "/buffers/" + EscapePath(b.AbsPath)) - defer file.Close() - if err == nil { - var buffer SerializedBuffer - decoder := gob.NewDecoder(file) - gob.Register(TextEvent{}) - err = decoder.Decode(&buffer) - if err != nil { - TermMessage(err.Error(), "\n", "You may want to remove the files in ~/.config/micro/buffers (these files store the information for the 'saveundo' and 'savecursor' options) if this problem persists.") - } - if b.Settings["savecursor"].(bool) { - b.Cursor = buffer.Cursor - b.Cursor.buf = b - b.Cursor.Relocate() - } - - if b.Settings["saveundo"].(bool) { - // We should only use last time's eventhandler if the file wasn't modified by someone else in the meantime - if b.ModTime == buffer.ModTime { - b.EventHandler = buffer.EventHandler - b.EventHandler.buf = b - } - } - } - } + log.Println("Filetype detected: ", b.Settings["filetype"]) if !b.Settings["fastdirty"].(bool) { if size > LargeFileThreshold { - // If the file is larger than a megabyte fastdirty needs to be on + // If the file is larger than LargeFileThreshold fastdirty needs to be on b.Settings["fastdirty"] = true } else { calcHash(b, &b.origHash) } } - b.cursors = []*Cursor{&b.Cursor} - return b } -func GetBufferCursorLocation(cursorPosition []string, b *Buffer) (Loc, error) { - // parse the cursor position. The cursor location is ALWAYS initialised to 0, 0 even when - // an error occurs due to lack of arguments or because the arguments are not numbers - cursorLocation, cursorLocationError := ParseCursorLocation(cursorPosition) - - // Put the cursor at the first spot. In the logic for cursor position the -startpos - // flag is processed first and will overwrite any line/col parameters with colons after the filename - if len(*flagStartPos) > 0 || cursorLocationError == nil { - var lineNum, colNum int - var errPos1, errPos2 error - - positions := strings.Split(*flagStartPos, ",") - - // if the -startpos flag contains enough args use them for the cursor location. - // In this case args passed at the end of the filename will be ignored - if len(positions) == 2 { - lineNum, errPos1 = strconv.Atoi(positions[0]) - colNum, errPos2 = strconv.Atoi(positions[1]) - } - // if -startpos has invalid arguments, use the arguments from filename. - // This will have a default value (0, 0) even when the filename arguments are invalid - if errPos1 != nil || errPos2 != nil || len(*flagStartPos) == 0 { - // otherwise check if there are any arguments after the filename and use them - lineNum = cursorLocation.Y - colNum = cursorLocation.X - } - - // if some arguments were found make sure they don't go outside the file and cause overflows - cursorLocation.Y = lineNum - 1 - cursorLocation.X = colNum - // Check to avoid line overflow - if cursorLocation.Y > b.NumLines-1 { - cursorLocation.Y = b.NumLines - 1 - } else if cursorLocation.Y < 0 { - cursorLocation.Y = 0 - } - // Check to avoid column overflow - if cursorLocation.X > len(b.Line(cursorLocation.Y)) { - cursorLocation.X = len(b.Line(cursorLocation.Y)) - } else if cursorLocation.X < 0 { - cursorLocation.X = 0 - } - } - return cursorLocation, cursorLocationError -} - // GetName returns the name that should be displayed in the statusline // for this buffer func (b *Buffer) GetName() string { @@ -264,6 +158,288 @@ func (b *Buffer) GetName() string { return b.name } +// FileType returns the buffer's filetype +func (b *Buffer) FileType() string { + return b.Settings["filetype"].(string) +} + +// ReOpen reloads the current buffer from disk +func (b *Buffer) ReOpen() error { + data, err := ioutil.ReadFile(b.Path) + txt := string(data) + + if err != nil { + return err + } + b.EventHandler.ApplyDiff(txt) + + b.ModTime, err = GetModTime(b.Path) + b.isModified = false + return err + // TODO: buffer cursor + // b.Cursor.Relocate() +} + +// Saving + +// Save saves the buffer to its default path +func (b *Buffer) Save() error { + return b.SaveAs(b.Path) +} + +// SaveAs saves the buffer to a specified path (filename), creating the file if it does not exist +func (b *Buffer) SaveAs(filename string) error { + // TODO: rmtrailingws and updaterules + b.UpdateRules() + // if b.Settings["rmtrailingws"].(bool) { + // for i, l := range b.lines { + // pos := len(bytes.TrimRightFunc(l.data, unicode.IsSpace)) + // + // if pos < len(l.data) { + // b.deleteToEnd(Loc{pos, i}) + // } + // } + // + // b.Cursor.Relocate() + // } + + if b.Settings["eofnewline"].(bool) { + end := b.End() + if b.RuneAt(Loc{end.X - 1, end.Y}) != '\n' { + b.Insert(end, "\n") + } + } + + // Update the last time this file was updated after saving + defer func() { + b.ModTime, _ = GetModTime(filename) + }() + + // Removes any tilde and replaces with the absolute path to home + absFilename, _ := ReplaceHome(filename) + + // TODO: save creates parent dirs + // // Get the leading path to the file | "." is returned if there's no leading path provided + // if dirname := filepath.Dir(absFilename); dirname != "." { + // // Check if the parent dirs don't exist + // if _, statErr := os.Stat(dirname); os.IsNotExist(statErr) { + // // Prompt to make sure they want to create the dirs that are missing + // if yes, canceled := messenger.YesNoPrompt("Parent folders \"" + dirname + "\" do not exist. Create them? (y,n)"); yes && !canceled { + // // Create all leading dir(s) since they don't exist + // if mkdirallErr := os.MkdirAll(dirname, os.ModePerm); mkdirallErr != nil { + // // If there was an error creating the dirs + // return mkdirallErr + // } + // } else { + // // If they canceled the creation of leading dirs + // return errors.New("Save aborted") + // } + // } + // } + + var fileSize int + + err := overwriteFile(absFilename, func(file io.Writer) (e error) { + if len(b.lines) == 0 { + return + } + + // end of line + var eol []byte + if b.Settings["fileformat"] == "dos" { + eol = []byte{'\r', '\n'} + } else { + eol = []byte{'\n'} + } + + // write lines + if fileSize, e = file.Write(b.lines[0].data); e != nil { + return + } + + for _, l := range b.lines[1:] { + if _, e = file.Write(eol); e != nil { + return + } + if _, e = file.Write(l.data); e != nil { + return + } + fileSize += len(eol) + len(l.data) + } + return + }) + + if err != nil { + return err + } + + if !b.Settings["fastdirty"].(bool) { + if fileSize > LargeFileThreshold { + // For large files 'fastdirty' needs to be on + b.Settings["fastdirty"] = true + } else { + calcHash(b, &b.origHash) + } + } + + b.Path = filename + absPath, _ := filepath.Abs(filename) + b.AbsPath = absPath + b.isModified = false + // TODO: serialize + // return b.Serialize() + return nil +} + +// overwriteFile opens the given file for writing, truncating if one exists, and then calls +// the supplied function with the file as io.Writer object, also making sure the file is +// closed afterwards. +func overwriteFile(name string, fn func(io.Writer) error) (err error) { + var file *os.File + + if file, err = os.OpenFile(name, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644); err != nil { + return + } + + defer func() { + if e := file.Close(); e != nil && err == nil { + err = e + } + }() + + w := bufio.NewWriter(file) + + if err = fn(w); err != nil { + return + } + + err = w.Flush() + return +} + +// SaveWithSudo saves the buffer to the default path with sudo +func (b *Buffer) SaveWithSudo() error { + return b.SaveAsWithSudo(b.Path) +} + +// SaveAsWithSudo is the same as SaveAs except it uses a neat trick +// with tee to use sudo so the user doesn't have to reopen micro with sudo +func (b *Buffer) SaveAsWithSudo(filename string) error { + b.UpdateRules() + b.Path = filename + absPath, _ := filepath.Abs(filename) + b.AbsPath = absPath + + // Set up everything for the command + cmd := exec.Command(globalSettings["sucmd"].(string), "tee", filename) + cmd.Stdin = bytes.NewBuffer(b.Bytes()) + + // This is a trap for Ctrl-C so that it doesn't kill micro + // Instead we trap Ctrl-C to kill the program we're running + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt) + go func() { + for range c { + cmd.Process.Kill() + } + }() + + // Start the command + cmd.Start() + err := cmd.Wait() + + if err == nil { + b.isModified = false + b.ModTime, _ = GetModTime(filename) + // TODO: serialize + } + return err +} + +func (b *Buffer) GetActiveCursor() *Cursor { + return nil +} + +func (b *Buffer) GetCursor(n int) *Cursor { + return nil +} + +func (b *Buffer) GetCursors() []*Cursor { + return nil +} + +func (b *Buffer) NumCursors() int { + return 0 +} + +func (b *Buffer) LineBytes(n int) []byte { + if n >= len(b.lines) || n < 0 { + return []byte{} + } + return b.lines[n].data +} + +func (b *Buffer) LinesNum() int { + return len(b.lines) +} + +func (b *Buffer) Start() Loc { + return Loc{0, 0} +} + +// End returns the location of the last character in the buffer +func (b *Buffer) End() Loc { + numlines := len(b.lines) + return Loc{utf8.RuneCount(b.lines[numlines-1].data), numlines - 1} +} + +// RuneAt returns the rune at a given location in the buffer +func (b *Buffer) RuneAt(loc Loc) rune { + line := b.LineBytes(loc.Y) + if len(line) > 0 { + i := 0 + for len(line) > 0 { + r, size := utf8.DecodeRune(line) + line = line[size:] + i++ + + if i == loc.X { + return r + } + } + } + return '\n' +} + +// Modified returns if this buffer has been modified since +// being opened +func (b *Buffer) Modified() bool { + if b.Settings["fastdirty"].(bool) { + return b.isModified + } + + var buff [md5.Size]byte + + calcHash(b, &buff) + return buff != b.origHash +} + +// calcHash calculates md5 hash of all lines in the buffer +func calcHash(b *Buffer, out *[md5.Size]byte) { + h := md5.New() + + if len(b.lines) > 0 { + h.Write(b.lines[0].data) + + for _, l := range b.lines[1:] { + h.Write([]byte{'\n'}) + h.Write(l.data) + } + } + + h.Sum((*out)[:0]) +} + // UpdateRules updates the syntax rules and filetype for this buffer // This is called when the colorscheme changes func (b *Buffer) UpdateRules() { @@ -329,525 +505,3 @@ func (b *Buffer) UpdateRules() { } } } - -// FileType returns the buffer's filetype -func (b *Buffer) FileType() string { - return b.Settings["filetype"].(string) -} - -// IndentString returns a string representing one level of indentation -func (b *Buffer) IndentString() string { - if b.Settings["tabstospaces"].(bool) { - return Spaces(int(b.Settings["tabsize"].(float64))) - } - return "\t" -} - -// CheckModTime makes sure that the file this buffer points to hasn't been updated -// by an external program since it was last read -// If it has, we ask the user if they would like to reload the file -func (b *Buffer) CheckModTime() { - modTime, ok := GetModTime(b.Path) - if ok { - if modTime != b.ModTime { - choice, canceled := messenger.YesNoPrompt("The file has changed since it was last read. Reload file? (y,n)") - messenger.Reset() - messenger.Clear() - if !choice || canceled { - // Don't load new changes -- do nothing - b.ModTime, _ = GetModTime(b.Path) - } else { - // Load new changes - b.ReOpen() - } - } - } -} - -// ReOpen reloads the current buffer from disk -func (b *Buffer) ReOpen() { - data, err := ioutil.ReadFile(b.Path) - txt := string(data) - - if err != nil { - messenger.Error(err.Error()) - return - } - b.EventHandler.ApplyDiff(txt) - - b.ModTime, _ = GetModTime(b.Path) - b.IsModified = false - b.Update() - b.Cursor.Relocate() -} - -// Update fetches the string from the rope and updates the `text` and `lines` in the buffer -func (b *Buffer) Update() { - b.NumLines = len(b.lines) -} - -// MergeCursors merges any cursors that are at the same position -// into one cursor -func (b *Buffer) MergeCursors() { - var cursors []*Cursor - for i := 0; i < len(b.cursors); i++ { - c1 := b.cursors[i] - if c1 != nil { - for j := 0; j < len(b.cursors); j++ { - c2 := b.cursors[j] - if c2 != nil && i != j && c1.Loc == c2.Loc { - b.cursors[j] = nil - } - } - cursors = append(cursors, c1) - } - } - - b.cursors = cursors - - for i := range b.cursors { - b.cursors[i].Num = i - } - - if b.curCursor >= len(b.cursors) { - b.curCursor = len(b.cursors) - 1 - } -} - -// UpdateCursors updates all the cursors indicies -func (b *Buffer) UpdateCursors() { - for i, c := range b.cursors { - c.Num = i - } -} - -// Save saves the buffer to its default path -func (b *Buffer) Save() error { - return b.SaveAs(b.Path) -} - -// SaveWithSudo saves the buffer to the default path with sudo -func (b *Buffer) SaveWithSudo() error { - return b.SaveAsWithSudo(b.Path) -} - -// Serialize serializes the buffer to configDir/buffers -func (b *Buffer) Serialize() error { - if !b.Settings["savecursor"].(bool) && !b.Settings["saveundo"].(bool) { - return nil - } - - name := configDir + "/buffers/" + EscapePath(b.AbsPath) - - return overwriteFile(name, func(file io.Writer) error { - return gob.NewEncoder(file).Encode(SerializedBuffer{ - b.EventHandler, - b.Cursor, - b.ModTime, - }) - }) -} - -func init() { - gob.Register(TextEvent{}) - gob.Register(SerializedBuffer{}) -} - -// SaveAs saves the buffer to a specified path (filename), creating the file if it does not exist -func (b *Buffer) SaveAs(filename string) error { - b.UpdateRules() - if b.Settings["rmtrailingws"].(bool) { - for i, l := range b.lines { - pos := len(bytes.TrimRightFunc(l.data, unicode.IsSpace)) - - if pos < len(l.data) { - b.deleteToEnd(Loc{pos, i}) - } - } - - b.Cursor.Relocate() - } - - if b.Settings["eofnewline"].(bool) { - end := b.End() - if b.RuneAt(Loc{end.X - 1, end.Y}) != '\n' { - b.Insert(end, "\n") - } - } - - defer func() { - b.ModTime, _ = GetModTime(filename) - }() - - // Removes any tilde and replaces with the absolute path to home - absFilename := ReplaceHome(filename) - - // Get the leading path to the file | "." is returned if there's no leading path provided - if dirname := filepath.Dir(absFilename); dirname != "." { - // Check if the parent dirs don't exist - if _, statErr := os.Stat(dirname); os.IsNotExist(statErr) { - // Prompt to make sure they want to create the dirs that are missing - if yes, canceled := messenger.YesNoPrompt("Parent folders \"" + dirname + "\" do not exist. Create them? (y,n)"); yes && !canceled { - // Create all leading dir(s) since they don't exist - if mkdirallErr := os.MkdirAll(dirname, os.ModePerm); mkdirallErr != nil { - // If there was an error creating the dirs - return mkdirallErr - } - } else { - // If they canceled the creation of leading dirs - return errors.New("Save aborted") - } - } - } - - var fileSize int - - err := overwriteFile(absFilename, func(file io.Writer) (e error) { - if len(b.lines) == 0 { - return - } - - // end of line - var eol []byte - - if b.Settings["fileformat"] == "dos" { - eol = []byte{'\r', '\n'} - } else { - eol = []byte{'\n'} - } - - // write lines - if fileSize, e = file.Write(b.lines[0].data); e != nil { - return - } - - for _, l := range b.lines[1:] { - if _, e = file.Write(eol); e != nil { - return - } - - if _, e = file.Write(l.data); e != nil { - return - } - - fileSize += len(eol) + len(l.data) - } - - return - }) - - if err != nil { - return err - } - - if !b.Settings["fastdirty"].(bool) { - if fileSize > LargeFileThreshold { - // For large files 'fastdirty' needs to be on - b.Settings["fastdirty"] = true - } else { - calcHash(b, &b.origHash) - } - } - - b.Path = filename - b.IsModified = false - return b.Serialize() -} - -// overwriteFile opens the given file for writing, truncating if one exists, and then calls -// the supplied function with the file as io.Writer object, also making sure the file is -// closed afterwards. -func overwriteFile(name string, fn func(io.Writer) error) (err error) { - var file *os.File - - if file, err = os.OpenFile(name, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644); err != nil { - return - } - - defer func() { - if e := file.Close(); e != nil && err == nil { - err = e - } - }() - - w := bufio.NewWriter(file) - - if err = fn(w); err != nil { - return - } - - err = w.Flush() - return -} - -// calcHash calculates md5 hash of all lines in the buffer -func calcHash(b *Buffer, out *[md5.Size]byte) { - h := md5.New() - - if len(b.lines) > 0 { - h.Write(b.lines[0].data) - - for _, l := range b.lines[1:] { - h.Write([]byte{'\n'}) - h.Write(l.data) - } - } - - h.Sum((*out)[:0]) -} - -// SaveAsWithSudo is the same as SaveAs except it uses a neat trick -// with tee to use sudo so the user doesn't have to reopen micro with sudo -func (b *Buffer) SaveAsWithSudo(filename string) error { - b.UpdateRules() - b.Path = filename - - // Shut down the screen because we're going to interact directly with the shell - screen.Fini() - screen = nil - - // Set up everything for the command - cmd := exec.Command(globalSettings["sucmd"].(string), "tee", filename) - cmd.Stdin = bytes.NewBufferString(b.SaveString(b.Settings["fileformat"] == "dos")) - - // This is a trap for Ctrl-C so that it doesn't kill micro - // Instead we trap Ctrl-C to kill the program we're running - c := make(chan os.Signal, 1) - signal.Notify(c, os.Interrupt) - go func() { - for range c { - cmd.Process.Kill() - } - }() - - // Start the command - cmd.Start() - err := cmd.Wait() - - // Start the screen back up - InitScreen() - if err == nil { - b.IsModified = false - b.ModTime, _ = GetModTime(filename) - b.Serialize() - } - return err -} - -// Modified returns if this buffer has been modified since -// being opened -func (b *Buffer) Modified() bool { - if b.Settings["fastdirty"].(bool) { - return b.IsModified - } - - var buff [md5.Size]byte - - calcHash(b, &buff) - return buff != b.origHash -} - -func (b *Buffer) insert(pos Loc, value []byte) { - b.IsModified = true - b.LineArray.insert(pos, value) - b.Update() -} -func (b *Buffer) remove(start, end Loc) string { - b.IsModified = true - sub := b.LineArray.remove(start, end) - b.Update() - return sub -} -func (b *Buffer) deleteToEnd(start Loc) { - b.IsModified = true - b.LineArray.DeleteToEnd(start) - b.Update() -} - -// Start returns the location of the first character in the buffer -func (b *Buffer) Start() Loc { - return Loc{0, 0} -} - -// End returns the location of the last character in the buffer -func (b *Buffer) End() Loc { - return Loc{utf8.RuneCount(b.lines[b.NumLines-1].data), b.NumLines - 1} -} - -// RuneAt returns the rune at a given location in the buffer -func (b *Buffer) RuneAt(loc Loc) rune { - line := b.LineRunes(loc.Y) - if len(line) > 0 { - return line[loc.X] - } - return '\n' -} - -// LineBytes returns a single line as an array of runes -func (b *Buffer) LineBytes(n int) []byte { - if n >= len(b.lines) { - return []byte{} - } - return b.lines[n].data -} - -// LineRunes returns a single line as an array of runes -func (b *Buffer) LineRunes(n int) []rune { - if n >= len(b.lines) { - return []rune{} - } - return toRunes(b.lines[n].data) -} - -// Line returns a single line -func (b *Buffer) Line(n int) string { - if n >= len(b.lines) { - return "" - } - return string(b.lines[n].data) -} - -// LinesNum returns the number of lines in the buffer -func (b *Buffer) LinesNum() int { - return len(b.lines) -} - -// Lines returns an array of strings containing the lines from start to end -func (b *Buffer) Lines(start, end int) []string { - lines := b.lines[start:end] - var slice []string - for _, line := range lines { - slice = append(slice, string(line.data)) - } - return slice -} - -// Len gives the length of the buffer -func (b *Buffer) Len() (n int) { - for _, l := range b.lines { - n += utf8.RuneCount(l.data) - } - - if len(b.lines) > 1 { - n += len(b.lines) - 1 // account for newlines - } - - return -} - -// MoveLinesUp moves the range of lines up one row -func (b *Buffer) MoveLinesUp(start int, end int) { - // 0 < start < end <= len(b.lines) - if start < 1 || start >= end || end > len(b.lines) { - return // what to do? FIXME - } - if end == len(b.lines) { - b.Insert( - Loc{ - utf8.RuneCount(b.lines[end-1].data), - end - 1, - }, - "\n"+b.Line(start-1), - ) - } else { - b.Insert( - Loc{0, end}, - b.Line(start-1)+"\n", - ) - } - b.Remove( - Loc{0, start - 1}, - Loc{0, start}, - ) -} - -// MoveLinesDown moves the range of lines down one row -func (b *Buffer) MoveLinesDown(start int, end int) { - // 0 <= start < end < len(b.lines) - // if end == len(b.lines), we can't do anything here because the - // last line is unaccessible, FIXME - if start < 0 || start >= end || end >= len(b.lines)-1 { - return // what to do? FIXME - } - b.Insert( - Loc{0, start}, - b.Line(end)+"\n", - ) - end++ - b.Remove( - Loc{0, end}, - Loc{0, end + 1}, - ) -} - -// ClearMatches clears all of the syntax highlighting for this buffer -func (b *Buffer) ClearMatches() { - for i := range b.lines { - b.SetMatch(i, nil) - b.SetState(i, nil) - } -} - -func (b *Buffer) clearCursors() { - for i := 1; i < len(b.cursors); i++ { - b.cursors[i] = nil - } - b.cursors = b.cursors[:1] - b.UpdateCursors() - b.Cursor.ResetSelection() -} - -var bracePairs = [][2]rune{ - {'(', ')'}, - {'{', '}'}, - {'[', ']'}, -} - -// FindMatchingBrace returns the location in the buffer of the matching bracket -// It is given a brace type containing the open and closing character, (for example -// '{' and '}') as well as the location to match from -func (b *Buffer) FindMatchingBrace(braceType [2]rune, start Loc) Loc { - curLine := b.LineRunes(start.Y) - startChar := curLine[start.X] - var i int - if startChar == braceType[0] { - for y := start.Y; y < b.NumLines; y++ { - l := b.LineRunes(y) - xInit := 0 - if y == start.Y { - xInit = start.X - } - for x := xInit; x < len(l); x++ { - r := l[x] - if r == braceType[0] { - i++ - } else if r == braceType[1] { - i-- - if i == 0 { - return Loc{x, y} - } - } - } - } - } else if startChar == braceType[1] { - for y := start.Y; y >= 0; y-- { - l := []rune(string(b.lines[y].data)) - xInit := len(l) - 1 - if y == start.Y { - xInit = start.X - } - for x := xInit; x >= 0; x-- { - r := l[x] - if r == braceType[0] { - i-- - if i == 0 { - return Loc{x, y} - } - } else if r == braceType[1] { - i++ - } - } - } - } - return start -} diff --git a/cmd/micro/buffer_test.go b/cmd/micro/buffer_test.go deleted file mode 100644 index 7369c786..00000000 --- a/cmd/micro/buffer_test.go +++ /dev/null @@ -1,117 +0,0 @@ -package main - -import ( - "testing" -) - -func TestGetBufferCursorLocationEmptyArgs(t *testing.T) { - buf := NewBufferFromString("this is my\nbuffer\nfile\nhello", "") - - location, err := GetBufferCursorLocation(nil, buf) - - assertEqual(t, 0, location.Y) - assertEqual(t, 0, location.X) - - // an error is present due to the cursorLocation being nil - assertTrue(t, err != nil) - -} - -func TestGetBufferCursorLocationStartposFlag(t *testing.T) { - buf := NewBufferFromString("this is my\nbuffer\nfile\nhello", "") - - *flagStartPos = "1,2" - - location, err := GetBufferCursorLocation(nil, buf) - - // note: 1 is subtracted from the line to get the correct index in the buffer - assertTrue(t, 0 == location.Y) - assertTrue(t, 2 == location.X) - - // an error is present due to the cursorLocation being nil - assertTrue(t, err != nil) -} - -func TestGetBufferCursorLocationInvalidStartposFlag(t *testing.T) { - buf := NewBufferFromString("this is my\nbuffer\nfile\nhello", "") - - *flagStartPos = "apples,2" - - location, err := GetBufferCursorLocation(nil, buf) - // expect to default to the start of the file, which is 0,0 - assertEqual(t, 0, location.Y) - assertEqual(t, 0, location.X) - - // an error is present due to the cursorLocation being nil - assertTrue(t, err != nil) -} -func TestGetBufferCursorLocationStartposFlagAndCursorPosition(t *testing.T) { - text := "this is my\nbuffer\nfile\nhello" - cursorPosition := []string{"3", "1"} - - buf := NewBufferFromString(text, "") - - *flagStartPos = "1,2" - - location, err := GetBufferCursorLocation(cursorPosition, buf) - // expect to have the flag positions, not the cursor position - // note: 1 is subtracted from the line to get the correct index in the buffer - assertEqual(t, 0, location.Y) - assertEqual(t, 2, location.X) - - assertTrue(t, err == nil) -} -func TestGetBufferCursorLocationCursorPositionAndInvalidStartposFlag(t *testing.T) { - text := "this is my\nbuffer\nfile\nhello" - cursorPosition := []string{"3", "1"} - - buf := NewBufferFromString(text, "") - - *flagStartPos = "apples,2" - - location, err := GetBufferCursorLocation(cursorPosition, buf) - // expect to have the flag positions, not the cursor position - // note: 1 is subtracted from the line to get the correct index in the buffer - assertEqual(t, 2, location.Y) - assertEqual(t, 1, location.X) - - // no errors this time as cursorPosition is not nil - assertTrue(t, err == nil) -} - -func TestGetBufferCursorLocationNoErrorWhenOverflowWithStartpos(t *testing.T) { - text := "this is my\nbuffer\nfile\nhello" - - buf := NewBufferFromString(text, "") - - *flagStartPos = "50,50" - - location, err := GetBufferCursorLocation(nil, buf) - // expect to have the flag positions, not the cursor position - assertEqual(t, buf.NumLines-1, location.Y) - assertEqual(t, 5, location.X) - - // error is expected as cursorPosition is nil - assertTrue(t, err != nil) -} -func TestGetBufferCursorLocationNoErrorWhenOverflowWithCursorPosition(t *testing.T) { - text := "this is my\nbuffer\nfile\nhello" - cursorPosition := []string{"50", "2"} - - *flagStartPos = "" - - buf := NewBufferFromString(text, "") - - location, err := GetBufferCursorLocation(cursorPosition, buf) - // expect to have the flag positions, not the cursor position - assertEqual(t, buf.NumLines-1, location.Y) - assertEqual(t, 2, location.X) - - // error is expected as cursorPosition is nil - assertTrue(t, err == nil) -} - -//func TestGetBufferCursorLocationColonArgs(t *testing.T) { -// buf := new(Buffer) - -//} diff --git a/cmd/micro/cellview.go b/cmd/micro/cellview.go deleted file mode 100644 index b0cb6523..00000000 --- a/cmd/micro/cellview.go +++ /dev/null @@ -1,238 +0,0 @@ -package main - -import ( - "github.com/mattn/go-runewidth" - "github.com/zyedidia/tcell" -) - -func min(a, b int) int { - if a <= b { - return a - } - return b -} - -func visualToCharPos(visualIndex int, lineN int, str string, buf *Buffer, tabsize int) (int, int, *tcell.Style) { - charPos := 0 - var lineIdx int - var lastWidth int - var style *tcell.Style - var width int - var rw int - for i, c := range str { - // width := StringWidth(str[:i], tabsize) - - if group, ok := buf.Match(lineN)[charPos]; ok { - s := GetColor(group.String()) - style = &s - } - - if width >= visualIndex { - return charPos, visualIndex - lastWidth, style - } - - if i != 0 { - charPos++ - lineIdx += rw - } - lastWidth = width - rw = 0 - if c == '\t' { - rw = tabsize - (lineIdx % tabsize) - width += rw - } else { - rw = runewidth.RuneWidth(c) - width += rw - } - } - - return -1, -1, style -} - -type Char struct { - visualLoc Loc - realLoc Loc - char rune - // The actual character that is drawn - // This is only different from char if it's for example hidden character - drawChar rune - style tcell.Style - width int -} - -type CellView struct { - lines [][]*Char -} - -func (c *CellView) Draw(buf *Buffer, top, height, left, width int) { - if width <= 0 { - return - } - - matchingBrace := Loc{-1, -1} - // bracePairs is defined in buffer.go - if buf.Settings["matchbrace"].(bool) { - for _, bp := range bracePairs { - curX := buf.Cursor.X - curLoc := buf.Cursor.Loc - if buf.Settings["matchbraceleft"].(bool) { - if curX > 0 { - curX-- - curLoc = curLoc.Move(-1, buf) - } - } - - r := buf.Cursor.RuneUnder(curX) - if r == bp[0] || r == bp[1] { - matchingBrace = buf.FindMatchingBrace(bp, curLoc) - } - } - } - - tabsize := int(buf.Settings["tabsize"].(float64)) - softwrap := buf.Settings["softwrap"].(bool) - indentrunes := []rune(buf.Settings["indentchar"].(string)) - // if empty indentchar settings, use space - if indentrunes == nil || len(indentrunes) == 0 { - indentrunes = []rune{' '} - } - indentchar := indentrunes[0] - - start := buf.Cursor.Y - if buf.Settings["syntax"].(bool) && buf.syntaxDef != nil { - if start > 0 && buf.lines[start-1].rehighlight { - buf.highlighter.ReHighlightLine(buf, start-1) - buf.lines[start-1].rehighlight = false - } - - buf.highlighter.ReHighlightStates(buf, start) - - buf.highlighter.HighlightMatches(buf, top, top+height) - } - - c.lines = make([][]*Char, 0) - - viewLine := 0 - lineN := top - - curStyle := defStyle - for viewLine < height { - if lineN >= len(buf.lines) { - break - } - - lineStr := buf.Line(lineN) - line := []rune(lineStr) - - colN, startOffset, startStyle := visualToCharPos(left, lineN, lineStr, buf, tabsize) - if colN < 0 { - colN = len(line) - } - viewCol := -startOffset - if startStyle != nil { - curStyle = *startStyle - } - - // We'll either draw the length of the line, or the width of the screen - // whichever is smaller - lineLength := min(StringWidth(lineStr, tabsize), width) - c.lines = append(c.lines, make([]*Char, lineLength)) - - wrap := false - // We only need to wrap if the length of the line is greater than the width of the terminal screen - if softwrap && StringWidth(lineStr, tabsize) > width { - wrap = true - // We're going to draw the entire line now - lineLength = StringWidth(lineStr, tabsize) - } - - for viewCol < lineLength { - if colN >= len(line) { - break - } - if group, ok := buf.Match(lineN)[colN]; ok { - curStyle = GetColor(group.String()) - } - - char := line[colN] - - if viewCol >= 0 { - st := curStyle - if colN == matchingBrace.X && lineN == matchingBrace.Y && !buf.Cursor.HasSelection() { - st = curStyle.Reverse(true) - } - if viewCol < len(c.lines[viewLine]) { - c.lines[viewLine][viewCol] = &Char{Loc{viewCol, viewLine}, Loc{colN, lineN}, char, char, st, 1} - } - } - if char == '\t' { - charWidth := tabsize - (viewCol+left)%tabsize - if viewCol >= 0 { - c.lines[viewLine][viewCol].drawChar = indentchar - c.lines[viewLine][viewCol].width = charWidth - - indentStyle := curStyle - ch := buf.Settings["indentchar"].(string) - if group, ok := colorscheme["indent-char"]; ok && !IsStrWhitespace(ch) && ch != "" { - indentStyle = group - } - - c.lines[viewLine][viewCol].style = indentStyle - } - - for i := 1; i < charWidth; i++ { - viewCol++ - if viewCol >= 0 && viewCol < lineLength && viewCol < len(c.lines[viewLine]) { - c.lines[viewLine][viewCol] = &Char{Loc{viewCol, viewLine}, Loc{colN, lineN}, char, ' ', curStyle, 1} - } - } - viewCol++ - } else if runewidth.RuneWidth(char) > 1 { - charWidth := runewidth.RuneWidth(char) - if viewCol >= 0 { - c.lines[viewLine][viewCol].width = charWidth - } - for i := 1; i < charWidth; i++ { - viewCol++ - if viewCol >= 0 && viewCol < lineLength && viewCol < len(c.lines[viewLine]) { - c.lines[viewLine][viewCol] = &Char{Loc{viewCol, viewLine}, Loc{colN, lineN}, char, ' ', curStyle, 1} - } - } - viewCol++ - } else { - viewCol++ - } - colN++ - - if wrap && viewCol >= width { - viewLine++ - - // If we go too far soft wrapping we have to cut off - if viewLine >= height { - break - } - - nextLine := line[colN:] - lineLength := min(StringWidth(string(nextLine), tabsize), width) - c.lines = append(c.lines, make([]*Char, lineLength)) - - viewCol = 0 - } - - } - if group, ok := buf.Match(lineN)[len(line)]; ok { - curStyle = GetColor(group.String()) - } - - // newline - viewLine++ - lineN++ - } - - for i := top; i < top+height; i++ { - if i >= buf.NumLines { - break - } - buf.SetMatch(i, nil) - } -} diff --git a/cmd/micro/colorscheme.go b/cmd/micro/colorscheme.go index 8a649b17..b3c84a2d 100644 --- a/cmd/micro/colorscheme.go +++ b/cmd/micro/colorscheme.go @@ -1,7 +1,7 @@ package main import ( - "fmt" + "errors" "regexp" "strconv" "strings" @@ -9,6 +9,9 @@ import ( "github.com/zyedidia/tcell" ) +// Micro's default style +var defStyle tcell.Style = tcell.StyleDefault + // Colorscheme is a map from string to style -- it represents a colorscheme type Colorscheme map[string]tcell.Style @@ -48,42 +51,41 @@ func ColorschemeExists(colorschemeName string) bool { } // InitColorscheme picks and initializes the colorscheme when micro starts -func InitColorscheme() { +func InitColorscheme() error { colorscheme = make(Colorscheme) - defStyle = tcell.StyleDefault. - Foreground(tcell.ColorDefault). - Background(tcell.ColorDefault) - if screen != nil { - // screen.SetStyle(defStyle) - } + defStyle = tcell.StyleDefault - LoadDefaultColorscheme() + return LoadDefaultColorscheme() } // LoadDefaultColorscheme loads the default colorscheme from $(configDir)/colorschemes -func LoadDefaultColorscheme() { - LoadColorscheme(globalSettings["colorscheme"].(string)) +func LoadDefaultColorscheme() error { + return LoadColorscheme(globalSettings["colorscheme"].(string)) } // LoadColorscheme loads the given colorscheme from a directory -func LoadColorscheme(colorschemeName string) { +func LoadColorscheme(colorschemeName string) error { file := FindRuntimeFile(RTColorscheme, colorschemeName) if file == nil { - TermMessage(colorschemeName, "is not a valid colorscheme") + return errors.New(colorschemeName + " is not a valid colorscheme") + } + if data, err := file.Data(); err != nil { + return errors.New("Error loading colorscheme: " + err.Error()) } else { - if data, err := file.Data(); err != nil { - TermMessage("Error loading colorscheme:", err) - } else { - colorscheme = ParseColorscheme(string(data)) + colorscheme, err = ParseColorscheme(string(data)) + if err != nil { + return err } } + return nil } // ParseColorscheme parses the text definition for a colorscheme and returns the corresponding object // Colorschemes are made up of color-link statements linking a color group to a list of colors // For example, color-link keyword (blue,red) makes all keywords have a blue foreground and // red background -func ParseColorscheme(text string) Colorscheme { +func ParseColorscheme(text string) (Colorscheme, error) { + var err error parser := regexp.MustCompile(`color-link\s+(\S*)\s+"(.*)"`) lines := strings.Split(text, "\n") @@ -108,15 +110,12 @@ func ParseColorscheme(text string) Colorscheme { if link == "default" { defStyle = style } - if screen != nil { - // screen.SetStyle(defStyle) - } } else { - fmt.Println("Color-link statement is not valid:", line) + err = errors.New("Color-link statement is not valid: " + line) } } - return c + return c, err } // StringToStyle returns a style from a string diff --git a/cmd/micro/colorscheme_test.go b/cmd/micro/colorscheme_test.go new file mode 100644 index 00000000..098af941 --- /dev/null +++ b/cmd/micro/colorscheme_test.go @@ -0,0 +1,62 @@ +package main + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/zyedidia/tcell" +) + +func TestSimpleStringToStyle(t *testing.T) { + s := StringToStyle("lightblue,magenta") + + fg, bg, _ := s.Decompose() + + assert.Equal(t, tcell.ColorBlue, fg) + assert.Equal(t, tcell.ColorPurple, bg) +} + +func TestAttributeStringToStyle(t *testing.T) { + s := StringToStyle("bold cyan,brightcyan") + + fg, bg, attr := s.Decompose() + + assert.Equal(t, tcell.ColorTeal, fg) + assert.Equal(t, tcell.ColorAqua, bg) + assert.NotEqual(t, 0, attr&tcell.AttrBold) +} + +func TestColor256StringToStyle(t *testing.T) { + s := StringToStyle("128,60") + + fg, bg, _ := s.Decompose() + + assert.Equal(t, tcell.Color128, fg) + assert.Equal(t, tcell.Color60, bg) +} + +func TestColorHexStringToStyle(t *testing.T) { + s := StringToStyle("#deadbe,#ef1234") + + fg, bg, _ := s.Decompose() + + assert.Equal(t, tcell.NewRGBColor(222, 173, 190), fg) + assert.Equal(t, tcell.NewRGBColor(239, 18, 52), bg) +} + +func TestColorschemeParser(t *testing.T) { + testColorscheme := `color-link default "#F8F8F2,#282828" +color-link comment "#75715E,#282828" +# comment +color-link identifier "#66D9EF,#282828" #comment +color-link constant "#AE81FF,#282828" +color-link constant.string "#E6DB74,#282828" +color-link constant.string.char "#BDE6AD,#282828"` + + c, err := ParseColorscheme(testColorscheme) + assert.Nil(t, err) + + fg, bg, _ := c["comment"].Decompose() + assert.Equal(t, tcell.NewRGBColor(117, 113, 94), fg) + assert.Equal(t, tcell.NewRGBColor(40, 40, 40), bg) +} diff --git a/cmd/micro/command.go b/cmd/micro/command.go deleted file mode 100644 index f3a1b26a..00000000 --- a/cmd/micro/command.go +++ /dev/null @@ -1,694 +0,0 @@ -package main - -import ( - "fmt" - "os" - "path/filepath" - "regexp" - "runtime" - "strconv" - "strings" - "unicode/utf8" - - humanize "github.com/dustin/go-humanize" - "github.com/zyedidia/micro/cmd/micro/shellwords" -) - -// A Command contains a action (a function to call) as well as information about how to autocomplete the command -type Command struct { - action func([]string) - completions []Completion -} - -// A StrCommand is similar to a command but keeps the name of the action -type StrCommand struct { - action string - completions []Completion -} - -var commands map[string]Command - -var commandActions map[string]func([]string) - -func init() { - commandActions = map[string]func([]string){ - "Set": Set, - "SetLocal": SetLocal, - "Show": Show, - "ShowKey": ShowKey, - "Run": Run, - "Bind": Bind, - "Quit": Quit, - "Save": Save, - "Replace": Replace, - "ReplaceAll": ReplaceAll, - "VSplit": VSplit, - "HSplit": HSplit, - "Tab": NewTab, - "Help": Help, - "Eval": Eval, - "ToggleLog": ToggleLog, - "Plugin": PluginCmd, - "Reload": Reload, - "Cd": Cd, - "Pwd": Pwd, - "Open": Open, - "TabSwitch": TabSwitch, - "Term": Term, - "MemUsage": MemUsage, - "Retab": Retab, - "Raw": Raw, - "TextFilter": TextFilter, - } -} - -// InitCommands initializes the default commands -func InitCommands() { - commands = make(map[string]Command) - - defaults := DefaultCommands() - parseCommands(defaults) -} - -func parseCommands(userCommands map[string]StrCommand) { - for k, v := range userCommands { - MakeCommand(k, v.action, v.completions...) - } -} - -// MakeCommand is a function to easily create new commands -// This can be called by plugins in Lua so that plugins can define their own commands -func MakeCommand(name, function string, completions ...Completion) { - action := commandActions[function] - if _, ok := commandActions[function]; !ok { - // If the user seems to be binding a function that doesn't exist - // We hope that it's a lua function that exists and bind it to that - action = LuaFunctionCommand(function) - } - - commands[name] = Command{action, completions} -} - -// DefaultCommands returns a map containing micro's default commands -func DefaultCommands() map[string]StrCommand { - return map[string]StrCommand{ - "set": {"Set", []Completion{OptionCompletion, OptionValueCompletion}}, - "setlocal": {"SetLocal", []Completion{OptionCompletion, OptionValueCompletion}}, - "show": {"Show", []Completion{OptionCompletion, NoCompletion}}, - "showkey": {"ShowKey", []Completion{NoCompletion}}, - "bind": {"Bind", []Completion{NoCompletion}}, - "run": {"Run", []Completion{NoCompletion}}, - "quit": {"Quit", []Completion{NoCompletion}}, - "save": {"Save", []Completion{NoCompletion}}, - "replace": {"Replace", []Completion{NoCompletion}}, - "replaceall": {"ReplaceAll", []Completion{NoCompletion}}, - "vsplit": {"VSplit", []Completion{FileCompletion, NoCompletion}}, - "hsplit": {"HSplit", []Completion{FileCompletion, NoCompletion}}, - "tab": {"Tab", []Completion{FileCompletion, NoCompletion}}, - "help": {"Help", []Completion{HelpCompletion, NoCompletion}}, - "eval": {"Eval", []Completion{NoCompletion}}, - "log": {"ToggleLog", []Completion{NoCompletion}}, - "plugin": {"Plugin", []Completion{PluginCmdCompletion, PluginNameCompletion}}, - "reload": {"Reload", []Completion{NoCompletion}}, - "cd": {"Cd", []Completion{FileCompletion}}, - "pwd": {"Pwd", []Completion{NoCompletion}}, - "open": {"Open", []Completion{FileCompletion}}, - "tabswitch": {"TabSwitch", []Completion{NoCompletion}}, - "term": {"Term", []Completion{NoCompletion}}, - "memusage": {"MemUsage", []Completion{NoCompletion}}, - "retab": {"Retab", []Completion{NoCompletion}}, - "raw": {"Raw", []Completion{NoCompletion}}, - "textfilter": {"TextFilter", []Completion{NoCompletion}}, - } -} - -// CommandEditAction returns a bindable function that opens a prompt with -// the given string and executes the command when the user presses -// enter -func CommandEditAction(prompt string) func(*View, bool) bool { - return func(v *View, usePlugin bool) bool { - input, canceled := messenger.Prompt("> ", prompt, "Command", CommandCompletion) - if !canceled { - HandleCommand(input) - } - return false - } -} - -// CommandAction returns a bindable function which executes the -// given command -func CommandAction(cmd string) func(*View, bool) bool { - return func(v *View, usePlugin bool) bool { - HandleCommand(cmd) - return false - } -} - -// PluginCmd installs, removes, updates, lists, or searches for given plugins -func PluginCmd(args []string) { - if len(args) >= 1 { - switch args[0] { - case "install": - installedVersions := GetInstalledVersions(false) - for _, plugin := range args[1:] { - pp := GetAllPluginPackages().Get(plugin) - if pp == nil { - messenger.Error("Unknown plugin \"" + plugin + "\"") - } else if err := pp.IsInstallable(); err != nil { - messenger.Error("Error installing ", plugin, ": ", err) - } else { - for _, installed := range installedVersions { - if pp.Name == installed.pack.Name { - if pp.Versions[0].Version.Compare(installed.Version) == 1 { - messenger.Error(pp.Name, " is already installed but out-of-date: use 'plugin update ", pp.Name, "' to update") - } else { - messenger.Error(pp.Name, " is already installed") - } - } - } - pp.Install() - } - } - case "remove": - removed := "" - for _, plugin := range args[1:] { - // check if the plugin exists. - if _, ok := loadedPlugins[plugin]; ok { - UninstallPlugin(plugin) - removed += plugin + " " - continue - } - } - if !IsSpaces([]byte(removed)) { - messenger.Message("Removed ", removed) - } else { - messenger.Error("The requested plugins do not exist") - } - case "update": - UpdatePlugins(args[1:]) - case "list": - plugins := GetInstalledVersions(false) - messenger.AddLog("----------------") - messenger.AddLog("The following plugins are currently installed:\n") - for _, p := range plugins { - messenger.AddLog(fmt.Sprintf("%s (%s)", p.pack.Name, p.Version)) - } - messenger.AddLog("----------------") - if len(plugins) > 0 { - if CurView().Type != vtLog { - ToggleLog([]string{}) - } - } - case "search": - plugins := SearchPlugin(args[1:]) - messenger.Message(len(plugins), " plugins found") - for _, p := range plugins { - messenger.AddLog("----------------") - messenger.AddLog(p.String()) - } - messenger.AddLog("----------------") - if len(plugins) > 0 { - if CurView().Type != vtLog { - ToggleLog([]string{}) - } - } - case "available": - packages := GetAllPluginPackages() - messenger.AddLog("Available Plugins:") - for _, pkg := range packages { - messenger.AddLog(pkg.Name) - } - if CurView().Type != vtLog { - ToggleLog([]string{}) - } - } - } else { - messenger.Error("Not enough arguments") - } -} - -// Retab changes all spaces to tabs or all tabs to spaces -// depending on the user's settings -func Retab(args []string) { - CurView().Retab(true) -} - -// Raw opens a new raw view which displays the escape sequences micro -// is receiving in real-time -func Raw(args []string) { - buf := NewBufferFromString("", "Raw events") - - view := NewView(buf) - view.Buf.Insert(view.Cursor.Loc, "Warning: Showing raw event escape codes\n") - view.Buf.Insert(view.Cursor.Loc, "Use CtrlQ to exit\n") - view.Type = vtRaw - tab := NewTabFromView(view) - tab.SetNum(len(tabs)) - tabs = append(tabs, tab) - curTab = len(tabs) - 1 - if len(tabs) == 2 { - for _, t := range tabs { - for _, v := range t.Views { - v.ToggleTabbar() - } - } - } -} - -// TabSwitch switches to a given tab either by name or by number -func TabSwitch(args []string) { - if len(args) > 0 { - num, err := strconv.Atoi(args[0]) - if err != nil { - // Check for tab with this name - - found := false - for _, t := range tabs { - v := t.Views[t.CurView] - if v.Buf.GetName() == args[0] { - curTab = v.TabNum - found = true - } - } - if !found { - messenger.Error("Could not find tab: ", err) - } - } else { - num-- - if num >= 0 && num < len(tabs) { - curTab = num - } else { - messenger.Error("Invalid tab index") - } - } - } -} - -// Cd changes the current working directory -func Cd(args []string) { - if len(args) > 0 { - path := ReplaceHome(args[0]) - err := os.Chdir(path) - if err != nil { - messenger.Error("Error with cd: ", err) - return - } - wd, _ := os.Getwd() - for _, tab := range tabs { - for _, view := range tab.Views { - if len(view.Buf.name) == 0 { - continue - } - - view.Buf.Path, _ = MakeRelative(view.Buf.AbsPath, wd) - if p, _ := filepath.Abs(view.Buf.Path); !strings.Contains(p, wd) { - view.Buf.Path = view.Buf.AbsPath - } - } - } - } -} - -// MemUsage prints micro's memory usage -// Alloc shows how many bytes are currently in use -// Sys shows how many bytes have been requested from the operating system -// NumGC shows how many times the GC has been run -// Note that Go commonly reserves more memory from the OS than is currently in-use/required -// Additionally, even if Go returns memory to the OS, the OS does not always claim it because -// there may be plenty of memory to spare -func MemUsage(args []string) { - var mem runtime.MemStats - runtime.ReadMemStats(&mem) - - messenger.Message(fmt.Sprintf("Alloc: %v, Sys: %v, NumGC: %v", humanize.Bytes(mem.Alloc), humanize.Bytes(mem.Sys), mem.NumGC)) -} - -// Pwd prints the current working directory -func Pwd(args []string) { - wd, err := os.Getwd() - if err != nil { - messenger.Message(err.Error()) - } else { - messenger.Message(wd) - } -} - -// Open opens a new buffer with a given filename -func Open(args []string) { - if len(args) > 0 { - filename := args[0] - // the filename might or might not be quoted, so unquote first then join the strings. - args, err := shellwords.Split(filename) - if err != nil { - messenger.Error("Error parsing args ", err) - return - } - filename = strings.Join(args, " ") - - CurView().Open(filename) - } else { - messenger.Error("No filename") - } -} - -// ToggleLog toggles the log view -func ToggleLog(args []string) { - buffer := messenger.getBuffer() - if CurView().Type != vtLog { - CurView().HSplit(buffer) - CurView().Type = vtLog - RedrawAll() - buffer.Cursor.Loc = buffer.Start() - CurView().Relocate() - buffer.Cursor.Loc = buffer.End() - CurView().Relocate() - } else { - CurView().Quit(true) - } -} - -// Reload reloads all files (syntax files, colorschemes...) -func Reload(args []string) { - LoadAll() -} - -// Help tries to open the given help page in a horizontal split -func Help(args []string) { - if len(args) < 1 { - // Open the default help if the user just typed "> help" - CurView().openHelp("help") - } else { - helpPage := args[0] - if FindRuntimeFile(RTHelp, helpPage) != nil { - CurView().openHelp(helpPage) - } else { - messenger.Error("Sorry, no help for ", helpPage) - } - } -} - -// VSplit opens a vertical split with file given in the first argument -// If no file is given, it opens an empty buffer in a new split -func VSplit(args []string) { - if len(args) == 0 { - CurView().VSplit(NewBufferFromString("", "")) - } else { - buf, err := NewBufferFromFile(args[0]) - if err != nil { - messenger.Error(err) - return - } - CurView().VSplit(buf) - } -} - -// HSplit opens a horizontal split with file given in the first argument -// If no file is given, it opens an empty buffer in a new split -func HSplit(args []string) { - if len(args) == 0 { - CurView().HSplit(NewBufferFromString("", "")) - } else { - buf, err := NewBufferFromFile(args[0]) - if err != nil { - messenger.Error(err) - return - } - CurView().HSplit(buf) - } -} - -// Eval evaluates a lua expression -func Eval(args []string) { - if len(args) >= 1 { - err := L.DoString(args[0]) - if err != nil { - messenger.Error(err) - } - } else { - messenger.Error("Not enough arguments") - } -} - -// NewTab opens the given file in a new tab -func NewTab(args []string) { - if len(args) == 0 { - CurView().AddTab(true) - } else { - buf, err := NewBufferFromFile(args[0]) - if err != nil { - messenger.Error(err) - return - } - - tab := NewTabFromView(NewView(buf)) - tab.SetNum(len(tabs)) - tabs = append(tabs, tab) - curTab = len(tabs) - 1 - if len(tabs) == 2 { - for _, t := range tabs { - for _, v := range t.Views { - v.ToggleTabbar() - } - } - } - } -} - -// Set sets an option -func Set(args []string) { - if len(args) < 2 { - messenger.Error("Not enough arguments") - return - } - - option := args[0] - value := args[1] - - SetOptionAndSettings(option, value) -} - -// SetLocal sets an option local to the buffer -func SetLocal(args []string) { - if len(args) < 2 { - messenger.Error("Not enough arguments") - return - } - - option := args[0] - value := args[1] - - err := SetLocalOption(option, value, CurView()) - if err != nil { - messenger.Error(err.Error()) - } -} - -// Show shows the value of the given option -func Show(args []string) { - if len(args) < 1 { - messenger.Error("Please provide an option to show") - return - } - - option := GetOption(args[0]) - - if option == nil { - messenger.Error(args[0], " is not a valid option") - return - } - - messenger.Message(option) -} - -// ShowKey displays the action that a key is bound to -func ShowKey(args []string) { - if len(args) < 1 { - messenger.Error("Please provide a key to show") - return - } - - if action, ok := bindingsStr[args[0]]; ok { - messenger.Message(action) - } else { - messenger.Message(args[0], " has no binding") - } -} - -// Bind creates a new keybinding -func Bind(args []string) { - if len(args) < 2 { - messenger.Error("Not enough arguments") - return - } - BindKey(args[0], args[1]) -} - -// Run runs a shell command in the background -func Run(args []string) { - // Run a shell command in the background (openTerm is false) - HandleShellCommand(shellwords.Join(args...), false, true) -} - -// Quit closes the main view -func Quit(args []string) { - // Close the main view - CurView().Quit(true) -} - -// Save saves the buffer in the main view -func Save(args []string) { - if len(args) == 0 { - // Save the main view - CurView().Save(true) - } else { - CurView().Buf.SaveAs(args[0]) - } -} - -// Replace runs search and replace -func Replace(args []string) { - if len(args) < 2 || len(args) > 4 { - // We need to find both a search and replace expression - messenger.Error("Invalid replace statement: " + strings.Join(args, " ")) - return - } - - all := false - noRegex := false - - if len(args) > 2 { - for _, arg := range args[2:] { - switch arg { - case "-a": - all = true - case "-l": - noRegex = true - default: - messenger.Error("Invalid flag: " + arg) - return - } - } - } - - search := string(args[0]) - - if noRegex { - search = regexp.QuoteMeta(search) - } - - replace := string(args[1]) - replaceBytes := []byte(replace) - - regex, err := regexp.Compile("(?m)" + search) - if err != nil { - // There was an error with the user's regex - messenger.Error(err.Error()) - return - } - - view := CurView() - - found := 0 - replaceAll := func() { - var deltas []Delta - for i := 0; i < view.Buf.LinesNum(); i++ { - newText := regex.ReplaceAllFunc(view.Buf.lines[i].data, func(in []byte) []byte { - found++ - return replaceBytes - }) - - from := Loc{0, i} - to := Loc{utf8.RuneCount(view.Buf.lines[i].data), i} - - deltas = append(deltas, Delta{string(newText), from, to}) - } - view.Buf.MultipleReplace(deltas) - } - - if all { - replaceAll() - } else { - for { - // The 'check' flag was used - Search(search, view, true) - if !view.Cursor.HasSelection() { - break - } - view.Relocate() - RedrawAll() - choice, canceled := messenger.LetterPrompt("Perform replacement? (y,n,a)", 'y', 'n', 'a') - if canceled { - if view.Cursor.HasSelection() { - view.Cursor.Loc = view.Cursor.CurSelection[0] - view.Cursor.ResetSelection() - } - messenger.Reset() - break - } else if choice == 'a' { - if view.Cursor.HasSelection() { - view.Cursor.Loc = view.Cursor.CurSelection[0] - view.Cursor.ResetSelection() - } - messenger.Reset() - replaceAll() - break - } else if choice == 'y' { - view.Cursor.DeleteSelection() - view.Buf.Insert(view.Cursor.Loc, replace) - view.Cursor.ResetSelection() - messenger.Reset() - found++ - } - if view.Cursor.HasSelection() { - searchStart = view.Cursor.CurSelection[1] - } else { - searchStart = view.Cursor.Loc - } - } - } - view.Cursor.Relocate() - - if found > 1 { - messenger.Message("Replaced ", found, " occurrences of ", search) - } else if found == 1 { - messenger.Message("Replaced ", found, " occurrence of ", search) - } else { - messenger.Message("Nothing matched ", search) - } -} - -// ReplaceAll replaces search term all at once -func ReplaceAll(args []string) { - // aliased to Replace command - Replace(append(args, "-a")) -} - -// Term opens a terminal in the current view -func Term(args []string) { - var err error - if len(args) == 0 { - err = CurView().StartTerminal([]string{os.Getenv("SHELL"), "-i"}, true, false, "") - } else { - err = CurView().StartTerminal(args, true, false, "") - } - if err != nil { - messenger.Error(err) - } -} - -// HandleCommand handles input from the user -func HandleCommand(input string) { - args, err := shellwords.Split(input) - if err != nil { - messenger.Error("Error parsing args ", err) - return - } - - inputCmd := args[0] - - if _, ok := commands[inputCmd]; !ok { - messenger.Error("Unknown command ", inputCmd) - } else { - commands[inputCmd].action(args[1:]) - } -} diff --git a/cmd/micro/cursor.go b/cmd/micro/cursor.go index 15dbb1b3..9e9f1d81 100644 --- a/cmd/micro/cursor.go +++ b/cmd/micro/cursor.go @@ -1,15 +1,23 @@ package main import ( + "unicode/utf8" + + runewidth "github.com/mattn/go-runewidth" "github.com/zyedidia/clipboard" ) -// The Cursor struct stores the location of the cursor in the view -// The complicated part about the cursor is storing its location. -// The cursor must be displayed at an x, y location, but since the buffer -// uses a rope to store text, to insert text we must have an index. It -// is also simpler to use character indicies for other tasks such as -// selection. +// InBounds returns whether the given location is a valid character position in the given buffer +func InBounds(pos Loc, buf *Buffer) bool { + if pos.Y < 0 || pos.Y >= len(buf.lines) || pos.X < 0 || pos.X > utf8.RuneCount(buf.LineBytes(pos.Y)) { + return false + } + + return true +} + +// The Cursor struct stores the location of the cursor in the buffer +// as well as the selection type Cursor struct { buf *Buffer Loc @@ -42,12 +50,72 @@ func (c *Cursor) GotoLoc(l Loc) { c.LastVisualX = c.GetVisualX() } +// GetVisualX returns the x value of the cursor in visual spaces +func (c *Cursor) GetVisualX() int { + if c.X <= 0 { + c.X = 0 + return 0 + } + + bytes := c.buf.LineBytes(c.Y) + tabsize := int(c.buf.Settings["tabsize"].(float64)) + if c.X > utf8.RuneCount(bytes) { + c.X = utf8.RuneCount(bytes) - 1 + } + + return StringWidth(bytes, c.X, tabsize) +} + +// GetCharPosInLine gets the char position of a visual x y +// coordinate (this is necessary because tabs are 1 char but +// 4 visual spaces) +func (c *Cursor) GetCharPosInLine(b []byte, visualPos int) int { + tabsize := int(c.buf.Settings["tabsize"].(float64)) + + // Scan rune by rune until we exceed the visual width that we are + // looking for. Then we can return the character position we have found + i := 0 // char pos + width := 0 // string visual width + for len(b) > 0 { + r, size := utf8.DecodeRune(b) + b = b[size:] + + switch r { + case '\t': + ts := tabsize - (width % tabsize) + width += ts + default: + width += runewidth.RuneWidth(r) + } + + i++ + + if width >= visualPos { + break + } + } + + return i +} + +// Start moves the cursor to the start of the line it is on +func (c *Cursor) Start() { + c.X = 0 + c.LastVisualX = c.GetVisualX() +} + +// End moves the cursor to the end of the line it is on +func (c *Cursor) End() { + c.X = utf8.RuneCount(c.buf.LineBytes(c.Y)) + c.LastVisualX = c.GetVisualX() +} + // CopySelection copies the user's selection to either "primary" // or "clipboard" func (c *Cursor) CopySelection(target string) { if c.HasSelection() { if target != "primary" || c.buf.Settings["useprimary"].(bool) { - clipboard.WriteAll(c.GetSelection(), target) + clipboard.WriteAll(string(c.GetSelection()), target) } } } @@ -87,14 +155,14 @@ func (c *Cursor) DeleteSelection() { } // GetSelection returns the cursor's selection -func (c *Cursor) GetSelection() string { +func (c *Cursor) GetSelection() []byte { if InBounds(c.CurSelection[0], c.buf) && InBounds(c.CurSelection[1], c.buf) { if c.CurSelection[0].GreaterThan(c.CurSelection[1]) { return c.buf.Substr(c.CurSelection[1], c.CurSelection[0]) } return c.buf.Substr(c.CurSelection[0], c.CurSelection[1]) } - return "" + return []byte{} } // SelectLine selects the current line @@ -102,7 +170,7 @@ func (c *Cursor) SelectLine() { c.Start() c.SetSelectionStart(c.Loc) c.End() - if c.buf.NumLines-1 > c.Y { + if len(c.buf.lines)-1 > c.Y { c.SetSelectionEnd(c.Loc.Move(1, c.buf)) } else { c.SetSelectionEnd(c.Loc) @@ -129,146 +197,20 @@ func (c *Cursor) AddLineToSelection() { } } -// SelectWord selects the word the cursor is currently on -func (c *Cursor) SelectWord() { - if len(c.buf.Line(c.Y)) == 0 { - return - } - - if !IsWordChar(string(c.RuneUnder(c.X))) { - c.SetSelectionStart(c.Loc) - c.SetSelectionEnd(c.Loc.Move(1, c.buf)) - c.OrigSelection = c.CurSelection - return - } - - forward, backward := c.X, c.X - - for backward > 0 && IsWordChar(string(c.RuneUnder(backward-1))) { - backward-- - } - - c.SetSelectionStart(Loc{backward, c.Y}) - c.OrigSelection[0] = c.CurSelection[0] - - for forward < Count(c.buf.Line(c.Y))-1 && IsWordChar(string(c.RuneUnder(forward+1))) { - forward++ - } - - c.SetSelectionEnd(Loc{forward, c.Y}.Move(1, c.buf)) - c.OrigSelection[1] = c.CurSelection[1] - c.Loc = c.CurSelection[1] -} - -// AddWordToSelection adds the word the cursor is currently on -// to the selection -func (c *Cursor) AddWordToSelection() { - if c.Loc.GreaterThan(c.OrigSelection[0]) && c.Loc.LessThan(c.OrigSelection[1]) { - c.CurSelection = c.OrigSelection - return - } - - if c.Loc.LessThan(c.OrigSelection[0]) { - backward := c.X - - for backward > 0 && IsWordChar(string(c.RuneUnder(backward-1))) { - backward-- - } - - c.SetSelectionStart(Loc{backward, c.Y}) - c.SetSelectionEnd(c.OrigSelection[1]) - } - - if c.Loc.GreaterThan(c.OrigSelection[1]) { - forward := c.X - - for forward < Count(c.buf.Line(c.Y))-1 && IsWordChar(string(c.RuneUnder(forward+1))) { - forward++ - } - - c.SetSelectionEnd(Loc{forward, c.Y}.Move(1, c.buf)) - c.SetSelectionStart(c.OrigSelection[0]) - } - - c.Loc = c.CurSelection[1] -} - -// SelectTo selects from the current cursor location to the given -// location -func (c *Cursor) SelectTo(loc Loc) { - if loc.GreaterThan(c.OrigSelection[0]) { - c.SetSelectionStart(c.OrigSelection[0]) - c.SetSelectionEnd(loc) - } else { - c.SetSelectionStart(loc) - c.SetSelectionEnd(c.OrigSelection[0]) - } -} - -// WordRight moves the cursor one word to the right -func (c *Cursor) WordRight() { - for IsWhitespace(c.RuneUnder(c.X)) { - if c.X == Count(c.buf.Line(c.Y)) { - c.Right() - return - } - c.Right() - } - c.Right() - for IsWordChar(string(c.RuneUnder(c.X))) { - if c.X == Count(c.buf.Line(c.Y)) { - return - } - c.Right() - } -} - -// WordLeft moves the cursor one word to the left -func (c *Cursor) WordLeft() { - c.Left() - for IsWhitespace(c.RuneUnder(c.X)) { - if c.X == 0 { - return - } - c.Left() - } - c.Left() - for IsWordChar(string(c.RuneUnder(c.X))) { - if c.X == 0 { - return - } - c.Left() - } - c.Right() -} - -// RuneUnder returns the rune under the given x position -func (c *Cursor) RuneUnder(x int) rune { - line := []rune(c.buf.Line(c.Y)) - if len(line) == 0 { - return '\n' - } - if x >= len(line) { - return '\n' - } else if x < 0 { - x = 0 - } - return line[x] -} // UpN moves the cursor up N lines (if possible) func (c *Cursor) UpN(amount int) { proposedY := c.Y - amount if proposedY < 0 { proposedY = 0 - c.LastVisualX = 0 - } else if proposedY >= c.buf.NumLines { - proposedY = c.buf.NumLines - 1 + } else if proposedY >= len(c.buf.lines) { + proposedY = len(c.buf.lines) - 1 } - runes := []rune(c.buf.Line(proposedY)) - c.X = c.GetCharPosInLine(proposedY, c.LastVisualX) - if c.X > len(runes) || (amount < 0 && proposedY == c.Y) { - c.X = len(runes) + bytes := c.buf.LineBytes(proposedY) + c.X = c.GetCharPosInLine(bytes, c.LastVisualX) + + if c.X > utf8.RuneCount(bytes) || (amount < 0 && proposedY == c.Y) { + c.X = utf8.RuneCount(bytes) } c.Y = proposedY @@ -310,7 +252,7 @@ func (c *Cursor) Right() { if c.Loc == c.buf.End() { return } - if c.X < Count(c.buf.Line(c.Y)) { + if c.X < utf8.RuneCount(c.buf.LineBytes(c.Y)) { c.X++ } else { c.Down() @@ -319,80 +261,19 @@ func (c *Cursor) Right() { c.LastVisualX = c.GetVisualX() } -// End moves the cursor to the end of the line it is on -func (c *Cursor) End() { - c.X = Count(c.buf.Line(c.Y)) - c.LastVisualX = c.GetVisualX() -} - -// Start moves the cursor to the start of the line it is on -func (c *Cursor) Start() { - c.X = 0 - c.LastVisualX = c.GetVisualX() -} - -// StartOfText moves the cursor to the first non-whitespace rune of -// the line it is on -func (c *Cursor) StartOfText() { - c.Start() - for IsWhitespace(c.RuneUnder(c.X)) { - if c.X == Count(c.buf.Line(c.Y)) { - break - } - c.Right() - } -} - -// GetCharPosInLine gets the char position of a visual x y -// coordinate (this is necessary because tabs are 1 char but -// 4 visual spaces) -func (c *Cursor) GetCharPosInLine(lineNum, visualPos int) int { - // Get the tab size - tabSize := int(c.buf.Settings["tabsize"].(float64)) - visualLineLen := StringWidth(c.buf.Line(lineNum), tabSize) - if visualPos > visualLineLen { - visualPos = visualLineLen - } - width := WidthOfLargeRunes(c.buf.Line(lineNum), tabSize) - if visualPos >= width { - return visualPos - width - } - return visualPos / tabSize -} - -// GetVisualX returns the x value of the cursor in visual spaces -func (c *Cursor) GetVisualX() int { - runes := []rune(c.buf.Line(c.Y)) - tabSize := int(c.buf.Settings["tabsize"].(float64)) - if c.X > len(runes) { - c.X = len(runes) - 1 - } - - if c.X < 0 { - c.X = 0 - } - - return StringWidth(string(runes[:c.X]), tabSize) -} - -// StoreVisualX stores the current visual x value in the cursor -func (c *Cursor) StoreVisualX() { - c.LastVisualX = c.GetVisualX() -} - // Relocate makes sure that the cursor is inside the bounds // of the buffer If it isn't, it moves it to be within the // buffer's lines func (c *Cursor) Relocate() { if c.Y < 0 { c.Y = 0 - } else if c.Y >= c.buf.NumLines { - c.Y = c.buf.NumLines - 1 + } else if c.Y >= len(c.buf.lines) { + c.Y = len(c.buf.lines) - 1 } if c.X < 0 { c.X = 0 - } else if c.X > Count(c.buf.Line(c.Y)) { - c.X = Count(c.buf.Line(c.Y)) + } else if c.X > utf8.RuneCount(c.buf.LineBytes(c.Y)) { + c.X = utf8.RuneCount(c.buf.LineBytes(c.Y)) } } diff --git a/cmd/micro/cursor_test.go b/cmd/micro/cursor_test.go new file mode 100644 index 00000000..06ab7d0f --- /dev/null +++ b/cmd/micro/cursor_test.go @@ -0,0 +1 @@ +package main diff --git a/cmd/micro/debug.go b/cmd/micro/debug.go new file mode 100644 index 00000000..494b0e92 --- /dev/null +++ b/cmd/micro/debug.go @@ -0,0 +1,27 @@ +package main + +import ( + "log" + "os" +) + +type NullWriter struct{} + +func (NullWriter) Write(data []byte) (n int, err error) { + return 0, nil +} + +func InitLog() { + if Debug == "ON" { + f, err := os.OpenFile("log.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666) + if err != nil { + log.Fatalf("error opening file: %v", err) + } + + log.SetOutput(f) + log.Println("Micro started") + } else { + log.SetOutput(NullWriter{}) + log.Println("Micro started") + } +} diff --git a/cmd/micro/eventhandler.go b/cmd/micro/eventhandler.go index adf7cba4..5eefa2af 100644 --- a/cmd/micro/eventhandler.go +++ b/cmd/micro/eventhandler.go @@ -1,11 +1,10 @@ package main import ( - "strings" "time" + "unicode/utf8" dmp "github.com/sergi/go-diff/diffmatchpatch" - "github.com/yuin/gopher-lua" ) const ( @@ -30,7 +29,7 @@ type TextEvent struct { // A Delta is a change to the buffer type Delta struct { - Text string + Text []byte Start Loc End Loc } @@ -39,7 +38,7 @@ type Delta struct { func ExecuteTextEvent(t *TextEvent, buf *Buffer) { if t.EventType == TextEventInsert { for _, d := range t.Deltas { - buf.insert(d.Start, []byte(d.Text)) + buf.insert(d.Start, d.Text) } } else if t.EventType == TextEventRemove { for i, d := range t.Deltas { @@ -48,9 +47,9 @@ func ExecuteTextEvent(t *TextEvent, buf *Buffer) { } else if t.EventType == TextEventReplace { for i, d := range t.Deltas { t.Deltas[i].Text = buf.remove(d.Start, d.End) - buf.insert(d.Start, []byte(d.Text)) + buf.insert(d.Start, d.Text) t.Deltas[i].Start = d.Start - t.Deltas[i].End = Loc{d.Start.X + Count(d.Text), d.Start.Y} + t.Deltas[i].End = Loc{d.Start.X + utf8.RuneCount(d.Text), d.Start.Y} } for i, j := 0, len(t.Deltas)-1; i < j; i, j = i+1, j-1 { t.Deltas[i], t.Deltas[j] = t.Deltas[j], t.Deltas[i] @@ -67,15 +66,15 @@ func UndoTextEvent(t *TextEvent, buf *Buffer) { // EventHandler executes text manipulations and allows undoing and redoing type EventHandler struct { buf *Buffer - UndoStack *Stack - RedoStack *Stack + UndoStack *TEStack + RedoStack *TEStack } // NewEventHandler returns a new EventHandler func NewEventHandler(buf *Buffer) *EventHandler { eh := new(EventHandler) - eh.UndoStack = new(Stack) - eh.RedoStack = new(Stack) + eh.UndoStack = new(TEStack) + eh.RedoStack = new(TEStack) eh.buf = buf return eh } @@ -86,38 +85,39 @@ func NewEventHandler(buf *Buffer) *EventHandler { // through insert and delete events func (eh *EventHandler) ApplyDiff(new string) { differ := dmp.New() - diff := differ.DiffMain(eh.buf.String(), new, false) + diff := differ.DiffMain(string(eh.buf.Bytes()), new, false) loc := eh.buf.Start() for _, d := range diff { if d.Type == dmp.DiffDelete { - eh.Remove(loc, loc.Move(Count(d.Text), eh.buf)) + eh.Remove(loc, loc.Move(utf8.RuneCountInString(d.Text), eh.buf)) } else { if d.Type == dmp.DiffInsert { eh.Insert(loc, d.Text) } - loc = loc.Move(Count(d.Text), eh.buf) + loc = loc.Move(utf8.RuneCountInString(d.Text), eh.buf) } } } // Insert creates an insert text event and executes it -func (eh *EventHandler) Insert(start Loc, text string) { +func (eh *EventHandler) Insert(start Loc, textStr string) { + text := []byte(textStr) e := &TextEvent{ - C: *eh.buf.cursors[eh.buf.curCursor], + C: *eh.buf.GetActiveCursor(), EventType: TextEventInsert, Deltas: []Delta{{text, start, Loc{0, 0}}}, Time: time.Now(), } eh.Execute(e) - e.Deltas[0].End = start.Move(Count(text), eh.buf) + e.Deltas[0].End = start.Move(utf8.RuneCount(text), eh.buf) end := e.Deltas[0].End - for _, c := range eh.buf.cursors { + for _, c := range eh.buf.GetCursors() { move := func(loc Loc) Loc { if start.Y != end.Y && loc.GreaterThan(start) { loc.Y += end.Y - start.Y } else if loc.Y == start.Y && loc.GreaterEqual(start) { - loc = loc.Move(Count(text), eh.buf) + loc = loc.Move(utf8.RuneCount(text), eh.buf) } return loc } @@ -133,14 +133,14 @@ func (eh *EventHandler) Insert(start Loc, text string) { // Remove creates a remove text event and executes it func (eh *EventHandler) Remove(start, end Loc) { e := &TextEvent{ - C: *eh.buf.cursors[eh.buf.curCursor], + C: *eh.buf.GetActiveCursor(), EventType: TextEventRemove, - Deltas: []Delta{{"", start, end}}, + Deltas: []Delta{{[]byte{}, start, end}}, Time: time.Now(), } eh.Execute(e) - for _, c := range eh.buf.cursors { + for _, c := range eh.buf.GetCursors() { move := func(loc Loc) Loc { if start.Y != end.Y && loc.GreaterThan(end) { loc.Y -= end.Y - start.Y @@ -161,7 +161,7 @@ func (eh *EventHandler) Remove(start, end Loc) { // MultipleReplace creates an multiple insertions executes them func (eh *EventHandler) MultipleReplace(deltas []Delta) { e := &TextEvent{ - C: *eh.buf.cursors[eh.buf.curCursor], + C: *eh.buf.GetActiveCursor(), EventType: TextEventReplace, Deltas: deltas, Time: time.Now(), @@ -178,19 +178,20 @@ func (eh *EventHandler) Replace(start, end Loc, replace string) { // Execute a textevent and add it to the undo stack func (eh *EventHandler) Execute(t *TextEvent) { if eh.RedoStack.Len() > 0 { - eh.RedoStack = new(Stack) + eh.RedoStack = new(TEStack) } eh.UndoStack.Push(t) - for pl := range loadedPlugins { - ret, err := Call(pl+".onBeforeTextEvent", t) - if err != nil && !strings.HasPrefix(err.Error(), "function does not exist") { - TermMessage(err) - } - if val, ok := ret.(lua.LBool); ok && val == lua.LFalse { - return - } - } + // TODO: Call plugins on text events + // for pl := range loadedPlugins { + // ret, err := Call(pl+".onBeforeTextEvent", t) + // if err != nil && !strings.HasPrefix(err.Error(), "function does not exist") { + // TermMessage(err) + // } + // if val, ok := ret.(lua.LBool); ok && val == lua.LFalse { + // return + // } + // } ExecuteTextEvent(t, eh.buf) } @@ -236,9 +237,9 @@ func (eh *EventHandler) UndoOneEvent() { // Set the cursor in the right place teCursor := t.C - if teCursor.Num >= 0 && teCursor.Num < len(eh.buf.cursors) { - t.C = *eh.buf.cursors[teCursor.Num] - eh.buf.cursors[teCursor.Num].Goto(teCursor) + if teCursor.Num >= 0 && teCursor.Num < eh.buf.NumCursors() { + t.C = *eh.buf.GetCursor(teCursor.Num) + eh.buf.GetCursor(teCursor.Num).Goto(teCursor) } else { teCursor.Num = -1 } @@ -283,9 +284,9 @@ func (eh *EventHandler) RedoOneEvent() { UndoTextEvent(t, eh.buf) teCursor := t.C - if teCursor.Num >= 0 && teCursor.Num < len(eh.buf.cursors) { - t.C = *eh.buf.cursors[teCursor.Num] - eh.buf.cursors[teCursor.Num].Goto(teCursor) + if teCursor.Num >= 0 && teCursor.Num < eh.buf.NumCursors() { + t.C = *eh.buf.GetCursor(teCursor.Num) + eh.buf.GetCursor(teCursor.Num).Goto(teCursor) } else { teCursor.Num = -1 } diff --git a/cmd/micro/highlighter.go b/cmd/micro/highlighter.go deleted file mode 100644 index 53a46555..00000000 --- a/cmd/micro/highlighter.go +++ /dev/null @@ -1,28 +0,0 @@ -package main - -import "github.com/zyedidia/micro/cmd/micro/highlight" - -var syntaxFiles []*highlight.File - -func LoadSyntaxFiles() { - InitColorscheme() - for _, f := range ListRuntimeFiles(RTSyntax) { - data, err := f.Data() - if err != nil { - TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) - } else { - LoadSyntaxFile(data, f.Name()) - } - } -} - -func LoadSyntaxFile(text []byte, filename string) { - f, err := highlight.ParseFile(text) - - if err != nil { - TermMessage("Syntax file error: " + filename + ": " + err.Error()) - return - } - - syntaxFiles = append(syntaxFiles, f) -} diff --git a/cmd/micro/job.go b/cmd/micro/job.go deleted file mode 100644 index df9151b5..00000000 --- a/cmd/micro/job.go +++ /dev/null @@ -1,88 +0,0 @@ -package main - -import ( - "bytes" - "io" - "os/exec" -) - -// Jobs are the way plugins can run processes in the background -// A job is simply a process that gets executed asynchronously -// There are callbacks for when the job exits, when the job creates stdout -// and when the job creates stderr - -// These jobs run in a separate goroutine but the lua callbacks need to be -// executed in the main thread (where the Lua VM is running) so they are -// put into the jobs channel which gets read by the main loop - -// JobFunction is a representation of a job (this data structure is what is loaded -// into the jobs channel) -type JobFunction struct { - function func(string, ...string) - output string - args []string -} - -// A CallbackFile is the data structure that makes it possible to catch stderr and stdout write events -type CallbackFile struct { - io.Writer - - callback func(string, ...string) - args []string -} - -func (f *CallbackFile) Write(data []byte) (int, error) { - // This is either stderr or stdout - // In either case we create a new job function callback and put it in the jobs channel - jobFunc := JobFunction{f.callback, string(data), f.args} - jobs <- jobFunc - return f.Writer.Write(data) -} - -// JobStart starts a shell command in the background with the given callbacks -// It returns an *exec.Cmd as the job id -func JobStart(cmd string, onStdout, onStderr, onExit string, userargs ...string) *exec.Cmd { - return JobSpawn("sh", []string{"-c", cmd}, onStdout, onStderr, onExit, userargs...) -} - -// JobSpawn starts a process with args in the background with the given callbacks -// It returns an *exec.Cmd as the job id -func JobSpawn(cmdName string, cmdArgs []string, onStdout, onStderr, onExit string, userargs ...string) *exec.Cmd { - // Set up everything correctly if the functions have been provided - proc := exec.Command(cmdName, cmdArgs...) - var outbuf bytes.Buffer - if onStdout != "" { - proc.Stdout = &CallbackFile{&outbuf, LuaFunctionJob(onStdout), userargs} - } else { - proc.Stdout = &outbuf - } - if onStderr != "" { - proc.Stderr = &CallbackFile{&outbuf, LuaFunctionJob(onStderr), userargs} - } else { - proc.Stderr = &outbuf - } - - go func() { - // Run the process in the background and create the onExit callback - proc.Run() - jobFunc := JobFunction{LuaFunctionJob(onExit), string(outbuf.Bytes()), userargs} - jobs <- jobFunc - }() - - return proc -} - -// JobStop kills a job -func JobStop(cmd *exec.Cmd) { - cmd.Process.Kill() -} - -// JobSend sends the given data into the job's stdin stream -func JobSend(cmd *exec.Cmd, data string) { - stdin, err := cmd.StdinPipe() - if err != nil { - return - } - - stdin.Write([]byte(data)) -} diff --git a/cmd/micro/keymenu.go b/cmd/micro/keymenu.go deleted file mode 100644 index 737cc36f..00000000 --- a/cmd/micro/keymenu.go +++ /dev/null @@ -1,20 +0,0 @@ -package main - -// DisplayKeyMenu displays the nano-style key menu at the bottom of the screen -func DisplayKeyMenu() { - w, h := screen.Size() - - bot := h - 3 - - display := []string{"^Q Quit, ^S Save, ^O Open, ^G Help, ^E Command Bar, ^K Cut Line", "^F Find, ^Z Undo, ^Y Redo, ^A Select All, ^D Duplicate Line, ^T New Tab"} - - for y := 0; y < len(display); y++ { - for x := 0; x < w; x++ { - if x < len(display[y]) { - screen.SetContent(x, bot+y, rune(display[y][x]), nil, defStyle) - } else { - screen.SetContent(x, bot+y, ' ', nil, defStyle) - } - } - } -} diff --git a/cmd/micro/lineArray.go b/cmd/micro/line_array.go similarity index 60% rename from cmd/micro/lineArray.go rename to cmd/micro/line_array.go index 24860378..44907f2a 100644 --- a/cmd/micro/lineArray.go +++ b/cmd/micro/line_array.go @@ -8,6 +8,7 @@ import ( "github.com/zyedidia/micro/cmd/micro/highlight" ) +// Finds the byte index of the nth rune in a byte slice func runeToByteIndex(n int, txt []byte) int { if n == 0 { return 0 @@ -39,10 +40,21 @@ type Line struct { rehighlight bool } +const ( + // Line ending file formats + FFAuto = 0 // Autodetect format + FFUnix = 1 // LF line endings (unix style '\n') + FFDos = 2 // CRLF line endings (dos style '\r\n') +) + +type FileFormat byte + // A LineArray simply stores and array of lines and makes it easy to insert // and delete in it type LineArray struct { - lines []Line + lines []Line + endings FileFormat + initsize uint64 } // Append efficiently appends lines together @@ -52,7 +64,6 @@ func Append(slice []Line, data ...Line) []Line { l := len(slice) if l+len(data) > cap(slice) { // reallocate newSlice := make([]Line, (l+len(data))+10000) - // The copy function is predeclared and works for any slice type. copy(newSlice, slice) slice = newSlice } @@ -64,10 +75,11 @@ func Append(slice []Line, data ...Line) []Line { } // NewLineArray returns a new line array from an array of bytes -func NewLineArray(size int64, reader io.Reader) *LineArray { +func NewLineArray(size uint64, endings FileFormat, reader io.Reader) *LineArray { la := new(LineArray) la.lines = make([]Line, 0, 1000) + la.initsize = size br := bufio.NewReader(reader) var loaded int @@ -75,17 +87,27 @@ func NewLineArray(size int64, reader io.Reader) *LineArray { n := 0 for { data, err := br.ReadBytes('\n') - if len(data) > 1 && data[len(data)-2] == '\r' { - data = append(data[:len(data)-2], '\n') - if fileformat == 0 { - fileformat = 2 + // Detect the line ending by checking to see if there is a '\r' char + // before the '\n' + // Even if the file format is set to DOS, the '\r' is removed so + // that all lines end with '\n' + dlen := len(data) + if dlen > 1 && data[dlen-2] == '\r' { + data = append(data[:dlen-2], '\n') + if endings == FFAuto { + la.endings = FFDos } - } else if len(data) > 0 { - if fileformat == 0 { - fileformat = 1 + } else if dlen > 0 { + if endings == FFAuto { + la.endings = FFUnix } } + // If we are loading a large file (greater than 1000) we use the file + // size and the length of the first 1000 lines to try to estimate + // how many lines will need to be allocated for the rest of the file + // We add an extra 10000 to the original estimate to be safe and give + // plenty of room for expansion if n >= 1000 && loaded >= 0 { totalLinesNum := int(float64(size) * (float64(n) / float64(loaded))) newSlice := make([]Line, len(la.lines), totalLinesNum+10000) @@ -94,20 +116,19 @@ func NewLineArray(size int64, reader io.Reader) *LineArray { loaded = -1 } + // Counter for the number of bytes in the first 1000 lines if loaded >= 0 { - loaded += len(data) + loaded += dlen } if err != nil { if err == io.EOF { la.lines = Append(la.lines, Line{data[:], nil, nil, false}) - // la.lines = Append(la.lines, Line{data[:len(data)]}) } // Last line was read break } else { - // la.lines = Append(la.lines, Line{data[:len(data)-1]}) - la.lines = Append(la.lines, Line{data[:len(data)-1], nil, nil, false}) + la.lines = Append(la.lines, Line{data[:dlen-1], nil, nil, false}) } n++ } @@ -115,49 +136,35 @@ func NewLineArray(size int64, reader io.Reader) *LineArray { return la } -// Returns the String representation of the LineArray -func (la *LineArray) String() string { - str := "" - for i, l := range la.lines { - str += string(l.data) - if i != len(la.lines)-1 { - str += "\n" - } - } - return str -} - -// SaveString returns the string that should be written to disk when +// Bytes returns the string that should be written to disk when // the line array is saved -// It is the same as string but uses crlf or lf line endings depending -func (la *LineArray) SaveString(useCrlf bool) string { - str := "" +func (la *LineArray) Bytes() []byte { + str := make([]byte, 0, la.initsize+1000) // initsize should provide a good estimate for i, l := range la.lines { - str += string(l.data) + str = append(str, l.data...) if i != len(la.lines)-1 { - if useCrlf { - str += "\r" + if la.endings == FFDos { + str = append(str, '\r') } - str += "\n" + str = append(str, '\n') } } return str } -// NewlineBelow adds a newline below the given line number -func (la *LineArray) NewlineBelow(y int) { +// newlineBelow adds a newline below the given line number +func (la *LineArray) newlineBelow(y int) { la.lines = append(la.lines, Line{[]byte{' '}, nil, nil, false}) copy(la.lines[y+2:], la.lines[y+1:]) la.lines[y+1] = Line{[]byte{}, la.lines[y].state, nil, false} } -// inserts a byte array at a given location +// Inserts a byte array at a given location func (la *LineArray) insert(pos Loc, value []byte) { x, y := runeToByteIndex(pos.X, la.lines[pos.Y].data), pos.Y - // x, y := pos.x, pos.y for i := 0; i < len(value); i++ { if value[i] == '\n' { - la.Split(Loc{x, y}) + la.split(Loc{x, y}) x = 0 y++ continue @@ -167,33 +174,33 @@ func (la *LineArray) insert(pos Loc, value []byte) { } } -// inserts a byte at a given location +// InsertByte inserts a byte at a given location func (la *LineArray) insertByte(pos Loc, value byte) { la.lines[pos.Y].data = append(la.lines[pos.Y].data, 0) copy(la.lines[pos.Y].data[pos.X+1:], la.lines[pos.Y].data[pos.X:]) la.lines[pos.Y].data[pos.X] = value } -// JoinLines joins the two lines a and b -func (la *LineArray) JoinLines(a, b int) { +// joinLines joins the two lines a and b +func (la *LineArray) joinLines(a, b int) { la.insert(Loc{len(la.lines[a].data), a}, la.lines[b].data) - la.DeleteLine(b) + la.deleteLine(b) } -// Split splits a line at a given position -func (la *LineArray) Split(pos Loc) { - la.NewlineBelow(pos.Y) +// split splits a line at a given position +func (la *LineArray) split(pos Loc) { + la.newlineBelow(pos.Y) la.insert(Loc{0, pos.Y + 1}, la.lines[pos.Y].data[pos.X:]) la.lines[pos.Y+1].state = la.lines[pos.Y].state la.lines[pos.Y].state = nil la.lines[pos.Y].match = nil la.lines[pos.Y+1].match = nil la.lines[pos.Y].rehighlight = true - la.DeleteToEnd(Loc{pos.X, pos.Y}) + la.deleteToEnd(Loc{pos.X, pos.Y}) } // removes from start to end -func (la *LineArray) remove(start, end Loc) string { +func (la *LineArray) remove(start, end Loc) []byte { sub := la.Substr(start, end) startX := runeToByteIndex(start.X, la.lines[start.Y].data) endX := runeToByteIndex(end.X, la.lines[end.Y].data) @@ -201,48 +208,50 @@ func (la *LineArray) remove(start, end Loc) string { la.lines[start.Y].data = append(la.lines[start.Y].data[:startX], la.lines[start.Y].data[endX:]...) } else { for i := start.Y + 1; i <= end.Y-1; i++ { - la.DeleteLine(start.Y + 1) + la.deleteLine(start.Y + 1) } - la.DeleteToEnd(Loc{startX, start.Y}) - la.DeleteFromStart(Loc{endX - 1, start.Y + 1}) - la.JoinLines(start.Y, start.Y+1) + la.deleteToEnd(Loc{startX, start.Y}) + la.deleteFromStart(Loc{endX - 1, start.Y + 1}) + la.joinLines(start.Y, start.Y+1) } return sub } -// DeleteToEnd deletes from the end of a line to the position -func (la *LineArray) DeleteToEnd(pos Loc) { +// deleteToEnd deletes from the end of a line to the position +func (la *LineArray) deleteToEnd(pos Loc) { la.lines[pos.Y].data = la.lines[pos.Y].data[:pos.X] } -// DeleteFromStart deletes from the start of a line to the position -func (la *LineArray) DeleteFromStart(pos Loc) { +// deleteFromStart deletes from the start of a line to the position +func (la *LineArray) deleteFromStart(pos Loc) { la.lines[pos.Y].data = la.lines[pos.Y].data[pos.X+1:] } -// DeleteLine deletes the line number -func (la *LineArray) DeleteLine(y int) { +// deleteLine deletes the line number +func (la *LineArray) deleteLine(y int) { la.lines = la.lines[:y+copy(la.lines[y:], la.lines[y+1:])] } // DeleteByte deletes the byte at a position -func (la *LineArray) DeleteByte(pos Loc) { +func (la *LineArray) deleteByte(pos Loc) { la.lines[pos.Y].data = la.lines[pos.Y].data[:pos.X+copy(la.lines[pos.Y].data[pos.X:], la.lines[pos.Y].data[pos.X+1:])] } // Substr returns the string representation between two locations -func (la *LineArray) Substr(start, end Loc) string { +func (la *LineArray) Substr(start, end Loc) []byte { startX := runeToByteIndex(start.X, la.lines[start.Y].data) endX := runeToByteIndex(end.X, la.lines[end.Y].data) if start.Y == end.Y { - return string(la.lines[start.Y].data[startX:endX]) + return la.lines[start.Y].data[startX:endX] } - var str string - str += string(la.lines[start.Y].data[startX:]) + "\n" + str := make([]byte, 0, len(la.lines[start.Y+1].data)*(end.Y-start.Y)) + str = append(str, la.lines[start.Y].data[startX:]...) + str = append(str, '\n') for i := start.Y + 1; i <= end.Y-1; i++ { - str += string(la.lines[i].data) + "\n" + str = append(str, la.lines[i].data...) + str = append(str, '\n') } - str += string(la.lines[end.Y].data[:endX]) + str = append(str, la.lines[end.Y].data[:endX]...) return str } diff --git a/cmd/micro/line_array_test.go b/cmd/micro/line_array_test.go new file mode 100644 index 00000000..72e370ce --- /dev/null +++ b/cmd/micro/line_array_test.go @@ -0,0 +1,60 @@ +package main + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/assert" +) + +var unicode_txt = `An preost wes on leoden, Laȝamon was ihoten +He wes Leovenaðes sone -- liðe him be Drihten. +He wonede at Ernleȝe at æðelen are chirechen, +Uppen Sevarne staþe, sel þar him þuhte, +Onfest Radestone, þer he bock radde.` + +var la *LineArray + +func init() { + reader := strings.NewReader(unicode_txt) + la = NewLineArray(uint64(len(unicode_txt)), FFAuto, reader) +} + +func TestSplit(t *testing.T) { + la.insert(Loc{17, 1}, []byte{'\n'}) + assert.Equal(t, len(la.lines), 6) + sub1 := la.Substr(Loc{0, 1}, Loc{17, 1}) + sub2 := la.Substr(Loc{0, 2}, Loc{30, 2}) + + assert.Equal(t, []byte("He wes Leovenaðes"), sub1) + assert.Equal(t, []byte(" sone -- liðe him be Drihten."), sub2) +} + +func TestJoin(t *testing.T) { + la.remove(Loc{47, 1}, Loc{0, 2}) + assert.Equal(t, len(la.lines), 5) + sub := la.Substr(Loc{0, 1}, Loc{47, 1}) + bytes := la.Bytes() + + assert.Equal(t, []byte("He wes Leovenaðes sone -- liðe him be Drihten."), sub) + assert.Equal(t, unicode_txt, string(bytes)) +} + +func TestInsert(t *testing.T) { + la.insert(Loc{20, 3}, []byte(" foobar")) + sub1 := la.Substr(Loc{0, 3}, Loc{50, 3}) + + assert.Equal(t, []byte("Uppen Sevarne staþe, foobar sel þar him þuhte,"), sub1) + + la.insert(Loc{25, 2}, []byte("ಮಣ್ಣಾಗಿ")) + sub2 := la.Substr(Loc{0, 2}, Loc{60, 2}) + assert.Equal(t, []byte("He wonede at Ernleȝe at æಮಣ್ಣಾಗಿðelen are chirechen,"), sub2) +} + +func TestRemove(t *testing.T) { + la.remove(Loc{20, 3}, Loc{27, 3}) + la.remove(Loc{25, 2}, Loc{32, 2}) + + bytes := la.Bytes() + assert.Equal(t, unicode_txt, string(bytes)) +} diff --git a/cmd/micro/loc.go b/cmd/micro/loc.go index a3806e54..d7ce8a1a 100644 --- a/cmd/micro/loc.go +++ b/cmd/micro/loc.go @@ -1,59 +1,52 @@ package main -// FromCharPos converts from a character position to an x, y position -func FromCharPos(loc int, buf *Buffer) Loc { - charNum := 0 - x, y := 0, 0 - - lineLen := Count(buf.Line(y)) + 1 - for charNum+lineLen <= loc { - charNum += lineLen - y++ - lineLen = Count(buf.Line(y)) + 1 - } - x = loc - charNum - - return Loc{x, y} -} - -// ToCharPos converts from an x, y position to a character position -func ToCharPos(start Loc, buf *Buffer) int { - x, y := start.X, start.Y - loc := 0 - for i := 0; i < y; i++ { - // + 1 for the newline - loc += Count(buf.Line(i)) + 1 - } - loc += x - return loc -} - -// InBounds returns whether the given location is a valid character position in the given buffer -func InBounds(pos Loc, buf *Buffer) bool { - if pos.Y < 0 || pos.Y >= buf.NumLines || pos.X < 0 || pos.X > Count(buf.Line(pos.Y)) { - return false - } - - return true -} - -// ByteOffset is just like ToCharPos except it counts bytes instead of runes -func ByteOffset(pos Loc, buf *Buffer) int { - x, y := pos.X, pos.Y - loc := 0 - for i := 0; i < y; i++ { - // + 1 for the newline - loc += len(buf.Line(i)) + 1 - } - loc += len(buf.Line(y)[:x]) - return loc -} +import "unicode/utf8" // Loc stores a location type Loc struct { X, Y int } +// LessThan returns true if b is smaller +func (l Loc) LessThan(b Loc) bool { + if l.Y < b.Y { + return true + } + return l.Y == b.Y && l.X < b.X +} + +// GreaterThan returns true if b is bigger +func (l Loc) GreaterThan(b Loc) bool { + if l.Y > b.Y { + return true + } + return l.Y == b.Y && l.X > b.X +} + +// GreaterEqual returns true if b is greater than or equal to b +func (l Loc) GreaterEqual(b Loc) bool { + if l.Y > b.Y { + return true + } + if l.Y == b.Y && l.X > b.X { + return true + } + return l == b +} + +// LessEqual returns true if b is less than or equal to b +func (l Loc) LessEqual(b Loc) bool { + if l.Y < b.Y { + return true + } + if l.Y == b.Y && l.X < b.X { + return true + } + return l == b +} + +// The following functions require a buffer to know where newlines are + // Diff returns the distance between two locations func Diff(a, b Loc, buf *Buffer) int { if a.Y == b.Y { @@ -71,69 +64,19 @@ func Diff(a, b Loc, buf *Buffer) int { loc := 0 for i := a.Y + 1; i < b.Y; i++ { // + 1 for the newline - loc += Count(buf.Line(i)) + 1 + loc += utf8.RuneCount(buf.LineBytes(i)) + 1 } - loc += Count(buf.Line(a.Y)) - a.X + b.X + 1 + loc += utf8.RuneCount(buf.LineBytes(a.Y)) - a.X + b.X + 1 return loc } -// LessThan returns true if b is smaller -func (l Loc) LessThan(b Loc) bool { - if l.Y < b.Y { - return true - } - if l.Y == b.Y && l.X < b.X { - return true - } - return false -} - -// GreaterThan returns true if b is bigger -func (l Loc) GreaterThan(b Loc) bool { - if l.Y > b.Y { - return true - } - if l.Y == b.Y && l.X > b.X { - return true - } - return false -} - -// GreaterEqual returns true if b is greater than or equal to b -func (l Loc) GreaterEqual(b Loc) bool { - if l.Y > b.Y { - return true - } - if l.Y == b.Y && l.X > b.X { - return true - } - if l == b { - return true - } - return false -} - -// LessEqual returns true if b is less than or equal to b -func (l Loc) LessEqual(b Loc) bool { - if l.Y < b.Y { - return true - } - if l.Y == b.Y && l.X < b.X { - return true - } - if l == b { - return true - } - return false -} - // This moves the location one character to the right func (l Loc) right(buf *Buffer) Loc { if l == buf.End() { return Loc{l.X + 1, l.Y} } var res Loc - if l.X < Count(buf.Line(l.Y)) { + if l.X < utf8.RuneCount(buf.LineBytes(l.Y)) { res = Loc{l.X + 1, l.Y} } else { res = Loc{0, l.Y + 1} @@ -150,7 +93,7 @@ func (l Loc) left(buf *Buffer) Loc { if l.X > 0 { res = Loc{l.X - 1, l.Y} } else { - res = Loc{Count(buf.Line(l.Y - 1)), l.Y - 1} + res = Loc{utf8.RuneCount(buf.LineBytes(l.Y - 1)), l.Y - 1} } return res } diff --git a/cmd/micro/lua.go b/cmd/micro/lua.go index d97a1191..0425efa2 100644 --- a/cmd/micro/lua.go +++ b/cmd/micro/lua.go @@ -16,9 +16,8 @@ import ( "strings" "time" - luar "layeh.com/gopher-luar" - lua "github.com/yuin/gopher-lua" + luar "layeh.com/gopher-luar" ) var L *lua.LState diff --git a/cmd/micro/message.go b/cmd/micro/message.go new file mode 100644 index 00000000..1c660fca --- /dev/null +++ b/cmd/micro/message.go @@ -0,0 +1,38 @@ +package main + +import ( + "bufio" + "fmt" + "os" + "strconv" +) + +// TermMessage sends a message to the user in the terminal. This usually occurs before +// micro has been fully initialized -- ie if there is an error in the syntax highlighting +// regular expressions +// The function must be called when the screen is not initialized +// This will write the message, and wait for the user +// to press and key to continue +func TermMessage(msg ...interface{}) { + screenWasNil := screen == nil + if !screenWasNil { + screen.Fini() + screen = nil + } + + fmt.Println(msg...) + fmt.Print("\nPress enter to continue") + + reader := bufio.NewReader(os.Stdin) + reader.ReadString('\n') + + if !screenWasNil { + InitScreen() + } +} + +// TermError sends an error to the user in the terminal. Like TermMessage except formatted +// as an error +func TermError(filename string, lineNum int, err string) { + TermMessage(filename + ", " + strconv.Itoa(lineNum) + ": " + err) +} diff --git a/cmd/micro/messenger.go b/cmd/micro/messenger.go deleted file mode 100644 index b55557af..00000000 --- a/cmd/micro/messenger.go +++ /dev/null @@ -1,669 +0,0 @@ -package main - -import ( - "bufio" - "bytes" - "encoding/gob" - "fmt" - "os" - "strconv" - - "github.com/mattn/go-runewidth" - "github.com/zyedidia/clipboard" - "github.com/zyedidia/micro/cmd/micro/shellwords" - "github.com/zyedidia/tcell" -) - -// TermMessage sends a message to the user in the terminal. This usually occurs before -// micro has been fully initialized -- ie if there is an error in the syntax highlighting -// regular expressions -// The function must be called when the screen is not initialized -// This will write the message, and wait for the user -// to press and key to continue -func TermMessage(msg ...interface{}) { - screenWasNil := screen == nil - if !screenWasNil { - screen.Fini() - screen = nil - } - - fmt.Println(msg...) - fmt.Print("\nPress enter to continue") - - reader := bufio.NewReader(os.Stdin) - reader.ReadString('\n') - - if !screenWasNil { - InitScreen() - } -} - -// TermError sends an error to the user in the terminal. Like TermMessage except formatted -// as an error -func TermError(filename string, lineNum int, err string) { - TermMessage(filename + ", " + strconv.Itoa(lineNum) + ": " + err) -} - -// Messenger is an object that makes it easy to send messages to the user -// and get input from the user -type Messenger struct { - log *Buffer - // Are we currently prompting the user? - hasPrompt bool - // Is there a message to print - hasMessage bool - - // Message to print - message string - // The user's response to a prompt - response string - // style to use when drawing the message - style tcell.Style - - // We have to keep track of the cursor for prompting - cursorx int - - // This map stores the history for all the different kinds of uses Prompt has - // It's a map of history type -> history array - history map[string][]string - historyNum int - - // Is the current message a message from the gutter - gutterMessage bool -} - -// AddLog sends a message to the log view -func (m *Messenger) AddLog(msg ...interface{}) { - logMessage := fmt.Sprint(msg...) - buffer := m.getBuffer() - buffer.insert(buffer.End(), []byte(logMessage+"\n")) - buffer.Cursor.Loc = buffer.End() - buffer.Cursor.Relocate() -} - -func (m *Messenger) getBuffer() *Buffer { - if m.log == nil { - m.log = NewBufferFromString("", "") - m.log.name = "Log" - } - return m.log -} - -// Message sends a message to the user -func (m *Messenger) Message(msg ...interface{}) { - displayMessage := fmt.Sprint(msg...) - // only display a new message if there isn't an active prompt - // this is to prevent overwriting an existing prompt to the user - if m.hasPrompt == false { - // if there is no active prompt then style and display the message as normal - m.message = displayMessage - - m.style = defStyle - - if _, ok := colorscheme["message"]; ok { - m.style = colorscheme["message"] - } - - m.hasMessage = true - } - // add the message to the log regardless of active prompts - m.AddLog(displayMessage) -} - -// Error sends an error message to the user -func (m *Messenger) Error(msg ...interface{}) { - buf := new(bytes.Buffer) - fmt.Fprint(buf, msg...) - - // only display a new message if there isn't an active prompt - // this is to prevent overwriting an existing prompt to the user - if m.hasPrompt == false { - // if there is no active prompt then style and display the message as normal - m.message = buf.String() - m.style = defStyle. - Foreground(tcell.ColorBlack). - Background(tcell.ColorMaroon) - - if _, ok := colorscheme["error-message"]; ok { - m.style = colorscheme["error-message"] - } - m.hasMessage = true - } - // add the message to the log regardless of active prompts - m.AddLog(buf.String()) -} - -func (m *Messenger) PromptText(msg ...interface{}) { - displayMessage := fmt.Sprint(msg...) - // if there is no active prompt then style and display the message as normal - m.message = displayMessage - - m.style = defStyle - - if _, ok := colorscheme["message"]; ok { - m.style = colorscheme["message"] - } - - m.hasMessage = true - // add the message to the log regardless of active prompts - m.AddLog(displayMessage) -} - -// YesNoPrompt asks the user a yes or no question (waits for y or n) and returns the result -func (m *Messenger) YesNoPrompt(prompt string) (bool, bool) { - m.hasPrompt = true - m.PromptText(prompt) - - _, h := screen.Size() - for { - m.Clear() - m.Display() - screen.ShowCursor(Count(m.message), h-1) - screen.Show() - event := <-events - - switch e := event.(type) { - case *tcell.EventKey: - switch e.Key() { - case tcell.KeyRune: - if e.Rune() == 'y' || e.Rune() == 'Y' { - m.AddLog("\t--> y") - m.hasPrompt = false - return true, false - } else if e.Rune() == 'n' || e.Rune() == 'N' { - m.AddLog("\t--> n") - m.hasPrompt = false - return false, false - } - case tcell.KeyCtrlC, tcell.KeyCtrlQ, tcell.KeyEscape: - m.AddLog("\t--> (cancel)") - m.Clear() - m.Reset() - m.hasPrompt = false - return false, true - } - } - } -} - -// LetterPrompt gives the user a prompt and waits for a one letter response -func (m *Messenger) LetterPrompt(prompt string, responses ...rune) (rune, bool) { - m.hasPrompt = true - m.PromptText(prompt) - - _, h := screen.Size() - for { - m.Clear() - m.Display() - screen.ShowCursor(Count(m.message), h-1) - screen.Show() - event := <-events - - switch e := event.(type) { - case *tcell.EventKey: - switch e.Key() { - case tcell.KeyRune: - for _, r := range responses { - if e.Rune() == r { - m.AddLog("\t--> " + string(r)) - m.Clear() - m.Reset() - m.hasPrompt = false - return r, false - } - } - case tcell.KeyCtrlC, tcell.KeyCtrlQ, tcell.KeyEscape: - m.AddLog("\t--> (cancel)") - m.Clear() - m.Reset() - m.hasPrompt = false - return ' ', true - } - } - } -} - -// Completion represents a type of completion -type Completion int - -const ( - NoCompletion Completion = iota - FileCompletion - CommandCompletion - HelpCompletion - OptionCompletion - PluginCmdCompletion - PluginNameCompletion - OptionValueCompletion -) - -// Prompt sends the user a message and waits for a response to be typed in -// This function blocks the main loop while waiting for input -func (m *Messenger) Prompt(prompt, placeholder, historyType string, completionTypes ...Completion) (string, bool) { - m.hasPrompt = true - m.PromptText(prompt) - if _, ok := m.history[historyType]; !ok { - m.history[historyType] = []string{""} - } else { - m.history[historyType] = append(m.history[historyType], "") - } - m.historyNum = len(m.history[historyType]) - 1 - - response, canceled := placeholder, true - m.response = response - m.cursorx = Count(placeholder) - - RedrawAll() - for m.hasPrompt { - var suggestions []string - m.Clear() - - event := <-events - - switch e := event.(type) { - case *tcell.EventResize: - for _, t := range tabs { - t.Resize() - } - RedrawAll() - case *tcell.EventKey: - switch e.Key() { - case tcell.KeyCtrlQ, tcell.KeyCtrlC, tcell.KeyEscape: - // Cancel - m.AddLog("\t--> (cancel)") - m.hasPrompt = false - case tcell.KeyEnter: - // User is done entering their response - m.AddLog("\t--> " + m.response) - m.hasPrompt = false - response, canceled = m.response, false - m.history[historyType][len(m.history[historyType])-1] = response - case tcell.KeyTab: - args, err := shellwords.Split(m.response) - if err != nil { - break - } - currentArg := "" - currentArgNum := 0 - if len(args) > 0 { - currentArgNum = len(args) - 1 - currentArg = args[currentArgNum] - } - var completionType Completion - - if completionTypes[0] == CommandCompletion && currentArgNum > 0 { - if command, ok := commands[args[0]]; ok { - completionTypes = append([]Completion{CommandCompletion}, command.completions...) - } - } - - if currentArgNum >= len(completionTypes) { - completionType = completionTypes[len(completionTypes)-1] - } else { - completionType = completionTypes[currentArgNum] - } - - var chosen string - if completionType == FileCompletion { - chosen, suggestions = FileComplete(currentArg) - } else if completionType == CommandCompletion { - chosen, suggestions = CommandComplete(currentArg) - } else if completionType == HelpCompletion { - chosen, suggestions = HelpComplete(currentArg) - } else if completionType == OptionCompletion { - chosen, suggestions = OptionComplete(currentArg) - } else if completionType == OptionValueCompletion { - if currentArgNum-1 > 0 { - chosen, suggestions = OptionValueComplete(args[currentArgNum-1], currentArg) - } - } else if completionType == PluginCmdCompletion { - chosen, suggestions = PluginCmdComplete(currentArg) - } else if completionType == PluginNameCompletion { - chosen, suggestions = PluginNameComplete(currentArg) - } else if completionType < NoCompletion { - chosen, suggestions = PluginComplete(completionType, currentArg) - } - - if len(suggestions) > 1 { - chosen = chosen + CommonSubstring(suggestions...) - } - - if len(suggestions) != 0 && chosen != "" { - m.response = shellwords.Join(append(args[:len(args)-1], chosen)...) - m.cursorx = Count(m.response) - } - } - } - - m.HandleEvent(event, m.history[historyType]) - - m.Clear() - for _, v := range tabs[curTab].Views { - v.Display() - } - DisplayTabs() - m.Display() - if len(suggestions) > 1 { - m.DisplaySuggestions(suggestions) - } - screen.Show() - } - - m.Clear() - m.Reset() - return response, canceled -} - -// UpHistory fetches the previous item in the history -func (m *Messenger) UpHistory(history []string) { - if m.historyNum > 0 { - m.historyNum-- - m.response = history[m.historyNum] - m.cursorx = Count(m.response) - } -} - -// DownHistory fetches the next item in the history -func (m *Messenger) DownHistory(history []string) { - if m.historyNum < len(history)-1 { - m.historyNum++ - m.response = history[m.historyNum] - m.cursorx = Count(m.response) - } -} - -// CursorLeft moves the cursor one character left -func (m *Messenger) CursorLeft() { - if m.cursorx > 0 { - m.cursorx-- - } -} - -// CursorRight moves the cursor one character right -func (m *Messenger) CursorRight() { - if m.cursorx < Count(m.response) { - m.cursorx++ - } -} - -// Start moves the cursor to the start of the line -func (m *Messenger) Start() { - m.cursorx = 0 -} - -// End moves the cursor to the end of the line -func (m *Messenger) End() { - m.cursorx = Count(m.response) -} - -// Backspace deletes one character -func (m *Messenger) Backspace() { - if m.cursorx > 0 { - m.response = string([]rune(m.response)[:m.cursorx-1]) + string([]rune(m.response)[m.cursorx:]) - m.cursorx-- - } -} - -// Paste pastes the clipboard -func (m *Messenger) Paste() { - clip, _ := clipboard.ReadAll("clipboard") - m.response = Insert(m.response, m.cursorx, clip) - m.cursorx += Count(clip) -} - -// WordLeft moves the cursor one word to the left -func (m *Messenger) WordLeft() { - response := []rune(m.response) - m.CursorLeft() - if m.cursorx <= 0 { - return - } - for IsWhitespace(response[m.cursorx]) { - if m.cursorx <= 0 { - return - } - m.CursorLeft() - } - m.CursorLeft() - for IsWordChar(string(response[m.cursorx])) { - if m.cursorx <= 0 { - return - } - m.CursorLeft() - } - m.CursorRight() -} - -// WordRight moves the cursor one word to the right -func (m *Messenger) WordRight() { - response := []rune(m.response) - if m.cursorx >= len(response) { - return - } - for IsWhitespace(response[m.cursorx]) { - m.CursorRight() - if m.cursorx >= len(response) { - m.CursorRight() - return - } - } - m.CursorRight() - if m.cursorx >= len(response) { - return - } - for IsWordChar(string(response[m.cursorx])) { - m.CursorRight() - if m.cursorx >= len(response) { - return - } - } -} - -// DeleteWordLeft deletes one word to the left -func (m *Messenger) DeleteWordLeft() { - m.WordLeft() - m.response = string([]rune(m.response)[:m.cursorx]) -} - -// HandleEvent handles an event for the prompter -func (m *Messenger) HandleEvent(event tcell.Event, history []string) { - switch e := event.(type) { - case *tcell.EventKey: - switch e.Key() { - case tcell.KeyCtrlA: - m.Start() - case tcell.KeyCtrlE: - m.End() - case tcell.KeyUp: - m.UpHistory(history) - case tcell.KeyDown: - m.DownHistory(history) - case tcell.KeyLeft: - if e.Modifiers() == tcell.ModCtrl { - m.Start() - } else if e.Modifiers() == tcell.ModAlt || e.Modifiers() == tcell.ModMeta { - m.WordLeft() - } else { - m.CursorLeft() - } - case tcell.KeyRight: - if e.Modifiers() == tcell.ModCtrl { - m.End() - } else if e.Modifiers() == tcell.ModAlt || e.Modifiers() == tcell.ModMeta { - m.WordRight() - } else { - m.CursorRight() - } - case tcell.KeyBackspace2, tcell.KeyBackspace: - if e.Modifiers() == tcell.ModCtrl || e.Modifiers() == tcell.ModAlt || e.Modifiers() == tcell.ModMeta { - m.DeleteWordLeft() - } else { - m.Backspace() - } - case tcell.KeyCtrlW: - m.DeleteWordLeft() - case tcell.KeyCtrlV: - m.Paste() - case tcell.KeyCtrlF: - m.WordRight() - case tcell.KeyCtrlB: - m.WordLeft() - case tcell.KeyRune: - m.response = Insert(m.response, m.cursorx, string(e.Rune())) - m.cursorx++ - } - history[m.historyNum] = m.response - - case *tcell.EventPaste: - clip := e.Text() - m.response = Insert(m.response, m.cursorx, clip) - m.cursorx += Count(clip) - case *tcell.EventMouse: - x, y := e.Position() - x -= Count(m.message) - button := e.Buttons() - _, screenH := screen.Size() - - if y == screenH-1 { - switch button { - case tcell.Button1: - m.cursorx = x - if m.cursorx < 0 { - m.cursorx = 0 - } else if m.cursorx > Count(m.response) { - m.cursorx = Count(m.response) - } - } - } - } -} - -// Reset resets the messenger's cursor, message and response -func (m *Messenger) Reset() { - m.cursorx = 0 - m.message = "" - m.response = "" -} - -// Clear clears the line at the bottom of the editor -func (m *Messenger) Clear() { - w, h := screen.Size() - for x := 0; x < w; x++ { - screen.SetContent(x, h-1, ' ', nil, defStyle) - } -} - -func (m *Messenger) DisplaySuggestions(suggestions []string) { - w, screenH := screen.Size() - - y := screenH - 2 - - statusLineStyle := defStyle.Reverse(true) - if style, ok := colorscheme["statusline"]; ok { - statusLineStyle = style - } - - for x := 0; x < w; x++ { - screen.SetContent(x, y, ' ', nil, statusLineStyle) - } - - x := 0 - for _, suggestion := range suggestions { - for _, c := range suggestion { - screen.SetContent(x, y, c, nil, statusLineStyle) - x++ - } - screen.SetContent(x, y, ' ', nil, statusLineStyle) - x++ - } -} - -// Display displays messages or prompts -func (m *Messenger) Display() { - _, h := screen.Size() - if m.hasMessage { - if m.hasPrompt || globalSettings["infobar"].(bool) { - runes := []rune(m.message + m.response) - posx := 0 - for x := 0; x < len(runes); x++ { - screen.SetContent(posx, h-1, runes[x], nil, m.style) - posx += runewidth.RuneWidth(runes[x]) - } - } - } - - if m.hasPrompt { - screen.ShowCursor(Count(m.message)+m.cursorx, h-1) - screen.Show() - } -} - -// LoadHistory attempts to load user history from configDir/buffers/history -// into the history map -// The savehistory option must be on -func (m *Messenger) LoadHistory() { - if GetGlobalOption("savehistory").(bool) { - file, err := os.Open(configDir + "/buffers/history") - defer file.Close() - var decodedMap map[string][]string - if err == nil { - decoder := gob.NewDecoder(file) - err = decoder.Decode(&decodedMap) - - if err != nil { - m.Error("Error loading history:", err) - return - } - } - - if decodedMap != nil { - m.history = decodedMap - } else { - m.history = make(map[string][]string) - } - } else { - m.history = make(map[string][]string) - } -} - -// SaveHistory saves the user's command history to configDir/buffers/history -// only if the savehistory option is on -func (m *Messenger) SaveHistory() { - if GetGlobalOption("savehistory").(bool) { - // Don't save history past 100 - for k, v := range m.history { - if len(v) > 100 { - m.history[k] = v[len(m.history[k])-100:] - } - } - - file, err := os.Create(configDir + "/buffers/history") - defer file.Close() - if err == nil { - encoder := gob.NewEncoder(file) - - err = encoder.Encode(m.history) - if err != nil { - m.Error("Error saving history:", err) - return - } - } - } -} - -// A GutterMessage is a message displayed on the side of the editor -type GutterMessage struct { - lineNum int - msg string - kind int -} - -// These are the different types of messages -const ( - // GutterInfo represents a simple info message - GutterInfo = iota - // GutterWarning represents a compiler warning - GutterWarning - // GutterError represents a compiler error - GutterError -) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index e1787c77..bd01dda1 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -3,22 +3,13 @@ package main import ( "flag" "fmt" - "io/ioutil" "os" - "path/filepath" - "runtime" - "strings" "time" "github.com/go-errors/errors" - "github.com/mattn/go-isatty" - "github.com/mitchellh/go-homedir" - "github.com/yuin/gopher-lua" - "github.com/zyedidia/clipboard" + homedir "github.com/mitchellh/go-homedir" "github.com/zyedidia/micro/cmd/micro/terminfo" "github.com/zyedidia/tcell" - "github.com/zyedidia/tcell/encoding" - "layeh.com/gopher-luar" ) const ( @@ -31,13 +22,6 @@ var ( // The main screen screen tcell.Screen - // Object to send messages and prompts to the user - messenger *Messenger - - // The default highlighting style - // This simply defines the default foreground and background colors - defStyle tcell.Style - // Where the user's configuration is // This should be $XDG_CONFIG_HOME/micro // If $XDG_CONFIG_HOME is not set, it is ~/.config/micro @@ -50,88 +34,23 @@ var ( CommitHash = "Unknown" // CompileDate is the date this binary was compiled on CompileDate = "Unknown" - - // The list of views - tabs []*Tab - // This is the currently open tab - // It's just an index to the tab in the tabs array - curTab int - - // Channel of jobs running in the background - jobs chan JobFunction + // Debug logging + Debug = "ON" // Event channel events chan tcell.Event autosave chan bool - // Channels for the terminal emulator - updateterm chan bool - closeterm chan int - // How many redraws have happened numRedraw uint + + // Command line flags + flagVersion = flag.Bool("version", false, "Show the version number and information") + flagStartPos = flag.String("startpos", "", "LINE,COL to start the cursor at when opening a buffer.") + flagConfigDir = flag.String("config-dir", "", "Specify a custom location for the configuration directory") + flagOptions = flag.Bool("options", false, "Show all option help") ) -// LoadInput determines which files should be loaded into buffers -// based on the input stored in flag.Args() -func LoadInput() []*Buffer { - // There are a number of ways micro should start given its input - - // 1. If it is given a files in flag.Args(), it should open those - - // 2. If there is no input file and the input is not a terminal, that means - // something is being piped in and the stdin should be opened in an - // empty buffer - - // 3. If there is no input file and the input is a terminal, an empty buffer - // should be opened - - var filename string - var input []byte - var err error - args := flag.Args() - buffers := make([]*Buffer, 0, len(args)) - - if len(args) > 0 { - // Option 1 - // We go through each file and load it - for i := 0; i < len(args); i++ { - if strings.HasPrefix(args[i], "+") { - if strings.Contains(args[i], ":") { - split := strings.Split(args[i], ":") - *flagStartPos = split[0][1:] + "," + split[1] - } else { - *flagStartPos = args[i][1:] + ",0" - } - continue - } - - buf, err := NewBufferFromFile(args[i]) - if err != nil { - TermMessage(err) - continue - } - // If the file didn't exist, input will be empty, and we'll open an empty buffer - buffers = append(buffers, buf) - } - } else if !isatty.IsTerminal(os.Stdin.Fd()) { - // Option 2 - // The input is not a terminal, so something is being piped in - // and we should read from stdin - input, err = ioutil.ReadAll(os.Stdin) - if err != nil { - TermMessage("Error reading from stdin: ", err) - input = []byte{} - } - buffers = append(buffers, NewBufferFromString(string(input), filename)) - } else { - // Option 3, just open an empty buffer - buffers = append(buffers, NewBufferFromString(string(input), filename)) - } - - return buffers -} - // InitConfigDir finds the configuration directory for micro according to the XDG spec. // If no directory is found, it creates one. func InitConfigDir() { @@ -230,63 +149,7 @@ func InitScreen() { // screen.SetStyle(defStyle) } -// RedrawAll redraws everything -- all the views and the messenger -func RedrawAll() { - messenger.Clear() - - w, h := screen.Size() - for x := 0; x < w; x++ { - for y := 0; y < h; y++ { - screen.SetContent(x, y, ' ', nil, defStyle) - } - } - - for _, v := range tabs[curTab].Views { - v.Display() - } - DisplayTabs() - messenger.Display() - if globalSettings["keymenu"].(bool) { - DisplayKeyMenu() - } - screen.Show() - - if numRedraw%50 == 0 { - runtime.GC() - } - numRedraw++ -} - -func LoadAll() { - // Find the user's configuration directory (probably $XDG_CONFIG_HOME/micro) - InitConfigDir() - - // Build a list of available Extensions (Syntax, Colorscheme etc.) - InitRuntimeFiles() - - // Load the user's settings - InitGlobalSettings() - - InitCommands() - InitBindings() - - InitColorscheme() - LoadPlugins() - - for _, tab := range tabs { - for _, v := range tab.Views { - v.Buf.UpdateRules() - } - } -} - -// Command line flags -var flagVersion = flag.Bool("version", false, "Show the version number and information") -var flagStartPos = flag.String("startpos", "", "LINE,COL to start the cursor at when opening a buffer.") -var flagConfigDir = flag.String("config-dir", "", "Specify a custom location for the configuration directory") -var flagOptions = flag.Bool("options", false, "Show all option help") - -func main() { +func InitFlags() { flag.Usage = func() { fmt.Println("Usage: micro [OPTIONS] [FILE]...") fmt.Println("-config-dir dir") @@ -327,35 +190,32 @@ func main() { // If -options was passed for k, v := range DefaultGlobalSettings() { fmt.Printf("-%s value\n", k) - fmt.Printf(" \tThe %s option. Default value: '%v'\n", k, v) + fmt.Printf(" \tDefault value: '%v'\n", v) } os.Exit(0) } +} - // Start the Lua VM for running plugins - L = lua.NewState() - defer L.Close() +func main() { + var err error - // Some encoding stuff in case the user isn't using UTF-8 - encoding.Register() - tcell.SetEncodingFallback(tcell.EncodingFallbackASCII) - - // Find the user's configuration directory (probably $XDG_CONFIG_HOME/micro) + InitLog() + InitFlags() InitConfigDir() - - // Build a list of available Extensions (Syntax, Colorscheme etc.) InitRuntimeFiles() - - // Load the user's settings + err = ReadSettings() + if err != nil { + TermMessage(err) + } InitGlobalSettings() + err = InitColorscheme() + if err != nil { + TermMessage(err) + } - InitCommands() - InitBindings() - - // Start the screen InitScreen() - // This is just so if we have an error, we can exit cleanly and not completely + // If we have an error, we can exit cleanly and not completely // mess up the terminal being worked in // In other words we need to shut down tcell before the program crashes defer func() { @@ -368,227 +228,26 @@ func main() { } }() - // Create a new messenger - // This is used for sending the user messages in the bottom of the editor - messenger = new(Messenger) - messenger.LoadHistory() + b, err := NewBufferFromFile(os.Args[1]) - // Now we load the input - buffers := LoadInput() - if len(buffers) == 0 { - screen.Fini() - os.Exit(1) + if err != nil { + TermMessage(err) } - for _, buf := range buffers { - // For each buffer we create a new tab and place the view in that tab - tab := NewTabFromView(NewView(buf)) - tab.SetNum(len(tabs)) - tabs = append(tabs, tab) - for _, t := range tabs { - for _, v := range t.Views { - v.Center(false) - } + width, height := screen.Size() - t.Resize() - } + w := NewWindow(0, 0, width/2, height/2, b) + + for i := 0; i < 5; i++ { + screen.Clear() + w.DisplayBuffer() + w.DisplayStatusLine() + screen.Show() + time.Sleep(200 * time.Millisecond) + w.StartLine++ } - for k, v := range optionFlags { - if *v != "" { - SetOption(k, *v) - } - } + // time.Sleep(2 * time.Second) - // Load all the plugin stuff - // We give plugins access to a bunch of variables here which could be useful to them - L.SetGlobal("OS", luar.New(L, runtime.GOOS)) - L.SetGlobal("tabs", luar.New(L, tabs)) - L.SetGlobal("GetTabs", luar.New(L, func() []*Tab { - return tabs - })) - L.SetGlobal("curTab", luar.New(L, curTab)) - L.SetGlobal("messenger", luar.New(L, messenger)) - L.SetGlobal("GetOption", luar.New(L, GetOption)) - L.SetGlobal("AddOption", luar.New(L, AddOption)) - L.SetGlobal("SetOption", luar.New(L, SetOption)) - L.SetGlobal("SetLocalOption", luar.New(L, SetLocalOption)) - L.SetGlobal("BindKey", luar.New(L, BindKey)) - L.SetGlobal("MakeCommand", luar.New(L, MakeCommand)) - L.SetGlobal("CurView", luar.New(L, CurView)) - L.SetGlobal("IsWordChar", luar.New(L, IsWordChar)) - L.SetGlobal("HandleCommand", luar.New(L, HandleCommand)) - L.SetGlobal("HandleShellCommand", luar.New(L, HandleShellCommand)) - L.SetGlobal("ExecCommand", luar.New(L, ExecCommand)) - L.SetGlobal("RunShellCommand", luar.New(L, RunShellCommand)) - L.SetGlobal("RunBackgroundShell", luar.New(L, RunBackgroundShell)) - L.SetGlobal("RunInteractiveShell", luar.New(L, RunInteractiveShell)) - L.SetGlobal("TermEmuSupported", luar.New(L, TermEmuSupported)) - L.SetGlobal("RunTermEmulator", luar.New(L, RunTermEmulator)) - L.SetGlobal("GetLeadingWhitespace", luar.New(L, GetLeadingWhitespace)) - L.SetGlobal("MakeCompletion", luar.New(L, MakeCompletion)) - L.SetGlobal("NewBuffer", luar.New(L, NewBufferFromString)) - L.SetGlobal("NewBufferFromFile", luar.New(L, NewBufferFromFile)) - L.SetGlobal("RuneStr", luar.New(L, func(r rune) string { - return string(r) - })) - L.SetGlobal("Loc", luar.New(L, func(x, y int) Loc { - return Loc{x, y} - })) - L.SetGlobal("WorkingDirectory", luar.New(L, os.Getwd)) - L.SetGlobal("JoinPaths", luar.New(L, filepath.Join)) - L.SetGlobal("DirectoryName", luar.New(L, filepath.Dir)) - L.SetGlobal("configDir", luar.New(L, configDir)) - L.SetGlobal("Reload", luar.New(L, LoadAll)) - L.SetGlobal("ByteOffset", luar.New(L, ByteOffset)) - L.SetGlobal("ToCharPos", luar.New(L, ToCharPos)) - - // Used for asynchronous jobs - L.SetGlobal("JobStart", luar.New(L, JobStart)) - L.SetGlobal("JobSpawn", luar.New(L, JobSpawn)) - L.SetGlobal("JobSend", luar.New(L, JobSend)) - L.SetGlobal("JobStop", luar.New(L, JobStop)) - - // Extension Files - L.SetGlobal("ReadRuntimeFile", luar.New(L, PluginReadRuntimeFile)) - L.SetGlobal("ListRuntimeFiles", luar.New(L, PluginListRuntimeFiles)) - L.SetGlobal("AddRuntimeFile", luar.New(L, PluginAddRuntimeFile)) - L.SetGlobal("AddRuntimeFilesFromDirectory", luar.New(L, PluginAddRuntimeFilesFromDirectory)) - L.SetGlobal("AddRuntimeFileFromMemory", luar.New(L, PluginAddRuntimeFileFromMemory)) - - // Access to Go stdlib - L.SetGlobal("import", luar.New(L, Import)) - - jobs = make(chan JobFunction, 100) - events = make(chan tcell.Event, 100) - autosave = make(chan bool) - updateterm = make(chan bool) - closeterm = make(chan int) - - LoadPlugins() - - for _, t := range tabs { - for _, v := range t.Views { - GlobalPluginCall("onViewOpen", v) - GlobalPluginCall("onBufferOpen", v.Buf) - } - } - - InitColorscheme() - messenger.style = defStyle - - // Here is the event loop which runs in a separate thread - go func() { - for { - if screen != nil { - events <- screen.PollEvent() - } - } - }() - - go func() { - for { - time.Sleep(autosaveTime * time.Second) - if globalSettings["autosave"].(bool) { - autosave <- true - } - } - }() - - for { - // Display everything - RedrawAll() - - var event tcell.Event - - // Check for new events - select { - case f := <-jobs: - // If a new job has finished while running in the background we should execute the callback - f.function(f.output, f.args...) - continue - case <-autosave: - if CurView().Buf.Path != "" { - CurView().Save(true) - } - case <-updateterm: - continue - case vnum := <-closeterm: - tabs[curTab].Views[vnum].CloseTerminal() - case event = <-events: - } - - for event != nil { - didAction := false - - switch e := event.(type) { - case *tcell.EventResize: - for _, t := range tabs { - t.Resize() - } - case *tcell.EventMouse: - if !searching { - if e.Buttons() == tcell.Button1 { - // If the user left clicked we check a couple things - _, h := screen.Size() - x, y := e.Position() - if y == h-1 && messenger.message != "" && globalSettings["infobar"].(bool) { - // If the user clicked in the bottom bar, and there is a message down there - // we copy it to the clipboard. - // Often error messages are displayed down there so it can be useful to easily - // copy the message - clipboard.WriteAll(messenger.message, "primary") - break - } - - if CurView().mouseReleased { - // We loop through each view in the current tab and make sure the current view - // is the one being clicked in - for _, v := range tabs[curTab].Views { - if x >= v.x && x < v.x+v.Width && y >= v.y && y < v.y+v.Height { - tabs[curTab].CurView = v.Num - } - } - } - } else if e.Buttons() == tcell.WheelUp || e.Buttons() == tcell.WheelDown { - var view *View - x, y := e.Position() - for _, v := range tabs[curTab].Views { - if x >= v.x && x < v.x+v.Width && y >= v.y && y < v.y+v.Height { - view = tabs[curTab].Views[v.Num] - } - } - if view != nil { - view.HandleEvent(e) - didAction = true - } - } - } - } - - if !didAction { - // This function checks the mouse event for the possibility of changing the current tab - // If the tab was changed it returns true - if TabbarHandleMouseEvent(event) { - break - } - - if searching { - // Since searching is done in real time, we need to redraw every time - // there is a new event in the search bar so we need a special function - // to run instead of the standard HandleEvent. - HandleSearchEvent(event, CurView()) - } else { - // Send it to the view - CurView().HandleEvent(event) - } - } - - select { - case event = <-events: - default: - event = nil - } - } - } + screen.Fini() } diff --git a/cmd/micro/plugin.go b/cmd/micro/plugin.go deleted file mode 100644 index b3350780..00000000 --- a/cmd/micro/plugin.go +++ /dev/null @@ -1,184 +0,0 @@ -package main - -import ( - "errors" - "io/ioutil" - "os" - "strings" - - "github.com/yuin/gopher-lua" - "github.com/zyedidia/tcell" - "layeh.com/gopher-luar" -) - -var loadedPlugins map[string]string - -// Call calls the lua function 'function' -// If it does not exist nothing happens, if there is an error, -// the error is returned -func Call(function string, args ...interface{}) (lua.LValue, error) { - var luaFunc lua.LValue - if strings.Contains(function, ".") { - plugin := L.GetGlobal(strings.Split(function, ".")[0]) - if plugin.String() == "nil" { - return nil, errors.New("function does not exist: " + function) - } - luaFunc = L.GetField(plugin, strings.Split(function, ".")[1]) - } else { - luaFunc = L.GetGlobal(function) - } - - if luaFunc.String() == "nil" { - return nil, errors.New("function does not exist: " + function) - } - var luaArgs []lua.LValue - for _, v := range args { - luaArgs = append(luaArgs, luar.New(L, v)) - } - err := L.CallByParam(lua.P{ - Fn: luaFunc, - NRet: 1, - Protect: true, - }, luaArgs...) - ret := L.Get(-1) // returned value - if ret.String() != "nil" { - L.Pop(1) // remove received value - } - return ret, err -} - -// LuaFunctionBinding is a function generator which takes the name of a lua function -// and creates a function that will call that lua function -// Specifically it creates a function that can be called as a binding because this is used -// to bind keys to lua functions -func LuaFunctionBinding(function string) func(*View, bool) bool { - return func(v *View, _ bool) bool { - _, err := Call(function, nil) - if err != nil { - TermMessage(err) - } - return false - } -} - -// LuaFunctionMouseBinding is a function generator which takes the name of a lua function -// and creates a function that will call that lua function -// Specifically it creates a function that can be called as a mouse binding because this is used -// to bind mouse actions to lua functions -func LuaFunctionMouseBinding(function string) func(*View, bool, *tcell.EventMouse) bool { - return func(v *View, _ bool, e *tcell.EventMouse) bool { - _, err := Call(function, e) - if err != nil { - TermMessage(err) - } - return false - } -} - -func unpack(old []string) []interface{} { - new := make([]interface{}, len(old)) - for i, v := range old { - new[i] = v - } - return new -} - -// LuaFunctionCommand is the same as LuaFunctionBinding except it returns a normal function -// so that a command can be bound to a lua function -func LuaFunctionCommand(function string) func([]string) { - return func(args []string) { - _, err := Call(function, unpack(args)...) - if err != nil { - TermMessage(err) - } - } -} - -// LuaFunctionComplete returns a function which can be used for autocomplete in plugins -func LuaFunctionComplete(function string) func(string) []string { - return func(input string) (result []string) { - - res, err := Call(function, input) - if err != nil { - TermMessage(err) - } - if tbl, ok := res.(*lua.LTable); !ok { - TermMessage(function, "should return a table of strings") - } else { - for i := 1; i <= tbl.Len(); i++ { - val := tbl.RawGetInt(i) - if v, ok := val.(lua.LString); !ok { - TermMessage(function, "should return a table of strings") - } else { - result = append(result, string(v)) - } - } - } - return result - } -} - -// LuaFunctionJob returns a function that will call the given lua function -// structured as a job call i.e. the job output and arguments are provided -// to the lua function -func LuaFunctionJob(function string) func(string, ...string) { - return func(output string, args ...string) { - _, err := Call(function, unpack(append([]string{output}, args...))...) - if err != nil && !strings.HasPrefix(err.Error(), "function does not exist") { - TermMessage(err) - } - } -} - -// luaPluginName convert a human-friendly plugin name into a valid lua variable name. -func luaPluginName(name string) string { - return strings.Replace(name, "-", "_", -1) -} - -// LoadPlugins loads the pre-installed plugins and the plugins located in ~/.config/micro/plugins -func LoadPlugins() { - loadedPlugins = make(map[string]string) - - for _, plugin := range ListRuntimeFiles(RTPlugin) { - pluginName := plugin.Name() - if _, ok := loadedPlugins[pluginName]; ok { - continue - } - - data, err := plugin.Data() - if err != nil { - TermMessage("Error loading plugin: " + pluginName) - continue - } - - pluginLuaName := luaPluginName(pluginName) - - if err := LoadFile(pluginLuaName, pluginLuaName, string(data)); err != nil { - TermMessage(err) - continue - } - - loadedPlugins[pluginName] = pluginLuaName - - } - - if _, err := os.Stat(configDir + "/init.lua"); err == nil { - data, _ := ioutil.ReadFile(configDir + "/init.lua") - if err := LoadFile("init", configDir+"init.lua", string(data)); err != nil { - TermMessage(err) - } - loadedPlugins["init"] = "init" - } -} - -// GlobalCall makes a call to a function in every plugin that is currently -// loaded -func GlobalPluginCall(function string, args ...interface{}) { - for pl := range loadedPlugins { - _, err := Call(pl+"."+function, args...) - if err != nil && !strings.HasPrefix(err.Error(), "function does not exist") { - TermMessage(err) - continue - } - } -} diff --git a/cmd/micro/pluginmanager.go b/cmd/micro/pluginmanager.go deleted file mode 100644 index ad7843e6..00000000 --- a/cmd/micro/pluginmanager.go +++ /dev/null @@ -1,622 +0,0 @@ -package main - -import ( - "archive/zip" - "bytes" - "fmt" - "io" - "io/ioutil" - "net/http" - "os" - "path/filepath" - "sort" - "strings" - "sync" - - "github.com/blang/semver" - "github.com/flynn/json5" - "github.com/yuin/gopher-lua" -) - -var ( - allPluginPackages PluginPackages -) - -// CorePluginName is a plugin dependency name for the micro core. -const CorePluginName = "micro" - -// PluginChannel contains an url to a json list of PluginRepository -type PluginChannel string - -// PluginChannels is a slice of PluginChannel -type PluginChannels []PluginChannel - -// PluginRepository contains an url to json file containing PluginPackages -type PluginRepository string - -// PluginPackage contains the meta-data of a plugin and all available versions -type PluginPackage struct { - Name string - Description string - Author string - Tags []string - Versions PluginVersions -} - -// PluginPackages is a list of PluginPackage instances. -type PluginPackages []*PluginPackage - -// PluginVersion descripes a version of a PluginPackage. Containing a version, download url and also dependencies. -type PluginVersion struct { - pack *PluginPackage - Version semver.Version - Url string - Require PluginDependencies -} - -// PluginVersions is a slice of PluginVersion -type PluginVersions []*PluginVersion - -// PluginDependency descripes a dependency to another plugin or micro itself. -type PluginDependency struct { - Name string - Range semver.Range -} - -// PluginDependencies is a slice of PluginDependency -type PluginDependencies []*PluginDependency - -func (pp *PluginPackage) String() string { - buf := new(bytes.Buffer) - buf.WriteString("Plugin: ") - buf.WriteString(pp.Name) - buf.WriteRune('\n') - if pp.Author != "" { - buf.WriteString("Author: ") - buf.WriteString(pp.Author) - buf.WriteRune('\n') - } - if pp.Description != "" { - buf.WriteRune('\n') - buf.WriteString(pp.Description) - } - return buf.String() -} - -func fetchAllSources(count int, fetcher func(i int) PluginPackages) PluginPackages { - wgQuery := new(sync.WaitGroup) - wgQuery.Add(count) - - results := make(chan PluginPackages) - - wgDone := new(sync.WaitGroup) - wgDone.Add(1) - var packages PluginPackages - for i := 0; i < count; i++ { - go func(i int) { - results <- fetcher(i) - wgQuery.Done() - }(i) - } - go func() { - packages = make(PluginPackages, 0) - for res := range results { - packages = append(packages, res...) - } - wgDone.Done() - }() - wgQuery.Wait() - close(results) - wgDone.Wait() - return packages -} - -// Fetch retrieves all available PluginPackages from the given channels -func (pc PluginChannels) Fetch() PluginPackages { - return fetchAllSources(len(pc), func(i int) PluginPackages { - return pc[i].Fetch() - }) -} - -// Fetch retrieves all available PluginPackages from the given channel -func (pc PluginChannel) Fetch() PluginPackages { - // messenger.AddLog(fmt.Sprintf("Fetching channel: %q", string(pc))) - resp, err := http.Get(string(pc)) - if err != nil { - TermMessage("Failed to query plugin channel:\n", err) - return PluginPackages{} - } - defer resp.Body.Close() - decoder := json5.NewDecoder(resp.Body) - - var repositories []PluginRepository - if err := decoder.Decode(&repositories); err != nil { - TermMessage("Failed to decode channel data:\n", err) - return PluginPackages{} - } - return fetchAllSources(len(repositories), func(i int) PluginPackages { - return repositories[i].Fetch() - }) -} - -// Fetch retrieves all available PluginPackages from the given repository -func (pr PluginRepository) Fetch() PluginPackages { - // messenger.AddLog(fmt.Sprintf("Fetching repository: %q", string(pr))) - resp, err := http.Get(string(pr)) - if err != nil { - TermMessage("Failed to query plugin repository:\n", err) - return PluginPackages{} - } - defer resp.Body.Close() - decoder := json5.NewDecoder(resp.Body) - - var plugins PluginPackages - if err := decoder.Decode(&plugins); err != nil { - TermMessage("Failed to decode repository data:\n", err) - return PluginPackages{} - } - if len(plugins) > 0 { - return PluginPackages{plugins[0]} - } - return nil - // return plugins -} - -// UnmarshalJSON unmarshals raw json to a PluginVersion -func (pv *PluginVersion) UnmarshalJSON(data []byte) error { - var values struct { - Version semver.Version - Url string - Require map[string]string - } - - if err := json5.Unmarshal(data, &values); err != nil { - return err - } - pv.Version = values.Version - pv.Url = values.Url - pv.Require = make(PluginDependencies, 0) - - for k, v := range values.Require { - // don't add the dependency if it's the core and - // we have a unknown version number. - // in that case just accept that dependency (which equals to not adding it.) - if k != CorePluginName || !isUnknownCoreVersion() { - if vRange, err := semver.ParseRange(v); err == nil { - pv.Require = append(pv.Require, &PluginDependency{k, vRange}) - } - } - } - return nil -} - -// UnmarshalJSON unmarshals raw json to a PluginPackage -func (pp *PluginPackage) UnmarshalJSON(data []byte) error { - var values struct { - Name string - Description string - Author string - Tags []string - Versions PluginVersions - } - if err := json5.Unmarshal(data, &values); err != nil { - return err - } - pp.Name = values.Name - pp.Description = values.Description - pp.Author = values.Author - pp.Tags = values.Tags - pp.Versions = values.Versions - for _, v := range pp.Versions { - v.pack = pp - } - return nil -} - -// GetAllPluginPackages gets all PluginPackages which may be available. -func GetAllPluginPackages() PluginPackages { - if allPluginPackages == nil { - getOption := func(name string) []string { - data := GetOption(name) - if strs, ok := data.([]string); ok { - return strs - } - if ifs, ok := data.([]interface{}); ok { - result := make([]string, len(ifs)) - for i, urlIf := range ifs { - if url, ok := urlIf.(string); ok { - result[i] = url - } else { - return nil - } - } - return result - } - return nil - } - - channels := PluginChannels{} - for _, url := range getOption("pluginchannels") { - channels = append(channels, PluginChannel(url)) - } - repos := []PluginRepository{} - for _, url := range getOption("pluginrepos") { - repos = append(repos, PluginRepository(url)) - } - allPluginPackages = fetchAllSources(len(repos)+1, func(i int) PluginPackages { - if i == 0 { - return channels.Fetch() - } - return repos[i-1].Fetch() - }) - } - return allPluginPackages -} - -func (pv PluginVersions) find(ppName string) *PluginVersion { - for _, v := range pv { - if v.pack.Name == ppName { - return v - } - } - return nil -} - -// Len returns the number of pluginversions in this slice -func (pv PluginVersions) Len() int { - return len(pv) -} - -// Swap two entries of the slice -func (pv PluginVersions) Swap(i, j int) { - pv[i], pv[j] = pv[j], pv[i] -} - -// Less returns true if the version at position i is greater then the version at position j (used for sorting) -func (pv PluginVersions) Less(i, j int) bool { - return pv[i].Version.GT(pv[j].Version) -} - -// Match returns true if the package matches a given search text -func (pp PluginPackage) Match(text string) bool { - text = strings.ToLower(text) - for _, t := range pp.Tags { - if strings.ToLower(t) == text { - return true - } - } - if strings.Contains(strings.ToLower(pp.Name), text) { - return true - } - - if strings.Contains(strings.ToLower(pp.Description), text) { - return true - } - - return false -} - -// IsInstallable returns true if the package can be installed. -func (pp PluginPackage) IsInstallable() error { - _, err := GetAllPluginPackages().Resolve(GetInstalledVersions(true), PluginDependencies{ - &PluginDependency{ - Name: pp.Name, - Range: semver.Range(func(v semver.Version) bool { return true }), - }}) - return err -} - -// SearchPlugin retrieves a list of all PluginPackages which match the given search text and -// could be or are already installed -func SearchPlugin(texts []string) (plugins PluginPackages) { - plugins = make(PluginPackages, 0) - -pluginLoop: - for _, pp := range GetAllPluginPackages() { - for _, text := range texts { - if !pp.Match(text) { - continue pluginLoop - } - } - - if err := pp.IsInstallable(); err == nil { - plugins = append(plugins, pp) - } - } - return -} - -func isUnknownCoreVersion() bool { - _, err := semver.ParseTolerant(Version) - return err != nil -} - -func newStaticPluginVersion(name, version string) *PluginVersion { - vers, err := semver.ParseTolerant(version) - - if err != nil { - if vers, err = semver.ParseTolerant("0.0.0-" + version); err != nil { - vers = semver.MustParse("0.0.0-unknown") - } - } - pl := &PluginPackage{ - Name: name, - } - pv := &PluginVersion{ - pack: pl, - Version: vers, - } - pl.Versions = PluginVersions{pv} - return pv -} - -// GetInstalledVersions returns a list of all currently installed plugins including an entry for -// micro itself. This can be used to resolve dependencies. -func GetInstalledVersions(withCore bool) PluginVersions { - result := PluginVersions{} - if withCore { - result = append(result, newStaticPluginVersion(CorePluginName, Version)) - } - - for name, lpname := range loadedPlugins { - version := GetInstalledPluginVersion(lpname) - if pv := newStaticPluginVersion(name, version); pv != nil { - result = append(result, pv) - } - } - - return result -} - -// GetInstalledPluginVersion returns the string of the exported VERSION variable of a loaded plugin -func GetInstalledPluginVersion(name string) string { - plugin := L.GetGlobal(name) - if plugin != lua.LNil { - version := L.GetField(plugin, "VERSION") - if str, ok := version.(lua.LString); ok { - return string(str) - - } - } - return "" -} - -// DownloadAndInstall downloads and installs the given plugin and version -func (pv *PluginVersion) DownloadAndInstall() error { - messenger.AddLog(fmt.Sprintf("Downloading %q (%s) from %q", pv.pack.Name, pv.Version, pv.Url)) - resp, err := http.Get(pv.Url) - if err != nil { - return err - } - defer resp.Body.Close() - data, err := ioutil.ReadAll(resp.Body) - if err != nil { - return err - } - zipbuf := bytes.NewReader(data) - z, err := zip.NewReader(zipbuf, zipbuf.Size()) - if err != nil { - return err - } - targetDir := filepath.Join(configDir, "plugins", pv.pack.Name) - dirPerm := os.FileMode(0755) - if err = os.MkdirAll(targetDir, dirPerm); err != nil { - return err - } - - // Check if all files in zip are in the same directory. - // this might be the case if the plugin zip contains the whole plugin dir - // instead of its content. - var prefix string - allPrefixed := false - for i, f := range z.File { - parts := strings.Split(f.Name, "/") - if i == 0 { - prefix = parts[0] - } else if parts[0] != prefix { - allPrefixed = false - break - } else { - // switch to true since we have at least a second file - allPrefixed = true - } - } - - // Install files and directory's - for _, f := range z.File { - parts := strings.Split(f.Name, "/") - if allPrefixed { - parts = parts[1:] - } - - targetName := filepath.Join(targetDir, filepath.Join(parts...)) - if f.FileInfo().IsDir() { - if err := os.MkdirAll(targetName, dirPerm); err != nil { - return err - } - } else { - basepath := filepath.Dir(targetName) - - if err := os.MkdirAll(basepath, dirPerm); err != nil { - return err - } - - content, err := f.Open() - if err != nil { - return err - } - defer content.Close() - target, err := os.Create(targetName) - if err != nil { - return err - } - defer target.Close() - if _, err = io.Copy(target, content); err != nil { - return err - } - } - } - return nil -} - -func (pl PluginPackages) Get(name string) *PluginPackage { - for _, p := range pl { - if p.Name == name { - return p - } - } - return nil -} - -func (pl PluginPackages) GetAllVersions(name string) PluginVersions { - result := make(PluginVersions, 0) - p := pl.Get(name) - if p != nil { - for _, v := range p.Versions { - result = append(result, v) - } - } - return result -} - -func (req PluginDependencies) Join(other PluginDependencies) PluginDependencies { - m := make(map[string]*PluginDependency) - for _, r := range req { - m[r.Name] = r - } - for _, o := range other { - cur, ok := m[o.Name] - if ok { - m[o.Name] = &PluginDependency{ - o.Name, - o.Range.AND(cur.Range), - } - } else { - m[o.Name] = o - } - } - result := make(PluginDependencies, 0, len(m)) - for _, v := range m { - result = append(result, v) - } - return result -} - -// Resolve resolves dependencies between different plugins -func (all PluginPackages) Resolve(selectedVersions PluginVersions, open PluginDependencies) (PluginVersions, error) { - if len(open) == 0 { - return selectedVersions, nil - } - currentRequirement, stillOpen := open[0], open[1:] - if currentRequirement != nil { - if selVersion := selectedVersions.find(currentRequirement.Name); selVersion != nil { - if currentRequirement.Range(selVersion.Version) { - return all.Resolve(selectedVersions, stillOpen) - } - return nil, fmt.Errorf("unable to find a matching version for \"%s\"", currentRequirement.Name) - } - availableVersions := all.GetAllVersions(currentRequirement.Name) - sort.Sort(availableVersions) - - for _, version := range availableVersions { - if currentRequirement.Range(version.Version) { - resolved, err := all.Resolve(append(selectedVersions, version), stillOpen.Join(version.Require)) - - if err == nil { - return resolved, nil - } - } - } - return nil, fmt.Errorf("unable to find a matching version for \"%s\"", currentRequirement.Name) - } - return selectedVersions, nil -} - -func (pv PluginVersions) install() { - anyInstalled := false - currentlyInstalled := GetInstalledVersions(true) - - for _, sel := range pv { - if sel.pack.Name != CorePluginName { - shouldInstall := true - if pv := currentlyInstalled.find(sel.pack.Name); pv != nil { - if pv.Version.NE(sel.Version) { - messenger.AddLog("Uninstalling", sel.pack.Name) - UninstallPlugin(sel.pack.Name) - } else { - shouldInstall = false - } - } - - if shouldInstall { - if err := sel.DownloadAndInstall(); err != nil { - messenger.Error(err) - return - } - anyInstalled = true - } - } - } - if anyInstalled { - messenger.Message("One or more plugins installed. Please restart micro.") - } else { - messenger.AddLog("Nothing to install / update") - } -} - -// UninstallPlugin deletes the plugin folder of the given plugin -func UninstallPlugin(name string) { - if err := os.RemoveAll(filepath.Join(configDir, "plugins", name)); err != nil { - messenger.Error(err) - return - } - delete(loadedPlugins, name) -} - -// Install installs the plugin -func (pl PluginPackage) Install() { - selected, err := GetAllPluginPackages().Resolve(GetInstalledVersions(true), PluginDependencies{ - &PluginDependency{ - Name: pl.Name, - Range: semver.Range(func(v semver.Version) bool { return true }), - }}) - if err != nil { - TermMessage(err) - return - } - selected.install() -} - -// UpdatePlugins updates the given plugins -func UpdatePlugins(plugins []string) { - // if no plugins are specified, update all installed plugins. - if len(plugins) == 0 { - for name := range loadedPlugins { - plugins = append(plugins, name) - } - } - - messenger.AddLog("Checking for plugin updates") - microVersion := PluginVersions{ - newStaticPluginVersion(CorePluginName, Version), - } - - var updates = make(PluginDependencies, 0) - for _, name := range plugins { - pv := GetInstalledPluginVersion(name) - r, err := semver.ParseRange(">=" + pv) // Try to get newer versions. - if err == nil { - updates = append(updates, &PluginDependency{ - Name: name, - Range: r, - }) - } - } - - selected, err := GetAllPluginPackages().Resolve(microVersion, updates) - if err != nil { - TermMessage(err) - return - } - selected.install() -} diff --git a/cmd/micro/pluginmanager_test.go b/cmd/micro/pluginmanager_test.go deleted file mode 100644 index e7ef5e97..00000000 --- a/cmd/micro/pluginmanager_test.go +++ /dev/null @@ -1,56 +0,0 @@ -package main - -import ( - "testing" - - "github.com/blang/semver" - - "github.com/flynn/json5" -) - -func TestDependencyResolving(t *testing.T) { - js := ` -[{ - "Name": "Foo", - "Versions": [{ "Version": "1.0.0" }, { "Version": "1.5.0" },{ "Version": "2.0.0" }] -}, { - "Name": "Bar", - "Versions": [{ "Version": "1.0.0", "Require": {"Foo": ">1.0.0 <2.0.0"} }] -}, { - "Name": "Unresolvable", - "Versions": [{ "Version": "1.0.0", "Require": {"Foo": "<=1.0.0", "Bar": ">0.0.0"} }] - }] -` - var all PluginPackages - err := json5.Unmarshal([]byte(js), &all) - if err != nil { - t.Error(err) - } - selected, err := all.Resolve(PluginVersions{}, PluginDependencies{ - &PluginDependency{"Bar", semver.MustParseRange(">=1.0.0")}, - }) - - check := func(name, version string) { - v := selected.find(name) - expected := semver.MustParse(version) - if v == nil { - t.Errorf("Failed to resolve %s", name) - } else if expected.NE(v.Version) { - t.Errorf("%s resolved in wrong version %v", name, v) - } - } - - if err != nil { - t.Error(err) - } else { - check("Foo", "1.5.0") - check("Bar", "1.0.0") - } - - selected, err = all.Resolve(PluginVersions{}, PluginDependencies{ - &PluginDependency{"Unresolvable", semver.MustParseRange(">0.0.0")}, - }) - if err == nil { - t.Error("Unresolvable package resolved:", selected) - } -} diff --git a/cmd/micro/profile.go b/cmd/micro/profile.go new file mode 100644 index 00000000..86ac558f --- /dev/null +++ b/cmd/micro/profile.go @@ -0,0 +1,14 @@ +package main + +import ( + "fmt" + "runtime" + + humanize "github.com/dustin/go-humanize" +) + +func GetMemStats() string { + var memstats runtime.MemStats + runtime.ReadMemStats(&memstats) + return fmt.Sprintf("Alloc: %s, Sys: %s, GC: %d, PauseTotalNs: %dns", humanize.Bytes(memstats.Alloc), humanize.Bytes(memstats.Sys), memstats.NumGC, memstats.PauseTotalNs) +} diff --git a/cmd/micro/rtfiles.go b/cmd/micro/rtfiles.go index a72b6ee3..947c4e13 100644 --- a/cmd/micro/rtfiles.go +++ b/cmd/micro/rtfiles.go @@ -8,12 +8,15 @@ import ( ) const ( - RTColorscheme = "colorscheme" - RTSyntax = "syntax" - RTHelp = "help" - RTPlugin = "plugin" + RTColorscheme = 0 + RTSyntax = 1 + RTHelp = 2 + RTPlugin = 3 + NumTypes = 4 // How many filetypes are there ) +type RTFiletype byte + // RuntimeFile allows the program to read runtime data like colorschemes or syntax files type RuntimeFile interface { // Name returns a name of the file without paths or extensions @@ -23,7 +26,7 @@ type RuntimeFile interface { } // allFiles contains all available files, mapped by filetype -var allFiles map[string][]RuntimeFile +var allFiles [NumTypes][]RuntimeFile // some file on filesystem type realFile string @@ -73,16 +76,13 @@ func (nf namedFile) Name() string { } // AddRuntimeFile registers a file for the given filetype -func AddRuntimeFile(fileType string, file RuntimeFile) { - if allFiles == nil { - allFiles = make(map[string][]RuntimeFile) - } +func AddRuntimeFile(fileType RTFiletype, file RuntimeFile) { allFiles[fileType] = append(allFiles[fileType], file) } // AddRuntimeFilesFromDirectory registers each file from the given directory for // the filetype which matches the file-pattern -func AddRuntimeFilesFromDirectory(fileType, directory, pattern string) { +func AddRuntimeFilesFromDirectory(fileType RTFiletype, directory, pattern string) { files, _ := ioutil.ReadDir(directory) for _, f := range files { if ok, _ := filepath.Match(pattern, f.Name()); !f.IsDir() && ok { @@ -94,7 +94,7 @@ func AddRuntimeFilesFromDirectory(fileType, directory, pattern string) { // AddRuntimeFilesFromAssets registers each file from the given asset-directory for // the filetype which matches the file-pattern -func AddRuntimeFilesFromAssets(fileType, directory, pattern string) { +func AddRuntimeFilesFromAssets(fileType RTFiletype, directory, pattern string) { files, err := AssetDir(directory) if err != nil { return @@ -108,7 +108,7 @@ func AddRuntimeFilesFromAssets(fileType, directory, pattern string) { // FindRuntimeFile finds a runtime file of the given filetype and name // will return nil if no file was found -func FindRuntimeFile(fileType, name string) RuntimeFile { +func FindRuntimeFile(fileType RTFiletype, name string) RuntimeFile { for _, f := range ListRuntimeFiles(fileType) { if f.Name() == name { return f @@ -118,16 +118,13 @@ func FindRuntimeFile(fileType, name string) RuntimeFile { } // ListRuntimeFiles lists all known runtime files for the given filetype -func ListRuntimeFiles(fileType string) []RuntimeFile { - if files, ok := allFiles[fileType]; ok { - return files - } - return []RuntimeFile{} +func ListRuntimeFiles(fileType RTFiletype) []RuntimeFile { + return allFiles[fileType] } // InitRuntimeFiles initializes all assets file and the config directory func InitRuntimeFiles() { - add := func(fileType, dir, pattern string) { + add := func(fileType RTFiletype, dir, pattern string) { AddRuntimeFilesFromDirectory(fileType, filepath.Join(configDir, dir), pattern) AddRuntimeFilesFromAssets(fileType, path.Join("runtime", dir), pattern) } @@ -160,7 +157,7 @@ func InitRuntimeFiles() { } // PluginReadRuntimeFile allows plugin scripts to read the content of a runtime file -func PluginReadRuntimeFile(fileType, name string) string { +func PluginReadRuntimeFile(fileType RTFiletype, name string) string { if file := FindRuntimeFile(fileType, name); file != nil { if data, err := file.Data(); err == nil { return string(data) @@ -170,7 +167,7 @@ func PluginReadRuntimeFile(fileType, name string) string { } // PluginListRuntimeFiles allows plugins to lists all runtime files of the given type -func PluginListRuntimeFiles(fileType string) []string { +func PluginListRuntimeFiles(fileType RTFiletype) []string { files := ListRuntimeFiles(fileType) result := make([]string, len(files)) for i, f := range files { @@ -180,7 +177,7 @@ func PluginListRuntimeFiles(fileType string) []string { } // PluginAddRuntimeFile adds a file to the runtime files for a plugin -func PluginAddRuntimeFile(plugin, filetype, filePath string) { +func PluginAddRuntimeFile(plugin string, filetype RTFiletype, filePath string) { fullpath := filepath.Join(configDir, "plugins", plugin, filePath) if _, err := os.Stat(fullpath); err == nil { AddRuntimeFile(filetype, realFile(fullpath)) @@ -191,7 +188,7 @@ func PluginAddRuntimeFile(plugin, filetype, filePath string) { } // PluginAddRuntimeFilesFromDirectory adds files from a directory to the runtime files for a plugin -func PluginAddRuntimeFilesFromDirectory(plugin, filetype, directory, pattern string) { +func PluginAddRuntimeFilesFromDirectory(plugin string, filetype RTFiletype, directory, pattern string) { fullpath := filepath.Join(configDir, "plugins", plugin, directory) if _, err := os.Stat(fullpath); err == nil { AddRuntimeFilesFromDirectory(filetype, fullpath, pattern) @@ -202,6 +199,6 @@ func PluginAddRuntimeFilesFromDirectory(plugin, filetype, directory, pattern str } // PluginAddRuntimeFileFromMemory adds a file to the runtime files for a plugin from a given string -func PluginAddRuntimeFileFromMemory(plugin, filetype, filename, data string) { +func PluginAddRuntimeFileFromMemory(plugin string, filetype RTFiletype, filename, data string) { AddRuntimeFile(filetype, memoryFile{filename, []byte(data)}) } diff --git a/cmd/micro/rtfiles_test.go b/cmd/micro/rtfiles_test.go new file mode 100644 index 00000000..f3a8b0df --- /dev/null +++ b/cmd/micro/rtfiles_test.go @@ -0,0 +1,42 @@ +package main + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func init() { + InitRuntimeFiles() +} + +func TestAddFile(t *testing.T) { + AddRuntimeFile(RTPlugin, memoryFile{"foo.lua", []byte("hello world\n")}) + AddRuntimeFile(RTSyntax, memoryFile{"bar", []byte("some syntax file\n")}) + + f1 := FindRuntimeFile(RTPlugin, "foo.lua") + assert.NotNil(t, f1) + assert.Equal(t, "foo.lua", f1.Name()) + data, err := f1.Data() + assert.Nil(t, err) + assert.Equal(t, []byte("hello world\n"), data) + + f2 := FindRuntimeFile(RTSyntax, "bar") + assert.NotNil(t, f2) + assert.Equal(t, "bar", f2.Name()) + data, err = f2.Data() + assert.Nil(t, err) + assert.Equal(t, []byte("some syntax file\n"), data) +} + +func TestFindFile(t *testing.T) { + f := FindRuntimeFile(RTSyntax, "go") + assert.NotNil(t, f) + assert.Equal(t, "go", f.Name()) + data, err := f.Data() + assert.Nil(t, err) + assert.Equal(t, []byte("filetype: go"), data[:12]) + + e := FindRuntimeFile(RTSyntax, "foobar") + assert.Nil(t, e) +} diff --git a/cmd/micro/runtime.go b/cmd/micro/runtime.go index a85f317d..94741c4e 100644 --- a/cmd/micro/runtime.go +++ b/cmd/micro/runtime.go @@ -3176,7 +3176,7 @@ func runtimeSyntaxSedYaml() (*asset, error) { return a, nil } -var _runtimeSyntaxShYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\x7f\x73\x1b\x45\x0c\xfd\x3f\x9f\xe2\xea\x64\xa8\xdd\x62\xd3\x96\xb6\x03\xe6\x87\x29\x2d\x30\x9d\x02\xed\x0c\x30\x93\x21\x9b\x96\xf5\xae\xce\xb7\xdc\xfe\xb8\xee\xea\xe2\x84\xbe\x7c\x77\x46\x67\x3b\x69\x4d\xa7\x40\x26\xb7\x3a\x49\x96\xf4\xa4\x7d\xa7\xda\x79\xe2\x8b\x8e\xe6\x55\x69\xc8\xfb\x83\x03\x4b\x4c\x86\xe7\x07\x55\x55\x55\xe2\x8c\x3a\xd0\xbc\x1a\x8d\x95\x9a\x95\xe6\x08\x4a\xcd\x96\xba\x34\x22\xb7\x42\xd4\x6c\xb0\x15\x5b\xc3\x2b\xed\x9d\x2e\x54\xf0\x8e\xb2\x73\xd6\x7d\x34\xec\x52\xdc\xba\xaf\xd5\xdd\x0f\xba\x9c\xa4\x36\xde\x51\x94\x9a\xed\x5e\x77\xf2\x45\xbb\xda\xe8\xed\x2a\xb4\x33\x93\x62\x7d\xe5\xca\x66\xa3\xbf\x78\xf6\xc3\xb7\xbf\x3d\xfd\xf1\x09\x66\xb4\xec\x9d\xb7\x4a\x1d\xe1\xd1\x8b\x67\x83\x6d\x32\x1a\xda\x6c\x48\x5b\xca\xf3\x6a\xf4\xf2\xf0\xc6\xec\xd6\x27\x63\x8a\x67\xd5\xed\xc9\x62\xbc\xd4\x93\xc5\x58\x4f\x16\xa5\x19\x57\x38\x9a\x8c\x0e\x0e\x72\xef\xa9\x6c\x66\x73\x58\xfd\xdc\x87\x25\xe5\x32\x68\xd3\xca\xa4\x58\x58\x47\x9e\xc5\xc1\x3c\xaf\x46\x4a\x2d\x4f\xee\x4c\x3f\x3f\xbd\xad\xd4\x72\x53\x48\xa2\x1e\xa7\x68\x9d\x74\xab\x7d\xa9\x74\xb4\x12\xc8\x39\xf9\xaa\xf6\x69\xbd\xcd\x55\x58\x33\x05\x8a\xbc\xc9\x32\x36\xba\x10\x6c\x82\x4d\x91\x40\xde\xd5\x20\x5f\x08\x54\xb4\x01\x9d\x3b\x46\xed\x50\xa7\x8c\xdd\x20\xe1\x6a\xb8\x08\x9f\x8c\xf6\xc8\xa4\x2d\x32\x71\x9f\x23\x0a\x79\x32\x8c\xd2\xb8\x9a\xc1\x0d\x45\xb0\x0b\x84\x3e\xb2\xf3\x58\x37\xce\xd3\xe4\x0a\xec\xb4\x2a\x1d\x19\xa7\xfd\xe6\xf6\xdf\x40\xa9\x4b\x28\x35\x86\x52\x13\x28\xf5\x05\x94\x3a\x85\x52\x27\xf8\x03\x4a\x29\x05\x19\xec\x97\xf8\x1a\x37\xf0\x15\x3e\x82\x52\x98\x5c\x37\xfd\x8b\x70\xab\x32\x29\x04\x1d\xed\x6e\x62\x1b\xda\x6d\x1a\xb4\x20\xd3\x24\xd0\x79\x97\x32\xc3\x13\xa3\x10\xa3\x0f\xba\xb4\xe8\x63\x21\x9e\xec\x0d\x31\x84\x14\x2b\xef\x62\x7f\xfe\x81\xb4\xe3\x15\xdc\x6a\xb2\xd0\xeb\x76\x60\x12\xac\x1c\xb5\x8b\x16\x4a\xad\xdf\xdc\xf9\xf8\xfe\xe5\x2a\x53\x87\xd6\x79\x3f\x1c\xda\xfb\x2b\x8f\xa7\x52\x10\x74\x2b\xe4\x12\x7f\x21\x8b\xd2\x80\x75\xde\x87\x92\xa9\x67\xe7\xcb\x07\x70\x2c\x75\xa1\x87\xf7\x05\xc3\xf0\x39\xc1\x68\x86\x69\x4c\x8a\x30\xcd\x2a\x77\x30\x4d\x48\x16\xa6\x49\x6b\xb1\xe4\x94\x18\xa6\x2d\x7d\x80\xa4\x84\xe9\x60\x4a\xe7\x1d\xc3\xf4\x0c\xab\x99\x60\x2d\x6c\x0d\xeb\xb2\x3c\x26\xf9\x94\x8b\xbc\x0d\xc9\x6d\x0f\x8a\x67\x32\x4a\x1d\xad\x88\x8c\x5a\x1b\x16\x7a\x68\x61\x4d\x1d\x18\x75\xf2\x16\x42\x7b\x34\xa9\xb0\xb3\x90\x7f\xe1\xaf\xf7\xf8\x33\x09\x75\x5c\x6c\xe1\x85\x42\xab\x21\xa9\x2f\x08\xf6\x81\x40\x0a\xad\x94\x0d\x6d\xed\xea\x84\xd0\xc6\x64\x11\x5a\xa6\xd0\x21\x9c\x21\x3a\x43\x88\x1e\x31\x35\x7d\x87\xd8\xe5\x64\x10\xfb\x20\x25\x93\x45\xa7\x0b\x13\x3a\xcd\x8d\x69\x5a\x74\x2e\xb6\x17\xe8\x32\xba\xec\x22\x0b\xe4\xe1\xa5\x46\xc7\xe7\xe8\xd6\x76\x20\xee\x80\x23\x93\xf6\x12\x85\x1c\x90\x83\x94\xcf\x7d\x94\xe9\x15\x7a\x8d\x71\x69\xf4\x5d\x94\x46\xdf\xbb\x77\x7f\x10\x0f\x1e\x8a\xf8\xf4\xb3\x41\x7b\x70\xf7\xde\x44\x50\x97\x26\x0f\xf7\xd7\xd7\x28\x9e\xa8\x43\x11\x9e\x6d\xa6\x2a\x5f\x1b\x0a\xdb\xa5\x38\x99\x2f\x30\x04\x5c\x44\x03\xd6\xf2\x38\x0f\x26\x02\x53\xe1\xcd\xe7\x22\x47\xea\x19\x9c\x7a\xd3\x80\x33\x38\xf7\x24\x47\x34\x72\x39\x3c\xe4\x96\x44\xfd\x30\xbb\x3e\x6e\xef\xa2\x8f\xee\x35\xfa\x38\xf4\xd4\x17\xca\x05\x67\xd2\xcc\xda\x60\xdd\x24\x79\x74\x70\xb8\xa0\xb2\x4f\xb0\xab\x85\x51\xd5\x5e\xaf\xca\x7b\x96\xc4\x74\x7a\xa2\xa7\x7f\x4d\x4f\x6f\x8f\xde\xbb\x41\xaa\xc1\x2d\xde\xad\xdb\x59\x8a\xec\x6a\xb7\xdd\x53\x47\x4a\xbd\x59\xc8\xae\x7a\x34\xfd\xfd\xd5\x8d\x6f\x0e\x8f\x6e\x2d\xa6\xb2\xb6\x2e\x17\xa3\xff\x1f\xb0\xbf\x0f\x0b\x67\x17\x57\xf3\x6d\x3f\x95\x40\xcb\x03\xac\xd1\xe8\xca\x46\xd1\xee\x59\x4a\xeb\xba\xa1\x94\x52\xb3\x6b\xeb\x5b\xfb\x77\xf7\xf7\x76\xa5\xcd\xbe\x7a\xdc\xe8\x7c\x1d\xfa\x5f\xe1\xdc\xdc\x47\x73\x73\xbf\x6c\x75\x72\x7a\x9d\x2d\x0c\xc3\xfd\x47\x96\xf1\x4b\x28\x55\x26\x87\xfb\xc9\x8e\xfe\xa5\x07\x4e\x36\x49\xf8\xaf\xcf\x9f\x3c\xc7\xf1\xf1\x31\xbe\x7f\x7a\xfc\xd3\x77\x93\xb9\xcc\xf3\xef\x00\x00\x00\xff\xff\xef\x45\x76\x90\xa3\x07\x00\x00") +var _runtimeSyntaxShYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\x7f\x73\x1b\x45\x0c\xfd\x3f\x9f\xe2\xea\x64\xa8\xdd\x62\xd3\x96\xb6\x03\xe6\x87\x29\x2d\x30\x9d\x02\xed\x0c\x30\x93\x21\x9b\x96\xf5\xae\xce\xb7\xdc\xfe\xb8\xee\xea\xe2\x84\xbe\x7c\x77\x46\x67\x3b\x69\x4d\xa7\x40\x26\xb7\x3a\x49\x96\xf4\xa4\x7d\xa7\xda\x79\xe2\x8b\x8e\xe6\x55\x69\xc8\xfb\x83\x03\x4b\x4c\x86\xe7\x07\x55\x55\x55\xe2\x8c\x3a\xd0\xbc\x1a\x8d\x95\x9a\x95\xe6\x08\x4a\xcd\x96\xba\x34\x3b\x99\x0d\xb6\x62\x6b\x78\xa5\xbd\xd3\x85\x0a\xde\x51\x76\xce\xba\x8f\x86\x5d\x8a\x5b\xf7\xb5\xba\xfb\x41\x97\x93\x14\xc5\x3b\xca\x8b\x76\x35\xc8\xae\x5d\x85\x76\x66\x52\xac\xb1\x73\x65\xb3\xd1\x5f\x3c\xfb\xe1\xdb\xdf\x9e\xfe\xf8\x04\x33\x5a\xf6\xce\x5b\xa5\x8e\xf0\xe8\xc5\xb3\xc1\x36\x19\x0d\xcd\x34\xa4\x2d\xe5\x79\x35\x7a\x79\x78\x63\x76\xeb\x93\x31\xc5\xb3\xea\xf6\x64\x31\x5e\xea\xc9\xa2\x34\xe3\x0a\x47\x93\xd1\xc1\x41\xee\x3d\x95\x4d\xf7\x87\xd5\xcf\x7d\x58\x52\x2e\x83\x36\xad\x4c\x8a\x85\x75\xe4\x59\x1c\xcc\xf3\x6a\xa4\xd4\xf2\xe4\xce\xf4\xf3\xd3\xdb\x4a\x2d\x37\x45\x24\xea\x71\x8a\xd6\x49\x5b\xda\x97\x4a\x47\x2b\x81\x9c\x93\xaf\x6a\x9f\xd6\xdb\x5c\x85\x35\x53\xa0\xc8\x9b\x2c\x63\xa3\x0b\xc1\x26\xd8\x14\x09\xe4\x5d\x0d\xf2\x85\x40\x45\x1b\xd0\xb9\x63\xd4\x0e\x75\xca\xd8\x4d\x0c\xae\x86\x8b\xf0\xc9\x68\x8f\x4c\xda\x22\x13\xf7\x39\xa2\x90\x27\xc3\x28\x8d\xab\x19\xdc\x50\x04\xbb\x40\xe8\x23\x3b\x8f\x75\xe3\x3c\x4d\xae\xc0\x4e\xab\xd2\x91\x71\xda\x6f\xee\xf7\x0d\x94\xba\x84\x52\x63\x28\x35\x81\x52\x5f\x40\xa9\x53\x28\x75\x82\x3f\xa0\x94\x52\x90\xa1\x7e\x89\xaf\x71\x03\x5f\xe1\x23\x28\x85\xc9\x75\xd3\xbf\x08\x7b\x2a\x93\x42\xd0\xd1\xee\x26\xb6\x21\xd6\xa6\x41\x0b\x32\x4d\x02\x9d\x77\x29\x33\x3c\x31\x0a\x31\xfa\xa0\x4b\x8b\x3e\x16\xe2\xc9\xde\x10\x43\x48\xb1\xf2\x2e\xf6\xe7\x1f\x48\x3b\x5e\xc1\xad\x26\x0b\xbd\x6e\x07\xca\xc0\xca\x51\xbb\x68\xa1\xd4\xfa\xcd\x9d\x8f\xef\x5f\xae\x32\x75\x68\x9d\xf7\xc3\xa1\xbd\xbf\xf2\x78\x2a\x05\x41\xb7\x42\x2c\xf1\x17\xb2\x28\x0d\x58\xe7\x7d\x28\x99\x7a\x76\xbe\x7c\x00\xc7\x52\x17\x7a\x78\x5f\x30\x0c\x1f\x0c\x8c\x66\x98\xc6\xa4\x08\xd3\xac\x72\x07\xd3\x84\x64\x61\x9a\xb4\x16\x4b\x4e\x89\x61\xda\xd2\x07\x48\x4a\x98\x0e\xa6\x74\xde\x31\x4c\xcf\xb0\x9a\x09\xd6\xc2\xd6\xb0\x2e\xcb\x63\x92\x4f\xb9\xc8\xdb\x90\xdc\xf6\xa0\x78\x26\xa3\xd4\xd1\x8a\xc8\xa8\xb5\x61\xa1\x87\x16\xd6\xd4\x81\x51\x27\x6f\x21\x94\x47\x93\x0a\x3b\x0b\xf9\x17\xfe\x7a\x8f\x3f\x93\x50\xc7\xc5\x16\x5e\x28\xb4\x1a\x92\xfa\x82\x60\x1f\x08\xa4\xd0\x4a\xd9\xd0\xd6\xae\x4e\x08\x6d\x4c\x16\xa1\x65\x0a\x1d\xc2\x19\xa2\x33\x84\xe8\x11\x53\xd3\x77\x88\x5d\x4e\x06\xb1\x0f\x52\x32\x59\x74\xba\x30\xa1\xd3\xdc\x98\xa6\x45\xe7\x62\x7b\x81\x2e\xa3\xcb\x2e\xb2\x40\x1e\x5e\x6a\x74\x7c\x8e\x6e\x6d\x07\xe2\x0e\x38\x32\x69\x2f\x51\xc8\x01\x39\x48\xf9\xdc\x47\x99\x5e\xa1\xd7\x18\x97\x46\xdf\x45\x69\xf4\xbd\x7b\xf7\x07\xf1\xe0\xa1\x88\x4f\x3f\x1b\xb4\x07\x77\xef\x4d\x04\x75\x69\xf2\x70\x7f\x7d\x8d\xe2\x89\x3a\x14\xe1\xd9\x66\xaa\xf2\xb5\xa1\xb0\x5d\x8a\x93\xf9\x02\x43\xc0\x45\x34\x60\x2d\x8f\xf3\x60\x22\x30\x15\xde\x7c\x2e\x72\xa4\x9e\xc1\xa9\x37\x0d\x38\x83\x73\x4f\x72\x44\x23\x97\xc3\x43\x6e\x49\xd4\x0f\xb3\xeb\xe3\xf6\x2e\xfa\xe8\x5e\xa3\x8f\x43\x4f\x7d\xa1\x5c\x70\x26\xcd\xac\x0d\xd6\x4d\x92\x47\x07\x87\x0b\x2a\xfb\x04\xbb\x5a\x18\x55\xed\xf5\xaa\xbc\x67\x49\x4c\xa7\x27\x7a\xfa\xd7\xf4\xf4\xf6\xe8\xbd\x1b\xa4\x1a\xdc\xe2\xdd\xba\x9d\xa5\xc8\xae\x76\xdb\x3d\x75\xa4\xd4\x9b\x85\xec\xaa\x47\xd3\xdf\x5f\xdd\xf8\xe6\xf0\xe8\xd6\x62\x2a\x6b\xeb\x72\x31\xfa\xff\x01\xfb\xfb\xb0\x70\x76\x71\x35\xdf\xf6\x53\x09\xb4\x3c\xc0\x1a\x8d\xae\x6c\x14\xed\x9e\xa5\xb4\xae\x1b\x4a\x29\x35\xbb\xb6\xbe\xb5\x7f\x77\x7f\x6f\x57\xda\xec\xab\xc7\x8d\xce\xd7\xa1\xff\x15\xce\xcd\x7d\x34\x37\xf7\xcb\x56\x27\xa7\xd7\xd9\xc2\x30\xdc\x7f\x64\x19\xbf\x84\x52\x65\x72\xb8\x9f\xec\xe8\x5f\x7a\xe0\x64\x93\x84\xff\xfa\xfc\xc9\x73\x1c\x1f\x1f\xe3\xfb\xa7\xc7\x3f\x7d\x37\x99\xcb\x3c\xff\x0e\x00\x00\xff\xff\x42\xc3\x8d\xb7\x85\x07\x00\x00") func runtimeSyntaxShYamlBytes() ([]byte, error) { return bindataRead( diff --git a/cmd/micro/scrollbar.go b/cmd/micro/scrollbar.go deleted file mode 100644 index f4a9a078..00000000 --- a/cmd/micro/scrollbar.go +++ /dev/null @@ -1,20 +0,0 @@ -package main - -// ScrollBar represents an optional scrollbar that can be used -type ScrollBar struct { - view *View -} - -// Display shows the scrollbar -func (sb *ScrollBar) Display() { - style := defStyle.Reverse(true) - screen.SetContent(sb.view.x+sb.view.Width-1, sb.view.y+sb.pos(), ' ', nil, style) -} - -func (sb *ScrollBar) pos() int { - numlines := sb.view.Buf.NumLines - h := sb.view.Height - filepercent := float32(sb.view.Topline) / float32(numlines) - - return int(filepercent * float32(h)) -} diff --git a/cmd/micro/search.go b/cmd/micro/search.go deleted file mode 100644 index 7139f844..00000000 --- a/cmd/micro/search.go +++ /dev/null @@ -1,214 +0,0 @@ -package main - -import ( - "regexp" - "strings" - - "github.com/zyedidia/tcell" -) - -var ( - // What was the last search - lastSearch string - - // Where should we start the search down from (or up from) - searchStart Loc - - // Is there currently a search in progress - searching bool - - // Stores the history for searching - searchHistory []string -) - -// BeginSearch starts a search -func BeginSearch(searchStr string) { - searchHistory = append(searchHistory, "") - messenger.historyNum = len(searchHistory) - 1 - searching = true - messenger.response = searchStr - messenger.cursorx = Count(searchStr) - messenger.Message("Find: ") - messenger.hasPrompt = true -} - -// EndSearch stops the current search -func EndSearch() { - searchHistory[len(searchHistory)-1] = messenger.response - searching = false - messenger.hasPrompt = false - messenger.Clear() - messenger.Reset() - if lastSearch != "" { - messenger.Message("^P Previous ^N Next") - } -} - -// ExitSearch exits the search mode, reset active search phrase, and clear status bar -func ExitSearch(v *View) { - lastSearch = "" - searching = false - messenger.hasPrompt = false - messenger.Clear() - messenger.Reset() - v.Cursor.ResetSelection() -} - -// HandleSearchEvent takes an event and a view and will do a real time match from the messenger's output -// to the current buffer. It searches down the buffer. -func HandleSearchEvent(event tcell.Event, v *View) { - switch e := event.(type) { - case *tcell.EventKey: - switch e.Key() { - case tcell.KeyEscape: - // Exit the search mode - ExitSearch(v) - return - case tcell.KeyEnter: - // If the user has pressed Enter, they want this to be the lastSearch - lastSearch = messenger.response - EndSearch() - return - case tcell.KeyCtrlQ, tcell.KeyCtrlC: - // Done - EndSearch() - return - } - } - - messenger.HandleEvent(event, searchHistory) - - if messenger.cursorx < 0 { - // Done - EndSearch() - return - } - - if messenger.response == "" { - v.Cursor.ResetSelection() - // We don't end the search though - return - } - - Search(messenger.response, v, true) - - v.Relocate() - - return -} - -func searchDown(r *regexp.Regexp, v *View, start, end Loc) bool { - if start.Y >= v.Buf.NumLines { - start.Y = v.Buf.NumLines - 1 - } - if start.Y < 0 { - start.Y = 0 - } - for i := start.Y; i <= end.Y; i++ { - var l []byte - var charPos int - if i == start.Y { - runes := []rune(string(v.Buf.lines[i].data)) - if start.X >= len(runes) { - start.X = len(runes) - 1 - } - if start.X < 0 { - start.X = 0 - } - l = []byte(string(runes[start.X:])) - charPos = start.X - - if strings.Contains(r.String(), "^") && start.X != 0 { - continue - } - } else { - l = v.Buf.lines[i].data - } - - match := r.FindIndex(l) - - if match != nil { - v.Cursor.SetSelectionStart(Loc{charPos + runePos(match[0], string(l)), i}) - v.Cursor.SetSelectionEnd(Loc{charPos + runePos(match[1], string(l)), i}) - v.Cursor.OrigSelection[0] = v.Cursor.CurSelection[0] - v.Cursor.OrigSelection[1] = v.Cursor.CurSelection[1] - v.Cursor.Loc = v.Cursor.CurSelection[1] - - return true - } - } - return false -} - -func searchUp(r *regexp.Regexp, v *View, start, end Loc) bool { - if start.Y >= v.Buf.NumLines { - start.Y = v.Buf.NumLines - 1 - } - if start.Y < 0 { - start.Y = 0 - } - for i := start.Y; i >= end.Y; i-- { - var l []byte - if i == start.Y { - runes := []rune(string(v.Buf.lines[i].data)) - if start.X >= len(runes) { - start.X = len(runes) - 1 - } - if start.X < 0 { - start.X = 0 - } - l = []byte(string(runes[:start.X])) - - if strings.Contains(r.String(), "$") && start.X != Count(string(l)) { - continue - } - } else { - l = v.Buf.lines[i].data - } - - match := r.FindIndex(l) - - if match != nil { - v.Cursor.SetSelectionStart(Loc{runePos(match[0], string(l)), i}) - v.Cursor.SetSelectionEnd(Loc{runePos(match[1], string(l)), i}) - v.Cursor.OrigSelection[0] = v.Cursor.CurSelection[0] - v.Cursor.OrigSelection[1] = v.Cursor.CurSelection[1] - v.Cursor.Loc = v.Cursor.CurSelection[1] - - return true - } - } - return false -} - -// Search searches in the view for the given regex. The down bool -// specifies whether it should search down from the searchStart position -// or up from there -func Search(searchStr string, v *View, down bool) { - if searchStr == "" { - return - } - r, err := regexp.Compile(searchStr) - if v.Buf.Settings["ignorecase"].(bool) { - r, err = regexp.Compile("(?i)" + searchStr) - } - if err != nil { - return - } - - var found bool - if down { - found = searchDown(r, v, searchStart, v.Buf.End()) - if !found { - found = searchDown(r, v, v.Buf.Start(), searchStart) - } - } else { - found = searchUp(r, v, searchStart, v.Buf.Start()) - if !found { - found = searchUp(r, v, v.Buf.End(), searchStart) - } - } - if !found { - v.Cursor.ResetSelection() - } -} diff --git a/cmd/micro/settings.go b/cmd/micro/settings.go index c8e50e12..e4ac6344 100644 --- a/cmd/micro/settings.go +++ b/cmd/micro/settings.go @@ -1,16 +1,12 @@ package main import ( - "crypto/md5" "encoding/json" "errors" - "io" "io/ioutil" "os" "reflect" - "strconv" "strings" - "sync" "github.com/flynn/json5" "github.com/zyedidia/glob" @@ -21,7 +17,8 @@ type optionValidator func(string, interface{}) error // The options that the user can set var globalSettings map[string]interface{} -var invalidSettings bool +// This is the raw parsed json +var parsedSettings map[string]interface{} // Options with validators var optionValidators = map[string]optionValidator{ @@ -33,74 +30,42 @@ var optionValidators = map[string]optionValidator{ "fileformat": validateLineEnding, } -// InitGlobalSettings initializes the options map and sets all options to their default values -func InitGlobalSettings() { - invalidSettings = false - defaults := DefaultGlobalSettings() - var parsed map[string]interface{} - +func ReadSettings() error { filename := configDir + "/settings.json" - writeSettings := false if _, e := os.Stat(filename); e == nil { input, err := ioutil.ReadFile(filename) + if err != nil { + return errors.New("Error reading settings.json file: " + err.Error()) + } if !strings.HasPrefix(string(input), "null") { + // Unmarshal the input into the parsed map + err = json5.Unmarshal(input, &parsedSettings) if err != nil { - TermMessage("Error reading settings.json file: " + err.Error()) - invalidSettings = true - return + return errors.New("Error reading settings.json: " + err.Error()) } - - err = json5.Unmarshal(input, &parsed) - if err != nil { - TermMessage("Error reading settings.json:", err.Error()) - invalidSettings = true - } - } else { - writeSettings = true } } + return nil +} - globalSettings = make(map[string]interface{}) - for k, v := range defaults { - globalSettings[k] = v - } - for k, v := range parsed { +// InitGlobalSettings initializes the options map and sets all options to their default values +// Must be called after ReadSettings +func InitGlobalSettings() { + globalSettings = DefaultGlobalSettings() + + for k, v := range parsedSettings { if !strings.HasPrefix(reflect.TypeOf(v).String(), "map") { globalSettings[k] = v } } - - if _, err := os.Stat(filename); os.IsNotExist(err) || writeSettings { - err := WriteSettings(filename) - if err != nil { - TermMessage("Error writing settings.json file: " + err.Error()) - } - } } // InitLocalSettings scans the json in settings.json and sets the options locally based // on whether the buffer matches the glob -func InitLocalSettings(buf *Buffer) { - invalidSettings = false - var parsed map[string]interface{} - - filename := configDir + "/settings.json" - if _, e := os.Stat(filename); e == nil { - input, err := ioutil.ReadFile(filename) - if err != nil { - TermMessage("Error reading settings.json file: " + err.Error()) - invalidSettings = true - return - } - - err = json5.Unmarshal(input, &parsed) - if err != nil { - TermMessage("Error reading settings.json:", err.Error()) - invalidSettings = true - } - } - - for k, v := range parsed { +// Must be called after ReadSettings +func InitLocalSettings(buf *Buffer) error { + var parseError error + for k, v := range parsedSettings { if strings.HasPrefix(reflect.TypeOf(v).String(), "map") { if strings.HasPrefix(k, "ft:") { if buf.Settings["filetype"].(string) == k[3:] { @@ -111,7 +76,7 @@ func InitLocalSettings(buf *Buffer) { } else { g, err := glob.Compile(k) if err != nil { - TermMessage("Error with glob setting ", k, ": ", err) + parseError = errors.New("Error with glob setting " + k + ": " + err.Error()) continue } @@ -123,59 +88,31 @@ func InitLocalSettings(buf *Buffer) { } } } + return parseError } // WriteSettings writes the settings to the specified filename as JSON func WriteSettings(filename string) error { - if invalidSettings { - // Do not write the settings if there was an error when reading them - return nil - } - var err error if _, e := os.Stat(configDir); e == nil { - parsed := make(map[string]interface{}) - - filename := configDir + "/settings.json" for k, v := range globalSettings { - parsed[k] = v - } - if _, e := os.Stat(filename); e == nil { - input, err := ioutil.ReadFile(filename) - if string(input) != "null" { - if err != nil { - return err - } - - err = json5.Unmarshal(input, &parsed) - if err != nil { - TermMessage("Error reading settings.json:", err.Error()) - invalidSettings = true - } - - for k, v := range parsed { - if !strings.HasPrefix(reflect.TypeOf(v).String(), "map") { - if _, ok := globalSettings[k]; ok { - parsed[k] = globalSettings[k] - } - } - } - } + parsedSettings[k] = v } - txt, _ := json.MarshalIndent(parsed, "", " ") + txt, _ := json.MarshalIndent(parsedSettings, "", " ") err = ioutil.WriteFile(filename, append(txt, '\n'), 0644) } return err } // AddOption creates a new option. This is meant to be called by plugins to add options. -func AddOption(name string, value interface{}) { +func AddOption(name string, value interface{}) error { globalSettings[name] = value err := WriteSettings(configDir + "/settings.json") if err != nil { - TermMessage("Error writing settings.json file: " + err.Error()) + return errors.New("Error writing settings.json file: " + err.Error()) } + return nil } // GetGlobalOption returns the global value of the given option @@ -188,291 +125,268 @@ func GetLocalOption(name string, buf *Buffer) interface{} { return buf.Settings[name] } +// TODO: get option for current buffer // GetOption returns the value of the given option // If there is a local version of the option, it returns that // otherwise it will return the global version -func GetOption(name string) interface{} { - if GetLocalOption(name, CurView().Buf) != nil { - return GetLocalOption(name, CurView().Buf) +// func GetOption(name string) interface{} { +// if GetLocalOption(name, CurView().Buf) != nil { +// return GetLocalOption(name, CurView().Buf) +// } +// return GetGlobalOption(name) +// } + +func DefaultCommonSettings() map[string]interface{} { + return map[string]interface{}{ + "autoindent": true, + "autosave": false, + "basename": false, + "colorcolumn": float64(0), + "cursorline": true, + "eofnewline": false, + "fastdirty": true, + "fileformat": "unix", + "hidehelp": false, + "ignorecase": false, + "indentchar": " ", + "keepautoindent": false, + "matchbrace": false, + "matchbraceleft": false, + "rmtrailingws": false, + "ruler": true, + "savecursor": false, + "saveundo": false, + "scrollbar": false, + "scrollmargin": float64(3), + "scrollspeed": float64(2), + "softwrap": false, + "smartpaste": true, + "splitbottom": true, + "splitright": true, + "statusline": true, + "syntax": true, + "tabmovement": false, + "tabsize": float64(4), + "tabstospaces": false, + "useprimary": true, } - return GetGlobalOption(name) } // DefaultGlobalSettings returns the default global settings for micro // Note that colorscheme is a global only option func DefaultGlobalSettings() map[string]interface{} { - return map[string]interface{}{ - "autoindent": true, - "autosave": false, - "basename": false, - "colorcolumn": float64(0), - "colorscheme": "default", - "cursorline": true, - "eofnewline": false, - "fastdirty": true, - "fileformat": "unix", - "hidehelp": false, - "ignorecase": false, - "indentchar": " ", - "infobar": true, - "keepautoindent": false, - "keymenu": false, - "matchbrace": false, - "matchbraceleft": false, - "mouse": true, - "pluginchannels": []string{"https://raw.githubusercontent.com/micro-editor/plugin-channel/master/channel.json"}, - "pluginrepos": []string{}, - "rmtrailingws": false, - "ruler": true, - "savecursor": false, - "savehistory": true, - "saveundo": false, - "scrollbar": false, - "scrollmargin": float64(3), - "scrollspeed": float64(2), - "softwrap": false, - "smartpaste": true, - "splitbottom": true, - "splitright": true, - "statusline": true, - "sucmd": "sudo", - "syntax": true, - "tabmovement": false, - "tabsize": float64(4), - "tabstospaces": false, - "termtitle": false, - "useprimary": true, - } + common := DefaultCommonSettings() + common["colorscheme"] = "default" + common["infobar"] = true + common["keymenu"] = false + common["mouse"] = true + common["pluginchannels"] = []string{"https://raw.githubusercontent.com/micro-editor/plugin-channel/master/channel.json"} + common["pluginrepos"] = []string{} + common["savehistory"] = true + common["sucmd"] = "sudo" + common["termtitle"] = false + return common } // DefaultLocalSettings returns the default local settings // Note that filetype is a local only option func DefaultLocalSettings() map[string]interface{} { - return map[string]interface{}{ - "autoindent": true, - "autosave": false, - "basename": false, - "colorcolumn": float64(0), - "cursorline": true, - "eofnewline": false, - "fastdirty": true, - "fileformat": "unix", - "filetype": "Unknown", - "hidehelp": false, - "ignorecase": false, - "indentchar": " ", - "keepautoindent": false, - "matchbrace": false, - "matchbraceleft": false, - "rmtrailingws": false, - "ruler": true, - "savecursor": false, - "saveundo": false, - "scrollbar": false, - "scrollmargin": float64(3), - "scrollspeed": float64(2), - "softwrap": false, - "smartpaste": true, - "splitbottom": true, - "splitright": true, - "statusline": true, - "syntax": true, - "tabmovement": false, - "tabsize": float64(4), - "tabstospaces": false, - "useprimary": true, - } + common := DefaultCommonSettings() + common["filetype"] = "Unknown" + return common } +// TODO: everything else + // SetOption attempts to set the given option to the value // By default it will set the option as global, but if the option // is local only it will set the local version // Use setlocal to force an option to be set locally -func SetOption(option, value string) error { - if _, ok := globalSettings[option]; !ok { - if _, ok := CurView().Buf.Settings[option]; !ok { - return errors.New("Invalid option") - } - SetLocalOption(option, value, CurView()) - return nil - } - - var nativeValue interface{} - - kind := reflect.TypeOf(globalSettings[option]).Kind() - if kind == reflect.Bool { - b, err := ParseBool(value) - if err != nil { - return errors.New("Invalid value") - } - nativeValue = b - } else if kind == reflect.String { - nativeValue = value - } else if kind == reflect.Float64 { - i, err := strconv.Atoi(value) - if err != nil { - return errors.New("Invalid value") - } - nativeValue = float64(i) - } else { - return errors.New("Option has unsupported value type") - } - - if err := optionIsValid(option, nativeValue); err != nil { - return err - } - - globalSettings[option] = nativeValue - - if option == "colorscheme" { - // LoadSyntaxFiles() - InitColorscheme() - for _, tab := range tabs { - for _, view := range tab.Views { - view.Buf.UpdateRules() - } - } - } - - if option == "infobar" || option == "keymenu" { - for _, tab := range tabs { - tab.Resize() - } - } - - if option == "mouse" { - if !nativeValue.(bool) { - screen.DisableMouse() - } else { - screen.EnableMouse() - } - } - - if len(tabs) != 0 { - if _, ok := CurView().Buf.Settings[option]; ok { - for _, tab := range tabs { - for _, view := range tab.Views { - SetLocalOption(option, value, view) - } - } - } - } - - return nil -} - -// SetLocalOption sets the local version of this option -func SetLocalOption(option, value string, view *View) error { - buf := view.Buf - if _, ok := buf.Settings[option]; !ok { - return errors.New("Invalid option") - } - - var nativeValue interface{} - - kind := reflect.TypeOf(buf.Settings[option]).Kind() - if kind == reflect.Bool { - b, err := ParseBool(value) - if err != nil { - return errors.New("Invalid value") - } - nativeValue = b - } else if kind == reflect.String { - nativeValue = value - } else if kind == reflect.Float64 { - i, err := strconv.Atoi(value) - if err != nil { - return errors.New("Invalid value") - } - nativeValue = float64(i) - } else { - return errors.New("Option has unsupported value type") - } - - if err := optionIsValid(option, nativeValue); err != nil { - return err - } - - if option == "fastdirty" { - // If it is being turned off, we have to hash every open buffer - var empty [md5.Size]byte - var wg sync.WaitGroup - - for _, tab := range tabs { - for _, v := range tab.Views { - if !nativeValue.(bool) { - if v.Buf.origHash == empty { - wg.Add(1) - - go func(b *Buffer) { // calculate md5 hash of the file - defer wg.Done() - - if file, e := os.Open(b.AbsPath); e == nil { - defer file.Close() - - h := md5.New() - - if _, e = io.Copy(h, file); e == nil { - h.Sum(b.origHash[:0]) - } - } - }(v.Buf) - } - } else { - v.Buf.IsModified = v.Buf.Modified() - } - } - } - - wg.Wait() - } - - buf.Settings[option] = nativeValue - - if option == "statusline" { - view.ToggleStatusLine() - } - - if option == "filetype" { - // LoadSyntaxFiles() - InitColorscheme() - buf.UpdateRules() - } - - if option == "fileformat" { - buf.IsModified = true - } - - if option == "syntax" { - if !nativeValue.(bool) { - buf.ClearMatches() - } else { - if buf.highlighter != nil { - buf.highlighter.HighlightStates(buf) - } - } - } - - return nil -} - -// SetOptionAndSettings sets the given option and saves the option setting to the settings config file -func SetOptionAndSettings(option, value string) { - filename := configDir + "/settings.json" - - err := SetOption(option, value) - - if err != nil { - messenger.Error(err.Error()) - return - } - - err = WriteSettings(filename) - if err != nil { - messenger.Error("Error writing to settings.json: " + err.Error()) - return - } -} +// func SetOption(option, value string) error { +// if _, ok := globalSettings[option]; !ok { +// if _, ok := CurView().Buf.Settings[option]; !ok { +// return errors.New("Invalid option") +// } +// SetLocalOption(option, value, CurView()) +// return nil +// } +// +// var nativeValue interface{} +// +// kind := reflect.TypeOf(globalSettings[option]).Kind() +// if kind == reflect.Bool { +// b, err := ParseBool(value) +// if err != nil { +// return errors.New("Invalid value") +// } +// nativeValue = b +// } else if kind == reflect.String { +// nativeValue = value +// } else if kind == reflect.Float64 { +// i, err := strconv.Atoi(value) +// if err != nil { +// return errors.New("Invalid value") +// } +// nativeValue = float64(i) +// } else { +// return errors.New("Option has unsupported value type") +// } +// +// if err := optionIsValid(option, nativeValue); err != nil { +// return err +// } +// +// globalSettings[option] = nativeValue +// +// if option == "colorscheme" { +// // LoadSyntaxFiles() +// InitColorscheme() +// for _, tab := range tabs { +// for _, view := range tab.Views { +// view.Buf.UpdateRules() +// } +// } +// } +// +// if option == "infobar" || option == "keymenu" { +// for _, tab := range tabs { +// tab.Resize() +// } +// } +// +// if option == "mouse" { +// if !nativeValue.(bool) { +// screen.DisableMouse() +// } else { +// screen.EnableMouse() +// } +// } +// +// if len(tabs) != 0 { +// if _, ok := CurView().Buf.Settings[option]; ok { +// for _, tab := range tabs { +// for _, view := range tab.Views { +// SetLocalOption(option, value, view) +// } +// } +// } +// } +// +// return nil +// } +// +// // SetLocalOption sets the local version of this option +// func SetLocalOption(option, value string, view *View) error { +// buf := view.Buf +// if _, ok := buf.Settings[option]; !ok { +// return errors.New("Invalid option") +// } +// +// var nativeValue interface{} +// +// kind := reflect.TypeOf(buf.Settings[option]).Kind() +// if kind == reflect.Bool { +// b, err := ParseBool(value) +// if err != nil { +// return errors.New("Invalid value") +// } +// nativeValue = b +// } else if kind == reflect.String { +// nativeValue = value +// } else if kind == reflect.Float64 { +// i, err := strconv.Atoi(value) +// if err != nil { +// return errors.New("Invalid value") +// } +// nativeValue = float64(i) +// } else { +// return errors.New("Option has unsupported value type") +// } +// +// if err := optionIsValid(option, nativeValue); err != nil { +// return err +// } +// +// if option == "fastdirty" { +// // If it is being turned off, we have to hash every open buffer +// var empty [md5.Size]byte +// var wg sync.WaitGroup +// +// for _, tab := range tabs { +// for _, v := range tab.Views { +// if !nativeValue.(bool) { +// if v.Buf.origHash == empty { +// wg.Add(1) +// +// go func(b *Buffer) { // calculate md5 hash of the file +// defer wg.Done() +// +// if file, e := os.Open(b.AbsPath); e == nil { +// defer file.Close() +// +// h := md5.New() +// +// if _, e = io.Copy(h, file); e == nil { +// h.Sum(b.origHash[:0]) +// } +// } +// }(v.Buf) +// } +// } else { +// v.Buf.IsModified = v.Buf.Modified() +// } +// } +// } +// +// wg.Wait() +// } +// +// buf.Settings[option] = nativeValue +// +// if option == "statusline" { +// view.ToggleStatusLine() +// } +// +// if option == "filetype" { +// // LoadSyntaxFiles() +// InitColorscheme() +// buf.UpdateRules() +// } +// +// if option == "fileformat" { +// buf.IsModified = true +// } +// +// if option == "syntax" { +// if !nativeValue.(bool) { +// buf.ClearMatches() +// } else { +// if buf.highlighter != nil { +// buf.highlighter.HighlightStates(buf) +// } +// } +// } +// +// return nil +// } +// +// // SetOptionAndSettings sets the given option and saves the option setting to the settings config file +// func SetOptionAndSettings(option, value string) { +// filename := configDir + "/settings.json" +// +// err := SetOption(option, value) +// +// if err != nil { +// messenger.Error(err.Error()) +// return +// } +// +// err = WriteSettings(filename) +// if err != nil { +// messenger.Error("Error writing to settings.json: " + err.Error()) +// return +// } +// } func optionIsValid(option string, value interface{}) error { if validator, ok := optionValidators[option]; ok { diff --git a/cmd/micro/shell.go b/cmd/micro/shell.go deleted file mode 100644 index 3e9e4aca..00000000 --- a/cmd/micro/shell.go +++ /dev/null @@ -1,129 +0,0 @@ -package main - -import ( - "bytes" - "io" - "os" - "os/exec" - "os/signal" - "strings" - - "github.com/zyedidia/micro/cmd/micro/shellwords" -) - -// ExecCommand executes a command using exec -// It returns any output/errors -func ExecCommand(name string, arg ...string) (string, error) { - var err error - cmd := exec.Command(name, arg...) - outputBytes := &bytes.Buffer{} - cmd.Stdout = outputBytes - cmd.Stderr = outputBytes - err = cmd.Start() - if err != nil { - return "", err - } - err = cmd.Wait() // wait for command to finish - outstring := outputBytes.String() - return outstring, err -} - -// RunShellCommand executes a shell command and returns the output/error -func RunShellCommand(input string) (string, error) { - args, err := shellwords.Split(input) - if err != nil { - return "", err - } - inputCmd := args[0] - - return ExecCommand(inputCmd, args[1:]...) -} - -func RunBackgroundShell(input string) { - args, err := shellwords.Split(input) - if err != nil { - messenger.Error(err) - return - } - inputCmd := args[0] - messenger.Message("Running...") - go func() { - output, err := RunShellCommand(input) - totalLines := strings.Split(output, "\n") - - if len(totalLines) < 3 { - if err == nil { - messenger.Message(inputCmd, " exited without error") - } else { - messenger.Message(inputCmd, " exited with error: ", err, ": ", output) - } - } else { - messenger.Message(output) - } - // We have to make sure to redraw - RedrawAll() - }() -} - -func RunInteractiveShell(input string, wait bool, getOutput bool) (string, error) { - args, err := shellwords.Split(input) - if err != nil { - return "", err - } - inputCmd := args[0] - - // Shut down the screen because we're going to interact directly with the shell - screen.Fini() - screen = nil - - args = args[1:] - - // Set up everything for the command - outputBytes := &bytes.Buffer{} - cmd := exec.Command(inputCmd, args...) - cmd.Stdin = os.Stdin - if getOutput { - cmd.Stdout = io.MultiWriter(os.Stdout, outputBytes) - } else { - cmd.Stdout = os.Stdout - } - cmd.Stderr = os.Stderr - - // This is a trap for Ctrl-C so that it doesn't kill micro - // Instead we trap Ctrl-C to kill the program we're running - c := make(chan os.Signal, 1) - signal.Notify(c, os.Interrupt) - go func() { - for range c { - cmd.Process.Kill() - } - }() - - cmd.Start() - err = cmd.Wait() - - output := outputBytes.String() - - if wait { - // This is just so we don't return right away and let the user press enter to return - TermMessage("") - } - - // Start the screen back up - InitScreen() - - return output, err -} - -// HandleShellCommand runs the shell command -// The openTerm argument specifies whether a terminal should be opened (for viewing output -// or interacting with stdin) -func HandleShellCommand(input string, openTerm bool, waitToFinish bool) string { - if !openTerm { - RunBackgroundShell(input) - return "" - } else { - output, _ := RunInteractiveShell(input, waitToFinish, false) - return output - } -} diff --git a/cmd/micro/shell_supported.go b/cmd/micro/shell_supported.go deleted file mode 100644 index 215e1992..00000000 --- a/cmd/micro/shell_supported.go +++ /dev/null @@ -1,18 +0,0 @@ -// +build linux darwin dragonfly openbsd_amd64 freebsd - -package main - -import ( - "github.com/zyedidia/micro/cmd/micro/shellwords" -) - -const TermEmuSupported = true - -func RunTermEmulator(input string, wait bool, getOutput bool, callback string) error { - args, err := shellwords.Split(input) - if err != nil { - return err - } - err = CurView().StartTerminal(args, wait, getOutput, callback) - return err -} diff --git a/cmd/micro/shell_unsupported.go b/cmd/micro/shell_unsupported.go deleted file mode 100644 index 4d078457..00000000 --- a/cmd/micro/shell_unsupported.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build !linux,!darwin,!freebsd,!dragonfly,!openbsd_amd64 - -package main - -import "errors" - -const TermEmuSupported = false - -func RunTermEmulator(input string, wait bool, getOutput bool) error { - return errors.New("Unsupported operating system") -} diff --git a/cmd/micro/split_tree.go b/cmd/micro/split_tree.go deleted file mode 100644 index e34c37f1..00000000 --- a/cmd/micro/split_tree.go +++ /dev/null @@ -1,317 +0,0 @@ -package main - -// SplitType specifies whether a split is horizontal or vertical -type SplitType bool - -const ( - // VerticalSplit type - VerticalSplit = false - // HorizontalSplit type - HorizontalSplit = true -) - -// A Node on the split tree -type Node interface { - VSplit(buf *Buffer, splitIndex int) - HSplit(buf *Buffer, splitIndex int) - String() string -} - -// A LeafNode is an actual split so it contains a view -type LeafNode struct { - view *View - - parent *SplitTree -} - -// NewLeafNode returns a new leaf node containing the given view -func NewLeafNode(v *View, parent *SplitTree) *LeafNode { - n := new(LeafNode) - n.view = v - n.view.splitNode = n - n.parent = parent - return n -} - -// A SplitTree is a Node itself and it contains other nodes -type SplitTree struct { - kind SplitType - - parent *SplitTree - children []Node - - x int - y int - - width int - height int - lockWidth bool - lockHeight bool - - tabNum int -} - -// VSplit creates a vertical split -func (l *LeafNode) VSplit(buf *Buffer, splitIndex int) { - if splitIndex < 0 { - splitIndex = 0 - } - - tab := tabs[l.parent.tabNum] - if l.parent.kind == VerticalSplit { - if splitIndex > len(l.parent.children) { - splitIndex = len(l.parent.children) - } - - newView := NewView(buf) - newView.TabNum = l.parent.tabNum - - l.parent.children = append(l.parent.children, nil) - copy(l.parent.children[splitIndex+1:], l.parent.children[splitIndex:]) - l.parent.children[splitIndex] = NewLeafNode(newView, l.parent) - - tab.Views = append(tab.Views, nil) - copy(tab.Views[splitIndex+1:], tab.Views[splitIndex:]) - tab.Views[splitIndex] = newView - - tab.CurView = splitIndex - } else { - if splitIndex > 1 { - splitIndex = 1 - } - - s := new(SplitTree) - s.kind = VerticalSplit - s.parent = l.parent - s.tabNum = l.parent.tabNum - newView := NewView(buf) - newView.TabNum = l.parent.tabNum - if splitIndex == 1 { - s.children = []Node{l, NewLeafNode(newView, s)} - } else { - s.children = []Node{NewLeafNode(newView, s), l} - } - l.parent.children[search(l.parent.children, l)] = s - l.parent = s - - tab.Views = append(tab.Views, nil) - copy(tab.Views[splitIndex+1:], tab.Views[splitIndex:]) - tab.Views[splitIndex] = newView - - tab.CurView = splitIndex - } - - tab.Resize() -} - -// HSplit creates a horizontal split -func (l *LeafNode) HSplit(buf *Buffer, splitIndex int) { - if splitIndex < 0 { - splitIndex = 0 - } - - tab := tabs[l.parent.tabNum] - if l.parent.kind == HorizontalSplit { - if splitIndex > len(l.parent.children) { - splitIndex = len(l.parent.children) - } - - newView := NewView(buf) - newView.TabNum = l.parent.tabNum - - l.parent.children = append(l.parent.children, nil) - copy(l.parent.children[splitIndex+1:], l.parent.children[splitIndex:]) - l.parent.children[splitIndex] = NewLeafNode(newView, l.parent) - - tab.Views = append(tab.Views, nil) - copy(tab.Views[splitIndex+1:], tab.Views[splitIndex:]) - tab.Views[splitIndex] = newView - - tab.CurView = splitIndex - } else { - if splitIndex > 1 { - splitIndex = 1 - } - - s := new(SplitTree) - s.kind = HorizontalSplit - s.tabNum = l.parent.tabNum - s.parent = l.parent - newView := NewView(buf) - newView.TabNum = l.parent.tabNum - newView.Num = len(tab.Views) - if splitIndex == 1 { - s.children = []Node{l, NewLeafNode(newView, s)} - } else { - s.children = []Node{NewLeafNode(newView, s), l} - } - l.parent.children[search(l.parent.children, l)] = s - l.parent = s - - tab.Views = append(tab.Views, nil) - copy(tab.Views[splitIndex+1:], tab.Views[splitIndex:]) - tab.Views[splitIndex] = newView - - tab.CurView = splitIndex - } - - tab.Resize() -} - -// Delete deletes a split -func (l *LeafNode) Delete() { - i := search(l.parent.children, l) - - copy(l.parent.children[i:], l.parent.children[i+1:]) - l.parent.children[len(l.parent.children)-1] = nil - l.parent.children = l.parent.children[:len(l.parent.children)-1] - - tab := tabs[l.parent.tabNum] - j := findView(tab.Views, l.view) - copy(tab.Views[j:], tab.Views[j+1:]) - tab.Views[len(tab.Views)-1] = nil // or the zero value of T - tab.Views = tab.Views[:len(tab.Views)-1] - - for i, v := range tab.Views { - v.Num = i - } - if tab.CurView > 0 { - tab.CurView-- - } -} - -// Cleanup rearranges all the parents after a split has been deleted -func (s *SplitTree) Cleanup() { - for i, node := range s.children { - if n, ok := node.(*SplitTree); ok { - if len(n.children) == 1 { - if child, ok := n.children[0].(*LeafNode); ok { - s.children[i] = child - child.parent = s - continue - } - } - n.Cleanup() - } - } -} - -// ResizeSplits resizes all the splits correctly -func (s *SplitTree) ResizeSplits() { - lockedWidth := 0 - lockedHeight := 0 - lockedChildren := 0 - for _, node := range s.children { - if n, ok := node.(*LeafNode); ok { - if s.kind == VerticalSplit { - if n.view.LockWidth { - lockedWidth += n.view.Width - lockedChildren++ - } - } else { - if n.view.LockHeight { - lockedHeight += n.view.Height - lockedChildren++ - } - } - } else if n, ok := node.(*SplitTree); ok { - if s.kind == VerticalSplit { - if n.lockWidth { - lockedWidth += n.width - lockedChildren++ - } - } else { - if n.lockHeight { - lockedHeight += n.height - lockedChildren++ - } - } - } - } - x, y := 0, 0 - for _, node := range s.children { - if n, ok := node.(*LeafNode); ok { - if s.kind == VerticalSplit { - if !n.view.LockWidth { - n.view.Width = (s.width - lockedWidth) / (len(s.children) - lockedChildren) - } - n.view.Height = s.height - - n.view.x = s.x + x - n.view.y = s.y - x += n.view.Width - } else { - if !n.view.LockHeight { - n.view.Height = (s.height - lockedHeight) / (len(s.children) - lockedChildren) - } - n.view.Width = s.width - - n.view.y = s.y + y - n.view.x = s.x - y += n.view.Height - } - if n.view.Buf.Settings["statusline"].(bool) { - n.view.Height-- - } - - n.view.ToggleTabbar() - } else if n, ok := node.(*SplitTree); ok { - if s.kind == VerticalSplit { - if !n.lockWidth { - n.width = (s.width - lockedWidth) / (len(s.children) - lockedChildren) - } - n.height = s.height - - n.x = s.x + x - n.y = s.y - x += n.width - } else { - if !n.lockHeight { - n.height = (s.height - lockedHeight) / (len(s.children) - lockedChildren) - } - n.width = s.width - - n.y = s.y + y - n.x = s.x - y += n.height - } - n.ResizeSplits() - } - } -} - -func (l *LeafNode) String() string { - return l.view.Buf.GetName() -} - -func search(haystack []Node, needle Node) int { - for i, x := range haystack { - if x == needle { - return i - } - } - return 0 -} - -func findView(haystack []*View, needle *View) int { - for i, x := range haystack { - if x == needle { - return i - } - } - return 0 -} - -// VSplit is here just to make SplitTree fit the Node interface -func (s *SplitTree) VSplit(buf *Buffer, splitIndex int) {} - -// HSplit is here just to make SplitTree fit the Node interface -func (s *SplitTree) HSplit(buf *Buffer, splitIndex int) {} - -func (s *SplitTree) String() string { - str := "[" - for _, child := range s.children { - str += child.String() + ", " - } - return str + "]" -} diff --git a/cmd/micro/stack.go b/cmd/micro/stack.go index 070bd769..bbb6b971 100644 --- a/cmd/micro/stack.go +++ b/cmd/micro/stack.go @@ -1,7 +1,7 @@ package main -// Stack is a simple implementation of a LIFO stack for text events -type Stack struct { +// TEStack is a simple implementation of a LIFO stack for text events +type TEStack struct { Top *Element Size int } @@ -13,19 +13,19 @@ type Element struct { } // Len returns the stack's length -func (s *Stack) Len() int { +func (s *TEStack) Len() int { return s.Size } // Push a new element onto the stack -func (s *Stack) Push(value *TextEvent) { +func (s *TEStack) Push(value *TextEvent) { s.Top = &Element{value, s.Top} s.Size++ } // Pop removes the top element from the stack and returns its value // If the stack is empty, return nil -func (s *Stack) Pop() (value *TextEvent) { +func (s *TEStack) Pop() (value *TextEvent) { if s.Size > 0 { value, s.Top = s.Top.Value, s.Top.Next s.Size-- @@ -35,7 +35,7 @@ func (s *Stack) Pop() (value *TextEvent) { } // Peek returns the top element of the stack without removing it -func (s *Stack) Peek() *TextEvent { +func (s *TEStack) Peek() *TextEvent { if s.Size > 0 { return s.Top.Value } diff --git a/cmd/micro/stack_test.go b/cmd/micro/stack_test.go new file mode 100644 index 00000000..51e4aa76 --- /dev/null +++ b/cmd/micro/stack_test.go @@ -0,0 +1,35 @@ +package main + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func TestStack(t *testing.T) { + s := new(TEStack) + e1 := &TextEvent{ + EventType: TextEventReplace, + Time: time.Now(), + } + e2 := &TextEvent{ + EventType: TextEventInsert, + Time: time.Now(), + } + s.Push(e1) + s.Push(e2) + + p := s.Peek() + assert.Equal(t, p.EventType, TextEventInsert) + p = s.Pop() + assert.Equal(t, p.EventType, TextEventInsert) + p = s.Peek() + assert.Equal(t, p.EventType, TextEventReplace) + p = s.Pop() + assert.Equal(t, p.EventType, TextEventReplace) + p = s.Pop() + assert.Nil(t, p) + p = s.Peek() + assert.Nil(t, p) +} diff --git a/cmd/micro/statusline.go b/cmd/micro/statusline.go index d346a033..e9062985 100644 --- a/cmd/micro/statusline.go +++ b/cmd/micro/statusline.go @@ -1,98 +1,116 @@ package main import ( + "bytes" + "fmt" "path" + "regexp" "strconv" + "unicode/utf8" ) -// Statusline represents the information line at the bottom -// of each view +// StatusLine represents the information line at the bottom +// of each window // It gives information such as filename, whether the file has been // modified, filetype, cursor location -type Statusline struct { - view *View +type StatusLine struct { + FormatLeft string + FormatRight string + Info map[string]func(*Buffer) string + + win *Window } +// TODO: plugin modify status line formatter + +// NewStatusLine returns a statusline bound to a window +func NewStatusLine(win *Window) *StatusLine { + s := new(StatusLine) + // s.FormatLeft = "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat)" + s.FormatLeft = "$(filename) $(modified)(line,col) $(opt:filetype) $(opt:fileformat)" + s.FormatRight = "$(bind:ToggleKeyMenu): show bindings, $(bind:ToggleHelp): open help" + s.Info = map[string]func(*Buffer) string{ + "filename": func(b *Buffer) string { + if b.Settings["basename"].(bool) { + return path.Base(b.GetName()) + } + return b.GetName() + }, + "line": func(b *Buffer) string { + return strconv.Itoa(b.GetActiveCursor().Y) + }, + "col": func(b *Buffer) string { + return strconv.Itoa(b.GetActiveCursor().X) + }, + "modified": func(b *Buffer) string { + if b.Modified() { + return "+ " + } + return "" + }, + } + s.win = win + return s +} + +// FindOpt finds a given option in the current buffer's settings +func (s *StatusLine) FindOpt(opt string) interface{} { + if val, ok := s.win.Buf.Settings[opt]; ok { + return val + } + return "null" +} + +var formatParser = regexp.MustCompile(`\$\(.+?\)`) + // Display draws the statusline to the screen -func (sline *Statusline) Display() { - if messenger.hasPrompt && !GetGlobalOption("infobar").(bool) { - return - } +func (s *StatusLine) Display() { + // TODO: don't display if infobar off and has message + // if !GetGlobalOption("infobar").(bool) { + // return + // } - // We'll draw the line at the lowest line in the view - y := sline.view.Height + sline.view.y + // We'll draw the line at the lowest line in the window + y := s.win.Height + s.win.Y - file := sline.view.Buf.GetName() - if sline.view.Buf.Settings["basename"].(bool) { - file = path.Base(file) - } - - // If the buffer is dirty (has been modified) write a little '+' - if sline.view.Buf.Modified() { - file += " +" - } - - // Add one to cursor.x and cursor.y because (0,0) is the top left, - // but users will be used to (1,1) (first line,first column) - // We use GetVisualX() here because otherwise we get the column number in runes - // so a '\t' is only 1, when it should be tabSize - columnNum := strconv.Itoa(sline.view.Cursor.GetVisualX() + 1) - lineNum := strconv.Itoa(sline.view.Cursor.Y + 1) - - file += " (" + lineNum + "," + columnNum + ")" - - // Add the filetype - file += " " + sline.view.Buf.FileType() - - file += " " + sline.view.Buf.Settings["fileformat"].(string) - - rightText := "" - if !sline.view.Buf.Settings["hidehelp"].(bool) { - if len(kmenuBinding) > 0 { - if globalSettings["keymenu"].(bool) { - rightText += kmenuBinding + ": hide bindings" - } else { - rightText += kmenuBinding + ": show bindings" - } + formatter := func(match []byte) []byte { + name := match[2 : len(match)-1] + if bytes.HasPrefix(name, []byte("opt")) { + option := name[4:] + return []byte(fmt.Sprint(s.FindOpt(string(option)))) + } else if bytes.HasPrefix(name, []byte("bind")) { + // TODO: status line bindings + return []byte("TODO") + } else { + return []byte(s.Info[string(name)](s.win.Buf)) } - if len(helpBinding) > 0 { - if len(kmenuBinding) > 0 { - rightText += ", " - } - if sline.view.Type == vtHelp { - rightText += helpBinding + ": close help" - } else { - rightText += helpBinding + ": open help" - } - } - rightText += " " } + leftText := []byte(s.FormatLeft) + leftText = formatParser.ReplaceAllFunc([]byte(s.FormatLeft), formatter) + rightText := []byte(s.FormatRight) + rightText = formatParser.ReplaceAllFunc([]byte(s.FormatRight), formatter) + statusLineStyle := defStyle.Reverse(true) if style, ok := colorscheme["statusline"]; ok { statusLineStyle = style } - // Maybe there is a unicode filename? - fileRunes := []rune(file) + leftLen := utf8.RuneCount(leftText) + rightLen := utf8.RuneCount(rightText) - if sline.view.Type == vtTerm { - fileRunes = []rune(sline.view.term.title) - rightText = "" - } - - viewX := sline.view.x - if viewX != 0 { - screen.SetContent(viewX, y, ' ', nil, statusLineStyle) - viewX++ - } - for x := 0; x < sline.view.Width; x++ { - if x < len(fileRunes) { - screen.SetContent(viewX+x, y, fileRunes[x], nil, statusLineStyle) - } else if x >= sline.view.Width-len(rightText) && x < len(rightText)+sline.view.Width-len(rightText) { - screen.SetContent(viewX+x, y, []rune(rightText)[x-sline.view.Width+len(rightText)], nil, statusLineStyle) + winX := s.win.X + for x := 0; x < s.win.Width; x++ { + if x < leftLen { + r, size := utf8.DecodeRune(leftText) + leftText = leftText[size:] + screen.SetContent(winX+x, y, r, nil, statusLineStyle) + } else if x >= s.win.Width-rightLen && x < rightLen+s.win.Width-rightLen { + r, size := utf8.DecodeRune(rightText) + rightText = rightText[size:] + screen.SetContent(winX+x, y, r, nil, statusLineStyle) } else { - screen.SetContent(viewX+x, y, ' ', nil, statusLineStyle) + screen.SetContent(winX+x, y, ' ', nil, statusLineStyle) } } } diff --git a/cmd/micro/tab.go b/cmd/micro/tab.go deleted file mode 100644 index 88c260a6..00000000 --- a/cmd/micro/tab.go +++ /dev/null @@ -1,293 +0,0 @@ -package main - -import ( - "path/filepath" - "sort" - - "github.com/zyedidia/tcell" -) - -var tabBarOffset int - -// A Tab holds an array of views and a splitTree to determine how the -// views should be arranged -type Tab struct { - // This contains all the views in this tab - // There is generally only one view per tab, but you can have - // multiple views with splits - Views []*View - // This is the current view for this tab - CurView int - - tree *SplitTree -} - -// NewTabFromView creates a new tab and puts the given view in the tab -func NewTabFromView(v *View) *Tab { - t := new(Tab) - t.Views = append(t.Views, v) - t.Views[0].Num = 0 - - t.tree = new(SplitTree) - t.tree.kind = VerticalSplit - t.tree.children = []Node{NewLeafNode(t.Views[0], t.tree)} - - w, h := screen.Size() - t.tree.width = w - t.tree.height = h - - if globalSettings["infobar"].(bool) { - t.tree.height-- - } - if globalSettings["keymenu"].(bool) { - t.tree.height -= 2 - } - - t.Resize() - - return t -} - -// SetNum sets all this tab's views to have the correct tab number -func (t *Tab) SetNum(num int) { - t.tree.tabNum = num - for _, v := range t.Views { - v.TabNum = num - } -} - -// Cleanup cleans up the tree (for example if views have closed) -func (t *Tab) Cleanup() { - t.tree.Cleanup() -} - -// Resize handles a resize event from the terminal and resizes -// all child views correctly -func (t *Tab) Resize() { - w, h := screen.Size() - t.tree.width = w - t.tree.height = h - - if globalSettings["infobar"].(bool) { - t.tree.height-- - } - if globalSettings["keymenu"].(bool) { - t.tree.height -= 2 - } - - t.tree.ResizeSplits() - - for i, v := range t.Views { - v.Num = i - if v.Type == vtTerm { - v.term.Resize(v.Width, v.Height) - } - } -} - -// CurView returns the current view -func CurView() *View { - curTab := tabs[curTab] - return curTab.Views[curTab.CurView] -} - -// TabbarString returns the string that should be displayed in the tabbar -// It also returns a map containing which indicies correspond to which tab number -// This is useful when we know that the mouse click has occurred at an x location -// but need to know which tab that corresponds to to accurately change the tab -func TabbarString() (string, map[int]int) { - str := "" - indicies := make(map[int]int) - unique := make(map[string]int) - - for _, t := range tabs { - unique[filepath.Base(t.Views[t.CurView].Buf.GetName())]++ - } - - for i, t := range tabs { - buf := t.Views[t.CurView].Buf - name := filepath.Base(buf.GetName()) - - if i == curTab { - str += "[" - } else { - str += " " - } - if unique[name] == 1 { - str += name - } else { - str += buf.GetName() - } - if buf.Modified() { - str += " +" - } - if i == curTab { - str += "]" - } else { - str += " " - } - str += " " - - indicies[Count(str)-2] = i + 1 - } - return str, indicies -} - -// TabbarHandleMouseEvent checks the given mouse event if it is clicking on the tabbar -// If it is it changes the current tab accordingly -// This function returns true if the tab is changed -func TabbarHandleMouseEvent(event tcell.Event) bool { - // There is no tabbar displayed if there are less than 2 tabs - if len(tabs) <= 1 { - return false - } - - switch e := event.(type) { - case *tcell.EventMouse: - button := e.Buttons() - // Must be a left click - if button == tcell.Button1 { - x, y := e.Position() - if y != 0 { - return false - } - str, indicies := TabbarString() - if x+tabBarOffset >= len(str) { - return false - } - var tabnum int - var keys []int - for k := range indicies { - keys = append(keys, k) - } - sort.Ints(keys) - for _, k := range keys { - if x+tabBarOffset <= k { - tabnum = indicies[k] - 1 - break - } - } - curTab = tabnum - return true - } - } - - return false -} - -// DisplayTabs displays the tabbar at the top of the editor if there are multiple tabs -func DisplayTabs() { - if len(tabs) <= 1 { - return - } - - str, indicies := TabbarString() - - tabBarStyle := defStyle.Reverse(true) - if style, ok := colorscheme["tabbar"]; ok { - tabBarStyle = style - } - - // Maybe there is a unicode filename? - fileRunes := []rune(str) - w, _ := screen.Size() - tooWide := (w < len(fileRunes)) - - // if the entire tab-bar is longer than the screen is wide, - // then it should be truncated appropriately to keep the - // active tab visible on the UI. - if tooWide == true { - // first we have to work out where the selected tab is - // out of the total length of the tab bar. this is done - // by extracting the hit-areas from the indicies map - // that was constructed by `TabbarString()` - var keys []int - for offset := range indicies { - keys = append(keys, offset) - } - // sort them to be in ascending order so that values will - // correctly reflect the displayed ordering of the tabs - sort.Ints(keys) - // record the offset of each tab and the previous tab so - // we can find the position of the tab's hit-box. - previousTabOffset := 0 - currentTabOffset := 0 - for _, k := range keys { - tabIndex := indicies[k] - 1 - if tabIndex == curTab { - currentTabOffset = k - break - } - // this is +2 because there are two padding spaces that aren't accounted - // for in the display. please note that this is for cosmetic purposes only. - previousTabOffset = k + 2 - } - // get the width of the hitbox of the active tab, from there calculate the offsets - // to the left and right of it to approximately center it on the tab bar display. - centeringOffset := (w - (currentTabOffset - previousTabOffset)) - leftBuffer := previousTabOffset - (centeringOffset / 2) - rightBuffer := currentTabOffset + (centeringOffset / 2) - - // check to make sure we haven't overshot the bounds of the string, - // if we have, then take that remainder and put it on the left side - overshotRight := rightBuffer - len(fileRunes) - if overshotRight > 0 { - leftBuffer = leftBuffer + overshotRight - } - - overshotLeft := leftBuffer - 0 - if overshotLeft < 0 { - leftBuffer = 0 - rightBuffer = leftBuffer + (w - 1) - } else { - rightBuffer = leftBuffer + (w - 2) - } - - if rightBuffer > len(fileRunes)-1 { - rightBuffer = len(fileRunes) - 1 - } - - // construct a new buffer of text to put the - // newly formatted tab bar text into. - var displayText []rune - - // if the left-side of the tab bar isn't at the start - // of the constructed tab bar text, then show that are - // more tabs to the left by displaying a "+" - if leftBuffer != 0 { - displayText = append(displayText, '+') - } - // copy the runes in from the original tab bar text string - // into the new display buffer - for x := leftBuffer; x < rightBuffer; x++ { - displayText = append(displayText, fileRunes[x]) - } - // if there is more text to the right of the right-most - // column in the tab bar text, then indicate there are more - // tabs to the right by displaying a "+" - if rightBuffer < len(fileRunes)-1 { - displayText = append(displayText, '+') - } - - // now store the offset from zero of the left-most text - // that is being displayed. This is to ensure that when - // clicking on the tab bar, the correct tab gets selected. - tabBarOffset = leftBuffer - - // use the constructed buffer as the display buffer to print - // onscreen. - fileRunes = displayText - } else { - tabBarOffset = 0 - } - - // iterate over the width of the terminal display and for each column, - // write a character into the tab display area with the appropriate style. - for x := 0; x < w; x++ { - if x < len(fileRunes) { - screen.SetContent(x, 0, fileRunes[x], nil, tabBarStyle) - } else { - screen.SetContent(x, 0, ' ', nil, tabBarStyle) - } - } -} diff --git a/cmd/micro/terminal.go b/cmd/micro/terminal.go deleted file mode 100644 index 04ca1242..00000000 --- a/cmd/micro/terminal.go +++ /dev/null @@ -1,228 +0,0 @@ -package main - -import ( - "bytes" - "fmt" - "os" - "os/exec" - "strconv" - "strings" - - "github.com/zyedidia/clipboard" - "github.com/zyedidia/tcell" - "github.com/zyedidia/terminal" -) - -const ( - VTIdle = iota // Waiting for a new command - VTRunning // Currently running a command - VTDone // Finished running a command -) - -// A Terminal holds information for the terminal emulator -type Terminal struct { - state terminal.State - view *View - vtOld ViewType - term *terminal.VT - title string - status int - selection [2]Loc - wait bool - getOutput bool - output *bytes.Buffer - callback string -} - -// HasSelection returns whether this terminal has a valid selection -func (t *Terminal) HasSelection() bool { - return t.selection[0] != t.selection[1] -} - -// GetSelection returns the selected text -func (t *Terminal) GetSelection(width int) string { - start := t.selection[0] - end := t.selection[1] - if start.GreaterThan(end) { - start, end = end, start - } - var ret string - var l Loc - for y := start.Y; y <= end.Y; y++ { - for x := 0; x < width; x++ { - l.X, l.Y = x, y - if l.GreaterEqual(start) && l.LessThan(end) { - c, _, _ := t.state.Cell(x, y) - ret += string(c) - } - } - } - return ret -} - -// Start begins a new command in this terminal with a given view -func (t *Terminal) Start(execCmd []string, view *View, getOutput bool) error { - if len(execCmd) <= 0 { - return nil - } - - cmd := exec.Command(execCmd[0], execCmd[1:]...) - t.output = nil - if getOutput { - t.output = bytes.NewBuffer([]byte{}) - } - term, _, err := terminal.Start(&t.state, cmd, t.output) - if err != nil { - return err - } - t.term = term - t.view = view - t.getOutput = getOutput - t.vtOld = view.Type - t.status = VTRunning - t.title = execCmd[0] + ":" + strconv.Itoa(cmd.Process.Pid) - - go func() { - for { - err := term.Parse() - if err != nil { - fmt.Fprintln(os.Stderr, "[Press enter to close]") - break - } - updateterm <- true - } - closeterm <- view.Num - }() - - return nil -} - -// Resize informs the terminal of a resize event -func (t *Terminal) Resize(width, height int) { - t.term.Resize(width, height) -} - -// HandleEvent handles a tcell event by forwarding it to the terminal emulator -// If the event is a mouse event and the program running in the emulator -// does not have mouse support, the emulator will support selections and -// copy-paste -func (t *Terminal) HandleEvent(event tcell.Event) { - if e, ok := event.(*tcell.EventKey); ok { - if t.status == VTDone { - switch e.Key() { - case tcell.KeyEscape, tcell.KeyCtrlQ, tcell.KeyEnter: - t.Close() - t.view.Type = vtDefault - default: - } - } - if e.Key() == tcell.KeyCtrlC && t.HasSelection() { - clipboard.WriteAll(t.GetSelection(t.view.Width), "clipboard") - messenger.Message("Copied selection to clipboard") - } else if t.status != VTDone { - t.WriteString(event.EscSeq()) - } - } else if e, ok := event.(*tcell.EventMouse); !ok || t.state.Mode(terminal.ModeMouseMask) { - t.WriteString(event.EscSeq()) - } else { - x, y := e.Position() - x -= t.view.x - y += t.view.y - - if e.Buttons() == tcell.Button1 { - if !t.view.mouseReleased { - // drag - t.selection[1].X = x - t.selection[1].Y = y - } else { - t.selection[0].X = x - t.selection[0].Y = y - t.selection[1].X = x - t.selection[1].Y = y - } - - t.view.mouseReleased = false - } else if e.Buttons() == tcell.ButtonNone { - if !t.view.mouseReleased { - t.selection[1].X = x - t.selection[1].Y = y - } - t.view.mouseReleased = true - } - } -} - -// Stop stops execution of the terminal and sets the status -// to VTDone -func (t *Terminal) Stop() { - t.term.File().Close() - t.term.Close() - if t.wait { - t.status = VTDone - } else { - t.Close() - t.view.Type = t.vtOld - } -} - -// Close sets the status to VTIdle indicating that the terminal -// is ready for a new command to execute -func (t *Terminal) Close() { - t.status = VTIdle - // call the lua function that the user has given as a callback - if t.getOutput { - _, err := Call(t.callback, t.output.String()) - if err != nil && !strings.HasPrefix(err.Error(), "function does not exist") { - TermMessage(err) - } - } -} - -// WriteString writes a given string to this terminal's pty -func (t *Terminal) WriteString(str string) { - t.term.File().WriteString(str) -} - -// Display displays this terminal in a view -func (t *Terminal) Display() { - divider := 0 - if t.view.x != 0 { - divider = 1 - dividerStyle := defStyle - if style, ok := colorscheme["divider"]; ok { - dividerStyle = style - } - for i := 0; i < t.view.Height; i++ { - screen.SetContent(t.view.x, t.view.y+i, '|', nil, dividerStyle.Reverse(true)) - } - } - t.state.Lock() - defer t.state.Unlock() - - var l Loc - for y := 0; y < t.view.Height; y++ { - for x := 0; x < t.view.Width; x++ { - l.X, l.Y = x, y - c, f, b := t.state.Cell(x, y) - - fg, bg := int(f), int(b) - if f == terminal.DefaultFG { - fg = int(tcell.ColorDefault) - } - if b == terminal.DefaultBG { - bg = int(tcell.ColorDefault) - } - st := tcell.StyleDefault.Foreground(GetColor256(int(fg))).Background(GetColor256(int(bg))) - - if l.LessThan(t.selection[1]) && l.GreaterEqual(t.selection[0]) || l.LessThan(t.selection[0]) && l.GreaterEqual(t.selection[1]) { - st = st.Reverse(true) - } - - screen.SetContent(t.view.x+x+divider, t.view.y+y, c, nil, st) - } - } - if t.state.CursorVisible() && tabs[curTab].CurView == t.view.Num { - curx, cury := t.state.Cursor() - screen.ShowCursor(curx+t.view.x+divider, cury+t.view.y) - } -} diff --git a/cmd/micro/util.go b/cmd/micro/util.go index 7d457d6e..b4315220 100644 --- a/cmd/micro/util.go +++ b/cmd/micro/util.go @@ -1,45 +1,20 @@ package main import ( + "errors" "os" "os/user" - "path/filepath" - "reflect" - "runtime" - "strconv" + "regexp" "strings" "time" "unicode/utf8" - "github.com/go-errors/errors" - "github.com/mattn/go-runewidth" - "regexp" + runewidth "github.com/mattn/go-runewidth" ) -// Util.go is a collection of utility functions that are used throughout -// the program - -// Count returns the length of a string in runes -// This is exactly equivalent to utf8.RuneCountInString(), just less characters -func Count(s string) int { - return utf8.RuneCountInString(s) -} - -// Convert byte array to rune array -func toRunes(b []byte) []rune { - runes := make([]rune, 0, utf8.RuneCount(b)) - - for len(b) > 0 { - r, size := utf8.DecodeRune(b) - runes = append(runes, r) - - b = b[size:] - } - - return runes -} - -func sliceStart(slc []byte, index int) []byte { +// SliceEnd returns a byte slice where the index is a rune index +// Slices off the start of the slice +func SliceEnd(slc []byte, index int) []byte { len := len(slc) i := 0 totalSize := 0 @@ -56,7 +31,9 @@ func sliceStart(slc []byte, index int) []byte { return slc[totalSize:] } -func sliceEnd(slc []byte, index int) []byte { +// SliceStart returns a byte slice where the index is a rune index +// Slices off the end of the slice +func SliceStart(slc []byte, index int) []byte { len := len(slc) i := 0 totalSize := 0 @@ -73,20 +50,63 @@ func sliceEnd(slc []byte, index int) []byte { return slc[:totalSize] } -// NumOccurrences counts the number of occurrences of a byte in a string -func NumOccurrences(s string, c byte) int { - var n int - for i := 0; i < len(s); i++ { - if s[i] == c { - n++ +// SliceVisualEnd will take a byte slice and slice off the start +// up to a given visual index. If the index is in the middle of a +// rune the number of visual columns into the rune will be returned +func SliceVisualEnd(b []byte, n, tabsize int) ([]byte, int) { + width := 0 + for len(b) > 0 { + r, size := utf8.DecodeRune(b) + + w := 0 + switch r { + case '\t': + ts := tabsize - (width % tabsize) + w = ts + default: + w = runewidth.RuneWidth(r) } + if width+w > n { + return b, n - width + } + width += w + b = b[size:] + } + return b, width +} + +// Abs is a simple absolute value function for ints +func Abs(n int) int { + if n < 0 { + return -n } return n } -// Spaces returns a string with n spaces -func Spaces(n int) string { - return strings.Repeat(" ", n) +// StringWidth returns the visual width of a byte array indexed from 0 to n (rune index) +// with a given tabsize +func StringWidth(b []byte, n, tabsize int) int { + i := 0 + width := 0 + for len(b) > 0 { + r, size := utf8.DecodeRune(b) + b = b[size:] + + switch r { + case '\t': + ts := tabsize - (width % tabsize) + width += ts + default: + width += runewidth.RuneWidth(r) + } + + i++ + + if i == n { + return width + } + } + return width } // Min takes the min of two ints @@ -108,7 +128,6 @@ func Max(a, b int) int { // FSize gets the size of a file func FSize(f *os.File) int64 { fi, _ := f.Stat() - // get the size return fi.Size() } @@ -131,6 +150,7 @@ func IsWhitespace(c rune) bool { // IsStrWhitespace returns true if the given string is all whitespace func IsStrWhitespace(str string) bool { + // Range loop for unicode correctness for _, c := range str { if !IsWhitespace(c) { return false @@ -139,197 +159,12 @@ func IsStrWhitespace(str string) bool { return true } -// Contains returns whether or not a string array contains a given string -func Contains(list []string, a string) bool { - for _, b := range list { - if b == a { - return true - } - } - return false -} - -// Insert makes a simple insert into a string at the given position -func Insert(str string, pos int, value string) string { - return string([]rune(str)[:pos]) + value + string([]rune(str)[pos:]) -} - -// MakeRelative will attempt to make a relative path between path and base -func MakeRelative(path, base string) (string, error) { - if len(path) > 0 { - rel, err := filepath.Rel(base, path) - if err != nil { - return path, err - } - return rel, nil - } - return path, nil -} - -// GetLeadingWhitespace returns the leading whitespace of the given string -func GetLeadingWhitespace(str string) string { - ws := "" - for _, c := range str { - if c == ' ' || c == '\t' { - ws += string(c) - } else { - break - } - } - return ws -} - -// IsSpaces checks if a given string is only spaces -func IsSpaces(str []byte) bool { - for _, c := range str { - if c != ' ' { - return false - } - } - - return true -} - -// IsSpacesOrTabs checks if a given string contains only spaces and tabs -func IsSpacesOrTabs(str string) bool { - for _, c := range str { - if c != ' ' && c != '\t' { - return false - } - } - - return true -} - -// ParseBool is almost exactly like strconv.ParseBool, except it also accepts 'on' and 'off' -// as 'true' and 'false' respectively -func ParseBool(str string) (bool, error) { - if str == "on" { - return true, nil - } - if str == "off" { - return false, nil - } - return strconv.ParseBool(str) -} - -// EscapePath replaces every path separator in a given path with a % -func EscapePath(path string) string { - path = filepath.ToSlash(path) - return strings.Replace(path, "/", "%", -1) -} - -// GetModTime returns the last modification time for a given file -// It also returns a boolean if there was a problem accessing the file -func GetModTime(path string) (time.Time, bool) { - info, err := os.Stat(path) - if err != nil { - return time.Now(), false - } - return info.ModTime(), true -} - -// StringWidth returns the width of a string where tabs count as `tabsize` width -func StringWidth(str string, tabsize int) int { - sw := runewidth.StringWidth(str) - lineIdx := 0 - for _, ch := range str { - switch ch { - case '\t': - ts := tabsize - (lineIdx % tabsize) - sw += ts - lineIdx += ts - case '\n': - lineIdx = 0 - default: - lineIdx++ - } - } - return sw -} - -// WidthOfLargeRunes searches all the runes in a string and counts up all the widths of runes -// that have a width larger than 1 (this also counts tabs as `tabsize` width) -func WidthOfLargeRunes(str string, tabsize int) int { - count := 0 - lineIdx := 0 - for _, ch := range str { - var w int - if ch == '\t' { - w = tabsize - (lineIdx % tabsize) - } else { - w = runewidth.RuneWidth(ch) - } - if w > 1 { - count += (w - 1) - } - if ch == '\n' { - lineIdx = 0 - } else { - lineIdx += w - } - } - return count -} - -// RunePos returns the rune index of a given byte index -// This could cause problems if the byte index is between code points -func runePos(p int, str string) int { - return utf8.RuneCountInString(str[:p]) -} - -func lcs(a, b string) string { - arunes := []rune(a) - brunes := []rune(b) - - lcs := "" - for i, r := range arunes { - if i >= len(brunes) { - break - } - if r == brunes[i] { - lcs += string(r) - } else { - break - } - } - return lcs -} - -// CommonSubstring gets a common substring among the inputs -func CommonSubstring(arr ...string) string { - commonStr := arr[0] - - for _, str := range arr[1:] { - commonStr = lcs(commonStr, str) - } - - return commonStr -} - -// Abs is a simple absolute value function for ints -func Abs(n int) int { - if n < 0 { - return -n - } - return n -} - -// FuncName returns the full name of a given function object -func FuncName(i interface{}) string { - return runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name() -} - -// ShortFuncName returns the name only of a given function object -func ShortFuncName(i interface{}) string { - return strings.TrimPrefix(runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name(), "main.(*View).") -} - +// TODO: consider changing because of snap segfault // ReplaceHome takes a path as input and replaces ~ at the start of the path with the user's // home directory. Does nothing if the path does not start with '~'. -func ReplaceHome(path string) string { +func ReplaceHome(path string) (string, error) { if !strings.HasPrefix(path, "~") { - return path + return path, nil } var userData *user.User @@ -339,23 +174,18 @@ func ReplaceHome(path string) string { if homeString == "~" { userData, err = user.Current() if err != nil { - messenger.Error("Could not find user: ", err) + return "", errors.New("Could not find user: " + err.Error()) } } else { userData, err = user.Lookup(homeString[1:]) if err != nil { - if messenger != nil { - messenger.Error("Could not find user: ", err) - } else { - TermMessage("Could not find user: ", err) - } - return "" + return "", errors.New("Could not find user: " + err.Error()) } } home := userData.HomeDir - return strings.Replace(path, homeString, home, 1) + return strings.Replace(path, homeString, home, 1), nil } // GetPathAndCursorPosition returns a filename without everything following a `:` @@ -375,26 +205,11 @@ func GetPathAndCursorPosition(path string) (string, []string) { return match[1], []string{match[2], "0"} } -func ParseCursorLocation(cursorPositions []string) (Loc, error) { - startpos := Loc{0, 0} - var err error - - // if no positions are available exit early - if cursorPositions == nil { - return startpos, errors.New("No cursor positions were provided.") - } - - startpos.Y, err = strconv.Atoi(cursorPositions[0]) +// GetModTime returns the last modification time for a given file +func GetModTime(path string) (time.Time, error) { + info, err := os.Stat(path) if err != nil { - messenger.Error("Error parsing cursor position: ", err) - } else { - if len(cursorPositions) > 1 { - startpos.X, err = strconv.Atoi(cursorPositions[1]) - if err != nil { - messenger.Error("Error parsing cursor position: ", err) - } - } + return time.Now(), err } - - return startpos, err + return info.ModTime(), nil } diff --git a/cmd/micro/util_test.go b/cmd/micro/util_test.go index 849f52cb..0f900db9 100644 --- a/cmd/micro/util_test.go +++ b/cmd/micro/util_test.go @@ -2,330 +2,32 @@ package main import ( "testing" + + "github.com/stretchr/testify/assert" ) -func TestNumOccurences(t *testing.T) { - var tests = []struct { - inputStr string - inputChar byte - want int - }{ - {"aaaa", 'a', 4}, - {"\trfd\ta", '\t', 2}, - {"∆ƒ\tø ® \t\t", '\t', 3}, - } - for _, test := range tests { - if got := NumOccurrences(test.inputStr, test.inputChar); got != test.want { - t.Errorf("NumOccurences(%s, %c) = %d", test.inputStr, test.inputChar, got) - } - } -} - -func TestSpaces(t *testing.T) { - var tests = []struct { - input int - want string - }{ - {4, " "}, - {0, ""}, - } - for _, test := range tests { - if got := Spaces(test.input); got != test.want { - t.Errorf("Spaces(%d) = \"%s\"", test.input, got) - } - } -} - -func TestIsWordChar(t *testing.T) { - if IsWordChar("t") == false { - t.Errorf("IsWordChar(t) = false") - } - if IsWordChar("T") == false { - t.Errorf("IsWordChar(T) = false") - } - if IsWordChar("5") == false { - t.Errorf("IsWordChar(5) = false") - } - if IsWordChar("_") == false { - t.Errorf("IsWordChar(_) = false") - } - if IsWordChar("ß") == false { - t.Errorf("IsWordChar(ß) = false") - } - if IsWordChar("~") == true { - t.Errorf("IsWordChar(~) = true") - } - if IsWordChar(" ") == true { - t.Errorf("IsWordChar( ) = true") - } - if IsWordChar(")") == true { - t.Errorf("IsWordChar()) = true") - } - if IsWordChar("\n") == true { - t.Errorf("IsWordChar(\n)) = true") - } -} - func TestStringWidth(t *testing.T) { - tabsize := 4 - if w := StringWidth("1\t2", tabsize); w != 5 { - t.Error("StringWidth 1 Failed. Got", w) - } - if w := StringWidth("\t", tabsize); w != 4 { - t.Error("StringWidth 2 Failed. Got", w) - } - if w := StringWidth("1\t", tabsize); w != 4 { - t.Error("StringWidth 3 Failed. Got", w) - } - if w := StringWidth("\t\t", tabsize); w != 8 { - t.Error("StringWidth 4 Failed. Got", w) - } - if w := StringWidth("12\t2\t", tabsize); w != 8 { - t.Error("StringWidth 5 Failed. Got", w) - } + bytes := []byte("\tPot să \tmănânc sticlă și ea nu mă rănește.") + + n := StringWidth(bytes, 23, 4) + assert.Equal(t, 26, n) } -func TestWidthOfLargeRunes(t *testing.T) { - tabsize := 4 - if w := WidthOfLargeRunes("1\t2", tabsize); w != 2 { - t.Error("WidthOfLargeRunes 1 Failed. Got", w) - } - if w := WidthOfLargeRunes("\t", tabsize); w != 3 { - t.Error("WidthOfLargeRunes 2 Failed. Got", w) - } - if w := WidthOfLargeRunes("1\t", tabsize); w != 2 { - t.Error("WidthOfLargeRunes 3 Failed. Got", w) - } - if w := WidthOfLargeRunes("\t\t", tabsize); w != 6 { - t.Error("WidthOfLargeRunes 4 Failed. Got", w) - } - if w := WidthOfLargeRunes("12\t2\t", tabsize); w != 3 { - t.Error("WidthOfLargeRunes 5 Failed. Got", w) - } -} - -func assertEqual(t *testing.T, expected interface{}, result interface{}) { - if expected != result { - t.Fatalf("Expected: %d != Got: %d", expected, result) - } -} - -func assertTrue(t *testing.T, condition bool) { - if !condition { - t.Fatalf("Condition was not true. Got false") - } -} - -func TestGetPathRelativeWithDot(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition("./myfile:10:5") - - assertEqual(t, path, "./myfile") - assertEqual(t, "10", cursorPosition[0]) - assertEqual(t, "5", cursorPosition[1]) -} -func TestGetPathRelativeWithDotWindows(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition(".\\myfile:10:5") - - assertEqual(t, path, ".\\myfile") - assertEqual(t, "10", cursorPosition[0]) - assertEqual(t, cursorPosition[1], "5") -} -func TestGetPathRelativeNoDot(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition("myfile:10:5") - - assertEqual(t, path, "myfile") - assertEqual(t, "10", cursorPosition[0]) - - assertEqual(t, cursorPosition[1], "5") -} -func TestGetPathAbsoluteWindows(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition("C:\\myfile:10:5") - - assertEqual(t, path, "C:\\myfile") - assertEqual(t, "10", cursorPosition[0]) - - assertEqual(t, cursorPosition[1], "5") - - path, cursorPosition = GetPathAndCursorPosition("C:/myfile:10:5") - - assertEqual(t, path, "C:/myfile") - assertEqual(t, "10", cursorPosition[0]) - assertEqual(t, "5", cursorPosition[1]) -} - -func TestGetPathAbsoluteUnix(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition("/home/user/myfile:10:5") - - assertEqual(t, path, "/home/user/myfile") - assertEqual(t, "10", cursorPosition[0]) - assertEqual(t, "5", cursorPosition[1]) -} - -func TestGetPathRelativeWithDotWithoutLineAndColumn(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition("./myfile") - - assertEqual(t, path, "./myfile") - // no cursor position in filename, nil should be returned - assertTrue(t, cursorPosition == nil) -} -func TestGetPathRelativeWithDotWindowsWithoutLineAndColumn(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition(".\\myfile") - - assertEqual(t, path, ".\\myfile") - assertTrue(t, cursorPosition == nil) - -} -func TestGetPathRelativeNoDotWithoutLineAndColumn(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition("myfile") - - assertEqual(t, path, "myfile") - assertTrue(t, cursorPosition == nil) - -} -func TestGetPathAbsoluteWindowsWithoutLineAndColumn(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition("C:\\myfile") - - assertEqual(t, path, "C:\\myfile") - assertTrue(t, cursorPosition == nil) - - path, cursorPosition = GetPathAndCursorPosition("C:/myfile") - - assertEqual(t, path, "C:/myfile") - assertTrue(t, cursorPosition == nil) - -} -func TestGetPathAbsoluteUnixWithoutLineAndColumn(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition("/home/user/myfile") - - assertEqual(t, path, "/home/user/myfile") - assertTrue(t, cursorPosition == nil) - -} -func TestGetPathSingleLetterFileRelativePath(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition("a:5:6") - - assertEqual(t, path, "a") - assertEqual(t, "5", cursorPosition[0]) - assertEqual(t, "6", cursorPosition[1]) -} -func TestGetPathSingleLetterFileAbsolutePathWindows(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition("C:\\a:5:6") - - assertEqual(t, path, "C:\\a") - assertEqual(t, "5", cursorPosition[0]) - assertEqual(t, "6", cursorPosition[1]) - - path, cursorPosition = GetPathAndCursorPosition("C:/a:5:6") - - assertEqual(t, path, "C:/a") - assertEqual(t, "5", cursorPosition[0]) - assertEqual(t, "6", cursorPosition[1]) -} -func TestGetPathSingleLetterFileAbsolutePathUnix(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition("/home/user/a:5:6") - - assertEqual(t, path, "/home/user/a") - assertEqual(t, "5", cursorPosition[0]) - assertEqual(t, "6", cursorPosition[1]) -} -func TestGetPathSingleLetterFileAbsolutePathWindowsWithoutLineAndColumn(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition("C:\\a") - - assertEqual(t, path, "C:\\a") - assertTrue(t, cursorPosition == nil) - - path, cursorPosition = GetPathAndCursorPosition("C:/a") - - assertEqual(t, path, "C:/a") - assertTrue(t, cursorPosition == nil) - -} -func TestGetPathSingleLetterFileAbsolutePathUnixWithoutLineAndColumn(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition("/home/user/a") - - assertEqual(t, path, "/home/user/a") - assertTrue(t, cursorPosition == nil) - -} - -func TestGetPathRelativeWithDotOnlyLine(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition("./myfile:10") - - assertEqual(t, path, "./myfile") - assertEqual(t, "10", cursorPosition[0]) - assertEqual(t, "0", cursorPosition[1]) -} -func TestGetPathRelativeWithDotWindowsOnlyLine(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition(".\\myfile:10") - - assertEqual(t, path, ".\\myfile") - assertEqual(t, "10", cursorPosition[0]) - assertEqual(t, "0", cursorPosition[1]) -} -func TestGetPathRelativeNoDotOnlyLine(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition("myfile:10") - - assertEqual(t, path, "myfile") - assertEqual(t, "10", cursorPosition[0]) - assertEqual(t, "0", cursorPosition[1]) -} -func TestGetPathAbsoluteWindowsOnlyLine(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition("C:\\myfile:10") - - assertEqual(t, path, "C:\\myfile") - assertEqual(t, "10", cursorPosition[0]) - assertEqual(t, "0", cursorPosition[1]) - - path, cursorPosition = GetPathAndCursorPosition("C:/myfile:10") - - assertEqual(t, path, "C:/myfile") - assertEqual(t, "10", cursorPosition[0]) - assertEqual(t, "0", cursorPosition[1]) -} -func TestGetPathAbsoluteUnixOnlyLine(t *testing.T) { - path, cursorPosition := GetPathAndCursorPosition("/home/user/myfile:10") - - assertEqual(t, path, "/home/user/myfile") - assertEqual(t, "10", cursorPosition[0]) - assertEqual(t, "0", cursorPosition[1]) -} -func TestParseCursorLocationOneArg(t *testing.T) { - location, err := ParseCursorLocation([]string{"3"}) - - assertEqual(t, 3, location.Y) - assertEqual(t, 0, location.X) - assertEqual(t, nil, err) -} -func TestParseCursorLocationTwoArgs(t *testing.T) { - location, err := ParseCursorLocation([]string{"3", "15"}) - - assertEqual(t, 3, location.Y) - assertEqual(t, 15, location.X) - assertEqual(t, nil, err) -} -func TestParseCursorLocationNoArgs(t *testing.T) { - location, err := ParseCursorLocation(nil) - // the expected result is the start position - 0, 0 - assertEqual(t, 0, location.Y) - assertEqual(t, 0, location.X) - // an error will be present here as the positions we're parsing are a nil - assertTrue(t, err != nil) -} -func TestParseCursorLocationFirstArgNotValidNumber(t *testing.T) { - // the messenger is necessary as ParseCursorLocation - // puts a message in it on error - messenger = new(Messenger) - _, err := ParseCursorLocation([]string{"apples", "1"}) - // the expected result is the start position - 0, 0 - assertTrue(t, messenger.hasMessage) - assertTrue(t, err != nil) -} -func TestParseCursorLocationSecondArgNotValidNumber(t *testing.T) { - // the messenger is necessary as ParseCursorLocation - // puts a message in it on error - messenger = new(Messenger) - _, err := ParseCursorLocation([]string{"1", "apples"}) - // the expected result is the start position - 0, 0 - assertTrue(t, messenger.hasMessage) - assertTrue(t, err != nil) +func TestSliceVisualEnd(t *testing.T) { + s := []byte("\thello") + slc, n := SliceVisualEnd(s, 2, 4) + assert.Equal(t, []byte("\thello"), slc) + assert.Equal(t, 2, n) + + slc, n = SliceVisualEnd(s, 1, 4) + assert.Equal(t, []byte("\thello"), slc) + assert.Equal(t, 1, n) + + slc, n = SliceVisualEnd(s, 4, 4) + assert.Equal(t, []byte("hello"), slc) + assert.Equal(t, 0, n) + + slc, n = SliceVisualEnd(s, 5, 4) + assert.Equal(t, []byte("ello"), slc) + assert.Equal(t, 0, n) } diff --git a/cmd/micro/view.go b/cmd/micro/view.go deleted file mode 100644 index 7c9a0f12..00000000 --- a/cmd/micro/view.go +++ /dev/null @@ -1,1117 +0,0 @@ -package main - -import ( - "fmt" - "reflect" - "strconv" - "strings" - "time" - - "github.com/zyedidia/tcell" -) - -// The ViewType defines what kind of view this is -type ViewType struct { - Kind int - Readonly bool // The file cannot be edited - Scratch bool // The file cannot be saved -} - -var ( - vtDefault = ViewType{0, false, false} - vtHelp = ViewType{1, true, true} - vtLog = ViewType{2, true, true} - vtScratch = ViewType{3, false, true} - vtRaw = ViewType{4, true, true} - vtTerm = ViewType{5, true, true} -) - -// The View struct stores information about a view into a buffer. -// It stores information about the cursor, and the viewport -// that the user sees the buffer from. -type View struct { - // A pointer to the buffer's cursor for ease of access - Cursor *Cursor - - // The topmost line, used for vertical scrolling - Topline int - // The leftmost column, used for horizontal scrolling - leftCol int - - // Specifies whether or not this view holds a help buffer - Type ViewType - - // Actual width and height - Width int - Height int - - LockWidth bool - LockHeight bool - - // Where this view is located - x, y int - - // How much to offset because of line numbers - lineNumOffset int - - // Holds the list of gutter messages - messages map[string][]GutterMessage - - // This is the index of this view in the views array - Num int - // What tab is this view stored in - TabNum int - - // The buffer - Buf *Buffer - // The statusline - sline *Statusline - - // Since tcell doesn't differentiate between a mouse release event - // and a mouse move event with no keys pressed, we need to keep - // track of whether or not the mouse was pressed (or not released) last event to determine - // mouse release events - mouseReleased bool - - // We need to keep track of insert key press toggle - isOverwriteMode bool - // This stores when the last click was - // This is useful for detecting double and triple clicks - lastClickTime time.Time - lastLoc Loc - - // lastCutTime stores when the last ctrl+k was issued. - // It is used for clearing the clipboard to replace it with fresh cut lines. - lastCutTime time.Time - - // freshClip returns true if the clipboard has never been pasted. - freshClip bool - - // Was the last mouse event actually a double click? - // Useful for detecting triple clicks -- if a double click is detected - // but the last mouse event was actually a double click, it's a triple click - doubleClick bool - // Same here, just to keep track for mouse move events - tripleClick bool - - // The cellview used for displaying and syntax highlighting - cellview *CellView - - splitNode *LeafNode - - // The scrollbar - scrollbar *ScrollBar - - // Virtual terminal - term *Terminal -} - -// NewView returns a new fullscreen view -func NewView(buf *Buffer) *View { - screenW, screenH := screen.Size() - return NewViewWidthHeight(buf, screenW, screenH) -} - -// NewViewWidthHeight returns a new view with the specified width and height -// Note that w and h are raw column and row values -func NewViewWidthHeight(buf *Buffer, w, h int) *View { - v := new(View) - - v.x, v.y = 0, 0 - - v.Width = w - v.Height = h - v.cellview = new(CellView) - - v.ToggleTabbar() - - v.OpenBuffer(buf) - - v.messages = make(map[string][]GutterMessage) - - v.sline = &Statusline{ - view: v, - } - - v.scrollbar = &ScrollBar{ - view: v, - } - - if v.Buf.Settings["statusline"].(bool) { - v.Height-- - } - - v.term = new(Terminal) - - for pl := range loadedPlugins { - _, err := Call(pl+".onViewOpen", v) - if err != nil && !strings.HasPrefix(err.Error(), "function does not exist") { - TermMessage(err) - continue - } - } - - return v -} - -// ToggleStatusLine creates an extra row for the statusline if necessary -func (v *View) ToggleStatusLine() { - if v.Buf.Settings["statusline"].(bool) { - v.Height-- - } else { - v.Height++ - } -} - -// StartTerminal execs a command in this view -func (v *View) StartTerminal(execCmd []string, wait bool, getOutput bool, luaCallback string) error { - err := v.term.Start(execCmd, v, getOutput) - v.term.wait = wait - v.term.callback = luaCallback - if err == nil { - v.term.Resize(v.Width, v.Height) - v.Type = vtTerm - } - return err -} - -// CloseTerminal shuts down the tty running in this view -// and returns it to the default view type -func (v *View) CloseTerminal() { - v.term.Stop() -} - -// ToggleTabbar creates an extra row for the tabbar if necessary -func (v *View) ToggleTabbar() { - if len(tabs) > 1 { - if v.y == 0 { - // Include one line for the tab bar at the top - v.Height-- - v.y = 1 - } - } else { - if v.y == 1 { - v.y = 0 - v.Height++ - } - } -} - -func (v *View) paste(clip string) { - if v.Buf.Settings["smartpaste"].(bool) { - if v.Cursor.X > 0 && GetLeadingWhitespace(strings.TrimLeft(clip, "\r\n")) == "" { - leadingWS := GetLeadingWhitespace(v.Buf.Line(v.Cursor.Y)) - clip = strings.Replace(clip, "\n", "\n"+leadingWS, -1) - } - } - - if v.Cursor.HasSelection() { - v.Cursor.DeleteSelection() - v.Cursor.ResetSelection() - } - - v.Buf.Insert(v.Cursor.Loc, clip) - // v.Cursor.Loc = v.Cursor.Loc.Move(Count(clip), v.Buf) - v.freshClip = false - messenger.Message("Pasted clipboard") -} - -// ScrollUp scrolls the view up n lines (if possible) -func (v *View) ScrollUp(n int) { - // Try to scroll by n but if it would overflow, scroll by 1 - if v.Topline-n >= 0 { - v.Topline -= n - } else if v.Topline > 0 { - v.Topline-- - } -} - -// ScrollDown scrolls the view down n lines (if possible) -func (v *View) ScrollDown(n int) { - // Try to scroll by n but if it would overflow, scroll by 1 - if v.Topline+n <= v.Buf.NumLines { - v.Topline += n - } else if v.Topline < v.Buf.NumLines-1 { - v.Topline++ - } -} - -// CanClose returns whether or not the view can be closed -// If there are unsaved changes, the user will be asked if the view can be closed -// causing them to lose the unsaved changes -func (v *View) CanClose() bool { - if v.Type == vtDefault && v.Buf.Modified() { - var choice bool - var canceled bool - if v.Buf.Settings["autosave"].(bool) { - choice = true - } else { - choice, canceled = messenger.YesNoPrompt("Save changes to " + v.Buf.GetName() + " before closing? (y,n,esc) ") - } - if !canceled { - //if char == 'y' { - if choice { - v.Save(true) - } - } else { - return false - } - } - return true -} - -// OpenBuffer opens a new buffer in this view. -// This resets the topline, event handler and cursor. -func (v *View) OpenBuffer(buf *Buffer) { - screen.Clear() - v.CloseBuffer() - v.Buf = buf - v.Cursor = &buf.Cursor - v.Topline = 0 - v.leftCol = 0 - v.Cursor.ResetSelection() - v.Relocate() - v.Center(false) - v.messages = make(map[string][]GutterMessage) - - // Set mouseReleased to true because we assume the mouse is not being pressed when - // the editor is opened - v.mouseReleased = true - // Set isOverwriteMode to false, because we assume we are in the default mode when editor - // is opened - v.isOverwriteMode = false - v.lastClickTime = time.Time{} - - GlobalPluginCall("onBufferOpen", v.Buf) - GlobalPluginCall("onViewOpen", v) -} - -// Open opens the given file in the view -func (v *View) Open(path string) { - buf, err := NewBufferFromFile(path) - if err != nil { - messenger.Error(err) - return - } - v.OpenBuffer(buf) -} - -// CloseBuffer performs any closing functions on the buffer -func (v *View) CloseBuffer() { - if v.Buf != nil { - v.Buf.Serialize() - } -} - -// ReOpen reloads the current buffer -func (v *View) ReOpen() { - if v.CanClose() { - screen.Clear() - v.Buf.ReOpen() - v.Relocate() - } -} - -// HSplit opens a horizontal split with the given buffer -func (v *View) HSplit(buf *Buffer) { - i := 0 - if v.Buf.Settings["splitbottom"].(bool) { - i = 1 - } - v.splitNode.HSplit(buf, v.Num+i) -} - -// VSplit opens a vertical split with the given buffer -func (v *View) VSplit(buf *Buffer) { - i := 0 - if v.Buf.Settings["splitright"].(bool) { - i = 1 - } - v.splitNode.VSplit(buf, v.Num+i) -} - -// HSplitIndex opens a horizontal split with the given buffer at the given index -func (v *View) HSplitIndex(buf *Buffer, splitIndex int) { - v.splitNode.HSplit(buf, splitIndex) -} - -// VSplitIndex opens a vertical split with the given buffer at the given index -func (v *View) VSplitIndex(buf *Buffer, splitIndex int) { - v.splitNode.VSplit(buf, splitIndex) -} - -// GetSoftWrapLocation gets the location of a visual click on the screen and converts it to col,line -func (v *View) GetSoftWrapLocation(vx, vy int) (int, int) { - if !v.Buf.Settings["softwrap"].(bool) { - if vy >= v.Buf.NumLines { - vy = v.Buf.NumLines - 1 - } - vx = v.Cursor.GetCharPosInLine(vy, vx) - return vx, vy - } - - screenX, screenY := 0, v.Topline - for lineN := v.Topline; lineN < v.Bottomline(); lineN++ { - line := v.Buf.Line(lineN) - if lineN >= v.Buf.NumLines { - return 0, v.Buf.NumLines - 1 - } - - colN := 0 - for _, ch := range line { - if screenX >= v.Width-v.lineNumOffset { - screenX = 0 - screenY++ - } - - if screenX == vx && screenY == vy { - return colN, lineN - } - - if ch == '\t' { - screenX += int(v.Buf.Settings["tabsize"].(float64)) - 1 - } - - screenX++ - colN++ - } - if screenY == vy { - return colN, lineN - } - screenX = 0 - screenY++ - } - - return 0, 0 -} - -// Bottomline returns the line number of the lowest line in the view -// You might think that this is obviously just v.Topline + v.Height -// but if softwrap is enabled things get complicated since one buffer -// line can take up multiple lines in the view -func (v *View) Bottomline() int { - if !v.Buf.Settings["softwrap"].(bool) { - return v.Topline + v.Height - } - - screenX, screenY := 0, 0 - numLines := 0 - for lineN := v.Topline; lineN < v.Topline+v.Height; lineN++ { - line := v.Buf.Line(lineN) - - colN := 0 - for _, ch := range line { - if screenX >= v.Width-v.lineNumOffset { - screenX = 0 - screenY++ - } - - if ch == '\t' { - screenX += int(v.Buf.Settings["tabsize"].(float64)) - 1 - } - - screenX++ - colN++ - } - screenX = 0 - screenY++ - numLines++ - - if screenY >= v.Height { - break - } - } - return numLines + v.Topline -} - -// Relocate moves the view window so that the cursor is in view -// This is useful if the user has scrolled far away, and then starts typing -func (v *View) Relocate() bool { - height := v.Bottomline() - v.Topline - ret := false - cy := v.Cursor.Y - scrollmargin := int(v.Buf.Settings["scrollmargin"].(float64)) - if cy < v.Topline+scrollmargin && cy > scrollmargin-1 { - v.Topline = cy - scrollmargin - ret = true - } else if cy < v.Topline { - v.Topline = cy - ret = true - } - if cy > v.Topline+height-1-scrollmargin && cy < v.Buf.NumLines-scrollmargin { - v.Topline = cy - height + 1 + scrollmargin - ret = true - } else if cy >= v.Buf.NumLines-scrollmargin && cy >= height { - v.Topline = v.Buf.NumLines - height - ret = true - } - - if !v.Buf.Settings["softwrap"].(bool) { - cx := v.Cursor.GetVisualX() - if cx < v.leftCol { - v.leftCol = cx - ret = true - } - if cx+v.lineNumOffset+1 > v.leftCol+v.Width { - v.leftCol = cx - v.Width + v.lineNumOffset + 1 - ret = true - } - } - return ret -} - -// GetMouseClickLocation gets the location in the buffer from a mouse click -// on the screen -func (v *View) GetMouseClickLocation(x, y int) (int, int) { - x -= v.lineNumOffset - v.leftCol + v.x - y += v.Topline - v.y - - if y-v.Topline > v.Height-1 { - v.ScrollDown(1) - y = v.Height + v.Topline - 1 - } - if y < 0 { - y = 0 - } - if x < 0 { - x = 0 - } - - newX, newY := v.GetSoftWrapLocation(x, y) - if newX > Count(v.Buf.Line(newY)) { - newX = Count(v.Buf.Line(newY)) - } - - return newX, newY -} - -// MoveToMouseClick moves the cursor to location x, y assuming x, y were given -// by a mouse click -func (v *View) MoveToMouseClick(x, y int) { - if y-v.Topline > v.Height-1 { - v.ScrollDown(1) - y = v.Height + v.Topline - 1 - } - if y < 0 { - y = 0 - } - if x < 0 { - x = 0 - } - - x, y = v.GetSoftWrapLocation(x, y) - if x > Count(v.Buf.Line(y)) { - x = Count(v.Buf.Line(y)) - } - v.Cursor.X = x - v.Cursor.Y = y - v.Cursor.LastVisualX = v.Cursor.GetVisualX() -} - -// Execute actions executes the supplied actions -func (v *View) ExecuteActions(actions []func(*View, bool) bool) bool { - relocate := false - readonlyBindingsList := []string{"Delete", "Insert", "Backspace", "Cut", "Play", "Paste", "Move", "Add", "DuplicateLine", "Macro"} - for _, action := range actions { - readonlyBindingsResult := false - funcName := ShortFuncName(action) - curv := CurView() - if curv.Type.Readonly == true { - // check for readonly and if true only let key bindings get called if they do not change the contents. - for _, readonlyBindings := range readonlyBindingsList { - if strings.Contains(funcName, readonlyBindings) { - readonlyBindingsResult = true - } - } - } - if !readonlyBindingsResult { - // call the key binding - relocate = action(curv, true) || relocate - // Macro - if funcName != "ToggleMacro" && funcName != "PlayMacro" { - if recordingMacro { - curMacro = append(curMacro, action) - } - } - } - } - - return relocate -} - -// SetCursor sets the view's and buffer's cursor -func (v *View) SetCursor(c *Cursor) bool { - if c == nil { - return false - } - v.Cursor = c - v.Buf.curCursor = c.Num - - return true -} - -// HandleEvent handles an event passed by the main loop -func (v *View) HandleEvent(event tcell.Event) { - if v.Type == vtTerm { - v.term.HandleEvent(event) - return - } - - if v.Type == vtRaw { - v.Buf.Insert(v.Cursor.Loc, reflect.TypeOf(event).String()[7:]) - v.Buf.Insert(v.Cursor.Loc, fmt.Sprintf(": %q\n", event.EscSeq())) - - switch e := event.(type) { - case *tcell.EventKey: - if e.Key() == tcell.KeyCtrlQ { - v.Quit(true) - } - } - - return - } - - // This bool determines whether the view is relocated at the end of the function - // By default it's true because most events should cause a relocate - relocate := true - - v.Buf.CheckModTime() - - switch e := event.(type) { - case *tcell.EventRaw: - for key, actions := range bindings { - if key.keyCode == -1 { - if e.EscSeq() == key.escape { - for _, c := range v.Buf.cursors { - ok := v.SetCursor(c) - if !ok { - break - } - relocate = false - relocate = v.ExecuteActions(actions) || relocate - } - v.SetCursor(&v.Buf.Cursor) - v.Buf.MergeCursors() - break - } - } - } - case *tcell.EventKey: - // Check first if input is a key binding, if it is we 'eat' the input and don't insert a rune - isBinding := false - for key, actions := range bindings { - if e.Key() == key.keyCode { - if e.Key() == tcell.KeyRune { - if e.Rune() != key.r { - continue - } - } - if e.Modifiers() == key.modifiers { - for _, c := range v.Buf.cursors { - ok := v.SetCursor(c) - if !ok { - break - } - relocate = false - isBinding = true - relocate = v.ExecuteActions(actions) || relocate - } - v.SetCursor(&v.Buf.Cursor) - v.Buf.MergeCursors() - break - } - } - } - - if !isBinding && e.Key() == tcell.KeyRune { - // Check viewtype if readonly don't insert a rune (readonly help and log view etc.) - if v.Type.Readonly == false { - for _, c := range v.Buf.cursors { - v.SetCursor(c) - - // Insert a character - if v.Cursor.HasSelection() { - v.Cursor.DeleteSelection() - v.Cursor.ResetSelection() - } - - if v.isOverwriteMode { - next := v.Cursor.Loc - next.X++ - v.Buf.Replace(v.Cursor.Loc, next, string(e.Rune())) - } else { - v.Buf.Insert(v.Cursor.Loc, string(e.Rune())) - } - - for pl := range loadedPlugins { - _, err := Call(pl+".onRune", string(e.Rune()), v) - if err != nil && !strings.HasPrefix(err.Error(), "function does not exist") { - TermMessage(err) - } - } - - if recordingMacro { - curMacro = append(curMacro, e.Rune()) - } - } - v.SetCursor(&v.Buf.Cursor) - } - } - case *tcell.EventPaste: - // Check viewtype if readonly don't paste (readonly help and log view etc.) - if v.Type.Readonly == false { - if !PreActionCall("Paste", v) { - break - } - - for _, c := range v.Buf.cursors { - v.SetCursor(c) - v.paste(e.Text()) - } - v.SetCursor(&v.Buf.Cursor) - - PostActionCall("Paste", v) - } - case *tcell.EventMouse: - // Don't relocate for mouse events - relocate = false - - button := e.Buttons() - - for key, actions := range bindings { - if button == key.buttons && e.Modifiers() == key.modifiers { - for _, c := range v.Buf.cursors { - ok := v.SetCursor(c) - if !ok { - break - } - relocate = v.ExecuteActions(actions) || relocate - } - v.SetCursor(&v.Buf.Cursor) - v.Buf.MergeCursors() - } - } - - for key, actions := range mouseBindings { - if button == key.buttons && e.Modifiers() == key.modifiers { - for _, action := range actions { - action(v, true, e) - } - } - } - - switch button { - case tcell.ButtonNone: - // Mouse event with no click - if !v.mouseReleased { - // Mouse was just released - - x, y := e.Position() - x -= v.lineNumOffset - v.leftCol + v.x - y += v.Topline - v.y - - // Relocating here isn't really necessary because the cursor will - // be in the right place from the last mouse event - // However, if we are running in a terminal that doesn't support mouse motion - // events, this still allows the user to make selections, except only after they - // release the mouse - - if !v.doubleClick && !v.tripleClick { - v.MoveToMouseClick(x, y) - v.Cursor.SetSelectionEnd(v.Cursor.Loc) - v.Cursor.CopySelection("primary") - } - v.mouseReleased = true - } - } - } - - if relocate { - v.Relocate() - // We run relocate again because there's a bug with relocating with softwrap - // when for example you jump to the bottom of the buffer and it tries to - // calculate where to put the topline so that the bottom line is at the bottom - // of the terminal and it runs into problems with visual lines vs real lines. - // This is (hopefully) a temporary solution - v.Relocate() - } -} - -func (v *View) mainCursor() bool { - return v.Buf.curCursor == len(v.Buf.cursors)-1 -} - -// GutterMessage creates a message in this view's gutter -func (v *View) GutterMessage(section string, lineN int, msg string, kind int) { - lineN-- - gutterMsg := GutterMessage{ - lineNum: lineN, - msg: msg, - kind: kind, - } - for _, v := range v.messages { - for _, gmsg := range v { - if gmsg.lineNum == lineN { - return - } - } - } - messages := v.messages[section] - v.messages[section] = append(messages, gutterMsg) -} - -// ClearGutterMessages clears all gutter messages from a given section -func (v *View) ClearGutterMessages(section string) { - v.messages[section] = []GutterMessage{} -} - -// ClearAllGutterMessages clears all the gutter messages -func (v *View) ClearAllGutterMessages() { - for k := range v.messages { - v.messages[k] = []GutterMessage{} - } -} - -// Opens the given help page in a new horizontal split -func (v *View) openHelp(helpPage string) { - if data, err := FindRuntimeFile(RTHelp, helpPage).Data(); err != nil { - TermMessage("Unable to load help text", helpPage, "\n", err) - } else { - helpBuffer := NewBufferFromString(string(data), helpPage+".md") - helpBuffer.name = "Help" - - if v.Type == vtHelp { - v.OpenBuffer(helpBuffer) - } else { - v.HSplit(helpBuffer) - CurView().Type = vtHelp - } - } -} - -// DisplayView draws the view to the screen -func (v *View) DisplayView() { - if v.Type == vtTerm { - v.term.Display() - return - } - - if v.Buf.Settings["softwrap"].(bool) && v.leftCol != 0 { - v.leftCol = 0 - } - - if v.Type == vtLog || v.Type == vtRaw { - // Log or raw views should always follow the cursor... - v.Relocate() - } - - // We need to know the string length of the largest line number - // so we can pad appropriately when displaying line numbers - maxLineNumLength := len(strconv.Itoa(v.Buf.NumLines)) - - if v.Buf.Settings["ruler"] == true { - // + 1 for the little space after the line number - v.lineNumOffset = maxLineNumLength + 1 - } else { - v.lineNumOffset = 0 - } - - // We need to add to the line offset if there are gutter messages - var hasGutterMessages bool - for _, v := range v.messages { - if len(v) > 0 { - hasGutterMessages = true - } - } - if hasGutterMessages { - v.lineNumOffset += 2 - } - - divider := 0 - if v.x != 0 { - // One space for the extra split divider - v.lineNumOffset++ - divider = 1 - } - - xOffset := v.x + v.lineNumOffset - yOffset := v.y - - height := v.Height - width := v.Width - left := v.leftCol - top := v.Topline - - v.cellview.Draw(v.Buf, top, height, left, width-v.lineNumOffset) - - screenX := v.x - realLineN := top - 1 - visualLineN := 0 - var line []*Char - for visualLineN, line = range v.cellview.lines { - var firstChar *Char - if len(line) > 0 { - firstChar = line[0] - } - - var softwrapped bool - if firstChar != nil { - if firstChar.realLoc.Y == realLineN { - softwrapped = true - } - realLineN = firstChar.realLoc.Y - } else { - realLineN++ - } - - colorcolumn := int(v.Buf.Settings["colorcolumn"].(float64)) - if colorcolumn != 0 && xOffset+colorcolumn-v.leftCol < v.Width { - style := GetColor("color-column") - fg, _, _ := style.Decompose() - st := defStyle.Background(fg) - screen.SetContent(xOffset+colorcolumn-v.leftCol, yOffset+visualLineN, ' ', nil, st) - } - - screenX = v.x - - // If there are gutter messages we need to display the '>>' symbol here - if hasGutterMessages { - // msgOnLine stores whether or not there is a gutter message on this line in particular - msgOnLine := false - for k := range v.messages { - for _, msg := range v.messages[k] { - if msg.lineNum == realLineN { - msgOnLine = true - gutterStyle := defStyle - switch msg.kind { - case GutterInfo: - if style, ok := colorscheme["gutter-info"]; ok { - gutterStyle = style - } - case GutterWarning: - if style, ok := colorscheme["gutter-warning"]; ok { - gutterStyle = style - } - case GutterError: - if style, ok := colorscheme["gutter-error"]; ok { - gutterStyle = style - } - } - screen.SetContent(screenX, yOffset+visualLineN, '>', nil, gutterStyle) - screenX++ - screen.SetContent(screenX, yOffset+visualLineN, '>', nil, gutterStyle) - screenX++ - if v.Cursor.Y == realLineN && !messenger.hasPrompt { - messenger.Message(msg.msg) - messenger.gutterMessage = true - } - } - } - } - // If there is no message on this line we just display an empty offset - if !msgOnLine { - screen.SetContent(screenX, yOffset+visualLineN, ' ', nil, defStyle) - screenX++ - screen.SetContent(screenX, yOffset+visualLineN, ' ', nil, defStyle) - screenX++ - if v.Cursor.Y == realLineN && messenger.gutterMessage { - messenger.Reset() - messenger.gutterMessage = false - } - } - } - - lineNumStyle := defStyle - if v.Buf.Settings["ruler"] == true { - // Write the line number - if style, ok := colorscheme["line-number"]; ok { - lineNumStyle = style - } - if style, ok := colorscheme["current-line-number"]; ok { - if realLineN == v.Cursor.Y && tabs[curTab].CurView == v.Num && !v.Cursor.HasSelection() { - lineNumStyle = style - } - } - - lineNum := strconv.Itoa(realLineN + 1) - - // Write the spaces before the line number if necessary - for i := 0; i < maxLineNumLength-len(lineNum); i++ { - screen.SetContent(screenX+divider, yOffset+visualLineN, ' ', nil, lineNumStyle) - screenX++ - } - if softwrapped && visualLineN != 0 { - // Pad without the line number because it was written on the visual line before - for range lineNum { - screen.SetContent(screenX+divider, yOffset+visualLineN, ' ', nil, lineNumStyle) - screenX++ - } - } else { - // Write the actual line number - for _, ch := range lineNum { - screen.SetContent(screenX+divider, yOffset+visualLineN, ch, nil, lineNumStyle) - screenX++ - } - } - - // Write the extra space - screen.SetContent(screenX+divider, yOffset+visualLineN, ' ', nil, lineNumStyle) - screenX++ - } - - var lastChar *Char - cursorSet := false - for _, char := range line { - if char != nil { - lineStyle := char.style - - colorcolumn := int(v.Buf.Settings["colorcolumn"].(float64)) - if colorcolumn != 0 && char.visualLoc.X == colorcolumn { - style := GetColor("color-column") - fg, _, _ := style.Decompose() - lineStyle = lineStyle.Background(fg) - } - - charLoc := char.realLoc - for _, c := range v.Buf.cursors { - v.SetCursor(c) - if v.Cursor.HasSelection() && - (charLoc.GreaterEqual(v.Cursor.CurSelection[0]) && charLoc.LessThan(v.Cursor.CurSelection[1]) || - charLoc.LessThan(v.Cursor.CurSelection[0]) && charLoc.GreaterEqual(v.Cursor.CurSelection[1])) { - // The current character is selected - lineStyle = defStyle.Reverse(true) - - if style, ok := colorscheme["selection"]; ok { - lineStyle = style - } - } - } - v.SetCursor(&v.Buf.Cursor) - - if v.Buf.Settings["cursorline"].(bool) && tabs[curTab].CurView == v.Num && - !v.Cursor.HasSelection() && v.Cursor.Y == realLineN { - style := GetColor("cursor-line") - fg, _, _ := style.Decompose() - lineStyle = lineStyle.Background(fg) - } - - screen.SetContent(xOffset+char.visualLoc.X, yOffset+char.visualLoc.Y, char.drawChar, nil, lineStyle) - - for i, c := range v.Buf.cursors { - v.SetCursor(c) - if tabs[curTab].CurView == v.Num && !v.Cursor.HasSelection() && - v.Cursor.Y == char.realLoc.Y && v.Cursor.X == char.realLoc.X && (!cursorSet || i != 0) { - ShowMultiCursor(xOffset+char.visualLoc.X, yOffset+char.visualLoc.Y, i) - cursorSet = true - } - } - v.SetCursor(&v.Buf.Cursor) - - lastChar = char - } - } - - lastX := 0 - var realLoc Loc - var visualLoc Loc - var cx, cy int - if lastChar != nil { - lastX = xOffset + lastChar.visualLoc.X + lastChar.width - for i, c := range v.Buf.cursors { - v.SetCursor(c) - if tabs[curTab].CurView == v.Num && !v.Cursor.HasSelection() && - v.Cursor.Y == lastChar.realLoc.Y && v.Cursor.X == lastChar.realLoc.X+1 { - ShowMultiCursor(lastX, yOffset+lastChar.visualLoc.Y, i) - cx, cy = lastX, yOffset+lastChar.visualLoc.Y - } - } - v.SetCursor(&v.Buf.Cursor) - realLoc = Loc{lastChar.realLoc.X + 1, realLineN} - visualLoc = Loc{lastX - xOffset, lastChar.visualLoc.Y} - } else if len(line) == 0 { - for i, c := range v.Buf.cursors { - v.SetCursor(c) - if tabs[curTab].CurView == v.Num && !v.Cursor.HasSelection() && - v.Cursor.Y == realLineN { - ShowMultiCursor(xOffset, yOffset+visualLineN, i) - cx, cy = xOffset, yOffset+visualLineN - } - } - v.SetCursor(&v.Buf.Cursor) - lastX = xOffset - realLoc = Loc{0, realLineN} - visualLoc = Loc{0, visualLineN} - } - - if v.Cursor.HasSelection() && - (realLoc.GreaterEqual(v.Cursor.CurSelection[0]) && realLoc.LessThan(v.Cursor.CurSelection[1]) || - realLoc.LessThan(v.Cursor.CurSelection[0]) && realLoc.GreaterEqual(v.Cursor.CurSelection[1])) { - // The current character is selected - selectStyle := defStyle.Reverse(true) - - if style, ok := colorscheme["selection"]; ok { - selectStyle = style - } - screen.SetContent(xOffset+visualLoc.X, yOffset+visualLoc.Y, ' ', nil, selectStyle) - } - - if v.Buf.Settings["cursorline"].(bool) && tabs[curTab].CurView == v.Num && - !v.Cursor.HasSelection() && v.Cursor.Y == realLineN { - for i := lastX; i < xOffset+v.Width-v.lineNumOffset; i++ { - style := GetColor("cursor-line") - fg, _, _ := style.Decompose() - style = style.Background(fg) - if !(tabs[curTab].CurView == v.Num && !v.Cursor.HasSelection() && i == cx && yOffset+visualLineN == cy) { - screen.SetContent(i, yOffset+visualLineN, ' ', nil, style) - } - } - } - } - - if divider != 0 { - dividerStyle := defStyle - if style, ok := colorscheme["divider"]; ok { - dividerStyle = style - } - for i := 0; i < v.Height; i++ { - screen.SetContent(v.x, yOffset+i, '|', nil, dividerStyle.Reverse(true)) - } - } -} - -// ShowMultiCursor will display a cursor at a location -// If i == 0 then the terminal cursor will be used -// Otherwise a fake cursor will be drawn at the position -func ShowMultiCursor(x, y, i int) { - if i == 0 { - screen.ShowCursor(x, y) - } else { - r, _, _, _ := screen.GetContent(x, y) - screen.SetContent(x, y, r, nil, defStyle.Reverse(true)) - } -} - -// Display renders the view, the cursor, and statusline -func (v *View) Display() { - if globalSettings["termtitle"].(bool) { - screen.SetTitle("micro: " + v.Buf.GetName()) - } - v.DisplayView() - // Don't draw the cursor if it is out of the viewport or if it has a selection - if v.Num == tabs[curTab].CurView && (v.Cursor.Y-v.Topline < 0 || v.Cursor.Y-v.Topline > v.Height-1 || v.Cursor.HasSelection()) { - screen.HideCursor() - } - _, screenH := screen.Size() - - if v.Buf.Settings["scrollbar"].(bool) { - v.scrollbar.Display() - } - - if v.Buf.Settings["statusline"].(bool) { - v.sline.Display() - } else if (v.y + v.Height) != screenH-1 { - for x := 0; x < v.Width; x++ { - screen.SetContent(v.x+x, v.y+v.Height, '-', nil, defStyle.Reverse(true)) - } - } -} diff --git a/cmd/micro/window.go b/cmd/micro/window.go new file mode 100644 index 00000000..4a14aed9 --- /dev/null +++ b/cmd/micro/window.go @@ -0,0 +1,187 @@ +package main + +import ( + "strconv" + "unicode/utf8" + + runewidth "github.com/mattn/go-runewidth" + "github.com/zyedidia/tcell" +) + +type Window struct { + // X and Y coordinates for the top left of the window + X int + Y int + + // Width and Height for the window + Width int + Height int + + // Which line in the buffer to start displaying at (vertical scroll) + StartLine int + // Which visual column in the to start displaying at (horizontal scroll) + StartCol int + + // Buffer being shown in this window + Buf *Buffer + + sline *StatusLine +} + +func NewWindow(x, y, width, height int, buf *Buffer) *Window { + w := new(Window) + w.X, w.Y, w.Width, w.Height, w.Buf = x, y, width, height, buf + + w.sline = NewStatusLine(w) + + return w +} + +func (w *Window) DrawLineNum(lineNumStyle tcell.Style, softwrapped bool, maxLineNumLength int, vloc *Loc, bloc *Loc) { + lineNum := strconv.Itoa(bloc.Y + 1) + + // Write the spaces before the line number if necessary + for i := 0; i < maxLineNumLength-len(lineNum); i++ { + screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ' ', nil, lineNumStyle) + vloc.X++ + } + // Write the actual line number + for _, ch := range lineNum { + if softwrapped { + screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ' ', nil, lineNumStyle) + } else { + screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ch, nil, lineNumStyle) + } + vloc.X++ + } + + // Write the extra space + screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ' ', nil, lineNumStyle) + vloc.X++ +} + +// GetStyle returns the highlight style for the given character position +// If there is no change to the current highlight style it just returns that +func (w *Window) GetStyle(style tcell.Style, bloc Loc, r rune) tcell.Style { + if group, ok := w.Buf.Match(bloc.Y)[bloc.X]; ok { + s := GetColor(group.String()) + return s + } + return style +} + +// DisplayBuffer draws the buffer being shown in this window on the screen +func (w *Window) DisplayBuffer() { + b := w.Buf + + bufHeight := w.Height + if b.Settings["statusline"].(bool) { + bufHeight-- + } + + // TODO: Rehighlighting + // start := w.StartLine + if b.Settings["syntax"].(bool) && b.syntaxDef != nil { + // if start > 0 && b.lines[start-1].rehighlight { + // b.highlighter.ReHighlightLine(b, start-1) + // b.lines[start-1].rehighlight = false + // } + // + // b.highlighter.ReHighlightStates(b, start) + // + b.highlighter.HighlightMatches(b, w.StartLine, w.StartLine+bufHeight) + } + + lineNumStyle := defStyle + if style, ok := colorscheme["line-number"]; ok { + lineNumStyle = style + } + + // We need to know the string length of the largest line number + // so we can pad appropriately when displaying line numbers + maxLineNumLength := len(strconv.Itoa(len(b.lines))) + + tabsize := int(b.Settings["tabsize"].(float64)) + softwrap := b.Settings["softwrap"].(bool) + + // this represents the current draw position + // within the current window + vloc := Loc{0, 0} + + // this represents the current draw position in the buffer (char positions) + bloc := Loc{w.StartCol, w.StartLine} + + curStyle := defStyle + for vloc.Y = 0; vloc.Y < bufHeight; vloc.Y++ { + vloc.X = 0 + if b.Settings["ruler"].(bool) { + w.DrawLineNum(lineNumStyle, false, maxLineNumLength, &vloc, &bloc) + } + + line := b.LineBytes(bloc.Y) + line, nColsBeforeStart := SliceVisualEnd(line, bloc.X, tabsize) + totalwidth := bloc.X - nColsBeforeStart + for len(line) > 0 { + r, size := utf8.DecodeRune(line) + + curStyle = w.GetStyle(curStyle, bloc, r) + + if nColsBeforeStart <= 0 { + screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, r, nil, curStyle) + vloc.X++ + } + nColsBeforeStart-- + + width := 0 + + char := ' ' + switch r { + case '\t': + ts := tabsize - (totalwidth % tabsize) + width = ts + default: + width = runewidth.RuneWidth(r) + char = '@' + } + + bloc.X++ + line = line[size:] + + // Draw any extra characters either spaces for tabs or @ for incomplete wide runes + if width > 1 { + for i := 1; i < width; i++ { + if nColsBeforeStart <= 0 { + screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, char, nil, curStyle) + vloc.X++ + } + nColsBeforeStart-- + } + } + totalwidth += width + + // If we reach the end of the window then we either stop or we wrap for softwrap + if vloc.X >= w.Width { + if !softwrap { + break + } else { + vloc.Y++ + if vloc.Y >= bufHeight { + break + } + vloc.X = 0 + // This will draw an empty line number because the current line is wrapped + w.DrawLineNum(lineNumStyle, true, maxLineNumLength, &vloc, &bloc) + } + } + } + bloc.X = w.StartCol + bloc.Y++ + if bloc.Y >= len(b.lines) { + break + } + } +} + +func (w *Window) DisplayStatusLine() { + w.sline.Display() +} From dd619b3ff530d717a28526bde7ef5469ebabab31 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 27 Aug 2018 15:53:10 -0400 Subject: [PATCH 018/231] Reorganize file structure --- cmd/micro/actionhandler.go | 68 +- cmd/micro/actions.go | 492 +++ cmd/micro/actions_other.go | 8 + cmd/micro/actions_posix.go | 35 + cmd/micro/bindings.go | 439 +++ cmd/micro/bufactionhandler.go | 207 + cmd/micro/{ => buffer}/buffer.go | 198 +- cmd/micro/{ => buffer}/cursor.go | 57 +- cmd/micro/{ => buffer}/eventhandler.go | 6 +- cmd/micro/{ => buffer}/line_array.go | 2 +- cmd/micro/{ => buffer}/line_array_test.go | 2 +- cmd/micro/{ => buffer}/loc.go | 10 +- cmd/micro/{ => buffer}/stack.go | 2 +- cmd/micro/{ => buffer}/stack_test.go | 2 +- cmd/micro/{ => config}/colorscheme.go | 37 +- cmd/micro/{ => config}/colorscheme_test.go | 2 +- cmd/micro/config/config.go | 54 + cmd/micro/{ => config}/rtfiles.go | 16 +- cmd/micro/{ => config}/rtfiles_test.go | 2 +- cmd/micro/config/runtime.go | 4027 +++++++++++++++++++ cmd/micro/{ => config}/settings.go | 46 +- cmd/micro/cursor_test.go | 1 - cmd/micro/debug.go | 4 +- cmd/micro/infobar.go | 82 + cmd/micro/{ => lua}/lua.go | 2 +- cmd/micro/micro.go | 184 +- cmd/micro/runtime.go | 4119 -------------------- cmd/micro/screen/screen.go | 67 + cmd/micro/statusline.go | 37 +- cmd/micro/{ => util}/message.go | 14 +- cmd/micro/{ => util}/profile.go | 16 +- cmd/micro/{ => util}/util.go | 9 +- cmd/micro/{ => util}/util_test.go | 2 +- cmd/micro/window.go | 56 +- 34 files changed, 5822 insertions(+), 4483 deletions(-) create mode 100644 cmd/micro/actions.go create mode 100644 cmd/micro/actions_other.go create mode 100644 cmd/micro/actions_posix.go create mode 100644 cmd/micro/bindings.go create mode 100644 cmd/micro/bufactionhandler.go rename cmd/micro/{ => buffer}/buffer.go (75%) rename cmd/micro/{ => buffer}/cursor.go (81%) rename cmd/micro/{ => buffer}/eventhandler.go (98%) rename cmd/micro/{ => buffer}/line_array.go (99%) rename cmd/micro/{ => buffer}/line_array_test.go (99%) rename cmd/micro/{ => buffer}/loc.go (94%) rename cmd/micro/{ => buffer}/stack.go (98%) rename cmd/micro/{ => buffer}/stack_test.go (97%) rename cmd/micro/{ => config}/colorscheme.go (91%) rename cmd/micro/{ => config}/colorscheme_test.go (99%) create mode 100644 cmd/micro/config/config.go rename cmd/micro/{ => config}/rtfiles.go (92%) rename cmd/micro/{ => config}/rtfiles_test.go (98%) create mode 100644 cmd/micro/config/runtime.go rename cmd/micro/{ => config}/settings.go (92%) delete mode 100644 cmd/micro/cursor_test.go create mode 100644 cmd/micro/infobar.go rename cmd/micro/{ => lua}/lua.go (99%) delete mode 100644 cmd/micro/runtime.go create mode 100644 cmd/micro/screen/screen.go rename cmd/micro/{ => util}/message.go (77%) rename cmd/micro/{ => util}/profile.go (61%) rename cmd/micro/{ => util}/util.go (95%) rename cmd/micro/{ => util}/util_test.go (98%) diff --git a/cmd/micro/actionhandler.go b/cmd/micro/actionhandler.go index 3cceabd8..26bfe753 100644 --- a/cmd/micro/actionhandler.go +++ b/cmd/micro/actionhandler.go @@ -1,40 +1,38 @@ package main -import "time" +import ( + "github.com/zyedidia/tcell" +) -// The ActionHandler connects the buffer and the window -// It provides a cursor (or multiple) and defines a set of actions -// that can be taken on the buffer -// The ActionHandler can access the window for necessary info about -// visual positions for mouse clicks and scrolling -type ActionHandler struct { - Buf *Buffer - Win *Window +type Event interface{} - // Since tcell doesn't differentiate between a mouse release event - // and a mouse move event with no keys pressed, we need to keep - // track of whether or not the mouse was pressed (or not released) last event to determine - // mouse release events - mouseReleased bool - - // We need to keep track of insert key press toggle - isOverwriteMode bool - // This stores when the last click was - // This is useful for detecting double and triple clicks - lastClickTime time.Time - lastLoc Loc - - // lastCutTime stores when the last ctrl+k was issued. - // It is used for clearing the clipboard to replace it with fresh cut lines. - lastCutTime time.Time - - // freshClip returns true if the clipboard has never been pasted. - freshClip bool - - // Was the last mouse event actually a double click? - // Useful for detecting triple clicks -- if a double click is detected - // but the last mouse event was actually a double click, it's a triple click - doubleClick bool - // Same here, just to keep track for mouse move events - tripleClick bool +// RawEvent is simply an escape code +// We allow users to directly bind escape codes +// to get around some of a limitations of terminals +type RawEvent struct { + esc string +} + +// KeyEvent is a key event containing a key code, +// some possible modifiers (alt, ctrl, etc...) and +// a rune if it was simply a character press +// Note: to be compatible with tcell events, +// for ctrl keys r=code +type KeyEvent struct { + code tcell.Key + mod tcell.ModMask + r rune +} + +// MouseEvent is a mouse event with a mouse button and +// any possible key modifiers +type MouseEvent struct { + btn tcell.ButtonMask + mod tcell.ModMask +} + +// An ActionHandler will take a tcell event and execute it +// appropriately +type ActionHandler interface { + HandleEvent(tcell.Event) } diff --git a/cmd/micro/actions.go b/cmd/micro/actions.go new file mode 100644 index 00000000..1af5085c --- /dev/null +++ b/cmd/micro/actions.go @@ -0,0 +1,492 @@ +package main + +import ( + "os" + + "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/tcell" +) + +// MousePress is the event that should happen when a normal click happens +// This is almost always bound to left click +func (a *BufActionHandler) MousePress(e *tcell.EventMouse) bool { + return false +} + +// ScrollUpAction scrolls the view up +func (a *BufActionHandler) ScrollUpAction() bool { + return false +} + +// ScrollDownAction scrolls the view up +func (a *BufActionHandler) ScrollDownAction() bool { + return false +} + +// Center centers the view on the cursor +func (a *BufActionHandler) Center() bool { + return true +} + +// CursorUp moves the cursor up +func (a *BufActionHandler) CursorUp() bool { + return true +} + +// CursorDown moves the cursor down +func (a *BufActionHandler) CursorDown() bool { + return true +} + +// CursorLeft moves the cursor left +func (a *BufActionHandler) CursorLeft() bool { + return true +} + +// CursorRight moves the cursor right +func (a *BufActionHandler) CursorRight() bool { + return true +} + +// WordRight moves the cursor one word to the right +func (a *BufActionHandler) WordRight() bool { + return true +} + +// WordLeft moves the cursor one word to the left +func (a *BufActionHandler) WordLeft() bool { + return true +} + +// SelectUp selects up one line +func (a *BufActionHandler) SelectUp() bool { + return true +} + +// SelectDown selects down one line +func (a *BufActionHandler) SelectDown() bool { + return true +} + +// SelectLeft selects the character to the left of the cursor +func (a *BufActionHandler) SelectLeft() bool { + return true +} + +// SelectRight selects the character to the right of the cursor +func (a *BufActionHandler) SelectRight() bool { + return true +} + +// SelectWordRight selects the word to the right of the cursor +func (a *BufActionHandler) SelectWordRight() bool { + return true +} + +// SelectWordLeft selects the word to the left of the cursor +func (a *BufActionHandler) SelectWordLeft() bool { + return true +} + +// StartOfLine moves the cursor to the start of the line +func (a *BufActionHandler) StartOfLine() bool { + return true +} + +// EndOfLine moves the cursor to the end of the line +func (a *BufActionHandler) EndOfLine() bool { + return true +} + +// SelectLine selects the entire current line +func (a *BufActionHandler) SelectLine() bool { + return true +} + +// SelectToStartOfLine selects to the start of the current line +func (a *BufActionHandler) SelectToStartOfLine() bool { + return true +} + +// SelectToEndOfLine selects to the end of the current line +func (a *BufActionHandler) SelectToEndOfLine() bool { + return true +} + +// ParagraphPrevious moves the cursor to the previous empty line, or beginning of the buffer if there's none +func (a *BufActionHandler) ParagraphPrevious() bool { + return true +} + +// ParagraphNext moves the cursor to the next empty line, or end of the buffer if there's none +func (a *BufActionHandler) ParagraphNext() bool { + return true +} + +// Retab changes all tabs to spaces or all spaces to tabs depending +// on the user's settings +func (a *BufActionHandler) Retab() bool { + return true +} + +// CursorStart moves the cursor to the start of the buffer +func (a *BufActionHandler) CursorStart() bool { + return true +} + +// CursorEnd moves the cursor to the end of the buffer +func (a *BufActionHandler) CursorEnd() bool { + return true +} + +// SelectToStart selects the text from the cursor to the start of the buffer +func (a *BufActionHandler) SelectToStart() bool { + return true +} + +// SelectToEnd selects the text from the cursor to the end of the buffer +func (a *BufActionHandler) SelectToEnd() bool { + return true +} + +// InsertSpace inserts a space +func (a *BufActionHandler) InsertSpace() bool { + return true +} + +// InsertNewline inserts a newline plus possible some whitespace if autoindent is on +func (a *BufActionHandler) InsertNewline() bool { + return true +} + +// Backspace deletes the previous character +func (a *BufActionHandler) Backspace() bool { + return true +} + +// DeleteWordRight deletes the word to the right of the cursor +func (a *BufActionHandler) DeleteWordRight() bool { + return true +} + +// DeleteWordLeft deletes the word to the left of the cursor +func (a *BufActionHandler) DeleteWordLeft() bool { + return true +} + +// Delete deletes the next character +func (a *BufActionHandler) Delete() bool { + return true +} + +// IndentSelection indents the current selection +func (a *BufActionHandler) IndentSelection() bool { + return false +} + +// OutdentLine moves the current line back one indentation +func (a *BufActionHandler) OutdentLine() bool { + return true +} + +// OutdentSelection takes the current selection and moves it back one indent level +func (a *BufActionHandler) OutdentSelection() bool { + return false +} + +// InsertTab inserts a tab or spaces +func (a *BufActionHandler) InsertTab() bool { + return true +} + +// SaveAll saves all open buffers +func (a *BufActionHandler) SaveAll() bool { + return false +} + +// Save the buffer to disk +func (a *BufActionHandler) Save() bool { + return false +} + +// SaveAs saves the buffer to disk with the given name +func (a *BufActionHandler) SaveAs() bool { + return false +} + +// Find opens a prompt and searches forward for the input +func (a *BufActionHandler) Find() bool { + return true +} + +// FindNext searches forwards for the last used search term +func (a *BufActionHandler) FindNext() bool { + return true +} + +// FindPrevious searches backwards for the last used search term +func (a *BufActionHandler) FindPrevious() bool { + return true +} + +// Undo undoes the last action +func (a *BufActionHandler) Undo() bool { + return true +} + +// Redo redoes the last action +func (a *BufActionHandler) Redo() bool { + return true +} + +// Copy the selection to the system clipboard +func (a *BufActionHandler) Copy() bool { + return true +} + +// CutLine cuts the current line to the clipboard +func (a *BufActionHandler) CutLine() bool { + return true +} + +// Cut the selection to the system clipboard +func (a *BufActionHandler) Cut() bool { + return true +} + +// DuplicateLine duplicates the current line or selection +func (a *BufActionHandler) DuplicateLine() bool { + return true +} + +// DeleteLine deletes the current line +func (a *BufActionHandler) DeleteLine() bool { + return true +} + +// MoveLinesUp moves up the current line or selected lines if any +func (a *BufActionHandler) MoveLinesUp() bool { + return true +} + +// MoveLinesDown moves down the current line or selected lines if any +func (a *BufActionHandler) MoveLinesDown() bool { + return true +} + +// Paste whatever is in the system clipboard into the buffer +// Delete and paste if the user has a selection +func (a *BufActionHandler) Paste() bool { + return true +} + +// PastePrimary pastes from the primary clipboard (only use on linux) +func (a *BufActionHandler) PastePrimary() bool { + return true +} + +// JumpToMatchingBrace moves the cursor to the matching brace if it is +// currently on a brace +func (a *BufActionHandler) JumpToMatchingBrace() bool { + return true +} + +// SelectAll selects the entire buffer +func (a *BufActionHandler) SelectAll() bool { + return true +} + +// OpenFile opens a new file in the buffer +func (a *BufActionHandler) OpenFile() bool { + return false +} + +// Start moves the viewport to the start of the buffer +func (a *BufActionHandler) Start() bool { + return false +} + +// End moves the viewport to the end of the buffer +func (a *BufActionHandler) End() bool { + return false +} + +// PageUp scrolls the view up a page +func (a *BufActionHandler) PageUp() bool { + return false +} + +// PageDown scrolls the view down a page +func (a *BufActionHandler) PageDown() bool { + return false +} + +// SelectPageUp selects up one page +func (a *BufActionHandler) SelectPageUp() bool { + return true +} + +// SelectPageDown selects down one page +func (a *BufActionHandler) SelectPageDown() bool { + return true +} + +// CursorPageUp places the cursor a page up +func (a *BufActionHandler) CursorPageUp() bool { + return true +} + +// CursorPageDown places the cursor a page up +func (a *BufActionHandler) CursorPageDown() bool { + return true +} + +// HalfPageUp scrolls the view up half a page +func (a *BufActionHandler) HalfPageUp() bool { + return false +} + +// HalfPageDown scrolls the view down half a page +func (a *BufActionHandler) HalfPageDown() bool { + return false +} + +// ToggleRuler turns line numbers off and on +func (a *BufActionHandler) ToggleRuler() bool { + return false +} + +// JumpLine jumps to a line and moves the view accordingly. +func (a *BufActionHandler) JumpLine() bool { + return false +} + +// ClearStatus clears the messenger bar +func (a *BufActionHandler) ClearStatus() bool { + return false +} + +// ToggleHelp toggles the help screen +func (a *BufActionHandler) ToggleHelp() bool { + return true +} + +// ToggleKeyMenu toggles the keymenu option and resizes all tabs +func (a *BufActionHandler) ToggleKeyMenu() bool { + return true +} + +// ShellMode opens a terminal to run a shell command +func (a *BufActionHandler) ShellMode() bool { + return false +} + +// CommandMode lets the user enter a command +func (a *BufActionHandler) CommandMode() bool { + return false +} + +// ToggleOverwriteMode lets the user toggle the text overwrite mode +func (a *BufActionHandler) ToggleOverwriteMode() bool { + return false +} + +// Escape leaves current mode +func (a *BufActionHandler) Escape() bool { + return false +} + +// Quit this will close the current tab or view that is open +func (a *BufActionHandler) Quit() bool { + screen.Screen.Fini() + os.Exit(0) + return false +} + +// QuitAll quits the whole editor; all splits and tabs +func (a *BufActionHandler) QuitAll() bool { + return false +} + +// AddTab adds a new tab with an empty buffer +func (a *BufActionHandler) AddTab() bool { + return true +} + +// PreviousTab switches to the previous tab in the tab list +func (a *BufActionHandler) PreviousTab() bool { + return false +} + +// NextTab switches to the next tab in the tab list +func (a *BufActionHandler) NextTab() bool { + return false +} + +// VSplitBinding opens an empty vertical split +func (a *BufActionHandler) VSplitBinding() bool { + return false +} + +// HSplitBinding opens an empty horizontal split +func (a *BufActionHandler) HSplitBinding() bool { + return false +} + +// Unsplit closes all splits in the current tab except the active one +func (a *BufActionHandler) Unsplit() bool { + return false +} + +// NextSplit changes the view to the next split +func (a *BufActionHandler) NextSplit() bool { + return false +} + +// PreviousSplit changes the view to the previous split +func (a *BufActionHandler) PreviousSplit() bool { + return false +} + +var curMacro []interface{} +var recordingMacro bool + +// ToggleMacro toggles recording of a macro +func (a *BufActionHandler) ToggleMacro() bool { + return true +} + +// PlayMacro plays back the most recently recorded macro +func (a *BufActionHandler) PlayMacro() bool { + return true +} + +// SpawnMultiCursor creates a new multiple cursor at the next occurrence of the current selection or current word +func (a *BufActionHandler) SpawnMultiCursor() bool { + return false +} + +// SpawnMultiCursorSelect adds a cursor at the beginning of each line of a selection +func (a *BufActionHandler) SpawnMultiCursorSelect() bool { + return false +} + +// MouseMultiCursor is a mouse action which puts a new cursor at the mouse position +func (a *BufActionHandler) MouseMultiCursor(e *tcell.EventMouse) bool { + return false +} + +// SkipMultiCursor moves the current multiple cursor to the next available position +func (a *BufActionHandler) SkipMultiCursor() bool { + return false +} + +// RemoveMultiCursor removes the latest multiple cursor +func (a *BufActionHandler) RemoveMultiCursor() bool { + return false +} + +// RemoveAllMultiCursors removes all cursors except the base cursor +func (a *BufActionHandler) RemoveAllMultiCursors() bool { + return false +} diff --git a/cmd/micro/actions_other.go b/cmd/micro/actions_other.go new file mode 100644 index 00000000..77c53ebf --- /dev/null +++ b/cmd/micro/actions_other.go @@ -0,0 +1,8 @@ +// +build plan9 nacl windows + +package main + +func (*BufActionHandler) Suspend() bool { + // TODO: error message + return false +} diff --git a/cmd/micro/actions_posix.go b/cmd/micro/actions_posix.go new file mode 100644 index 00000000..b9070810 --- /dev/null +++ b/cmd/micro/actions_posix.go @@ -0,0 +1,35 @@ +// +build linux darwin dragonfly solaris openbsd netbsd freebsd + +package main + +import ( + "syscall" + + "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/cmd/micro/util" +) + +// Suspend sends micro to the background. This is the same as pressing CtrlZ in most unix programs. +// This only works on linux and has no default binding. +// This code was adapted from the suspend code in nsf/godit +func (*BufActionHandler) Suspend() bool { + screenWasNil := screen.Screen == nil + + if !screenWasNil { + screen.Screen.Fini() + screen.Screen = nil + } + + // suspend the process + pid := syscall.Getpid() + err := syscall.Kill(pid, syscall.SIGSTOP) + if err != nil { + util.TermMessage(err) + } + + if !screenWasNil { + screen.Init() + } + + return false +} diff --git a/cmd/micro/bindings.go b/cmd/micro/bindings.go new file mode 100644 index 00000000..56989383 --- /dev/null +++ b/cmd/micro/bindings.go @@ -0,0 +1,439 @@ +package main + +import ( + "encoding/json" + "errors" + "io/ioutil" + "os" + "strings" + "unicode" + + "github.com/flynn/json5" + "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/tcell" +) + +var bindings = DefaultBindings() + +func InitBindings() { + var parsed map[string]string + defaults := DefaultBindings() + + filename := config.ConfigDir + "/bindings.json" + if _, e := os.Stat(filename); e == nil { + input, err := ioutil.ReadFile(filename) + if err != nil { + util.TermMessage("Error reading bindings.json file: " + err.Error()) + return + } + + err = json5.Unmarshal(input, &parsed) + if err != nil { + util.TermMessage("Error reading bindings.json:", err.Error()) + } + } + + for k, v := range defaults { + BindKey(k, v) + } + for k, v := range parsed { + BindKey(k, v) + } +} + +func BindKey(k, v string) { + event, ok := findEvent(k) + if !ok { + util.TermMessage(k, "is not a bindable event") + } + + switch e := event.(type) { + case KeyEvent: + BufMapKey(e, v) + case MouseEvent: + BufMapMouse(e, v) + case RawEvent: + util.TermMessage("Raw events not supported yet") + } + + bindings[k] = v +} + +// findKeyEvent will find binding Key 'b' using string 'k' +func findEvent(k string) (b Event, ok bool) { + modifiers := tcell.ModNone + + // First, we'll strip off all the modifiers in the name and add them to the + // ModMask +modSearch: + for { + switch { + case strings.HasPrefix(k, "-"): + // We optionally support dashes between modifiers + k = k[1:] + case strings.HasPrefix(k, "Ctrl") && k != "CtrlH": + // CtrlH technically does not have a 'Ctrl' modifier because it is really backspace + k = k[4:] + modifiers |= tcell.ModCtrl + case strings.HasPrefix(k, "Alt"): + k = k[3:] + modifiers |= tcell.ModAlt + case strings.HasPrefix(k, "Shift"): + k = k[5:] + modifiers |= tcell.ModShift + case strings.HasPrefix(k, "\x1b"): + return RawEvent{ + esc: k, + }, true + default: + break modSearch + } + } + + if len(k) == 0 { + return KeyEvent{}, false + } + + // Control is handled in a special way, since the terminal sends explicitly + // marked escape sequences for control keys + // We should check for Control keys first + if modifiers&tcell.ModCtrl != 0 { + // see if the key is in bindingKeys with the Ctrl prefix. + k = string(unicode.ToUpper(rune(k[0]))) + k[1:] + if code, ok := keyEvents["Ctrl"+k]; ok { + // It is, we're done. + return KeyEvent{ + code: code, + mod: modifiers, + r: rune(code), + }, true + } + } + + // See if we can find the key in bindingKeys + if code, ok := keyEvents[k]; ok { + return KeyEvent{ + code: code, + mod: modifiers, + r: 0, + }, true + } + + // See if we can find the key in bindingMouse + if code, ok := mouseEvents[k]; ok { + return MouseEvent{ + btn: code, + mod: modifiers, + }, true + } + + // If we were given one character, then we've got a rune. + if len(k) == 1 { + return KeyEvent{ + code: tcell.KeyRune, + mod: modifiers, + r: rune(k[0]), + }, true + } + + // We don't know what happened. + return KeyEvent{}, false +} + +// TryBindKey tries to bind a key by writing to config.ConfigDir/bindings.json +// Returns true if the keybinding already existed and a possible error +func TryBindKey(k, v string, overwrite bool) (bool, error) { + var e error + var parsed map[string]string + + filename := config.ConfigDir + "/bindings.json" + if _, e = os.Stat(filename); e == nil { + input, err := ioutil.ReadFile(filename) + if err != nil { + return false, errors.New("Error reading bindings.json file: " + err.Error()) + } + + err = json5.Unmarshal(input, &parsed) + if err != nil { + return false, errors.New("Error reading bindings.json: " + err.Error()) + } + + key, ok := findEvent(k) + if !ok { + return false, errors.New("Invalid event " + k) + } + + found := false + for ev := range parsed { + if e, ok := findEvent(ev); ok { + if e == key { + if overwrite { + parsed[ev] = v + } + found = true + break + } + } + } + + if found && !overwrite { + return true, nil + } else if !found { + parsed[k] = v + } + + BindKey(k, v) + + txt, _ := json.MarshalIndent(parsed, "", " ") + return true, ioutil.WriteFile(filename, append(txt, '\n'), 0644) + } + return false, e +} + +var mouseEvents = map[string]tcell.ButtonMask{ + "MouseLeft": tcell.Button1, + "MouseMiddle": tcell.Button2, + "MouseRight": tcell.Button3, + "MouseWheelUp": tcell.WheelUp, + "MouseWheelDown": tcell.WheelDown, + "MouseWheelLeft": tcell.WheelLeft, + "MouseWheelRight": tcell.WheelRight, +} + +var keyEvents = map[string]tcell.Key{ + "Up": tcell.KeyUp, + "Down": tcell.KeyDown, + "Right": tcell.KeyRight, + "Left": tcell.KeyLeft, + "UpLeft": tcell.KeyUpLeft, + "UpRight": tcell.KeyUpRight, + "DownLeft": tcell.KeyDownLeft, + "DownRight": tcell.KeyDownRight, + "Center": tcell.KeyCenter, + "PageUp": tcell.KeyPgUp, + "PageDown": tcell.KeyPgDn, + "Home": tcell.KeyHome, + "End": tcell.KeyEnd, + "Insert": tcell.KeyInsert, + "Delete": tcell.KeyDelete, + "Help": tcell.KeyHelp, + "Exit": tcell.KeyExit, + "Clear": tcell.KeyClear, + "Cancel": tcell.KeyCancel, + "Print": tcell.KeyPrint, + "Pause": tcell.KeyPause, + "Backtab": tcell.KeyBacktab, + "F1": tcell.KeyF1, + "F2": tcell.KeyF2, + "F3": tcell.KeyF3, + "F4": tcell.KeyF4, + "F5": tcell.KeyF5, + "F6": tcell.KeyF6, + "F7": tcell.KeyF7, + "F8": tcell.KeyF8, + "F9": tcell.KeyF9, + "F10": tcell.KeyF10, + "F11": tcell.KeyF11, + "F12": tcell.KeyF12, + "F13": tcell.KeyF13, + "F14": tcell.KeyF14, + "F15": tcell.KeyF15, + "F16": tcell.KeyF16, + "F17": tcell.KeyF17, + "F18": tcell.KeyF18, + "F19": tcell.KeyF19, + "F20": tcell.KeyF20, + "F21": tcell.KeyF21, + "F22": tcell.KeyF22, + "F23": tcell.KeyF23, + "F24": tcell.KeyF24, + "F25": tcell.KeyF25, + "F26": tcell.KeyF26, + "F27": tcell.KeyF27, + "F28": tcell.KeyF28, + "F29": tcell.KeyF29, + "F30": tcell.KeyF30, + "F31": tcell.KeyF31, + "F32": tcell.KeyF32, + "F33": tcell.KeyF33, + "F34": tcell.KeyF34, + "F35": tcell.KeyF35, + "F36": tcell.KeyF36, + "F37": tcell.KeyF37, + "F38": tcell.KeyF38, + "F39": tcell.KeyF39, + "F40": tcell.KeyF40, + "F41": tcell.KeyF41, + "F42": tcell.KeyF42, + "F43": tcell.KeyF43, + "F44": tcell.KeyF44, + "F45": tcell.KeyF45, + "F46": tcell.KeyF46, + "F47": tcell.KeyF47, + "F48": tcell.KeyF48, + "F49": tcell.KeyF49, + "F50": tcell.KeyF50, + "F51": tcell.KeyF51, + "F52": tcell.KeyF52, + "F53": tcell.KeyF53, + "F54": tcell.KeyF54, + "F55": tcell.KeyF55, + "F56": tcell.KeyF56, + "F57": tcell.KeyF57, + "F58": tcell.KeyF58, + "F59": tcell.KeyF59, + "F60": tcell.KeyF60, + "F61": tcell.KeyF61, + "F62": tcell.KeyF62, + "F63": tcell.KeyF63, + "F64": tcell.KeyF64, + "CtrlSpace": tcell.KeyCtrlSpace, + "CtrlA": tcell.KeyCtrlA, + "CtrlB": tcell.KeyCtrlB, + "CtrlC": tcell.KeyCtrlC, + "CtrlD": tcell.KeyCtrlD, + "CtrlE": tcell.KeyCtrlE, + "CtrlF": tcell.KeyCtrlF, + "CtrlG": tcell.KeyCtrlG, + "CtrlH": tcell.KeyCtrlH, + "CtrlI": tcell.KeyCtrlI, + "CtrlJ": tcell.KeyCtrlJ, + "CtrlK": tcell.KeyCtrlK, + "CtrlL": tcell.KeyCtrlL, + "CtrlM": tcell.KeyCtrlM, + "CtrlN": tcell.KeyCtrlN, + "CtrlO": tcell.KeyCtrlO, + "CtrlP": tcell.KeyCtrlP, + "CtrlQ": tcell.KeyCtrlQ, + "CtrlR": tcell.KeyCtrlR, + "CtrlS": tcell.KeyCtrlS, + "CtrlT": tcell.KeyCtrlT, + "CtrlU": tcell.KeyCtrlU, + "CtrlV": tcell.KeyCtrlV, + "CtrlW": tcell.KeyCtrlW, + "CtrlX": tcell.KeyCtrlX, + "CtrlY": tcell.KeyCtrlY, + "CtrlZ": tcell.KeyCtrlZ, + "CtrlLeftSq": tcell.KeyCtrlLeftSq, + "CtrlBackslash": tcell.KeyCtrlBackslash, + "CtrlRightSq": tcell.KeyCtrlRightSq, + "CtrlCarat": tcell.KeyCtrlCarat, + "CtrlUnderscore": tcell.KeyCtrlUnderscore, + "CtrlPageUp": tcell.KeyCtrlPgUp, + "CtrlPageDown": tcell.KeyCtrlPgDn, + "Tab": tcell.KeyTab, + "Esc": tcell.KeyEsc, + "Escape": tcell.KeyEscape, + "Enter": tcell.KeyEnter, + "Backspace": tcell.KeyBackspace2, + "OldBackspace": tcell.KeyBackspace, + + // I renamed these keys to PageUp and PageDown but I don't want to break someone's keybindings + "PgUp": tcell.KeyPgUp, + "PgDown": tcell.KeyPgDn, +} + +// DefaultBindings returns a map containing micro's default keybindings +func DefaultBindings() map[string]string { + return map[string]string{ + "Up": "CursorUp", + "Down": "CursorDown", + "Right": "CursorRight", + "Left": "CursorLeft", + "ShiftUp": "SelectUp", + "ShiftDown": "SelectDown", + "ShiftLeft": "SelectLeft", + "ShiftRight": "SelectRight", + "AltLeft": "WordLeft", + "AltRight": "WordRight", + "AltUp": "MoveLinesUp", + "AltDown": "MoveLinesDown", + "AltShiftRight": "SelectWordRight", + "AltShiftLeft": "SelectWordLeft", + "CtrlLeft": "StartOfLine", + "CtrlRight": "EndOfLine", + "CtrlShiftLeft": "SelectToStartOfLine", + "ShiftHome": "SelectToStartOfLine", + "CtrlShiftRight": "SelectToEndOfLine", + "ShiftEnd": "SelectToEndOfLine", + "CtrlUp": "CursorStart", + "CtrlDown": "CursorEnd", + "CtrlShiftUp": "SelectToStart", + "CtrlShiftDown": "SelectToEnd", + "Alt-{": "ParagraphPrevious", + "Alt-}": "ParagraphNext", + "Enter": "InsertNewline", + "CtrlH": "Backspace", + "Backspace": "Backspace", + "Alt-CtrlH": "DeleteWordLeft", + "Alt-Backspace": "DeleteWordLeft", + "Tab": "IndentSelection,InsertTab", + "Backtab": "OutdentSelection,OutdentLine", + "CtrlO": "OpenFile", + "CtrlS": "Save", + "CtrlF": "Find", + "CtrlN": "FindNext", + "CtrlP": "FindPrevious", + "CtrlZ": "Undo", + "CtrlY": "Redo", + "CtrlC": "Copy", + "CtrlX": "Cut", + "CtrlK": "CutLine", + "CtrlD": "DuplicateLine", + "CtrlV": "Paste", + "CtrlA": "SelectAll", + "CtrlT": "AddTab", + "Alt,": "PreviousTab", + "Alt.": "NextTab", + "Home": "StartOfLine", + "End": "EndOfLine", + "CtrlHome": "CursorStart", + "CtrlEnd": "CursorEnd", + "PageUp": "CursorPageUp", + "PageDown": "CursorPageDown", + "CtrlPageUp": "PreviousTab", + "CtrlPageDown": "NextTab", + "CtrlG": "ToggleHelp", + "Alt-g": "ToggleKeyMenu", + "CtrlR": "ToggleRuler", + "CtrlL": "JumpLine", + "Delete": "Delete", + "CtrlB": "ShellMode", + "CtrlQ": "Quit", + "CtrlE": "CommandMode", + "CtrlW": "NextSplit", + "CtrlU": "ToggleMacro", + "CtrlJ": "PlayMacro", + "Insert": "ToggleOverwriteMode", + + // Emacs-style keybindings + "Alt-f": "WordRight", + "Alt-b": "WordLeft", + "Alt-a": "StartOfLine", + "Alt-e": "EndOfLine", + // "Alt-p": "CursorUp", + // "Alt-n": "CursorDown", + + // Integration with file managers + "F2": "Save", + "F3": "Find", + "F4": "Quit", + "F7": "Find", + "F10": "Quit", + "Esc": "Escape", + + // Mouse bindings + "MouseWheelUp": "ScrollUp", + "MouseWheelDown": "ScrollDown", + "MouseLeft": "MousePress", + "MouseMiddle": "PastePrimary", + "Ctrl-MouseLeft": "MouseMultiCursor", + + "Alt-n": "SpawnMultiCursor", + "Alt-m": "SpawnMultiCursorSelect", + "Alt-p": "RemoveMultiCursor", + "Alt-c": "RemoveAllMultiCursors", + "Alt-x": "SkipMultiCursor", + } +} diff --git a/cmd/micro/bufactionhandler.go b/cmd/micro/bufactionhandler.go new file mode 100644 index 00000000..87cfd211 --- /dev/null +++ b/cmd/micro/bufactionhandler.go @@ -0,0 +1,207 @@ +package main + +import ( + "time" + + "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/tcell" +) + +type BufKeyAction func(*BufActionHandler) bool +type BufMouseAction func(*BufActionHandler, *tcell.EventMouse) bool + +var BufKeyBindings map[KeyEvent]BufKeyAction +var BufMouseBindings map[MouseEvent]BufMouseAction + +func init() { + BufKeyBindings = make(map[KeyEvent]BufKeyAction) + BufMouseBindings = make(map[MouseEvent]BufMouseAction) +} + +func BufMapKey(k KeyEvent, action string) { + BufKeyBindings[k] = BufKeyActions[action] +} +func BufMapMouse(k MouseEvent, action string) { + BufMouseBindings[k] = BufMouseActions[action] +} + +// The BufActionHandler connects the buffer and the window +// It provides a cursor (or multiple) and defines a set of actions +// that can be taken on the buffer +// The ActionHandler can access the window for necessary info about +// visual positions for mouse clicks and scrolling +type BufActionHandler struct { + Buf *buffer.Buffer + Win *Window + + cursors []*buffer.Cursor + Cursor *buffer.Cursor // the active cursor + + // Since tcell doesn't differentiate between a mouse release event + // and a mouse move event with no keys pressed, we need to keep + // track of whether or not the mouse was pressed (or not released) last event to determine + // mouse release events + mouseReleased bool + + // We need to keep track of insert key press toggle + isOverwriteMode bool + // This stores when the last click was + // This is useful for detecting double and triple clicks + lastClickTime time.Time + lastLoc buffer.Loc + + // lastCutTime stores when the last ctrl+k was issued. + // It is used for clearing the clipboard to replace it with fresh cut lines. + lastCutTime time.Time + + // freshClip returns true if the clipboard has never been pasted. + freshClip bool + + // Was the last mouse event actually a double click? + // Useful for detecting triple clicks -- if a double click is detected + // but the last mouse event was actually a double click, it's a triple click + doubleClick bool + // Same here, just to keep track for mouse move events + tripleClick bool +} + +func NewBufActionHandler(buf *buffer.Buffer, win *Window) *BufActionHandler { + a := new(BufActionHandler) + a.Buf = buf + a.Win = win + + a.cursors = []*buffer.Cursor{&buffer.Cursor{ + Buf: buf, + Loc: buf.StartCursor, + }} + + buf.SetCursors(a.cursors) + return a +} + +// HandleEvent executes the tcell event properly +// TODO: multiple actions bound to one key +func (a *BufActionHandler) HandleEvent(event tcell.Event) { + switch e := event.(type) { + case *tcell.EventKey: + ke := KeyEvent{ + code: e.Key(), + mod: e.Modifiers(), + r: e.Rune(), + } + if action, ok := BufKeyBindings[ke]; ok { + action(a) + } + case *tcell.EventMouse: + me := MouseEvent{ + btn: e.Buttons(), + mod: e.Modifiers(), + } + if action, ok := BufMouseBindings[me]; ok { + action(a, e) + } + } +} + +var BufKeyActions = map[string]BufKeyAction{ + "CursorUp": (*BufActionHandler).CursorUp, + "CursorDown": (*BufActionHandler).CursorDown, + "CursorPageUp": (*BufActionHandler).CursorPageUp, + "CursorPageDown": (*BufActionHandler).CursorPageDown, + "CursorLeft": (*BufActionHandler).CursorLeft, + "CursorRight": (*BufActionHandler).CursorRight, + "CursorStart": (*BufActionHandler).CursorStart, + "CursorEnd": (*BufActionHandler).CursorEnd, + "SelectToStart": (*BufActionHandler).SelectToStart, + "SelectToEnd": (*BufActionHandler).SelectToEnd, + "SelectUp": (*BufActionHandler).SelectUp, + "SelectDown": (*BufActionHandler).SelectDown, + "SelectLeft": (*BufActionHandler).SelectLeft, + "SelectRight": (*BufActionHandler).SelectRight, + "WordRight": (*BufActionHandler).WordRight, + "WordLeft": (*BufActionHandler).WordLeft, + "SelectWordRight": (*BufActionHandler).SelectWordRight, + "SelectWordLeft": (*BufActionHandler).SelectWordLeft, + "DeleteWordRight": (*BufActionHandler).DeleteWordRight, + "DeleteWordLeft": (*BufActionHandler).DeleteWordLeft, + "SelectLine": (*BufActionHandler).SelectLine, + "SelectToStartOfLine": (*BufActionHandler).SelectToStartOfLine, + "SelectToEndOfLine": (*BufActionHandler).SelectToEndOfLine, + "ParagraphPrevious": (*BufActionHandler).ParagraphPrevious, + "ParagraphNext": (*BufActionHandler).ParagraphNext, + "InsertNewline": (*BufActionHandler).InsertNewline, + "InsertSpace": (*BufActionHandler).InsertSpace, + "Backspace": (*BufActionHandler).Backspace, + "Delete": (*BufActionHandler).Delete, + "InsertTab": (*BufActionHandler).InsertTab, + "Save": (*BufActionHandler).Save, + "SaveAll": (*BufActionHandler).SaveAll, + "SaveAs": (*BufActionHandler).SaveAs, + "Find": (*BufActionHandler).Find, + "FindNext": (*BufActionHandler).FindNext, + "FindPrevious": (*BufActionHandler).FindPrevious, + "Center": (*BufActionHandler).Center, + "Undo": (*BufActionHandler).Undo, + "Redo": (*BufActionHandler).Redo, + "Copy": (*BufActionHandler).Copy, + "Cut": (*BufActionHandler).Cut, + "CutLine": (*BufActionHandler).CutLine, + "DuplicateLine": (*BufActionHandler).DuplicateLine, + "DeleteLine": (*BufActionHandler).DeleteLine, + "MoveLinesUp": (*BufActionHandler).MoveLinesUp, + "MoveLinesDown": (*BufActionHandler).MoveLinesDown, + "IndentSelection": (*BufActionHandler).IndentSelection, + "OutdentSelection": (*BufActionHandler).OutdentSelection, + "OutdentLine": (*BufActionHandler).OutdentLine, + "Paste": (*BufActionHandler).Paste, + "PastePrimary": (*BufActionHandler).PastePrimary, + "SelectAll": (*BufActionHandler).SelectAll, + "OpenFile": (*BufActionHandler).OpenFile, + "Start": (*BufActionHandler).Start, + "End": (*BufActionHandler).End, + "PageUp": (*BufActionHandler).PageUp, + "PageDown": (*BufActionHandler).PageDown, + "SelectPageUp": (*BufActionHandler).SelectPageUp, + "SelectPageDown": (*BufActionHandler).SelectPageDown, + "HalfPageUp": (*BufActionHandler).HalfPageUp, + "HalfPageDown": (*BufActionHandler).HalfPageDown, + "StartOfLine": (*BufActionHandler).StartOfLine, + "EndOfLine": (*BufActionHandler).EndOfLine, + "ToggleHelp": (*BufActionHandler).ToggleHelp, + "ToggleKeyMenu": (*BufActionHandler).ToggleKeyMenu, + "ToggleRuler": (*BufActionHandler).ToggleRuler, + "JumpLine": (*BufActionHandler).JumpLine, + "ClearStatus": (*BufActionHandler).ClearStatus, + "ShellMode": (*BufActionHandler).ShellMode, + "CommandMode": (*BufActionHandler).CommandMode, + "ToggleOverwriteMode": (*BufActionHandler).ToggleOverwriteMode, + "Escape": (*BufActionHandler).Escape, + "Quit": (*BufActionHandler).Quit, + "QuitAll": (*BufActionHandler).QuitAll, + "AddTab": (*BufActionHandler).AddTab, + "PreviousTab": (*BufActionHandler).PreviousTab, + "NextTab": (*BufActionHandler).NextTab, + "NextSplit": (*BufActionHandler).NextSplit, + "PreviousSplit": (*BufActionHandler).PreviousSplit, + "Unsplit": (*BufActionHandler).Unsplit, + "VSplit": (*BufActionHandler).VSplitBinding, + "HSplit": (*BufActionHandler).HSplitBinding, + "ToggleMacro": (*BufActionHandler).ToggleMacro, + "PlayMacro": (*BufActionHandler).PlayMacro, + "Suspend": (*BufActionHandler).Suspend, + "ScrollUp": (*BufActionHandler).ScrollUpAction, + "ScrollDown": (*BufActionHandler).ScrollDownAction, + "SpawnMultiCursor": (*BufActionHandler).SpawnMultiCursor, + "SpawnMultiCursorSelect": (*BufActionHandler).SpawnMultiCursorSelect, + "RemoveMultiCursor": (*BufActionHandler).RemoveMultiCursor, + "RemoveAllMultiCursors": (*BufActionHandler).RemoveAllMultiCursors, + "SkipMultiCursor": (*BufActionHandler).SkipMultiCursor, + "JumpToMatchingBrace": (*BufActionHandler).JumpToMatchingBrace, + + // This was changed to InsertNewline but I don't want to break backwards compatibility + "InsertEnter": (*BufActionHandler).InsertNewline, +} +var BufMouseActions = map[string]BufMouseAction{ + "MousePress": (*BufActionHandler).MousePress, + "MouseMultiCursor": (*BufActionHandler).MouseMultiCursor, +} diff --git a/cmd/micro/buffer.go b/cmd/micro/buffer/buffer.go similarity index 75% rename from cmd/micro/buffer.go rename to cmd/micro/buffer/buffer.go index 747ace3d..e3118eb9 100644 --- a/cmd/micro/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -1,13 +1,13 @@ -package main +package buffer import ( "bufio" "bytes" "crypto/md5" + "encoding/gob" "errors" "io" "io/ioutil" - "log" "os" "os/exec" "os/signal" @@ -16,13 +16,42 @@ import ( "time" "unicode/utf8" + "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/highlight" + + . "github.com/zyedidia/micro/cmd/micro/util" ) // LargeFileThreshold is the number of bytes when fastdirty is forced // because hashing is too slow const LargeFileThreshold = 50000 +// overwriteFile opens the given file for writing, truncating if one exists, and then calls +// the supplied function with the file as io.Writer object, also making sure the file is +// closed afterwards. +func overwriteFile(name string, fn func(io.Writer) error) (err error) { + var file *os.File + + if file, err = os.OpenFile(name, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644); err != nil { + return + } + + defer func() { + if e := file.Close(); e != nil && err == nil { + err = e + } + }() + + w := bufio.NewWriter(file) + + if err = fn(w); err != nil { + return + } + + err = w.Flush() + return +} + // The BufType defines what kind of buffer this is type BufType struct { Kind int @@ -31,17 +60,20 @@ type BufType struct { } var ( - btDefault = BufType{0, false, false} - btHelp = BufType{1, true, true} - btLog = BufType{2, true, true} - btScratch = BufType{3, false, true} - btRaw = BufType{4, true, true} + BTDefault = BufType{0, false, false} + BTHelp = BufType{1, true, true} + BTLog = BufType{2, true, true} + BTScratch = BufType{3, false, true} + BTRaw = BufType{4, true, true} ) type Buffer struct { *LineArray *EventHandler + cursors []*Cursor + StartCursor Loc + // Path to the file on disk Path string // Absolute path to the file on disk @@ -55,8 +87,8 @@ type Buffer struct { // Stores the last modification time of the file the buffer is pointing to ModTime time.Time - syntaxDef *highlight.Def - highlighter *highlight.Highlighter + SyntaxDef *highlight.Def + Highlighter *highlight.Highlighter // Hash of the original buffer -- empty if fastdirty is on origHash [md5.Size]byte @@ -68,6 +100,14 @@ type Buffer struct { Type BufType } +// The SerializedBuffer holds the types that get serialized when a buffer is saved +// These are used for the savecursor and saveundo options +type SerializedBuffer struct { + EventHandler *EventHandler + Cursor Loc + ModTime time.Time +} + // NewBufferFromFile opens a new buffer using the given path // It will also automatically handle `~`, and line/column with filename:l:c // It will return an empty buffer if the path does not exist @@ -111,13 +151,13 @@ func NewBufferFromString(text, path string) *Buffer { func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []string) *Buffer { b := new(Buffer) - b.Settings = DefaultLocalSettings() - for k, v := range globalSettings { + b.Settings = config.DefaultLocalSettings() + for k, v := range config.GlobalSettings { if _, ok := b.Settings[k]; ok { b.Settings[k] = v } } - InitLocalSettings(b) + config.InitLocalSettings(b.Settings, b.Path) b.LineArray = NewLineArray(uint64(size), FFAuto, reader) @@ -132,7 +172,23 @@ func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []strin b.EventHandler = NewEventHandler(b) b.UpdateRules() - log.Println("Filetype detected: ", b.Settings["filetype"]) + + if _, err := os.Stat(config.ConfigDir + "/buffers/"); os.IsNotExist(err) { + os.Mkdir(config.ConfigDir+"/buffers/", os.ModePerm) + } + + // cursorLocation, err := GetBufferCursorLocation(cursorPosition, b) + // b.startcursor = Cursor{ + // Loc: cursorLocation, + // buf: b, + // } + // TODO flagstartpos + if b.Settings["savecursor"].(bool) || b.Settings["saveundo"].(bool) { + err := b.Unserialize() + if err != nil { + TermMessage(err) + } + } if !b.Settings["fastdirty"].(bool) { if size > LargeFileThreshold { @@ -286,35 +342,7 @@ func (b *Buffer) SaveAs(filename string) error { absPath, _ := filepath.Abs(filename) b.AbsPath = absPath b.isModified = false - // TODO: serialize - // return b.Serialize() - return nil -} - -// overwriteFile opens the given file for writing, truncating if one exists, and then calls -// the supplied function with the file as io.Writer object, also making sure the file is -// closed afterwards. -func overwriteFile(name string, fn func(io.Writer) error) (err error) { - var file *os.File - - if file, err = os.OpenFile(name, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644); err != nil { - return - } - - defer func() { - if e := file.Close(); e != nil && err == nil { - err = e - } - }() - - w := bufio.NewWriter(file) - - if err = fn(w); err != nil { - return - } - - err = w.Flush() - return + return b.Serialize() } // SaveWithSudo saves the buffer to the default path with sudo @@ -331,7 +359,7 @@ func (b *Buffer) SaveAsWithSudo(filename string) error { b.AbsPath = absPath // Set up everything for the command - cmd := exec.Command(globalSettings["sucmd"].(string), "tee", filename) + cmd := exec.Command(config.GlobalSettings["sucmd"].(string), "tee", filename) cmd.Stdin = bytes.NewBuffer(b.Bytes()) // This is a trap for Ctrl-C so that it doesn't kill micro @@ -351,25 +379,29 @@ func (b *Buffer) SaveAsWithSudo(filename string) error { if err == nil { b.isModified = false b.ModTime, _ = GetModTime(filename) - // TODO: serialize + return b.Serialize() } return err } +func (b *Buffer) SetCursors(c []*Cursor) { + b.cursors = c +} + func (b *Buffer) GetActiveCursor() *Cursor { - return nil + return b.cursors[0] } func (b *Buffer) GetCursor(n int) *Cursor { - return nil + return b.cursors[n] } func (b *Buffer) GetCursors() []*Cursor { - return nil + return b.cursors } func (b *Buffer) NumCursors() int { - return 0 + return len(b.cursors) } func (b *Buffer) LineBytes(n int) []byte { @@ -440,12 +472,62 @@ func calcHash(b *Buffer, out *[md5.Size]byte) { h.Sum((*out)[:0]) } +func init() { + gob.Register(TextEvent{}) + gob.Register(SerializedBuffer{}) +} + +// Serialize serializes the buffer to config.ConfigDir/buffers +func (b *Buffer) Serialize() error { + if !b.Settings["savecursor"].(bool) && !b.Settings["saveundo"].(bool) { + return nil + } + + name := config.ConfigDir + "/buffers/" + EscapePath(b.AbsPath) + + return overwriteFile(name, func(file io.Writer) error { + return gob.NewEncoder(file).Encode(SerializedBuffer{ + b.EventHandler, + b.GetActiveCursor().Loc, + b.ModTime, + }) + }) +} + +func (b *Buffer) Unserialize() error { + // If either savecursor or saveundo is turned on, we need to load the serialized information + // from ~/.config/micro/buffers + file, err := os.Open(config.ConfigDir + "/buffers/" + EscapePath(b.AbsPath)) + defer file.Close() + if err == nil { + var buffer SerializedBuffer + decoder := gob.NewDecoder(file) + gob.Register(TextEvent{}) + err = decoder.Decode(&buffer) + if err != nil { + return errors.New(err.Error() + "\nYou may want to remove the files in ~/.config/micro/buffers (these files store the information for the 'saveundo' and 'savecursor' options) if this problem persists.") + } + if b.Settings["savecursor"].(bool) { + b.StartCursor = buffer.Cursor + } + + if b.Settings["saveundo"].(bool) { + // We should only use last time's eventhandler if the file wasn't modified by someone else in the meantime + if b.ModTime == buffer.ModTime { + b.EventHandler = buffer.EventHandler + b.EventHandler.buf = b + } + } + } + return err +} + // UpdateRules updates the syntax rules and filetype for this buffer // This is called when the colorscheme changes func (b *Buffer) UpdateRules() { rehighlight := false var files []*highlight.File - for _, f := range ListRuntimeFiles(RTSyntax) { + for _, f := range config.ListRuntimeFiles(config.RTSyntax) { data, err := f.Data() if err != nil { TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) @@ -467,7 +549,7 @@ func (b *Buffer) UpdateRules() { header := new(highlight.Header) header.FileType = file.FileType header.FtDetect = ftdetect - b.syntaxDef, err = highlight.ParseDef(file, header) + b.SyntaxDef, err = highlight.ParseDef(file, header) if err != nil { TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) continue @@ -479,7 +561,7 @@ func (b *Buffer) UpdateRules() { header := new(highlight.Header) header.FileType = file.FileType header.FtDetect = ftdetect - b.syntaxDef, err = highlight.ParseDef(file, header) + b.SyntaxDef, err = highlight.ParseDef(file, header) if err != nil { TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) continue @@ -491,16 +573,16 @@ func (b *Buffer) UpdateRules() { } } - if b.syntaxDef != nil { - highlight.ResolveIncludes(b.syntaxDef, files) + if b.SyntaxDef != nil { + highlight.ResolveIncludes(b.SyntaxDef, files) } - if b.highlighter == nil || rehighlight { - if b.syntaxDef != nil { - b.Settings["filetype"] = b.syntaxDef.FileType - b.highlighter = highlight.NewHighlighter(b.syntaxDef) + if b.Highlighter == nil || rehighlight { + if b.SyntaxDef != nil { + b.Settings["filetype"] = b.SyntaxDef.FileType + b.Highlighter = highlight.NewHighlighter(b.SyntaxDef) if b.Settings["syntax"].(bool) { - b.highlighter.HighlightStates(b) + b.Highlighter.HighlightStates(b) } } } diff --git a/cmd/micro/cursor.go b/cmd/micro/buffer/cursor.go similarity index 81% rename from cmd/micro/cursor.go rename to cmd/micro/buffer/cursor.go index 9e9f1d81..34741ad3 100644 --- a/cmd/micro/cursor.go +++ b/cmd/micro/buffer/cursor.go @@ -1,10 +1,11 @@ -package main +package buffer import ( "unicode/utf8" runewidth "github.com/mattn/go-runewidth" "github.com/zyedidia/clipboard" + "github.com/zyedidia/micro/cmd/micro/util" ) // InBounds returns whether the given location is a valid character position in the given buffer @@ -19,7 +20,7 @@ func InBounds(pos Loc, buf *Buffer) bool { // The Cursor struct stores the location of the cursor in the buffer // as well as the selection type Cursor struct { - buf *Buffer + Buf *Buffer Loc // Last cursor x position @@ -57,20 +58,20 @@ func (c *Cursor) GetVisualX() int { return 0 } - bytes := c.buf.LineBytes(c.Y) - tabsize := int(c.buf.Settings["tabsize"].(float64)) + bytes := c.Buf.LineBytes(c.Y) + tabsize := int(c.Buf.Settings["tabsize"].(float64)) if c.X > utf8.RuneCount(bytes) { c.X = utf8.RuneCount(bytes) - 1 } - return StringWidth(bytes, c.X, tabsize) + return util.StringWidth(bytes, c.X, tabsize) } // GetCharPosInLine gets the char position of a visual x y // coordinate (this is necessary because tabs are 1 char but // 4 visual spaces) func (c *Cursor) GetCharPosInLine(b []byte, visualPos int) int { - tabsize := int(c.buf.Settings["tabsize"].(float64)) + tabsize := int(c.Buf.Settings["tabsize"].(float64)) // Scan rune by rune until we exceed the visual width that we are // looking for. Then we can return the character position we have found @@ -106,7 +107,7 @@ func (c *Cursor) Start() { // End moves the cursor to the end of the line it is on func (c *Cursor) End() { - c.X = utf8.RuneCount(c.buf.LineBytes(c.Y)) + c.X = utf8.RuneCount(c.Buf.LineBytes(c.Y)) c.LastVisualX = c.GetVisualX() } @@ -114,7 +115,7 @@ func (c *Cursor) End() { // or "clipboard" func (c *Cursor) CopySelection(target string) { if c.HasSelection() { - if target != "primary" || c.buf.Settings["useprimary"].(bool) { + if target != "primary" || c.Buf.Settings["useprimary"].(bool) { clipboard.WriteAll(string(c.GetSelection()), target) } } @@ -122,8 +123,8 @@ func (c *Cursor) CopySelection(target string) { // ResetSelection resets the user's selection func (c *Cursor) ResetSelection() { - c.CurSelection[0] = c.buf.Start() - c.CurSelection[1] = c.buf.Start() + c.CurSelection[0] = c.Buf.Start() + c.CurSelection[1] = c.Buf.Start() } // SetSelectionStart sets the start of the selection @@ -144,23 +145,23 @@ func (c *Cursor) HasSelection() bool { // DeleteSelection deletes the currently selected text func (c *Cursor) DeleteSelection() { if c.CurSelection[0].GreaterThan(c.CurSelection[1]) { - c.buf.Remove(c.CurSelection[1], c.CurSelection[0]) + c.Buf.Remove(c.CurSelection[1], c.CurSelection[0]) c.Loc = c.CurSelection[1] } else if !c.HasSelection() { return } else { - c.buf.Remove(c.CurSelection[0], c.CurSelection[1]) + c.Buf.Remove(c.CurSelection[0], c.CurSelection[1]) c.Loc = c.CurSelection[0] } } // GetSelection returns the cursor's selection func (c *Cursor) GetSelection() []byte { - if InBounds(c.CurSelection[0], c.buf) && InBounds(c.CurSelection[1], c.buf) { + if InBounds(c.CurSelection[0], c.Buf) && InBounds(c.CurSelection[1], c.Buf) { if c.CurSelection[0].GreaterThan(c.CurSelection[1]) { - return c.buf.Substr(c.CurSelection[1], c.CurSelection[0]) + return c.Buf.Substr(c.CurSelection[1], c.CurSelection[0]) } - return c.buf.Substr(c.CurSelection[0], c.CurSelection[1]) + return c.Buf.Substr(c.CurSelection[0], c.CurSelection[1]) } return []byte{} } @@ -170,8 +171,8 @@ func (c *Cursor) SelectLine() { c.Start() c.SetSelectionStart(c.Loc) c.End() - if len(c.buf.lines)-1 > c.Y { - c.SetSelectionEnd(c.Loc.Move(1, c.buf)) + if len(c.Buf.lines)-1 > c.Y { + c.SetSelectionEnd(c.Loc.Move(1, c.Buf)) } else { c.SetSelectionEnd(c.Loc) } @@ -188,7 +189,7 @@ func (c *Cursor) AddLineToSelection() { } if c.Loc.GreaterThan(c.OrigSelection[1]) { c.End() - c.SetSelectionEnd(c.Loc.Move(1, c.buf)) + c.SetSelectionEnd(c.Loc.Move(1, c.Buf)) c.SetSelectionStart(c.OrigSelection[0]) } @@ -202,11 +203,11 @@ func (c *Cursor) UpN(amount int) { proposedY := c.Y - amount if proposedY < 0 { proposedY = 0 - } else if proposedY >= len(c.buf.lines) { - proposedY = len(c.buf.lines) - 1 + } else if proposedY >= len(c.Buf.lines) { + proposedY = len(c.Buf.lines) - 1 } - bytes := c.buf.LineBytes(proposedY) + bytes := c.Buf.LineBytes(proposedY) c.X = c.GetCharPosInLine(bytes, c.LastVisualX) if c.X > utf8.RuneCount(bytes) || (amount < 0 && proposedY == c.Y) { @@ -234,7 +235,7 @@ func (c *Cursor) Down() { // Left moves the cursor left one cell (if possible) or to // the previous line if it is at the beginning func (c *Cursor) Left() { - if c.Loc == c.buf.Start() { + if c.Loc == c.Buf.Start() { return } if c.X > 0 { @@ -249,10 +250,10 @@ func (c *Cursor) Left() { // Right moves the cursor right one cell (if possible) or // to the next line if it is at the end func (c *Cursor) Right() { - if c.Loc == c.buf.End() { + if c.Loc == c.Buf.End() { return } - if c.X < utf8.RuneCount(c.buf.LineBytes(c.Y)) { + if c.X < utf8.RuneCount(c.Buf.LineBytes(c.Y)) { c.X++ } else { c.Down() @@ -267,13 +268,13 @@ func (c *Cursor) Right() { func (c *Cursor) Relocate() { if c.Y < 0 { c.Y = 0 - } else if c.Y >= len(c.buf.lines) { - c.Y = len(c.buf.lines) - 1 + } else if c.Y >= len(c.Buf.lines) { + c.Y = len(c.Buf.lines) - 1 } if c.X < 0 { c.X = 0 - } else if c.X > utf8.RuneCount(c.buf.LineBytes(c.Y)) { - c.X = utf8.RuneCount(c.buf.LineBytes(c.Y)) + } else if c.X > utf8.RuneCount(c.Buf.LineBytes(c.Y)) { + c.X = utf8.RuneCount(c.Buf.LineBytes(c.Y)) } } diff --git a/cmd/micro/eventhandler.go b/cmd/micro/buffer/eventhandler.go similarity index 98% rename from cmd/micro/eventhandler.go rename to cmd/micro/buffer/eventhandler.go index 5eefa2af..00d2c865 100644 --- a/cmd/micro/eventhandler.go +++ b/cmd/micro/buffer/eventhandler.go @@ -1,4 +1,4 @@ -package main +package buffer import ( "time" @@ -16,6 +16,8 @@ const ( TextEventRemove = -1 // TextEventReplace represents a replace event TextEventReplace = 0 + + undoThreshold = 500 // If two events are less than n milliseconds apart, undo both of them ) // TextEvent holds data for a manipulation on some text that can be undone @@ -186,7 +188,7 @@ func (eh *EventHandler) Execute(t *TextEvent) { // for pl := range loadedPlugins { // ret, err := Call(pl+".onBeforeTextEvent", t) // if err != nil && !strings.HasPrefix(err.Error(), "function does not exist") { - // TermMessage(err) + // util.TermMessage(err) // } // if val, ok := ret.(lua.LBool); ok && val == lua.LFalse { // return diff --git a/cmd/micro/line_array.go b/cmd/micro/buffer/line_array.go similarity index 99% rename from cmd/micro/line_array.go rename to cmd/micro/buffer/line_array.go index 44907f2a..b5b4676e 100644 --- a/cmd/micro/line_array.go +++ b/cmd/micro/buffer/line_array.go @@ -1,4 +1,4 @@ -package main +package buffer import ( "bufio" diff --git a/cmd/micro/line_array_test.go b/cmd/micro/buffer/line_array_test.go similarity index 99% rename from cmd/micro/line_array_test.go rename to cmd/micro/buffer/line_array_test.go index 72e370ce..c5488adb 100644 --- a/cmd/micro/line_array_test.go +++ b/cmd/micro/buffer/line_array_test.go @@ -1,4 +1,4 @@ -package main +package buffer import ( "strings" diff --git a/cmd/micro/loc.go b/cmd/micro/buffer/loc.go similarity index 94% rename from cmd/micro/loc.go rename to cmd/micro/buffer/loc.go index d7ce8a1a..ac2d7705 100644 --- a/cmd/micro/loc.go +++ b/cmd/micro/buffer/loc.go @@ -1,6 +1,10 @@ -package main +package buffer -import "unicode/utf8" +import ( + "unicode/utf8" + + "github.com/zyedidia/micro/cmd/micro/util" +) // Loc stores a location type Loc struct { @@ -107,7 +111,7 @@ func (l Loc) Move(n int, buf *Buffer) Loc { } return l } - for i := 0; i < Abs(n); i++ { + for i := 0; i < util.Abs(n); i++ { l = l.left(buf) } return l diff --git a/cmd/micro/stack.go b/cmd/micro/buffer/stack.go similarity index 98% rename from cmd/micro/stack.go rename to cmd/micro/buffer/stack.go index bbb6b971..38caa6fb 100644 --- a/cmd/micro/stack.go +++ b/cmd/micro/buffer/stack.go @@ -1,4 +1,4 @@ -package main +package buffer // TEStack is a simple implementation of a LIFO stack for text events type TEStack struct { diff --git a/cmd/micro/stack_test.go b/cmd/micro/buffer/stack_test.go similarity index 97% rename from cmd/micro/stack_test.go rename to cmd/micro/buffer/stack_test.go index 51e4aa76..7a6010c1 100644 --- a/cmd/micro/stack_test.go +++ b/cmd/micro/buffer/stack_test.go @@ -1,4 +1,4 @@ -package main +package buffer import ( "testing" diff --git a/cmd/micro/colorscheme.go b/cmd/micro/config/colorscheme.go similarity index 91% rename from cmd/micro/colorscheme.go rename to cmd/micro/config/colorscheme.go index b3c84a2d..a843c4c6 100644 --- a/cmd/micro/colorscheme.go +++ b/cmd/micro/config/colorscheme.go @@ -1,4 +1,4 @@ -package main +package config import ( "errors" @@ -10,17 +10,14 @@ import ( ) // Micro's default style -var defStyle tcell.Style = tcell.StyleDefault - -// Colorscheme is a map from string to style -- it represents a colorscheme -type Colorscheme map[string]tcell.Style +var DefStyle tcell.Style = tcell.StyleDefault // The current colorscheme -var colorscheme Colorscheme +var Colorscheme map[string]tcell.Style // GetColor takes in a syntax group and returns the colorscheme's style for that group func GetColor(color string) tcell.Style { - st := defStyle + st := DefStyle if color == "" { return st } @@ -32,11 +29,11 @@ func GetColor(color string) tcell.Style { curGroup += "." } curGroup += g - if style, ok := colorscheme[curGroup]; ok { + if style, ok := Colorscheme[curGroup]; ok { st = style } } - } else if style, ok := colorscheme[color]; ok { + } else if style, ok := Colorscheme[color]; ok { st = style } else { st = StringToStyle(color) @@ -52,15 +49,15 @@ func ColorschemeExists(colorschemeName string) bool { // InitColorscheme picks and initializes the colorscheme when micro starts func InitColorscheme() error { - colorscheme = make(Colorscheme) - defStyle = tcell.StyleDefault + Colorscheme = make(map[string]tcell.Style) + DefStyle = tcell.StyleDefault return LoadDefaultColorscheme() } -// LoadDefaultColorscheme loads the default colorscheme from $(configDir)/colorschemes +// LoadDefaultColorscheme loads the default colorscheme from $(ConfigDir)/colorschemes func LoadDefaultColorscheme() error { - return LoadColorscheme(globalSettings["colorscheme"].(string)) + return LoadColorscheme(GlobalSettings["colorscheme"].(string)) } // LoadColorscheme loads the given colorscheme from a directory @@ -72,7 +69,7 @@ func LoadColorscheme(colorschemeName string) error { if data, err := file.Data(); err != nil { return errors.New("Error loading colorscheme: " + err.Error()) } else { - colorscheme, err = ParseColorscheme(string(data)) + Colorscheme, err = ParseColorscheme(string(data)) if err != nil { return err } @@ -84,13 +81,13 @@ func LoadColorscheme(colorschemeName string) error { // Colorschemes are made up of color-link statements linking a color group to a list of colors // For example, color-link keyword (blue,red) makes all keywords have a blue foreground and // red background -func ParseColorscheme(text string) (Colorscheme, error) { +func ParseColorscheme(text string) (map[string]tcell.Style, error) { var err error parser := regexp.MustCompile(`color-link\s+(\S*)\s+"(.*)"`) lines := strings.Split(text, "\n") - c := make(Colorscheme) + c := make(map[string]tcell.Style) for _, line := range lines { if strings.TrimSpace(line) == "" || @@ -108,7 +105,7 @@ func ParseColorscheme(text string) (Colorscheme, error) { c[link] = style if link == "default" { - defStyle = style + DefStyle = style } } else { err = errors.New("Color-link statement is not valid: " + line) @@ -140,17 +137,17 @@ func StringToStyle(str string) tcell.Style { var fgColor, bgColor tcell.Color if fg == "" { - fgColor, _, _ = defStyle.Decompose() + fgColor, _, _ = DefStyle.Decompose() } else { fgColor = StringToColor(fg) } if bg == "" { - _, bgColor, _ = defStyle.Decompose() + _, bgColor, _ = DefStyle.Decompose() } else { bgColor = StringToColor(bg) } - style := defStyle.Foreground(fgColor).Background(bgColor) + style := DefStyle.Foreground(fgColor).Background(bgColor) if strings.Contains(str, "bold") { style = style.Bold(true) } diff --git a/cmd/micro/colorscheme_test.go b/cmd/micro/config/colorscheme_test.go similarity index 99% rename from cmd/micro/colorscheme_test.go rename to cmd/micro/config/colorscheme_test.go index 098af941..83080df1 100644 --- a/cmd/micro/colorscheme_test.go +++ b/cmd/micro/config/colorscheme_test.go @@ -1,4 +1,4 @@ -package main +package config import ( "testing" diff --git a/cmd/micro/config/config.go b/cmd/micro/config/config.go new file mode 100644 index 00000000..1233846f --- /dev/null +++ b/cmd/micro/config/config.go @@ -0,0 +1,54 @@ +package config + +import ( + "errors" + "os" + + homedir "github.com/mitchellh/go-homedir" +) + +var ConfigDir string + +// InitConfigDir finds the configuration directory for micro according to the XDG spec. +// If no directory is found, it creates one. +func InitConfigDir(flagConfigDir string) error { + var e error + + xdgHome := os.Getenv("XDG_CONFIG_HOME") + if xdgHome == "" { + // The user has not set $XDG_CONFIG_HOME so we should act like it was set to ~/.config + home, err := homedir.Dir() + if err != nil { + return errors.New("Error finding your home directory\nCan't load config files") + } + xdgHome = home + "/.config" + } + ConfigDir = xdgHome + "/micro" + + if len(flagConfigDir) > 0 { + if _, err := os.Stat(flagConfigDir); os.IsNotExist(err) { + e = errors.New("Error: " + flagConfigDir + " does not exist. Defaulting to " + ConfigDir + ".") + } else { + ConfigDir = flagConfigDir + return nil + } + } + + if _, err := os.Stat(xdgHome); os.IsNotExist(err) { + // If the xdgHome doesn't exist we should create it + err = os.Mkdir(xdgHome, os.ModePerm) + if err != nil { + return errors.New("Error creating XDG_CONFIG_HOME directory: " + err.Error()) + } + } + + if _, err := os.Stat(ConfigDir); os.IsNotExist(err) { + // If the micro specific config directory doesn't exist we should create that too + err = os.Mkdir(ConfigDir, os.ModePerm) + if err != nil { + return errors.New("Error creating configuration directory: " + err.Error()) + } + } + + return e +} diff --git a/cmd/micro/rtfiles.go b/cmd/micro/config/rtfiles.go similarity index 92% rename from cmd/micro/rtfiles.go rename to cmd/micro/config/rtfiles.go index 947c4e13..5db052ee 100644 --- a/cmd/micro/rtfiles.go +++ b/cmd/micro/config/rtfiles.go @@ -1,4 +1,4 @@ -package main +package config import ( "io/ioutil" @@ -125,7 +125,7 @@ func ListRuntimeFiles(fileType RTFiletype) []RuntimeFile { // InitRuntimeFiles initializes all assets file and the config directory func InitRuntimeFiles() { add := func(fileType RTFiletype, dir, pattern string) { - AddRuntimeFilesFromDirectory(fileType, filepath.Join(configDir, dir), pattern) + AddRuntimeFilesFromDirectory(fileType, filepath.Join(ConfigDir, dir), pattern) AddRuntimeFilesFromAssets(fileType, path.Join("runtime", dir), pattern) } @@ -133,13 +133,13 @@ func InitRuntimeFiles() { add(RTSyntax, "syntax", "*.yaml") add(RTHelp, "help", "*.md") - // Search configDir for plugin-scripts - files, _ := ioutil.ReadDir(filepath.Join(configDir, "plugins")) + // Search ConfigDir for plugin-scripts + files, _ := ioutil.ReadDir(filepath.Join(ConfigDir, "plugins")) for _, f := range files { - realpath, _ := filepath.EvalSymlinks(filepath.Join(configDir, "plugins", f.Name())) + realpath, _ := filepath.EvalSymlinks(filepath.Join(ConfigDir, "plugins", f.Name())) realpathStat, _ := os.Stat(realpath) if realpathStat.IsDir() { - scriptPath := filepath.Join(configDir, "plugins", f.Name(), f.Name()+".lua") + scriptPath := filepath.Join(ConfigDir, "plugins", f.Name(), f.Name()+".lua") if _, err := os.Stat(scriptPath); err == nil { AddRuntimeFile(RTPlugin, realFile(scriptPath)) } @@ -178,7 +178,7 @@ func PluginListRuntimeFiles(fileType RTFiletype) []string { // PluginAddRuntimeFile adds a file to the runtime files for a plugin func PluginAddRuntimeFile(plugin string, filetype RTFiletype, filePath string) { - fullpath := filepath.Join(configDir, "plugins", plugin, filePath) + fullpath := filepath.Join(ConfigDir, "plugins", plugin, filePath) if _, err := os.Stat(fullpath); err == nil { AddRuntimeFile(filetype, realFile(fullpath)) } else { @@ -189,7 +189,7 @@ func PluginAddRuntimeFile(plugin string, filetype RTFiletype, filePath string) { // PluginAddRuntimeFilesFromDirectory adds files from a directory to the runtime files for a plugin func PluginAddRuntimeFilesFromDirectory(plugin string, filetype RTFiletype, directory, pattern string) { - fullpath := filepath.Join(configDir, "plugins", plugin, directory) + fullpath := filepath.Join(ConfigDir, "plugins", plugin, directory) if _, err := os.Stat(fullpath); err == nil { AddRuntimeFilesFromDirectory(filetype, fullpath, pattern) } else { diff --git a/cmd/micro/rtfiles_test.go b/cmd/micro/config/rtfiles_test.go similarity index 98% rename from cmd/micro/rtfiles_test.go rename to cmd/micro/config/rtfiles_test.go index f3a8b0df..de6525ef 100644 --- a/cmd/micro/rtfiles_test.go +++ b/cmd/micro/config/rtfiles_test.go @@ -1,4 +1,4 @@ -package main +package config import ( "testing" diff --git a/cmd/micro/config/runtime.go b/cmd/micro/config/runtime.go new file mode 100644 index 00000000..62465a0b --- /dev/null +++ b/cmd/micro/config/runtime.go @@ -0,0 +1,4027 @@ +// Code generated by go-bindata. +// sources: +// runtime/README.md +// runtime/colorschemes/atom-dark-tc.micro +// runtime/colorschemes/bubblegum.micro +// runtime/colorschemes/cmc-16.micro +// runtime/colorschemes/cmc-paper.micro +// runtime/colorschemes/cmc-tc.micro +// runtime/colorschemes/darcula.micro +// runtime/colorschemes/default.micro +// runtime/colorschemes/geany.micro +// runtime/colorschemes/github-tc.micro +// runtime/colorschemes/gruvbox-tc.micro +// runtime/colorschemes/gruvbox.micro +// runtime/colorschemes/in_progress/codeblocks-paper.micro +// runtime/colorschemes/in_progress/codeblocks.micro +// runtime/colorschemes/in_progress/funky-cactus.micro +// runtime/colorschemes/in_progress/gameboy-tc.micro +// runtime/colorschemes/in_progress/geany-alt-tc.micro +// runtime/colorschemes/in_progress/github.micro +// runtime/colorschemes/in_progress/mc.micro +// runtime/colorschemes/in_progress/monochrome-paper.micro +// runtime/colorschemes/in_progress/monochrome.micro +// runtime/colorschemes/in_progress/nano.micro +// runtime/colorschemes/in_progress/paper-tc.micro +// runtime/colorschemes/in_progress/paper.micro +// runtime/colorschemes/in_progress/symbian-tc.micro +// runtime/colorschemes/monokai.micro +// runtime/colorschemes/railscast.micro +// runtime/colorschemes/simple.micro +// runtime/colorschemes/solarized-tc.micro +// runtime/colorschemes/solarized.micro +// runtime/colorschemes/twilight.micro +// runtime/colorschemes/zenburn.micro +// runtime/help/colors.md +// runtime/help/commands.md +// runtime/help/defaultkeys.md +// runtime/help/gimmickcolors.md +// runtime/help/help.md +// runtime/help/keybindings.md +// runtime/help/options.md +// runtime/help/plugins.md +// runtime/help/tutorial.md +// runtime/plugins/autoclose/autoclose.lua +// runtime/plugins/ftoptions/ftoptions.lua +// runtime/plugins/linter/linter.lua +// runtime/plugins/literate/README.md +// runtime/plugins/literate/literate.lua +// runtime/syntax/LICENSE +// runtime/syntax/PowerShell.yaml +// runtime/syntax/README.md +// runtime/syntax/ada.yaml +// runtime/syntax/apacheconf.yaml +// runtime/syntax/arduino.yaml +// runtime/syntax/asciidoc.yaml +// runtime/syntax/asm.yaml +// runtime/syntax/ats.yaml +// runtime/syntax/awk.yaml +// runtime/syntax/c++.yaml +// runtime/syntax/c.yaml +// runtime/syntax/caddyfile.yaml +// runtime/syntax/clojure.yaml +// runtime/syntax/cmake.yaml +// runtime/syntax/coffeescript.yaml +// runtime/syntax/colortest.yaml +// runtime/syntax/conf.yaml +// runtime/syntax/conky.yaml +// runtime/syntax/cpp.yaml +// runtime/syntax/crontab.yaml +// runtime/syntax/crystal.yaml +// runtime/syntax/csharp.yaml +// runtime/syntax/css.yaml +// runtime/syntax/cython.yaml +// runtime/syntax/d.yaml +// runtime/syntax/dart.yaml +// runtime/syntax/dockerfile.yaml +// runtime/syntax/dot.yaml +// runtime/syntax/elixir.yaml +// runtime/syntax/erb.yaml +// runtime/syntax/fish.yaml +// runtime/syntax/fortran.yaml +// runtime/syntax/fsharp.yaml +// runtime/syntax/gdscript.yaml +// runtime/syntax/gentoo-ebuild.yaml +// runtime/syntax/gentoo-etc-portage.yaml +// runtime/syntax/git-commit.yaml +// runtime/syntax/git-config.yaml +// runtime/syntax/git-rebase-todo.yaml +// runtime/syntax/glsl.yaml +// runtime/syntax/go.yaml +// runtime/syntax/golo.yaml +// runtime/syntax/groff.yaml +// runtime/syntax/haml.yaml +// runtime/syntax/haskell.yaml +// runtime/syntax/html.yaml +// runtime/syntax/html4.yaml +// runtime/syntax/html5.yaml +// runtime/syntax/ini.yaml +// runtime/syntax/inputrc.yaml +// runtime/syntax/java.yaml +// runtime/syntax/javascript.yaml +// runtime/syntax/json.yaml +// runtime/syntax/julia.yaml +// runtime/syntax/keymap.yaml +// runtime/syntax/kickstart.yaml +// runtime/syntax/kotlin.yaml +// runtime/syntax/ledger.yaml +// runtime/syntax/lfe.yaml +// runtime/syntax/lilypond.yaml +// runtime/syntax/lisp.yaml +// runtime/syntax/lua.yaml +// runtime/syntax/mail.yaml +// runtime/syntax/makefile.yaml +// runtime/syntax/man.yaml +// runtime/syntax/markdown.yaml +// runtime/syntax/micro.yaml +// runtime/syntax/mpdconf.yaml +// runtime/syntax/nanorc.yaml +// runtime/syntax/nginx.yaml +// runtime/syntax/nim.yaml +// runtime/syntax/objc.yaml +// runtime/syntax/ocaml.yaml +// runtime/syntax/octave.yaml +// runtime/syntax/pascal.yaml +// runtime/syntax/patch.yaml +// runtime/syntax/peg.yaml +// runtime/syntax/perl.yaml +// runtime/syntax/perl6.yaml +// runtime/syntax/php.yaml +// runtime/syntax/pkg-config.yaml +// runtime/syntax/po.yaml +// runtime/syntax/pony.yaml +// runtime/syntax/pov.yaml +// runtime/syntax/privoxy-action.yaml +// runtime/syntax/privoxy-config.yaml +// runtime/syntax/privoxy-filter.yaml +// runtime/syntax/puppet.yaml +// runtime/syntax/python2.yaml +// runtime/syntax/python3.yaml +// runtime/syntax/r.yaml +// runtime/syntax/reST.yaml +// runtime/syntax/rpmspec.yaml +// runtime/syntax/ruby.yaml +// runtime/syntax/rust.yaml +// runtime/syntax/scala.yaml +// runtime/syntax/sed.yaml +// runtime/syntax/sh.yaml +// runtime/syntax/sls.yaml +// runtime/syntax/solidity.yaml +// runtime/syntax/sql.yaml +// runtime/syntax/swift.yaml +// runtime/syntax/syntax_checker.go +// runtime/syntax/syntax_converter.go +// runtime/syntax/systemd.yaml +// runtime/syntax/tcl.yaml +// runtime/syntax/tex.yaml +// runtime/syntax/toml.yaml +// runtime/syntax/twig.yaml +// runtime/syntax/typescript.yaml +// runtime/syntax/vala.yaml +// runtime/syntax/vhdl.yaml +// runtime/syntax/vi.yaml +// runtime/syntax/xml.yaml +// runtime/syntax/xresources.yaml +// runtime/syntax/yaml.yaml +// runtime/syntax/yum.yaml +// runtime/syntax/zsh.yaml +// DO NOT EDIT! + +package config + +import ( + "bytes" + "compress/gzip" + "fmt" + "io" + "io/ioutil" + "os" + "path/filepath" + "strings" + "time" +) + +func bindataRead(data, name string) ([]byte, error) { + gz, err := gzip.NewReader(strings.NewReader(data)) + if err != nil { + return nil, fmt.Errorf("Read %q: %v", name, err) + } + + var buf bytes.Buffer + _, err = io.Copy(&buf, gz) + clErr := gz.Close() + + if err != nil { + return nil, fmt.Errorf("Read %q: %v", name, err) + } + if clErr != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +type asset struct { + bytes []byte + info os.FileInfo +} + +type bindataFileInfo struct { + name string + size int64 + mode os.FileMode + modTime time.Time +} + +func (fi bindataFileInfo) Name() string { + return fi.name +} +func (fi bindataFileInfo) Size() int64 { + return fi.size +} +func (fi bindataFileInfo) Mode() os.FileMode { + return fi.mode +} +func (fi bindataFileInfo) ModTime() time.Time { + return fi.modTime +} +func (fi bindataFileInfo) IsDir() bool { + return false +} +func (fi bindataFileInfo) Sys() interface{} { + return nil +} + +var _runtimeReadmeMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8f\xbd\x4e\xc5\x30\x0c\x46\xf7\x3e\xc5\x27\xb1\x5e\xb5\x8f\x81\x18\x58\x10\x0f\xd0\xfc\xb8\xd4\xdc\x24\xae\x1c\x87\x92\x85\x67\x47\x6d\x17\x24\xee\x6a\xfb\x9c\x23\x3f\xe1\xad\x15\xe3\x4c\x58\x38\x51\xc5\x22\x8a\x57\x0e\x2a\xc3\xf0\xbe\x72\x45\x64\xa5\x60\xa2\x1d\x3b\xa7\x04\x4f\xa0\xec\x29\x46\x8a\xe0\x02\x5b\x09\xcf\x02\xcf\xc5\x69\x3f\xd9\x4d\xd4\x9c\xe7\xc4\xd6\x6f\xf0\xcd\xc0\x86\xec\x3a\x3e\x5b\x35\xb8\x8a\x9d\x2e\xcb\x76\xac\x0a\xe6\x9f\x69\x0c\x52\x16\xfe\x98\xf2\x51\x9d\x47\xbc\x2c\xe8\xd2\xb0\x4b\x4b\x11\x89\xef\x04\x13\x64\x77\xa7\x63\xac\x90\xbd\x20\x48\x12\xad\x61\xa5\x4c\x75\x70\x25\xa2\xf6\x62\xee\xfb\x7a\xe1\x76\xe2\xc1\x95\xb3\x61\x2b\xe5\x47\xa1\xe9\xaf\x63\xc6\x21\xf9\x77\x72\x59\x67\x28\xd5\x8d\x82\xf1\x17\xa5\x3e\x0e\xc3\x6f\x00\x00\x00\xff\xff\x99\x17\xe0\x13\x33\x01\x00\x00" + +func runtimeReadmeMdBytes() ([]byte, error) { + return bindataRead( + _runtimeReadmeMd, + "runtime/README.md", + ) +} + +func runtimeReadmeMd() (*asset, error) { + bytes, err := runtimeReadmeMdBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/README.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesAtomDarkTcMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x93\x51\x6f\xdb\x20\x14\x85\xdf\xf3\x2b\x10\xbc\x6c\x52\x12\x35\x38\x26\xce\x63\xeb\xc0\xe3\xb4\xbf\x80\xe1\xb6\x43\xc5\x10\x5d\x83\xb6\xfe\xfb\x89\xd4\xdb\x9a\x15\x5b\xbc\x20\xf9\xe3\x9c\xab\x73\x8f\x4d\xf4\x11\x77\xde\x85\x57\x62\xe1\x59\x67\x9f\x08\x65\x7d\xdb\x77\xbd\xd8\xb2\xc3\xe5\xa0\xf8\x81\x6e\x3e\x40\x26\x8e\x23\x84\x02\x9d\xfa\x72\xaa\x90\xb3\x10\x92\x7b\x76\x80\x84\x32\x75\x96\xf2\xdc\x2d\x88\x85\x29\xe9\x9b\x9a\x52\xa7\x46\x5d\x56\xa9\xfd\x94\xd0\x85\x17\x42\xd9\x63\xa7\x94\x78\xa8\xc2\x53\xd2\x09\xe6\x09\xcf\xa2\x7f\x52\xb2\x8e\xbd\x8d\x43\xf4\xeb\xcc\x15\xe1\x8a\xd1\x10\xca\x04\x7f\x3a\x2c\x40\xe9\xed\x0a\x25\x31\xd1\xb7\x4b\x56\x57\x30\x4e\x17\xaf\x47\x21\x39\xaf\x43\x39\x58\x40\xef\x02\x58\x42\xd9\xa5\x69\x44\xc7\xab\x1c\x20\x46\x24\x74\x88\xde\x12\xa6\xd4\xf1\x78\x3c\xd6\xc7\x8a\x36\xfe\xc3\xba\x6e\x01\x2b\x69\xe5\xa9\xf8\x12\x3a\x7f\xdf\xce\xdb\xbf\x97\xd3\xc3\xa0\x71\x9d\x71\xa1\x6c\x7d\x67\x7e\xdc\xc0\xf6\xa1\x9c\xaa\x69\xb1\xdb\x85\x3c\x0e\xb7\x7a\x88\x56\x74\x42\x6c\x19\x6f\x78\xcb\xef\x15\x4d\x46\x2c\x92\xf5\x07\x15\xe5\x97\x9c\x12\xe0\x6e\x0e\x69\x2d\x9f\x99\xfc\xa9\x31\xbc\x57\x4a\x4a\x29\x4f\xa7\x7a\xff\x32\x4e\xef\xf7\x92\x12\xbf\x70\xd5\xfc\x5f\xd0\x72\x35\xd1\xe7\x31\x7c\x20\xd8\xa7\xbe\xed\x07\xd4\xe6\x15\xd2\x54\x29\x1e\xfb\x16\x09\xfc\x4a\x10\x2c\xd8\x5b\xab\x26\xf2\x65\x88\xd1\x13\x17\x48\xbf\x25\x90\xcc\xfe\xeb\x9d\x64\x61\xf6\x7f\x5f\xd0\xf9\xef\xa5\x1b\xf6\xdd\x6b\x17\xc8\x1f\xab\xcd\xef\x00\x00\x00\xff\xff\xf2\xb5\x33\x28\xe2\x03\x00\x00" + +func runtimeColorschemesAtomDarkTcMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesAtomDarkTcMicro, + "runtime/colorschemes/atom-dark-tc.micro", + ) +} + +func runtimeColorschemesAtomDarkTcMicro() (*asset, error) { + bytes, err := runtimeColorschemesAtomDarkTcMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/atom-dark-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesBubblegumMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x92\xdd\x4e\xc3\x30\x0c\x85\xef\x79\x0a\x2b\x48\x08\xa4\xad\x5a\xda\x51\xe0\x9a\x7b\xde\x21\x4d\xbc\x29\x5a\xea\x54\x4e\x22\xd8\xdb\xa3\xfe\x6c\xb0\x26\xbb\xb3\xf4\x1d\xc7\x27\x3e\xd6\xde\x79\xde\x3a\x4b\x27\x30\x78\x50\xc9\x45\x10\xf5\x5e\x6e\xea\x46\x8a\x87\x7f\x50\xfb\xbe\x47\x9a\x60\x5b\x80\x14\xa2\x1a\xa9\x6c\x76\x77\x69\x15\x22\x5b\x3a\x8e\xa2\xfb\x4f\x54\x94\xfa\x0e\x79\x14\xe5\x26\xac\x41\x8a\xf6\x60\x67\xde\x64\x3c\x44\x15\x71\xb6\xd9\xd4\x39\x3d\xf7\x9d\x77\x45\x34\x30\x0e\xec\x35\x88\xfa\x3d\x63\xf1\x3c\x20\x88\x36\x77\x13\x06\xd4\x56\x39\x10\xb2\x7d\xcb\x20\x32\x7b\x06\x51\x37\x72\x03\xb2\xdd\xdd\xb0\x44\x06\xd9\x59\x42\x03\xe2\x5a\x43\x69\xeb\xd1\x1b\x5f\x5e\xf9\xf8\xd5\x14\xa6\xc6\x39\xaf\xd7\xfd\x6d\xa7\xea\x3a\xc5\x65\x76\x4c\x31\x22\x6f\x17\x8b\xf2\x23\x77\xbf\x28\xbe\x15\xd3\x92\xd8\x3e\xd3\x8c\xb3\xb7\x97\xb4\x26\x8b\xab\x31\x3a\x71\x98\xeb\xd1\xe3\x1a\x4e\xa5\xf6\x2e\xf5\xb4\xd0\xc7\x2f\x0f\xf8\x13\x91\x0c\x9a\x69\xeb\x01\x9e\x3b\xef\x1d\x58\x82\xcf\x0d\x3c\xe9\xea\x05\x14\x19\x18\x9c\xb2\x04\x1d\x2b\x7d\xc2\x18\xd6\x51\x55\xd7\x27\xc4\x72\xd0\x85\x23\xa8\x2e\xdd\x7f\xa2\xdf\x00\x00\x00\xff\xff\x96\x2c\x9d\xee\x09\x03\x00\x00" + +func runtimeColorschemesBubblegumMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesBubblegumMicro, + "runtime/colorschemes/bubblegum.micro", + ) +} + +func runtimeColorschemesBubblegumMicro() (*asset, error) { + bytes, err := runtimeColorschemesBubblegumMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/bubblegum.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesCmc16Micro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x94\x41\xd2\xdb\x2c\x0c\x86\xf7\x39\x05\x43\x16\xff\x26\x61\xe6\xdf\xf4\x02\x59\xf7\x10\x02\x14\x87\x89\x0c\x1e\x21\x92\xe6\xf6\x1d\xa8\xf3\x35\xfe\x8c\xdd\x9d\x07\x3d\xc8\xaf\xa4\x17\x1d\x2f\x30\x09\x84\xf8\xd3\x5d\x08\x89\x20\xfe\x97\xd5\x84\x9c\x53\x04\x52\x2e\x51\x62\x95\xdd\x0d\x47\x34\x87\xe3\xff\x3f\xda\x49\x61\xf5\x40\xce\x21\x45\x73\x68\xc4\x99\x42\xbc\x2b\x97\xc6\x11\xa3\x28\x6d\x13\x79\x65\x09\xdc\x5d\x2f\xe3\x31\x0b\x54\xc0\xbd\x20\x76\x43\xc6\xa6\x44\x73\x82\x7d\xc8\x08\x17\x9c\xc9\x81\x11\xf7\xd0\x2b\x50\x7e\xb3\x8c\xbe\x4f\x66\xe1\x10\x07\xa5\x5f\x48\x94\x9e\x7b\x8c\x29\x4c\x4a\x97\xe8\x91\x29\x44\x54\x96\x0a\x9e\xd4\xf3\x16\x04\xf5\xe1\xd8\xbb\x17\xcb\x68\x91\x95\x7e\x1f\x6c\x64\x9f\xd0\x05\xa0\xcb\x0d\x78\x16\x3b\xc2\x80\x51\x60\x81\x07\x8f\x51\xc2\x35\x20\x6f\x54\xf4\x17\x30\x23\x38\x4e\xff\xc6\x1e\x5f\x3f\xac\xa5\x2c\x6b\xf8\xc0\x1c\x41\xce\x9b\x2d\xdf\x00\xe7\xb6\x7c\x80\x59\x40\xf0\xc3\x28\x9d\x86\xe7\xd7\x68\xab\x0f\xbe\x6b\xfe\x73\x6e\x2c\x83\xbb\xa3\xd4\x5f\x34\xbd\x6b\x42\x60\x58\x54\xd4\x25\x0c\xfe\x12\x8c\x1e\xfd\x66\x4d\x13\xe3\xc4\xc9\x6d\x19\x52\x5e\x13\x2a\xbd\xbe\x56\xcf\xcd\x1d\x5f\xcf\xc4\xdb\xb9\xe7\x69\x2b\xdd\x1d\xf2\x10\x13\xa3\xd2\x1e\xaf\x50\x68\xe9\x17\x64\x4e\xef\x79\x9d\x2c\x87\xe1\x26\xdf\xfb\x24\xc9\xa7\xa5\x43\xc1\xdd\x67\xb6\xd3\xee\x10\xeb\xec\xce\xae\x19\x6f\xc6\xd6\x82\x6b\xa6\xf3\xdb\xc9\xbb\x61\x93\x1d\x27\x22\x0b\x5d\xb0\xce\xbf\xe4\xa6\x4b\x37\x77\x9c\x56\x33\x12\xb0\xed\xf2\x46\xd8\x15\xe6\x2a\x78\xa1\x68\xf5\xb0\xd7\xd0\xac\xab\x47\x0f\x45\x04\xf9\x3c\xf7\xf6\xb4\x11\x7e\x02\xc7\xb6\x24\xd6\x5b\xa4\x7e\xba\x44\x65\x8c\x9d\xf5\xf6\x35\x09\xbf\xbb\x3b\x3e\x6e\xf8\xf0\x08\xbe\x3d\xf1\x56\xfc\xef\x00\x00\x00\xff\xff\xc4\x32\xdf\x3b\xa5\x05\x00\x00" + +func runtimeColorschemesCmc16MicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesCmc16Micro, + "runtime/colorschemes/cmc-16.micro", + ) +} + +func runtimeColorschemesCmc16Micro() (*asset, error) { + bytes, err := runtimeColorschemesCmc16MicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/cmc-16.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesCmcPaperMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x94\x41\x8e\xe3\x20\x10\x45\xf7\x7d\x0a\x44\x2f\x66\x93\xf8\x12\x59\x8f\x34\x57\x28\x70\xc5\x41\x29\x57\x59\x05\x74\xe4\xdb\x8f\x70\xe3\x9e\x24\xc6\x9e\x5d\xc4\x7f\x90\xcf\xe7\x97\x3f\x2f\x30\x25\x08\xfc\xdb\x5f\x08\x89\x80\x7f\x45\x33\xa1\x46\x61\x20\xe3\x85\x44\x4d\xf4\x37\x1c\xb1\xfb\xf8\xfc\x03\x13\xaa\xf9\x42\x8d\x41\xf8\x63\x11\xcf\x14\xf8\x6e\x7a\xbc\x42\xa6\x64\xac\x23\xf0\xf7\xd3\xe3\x16\x12\xda\x67\xc0\xcb\x38\x22\x17\x40\xa8\x37\x0b\xf5\xa6\x73\x4c\x50\x00\x3f\x03\x37\xa5\xce\x89\x50\x3d\xe0\x18\xea\x92\x66\xac\xe4\xa0\x88\x47\xe8\x15\x28\xae\xac\x62\xdf\x26\x63\xd2\xc0\x43\xa5\x66\x24\x92\xc7\x11\xd8\x65\x25\x63\x33\xf7\xa8\x14\x18\x8d\xa3\x8c\x27\xd3\x0a\xa5\x6e\xe3\x3c\x3a\x54\x63\xd7\x85\x9d\xc3\x27\xf4\x01\xe8\x72\x03\xad\x56\x46\x18\x90\x13\xbc\xe0\xa1\x47\x4e\xe1\x1a\x50\x77\x6e\xf5\x0f\xe8\x46\xf0\x2a\xff\xc7\xbe\x7e\xfe\xb0\xdc\x64\x8f\xf2\x04\x31\xee\xa6\x3e\x29\x4e\x2a\x7e\xef\xfd\x62\x82\x84\x4f\x0d\x69\x84\x1c\xe7\xd1\x95\x02\xbc\x1b\xfd\x5e\xef\x9c\x82\xbf\x63\x2a\x0e\xde\x4d\xa6\x79\x42\x63\xb7\x9e\xca\x7a\x77\xc7\xf9\x21\xda\xef\x1a\xaf\xa9\x1b\xdb\x0c\x7b\x60\x51\x34\xb6\xf6\xff\x45\x43\x55\x51\x63\x4f\x4e\xc3\x70\x4b\xef\xae\x93\xf4\xb2\x8e\xcb\x37\xd1\xb8\x72\xe0\x12\xef\xd9\x2f\x2f\x5e\xb1\xad\xc3\xd2\xb1\xf3\x5a\xa1\x43\xb9\x8b\x5e\x85\xc8\x41\x13\x2c\x6f\x90\xe3\xd2\x58\xbb\x94\xf5\xb4\x4d\x12\xdc\xb2\x79\x47\xf6\x59\xb5\x18\x7e\x71\xb4\x99\xaa\x2d\x54\x7d\xb5\xe8\x21\xa7\x84\x7a\x5e\xc3\xdc\x91\x1f\xa0\xbc\x4c\xe8\x76\x84\xcb\x4f\x2f\x94\x47\x6e\x7c\x5b\x7e\x66\xb4\x3f\x9a\xd9\xbf\x01\x00\x00\xff\xff\xa0\xd0\xed\x0e\x23\x05\x00\x00" + +func runtimeColorschemesCmcPaperMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesCmcPaperMicro, + "runtime/colorschemes/cmc-paper.micro", + ) +} + +func runtimeColorschemesCmcPaperMicro() (*asset, error) { + bytes, err := runtimeColorschemesCmcPaperMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/cmc-paper.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesCmcTcMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x94\xcf\x92\xe2\x20\x10\xc6\xef\x3e\x05\x05\x87\xbd\xc4\x94\xe6\x8f\xc1\xb3\x55\x7b\xdb\x87\x00\xd2\x71\x52\x12\x48\x35\xb0\x53\xbe\xfd\x16\xd1\xa8\xcc\xe0\xee\x72\x4a\xd2\x3f\x9a\x8f\xaf\xbb\xc3\x4e\x62\xf6\x62\x34\xbf\xd4\x49\x83\xd6\xc2\xfc\x70\x64\x06\x74\xd6\x08\x4d\x94\xd5\x36\x20\x71\xea\x03\x26\x28\x37\xec\x67\xd0\x8f\x8f\xd0\x8f\x7e\xb4\xa6\xdc\xc4\x77\xdc\xea\xd1\x5c\x48\x0f\x83\x08\xda\x13\xca\xc4\xb2\x0a\xb6\x87\x6a\x5f\x35\xf4\x15\x52\x76\x9a\xc0\x78\x42\xa5\xd5\x3d\x61\xed\xb2\xbe\x10\xc6\x79\x11\x11\xb6\xdb\x71\xce\x39\xdd\xb0\x4c\xb8\x74\x1e\x47\x73\x26\x94\x45\x66\xb7\xcb\xe6\x78\x42\x82\xb7\xdd\x5b\x68\x06\x35\x0a\x7d\xfa\x10\xb8\xea\x52\x4a\xa9\x61\x48\xf0\xb1\x07\xe3\xc7\x61\x84\x07\x04\x75\x53\xd5\xcd\x1b\xa8\x9c\x84\x42\xfb\x7f\xe8\xef\xe7\xc1\x6d\xd7\x76\x6f\x0f\x2e\x95\x16\xce\xad\xe8\xb0\xac\x04\x75\x5e\x78\x78\xf5\x37\x12\x5f\xfc\x75\xd7\x49\x5a\x4d\x28\xeb\xaa\x6a\xa8\xbb\x4c\xac\x94\x28\xd4\x05\xbc\x23\x94\x35\xfb\xc3\x11\xf6\x39\xc8\x8b\xe8\x6b\x46\xef\x8c\x30\xa3\x55\xcf\x12\x7f\x93\xe9\xaf\x33\x10\xca\x6a\x90\x0d\x3f\x7e\x8b\x94\x17\xb8\x7e\x5a\xec\xd7\x04\xb2\x07\x25\x0f\xa9\x84\x5b\xc5\x08\x65\xb2\xed\xa0\x57\xa9\x5f\x67\x63\x11\x08\xbd\xf7\x63\x12\x03\x44\xbb\x7a\x5d\xe4\xaa\xe2\x6d\xbf\x16\x2d\x98\x1e\x50\x8f\x06\xc8\xd2\x62\x9c\x17\x6c\xa8\x0e\x6d\x55\xa5\xa7\x99\x58\x9e\xad\x5a\x9a\xa7\xc8\x89\x8d\x29\xb6\x26\x4c\x32\x76\xce\x1d\x28\x58\x7d\xa8\x8f\x35\xbc\x03\x4b\xa7\xd0\x6a\x2d\x63\xd2\x9c\x4f\xb1\xd0\xc1\x2d\xe2\x9e\xe3\xc6\x45\x73\x3c\xc8\xf4\x3a\x42\xde\x72\xfc\x85\x51\x01\x31\x5e\x21\xd1\xf9\xda\xb6\x05\x6b\xaa\xa6\x6d\x8e\xff\xda\x75\x17\x1d\xb7\x23\xf4\x09\x7d\x0e\xde\x03\x6e\xef\xf6\x67\x9d\xbf\x23\x9f\x02\xcd\x6d\x64\x33\xcc\xed\x51\x59\x1d\x26\x43\x68\xae\x1c\x8f\xa1\x96\x36\x36\xf9\xdb\x16\x4c\xb8\xd2\x63\x80\x15\xe6\xed\x30\xf0\xfc\x2f\xe9\x06\x0f\x42\x3b\x78\x0e\x18\x6f\x79\x4b\xff\x04\x00\x00\xff\xff\xf6\xb1\x14\xb0\x49\x05\x00\x00" + +func runtimeColorschemesCmcTcMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesCmcTcMicro, + "runtime/colorschemes/cmc-tc.micro", + ) +} + +func runtimeColorschemesCmcTcMicro() (*asset, error) { + bytes, err := runtimeColorschemesCmcTcMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/cmc-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesDarculaMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\xc1\x8e\xea\x20\x14\x86\xf7\x3e\x05\x81\xad\x6d\xae\xb5\xb7\xd6\xdc\x95\x56\xbb\xbc\x99\x57\xa0\xe5\xe8\x10\x29\x34\x07\x9a\x19\xdf\x7e\x42\xad\x13\x47\x91\x91\xb3\x21\xe9\xc7\x7f\xe0\x3f\x7f\x5b\xa3\x0c\x26\x4a\xea\x13\x11\x70\xe0\x83\x72\x84\xb2\x6a\x5c\x73\x96\xe5\xbe\xe8\xec\x06\x6a\x4d\xd7\x81\xf6\xd0\xea\x8f\xaf\x20\x24\x05\x68\x27\x0f\x12\x90\x50\x56\xd7\x55\x51\xec\x9e\x88\x69\xeb\xf8\x45\x6d\xb3\xde\x57\x59\x94\x4a\xad\x43\xa9\x8f\x84\xb2\x62\x53\xae\xfe\xae\x5f\x81\xd3\xf6\x9d\x63\xfc\x84\x75\xdc\xc1\xf4\xa6\xaa\x2a\xb3\x3c\x7c\x0b\x7b\xee\x1a\xa3\xe2\xe6\xf4\x08\x3d\x9a\x36\x2e\xe4\xce\x3d\xfc\xd2\xaa\x87\x56\x72\x15\x87\x06\x2d\x00\x95\xd4\x20\x08\x65\xbb\xe5\xb2\x28\xc3\x1c\x20\x1a\x24\xb4\x31\x4a\x10\x56\x6d\xf3\xed\xa2\x08\x5f\xcb\x08\x73\xc5\x22\x72\xde\xad\xc1\xfa\xbe\x84\x4e\xdf\xe7\x93\x25\x3f\xe5\x78\xd3\x8c\xce\x47\x18\xa9\x7d\x4e\x92\x69\x44\x79\xed\x2b\xd8\xd4\xb7\x4b\xf4\xd0\x35\x63\xa0\x8a\x71\x85\xa7\x3f\x20\x7a\xc9\x97\x0f\x1c\x07\xe7\x00\x93\xc9\xa4\x98\x3f\x13\xf9\xc1\x51\x5f\x42\xb8\x2f\x76\xdb\x55\xfe\xec\x1a\xf6\xb2\x07\x42\xa7\xdf\x6a\xce\xb2\xca\xd7\x5d\x5a\xfd\xb6\x35\x6a\xe8\x74\x80\x64\xff\x0d\x81\x4f\x07\x5a\x80\x18\x73\x63\xff\x91\x37\xc5\xa5\x26\x0d\xf2\xf6\x04\xce\xa6\xf7\xc9\x4a\xbf\xf9\xab\x1c\x9d\xb1\x87\x18\xa7\xd7\xf3\x37\xd4\x23\xe4\xb8\x7f\xe7\x66\x5f\x2e\xea\x9b\xb9\x7c\x05\x00\x00\xff\xff\xe6\xbf\x86\x0a\x32\x04\x00\x00" + +func runtimeColorschemesDarculaMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesDarculaMicro, + "runtime/colorschemes/darcula.micro", + ) +} + +func runtimeColorschemesDarculaMicro() (*asset, error) { + bytes, err := runtimeColorschemesDarculaMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/darcula.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesDefaultMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\xcd\x6e\xab\x30\x10\x85\xf7\x79\x0a\xcb\xde\x06\x74\x43\x12\x43\x74\x57\x50\x60\x59\xf5\x15\x0c\x9e\xa4\x56\x8c\x8d\xfc\xa3\x36\x6f\x5f\x99\x92\x2a\x69\x5c\x5a\xbc\xb1\xc4\x37\x67\xc6\xc7\xc7\xbd\x96\xda\x24\x52\xa8\x33\xe2\x70\x64\x5e\x3a\x84\x49\x5b\xb4\x45\x9b\xad\x49\x56\x84\x85\x57\x37\x50\xaf\x87\x01\x54\x80\xf2\x7d\xbe\xd9\x37\x51\x48\x70\x50\x4e\x1c\x05\x18\x84\x09\xa5\xf5\xa1\x69\x7f\x10\x53\xd6\xb1\x49\xad\x6c\x8a\x4d\xbb\x4c\xa5\xd6\x19\xa1\x4e\x08\x93\x86\xd6\x55\xbe\xfb\x0b\x9c\xf6\xaf\x2c\x0c\x51\xd5\x0d\x2d\xeb\x68\x85\x75\xcc\xc1\x7c\xa6\xf6\x90\xd1\x3c\x7e\x70\x7b\x19\x3a\x2d\x97\x99\xd1\xc0\x68\x74\x8f\x30\x79\xaa\x76\xd5\x86\x46\x21\x77\x19\x61\xd9\x16\x3b\x42\x2f\x58\xe8\x55\xd2\x26\xcb\xe2\x1e\x7b\xc5\xc1\x48\xa1\x80\x23\x4c\xea\xed\x96\x16\xf1\x99\xc0\x18\x6d\x10\xee\xb4\xe4\x68\x71\x2c\xcd\xf5\x15\x5b\x90\x0b\x6e\x79\x1b\xfa\x22\x3c\xff\x5f\xcf\x79\xb9\x97\x63\x5d\x37\x39\xbf\xc0\x08\x15\x72\x92\xcc\x57\xb4\xff\x17\x56\xb4\x69\x68\x97\x28\x3f\x74\x53\xa0\xca\xe9\x5b\x93\x6d\x16\xd6\xfd\xed\x7b\x63\x82\x64\xbc\x20\xa2\x7c\xf2\xce\x81\x49\x66\x93\x96\xfc\x99\xc9\x37\x66\xd4\xef\x21\xf4\xc6\x7e\xee\x83\x4b\xb1\x39\xa7\x6d\xaf\xa5\x1f\xd4\x0d\x41\x9e\x35\x82\x77\x07\x8a\x03\x9f\x72\x62\xff\xa3\x17\xc9\x84\x42\x9d\x61\xfd\x19\x9c\x4d\xbf\x27\x29\xfd\xe2\xf1\xfc\x7e\xf1\x8a\x3c\xc4\x36\xbd\xd6\xdf\x50\x8f\x90\x63\xa7\xc8\x4b\xfc\x08\x00\x00\xff\xff\x92\xba\x33\x8a\x22\x04\x00\x00" + +func runtimeColorschemesDefaultMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesDefaultMicro, + "runtime/colorschemes/default.micro", + ) +} + +func runtimeColorschemesDefaultMicro() (*asset, error) { + bytes, err := runtimeColorschemesDefaultMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/default.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesGeanyMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x92\x41\x8e\xf3\x20\x0c\x85\xf7\xff\x29\x10\xff\xb6\xe9\x35\xe6\x1c\x06\xdc\x14\xc5\xb1\x23\xc7\x28\x93\xdb\x8f\x68\x32\x23\xd1\xd0\x1d\xe2\xb3\xfd\xfc\x1e\xfc\xff\x42\xe0\xfd\x5f\x14\x12\x1d\x28\xf3\xe4\xa2\xcc\x33\xb2\x39\xaf\x98\x7c\x0b\x78\x35\xa8\x24\xe1\x03\x0a\x59\x97\xde\xb9\xcc\x01\xb5\x8b\x56\xd3\xcc\xa3\xf3\x41\x28\xb9\x1d\x89\x64\x6b\x66\xe4\x84\x6c\xf9\x91\x51\xfb\x1a\x8b\xe2\xa2\x12\x9d\x8f\x3b\x70\x43\xd6\x05\x63\x06\x72\x3e\x50\xc1\x96\x18\x18\x1e\x86\xae\x6c\x9f\x83\x50\x5f\xeb\x60\x77\x83\xdf\x7d\x2f\xdd\xb6\x2f\xd8\x19\x5a\xaf\xef\xf8\x6d\xc8\x09\x53\x7f\x36\xaa\x8a\x5e\x03\x36\x49\x72\x8a\x5d\x0c\x66\xae\xd9\x0c\xf1\x09\xfa\xb7\x0f\xc4\xa9\xa9\xa1\xcc\x38\x1c\xf1\x3b\xdf\x3e\x4e\x51\xad\xed\x9f\x2b\x6a\x4c\x65\xad\xbc\x5a\x82\x38\xdd\xb6\x67\xb6\x37\x67\x10\xc2\x4b\xfe\x03\x3f\x8e\x51\xa8\xcc\x7c\x2e\x39\xa2\x62\x6b\x64\x2c\x66\xa8\xc3\x19\xc1\xed\x3d\x83\x13\x6f\xa0\xfc\xfa\x2a\x95\xff\x04\x00\x00\xff\xff\xc6\x46\x15\x05\xa4\x02\x00\x00" + +func runtimeColorschemesGeanyMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesGeanyMicro, + "runtime/colorschemes/geany.micro", + ) +} + +func runtimeColorschemesGeanyMicro() (*asset, error) { + bytes, err := runtimeColorschemesGeanyMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/geany.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesGithubTcMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x92\xc1\x6e\xdb\x40\x0c\x44\xef\xfe\x0a\xd6\x3a\xf4\x62\x19\x89\xec\xa8\xd6\xb1\x69\xda\xfe\x40\x81\xa2\xc7\x5d\x89\xd2\x12\x59\x91\x06\x97\x82\xa3\xbf\x2f\xe4\x44\x08\xd4\x2a\x48\xce\x7c\xb3\x33\x9c\x65\xf6\x4b\x07\x84\x5a\xa2\x28\x58\xc0\x1e\xc1\xbb\x84\x0d\x08\xc3\x4f\xb2\x30\xf8\xcf\x09\xd2\xc8\xe6\x9e\x20\x50\x17\x22\x75\xc1\x88\xbb\xfd\x26\xfb\xed\x94\x89\xbb\x1d\x58\xa0\x04\x94\x5e\x85\x41\x2e\x40\x06\x8a\xdc\xa0\x62\x03\xc4\xd0\x8f\xf0\x83\x14\x5b\x79\xfa\xb4\xc9\xfe\xc8\xa0\x09\x7a\x37\x42\x14\x79\x84\x86\xda\x16\x15\xd9\xf6\x9b\x6b\x8e\x3c\x12\x3f\x42\x2d\x7d\x8f\x6c\xb0\xf5\x12\x1b\xc8\xaa\xb2\x3a\x55\xe5\x76\x49\x70\x32\x37\x21\xd9\xcd\xcd\xa9\xbc\xaf\x56\xa7\x7b\x1e\x7a\x8f\xfa\x0e\x94\xce\x58\x93\x8b\xdf\x82\xd3\xd9\xf1\xf6\x74\x28\xef\x1f\xde\xc0\x4d\x89\xbb\x8f\x90\x5e\x24\xae\x7b\x53\x83\x6c\xd4\xd2\x35\xdb\xd7\x2f\xb7\x0f\x77\xcb\x27\xce\x8a\x67\x95\x7a\x36\x59\x21\x5e\x42\xaf\xcb\x93\x39\xc3\xe7\x06\x57\xc7\x63\xef\xa7\x64\x0d\xb6\x6e\x88\xb6\x98\xd9\x78\xc6\x75\x15\xaa\xca\x5c\xd0\x2e\xfb\x7e\x38\x16\x87\xe3\x52\x2a\x8d\xc0\xf6\x12\xc8\x70\xb9\x2c\x4f\xdb\xe6\xf5\xb5\xdf\x35\xcf\x48\x8c\xf9\xfc\x55\x6f\x7f\xf9\xa0\xd3\xa1\xe4\x1f\xa3\xbb\xc1\x0c\x35\x7f\x37\xf4\x0b\x77\x79\x3e\xe8\xf9\xc1\xb6\x28\xef\x8a\xe2\xbf\x4e\x87\x34\x99\xcf\x50\x7d\xaa\xab\xda\xef\xb2\xe2\x58\x54\xc5\x72\x65\x73\xde\xbf\x5e\xd3\x3f\xe0\xdf\x00\x00\x00\xff\xff\x2e\xfb\xbb\x2b\x77\x03\x00\x00" + +func runtimeColorschemesGithubTcMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesGithubTcMicro, + "runtime/colorschemes/github-tc.micro", + ) +} + +func runtimeColorschemesGithubTcMicro() (*asset, error) { + bytes, err := runtimeColorschemesGithubTcMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/github-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesGruvboxTcMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x92\xc1\x6e\xc3\x20\x0c\x86\xef\x7b\x0a\x94\x5c\x97\x2a\x0b\x6d\x02\x8f\x83\xc1\xed\xd0\x08\x44\x06\x34\xf5\xed\x27\xd2\x76\x5b\x3b\x96\x4d\x5c\x7c\xf8\xfc\xe3\xff\xb7\x75\x70\x81\x3a\x67\xfd\x1b\x33\x78\x54\xd9\x25\xd6\xb4\x08\x06\x60\x78\x6e\x07\x51\x5e\xf3\xf4\x0d\xd2\x61\x9e\xd1\x17\x48\x0e\x82\x4f\xfb\x2a\x14\xcf\x33\x04\xc7\x9a\xd6\x4c\x52\x0e\x2f\xbf\x08\xf9\x98\xd4\xaa\x64\xb8\x18\x25\x6c\x52\xbb\x98\xc8\xfa\x13\x6b\x5a\x10\x00\xc3\xf8\x1f\x78\xa7\x5f\x15\x6d\x77\x58\x83\x3e\xd9\xa3\xc5\xc2\x09\xd4\xfd\xa4\xeb\x86\x92\x4a\x78\xf5\x7d\x84\xbd\xe4\x75\xdf\x0b\xe1\x42\x41\x7f\x41\x03\x3f\xdc\x01\xe9\xbc\xe0\xb6\x44\x5c\x50\x5b\xf5\x47\x76\xd9\x1b\x24\x67\x3d\x1a\xd6\x7c\xd6\xac\x46\x22\x51\x28\xde\xa4\xe9\xfb\xbe\x9e\xc1\x29\xa7\x84\xd4\xdd\xc8\x8d\xd9\xae\xe4\xbb\x22\x7f\xd9\xc5\xc6\x88\x65\xa2\xce\xe7\x19\xd6\x68\xc7\xf1\xa0\x0f\x75\x51\x9d\x89\xd0\xa7\xae\xde\xc0\x35\x17\x7c\x7c\x6c\x88\x97\xba\x44\x59\x03\xd6\x52\x07\x97\x67\xcf\x9a\x76\x92\xd3\xbe\xc7\x1f\xeb\xcc\xf1\xaa\x70\x3b\xf6\xcb\x97\xf7\xeb\x52\x00\xeb\x09\x3d\x32\x1f\x01\x00\x00\xff\xff\x0f\xfc\xc9\xea\x36\x03\x00\x00" + +func runtimeColorschemesGruvboxTcMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesGruvboxTcMicro, + "runtime/colorschemes/gruvbox-tc.micro", + ) +} + +func runtimeColorschemesGruvboxTcMicro() (*asset, error) { + bytes, err := runtimeColorschemesGruvboxTcMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/gruvbox-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesGruvboxMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x90\xc1\x4e\xc6\x20\x10\x84\xef\x3e\xc5\x86\xf3\x5f\x23\xb4\x4d\xe3\xe3\x50\xd8\xdf\x10\x61\xb7\x59\xe0\xf0\xbf\xbd\xc1\x1a\xb5\x82\xb7\x49\xbe\x61\x76\x18\xc7\x91\x65\x8a\x81\xde\xc1\xe3\xdd\xd6\x58\x40\x19\x33\xdf\xcc\xbc\xaa\xa7\x5f\xd0\x71\x4a\x48\x0d\x2e\x23\x48\xb9\xd8\x46\xf5\xb6\xfe\x4b\x9f\x73\x91\x40\x6f\xa0\xf4\x62\x3a\x53\xf0\x48\x25\xdc\x03\x0a\x28\xfd\xf2\xda\xf1\x5c\x6c\xc1\xb3\x81\x36\x4b\x8f\x1f\x69\xe7\x38\x66\x87\xe0\x21\xec\x40\x6d\xfd\xd9\xf2\x38\x10\x94\xd1\x83\xc4\x03\x5d\xb0\x2d\x72\xf0\xac\x92\x47\x89\x81\xd0\x83\xfa\xd6\x30\xea\x8d\x22\x2c\xa0\xcc\xbc\xde\xb4\x59\xae\xb7\xd9\x33\xa8\x9d\xa3\x87\xd1\xe2\x2d\x72\xa2\x9a\xf6\x36\xc9\xb9\xfa\x76\xdd\xb5\x8a\x20\x95\xe9\x62\x3c\xdb\x76\xc6\x7c\xea\xf6\xd7\xbf\xf0\x53\x3a\x8e\x35\x51\x4f\xdb\xec\x35\x7f\xbd\x34\x7d\x87\x62\xf7\xdd\xca\x0f\xfb\x08\x00\x00\xff\xff\xe7\x9a\x4e\xad\x4f\x02\x00\x00" + +func runtimeColorschemesGruvboxMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesGruvboxMicro, + "runtime/colorschemes/gruvbox.micro", + ) +} + +func runtimeColorschemesGruvboxMicro() (*asset, error) { + bytes, err := runtimeColorschemesGruvboxMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/gruvbox.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesIn_progressCodeblocksPaperMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x52\x4b\xce\xf2\x30\x0c\xdc\x73\x0a\xab\x6c\x29\x07\x60\xf7\xbf\x16\xff\x31\xf2\x30\x6d\xd4\xd4\xae\x1c\x47\x15\xb7\xff\x94\x50\x10\x7d\xb0\xab\x3a\x93\x99\xf1\xd8\xe7\x5f\xe0\x38\xb2\x24\xd7\xe3\x88\x60\x4d\x42\x0f\x4c\xf0\x87\x3d\xde\x6e\xbf\x23\xbb\x21\xc1\xff\xbf\xff\x4e\x67\x9b\x15\xe6\xa0\x3d\x18\x98\xfb\xa0\x85\xeb\x86\x4e\x38\x93\xbf\x9e\xaa\x46\x1b\x03\x0d\xe0\xf1\x6e\x72\x54\x68\x6c\x34\x6e\xb8\x54\x6e\xf3\x49\x70\x3c\x8e\x48\x85\xc0\xd1\x43\x65\x6d\x70\x4a\x6a\x2a\x21\xe6\xed\xd3\x27\x74\xa5\x3c\x5a\x94\x45\x62\x34\x1d\x92\x9a\x63\x66\x52\x09\xd4\xbd\xcd\x36\x82\xc1\x23\x69\xb8\x87\xaa\xb5\x4b\x32\x09\x4e\xc2\x0e\x9a\x4e\x10\x69\x05\x25\x35\x8a\xcb\x18\x5b\xd1\xf4\x18\x2d\x47\x68\x04\xfd\xc1\xff\xab\x15\xe3\x06\xd4\x74\xf0\x52\x1f\x13\x1e\x09\x4e\xe8\x82\x89\xd0\x1c\x4d\x1a\x3a\x62\x41\x68\x96\xde\x57\x18\x8a\xf0\xab\xa5\xba\x88\x8b\x95\xd0\xf5\xba\x4d\xa6\xec\xf9\x73\x1f\x0b\xed\x81\x31\xf2\xbc\x76\xa3\xd2\x58\xeb\x7a\x23\x5f\x17\x18\x03\x61\xfb\xde\xd0\x97\x2b\x28\x05\xe6\x54\xa8\xd0\x3c\xa3\xed\x42\x19\x6b\x8b\xcb\x31\xea\xb2\x48\x49\xb2\x32\x13\xf4\x97\x7d\x9e\x2e\xab\xa2\xb4\x4b\x19\x3b\xa5\x05\x9e\x8d\x50\xbd\x94\x9d\x53\xfd\x74\x1c\xf3\x48\xaf\x2b\xf9\x09\x00\x00\xff\xff\xc6\xf2\xd8\xdd\x37\x03\x00\x00" + +func runtimeColorschemesIn_progressCodeblocksPaperMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesIn_progressCodeblocksPaperMicro, + "runtime/colorschemes/in_progress/codeblocks-paper.micro", + ) +} + +func runtimeColorschemesIn_progressCodeblocksPaperMicro() (*asset, error) { + bytes, err := runtimeColorschemesIn_progressCodeblocksPaperMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/in_progress/codeblocks-paper.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesIn_progressCodeblocksMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x92\x41\x92\xa3\x30\x0c\x45\xf7\x73\x0a\x95\x67\x31\x9b\x90\x03\x64\x39\x33\xbd\xe8\x7d\x5f\xc0\x36\x8a\x71\x21\x24\x4a\x96\x2b\xcd\xed\xbb\xa0\xe8\x54\x93\x38\x3b\x8a\xff\xd0\xff\x5f\xe2\xf7\xc7\x80\x13\x42\xf0\x05\x7b\x10\x86\x7f\xd2\xe3\xe5\xf2\x97\x24\x8e\x05\xde\xff\xbf\xfd\x29\xd0\xe3\xd5\x57\x32\x28\x0b\x9b\xff\x84\x21\xa7\x81\x72\x1a\x2c\x73\x3a\xff\x8a\x42\xa2\x1d\x65\x1e\x21\xca\x34\x21\x1b\xb8\x20\xd4\x43\x20\x1f\x47\x77\xd4\xb9\x98\xdf\x00\xaa\xd8\x94\xce\xc5\x34\x73\xba\x8f\x78\x85\x71\x9d\x02\xea\x8e\x4d\x3e\x21\x9b\x3f\x90\xb9\x47\xb6\x7c\xcd\x2b\xb4\xe7\x3f\xe8\xb3\xe2\xac\x12\xc1\x25\x45\xe4\x83\x54\xcc\x1b\xee\x45\x1e\x03\x94\x65\x0a\x42\xe0\x14\xfb\xc6\xfb\x73\x50\x1f\x47\xb4\xd2\xf8\xd2\x96\x19\x5b\x03\x67\x8c\xd9\x13\xb8\x66\x89\xc4\xa2\xd8\x2e\x80\xaa\xa2\xe0\x4e\x41\xd7\x53\x3c\xe6\x31\xe9\xe5\xe7\x1d\x76\x6c\x41\x22\xb9\x1d\x3d\x78\xdd\x54\x17\x07\xaf\x2f\x0f\x47\x99\xb1\xbb\xaf\x7c\x9b\x77\x1b\xb2\xe1\xd3\xda\x6a\x59\x51\x70\x9b\x7a\x7a\x0a\xe5\x43\x58\x5d\xda\x6a\xac\xaa\x6b\x92\x83\xd9\x23\x94\xaa\x19\x6a\xf7\x5d\xfe\x85\x7c\xf3\xca\xdb\x5f\xf4\xe4\xb1\x3d\x46\xa1\x3a\xf1\x9e\xc3\x7d\x05\x00\x00\xff\xff\x17\xc1\xfe\xd4\x01\x03\x00\x00" + +func runtimeColorschemesIn_progressCodeblocksMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesIn_progressCodeblocksMicro, + "runtime/colorschemes/in_progress/codeblocks.micro", + ) +} + +func runtimeColorschemesIn_progressCodeblocksMicro() (*asset, error) { + bytes, err := runtimeColorschemesIn_progressCodeblocksMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/in_progress/codeblocks.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesIn_progressFunkyCactusMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x93\xd1\xce\x9b\x30\x0c\x85\xef\xf7\x14\x51\x76\x5b\x78\x89\x5f\xda\x7b\x38\xc1\xa5\x11\x89\x8d\x1c\x67\x15\x6f\x3f\x85\xc1\xfe\x42\x43\x77\x87\xe2\x4f\xf6\xf1\x39\xf8\xe7\xaf\x42\xd3\x62\xbe\xc0\x6b\xc9\x46\x1f\x98\xf0\x87\xe7\xc8\xd2\xc5\x40\x93\xf1\x9c\x12\x92\x1a\xeb\x38\x0e\xc6\x45\xf0\x93\x3d\xd6\x29\x2b\x54\xc0\x2f\x40\xcd\x52\xef\x98\xe3\xd6\xe0\x33\xd4\xab\x14\xdc\xc8\x51\x10\x3f\xa1\x77\x88\x79\x67\x05\x87\x36\x99\x55\x02\x8d\xc6\x2e\x18\x23\x3f\xdb\x0c\x95\xe4\x50\x8c\xdd\x1f\x2e\x3a\xcd\xe8\x03\xc4\xaf\x07\xc8\x36\x34\xc1\x88\xa4\x70\xc0\xc3\x80\xa4\xe1\x1e\x50\x2e\x94\x7d\x03\x7d\x02\x2f\xfc\x7f\xec\xf7\xbf\x81\x2e\x16\xbc\xa2\x7c\x84\x9c\x2f\x9d\x9b\x05\x67\x61\x7f\x95\x41\x56\x50\x7c\x49\xb9\xe1\x56\x5e\x92\xab\x21\x9e\x85\xfe\x7d\xef\x9d\x80\x9f\x50\xab\x82\xb3\x48\x5d\x66\x34\xf6\x5d\x53\x7d\xef\x27\x5c\x9e\x2c\xc3\xa5\xf0\xcd\x75\x63\x9b\x66\x8f\xc4\x82\xc6\x0e\x78\x87\x12\x8f\xb9\xa1\x08\xef\xbe\xdd\x9c\x84\xf1\xa1\x67\xe9\xca\x03\x1b\x5b\x68\x40\x89\x81\x70\xc7\x1a\xcb\x07\xaa\x46\x77\xfe\x3b\xfb\x8d\x7d\x17\x5c\x3b\x75\xfb\x1f\xd5\xd8\x47\x41\x4b\x5e\xc7\xd9\xf5\x96\x6e\x0d\x63\xc0\xb9\x75\xd0\x5a\x6f\x2d\xee\x8b\x48\x15\x74\x18\x76\xf8\x27\xcd\x2b\x3e\x16\x55\x94\x6e\xb3\xe4\x76\xf6\x61\x2b\x3f\x41\x68\xbd\x95\xf7\x63\xaa\x9f\x9e\x63\x49\x74\x0c\xea\x4f\x00\x00\x00\xff\xff\xb2\xf5\xf9\xad\x3b\x04\x00\x00" + +func runtimeColorschemesIn_progressFunkyCactusMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesIn_progressFunkyCactusMicro, + "runtime/colorschemes/in_progress/funky-cactus.micro", + ) +} + +func runtimeColorschemesIn_progressFunkyCactusMicro() (*asset, error) { + bytes, err := runtimeColorschemesIn_progressFunkyCactusMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/in_progress/funky-cactus.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesIn_progressGameboyTcMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x92\x5d\x6a\xc3\x30\x10\x84\xdf\x7d\x0a\x21\xbf\xda\xd0\xe2\x52\xf7\x06\x3d\x87\x7e\xd6\xa9\xa8\xb4\x6b\x56\x2b\x8a\x6f\x5f\x4c\x44\x68\x8a\x1c\x07\xbd\x08\x66\xe7\x9b\xd1\x4f\xff\x69\x12\x58\xda\x94\x7c\x41\x82\xce\x51\x24\x1e\x63\xc0\x6f\xe5\x61\x31\x25\x8a\xd2\xfd\xb4\xec\x6b\xe8\xed\xe2\x5e\x3f\x5e\xf4\xdf\x21\x47\x29\x01\xee\x43\xb3\x9f\xa7\xb7\xe9\x9f\x88\x59\xcc\x91\x1a\x3c\xa0\x84\x25\x00\x2b\xdd\x7b\xef\x61\xf6\x77\xfa\xca\xb0\x32\xb9\x9b\x38\xb4\x20\x79\x05\x17\x4c\x6c\x27\x64\x31\x02\xc7\xf5\xf2\x96\x2c\x1d\x58\x65\x5b\xa1\xad\x00\x33\xf1\xe3\x52\x42\x9e\x6e\xe6\xa1\x75\xb6\xbd\x59\xc9\x31\x20\x9c\x90\x8c\xb5\xe6\x24\xed\xba\x75\x14\x4b\xc2\x76\xe5\x3d\x67\xc4\x92\x2c\x9c\xa1\x0a\x33\xa0\x8c\xf7\x86\x07\xcf\x7f\x29\x22\xc0\xe3\x13\x77\x52\x27\x7f\x0c\x63\xc0\x8b\xd2\xf5\x77\xe9\xae\xe2\xbb\x6a\xea\x6a\x4c\x77\x85\xbd\xff\x06\x00\x00\xff\xff\xf6\x94\x42\x4d\xa0\x02\x00\x00" + +func runtimeColorschemesIn_progressGameboyTcMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesIn_progressGameboyTcMicro, + "runtime/colorschemes/in_progress/gameboy-tc.micro", + ) +} + +func runtimeColorschemesIn_progressGameboyTcMicro() (*asset, error) { + bytes, err := runtimeColorschemesIn_progressGameboyTcMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/in_progress/gameboy-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesIn_progressGeanyAltTcMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x51\xcb\x4e\xc3\x30\x10\xbc\xf3\x15\x96\x7d\xa5\x91\x49\xa9\x1a\x8e\x9c\xf8\x0e\x3f\xd6\xc5\xc2\xde\x8d\x9c\x8d\x44\xfe\x1e\x39\x2d\x8f\x04\x23\x91\xb9\x58\x9a\xd9\xc9\xec\xac\x7a\x01\x83\x8b\x78\x4e\x0c\x05\x0d\x83\xe0\x57\xc8\x70\xe7\x28\x51\x39\xa4\x88\x6f\xc2\x43\x30\x73\x62\x21\x95\x5e\xbf\x7b\x15\xa0\x42\xfe\x14\x39\xca\x19\xb0\x8a\x06\x5d\xb1\x23\x71\x62\x53\xd9\x9b\x57\x93\xed\x2c\x51\x5a\xff\x72\xd4\xc7\xb6\x41\x87\x73\xb6\x50\x84\x54\xc7\x9a\x64\x68\x8b\x26\x2e\x11\x2f\xab\xd3\xa0\xf5\xd6\x29\x7a\x40\x8e\x21\x56\x93\x56\x98\xb1\xc0\x58\xc8\x09\xa9\xac\xb5\xf6\x7c\xde\x90\xd3\x08\x2e\x9a\x3f\x32\x4e\x6c\x18\x6e\x1d\xb4\xe8\x25\xdb\x75\xbd\x46\xf2\x2b\xd7\xb1\xb9\x08\x69\x29\x79\xa1\x1e\xe1\xc9\x9f\x1f\x36\x22\x5e\x46\x68\x5b\x43\x29\x54\x3b\x31\xa7\xde\xf4\x66\x3b\x44\x9e\x84\x54\x21\x98\xd3\xae\x88\x14\x11\x0e\x5f\x75\x7e\x5e\xd6\xeb\x8a\x6d\xad\x73\x29\x80\x7c\xf8\xff\xc0\xfa\x74\x94\xe6\x8c\x42\x2a\xd7\x83\x75\xfd\xde\x72\xba\xbe\xeb\x46\x41\x57\xfc\xda\xb5\x83\x77\x06\xf4\xe0\xbf\x0f\xf5\x11\x00\x00\xff\xff\x25\x91\x54\x44\xac\x02\x00\x00" + +func runtimeColorschemesIn_progressGeanyAltTcMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesIn_progressGeanyAltTcMicro, + "runtime/colorschemes/in_progress/geany-alt-tc.micro", + ) +} + +func runtimeColorschemesIn_progressGeanyAltTcMicro() (*asset, error) { + bytes, err := runtimeColorschemesIn_progressGeanyAltTcMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/in_progress/geany-alt-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesIn_progressGithubMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x92\xb1\x6e\xc3\x30\x0c\x44\xf7\x7c\x85\x90\x0c\x5d\x62\xff\x44\x87\xae\x1d\xfa\x03\x94\xcc\x58\x44\x64\xca\xa0\x28\xa4\xfe\xfb\x42\xa9\x93\x40\xb5\xd2\x76\xbe\x47\xdf\xe9\xce\x87\x0f\x8f\x13\x1a\x0b\x09\x07\x13\xd9\xbc\x91\xfa\x6c\x5f\x92\x49\x0b\x2b\x7c\x1a\x4f\xa3\x0f\x34\x7a\x25\x1e\xfb\x9d\x8b\x21\x4a\x17\x88\xcf\xc6\xc5\x69\x42\x56\xb3\xb7\x31\x0c\xc6\x06\x70\xe7\x7d\xad\x73\x52\x28\x80\x5b\x80\x9b\x52\xcf\x79\xb2\x28\xbf\x11\x69\x46\x47\x10\x5e\x3d\xc8\xdd\x29\xe3\x13\x56\x85\x78\xfc\x13\xb3\x31\x86\x86\x25\x0d\xc8\x4a\x27\x2a\x79\x26\x18\x91\x15\x2a\x7d\x16\x9c\x25\xba\xf5\xf3\x2d\x62\xcd\xda\x3e\x4f\x0a\x8a\xdf\x85\x35\xe5\x65\xb2\x25\xd6\x80\x27\xc8\x41\x2b\x4d\x97\x19\xdb\x57\x28\x12\x6f\xbd\x1c\xad\x94\x99\x04\x87\xfa\x38\x0e\xd1\xec\x2f\x9e\xb4\xae\x83\xb8\xbc\xb7\x73\xd7\x62\x5b\xae\x81\x18\xbb\xdb\x40\xcf\x36\xce\x22\xe5\x2b\xff\x61\xc7\xac\x8a\xd2\xad\x91\x8f\x3f\x73\xae\xf2\x05\x84\x1f\x23\x2e\x18\x42\xbc\x6c\x7a\xcc\xa9\x18\xae\xcc\xf5\x69\xc7\xad\x9f\x82\xb5\xf7\x9f\xa6\x82\x0e\xef\x01\x88\x8d\x15\x70\x67\xd4\xd4\xef\x0e\x9b\x21\xfa\x9b\xf8\xe8\xe6\x2b\x00\x00\xff\xff\xce\x9e\x02\x81\x29\x03\x00\x00" + +func runtimeColorschemesIn_progressGithubMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesIn_progressGithubMicro, + "runtime/colorschemes/in_progress/github.micro", + ) +} + +func runtimeColorschemesIn_progressGithubMicro() (*asset, error) { + bytes, err := runtimeColorschemesIn_progressGithubMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/in_progress/github.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesIn_progressMcMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x92\x41\x8e\xc3\x20\x0c\x45\xf7\x73\x0a\xc4\x6c\x9b\x5e\x62\xd6\x73\x08\x03\x6e\x82\x0a\x76\x64\x8c\xaa\xdc\x7e\x44\x9b\x56\x25\x4d\x66\x87\xf4\x5f\xbe\xbf\xbf\xf3\xfd\x1b\x03\xc5\x71\x52\xf3\xc3\x39\x03\x05\x14\x13\xa9\xcc\x51\x30\x18\x9d\x30\xe3\xf9\xcb\x73\x62\x19\x52\xa4\xab\x09\x78\x81\x9a\xd4\xd8\xdb\x14\x15\x4f\x2e\x55\xb4\xef\xba\xe7\x9c\x91\xd4\x58\xc7\x29\x18\x97\xc0\x5f\x37\x3a\x15\x85\x17\x70\x77\xd9\x05\xce\x45\x25\xd2\xb8\x72\x0b\xa6\xc4\xb7\x0e\x8c\x01\x49\xe3\x25\xa2\xac\x8c\x60\xe8\x80\xa2\xa0\xf8\x16\xc6\x2f\x40\x3d\xb0\x64\xc7\x69\x5d\x65\x47\x39\x3b\x01\x7f\x45\x2d\xff\x20\x0a\xcf\x88\xa3\x20\xf6\xfe\xb3\xe0\x2c\xec\x8d\xbd\xd7\x70\xfa\x98\xaf\xcb\x8c\xc6\x7e\x7e\x57\x66\xf4\x11\x92\xb1\x19\x46\x24\x85\x7e\xed\x91\x58\xd0\xd8\xf5\x10\x9d\x86\x22\x2c\xc6\x9e\x9c\xb4\x83\x6e\xfb\x50\x0e\xfc\x12\xf7\x0a\xa5\xd6\xe8\xe0\x27\x68\x1e\x1f\x69\x53\x24\x1c\xa8\x66\xd7\x0a\xdf\x09\xad\xa0\xb5\x34\xe8\x78\x5f\x70\xae\x79\x1f\xc8\xbe\x8a\xb4\x00\xdd\xa0\x63\xb6\x3c\xde\xc7\xe3\xc6\xaa\x8a\x32\x3c\x4b\xd9\xd6\xb1\xca\x37\x10\xba\xff\x67\x5b\xfd\xf1\xf4\x9c\x6a\x26\x63\x1f\xee\x7f\x01\x00\x00\xff\xff\xb6\x1b\x37\xd7\x2d\x03\x00\x00" + +func runtimeColorschemesIn_progressMcMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesIn_progressMcMicro, + "runtime/colorschemes/in_progress/mc.micro", + ) +} + +func runtimeColorschemesIn_progressMcMicro() (*asset, error) { + bytes, err := runtimeColorschemesIn_progressMcMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/in_progress/mc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesIn_progressMonochromePaperMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\xcb\x31\xae\x83\x30\x10\x84\xe1\x9e\x53\x8c\xa0\xe5\x71\x8b\x57\x46\xca\x15\xd6\x66\x89\x2d\x2f\xde\x68\xbd\x16\xca\xed\x23\xb9\x0a\xd5\x14\xff\x37\xcb\x43\xab\xc6\x64\x7a\x32\x9e\xf4\x66\x83\x27\x3e\x79\x9b\x96\xff\x3d\x3b\x3e\xda\x0d\x47\x16\x6e\xd0\x0a\xc2\x95\xb2\x33\x02\xc5\xf2\x32\xed\x75\xc7\x95\x3d\x69\x77\x44\x15\xb5\xb6\x4d\x63\xff\x24\xd7\x82\x9d\x0f\xea\xe2\x98\x83\x50\x2c\xeb\xb8\xce\xbf\xa0\x39\x79\x6f\x92\x2b\x63\x1e\x75\x1d\xf2\x66\x9c\x42\x20\xbb\xf7\x6f\x00\x00\x00\xff\xff\xb8\xc1\x9e\x9e\xb4\x00\x00\x00" + +func runtimeColorschemesIn_progressMonochromePaperMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesIn_progressMonochromePaperMicro, + "runtime/colorschemes/in_progress/monochrome-paper.micro", + ) +} + +func runtimeColorschemesIn_progressMonochromePaperMicro() (*asset, error) { + bytes, err := runtimeColorschemesIn_progressMonochromePaperMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/in_progress/monochrome-paper.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesIn_progressMonochromeMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2c\xc7\xb1\x0d\x02\x31\x0c\x05\xd0\xfe\xa6\xf8\x52\x0a\x3a\x36\xa1\x63\x01\x93\xf8\x48\x74\x89\xbf\x64\xc7\x05\xdb\xd3\x5c\xf9\xca\x8b\xc6\xda\x9d\x4b\x8f\xf2\xee\x23\xb0\xe4\xd2\xc0\x1a\xd5\x89\x0c\x05\x6d\xfe\xb0\xbb\x62\xab\xaf\x61\x32\x1f\x81\xa6\xa7\xe4\xdc\x47\xc1\x49\xd7\xaf\x33\xad\x41\xac\xe1\x23\xf5\xba\x59\x39\x99\x1e\xcf\x7f\x00\x00\x00\xff\xff\x84\x9e\x30\xa4\x62\x00\x00\x00" + +func runtimeColorschemesIn_progressMonochromeMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesIn_progressMonochromeMicro, + "runtime/colorschemes/in_progress/monochrome.micro", + ) +} + +func runtimeColorschemesIn_progressMonochromeMicro() (*asset, error) { + bytes, err := runtimeColorschemesIn_progressMonochromeMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/in_progress/monochrome.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesIn_progressNanoMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x93\x4d\x8e\xdb\x30\x0c\x85\xf7\x3d\x05\xa1\x6c\x5a\x20\xf1\x05\xba\x4c\xd7\x45\xaf\x40\x49\x8c\x2d\x44\xa2\x0c\x8a\x42\xea\xdb\x17\xfe\x99\xcc\x4c\x2c\x77\x76\x02\xf4\x85\x7c\xfa\x5e\x7c\xba\xe6\x98\xa5\xb8\x81\x12\x41\xd1\x29\x92\x07\xbc\x29\x09\x78\xba\x61\x8d\x0a\xbf\xc8\x06\x64\x60\xe4\xdc\x7d\x73\x33\x7d\x89\x81\xef\xe0\x72\x4a\xc4\x0a\xc6\xe6\xe8\xc1\xc6\x4a\xa6\x71\xdd\x59\x09\xfd\xa0\x60\xdc\x84\xfc\x02\x70\x51\x9c\x07\x08\xf9\xe6\x4d\x67\x73\x8e\x60\x26\x8a\x31\x3f\x8e\x89\x4e\xa5\xd2\x16\xa3\x17\xa2\xf6\x9a\x15\xbd\x61\x2c\x6f\xec\xe1\x5a\xae\xc9\x92\x80\xd9\x0c\xb4\xa1\x32\x92\x0b\x18\xaf\x03\xca\x36\x2f\x61\x4f\xac\x78\x80\xab\x04\xee\x37\xb2\xf1\xa2\xe0\x89\x35\xdc\x02\xc9\x91\xd0\x77\xa2\x4b\xe8\x24\x1f\xbc\xa2\x28\x2a\x7d\x28\x66\x35\x02\x9f\x90\x29\xd9\x59\xec\x26\xeb\xb4\xbb\xea\x14\xe7\xa8\xaf\x09\x46\xa1\x51\xb2\x03\xb3\x76\xba\x6b\x54\xa7\x91\x9e\x53\x3f\x0e\x5d\x55\x81\x69\x19\x0a\x3d\x67\xa1\xb6\x6c\x12\xc9\x02\xe6\x31\x04\xa5\xb3\x8d\xe8\xee\x9f\xf7\x65\xff\x66\x61\x97\x25\xf0\xac\xeb\xe2\x96\x7a\xce\xfb\x4c\x31\x30\x5d\xfe\x5b\x74\x15\x99\x27\x7c\x09\xf6\x55\x95\xe4\xb2\x65\x3d\x2f\x61\x5b\xc0\x03\x85\x97\xbf\xc0\x9e\x70\x55\xca\x7a\x3e\x10\xb1\x1e\x5d\x8e\x35\xf1\x73\xc0\xe9\x77\x06\xfa\xab\xc4\x9e\xfc\xe2\xbe\xc0\x77\x58\x3e\x99\xc0\x70\x85\x1f\x3f\xe1\x4f\xc4\xc0\x60\x05\xdd\x9d\xb4\xbc\x56\xd5\x3d\x7f\xfc\xbe\xf3\x5f\x00\x00\x00\xff\xff\xc7\x7e\x46\xd6\x0f\x04\x00\x00" + +func runtimeColorschemesIn_progressNanoMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesIn_progressNanoMicro, + "runtime/colorschemes/in_progress/nano.micro", + ) +} + +func runtimeColorschemesIn_progressNanoMicro() (*asset, error) { + bytes, err := runtimeColorschemesIn_progressNanoMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/in_progress/nano.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesIn_progressPaperTcMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x91\x41\x72\xc3\x20\x0c\x45\xf7\x39\x85\x8a\x77\x99\xc4\xd3\x4b\x74\xdf\x2b\xc8\x20\x3b\x1a\x63\xc9\x23\x44\x33\xb9\x7d\x27\x6e\x17\x2d\x76\x0b\x1b\xe6\xbf\x2f\xa4\x0f\xdd\x3b\xae\x64\xe0\x37\x5a\xe8\x02\x6e\x95\x20\x6a\x56\x03\x4a\xec\xac\x72\xea\xde\x12\x3b\xa8\x00\x0a\x9c\x31\x7a\xc5\x7c\x86\xfb\x8d\x9d\x60\xc0\x38\x4f\xa6\x55\xd2\xcb\x69\x2b\xba\x66\x96\x19\x12\x8d\x58\xb3\x43\xe8\x5e\xb7\x75\xe9\x68\x7c\xee\xf0\xd3\x14\x75\x59\x48\x1c\x42\xa3\x4a\x71\xfc\x53\xee\x8b\x1b\xcb\xf4\x3f\xed\xab\x65\x08\x55\x12\x59\x66\x21\xd8\xa6\x48\xe9\x57\x09\x27\x12\xe7\x91\xc9\x20\x04\x38\x26\xfd\x07\x5a\xd3\xa9\xac\x14\x19\x73\xab\x3a\x3a\x1d\x84\x29\x8f\x65\xd0\x9d\x79\x13\xfb\xc1\x30\xce\xe4\xe5\x98\x3a\xb6\x19\xfd\xb1\xd2\x41\xdb\x5a\xb6\x88\x8d\x17\x87\x61\x37\x3a\x99\x69\xab\xb9\x26\xdd\xbd\xe5\xf3\x18\x35\xd7\x45\x1a\x34\x55\x77\xb2\xeb\xd1\x45\xdf\xe8\x8e\x26\x5f\xdf\xf3\x19\x00\x00\xff\xff\x48\x1f\x8a\xc4\x56\x02\x00\x00" + +func runtimeColorschemesIn_progressPaperTcMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesIn_progressPaperTcMicro, + "runtime/colorschemes/in_progress/paper-tc.micro", + ) +} + +func runtimeColorschemesIn_progressPaperTcMicro() (*asset, error) { + bytes, err := runtimeColorschemesIn_progressPaperTcMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/in_progress/paper-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesIn_progressPaperMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x92\x41\xb2\xa3\x30\x0c\x44\xf7\x73\x0a\x17\xb3\x05\x6e\x31\xfb\xb9\x82\x6c\x14\xe3\xc2\x96\x28\x59\x9e\x14\xb7\x9f\x32\xf0\xf3\x7f\x1c\xd8\xa5\xd2\xaf\xda\xdd\x8d\x7e\xff\x85\x15\xc5\xe8\x8c\x09\x7b\xf3\x67\x0a\x6a\x98\x0c\x98\xe7\x1c\x14\x8d\x05\xb7\x78\xe1\x42\xd3\xf8\xcb\x71\x64\x19\x62\xa0\xc5\x4c\xf8\x80\x12\xd5\x74\x36\x82\x5b\xfa\x9d\xed\x7e\x02\x8e\x53\x42\xaa\x00\xc7\xc9\xec\x54\xa3\x53\x56\xa8\x80\xdb\x80\x2e\xa5\x31\xab\x04\xf2\xa7\x85\x17\xc4\x77\x2e\x4c\x48\x1a\x1e\x01\xa5\xc6\x28\x78\x23\x8e\x09\x9c\xf0\xe9\x22\x38\xdd\x61\xff\x40\x5e\x69\xef\xcd\x5c\x84\x9c\x6f\x23\x65\x05\xc5\xa3\xf7\x85\xb8\x25\xcb\xd1\x74\x6d\x86\xe3\xff\xd1\x0a\xb8\x05\x35\x9b\xee\x1c\xf7\x0a\x52\xf0\x77\x21\x57\xc1\x55\xd8\x9d\xf2\xc7\xaa\xba\xad\x78\x99\x6a\x45\x17\x20\x9a\x2e\x81\x47\x52\x78\x2f\xee\x89\x05\xaf\x13\xa1\x08\x8b\xe9\x7a\x2b\xc1\xcf\xda\x96\x52\x9e\xf8\x25\x6e\x18\x23\x3f\xdf\x9d\xa9\x6e\x3a\xb8\x19\xbe\x3d\x3e\xc3\xc5\x40\x38\x50\x49\xf6\xf8\xc6\xed\x11\xd5\xb9\x4b\xae\x90\xe9\xf6\x13\xec\x3f\x19\x05\x6b\xeb\x1b\x77\xba\x2b\x22\x35\x49\xf3\x54\x33\xae\x2f\xaa\x28\xc3\x57\xe7\xb6\xed\x29\x3f\x41\x68\xbf\xd8\x56\x3f\x7e\x3a\x8e\x25\xd1\xab\xc8\xff\x00\x00\x00\xff\xff\x60\x0f\x26\x59\x79\x03\x00\x00" + +func runtimeColorschemesIn_progressPaperMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesIn_progressPaperMicro, + "runtime/colorschemes/in_progress/paper.micro", + ) +} + +func runtimeColorschemesIn_progressPaperMicro() (*asset, error) { + bytes, err := runtimeColorschemesIn_progressPaperMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/in_progress/paper.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesIn_progressSymbianTcMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x52\x4d\x6e\xec\x20\x0c\xde\x73\x8a\x88\x6c\x13\x29\xcb\xdc\xe3\x9d\xc0\x10\x33\x42\x0f\xec\xc8\x18\x55\xb9\x7d\x95\x16\x8d\x3a\x15\x99\x94\x15\xd2\xf7\x0b\xf6\xf8\xef\xc8\x2e\x02\x19\xcf\x89\x65\x4e\x91\xfe\x0f\x1b\x06\xa8\x49\x07\x3b\x2e\x5f\x67\x1a\x43\x58\x61\x59\xec\x4f\x92\xe7\x9c\x91\x4e\xd2\xea\x4f\xd2\x2f\x90\x8a\xc2\x15\x1a\x37\x24\x8d\x21\xa2\x0c\x76\x0c\x21\x84\xd5\xbf\xe0\xbb\xe0\x2e\xec\x9f\xe0\xd4\x33\x29\x3b\xfa\x08\xa9\x9f\x50\x14\x14\xaf\xeb\x95\x23\x3b\xbe\x90\xea\xb1\x63\x1f\x41\x11\x96\xf7\xa5\x94\x37\x7e\x8a\xa7\xde\xdb\xce\x66\xb5\xa4\x48\x78\xe3\x04\xce\xc1\x4d\xda\xf7\xd5\x73\xaa\x99\xfa\x95\xcf\x9c\x99\x6a\x76\x78\x67\x55\x45\x90\x74\x7e\x15\xbc\x19\xff\xa3\xaa\xa2\xcc\x7f\xf8\x93\xc6\xfc\x00\xa1\x48\x8f\xc1\xb6\xed\xb2\xa6\xd9\x9b\x26\x32\x2d\xc6\x34\xb3\xcf\x00\x00\x00\xff\xff\x6b\x89\x5a\x04\x9a\x02\x00\x00" + +func runtimeColorschemesIn_progressSymbianTcMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesIn_progressSymbianTcMicro, + "runtime/colorschemes/in_progress/symbian-tc.micro", + ) +} + +func runtimeColorschemesIn_progressSymbianTcMicro() (*asset, error) { + bytes, err := runtimeColorschemesIn_progressSymbianTcMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/in_progress/symbian-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesMonokaiMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\xcd\x6e\xab\x30\x10\x85\xf7\x79\x0a\xcb\xde\x06\x74\x43\x12\x43\x74\x57\x50\x60\x59\xf5\x15\x0c\x9e\xa4\x56\x8c\x8d\xfc\xa3\x36\x6f\x5f\x99\x92\x2a\x69\x5c\x5a\xbc\xb1\xc4\x37\x67\xc6\xc7\xc7\xbd\x96\xda\x24\x52\xa8\x33\xe2\x70\x64\x5e\x3a\x84\x49\x5b\xb4\x45\x9b\xad\x49\x56\x84\x85\x57\x37\x50\xaf\x87\x01\x54\x80\xf2\x7d\xbe\xd9\x37\x51\x48\x70\x50\x4e\x1c\x05\x18\x84\x09\xa5\xf5\xa1\x69\x7f\x10\x53\xd6\xb1\x49\xad\x6c\x8a\x4d\xbb\x4c\xa5\xd6\x19\xa1\x4e\x08\x93\x86\xd6\x55\xbe\xfb\x0b\x9c\xf6\xaf\x2c\x0c\x51\xd5\x0d\x2d\xeb\x68\x85\x75\xcc\xc1\x7c\xa6\xf6\x90\xd1\x3c\x7e\x70\x7b\x19\x3a\x2d\x97\x99\xd1\xc0\x68\x74\x8f\x30\x79\xaa\x76\xd5\x86\x46\x21\x77\x19\x61\xd9\x16\x3b\x42\x2f\x58\xe8\x55\xd2\x26\xcb\xe2\x1e\x7b\xc5\xc1\x48\xa1\x80\x23\x4c\xea\xed\x96\x16\xf1\x99\xc0\x18\x6d\x10\xee\xb4\xe4\x68\x71\x2c\xcd\xf5\x15\x5b\x90\x0b\x6e\x79\x1b\xfa\x22\x3c\xff\x5f\xcf\x79\xb9\x97\x63\x5d\x37\x39\xbf\xc0\x08\x15\x72\x92\xcc\x57\xb4\xff\x17\x56\xb4\x69\x68\x97\x28\x3f\x74\x53\xa0\xca\xe9\x5b\x93\x6d\x16\xd6\xfd\xed\x7b\x63\x82\x64\xbc\x20\xa2\x7c\xf2\xce\x81\x49\x66\x93\x96\xfc\x99\xc9\x37\x66\xd4\xef\x21\xf4\xc6\x7e\xee\x83\x4b\xb1\x39\xa7\x6d\xaf\xa5\x1f\xd4\x0d\x41\x9e\x35\x82\x77\x07\x8a\x03\x9f\x72\x62\xff\xa3\x17\xc9\x84\x42\x9d\x61\xfd\x19\x9c\x4d\xbf\x27\x29\xfd\xe2\xf1\xfc\x7e\xf1\x8a\x3c\xc4\x36\xbd\xd6\xdf\x50\x8f\x90\x63\xa7\xc8\x4b\xfc\x08\x00\x00\xff\xff\x92\xba\x33\x8a\x22\x04\x00\x00" + +func runtimeColorschemesMonokaiMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesMonokaiMicro, + "runtime/colorschemes/monokai.micro", + ) +} + +func runtimeColorschemesMonokaiMicro() (*asset, error) { + bytes, err := runtimeColorschemesMonokaiMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/monokai.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesRailscastMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\xd3\xcd\x6e\xdb\x30\x0c\x00\xe0\x7b\x9f\x82\xb3\xaf\x4d\x01\x37\x75\xda\x9e\xf7\x02\x3b\xec\x05\xf4\xc3\xda\xc2\x64\xd2\xa0\x28\x64\x7e\xfb\x41\x49\x10\x24\x98\x22\x14\xbc\xe8\xf0\x85\xe1\x9f\x1d\x47\x96\x5d\x0c\xf4\x07\x3c\x7e\x99\x1c\x15\xba\x1e\x0f\x38\x78\xf7\xdc\xbf\xda\x12\xdd\xd3\x0d\x72\xbc\x2c\x48\x05\x59\xf7\xf9\x36\x7e\x54\x51\x52\xa3\x78\x61\xce\xbd\x7f\xec\xf7\x0f\x72\x51\x52\x73\x52\x66\x74\xaf\x87\xa1\xa9\x5e\x2c\x73\x84\xae\x3f\xf8\x4f\x67\xb1\x4a\x75\x5b\xb1\x2d\x56\xc1\x55\xd8\xb5\xeb\x4a\x2b\xba\x60\x62\x1b\x65\xf2\x28\x31\x10\xfa\xb6\x53\xf6\x0c\x9d\xe5\xe8\xa1\xc5\x50\x84\xe5\x1b\x6e\xca\xaa\x28\xbb\x0b\xbf\xca\x61\x18\xc6\xe1\xe7\x9d\x0c\xe4\x91\x74\xe7\x66\x53\xe0\xdb\x50\xa2\x9a\xb2\x34\xb1\xa3\xbc\x58\x2c\xd0\x0c\x25\x9e\xfb\xfd\x58\xe2\x7e\x13\x59\xa4\xa4\xbc\xff\x41\xe3\x58\x2e\xc5\x1e\x8d\x50\xa0\xe9\x66\xcd\x95\x72\xd3\xb6\xd8\xd3\x7e\xd1\xdb\xf7\xb1\xde\x7c\x28\x1d\x85\xaf\x70\xfe\xdf\xc7\xae\xdc\x5f\x4e\xa5\xcc\x9b\x86\xce\x13\xb8\xdf\x8d\xb1\xd6\x5c\xa7\xde\x80\x2e\x4b\x3a\xbf\x4b\xc6\xda\x68\x4e\x4f\xc7\x31\x2f\x54\x17\x69\x35\x0e\xa1\xbb\x9e\x0d\xfc\x37\xb8\xa7\x5e\x67\x84\x5f\x9b\xce\x4c\x90\x36\x52\xf3\xb7\x7c\x93\x81\x82\x06\x26\x30\x82\x70\x14\xa6\xe9\x05\x7e\xcf\x21\x41\x48\x40\xac\x30\xf3\x11\x36\xce\x90\x66\xce\xd1\x83\x67\xf0\xe8\x58\x8c\xb2\xa4\x1f\xb7\x05\x58\x09\xd3\xac\x93\x20\x52\x65\x7a\xff\x02\x00\x00\xff\xff\x67\xd0\x3f\x5f\x08\x04\x00\x00" + +func runtimeColorschemesRailscastMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesRailscastMicro, + "runtime/colorschemes/railscast.micro", + ) +} + +func runtimeColorschemesRailscastMicro() (*asset, error) { + bytes, err := runtimeColorschemesRailscastMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/railscast.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesSimpleMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x92\x4b\xce\xdb\x30\x0c\x84\xf7\x39\x05\xa1\x6c\x5a\xe0\x8f\x2f\x91\xae\x7b\x07\x4a\x66\x64\x22\x32\x19\x50\x14\x52\xdf\xbe\x70\xe2\xa6\x55\xe2\xee\x04\x7c\x33\xd4\xf0\x91\xb4\xa8\x9d\x0a\xcb\x15\x92\xce\x33\x89\x43\x88\xa5\x51\x38\x74\x44\xaa\xe3\x8a\x8c\xc6\x8e\xf0\x48\xe2\x7c\x61\x32\x08\x69\x41\xe9\x60\x75\x74\x7a\x96\x5c\xa8\x14\xbd\xf7\x74\x99\xa3\x96\x5d\x74\x33\xba\x99\x26\x08\x33\x66\x12\xc7\x0e\xfa\x72\x23\x08\xd9\x88\xde\x7e\xbb\x51\x62\x2c\xfb\x26\xce\xa2\x46\x10\x46\xba\x60\x2b\xde\x31\x32\x53\x83\xf0\x15\x8d\xf3\xe4\xef\x1d\xba\x8e\xfa\x82\x3b\x59\x59\xd6\x11\x9c\xd2\x84\xb6\x4e\x0e\xd3\xb5\xc3\x85\x85\x4e\xd2\xe6\xb8\x4e\x68\xc7\x9e\x9a\xd9\xea\xef\x74\xef\x19\x72\x73\x27\x3b\xfd\x09\xfa\x1f\x7c\x47\x13\x96\xbc\xd9\x8f\xe7\x66\x55\xed\x11\x00\x12\xb6\x4a\x15\x8c\x70\xc4\xc8\x85\x7d\x01\xae\xb5\x51\x1d\xe0\x07\x57\x8c\x85\x46\xb8\xa8\x81\xe8\x7d\x38\x1c\xfb\x78\xf5\xf9\x26\x08\xf7\x89\x9d\xbe\x3e\x7b\x7c\x3e\x93\x96\x36\xcb\xa6\x0a\x87\xe3\x4f\x05\xfa\xe5\x24\x23\x8d\x8f\x9d\xd5\x01\xbe\x45\xd5\x02\x2c\x70\xfe\xfe\xbe\xd1\xe1\xa5\xfd\xbb\xa3\xb5\x44\x34\x4c\x57\x72\x98\x38\x4f\x65\x5d\x01\x4b\x1e\x3e\xcf\x68\xd8\x74\xf5\x5f\xfb\x79\x55\x41\x9d\x28\xa2\xe4\x0a\x3e\xd1\xeb\xc6\x1f\x05\x76\x4e\x6e\xd8\xd4\x10\x36\x65\x38\xfc\x0e\x00\x00\xff\xff\xce\x91\x76\x31\x22\x03\x00\x00" + +func runtimeColorschemesSimpleMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesSimpleMicro, + "runtime/colorschemes/simple.micro", + ) +} + +func runtimeColorschemesSimpleMicro() (*asset, error) { + bytes, err := runtimeColorschemesSimpleMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/simple.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesSolarizedTcMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x93\x41\x73\x82\x30\x10\x85\xef\xfd\x15\x19\xb8\x8a\x83\x44\x68\x38\x8a\xb6\xff\x23\x24\xab\x66\x0c\x09\xb3\x24\xd3\xfa\xef\x3b\x01\x5b\x6b\x1b\x73\xcb\xe1\xdb\xb7\xcb\x7b\x0f\x61\xb5\xc5\x42\x2b\x73\x21\x12\x8e\xdc\x6b\x47\xb2\x9c\xd1\x76\xdb\x36\xab\xbc\x2c\x2b\x46\x69\xf6\xf2\x0b\x12\x76\x18\xc0\x04\xa8\x66\xcd\xdb\x6b\x1d\x85\x94\x04\xe3\xd4\x51\x01\x92\x2c\xaf\x1a\xd6\x1d\xaa\x27\x62\x66\x72\x7c\x56\xab\x76\xbb\x4d\xcb\x92\xd4\x7a\x1a\x41\x28\xae\xf7\x67\x1e\x74\x0f\x7b\x5a\x55\xef\xd1\x89\xc9\x71\x07\xb7\x33\x59\xdd\xb6\x65\x19\xc7\xae\x43\x6f\x75\x9a\x19\x11\x46\xb4\x82\x64\xf9\xbe\xdb\x76\x9b\xb8\x29\xee\x3a\x02\xc9\xf2\xae\x66\x4f\x57\x2d\xa7\xa7\xed\xf0\x46\x02\x6a\x65\x40\x86\xcf\xa3\xb4\x61\x71\x0e\x10\x2d\x92\xac\xb7\x5a\x92\xe4\x59\x56\xda\x6f\x2c\x21\x17\xdc\xf2\x53\xd8\x4b\xb2\xbc\x2c\x69\xbd\xdd\xac\x6e\x15\x78\x94\xe3\x7d\x3f\x3b\x9f\x60\x94\x09\xd1\x17\xe2\xfc\x00\x46\x96\x86\x75\x85\xf1\x43\x3f\x77\xe4\xde\xa5\x30\xf0\x98\xbe\x47\x0c\x92\xcf\x06\xfe\x29\x9f\xbc\x73\x80\xc5\xcd\xa4\x9f\x1b\x16\x9f\x62\xe4\x07\x47\xa3\xcc\x29\x1d\xb1\xf0\x38\x2d\xef\xbb\x4b\x7f\x5a\x1a\x9e\xc2\x6a\x3f\x98\x38\x11\x5a\xb2\x86\x4f\x07\x46\xce\x09\x27\xfe\xb2\xa5\x99\xeb\x1e\xb9\xb8\x80\x9b\x22\xf0\x57\x00\x00\x00\xff\xff\xed\xf4\x43\xd7\xb8\x03\x00\x00" + +func runtimeColorschemesSolarizedTcMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesSolarizedTcMicro, + "runtime/colorschemes/solarized-tc.micro", + ) +} + +func runtimeColorschemesSolarizedTcMicro() (*asset, error) { + bytes, err := runtimeColorschemesSolarizedTcMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/solarized-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesSolarizedMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x92\x51\x6e\x03\x21\x0c\x44\xff\x7b\x0a\xc4\x77\x36\x97\xe8\x49\x0c\x38\x1b\x14\xb0\x57\xc6\x28\xdd\xdb\x57\x88\xb4\x5a\xb2\xa8\xfd\x43\x9a\xc7\xcc\x60\xe3\x39\xb1\x2c\x29\xd2\xc3\x78\xce\x19\x49\x8d\x75\x9c\x82\x71\x12\xd7\xbb\xae\x82\x48\xf6\x63\xa0\xa8\x28\x34\xcc\xef\x30\x97\xae\x65\x43\x1f\x21\x7d\xde\x41\x8c\x15\x0c\x03\x15\x03\x92\xc6\x5b\x44\x31\xd6\xa5\x8a\x83\x58\x14\x14\x7b\x8b\x73\x74\xd9\xb3\xe3\x34\x53\x36\xc1\x4d\xd8\x1b\xdb\x5b\xbf\x47\xea\xbe\xa1\xb1\x3b\xa6\xc4\xcf\xd1\xb1\x17\x9d\x14\xa9\x14\x50\x52\x24\x0c\xc6\x66\x58\x91\x14\x06\x1d\x45\x58\x86\x51\x9d\x42\x39\xf0\x0b\x98\x19\xb4\x97\xd6\xd2\x12\x5a\x3a\xf8\xc7\xa5\xdb\x9c\x9a\x28\x38\x07\xf2\x0f\x14\xa9\x4d\x75\xf1\xf7\x5f\x72\x90\x5b\xcc\x42\x35\x3b\x94\xf3\x7a\x2f\x67\xde\x57\x91\xe6\xf7\xf7\xbd\x80\x37\xa8\x49\x87\x9b\x6b\x55\x45\x59\x7e\xc6\x73\xe8\xfc\x3e\x9f\x17\xf9\x04\xa1\x48\xeb\x61\x75\x53\x5f\x5f\xa5\xf4\x33\xce\x1e\xd8\x8f\x9e\x53\xcd\x34\xd3\xdb\x0f\xb8\xe2\x97\x22\x85\xb6\xd1\x59\x42\xff\x5d\x57\x27\xe0\x1f\xa8\xe5\x00\x7d\x07\x00\x00\xff\xff\xe2\xcf\x66\x2a\x24\x03\x00\x00" + +func runtimeColorschemesSolarizedMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesSolarizedMicro, + "runtime/colorschemes/solarized.micro", + ) +} + +func runtimeColorschemesSolarizedMicro() (*asset, error) { + bytes, err := runtimeColorschemesSolarizedMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/solarized.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesTwilightMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x93\x51\x8e\xb2\x30\x14\x85\xdf\x5d\x05\x81\x57\x35\xe0\x3f\x60\xfb\x58\x81\xae\xe0\xdf\x40\x81\x3b\xda\x08\x2d\xb9\x2d\x63\xdc\xfd\xe4\x82\x33\x19\xb4\xe6\xbc\xb4\x39\x9f\xed\xe9\xb9\x92\x44\xff\x6f\xba\xd7\xe7\x8b\x8f\x5a\xdb\x5b\x8c\x5c\x7b\x81\x01\x36\xf3\x66\xd7\x6b\x73\x8d\x3a\xf8\x54\x53\xef\xa3\x38\x91\x8c\xb4\x4d\xb2\x0f\x52\xfc\x17\x5a\x96\xad\xed\xa7\xc1\x44\x71\x92\x9d\x48\x4f\xc4\x30\x80\xa1\x63\x72\x99\x8b\x22\x7d\x32\x8d\xf3\x6a\x76\x4b\x59\x88\x8f\x32\xde\x24\x01\x7b\x6f\xa6\xa1\x01\xfc\x43\x85\x20\x37\x42\xab\x55\x5f\x5e\x14\x91\x55\x25\x0f\xe2\x39\xec\x0f\xe9\x51\x9b\x73\x14\x27\x4c\xf2\xaa\x10\x6b\x68\x42\x04\xe3\x69\x03\xbb\xdf\x7b\x59\x41\xda\x06\x1f\x38\xa1\x5b\xd6\x10\x6e\xa0\xd3\x5f\xba\x9b\x4f\xc9\x6a\xd2\xca\x04\x44\x3b\xc7\x3d\x08\x26\xb2\x95\x75\x9e\xbc\x07\xdc\xfd\x10\xfc\xc4\x72\x5e\x85\x88\x9b\x42\xb3\xbc\x27\xc0\xe8\x0e\x8c\xd7\x9f\x1a\x96\x33\x8e\xe9\x3f\xf9\xc6\xdf\xb7\xbd\x72\x8e\xb2\x88\x2a\x65\xf9\x3b\xea\x6b\xae\xf7\x98\xb3\xa3\x28\xd6\x8c\x21\x68\xd7\x2e\xfd\xe7\x19\x69\x05\x84\x2a\x5d\x01\x23\xc2\x88\xb6\x8d\xe2\xa4\x4e\xcb\x9c\xf1\x95\xf9\x18\xef\x1b\xd3\x2b\x0f\x8f\xff\x59\x59\x09\x56\xbc\xda\x93\x7b\x8c\x68\x49\xb6\x0d\x4d\xc3\xdd\x87\xc6\xd2\x15\xa2\x64\x2c\x3f\x05\xbc\x7d\x83\xaa\xbd\x82\x77\xbf\xdf\x45\x08\xb2\x23\xa0\xf2\xf3\xd8\x42\x69\x16\xc8\xab\x73\xf8\x26\xaf\x9a\x66\xee\x50\x1e\x64\x5a\x97\xdb\xe4\x50\x91\xd6\x8c\xed\x2c\x95\x78\xe2\x4c\x3c\xfd\xfa\x3e\xd2\x2b\x25\xaf\x6b\xce\x5e\x9c\xfd\x15\xee\x37\x8b\x5d\x38\xd9\x64\x3a\x40\xaa\x89\x7c\xc6\x79\x21\x58\xbc\xf9\x0e\x00\x00\xff\xff\x50\x4e\x7e\x42\x2c\x04\x00\x00" + +func runtimeColorschemesTwilightMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesTwilightMicro, + "runtime/colorschemes/twilight.micro", + ) +} + +func runtimeColorschemesTwilightMicro() (*asset, error) { + bytes, err := runtimeColorschemesTwilightMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/twilight.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeColorschemesZenburnMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x92\xd1\x6e\x84\x20\x10\x45\xdf\xfb\x15\xc4\x67\x6d\x0a\xba\xea\xef\x20\xcc\x6e\x49\x71\x30\xe3\x90\x66\xff\xbe\x99\xdd\xb6\xa9\x05\xdf\x48\xce\x65\x3c\x5c\xc7\xa5\x98\xa8\x8b\x01\x3f\x94\x87\xab\xcd\x91\x55\xa3\xe7\xb9\x35\xfd\xd4\xbc\xfc\x81\x2e\xad\x2b\xa0\xc0\xb7\x1a\xc4\x9d\x2d\xf2\xeb\xce\x14\xf0\xa6\x1a\x3d\x0d\xe7\x21\xcc\xeb\x02\xa4\x1a\xad\xc7\xd3\x90\x48\xe8\x82\x06\x0f\xc8\xe1\x1a\xe4\xb6\x31\x7d\xc1\x77\xb6\x0c\x4f\xcd\x2a\xbe\xaf\x4b\x8a\x75\xb6\x11\x6c\x94\x5c\x1d\xf2\x7d\x03\x31\x9a\xca\x91\x1b\xb8\x60\x63\x5d\x37\xa3\x07\x8a\x01\xc1\xd7\x3b\x05\xa2\xf4\xe8\xe1\xd2\x9a\x7e\x3c\x7e\x31\xf9\xa4\x9a\x25\x45\xaf\xcc\xa5\xec\x52\x1e\x9a\x77\x19\x2d\x93\xc7\xf2\xba\x5d\x16\x4b\x75\x16\x50\x5a\xec\xdc\xbb\x04\x4c\x5f\x6a\xc9\xd8\xee\xe7\x27\x99\x41\x02\xf3\x21\x70\xcb\xcc\x40\xdd\xb7\xbe\xe9\xa7\x56\x4f\x43\x2d\xf1\x69\x09\xcf\xf7\x21\xd3\xfe\x3c\xc3\xc3\xe3\xdf\x1e\xc8\xd1\xa5\x98\x57\xac\xd0\x4c\x24\x6f\x38\x98\xfe\x36\xfc\x15\x00\x00\xff\xff\x4e\x40\x3f\x86\xd3\x02\x00\x00" + +func runtimeColorschemesZenburnMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesZenburnMicro, + "runtime/colorschemes/zenburn.micro", + ) +} + +func runtimeColorschemesZenburnMicro() (*asset, error) { + bytes, err := runtimeColorschemesZenburnMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/zenburn.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeHelpColorsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x5a\x6d\x73\xdc\x36\x92\xfe\x8e\x5f\xd1\x91\x73\xa5\x91\x6b\x86\xb2\x77\xef\x72\x7b\xba\xdc\xa6\xb4\xde\xbc\xb8\x2a\x8e\xab\x62\xa5\x2a\x5b\x96\xeb\x08\x92\x4d\x12\x3b\x20\xc0\x03\x40\x8d\x26\x19\xdf\x6f\xbf\xea\x06\xf8\x26\xc9\xc9\xde\x7e\xb2\x86\x00\x1b\xfd\xfa\xf4\xd3\xa0\x9f\xc1\x2b\xab\xad\xf3\x42\xdc\xb4\xca\x43\x8b\xba\x87\x5e\x36\x08\x52\x75\x1e\x82\x85\xd2\xde\xa1\x83\x70\xb0\x20\x7d\x8f\x65\xf0\x60\x6b\xe8\x54\xe9\xec\xb9\x07\x7f\x34\x41\xde\x43\xab\x9a\x56\xab\xa6\x0d\xca\x34\x80\xa6\x51\x06\xaf\x84\xd8\xc1\x77\xf6\xc0\x22\x1c\xca\x80\x50\xf2\x41\x65\x8b\x1d\x7a\x90\xa6\x82\xc1\x23\x84\x16\xbb\x47\x3b\x93\xd8\x5a\x69\x64\x1d\x64\x55\xd1\x3f\xa1\x45\xd0\xca\x07\xd2\x40\x4b\xd3\x0c\xb2\x41\x1f\x75\x81\x52\x9a\x59\x0d\x21\xc4\xb3\xd1\xb0\x78\x9e\x10\x37\x16\xca\x56\x9a\x06\xe1\x68\x07\xb7\x54\x66\x0b\xbd\x43\xef\xe1\x55\x70\x7a\xf7\x35\x28\x93\x44\x06\x0b\x85\x23\x8b\x86\x9e\x8f\x2e\x6d\xd7\x49\x53\x89\xde\xd9\xae\x0f\x5b\x36\x21\x1c\x7b\xbc\x12\x79\x9e\x0b\x8f\x61\x29\x14\xbc\xd5\xd2\xa9\x5f\xb0\xe2\xd5\x8d\x75\x70\x68\x55\xd9\x22\x79\x73\xb9\xef\x68\x07\x28\x5b\x6b\x3d\x5e\x64\x42\xbc\x89\xc6\x58\x72\xd1\x41\x85\x16\x24\x98\xa1\x2b\xd0\x91\xcd\x2b\x07\x16\x47\xa8\xb0\x96\x83\x0e\x19\x7c\x87\x0e\x41\xf9\xc9\x41\x57\x64\xff\x33\xf8\xc3\xbf\x7d\x11\xdf\xa1\xe0\xa2\x47\xf0\xad\x1d\x74\x05\x07\xeb\xf6\xac\xbd\xb6\x76\x0f\x46\x95\xc8\x46\x5b\x1f\x20\xa0\xeb\x94\x91\xda\x67\xf0\x1a\x1c\x92\xc9\x48\x66\xd2\xeb\x22\xc4\x93\xe9\x14\xda\x9c\x09\xf1\x1c\xf2\xce\x1a\xbb\x97\x2a\xbf\x82\x40\x09\xa4\xc6\x75\x7e\xba\x54\xf9\x3f\xd9\xd4\x4e\x1e\x59\x6e\x63\xd4\x2f\x08\x2a\x80\xf4\xf0\x6e\x28\xb4\xea\x50\x00\xdc\xe0\x7d\x38\xf7\xa3\x61\xcb\xb7\x33\x78\x1d\xc0\xe1\xff\x0c\xca\x91\x0a\x6e\x48\xf9\x44\x51\x62\x33\x7a\x74\x35\x96\x61\x0b\xc5\x10\x48\x05\x01\xb3\xfd\x20\xfb\xde\xd9\x7b\xd5\xc9\xa0\xac\xe1\xfd\x1e\xee\xd0\x1d\xa1\xb1\xb6\x22\x15\x0e\xa8\x35\x1d\x71\xee\x41\x6a\x1f\x53\x2d\x69\x21\x60\xa5\x07\xd9\xfc\x0b\x9a\x62\x70\x26\xa7\xbf\x1b\x37\xdc\x15\xf6\x9e\xff\xae\xa4\x2b\x07\x2d\xf9\xef\x70\x50\x9c\x8b\xfc\xc3\x49\xa5\x7d\x29\x7d\xfc\x55\x0c\x45\xa1\xb1\x19\xba\xfc\x0a\x24\xf0\xae\xe5\x11\x31\x78\x2f\x1f\xc4\x8e\x1c\x77\x27\xdd\x11\x0e\xaa\x42\x7d\x84\x42\x7a\xac\xc0\x1a\x56\x75\xdc\xec\xc1\xa3\xc6\x32\x60\x05\xb5\x75\x31\xd3\xc7\x90\xc6\x70\x79\xd5\xf5\x1a\x1f\x44\x2b\x3e\xf4\x8f\x1d\x3e\x78\xf4\x0b\xe1\x9c\xc1\x20\x1d\x02\x65\x7b\x71\x14\xb0\x3e\x82\x0f\x18\xf3\x3e\xbf\x82\xbf\xd9\x61\xcc\xb9\x56\xde\x61\x3c\x6b\x5c\x4f\xa1\xe9\xa5\xc6\x10\x38\x03\x57\xb2\x28\xb0\x11\x20\x94\x5f\x15\x4c\xef\x6c\x8f\x4e\x1f\x39\x12\x65\x57\xee\x5e\x7e\x91\x8f\x7f\xf6\xb2\x47\x97\x5f\x41\x7c\x1c\x73\xc1\x1a\x90\xa4\x79\x40\x28\x64\xb9\x6f\x9c\x1d\x4c\x95\xc1\xe6\xba\x0c\x83\xd4\xfa\x98\x02\xd0\x38\x24\x7b\x6c\x2a\x84\xeb\x1f\xde\xbd\x86\xcd\xcb\x2f\x76\x7c\xf4\xc5\x5c\x18\x17\x1c\x74\x94\xe6\x98\x5f\x2d\x21\x66\x0e\x08\x2f\x2e\xb2\x78\x89\x8e\x59\x0c\xee\xcd\x94\xbf\x63\x78\x53\x6a\xcf\xe7\x40\x68\x65\x00\x3f\xf4\xbd\x75\x61\x99\xf0\x54\xb8\xe3\xee\xfc\xcd\xeb\x57\x3f\xbe\xfd\xef\x9b\x1f\x7f\xfa\xfa\xd5\xdb\xef\xdf\xfe\xf8\x5f\x2f\x73\xd8\x8c\x91\x95\x06\xd0\xdc\x29\x67\x4d\x87\x26\x50\xf2\x28\x59\x68\x86\x99\x65\x9c\x76\xa1\x7c\x98\x0e\xeb\x10\x25\xfb\x28\xa1\x66\x35\xd8\xfb\x32\xd8\x6e\x57\x49\xb7\x5f\xc8\x58\xbe\xa2\xfc\xe8\x95\xba\x26\x00\xbb\x0e\xb6\x3b\xf7\x70\x46\xaf\x9c\x3d\xaa\x2a\x0a\x1a\xcb\xb9\x9e\xcf\x19\x5c\xd4\xdb\x30\xe8\x33\x0a\x77\x25\x37\x0d\xcc\xe0\xd3\x90\x20\x20\x82\x82\x0a\x1e\x0a\xf4\x21\x83\x9f\x3c\xa6\xac\x00\x55\x3f\xc8\xb4\xca\xa2\x37\xe7\x4f\x39\x3b\x5b\x54\x78\xd4\xed\xa6\xc5\xe5\x51\x77\xe8\x3c\x41\x4a\x52\x2e\x6d\x5d\x55\x33\x49\x50\xa1\x1d\x8a\x7f\x44\xc0\xb7\xbc\xf3\x31\x1a\xbc\xb1\xc6\x96\xad\xb3\xf4\x9b\xaa\x8a\xda\x1d\x03\x15\x95\x08\x63\x70\x5c\xcd\x93\x75\xe7\x15\x35\xb5\x1a\x19\x1f\xb9\xf6\xfe\x3e\x78\xc6\xc5\xc9\xec\x39\x43\x45\x6d\x1d\xc6\xba\xe0\xec\x9a\xcb\x24\x29\x92\xc1\x0f\x36\x20\xe9\xae\x3c\xd5\xdf\x9d\xaa\xd0\x83\xb1\x4f\xf5\xff\xcf\xa2\xc2\x6f\x43\x8b\x4e\x88\x77\x88\x90\x33\xa9\x68\x54\xd7\xa9\x72\x1f\x05\xe6\x9c\x4d\x72\xea\xe6\xde\x76\xb8\x0a\xfa\xd4\x6a\x64\x60\xbc\xe9\xac\x43\x10\x6c\x03\xbd\x59\x0f\x84\x7b\xd2\xf0\x0f\x8f\x4e\xd9\xc1\x93\x2b\x32\xd8\xdc\xb4\x76\x68\x5a\xa8\x11\x35\xd4\x0e\x31\x39\x04\x0e\xd2\x84\xcf\x2e\x12\x33\x20\x9a\x41\x9d\x5d\x2e\x2b\x38\x75\xdf\x73\xff\x80\xa9\x38\x8c\xae\xc6\xfb\xe0\xb0\x23\xec\x8d\x78\x39\x13\x96\x8c\xa3\x3a\xd6\xbb\x35\xe8\x29\x40\xa2\xa0\xa2\x19\x4c\x25\xde\xb7\xe8\xf0\xc3\xa6\x0d\xa1\xf7\x57\x97\x97\x31\x1d\xb2\xd2\x76\x97\xbf\x1c\xb1\x52\x95\x92\x97\x4c\x39\x2e\x83\x43\xbc\xec\xa4\x0f\xe8\x2e\xdd\x60\x82\xea\xf0\x72\xa9\x0c\xd5\xee\x4d\x8b\x47\x56\xca\x1a\x7d\x04\x59\xd8\x21\xc0\xcb\x3f\xed\xfe\xf8\x02\xb4\xa2\x93\x95\x81\x60\x03\xe3\xfd\x5f\xa4\x57\x25\x63\xdc\xcc\xad\x22\x93\x59\xf3\x0f\x83\xc8\x04\x4b\x2b\xb3\x9f\x83\x09\x94\x03\x7d\xe4\x21\x42\x32\x5a\x4e\xf9\x70\x93\xe0\xa2\xb2\x06\x61\xf0\xe4\x4b\x12\x9c\xf3\xfa\x8e\xe4\xe4\x23\x5f\xca\x84\xf8\xc6\x3a\xc0\x7b\x49\x4e\xdb\x72\x42\x4e\x47\x48\xad\x21\x92\x8c\xc0\x9a\x37\x0e\xd1\x6c\x63\xc0\xb8\x6f\x24\x8e\x38\x0a\xbb\x12\x4c\xa7\xe6\x63\xc6\xb7\xe1\x8c\x5f\x3d\xe3\x65\xf1\x97\x87\x19\x3c\x17\x4c\x81\x40\x3c\x56\xd5\x0a\xab\x91\x62\xb1\xf0\xdf\x13\xbd\x2d\xf4\x80\x49\x3e\x9b\x7f\x50\x5a\x43\xa3\xee\x66\x05\xd9\x0a\x09\xb4\x71\xd9\x6b\x84\x78\x5d\x2f\x4c\xd2\x6a\x8f\x54\x3c\x8b\xaa\x3b\xa6\x92\xe6\x04\x27\x93\x93\x4e\x51\x41\x63\x43\x4b\x1e\x56\x06\x6a\x67\x4d\xf8\x0d\x4d\x97\x4a\xae\x70\xa2\x1f\x02\x14\x56\x57\x5b\xb0\x0e\x06\x53\xa1\xa3\x6c\x99\x44\x4e\xe8\x4a\x32\x7f\x43\x3e\x89\x00\x87\x55\x3a\x62\xb7\xdb\x71\x42\x52\x89\x50\xf3\x6a\xa9\xe0\x2a\x55\xd7\xe8\x68\xfb\x41\x1e\x99\xbf\x47\x87\x1f\xe7\x13\x32\x21\x5e\x45\xa8\x9e\xda\xdd\xe0\x63\x37\x66\xb0\x9a\x29\xc7\x84\x00\xc4\xd1\x99\x74\xb0\x94\xc1\xa3\x4b\x59\xd8\xa1\x34\x5e\xf0\xbe\xe4\x46\x63\x03\x54\xd8\x13\x71\x65\x7e\x64\xfd\x98\xf2\x20\x35\xeb\x54\xe0\x98\xb1\x5e\x52\x27\x19\x5d\x15\xb3\xcd\x7a\x14\x23\xe3\x21\xff\xd3\x3e\x23\x09\x0b\xf2\x42\xcb\x72\xbf\x25\x0f\x6c\xa7\x5c\x45\xad\xed\x61\xcb\x51\xdf\x42\x27\x1b\x34\x41\x6e\xa1\x3c\x4a\xb3\x8d\xbc\x23\x17\x32\x72\x68\x9a\x27\x28\xeb\x53\x4b\xe3\x51\x0a\x65\xd9\x12\x64\xc0\x26\x2e\xa6\x13\xe2\x0f\x87\x55\x96\x65\xa9\xea\xcd\x94\x26\x63\x51\xcc\xde\x9b\xa8\x2e\x0f\x06\x53\x41\x2a\x97\xc6\x07\x0f\x2f\x77\xb4\x67\x93\x7e\x8a\x97\xd4\x09\x39\x83\xa7\x36\x31\x9a\x39\xd6\xcc\x45\x4c\xdc\xd1\xdd\xe7\x7e\xee\x98\xa9\x53\x2e\xbb\xee\x96\x36\xce\x2a\x72\xd2\x8d\x71\x8f\xf2\x04\xde\xcb\x32\xe8\xb5\x7a\x2d\x52\xb7\xac\x90\x06\x8e\x7a\x65\x14\xc1\x0b\x45\x72\xd1\x2c\x89\xce\xc5\xd9\x4c\x79\x11\x28\x15\x13\x49\x94\xcb\x5d\x2b\x06\x12\xa2\x91\x32\x04\xec\xfa\x40\xfb\x3b\xd9\x2f\x40\x70\x34\x5c\xc8\x3b\xa9\x34\xf1\xa3\x85\x2f\x33\x21\xbe\x45\x83\x8e\x13\x73\xd5\x14\x22\x13\x9e\x48\xdb\x82\x7b\xcc\xfc\x2d\x0d\x26\x71\xc4\x70\x28\x3a\xe9\xf6\x33\xe6\xe4\x44\x07\xc0\x0f\x75\xad\xee\xb9\xeb\x3e\x21\x9f\xdc\x4c\x18\xff\x88\xbe\x3e\x29\x2f\x92\xdf\x24\x32\x4b\xc5\x39\x8e\x86\x73\xaf\x7d\xd8\x00\x12\xca\x2f\x0b\x88\x7c\x7a\x45\x2c\x71\x6c\x69\x9b\x68\x5c\x7a\x7b\xa9\x87\xa9\x96\x38\x56\x33\xb8\x4c\xf0\x4e\x5d\x05\xef\x03\x51\xe6\x84\x20\xe2\x39\xa8\x0a\x4d\x20\xf8\x75\xfc\xd8\xf8\x20\xf9\xb9\x0f\x32\x60\xda\xe3\x8f\x5d\x61\x69\x9c\xe8\x1d\xf6\xce\x96\xe2\x39\x4f\xda\xb4\x42\x29\xc5\x93\xc6\x04\x62\x95\x78\x0e\xe8\x9c\x25\x79\xc1\x56\x36\xc9\x1a\x3c\x23\xdc\xe6\xd5\x52\xf5\x79\x81\x94\x0a\xb2\x28\xa4\x7b\xb0\x25\x3d\x64\x7f\x90\xcf\x3c\xd8\x1e\x4d\xbc\x8c\xa0\x97\x94\x21\x03\x76\x65\xfb\xe8\x4d\x7a\x24\xcb\x80\x69\xd4\xa7\x9d\xaa\x94\x81\x78\x8c\x2c\x3c\x11\x11\xda\x65\x7b\x1e\x42\x95\x17\x00\x68\x28\xe3\x2a\x12\x4b\x3a\xed\x62\x75\x8a\xe7\xd0\x0c\x21\xa0\xdb\x8d\x66\xa5\x9f\x07\xe9\x8c\x32\x0d\xf9\x6d\x70\x3e\x82\x33\xc6\x5f\x84\xb7\xbb\xb5\x8c\x88\xdf\xa5\xd5\x43\x67\x48\xef\xc6\x58\x47\xbb\x2b\x45\xfc\xed\xa1\xf2\xe3\xd3\x02\xc3\x01\xd1\x10\x31\x0d\x44\x1e\xc0\xf7\x5a\x05\x7f\x91\x10\x7b\x4c\xd0\x8e\x3a\x55\x81\xd0\x6b\x59\x62\xc5\xa4\x83\xfa\xff\xff\x5e\x66\xa5\x35\xb5\x6a\x12\xa1\x59\x26\x75\x0e\x95\x72\x58\x06\xeb\x88\x8f\x10\x3b\x1a\x3c\x56\x63\xa2\xbe\x36\x20\xab\x4a\xb1\x6f\x52\x4d\x76\x52\x99\x27\x52\x95\x91\x26\x75\x1c\x3f\x14\x4f\xe4\xaf\x18\x81\xa7\x38\xb2\x50\xd3\x40\x9e\x8d\x5b\xf3\x51\x3c\xff\x62\xd8\x21\xc2\xec\x30\x32\x24\xda\xcc\xe3\x81\x3d\x18\x28\x07\x1f\x6c\x27\x96\xf7\x51\xdb\xa9\x48\x3a\xb9\x67\x13\xc8\x83\xd3\x1b\x93\x42\x11\x3c\xa7\xcb\xa9\xf3\x00\x9d\x0c\x65\x6c\x26\xe3\xa6\x2d\xa8\x70\xae\xf5\x54\x66\x49\x31\x67\x6d\x22\x5f\x5b\xf0\x16\x68\x93\x17\x5e\xd6\x98\x66\xbf\x74\x2b\x83\x13\xfc\xcd\x5e\x18\xa7\xe8\xa8\xf8\xea\x22\x6d\xcd\xc3\x28\x1b\xf3\xb1\xfa\x32\x1f\x9c\x32\x4d\x4e\x40\xc1\x8c\x75\x96\xb3\xbc\x26\x8b\xc6\x30\x9e\x0e\xa9\xe3\x52\xc1\xaf\x6e\xff\xa2\xa4\x88\xe6\xa4\x37\x43\x38\xcb\xdc\x4e\x60\x3c\x70\x3f\x8e\x47\x83\x32\x3e\xa0\xac\xb2\x74\xf5\x15\x9c\x8a\x77\x7e\xb3\xb7\xb4\x74\x0d\xfa\xc0\x77\x0e\xb6\x1e\xf1\x4a\x05\x0e\x42\xad\xcc\x94\x7d\xcb\xa9\xa9\xc2\x5a\x19\xce\x26\xcf\x4e\x54\xf5\x96\x95\x25\xf3\x35\x2e\x4c\x2f\xac\xd5\x19\x01\xf8\xc2\x7a\xee\x64\x2b\x6b\x91\xcd\x65\xab\x3e\xf5\xea\x64\x28\xb7\xa9\xf5\xae\x85\x6c\x16\x2b\x26\x3f\x3c\xd8\xc7\x27\x18\x1b\xd8\x59\x7c\xfb\x32\x6d\xc8\x33\x88\x70\x7e\xbe\x44\xf3\x39\xf4\x54\x4c\xd3\xe5\xe5\xb9\x87\x62\x50\x3a\xec\x94\x79\x98\x04\x13\x16\x67\x89\x8d\x6c\xde\xd1\xf4\x45\xcb\x84\xb1\x3e\x32\xb0\x4a\xf9\xa0\x4c\xc9\x0e\x9c\x30\x21\xae\xf3\x4d\x64\x24\xbb\x17\x0b\x08\x67\x03\x1e\xfe\x66\xf7\x3c\x7a\x58\x4b\xed\x57\x4f\xd3\x1d\xe7\xf2\x51\x02\xfa\x57\xad\x74\xab\xc7\x9c\x5f\x8f\x9f\x64\x83\xd3\xb0\xea\x2e\x59\xa9\xa5\xf7\xb0\xb9\x4e\x63\x72\x35\x4e\x8e\xd1\xa8\x8b\xf5\xe6\x4e\x52\x58\x56\x8f\xee\xf8\xe4\xd4\x81\x32\xdf\x62\x21\x4d\x43\x03\x26\xc2\xb3\xcf\x40\xc6\x69\xba\xc0\x46\x19\x02\x65\x72\x8b\x64\x2f\x46\x28\x0a\xa8\x75\xbc\x4e\xb1\xd4\xce\x65\x10\x00\xbe\x74\xaa\xa7\x94\x0f\xe8\x7a\x87\x21\xf2\xae\xc1\x73\x33\x8a\x3d\x2f\x2b\x9c\x2c\xf7\x18\x3c\x6c\xf2\x5f\x3f\x6e\x2e\xde\x7f\xc8\xb9\xea\x69\x42\xa6\x71\xd0\x43\xfe\xe5\x9f\xf3\xc5\x7e\xdb\xa3\x93\xc1\xce\x70\x3e\xfe\x8e\xeb\x7e\xa6\xe3\xfa\xb8\x78\x2d\xc8\x06\x36\x84\x07\x6d\xe8\x34\x04\xd9\xf8\x2d\xc8\xce\x92\x1d\x84\xae\xc0\x13\x07\x3b\x89\x82\x9e\xed\xf1\x78\xb0\xae\x82\xcd\xeb\x79\x9a\x06\x39\x76\xe3\xc5\x40\x47\x3e\x4e\x9b\x7d\x9c\x74\xf2\xde\xa9\x3b\x19\x30\xbf\x60\x90\x27\x8f\xd4\x43\x18\x1c\x6e\xa1\xd7\x43\xa3\x8c\xe7\xbb\xcd\x71\x38\x63\x0a\x96\x70\x2d\xb2\x8e\x94\xdf\x3c\xea\x87\xa3\x8e\xb7\x68\x34\xc6\xbf\x5b\x24\x36\x33\xe4\xf5\x87\x03\x1a\xd1\x9c\x0a\x01\x0d\xc3\x99\xec\xf4\xae\xb6\xae\xa3\x79\x82\x1c\x9a\x5a\x44\x1b\xbf\x3c\xcc\xdf\x0e\xa6\x2f\x0b\xd9\x7c\x21\xc0\xb5\x34\x97\xd2\x0a\xf1\x22\x62\xf1\x6d\x72\x2b\x1d\x63\x32\xcd\x98\xd2\xe0\x16\x3c\x1a\xaf\xc8\xa0\xf4\xdd\x80\x5a\x2c\x44\xfc\xe5\xef\x2a\xb2\xc1\xb1\xff\xd2\x18\xa3\x4c\x53\x0f\x1a\x50\x63\x1c\x25\x39\xa5\x46\x7d\x32\x88\x08\xd9\x4a\xbf\x6a\x48\x51\x39\x9e\xe4\x28\xfc\x77\xe8\xe0\xe5\x8b\x17\x8b\x0f\x24\xc6\x1e\x3e\x83\xef\xec\x01\xef\xd0\x8d\xbd\x93\x3c\x5e\x20\x08\xaf\xc2\x20\x63\x91\x1f\x78\x81\x82\xcb\x98\x3a\x9a\xbe\xb6\x95\x6d\x53\x86\x39\x66\xa9\x68\xc6\xb3\x2e\xb2\x74\xcb\x0d\x43\x68\xb5\xa7\x00\xf1\x85\x08\x33\x5f\x83\x87\x74\xb1\xb8\xe0\x97\xe9\x2e\x62\xee\x9a\xab\x06\x4b\xe1\x61\x5e\x11\xbf\x0e\x29\x03\x8f\x89\x45\x7c\x23\xd6\xc6\x9b\x15\x52\xa7\x81\x6f\xea\x2b\x7c\x1d\xf5\x4d\x42\x37\x98\xfb\x42\x1c\x90\x99\xc7\xf8\x20\x5d\x2c\xe7\x85\x22\xf1\x0b\x4b\xa9\xa5\x1b\x67\xc5\x11\x22\xd3\x7c\x3c\xfd\x84\xc6\xc6\x71\xf8\x19\x1d\xf5\x57\x0c\x58\x86\xd5\x41\xd3\xf0\xc6\xa7\x8d\x79\xa0\x4c\x4c\x47\x62\x3c\xf1\x1a\x27\xe5\x62\x15\x25\x3c\x71\x64\x5c\xb9\x12\x00\xc0\x4b\x34\xae\x5d\xc1\xd9\xed\x6d\xd6\xd8\xcf\xd3\x4c\xbe\xf0\xc6\xd8\x43\x95\x07\x87\x0d\xde\x83\x6c\x24\xf9\x05\x24\xdf\x5b\x98\x49\xc6\x27\x4e\xe5\xc1\x58\x4c\xd5\x39\x25\xb0\x49\x24\x56\x6a\xc8\x5b\x94\x15\x8d\x1d\xf1\x00\x8e\x32\x9f\x5d\xb6\x58\xee\x93\x34\xe7\x03\xf3\x5b\xb0\xb5\x18\xe5\x67\xb0\x60\x23\xbf\x6b\xde\x51\x7e\xd5\xe9\xcf\xcf\x78\x25\x9e\x78\x05\x67\xff\xf2\xb7\xeb\x37\xdf\x9f\x2d\x5c\x9f\x00\xc1\x0d\x0c\x08\x3f\xe0\x7d\x78\xec\xf5\x45\x94\x57\xa9\xcd\x2f\x71\xde\x8e\x97\x19\x07\x3b\x35\x3c\xc1\xab\x57\xd0\xd3\x1c\xe9\x8c\x4f\x44\xac\xa1\xc2\xc9\xe0\x7a\x7c\x4e\x79\xce\x3e\x8f\x1f\x02\x24\xd0\xa0\xab\x31\xda\x1e\xbf\x78\xc6\x4b\x0e\x29\xd2\x0a\x83\xea\xf4\xfd\xe9\x3a\xc9\x9c\x35\x5b\xf4\xde\x83\x9d\x8f\xe7\x2a\xef\x06\x1d\x54\xaf\x51\xc4\x7b\x3f\x92\x4f\xa1\xe2\xf6\xcd\xfa\x12\x7e\x28\x82\x91\x03\x21\xa0\x1f\xad\x8f\x67\x64\x69\x36\x64\x16\x4d\x04\x60\x24\x86\xd3\x21\xca\xc0\xb7\x36\x45\x26\xda\xcf\xee\xdf\x8d\xa8\xcf\x91\x29\x36\x85\x43\xb9\x3f\x95\xd2\xe3\xa9\xb4\x26\x28\x33\xe0\x29\x11\xda\x53\x63\x4f\x8d\x0d\xf6\xe4\xa4\x69\xf0\xe4\x30\x0c\xce\x5c\xdc\xde\x16\x67\xa3\xa4\x71\xe6\x4b\xb2\x50\x7b\x3c\xd5\xd6\x9d\x54\x7d\xf2\x07\x15\xca\x76\xb9\x3b\xb5\xe2\xb4\xb7\x97\xe5\x5e\x36\x78\x52\x5d\x6f\x5d\x38\x31\x1f\x38\xdd\x49\x77\xa2\xa0\x9d\x7c\x70\x43\x19\x4e\xd4\xee\x49\x8b\x0a\x6b\x74\x27\x65\x83\x8c\x02\xd3\x2d\x1e\x82\x75\x55\xfc\xb8\x3a\x99\x5d\x59\xe4\x28\x52\x77\x96\x7e\x7e\xae\xed\x01\xdd\x48\x35\x19\x20\x38\xcf\x29\x14\xd4\x66\xf8\xf3\x68\xbc\xfb\xe5\xd2\xc7\x8a\x8a\x3a\x5e\x0e\x76\x99\x10\xd7\xa6\x82\xf6\x49\x87\xa7\x3c\x62\xf8\x9e\x1c\xbe\x7b\x48\x70\xa2\xf3\x19\xa9\xc8\x01\x67\xd1\x29\x68\xaa\xc5\xaf\x45\x94\xa2\xc7\x9e\x62\x53\x54\x38\xd9\xd9\xef\x6f\xba\xbd\xbd\xbd\x7d\x2f\x8b\xda\xb8\x70\x77\x7e\x7b\x7b\xcb\x0f\x3e\xfc\x83\x2f\x6e\xde\xbf\xd8\xfd\xfb\x87\x5f\xff\xf8\xf1\x74\xff\xfe\x7a\xf7\x8d\xdc\xd5\x2f\x76\xff\xf1\xe1\xd7\x3f\x7c\x3c\x0d\xcb\xdf\xff\xfa\xf1\xf4\xd3\xf2\xf7\x9f\x3e\x5e\x9c\x09\xb6\x9d\xf9\xe5\xda\xe6\xcb\xcb\xa5\xcd\x9f\x7f\xc2\xe4\x60\x2b\x7b\x05\x67\x9b\x9b\xb7\x7f\x7d\x7b\xfa\xf9\xe7\x9f\x4f\xdf\xbc\xfe\xf9\xcd\xd7\x17\x57\x5f\xfd\x86\xe0\xdb\xdb\xe7\x2b\x77\xde\x3e\xbf\xfc\xff\x4b\xe7\x94\xfa\xc1\x06\x55\x62\x04\xf2\x76\x0e\x2d\xd5\x25\x15\x07\x0d\xb4\xb1\x34\x53\x3d\xc6\xe6\xdf\x65\x70\x6d\x8e\xa0\x8c\x41\x97\xd6\x09\x48\x05\x7f\xf9\x48\x78\x12\xef\x57\xd1\x80\xdf\xab\xbe\xc7\x8a\xfa\xb5\x01\x8f\xd2\x95\x7c\x39\xcc\x9f\xe7\x5a\x04\xbe\xf5\xac\x97\x85\x4e\x40\x2b\xa6\xeb\x77\x7e\x6d\x85\x7c\xf9\x59\x6d\x2d\xdc\x9e\x41\x21\xdd\x59\xbe\x25\xd0\x2a\x11\xf2\xdb\xb3\x7c\x89\x67\x34\x4a\x9b\xa8\x22\xa3\xc1\x58\x09\xf1\x10\x9e\x57\x94\x1f\x95\xcb\xe0\x7b\xb5\xc7\x83\xf2\xf1\xb3\x61\x3a\x21\x1e\xb1\x38\xe1\x96\x4e\x10\x4f\x9c\xc0\x4e\x78\x20\x33\xfd\x87\x0b\x52\x9f\xaf\x1a\xce\x16\x43\x55\x5a\x11\xb1\x54\xc8\x07\x7e\x24\xe8\xa5\x75\x8e\xfa\x1a\x13\x8a\x2c\x35\xfd\xb1\xa3\xe1\x7d\xaf\x55\xa9\x82\x3e\x42\x27\xdd\x9e\x8f\x8a\x9d\x0c\xfd\xf8\xe1\xa8\xb2\x34\xbc\x33\xe1\xa5\x50\x45\x0e\x24\x16\x77\x5c\x4f\x75\xb2\x7f\xaa\x7c\xe9\xf4\xd8\xee\x96\xd9\x07\xef\x3f\x2c\x5a\xdc\x6b\x53\xea\xa1\xa2\xf6\xb6\x32\x44\xc5\xc7\x29\x79\x6a\x67\xbb\xc4\xe3\x57\x4c\x51\x7a\xc0\xae\xc0\xaa\xc2\x6a\xe6\x87\x0f\xf2\x83\xd1\xcd\x6a\x6d\x0f\xfc\xc9\xc1\x43\x6f\x7d\xe4\xb0\x75\x9a\x16\x26\x13\x13\xca\xaf\x4d\xfb\x32\x0e\x39\xd9\xf3\xaf\xfe\xbc\xb4\xf1\xcb\xcb\x87\xcf\x1f\xd5\x56\xb2\xe1\x0a\xce\xfe\x2e\xef\x64\xdc\xce\x45\xfb\x89\x73\xc2\x51\xe3\x13\xc7\xac\x1f\xff\xc6\x29\xa5\xf7\xb1\x6a\xff\x2f\x00\x00\xff\xff\xb9\xb4\xb6\xe7\x04\x25\x00\x00" + +func runtimeHelpColorsMdBytes() ([]byte, error) { + return bindataRead( + _runtimeHelpColorsMd, + "runtime/help/colors.md", + ) +} + +func runtimeHelpColorsMd() (*asset, error) { + bytes, err := runtimeHelpColorsMdBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/help/colors.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeHelpCommandsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x57\x4f\x6f\xdc\xba\x11\x3f\x3f\x7d\x8a\x81\xdf\x21\x76\x10\xeb\xdd\xf7\xd0\x02\x75\x1b\xb4\x40\xd2\xba\x4d\xda\xa2\xa7\x6a\x56\x9a\x5d\xb1\xa6\x48\x85\x43\xee\x5a\xfd\xf4\xc5\xcc\x50\xda\xdd\xb8\xc0\x4b\x0e\xf1\x8a\x9c\xff\x7f\x7e\x33\xfc\x19\x9e\x23\xb3\xdb\x7b\x82\x3e\x4e\x13\x86\x81\x9b\xe6\x5f\xb1\x40\x8f\x01\xe8\x95\xfa\x92\x09\xe4\xe7\xe0\x72\x4c\x2b\x0d\xec\x17\x98\x13\x31\xbb\x70\x84\xee\x29\x27\xff\x48\x1d\x1c\xa2\xf7\xf1\x4c\x7a\x9b\xc7\x4d\x60\xdb\xfc\x91\x12\x01\x26\xd2\xd3\xf9\x7b\x7d\x90\x47\xcc\xb0\x54\x9d\x85\xa9\x6d\x9a\xf7\xd0\x7d\x2b\x2e\x77\x3b\xf8\x6b\x71\x99\x61\x72\x7d\x8a\x76\xce\x78\x22\x38\x38\x4f\x01\x27\xfa\x6d\xb7\x83\x2f\x78\x22\x36\x85\x25\x25\x0a\x19\xf6\xe5\x70\xa0\xd4\xc2\x9f\x0e\x7a\xbc\x12\x83\x63\x98\x53\x3c\xb9\x81\x06\x70\xb9\x01\x38\x3b\xef\xe1\x9d\x4a\x44\x7e\x77\x43\x6c\xca\x12\xcd\x1e\x7b\x82\x3b\x26\x4c\xfd\x78\x07\x77\x27\xf4\x85\xee\xe0\xe0\xf1\xc8\xdd\x0e\xbe\x8e\x8e\x4d\xcc\x4a\xda\x19\x69\x07\x67\x97\x47\xe8\x94\xbe\x6b\xa1\x01\x80\xaf\x23\x41\x67\x9c\x1a\x8e\x38\x67\x17\x03\xfa\xf6\x92\x04\xbd\x95\xcb\x9d\x30\xbc\x87\xee\x11\xbb\x1d\xfc\xad\xca\x46\xef\x21\xf6\xe6\x66\x4f\x0c\x98\x21\x86\x9e\x56\x52\xdf\xed\xe0\xf7\x11\x10\xbc\xcb\x94\xd0\x83\x99\x02\x2e\x70\x26\x1c\x20\x1e\x00\x21\xd1\x91\x5e\xeb\x4d\x23\x9c\x7f\x8e\x99\x2c\x07\x9b\xe9\x53\xe1\x0c\x7b\x02\x84\x13\x7a\x37\x54\x9e\xfb\x12\x3c\x31\xab\x22\x8d\x25\x32\xd3\xf0\xa0\x71\x8e\x81\xd4\xc5\x68\x21\xc7\x74\x2c\x13\x85\xcc\x30\x44\x62\x08\x31\xc3\xa8\x51\x0e\x0b\xf0\x8c\x62\xbb\x0b\xe0\xf2\x07\xcd\xfb\x84\x0b\xc4\xc9\x65\x65\xfd\x56\x62\x26\xbe\x09\xbf\xb8\xfd\x7d\x06\x7e\x3c\xf6\xfa\x11\x8b\xe4\x5b\xaa\x4b\x8a\x38\x1c\x5c\x9a\x50\x82\xdf\x36\xcd\x4f\x5f\x88\x36\x55\xdd\x56\xe2\x87\x98\x60\x8a\x89\xc0\x85\x43\xbc\x50\x4b\x05\x52\xae\xa9\x03\xd3\xb0\x03\xa6\x6c\x25\x58\xcf\x73\xb4\xab\x16\x44\xb8\x5c\x74\x76\xc3\x1d\x8c\xe4\x67\xc8\x71\x76\xbd\xe8\x10\xab\x24\x61\x9c\x25\x76\x95\x68\xeb\x06\xa6\xbc\xe9\xf4\xb1\x47\xff\xa3\x8a\x41\xa9\xfd\x02\xf7\x31\xf8\x45\x82\x7d\xd5\x20\xa2\xd3\x7a\xe4\xa1\x4a\x1f\xe3\xb9\x4a\x10\x99\x63\x3c\xdf\x36\x94\x89\xac\xb9\x3d\xba\x13\x85\x4a\x6d\xec\x74\x42\x0f\x77\xf4\x6a\x90\x10\x83\x24\xe7\x0f\xc2\x83\x59\x8a\x14\x3e\x15\x84\xcb\x6d\x7b\x55\x71\xda\xd7\x96\xc3\x10\xd5\xae\x39\xb9\x90\xa5\x4e\xf2\x28\xe0\xc2\x51\x63\xc1\x63\x2c\x7e\x90\xf4\x41\x37\x11\x33\x85\x23\xa5\xdd\x67\x62\xc6\x23\xdd\xb7\x6d\xfb\xd0\x89\xeb\x83\xe3\xd9\xe3\x62\x75\x5b\xd6\x1e\x2e\x01\x78\x7c\xac\x79\xed\x76\x90\x4a\xe0\x2b\x4f\x78\x24\xef\xb7\xb4\xd7\x48\xed\xb1\x7f\x39\xa6\x58\xc2\xd0\x6a\xdb\x8a\x69\x95\xe4\x1d\x43\x2c\x79\x2e\xd9\xec\xde\xd3\xaa\x96\x94\x5b\x3a\xc1\xbb\x40\x70\x1e\x49\x4a\x1c\x0e\x2e\x38\x1e\x89\x45\x6f\x70\xe1\x68\x56\xed\x5d\x18\xe0\x85\x16\xc0\xbe\x86\xbd\x4f\x54\xe3\xf5\x42\x8b\x5c\x8b\xff\x87\x14\x27\x25\xcb\xb1\x52\x5e\x4a\x8a\x49\x0f\x58\xfb\x2e\x5c\x71\x31\xe0\x3e\x0a\x4a\x5e\x97\xb0\x9c\x89\xcd\x12\xf6\x17\x5a\x18\xc4\x5b\x13\xa9\x80\x03\x78\x42\xe7\x71\xef\x6b\xd8\x4e\x3c\x7b\xb5\xde\xf0\xb0\xdb\x41\x9c\x49\x48\xe1\x44\x29\x3b\xa9\x45\xa3\xb0\x5e\xdb\xe8\x14\x0e\x42\xbc\x46\x5d\xcb\xab\x01\xef\x87\xb7\x02\x1c\xab\x68\x1a\x4c\x94\x4c\x9b\x69\xce\xcb\x0a\xe3\x6a\xcd\xf8\xc6\x1a\x16\xd9\xc8\xab\xa1\x1d\xec\x4b\xde\x4c\x1c\x63\x72\xff\x8d\x21\x5f\x74\x5c\x41\xa0\x98\x73\x6b\x82\xe9\xc8\xb8\x7f\xeb\xee\xa5\x4e\xe4\x4a\x12\x8c\x10\xe8\x0c\x19\xf7\x1b\x17\x9f\x5d\xee\x47\x39\x5a\x51\x69\xad\x26\xad\x90\xf5\x3a\x5a\xd6\x66\xea\xdd\xc1\xd1\xa0\x22\x6c\x26\x08\xa7\xf4\xbb\x58\x46\x2e\x8f\x94\x0c\x7d\xc5\xa2\x50\xa6\x3d\xa5\x0f\x10\x93\x68\x16\xa7\x15\xc6\x55\xff\x4f\xf2\x0f\xc4\x0a\x1f\x8f\x57\x19\xf2\xf1\xa8\x54\xde\xc3\x64\x3d\x62\xe9\x1e\x68\x5f\x8e\xc0\x19\x33\x29\x3a\x9b\x07\xb3\x2f\x47\x41\xe3\xc0\x59\x38\xec\xf3\xdf\x35\x0a\xf5\xf4\x3a\x10\x46\x70\xc3\x9b\x68\x92\x82\xbb\x65\xb5\xc3\x5f\xe1\x14\xe4\xeb\x76\xfa\x87\xd5\xe0\xaa\x90\x86\x4a\x7d\x6b\x64\x99\x07\xcc\x22\xdc\x7e\xfc\x08\x4b\x1d\x82\xb7\xb6\xd9\x21\xb1\xf6\xc8\x1b\x03\xaf\x10\xaa\x22\xb1\x64\xe6\x20\x2d\x7b\xc1\x6a\xd1\xbc\xf5\xcc\xaa\x19\x50\x51\xec\xe8\xf2\x58\xf6\x6d\x1f\xa7\x5f\x14\xe2\x1e\x6d\x7f\xfa\xc5\xa8\x1e\xfb\x11\x43\x20\xdf\xea\xfc\x5d\xb7\x2d\xf4\x1c\x81\x89\xde\x4c\x9d\xda\xb9\xba\x3c\x99\x4b\x13\x06\x3c\x52\xaa\x60\x25\x42\xba\x67\xbb\xf9\x6c\x37\xdd\x0a\x0e\x2b\x68\xd7\x60\xdc\x8c\x9f\x9b\x28\x6d\x9e\xd4\x64\x5c\x1c\xda\x5c\x94\x50\x0d\xf1\x1c\x7c\xc4\x01\xee\xb3\xd4\xb9\x0b\xbd\x2f\x83\x56\xd7\xa2\x5d\x5e\x99\x0c\xdc\x71\xd1\x32\xf6\x89\x70\x58\x2e\x59\x7a\x58\x87\xbb\x08\xd2\x3a\x91\x1f\x96\xca\x54\x42\x76\x93\xad\x61\x35\x8d\xfd\x00\x33\xe6\xb1\xdb\xc1\xd3\x88\xe1\x68\xd8\x77\x8e\xe9\x45\xf0\x71\x70\x89\xfa\x1c\xd3\xb2\xb6\x97\xe5\xb1\x53\x8e\xea\xe0\x59\x94\x3c\xeb\x5c\xb9\x1e\x6a\x6f\x44\x18\xb9\xf4\xd0\x35\x0c\xfc\x45\xbe\x71\xeb\xfe\xff\xb3\x67\x56\x6f\xac\xfd\xeb\xaa\x66\xde\x78\x42\x45\x71\xc1\x08\x03\xb7\xba\xfc\xc4\xb4\xdd\xd5\x13\xbd\x15\x3a\x09\xe3\x40\x33\x19\xfe\x47\xd3\xb8\x0d\x60\x85\x9b\x1c\x8d\xa9\x3a\x98\xf0\xdc\xed\xe0\xf3\x65\x94\x46\x33\xb9\xc2\x94\x76\xbe\x4e\x78\x91\x44\xdc\xe3\x2c\xb3\xe3\x5b\x91\x1d\x52\x93\x4a\x27\x4a\x8b\xfc\x6f\xab\x81\xcb\x90\xa8\x27\x27\xbd\xab\xf3\x47\xf8\x32\xa5\xc9\xe9\xae\xaa\x00\x67\x3b\x82\x34\xc7\xf9\x32\xc7\xb1\xcf\x45\x97\x0e\xa6\xca\x2a\xe2\xae\xb9\xd5\x16\xa9\x40\xe3\x95\x6a\x3f\x8f\xae\x1f\xe1\x32\xb9\x12\x85\x77\xf9\xf2\x4a\x50\x14\x1d\x17\x53\xab\xd6\x31\x4c\x91\xb3\xec\x02\x87\xe2\xad\x28\x05\xd6\x8e\x12\xae\xab\x19\x78\xd9\x6c\x5e\x68\x91\x67\xc2\x1a\x01\x9b\x79\xf7\xfc\x00\x7b\x99\xef\x3a\x59\x6b\xd9\xbc\xd0\xd2\xc2\x47\x89\xc8\x2b\x4e\xb3\xd7\xce\xaa\x53\x1b\xba\xdf\x40\x15\x06\xf2\xe0\x79\xea\x2c\xd6\xeb\xca\xd1\x4d\xe8\x42\x7b\xff\xfe\x1f\x8e\xce\x0f\xed\x53\x9c\x97\xae\x85\xbf\x4b\x13\x67\x59\x83\xbc\xb6\xc7\x2a\x60\x5b\x8a\xa5\x06\xe1\x2c\xfb\x87\xf8\xa1\x63\x79\x33\x6a\x6d\x4c\x1b\xd1\x66\x57\x1e\x23\x53\xcd\xd1\x7f\x64\x49\xb7\x3c\xdc\x7d\x2a\xf8\xb1\x04\xa5\xfc\x9d\xf9\xdf\xde\x35\xcd\xe3\xe3\x63\xd3\xc8\x80\xb1\x97\x99\x78\xb1\x3d\xba\x64\xe2\x6f\x8f\xa1\xfa\x60\x1b\xe8\x80\xc5\x6f\xad\xbf\xd3\x08\x7a\x17\x04\xa0\x3f\x7d\xdf\x3e\xda\x10\x5a\x3d\x29\xc5\x24\xe1\xfe\x19\x9e\xea\xd8\x7b\xc6\x24\x4f\xc3\xa6\xf9\xa7\xec\x40\x6b\x04\x71\xd5\xfe\xe1\xfa\xb5\x07\xf4\x9a\x13\x02\x2f\x21\xe3\xeb\x9b\xad\x90\x5e\x67\x7d\x6f\xd2\x21\x26\x6a\x56\x49\xd7\xaf\x4b\xf8\x1a\x55\x8c\x20\x68\x7d\x75\xd4\x3d\xc2\x5a\x6b\x7d\x68\xb0\x9b\x66\xbf\x80\xec\x6d\xba\x0f\x34\xf5\xa1\x71\x8b\xbf\x6a\x50\x38\xb9\x14\xc3\x64\x9b\x6f\x72\x02\x7e\xbc\xf5\xfe\xfa\x02\xc6\xa4\xb5\x99\x47\x5a\x9a\x75\x11\x34\x6b\x69\xa8\x60\xe4\xd2\xfa\x0a\xf8\x28\xc5\xef\x97\x8b\xe3\x62\x86\xbe\xb0\xd7\xad\x58\xe4\xcb\xd2\x99\x5d\xff\xc2\x8d\x6e\xa2\x97\x05\x93\xea\x32\xbd\x65\xca\x76\x56\x8b\xca\xa8\x6f\xec\xff\x05\x00\x00\xff\xff\x05\x5d\x9b\x73\xc9\x0f\x00\x00" + +func runtimeHelpCommandsMdBytes() ([]byte, error) { + return bindataRead( + _runtimeHelpCommandsMd, + "runtime/help/commands.md", + ) +} + +func runtimeHelpCommandsMd() (*asset, error) { + bytes, err := runtimeHelpCommandsMdBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/help/commands.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeHelpDefaultkeysMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x59\x5b\x73\xa3\xc6\x12\x7e\xd7\xaf\x68\x97\x1f\x8e\xbc\xf6\xba\xce\x9e\x93\xaa\xbc\xa5\xca\xd7\xec\xcd\x5e\xad\x2f\xd9\x4d\x9e\x3c\x42\x8d\x98\xd2\x30\x43\xe6\x62\xad\x2a\xce\x7f\x4f\xf5\x00\x03\x42\x80\x64\x59\x0e\x6f\x82\xe6\xfb\xe8\x7b\xf7\x68\x1f\xce\x31\x66\x4e\x58\xf8\x84\x0b\x33\x18\x9c\xa2\x50\x73\x60\x1a\xc1\xf0\x34\x13\x08\x51\xc2\xb4\x35\xa0\x62\xb0\x09\xc2\xa4\x10\x4e\x94\x9d\xe1\xc2\x00\x93\x13\xba\xcf\x35\xc4\x4e\x46\x96\x2b\x69\x8e\xe1\x52\x69\x48\x95\xc6\x01\x97\xb1\xd2\x29\xa3\xdb\xc0\xc6\xca\x59\x18\x73\x39\xe1\x72\x0a\x91\x33\x56\xa5\x01\x46\x69\xe2\x91\x53\x7a\x54\x52\x14\xa2\xe6\x08\x32\x81\xcc\xe0\x40\x3b\x09\x0f\xbf\x40\x82\x22\x83\x19\x2e\xca\xe7\x0f\x83\xc1\xc8\x0b\x80\xc6\x14\xd3\x31\x6a\xb0\x09\xb3\xf0\x86\x09\xf1\x06\x3c\x7c\x82\x1a\xbd\x4e\x1a\xe9\x2d\x36\x16\xb8\x07\x1f\x62\x58\x28\x07\x13\x25\xff\x63\x41\xf0\x19\x02\xb7\x47\x74\x6b\x10\x31\x99\x7f\x0e\xdd\xda\x1b\x0c\xf6\xf7\xf7\x61\xa4\xe6\xa8\xc1\x19\xd4\x83\xc1\x13\xd9\x0a\xf2\xeb\x09\xce\xd1\x44\x9a\x67\x5e\x49\x15\x07\x3b\xc0\xee\xae\xa7\xc1\xd3\xdb\xe2\xa2\x5f\x6f\x5f\xfd\x22\x46\x38\xb3\x5a\x1c\x5e\xe4\x3a\x7e\xc9\x50\x02\x83\x48\xa5\x29\x79\x3c\xd3\x2a\xcd\x2c\xc4\x4a\x83\x76\x52\x7a\x87\xe6\x8f\x0c\x0c\x0d\x62\x70\x53\x79\xf7\xc1\xcb\x32\x10\xdc\x58\x32\xd2\x23\x13\x7c\x12\x9e\x1e\x1c\x7b\x1d\xe1\x8e\x8d\x83\x55\x3f\xc8\x06\xdb\x11\x70\x0b\x73\x2e\x04\x30\x67\x55\xa4\x28\x38\x2d\x02\x8f\x21\x53\xc6\xf0\xb1\xc0\xe3\x67\x5b\x35\xd7\xf1\x34\x67\xbc\x71\xa4\xa2\x49\x50\x88\x40\x3d\xb4\x09\x37\x39\x6b\x24\x94\x41\x48\x79\xa4\x15\xcc\x13\x2e\x90\x42\x45\x07\x49\xfc\x81\x91\xb3\xe8\x75\xe9\x66\xf4\xa1\x74\xcd\x1e\xf9\xd4\x27\xc5\x72\x28\xad\x88\xbf\x62\x68\xd5\x42\xaa\xcd\xfd\xaf\x1c\x5a\x27\x5a\xab\xb9\x69\xd7\xf9\x4a\x3d\xa2\x2f\x35\x91\xd3\x86\x82\x46\x2b\x27\x27\x3b\x50\xd9\x33\xdf\x26\x3c\xb6\x87\xac\x85\xbf\x60\x26\x5f\x1a\x14\x18\x59\xb0\xf8\xc3\xee\x82\x37\x67\x7e\xaf\x52\xa4\x3a\x47\x21\xf7\x19\x63\xeb\x6d\x50\x67\xb6\xca\xab\x3d\xc6\x29\xcf\x53\xaa\x28\xb9\x91\xd3\x1a\x25\x95\x28\x89\x5b\x31\x5f\xc8\x49\x49\x7c\xc3\xa7\x49\x27\x33\x92\xdc\x0e\x38\x2b\xe6\x13\x61\x97\x55\xad\x9e\xe6\xcc\x85\x8f\x95\x44\x98\x2b\x3d\x01\x81\xf1\xcb\x4d\x5e\x30\x37\x74\x5d\xc3\xac\x49\x7a\x47\xcc\x87\x7f\xb5\x3f\x5d\x62\xb6\x0a\x32\x8d\x8f\x5c\x39\x03\x98\x66\x76\xe1\x8d\x7d\x44\x9e\x5a\x0a\x81\x89\x8a\x5c\x4a\xbe\xd8\x88\xf9\xef\xcd\x98\x25\x85\x76\x83\xb5\x70\xff\x66\x7c\xcb\xcc\x23\x36\xc5\xfb\x6c\x3d\xb3\xcb\xbc\xc1\x33\x36\xdd\x36\xaa\xda\x98\xcf\xd5\xbc\xa5\x24\x2e\x33\x4f\x48\x66\x67\xdc\x65\xeb\xa8\xe7\xf4\x7d\x56\xc6\xda\x8a\xb5\x8d\x65\xda\x6e\x63\xdb\x6e\xe6\x5a\x4e\x93\xfa\x05\xf5\x0a\xf3\x96\x3e\xed\x63\x3e\xfc\xdc\xfa\x14\x3e\xba\x34\x23\x4a\x96\x17\x0d\x2e\x7d\x21\x89\xa9\x51\x0e\xf3\x0e\x4e\x8d\xd4\x26\xb0\x7f\xb0\x2d\xf3\xb7\x76\xe6\xb3\x45\x24\xa8\x6e\xda\x39\xa2\x04\x93\x09\x6e\x4d\xc9\x5f\x16\x32\xcb\xc6\x30\x74\xc6\x4f\x26\x8f\x5e\xe4\x81\xec\x47\x73\x4a\xf1\xcb\x2a\x88\x34\x32\x8b\x34\x04\xd0\xad\x83\xd0\xb0\xef\xd8\xd8\xd4\x5b\x75\x5f\x63\xae\xcf\x6a\xdd\x6d\xb4\xa6\xd4\x5d\x6d\xbe\x92\x38\xf7\x5f\xda\x50\x9e\x12\xfb\xc8\xf3\x8e\xca\x8a\xd1\x90\xaa\xe4\x8e\xbd\xdc\x35\xe5\xf7\x8a\x0c\x54\x33\xc8\x25\x97\x13\x62\xd5\x7e\x0e\x31\xdb\xcf\xb4\x5b\xcf\xa6\x95\x05\x2e\x73\x4e\xff\x49\x43\x95\xa1\x34\xc5\xc8\xd7\x15\x28\xe1\xcd\xeb\xda\x9b\xbe\xa4\x71\x69\x2c\x93\x11\xd2\x47\x97\xae\x37\xc8\x74\x94\x34\xde\x1c\xd5\xde\x0c\x65\xb8\xef\xed\x60\x37\x81\x3b\xb1\x5b\xd7\xb5\xe3\x59\xbf\xae\xf3\xd7\x22\x5d\xfc\x20\x5b\xea\x97\x27\xe8\x9f\x8e\x72\x26\x1f\x6e\x39\x8d\x00\xdc\x00\x37\x3e\x83\x04\x33\x85\x14\xb9\xe6\x60\xc9\x8a\x5f\xa0\xbe\x1d\x2c\xe7\x3a\x0d\xfc\x74\x47\xb2\x14\xd7\x66\x7c\x40\xbc\xcd\x11\x6f\xd9\x63\xe3\x13\x9f\x7b\x95\xa9\x4b\x51\xa1\x3a\xfc\xd5\xf9\xee\x76\xf1\xdf\xe3\x84\xe7\xe6\xc5\x89\xb0\x7e\x52\xed\x98\x61\x72\x1b\xe5\x53\xea\x06\xd3\x4b\x1d\xb1\x63\x1e\x5b\x41\xec\x9f\xc4\xc2\x28\x5d\xef\x80\x2b\xf8\x01\xb1\xde\x03\x3b\x46\xcb\x80\x58\xeb\x6c\xab\x26\xa8\x23\x16\xbd\xad\x73\x54\x2d\x63\xca\xa3\x54\xdd\xb9\x4b\xeb\xfa\x37\x76\x44\xdc\x12\x62\xad\xed\x76\x23\x16\xdf\xd8\x19\xc1\x21\xee\xbf\x77\xdb\xda\xe7\xac\xb3\xc5\x56\x82\x93\xfe\xbd\x24\x20\x9e\xad\x41\x54\xd9\x62\x33\xc8\x80\xf8\x5b\x3f\xe2\x88\x19\xbb\x59\x9e\x06\xc4\x4f\x6b\xbe\xd1\xd9\x0d\x37\x91\x80\x78\xde\x8f\x78\xee\x32\xc1\x23\x6a\xf2\xeb\x70\x03\xe2\x1f\xfd\x88\xf7\x72\xa2\xfa\x24\x5a\x10\x7f\xef\x47\xbc\xc1\xe7\x20\x9e\x88\xee\xd8\x2e\x11\xcb\xa1\xb0\x52\x58\xe9\xca\xf7\x74\xc3\xd0\x68\x5e\x21\x76\xc6\x76\x0f\x62\xdc\x44\xf4\x23\x77\x89\x78\xca\xa2\x99\xc9\x58\xe4\xa9\x4f\x84\xf5\x86\x78\x5f\x43\x3c\x47\x7f\x9c\xb3\x61\xed\xf1\xaf\x9f\xf4\xda\xa6\xcc\x42\x26\xc4\x7a\x3b\xfa\x5e\x71\xc5\x22\xad\x5e\xa1\xa5\xb7\x28\x50\x6f\xcf\x5b\xf7\xf6\xfe\x16\xe2\x4d\x74\x9f\xeb\x70\xa7\xa6\x53\x81\x90\x92\x82\xa0\x31\x52\xda\x1f\xc2\x0e\x33\x8d\xc6\x94\x92\xa1\x00\x56\x02\xf9\xe9\x1b\xc9\xb0\x29\xa3\x89\x9a\x44\x54\x76\x50\x73\xc2\x47\x08\x87\x67\x82\x59\x34\xe5\xeb\x38\x29\xe8\xb6\xb7\x52\xee\x14\x27\x2c\xf7\xe7\xd0\x7e\xa9\xe9\xe8\xe0\xaf\x7d\x0a\xdb\xd2\xe5\x5f\xff\x24\x36\xcc\xf4\xd7\x0d\x5d\xcf\xf2\x3d\x85\xb6\x85\x74\xd9\x3c\x10\x6b\x95\x16\x89\x48\xda\x0f\xfd\xd1\x65\x71\x9e\x55\xe6\xab\xcf\x31\x1e\x83\x54\xb5\x29\xb7\x78\xe3\xa0\xda\x24\x46\x0d\xd6\x1b\x4c\x29\xeb\x0b\x2f\x37\x89\x77\x60\x61\xcf\x7a\xd6\xce\x4a\x59\xdc\xa0\x34\x30\x8c\x68\x5a\x17\xcf\xdd\x27\x5b\x58\xbf\x37\x58\x6f\x67\x3c\x5b\x51\xb1\x32\xeb\x0b\xaf\x92\xf5\xaa\xc9\x9a\xb1\x79\xb9\x06\x96\xa7\x9f\x76\xf5\x50\x10\x1f\x51\x2f\x96\xb6\xec\x15\x37\x76\xb1\x52\xca\xbe\xbd\x52\xce\xe0\xe7\xa2\xc6\x3e\xc1\x48\x50\x59\x66\x2b\xea\x32\x0b\x4c\x2e\x40\xa8\x88\xbd\x40\xe9\x22\x8d\xbf\xd8\xe4\xdf\xfa\xe7\xe4\xf5\xff\x2d\xa9\x5b\xf3\xf0\x57\xa8\x76\x20\xff\x9f\xc7\x56\xeb\x4a\xb7\x2e\x50\xb5\xca\x27\xa8\xda\xe8\x50\x09\x1a\xdb\x74\xca\x25\x13\xd4\x6c\x41\x2a\x0b\xc6\x65\x99\xd2\x45\xcc\x04\xd9\x19\x2e\x7c\x29\x77\x06\x4b\x34\x5a\x75\x91\x4d\x0e\x96\x59\x6e\xa0\xde\x2e\xfc\xf6\x47\x51\x26\x9d\xff\x57\x4d\x3b\x81\x2f\x48\xf4\x22\x12\x2e\x52\x16\x19\x30\x76\x21\x10\x58\xf4\xcc\x2d\xba\xf2\x2d\xf4\xfa\xb6\xca\xb1\xcb\x02\xd3\x9f\x88\xf8\xca\xd7\x66\x63\x92\x3c\x2d\x24\xc3\x19\xcb\x8a\x74\x29\x79\x52\x48\x96\x87\xe7\x61\x6f\x08\xc3\x64\x29\x79\xd1\x90\x2c\xf6\x81\xda\xd0\x59\x9e\x2b\x94\x3a\xce\x70\x61\x8e\x07\x83\x6f\x4c\x53\xba\xef\xc1\x5d\x82\x95\x01\xfc\x9f\x99\x29\x5b\x78\x5f\xcf\x95\x9e\x51\x01\xa0\xd2\x18\x02\x61\x0f\x2a\x63\x6e\x62\xc8\xf5\x46\xbc\x7c\x07\x8d\x00\x6f\x33\xe0\xe5\xff\xa0\x5a\xdc\x3b\xdc\xff\x04\x97\xff\x87\xea\xd8\xa5\x5b\xea\xa7\x5c\xea\xab\xe3\x1d\x63\xa0\x97\xfa\x79\x23\xac\x77\xff\x5d\x8b\xf5\x4f\x00\x00\x00\xff\xff\xc6\x76\xae\xe2\x03\x1f\x00\x00" + +func runtimeHelpDefaultkeysMdBytes() ([]byte, error) { + return bindataRead( + _runtimeHelpDefaultkeysMd, + "runtime/help/defaultkeys.md", + ) +} + +func runtimeHelpDefaultkeysMd() (*asset, error) { + bytes, err := runtimeHelpDefaultkeysMdBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/help/defaultkeys.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeHelpGimmickcolorsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x52\xcd\x8e\x1a\x3d\x10\xbc\xfb\x29\xea\xd3\x77\x60\x17\x09\x24\x0e\x2b\x25\xdc\x12\x12\x21\x0e\x9b\x44\x42\xd1\x9e\x1b\x4f\x63\xb7\xb0\xdb\x23\xbb\x67\x61\xde\x3e\x9a\x61\xf3\x77\xc8\xc5\x3e\xb8\xba\x7e\x5c\xfd\x3f\xf6\x92\xb3\xf8\x0b\x7c\x49\xa5\x36\xe7\x5e\x18\x91\x5e\x19\xa2\x3e\x0d\x1d\x77\x20\x9c\xf9\xfa\xf6\xec\x23\x67\x6e\xb0\x48\x06\xaa\x8c\x73\xa9\x38\x0f\xba\x75\x6e\x39\xdd\x97\x71\xe5\xc9\xdb\xd0\xb6\x38\xa0\x2b\xba\x30\x5c\xb4\x5c\x71\x8d\x23\x0e\xc8\xd4\x31\x2c\x4a\x5b\xe3\xe1\xa5\x8a\x19\x2b\x4e\x23\x76\xd4\x1b\x89\x3e\xfb\x5d\xe2\x94\x48\x1f\xdd\x12\x81\x32\x9f\xca\xb8\x32\xbf\xc5\xee\xb7\x32\x4e\xd4\xb8\x43\x51\x58\x64\x94\x24\xaf\x8c\x50\x99\x15\xa5\x4a\x10\xa5\x84\xfd\x7d\xf2\x3f\xb7\x84\x72\x9b\x09\x3e\xfc\x69\x1e\xa4\x1d\xda\xa8\x46\x37\x44\x09\x31\x49\x88\x26\x1a\x30\xb4\xe9\x2c\x9a\xc6\x37\x38\xe4\x2e\xe3\x80\x2f\xa2\xc6\xda\x15\x7c\x56\xe3\x3a\xb9\xcd\xac\x86\xe3\xd8\x8c\xf3\x1d\x8e\x9e\x12\x9b\xf1\xda\x2d\xd1\xc6\x7c\x12\xd2\x7f\xbb\x3f\x8e\xf9\xf4\xf5\xb8\x68\xd8\x7f\x3f\x4c\x03\x99\xac\xca\x6d\x8b\x6f\x95\x27\x1d\x88\x2d\x1a\x36\xef\xdf\x6d\x70\x15\x8b\xa0\xbf\x02\xfc\x62\x21\xe4\xa2\xc5\xc7\x5a\x32\x3b\xe0\xf0\xf1\x19\x4f\x9b\xa7\xcd\x1a\x0f\x9f\x0a\x37\x68\xb1\x9f\x25\xce\x39\x42\x2c\x6d\x4e\x3a\xfd\x80\x55\x92\x24\x1a\x1e\x9d\xdb\x45\xf6\x97\x19\xd1\xa7\x21\x88\xa2\x72\x5f\xd0\x73\x95\xd2\x89\xa7\x94\xc6\xb9\xe6\x70\xdf\x93\xd5\x3d\x2d\xdf\x8c\xb5\x49\x51\xf4\xe4\x2f\x6d\xe6\x0c\xac\x83\x28\x3b\xea\x3a\x31\x29\x53\x1b\x36\xef\xcb\xfa\x47\x00\x00\x00\xff\xff\xcb\xc7\xfc\x0b\x66\x02\x00\x00" + +func runtimeHelpGimmickcolorsMdBytes() ([]byte, error) { + return bindataRead( + _runtimeHelpGimmickcolorsMd, + "runtime/help/gimmickcolors.md", + ) +} + +func runtimeHelpGimmickcolorsMd() (*asset, error) { + bytes, err := runtimeHelpGimmickcolorsMdBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/help/gimmickcolors.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeHelpHelpMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x56\xcd\x8e\xdc\x36\x0c\xbe\xeb\x29\x08\xec\x21\xed\x62\xd6\x0f\x90\x43\x80\xa0\x48\x9b\x1c\x02\x24\x48\xd0\xa0\xb7\xa1\x6d\x8e\x45\x8c\x2c\xba\x12\x6d\xef\xf4\xe9\x0b\x4a\xf6\xee\xcc\x66\xd1\x9e\x66\x40\x89\x1f\xff\xbe\x8f\xf2\x1d\x7c\xe6\x2e\x09\x78\x0a\x13\x28\x3d\xaa\x73\xdf\x3d\xc6\x33\x5c\x64\x86\x93\x24\xe8\x65\x8d\x41\xb0\xe7\x38\x00\xc6\x1e\xe6\x6c\xff\x46\x73\x6a\x9c\xab\xce\x9c\x01\x41\x29\x8d\x1c\x31\x3c\xb4\x98\xa9\x2f\x58\x40\x3d\xab\x24\x50\x8f\x0a\xc8\x63\x06\x15\x68\x09\x08\xf3\xc5\xfe\xce\x99\x0a\x26\x47\x9d\x59\x79\xa1\x03\xb8\xd5\x73\x20\xc0\x90\x05\x14\xcf\x25\x6a\xbf\x60\x54\x1c\x08\xe4\x04\xea\x09\x4e\x73\x08\xd0\xe1\x84\x2d\x07\x56\xa6\x6c\x07\xa3\xf4\x94\xe2\x53\x16\xb9\x71\xce\xb9\xdf\x25\x01\x42\xe0\xac\xbb\x6f\x4f\x27\x9c\x83\xc2\x99\x2e\x2d\x47\xab\x2a\xc3\x94\x28\x67\xf8\x4d\x53\xf8\x50\xd2\xd1\xcb\x44\x70\x2c\x1d\xd9\xae\x9f\xe9\x92\x8f\x4d\x81\x1b\x25\x11\x70\x3c\x49\x1a\x51\x59\x22\x48\xbc\x01\xcb\x44\x70\x7c\x57\xfb\x79\x65\x3f\x36\xce\x7d\x23\x2a\x39\x44\x6b\x4d\xa6\xae\xb8\x9f\x5e\xc3\xc4\x56\x66\x85\x5e\xba\x79\xa4\xa8\x9b\x2d\xf6\x05\xb5\x71\xee\xee\x0e\xbe\xce\xdc\x9d\x1f\xb2\x62\x52\xe7\xbe\x3c\x15\xf0\xd5\xda\xfa\xf7\xcc\x7a\x28\xf7\xcd\xf4\xcd\x4c\x19\x17\x6a\xe0\xcb\x55\xa1\x66\x34\x6f\xab\xd6\xba\xdc\xc9\x38\x62\xec\xb3\xf9\x39\x1b\x7e\x87\xb1\x14\xb3\x7a\xee\xfc\xd5\x71\x22\xc0\x05\x39\x60\x1b\x08\xda\x4b\xed\x9e\x21\x28\xb6\x07\x90\x64\xb6\x85\x69\x2d\x26\x4f\x25\x67\xa7\x32\x71\xf7\xd4\x97\x1d\xec\xd8\xc0\x0f\x4f\x11\x3e\xc1\x9a\x58\x4b\xdf\x9a\xa6\x39\xc2\x27\x18\x09\xe3\xcf\x73\xb1\xbb\x36\x1c\xb7\x7a\x54\x5a\x28\x19\xf3\xd4\x53\xa2\x06\x9c\xfb\x2c\x4b\xed\x6f\x37\xa7\x6c\x83\x4f\x32\xc7\x1e\x56\x56\x5f\xcc\xa3\x18\xdf\x0a\x1d\x09\x30\x25\x59\x6d\x40\xb9\x81\xef\x06\xb9\xe7\x76\x3d\x71\x6b\x12\x0c\xa4\x80\xd6\xd3\xee\x7c\xa8\xcc\x95\x85\x92\x55\xf8\x92\x53\x5e\x8a\x5b\xe9\xa0\x65\x68\x87\x17\xe8\xa5\x81\x1b\xe2\x18\x63\x12\x6d\xc4\x28\x29\x1c\x4a\xa3\x2b\xed\x5e\xa7\xce\xa7\x1a\xa9\x93\x20\x29\x77\x9e\x46\x82\x5e\x28\xc7\x37\x0a\x41\xe4\x0c\x83\x48\x7f\x80\x7d\x6c\x9d\xc7\x38\x10\xb0\x96\xe2\xad\xb4\x4c\x7a\xe3\x6c\x6d\x6e\xe0\xaf\xed\x7e\x6d\xb4\x62\x5b\x58\xb1\xb1\xf4\x79\xc8\x57\x8e\xd9\x26\xec\xec\xca\x4f\x9c\x2d\x7d\x7e\x9e\xb0\xb9\x58\xe6\xcf\x9c\xfb\x61\xe8\xa3\x0d\xa9\x25\x5d\x89\x22\xe4\x29\xb0\xe6\xc3\x95\xe8\xde\xc1\x52\x8c\x70\xe2\x40\x11\x47\x3a\x5a\x3c\x43\x7d\x69\x56\x01\x99\x28\x02\x42\xa4\xb5\x22\x99\xe4\xef\xee\xe0\x7d\xd7\x6d\x8c\x2c\x39\x16\xfe\x6d\x8b\xca\xa3\x6d\xaa\x76\xe6\xa0\x0f\x1c\x6b\xaa\xf9\x92\x95\x46\x18\xe7\xce\x43\xe0\x33\xc1\x9f\x3c\xbe\xc9\xf0\x0b\x06\xf5\x32\x0f\x1e\x82\x15\x40\x8f\x4a\x31\xf3\x42\xbf\x36\xce\x7d\xaf\xab\xcb\x54\x36\xdd\x4a\x0a\x4b\xec\x9d\xe0\x65\x29\x3d\x57\xc7\xb1\x6e\x95\x23\x9c\x24\x04\x59\xa9\x37\xad\x60\x15\x47\xa1\xa1\x25\xfd\xca\x95\x28\xea\xed\x68\xe5\x10\x6a\xd5\xea\x39\xc3\x84\x03\x35\xce\x7d\x24\x93\x64\xaa\x53\x9b\x24\x67\xb6\xa1\xd5\x85\x6e\xc8\xb9\xee\xdf\x9d\x1c\x89\xb0\x7f\xeb\xdc\x3d\xe8\xac\x92\x18\xc3\x5b\x78\x0f\x6d\x62\x3a\x3d\x59\x36\xcd\x0f\xbc\x90\xb1\xf9\x86\xf0\x18\x42\x09\x24\xa6\xbb\xda\x5c\xd8\xe2\xb8\xfb\x6b\xda\xbe\x85\x3f\xaa\x7f\xdd\xd7\xff\xb7\x84\x31\xc3\x4a\x21\xd8\xaf\x97\x15\x54\x1c\x6c\x2a\x31\x97\xd1\xdd\x5f\x2b\xf3\x19\xbb\x8c\x38\x6b\x42\x1e\xbc\x3e\x9c\x24\xad\x98\xfa\x9b\x60\x55\x95\x37\xfb\x0d\x4c\x9d\x96\xf6\xa6\x4f\x77\xff\x74\xfc\x8c\xbc\x63\xec\x05\xff\x04\xb0\xbb\xbb\x7b\x90\xc9\x24\xf0\x1f\xce\xdb\x85\x67\x85\xce\x59\x65\xe4\x7f\xc8\xdd\xc3\x14\xe6\x81\xcd\xf9\xc3\xe3\x14\x90\x63\x6d\x40\x79\x61\xdf\xe4\xed\x74\x67\xe9\x2a\xe9\x5c\x33\xa8\x4d\x82\x2e\x11\x2a\x19\x6e\x02\x59\xa3\x83\x1d\xae\xd4\x64\x22\xbc\xc2\xdd\x31\xaf\x37\x81\x61\xe5\x4b\x54\x7c\x04\xcf\x83\x0f\xd6\x47\xe3\x1a\xc5\x81\x23\x5d\x85\x72\xf0\x32\xd8\xcd\x62\xb0\xc5\x8a\x7d\x5f\xd4\x18\x30\x0e\x33\x0e\x54\xde\x7b\x2b\xbf\x82\xd5\xf7\x98\x1e\x71\x9c\x02\x1d\x9e\x14\xbc\x3f\x12\x85\xcf\xb6\x1c\xb7\x0a\x4a\xb3\x56\x99\x43\xff\xea\x0b\xed\xea\x0b\xbd\x5d\x2e\x4b\x12\x12\xd9\x94\x28\xf6\x65\x2b\x96\x8f\x87\x32\x26\x38\xee\xd4\x3e\xd6\x50\xb6\x47\xa0\xa5\x0e\xab\x8e\xed\x1d\xc9\x5e\x92\x96\xe7\x98\xb0\xf3\x6e\x7f\x9f\x2d\x5c\x15\x42\x27\xb1\x4b\xa4\xb4\x57\x50\x3e\x3b\xb6\x31\x18\x8c\xc5\x59\x30\xb1\xcc\xe5\xee\x89\x87\x39\x95\xd5\xe8\xf6\xe9\x73\xdc\x3e\x9c\xe0\xa3\xac\xf6\x7e\x1d\x2c\xb6\x2d\x72\x93\x78\x09\x53\x50\x38\x3e\xf4\x34\xa9\x7f\xf1\x05\xa0\x1b\xe9\x5c\xd5\xde\x26\xee\x29\xc9\xc2\x3d\x35\xee\xdf\x00\x00\x00\xff\xff\x94\x3d\xb0\x96\xcb\x09\x00\x00" + +func runtimeHelpHelpMdBytes() ([]byte, error) { + return bindataRead( + _runtimeHelpHelpMd, + "runtime/help/help.md", + ) +} + +func runtimeHelpHelpMd() (*asset, error) { + bytes, err := runtimeHelpHelpMdBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/help/help.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeHelpKeybindingsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x5a\x5f\x77\xdb\x38\xae\x7f\xbe\xf8\x14\xbc\xee\xc3\xb6\x67\x1d\x37\xce\xbf\xfe\xb9\x7b\x7a\x4e\x9a\x46\x9b\x4e\x27\x6d\xa6\x49\xa6\xdb\xbd\xf3\x20\x5a\xa2\x63\x6e\x28\x52\x43\x52\x71\xbc\x7b\xf6\x7e\xf6\x7b\x00\x52\x12\x69\xa7\x3b\x79\x60\x28\x12\x04\x01\x10\x00\x7f\x90\xfc\x8c\x7d\x12\x9b\x85\xd4\xb5\xd4\x77\x0e\xe0\x52\x56\xd6\xb0\x15\x77\x8c\xb3\x56\x09\xbf\x32\x96\x33\xb3\x64\x2b\xe3\xef\xc5\xc6\x31\xbf\xe2\x9e\x35\xfc\x5e\x30\xe9\x99\xe0\x6e\xc3\xb8\xae\x59\x6b\xd6\xc2\x2e\x3b\xc5\xbc\x61\x9d\x13\x34\xc6\x95\x82\x7e\x15\xb7\x82\x2d\x3b\xa5\x36\xac\xea\x9c\x37\x8d\xfc\x27\x5f\x28\x81\xd4\x1b\xd3\x59\xa6\xe4\xbd\xd4\x77\x33\x80\x33\x9a\x65\xf7\xa3\x44\xb4\xd4\x79\x63\x45\xcd\xa4\xf6\xc2\x6a\x8e\x6c\xa4\x66\x0d\x49\x2a\x97\xac\x5a\x71\x7d\x27\x6a\xb6\x96\x7e\xc5\xfc\x4a\xb0\xf2\x1d\xc3\xe5\x25\x54\xa6\x69\x50\x14\x63\x71\x1f\x56\x71\xcd\xb8\x72\x86\x2d\x04\xe3\x75\x4d\x1c\x69\xc1\x52\x2a\xc1\xca\xff\x7b\x39\xab\x8c\x5e\xca\xbb\x97\xc4\xfa\x65\x2f\xc2\xec\x1f\xce\xe8\x92\x71\x07\xb5\x74\x55\xe7\x9c\xa8\xd9\x42\x28\xb3\x9e\x31\x56\x18\xcb\x38\x53\xd2\x79\x34\x12\xf2\xaa\xc5\x92\x77\xca\x67\x3a\xc4\x6d\x90\x0f\x5b\x1a\xdb\x70\x8f\x56\xaa\x61\xb1\x09\x5a\x4c\xd1\xd4\xdc\x09\xe6\x84\x20\x4a\x81\x42\x23\x3f\xe9\x48\xb8\x59\xdc\xa8\x31\x56\xe0\x52\xbb\xb7\xb4\x52\xe8\x5a\x6d\xc2\xde\xa8\x3a\x88\xc7\x56\x71\xcd\xbd\x34\xda\xe1\xea\x35\x1e\x55\x2a\x52\x7a\x1a\x68\x96\x9e\x60\xc3\xea\x4c\x04\x28\xdf\xad\x84\x6a\xfb\x75\xb8\xa6\x04\xf8\xb8\xfc\x43\x13\xd5\x46\x38\xa6\x8d\x67\xe2\x51\x3a\x3f\x1d\x8c\xee\x64\xd3\xe2\xd9\x5b\xc1\x3d\x3a\xce\x2c\xba\xd9\x5a\x2a\xc5\xee\xb5\x59\x47\x51\x0c\xab\x4d\x38\x46\xa4\x81\xef\x71\x39\x7a\x14\xea\xc1\x83\x59\x1d\xfb\x33\xe3\xd6\x9a\xb5\xc3\x15\x8d\x79\x10\x6c\x6d\x6c\xcd\x16\x1b\xfa\x3f\x63\x67\xde\x2a\xa6\xc4\xd2\x93\x96\x56\xde\xad\x3c\x91\x01\x32\xa9\x3a\xeb\x8c\xc5\x95\xf8\xe4\x3c\xb7\x81\x6c\x30\xb9\x60\x4a\x6a\x31\xa5\xc1\x0a\x39\x75\x2d\xf5\x6b\xb3\xd6\x61\x37\xbf\x12\xd0\xb3\xf9\x11\x8f\x45\xb7\x5c\x0a\x9b\x28\xb1\x32\xaa\x66\x6e\x25\x97\xe1\xb4\x30\x3c\x22\xad\x13\xc4\xb6\x11\xda\x33\x5e\x85\xe3\xf3\x86\x39\xa1\x44\xe5\xd9\x7a\x85\xce\xd9\x98\x87\x10\x21\xf0\xec\x19\xfb\x2a\xa2\xdd\xc9\x1a\x00\x37\xb8\x5f\xef\x6b\x0d\xdf\xa0\x7f\x5b\xb1\x30\x9d\xae\x59\xe7\x90\x8e\xa2\xe2\x0f\x0e\x2f\xf8\xd9\x39\xaf\x56\x70\x2f\x36\x4c\x3a\x16\x38\x78\xc3\x30\x6e\x48\xb0\x19\x00\x3a\xa2\x78\xe4\x4d\xab\xc4\x14\xe7\x90\x0b\x2b\xd1\xe4\x7b\x9b\x92\xe2\x5f\xd7\x86\xac\x11\x06\xff\x49\x83\x56\xa0\x8b\x91\x3f\x98\x4e\xd5\xac\xed\xc8\xf3\x60\x69\x94\x32\x6b\x14\x31\xc6\x48\xf9\x94\x54\x00\x65\x59\xe2\x33\xfc\x0b\xfe\x6b\x82\x6c\xbf\x4f\xde\xb2\xc9\xad\xae\xcd\x64\x1a\x47\xfe\x8e\x23\x5f\x45\x6d\x26\xf0\x6f\x24\x07\xf8\xa8\x31\xca\x25\xca\x8d\x22\x08\xec\xea\xbb\x90\x71\xfe\xc0\x18\xa3\xeb\xda\x4e\x43\xf9\x8e\x94\xfc\xcb\xbd\xd8\x54\xa6\x59\x98\x77\xec\x2f\xc1\x1c\xef\xca\xad\x04\x80\x74\x94\xd9\xe2\x39\x4e\x29\xa2\x43\xb2\x18\x5d\x81\x72\x50\xb5\xe2\x52\xb3\x98\xa1\x1c\x5b\xaf\x84\xc6\x43\x0b\x62\x84\x78\x1f\xcc\x2c\x97\x24\xcf\x9a\x6b\xcf\x4e\x95\xdf\x43\xff\x00\xc7\x1f\x42\x18\xff\xde\x49\x3f\xc8\x4b\x92\x4a\x8f\x29\x55\x30\x67\xde\xa6\xa6\x63\x8c\xb1\x09\xad\x47\x5b\x5d\xf3\x07\x31\xfd\xa5\x93\x7e\x30\xd8\xb3\x67\xec\x7d\x74\xac\x5e\xae\x2d\xa1\x89\x3b\x47\xb7\x23\x8b\x3e\x8a\xaa\xf3\x82\xf1\x9e\x9c\x8d\x1a\xb1\xc6\xd4\x82\x3d\x47\xf5\xa1\xa4\x6c\xd2\xb3\x2c\x5f\xcc\xd8\x75\x48\x08\xad\x15\x2d\xc6\x8c\x1f\x1d\x38\x04\x47\x19\x89\xdf\x96\x99\x25\x9e\xd6\xa6\x45\x6d\xfa\x05\xed\xba\x1e\xf4\xf9\x4c\x89\x45\x68\x32\x4e\x6b\x85\x73\xac\xa4\x05\x65\x70\xb5\x76\x5d\x97\x83\xbc\x94\x8b\x16\xa2\x57\x0a\xb3\xa3\xac\x56\x61\xd8\xad\xcc\x1a\xc8\x6f\xd6\xc6\xe2\x55\xc5\x6a\x69\x45\xe5\x8d\xdd\xf4\x7e\x2b\xf5\xd2\x2c\xb8\xdd\x3e\xe5\x60\x30\xcd\x26\xe8\x7d\xe8\x19\x93\x64\xc3\x44\xd1\x3d\x9c\x47\x6d\x6f\x30\xe5\x37\x82\xeb\x78\xd5\x42\xb8\xe6\xd6\x46\xff\xc9\x33\xd9\x34\xa2\x96\xdc\x0b\xb5\x19\x8c\x4f\x39\xad\x67\x99\x2b\x9b\x98\x75\xca\x16\x9d\x07\xa9\x9d\x17\xbc\x66\xff\xe8\x9c\x67\xad\xe2\x95\x88\x09\xcc\x26\x11\x18\x35\xd9\x3e\xcb\x2d\x97\x84\x31\x96\x83\xd7\x86\x70\xff\x2b\x45\x7b\xf9\x8e\xe1\x91\x97\xbb\xe7\x45\x34\xc9\x79\x05\xbd\xc9\x3f\xfe\xe3\xb1\x05\xde\x53\x46\xae\x54\x86\x53\xe1\x6d\x2b\x82\x9c\xa9\x0d\x50\x74\xfc\x4f\xc7\x15\xb3\x34\x92\xc3\x42\x04\x95\x6b\xc6\x97\x5e\x58\x0c\x92\xe7\xda\x44\x0b\xba\x16\x8d\x91\xde\xd3\x64\xfd\xca\x68\x6f\x8d\x0a\xa6\x8c\xcc\x88\x09\x26\xeb\x17\xb3\x2c\x64\x2c\x5f\x33\xe1\x2a\xde\xe2\x1d\xfa\x7b\x27\x74\x25\x1c\xc0\x17\xad\x36\xcc\xa2\xd1\xe9\x32\x77\x82\x12\x43\x1f\xd1\x78\x13\x13\xaa\x11\xce\x07\x38\x92\x66\xf6\x20\x03\xb7\x02\xcf\xde\x04\xd9\xa0\x4f\x35\xae\x6b\x5b\x63\x71\x15\x91\x2e\x8d\xed\xd7\xce\x70\x57\x31\xe0\x11\xcb\xd7\x0b\x5e\xdd\x13\x24\x08\xb7\x01\x67\x5e\xd8\x46\x6a\xae\xf6\x16\x1c\xd1\x0c\x1e\x82\xb1\x98\xf2\x7d\x8f\x19\xe2\x50\xd3\x39\x0f\x77\xc2\xf7\xd7\x95\xf4\x8e\x1c\x04\x31\x0c\xea\xc1\x17\xa6\xa3\x4b\x99\x89\x07\xa1\x3d\x32\xb0\xa6\xbb\x0b\x38\xac\xdf\x05\xbd\x7a\x7c\x02\x27\x30\xe1\x85\x8b\x2f\xae\xea\x71\x98\xb1\x0d\xee\xb2\x6d\x46\x66\x96\x5e\x68\xf6\x7c\xd1\x79\x82\x17\x5c\xad\xf9\xc6\xbd\x00\xba\x79\xc7\xa4\xb1\xff\x38\x5f\x94\x33\xb6\x75\x47\xc9\x65\x84\x8a\x78\x0a\x8e\x95\xbf\x3d\xce\x17\xff\x3b\xff\x9f\xe3\x0f\xe5\x14\x8d\xda\x18\xe7\x07\xd9\x5c\x38\x25\x72\x2f\x0c\x42\xba\xa3\x10\x6f\x05\x3f\x14\x35\x61\x8b\x9f\xc5\xd2\xc7\x9b\xb0\xe1\x7a\x43\xea\x57\x2b\x63\x49\x2b\xd4\x7e\x9a\xa9\x1f\x83\x17\xd5\x66\x48\x1e\xb5\xab\x30\x41\x46\xe7\xa4\x49\xe0\x3a\x9b\xe3\x0a\x25\xa6\x0c\xd3\xb9\x3c\xfe\xe8\xb8\x29\x28\xde\xe3\xd1\xa2\xf3\x96\x53\xd6\x6c\xb6\x8d\x5c\xfe\xd6\xed\xef\xbf\x5a\x96\x83\xa7\x4b\x47\x20\x8d\xe4\x21\xd8\x92\x58\xee\xc5\x34\xe6\x3c\xe9\x43\xf2\x0a\x3c\x96\xc6\x42\x39\x6e\x43\x76\x41\x9b\x07\xa3\x56\x1c\x79\x8d\x09\x60\x24\x9c\x01\x5c\x98\xb5\x78\x10\x76\xca\x9c\x69\x44\x62\x64\x04\x08\x78\xef\x53\x0c\xf4\x18\x22\x78\x7c\xd8\x95\xb9\x56\x54\x72\x29\xab\x68\x10\x18\x5d\x01\x97\xd4\x62\x29\xb5\x20\xb7\xd2\x6c\x69\x4d\x13\x85\xe9\x2f\xc1\x90\x9d\xd5\x26\x30\xf6\x2b\x83\x9e\xb6\xcd\x08\x71\x4d\xb8\xa5\xb7\x52\x5b\x06\x6a\x12\xc5\x7b\xee\x98\x45\x6d\x57\xd1\x9d\x6b\x61\x38\xe5\x5e\x74\x72\x30\x04\x8e\x18\x75\x25\xe5\x22\x8f\x72\xf6\x37\xb3\xd4\xdb\x20\x67\x37\x4d\xe2\xb1\x8d\x4c\x30\x5f\x7e\x10\x4a\x78\xf1\xcd\xd8\x1a\xbd\x6f\xc8\x95\x17\x02\xb1\x3c\x96\x48\x68\xe1\x5e\x32\x82\x90\xe8\x22\x28\x50\x9e\x9b\x28\xd6\x6a\x89\xe0\x14\xf1\xe6\x70\x26\x98\xca\x9e\x31\x79\x23\x6c\x73\x40\xd0\x29\x74\x47\x20\x54\x9b\xe0\x3e\x52\x33\x56\x5e\x59\x41\x0c\x2a\xe1\xf6\xde\x5d\x59\x83\x28\xcd\xed\xbd\xfb\x84\x95\x42\xd0\xb6\x52\xb2\xba\x0f\xd7\xec\x9f\xcb\x29\x48\x8d\x88\x8f\x72\xf2\x58\x18\x05\x8c\xbd\x8c\x30\xba\x3c\x25\xc1\xcb\x1e\xf8\x96\xd7\x68\xcd\xf3\x10\x10\xd7\xf1\xd8\x02\x1e\x20\x20\xcf\x17\x88\xc5\xfb\x80\x88\xb7\x33\xde\x47\x7e\xd3\x0a\x56\x8e\x27\x20\x75\x04\xfb\x0b\xf3\xc8\x9e\xd3\x56\xbf\x91\xbf\x33\xe9\x80\x77\xde\x60\x2e\xab\xa8\xac\x74\x68\x93\xc5\x26\x2a\x3f\x0b\x46\xf9\x59\xea\xee\x31\xa6\x4e\x65\x78\x1d\x40\xf7\xf7\x5d\xbb\xa8\x84\x90\xea\x88\x48\xcc\x5a\x6b\xee\x2c\x6f\xb0\xc0\x35\x0d\xce\x3a\x63\xf4\x7f\x07\x30\x7f\xab\x73\x30\xff\xd1\x63\x1e\xa6\xf8\x6b\x8d\x73\x32\xd6\xc9\xb5\x74\x01\x58\xea\xcd\x13\x95\xe6\x08\xff\x17\x1b\x2a\x97\x22\x09\x94\x81\xfd\x27\xb1\x29\xa3\xb7\xf7\xb9\x16\xb3\xda\x9f\xdc\x8f\xf0\x76\x7f\xb1\xa5\x60\x96\x4e\x6b\x40\xb8\x63\xe9\xd1\xdf\x48\x4f\x55\xbe\x78\x81\x72\xa9\x5d\x48\xb3\x51\xaa\x41\xaf\x94\x31\xf1\x0b\xf9\x67\x33\xd6\x7d\x84\x5b\x62\xce\xef\xeb\xa5\x66\xc6\xc8\xed\xd1\x4c\xf4\x56\x61\x84\xdf\xc6\xaf\x30\x31\xa7\x63\xdb\x9b\x85\x60\x83\x33\xba\xcc\x6f\xdb\xd8\xf9\x60\xd6\x3a\x76\xaf\xf8\x9d\x18\xc6\xf1\x21\x99\xc3\xd8\x8b\xdd\xaf\x58\x56\xc6\xfe\x35\xa6\xd2\xd8\x3f\xd7\x35\x5c\x93\x07\xdf\x98\x30\xde\x3f\x8d\x33\xb7\x6d\xec\x10\xeb\xd0\x25\xd6\xa1\x1b\x58\x63\xac\x8f\xbd\x64\x7a\x9c\x18\x9f\x69\xfa\xd2\x3c\x88\x9f\xa5\x16\xee\xb6\x1d\xfb\xb4\xc5\x98\x3d\xc2\xc2\x3c\x9b\xf4\x12\x48\x2d\x72\xd1\xbf\x2c\xb3\xb1\x73\x5d\xc7\x91\x8f\xda\x09\xeb\x3f\x8b\xb5\x1a\x9f\xae\x31\x4b\xc2\x90\x2f\xe3\x1e\x70\x26\x10\xdf\x44\x9a\x1b\xbe\x00\xac\x3b\xa8\x39\x55\x2a\xfc\x77\x50\x48\x5d\x53\xf3\x59\x3c\x7a\xea\x5c\x59\xf1\x20\x4d\xe7\x00\x8b\x3c\xc0\xba\x0e\xce\x4c\xbb\x81\xb3\x0e\x0d\x1d\x64\xfd\xd0\xb5\x4a\x56\xdc\x8b\xf0\x44\xfb\x45\xf1\x6a\xa1\x7d\x10\x5b\x1a\x0d\x5f\x3a\x9f\x0f\x5c\x71\xe7\x7b\xbd\x50\x8c\x2f\xad\xd0\x85\x54\x02\xc2\x89\xe1\x49\x45\x37\x18\x1c\x20\x10\xc7\xd1\xf1\x81\xe6\x2e\xb8\x5a\xc6\x99\xbe\x1b\xd6\x24\x46\x1c\x8d\x77\xc5\x2d\xbf\xb3\xbc\x5d\x0d\x3a\x0e\x23\xa4\xfe\x8d\xb9\xbb\x53\xe2\x42\xa8\x36\x76\xbf\x76\x4a\x58\xf8\xa9\x6b\x5a\x5a\x7f\xa6\x04\x47\x97\xf3\x9d\x83\xeb\x95\x50\xea\xd2\xd4\x02\x33\x0b\xe2\x5f\xea\x63\x55\x47\x0d\xea\x76\x5a\xd7\x68\xf6\x7e\x33\xec\xe3\x36\xfd\xff\xeb\x56\x49\x0f\xb7\xda\xd1\xff\x5f\xc3\xe3\x45\xf8\xd7\xaf\x09\x4f\x41\x98\x4b\x5e\x59\x03\x57\x8a\x6f\x42\xef\xba\x73\x54\xc3\x3d\xbf\xd5\xf2\x91\x19\xad\x36\x2f\xe0\xba\xb2\x46\x29\xb4\x13\x75\x82\x2d\x5a\xbe\xd6\x97\x9d\xf2\x32\xc4\xc9\xce\x40\xb0\x29\x7c\x15\x8d\x79\x10\x29\x61\x18\x39\x55\x2a\x19\x74\x70\x7d\x2f\xdb\x94\x6a\x48\x74\x64\xa8\x1b\x73\xc9\x7d\xb5\x92\xfa\xee\xbd\x45\x67\xa4\xcb\x72\xb7\x32\xa3\x5b\xb3\x31\xf4\xca\x32\xe6\xa2\xe7\xf1\x8d\x0c\x96\x48\x0b\x31\xbe\x03\x09\x54\x8b\xce\x7b\xa3\xdd\x8b\x90\x44\x2e\x71\xec\x0a\x91\x61\xe8\xa6\xf2\x8c\xd7\xb3\x74\xf1\xad\x52\x48\x48\x98\xc8\x86\xa4\x44\xd7\x43\x5a\xbb\xc7\xf4\x74\xdb\x02\x59\x2d\x84\x2b\x05\xe9\x6d\x1b\xff\xc5\x10\x36\x6b\x4d\x03\xd8\x89\xc9\x28\x84\xda\xb6\xe7\x5e\x98\x86\xdc\x2f\xc6\x60\x1f\x98\xe4\x60\xe7\x8f\xd2\x07\x87\x82\x33\xae\x2b\xa1\xe0\xca\x4a\xed\xe1\x8a\x77\x2e\x04\xb3\xe7\x0b\x28\xe6\x50\x1c\x40\x71\x08\xc5\x11\x14\xc7\x50\x9c\x40\xf1\x0a\x8a\xd7\x50\xbc\x81\x62\xbe\x0f\xc5\x7c\x0e\xc5\xfc\x00\x8a\xf9\x21\x14\xf3\x23\x28\xe6\xc7\x50\xcc\x4f\xa0\x98\xbf\x82\x62\xfe\x1a\x8a\xf9\x1b\x28\x0e\xf6\xa1\x38\x40\x3e\x07\x50\x1c\x1c\x42\x71\x70\x04\xc5\xc1\x31\x14\x07\x27\x50\x1c\xbc\x82\xe2\xe0\x35\x14\x07\x6f\xa0\x38\xdc\x87\xe2\x70\x0e\xc5\x21\x6e\x78\x08\xc5\xe1\x11\x14\x87\xc7\x50\x1c\x9e\x40\x71\xf8\x0a\x8a\xc3\xd7\x50\x1c\xbe\x81\xe2\x68\x1f\x8a\xa3\x39\x14\x47\x07\x50\x1c\xa1\x64\x47\x50\x1c\x1d\x43\x71\x74\x02\xc5\xd1\x2b\x28\x8e\x5e\x43\x71\xf4\x06\x8a\xe3\x7d\x28\x8e\xe7\x50\x1c\x1f\x40\x71\x7c\x08\xc5\x31\xaa\x70\x0c\xc5\xf1\x09\x14\xc7\xaf\xa0\x38\x7e\x0d\xc5\xf1\x1b\x28\x4e\xf6\xa1\x38\x99\x43\x71\x72\x00\xc5\xc9\x21\x14\x27\x47\x80\xf8\x2f\x64\x35\xec\x9d\x52\xfb\x9e\xda\x33\x6a\x3f\x50\x7b\x4e\x6d\x41\xed\x5f\xa9\xbd\xa0\xf6\x23\xb5\x3f\x51\xfb\x89\xda\x9f\xa9\xbd\xa4\xf6\x33\xb5\x5f\xa8\xbd\xa2\xf6\x17\x6a\xbf\x86\x5d\xa9\xbd\xa1\xf6\x96\xda\x5f\xa9\xfd\x46\xed\xdf\xa8\xfd\x4e\xed\xdf\xa1\xaf\x48\xae\x7f\x87\x01\xb0\x2a\xee\x56\x81\x1d\x3a\x46\x9c\x39\xe3\x96\xfb\xc0\x52\xd7\xc2\xba\xca\xd8\x34\x5f\x7f\x51\xf5\xf8\x80\xd9\xe1\xdc\x55\x10\xe0\x17\x9c\x93\x63\xfd\x71\x10\xc5\xf0\xa0\x20\xda\xf4\xaf\x22\x87\x10\xd2\x58\x36\xaa\x21\xd2\x8c\x85\x2c\xf4\xd2\xa0\x8a\xf7\x19\xc6\x94\xac\x6b\x25\x42\x3f\xb8\x39\x75\xbf\xad\x84\x50\x74\xcf\xf5\x0f\xe4\xeb\xe3\xe3\xc8\x81\x1e\xc3\xd2\xf0\x9a\x8b\x7d\xd8\x41\x2a\x2c\xbc\x0c\xec\x2c\x8f\xaf\x39\xb7\x00\xf9\x6d\x3b\x79\xcb\xd2\xbf\x49\x0f\x20\x26\xd3\x40\x81\xdb\x67\x34\x93\x11\x59\xf4\x34\x24\x44\x4a\x34\x49\xb0\x44\x4f\x44\xf8\xfe\x09\x46\x34\x1e\x69\xae\x57\x72\xe9\x53\x99\x26\x3d\xb0\xc8\x28\x52\x99\x26\x23\xe2\xc8\x68\xd2\xed\x26\x23\x14\xc9\x68\x52\xb9\x27\x09\x46\xe9\x89\x4e\x95\xcf\xa5\x9e\x0c\x85\xca\x48\x91\x2b\x3f\x19\xc0\x48\x42\x92\x5b\x79\x92\xe0\x99\x84\x28\x37\xf4\x24\x03\x3a\x09\x59\x2e\xf8\x64\x0b\x3a\x6d\x13\x0e\xe2\x4f\x72\x4c\xd5\xd3\xf5\x41\x36\xca\x9f\xdc\xed\x29\x51\xa6\xe5\x64\xb8\xf4\x53\x92\x6c\xc3\xc9\x13\x80\x2b\xb3\x3d\x66\xef\xad\xf3\x79\x92\x78\xe0\xdc\x4b\x30\xd9\x81\x6d\x19\xdf\x73\x5d\x27\xca\xfc\x88\x94\xb2\x45\x7a\x2a\x93\x04\xf1\xa6\x44\xd9\xa9\x4c\x06\x28\xbc\x23\x5d\xcf\x2c\x57\x65\x87\xac\x67\x97\x4a\x96\x9c\xd9\xde\xbf\x32\x47\xd9\x41\x54\x29\xe9\xbf\x9f\x26\x45\xec\xd3\x93\x51\x7a\xcb\xc8\x32\x80\x9b\x4a\x77\x91\x91\x0d\x09\xb3\x27\x19\x07\xde\xfe\x88\x04\x65\xca\x38\x6d\xd7\xf6\x09\x5d\xc6\xee\x07\x74\x37\x7c\x91\xe7\xa6\xc9\x16\xfc\x9d\x0e\xd8\x3b\x95\xd2\xa7\xcb\x26\xdb\x08\x79\x1a\x07\xb6\x7d\xe1\x4b\xa6\x7e\x0f\x9b\xb3\xe3\xcb\x28\x10\xdf\xa7\xb3\x45\x36\x8b\x40\x3f\x9d\xfd\xbc\x33\x9b\x9e\x12\x5d\x95\x3b\x14\xdb\x47\xde\x7f\x0b\x1a\xa9\xe2\x67\xa2\x61\xf6\x7b\x36\x4b\x9f\x8c\x92\xd9\xb3\x3c\x3f\x9b\x76\x93\xce\xfe\x6d\x2b\x7b\x67\xc2\x7d\xda\x9e\xdc\xb6\xde\x87\x8c\x20\x2b\x5f\x52\xb2\x5f\xb7\x3c\xd6\xf9\x6c\xfa\x34\xb7\x70\x5f\xc4\xa4\x24\x37\x19\x49\xa8\x00\x12\xbf\x9a\xe6\xf7\x4b\x52\x1a\x24\x44\xb3\x9c\x28\xd6\x0c\x3d\x41\x9a\x96\xa2\x20\xbb\x39\x29\xcd\x31\x8c\xfd\x30\x21\x66\xbc\x7e\x94\x60\x32\x5e\xbb\x09\x26\x80\xde\xdd\x44\x15\xc7\x13\xaa\xa7\x32\xd5\x30\x3e\xcd\x3f\x53\x8c\xdc\xc6\xa2\x2c\xcb\xf6\x4f\xd0\x50\xb5\x96\xdd\x1b\x19\x51\x5f\xc6\x0d\xb8\x81\x82\x3a\x15\x3c\x8e\x24\x1c\xde\xe7\x27\xde\xd7\x7c\x29\xc9\x2f\x19\x09\x7d\xd6\x4b\x8d\xb7\xe5\xd4\x43\xa9\x98\x12\x7d\xcb\x88\x86\xda\x30\xbb\x0a\x9e\xd0\x97\xca\xc0\x94\xe8\xa7\xdc\x7d\xfb\x4a\x71\x32\x05\xa2\x79\xf9\x92\x9d\x37\xbc\x72\x7b\xce\x6f\x42\x05\x34\xfc\xfa\x84\xf5\x79\x6f\x89\xf7\xd7\x53\x97\xf5\xde\xa2\x9f\xd9\x4e\x95\x9c\xae\xbc\x5d\x1f\xc4\x39\x34\x6f\xe6\x7a\xbd\x20\x1f\xb5\x17\x77\x01\xf3\x85\x37\xe1\xf4\x4b\x90\x86\x6b\x7e\x27\x6c\x94\xa7\x98\x53\xf2\xdd\x75\x80\xe2\x20\xdc\x50\x49\x8a\x2b\x0e\x69\x28\xcd\x6b\xc5\x11\x0d\xa5\x27\x52\xbc\xda\xa5\x9a\xef\xa3\x8c\x29\xd5\xb9\xab\x48\x6c\x42\xe0\x89\xcc\x97\x01\x69\x67\x36\x4b\x21\x71\x84\x31\xb1\x04\xef\xb9\xe5\x38\x99\x6c\x35\xd4\xe6\x19\x4d\x86\x07\xc7\x02\x37\xa3\x09\x98\x3c\x5e\xe4\x94\x9f\xae\xac\x6c\xb8\xcd\x52\xe5\x5e\xca\x6e\xb2\x5d\x1f\xa7\x0a\xe1\x68\xab\xfa\x0f\x6c\x8e\xed\xfa\x43\x10\x78\xeb\x85\x41\x7a\xc2\xcd\x53\x04\x21\x35\xa6\x64\x6d\xf8\x91\xc0\xd6\x1b\x86\x94\xa2\x1a\x29\xb6\xde\x38\xa4\x54\x8f\xb4\x5d\xfe\x06\x62\x32\x4d\xbe\xa3\x17\xf4\x49\x40\x1b\x2f\x1c\xc0\x67\xe3\xc5\x5b\xf6\x45\x87\x4a\xc9\xa8\x7a\xfc\x34\x24\x9a\x4e\x71\x8f\x4a\xd3\xef\x94\x34\xfb\x26\x75\x6d\xd6\x8e\x35\xbc\x5a\x21\xaa\x9d\x86\xcf\x10\x17\x25\x73\x2b\x7a\xbb\xbd\xa0\x0f\x52\xe1\xb5\xf9\xa2\x87\x07\x33\x80\xd3\xf8\x53\x07\xae\xd4\x66\x3a\xfe\x54\x86\xde\x2b\xf4\x35\x18\xbd\x1c\xc6\x6a\x87\x3e\x83\xdf\x8b\x4d\xfe\x79\x3d\x0c\xf3\x12\x2b\x33\xea\xde\xb6\xe5\x8c\x85\x9f\xea\xc4\xcf\x8d\x28\x27\x33\x6d\xd8\x88\x95\x7b\x25\x5b\x08\xbf\x16\x42\xb3\xc6\xd4\x72\x29\x85\x75\xe1\xa7\x07\xb8\x3e\x7c\xfc\x00\x52\xa0\x64\xce\x0c\xfc\xab\xa8\x09\xb3\x62\x6d\xa5\xf7\x42\x33\x1e\xbe\xcd\xf3\x92\x3d\xaf\xb8\xc3\x18\xf4\x1e\x99\xa1\x9a\xa8\x4c\xef\x13\x2f\x66\x40\x9f\xc8\xa5\x63\xeb\xd5\xf0\xf5\xfd\xa9\x57\xcf\xc3\x8f\x8f\x44\x90\x66\x80\xdd\x25\xeb\xbf\x83\x9b\x65\xd0\x33\x99\x0a\x95\x2b\xb7\x82\x89\xdf\x3b\xf9\xc0\x55\xf8\xd0\xfb\xff\x01\x00\x00\xff\xff\xa4\x09\x1c\xfe\x26\x27\x00\x00" + +func runtimeHelpKeybindingsMdBytes() ([]byte, error) { + return bindataRead( + _runtimeHelpKeybindingsMd, + "runtime/help/keybindings.md", + ) +} + +func runtimeHelpKeybindingsMd() (*asset, error) { + bytes, err := runtimeHelpKeybindingsMdBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/help/keybindings.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeHelpOptionsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x5a\x51\x8f\xe4\xb6\x91\x7e\x1e\xfd\x8a\xc2\x38\xc0\xcc\x18\x3d\xbd\x46\xce\x0f\x41\xbf\x18\x6b\xef\xdd\xc6\xc8\xd9\x1b\x9c\x37\x77\x0e\x92\x20\xa2\xa4\x52\x8b\x19\x8a\xd4\x91\x54\xf7\x6a\x0d\xdf\x6f\x3f\x54\x15\x29\xa9\x7b\x7a\xa6\x73\xc0\xbd\x2c\xb6\x25\xb2\x58\x55\xac\xfa\xea\xab\xd2\x7c\x01\x1f\x86\xa8\x9d\x0d\x45\xf1\x83\xae\xbd\x83\x10\x9d\xc7\x00\xca\x18\x70\x2d\xc4\x0e\x61\x0c\xe8\xa1\x76\xb6\xd5\xfb\xd1\x2b\x5a\x0c\xda\x82\x8e\xe1\xec\x61\xa3\x3d\xd6\xd1\xf9\x69\x9b\x65\x8d\x01\x03\x8b\x28\x7f\xf3\xf3\xbb\xf7\x7f\xff\xee\xc3\x8f\xff\xf6\xfd\xfb\xbf\xff\xfe\xc3\x0f\xff\xfa\xa6\xa7\x05\x25\x28\x79\xff\x92\x20\x78\x1b\x60\x40\x5f\xd0\x9a\x9f\xdf\xbd\x87\x30\x60\xbd\x01\xdd\x3e\x17\x58\x82\x0e\x60\x5d\x84\x80\x71\x03\xe5\xff\xbc\xd9\x8a\xcc\x7c\x90\x0e\xa4\x4d\x43\x07\x16\xcb\x89\x27\x3a\xff\x1e\x3d\x82\xf2\xc8\x1a\x39\xf1\x0a\xc4\x4e\x45\x98\xdc\x08\xb5\xb2\x24\x7b\x57\x14\x5f\x42\xa9\xc6\xe8\xb4\x6d\xd0\xc6\x72\x07\xc7\x0e\x2d\xd4\x1e\x55\xd4\x76\x0f\x0a\x2c\x1e\xc1\x68\xcb\x8e\x63\x59\x41\xf5\x08\xb2\x5c\x0c\x4c\x56\x17\x00\x30\x78\x3c\x68\x37\x06\xde\xb1\x2d\x8a\x9b\x06\x5b\x35\x9a\x08\x07\x65\x46\xdc\x41\x19\xfd\x88\xe5\x7c\x68\x50\x07\x2c\x77\xc0\x46\xc1\x51\x1b\x03\xf4\x84\xa5\x55\x63\xdb\xa2\x07\x3c\xa0\x9f\xe0\x77\x10\xb0\x76\xb6\x09\x40\xbb\x7a\x15\x75\xad\x8c\x99\xb6\xc0\x17\x43\x07\x2b\x13\x92\x84\x93\x15\x22\x4f\xd9\x06\xfe\x7b\xd4\x51\x6c\x23\xf3\xf1\x13\xfd\xd2\xb1\x73\x63\x04\x15\x9e\xb4\xdd\x6f\xe1\x5b\x24\x49\xb5\xf2\xd8\x8e\x46\xd6\x8e\x81\x9c\x10\x3b\x1d\xa0\x45\x15\x47\x8f\x1b\xa8\xb0\x56\xe4\x0b\x92\xd3\xeb\x7d\x17\x41\xd5\xb5\x66\x77\x2c\x27\x42\xab\x0d\x6e\x48\x9e\x3b\xa0\x3f\x7a\xcd\xde\x3c\x92\xfb\x8f\xe2\x2f\x8f\x50\x61\xeb\xfc\x45\x37\xb5\xca\x84\xe4\xa7\x4a\x05\xb4\xaa\x27\x3f\x69\xcb\xae\xd1\xb6\x75\x95\xf2\x1b\x08\x9d\x3b\x82\xb3\x66\x12\x8f\xa5\x85\x39\xd0\x49\x03\xa8\x90\xce\xc5\x46\x47\x6c\x48\x1b\xaf\xe8\x68\x8a\x03\x91\xd5\x8e\xc6\xc0\xa0\x62\xb7\x2d\xe8\x35\xbc\xa2\x48\xed\x8c\xf3\xb5\x33\x63\x6f\x49\x97\x56\xdc\xb2\xc4\x29\x44\x07\x5f\x6d\x80\x1d\x6b\x0c\x34\x3a\x0c\x46\x4d\xa0\x40\xf6\x80\x8a\x74\x62\x01\x1c\xf6\xba\xd5\xd8\xa4\x37\x5b\xf8\x98\x24\x8d\x81\x5d\xaf\x5b\x76\xee\x51\xd9\x98\x37\xff\xee\x2b\x12\x5f\x21\x74\x7a\xdf\x19\xf2\x3a\xdb\xc3\xa2\x94\x81\xd6\x79\xc0\x4f\xaa\x1f\xcc\x45\x77\x7e\xb5\xb2\x20\xd4\x1d\xb2\x37\x8d\x53\x4d\xce\xd7\xf9\xb9\x00\x46\x43\xae\x26\x7f\xfc\xe6\x5e\x32\xeb\x9d\xf6\x0f\x6f\x56\xcb\xc2\x9b\x52\x52\xaa\xdc\x72\xf0\x6e\xc4\x84\x80\x91\xef\x59\x07\x28\xf7\xc6\x55\xca\xf0\xf5\x94\x97\x74\x4a\xbf\xcb\xa2\xb8\xf9\xd1\x45\x94\xd4\x24\x6d\xf2\xc2\xf5\x71\x70\x9f\x9e\x6e\x20\x38\xa3\xbc\xfe\x8c\xcd\x86\xe3\x7a\xfe\xf9\x18\xeb\x87\xe2\x86\x12\x9e\xee\xc3\xb8\x5a\x45\xb1\x63\xb6\x60\x09\xdd\xd8\xe1\xc4\xd8\x80\x7d\x85\x4d\x23\xeb\xe8\x6c\xc9\xc4\x4a\x5b\xc5\x18\x72\xf3\xf1\xcc\x3b\x04\x1b\x15\x42\x40\x83\x35\x89\x6f\xbd\xeb\x19\x5c\x73\xc0\x85\x2c\xa9\xb8\x39\x03\xad\x53\xf7\xad\x51\x51\xd0\xb5\x76\x64\x67\x35\xcd\xf6\x53\x7a\x42\xec\x3c\x62\x71\xb3\xde\xbb\x2b\x8a\x9b\x3f\x27\x08\xf3\xa8\x1a\xe8\x1d\x21\x5d\x45\xa9\xcc\x27\xdd\x85\x53\xdf\x25\x8d\xd2\xf5\x97\xd0\xa1\x19\x20\xba\x41\xd7\xc5\xcd\x7d\xc9\xbf\xd2\xab\x87\xad\xc4\xc9\xe8\x83\xf3\x04\x61\xe5\x6e\x09\x38\x16\xc2\x48\x38\x5f\x95\x2c\xa4\xeb\x96\x2a\xa2\xa0\xd1\x04\x5b\x68\xd3\xf5\x51\x0c\xdd\xcf\x21\x46\x0b\x1b\x6c\xb5\xc5\x86\x0c\x3d\x0f\x3d\x8a\x79\xba\x14\x06\x9d\x87\xd7\xd1\x13\x5d\x6b\xf1\x98\x54\x5c\xe1\xe7\x29\xfa\xa9\xa6\x11\x04\x17\xb5\xdd\x7c\x4d\x57\x30\xa7\x55\x21\x36\xda\xc7\xa9\xdc\x49\x96\x37\x18\xd1\xf7\xda\x62\x10\x0c\x7b\xd2\xb6\x21\x9c\x51\x66\xef\xbc\x8e\x5d\x9f\x74\x90\x12\xe9\x96\xf5\xa0\x5b\x86\xe7\x8c\xe7\x3a\x40\xef\x1a\xc9\x7e\xe7\x29\x54\xb7\xf0\x5f\x84\xb4\xab\x33\xc5\x9f\x9b\x24\xf2\x1f\x63\x88\x22\x57\x91\xa4\xca\x39\x83\xca\x42\x99\xc5\x94\x72\x1d\x92\x7d\x74\xb6\x78\x89\xaa\x52\x70\x4b\x75\xe2\xb2\xdf\xab\x27\x92\x63\x19\x10\xb7\x24\x2e\x23\x0f\x9d\xbe\x81\x6a\x8c\x39\xc4\xb5\x55\x75\x4d\x25\x1c\xb7\xf0\x7d\xfb\x4c\xbd\xb6\xdd\x90\x58\xbb\xf2\x3d\x89\xeb\x54\xe8\x72\x64\x70\x14\x24\xb3\xd5\x5e\x69\x1b\x22\x28\x59\x91\x10\xda\x79\xbd\xd7\x96\xe0\x8b\xa0\xfa\x9e\x8b\x2e\x36\x52\x79\x04\x2a\xf3\x7e\xaa\x19\x84\x57\xd8\x3c\x2c\x68\x29\x71\x9f\xb4\x64\xdd\x5d\xc5\xd5\xd7\x4c\xf2\xce\x63\x70\xa3\xaf\x59\x90\xb6\x11\x6d\xd0\x07\x4c\xfb\x05\xbe\xc4\xd5\x66\x62\x00\x1d\xd0\x0d\x06\xe1\xd8\x39\xca\x2b\x8a\x1f\xaa\x85\x29\xb3\x3a\x75\xd0\x76\xcf\x77\x99\x4f\x9c\x2f\x32\x44\x15\xc7\xf0\x7a\xc0\x92\x89\xad\xf3\xbd\x8a\xd7\x62\x8a\x63\x15\x6d\xa3\xed\x3e\xac\x43\x9b\x80\x8b\xd4\x4c\x9e\xe1\x30\x86\x3f\xfd\xf8\xfd\xcf\xa7\x3b\x48\x65\x8e\x99\xf2\xaf\xb6\x84\x7b\xd3\x3e\x90\x43\x3d\xaa\x00\x8d\x0b\xcf\xd6\x92\xa8\xf2\xaf\x9e\xd7\xd6\xde\xb4\xec\x5f\x84\x78\x74\x30\xb8\x10\x74\x65\x50\xac\x09\xe9\xf0\xc5\x77\x74\x52\x39\x5a\xfd\xa9\x64\x24\x2e\x1b\x17\xca\x14\x54\x92\x65\x62\xaf\x68\x5f\xe1\x59\x6e\x92\xf9\x8c\xa1\xb4\x37\x15\x4b\x4a\x0a\x01\x2b\x71\x29\x29\x2b\x51\x10\x4f\x4e\x7e\x5e\x2a\xdd\x68\x1a\x30\xfa\x89\xb3\xbc\xee\x94\xdd\xe3\x82\x57\xd9\x5c\x42\x20\x4e\xc7\x8c\x34\x21\x2a\xbf\xa2\x79\x2f\x21\x03\xdb\x38\xdf\x62\x9c\x06\x02\x9d\x80\x31\xcc\x78\x42\xcf\xf2\xe5\x9c\xc5\xfe\xf6\xbc\x34\xb2\xc7\xa9\x3e\xbd\x5c\x1c\xd9\xd6\xcb\x6e\xa3\x24\x6f\x70\x10\x93\xb2\xb7\x38\x7f\xc8\xa8\x4e\x1d\xb0\xb8\x71\x03\x5a\x56\x57\xef\xad\xf3\x58\xab\x40\x0a\x0f\xe8\xe9\x42\x80\x7e\x3e\x6a\x1b\x28\x1d\xa2\x3e\x50\x35\x53\xbe\xee\xf0\x62\x00\xaf\x40\x51\x28\x6f\xdd\x29\xbf\xb6\x7e\x4d\x84\xe9\x9d\xaa\x23\xfa\x4b\x92\x20\x4b\x61\xf2\x56\xee\x00\xad\xaa\x4c\xea\x28\xf8\x9a\x52\x51\xa9\x5c\x8c\xae\xcf\x18\x41\x48\xe5\xbc\x84\x30\xf4\x18\x82\xda\xe3\x1c\xb8\x83\xa7\xb4\x6e\x9e\xa5\xf4\x55\xf2\xb1\xe4\xe5\x13\xe2\xf0\x9c\xff\x0b\xef\x5d\x9e\x6f\xe0\xd8\xe9\x88\x61\x50\x35\xd2\x01\x8a\x49\x03\x5d\xf8\xe4\x46\x39\x9e\xb9\xae\x68\xb0\xca\x6c\xdd\x2e\xa4\xbb\x77\x87\xb9\x08\x59\xfc\x14\xc5\xea\x99\x85\xdb\x09\xe8\x56\xbc\xf4\x6f\x00\xbc\x6e\x75\x6c\xcc\xe4\x59\x0e\x0f\x1d\xc7\x7c\x45\x84\xc9\x20\x7b\xe1\xdb\x85\x3c\xd0\xde\x45\x7d\x92\x76\x6a\x40\xda\x23\x34\x36\xf9\x9f\x41\x16\xdb\x08\xd8\x0f\x71\xba\x12\x0d\x4f\x38\xf5\x68\xc7\x72\x37\x13\x5d\x36\x4b\x59\xf7\x18\xe2\x64\x10\x9e\x70\x02\x5a\x71\xf9\x5a\x43\xed\x11\xed\x16\x88\xfa\x89\xad\x2a\xc2\x47\xb7\xdf\x1b\xfc\x03\x4e\x3f\xd0\x3e\x1d\xa0\x72\xa3\x6d\xb8\xa6\xbd\x35\xf1\x71\x5f\xae\xe9\x11\xc1\x46\x66\xe0\x0b\x7c\x68\x9b\x3d\xb7\x20\xc8\x16\x3e\x3a\x5a\x42\xe1\xc6\x5b\x36\x10\x74\x3f\x98\x89\xc4\x65\xc9\x74\xc8\x9f\x6c\xa5\x6d\xf3\x07\xbc\x1c\x33\x2b\xe3\x7b\x37\x72\x4a\x1d\x3b\x94\x76\xc2\xa5\x68\x06\x7e\x03\x61\x1c\x06\xe7\x73\x69\x3f\x79\x96\xd4\xa5\xc5\x0d\xf7\x47\x63\x18\x39\xb1\x49\x67\x09\x1b\x65\x96\xdc\x67\x95\x1d\xd5\x1c\x0c\x21\x49\xc2\x03\xda\x48\x45\x43\xd7\x5d\x2e\xd7\x02\x87\x5c\xe8\x56\xcd\x03\x61\xa1\x1b\x26\xa1\xa9\x27\x07\x50\x35\x26\xee\xe8\x5a\x79\x29\x75\xe6\x5e\xb7\xdc\xaf\x41\x08\x1d\x45\x37\xc9\x4b\x6d\xc5\x09\x79\x5e\xe4\x74\x14\x8f\xa2\x5c\x8a\x6c\x41\xb6\xda\xe8\xa1\x72\xca\x0b\xbc\xf7\xb9\x4d\x6d\x1c\x72\xbf\x74\x85\xdd\x0d\x66\xdc\x6b\x4b\x30\x6e\xd1\x84\x72\x47\x1c\x3e\x12\x83\x98\xb9\x76\x7e\x37\x33\x5e\xd9\x02\xbd\xb2\x6a\x4f\x84\x81\x9b\x69\x06\x36\x2e\x96\x54\xde\x79\x05\xd1\xe1\x2d\xbc\xcd\x02\x98\x37\x49\x30\x28\x30\x3a\x44\xf2\xc8\x9d\xc7\xc1\x05\xc2\x9d\xe9\x0e\xfe\x11\x9c\x4d\xd4\x9e\x3d\xce\x3d\xb2\xa8\x03\x3d\x46\xd5\xa8\xa8\x12\x47\x20\xc5\xf6\xfa\x80\x36\x9d\xb5\x85\x9f\x50\xfc\x55\xfe\x51\xd4\xfb\x41\xd4\x2b\xa9\x9f\x67\xa8\x70\x6d\x8e\xd7\x64\xf4\x09\x3f\x67\xbd\x99\xca\x10\x6c\x52\x31\xd5\xce\x5e\x72\x5d\x17\xe3\x10\x76\x6f\xde\xec\x75\xec\xc6\x6a\x5b\xbb\x5e\x9a\x8e\x47\x81\xcf\x37\x22\xfb\x31\x19\xbd\x76\x32\x9b\x7a\xc9\xc3\x8b\x13\x34\x86\xbb\xd7\xfc\x4c\x16\x88\xab\x2f\xf8\x79\x71\x25\x1d\x11\x74\x88\x81\x89\x33\x94\xf4\x66\x4b\xde\x2d\xa5\x7e\x9d\x7b\x37\x2c\xee\x25\xb1\x0a\x08\x93\x0d\x66\xdf\xbe\x5c\x62\x7c\x1f\xbd\xd2\x46\xdb\xfd\x31\xbc\xd6\x1d\x44\xaf\x7b\xc8\x4b\x57\xf8\x18\x08\xb2\xd0\x99\x2b\x20\xe0\x47\x83\x7e\x85\x7f\x8c\xa1\x76\xec\x2b\xf4\x57\xb8\x60\x50\x07\x94\xd6\xa9\xdc\x81\xc7\x9e\xba\xd0\x5c\xe2\x56\x6d\x15\xe3\xb1\x0a\x11\xa2\xee\x71\xa9\xf3\xf4\x98\x2a\xbc\x50\x27\x2e\x83\x63\x04\x1d\xd3\x50\x65\x2e\x37\xb4\x66\xd9\xc5\x0c\xfc\x8a\x45\xa4\x57\xa7\x03\x5d\xd6\x5a\xb1\xda\xf5\x3d\x65\x71\x7a\x05\x15\xc6\x23\xa2\x85\xda\x38\x29\x93\xb6\x01\x8f\x8f\x74\x5e\xa2\xc8\xec\xf2\x17\x26\x2a\xa7\x6e\x18\x6d\xe3\x72\xd1\x8d\xe7\xbc\x7c\x03\xf4\x9a\x53\x54\x1d\xb0\x61\xe0\x03\xd5\x46\xf4\x32\xc3\x33\x2e\xe4\x51\x13\xc7\xa0\xcb\xe0\x97\xde\xb0\x5e\xec\x86\x34\x8f\x9a\x47\x7f\x54\xf5\x59\xb8\xb6\xfb\x6b\x4e\xa9\xbd\x33\x46\x28\xcb\x32\xd3\x91\xa7\x50\x29\x7f\x75\x6e\x24\x4b\x7b\xe5\xf7\xda\x96\x3b\x50\xbd\x1b\x6d\xcc\x44\x3f\x5c\xa0\xaf\x01\xb9\xe9\x48\x83\xbb\x0a\x8d\x3b\x66\xd2\x2f\x91\x71\x49\xe3\x7f\x59\x1f\x16\x06\xc4\xe6\xc2\x59\x24\x5c\x14\xa7\x8c\x72\x16\xf3\x4f\x2e\x29\x97\xc4\xfe\x36\x89\xed\x95\x8f\x83\x0a\x91\x99\xaf\x30\x0f\xc9\x2b\x6a\xb1\x0d\xaa\xe6\x34\x85\xe4\x42\x69\x03\x3d\xef\x47\x13\x35\xb5\x56\xac\xc5\x37\x73\xdf\x29\x39\x19\x23\xf1\x0d\xd2\x6d\xf0\x18\xd0\x1f\xf0\x84\x45\xaf\x09\xa6\xc1\x03\x9a\x53\xd9\x8a\x0b\xfe\x68\x65\x19\x36\x50\x19\x57\x3f\x5d\xc9\x3f\xd7\xc6\xa3\x57\xc3\xb9\x2d\xf4\x2c\x7b\x8a\xf8\x08\x4f\x8f\x9d\x03\xe3\xec\x9e\xf4\x6b\x75\x9c\xfb\x13\xe1\x2f\x57\x42\x67\x30\x3a\x0a\xef\xc9\x31\xae\xa0\x73\x5e\x7f\x26\x84\x33\xc0\xef\x29\xbc\x53\xe7\xbb\xc9\xea\xe8\x48\x35\x3d\xf7\xc3\x1c\x01\xb9\x4c\x64\xb7\xf0\xde\x6f\x5e\x37\x93\x96\x78\xbd\xef\xe2\x72\xfa\x81\xf8\x65\xfd\xcf\x9f\x2d\x45\x9d\x27\xa7\x3c\x03\x4a\xf4\xed\xff\xa2\xc5\xcc\xc3\xce\xb8\xa2\xbc\x78\x85\xfa\xbf\xec\xe3\x45\x7a\xaf\x62\xdd\x55\x5e\xd5\xa7\xa3\x2a\x7e\x4c\xe1\xc1\xaf\xa4\x75\xbd\xbb\x7f\xb8\xdb\xc0\xdd\x2f\xbf\xd2\xbf\x7f\xf9\xdb\xdd\xd5\xc4\x5d\x64\x13\x2b\xce\x3e\x9c\x45\xab\x19\x00\x79\xcd\xec\xc0\x79\x01\xff\x67\x1e\x64\xd0\x9a\x34\xf5\x33\x13\x61\x0f\xfa\x15\xd8\x6f\x20\x37\x8f\xb9\x87\x9a\xf9\x14\xb6\xf1\x1b\x19\x52\xf4\x94\x2b\x3e\x24\x96\xb7\xb6\x9d\x2e\x92\x9c\x72\x1d\x8c\x26\x1b\xd5\xa7\x72\x07\x71\xf4\x36\x80\xfc\xa4\xa0\x26\x3c\x68\xdb\x2b\x79\x33\xd6\x3d\xc1\x4a\x1e\x60\x4b\xef\x16\xc6\x01\x7d\xfe\xac\xc4\x95\x62\x0b\x1f\x88\xf5\x86\x08\x61\x0a\x11\xfb\x30\x13\xf5\xdb\x30\x36\xee\x96\xfa\x79\x6e\x97\x2c\x7c\xfb\xd3\x3b\x8a\xb8\xc4\x62\x6f\x1b\xa7\xc2\xf6\xf6\xa4\x9d\x4b\xaf\xea\x31\x44\xd7\xeb\xcf\x69\x60\x90\xe7\x36\xfc\x15\x88\xee\x85\x0b\x00\xcf\x68\x64\x70\x1a\xc6\x4b\xb6\xd0\xf1\x62\x4b\x54\x15\xf5\x63\xbd\x34\x7d\x56\x1d\xf4\x5e\x45\x84\x85\x00\x70\x3c\xe2\x5e\x5b\xcb\x8d\x76\x86\x50\x15\x52\xcf\x24\x03\xe4\xa8\x2a\xbe\x8f\x7b\xdc\xee\xb7\xd2\xe1\x31\x81\xfe\x7a\x25\xc9\xd9\x1a\x1f\x4e\x7b\x54\xd6\x9d\xc9\xb0\xb2\x53\xe4\x68\x91\xc9\x04\xe9\x15\xa2\x93\xcd\x69\x12\x78\x05\x65\x68\x87\xfe\x7c\x32\x92\x88\xaa\x02\x7a\xc6\x5d\x4d\x1a\xd4\x5f\x10\xf2\xf5\x22\x60\x3e\x72\xc7\x73\xa6\xa4\xfc\xaa\x4b\x60\x43\x5f\xd7\x03\x7d\x1f\x75\x34\x9c\xe7\x3c\xe5\x0d\x73\x83\x24\xa3\x4e\xaa\x75\x7e\xee\x1d\xee\x02\xf0\xf2\xb9\xd9\x09\x18\xa9\x23\x9b\x9b\x05\x4e\x37\x61\x3a\x57\x5c\x30\x06\x1c\xbc\xee\x95\x9f\x4a\xb8\xcf\x71\xd1\x8e\x86\x22\xec\x4b\xab\x3f\x3d\xbc\xa8\xd1\xd9\x7c\x2d\x25\x6b\x12\xb6\xea\x62\x72\x27\x25\x93\x7f\xfe\x96\x98\xc6\xea\x95\xaa\x9f\xf6\x9e\x1a\xd5\x74\xc5\xb9\xc7\x01\xd5\xb6\x58\xc7\x0c\xdc\x96\xf8\xfb\xba\x31\x92\x19\xc3\x77\xd1\x9b\xc7\xef\x38\xa6\xf9\xbf\xff\xf9\x4a\x0a\x3e\x3e\x3e\x16\xc5\xbb\xf4\x2e\x11\xf1\xf4\x65\x73\xf9\x90\xc9\xdc\x87\x6a\xff\x09\xd7\x15\x46\x54\xfe\xf2\x6b\x09\xe5\xfd\x43\x09\xe5\x5f\xfe\x56\x42\x79\x7b\x5b\x42\x79\x77\x57\x6e\xe1\x8f\xde\x1d\x74\x33\xcf\xe5\x39\x14\x17\x69\xe9\xb0\xd7\x07\x9c\x31\xa9\x52\xee\x56\x6d\xfa\xe6\xe4\xe3\x26\x46\x08\xae\x5f\x3e\xc7\x56\x2a\x2c\x23\xbf\x3c\x47\xdb\xc2\xdb\xd9\x69\xbd\xeb\x79\xfa\x72\x7e\x4d\xaa\x12\x4c\xef\xd5\x13\x4a\x6f\xc6\xdf\x82\x86\x19\xec\x87\x29\x76\xce\xf2\xd3\x49\xf5\x26\x0f\x4c\x03\x78\xdc\x2b\xdf\x18\x6a\x58\x5d\x2b\x01\x99\x46\x73\x81\x07\xdd\xcf\xe9\xd8\x7a\x72\x00\x15\x76\xea\xa0\xa5\x33\x26\x08\x3d\x21\xad\x57\x01\xd4\x68\x1b\xb9\x67\x78\x7b\x72\x39\xf4\x78\x9e\x7a\x0b\x5d\xcf\x9c\xf7\xd9\xcd\xcc\x42\x38\x4e\x5f\x6c\x85\xd2\x99\x6f\xed\x94\x95\x23\xc3\xe8\x02\x52\xd8\xe6\xb9\x5a\xce\x3d\x26\xd8\xab\x2f\x24\x50\x9c\x7f\xbf\x9a\xdd\xc4\x1d\x71\x70\x1b\x12\x85\x1c\xe3\x1b\x71\xe4\xe9\x77\x7f\x69\x56\x92\xfc\x22\x13\x8a\x79\x66\x26\xbe\xbe\x5b\xfc\x1c\xd5\x13\x5e\x92\xc3\x70\x4e\xda\x47\x07\xca\x3a\xca\xde\xa2\x57\x54\x62\x71\x1e\xe4\x70\x6e\x72\x31\x3a\x51\x32\xd9\xc3\x7b\x20\xed\xd9\x16\x45\xf1\xc5\x17\xf0\x5e\x26\x84\x14\x20\x32\xb1\xc8\x3b\x8b\xe2\xcf\xcb\xdf\x07\xd0\xf6\xb0\x48\x05\xd4\x2c\x4a\xc6\x8b\x66\x22\x14\xe1\xdd\x66\xda\xc2\xbf\xcb\x7f\xa0\x47\x95\xff\xd2\x80\x32\x29\x0f\x7e\x8f\xce\xde\xc5\x13\x57\x9f\xff\x59\xc3\xa9\x87\xcb\x34\xe1\x52\x71\xfe\xa4\x4c\xc8\x56\x24\xa0\x4c\xd7\x78\x3e\x6b\xfe\x29\x9d\xa6\x32\x32\x2c\xba\xea\xb0\xfe\xbc\xca\x5f\x4f\x8b\x39\x2d\x97\x3f\x92\xe0\xef\x78\x74\x69\x2c\x91\x3a\xd9\x8f\xcb\xc7\x43\xf9\x76\xbc\x6a\xd2\x56\x83\xd6\x4d\x52\x18\x57\x63\xf2\xd5\x4a\xf6\x53\x41\x0b\x79\x1e\x47\x87\x2e\x4a\x26\x27\x6e\x38\xbb\xcb\x80\x91\x1f\x94\xeb\x02\x44\x4f\xcb\x6d\x51\x7c\x9f\xbe\x66\x9e\x39\x6b\x1e\x81\xd3\xcd\xf1\x5f\x43\x50\x57\x4c\xa7\x64\xb0\x49\x67\x50\x1e\x09\x81\x99\xf8\x4f\x03\xf8\x46\x0b\xc5\x96\x00\xcf\x19\x16\x20\xe2\xbf\x21\xd1\xf2\xc5\x4c\xc6\x60\x69\xea\xd6\xa9\x70\x5e\xaa\x29\xe2\x69\xbb\x31\x09\x69\xf0\x53\x8d\x43\x84\xf7\xae\xe0\xdf\xe2\x9e\xb9\x5a\xc3\xd7\x97\x97\xff\xc7\x58\x4d\xf2\x64\x57\x14\x65\x59\x92\x75\xc5\x2f\xc5\xcd\x6d\x1b\x77\x7b\x77\xbb\x83\x5f\x8a\x9b\x9b\xdb\xf5\xd1\xb7\x3b\xe0\x52\x58\xdc\xfc\xba\x91\x75\x7e\xac\xa6\xf5\x4a\xfd\x19\x6f\x77\xf0\xdb\xb4\xe0\x6c\x2f\x21\x45\x7e\x2c\x0b\xbf\x2e\x7e\xa5\x93\x8b\xe2\x83\xa7\xfc\xd2\x46\x79\x33\xcd\xbe\x15\x56\xcb\x49\x49\x2e\x3b\x57\xf3\xcb\xed\x3f\xa5\xe5\x97\x5b\x5f\xfd\x3f\xa8\xf8\xbf\x01\x00\x00\xff\xff\xe0\x03\x35\xb9\xf0\x24\x00\x00" + +func runtimeHelpOptionsMdBytes() ([]byte, error) { + return bindataRead( + _runtimeHelpOptionsMd, + "runtime/help/options.md", + ) +} + +func runtimeHelpOptionsMd() (*asset, error) { + bytes, err := runtimeHelpOptionsMdBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/help/options.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeHelpPluginsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x3a\x6b\x8f\xdc\x36\x92\xdf\xf5\x2b\xea\x3a\x38\xb8\x3b\x68\x6b\xb2\xb8\x6f\x03\x78\x01\x3b\x7e\xc4\x7b\x8e\x6d\x78\x9c\x04\x8b\x20\x80\xd8\x52\xa9\x9b\x19\x8a\xd4\x92\xd4\xf4\xf4\x19\xd9\xdf\x7e\xa8\x2a\x92\x52\xf7\x4c\xb2\xb9\x3b\x5c\x80\x78\xd4\x12\x59\x2f\xd6\xbb\xf8\x15\x7c\x34\xd3\x5e\xdb\x50\x55\xdf\xeb\xd6\x3b\x08\xd3\x38\x3a\x1f\x03\xb4\x1e\x55\xd4\x76\x0f\xa3\x2c\x80\xa3\x8e\x07\x50\x10\xf4\x30\x1a\x84\x77\x93\x82\x70\x0a\x11\x87\x1a\x5e\xdd\xa1\x3f\xa5\x75\x70\x50\x01\x54\x35\x28\x6d\x21\xb4\x5e\x8f\x11\x8e\x07\xdd\x1e\x40\x07\xf0\x93\x05\x15\x21\x44\xe5\xe3\x34\xa6\xf7\xe1\xe0\x26\xd3\xc1\x0e\x61\x34\xaa\xc5\x0e\xb4\x85\xaa\xf9\xe7\x55\xdd\x3a\xdb\xeb\xfd\xd5\x40\x64\x5d\x25\x22\xd2\xdf\xf7\x6a\xc0\xc5\x63\x6d\x26\xd5\xd4\x55\xf5\xf9\x80\x1e\x41\xd1\xff\x60\xa7\x61\x87\x1e\x5c\x0f\xad\x32\x66\xa7\xda\x5b\xe8\x27\xdb\x46\xed\x88\x15\xc6\x7c\x72\x13\xb4\xca\x0a\xa7\x48\x78\x4f\x6e\xf2\x99\x8f\xe8\x2a\xa2\xb7\x75\x1d\x12\xd1\x51\x0f\x18\xc0\xc5\x03\x7a\x88\x07\x65\x33\x17\x35\x7c\x3e\x20\x58\x35\x90\xa8\x42\x7b\xc0\x01\x89\xd5\xc6\xd9\xe7\x8c\x6c\x7d\xa7\xf1\xb8\x69\x6a\x78\xed\x7c\x85\xf7\x8a\x85\xa7\x0a\x2d\xe7\xc2\x41\x16\x24\xa1\x82\x78\x40\x98\x02\x7a\x08\xea\x0e\x03\xff\xdc\x4d\x7d\x8f\x1e\x8e\x49\x5e\xd7\x55\xd5\x34\x8d\x99\x54\x55\x80\x39\x7b\xa3\xee\x50\x50\x56\x00\x00\x75\x5d\xf3\x5f\x8f\x71\xf2\x16\x7a\x65\x02\x56\x68\x3b\xda\xc9\xf2\x82\x86\x16\x37\x70\xa7\xbc\x56\x3b\xc3\xb4\x2b\xf0\xd8\xa3\x47\xdb\x22\x44\xc7\xa8\x69\x11\x3f\x28\x41\xa4\x03\xec\x90\x38\xc6\x7b\x6c\xa7\x88\x1d\x38\x5b\x57\x9f\x0f\x3a\x30\x00\x33\xb8\x10\x41\x99\xa3\x3a\x09\xe9\xed\xe4\x3d\xda\xc8\x70\xb6\x17\xe2\xdf\x63\x14\xdd\x6a\xbe\x9d\xfc\x8f\x1a\x8f\xeb\x4d\x03\x2a\x54\x47\x34\xa6\xae\xaa\xe7\xc6\x80\xba\x53\xda\x30\x79\x2a\x9d\x20\x1d\xb2\xd1\x21\x8a\xbe\x10\x8a\x5b\x3c\xed\xb4\xed\xb4\xdd\x07\x08\x98\xe4\xd1\xf3\xa7\x03\x9a\xb1\xae\xaa\xd7\xce\x17\x65\x08\xc4\xd9\xe0\xa6\x50\x40\x6e\x99\x20\x56\x1e\x13\x1c\xec\xf5\x1d\x0a\x60\xbc\x23\xca\xb5\xed\xdd\xa3\x12\xff\x9e\x80\x7c\xf4\x18\xc2\x5a\xb8\xe3\xf5\x22\x7e\xe3\x5a\x65\xe0\x7e\x0b\x27\x78\x26\xef\xaf\x3f\xba\xa0\x59\x2f\x36\xd5\x1f\x9f\x4c\xc0\x85\xc2\x26\x23\x61\xca\xd2\x0e\x05\x3b\xe7\x0c\x92\x26\x8e\xd8\xea\xfe\x44\xc7\x71\x3c\x60\xd2\xd0\x74\x66\xb2\xb1\xda\x21\x78\x24\x6a\x48\x60\xe9\x4c\xdb\xc9\x07\xe7\xc1\x79\xb0\x2e\x82\xea\x63\xda\x37\x1f\x71\xeb\x48\x5b\x23\xd6\x55\xf5\xde\x45\xd2\x49\x32\x04\x26\x6d\x96\xa3\x6b\xdb\xc9\x3f\xdc\x4e\x6e\x60\x87\x68\x0b\x90\xae\x86\xb7\x3d\xcb\xf8\xa8\x6c\xac\xd4\x6c\x97\x3b\xec\x9d\xc7\x0b\xdc\x59\xb1\xb6\x64\x05\xd0\x8c\x1e\x93\x3d\x91\x2d\xbd\xa5\x93\x21\x02\x55\xe0\x7d\x55\x16\x85\xc8\x06\xbb\x24\x13\x8d\xa1\x88\x24\xf1\xb9\xc0\x32\x7b\x9e\xa2\xc5\xcc\x46\x45\x6b\xcc\xa4\xc4\xf6\x33\xfd\x81\x74\xd1\x8a\x03\x98\x02\xf6\x93\x99\x39\x88\x0e\x6e\xad\x3b\x82\xda\xb9\x69\xe1\xef\x58\xae\x76\x66\xaa\x6a\x9c\x25\x05\xff\x30\x62\xf6\x0b\xf3\x62\x02\x86\x1d\x91\x6b\xc9\x0d\x90\x0b\xc3\xa3\x1c\xa2\x0e\xe0\x46\x24\xb6\x94\xed\x98\x03\x8b\xc7\x2a\x7f\x1a\x55\x08\x6c\x06\xe4\x8a\xc4\x00\x13\x7d\xbd\xf3\x10\x30\xb2\x17\x17\x55\x74\xa3\xe8\xd3\x4e\x05\xb6\x59\x16\x5e\xaf\x0d\xc6\xd3\x88\x5b\xde\x90\x7d\x14\x09\x92\x36\xba\xbe\x87\x26\xaa\x5d\x88\x2e\x8c\xaa\xc5\xd0\x80\xb3\xe6\xc4\x6b\xdf\x38\xa0\xcd\x2c\x64\x86\x75\x22\x03\xaa\x84\xd8\xba\xaa\x9e\x3e\x7d\xfa\x7b\x5e\x79\xd6\x6d\xe2\x29\xbb\x9f\x20\x3a\xc6\x8b\x8b\xcd\x47\xc7\x6a\xa3\x2d\x38\xdf\xd1\xf1\x38\x50\x6d\x8b\x41\x5c\x8b\xb6\x96\x9d\xa2\xbf\x65\xd3\x77\x3d\x70\xc4\xa8\xe1\x3b\x42\xcb\xee\x8c\x1c\x05\xac\x69\x31\xb1\x09\x41\xef\xad\x8a\x93\xc7\x40\x4c\x54\x0b\x4a\x3c\x26\xbb\x9f\x02\xb1\xfe\xc6\x3d\x09\x69\x0b\x47\xba\xcd\x75\x55\x7d\x0d\xcd\x87\x9b\xe6\x7a\x76\x98\x72\x80\xb4\x4d\xe8\xf9\x70\x23\x04\xf0\x99\x8a\xdb\x33\x27\xf2\xee\x22\x4d\x4b\x84\xc8\x29\x91\xec\x01\x82\x1a\x10\x54\x10\x64\x6f\x3e\x7c\xb8\x29\xa0\xb7\x10\x1c\x34\x9d\xf2\x47\x6d\x9b\x2d\x34\x47\x6d\x3b\x77\x0c\xf4\x68\xb4\x9d\xee\xe9\xa1\xf7\x88\xbb\xd0\x35\x75\x5d\x6f\x98\x38\x89\x9a\x2f\xb5\x6f\xae\xa1\x75\x36\x2a\x0a\xdd\x44\xd7\xa8\xe2\x21\x9b\xbe\x10\x28\x4b\x27\xaf\x58\x3d\xf9\x20\x19\x04\x1d\x76\x73\x9d\xe5\xe6\x7a\x50\xc6\xf0\x36\xfa\xb0\xe0\x49\x93\x9c\x50\xb0\x4e\xfe\xb3\xda\x35\xd7\xe9\x44\x3a\xbc\xcf\xbe\x37\x7b\x7e\xde\x9b\x5c\x35\x3f\x13\x70\xde\x3b\x60\x08\x68\xf7\x48\x14\x1b\x8c\x81\x0f\x3b\xa0\xed\x80\xbe\xa8\x3d\x86\x4c\x36\xc7\x43\x72\xe2\x12\xb0\x47\xef\x86\x31\x0a\xcd\xef\xf1\xf8\x82\xc3\xe3\x3a\xe2\x7d\xdc\x0a\xb7\x21\x7a\x6d\xf7\x1b\xf8\x5a\x3e\x91\x44\x78\x67\x48\xc6\x95\x02\x6a\xef\xdd\x00\x4a\x4e\xbe\x62\x97\xac\x3a\x52\x29\xc9\x77\x44\x21\x08\xde\x39\xa2\xd7\xde\x0d\xaf\xb5\xc1\xf5\xff\x05\x55\x01\xfb\x06\xe3\x3b\x54\x14\xbd\x7e\x3a\xe8\x88\x6c\x69\xeb\x0d\xbb\xf8\xe6\x3a\xb9\x35\x39\x47\x23\xcb\x48\xef\xd2\xba\x2c\xea\x02\x55\x88\x61\xb8\x6f\xc3\x4f\xce\x77\xdf\x1e\x94\x5f\x87\xe8\x0b\x99\x17\x70\x1f\xf1\x91\xb2\x52\xec\xe7\xc9\xd1\xf9\x8e\x00\xb7\x07\xe5\x55\x1b\xd1\x3f\x61\xe0\x9f\x26\x8b\x37\xd1\xaf\x3d\xa9\x37\x6e\xd2\x9e\x05\x5c\x95\xc1\x24\x4d\xa4\xc7\x42\x29\x6f\x62\x38\xef\x5c\xbb\xe6\x20\xa9\x6d\xdc\xc0\x3b\xd7\x9e\x81\x20\xf1\xd1\x92\x86\x80\x4d\xad\x28\xcd\x4f\x62\xef\x2f\xb5\xc7\x36\x3a\x7f\x5a\x3f\x8a\xdd\x3b\x47\x5e\x9d\x4f\xc8\x92\x9d\xcd\xa1\x8f\x95\x32\x79\x0d\x62\xad\xcb\x90\x18\xfc\xdf\x9c\xb6\x1f\x55\x3c\x84\x75\xa7\x7d\x5d\xd7\x45\x70\x05\x49\xeb\x86\x9d\xb6\x18\x60\x98\x4c\xd4\xe4\x30\x33\x04\x2d\x0a\x4b\x39\x9e\x31\x67\x87\x5c\xa8\xa5\xa4\xf5\x4c\x6f\x96\x54\x1b\x03\xbb\x49\x0e\xc1\xa8\x10\x01\x0d\x0e\x44\xac\xeb\x19\xd2\x96\x40\xc6\xd3\xa8\x29\x60\x9c\x8a\x69\x3f\x09\x17\x2c\xbc\xc1\xf8\x81\xbd\xfd\x9a\x39\x7f\x88\x88\x73\x04\x65\xa6\xa2\x3f\x1e\xff\x31\x21\xa7\x54\x12\x26\x18\xcc\xf3\xae\x7b\x08\x66\x9b\x36\x6a\x1b\xd1\xf7\xaa\xc5\x2f\xbf\x11\xe4\x40\xd6\x3b\x9f\xaf\x40\x11\x3b\x12\x5f\x97\x3e\xc8\xe6\x75\xb3\xd8\xde\xc0\x80\x8a\x83\xc1\x49\x3c\xae\xb6\xf0\xc6\x89\x4b\xbb\x29\x9c\x08\xc4\x8c\x7d\x66\xe9\x71\xc4\x39\x77\xa5\xc5\x12\x1b\x89\x84\xa3\x36\x86\x36\xf0\xb7\xb4\x72\x6f\xdc\x8e\xa4\xb9\x85\xc9\x1a\x0a\x2c\x3a\xa6\xc8\x21\x51\x93\xe2\x9d\x2c\xad\x33\x45\xef\xe8\xcb\x1f\x90\xb5\x95\xd0\xfd\xf5\x8f\x1c\xe6\x7f\x9f\x44\x3e\xcd\x72\x12\x8c\x4f\x5c\xeb\xbc\x56\x7c\x07\x23\x7e\xa1\x6d\xf7\x9f\x78\x5a\xdf\xe2\x69\x5b\xd2\x98\x22\x06\xca\x7f\x03\x34\xb7\x78\x6a\x88\xf9\x46\x16\x34\xbc\xf3\x7b\x75\x8b\xdf\xba\x61\x50\xb6\xe3\x93\xdc\xce\x25\x48\x26\x38\x65\x3a\x1c\x0a\xeb\xba\xfe\xb6\xfc\x24\xd8\x6c\xfe\xc5\xa5\xb5\x02\x29\xe5\xed\x04\x2f\x67\x32\x2c\x5e\x62\x02\x9a\x8c\xa0\x91\xf4\x20\x27\x59\x35\xfc\x10\x10\xbe\x21\x80\x94\x43\x2c\xb1\x46\xc7\xd5\xc0\x7b\x37\xe3\xae\x97\xd4\xa7\x77\xeb\x0b\xd2\x37\xcd\xf5\x39\x79\xcd\xbc\x96\x25\x41\x29\xa4\x90\xba\x10\x83\xc8\x65\xae\x39\xce\x2d\x63\x59\xb1\xf0\xc2\xef\x94\xed\x4c\x11\x61\x3b\x74\x4b\x93\x9a\xec\xf2\x70\x93\x74\x78\xdb\xab\x7b\x6c\x97\x72\x2f\xd2\x56\x7e\x1f\xe0\xe7\x5f\xb2\x63\x59\xe7\xf7\xe8\xbd\xf3\x04\x94\xe4\x05\x0a\xd6\xe1\x80\xc6\x6c\xce\x45\x7e\x66\x4e\xca\xef\x27\xf2\x10\xa1\x86\x4f\x4b\x0e\x64\xc3\x93\x00\x6e\x8a\xe3\x14\x39\xd1\x52\x30\xba\x10\x34\x25\x2e\x8c\xa8\xce\x8e\xfc\x86\xb0\x3c\xc2\xdd\x23\x84\x7d\xa2\x32\x1e\x98\xac\x8c\x24\xa5\x9e\x53\xc0\x70\xc6\x72\x43\x54\x4e\xb6\x4b\xb5\xc1\xc1\xb9\x8e\x9d\x1b\x17\x32\x9d\xc3\x00\xc1\x0d\xe4\xc0\x3c\x27\x5c\xa4\x0f\x9c\xa0\x67\x8e\x60\xad\x6b\xac\xe1\x1f\x13\xfb\xf1\xf2\x7a\xc3\x55\x37\x6b\x50\xd6\x04\xff\xbf\xe6\xfc\x85\x6a\x6f\xf7\xde\x4d\xb6\x63\x19\x5c\x1c\xed\x23\xcc\x66\xeb\xdc\x95\x8d\x05\xd6\x5b\xf2\x68\x64\x76\x77\x78\x09\x6c\x0b\x47\xa5\x23\x47\xde\x2d\x69\xf9\x07\x21\x8d\x7e\xff\x49\x21\x13\xbf\xbb\x13\xb4\xc6\xb1\xb0\x24\x89\x23\x7a\x72\x72\xb9\xe0\x5d\x5c\xb3\x50\x62\x4e\x5c\x7a\x35\x84\xbf\xe1\xc4\xd3\x4f\xb8\x25\x81\x70\x02\x25\x26\xbb\x63\x71\x4e\x21\x17\x41\x12\x58\xbc\xe3\x3c\x1b\xef\x75\x64\xeb\x1c\xbd\x54\xc3\x9c\xc5\xa1\x1f\xb4\x55\x46\x92\x1a\x3d\x0c\xd8\x69\x15\x91\x92\x5d\xcc\xc5\x03\x15\xd9\x44\xe6\x96\xc2\x9a\x3b\xa6\x58\x5b\x72\xb9\xe8\xe6\xce\x42\x3a\xaa\x14\x8b\x12\x66\x21\xbc\x48\x6b\x41\xfd\xf9\x39\x87\xa8\x6c\xa7\x7c\x97\xa0\x14\x3f\xcf\x75\xaf\x94\x84\x35\xcc\x35\xac\xfe\x1d\xa0\xac\x8c\x0b\xc9\x65\x0c\x01\x06\x75\xe2\xd4\x68\x87\x07\x75\xc7\xa2\xb2\xce\x0f\xec\xab\x77\xd8\x2a\xae\x51\x75\x50\x31\x9e\x1a\xc1\xbc\xac\xeb\x8b\x7a\x7c\x46\x3f\xbc\x1a\x26\xa3\xa2\xf3\x7f\x4e\x35\xb6\x73\x91\x99\x0d\x92\x55\xa4\xb9\x86\x1b\x29\x1c\x88\x96\xc7\x54\xaf\x01\xbc\x6f\x71\x8c\xe7\x5a\x21\x7d\x26\xf2\x21\x49\x89\xb3\x9f\x0b\xa3\xa1\xa0\x47\x4a\x57\x0e\x16\x13\xa9\xdc\x43\xe2\x66\x51\x26\xa6\x01\x6d\x89\x44\xbd\xcc\xf1\x16\xd5\xb0\xe2\xfa\xf9\xa2\xc9\x95\x4f\x64\x51\xe9\x2e\xcf\x9a\x90\xb0\xa2\x49\x4b\xed\x51\x7d\x28\x30\x46\xef\xee\x74\x47\xca\x2a\x26\xdf\x6b\x1f\xc4\xce\x39\x58\x67\x4f\x51\x12\xbe\x44\x1b\xe1\x58\xeb\xa2\xf2\x80\xc3\x18\x4f\x8f\xa8\x03\x1f\xdb\x86\xf9\x5e\x76\x3e\xe8\x4b\xe2\x49\x19\x4d\x3b\x83\xe0\x4b\x5d\x53\xa9\xa9\x59\x8b\xdc\x88\x5e\xfa\xa7\x52\x3b\x06\x58\x73\xd1\xb6\x05\x29\xe8\xb6\xd0\x79\xb5\x77\xb6\x37\x27\xce\xe8\xa8\x66\xde\x85\x6e\x0b\xa9\xa2\xdb\x48\x98\x24\xe2\x9b\xa4\x36\x37\x19\x49\x03\xeb\x80\x08\x3b\x34\xee\xb8\x29\x6d\xa0\xe8\xa0\x43\x39\x3b\x24\x96\x16\xa7\xcb\x45\x01\x93\x41\x14\x17\x62\x45\x2f\x1f\x40\xbf\x86\x17\x0f\x3b\x4b\x09\xe0\x03\xdd\x38\x03\x98\x3a\x0a\x70\x87\x3e\x48\xff\x8d\x30\x8b\xa3\x12\xc3\x0b\xd9\x59\x25\xdc\x8e\x4a\x93\x8f\x2e\xac\x8d\x6b\x29\xf3\xdf\x52\xb6\x93\xab\xa8\x0d\xd9\xe2\x65\x5c\xce\x25\x08\xb9\x73\x9d\xbb\x7c\x6a\x8e\x86\x5c\x48\x70\xab\x2b\xa7\xb0\x9f\xd0\x38\x45\x6c\xad\x3f\xe1\x86\x1e\xa5\xcf\x4a\x26\x20\x45\xd2\x8b\x53\xc4\x0f\x7d\x1f\x30\xfe\x21\x19\x78\xaf\x5a\xaa\x7b\x8d\xbe\xc5\x05\xe9\xc5\xd0\xc8\x7e\x58\xd4\xad\x9b\x28\x76\xed\x4e\x94\x8d\x68\x1b\x22\xaa\x8e\xa8\xa4\x82\x27\xa4\xfa\x62\x77\x33\xaa\xa3\x25\x27\xf0\x7e\x99\x15\xb4\x43\xf7\x7c\x99\x18\x6c\xc1\xd9\x9b\xd8\xb9\x29\xa6\x27\xf4\x9e\x9e\x5e\xdd\xeb\x58\x36\x91\x2f\xe5\x74\xa2\xae\xeb\xb3\x8c\xe8\x26\x2a\x1f\xc3\x59\x7c\x48\xe5\x6c\x32\xa7\x87\x91\x0c\x9a\x8c\xb0\x49\x8f\xe8\x7d\x03\x29\xfc\x34\x82\xb9\xe1\x56\xc9\x59\x2f\x75\x69\xef\xe1\x5f\x18\x7c\x29\x54\x73\x37\xf7\xa0\xc6\x11\x4b\xc2\x3e\x53\x33\x87\x81\x26\xf3\x28\xa8\xcf\x93\x04\xc6\x56\x7c\x3e\x65\x90\xa9\x27\x76\x61\xfd\x33\x81\xe5\x10\x48\x40\x67\x9e\xf8\xff\x45\xdc\xff\x2a\x7d\x38\x73\x32\x28\x2a\x24\x6b\x53\xd2\xcc\x3e\x89\x5d\x1c\xa5\x4a\xd8\x51\x1e\x90\xb3\x03\x16\xab\x34\xac\xa4\x29\x9a\x53\xb2\xb7\x64\x6f\xe2\x55\x53\x7b\x53\x72\xe0\x70\x80\xa7\x6d\x53\x17\x19\x60\xca\xf8\xbe\xa6\x75\xf5\xb7\x43\x47\x3e\x2a\xaa\xb3\xfa\x8a\x13\xa8\xdc\x13\xb0\x49\xae\x21\x76\xba\x34\xd9\x7f\x75\x3b\x2e\x76\x93\x33\x2f\x02\x76\xe3\x39\x70\x82\x77\x4b\xe7\xa4\x78\x8b\x0c\x0d\x28\xbc\x06\xc4\x41\x6c\x4b\x41\xa0\xd0\x3a\xf7\x9f\x4a\x2b\x70\xd6\x30\xca\x22\xc5\xd1\x0a\x7a\xb7\xfb\x15\xdb\x18\xaa\xd2\x01\xde\x49\x6d\x3c\xef\xa0\xc0\x0d\x03\x15\x98\x03\xc6\x83\xeb\x48\xab\x16\x13\x87\xb9\x6b\xc0\x29\x89\xc0\xab\x44\x91\x79\xa6\x95\x9a\x60\xea\xf1\x19\x92\x32\x86\x67\x3c\xb9\x7f\x5a\xcd\xb0\xaf\x79\x28\x23\x21\xa5\xa9\xe1\xef\x69\x0b\xb9\x70\xa1\x70\xc1\x6a\xc9\x51\x33\x1a\x51\x96\x6a\x39\xdd\x38\xa0\x19\x21\xba\x51\xb7\x12\x29\x73\x00\x70\xf6\x01\x91\xb4\xa5\xe5\xa2\xe8\xbc\xc5\x33\xb7\xb8\x8b\x0d\xcf\xdd\x70\x3f\xd9\x1a\xde\xa6\x39\x93\x47\xd2\x27\x3a\xff\x3d\x5a\xf4\x9c\xf1\x84\xa8\xdb\xdb\x94\xde\xc9\xe0\x82\x75\x70\x50\xfc\x52\xcd\x13\x34\x50\x77\x4e\x33\x8c\xc9\x07\xca\xa7\x46\xef\x76\x06\x87\x70\xde\x6a\xd6\x7d\x92\xa3\x31\x0f\xc4\x46\x89\xd9\x86\xd2\x0d\xf6\x46\xf4\x86\x64\xf8\xb7\x29\x44\x19\x0c\x3c\x2e\x65\x08\x12\x70\x2a\x8a\xf5\xce\x3e\x89\xa9\x24\x2d\x20\x40\xed\x95\xa6\xe2\xf2\x87\x90\x4d\x75\x71\xec\xdb\x72\xae\x5c\xa8\x2c\xba\xcd\xa9\x8f\xa7\x42\x70\xad\x56\xc5\xa6\xd8\x74\xb9\x54\xdc\x9d\x92\x2d\xce\x94\xd5\x2f\xa6\xbe\xc9\x53\xaf\xd2\xe1\x5c\x00\x6d\x5e\x6b\x83\x9f\x4f\x23\x36\x5b\x68\x3e\xaa\x78\x68\xb6\x55\x43\x61\xa1\xa9\x6b\x19\x6b\xce\x7a\x91\x74\xf7\x11\xf5\x2b\x3e\x00\x97\x3d\xd5\xb9\x51\xad\x3c\x5e\x9f\x37\x5c\xeb\xef\xa5\xc1\xba\x1e\xc2\x9e\x9c\xd9\x59\x3b\xe7\x7c\xe5\x2b\x4a\x3a\xff\xc4\xba\xbf\x63\x78\xef\x3e\x72\x5d\xb1\x4e\xe5\x45\x29\x24\x39\x9f\xe5\x7a\xe7\x62\xd3\xd9\xfa\x2d\x1c\x74\x88\xce\x9f\x3e\x73\xe3\xfd\x41\x6f\x82\x5f\x2f\x7a\x13\x73\xed\xf4\x18\xe8\xe7\x5d\xf7\xce\xed\x1f\x27\xbc\xfa\xea\xab\xaf\xbe\x12\xd7\x5b\x55\x6f\xdc\xa2\x21\x32\x0f\x08\x58\xc7\x6a\x8e\x7f\x6c\x2f\x52\xe1\x5e\x93\x82\xf1\x30\x70\xef\xaa\x87\xe2\xdc\xc8\x10\x2f\x25\x2d\xae\x4c\x0d\xcb\xca\xeb\x8b\x95\x8b\xc1\x18\xbb\xd9\x54\xcc\x64\x81\xfc\x9a\xb4\xfd\x11\x40\x17\xa2\x5b\xad\xb6\xf0\x4d\x02\xfa\x12\x77\xd3\x9e\xec\xdd\xb8\xfd\x9e\x34\x63\x39\xdd\x26\xa5\xd9\x21\x74\xce\xa6\xce\x08\x27\x93\xcc\x62\xb6\xca\xd6\x75\x54\xb9\x3c\x40\x99\x44\xba\x4a\x3c\xc0\x9e\xca\x78\x9e\xf1\xac\xb6\x02\xfd\xc7\xa4\x72\x9f\xdd\x47\xaf\x6d\xfc\x0e\x3d\x66\x46\x2d\xc8\x35\x83\xe8\xd8\xff\x2d\x49\xca\x64\xa6\xc4\x7f\xf4\x64\x1e\xcd\xb7\xd1\x9b\x57\x0d\x69\xb5\x95\xc6\x60\x63\xdc\xbe\xa1\xea\xb5\xca\x1b\x64\x2e\x22\xc1\x9f\xd2\x68\x29\xf7\xed\xa9\x40\x0c\x54\x09\x70\x95\xba\xc4\x97\xb3\x93\x4e\x87\xd1\xa8\x13\x76\x15\x31\x51\x57\xa4\x17\xf0\x9c\xad\x33\xdb\xd3\x1b\x37\x1f\x8a\xd1\x3b\xaf\xfc\xa9\xaa\x38\xbc\xce\x86\x49\x0e\x8d\xc1\x97\xc9\xe1\x3c\xa7\xe2\xa8\x93\x02\xd5\x1c\x90\x52\x1e\xf0\xc6\x55\x97\xc0\xeb\xaa\xba\xd1\xc3\x68\x4e\xa0\x07\xca\xac\x53\x97\xb7\xbd\x25\x79\x9f\xdc\xf4\xa4\x4b\x81\x52\xc6\x81\xb6\xf8\x01\x52\x57\x1d\xcf\x02\xd1\x3c\xb4\x96\x66\xa6\x76\x53\xd4\x06\x9e\x25\xd0\xeb\x95\x76\x57\xf2\x6e\xb5\x49\x4b\xfa\x21\x2e\xbe\xf7\x43\x5c\x6d\xaa\xf4\x89\x12\x03\xee\x52\xd0\x02\xde\x55\x7f\x42\xd5\xf1\x20\x64\x75\xe3\x06\xa4\xa7\x3a\xde\xf3\x16\xdd\xf3\xca\x7f\x3e\x03\xab\x39\x2e\x71\xd2\x07\xb3\x2a\x89\x57\x59\xf1\x1f\x1e\xbb\x70\x13\x48\x1b\xbc\x86\x0b\x58\x48\x51\x86\x36\x3f\x7d\x0a\x2f\x29\x39\xa1\x4a\x22\x87\x7a\x8a\xce\x16\x94\xf7\x8a\xa5\xcc\x79\x77\x5e\x2c\xfe\xfd\x66\x24\x45\xec\x53\x77\xd2\xd9\x3b\xf4\x9c\xaf\x73\xa9\x9a\xc6\x25\xf3\xc0\x3e\x44\x62\xaf\x1f\x62\x9d\xf6\xad\x57\xff\x1e\x56\x92\x15\xa5\xb1\x3d\x91\xe1\x38\x01\xe1\x32\xa2\x74\xe5\x98\x7a\x3e\x0e\x36\x5a\xe2\xe9\xdf\xf2\x06\x72\xe6\x65\xc2\xff\x5d\x1e\x8a\x2e\x8e\x36\x88\x92\xfe\x8e\xc6\x49\x90\x29\x81\x89\x35\xab\xae\xde\xa3\xf2\x54\xf0\x1a\xb3\xd0\xac\x0c\x26\x2c\x40\x13\xae\xb9\xf2\x63\x0d\x51\x56\x6a\x9a\x2a\x67\x1f\x12\x54\xce\x07\xa2\x73\x71\x97\x51\x1b\xe7\x6e\x21\x1e\xbc\x9b\xf6\x07\x20\xcd\xaa\xf7\xae\xa9\xd6\x97\xd7\x79\x50\x85\x13\x37\x5f\x6d\x87\x9e\x99\xd9\x88\x3b\xa9\xfa\x21\x56\xda\x55\x45\xf1\x2a\x8b\xb1\x1a\x54\x3c\xf0\x3f\x57\x9e\x8a\x0d\x17\x2a\x3f\xd9\xa8\x07\xac\x78\x7e\x42\x72\xe5\x07\x39\x2d\x4a\xf4\xf6\x78\x3f\x56\xdc\x0d\x09\x15\x2f\x64\xc1\x12\x63\x9d\x6b\xb9\x34\x48\x93\x4d\x32\x06\xd5\x1e\x92\x05\x2e\x2f\x56\xcc\x81\x3e\x88\xbd\x11\x6f\x55\xe6\xed\xf7\x0e\xe2\x0c\x7c\x2d\xfe\xa2\x63\xdd\xe5\xd4\x8c\x27\xa9\x5b\x08\x27\x1b\xd5\x7d\xfe\xc5\x9d\x6e\xe3\xbc\x5c\x11\x0a\x17\xb7\x8d\xaa\xea\xef\x0b\x0b\xe6\x10\xfe\xbc\xeb\x3e\x89\x00\xd8\xb8\xa4\x67\x2f\x63\xfa\xb3\xc9\xd1\x1c\xb6\x48\x99\xbb\xae\xa2\x80\xef\xa6\x00\xb7\x3c\x0d\x70\x7d\x1a\xd1\xcb\x14\x3d\x23\x3c\x73\x11\xdb\x94\x81\x65\xb7\x22\x80\x40\x31\x3b\x15\x67\x9a\x17\xdb\x73\x49\xd7\x44\x0c\xb1\x11\x29\x4a\xbe\x98\x66\xb3\x4a\x3e\xd5\x43\xd7\x30\xfe\x2d\xfb\x2a\xce\xf0\x96\x4e\x70\x76\x4e\x17\xec\xae\x68\xf7\x6a\x0b\x2b\x22\x81\xfe\x26\x68\xab\x14\x48\x7e\x08\x0f\x44\x14\x5e\x7b\x37\xcc\x03\xc1\xa5\xc0\x3a\xed\x59\x6a\x11\xbd\xdd\x34\x33\x7f\xe5\x3a\x42\x55\x64\xc4\x83\x30\x01\x5a\xc3\x67\xc7\x16\x9c\x5a\x68\x36\xa6\x31\x9c\xca\x2b\xc4\xda\x29\x32\x37\xe4\x05\x97\x0c\xf4\x29\xa5\xdb\xc2\xd9\xf8\x8d\xf4\xa0\x79\xa7\x43\x5c\x12\x5e\x16\x97\x65\x15\xe9\x2c\xd9\xf4\x12\x51\xc8\xb1\x69\x8a\x2e\xdf\x4a\x29\x85\x62\xa9\x86\xab\xea\x86\x0b\x0b\xbe\x43\x93\xae\x72\x38\x30\xa8\xbc\x85\x83\x3b\xe6\x71\xc8\xc5\x48\x45\x32\x9c\x8b\xf1\xc8\x59\xdc\x28\x6a\x26\x55\xee\x4f\x3a\x1e\xd6\x37\x92\x79\xf1\x1b\xb9\xf1\x24\x6f\xe0\x59\x7a\xb8\x9e\xc6\x11\xfd\x3a\x7f\x53\x3e\xf2\x27\xe5\x63\xfe\x02\xcb\x5b\x50\xc2\x7e\x1d\xa6\x5d\x06\xfd\x97\x6d\x7a\x67\xd0\xae\x05\xcf\xe6\xd9\x33\x7e\x60\x5f\x3a\xdf\xc4\xca\x12\x59\x73\x67\x72\x79\xff\x4a\xf1\x60\xa3\x0c\x99\x9e\xc1\x97\xd5\x77\x68\x8c\x23\xb5\xfa\xc9\x79\xd3\xd1\xc3\x6b\xc7\xbf\x5f\x28\xbf\xfa\x6d\xb1\xd7\x63\x98\x0c\x11\xfd\xe5\x37\x71\xfc\x74\x30\x7a\x7b\x47\xf6\x3b\x2a\xed\xc3\xfa\x1c\xfa\x06\x3a\x1e\xe9\xf1\x7f\xba\x5f\x0a\xeb\x6e\x2b\x4d\xd3\xcd\x1c\x09\xf3\x7f\x91\xb2\xa5\x5a\xdb\x80\x3e\xae\x05\xe5\x16\xee\x36\x65\x0d\x4a\xf7\xa5\xfc\x4d\xe2\x92\x95\x17\x72\xe8\x9d\x5b\x2b\xbf\xdf\x5c\x84\xda\x9c\x71\xf2\x27\xde\xb1\x9c\x08\xae\x7a\x61\x3f\x69\x4c\x2d\x3f\x2f\xa6\x6e\xe5\x6b\x16\xf5\x6a\x93\xac\x91\xb4\xf2\x25\xf6\x8a\x44\x35\xe6\xfb\xa4\x0b\x07\xc3\x6e\x28\x7d\xd8\x96\xc2\xb7\x4b\x3b\x1a\x45\x0a\x6d\x5c\xc0\xa4\x85\x86\xf3\xf4\xa6\x80\x5a\x53\x3d\x30\xdf\xf4\x93\xce\x7b\xb9\xc4\xe2\x11\x3c\x8e\x29\xce\x40\x93\x2c\x26\xdf\x18\x6d\x36\x94\x1e\x1c\xd1\x18\x49\x13\x4e\x55\xbe\xcf\x5a\x6e\x1a\x9d\x43\x77\x7d\xaf\x5b\xad\x0c\xb4\x07\x65\x2d\x9a\xea\x67\x4a\x0b\x7f\x59\x1f\x62\x1c\xc3\xf5\xd5\xd5\x5e\xc7\xc3\xb4\x23\x19\xc8\xd5\xd4\xa7\xd8\xe9\xe8\x7c\xc2\xf7\x34\xed\xda\x24\x5b\x95\xdb\xb5\xf0\xbd\xb2\x6a\x8f\x3e\x5f\xb2\xe5\xaa\x92\x9b\x0a\xb0\x9b\xb4\xe1\xbe\x7b\x72\xac\x83\xac\xbc\xa8\xef\xb4\xbd\x73\xb7\x38\xcf\xfe\x9a\xbf\xe6\xf5\x75\x5d\x37\xa5\xe5\x23\x42\x4f\xe3\x64\xdd\xcd\xe3\x8b\x45\x7e\x38\xcb\xbf\x49\x9f\x9b\x65\x47\x41\xca\xcd\x4c\x45\x8f\xb1\x3d\x60\x28\x77\x80\x4b\x7e\x92\xd8\x0c\xb0\x2e\x17\xd8\x52\x04\x9d\xaf\x0d\xa5\xd0\x36\x60\x54\x9c\x39\xe5\xbb\x6e\x91\x2f\xcb\x05\xb9\x2d\x57\xc3\x8b\x53\xd6\x84\x6d\x3a\x53\x6e\xa9\x2f\xd6\x9c\x9d\x4b\x95\x50\xcf\x37\xe7\xf2\xbd\x46\x15\xe1\xcf\x1d\x0e\x37\x8f\x92\x48\x2a\x8a\x04\x1c\xd9\xdc\x91\x6f\x15\xfa\xee\xe9\xa8\x7c\x3c\xcd\x2c\x2e\xea\x6a\x81\x93\xbf\x34\x79\x8c\x4f\x5a\x9b\xe1\xc9\x2d\x0c\x6e\x13\xdb\xdb\x33\x80\x45\xf1\x9c\x4c\xc3\xb8\x35\xac\x8c\x91\x2c\x65\x99\x74\x64\xc9\x65\x5d\xc8\xc9\x65\xc2\x4f\xea\x5e\x90\xd7\xb9\x7c\x5c\x44\xef\x71\xda\x19\x1d\x0e\x73\x2b\x86\x3e\x73\xf7\xab\xc3\x94\x2d\x17\x35\x97\x15\x12\xc2\xd3\x6d\xd1\x69\xe4\x2e\xf9\x32\xde\x3b\x6b\xb4\x45\x58\x47\x07\x6f\x58\xc6\x54\x9f\xf5\xe8\xd5\xce\x9c\x36\x52\x70\x71\x44\x6d\x88\xb6\xfa\xd7\x40\x11\x85\x62\x56\xba\x14\xcc\x71\x32\x27\xdf\x51\x25\x53\xcb\x9a\x31\xd7\x4e\x39\x39\x29\x77\xf7\xec\x79\x19\x43\x80\xab\x9f\xbf\x54\x00\xab\xf7\x6a\xc0\xd5\x35\xac\x64\x0b\x05\xd9\xd5\x96\xde\xbf\x44\xb9\x76\xae\x9d\xa5\xcf\xf3\x2d\x40\xab\x5b\x8e\xe2\xad\x0e\xe4\x7b\xca\x2a\xbe\x32\x98\x4f\x47\x60\x7c\x56\xfb\xb0\xba\x86\x9f\x57\xe3\x29\x1e\x9c\x25\xcf\x48\x3e\x49\xdb\xfd\xea\x17\x5e\xf0\xa3\x0c\x38\x78\x11\x3b\xda\x2f\xc9\x57\xe7\x2f\x84\xfa\x2f\xf5\x37\xf5\x37\x0c\x90\xbf\xfc\xe0\x0d\xbd\x7d\xc4\x8f\x4c\x01\xb3\x8a\x5e\x29\xdf\x1e\xf4\x1d\x5e\xdd\xf1\xee\xfa\xbf\xf4\x38\x43\xf8\x84\xff\x98\xb4\x27\xae\xbf\x94\xd0\xb0\x62\x3d\x27\xc0\x7f\x7d\x46\x5b\xfe\x63\x95\x3e\x49\x14\xa3\x7f\x7f\xa9\x7e\xfb\xa5\x5c\x2b\xb6\xa9\x44\x86\x71\xe2\x29\x25\x5f\xf9\xf9\x1f\x98\x8e\x92\x44\x57\xb1\x7a\x57\x39\x61\x52\xc7\xb3\x93\xcf\xb3\x9e\x8b\x2b\xf5\xac\xb7\x04\xf4\xc4\xa9\xd5\xa0\x6e\x11\xa6\xb1\x93\x31\x19\xb9\xb5\x5c\x99\x3b\x7f\xbb\x5d\x8c\xf5\x58\xf5\x5c\xbf\x84\x15\xe6\x32\x3b\x55\x1c\x4b\xc5\x4a\xf3\xa7\x2a\x0f\x0f\x93\x56\xad\xdf\xb1\x7d\x1c\x74\xb8\x86\xe6\xc7\x57\x9f\x6e\xde\x7e\x78\x0f\xcf\xf2\x41\x35\x1b\xf8\x68\x50\x05\x14\xc2\xc2\xe4\x31\x25\x4b\xd5\xcf\x01\x87\x3b\xf4\x12\x04\xae\xaf\xae\xe4\x67\xed\xfc\xfe\x6a\xc3\xca\x9b\x10\xf2\x5c\xeb\xbf\x03\x00\x00\xff\xff\x7c\x8c\xe6\x56\x53\x31\x00\x00" + +func runtimeHelpPluginsMdBytes() ([]byte, error) { + return bindataRead( + _runtimeHelpPluginsMd, + "runtime/help/plugins.md", + ) +} + +func runtimeHelpPluginsMd() (*asset, error) { + bytes, err := runtimeHelpPluginsMdBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/help/plugins.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeHelpTutorialMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x57\x5b\x6f\xdd\x36\x12\x7e\xe7\xaf\x18\x9c\x3c\xd8\x5e\x1c\x2b\x40\xd0\x27\x03\x29\xd0\x1a\xdb\x4d\xd0\x5d\xa0\x68\x8c\x02\xfb\x26\x4a\x1a\x1d\xb1\xa6\x48\x81\x97\xa3\x68\x17\xdd\xdf\xbe\x98\x19\xf2\x5c\x6c\x27\x0f\xb9\x1c\x89\x9c\xcb\x37\xdf\x7c\x33\x7a\x07\x4f\x39\xf9\x60\xb4\x55\xea\x69\x32\x11\x4c\x04\x0d\x5d\x30\x38\x82\x71\x29\x78\x48\x1e\x66\xd3\x07\x7f\x13\xa1\xf7\x6e\x34\x87\x1c\x74\x32\xde\x41\xdc\x62\xc2\x19\xd2\xa4\x13\xac\xc6\x5a\x38\x98\x23\x42\xf4\x33\x42\x34\xf3\x62\x51\xe1\x57\x4d\xff\x46\x88\x93\x5f\x8d\x3b\xc0\xe4\x57\xb2\x57\xed\x20\x44\x4c\xc9\xb8\x43\xdc\x43\xc0\xce\xb8\x01\x9e\x71\x8b\x7b\xd0\x6e\x80\x1c\x11\x5a\xe3\x4c\x6a\x6c\xd6\x2d\x24\xaf\xce\xd7\x38\x20\xb2\xb4\xf9\x1c\xc0\x9a\x67\xe3\x0e\x8d\x52\x9f\xfc\x82\x63\xb6\x76\xa3\xe7\x37\xd6\xc2\x48\x26\x13\xa5\x95\x23\xbd\x69\x94\xfa\x82\x08\xed\x8f\x30\xa1\x5d\x60\xc0\x51\x67\x9b\xc8\x67\x0b\xa3\x0f\xa0\xc1\x9a\x98\x40\x3b\xc0\xaf\x8b\xd5\x4e\x12\xf5\x23\xa4\x09\xeb\x69\x0a\x91\x42\xa5\xb0\x1b\xa5\xde\xbd\x7b\x07\xbf\xd9\x7c\x30\x2e\x2a\xf5\x2f\x8e\x6b\xd2\x84\xe1\xc2\x0f\x61\xd6\x4e\x1f\x30\xc0\x3a\x99\x7e\x82\x5e\x3b\xd0\x39\xf9\x59\x27\xd3\x6b\x8a\x74\xf0\xab\xb3\x5e\x0f\xe5\x7c\xe4\x38\x36\x9f\x1b\x78\xf2\x2a\x22\xb2\xeb\x1b\x3f\x8e\xa6\x37\xda\xde\xd4\x63\x7b\x38\x30\x00\x07\x93\xa6\xdc\x35\xbd\x9f\xdf\x33\x28\xf7\x38\x98\xe4\xc3\x7b\x39\x76\xdf\x4f\xda\x39\xa4\xbc\x7f\xf1\x01\x4a\x3d\xf6\x60\x46\x46\x68\x20\xe8\x90\xcc\x18\x17\x93\xb6\x96\x9d\x45\x67\x96\x05\x53\xac\x19\xdc\x12\x26\x38\x80\x71\x52\xeb\x80\x8b\xbf\xdb\xab\x3f\x73\x4c\xb0\x04\x8c\x11\xda\xc7\x14\xec\xdf\xa9\x46\x80\x5f\xb1\xcf\x09\x41\x43\xef\xe7\x59\xbb\x41\x8a\x99\xb6\x05\xa1\x2d\x06\xab\xb3\xea\xa8\x2d\xe1\xcd\x3e\x20\x18\x37\xfa\x30\x0b\xf0\xba\xf3\x39\x71\x4c\xd7\x60\xee\xa1\x02\x83\x6e\xa8\xe5\x29\xd6\x63\xcb\xb5\x55\xc9\x2f\xa6\x2f\xf5\xf9\x52\x58\xa6\xd4\x67\x27\xdc\xd9\x0b\x73\x2a\xfd\x40\x13\x17\x93\x0f\x92\x66\xfb\xbf\xf7\x8d\x90\x4d\x40\x7d\x5f\xcf\x35\x7f\x46\xef\xda\x3d\x68\x18\x8d\x45\xc5\x70\x98\x08\x7d\x40\x4d\x08\x51\x18\xa3\x09\x31\x41\x32\x33\x92\x0b\x08\xb9\x78\x6c\xe0\x73\x92\xe6\x22\x1b\x7c\xbf\x70\x62\xf2\x76\x88\xa0\xad\x55\x8c\xfe\x29\x24\xa6\x2e\x9a\x00\x47\x6d\x33\x46\x22\x04\x50\x3d\x0f\x48\x04\xf5\x0b\x41\xc4\x79\x30\xab\xd0\xa4\x09\x43\x3d\x90\x26\x54\x7c\x4d\xaa\x86\xd0\x5e\xa7\xc0\xfe\xf7\x20\x54\xe3\xfb\x5c\x21\x93\xe8\xfc\x60\x02\xf6\xc9\x6e\x14\x9f\x45\xc8\xd1\xb8\x83\x92\x24\x94\xfa\x42\xad\xbd\x95\xc2\x73\xdd\x99\x86\x5e\xfa\x9a\x4b\x0e\xb3\x1f\xf0\xb2\xee\x11\x53\x89\x57\x72\x69\xe1\x56\xc2\x52\x63\x4e\x39\xe0\x1e\x3e\x8b\x82\x70\xcf\xff\x08\xaf\xcf\x33\x45\x07\xd3\xeb\x84\xe2\x9a\xd4\x84\xbd\xdf\x35\xf0\x34\x61\xc9\x5b\xb1\x95\xa4\x9f\x11\x70\x1c\xb1\x4f\x60\xe6\x19\x07\xa3\x13\xda\x8d\x03\xe2\x03\xda\x46\x0f\x1d\x42\xd4\x47\xaa\x9a\xff\x26\x42\x2a\x7a\xe1\xfc\x45\x65\xc4\x44\x4c\xa6\x7f\x06\x3c\xa2\x03\x3d\x26\x2c\x38\x5a\x1f\x8b\x38\x35\x4a\xfd\xbb\x20\xcb\xde\xce\x29\x45\xb0\x5e\x5a\x5f\xca\x3f\xa3\x76\xf1\x1b\x5e\xbc\xb3\x1b\x4c\xfa\x78\x59\x50\x72\xc4\x4a\x2b\xc5\xa2\x3b\x5d\x1e\xc7\x12\x02\xf9\xe1\x17\x0d\xbc\xd1\xf1\xc5\xd6\xea\x55\x5c\xac\x49\x11\xfc\x82\x4e\x2a\x45\x6f\xa5\x5a\x8c\x3f\xc7\x08\x49\x77\xd1\xfc\x07\xe1\x43\xbb\x67\x47\xf5\xf7\x39\xb8\x0e\xe1\x03\x18\xc7\xd4\xed\x73\x08\xe8\x52\x09\xa7\x81\x9f\x28\x71\x91\x6a\xbe\xe0\x7c\x62\xc8\x45\x91\xc5\x43\xe5\x2b\xd7\x40\xbd\x55\x83\x06\x3e\xf9\x15\x8f\xd4\xf5\x95\xab\x31\x71\x09\xde\x80\xb4\xd0\xea\x6d\x3b\x6f\x01\xb2\x6a\x27\xb8\xb7\x25\x37\xe6\x1a\x67\xc5\xf9\x19\xa7\x7e\xcf\xdd\xc6\x16\xca\x60\xfa\x01\x3c\xb5\xda\x6a\x22\x96\x90\x7c\xb6\x03\x2c\x45\xaa\x46\x6f\xad\x4c\x3b\x52\x92\xeb\x40\x1e\x94\x6a\xdb\x96\xfe\xab\xfe\xab\x00\x00\x76\x7f\x6b\x42\xb7\x7b\x00\xf9\xc5\x4f\x4a\x1c\xbb\x07\xf8\xc0\x0f\xff\xda\xab\x17\xcf\x7f\x50\x7f\x91\x99\x3a\x6e\xd6\x0a\xc6\xab\x34\x4e\x39\x48\xf8\x95\x70\x3a\xf5\x13\x1f\x3e\x58\xdf\x41\x4b\x21\x90\x04\x7f\x2e\x88\x70\x36\x75\x30\x3c\x3b\xbf\x8a\x30\x8b\x18\xd7\x21\xa1\x8f\xda\x58\xdd\x59\xac\x25\x38\x69\xb2\x6a\xcb\x13\x0a\x61\x31\x3d\xdc\xd6\x71\x5b\x9f\xdf\x15\x59\xfe\xf5\x3c\x48\x95\xba\xf8\x01\xab\x0f\xcf\x14\xf5\x9c\x4b\xa0\x51\xcf\x08\xab\xde\x40\xc7\x6a\xa5\x01\xee\xaf\xd3\x4a\x90\x26\x9c\x45\xaa\x24\x88\x97\x12\x7e\x1a\xd9\x17\x8c\xb8\x9a\x8a\x27\x46\x5c\xe5\xcf\x4b\x09\xcf\xb7\xdf\x19\xd2\x80\x83\x7f\x5d\x74\x75\x5d\xf4\x6b\x5f\xaf\x8b\xce\xe6\x76\x0f\xb0\x23\x6b\xbb\x5a\xcd\x3f\x30\x6c\x65\x73\x7a\xa9\x1e\xa7\xd5\xa8\x48\xb2\x29\x43\x05\xba\xed\x9c\x33\x75\x6e\x3d\x08\xba\x27\x94\xda\xd3\x14\x56\x5d\xa1\xe7\x09\x64\x4a\x62\x26\xa5\x5c\x4d\x12\x94\xab\x7c\xaf\xde\xdd\xa4\xd7\xfa\x78\x9d\x95\xba\x40\xf0\x1b\x83\xfb\x62\x51\xda\x0b\xa0\x42\x40\x4e\x84\x72\xeb\x10\x3a\x9f\xcb\x8e\xa0\x56\x92\x40\x89\x5b\x06\xf2\x89\x63\xe7\x79\xdf\x5e\xd8\x94\x41\xff\x92\x64\x97\x07\x2a\xd1\x1e\xaf\xf6\x56\xce\xf7\x9f\x59\x9f\x18\xef\x10\x07\xc9\x61\xf1\x2b\x06\xd2\x62\xd1\xd5\xd3\xa4\x8e\xb0\x04\x7f\x34\x03\x9e\x35\x88\x46\x15\x47\x74\x5a\x51\x05\x11\x78\xe4\x65\xa0\xa8\xf3\x4b\x1a\xb6\x34\xad\x4c\x94\xf1\xcf\xdb\x80\xcd\xb2\x4c\x40\x5d\x26\x68\x63\x58\x27\x74\x32\x71\x21\x26\x1d\x92\x6c\x03\x26\x02\xc6\x88\x2e\x19\xd6\x3a\x0d\xde\xe1\x3d\xdf\x95\xd5\x87\x7a\x98\xb6\x5e\xda\xb6\x45\xed\x65\xdd\x7e\x1d\xaa\x78\xec\x36\x1a\x24\xc4\x1e\x5e\x78\xa5\x0b\xfc\x58\xae\x29\xd9\x6a\xe8\x6b\x40\xf0\x24\x53\xb5\x13\xa4\x90\xac\x3c\x75\xe3\x6b\x0f\x9e\x62\x6f\xc1\x0b\x78\x75\x1a\xf0\xa6\xa1\x68\x62\xb9\xf3\x94\xbb\x7c\x29\x38\xfc\xc3\xd7\x9e\xac\xcc\x1f\xca\xec\xed\x36\x6a\xb3\x54\x59\x7e\xdd\x6a\xa7\x94\xa4\xcb\x6c\xd6\x6a\xcc\x8e\x49\x04\x07\x1f\xb2\xbb\xbd\xe3\x9e\x93\x69\xd3\xe5\x11\x3e\xc2\x63\x0e\x7f\x18\x5c\x6f\xef\x9a\x9f\xf3\x08\xf7\xf7\xb2\x40\x5c\x0d\x2f\xbe\x63\x46\xfa\xf5\xf0\x8b\xb1\xf8\xb4\x2d\x78\x7b\x07\x1f\x3f\xc2\xee\xe0\x77\x14\x87\x3b\x29\xf6\x27\xed\x06\x8b\x5f\x26\xb4\xf6\x51\x3a\xe8\x76\x27\x58\xc0\x0e\x9a\x86\x6c\x34\xbf\xe9\x34\xed\x21\x85\x8c\xf2\xf7\x1d\xb9\xbd\x58\x17\x43\xc6\xb2\x08\x0c\xdc\x7c\x74\xf9\x62\xbe\xeb\xfe\xf9\x10\xa8\x53\xd8\x29\xba\x41\xd1\x1f\xf5\xb3\x71\xc3\xaf\xb8\xdd\x16\x41\xd9\xc3\x8e\xe1\xe0\xbc\x77\x77\xa2\x2a\x3f\xd9\x84\x81\x3e\x64\x8e\x68\xb7\xcb\x79\x75\xc0\x04\xc1\x9c\xd7\xe7\x62\xac\x05\x6b\x5c\xd9\xde\x44\xdd\x68\x56\x1b\x87\xa7\xd9\xfa\x86\x92\x7e\x47\xe2\x2e\x22\xaa\x42\xf7\x1d\xc9\xa8\x1f\x41\x65\xf9\xe5\xee\xb8\xfc\xce\x94\x9e\xc8\x11\x2f\xe7\xcd\xd5\xe2\xff\x52\x0f\xea\xcb\xbb\x46\xfd\x3f\x00\x00\xff\xff\xe5\xd4\xf7\xf7\xec\x0e\x00\x00" + +func runtimeHelpTutorialMdBytes() ([]byte, error) { + return bindataRead( + _runtimeHelpTutorialMd, + "runtime/help/tutorial.md", + ) +} + +func runtimeHelpTutorialMd() (*asset, error) { + bytes, err := runtimeHelpTutorialMdBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/help/tutorial.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimePluginsAutocloseAutocloseLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\xff\x77\xda\x3a\xf2\xe8\xef\xfc\x15\x73\xd3\xed\x01\x6e\x6c\x8a\x81\xdb\x92\xdc\xd2\x77\x28\x21\x2d\xe7\xa5\x21\x0f\xc8\xed\x76\xb3\xb9\x5d\x63\x8b\xe0\xd6\xd8\xac\x2d\xd2\xf4\xf5\x74\xff\xf6\x77\x34\x92\x6c\xc9\x5f\x80\xf4\xdb\xe9\xdb\xcf\xcd\x0f\xc4\x96\xa5\xd1\x7c\xd3\x68\x34\x1a\xcb\xa6\x09\x7f\x1b\xb9\xc7\xb0\xa1\x8b\x6e\xc3\xdf\xd8\x60\x3d\x39\x82\x56\xb3\x79\x64\x36\x3b\x66\xb3\x0d\x56\xf7\xd8\x6a\x1e\x37\xdb\xff\x80\xb5\x1d\x53\x1b\xfe\x56\x31\xcd\x8a\x69\xc2\x45\x14\xde\x7a\x2e\x89\xe1\x72\x76\x6a\x76\xc1\xfe\x60\x47\x04\x62\x1a\x79\xc1\x0d\x2c\x36\x81\x43\xbd\x30\x88\xc1\x5b\xad\x7d\xb2\x22\x01\x25\x2e\x78\x01\xac\x37\x11\x01\x7f\x63\x1f\x33\x08\xbf\x62\x9f\x3e\x09\x6a\x71\x3d\xbd\x8f\x37\xf3\x5a\x6c\x80\x67\xc0\x3b\xa5\x34\x22\xb7\x24\x8a\x89\x56\xd3\x59\xda\x51\x6d\x13\x78\x4e\xe8\x12\xa5\x58\x94\x14\x00\xb9\x21\x81\x80\x1e\x6f\xe6\x6f\x7d\x12\x28\xcf\x16\x5e\xe0\xd6\x62\x1a\x19\x10\x91\x1b\x72\x67\x80\x17\x78\xd4\x80\xb5\x6f\x7b\x6a\xb5\x95\x4d\x9d\x65\xae\x9e\xda\x47\xbe\x86\xed\xfb\x6a\x05\x44\x41\x79\x1c\x91\xb5\x6f\x80\xef\xad\x38\x1c\x56\x73\xb4\xc0\xaa\xae\x4d\x6d\x14\x49\xcd\x09\x03\x6a\x7b\x01\xe3\x2d\x5d\x12\xf0\xc3\x0f\x24\x7a\x6a\x3e\xdb\xac\xd7\x24\x02\xc7\x8e\x09\xac\xec\xf5\xda\x0b\x6e\xe2\x3a\x78\x31\xf8\xa1\xed\x12\xd7\x60\x75\x63\xc2\x00\xda\xae\xeb\x31\x81\xd8\xbe\x22\x1b\x26\x30\xfb\xd6\xf6\x7c\x7b\xee\x13\x45\x22\x08\x55\xe3\x34\xf6\xc7\x4b\x58\x61\xdf\x57\xc1\xcc\xc9\xd2\xbe\x25\x60\xc7\xac\x3b\x2f\x82\x20\x0c\x34\x9d\x70\xc2\x4d\x40\x49\xb4\xb6\x23\x1a\xc3\x07\x8f\x2e\x91\x04\x72\xe7\x90\x35\x03\xc0\x00\xd2\xa5\x4d\x45\x1b\x26\x54\xdb\xa1\x24\xe2\xf8\x6d\x62\x54\x9c\x98\x12\xdb\x85\x70\x01\xf3\x8f\x94\xc4\xb0\x08\x23\xc6\x55\xd8\x04\x1e\x8d\x1b\x95\x8a\x69\x5e\x5d\x55\x06\xe1\xfa\x63\xe4\xdd\x2c\x29\xd4\x9c\x3a\xd3\xe0\xc7\x66\xab\xd9\x7c\x62\xc0\xff\xfe\xe8\x13\x98\xae\x3c\xba\xac\x30\xcc\xb1\x4e\x0c\x11\x89\x49\x74\x4b\xdc\x46\xa5\x32\x08\x03\x1a\x79\xf3\x0d\x0d\xa3\xf8\xb8\x02\x00\xd0\xf7\xbd\x55\x78\x0b\x53\x4a\xd6\x76\x50\xa9\x4c\x88\xeb\xc5\xbc\x8a\x17\x06\x60\x07\x2e\x43\x8c\x29\x74\x1c\x6e\x22\x87\x60\xc9\xdc\x0b\xec\xe8\x23\xc3\x6d\x15\x1b\x9c\xd0\x30\xc2\xff\xe1\x86\x56\x56\xa1\xeb\x2d\x3c\xc7\x66\x00\x0c\x24\x6d\x4d\xa2\x95\x47\xd9\xc0\x58\xf3\xa1\xe4\x72\x3e\x30\xee\x2c\x42\xdf\x0f\x3f\x30\x71\x3b\x61\xc0\x45\xc7\xf9\xb1\x22\xf4\xb8\x82\x28\xfe\x0a\x3a\x56\x31\x63\x8f\x40\x87\xe9\x3f\xac\x36\x31\x85\x88\x30\xbd\x41\x98\xf6\x3c\xbc\x65\x8f\x24\x97\x82\x90\x7a\x0e\x31\x10\x18\x00\x5d\x32\xbd\xf1\x62\xca\xc0\xa8\x9d\x06\x6e\x06\x23\xd7\x8b\x1d\xdf\xf6\x56\x24\x6a\x94\x20\xe2\x05\x2a\x33\x24\x22\xeb\x28\x74\x37\x0e\x29\xc2\x45\xe0\x20\x30\xfa\x22\x5c\x80\x53\x29\x20\xb9\xa1\xb3\x61\x56\xc7\x96\xf2\x7a\x14\x46\x10\xd2\x25\x89\x60\x65\x53\x12\x79\xb6\x1f\xa7\x6c\x4f\x94\x52\x25\x43\x12\x77\x4e\x3c\x6c\xc7\x9e\x07\xf6\x8a\x30\x9c\x90\x84\x0d\x5d\x86\x4c\xdb\xd3\x47\x28\x02\x8f\xc6\x0c\xe7\x44\xa1\x60\x65\x7f\x84\xb9\x44\x0c\xf5\x99\x86\x40\x02\x37\x8c\x62\xc2\x34\x64\x1d\x85\xab\x90\x12\xe0\xfc\xa1\x31\xb8\x24\xf2\x6e\x89\x0b\x8b\x28\x5c\x71\x5e\xc4\xe1\x82\xe2\x58\x92\xda\xc4\x81\xc5\x6b\xe2\x30\xa5\x82\x75\xe4\x31\x55\x8b\x98\x3a\x05\x5c\xb1\xe2\x18\x69\xa8\xcc\x5e\x8e\xa6\x30\x1d\x9f\xce\x5e\xf7\x27\x43\x18\x4d\xe1\x62\x32\xfe\x63\x74\x32\x3c\x81\xe7\x6f\x60\xf6\x72\x08\x83\xf1\xc5\x9b\xc9\xe8\xc5\xcb\x19\xbc\x1c\x9f\x9d\x0c\x27\x53\xe8\x9f\x9f\xc0\x60\x7c\x3e\x9b\x8c\x9e\x5f\xce\xc6\x93\x29\x1c\xf4\xa7\x30\x9a\x1e\x54\xd8\x83\xfe\xf9\x1b\x18\xfe\xfd\x62\x32\x9c\x4e\x61\x3c\x81\xd1\xab\x8b\xb3\xd1\xf0\x04\x5e\xf7\x27\x93\xfe\xf9\x6c\x34\x9c\x1a\x30\x3a\x1f\x9c\x5d\x9e\x8c\xce\x5f\x18\xf0\xfc\x72\x06\xe7\xe3\x19\x9c\x8d\x5e\x8d\x66\xc3\x13\x98\x8d\x0d\xd6\x69\x25\xdf\x0c\xc6\xa7\xf0\x6a\x38\x19\xbc\xec\x9f\xcf\xfa\xcf\x47\x67\xa3\xd9\x1b\x44\xe4\x74\x34\x3b\x67\x7d\x9d\x8e\x27\xd0\x87\x8b\xfe\x64\x36\x1a\x5c\x9e\xf5\x27\x70\x71\x39\xb9\x18\x4f\x87\xd0\x9f\x0c\x2b\x27\xa3\xe9\xe0\xac\x3f\x7a\x35\x3c\x69\xc0\xe8\x1c\xce\xc7\x30\xfc\x63\x78\x3e\x83\xe9\xcb\xfe\xd9\x59\x86\xca\xf1\xeb\xf3\xe1\x84\xa1\xae\x91\xf8\x7c\x08\x67\xa3\xfe\xf3\xb3\x61\x05\x3b\x3a\x7f\x03\x27\xa3\xc9\x70\x30\x63\xd4\xa4\x57\x83\xd1\xc9\xf0\x7c\xd6\x3f\x33\x60\x7a\x31\x1c\x8c\xd8\xc5\xf0\xef\xc3\x57\x17\x67\xfd\xc9\x1b\x43\xc0\x9c\x0e\xff\xcf\xe5\xf0\x7c\x36\xea\x9f\x55\x4e\xfa\xaf\xfa\x2f\x86\x53\xa8\xed\xe0\xc8\xc5\x64\x3c\xb8\x9c\x0c\x5f\x31\x94\xc7\xa7\x30\xbd\x7c\x3e\x9d\x8d\x66\x97\xb3\x21\xbc\x18\x8f\x4f\x18\x9f\x2b\xd3\xe1\xe4\x8f\xd1\x60\x38\xfd\x1d\xce\xc6\x53\x64\xd6\xe5\x74\x68\xc0\x49\x7f\xd6\xc7\x8e\x2f\x26\xe3\xd3\xd1\x6c\xfa\x3b\xbb\x7e\x7e\x39\x1d\x21\xcf\x46\xe7\xb3\xe1\x64\x72\x79\x31\x1b\x8d\xcf\xeb\xf0\x72\xfc\x7a\xf8\xc7\x70\x52\x19\xf4\x2f\xa7\xc3\x13\x64\xee\xf8\x1c\x49\x9d\xbd\x1c\x8e\x27\x6f\x18\x50\xc6\x03\xe4\xbd\x01\xaf\x5f\x0e\x67\x2f\x87\x13\xc6\x4f\xe4\x54\x9f\xb1\x60\x3a\x9b\x8c\x06\x33\xa5\x5a\x65\x3c\x81\xd9\x78\x32\x53\x68\x84\xf3\xe1\x8b\xb3\xd1\x8b\xe1\xf9\x60\xc8\xb0\x19\x33\x28\xaf\x47\xd3\x61\x1d\xfa\x93\xd1\x94\x55\x18\xf1\x6e\x5f\xf7\xdf\xc0\xf8\x12\x49\x66\x22\xba\x9c\x0e\x2b\x78\xa9\x28\xac\x81\x82\x84\xd1\x29\xf4\x4f\xfe\x18\x31\xb4\x45\xe5\x8b\xf1\x74\x3a\x12\x6a\x82\x2c\x1b\xbc\x04\xce\xee\x46\xc5\x34\xaf\xaf\x2b\x38\x4f\x3d\x3f\x3f\xe5\xa3\x68\x72\x3a\x80\xf6\xe3\xd6\x91\x98\xc0\x2e\x67\xa7\x5d\x33\x74\x28\xa1\x31\xf4\xe0\xd7\x1a\x2f\x60\x53\x0f\xd4\x93\xe7\x78\x0b\xd0\xe3\x77\x16\x3c\xe2\x17\x2d\x79\xd1\x96\x17\x9d\xa4\x89\xc5\xc7\x65\x0f\x1e\xde\x35\x9b\xe6\x93\xd3\xe4\x41\x2b\x7d\x30\x68\x99\x27\xa7\xbc\x94\xda\x9e\x9f\x54\x69\xa7\x55\x86\x4d\x78\x78\xd7\x6f\x9a\xcf\x95\x7a\xf0\x88\x3d\xb0\xcc\xe1\x00\x5a\x35\xa5\xb8\x0e\x8f\x18\x08\xfd\xef\xe1\xdd\xf0\x04\x1e\xde\x75\x9b\xe6\x51\x0e\xc4\xd0\x1c\x9e\x66\x40\x24\x38\x74\x52\x1c\x4e\x19\x0e\x47\x88\x43\xb6\x3f\xf6\xd4\x32\x4f\xdb\xd0\xde\x03\x91\xd3\x0e\x47\xa4\x5b\xda\x29\xde\xf2\x4e\xbb\xac\x3f\x26\xa3\x8a\x1f\x3a\xb6\x8f\xb3\x3d\x47\x88\x3b\x96\x0d\x56\x20\x9e\x09\xf1\xa4\xcf\x58\x81\x78\xe6\x6e\x56\x6b\xed\x19\x2b\x10\xcf\x98\xa3\xa7\x3d\x63\x05\xf2\x59\x18\xad\x6c\xaa\x3e\xc3\x02\xf1\xd4\x27\x01\x68\x2d\x7d\x12\xc8\x47\xcc\x41\xd2\x1e\xb1\x02\xf1\x30\x22\x6b\xbd\x5d\x44\x24\x32\xf1\x66\xae\x3f\x8a\x37\x73\xf1\x88\xfb\x76\xca\x23\x2c\x40\xbd\x8e\x08\xdd\x44\x41\xcc\xe7\x9d\xcd\x6a\x4e\xa2\xd4\x35\xc2\x09\x66\xfe\x11\x9f\x65\x3c\x2a\xb0\x29\xe7\xa8\x87\x9e\x0b\xfa\x85\x7e\x1c\x82\x1b\x6e\xe6\x3e\x89\x99\x07\x67\xe7\xda\xdc\xda\xbe\xe7\xda\x34\x94\xc4\x48\xbf\x2f\xf1\xc0\x79\xb7\xe8\x6d\xd7\x71\x5e\x62\x60\xa3\x1b\x9c\x7e\xc1\x25\x0b\x7b\xe3\xd3\x18\x1f\x78\xd0\x03\x8f\xcd\x78\x56\x25\x57\xd1\x59\x12\xe7\xbd\x17\xdc\xf0\x8a\x0b\xa0\x1f\xd7\xcc\xd9\x87\xff\xf4\xe0\x80\xd3\x7f\xc0\x48\x0a\x2a\x52\xb3\x48\x14\x85\x51\xed\x60\x6e\xbb\x29\x90\x07\x16\x9b\x5a\xab\x1a\x66\x55\xa8\x89\x45\x09\xb9\x5b\x13\x87\x32\xb7\xf8\x26\xa4\x70\xd0\x68\xc8\x4e\x1a\x0d\x38\xa8\x1f\x70\xe4\x49\xe0\x6a\x28\x78\x1c\x05\xce\xe5\x7d\x50\x68\x15\xa2\x20\xa4\x54\x82\x82\x97\x43\x01\x2f\x84\x9e\x43\x0f\xa5\x26\x38\x2c\x39\xe7\x12\xca\xa6\xf9\x80\x08\xb9\x07\x84\x30\x57\x86\x79\xc6\x89\xf0\x0c\x98\xdb\x4c\x1d\xc2\x20\x35\x80\xa2\xb9\x10\x2b\x6f\x0d\x96\xa4\xd9\x81\x67\xd0\x44\x3f\xcb\x81\xa7\x3d\xb0\x5a\x4f\x74\x92\x13\x43\x97\x94\x70\x5d\x94\x22\x25\x7e\x4c\x38\x98\x1e\x58\x47\x9d\x14\x52\xab\xd5\x2e\x86\xd4\x4a\x4a\x04\xb9\x2d\x95\x5e\x38\x04\x4b\xd0\x2c\x30\x0c\x42\xca\xea\x68\xb0\x14\x61\x70\xf5\x15\x12\xe7\x1c\xb2\x99\x8b\x4d\xec\xc8\xff\x28\x18\xac\x31\xb9\x90\x1f\x2d\xb5\x47\xa7\x05\x4f\xc1\x6a\x75\x99\xe6\x3a\x2d\x78\x06\xd6\x91\x55\xda\xff\x28\x40\x48\xd9\x61\x54\xd6\xb3\xe0\x5e\x2b\xcf\xbd\x56\x4b\xe5\x5e\xfb\xa8\x98\x7b\xed\x3d\xb8\x97\xa9\xd1\xce\xd4\x68\x15\xf2\x17\x3d\x5b\xca\x6a\xff\x48\x4e\x43\x2f\x25\xbc\xc6\xf9\xfe\xb8\xa9\xf2\xbd\xfe\x35\x8c\x97\xdc\x65\x9d\xb4\x9f\xa8\x9d\xa8\xc2\xfd\xed\xe8\x5b\x74\xf2\x1d\x75\x26\xc7\xc3\xb6\xc6\xc3\xb6\xd2\x73\xfb\xbb\x68\x6b\xbb\x40\x5b\x3b\x8a\xd5\x68\x75\x3a\xc5\xda\xda\xf9\x26\xda\x9a\xa9\xd1\xc9\xd4\x68\xef\xd0\x67\x79\xd5\xf9\xf1\x9a\x2d\x98\x24\x94\xae\xd3\xf9\x2e\x9a\xdd\xe9\x94\x69\x76\xa7\xfd\x97\x66\xef\xdb\x73\x47\xeb\xb9\xa3\xf4\xdc\xf9\x2e\x63\xaa\x93\x8e\xa9\xac\x7f\xb1\x1d\x20\x03\x86\x00\x4b\xfd\x42\x25\xa2\xe6\x05\x89\x87\xc7\xd5\xbb\xc8\xa9\x63\x6e\x6e\x2d\xce\xfb\x72\xf7\x76\xd1\x98\x2f\xf2\xde\xb8\xc5\xb8\xaf\xed\x45\x31\xab\xec\x86\xb0\x8e\xbc\x80\xd6\xaa\x07\x55\x83\x86\xbc\x5d\xed\x7d\xdd\xd0\xee\x6f\xf1\xbe\x9e\x78\x63\xb0\xdb\xe1\xf3\x49\xf0\x05\xae\x9e\xe2\x67\xad\x43\xb6\x16\xb4\x94\x12\xee\x58\xf5\x40\x44\xa8\xd3\x07\x3e\x09\x6e\xe8\x12\x7a\xd0\xe4\x00\x3e\x2c\x3d\x9f\x20\x80\xa7\x3d\xd1\xca\x0d\x53\x3b\x25\x6b\x8b\x8b\x43\x48\xbd\x27\xde\x29\xfb\x3d\xd4\x1d\x6a\x66\xcd\xd6\x61\x9c\xc1\x54\x28\x0b\x07\x94\x88\x5d\x89\xb6\xbb\x24\xa0\x9e\x63\xfb\xfe\x47\xc6\x98\x74\x4d\x21\xc2\xad\x3c\xc0\xe8\xa1\x81\x78\x87\xf1\xc4\x6c\xd0\x95\xc1\xcb\x86\x5b\x8b\x94\x84\xc1\x4c\x23\xec\x59\x55\xd1\xdc\xfe\x77\xd0\x83\x77\x6c\xe8\x98\xd6\x37\xe2\xb7\x69\x42\x18\xf8\x1f\x21\x26\x14\x7c\xa6\x8a\xb8\xaa\x78\x07\x1e\x73\x83\x6f\x6c\xea\xdd\x12\xb5\x35\xf4\xa0\xe6\xb1\x59\xaa\x29\x08\x67\x97\x75\xd6\x44\xd9\x7f\x48\xeb\xc7\xd4\x8e\xe8\x80\xad\x2e\x93\x76\x75\x6c\x88\xbd\xf8\x70\xc8\xa7\x2a\xa5\x05\x09\xdc\x81\x0c\x16\xd4\xde\x29\x2d\xde\xc9\x16\xef\xb0\x85\x44\xde\xb1\x83\x2a\x05\x8c\x9a\x63\x67\x30\x27\x8b\x30\x22\x0c\xce\x2f\x72\x74\xa5\x58\x3c\x4b\xe0\x6b\xa3\x4b\xe8\xc2\xc1\x81\xae\x22\xa6\xc9\x0d\x58\xb8\x58\xc4\x84\xc6\x4c\x0d\xd6\x76\x1c\xeb\xea\x90\xa5\xf6\xf9\x47\x4a\x0c\x12\xb8\xec\x3f\x13\x8a\xc1\xe5\xfe\x85\xca\xad\x9a\x4e\xf9\xbc\xa7\x10\x94\xb3\x9c\x09\x0e\x7c\x2c\x14\x1b\xca\xdd\x43\xa5\xb8\xdf\x42\xe6\x09\xe8\x69\x9f\x60\x2a\xa3\x92\xfd\xcd\x23\x62\xbf\xd7\x30\xd1\x30\xca\x48\x48\x74\xc7\xfa\xd0\xa8\x41\x04\x0f\x2d\x7d\x61\x99\xaa\xcb\x53\x10\x11\x23\x6c\x28\x11\x62\x6a\xd4\x84\x1c\x13\x84\xc0\xe5\x0e\x56\x22\x37\xd9\xae\x2e\x0d\xc2\xd5\x15\x9f\x0c\xd6\xbe\xed\xe4\x47\x78\xba\x26\xb4\xe5\xa6\x11\x50\x7b\xee\x93\xa2\x61\x2e\x81\xb0\x1e\x45\xe5\x6f\x30\x31\xec\x30\xe5\xa2\xd3\xaf\x5c\xb9\x4b\x74\x11\x0d\x24\xf0\x7e\xcb\xf7\x14\x0b\x6c\x5c\x86\x84\xec\xe6\xdb\xcc\x2c\x89\x52\x2b\x65\x01\xf9\x10\x53\x66\x8c\x0e\x0e\xf6\x19\x91\x69\x4c\xa6\xb7\x65\x4a\x01\x2d\xbe\x20\x74\x6a\x1d\xf2\x1f\x38\x54\xa0\x98\xda\x0a\x3c\x41\x46\x5c\x34\x1a\x20\x59\x70\xe5\x5c\xa3\x83\x54\x2f\x1e\xb3\x3a\x69\x59\xad\xe6\xe0\xb8\x06\xe3\x1c\x24\x67\x32\xc5\x70\xf1\x88\x98\x98\xc9\x3c\x0a\xef\x83\xf0\x43\x0c\xf6\x3c\xdc\x50\x10\x9b\xbe\x10\xe3\x86\x33\xdf\x12\x75\xc2\xe0\x96\x44\x31\x9b\x19\x8b\x74\x9b\x83\x93\xfc\x17\x78\x28\x92\x67\x1c\x61\xb7\x6f\x7d\xe7\xed\xc6\x49\x46\x57\x21\x6a\x3c\xfe\xf7\xcd\x50\xe3\xe0\xf6\x40\x6d\xe3\xbc\xf5\x05\x6a\x22\xe6\x5d\x84\x9d\xd8\x3c\xd7\x9d\x00\x0a\xf1\x66\xbd\x0e\x23\x2a\x76\xf0\x8b\x87\x3f\x6f\xf8\x4d\xdc\xc1\x9d\xa3\x1e\xfb\xfa\x3a\x27\xae\x74\x60\x71\x4d\xcc\x0e\xad\x7b\x0e\xb7\x67\xd0\xd4\xe6\xbe\x5c\x7c\x4e\x1b\x5e\xbc\x1d\x0f\x85\xb5\xba\x4a\x50\xed\xc8\x52\xa1\xe8\xe3\x24\x3b\x0d\x95\x42\xd7\xe6\xc6\xdd\x63\x7e\xdb\x00\xde\x7f\xf4\xe7\xf1\xdc\x36\x8e\x4d\x13\x96\x94\xae\x8f\x1f\x3d\x22\x41\xe3\x83\xf7\xde\x5b\x13\xd7\xb3\x1b\x61\x74\xf3\x88\xdd\x3d\xba\xa4\x8b\xae\x52\xc9\x25\xb7\xc4\x0f\xd7\x24\x6a\x38\x61\x14\x06\xb6\x6f\xcf\xe3\x86\x13\xae\x1e\xb1\xd1\xf3\x68\x43\x17\x66\xd7\x4c\xc7\x8d\xb9\xa1\x9e\xef\xd1\x8f\x65\x61\xe9\x34\x31\x44\xe8\xa7\x1c\x86\x4f\x7b\xd0\xbc\x7b\x72\xca\xa7\x5c\x81\xb5\xd6\x40\x9b\xe4\x6b\x99\x66\xa7\x99\x25\x34\xef\x9d\x4d\xbf\x4d\x36\x6b\xdf\x0d\x9a\x70\x08\x2b\x9b\x2e\x1b\x0b\x3f\x0c\x13\xa0\xf0\x08\x9a\x77\x9d\x66\xfd\xf7\x82\x86\x16\x36\xec\xb2\x86\x49\xf5\x87\xd9\xea\x2a\xa2\xd8\x9b\xc1\xdb\x8a\x2a\x24\x70\x7f\x2f\xc1\xf9\xf4\x74\x27\xd2\x43\xd6\x77\x19\xd6\x56\xb3\xb9\x1b\xef\x72\x8a\xf3\xa4\xa4\x10\x5a\x5f\x43\x39\xff\xd7\xda\xcd\x00\xab\x59\xca\x02\xac\xd4\x93\xaa\x51\x80\x61\x3b\x45\xb0\x18\x3b\x2c\xe5\x7f\x3d\x95\x83\x2a\x0b\x8a\x28\xff\x4e\x70\xad\xef\x04\xb7\x89\x9a\xc4\xe0\xb2\x8a\xbf\xe7\xc2\x17\x65\xd2\xe1\xff\xda\x39\x21\xe1\x5c\x00\xd5\x4b\x21\x27\xc7\x0e\x82\x90\x2d\x83\xe0\x26\x22\x36\xc5\x6c\x0b\x3b\x80\xcb\x43\x2e\xbb\x5f\xaa\xdc\xa0\x88\x15\xcb\xd2\x5b\xd0\xb7\x8f\x19\x01\xad\x3f\x1f\x6b\x85\x56\x0b\x0b\xad\x96\x5e\xda\xe5\xa5\x5d\x09\x41\xc9\x12\xab\x28\xd7\xd0\x4b\xcc\x08\x4f\xd0\x62\x8b\x5b\x03\xcd\xef\xdb\xc4\xf6\x2a\x9b\x58\xa0\x2e\x6e\xbd\x44\xfb\x3c\x78\x06\xef\x34\xf3\x92\xdd\xd1\x59\xaa\xeb\x2b\x6f\x91\xf4\xa0\xab\x68\x89\x41\xa7\x91\xa1\x63\xc4\x27\x00\x90\x6e\x9c\xf2\x3c\xb9\x30\xad\x43\x6c\x5d\xcf\x07\x99\x04\x32\x6f\xb9\x69\x4f\x12\xf0\x68\x64\x78\x86\x57\x37\xa0\x99\xc1\x47\xea\xce\x03\x67\x59\x34\x01\x4b\xb6\xaa\xa4\xc5\x6c\x19\xc6\x03\x66\x90\xb2\x1a\x67\x35\x67\x59\x57\x1d\xf7\xa4\x76\xab\x68\xb4\xce\x51\xbf\xe6\xc2\xf4\x88\xf6\x86\x65\xe4\x63\xc2\xa1\x4b\x9a\x06\xfb\x95\x15\x9b\x26\x33\xcd\xbc\xad\xc9\x46\x48\xd2\x22\x45\x08\x5b\xfd\x2a\xb5\x8b\x6b\xba\x95\x5d\x5a\x24\x18\xb6\x77\x60\x88\xbf\x2d\x0d\xcf\xf6\x16\x3c\xf1\xb7\xa5\x60\x3b\x54\xb1\xe5\xc0\xf6\x41\xdc\x6a\x49\xcc\x33\x94\xb4\x4a\x29\xe9\xec\x45\x09\xfe\xb6\x35\x7a\x3a\x3b\xe9\xc1\xdf\xb6\x42\xd5\x69\x09\x55\x1c\xfa\x5e\x04\x76\x33\x04\x26\x14\xb7\x32\x14\xb7\x0b\x1d\x14\x01\xd5\xd0\x32\x45\x71\xb0\x1f\x5a\xda\x70\x97\x23\x46\xba\x32\x13\x11\x5c\xb5\x03\xf0\x28\x89\x6c\x1a\x46\xcc\xc5\x73\x96\x7a\xd8\x95\xdc\x31\xc7\x7a\x2e\x7c\x58\x0c\x1b\xd1\x58\x6c\xbb\x07\x94\x44\xb7\xb6\x5f\xe4\xb2\xc8\xd4\x54\x86\x49\x92\x9c\xca\xd0\x16\x37\x90\x0c\x3c\x59\x90\x98\xa0\x54\x60\x6f\xf3\x2b\x4d\x11\x98\xc0\x11\xcb\x1c\x33\x85\x13\xa9\xad\x7b\xef\xad\xeb\x6a\xf0\x84\x15\xf0\xe1\xaa\x40\x4d\x2e\x0f\xf9\x73\x35\x36\x9b\x7a\xd3\x6f\x31\xdb\x13\x43\x75\xfa\x43\x1e\xe8\x12\x34\x48\x58\xca\x34\xb2\x26\x36\xd5\x3c\x5f\xd5\x2e\xea\x01\x16\xc5\xaa\xaa\x0d\x94\xee\x99\xce\xa4\x77\x87\x19\x9f\x5a\x5f\x2a\xec\x63\x5e\xa5\xf9\x43\x64\x34\x0a\x0e\x15\x4b\xce\x95\x96\x7a\x3a\x27\x12\x89\x55\x32\x1c\xf1\xed\x98\xaa\xa0\x94\x4d\x75\xc1\x32\xdf\x73\x88\x62\xd6\x91\x85\x06\x6b\x56\xcf\xce\xbf\x58\x55\x04\x85\x0c\x84\x9c\x28\xbf\x32\x73\x26\x1a\x37\xf7\x82\x98\xd8\x91\xb3\xac\xc5\x61\x44\x89\x3b\xb3\xe7\x3e\x31\x98\x5e\xaf\x0c\x70\xc2\xd5\x5a\x5d\x3a\x2d\x89\xed\x1a\x80\x59\x3a\x3d\xb0\x0c\x78\xa0\xb4\x51\xaa\xad\x3c\x57\x77\x29\x6a\xac\x21\x1c\x62\xcb\xfa\xa3\x56\xe2\x88\xe3\xee\x5b\xb8\x5a\xeb\x66\x87\xaf\x96\x6a\xd8\x8d\x89\x7d\xd6\xe1\x19\xe4\x56\x4a\x4c\x3b\xd3\xee\xaf\x68\xc8\xf7\x39\x6a\x2b\xcf\xad\x5f\xc3\x33\x24\x21\x1f\xea\x63\x7f\x82\x80\x95\xa7\x6b\x8d\x36\x19\xca\x3f\xc4\xbc\xa0\x6e\x46\xe3\xf6\x23\x19\x32\xf1\xc3\x6d\x64\x20\xdd\xd7\x4c\x69\xf2\x84\x08\x51\xd3\x68\x43\x0c\xd0\x5b\x24\xd3\x7a\x19\x5c\x44\xe8\x5e\x70\xb1\x45\xde\x5d\x90\xb6\xc3\x96\x85\x52\xc5\x32\x1a\xe6\xf8\x76\x1c\xbf\xb2\xa9\xb3\x7c\x41\x02\x6e\x2d\x6b\x58\x96\xa4\xd4\x83\x36\x6d\xb0\x91\xf8\xe9\xb3\x52\x18\xd9\xc1\x4d\xbe\xd4\xbb\x09\xc2\x08\x1d\xb5\x04\x01\xa5\x7a\x41\xf9\xc2\x8b\x62\xea\x13\xca\x7c\xca\x1e\xd2\xa8\x39\x2b\x98\xac\x9f\x34\x53\x3b\xa2\xc2\x34\x08\xc3\x8c\xb8\xd7\xd5\x1a\xcc\x08\xe2\x2d\xa6\xdc\x18\xf0\xd6\x60\xfe\xab\xc7\x66\x07\x55\x69\xd1\x56\xf6\xd2\x04\xe0\x64\x08\x08\x52\xd8\x0c\xc1\x6e\x91\x2b\x79\xcd\x95\xdb\xba\x07\x0f\x0f\x8a\xd5\x3a\xe1\x48\x42\x9b\xaa\xd9\x49\x73\xb3\xa4\x39\xc6\x36\x1b\xcc\x1c\x44\x14\x17\x01\x22\xb2\x24\xa7\x46\xa7\x5e\xcf\xb5\x91\xbc\xde\xde\xe3\x9f\x65\x08\x73\xf2\x55\xc1\x14\xd6\x83\x24\x64\x54\xfd\xe5\x97\x5f\xaa\x79\x34\x0a\x47\x2e\xa0\x0d\x96\x62\xcd\x61\x08\x05\xa3\x58\xc5\xba\x7a\x5d\x2d\xc6\x46\xdf\x0e\x28\xed\x5e\x10\xc7\x39\x54\x4a\xd6\x97\x30\xbd\x94\x5a\x0e\x2c\x22\xab\xf0\x96\x70\x60\x75\xc0\xf0\xff\x2a\xbc\x65\x2e\x48\xd5\xac\xee\x46\x82\x8f\x36\x03\x3e\x15\x40\xcb\xe2\xf6\x39\x8f\x1c\x28\x5a\x91\x8e\x40\x0d\xfd\x2c\xd3\xd5\x9d\x5d\x2e\x80\xfb\x0d\x88\xaa\xcd\x25\xc5\x68\x7d\x68\x1f\xe3\xfb\x05\x24\x26\x01\x8d\xf1\xcd\x10\xae\x59\x71\x03\x6a\xe3\xf3\xb3\x37\xd0\x9f\x0e\x46\xa3\x3c\xde\xc5\x3c\x78\xfc\x9b\x01\x47\xcd\xcf\xc8\xc6\x3e\x98\xf0\x8f\x3d\xdb\x1d\x3d\x31\xc0\x6a\xb5\x78\x43\x1b\x4c\xf8\xbf\xe5\x7a\xe6\x28\xd8\x3b\x39\xec\xf1\xfd\x81\xd0\x57\x76\x6d\x1a\x7b\xe2\xd0\x34\xa0\x6d\x15\x48\xa8\x48\xe5\xac\xd6\x93\x7a\x39\x86\xae\x82\xa1\x9b\xc3\xd0\xf5\x6e\xf0\xd5\x9b\xfd\xb0\xea\x74\x0d\xf8\xed\x09\x67\x4c\x13\x4c\x38\x2a\xef\xf6\x46\xe9\xf6\x26\xd7\x2d\xe6\x0e\xe0\x76\x8c\xb2\xa1\x25\xc2\xda\xf1\xda\x76\xc8\xbe\x18\x59\x06\x74\x77\xb1\x29\xad\xdc\xd9\x87\xab\x49\xf5\x76\xdb\x00\xab\xdd\xda\x1f\x7c\xbb\x63\x80\xf5\xdb\xd1\xfe\x0d\x1e\x5b\x8c\x9f\xf7\x68\xf1\xdb\x13\xd6\xa4\x6b\x1d\xed\x4f\x45\xb7\xd5\x6c\x1b\xd0\x6d\xdd\x83\xf0\x6e\x8b\x51\xd2\x6d\xb5\xf7\x67\x6d\xb7\xd5\x69\xb2\x26\xdd\xc7\xf7\x68\xd2\xed\xe2\x40\xeb\x3e\xf9\xbc\x45\x7f\x7d\x45\x91\xfc\xbc\x7d\x08\x3f\x90\x08\xb7\x62\xbe\xc6\x52\xdc\x67\xc4\xaf\x15\x7c\xd6\x79\xc5\x66\x8e\xd3\x86\xbf\xae\xa4\x8c\xfa\x2f\x41\x8a\xa9\x5f\x27\xcb\x9a\x2d\xaa\xd1\x35\xe0\x71\x67\xef\xea\x47\x96\x01\x47\xfb\x0b\xcb\x6a\xb1\xc1\xd0\xca\x36\xd0\x38\x13\x2b\x9c\x89\x73\x9c\xc1\x61\xfd\x05\x96\xf0\x88\x0d\xc2\x3d\x2d\x61\xbb\xb5\xa7\xc5\x6c\xb7\xf7\xac\xf8\xb8\xb9\x5f\xc5\xdf\x9e\xec\xac\x99\x2a\xbe\x75\xd4\x62\x63\xa5\xb9\xd3\xb4\x08\xe0\xdd\xd6\xbe\x84\x75\x5b\xfb\x52\xd6\x6d\xb5\x8f\xf6\xad\xd9\x7d\xb2\xef\x44\xd4\xea\x76\xb7\x28\xc8\x46\x51\x90\x4d\x4e\x41\x70\x1f\xf7\xab\x87\xf2\xf6\x49\x5f\x43\xe7\x83\x82\xce\x87\x1c\x3a\xb6\xbf\x5e\xda\xc1\x66\x45\x22\xcf\xf9\xda\xa1\xbc\x7d\xde\xfc\x52\x62\xca\xdb\xdd\xc7\x9e\xdd\x29\x5c\xb8\xcb\x71\x61\x49\xee\x6c\x97\x38\xde\xca\xfe\xb6\xbe\xc2\x76\x9a\x9f\x28\x34\x9f\xde\x87\xe6\xa6\x42\xf3\xe2\x2f\x37\xff\xbb\xb8\xf9\xa0\xae\x56\xf5\xe6\x39\xaa\x77\x33\xf8\xbe\xcc\x2d\x64\xec\x97\x30\xf5\x5b\x32\xb4\x9c\x99\xfb\x32\x4e\xcd\x02\xd0\x63\x1d\x7a\x88\xa6\x92\xa2\x1e\x87\x92\x63\x5a\x3c\x23\x09\xdd\x78\xc1\x04\xa9\xaa\x31\xe3\x35\x48\xb6\xd0\x41\x84\x3a\xde\x1a\xf8\xae\xb5\xc7\x53\x7a\x39\x03\xea\x05\x61\xba\xe8\xca\xba\x86\xa7\x3c\x10\xcb\xa0\xf0\x04\x08\x79\xf3\xb4\x07\xd1\x55\xeb\xba\x58\xb6\x4a\x44\xaa\x7c\xd1\xa8\x5c\x17\x06\xa5\x20\x55\x23\x19\x10\x28\x0a\x7b\x25\x51\xf0\x3c\xb5\x4a\xad\x34\x60\x2a\x54\x2d\xa9\x8d\x7b\x7f\xe5\x1c\x23\x81\x6b\xa4\xa1\xa2\xc2\x50\xda\x5e\x08\x24\x8c\xfb\x4f\x0f\x4c\x2b\x59\x24\xd7\xee\x8b\x58\x29\x66\x69\x1a\x39\x4f\x1f\x94\x49\xbe\xf8\x6e\x3c\xb9\xa3\x91\x9d\x64\xed\x18\xd8\x3d\x2f\x8b\x48\xbc\xf1\x29\xdc\xda\xfe\xa6\x30\x81\x30\xde\xcc\x5f\x7b\x74\xf9\x3c\x7d\x49\x10\x37\x59\xe2\xf9\xd7\x24\x0d\xc7\xf3\xa2\xdd\x8f\xbf\x52\x87\xe1\xaf\xd4\x61\xd5\x3c\x24\x37\x7f\xa5\x0e\xef\x4a\x1d\x4e\xae\x50\x0a\x32\x9d\x50\x84\xe7\x6d\x67\x89\xdb\x50\x84\xae\x08\xb5\x71\x12\xa9\x7d\xfa\x6c\x7c\x42\xd0\x6f\xdf\xae\xf8\x26\x6d\xf5\xfd\x6d\xb5\xf2\xb9\xae\x36\xba\xc0\x10\xde\x3d\x5b\x26\xe6\x03\x6d\x36\x89\xd2\xfd\x03\x71\x5e\x4e\x6e\xff\x40\x54\x84\x1e\x7c\x4a\x67\xaa\xe4\x9d\x88\x1e\x7c\xfa\x6c\x24\xe5\x8e\xbd\xa6\x9b\x48\xdd\x58\xf8\xac\xce\x14\x05\x41\x47\xa4\xe4\x0a\xfb\xbe\x86\x1e\xc8\xde\xf2\xf6\x3c\x25\x39\xad\xad\x55\x16\x62\xcc\x90\xc9\xd3\x42\x6b\xec\x3e\xb7\xad\x97\xce\x0d\x83\x7a\x76\x7e\x65\xcf\x58\x79\xf1\x14\x2a\x3a\x3e\x0e\xc8\x1d\x3d\x65\x35\xf3\xce\x87\x5a\x65\x4a\xa3\xda\x1e\xfe\x92\x6c\xc2\x3c\x7d\x9a\x6d\x50\x30\x39\x97\x91\x4c\xed\xe8\x7b\x11\xbc\xd8\xf8\xfe\x84\xa1\x37\x0e\xce\xbf\x0b\xed\x25\x1c\xbd\x07\xf9\x2b\x2f\xd8\xc4\x3f\x88\xfe\x02\xe2\xb2\x9b\x98\xe5\x74\xed\xa0\xe3\xdf\x1b\x12\x23\xb2\x3f\xb3\x28\xbf\x8c\xda\x22\x72\x85\xe9\xa8\x79\x6e\x39\xad\x6f\xf5\xde\x53\x2f\x42\xf4\xdb\x90\xf6\xe7\xca\x73\xaf\x99\xff\x6b\x16\x3f\xb1\xae\x0b\xe0\x88\x1a\xae\x92\xa7\x25\x1b\xf3\xf9\xd9\x28\x03\x56\xf2\xa0\x75\x5d\x84\x2e\x26\x76\xef\xd1\x07\xe6\xaa\x28\x37\x70\x08\x7e\x4e\xd2\x29\xce\x3d\x01\xb8\x50\xe4\xb8\xb0\x60\x73\x97\x01\x7e\x76\x2d\xb1\x9f\xa0\x8b\x84\xbd\x43\xe0\xf0\x9d\xcd\x9c\xa0\x7d\xca\xa6\xdb\xfb\x68\x4d\x89\x10\x15\x2d\x92\x99\x3c\x7b\x10\xb9\x2f\x8e\xe1\xfa\xab\x51\x6c\x65\x50\xcc\x39\x46\x5f\x31\xf8\xe6\xb6\x6f\x07\x0e\x89\x6a\x31\x8d\xb2\x69\x67\xf1\x66\x55\x90\x70\x34\x77\x0c\x20\x4e\x26\xa7\x11\x2c\x03\x2c\xb1\x32\x4f\xca\x5a\x46\xfe\xb5\x72\xb1\x6d\xcf\x3c\xfc\xb9\x53\x67\xaa\x4d\x82\x1a\x51\xac\x9c\x06\x5e\x2e\xf2\xe7\x4e\x66\xd5\x4f\xee\x67\x17\x9d\x01\xba\x9d\x0e\xae\x00\x18\x59\xcf\xa0\x59\x3c\x60\x38\xcd\xec\x37\xcb\x64\x01\x0a\x2b\xf4\xca\x9a\xef\x90\x46\x56\x2a\x65\xcd\x8a\xa7\xce\x84\x90\xb9\xb3\x0b\xf9\x6c\x6a\xd6\x7e\x1d\x6c\xa5\x37\x8c\x44\xef\x66\xc1\x3b\xda\x3a\x06\xcd\xad\x7c\x29\x1a\xfd\xa5\x18\xec\x46\x1c\x76\xed\x82\xe7\xd6\xe3\x15\x05\x68\x23\x71\x68\xb9\x25\x28\x1a\x98\x7b\xb9\x00\xc9\xf8\x24\xff\x46\xc3\x54\x62\x55\xb6\x28\x87\xb7\x00\x75\x4e\x80\x67\x0a\x00\x3b\x62\xdd\xa1\xfa\x26\x88\x47\xe1\x0a\x7b\xc2\x65\xb3\xd6\x50\xeb\xda\x0b\x6e\xce\x48\xc1\x86\x7f\x5a\x25\x5c\x17\xa5\x74\x14\x10\x14\x78\xfe\x2e\xc3\xe2\xdb\x31\xd2\xa5\x14\x95\xe6\x16\x09\x5b\x20\xa1\x2a\x09\x42\xb5\x44\x0c\x59\xfb\x71\x43\x02\x3d\x81\x08\x97\x04\xe5\xc6\xa0\x30\xe8\x73\x43\xb2\xc9\x99\x0a\x35\xf5\x9a\x96\x43\xa5\xac\x68\x44\x42\xd2\x3c\xde\x9a\x91\xa4\x32\xc9\x5b\x94\xa5\x5b\x68\xd1\xce\x9c\x2e\x1a\x72\xf5\x52\x98\xee\x25\x97\x6a\x6a\xd0\xa9\x20\xd0\x2b\xf8\x5e\x96\x2c\x84\x07\xb3\x56\xad\x56\xbb\xf3\xdb\xe3\x27\xdd\xa3\xaa\xc1\x68\xb3\x0c\x54\x84\x12\x07\x52\xb4\x94\x32\x2e\xaf\x74\x0f\x0a\x25\xb0\x82\x98\x7d\x22\x79\xd9\x9f\xce\x5c\xf5\xaf\xc8\xa0\xee\x83\x84\xf4\x3d\x93\xf4\x3c\xa7\x5e\xb2\x79\x90\xec\xcf\xcc\x4b\x32\x99\xfe\xff\x63\x8e\x98\xcf\x0b\x9f\xcd\x8d\x24\xc3\x2e\xf1\x10\xe4\x68\x43\xf5\x3f\x64\xba\x82\xff\x8f\x4a\xb0\xdb\x45\xe3\xfc\x1e\x53\x80\x42\x65\xd1\x90\xa8\x3e\xac\x42\xa3\x01\xce\x7e\x33\x6d\x49\xcc\xbf\x14\x81\x44\xf4\xbf\xfe\x10\xd1\xb3\x45\xfc\x37\x12\x7c\x19\x3b\x21\xcd\x01\xf4\xc4\x29\x28\x28\x59\xb0\x17\x94\x44\x50\x95\x6f\x2f\x0a\x71\x33\x49\xc7\x25\xa8\x14\x31\x58\x1b\x2f\x87\x3f\xd7\x78\xf9\x9f\xc6\x7e\xf3\x47\xb0\x9f\x47\x5e\xfe\x8b\xb8\xf6\xbf\x7e\x04\xd7\x92\x38\xcf\x7f\x11\xe3\xfe\xdc\xce\xb8\xb9\xf2\xce\x5a\x29\xae\x39\x0f\xb7\x2c\xe3\xf8\xa7\xa1\xfa\x6f\x3b\xa8\x26\xac\x16\x5b\xe9\x72\x6f\x75\x3f\xf2\x69\x38\x0c\xdc\x9f\x9e\xf4\xab\x9f\xc7\xbc\x97\xfa\x39\xa2\x59\xe2\xd2\x14\xb9\x10\x39\xef\x66\x97\x1f\x58\xfb\x79\x08\x87\xef\xe0\x24\xcb\x08\x94\x01\x9f\x4a\x32\x56\xf4\x4c\x91\xd8\x80\x07\xd9\xb6\x5f\xe6\x17\x6a\xe1\x3d\x27\xbe\x7a\xe0\xc4\xd7\x25\x84\x63\x7c\xa2\xd8\x2b\xb5\xea\x28\xa5\xba\xc8\xa6\xca\x05\xd6\x72\xc8\x5e\x37\xc8\x6a\x4d\x3f\x8a\x01\xb7\x5b\xf1\xeb\xff\x35\xf2\x4f\xa2\xe0\x8c\x76\x2d\xdf\xa6\x44\x82\xf2\x65\x33\x7b\xbd\x9d\xba\x8c\x0d\x12\x9c\x3e\x86\x83\xda\x01\xe0\x49\xfa\xc1\x4d\xc1\xfb\x27\xdb\x50\xdd\x5b\x77\xc2\x75\xcd\xb1\xd7\xbb\xc6\x70\xe3\xe7\x91\xe1\x2e\xe3\xa5\xc6\xa6\x9c\x41\x3d\xc9\x5f\x19\x88\xcc\x95\x9d\xfa\xfa\x70\x1b\xad\xa5\x2f\x3b\xc1\xb6\x79\xe6\xe7\x63\x51\x61\xbc\xe4\xde\xf1\xc2\x0a\xe8\xd9\x01\x0f\x9c\x38\x1f\x31\x2e\x55\xee\x7a\x56\xb9\x15\x48\xc5\xec\xfa\x32\xf6\x64\xd2\xcf\xca\x9b\x17\x04\xc3\xbc\x45\xc6\xcd\x50\x23\x8b\x31\x8d\x98\x52\xed\x1f\x43\xcc\x85\x74\x73\x1a\xb3\x2d\xd8\xa8\xc6\xde\xf4\xd8\xac\x0c\x92\x6a\x07\x48\x10\x7f\x91\x76\xc4\xee\x90\x54\xcc\x86\x90\xd7\x87\xa0\x9f\x2f\xa0\xc2\x9b\xe2\x21\x3d\xdb\xc0\xf1\x63\x7c\x92\xcb\x32\x60\x31\x8d\x30\x18\x5c\x0e\x8d\xdb\xd5\xd0\x77\x65\x3d\x84\x89\xbc\xca\xd4\xd1\xbb\xd4\xd1\x89\x72\x9d\xe8\xfa\x1c\x4b\x84\x33\x7b\x57\x71\xd2\x52\x62\x50\xaa\xe2\xa9\xce\xe4\x36\x86\xbf\x05\x75\x79\xf9\xe4\xde\xc8\xfe\x2a\xfa\x17\x29\x9e\x3f\x88\x33\x5b\x95\xe8\x4b\xc5\xae\x6d\xda\x14\x73\xee\x27\xe1\x8c\xc6\x9a\x75\x14\x3a\x24\x8e\xb3\xfc\x30\x80\x9f\xb9\x80\x3b\x14\x95\xc2\x01\x9b\x52\x1b\x8b\x55\x1e\xff\x9f\xe4\x20\x42\x3a\x24\xc5\x06\x48\x0f\x6a\xbc\x4e\x9a\xd0\x97\xb4\x49\x32\x07\x69\x54\x87\x43\x51\x7e\x98\x03\x95\x6e\x67\x68\xa0\xb7\xd8\x80\x92\x0a\xc2\x28\xf6\xb2\x1d\xe7\x70\xc7\x13\x2b\x74\x66\x8b\x27\x68\x0c\x95\x77\xa4\xef\x2f\x5a\x4b\x13\x50\x72\x63\x9a\xca\x7e\xcc\x05\x4f\xee\xcc\x8e\x2e\xad\xce\xf3\x8f\x34\x7b\x4e\x93\x38\x88\x06\x92\x84\x43\xe6\xf3\xa5\x88\x17\x1c\x20\x20\x39\xf7\x34\xcb\xa3\x42\xe7\xc0\x34\xaf\xae\xe4\x9c\xc8\x50\x4c\x5b\x95\x3b\x13\xe2\x8c\x63\x3c\xe2\x61\xfe\x91\x92\xaa\x91\x60\x5f\xec\x33\x38\xcb\xb4\x46\xba\x67\x9d\xa4\xce\x26\x9b\xd7\x49\xd7\x66\x82\x8f\xc9\xca\xbf\x0d\xf4\x9d\x80\x14\x20\xc9\x65\xd1\x06\x74\xa9\x2b\xb6\x17\x26\x92\xc8\xf4\x6a\xbf\x80\x79\x5e\x89\xe0\xfa\x3a\x57\x0b\xdf\x0c\xd7\x12\x00\x92\xfe\xca\xbb\x33\x4d\x21\x52\x67\x69\x47\x55\x03\xe9\xd0\xd2\xfb\x97\x05\xce\x60\x62\x44\xf8\xc6\x6d\x72\x7b\x5d\xdb\xda\xb4\x90\x79\xe5\xb0\x4c\x6b\x7b\x86\x8a\xea\x4c\xe9\xa6\x25\xa7\xbe\x5a\x9e\x91\xb2\xa3\x28\xff\x78\xfe\xff\xda\xf6\x22\xe5\x50\x6f\x06\x32\x59\x49\x17\x25\xef\x78\x0b\xac\x2a\xd6\xad\x7b\xbe\x2e\x93\x2c\xeb\x59\xd3\x2b\xeb\xfa\xde\xaf\xca\xe4\x00\x69\x22\x17\x50\xc5\x45\xab\x68\xe1\xbe\xeb\x5d\x16\x99\x54\xab\xb2\x54\x1b\xa0\x96\x01\x9b\x60\x6d\x3b\xef\x6b\xf9\x40\x43\x6e\x9a\x12\xd0\x64\xc2\xa8\x3c\x75\xa8\xe0\x1b\x45\x6a\x7a\xfd\xf6\xaf\x56\x42\x41\x8a\xac\x96\xce\x9a\x6e\xc8\x6f\xcb\xb2\xd5\x51\x3b\x16\x13\xa9\x38\x35\x09\xbf\x7e\x99\xc1\x16\x6b\x16\xa1\x5b\xf6\xf5\x4c\xd4\x92\x00\xb7\xd4\xf1\x5f\x26\xbb\x7f\x11\x6e\x30\xc2\xf8\xa9\x94\xe4\x7a\x92\xc5\x8b\x75\xaf\xac\xcc\x9b\x25\xc9\x83\x76\xc1\x2b\x27\xc9\xc9\x50\x28\x2b\xac\x67\x40\x3b\x2f\x2b\xd0\xcf\x62\x4d\x74\x49\x76\x29\xaf\x64\x5a\x9d\xf2\x4e\x85\xe4\xcc\x4d\x29\x6b\xca\xbe\x1b\xca\x3b\xbd\x21\x77\xcc\xa7\x90\xdd\xf2\x0a\x96\x61\xe1\x71\xab\xd5\x3f\xab\xdc\xc5\xe0\xf5\xc2\x08\xc4\x3e\x23\xde\x2b\x7c\x64\xf6\x51\xbc\x9d\x60\xa9\x92\x2d\xcd\x62\xd8\xce\x78\x09\xae\xfe\x39\xcf\xe7\xac\x00\x40\x98\x67\xd1\xbd\x64\x54\x2e\x01\x28\x01\x80\xaf\x52\x06\x2e\x58\x8c\x9e\x22\xa9\x95\x4a\x4e\x6f\xb9\x3d\x1d\xf4\x3e\xe2\xcc\x0e\xdb\xa2\x83\x95\xe4\xf9\xbc\xfc\x9b\xae\x76\x74\xa3\xbd\x1e\x12\xa1\xaf\x54\xad\x4a\x5d\xc5\xf3\x6c\x59\x55\x1e\x03\xe4\x3a\x52\x2d\x3a\x8e\xad\x64\x2b\x58\x9c\x58\xbb\x59\x25\x25\x98\xfb\xc1\x8c\xb3\x96\x7a\xc2\x7a\xc8\xfb\x41\xca\x29\x34\x65\xc9\x17\xdf\x2d\x24\xc3\x59\xc1\x7e\x1b\x0d\x70\x76\xdb\xde\x22\x38\x01\x26\x71\x29\x29\x11\x45\x14\xb0\x4a\xa5\xc8\x6b\x58\x30\x69\x5d\x05\x9b\x55\xde\x63\xf8\x56\x54\xc0\x8e\x4d\xfd\xa2\xe8\x0e\x0f\x8d\x65\x34\x05\x67\xb8\x6a\xee\xa5\x1e\xc4\x65\xed\x5f\x21\x25\x16\x9a\x77\xbc\x6c\x5e\xe3\xb5\x50\xbc\x62\x90\x52\x85\xab\x39\xc3\xf9\x80\xc1\x28\xce\x44\x4c\xfb\xac\x89\x31\xc8\xea\x1a\x60\xd5\xeb\x4a\x87\x85\x2c\x54\x9a\x0a\x1c\x73\x4d\x32\x6b\x5c\x31\x56\x23\x42\x71\xe8\x29\x46\x35\xfd\x68\x9e\x6e\x52\xb7\x7e\x69\x99\x81\xc4\x4b\xe6\xcb\xe2\x7f\xfe\xb6\x19\x14\x0f\x57\xf1\xfe\x59\x44\x6e\xf9\x6e\x97\x5a\x31\x3d\x2c\x2a\x6f\xc4\x31\x4d\xa9\x68\x2e\xf3\x68\xad\xae\x1e\x6d\x15\x24\x09\x89\x7c\x15\xf3\x80\xd7\x94\xdf\x63\xe3\x28\xfe\xa7\x07\x41\xfe\x08\x6a\x14\x50\x0f\x3e\x5d\x35\xaf\xb3\xae\x6d\x81\x31\x33\x72\x33\xdd\xe7\x9c\x12\xa1\x42\xeb\x0e\x13\xa7\x3c\x85\xc8\x8f\x86\x96\x0d\x71\xb6\x29\xb6\x7d\x80\xeb\x21\xc9\xb7\x42\xcb\xcf\x68\x0f\xb4\x92\x02\x36\xe5\xf5\xa0\x0c\xc9\xba\x01\x81\x6a\x9e\x59\x1d\xee\xcc\xf2\x8f\x9c\xab\xab\x61\x5e\x14\x6f\xe6\x29\xe7\x78\x91\x3c\xfb\xbc\xa7\x9e\x84\xce\x1f\x39\x7c\x12\x93\xaf\x92\xf1\xc2\xf4\xb8\xca\xec\xf1\xb2\x0d\x6e\x87\xb5\x7c\x40\xfe\x60\x9e\xae\x82\xb4\x06\xe9\x37\x2a\xe5\xc4\xcb\xcb\xf9\x6b\xac\xb2\x9c\xfb\x12\xbc\x07\xf1\x44\x55\x43\xf1\x44\x7c\x62\xb2\x97\x0c\x09\x5e\x9e\x7e\x22\x13\xbf\x8d\xc9\xbb\xe5\x9f\xbf\xec\x89\xef\x60\x0a\x6e\xe1\x59\xf4\x3d\x7e\x62\x8a\x20\x15\x4f\xce\xef\xf1\x93\x17\x24\xb7\xe4\x37\x2e\x23\xb2\xae\x54\xd2\xfc\xf2\xa5\x1d\xf5\xa9\xf0\x15\xeb\x72\xe2\xf3\xe0\x69\x0f\xa4\x2c\x78\x3c\xa2\xe8\x05\x45\x29\x9a\xe4\x34\x5e\x01\xa1\xe8\x35\x5a\xe5\x65\x46\x94\xbc\xb7\x80\x17\x84\x8e\xf1\x13\xe3\xb5\x03\x7b\x43\x43\xc7\x0f\x63\x72\x80\xd6\x2e\xf0\xfc\xb4\xc3\xbe\xeb\xe6\xab\xc9\x81\xab\x68\x51\xf2\xf0\x82\xad\x7b\x98\x3e\x1d\xfc\xf3\xe0\x9f\x07\x07\x06\x1c\x54\xab\xec\xf7\x5f\xff\x62\xbf\xb5\x3a\xfb\xfd\xf4\x99\xfd\x5e\x5d\x1f\x7c\x56\x5a\x9f\x93\x0f\xbe\x17\x28\xed\x73\x75\x53\xc6\x85\xc1\x64\x13\x90\x5a\x64\xc0\x6d\xc2\x36\x36\x61\x97\x10\x55\xc0\x3e\x7d\x7d\xc1\x1c\x03\x4f\x1c\xe0\x98\xa1\x44\xb1\x27\xde\x02\x22\xfe\xaa\x06\x8a\x4d\xaf\x78\xe5\x5d\x1b\xd0\x2a\xc8\x0a\x10\xcb\xc6\x4d\x74\xe6\x05\x4c\x9f\x6f\x1b\xcf\x37\x8b\x63\x76\x53\xbb\x6d\x0c\x36\x51\x1c\x46\x8d\x37\x4a\x70\x4d\xf4\x24\x3a\x11\xed\x0c\x48\xea\xfe\xfd\x90\xef\x8a\xde\x0f\x0b\xf6\x77\x7b\xfc\xdc\x76\xde\xe3\x91\x31\x35\x9c\x60\xf3\x3e\xc1\xed\x31\xef\x65\xe2\xdd\x2c\x69\x59\xa5\x82\xe3\xde\xd4\x95\xb4\x20\x20\x45\x18\x8f\xaa\xc4\xcf\xae\x8d\xe2\xd7\x61\x84\x2f\x69\xd6\xca\xe9\x33\xc5\x04\xb9\xb5\xc6\x76\x0e\x30\x08\xfb\x9e\x54\x57\xf2\xda\xfc\x6e\x61\x17\x7d\x95\xee\x0b\x85\xad\xf0\xaa\xa7\x8c\x7d\x01\xa7\x2e\x3f\xcb\xb7\x17\xfb\x0e\x4b\x89\x37\x4d\x3c\x85\xb7\x6a\x56\x61\x49\x22\x02\x1e\xbe\xbd\xec\x92\x88\x2c\x48\x20\xbe\x3d\xbf\x0e\xf1\x20\x5e\xf6\x20\x01\x79\x16\x3a\xe2\x30\x5f\x2f\xc6\xa1\xba\xb2\xe5\x77\xb4\x56\xb6\x9b\x77\xfe\x4c\x13\x3e\x2c\x49\x20\xbe\xe3\x41\xbd\xe0\x06\x6e\xf0\x2d\x69\xfc\x80\x3b\x0d\xc1\xdf\xd8\x45\x8d\x46\x14\x3f\xd4\x8a\x55\xe6\x44\x20\x16\x31\xd4\x5c\x98\x13\xc7\xde\xc4\x1c\xc7\xc4\x0c\xf0\x8f\x60\xc4\x60\x43\x10\x06\x09\xea\xbc\xa3\xbc\x6a\xa3\x28\x46\x3c\xf0\x61\xaa\xc4\x19\x5b\xc7\x52\xf9\x20\x39\x23\x8b\x7b\x8e\x91\xec\x75\x62\x90\x13\x92\xd6\x11\xe1\x28\x0a\x73\x58\xfb\x36\x06\x6e\x4f\xbd\xd4\xaa\x32\x13\x0b\xbd\x2d\xc3\x50\xad\x1f\x90\x3b\xba\xb3\xc1\xa1\xa5\x36\xf9\xc0\xcc\xfc\x0b\x42\xcf\x88\xed\x7a\xc1\xcd\xeb\xa5\x47\x09\x37\x4e\x52\xef\x8b\x8d\xb3\x36\x51\xe8\xe6\x39\xc1\x5a\x1b\xb7\x6a\x83\xd2\x91\xcb\x18\x9c\xd0\xb0\xbd\x79\xb9\x7d\xd5\x45\x57\x6a\x63\x79\xb5\x99\x3d\x2f\xad\xb2\x45\x57\x0f\xfe\x19\x1c\x30\xdf\xee\x43\x41\x5e\xc7\xed\x31\x06\xda\xc6\x8b\xb3\xad\xfd\xef\x56\xdf\xdc\xa1\x21\xbb\xb4\x58\x75\x3e\x71\xb1\x9b\x53\xeb\x74\xee\xf9\x91\x73\xf6\x3d\x14\x1f\xbe\xc5\xc4\x2b\xcf\x71\x29\x19\x31\xf7\x9f\x51\x6e\x8f\x4f\x88\x4f\x68\x4e\x9a\x3b\x99\xff\xff\x02\x00\x00\xff\xff\x27\x06\x53\xaa\xbb\x88\x00\x00" + +func runtimePluginsAutocloseAutocloseLuaBytes() ([]byte, error) { + return bindataRead( + _runtimePluginsAutocloseAutocloseLua, + "runtime/plugins/autoclose/autoclose.lua", + ) +} + +func runtimePluginsAutocloseAutocloseLua() (*asset, error) { + bytes, err := runtimePluginsAutocloseAutocloseLuaBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/plugins/autoclose/autoclose.lua", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimePluginsFtoptionsFtoptionsLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x51\xb1\x6a\xc3\x30\x10\xdd\xf5\x15\x87\xa6\x04\x4a\x86\x76\xf6\xd0\x2e\x1d\x33\x04\xba\x94\x0e\xaa\x7d\x17\x1f\x95\xef\x84\x75\x6e\xf0\xdf\x17\x29\x4e\x42\x29\x0e\xf4\xa6\xd3\x7b\x4f\xef\xe9\x21\x26\x78\x45\xdb\x27\x63\x95\x8d\x27\xd3\xba\x65\xbf\x85\xa6\x01\xe1\x08\xd6\xa3\x38\x00\x80\xe7\xae\xfb\x2b\x7b\x00\x1b\x27\xdc\x3a\x94\xce\x39\x9a\xa4\x2d\x30\xa8\xbc\x31\x9e\xf6\x09\x65\xf3\xcd\x78\xda\xd6\xfb\x4c\x20\x6a\x6b\x69\xd7\x98\x32\x23\xda\x34\x9e\x8f\xd5\xb8\x2c\x51\xdb\x10\x81\x0c\x1a\x28\x9e\xbb\x97\x89\x76\x07\x34\x63\x39\xe6\x77\x4f\x1c\xd1\xe6\x84\xfe\xc3\x5d\xc2\x8a\xb4\x01\x7f\x54\x0f\x3a\x56\x70\x41\x86\xf0\x85\x45\xef\x7f\x87\x1e\x6e\x0f\xb3\xf0\x99\x4d\x73\x0a\x2d\x96\x8a\x5e\x89\xfc\xb9\x04\xc6\x8c\x37\x6f\xe2\xdc\x5f\xdd\x97\x59\xa8\x34\x5b\xaf\x72\x97\x7c\xbc\xcb\x3e\xad\xb0\x73\x18\xe2\x0a\x25\x3c\xfc\xa3\x93\x5c\x2a\x49\x57\xbf\xef\x27\x00\x00\xff\xff\xe7\xc7\xa0\xb2\x0a\x02\x00\x00" + +func runtimePluginsFtoptionsFtoptionsLuaBytes() ([]byte, error) { + return bindataRead( + _runtimePluginsFtoptionsFtoptionsLua, + "runtime/plugins/ftoptions/ftoptions.lua", + ) +} + +func runtimePluginsFtoptionsFtoptionsLua() (*asset, error) { + bytes, err := runtimePluginsFtoptionsFtoptionsLuaBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/plugins/ftoptions/ftoptions.lua", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimePluginsLinterLinterLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x57\xdb\x8e\xdb\x36\x13\xbe\xf7\x53\x0c\x88\x5f\x80\xb4\x96\x94\xbf\x41\xaf\x0c\x08\x45\xba\x6d\x02\x14\x39\x14\xd8\xb4\xbd\xe8\x36\x05\x2d\x8d\x6c\x66\x29\x52\x20\x29\x1f\x60\xe4\xdd\x0b\x92\xb2\x2c\xc9\xf4\xf6\x80\x2c\xb0\xcb\x11\x39\x9c\xef\x9b\x03\xc9\x59\x56\xc3\x1b\x34\x1f\x5a\xc3\xa4\x88\x09\x67\xc2\xa0\x22\x09\x14\x05\x08\xc6\xc1\x6c\x51\x2c\x00\x00\x5e\x55\xd5\x4c\x27\x05\xa3\x3a\x4c\x16\x28\xaa\xc5\xe2\x1d\x7d\xc2\x7b\xd9\x34\x54\x54\x5e\x81\xa4\xd0\x2b\xe6\x76\xe8\xd7\x48\x0a\xff\x4f\x16\x8b\xba\x13\xa5\xb5\x05\xa3\xa5\x38\x71\x38\xf7\x9d\xfa\x95\xe1\x3e\x4e\x56\x0f\x74\x87\x71\x4d\xb9\x46\xbf\xa2\x3a\xf1\xd6\x19\x8c\x7b\xcc\xc1\xca\x78\xc5\x6a\x72\x59\x52\x0e\xb5\x81\xe2\x62\x2e\xff\xbe\xab\x57\xaf\x19\xc7\x8f\xc7\x16\xa7\x7a\x8c\xe3\x5c\x33\xff\x99\x9a\xed\x48\xa7\x62\x0a\x0a\xf8\x81\x29\x2c\x8d\x54\xc7\xf7\xb4\xc1\xd8\xee\xf3\x76\x58\x0d\x1f\x1e\x6c\xc4\xc8\x9e\x89\x4a\xee\x35\xb9\xc4\xcd\xfe\x54\xb8\x13\x1d\xe7\x50\x00\x79\xff\xcb\x5b\xe2\xe6\x91\x6b\x0c\x29\xbc\xa8\x70\xf7\xc2\x7e\xf4\x6a\xd6\xd1\x1e\xc3\x3a\x54\x00\x29\x67\xd6\x6d\x0c\x63\xb2\x29\x4b\x1b\x72\x3f\x9c\x48\x56\xeb\xa3\x30\xf4\x90\x49\xc1\x8f\x76\x21\xfb\x8d\x72\xee\x05\x3c\x18\x45\x49\xea\x1c\xff\x92\x02\x89\xea\x55\xc4\x57\x51\xb5\x5c\xe5\xcb\x15\x44\x0d\x49\x06\x86\x23\xd4\xe5\xf2\x3f\xe0\x92\x4c\x9b\xaa\x28\x97\xcb\x6f\xbe\xfd\x1a\x24\xaa\x20\x85\xaa\xb1\x75\xd5\x0f\x27\x92\x95\x92\x4b\x55\xc8\xba\x76\x48\x32\x73\xc3\xde\xff\x65\x6e\x28\x27\xc0\x51\x1c\xf1\x28\x79\x0e\x77\x23\xc3\xbe\xcb\x75\xc7\xb8\x03\xdf\x48\x87\x3d\x7c\x67\xf6\xbb\x4f\xeb\xc5\xbd\x8b\xfd\xb1\x91\xf3\x71\x19\xa4\xd3\x75\x50\x6e\x31\xfb\x4c\x77\x34\xc8\xcd\x2e\xb8\xcc\x9c\x85\x13\xc9\x2c\xb3\x8a\xa9\x79\xd0\x01\x95\x92\xea\x59\x08\x5d\x2a\xd6\x9a\x30\x90\xde\xf6\xfc\x07\x69\xcc\xdf\x6a\x21\x44\x3c\xcd\x97\xe9\x15\x82\x36\x8a\x89\x4d\xde\x50\x53\x6e\xe3\xda\xb8\x2b\xc3\xa0\xa2\x06\x49\x12\xc2\x1a\x56\xbd\x66\x9f\xee\xeb\x2a\x0a\x3b\xc2\xbb\x70\xa8\x78\x47\xcb\x2d\x96\x4f\xce\xea\x45\x3e\x91\x2c\x13\xd2\x57\x53\xb0\x50\x6f\x05\x4c\xb0\x26\x88\x63\xe7\x53\xe8\x87\x13\x19\x30\xb3\x8c\x33\x6d\x5e\x77\x9c\xdb\x5b\x47\xfb\x29\x6d\x2a\xd9\x19\x2f\xdb\xb0\xea\x95\x2f\xe8\x0b\x8d\x3c\xe2\x29\x44\xd5\x32\xbf\xc5\xe3\xc3\xfa\x33\x96\x86\xed\x30\xbb\x0f\xf2\x29\x39\x15\x1b\x8b\x70\x28\x55\x27\x3c\xa7\xf3\xd4\x57\xbf\x3f\xda\xa3\xd9\x4a\x11\xe4\xd1\x1e\x6b\x4e\x9f\xd0\x39\x3e\x92\x67\xa7\x20\xcf\x56\xdf\x85\xce\x4f\x73\x6c\x1d\xc1\x7e\x9c\xed\x0a\xed\x68\x8f\xe7\x13\x37\x48\x36\xd7\xb2\x33\x6d\x67\xb2\x5a\xaa\x86\x9a\xa2\xa5\x4a\x23\x5d\x73\xf4\x29\x50\xd8\x4a\x65\x74\x21\xe4\x95\xe3\xb7\x3c\xd6\x5b\xe4\x3c\xe8\xb0\xde\xd6\x8d\xc3\x3f\x0b\xff\xe2\xc0\xeb\x3d\xab\x0d\x01\x2a\xaa\xf3\x9b\x53\x51\xb5\x67\xe1\xc8\xea\x3d\x33\x75\x39\x4d\xb1\x33\x10\x38\x33\xcf\xa7\xef\x1a\x96\x33\xd1\x1d\xfe\x06\x75\xc0\x0a\x38\xf8\x0c\xd8\x91\x36\xe1\xc0\xb9\x85\xd4\x2b\x8c\x32\xe7\x53\xe6\x12\x4a\x95\xee\x93\x16\x42\x1c\x01\x8a\x6a\xd6\x44\x48\xe1\x1a\x8e\x1d\xc3\xfd\xf0\xaa\x87\x1a\xa3\x09\xad\x79\xe7\x31\x79\xd5\x2f\xad\xcc\x3d\x47\xaa\x5e\x71\xfe\xa6\x33\x06\xd5\x3b\xd4\x9a\x6e\x50\xc7\xb7\xa8\x38\x67\x3d\x60\x0a\x65\x53\xa5\x40\xd5\x46\xa7\xfe\x9e\xf6\xce\xce\x9b\x25\x87\x30\x33\xef\x2d\x24\xbe\x7f\xf8\x49\xae\x1f\x5a\xba\x17\xf1\xc8\x1e\x21\xfd\x6f\xdf\xa8\x49\xf1\xe3\xc1\xdd\xaa\x67\xec\x09\xe0\x3c\x5c\x56\x37\xf6\x87\xe6\xc6\x0e\x18\xfa\x27\xfb\x08\x68\x28\x40\xb7\x7c\xb4\x89\x3c\x0a\xd2\xd3\xf3\x6a\x0a\x37\x78\x80\x62\x6c\x65\xb5\xd1\xdd\x3a\x26\x51\xe4\x5e\xf3\x38\xcf\xb3\x84\x24\xc3\xa4\xab\x86\x38\xaa\x96\xe3\xc9\xc6\x6b\xda\x39\x67\xbb\x96\x0a\xfe\x4c\xdd\x3b\xc4\x04\xb0\x96\x32\xe5\x82\x83\x3a\x81\x4a\x0e\xe9\xca\x32\xf8\xa8\x58\x03\xfb\x2d\x33\xa8\x5b\x5a\xe2\xb8\xfa\x6c\x8b\x68\x87\x95\x7f\xac\xc8\xa7\x48\xdf\x59\x8c\x48\xdf\xfd\x6f\x74\xc3\x5c\x1e\xb5\x9a\x89\xca\xa1\xa4\xde\xad\x59\xe5\xc0\xa4\xff\x74\x01\xc4\x14\x1a\xbd\xb1\x51\x1a\x3f\x8b\x63\x13\x93\xdd\xac\x86\x35\xd5\x28\x6c\x2f\x7a\xdd\xbc\xba\x0e\x7e\x58\x77\xbd\xea\x35\x81\x69\x0d\x4d\xca\x67\xa8\x3f\x23\x45\xd7\xac\x51\x39\x22\x89\xa3\x98\xc2\xcb\x29\x15\x5b\x1a\x73\xf9\xba\xac\x7d\xf2\xb5\x51\x29\x68\x6c\x93\x49\xde\x75\xc7\x6d\xbb\x7e\xfa\x12\xa8\x86\x98\xc4\xbf\x7f\x8a\xf4\x1f\x2e\xc9\xbe\x2a\xe2\xc1\x80\x4d\x2e\xd2\x72\x6b\x53\xab\x8d\x5a\x6d\x7c\xd4\xfa\x90\x8f\xd2\x6b\xec\xbd\x90\x33\xa1\x51\x99\xd8\x03\xa6\x6e\xe7\xe5\x14\xba\x13\x8d\xa6\x53\xa2\x67\x34\x73\x60\x1a\xce\x11\x53\x8d\xad\xeb\xdd\xc9\x3f\xfa\x77\xa0\xd7\x7e\x7c\x24\x13\x64\x6f\xca\xda\xbf\x94\x80\x2b\x69\x5f\x20\x24\xce\xef\x08\xe4\xb9\xdb\x9e\xe7\x40\x92\x38\xbf\x4b\x6c\xa9\x47\x2f\xfb\x02\xec\xb9\x5b\x13\x8e\xf9\x5f\x01\x00\x00\xff\xff\x43\x20\x8f\x97\xdb\x0d\x00\x00" + +func runtimePluginsLinterLinterLuaBytes() ([]byte, error) { + return bindataRead( + _runtimePluginsLinterLinterLua, + "runtime/plugins/linter/linter.lua", + ) +} + +func runtimePluginsLinterLinterLua() (*asset, error) { + bytes, err := runtimePluginsLinterLinterLuaBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/plugins/linter/linter.lua", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimePluginsLiterateReadmeMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x64\xcd\x3d\x4e\x05\x31\x0c\xc4\xf1\x3e\xa7\x18\x89\x06\x9a\x4d\xcf\x19\xa0\x82\x0e\x21\x3d\xbf\xc4\x9b\x58\x78\x93\xc8\x71\x84\x96\xd3\x23\xbe\x2a\xea\xff\x6f\x34\x37\x78\x10\x67\x23\x67\x3c\x4a\xb2\x1e\xc2\xd3\x1a\xa3\x9b\x63\xef\x06\x63\xca\xd2\x0a\x2e\x9b\x8a\x5f\xb0\x8b\xf2\xc4\x6e\xfd\xc0\xcb\xc7\xc9\x59\xb2\x50\xfc\xdb\xbf\xde\x56\xf7\x31\xef\x63\x2c\xe2\x75\x5d\xb7\xd4\x8f\xf8\x4f\xdd\x6d\x21\x3c\x57\x99\x18\xba\x8a\x34\xbc\x8b\x2a\x68\x79\x3f\xc8\x25\x91\xea\x89\xcc\xce\xc9\xe1\x95\xbf\x0f\xfd\x1c\x0c\x6a\x19\x55\x4a\x55\x29\xf5\x27\xa5\x6e\xf6\xc5\x94\x5a\x59\x54\x18\xd2\xa6\x64\xfe\x6d\x99\x71\xd5\x9e\xde\xe6\x16\x3e\x03\x00\x00\xff\xff\x46\x7f\x67\x35\xe2\x00\x00\x00" + +func runtimePluginsLiterateReadmeMdBytes() ([]byte, error) { + return bindataRead( + _runtimePluginsLiterateReadmeMd, + "runtime/plugins/literate/README.md", + ) +} + +func runtimePluginsLiterateReadmeMd() (*asset, error) { + bytes, err := runtimePluginsLiterateReadmeMdBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/plugins/literate/README.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimePluginsLiterateLiterateLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x56\xdf\x6f\xe2\x38\x10\x7e\xe7\xaf\x18\xf9\xee\xd4\xe4\x9a\x44\xe5\x1e\x91\x22\xe5\x4e\xba\x9e\x4e\xda\x6d\x57\xad\xd4\x17\xa0\xc8\x8d\x27\x60\xe1\xd8\x91\xe3\x94\x45\xa5\xff\xfb\x6a\xe2\x00\x21\xbb\xab\x85\xe6\x05\x7b\xf2\xcd\xf7\xcd\xaf\xd8\xc4\x31\x3c\xfd\xfb\xf0\xf8\xff\xfd\x1d\xa4\xc0\xc6\xc9\x4d\x72\xc3\x46\xb2\x80\xff\xd0\xdd\x57\x4e\x1a\x1d\x30\x25\x1d\x5a\xee\x90\x85\x90\xa6\xa0\xa5\x02\xb7\x42\x3d\x02\x00\xf8\x5b\x88\xef\x50\x11\x38\xdb\x60\x38\x42\x2d\x46\xa3\xa2\xd1\x39\xbd\x87\xda\x71\xeb\xea\x8d\x74\xab\xa0\x76\x36\xf2\xfb\x90\x48\x2c\xba\xc6\x12\xc0\x4a\xbd\x4c\xea\xe6\xa5\x05\x8c\xa3\xce\xa0\x50\x07\x1e\x1c\xa6\x69\xbb\x18\x30\xa3\x16\x3d\x5e\xd4\xe2\xd1\xd9\x3e\xb1\xb7\xa4\xe9\xd5\x15\x18\x3b\x94\x89\x7b\x2a\x9d\x6b\x98\xa6\x7e\x35\xcc\xa0\x52\xd2\x05\x1e\x1f\x41\x8d\x55\x2b\xd2\x3e\xca\xe4\x5c\x91\x29\x82\x42\xa2\x12\x35\xa4\xb4\x23\x3d\x36\x61\x11\xbc\xbd\x0f\xa0\x15\x77\x0e\xad\x26\x98\xd7\x2f\x8c\x2d\xb9\x0b\x58\x30\x7d\xfe\xa3\x9e\x5f\x87\x6c\xa0\xe0\x61\x93\x25\xc5\xdd\x39\x47\xb0\x0f\x2d\xc8\xc3\x4e\x77\xfa\x9b\xff\xbd\x1e\xcf\x21\x85\x9c\x72\x3f\x72\x74\xf5\xf0\x88\x41\x72\x46\x3f\x49\xdc\xdc\x57\xa8\x83\x57\x89\x1b\xef\x24\x0b\xd0\xc6\xfd\x64\x14\x68\x06\x7a\x25\xee\x3b\x1c\x3a\x42\x54\xc9\x3f\x4d\x91\x7c\xe1\x6e\x15\x01\x4b\x94\x74\x9d\xeb\x20\xaa\x76\xdb\x86\x74\x2c\x52\x6e\x04\xba\x6d\x85\x34\x98\x8d\x5e\x6b\xb3\xd1\xac\x7d\x5d\x18\x0b\x32\x1d\x47\x07\xfa\xbb\xa6\xfc\x24\x35\xd6\x20\xcc\xa0\xd0\x4a\x6a\xf2\xdf\x23\x27\x04\x0b\x64\x3c\x3e\x56\x45\x16\xfd\xd9\x24\x7c\x04\x2c\x23\xed\x05\x89\x0f\xc3\xa5\xa7\x17\x98\x1f\x8a\xce\x0b\x58\x38\xfd\x6b\x7e\x02\x7d\xb1\xc8\xd7\x07\xcb\xbe\x4e\x83\x44\xeb\xad\x76\xfc\xeb\xad\x54\x6d\xaa\x3e\xc7\x13\x5b\x6f\x93\x24\xc0\x0a\xa9\x5a\xfd\x09\xec\xfb\x11\x33\x7a\x71\x88\x8b\x40\x33\xfd\x6b\x22\x81\x0e\x73\x37\x39\x07\xda\xd6\x5d\x2a\xd4\xbc\xc4\x09\xcc\xd8\x6c\x36\x9b\x51\x3b\x7f\x9f\x9d\xa5\x64\x1b\x85\xf5\xd9\x42\x31\x48\x9d\xab\x46\xb4\x4a\x25\xb7\x6b\x61\x36\xfa\x3c\x21\xef\x5e\x57\x98\x4b\xae\xc8\xfd\x39\xc8\xea\x5d\xe6\xa4\x53\xb8\x3b\xb6\x95\x96\x65\x89\xda\x75\xbb\x4e\x6f\x97\xe5\x2b\xae\x97\x87\xdf\x05\x7d\x40\x1f\x14\x0e\x32\x2e\xc4\x22\xaf\xeb\x5d\x66\x5e\xd1\x6e\xac\x74\xe8\xb7\xb9\x51\xc6\xd6\xf9\x0a\x4b\x1f\x47\x25\x15\xda\x5d\x86\xd6\x1a\xbb\xf0\x27\xc1\x2e\x7b\x31\x66\x7d\x91\xb4\xc0\x82\x37\xea\xfc\x6e\xfa\x63\x85\x5b\x47\xc1\xc6\x71\x9c\xfc\x79\x66\x2f\x7b\xd3\xdc\xb9\x5e\xe8\xa8\x64\x29\x5d\xbc\xb4\xa6\xa9\x88\x40\x0a\xd4\x4e\x16\x12\xed\x65\x34\x97\xcd\xd4\xfe\x39\xf6\xe8\x52\xcf\x93\x82\x65\xf4\x01\xbc\x5d\x16\xf0\xa0\x70\xc4\xf0\xfe\x31\x06\x9f\x3a\x4c\xe7\x97\x67\x7f\xf8\xb2\x7e\x7c\x64\xec\xaf\xf5\x87\x46\x3b\x59\x22\x91\xdc\x5a\x53\x7e\xc6\xd2\xd8\xed\xc9\x2d\xcf\xbc\x0c\xad\xf6\xd6\x64\xcb\x4b\x45\x57\xd7\x21\x00\x7f\xce\x3e\xa0\x32\x5c\x04\xfe\x3f\xc1\xb7\x00\x00\x00\xff\xff\x6b\x4a\xed\x64\x72\x08\x00\x00" + +func runtimePluginsLiterateLiterateLuaBytes() ([]byte, error) { + return bindataRead( + _runtimePluginsLiterateLiterateLua, + "runtime/plugins/literate/literate.lua", + ) +} + +func runtimePluginsLiterateLiterateLua() (*asset, error) { + bytes, err := runtimePluginsLiterateLiterateLuaBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/plugins/literate/literate.lua", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxLicense = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x5c\x91\x4f\xaf\xe2\x36\x14\xc5\xf7\xfe\x14\x47\x6c\x3a\x23\x45\xaf\x7f\x16\x5d\xbc\x9d\x5f\x62\xc0\x6a\xb0\x91\x63\x86\xd2\x9d\x49\x0c\x71\x15\x6c\x14\x9b\xbe\xe1\xdb\x57\x36\xcc\xbc\x69\x57\x91\xe2\x7b\xcf\x39\xbf\x73\x37\xae\x9f\xc3\x4f\x11\xf1\xee\x93\xf9\x8a\x93\x9b\x6c\x84\x99\x2d\x26\xd7\x5b\x1f\xed\x80\x9b\x1f\xec\x8c\x34\x5a\x6c\xb8\xc6\x82\x7d\xbd\x9a\xb4\x40\xfb\x78\x7e\x25\xa4\x0e\xd7\xfb\xec\xce\x63\xc2\xa7\xfe\x33\x7e\xfb\xe5\xd7\xdf\x5f\xf1\x97\xe9\x47\x33\xdf\x71\xb0\x83\x1b\x9c\xa9\x50\x87\x69\x72\x1e\x7b\x33\xcf\xd6\x57\xb0\x09\x66\x7a\x21\x64\x6b\xe7\x8b\x8b\xd1\x05\x0f\x17\x31\xda\xd9\x1e\xef\x38\xcf\xc6\x27\x3b\x54\x38\xcd\xd6\x22\x9c\x90\xb5\xce\xb6\x42\x0a\x30\xfe\x8e\xab\x9d\x63\xf0\x08\xc7\x64\x9c\x77\xfe\x4c\x0c\xfa\x70\xbd\xe7\xc9\x34\xba\x88\x18\x4e\xe9\x3d\x23\x18\x3f\xc0\xc4\x18\x7a\x67\x92\x1d\x30\x84\xfe\x76\xb1\x3e\x99\x94\xfd\x1e\xa4\x9f\xd2\x68\xc9\xa2\x7b\x6e\x2c\x3e\x17\x93\xc1\x9a\x09\xce\x17\xe6\x6f\x4f\x78\x77\x69\x0c\xb7\x84\xd9\xc6\x34\xbb\x3e\x6b\x54\x70\xbe\x9f\x6e\x43\xce\xf0\xed\x79\x72\x17\xf7\x74\xc8\xeb\xa5\x98\x98\x45\x6f\xd1\x56\x25\x67\x85\x4b\x18\xdc\x29\x7f\x6d\xc1\xba\xde\x8e\x93\x8b\x63\x45\x06\x97\xa5\x8f\xb7\x64\x2b\xc4\xfc\xb3\x54\x5c\x65\x8e\x9f\xc3\x8c\x68\xa7\x29\x2b\x38\x1b\x1f\xac\x1f\xe9\xca\x0c\x52\x20\xd7\x5c\x68\x7a\x56\x54\x7c\xdf\xc7\x70\xf9\x2f\x89\x8b\x38\xdd\x66\xef\xe2\x68\x87\x82\x1b\x10\x43\x71\xfc\xdb\xf6\x29\xab\xe4\xf1\x53\x98\xa6\xf0\xee\xfc\x19\x7d\xf0\x83\xcb\x44\xf1\x95\x10\x3d\x5a\x98\x63\xf8\xc7\x16\x96\xc7\xdd\x7d\x48\xae\x7f\xd4\x5d\x0e\x70\xfd\xb8\xea\xf3\x29\x8e\x66\x9a\x70\xb4\xe4\x51\x98\x1d\x72\xbd\xe6\x07\x9c\x39\xdb\xc7\x64\x7c\x72\x66\xc2\x35\xcc\xc5\xef\xff\x98\x2f\x84\xe8\x35\x43\x27\x97\x7a\x4f\x15\x03\xef\xb0\x55\xf2\x0b\x6f\x58\x83\x05\xed\xc0\xbb\x45\x85\x3d\xd7\x6b\xb9\xd3\xd8\x53\xa5\xa8\xd0\x07\xc8\x25\xa8\x38\xe0\x0f\x2e\x9a\x8a\xb0\x3f\xb7\x8a\x75\x1d\xa4\x02\xdf\x6c\x5b\xce\x9a\x0a\x5c\xd4\xed\xae\xe1\x62\x85\xb7\x9d\x86\x90\x1a\x2d\xdf\x70\xcd\x1a\x68\x89\x6c\xf8\x94\xe2\xac\x83\x5c\x92\x0d\x53\xf5\x9a\x0a\x4d\xdf\x78\xcb\xf5\xa1\xc2\x92\x6b\x91\x35\x97\x52\x81\x62\x4b\x95\xe6\xf5\xae\xa5\x0a\xdb\x9d\xda\xca\x8e\x81\x8a\x06\x42\x0a\x2e\x96\x8a\x8b\x15\xdb\x30\xa1\x5f\x08\x17\x10\x12\xec\x0b\x13\x1a\xdd\x9a\xb6\x6d\xb1\xa2\x3b\xbd\x96\xaa\xe4\xab\xe5\xf6\xa0\xf8\x6a\xad\xb1\x96\x6d\xc3\x54\x87\x37\x86\x96\xd3\xb7\x96\x3d\xac\xc4\x81\xd4\x2d\xe5\x9b\x0a\x0d\xdd\xd0\x15\x2b\x5b\x52\xaf\x99\x2a\x63\xcf\x74\xfb\x35\x2b\xbf\xb8\x00\x15\xa0\xb5\xe6\x52\xe4\x4e\x6a\x29\xb4\xa2\xb5\xae\x88\x96\x4a\x7f\x5f\xdd\xf3\x8e\x55\xa0\x8a\x77\xb9\x90\xa5\x92\x9b\x0a\xb9\x4e\xb9\x2c\x9d\x89\xbc\x27\xd8\x43\x25\x57\x9d\x53\x93\xef\x17\x91\xaa\x50\xec\x3a\xf6\x91\xa5\x61\xb4\xe5\x62\xd5\xe5\xe5\x1f\xcf\xf7\x42\xfe\x0d\x00\x00\xff\xff\x67\x82\x89\x6c\x7d\x04\x00\x00" + +func runtimeSyntaxLicenseBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxLicense, + "runtime/syntax/LICENSE", + ) +} + +func runtimeSyntaxLicense() (*asset, error) { + bytes, err := runtimeSyntaxLicenseBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/LICENSE", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxPowershellYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x58\x6f\x73\xdb\xb8\xd1\x7f\xaf\x4f\x81\x93\xf2\x3c\x91\x62\x4b\x4e\x3a\x9d\xce\x1c\x27\x8d\xcf\x91\xed\xd4\xad\x5d\x7b\x4c\xab\xc9\x54\xd4\x64\x40\x72\x25\xa2\x02\x01\x1e\xb0\xb4\xac\xcb\xa6\x9f\xbd\x03\x90\x92\x68\x49\x76\x3c\x37\x7d\x53\xcf\x98\x20\x17\xbb\x8b\xdf\x2e\xb0\x7f\xa0\x0e\xbb\xd1\x0b\x30\x61\x06\x52\x32\xbb\x54\xc8\x1f\x58\x26\x66\x99\x14\xb3\x0c\x85\x9a\xb1\xa9\x90\xc0\xa6\xda\xb0\x5c\x24\x46\xb3\x3e\xcb\x10\x0b\x1b\x1c\x1d\xf9\xef\x3e\xa4\x02\xb5\x19\xcc\x04\x66\x65\x3c\x10\xfa\xa8\xb5\x4f\x23\xf2\x39\x28\x36\x35\x3a\x0f\xd6\xf2\xb5\x48\xa2\xf3\xa3\x8d\xc0\xd1\x99\xd7\x17\x7a\xb1\x56\xcb\x2d\x8e\xcb\x02\x02\x56\x38\x16\xeb\x58\x5a\xad\x14\x10\x12\x0c\x5a\x8c\x31\x0f\x4f\xf1\x1c\x02\xd6\x8e\xa2\x41\x61\xbb\xef\x28\x7f\x47\xe9\xbb\xde\xab\xb6\x9f\xef\x64\xc0\x53\x30\x01\x6b\xb7\x5b\x2d\x53\x4a\xb0\x95\x5c\x87\xf5\x59\xa2\xf3\x1c\x14\x0e\x62\xa9\x93\x79\xc0\x36\x7f\x1d\xf6\xd1\x91\xd8\xb0\x62\xd8\x11\x48\x75\xd2\x64\x77\x93\xa7\x3a\x79\x92\x5d\x0a\x05\xc1\x63\xf6\x4b\xa1\xe0\x49\x7e\x9b\x41\xcc\xd5\x2c\x68\xf0\x87\x15\xc9\xcb\xb5\x1a\x02\xca\x22\x57\xf8\x18\x8c\x9f\x1c\xd6\x53\x3b\xbc\x83\x58\x6b\x19\xec\xe5\x65\x5d\x34\x25\x1c\xb2\x29\x97\x16\x7a\xbb\x92\x42\x21\x98\x42\x4b\x8e\x42\xab\x60\x77\x5e\x95\x79\xec\x5c\xbd\x4f\xb3\x2a\xa5\xdc\xa3\xd2\x16\x90\x08\x2e\x87\x19\x37\x7b\x14\x5a\x34\x62\xcb\x0f\x9e\xf2\x14\xe7\x20\x79\x4e\xcf\xa0\x34\xb5\xe1\x1d\x36\x32\x62\x97\xad\x54\x22\xd1\x29\x04\x1b\x07\x8b\x14\x14\x8a\xa9\x68\x5a\x55\x6b\x38\x91\x56\xb3\xd2\x42\xea\x83\x63\x5a\xaa\xc4\x79\xc5\xee\x11\x1d\x24\x92\x5b\x1b\xfc\x2e\xd1\x9c\x27\x46\x07\xfb\x66\xee\x9d\xa5\xeb\x89\xc2\x40\x61\xb6\x4f\x65\x35\x79\x53\x4d\x81\xb5\xda\x6c\xf3\x0f\x4e\x21\x2e\x67\x17\x0d\x2b\x7f\xc0\xbf\xe7\x68\xde\x65\xc0\x3a\x3f\x31\x8e\x0c\x33\x60\x31\xcc\x84\x52\x2e\x71\xe8\x29\xe3\x55\xf6\xc0\xcc\x4d\x82\x94\xd6\xb3\x68\xcb\x16\x8e\x62\x13\x23\x0a\x64\xd5\xa9\x32\x80\x60\x18\x7a\xbf\x6c\xcc\xaa\x8f\xc7\x3e\xb3\xc2\x6a\x8a\x75\x67\x52\xc7\x5c\x92\xd4\x09\x97\x54\x18\x71\xcf\x11\xa8\xd2\x4d\xa5\x15\x6a\x46\x0b\x6d\xe6\x53\xa9\x17\xbd\x86\x62\xe4\x08\x2e\xd8\xb6\x55\xbb\x23\x56\x4f\x59\xf6\x37\x58\x2e\xb4\x49\xed\xae\xd8\x20\x2e\x85\xc4\xaf\xa2\x11\x06\x9b\xb9\x14\x12\xc9\x4d\x15\x25\x55\x72\xd8\x10\x9e\xd3\x99\x03\xf2\xa0\x09\xe5\x0a\x90\xef\xe1\x33\x60\xc1\xdc\x43\x1a\xac\xf8\x6e\x6b\xc2\x46\xf9\x46\x6a\x99\xc7\x5a\x6e\x7d\x0e\x62\xc3\x93\x39\xa0\x6d\xee\xe3\xb7\xef\xdd\xde\x78\xc2\xb8\x4a\x99\xd5\x39\xa0\xc8\xc1\xb2\xf7\x1f\xb6\x45\x75\x01\x86\xa3\x7e\x14\xe6\xd7\x35\xcd\x6e\x33\x23\x9f\xed\x04\xce\xb9\x36\x2c\xc3\x5c\x32\xe4\x33\x7b\xc8\x78\xae\xdd\x61\xc1\xcc\x6d\x7f\x26\xd4\xac\x01\xde\xa5\xfe\x47\x1f\x83\x44\x4b\x09\x55\xb8\x34\x02\x6a\xb8\xa1\xb2\x2e\x37\x86\x2f\x0f\x59\xc6\x6d\x86\x3c\x96\x8d\x44\x56\x69\x70\x4f\xbb\x9d\xbe\x87\x77\x8e\xca\xba\xc3\x8f\x5a\xcb\x43\x36\x74\x09\xe9\x90\x01\x26\x83\x2d\xf1\x79\xe5\xe1\xad\x74\x7e\x31\x65\x4b\x5d\xb2\x85\x4b\x75\x7c\x75\x6a\x37\x75\xd4\xc7\x79\x2d\x69\x99\x14\x73\x60\xaf\xeb\x93\xfa\xfa\xb1\x7a\x8b\xda\xf0\xd9\x76\xb5\x08\x2b\x2a\xab\x41\x0a\x85\x87\xac\xf4\xcf\x2a\xb3\xad\x90\xd6\xba\x86\x2e\xdf\xf8\xf7\x7d\x69\xa8\xed\x47\x76\x30\x3e\xe9\xff\x93\xf7\x7f\x7b\xdb\xff\x79\x72\xc0\xde\x74\xbb\x41\xaf\x49\x1b\x4c\x0e\x7a\xc7\xed\xa7\x95\x74\x57\x69\xab\xd7\x3d\x0e\xba\xe3\x71\x60\x0b\x9e\x40\x30\x99\x34\xd5\x36\xc8\x6f\x7a\xbd\xf6\x0a\xdf\x3f\xc0\xc4\xb6\xd1\x13\xb0\x9b\x45\x98\xb1\x3f\x0d\xde\x0e\xfe\xb0\xb3\xa0\x5b\xea\x24\x4d\xe9\xa4\x28\x8c\xbe\x07\x3a\xb1\x16\x0c\xd2\x47\x9e\xcc\xcb\x82\x7c\x99\xa6\x8f\xa5\x90\x29\x0d\x33\x48\xe6\x85\x16\x0a\x69\x28\x81\x1b\x1a\x4a\x6d\x81\x86\x3a\x2f\xb8\xa9\x46\x09\x58\xbd\x18\xb0\x96\x86\x5a\x4d\x85\xc9\xdd\xa8\x20\x41\x37\xde\x3b\xdd\xf5\x78\x6e\x74\xbe\x7a\xbf\xd3\x34\xd4\xc5\xb2\x37\xee\x3f\xb2\x6f\xd7\x3f\x0e\xae\xcf\xa9\x74\x0a\x6a\x49\xa7\x50\x48\xbd\xa4\x53\x61\xdd\x49\x74\x63\x52\x2f\x76\x2a\x6c\xae\x4b\x85\xe4\x1a\x1e\x3a\x53\x7e\xfe\xcc\xa5\x42\x3a\x7b\x70\x94\x87\x82\xab\xd4\x0d\xda\x20\x9d\x0b\x95\xd2\xb9\x36\x39\x47\xfa\x04\x48\x9f\x0c\x57\xee\xa9\xcb\x82\xfe\x22\x52\x78\x19\xb0\x8b\xdc\x2b\xbb\x50\x02\x05\x97\xe2\x37\xa0\x0b\x57\xf9\xa4\xa4\x0b\x75\xaf\xe7\x40\x7f\xd5\x42\xd1\xa5\xc8\x05\xd2\xa5\x73\xec\x15\x70\x5b\x1a\xa0\x2b\x30\x33\xa0\x2b\x8f\xf7\xca\xed\xc2\xdf\x61\x41\xd7\x05\x28\xba\x2e\x50\xe4\x4e\xd3\x75\x89\x74\xe3\x92\xed\x8d\x2e\xe8\xc6\x68\xd7\xa1\xd1\x4d\x19\x4b\x61\x33\xba\x29\x6d\xf6\x32\x88\xb7\xc0\x53\xba\x85\x04\xc4\x3d\xd0\x2d\xa4\x9a\x6e\x61\x26\xac\x73\xcb\x2d\xe4\xda\x13\x5d\xbb\x47\xb7\x50\x70\xe1\x88\xbf\x96\x60\x91\x5c\x06\xf4\x4f\x87\xe5\x16\xac\x96\x9e\xd5\x22\x37\x9e\x8c\xda\xf8\xef\xd2\x8b\x3a\x63\x5f\x86\x27\xe4\xf7\x40\x21\x70\x93\x64\x14\x82\x4b\x32\x14\x82\x4a\x29\x04\xa4\x30\xd3\x0b\x0a\xe7\xa2\xa0\xb0\x90\x02\x29\xf4\x8b\x85\x08\x05\x85\xa8\x0b\x0a\xcb\xd8\x79\x32\x2c\x6d\xe1\x45\x16\x02\x9d\x96\xa5\x4a\xe8\xce\x61\xbe\x33\x3c\x79\x21\x8c\x91\xf2\x3d\x2a\x8d\x54\xaa\x69\xa4\x44\xbd\x6d\x23\x55\x53\x8b\xda\xe1\x23\x55\xd4\x2e\x1f\x29\xb3\x72\xdc\xa8\x48\x5d\x49\x1c\x59\xa0\xcf\x5c\x20\x7d\xe6\x0e\xc7\x67\x23\xf0\x05\xab\xfb\x3e\xc3\xf5\xd6\xaf\xba\xc7\xa2\xd7\xed\x7e\xaa\xaa\xed\xa5\xaf\xb6\x37\x75\xb5\x0d\xab\x6a\x3b\xf2\xd5\xf6\xf3\xaa\xda\x8e\x83\x49\xef\xb8\xa1\xfd\x4d\xbb\xb5\xca\x00\x67\x0f\x3e\x04\x5d\x3d\x74\xf5\xc6\xa7\xe4\x7a\xe9\xaa\xdd\x6f\x47\xd1\x38\x8a\xe2\x6e\x2d\x3e\x39\xa0\xf5\xdb\xd8\x23\xed\x45\x51\x1c\x45\x93\x75\x4e\x79\x54\x56\x1f\xd5\xf7\xb6\xd3\xc3\xa5\xe0\x96\xb8\x25\xdf\x9f\x50\x6c\x80\xcf\x29\xf1\x8e\x48\xb4\x42\xa1\x4a\xa0\x94\x23\xa7\x14\xa6\xbc\x94\xe8\x46\xa1\x80\x52\x4d\xe9\x52\xf1\x5c\x24\x05\x37\x3c\x77\xab\xb6\x9f\x58\x02\xa4\x05\x72\x0f\x31\x25\xb7\xdf\xe0\xc2\x78\x2a\x14\x97\x72\x49\x53\x6d\xdc\x3f\xf0\x24\x5b\x8d\x7d\x1d\xff\xcb\xed\x99\xcb\x80\x24\xa6\x24\x14\x09\xe5\xae\x0a\x55\xef\xf2\xdc\x52\x0e\x8b\x94\x20\xc9\x83\xa2\xba\x5d\x23\x03\x58\x1a\x45\xb6\x3a\x68\x98\x19\xbd\x20\x34\xbc\x20\x34\x4b\x2a\x15\x0a\x59\x37\x44\xf7\xdc\xd0\x22\x03\x03\xd5\x73\x85\x64\x91\x09\x09\xd5\xba\xad\xc7\x4d\xd6\xb6\x77\x57\x6d\x99\x47\x53\x3b\x73\xe5\x46\x67\x77\x43\xc9\x9e\x9e\xa3\xdd\x8d\xa2\x6f\x14\x45\xdf\x7b\xed\xe7\x58\xba\x14\x45\xbd\xe7\x59\xc6\x14\x45\x93\x6d\x96\x4d\x87\xd2\x1e\x47\x51\xff\xe0\xe8\xcd\x9f\xdf\x7f\x38\x0e\x7e\xfa\xf7\xff\xfd\x3f\x4d\x9e\xe1\x6d\xd4\xb0\xfe\xa4\xab\x80\xe0\x57\x9a\x21\xcd\x80\x24\x92\x04\x72\x75\x9b\x94\x46\x3f\xe6\xfe\xec\x28\x8d\xf9\xfa\x10\x71\xa1\xac\xa3\xac\xdf\x85\x72\x9f\x42\x91\x81\x42\xf2\x04\x48\x58\x12\x56\x69\xec\x35\xd6\x5a\xfb\x7a\x75\x57\x5a\x39\x79\xeb\xc2\xd6\xf6\x07\xfe\x95\xbf\xa2\x91\xbf\xa1\x91\xbf\x53\x35\x8e\xc9\xce\x45\xcc\x6f\x8f\x8b\x97\xc1\xd7\xc9\x01\xbd\x7d\x18\x9f\xf4\xcf\x79\x7f\xfa\xb6\xff\xb3\xff\x8e\xc7\x6f\xfb\xef\xbe\x4e\x0e\x7a\xe3\xf3\xcb\xc9\x71\x73\xdf\x1b\xf1\x79\xa5\x53\x68\x5e\xbb\x76\xaf\x67\xad\x55\xa3\xe2\xb3\xad\x5b\xb5\xdd\x5e\xd3\x40\xa5\x5b\x94\x8e\x9d\x8b\xc2\x63\x8b\xa2\xc1\x86\xdc\xb8\x9b\xaf\xfe\x9e\xb8\x27\x56\xa2\xdd\x71\x8c\x6a\x6a\x26\xf4\x9a\xa2\x28\x6a\xbb\x47\xd4\x6b\xbf\x5c\xbe\xdc\x38\x63\xf2\xed\x8f\xdf\xd7\xa6\x9f\x98\x59\xe9\x42\xed\xf7\x18\xfe\x7a\xdb\xee\xd7\xff\x33\x66\xef\xfc\x20\xb1\xfe\x39\x62\xd7\xcc\xce\xb6\x99\xaf\x7e\x60\x0f\xea\x54\xbb\x80\xbd\xbb\x3e\xbd\xa6\x2f\x5f\xbe\xd0\xf9\xc5\x97\xab\x33\xfa\x38\xfa\xd4\x0b\x8e\xd7\x10\x76\x7f\x73\x79\x06\xc3\xfb\x1d\x10\x9d\x0f\xff\x15\x14\x67\x79\x0c\x69\x0a\x29\x1b\x76\x6a\x0c\x75\x49\xd8\xc5\xf0\xcb\xbe\x83\xfe\xcb\x0f\x50\x08\x95\xc8\x32\x75\x25\x2e\xb1\x19\x37\xc5\x7a\xe1\x3b\x9d\xea\xd6\x8b\x90\xfe\x27\x00\x00\xff\xff\x5e\xc4\xe1\x21\xb4\x13\x00\x00" + +func runtimeSyntaxPowershellYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPowershellYaml, + "runtime/syntax/PowerShell.yaml", + ) +} + +func runtimeSyntaxPowershellYaml() (*asset, error) { + bytes, err := runtimeSyntaxPowershellYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/PowerShell.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxReadmeMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x56\xc1\x6e\x1b\x39\x12\xbd\xf3\x2b\x6a\x93\x05\x2c\x09\x42\xeb\xb0\x7b\xca\x61\x17\x98\x41\x92\xf1\x20\x31\x06\x88\x73\x18\x18\xc6\x34\x45\x56\x37\x19\xb3\x59\x0d\xb2\x5a\x72\xcf\x61\xbe\x7d\x50\x64\x4b\x96\xe2\xc9\xc1\xb0\x44\xd6\x2b\xbe\x7a\x7c\x55\xd4\x5b\xf8\x32\x47\xd6\xcf\xf0\xc1\x07\xcc\x4a\xfd\x82\x09\x41\x27\x84\xc1\x9b\x44\x37\x19\x72\xdd\xee\x64\xbb\x51\xea\xbd\x36\x0e\x66\x3d\x84\xb2\x02\x79\x44\xe3\x3b\x8f\x19\x1c\x1d\x81\x09\x2c\x32\x1a\x06\x76\x58\x02\x78\x1e\x11\xf6\x3a\xa3\x05\x8a\x15\x82\xcf\x8c\x31\x7b\x8a\x40\x09\x1c\x6a\x8b\x29\xc3\xaa\xf3\x29\x33\x04\x1f\x11\xa8\x3b\xc3\xd7\x8d\xba\x77\x18\xe5\xfb\x42\x6b\xd4\xcc\x98\x62\x06\x1d\x2d\x24\xec\x3d\xc5\x2c\xb0\x27\xb4\x72\xbc\xf3\xbd\x0b\xbe\x77\x0c\x7d\xa2\x69\xcc\x70\x74\xde\x38\x60\x0c\xa1\x56\x74\xe2\xf9\x12\xc8\x4e\xf3\x99\x6b\xa3\xd4\x67\xfd\xe4\x63\x0f\x33\x4d\x09\xe8\x18\xaf\x04\x00\x9f\xe1\x80\x69\x86\xec\x87\x31\x60\x03\xb7\x90\xd0\xd0\x30\x60\xb4\x82\x00\xe3\xd0\x3c\x9d\xe9\x83\xee\x18\x53\xd9\x10\xee\x9d\x8f\x3e\x3b\xb4\x70\xf4\xec\x24\x48\x3d\xb4\x35\xfb\x1f\x05\x87\xa9\xe9\xa9\x7d\x5c\x35\xbb\x57\xab\x6b\x18\x13\xf5\x49\x0f\xb0\x0a\x64\x34\xa3\x05\x2f\xb2\xf8\x0c\xd6\x27\x34\x4c\x69\x5e\x37\xf0\xeb\x94\x19\xc6\xa0\x0d\x56\xfe\xe5\xa2\x6a\x32\x55\x08\x15\x10\x82\x99\x52\xc2\xc8\x2f\xd8\x2a\xe7\x14\xa1\xed\xa9\xfc\x7f\xcd\xab\x84\x78\x86\xa3\x0f\x61\xa9\x13\x8b\x16\x92\xb8\x81\xdb\xee\xe2\x96\x22\x29\x4c\x89\x52\x3e\x03\xc6\xe4\x23\x43\x7b\x47\xe0\x73\x9e\x30\xff\xab\x6d\x94\xfa\x5d\x14\xd3\x11\x12\x6a\x0b\x03\x09\x78\x4f\x13\x9f\xee\xe8\x98\x3c\xe3\xb5\xfe\x2b\x21\x61\x28\x50\xca\xc6\xe1\x80\x79\x7d\x2a\xe9\xa1\xae\x3e\xae\x9a\x66\xe7\x30\x8c\xbb\xfa\xbd\x19\xec\x1a\x2c\x99\x69\xc0\xc8\x9a\x3d\xc5\x46\xa9\xb7\xf0\x09\x7b\x6d\x66\xb8\x69\xaa\xcd\xcf\xf7\xaf\xd4\xe7\xe2\x92\x29\x57\x3f\x4d\x19\x4b\xf6\xb6\x06\xb6\x2f\xa6\xee\x28\x5d\x53\xab\x4e\xf3\x19\x22\x41\xa0\xd8\x63\x82\x3c\x8d\x23\x25\x46\x5b\xe4\x11\x1b\x38\x7d\x78\x49\xa6\xae\xf0\xc5\x87\x12\x73\xa4\x29\x58\x08\xfe\x09\x85\x81\xa1\x78\xc0\xc4\xf2\x51\x88\x44\x3c\x9e\x39\x6c\xab\xe5\x74\x3c\xd3\x7c\xf1\x53\x45\xbd\x76\xd4\xc5\xfa\x85\xa7\x74\xc8\x42\xfa\x47\xc6\x7a\xa7\x54\xdb\xb6\xea\xdf\xf0\x9d\x39\x2e\x92\x81\xa9\x45\xc1\xff\xc0\x34\x62\xbb\x82\x50\x9f\x29\xd7\x61\x20\x7f\x57\xe5\x16\xaf\x14\x39\xf6\x88\xf1\x54\x26\x5a\x98\xb2\xb4\x5f\x51\x83\x89\x42\xa3\xd4\x1d\x31\x2e\x0b\x92\x89\x28\x80\xcf\xf1\x86\x61\xc4\xd4\xc9\xb4\x11\x53\xb0\xa3\xa9\x77\xe2\x37\x9f\x61\x8a\x22\x5f\x98\xab\x42\x83\x9e\x0b\x6d\x1f\x99\x20\xd3\x80\x90\x07\x1d\xc2\xe2\xc4\x0b\xe1\xc5\xa8\x85\x12\x13\x74\xfe\x19\x06\x1d\x27\x1d\xc2\xac\x56\xd5\x97\xff\x5d\xb8\x77\x89\x86\xef\x34\x02\xa7\xed\x29\x61\xed\xfa\x3d\x4a\x1d\xe7\xba\xd6\xc5\x77\xd5\x5d\x8b\x10\xe7\x19\x24\x81\x5d\x9d\xbf\xf7\x0e\x73\xed\xa1\x0b\xc5\x5e\x07\x16\xfb\x15\xc1\x1b\xb8\x27\xf0\x31\xb3\x54\xc4\x0e\x87\x2d\x7c\x9b\x32\xab\x71\x62\x58\x96\xbe\x1b\x61\x11\xda\xbf\x76\x8d\xa1\xd8\xf9\x7e\x57\x72\x2c\xee\x90\x96\xbc\x77\x38\xd7\xe3\xf5\x13\xc6\x5a\xe9\x9d\x8e\xb4\x3d\x8d\x7a\x23\x82\xd4\xf5\x87\x22\x41\xc2\x91\xb2\x17\x0d\x1e\x57\x8e\x79\xcc\xef\x76\xbb\xde\xb3\x9b\xf6\x8d\xa1\x61\x97\x0d\x8d\x9a\xff\xdc\x45\x1d\x29\x99\x75\xa3\xae\x24\xa8\x94\xe4\x3c\x1d\x06\xf1\x8a\xb7\x18\x59\x0e\x91\x3b\x90\x83\x6f\xf2\x16\xf0\xd9\xe0\xc8\xb5\xe5\xe4\xfa\x9e\x70\x06\xeb\xbb\x0e\x13\x46\x83\xf9\x9d\x52\x9b\x45\x59\x4b\x28\x0d\xc8\xa5\x23\x5a\x5f\x66\x40\xdb\xc0\x6d\xcc\x8c\xda\x6e\x4b\x0a\x0d\x46\x67\x19\x85\x59\xde\x21\xf6\x07\x84\x41\xb3\x71\xdb\x73\x1b\xbd\xda\xef\x82\xee\x61\xd5\xfa\xf6\x3c\x6e\x12\xf6\x53\xd0\x09\xf0\x79\x4c\x98\xe5\x39\x53\x00\x00\x1b\xf8\x40\xb2\xa8\xe5\x79\xd8\x9e\x18\x40\x9f\xc4\xe3\x6f\x9a\xcd\x9b\x76\x69\xef\xbd\x3c\x1b\x08\xed\xd5\xfe\xea\xff\x7e\x2d\x31\xe2\x94\xaf\xa5\x0d\xca\x4b\x71\x39\xef\x4a\x37\x94\x8b\xad\xcf\x64\xc6\x53\x3f\xfd\x43\x2b\x2d\x03\xec\xf4\x94\x5f\xe4\x81\x0e\x35\x4f\x09\x1b\x28\x1d\x5a\x73\x0d\xc5\x39\xe0\x74\xb2\x86\xec\x22\x45\xc1\x6c\x97\xe9\x26\xb3\x66\x8f\x32\x37\xf6\x01\x07\xcd\xde\x80\xc5\x11\xa3\x15\xae\x14\x2f\x10\xf5\x14\xe9\xaa\x29\xcb\xab\x5a\x7e\x57\xf8\x0c\x1a\x82\x3f\x1f\x78\x39\xf9\x7e\xc0\x7f\x4c\x34\x62\x0a\x73\x29\xe4\x52\x88\x72\xe9\x07\xaf\x36\xd0\x93\xda\x80\x51\x1b\xb0\x6a\x03\x83\x4e\x4f\x96\x8e\x51\x6d\xc0\xf1\x10\xd4\x06\xc2\xa4\xd5\x06\xf2\xd1\x77\xac\x36\x90\xa4\x37\x36\xf0\x4d\x1f\xf4\xf2\x2f\x9b\xe4\x47\x59\x1b\x75\x36\x5a\x10\xe3\xcc\x8e\x62\x09\xde\xcf\x82\x75\x72\x8a\x97\x18\xc6\x67\x59\xa0\xe0\xad\xe7\xb9\xbc\x24\xde\x60\xcc\xa8\xd4\x4f\x68\xf4\xc9\x40\x62\xf6\x6b\x8b\xdf\xd6\x02\x07\xb2\xf2\x73\xc9\x16\xcb\x5b\x9f\x39\xf9\xfd\x54\xa6\x5e\xb4\x98\x0a\xf6\xe3\xdd\x57\xf8\xf8\xdb\xa7\xc3\x7f\x20\xd4\xd4\xdb\xab\x7b\xae\xbd\x92\xe9\x12\xad\x4e\x68\xcd\x27\x50\x03\x5f\x10\xe1\xe1\xd3\xed\xcf\xef\xef\xbe\xbc\x7f\x5c\x2d\x1f\xd6\x8d\xfa\x3b\x00\x00\xff\xff\xbd\xd7\x92\xf8\xf2\x09\x00\x00" + +func runtimeSyntaxReadmeMdBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxReadmeMd, + "runtime/syntax/README.md", + ) +} + +func runtimeSyntaxReadmeMd() (*asset, error) { + bytes, err := runtimeSyntaxReadmeMdBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/README.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxAdaYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x54\x6d\x6f\xdb\x36\x10\xfe\xee\x5f\xa1\x79\xdd\x62\x27\x8b\xd6\xaf\xd3\x5e\x0a\xc3\x73\xd2\x00\x59\x3c\x38\xea\x10\xc0\x34\x86\x93\x78\x96\x89\x48\xa4\x76\xa4\x92\x78\x7d\xfa\xdf\x07\xca\x2f\x6b\xb3\xb5\x31\x60\x9d\xee\xed\x79\x8e\xd4\xdd\xad\x4d\xcd\x61\xdb\x72\x96\x90\xa6\xc1\x40\x73\xe0\x32\x64\x83\x24\x49\x92\xe8\xb2\xd4\x70\x96\x0c\x47\x4a\xa5\xa4\xfd\x2b\xf4\xb2\xd8\x4b\x7a\x35\x1e\x0e\x06\xd2\xd5\xec\xb3\x24\x49\xfa\xa4\xaf\x93\x79\xcb\x42\xc1\x89\xef\xf5\xf3\xc4\x6f\x9b\xc2\xd5\xa9\xdb\x9b\xb3\x64\xb4\x4c\xb3\x1f\xbf\x3b\x3b\xc5\xcf\x5f\xbd\x51\xea\x9b\x15\x7e\xc2\x2f\xf8\x1e\xe7\xf8\x76\xfc\x69\x4a\x21\x54\xde\x73\xf0\x59\x32\x5c\x8e\xc6\xef\x3f\xac\xa0\xd4\x12\x4a\xad\x86\x7b\xaa\x7b\xde\x3e\x3a\xd1\xa9\xb0\x67\x79\x60\x7d\x48\x0f\x14\xb8\x61\x1b\x8e\x8e\x2c\x51\xc5\x88\x0a\x27\x01\x54\xf8\xf8\x0f\x42\x65\x00\x95\x25\xb7\x3b\xe1\x3d\xa8\x36\xe4\x59\x83\xea\x1a\x64\x35\x48\x84\xb6\xa0\x80\x82\x2b\x63\x51\x38\xbd\x45\x49\x9e\xc7\xaa\xf8\x32\x53\xe9\xac\x0f\x64\x03\x34\x97\x35\x09\x43\x73\x4d\xdb\xf8\x0c\x04\x6d\x2a\x13\x3c\xb4\x03\xd7\x9e\xe3\xc3\xac\xc1\x56\x83\x6d\x90\x2d\xf8\x29\x96\x64\x9c\x05\x3f\x99\x80\xb5\x13\xac\x3b\x5b\x46\xcb\x8b\xbc\x15\x5b\x16\x53\xa2\x72\xc1\xc1\xac\x61\x2c\x8c\x0d\x2c\x6b\x2a\x19\xc6\xa3\x36\x8d\x09\xac\x51\x3b\xd7\xa2\x71\x1a\x96\x1f\x61\x5d\x80\xed\xea\x1a\x6e\x0d\x27\x70\x61\xc3\xe2\xe1\xba\x00\xf7\xc0\x22\x46\x1b\x5b\xbd\xc8\xdc\x52\x79\x4f\x15\xa3\x15\xaa\x1a\x42\x2b\xe6\x81\x42\x54\x5d\xc9\xba\x93\xfe\x2d\x76\x16\x6b\x08\x19\xcf\x10\xb2\x15\x43\xb8\x74\xa2\x21\xdc\x40\xfa\x5e\xf3\x10\x0e\x9d\x58\x08\xff\xd5\x71\xf7\xf2\x55\x0b\x3f\xb0\x78\x86\xe7\x9a\xcb\x00\xcf\x2d\x49\x64\xf6\xae\x61\xf8\xae\x88\xbd\x0d\xbf\xb5\xe5\x46\x9c\x35\x7f\xb3\x46\xa0\xaa\xea\x85\xbf\x47\x60\x69\x8c\x8d\xf1\x61\xc3\x16\x7d\x70\x67\x83\xa9\x5f\xe4\xed\x3c\xe3\x31\xe6\x3c\x6e\x4c\xcd\x78\x34\x61\x83\x27\x27\x31\x6f\xdf\x9c\xd3\x7d\x13\xec\x71\x0e\x3d\x91\x16\xce\xd5\x3d\x44\xbe\x78\x37\xc3\xc5\xe4\xfa\x76\x36\x7e\x1e\x63\xbb\xa6\xe0\x7e\x54\x5e\x9f\xff\xb0\x3a\xdb\xf9\xf7\xb8\xb7\xc1\x09\x55\x9c\xe4\xdb\x96\x0f\x33\x16\x0b\x4f\xfd\xce\xd1\x63\x5f\xdd\xe4\xb3\xcb\xd9\x02\x37\x93\xfc\xdd\x62\x72\x8d\xdf\xe7\xb7\x57\xf9\xd5\x1f\x33\x5c\x5c\xcf\x27\x39\xa6\x6f\x27\x8b\xc9\x34\x9f\x2d\x70\x9b\x2f\xae\x6e\x2e\xff\x3d\xee\x7f\x90\xae\xe7\x37\x97\x7f\x1e\xe0\x6e\xdf\xce\x17\xf9\x51\xeb\x5d\x3b\xc0\x9d\xa3\x7f\x3f\x60\xed\xca\x9d\x6e\x28\x4e\x1a\xcb\xf3\x23\xfa\x20\xc6\x56\x69\xb9\x21\xc9\x12\x75\x92\xaa\x93\xc1\xf1\x80\xd1\xf3\xff\xf1\xbb\xcd\x14\x7f\x3e\x90\x84\x2c\x51\xc3\xa3\x85\xad\xfe\x44\xf7\xf7\xa6\xcd\x12\xa5\xd2\xa3\x65\xb7\xaa\x8e\xea\x73\x86\x96\x4b\x43\xf5\xb4\xaf\x68\xa4\xd4\x6b\x28\xa5\x14\x94\x0a\x50\xca\x42\x29\x81\x52\x43\x28\x75\x32\xfe\x1c\x44\x3f\x6d\xad\xab\x29\x8e\x6b\xe4\x56\xa3\xe5\x32\xab\x84\xda\x4d\xb6\x5a\x9d\xaa\xcf\x26\x76\xd6\x94\x4e\xc7\x1b\x57\x9d\x7a\xbf\x5c\x66\x4f\xfd\x9a\xc8\x56\xab\xb3\x0f\x83\x8f\xbf\xfe\xb5\xb1\x9c\x4c\x5d\x13\x3b\xf2\x78\x45\xbd\x96\xd6\xc6\xc6\x5d\x7d\x7e\x9e\x9e\x0e\x3f\x4e\xc9\x9d\x76\x87\xaf\xeb\xb4\x8b\xeb\x3c\x9f\xff\x3a\xc7\xdd\xdd\x1d\x2e\xae\xee\x7e\x9b\x8d\xb3\x37\xc3\xc1\x3f\x01\x00\x00\xff\xff\x2d\xaf\x92\x76\x09\x06\x00\x00" + +func runtimeSyntaxAdaYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxAdaYaml, + "runtime/syntax/ada.yaml", + ) +} + +func runtimeSyntaxAdaYaml() (*asset, error) { + bytes, err := runtimeSyntaxAdaYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/ada.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxApacheconfYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x59\xdb\x8e\xe3\x36\xd2\xbe\xef\xa7\x68\xf4\xff\x5f\x6c\x36\x48\x27\xc8\xde\x35\x06\x09\x7c\xea\x19\x21\x92\xed\x58\xee\xc9\x60\xe3\x6c\xc0\x11\xcb\x12\xd7\x12\xa9\x25\x29\xb7\x1d\xf0\xe1\x17\xc5\xa2\x0e\xb6\x5b\xbd\x03\x8c\x55\xdf\xa7\x22\x55\x24\xeb\x24\xf5\x5e\x94\x60\xcf\x35\x3c\xdd\xb3\x9a\x65\x05\x64\x4a\xee\xef\xee\x38\x58\xc8\xec\xd3\xdd\xfd\xfd\xfd\x3d\x6a\x48\x56\xc1\xd3\xfd\x43\x61\x6d\xcd\x77\xbb\x47\x54\x72\x95\xa8\x60\xb7\x7b\xc4\xc1\xc6\x1d\x0b\x65\xac\xd9\xed\x1e\xf9\x6e\xb7\xdb\xfd\xdd\xed\x76\x8f\x85\x65\x59\x06\xc6\x3c\xdc\xdd\xe9\xa6\x04\x43\xb3\x7d\x77\x2f\x38\x48\x2b\xf6\x02\xf4\xd3\xfd\xc3\xdf\x26\x59\x06\xb5\x4d\x1a\x0b\x27\x47\xf2\x9a\xd9\x22\x92\x7b\xe5\xa1\x31\xcf\xa2\x84\x25\xab\xc0\x4d\x32\x2b\x94\x74\x13\xce\x27\xa5\x0d\x97\xe9\x79\x21\x33\xc5\x85\xcc\x3b\x62\x7b\xae\x01\xc1\xac\x60\xda\x80\x57\x9c\xc3\x9e\x35\xa5\xbd\x60\x4c\xa6\x45\xdd\x4e\xd8\x4e\xf2\xcd\xc3\xdb\x36\x72\xfe\x89\x49\x5e\x82\x46\xe5\x28\xa3\x41\x78\xbd\x7c\x3e\x31\xad\x01\x91\xac\x1b\xfb\x2c\x4a\x4b\xc3\x62\x26\xf3\x86\xe5\xfe\x56\xa2\x78\x53\x02\x2d\x92\xf3\x55\x63\x2f\x34\x87\xb8\x9f\x8e\xae\xa5\x60\x86\x7e\x13\x66\xb3\x62\xcc\xe0\xb2\x54\xaf\xce\xff\xce\x56\xcb\xe5\x62\xb6\x25\xe0\x8d\x05\x9e\x96\xcc\x14\x60\x88\x5b\x1d\x41\x6b\xc1\xc1\x4d\xa4\x92\xe7\x4a\x35\xa6\x97\xfe\x9c\x34\xb6\x50\x5a\x58\x66\xc5\x71\xa0\xf1\x67\xac\xf2\x45\xc5\x44\x39\xa0\x92\xc6\xd8\x8f\xe2\x08\xd7\xfc\x52\xbd\x18\xd0\xd1\x7c\xcc\xd4\x4e\xf1\x33\x68\xb1\x3f\x87\xe1\xc6\x88\x5c\xd2\x40\x87\x46\x5c\x19\xd2\xd8\x62\x3e\x4d\xde\x24\x3f\x6a\xd5\xd4\xe8\x34\x2d\x41\x1b\x47\x32\xce\xd8\xdf\x13\x39\x18\x3b\x29\x73\x9c\xa3\xa8\xc6\x0c\xec\x34\xe7\xaa\x62\x42\x0e\x86\x5e\xcd\x74\xf5\x64\xcf\x2d\xb3\x59\x01\xd9\x61\xc8\x28\x99\xc1\xb3\xd2\x15\xb3\xd7\x6c\x2c\xf6\x60\x45\x35\x1c\xff\xab\xaa\x07\x28\x2d\x2a\xa8\x52\xf1\x17\xbc\x63\xeb\xa5\x15\xf1\x7c\xb2\xbe\xdd\x26\x64\xa7\x42\xf2\xf9\xf2\x02\xae\x99\x31\xaf\x4a\xf3\x8e\x0c\x11\x33\x53\x72\x2f\xf2\x9e\x55\x55\xcd\x34\xcc\x97\x2b\x99\x82\x3e\xa2\xd3\x86\x3b\x73\xd0\xb0\x07\x0d\x32\x03\xef\xa3\x60\xde\x31\x14\x07\x2c\x24\xfb\x5a\x42\xff\xc0\x67\xad\xa4\x5d\xb3\x1c\x3e\xb1\xb0\x69\xc8\xfa\x25\x4d\xac\xd5\xe2\x6b\x63\x61\x84\x8e\xcc\x60\x35\x1b\xa8\x94\x05\xef\x3f\x43\xfa\x45\x97\x5e\xa6\x7c\xd2\xd8\xa2\xf3\x8d\xd6\x31\x46\xec\x9d\x6a\xf5\x6a\x40\xfb\x98\x73\x43\xb0\x54\x33\x66\xc0\x4d\xd3\x1f\x7f\xf8\xe1\x87\x49\x96\xa9\x46\x5a\x37\x6d\xf6\xb8\x0b\x3c\x56\xb9\x71\x33\xcc\xaa\x21\x03\x2d\x4e\xb5\xd0\x10\x28\xa1\x63\x90\xb9\x2d\x06\xf0\x08\x65\x3b\x40\x18\xdc\x19\x02\xb4\x4b\x41\xc6\x29\xce\xde\xa9\x46\x6c\xf5\x6a\xde\x01\x48\x52\x3a\x03\x3c\xb2\x12\x7c\xba\xf3\xe4\xc7\x6c\x56\x02\xeb\xc0\x9c\x89\xf2\xdc\x82\x48\x5a\xd0\x47\x56\xb6\x38\x81\xea\xc5\x60\xe2\x0a\xf8\x45\x36\x06\x38\xa1\x28\x97\x4a\x83\x17\x67\x4a\x5a\xad\xca\x21\xff\x09\x18\x07\x3d\xe6\x03\x03\xc5\xa5\x8a\x99\xb1\x89\x0a\xb3\x06\x80\x9a\xfc\x99\x65\x56\x69\xe2\x13\x76\x1a\xee\x60\xc2\x4e\xb8\x4c\x8c\x87\x40\x08\x79\x49\x2c\x21\x57\x56\x30\x0b\x7c\xae\xb2\xb0\xb3\x1b\xa5\x2c\x49\xbd\xde\x56\x54\x90\x30\x9d\x0b\x39\x66\xeb\xc7\x28\x61\xf5\xe2\x64\x41\x1a\xbf\x89\x14\x18\xe1\x58\x5b\xb8\xf2\x05\xc5\xb4\x30\x55\x8d\xce\x60\x21\x33\xe7\x8f\x2b\xad\xa1\x2c\xb1\x52\xcc\x0a\x51\xf2\x35\xe8\x90\xde\x70\xe3\x40\x5a\x8a\x70\x37\x53\xea\x20\x20\xa4\x1a\x02\xb4\x66\x13\x50\xac\xf2\x20\xa1\x17\x8f\xd9\xeb\x15\x52\x7b\x46\x2f\xf0\xf2\x56\xb3\xec\xe0\x9f\xae\x34\xcc\x9b\xaa\x9e\x0b\x0d\xb8\xb5\x67\x37\x6b\x8c\x55\x15\xce\x3b\x67\x47\xfc\x3f\x87\xda\x97\x60\x21\x85\x3d\x23\x11\xab\xec\x30\x9f\xa2\x94\x08\x89\x9b\xa5\x1a\xeb\xc2\xe2\x7d\x39\x0c\x72\x57\xe3\x02\xc6\xf0\x1a\xb1\x70\x0e\xfb\x92\x59\xa0\x50\xf1\x27\x11\x18\x74\x55\x0d\x06\xb7\xd9\x07\x44\xcb\x53\x3d\x5c\x2a\xdb\x69\x26\x50\x5d\x68\xfc\x26\x24\x57\xaf\x61\x2e\x79\x76\xfd\x0a\x3b\x29\x92\x1c\x4e\x3d\xa4\x78\xee\xa0\xaf\x8b\x63\xf6\xaa\xac\xa9\x40\x5a\xef\x3e\xb8\x7f\xd1\xca\x17\xf8\x20\x53\xcd\x76\x14\xa9\x8b\x13\xf6\x31\x42\xc9\x4f\x4a\x1d\x02\x97\x24\x93\x75\x10\x53\x90\x1c\x9b\x2a\xb7\xd0\x5a\xe9\x76\x62\x42\x78\x0a\x8b\x13\xc3\x68\x75\xe1\xdc\xb1\xef\x39\x76\x88\x1a\x82\x11\x23\x83\x4e\xeb\x96\xde\x5f\xb1\xde\x5b\x66\x1b\x83\x90\x36\x71\x0e\x7b\x21\xa1\xc7\xad\xdf\x62\xf0\x2c\xb6\x2c\xf7\x02\x41\x6a\x33\x9c\x4f\x22\xed\xe9\xae\xb5\xc0\x72\x72\x26\xd6\xa7\xd0\x67\xa5\x31\x32\x32\x34\xdf\xa7\x65\x47\xb1\x3f\x62\x27\xdd\xf4\x59\xf8\x93\x32\x16\xbb\xcb\x58\xa9\x43\x53\x1b\x17\x79\x45\x4b\x19\xce\x45\xfb\x60\x6b\xb4\xa7\x9e\xc9\x45\xfb\xcf\xa0\x7d\x0c\x46\x15\xab\xa7\x98\x7c\x51\x68\x97\x8c\x72\x02\xb2\x71\x91\xcc\xca\x86\x83\xf3\x27\x4e\x59\x86\xe4\x76\xb1\x04\x34\xf7\xdb\x81\x63\x47\x6c\x8d\xd2\xc9\x3a\x9a\xd4\x35\x48\xcc\xe7\x5b\xe5\x8f\xc9\xb8\x6b\xfa\xd7\x06\xf4\x99\xd8\x3e\x01\x7b\xf8\xcc\x0e\x30\x31\x67\x99\x11\x8c\x55\xbe\x54\x36\x6d\xea\x5a\x69\x0b\x9c\xc8\x0d\x30\x3e\x29\x80\x71\x8a\x07\xf7\x0b\x40\x3d\x29\xf1\xd8\x3b\x29\x84\xdd\x88\x95\x37\x67\xe3\x0b\x35\x15\x0f\xab\x05\x98\x9e\xd8\x6e\x63\x02\x4a\x4a\xf0\x3d\x75\x1b\xd1\xc8\xae\xea\x9b\x51\x81\x6a\xc7\xa5\x05\xd3\xc0\xfb\x45\x5e\x71\xef\xb4\x27\xa8\xb9\xd5\x8d\xb1\xc0\x67\x13\x77\x81\xbc\x17\xc5\xa2\x12\x96\x7e\x29\x84\x48\xf6\x05\x49\xb2\x72\x03\x59\x43\x47\xef\xe9\x0d\xfc\xa7\x01\x63\xa7\x8a\x9f\x2f\x88\x67\x01\x25\x37\xb7\x94\x4f\x0c\x43\x36\x16\x72\xd4\x52\x54\xfb\x92\xc4\x97\xcf\x30\x16\x64\xb8\x4c\x59\x76\x40\x67\x8f\x15\xe3\xb4\x0b\x8a\x85\xb6\xde\xc5\x2a\x63\xbe\xd4\xb6\x02\xc5\x10\x26\xd1\xa0\x9a\x87\xfe\x2f\x56\x39\x65\xb0\x84\x9d\x66\xa5\x00\x69\x0d\x8a\xdd\x99\x87\xc7\x8f\x55\xd0\x84\x9d\x12\xa8\x9e\x35\x00\x8e\x6a\x95\xd7\xa0\x7d\x85\xb9\xe2\xb6\x85\x06\xe6\xc9\x14\xbb\x37\xea\xdc\x4c\x87\xe9\xb6\xc7\xb7\x62\x3f\x65\x5b\x78\x57\x5f\xff\x0d\x99\x9d\xf9\x76\xe7\x8a\x7c\xc7\x01\x3a\xcd\xd4\x6a\x60\x95\x90\x79\xf0\xf7\xa4\xad\xdf\xfd\x14\x81\xc3\x4e\xee\xc8\xca\xae\x4b\x0f\x34\x69\x80\x65\x73\xa1\xfd\x95\x52\x16\x4a\x69\xb3\xdf\x8b\x93\x4b\x7c\x4d\xcf\x45\xe6\xf7\x3c\x11\xf2\x72\xd9\x01\x87\x05\x8e\xd9\x9b\x30\x6a\xa5\x13\xc5\x71\xbe\x17\x03\xdd\xdb\x69\xd2\x94\x56\x1c\x05\xbc\x86\x14\x89\xd9\xec\xb3\xd0\xb6\x61\x25\xe6\x34\xb7\x54\x6b\xad\x4e\x67\xb7\x6c\xaa\xf6\xa1\xcb\xdf\xd2\x34\x6e\x5d\x1e\xb4\x0d\xcc\x4b\x9d\x6b\xc6\xc1\xf7\x78\x6d\x76\xf2\x89\xc9\x61\x43\xbe\x90\x47\xb7\x16\xfc\x9d\xe6\x74\xad\x95\x55\x99\x2a\x17\x59\xa1\x1c\x3d\xd4\xff\x4e\x19\xa7\x44\x1b\x60\xa9\xb2\x03\x89\xa1\xbd\xf0\xb2\xcf\x67\xdd\x4b\xa0\xa7\xa2\xd5\xa0\x2c\x7b\x86\x96\x18\xc4\xd3\xb3\xd2\xaf\x4c\x73\x43\x04\x1a\xd9\x4b\x1b\xc0\xa5\xbe\x63\xea\xe9\xbc\xd6\x60\x70\x47\xfc\x36\x79\x66\x03\x19\x88\x23\x5c\x3f\x95\xba\xf8\xa1\x3c\xb0\xa3\x75\x6d\x42\x6d\x0a\xf3\xe0\xb3\x60\x0e\x33\x6a\x45\x1f\x0e\x36\xc0\x7d\x85\xef\x84\xf7\x5e\x9d\x5b\x9d\x35\xe8\x8a\x49\xac\xcb\x2d\xb3\x85\xaa\x76\xde\x1d\xa1\xfd\x92\x40\xa8\xfb\x04\x40\xb0\xfd\x54\x40\x68\xf8\x15\x80\x98\xae\x49\x22\x78\xf1\xf6\x4f\x94\x4f\x86\x61\x7d\xef\xd6\x51\xd4\xc1\x76\x78\x03\xaf\x5a\x58\xf0\xd5\x30\xc8\x33\x25\x79\x2b\x2f\x64\x8e\x35\x34\x20\xcc\x43\xbd\x9c\x0f\x44\xca\x45\x01\x27\xac\x6e\xc5\xd6\x29\x03\xdc\x60\x92\xdb\xf8\x14\x39\x5b\xbf\x04\x29\x59\x24\x41\x5a\xae\x37\xab\xd9\x88\xc1\x29\xb3\xc2\xec\xcf\x2e\xcd\x94\x86\xa9\x62\x9a\x92\x67\xea\x3f\xc6\x84\x0b\x7d\xe3\x18\xc8\x74\xe8\x44\xf8\x5a\x50\x6b\xb0\xa0\xa9\xbd\x0e\x3c\x2e\xa4\x93\x42\x52\xe9\x70\x78\xcf\x22\x9c\xe2\xf2\x53\x2c\x25\x40\xa9\x7c\xcc\x54\x90\x7c\xe0\x90\x14\xc3\x13\x5e\x09\xd9\xca\x64\xa7\x97\xa9\x72\x91\xec\x7d\x8e\x44\x4c\x16\x41\xf4\x7d\x23\x89\xa9\xc8\x25\xb3\x8d\x6e\xb5\xb6\xea\x00\x12\x67\xb2\x18\xeb\x74\x89\xf6\x9d\x10\x5e\x31\x53\xb0\xc1\xb3\x46\x0d\xb6\x43\x67\x4b\xc1\x5e\xb8\x56\x9a\x46\x0b\xc9\xb1\xbb\x43\x09\x83\x3e\x31\x5e\x4e\x2d\xd3\x36\xf0\x18\x46\xa1\x36\xa5\x69\xf4\x22\xb9\xef\xbe\xb8\xcf\x2c\x69\x1a\xcf\x26\x98\xb6\xc4\x5e\x64\xd4\x90\xc3\x0d\x89\x2b\x1e\xb3\x0f\x55\x37\x70\x0c\x45\xb1\x1f\xde\x73\xb4\x5f\x69\x3c\x98\x70\x56\x30\xd1\xeb\xbe\xf1\xf4\x9e\xfa\x05\xce\x1d\x2b\xea\x02\x74\xda\x08\xeb\x61\x08\x80\x34\x8d\xe9\x43\x63\x9a\xc6\xc1\xa7\xc7\x6d\xc5\x64\xb6\x2e\x34\x33\x30\x17\xac\x44\xf7\x4a\xe3\x36\xd3\x06\xf9\x74\x7e\x73\x43\x6e\xef\xb4\xeb\x0a\x77\x6e\x37\xe1\xe6\xc6\xe5\x88\x7e\x35\xef\xd8\xeb\x93\x79\xb7\xd0\x90\xab\xb3\x42\x48\x18\xb3\xf1\xf6\xf6\xc5\x63\x6f\x56\x4b\x5f\xe8\xae\xa0\x7f\x59\x44\x6e\xc3\x24\x57\x55\x0a\xc0\x3d\xa2\xd4\x34\x6e\x6f\x50\x48\xd3\x18\xd5\x53\x7a\xe3\xf3\xb5\xfd\x1a\xb7\xb9\x1d\x4b\xa5\x69\xe3\x2b\x8d\xe9\xf1\xd4\x36\xf5\x38\x98\x83\x3e\xdd\x96\x5d\x72\xf0\xd0\xd4\xa4\x0d\x9c\x20\xc3\x79\xe8\x3d\x85\x78\x1f\xbf\x23\xb6\x5e\xf7\x40\x84\x53\xcb\xb2\x83\xcf\x0c\x68\xde\xaa\xb1\x0e\xdf\xb0\xdb\x4f\x35\x5b\xcd\xa4\xd9\x83\x7f\x9d\xc3\x6c\x6e\xc2\x27\xb4\x17\x69\x28\xca\x5f\x0c\xcc\x98\x54\x52\x64\xac\xf4\x0b\x42\x8b\xfc\x0f\x36\x34\xa1\x8f\x18\xbe\x73\x8e\x18\xf7\x86\x66\xb4\x76\xc3\x3e\x24\xc8\xc3\xdc\x7a\x4b\x45\x6b\xf7\x9b\x90\xff\xf8\x31\x7c\x76\xa2\x0f\xf1\x8b\x93\xfb\x32\x15\xf6\x13\x1b\x7c\x6a\x32\xe7\xea\xab\x2a\x1f\x2d\xcb\x9f\xee\x1f\x3e\xfc\xfe\xaf\x9f\xfe\xf8\xf6\xa7\x37\x2d\xfb\xf0\xfd\xcf\xbf\x4f\xbe\xfb\x27\xfb\xee\xaf\x3f\xbe\x7d\xdb\xf4\x0f\xee\xc3\xf7\xee\xa7\x6f\x1e\xee\xc2\xdd\x4c\x49\x63\x99\xb4\x8f\xc6\x6a\x21\x73\xfa\x73\x01\xfe\x33\x78\x7e\x4f\xf7\x0f\xbb\x87\x87\x8e\x03\xc9\xaf\x18\x73\x10\x35\x52\xbb\xdd\xee\xb1\x67\x07\x7f\x79\x68\xff\x0d\x9f\x54\x43\x26\x58\x89\xe5\xbc\x1f\xda\x99\x53\xe1\x8e\xde\x9a\xf1\x7f\xd7\x56\xfc\xff\xff\x78\x9c\x55\x5c\x79\x47\x5a\xcd\x57\xee\xcb\x97\x2f\xee\x39\xfa\x92\x2c\xbe\x79\xfa\xf9\xe1\xee\xee\xbf\x01\x00\x00\xff\xff\xbb\xb1\xb0\x1d\x7f\x19\x00\x00" + +func runtimeSyntaxApacheconfYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxApacheconfYaml, + "runtime/syntax/apacheconf.yaml", + ) +} + +func runtimeSyntaxApacheconfYaml() (*asset, error) { + bytes, err := runtimeSyntaxApacheconfYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/apacheconf.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxArduinoYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x56\x71\x4f\xdb\xc8\x12\xff\x9f\x4f\x61\x85\xea\xd5\x6e\x55\x78\xd0\xf7\xaa\xbb\x48\x55\x04\x21\x80\x25\x48\x10\x31\x2d\x77\xb8\xb5\x36\xde\x71\x3c\x62\xb3\xeb\xee\x8e\x09\x9c\xe6\xc3\x9f\xd6\x09\x90\x73\x1a\x5a\xf5\xf2\xc7\xce\xec\x7a\xf6\x37\xbf\x9d\x9d\x99\x4d\x81\x0a\xe8\xa1\x82\x6e\x80\xda\x6c\x6d\x49\x20\xc8\xa9\xbb\x15\x04\x41\xe0\x3f\x69\x31\x83\x6e\xd0\x49\xd3\x9d\x1e\x6a\xf3\xaa\xb3\xb5\x65\x6b\x05\x6e\x61\xf0\x2e\x40\x09\x9a\xb0\x40\xb0\x8d\xd1\xe4\xe6\xe0\xdd\x9f\xd9\x97\x9b\xff\xbe\xfb\xbd\x51\xde\xa6\xe9\xa4\x13\x6c\x35\xc6\x41\xb0\xbd\x1d\x2c\xb7\x2d\x1c\xfa\x0d\x61\xe8\x7a\x0e\xff\x82\x88\xc3\xb0\xce\x7a\x51\x0f\x35\x85\xbf\xf1\xde\x07\x7e\xbf\xcf\x1f\xfe\xc7\x15\xd9\x28\x8a\x32\xf2\x40\x2b\x38\x7d\xa3\x1d\x09\x4d\x6e\x09\x98\x2f\xe7\xdd\xa0\x13\xf6\x30\xf2\xc0\xa7\xf1\xc9\x29\x9f\x8d\x3e\x73\x3c\xbc\xb8\x4a\x78\x74\x95\x5c\x5c\x25\x51\x0b\x67\x0c\x16\x85\x0a\x2e\x2c\x6a\xda\x0c\x75\x34\xe8\xf3\x61\x3c\xe4\xd3\xc1\x35\x8f\xfa\x09\x1f\xfe\x91\x0c\xda\x48\x17\xf1\xcf\x90\xba\x88\xf9\xf4\xe0\xec\x38\xbb\x88\x39\xf9\x3c\xca\x2e\xe2\x35\x42\x25\x16\x34\xaa\x5f\x20\x73\x36\x3e\x3c\x8e\x2f\xc7\x09\x9f\x2f\x95\x36\xc4\x01\x91\xc8\xcb\x20\xd6\x04\xd6\xd6\xd5\x0b\x50\xfd\xd3\x83\xe1\xc9\x80\x8f\x0f\xce\xce\xe2\xe1\x09\x5f\xc6\xe3\x78\x78\xb2\x06\xa7\x85\x32\xd3\xe0\x12\x0a\xb0\xa0\x73\x78\x29\x4c\xc7\x07\x57\x67\x09\x0f\xae\x93\xc1\xe5\xf0\xe0\x8c\xe3\x61\x4b\xd9\xfb\xb4\xf7\xa4\xef\x7f\xfa\xff\x87\xb6\xaf\x8f\x1f\x3f\x06\xc7\x57\xc3\x7e\x12\x8f\x86\xe3\x66\xb6\xbd\xbd\xf2\xf9\x48\x90\x08\x92\x87\x0a\xdc\x7a\x1e\x4d\x8c\x51\x20\x34\x4f\x1e\x08\x38\x2f\x85\xe5\x42\x19\x41\x8c\x9a\x58\x19\x3d\xe5\xb9\xb1\xb2\xed\xaf\x6f\x34\x59\xa3\x82\x31\xd9\x3a\x27\x34\xfa\x11\xd8\x91\x20\x98\x41\x73\x3c\x8f\x9e\x0b\x07\x9c\x2b\xe1\x1c\x4b\x28\x44\xad\x88\xa5\x61\x69\xea\x89\x02\x06\xe5\x80\x0b\xd1\x8c\xc6\x32\x16\xac\x61\xce\xba\x56\x8a\x2b\x8b\x77\x82\x80\x2b\x6b\x7c\x5d\x81\xe4\xaa\x9e\x28\xcc\xd9\x95\xc6\x12\x3b\x9c\x6a\x90\xec\xbd\x61\xce\x63\xb2\xa8\xa7\xec\xe6\x48\x79\xc9\x54\xa2\x63\x2a\xad\x99\x33\xd9\x07\x26\x5b\x03\xd7\x7a\xb9\xe3\xce\xa0\xe4\x79\x89\x0a\xa2\x45\x89\x7d\x9f\xf6\xd4\x90\xe1\xdc\x68\x42\x5d\x03\x4f\x2c\x88\x5b\xb6\x40\xb5\xd5\xed\x48\x9c\x0b\x2a\x37\xd4\x74\x28\x26\x8e\x45\x6e\x1c\x0b\x87\x9a\x05\x89\xc5\xb0\xcf\x39\xa0\xe2\x26\x11\xac\x40\xcd\xde\x44\xc2\xd4\x02\x38\x86\xfb\xca\x5f\x80\xb1\xac\xcc\x94\x67\xa2\xe2\x99\xb8\xe7\x19\x6a\xb6\x42\xa2\xd0\x8e\xad\xd0\xd2\xcc\x96\x62\x0c\x20\xd9\x9a\x5a\x4b\xf6\x3e\xdc\x37\x76\xdf\x2c\x31\x89\x35\xa2\x87\x48\x2e\xf8\x4f\x70\xf8\x40\x4f\x59\xb0\x46\x78\x82\x74\x09\x42\xf2\x04\xe9\xb3\x45\x02\xaf\x8c\x81\xbc\xe8\x2b\x10\xd6\x2b\x5c\xe2\xb4\xf4\x28\xac\xcc\xdc\xcb\x0d\x79\x1f\xef\x8e\x36\xc6\xa5\xb1\x78\x2a\x0c\x7e\x9c\x0b\xb9\x54\x1b\xe7\x6d\xdc\xc1\x3d\x81\xd5\x42\x3d\x17\xe8\xc6\x73\x88\xa6\x92\x9f\xec\x58\xc2\x3f\xe6\x6d\xe4\x04\x67\xb0\x09\x4a\x82\x12\x0f\xdc\x8c\xe7\x98\x5b\xe3\x20\x37\x5a\x3a\x9e\xa1\x52\xe8\x85\x5f\x6b\x03\x1e\xe1\x14\xc9\x33\xdd\x1c\x83\x0a\xf5\xb9\x91\xc0\x72\x61\xba\x08\xf7\x72\xe2\x23\xd1\x86\xfc\xf1\xa1\xf1\xc9\x82\xb5\x79\x36\x5f\xbb\x1e\x79\x27\x74\x0e\xf2\x25\x72\xda\x24\x46\x03\x57\xb5\x72\x10\x6b\x76\xbe\xb7\x3e\xca\x51\x4d\x4c\x46\xaf\x5d\xcf\xe2\x45\xd8\x84\xb8\xf8\xca\x0b\xb1\xb7\x94\xfb\x4b\xf9\x9e\x27\x30\x45\xcd\xa0\x25\x57\x00\xbe\xd4\x84\xf4\x2d\x40\xd3\x62\x54\x9a\xc5\x9d\x40\x25\x7c\xd7\x28\x54\xed\xca\x35\xef\x4d\x23\xaa\xed\xc6\x7b\x74\x40\x75\xc5\xca\x98\xaa\xbd\xf5\x3b\x2d\xe0\xeb\xcd\x4d\xd7\x55\x22\x87\xee\x97\x2f\x6f\xb6\x57\x27\xa1\x84\x02\x35\x30\xea\x5c\xd5\x12\xc2\x4c\xc3\x3d\x45\x3d\x0e\x6b\xcd\x58\xe8\x5e\x24\xa1\xf0\xe7\xc0\x82\x41\x85\x58\xb0\x83\xc8\x37\xb6\xb9\xb0\xda\xf7\x28\xb0\xd6\x58\xae\xac\x98\xce\x44\xb4\xca\xe2\xa4\xdf\x0f\x26\x35\x2a\x42\xfd\xbd\x67\x30\xcb\x04\x91\xc5\x49\x4d\x90\x65\xab\x84\xd2\x34\x4c\xd3\xf0\xe6\x6b\xe4\xd5\x28\x4d\x23\xce\xb2\x50\xa8\x45\xb7\x13\x6e\xc6\x4b\x50\x2e\x51\x4a\xd0\x8c\x5a\x79\xfe\x95\xc8\x6f\x7d\xe7\x00\x47\x16\x73\x62\x07\x4d\x1b\x67\xff\x30\x98\x82\xe7\x20\x6e\xa3\x2c\x7b\x64\xf8\xcc\x65\xc7\x35\xbd\xb6\xbb\x24\x1e\xf8\xb0\xd9\xa6\x6b\x76\x3a\x4f\x6b\xa0\x65\x6b\xc5\xdd\x62\xd5\x5c\x44\x9a\xee\x3c\xaf\xae\xfc\x23\x7a\xfc\xad\x7a\xaa\x20\x47\xa1\xfa\xa5\xb0\xcf\x5b\x7f\x96\xce\xeb\x36\x9b\xd7\xbf\x44\xa6\xb2\x50\x59\x93\x77\x83\xce\xce\xce\xdb\xce\xaf\x31\x9d\x35\x49\xb5\xc6\x70\x77\xb7\x4d\xf1\xd5\x0f\xc8\x90\x91\xc6\xe7\x42\x32\x3a\x1a\xf1\xf5\xf5\x35\x1f\xc7\xd7\xe7\x83\xa8\xdb\xfb\x09\x67\x69\xfa\x66\xed\x7e\xd2\x37\xbb\xff\xc2\xe3\xdf\x01\x00\x00\xff\xff\x21\xfd\xe0\xed\x00\x0b\x00\x00" + +func runtimeSyntaxArduinoYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxArduinoYaml, + "runtime/syntax/arduino.yaml", + ) +} + +func runtimeSyntaxArduinoYaml() (*asset, error) { + bytes, err := runtimeSyntaxArduinoYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/arduino.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxAsciidocYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\x5d\x6f\xda\x30\x14\x86\xef\xf3\x2b\xac\xac\x12\x6d\x42\xac\x51\xad\x17\x8b\x4a\x25\x34\x4d\x13\x17\x03\x54\x65\xda\x85\x8f\x03\xc6\x31\x25\x6a\xbe\xe4\x38\x9a\x18\x21\xbf\x7d\xca\x67\x43\x21\xd5\x90\x2f\x90\xcf\xc3\xe3\xe3\xf7\x98\x9d\x1f\x08\x75\x48\x84\x8d\x58\xca\x7d\xdf\x8b\xb9\xa6\x79\x42\x09\xae\x6c\x0d\x21\x84\xca\x7a\xc4\x42\x61\x23\x1d\x00\xdf\xb2\x94\xe7\x2d\x98\x33\x2f\xe6\x77\x37\xba\xa6\xc9\x2c\x10\x69\xcd\x7f\x42\x21\xf3\x23\xb4\x17\xcc\x13\xb2\xda\xb1\x50\x22\x45\x22\x63\x6e\x23\xdd\x9d\x4e\xa7\x53\xf3\x46\xaf\x0a\x25\xbc\x9f\x34\x4c\xaa\x98\x12\xa1\x88\x54\x4d\x11\x62\xa7\x09\xe3\xc2\xa6\x14\x1b\x0d\xff\x0e\xb2\x2c\xcb\x3a\x53\xdd\xb7\xd4\x21\xdc\xc6\x41\x73\xda\x80\xa8\x43\x8a\xa2\x28\xce\x2c\x5f\x1a\xa4\x0e\xa5\xee\xf8\xba\xa4\x25\x00\xde\xd6\x99\xea\xa1\x01\x79\x1c\xa5\x8a\xb5\x57\x1b\xf4\xf5\x31\x00\xb3\x5b\xa5\xb3\x93\x32\xa5\xa4\xbf\xcd\x94\x48\x7b\x5d\xe0\x57\x71\xf8\x13\x4b\xcf\x46\xba\x8d\x0d\xbb\x15\xfa\x9e\x88\x94\xbf\xf3\x85\xc4\x21\xe3\x32\xae\x66\x78\x24\xcc\xfa\xfb\xd9\xfa\x4a\x0d\x80\xd3\x25\x59\x31\xe5\xe7\x7f\xb8\xae\xc7\x33\xb8\xdb\xef\xb5\xbd\x62\x92\xbd\x48\x96\xec\x91\xe3\xab\x40\x5c\x9b\x27\x00\xae\xc2\xe8\x7e\x93\xc6\x99\xe4\x02\x5d\x3b\xda\x05\x20\xb7\x75\x7d\x8c\xcd\x7c\xb1\x74\xbe\xe7\xce\x7c\x95\xcf\x7f\xae\x96\xcf\xce\x6c\xe1\xe4\xbf\x67\xcf\x8b\xf9\xe2\x47\xfe\x6d\xf6\xcb\x99\x2f\x17\x77\x00\xb4\xa7\x5e\xaa\xbd\x90\x28\x64\xf2\x35\x4b\xde\xa5\x8f\x53\x25\xfd\xe8\xc5\x46\x3a\x36\x7a\x73\x02\x30\x2f\x06\xf5\x86\xae\x89\xbb\xa6\xe6\x7a\x18\x00\x30\x88\x0b\x60\x50\x13\xc0\xf8\x08\x33\x4b\xcc\xa4\x75\x7c\x43\xd8\x86\xb8\x1b\x6a\x6e\x3e\xf2\xb8\xa5\xc7\x2d\x3d\xee\x30\x56\x10\xb7\xa0\x66\x31\x0c\x8c\x88\x3b\xa2\xe6\xa8\x49\xee\xec\x89\x6e\x8e\x93\xf1\xfd\xa9\xae\x57\x5f\x7b\xf1\x6e\xb3\x20\x10\x2a\xbd\xf8\xb3\xf5\xf2\x34\x08\x80\x01\x80\x2d\x7a\x9c\x8c\x1f\x4e\xbd\x4a\xff\xb1\x47\x7c\x1f\xcb\xd6\xa3\x6f\xe3\xc0\x43\x9e\xd8\xb1\x2c\x50\x7a\x75\x4b\x02\x40\xb0\x01\x40\xab\xf1\x0e\x60\x8f\x8f\xd8\x78\x7a\xd2\xb5\x7f\x01\x00\x00\xff\xff\x85\x03\x17\x35\xeb\x04\x00\x00" + +func runtimeSyntaxAsciidocYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxAsciidocYaml, + "runtime/syntax/asciidoc.yaml", + ) +} + +func runtimeSyntaxAsciidocYaml() (*asset, error) { + bytes, err := runtimeSyntaxAsciidocYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/asciidoc.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxAsmYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\xe1\xaf\xdc\x36\x8e\xff\x9e\xbf\x62\x90\xee\x61\x93\x0b\xd2\xcd\xcc\x4b\xd2\x24\xf7\xa1\x28\xba\xb7\x40\x3f\xb4\x3d\x5c\xf7\x80\xe2\xfa\x8a\x42\x16\xe5\xb1\xe6\xc9\xb2\x46\x94\xc7\x9e\x01\xff\xf8\x03\x49\x79\xde\x24\x0d\x72\xfe\xb2\x01\xe6\x47\x8a\xa6\x44\x8a\xa2\x24\xda\x79\xad\x0f\xae\x9c\x93\xfb\xb0\x31\xd8\x3f\x79\x02\xae\x38\x5b\x3e\x3c\xd9\x6c\x36\x1b\x7e\x14\x4d\xef\x3e\x6c\x9e\xde\xdf\x7f\xfd\xec\x17\x42\x32\xd8\x3f\xff\xcb\xd3\x27\x4f\xf2\x18\x1c\xaa\xd6\x57\x9b\x7f\x76\x1e\x45\x79\xe3\x71\xd3\x1b\x70\x9b\x76\xc8\x9b\x9f\xbe\xfb\xe5\xc7\x8d\x41\x74\x7d\x13\xce\x4f\x54\xf5\xab\xcd\x0f\x11\x4b\x1e\x6d\xf1\x43\xc4\xda\x7d\x7e\xf7\x56\xb8\x97\x1b\x2c\xa6\xb8\xde\xc5\x22\x16\x9b\x67\xdf\xfa\xe7\xcf\xfa\xe1\x44\xc6\x18\x32\x06\xc8\x98\x9e\x8c\x41\x32\x60\xc9\x00\x90\x89\x40\xd6\x84\x40\xb6\x99\xc8\x06\x4b\x36\x00\xd9\xe0\xc9\xf6\x96\x6c\x9f\xf8\x87\x8d\xe0\x44\x76\x02\x02\x63\x08\x0c\x12\x38\x4b\xe0\x4f\xe4\xd0\x52\x17\x0a\x79\x6e\xf8\x7e\x0c\xe4\x23\xf9\x68\xc9\xc7\xc2\xbf\x81\x7c\x76\x85\x0e\x86\x0e\xc6\xd1\xa1\xa1\x43\xe3\xe8\x60\xe9\xe0\xe8\xb0\xa7\xc3\xde\xd1\x21\xd0\x21\x38\x3a\x44\xc3\x3f\x66\x1a\xfe\x31\x63\xe9\x10\x99\xee\xf9\xc7\x4c\xe0\x1f\x33\x03\x1d\x62\xa2\x43\x44\x3a\xc4\x0b\x1d\x06\x3a\x24\x3a\x24\x47\x87\x34\xd0\x01\xe9\x70\xa1\x83\x9d\x2f\x74\xe8\x13\x05\xd3\xb5\x14\x00\x29\x38\x43\xc1\x21\x85\xc1\x3e\x50\x18\x00\x1b\xc1\x89\xc2\x30\x24\x01\x27\x18\x2b\xb9\x08\xb9\x50\x3f\x9c\xb0\x11\x9c\x88\x27\x18\xdd\x9e\xe2\x90\x68\xc8\x94\x86\xc4\xbf\x96\xd2\x88\x9d\x40\x4b\xd9\x06\xca\x36\x53\x76\x89\x7f\x8e\x21\x2a\x5e\x18\x19\x0a\xff\x22\x43\x4b\x79\x08\x94\x87\x4c\xc8\x7e\xa2\x09\x84\x26\x13\x36\x0d\xa1\x35\xa8\x38\x11\x76\x81\xb0\xcb\x84\xc5\x12\x16\x20\x2c\x9e\xb0\x0c\xfc\xbc\x0c\xfc\x7c\x6c\xa8\x38\x2c\x34\x19\x5f\x68\xb6\xdd\x9e\xe6\x60\x0a\xcd\x43\x7e\xfe\xec\xdb\x97\xfe\xf9\xfd\x7d\xf3\xf4\x0b\x39\xd2\x0c\x63\x04\x72\xb1\xb8\x4c\x3e\x4a\xac\x4e\x8e\x86\xb1\x20\xcf\xcf\xc8\xd4\xcc\xaa\x91\x4c\x4e\x81\x6c\x28\x48\xc1\x64\x0a\x7b\x28\x14\x3c\x43\x60\xe8\x25\xdc\x06\x38\xe5\x02\x06\x0a\x25\x13\xb2\x0e\xb2\x0e\xb2\x0e\xb2\x0e\x96\x4c\x27\x97\x05\xa6\x75\x33\xc0\x96\x1a\xcc\xd4\x14\x6a\x8a\xa5\xa6\x30\x8b\x64\xe1\x28\xd9\x0b\x9c\xbd\x8e\xe7\x06\x9a\x91\x0c\xca\xb6\x74\x70\x9c\x2c\xa1\x45\x0a\x7b\xa4\x80\x28\x89\x01\xb2\xfe\x9a\x1e\x6e\xaa\xa9\x51\xe9\x45\x69\x25\xaa\xe9\xa0\xea\x54\x7a\x51\x7a\x01\xb2\x99\x4a\x26\xc8\x92\x44\x20\x38\x33\x5e\x66\x09\x31\x48\x8c\x05\x5b\xd0\x50\x2b\x69\x41\x96\x1f\x08\x5d\x31\x02\x8e\xb1\x11\x10\xd6\x32\x08\xb7\x17\x10\x36\x08\x08\x1b\x8d\xa2\x36\x1a\x45\x6d\x48\xd7\xa8\xfc\x5e\x51\x1b\x41\x51\x1b\x83\x60\x12\x44\xc1\x0b\xa3\x88\x45\x9a\x44\x2f\x89\x40\x14\x2e\x84\x1d\x48\xb6\x82\x24\x27\xac\x5c\xbe\xc9\xc8\x69\x33\xdb\x7d\x47\x3e\x9e\x80\x21\xa4\x3d\x4d\x8d\xb4\x66\x03\xeb\x46\xb2\x69\xf4\xa0\x23\x75\xfb\x77\x0d\x65\xe8\x31\x53\x86\x82\x96\xa6\x2c\x3c\xf6\xab\x46\xca\x90\x7a\xbb\x4a\x13\xcf\x28\xa7\x28\x9e\x31\xbb\xb2\xce\xcd\x7e\x38\x19\x12\x74\x42\x1a\x45\x6d\x58\x41\xe5\xf7\x8a\xda\x08\x8a\xda\x88\xa6\x92\xda\x6c\x2a\xa9\x4d\x1d\x24\xd6\xd6\xbe\x92\xda\x5c\x86\x18\x84\xa4\xa8\x2d\x54\x72\x11\x52\x1f\x29\xaa\x7a\x52\x99\xaa\x5d\x78\xbe\x7a\x66\x30\x33\xfb\x42\x23\xec\x56\xcd\xbe\x37\xf8\xd0\x0f\xa7\x23\xef\x82\x58\x12\x2a\x3d\x52\xca\xae\x75\xc5\x76\xaf\xae\xdc\xf6\xca\xed\xae\x5c\xe4\xdd\xd0\xba\x68\xdd\xba\x50\x87\x36\xf0\xf9\x1c\xa4\x0b\x55\xdb\x70\x1c\xa9\xaf\x12\x36\x0e\xd5\x19\x5f\x7d\x02\x4a\x66\xc4\x75\x16\xfa\x21\xfa\x32\x64\xea\xf9\xf8\x5d\xe7\x13\x1c\x1d\xd9\xe3\x20\x87\xd3\x71\x49\xd7\xed\xdb\x46\x8e\xa4\x23\x1d\xb2\x1c\x49\x03\xe0\x51\x4f\x8d\x59\x8e\x87\xa3\x9e\x0b\x47\xcd\xe7\x24\xc7\xc3\x51\xb6\xd9\x91\x78\x07\xed\x71\x65\x44\xf6\xbe\xee\x2f\x43\xf8\xe0\xa3\x2f\x84\x65\xef\xe9\xd4\xf3\xe9\x4c\xa7\xbe\x97\x7c\x3e\xf5\x79\x8c\x74\xea\xd1\x9c\xd6\x05\xe2\xd4\xa7\x92\x81\x3b\xa6\x92\xb1\xd0\xa9\xb7\xc1\x99\xcc\x03\x39\x19\x77\xca\xbe\x38\x16\xeb\xf0\xc1\x8c\xd1\x76\xf2\x18\xc7\x9e\x1f\xcc\x43\xdb\x0a\x89\xab\x0c\x86\x8b\x8d\x85\x43\x63\xe3\xba\xc0\x37\x6e\xe6\xab\x21\xd8\xd6\x87\xc0\xd4\x0b\x58\x46\xce\x0c\xa6\x48\x4d\xc0\xfa\x1c\xbd\xa5\xb2\xed\xf1\xc1\x52\xb9\xf4\xf8\x70\x63\x44\xac\x68\xfd\xf5\xcd\x17\x2c\xb6\xbb\xb9\xdf\x52\x6b\x1a\xa4\x96\x6b\x2e\x86\x44\x6d\x13\x80\xda\x06\x4b\xa2\xd6\x76\x48\xad\x0d\x6e\xa6\xd6\x0e\xbd\x40\x52\x4c\xd4\x82\xb3\xa2\x04\x1e\x3d\xe3\x89\xda\x93\x07\x11\x9c\xb2\x62\xa2\xd6\x45\x4f\x6d\x9b\x9d\xa3\xd6\x8b\x11\x2f\x23\x79\x1d\x4a\xaa\x33\xc1\x4c\xad\x67\xc3\x52\xaa\xb5\x3e\xea\xd8\x92\x00\xad\x47\x05\x16\x70\x41\x21\x98\xa9\x65\xfd\x00\x5b\x06\x3b\x31\xba\x78\xaa\x44\x9a\x61\xe7\x94\x14\x21\xfb\x9d\x90\x28\x24\x79\xc6\x0b\xb5\x62\xaf\x1f\x43\xa2\x36\xea\x54\xa3\xce\x28\x8a\xeb\x51\x5d\xe0\xba\xaa\x8d\x9c\x6e\x95\xf0\x8d\xdb\x46\x2c\x56\x89\x58\x56\xaa\x02\x9c\xa8\x4d\xa6\x98\x48\x6d\xca\xae\xa7\x36\x09\x9f\x23\x70\x01\xda\x66\xe4\x6d\xa9\x64\xa2\x56\x07\x66\xe4\x86\x35\x81\x5b\xc7\x5c\xa8\x45\xf9\xb1\x95\x6a\x64\xb1\x21\xe1\xc0\xc2\xf5\x6f\x2b\x41\xc1\xb1\x49\x82\x59\x31\x51\x5b\xb8\xb7\x54\x5e\xed\x6c\x7a\x6a\x67\xdb\x51\x3b\x97\x6c\x6c\xa1\xf6\x1c\x76\xb3\x62\xda\xae\xca\xd0\x96\xef\xd3\x75\x37\x54\x6b\x07\xac\x2b\x01\x3a\x2f\xa8\x9e\x83\xc6\x63\x5b\xe7\xce\x62\x1f\x05\xa4\xcb\xa2\x33\x4a\x96\x8c\x9a\x25\x42\xd2\x4a\xc3\x72\x63\xb5\xf5\xca\x6a\xf5\xb6\xba\x25\xb1\x59\xe8\x22\x58\xe8\xa8\x74\x5c\x3b\xc3\xde\xcb\x5e\xf0\xd5\x43\x5f\xc9\x4a\x47\xe7\x9a\x02\xf3\xea\x33\x8c\xb7\x40\x59\x39\x3a\xef\xb8\xf4\xb9\x23\xe1\x97\x1f\x7e\xfc\xfb\x17\x3a\xba\xbe\x97\x3b\x4f\x8a\xc1\x23\x25\x63\x1f\x10\x61\xaa\xcc\xd4\x08\x33\x2a\x03\xa0\x38\x09\x82\x20\xaa\x08\x55\x36\xd6\xe6\x28\xed\x08\x02\x91\x12\xbf\xa1\xcc\x0c\xb6\x4f\xee\xd8\x54\x3a\x55\x0a\x42\xf7\xa5\xa9\x74\xaa\x14\x28\xf5\x6c\x8e\xe9\x18\xba\x49\x48\x98\x28\xe1\x82\x20\x78\xa4\x84\x99\x2b\x55\xcc\x86\xe5\x39\x28\x8a\x44\x9e\x8e\x4d\x23\x38\x09\x82\x20\xaa\x08\x55\x26\x9e\x8f\x31\xd9\x87\x8e\xb5\x94\x63\xcb\xca\x01\xdf\x77\xf1\xc1\x3e\x84\xeb\xd3\xa0\x32\xe6\xa6\x75\x05\x61\x32\x27\x57\xc3\xe5\x79\x32\x66\x3f\x51\x02\x8f\xc5\x57\x57\x44\x3a\x5d\x1a\x9d\x6f\xe6\xd6\x29\x4a\xf3\x14\x94\xec\xdd\xf5\xa9\x0e\x61\x99\x59\x97\x22\xb2\xd4\xc9\x9c\xf6\x32\xd7\x76\xe7\x81\x52\x6b\xac\x65\xe4\xd5\x6c\x65\x31\x94\xee\x5d\xa5\x85\x52\xdb\x9b\x99\xd1\x47\xc6\x31\x50\x6a\xb3\x4d\x8a\xbe\x6c\x17\x66\xc7\x0c\x1e\xab\x44\x0e\xb3\x24\x07\x55\xd2\x33\x2a\xf9\x5d\x0b\x8f\x33\xab\x15\xd4\x95\x59\x37\x09\x76\x7b\xa2\xd4\x46\xf5\x3b\x29\xf5\xbb\x96\x57\x71\x32\x69\xe5\x42\xa8\x7f\x27\x75\xfd\xb4\xee\x75\x12\x20\x21\xf1\xda\x71\xcd\x99\x92\x20\xf3\x43\xef\x99\x9c\x4a\xf2\xbb\xa4\x0c\xee\x92\x67\x06\xfd\x4e\x1f\x21\xee\x50\x24\x8f\xcf\xaa\x0c\xfc\x29\x21\x23\xbf\xeb\x41\x3f\x5b\xcc\xd4\x9b\x99\x0b\x51\x33\x23\x52\xef\x63\x12\x44\xd9\xa6\x46\x2b\xd4\x2e\x54\xaa\x24\x2c\x54\x49\x8f\x0f\x4b\x21\xab\x54\xfb\x8e\xdc\x18\x83\x22\x22\x65\xcb\xb3\xc8\x96\x67\x21\xf1\x48\x95\x22\x12\x76\x63\x9b\x90\xaa\x74\x11\x16\xf5\x8f\x2f\x1e\x64\x44\xa4\xb1\xce\x5f\xb7\x49\xaa\x4c\x48\xeb\xca\x3f\x3e\x1d\x38\xaa\x91\x63\x3b\xe4\xa4\xf9\xd9\x08\x4e\x94\xb8\x42\x9a\x28\xf9\x88\xb2\x17\xcc\x8c\x4a\x38\xa9\x38\x24\x93\x10\x69\xc9\xac\xeb\xd6\x18\x39\x19\x0c\xc8\x6e\xef\xc6\x76\xa2\x99\x87\x5e\x59\x3f\x6b\x98\x96\x98\x85\x8f\xe3\x1d\x6e\x26\xf8\x38\xe5\x4f\x16\xe2\xf6\xe5\xe0\xcb\xaf\x11\x5c\x64\xd4\x45\xbd\xcd\x9f\x6b\xda\x7c\x9a\x2c\x1f\xe5\x96\x48\x96\xf0\x57\xf2\xf1\x7a\x7d\xba\xa8\xba\xe0\x37\xc1\x96\xb8\xd0\x6d\x66\xdf\xe6\xc7\xed\x32\xdf\xa6\xe1\x6d\xca\xde\xa6\x6a\x0d\xf6\x92\xc5\xd7\x6c\xd1\x57\x9b\xdb\x3d\xb3\xac\xa8\xae\x6f\xcd\xb5\x9b\x35\xac\x6b\xaa\x0b\x7d\x9b\x10\x75\x75\x97\x77\xb4\x25\x07\x34\x31\x74\xc9\x97\x17\xba\xd5\x9b\x1a\x64\xea\x82\x31\xc9\xfb\xba\xe2\xca\xef\x05\x1f\x0d\x11\x65\x08\x8e\xf0\x47\x03\xe9\xf2\x00\x2f\x1b\x1c\x77\xe9\xca\xe8\x22\xc3\x0e\x8e\x95\xd1\xa5\x65\xe6\x9a\x11\x50\x57\xbd\xea\x60\x95\x20\xd4\x84\x60\xe6\x9a\x35\xb0\x64\x06\xe8\x61\xb3\x0c\xfd\x38\xf6\xe3\x50\x75\x08\x5e\x4d\x90\xd5\x04\x59\x4d\x41\xe6\x3d\x4f\xa5\x97\xef\x54\x92\xa3\xa0\x79\x0e\xba\x0f\x60\x39\x68\xe0\xf1\x5b\xd2\xc8\x8d\x31\x28\x22\x70\x8e\x81\xae\x2e\x68\x66\x2a\x41\x90\xd4\x12\x44\xa8\x29\x0c\xcb\x76\x82\x65\x83\x81\xa4\xe7\xba\x45\x90\xb7\xe8\x9d\xbc\xa0\xc2\xd1\xd0\xf2\x52\x3d\x9c\x8e\x3c\x59\xbe\x71\xb5\x0a\x38\x4a\x0a\x8d\xd2\xea\xc6\xb6\xab\x27\x44\xa8\x54\xcb\x09\x79\x9a\x1f\xaf\xf7\xee\xf8\x78\xd3\x1f\x61\x75\x62\xe9\x1c\x2b\x83\xd4\x69\xa2\x74\xba\xdb\x3a\x7d\xda\xe9\x33\xf6\x17\x46\x39\x0b\xb0\x5b\x98\x00\xeb\x0a\xd3\x00\x70\x5c\xa7\x99\xd0\xef\x23\x4f\xd5\xef\xb9\x34\x63\xd2\xe8\xc4\x97\x9a\x42\x77\x13\x80\x96\x45\x9d\x56\x4c\x1d\x3e\x36\x81\x52\xa7\x15\x60\x57\xab\xbe\xae\x96\x82\xc1\xef\x63\xa6\x64\x44\xd5\xf0\xc2\x32\x36\xab\x1c\x03\x3e\x1a\x80\xb7\x4b\x13\x9c\x1c\x4f\x4a\x6b\xfb\xb4\x08\x38\x53\xf3\x30\x8a\x86\x50\xac\x74\x91\x23\x90\x8f\xe8\xe4\xd4\x73\xfa\xde\xb3\xf6\xe0\x5f\x6e\x8c\x8e\x13\x7f\xc0\xb1\x56\x9b\x5a\xb1\x70\x02\xa8\x07\x4d\x65\xf4\xea\x41\x3d\xa6\xb0\x1e\x5a\xf5\x76\xaa\xd7\x12\x68\x0b\x54\x53\x5b\x4c\xf8\xf0\x6b\x94\xc0\xdf\x84\x1c\xf5\x28\x6c\xae\x37\x1e\x13\xf8\x9b\x90\xa3\x1c\x8c\x38\xb3\x6f\xf2\xa5\xb6\x32\x38\xf3\x62\xa8\x04\x16\xc9\x71\x91\x2c\xbd\xa6\x45\x67\x5a\x74\xa6\x45\x67\x5a\x74\x60\x91\x30\x23\xdf\xee\xb5\x2c\x3f\xd6\xda\x1f\xa6\xe5\xbb\xd4\xba\x0f\xef\xea\xb5\xae\x43\xfd\x94\xa5\xe7\x43\x2c\xb8\xf2\xab\x50\xb6\x77\x3b\xf5\x02\x4b\xf6\x57\xae\x17\xce\x5f\x65\xfe\x2a\xdb\x97\x75\xfb\xf2\xd4\xf6\xba\x0f\x2b\x83\x95\xc1\x45\x82\x57\x89\x6c\xd0\x47\x5e\xe4\x38\x36\xd7\xee\x95\x5f\xe4\x57\xe1\x55\x82\x8b\x44\xc6\x8c\x57\xc3\xf1\x6a\x39\x5e\x4d\xc7\xab\xed\x78\x1d\x23\x5e\x07\x51\x0e\x3f\xf7\x7a\xf7\x7d\x3e\xa7\x32\x7c\xe9\x24\x72\xe8\xa2\x25\x25\xc1\x60\x61\x16\x9c\xad\x64\x91\x3c\xb8\xf3\xde\x45\x83\xe8\xb5\xed\xd7\x7e\x70\xee\xcc\x36\x47\xc0\xd7\xc4\x5c\x74\x73\x71\xc2\xf5\xb8\xdf\x2e\xcc\x8e\x99\xdd\x9b\xb7\xac\xb7\xf0\xcb\x73\x65\x77\x9f\x9b\xda\xff\x44\x18\xec\xc8\xf6\x1c\x7c\x69\x82\xf2\x3f\x89\x40\x68\x82\x25\x6f\x5d\x93\x1e\xff\x63\x47\x29\xd0\x08\xdb\xcf\x58\xf8\x6a\xf3\xdf\x6e\xef\xb1\xb8\x8c\x75\x7c\x0f\x2e\x16\xdf\x7a\x97\x6f\x0d\x04\x32\x1d\x35\x81\x9a\x8e\x6c\x20\xdb\x11\x04\x82\x8e\x9a\x14\x08\x7d\xa0\xfc\xae\xa1\xfc\xbe\xa1\xbc\x7d\xc5\xb0\x6d\x08\x7c\x20\x4c\x81\xf2\x76\xc7\x92\x3b\x86\xd7\x0c\x6f\xfe\x14\xd3\xcf\x5a\xb4\x13\xe1\x44\x65\xa2\x36\xfd\x01\xc8\x38\x24\xcb\xc4\x27\x11\x09\x5a\x24\x8b\xc4\xf5\x18\x92\x43\x6a\x91\xf6\x48\x7b\x28\x99\x3c\x43\xc9\x14\x98\x9a\x99\x9a\x99\xec\x4c\x30\x53\x93\x08\x3d\xe5\x77\x13\xe5\xf7\x13\xfb\xcb\xb0\x9d\x08\x3c\x61\x62\x6f\xb9\x7d\xc7\xf0\x9a\xe1\xcd\x44\x9f\xf9\xb8\xf1\x59\x8f\xaf\x5e\xf9\x44\xce\xcc\xe4\x9a\x99\x9c\x9d\xc9\x01\xf3\x89\x9c\xd8\x05\xca\xef\x81\xed\x32\x6c\x81\x1c\x78\x72\x6a\x99\x25\x77\x0c\xaf\x19\xde\x00\x39\x1e\xa9\x0d\x66\x8f\x24\x75\xe4\x3a\x3f\xfa\xfe\x15\xf5\xfd\x96\xfa\x7e\x47\x7d\x7f\x47\x7d\xff\x9a\xfa\xfe\x0d\xf5\xfd\x5b\xea\xfb\x6f\x28\x9b\x99\x72\x33\x53\xb6\x33\x65\x60\x3e\x51\x16\xdf\x28\xbf\x67\xcf\xd8\x31\xca\xe0\x29\xab\x5f\xec\x16\x7b\xc5\x4e\x51\xf6\x89\xb2\xfa\x64\xf3\x2b\xb2\x79\x4b\x36\xef\xc8\xe6\x3b\xb2\xf9\x35\xd9\xfc\x86\x6c\x7e\x4b\x36\x7f\x43\x36\xbf\x23\x9b\xdf\xb3\x8e\x28\xb2\xe6\x96\x55\xb7\xac\xbb\x65\xe5\xed\x1b\xea\x71\x22\xc8\xaf\x08\xf2\x96\x20\xef\x08\xf2\x1d\xe5\xd7\x04\xf9\x0d\x41\x7e\x4b\x90\xbf\x21\xc8\xef\x08\xf2\x7b\x56\x11\x3d\x56\xdc\xb2\xe6\xf6\x8e\x81\x95\xd7\xa6\x15\x96\x57\x84\x65\x4b\x58\x76\x84\xe5\x8e\xb0\xbc\x26\x2c\x6f\x08\xcb\x5b\xc2\xf2\xcd\xba\x41\x66\x0e\xf1\xcc\x31\x9e\x39\xc8\x33\x47\x79\xe6\x30\xcf\x1c\xe7\x99\x03\x3d\x73\xa4\xe7\xbe\x7f\xc7\xf0\x5e\x94\xb5\x8b\xf4\xd9\x4a\xa7\xad\xf4\xda\x4a\xb7\xb5\xfe\x9f\xd9\xf4\x99\x4d\x9f\xd9\xf4\x99\x4d\x9f\xd9\xf4\x99\x4d\x9f\xd9\xf4\x99\x4d\x9f\xd9\xf4\x99\x4d\x9f\xc5\xf4\x59\x4c\x9f\xc5\xf4\x59\x4c\x9f\xc5\xf4\x79\xbd\xe9\x0b\x9b\xbe\xb0\xe9\x0b\x9b\xbe\xb0\xe9\x0b\x9b\xbe\xb0\xe9\x0b\x9b\xbe\xb0\xe9\x0b\x9b\xbe\xb0\xe9\x8b\x98\xbe\x88\xe9\x8b\x98\xbe\x88\xe9\x8b\x98\x66\x94\x7e\x5b\xe9\xb8\x95\x9e\x5b\xe9\xba\x95\xbe\x3b\xe9\xbb\x53\x7b\xd2\x77\x27\x7d\x77\xd2\x77\x27\x7d\x77\xd2\x77\x27\x7d\x77\xd2\x77\x27\x7d\xef\xa4\xef\xdd\xe7\x8f\xbc\xef\x87\x88\xc5\xc4\x82\xd7\x73\xf6\xa7\xb1\x6f\x5c\xe6\x99\x97\xcd\x34\xe4\x87\xe5\x30\xb4\x55\xf3\xeb\x28\x0a\x35\x1a\xd4\xd1\x77\xf4\x6a\x7e\xfe\xe2\xb7\x57\x2f\xdf\xff\xfe\x42\xda\xcf\x5f\xdc\xc4\xef\xb3\xdd\x5e\xcd\xac\xbe\x31\x2f\xdb\xcd\x77\x2f\xff\xf1\xfb\x8b\x4f\x9c\xfa\xaf\xec\x52\x1e\xac\x43\x1c\xf2\xe6\xd9\x4f\xdf\xfd\xf2\xe3\xf3\x3a\x5a\xd2\x27\x1f\x36\x4f\xff\xed\xc5\xb3\xfb\xfb\x17\x74\x7f\xff\x2d\xff\x98\x3c\xff\xcd\xbc\xbc\x6c\xbe\x7b\xf9\xbf\x1b\x71\xe5\xe9\x9f\xbb\xdc\xdf\xff\xf6\xdb\xd7\x9b\x5b\xad\x7f\xbf\xbf\xff\xfd\xd6\xf2\xcf\xa5\x73\xf9\xcb\xc5\x8c\xcb\x91\xf6\x61\x68\x4c\x20\x74\xf2\xe7\x2e\x84\x6e\xcf\x7a\xf4\x07\x16\x93\x0b\xdd\xdf\x7f\x5d\xdc\x2c\x14\x4c\x31\x4c\x9b\x95\xa5\x0e\x34\x04\x13\x01\x10\x1c\x09\x0a\xf1\x8b\x0a\x0c\x5f\xce\xc9\xdb\x59\x6f\xfe\xf8\xfd\xc5\x87\x3a\x9f\x9b\xd0\x73\x85\x14\xf7\x1f\xea\x34\x37\x1b\x71\x93\xad\x3e\x7d\x7a\x95\xb9\x08\x9f\x48\xf0\xc1\x27\x71\xed\xfe\xfe\xeb\x47\xe9\xcd\xdf\x07\x2d\xff\x6e\x2d\x25\x67\xbd\x09\xdf\x77\x26\x3f\x76\x5d\xeb\xce\x5f\x3f\xf5\xe6\xaf\xff\x4a\x67\x7a\x09\xfd\x9f\x9c\xf8\x8f\x4f\x9d\xf8\xcb\xff\x63\xae\x0c\x30\x7c\xd8\x3c\x7d\xf6\xcf\x9f\xff\xfe\x33\xfd\xfa\xeb\xaf\xf4\x8f\x1f\x7e\xfd\xf1\x3f\x9f\x7f\xf8\xf6\xe9\x93\x27\xff\x17\x00\x00\xff\xff\xc4\x3e\x7c\x48\x83\x25\x00\x00" + +func runtimeSyntaxAsmYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxAsmYaml, + "runtime/syntax/asm.yaml", + ) +} + +func runtimeSyntaxAsmYaml() (*asset, error) { + bytes, err := runtimeSyntaxAsmYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/asm.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxAtsYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x17\x7f\x73\xdb\xba\xed\xff\x7c\x0a\xd6\x69\x57\x29\xa9\x9d\xec\xed\xaf\xe7\xfd\x90\xbb\xae\xbd\xdb\xae\xef\x75\x77\xed\xee\x7a\xb3\x9c\x8c\x96\x40\x9b\x0b\x45\x6a\x24\xa4\xd8\x19\xde\x3e\xfb\x0e\x94\x64\x39\x6d\xbc\xeb\x75\xbe\xb3\x08\x40\x20\x00\xe2\x07\x01\x29\x6d\x00\xf7\x35\xcc\xc5\xeb\x4f\x1f\xcf\xce\x4a\x40\x28\x70\x7e\x26\x84\x10\xfc\xca\xca\x0a\xe6\x62\x92\xe7\xb3\xa4\xa4\x2d\x85\x54\x62\x78\x3e\x39\x3b\xf3\x8d\x81\xd0\xb1\x4d\x45\x09\x4a\x36\x06\xe7\x22\x5f\x2f\x97\x73\x69\x6c\x53\xcd\x57\xab\xcb\xe5\xcd\xf5\xf4\xc7\xd7\xd3\xbf\xcb\xe9\xc3\xea\x2c\xb2\x9e\x8b\x0f\x35\x78\x89\xce\x87\x7e\x6b\xd8\x57\x6b\x67\x66\xae\x27\xcf\xc5\x64\x39\x9b\xff\xf6\xf2\x1f\xf4\x9f\xdf\xfd\x21\xfb\xfd\xcb\x3c\xff\xd5\x8a\xae\xe8\x05\x4d\xe9\x15\x3d\xa3\x3c\xbf\xa0\x05\xe5\xf9\xf9\xe4\xd4\xf6\xfc\x66\xd0\xf4\x69\x5f\x43\x78\x25\xe4\x3a\xa0\x97\x05\x0a\x3e\x64\x10\xd2\x96\x22\xb8\x0a\x44\xed\xa1\x04\xa5\x2d\x30\xee\x71\xb0\xa7\x73\x45\xbe\x4e\x64\x59\x7a\x92\x1b\xc8\x1e\x68\xed\x9c\xa1\x62\x2b\x3d\x15\x26\x50\x88\x50\x13\x9f\xa5\x6b\xd6\x06\xc8\xf4\x2b\x28\x45\xb0\xb3\xa4\x8c\x93\x48\xda\x62\x52\xa3\x4f\x33\x32\xda\x16\xc6\xd5\xe8\xa9\xd1\x16\xd3\x7c\xfd\xa5\x32\xa3\x2d\x52\x13\x9f\xa6\x87\xe3\x62\x25\x12\x6f\xf3\x20\x0d\x79\x50\x14\xf4\x03\xdc\x22\x85\x61\x8d\xbc\xf1\x19\xd0\x6b\xbb\x21\xbc\xd3\xb6\xa4\x56\xc3\x3d\x52\x9b\xe1\x75\x4d\x2d\x52\xeb\x74\xf9\x84\xd6\xda\xbb\x9a\x70\xb9\xb8\x5e\xed\x6b\x20\x26\x77\x1b\x07\x4a\x44\x22\x30\x92\x0e\x5c\x27\xe4\x2d\x2f\xa7\xab\x83\xcc\x0e\x19\x80\x63\xd9\x23\xe1\x80\x3c\x7e\xf5\x68\x17\x03\xe9\x10\xd7\x8f\x28\x11\x2a\xb0\x87\x90\x85\x81\xd0\xc5\x6d\x1d\xa2\x8d\xbc\xf2\x23\x1e\x52\xae\x43\xe7\x12\x06\x30\xd9\xd7\x90\x66\x03\x91\xa4\x2d\xf9\x2f\x4d\x70\x24\x03\x25\x1e\xd2\x4c\x86\xd0\x54\x40\x6b\xd8\x68\x4b\x49\xed\xd3\xac\x90\x01\x28\xc4\x65\x3c\xfa\x63\xd5\x85\x91\x21\x94\x50\x50\x29\x51\x46\xbd\x0c\x24\x6d\xe7\xaf\x2c\x9a\xc5\x94\xa8\x95\x01\x4e\x3c\x2a\x1d\x95\x7b\x6b\x9c\x2c\x09\x4c\x00\x02\x5b\x12\xec\x0a\xa8\x51\x3b\x4b\xb0\x8b\xdb\x60\x87\xad\x4c\x3c\x99\x94\x42\xa6\xd5\x29\x0b\xb4\x8a\x66\xea\xaa\x66\xc9\xca\x79\xd2\x96\xb4\x55\x7a\x97\x18\x8a\x99\x08\x48\xc6\x15\xd2\x50\x25\x0b\xef\x4a\x50\x0c\xf0\x62\x1d\x92\x53\xe4\x6a\x72\x9e\x9c\x8f\xa6\xb8\x16\x7c\x34\x2c\xa9\x3d\x50\xed\x02\x92\x75\x36\x55\x7a\x77\xca\x00\x3e\x35\x4b\xf3\x50\x10\x9f\x8e\xe1\x80\xb2\x08\x9c\xa0\xb2\xc7\xa2\xc8\x80\xb2\x95\x9e\x97\x04\x75\x91\x66\x14\xf6\x15\x18\x5d\xf1\xaa\x2d\xfa\x2e\x93\x41\x11\x6e\xc1\x12\xfa\x7d\xf4\x22\x13\xda\xe8\xc9\x12\x4e\x7a\x61\xc8\x2b\x66\x8e\xb1\x6b\x65\x3c\x3e\xdd\xb3\xa8\xfb\x2d\x78\xa0\xfb\xad\x36\x40\xf7\x1a\xb7\xf1\x11\x9d\xcc\x40\x0c\x1b\x03\x6d\x32\x06\x2d\xe2\x8f\x72\xfe\xeb\x9c\x1b\x2a\x64\x48\x35\xc6\xb3\x81\x70\xfc\x16\xd7\x6e\x17\x57\x65\x64\x9f\x90\x3d\xa5\x3d\x90\x74\x55\x1b\x5e\x3d\x0c\xd0\xc9\x9c\x93\xa1\xab\x93\xe3\x83\x46\x82\x72\x3e\xbf\xe8\xce\x99\x5f\x1c\xaa\xe7\xe7\xa6\x5a\xc3\xe1\xf6\x2d\x9c\x0d\x28\x2d\xce\x6c\x24\xc7\x0b\xfc\x7a\xfa\xe3\x6c\x75\x99\x2c\xe1\xed\x8a\xe5\x64\x4c\x58\x5d\xa6\xd9\x52\xbd\x33\xef\x57\xd9\xc1\x8e\x27\xf6\x5e\x2f\x77\x9f\x57\xcb\x78\xe9\xbf\x93\x53\xb5\xba\x48\xf2\xd9\x31\x9a\x66\xcb\xfa\xaf\xc7\x52\xbf\x41\x66\xd2\x71\xd2\x97\xb2\x2f\xd3\xa5\x79\xdf\xfc\x6d\x75\x91\xaf\x87\xb3\xbd\x6b\x6c\xc1\x45\x33\xf5\x60\x24\x42\x29\xee\x60\x7f\xef\x7c\x19\x5e\x89\x50\x43\xa1\xa5\x11\xaa\x67\xe9\x1a\x01\x37\xb7\x50\xcb\x02\xc2\x4c\xfc\xec\x50\xf0\x35\x6b\xf6\x42\x97\x60\x51\x2b\x3d\xfa\x69\xa4\x44\x93\x94\xde\x75\xfe\x56\x4d\x66\x49\xd9\x1d\x15\x32\xa0\xb2\x54\x7b\xb9\xd3\x5c\xac\xe0\x2d\x19\x59\x91\xe1\x47\x64\xe5\x40\xc6\xb0\x8d\x68\x75\xdc\x0b\xbe\x56\xb1\x20\xe5\x4c\xb9\x20\xe5\x01\x16\x2c\x6d\x11\xc5\x2d\x88\x5b\xd3\x22\x96\xc3\x82\x9b\xc2\x82\x94\xe5\x08\x3f\x21\xe7\x79\x7e\x7f\xe4\x9f\x0f\xb8\x05\x7f\xe4\x94\xc1\x19\x02\x94\x82\x02\xc3\x6c\x36\x1b\x72\xac\x73\xd7\x5c\x24\xf9\xf3\x44\x7a\x5f\x87\x07\xe2\x05\x3d\x37\x1e\x5a\x7b\x90\x77\x54\x38\x8b\xda\x36\x40\xe5\x0f\x45\x77\xb7\x81\x91\x7b\x6e\x82\x95\x0c\x77\xb7\x89\xc5\x2a\x76\x43\xee\x5b\xf7\x1e\x49\x1a\x93\xa6\x47\x79\x7c\xac\xa3\xdf\x34\xb8\xae\xbb\xf5\x6e\x03\xfa\xa6\xc0\xa3\x3b\x30\x36\xb7\x78\x17\x1a\x5e\x54\x21\x4d\x04\xaa\x08\x98\xce\x00\xa3\x11\xbc\x34\xa7\x54\x19\x9d\x05\xbc\x6d\x91\x3a\xa0\x5f\xa9\xda\x0f\xe3\x0e\x83\xbd\x67\xa8\xda\xf3\x6d\x19\x41\x2f\x75\x00\xbe\xd8\x12\xe7\xcb\x34\xbb\x6d\xf1\x94\x86\x91\x07\x47\x7e\x0a\x5b\xd7\x75\xd3\xe0\x4c\x0b\xfe\x56\x86\x00\x1e\x07\xac\x05\xaf\xd5\x9e\x10\xaa\x1a\x6c\x0b\xfe\x94\x6c\x6c\xea\xc4\x40\x54\x4f\x07\x78\x04\x09\xf7\x1e\x6a\x6a\xa5\x97\x7e\x43\x6d\xe1\xea\x3d\xd8\x96\x99\x47\xf8\x29\xd1\xf9\xb3\x84\x43\x04\x3b\xcb\xd1\x82\x9d\xed\x31\x0e\x1e\x83\x4c\x65\x17\x73\x4c\x8d\x7c\x78\x4a\xc2\x3a\x51\x8d\x4d\xae\xe9\xd7\x29\xf1\x3c\x93\x66\xdd\xc8\x13\x29\x19\x15\xc6\x79\x50\x23\xd2\x43\x46\x73\xd1\xa8\x13\xf2\xb2\xda\xf3\x10\x65\x6c\x9a\x3d\xa3\xda\x83\xf7\x3d\x8c\x4d\xfd\xf0\x6c\x9c\x08\x78\x9e\x7b\x23\x62\x47\xeb\x0a\xdb\xc5\x4c\x7f\xfd\xe9\x63\x4f\xec\x85\xd7\x1e\x6a\xef\x8a\xb9\xb8\x59\x2e\xe7\xb1\xf0\xe7\xab\xd5\xc5\xf9\x31\x92\x74\x43\x21\x57\xf2\xa6\x92\xc4\x83\x5b\x53\x02\x25\x8d\x25\xad\x6c\x96\x72\x4f\x01\x5b\x6a\x45\x60\x12\xad\x28\x40\x4a\x5a\xd1\xbd\xf4\x96\xc7\x2f\xf0\xde\x79\xea\x42\x3b\x1e\xea\x5b\xf4\x16\xae\x84\x0d\xd8\x1f\xa8\x07\x7e\x43\x60\xb4\x8a\xea\x8c\x56\xb1\x13\x46\x0f\x50\xf4\x09\x79\xf8\x57\xa3\x3d\x74\xdd\x71\xe8\xa9\xfd\x1c\x91\x8e\x25\xff\x47\xe7\x0c\x48\x2b\x5a\x69\x1a\xf8\xea\xd6\xe7\xc1\x36\x7a\x1a\x7d\x03\xa4\x24\xf7\x7c\xdb\x18\x13\x05\x0c\x63\xf4\x16\xc4\xe4\xc5\xbf\xc5\x6c\x36\x13\x2f\x7e\x99\x88\xb5\x71\xc5\x9d\xd0\x96\x4f\x18\x84\x72\x1e\xf4\xc6\x0a\x36\x5a\x68\x8b\x2e\x3a\x5d\xa2\x28\x5c\x55\x6b\x03\x53\xd4\x15\xf4\x92\xde\x74\x3c\x41\x97\x20\x9c\x12\x1a\x85\x0e\x62\x03\x96\x8b\xd5\xec\xc5\x1b\xe1\xbc\xf8\x8b\x6c\xe5\xc7\xc2\xeb\x1a\xbf\xf8\xb4\x88\x28\xff\x02\x4a\x8f\x73\x36\x69\x79\x7e\xf3\x7c\x95\x4d\x0e\x6f\xc0\x96\x4c\xff\x65\xa4\x84\x3b\x5d\x77\x1f\x2f\x23\xcd\xe8\x4a\xe3\x74\xe3\x5d\x53\xcf\xbf\xfc\x7c\x38\x30\x1d\x7d\xdd\x0c\xbf\xa9\xe8\x73\x61\x2e\x26\xc5\xe4\xe4\xab\x7f\xca\x56\x86\x78\x80\xc9\xd9\x38\xb1\xf2\x68\xde\x65\x26\x7f\x36\x7c\x15\x87\x6e\x76\x9f\x8b\x7c\xb2\xbc\x99\xac\x2e\xf2\xc9\x49\x86\x97\xcb\x9b\x97\xab\x8b\xfc\xe5\x41\xf6\x1b\x57\x8d\xb3\xf0\xb9\x98\x5c\x5d\x5d\x5d\x4d\xd8\xfb\x91\x2a\xa0\x05\xbf\xc7\xad\xb6\x1b\xd1\x58\xd4\x86\xbd\xee\x41\x16\x5b\x08\xe2\xed\x87\x77\x07\x3d\x91\x7d\x16\x63\xfb\x95\xab\x59\xe4\x63\x27\x3f\x97\xff\xdb\x53\xe8\x4a\x37\x17\xc9\xa7\x0f\x7f\xfa\x40\x9f\x3f\x7f\xa6\x77\x7f\xfe\xfc\xd3\xdb\xbe\x5c\x47\x6d\x46\x5b\x78\x42\xd9\x17\xaa\xbe\x5f\xd3\xb9\xf8\xe9\xfd\xd4\xe8\x3b\xe8\x73\xb6\xd7\xfb\x4d\x67\xce\x93\xfc\xe2\xb1\x21\xf9\x45\x9e\xfe\x3f\xb6\xbc\xf9\x5e\x53\xae\x9e\xb0\xe4\xea\xbb\x2c\xf9\x6f\x00\x00\x00\xff\xff\xdb\x34\xe9\x45\xeb\x0f\x00\x00" + +func runtimeSyntaxAtsYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxAtsYaml, + "runtime/syntax/ats.yaml", + ) +} + +func runtimeSyntaxAtsYaml() (*asset, error) { + bytes, err := runtimeSyntaxAtsYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/ats.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxAwkYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x94\xdd\x72\xea\x36\x10\xc7\xef\x79\x0a\xc7\xa1\x3d\xf9\x18\x48\xa7\x77\xa5\x1f\x29\x01\x9b\xe3\x99\x20\x9f\x31\x6e\xca\x34\x4a\x3a\xc2\x5e\x83\x06\x59\x72\xa5\x75\x21\x9d\x7d\xf8\x8e\x20\x39\xe1\xa4\x19\xda\x9b\xfa\x62\x77\xb5\xd2\xfe\xf6\x2f\x4b\xa3\x4a\x2a\xc0\xa7\x06\x06\x81\xd8\xac\x3b\x9d\x12\x10\x0a\x1c\x74\x82\x20\x08\xfc\x94\x16\x35\x0c\x82\x90\xf3\xbe\xd8\xac\xbb\xe1\x2e\xbf\x02\x51\x82\x1d\x04\xe1\xe3\xe9\x49\xff\x62\x21\xf5\xd5\x19\xe8\x3f\x83\xcb\xf3\x6b\xb1\x59\x9f\x05\xd4\x3d\x0f\x3b\x1d\xdb\x2a\x70\x7b\x4e\x2f\x68\x2c\x34\xd6\x14\x3b\x50\xf7\x7e\xd8\xfb\x4d\xf4\xfe\xfa\xa6\xf7\xdd\xef\x27\x3f\x9f\x76\x2f\xae\x39\xef\x3d\x5c\x86\xef\x2c\x5d\x9c\x0d\xb3\xc9\x88\x86\xd9\x24\x61\x63\xef\xee\xe8\x26\x61\xd3\x74\x1c\xd1\x28\x65\x77\xf1\x34\xa7\x88\xdd\x25\x59\xca\x28\xca\x32\x96\x52\x9c\x44\xb7\xe3\x5f\x93\x71\xfe\x71\x76\xce\xf9\xe2\x7d\x66\x9c\xdc\x46\x6c\x38\x8d\x28\x66\x19\xc5\x33\x4a\x26\x2c\xcd\xa2\xd1\x70\x16\xd1\x6d\xc2\x72\x62\x31\xb1\x8c\x52\x4f\x4f\xe3\x19\xa5\xd9\x11\xd6\xa7\x2c\x1d\x25\x2c\x4e\x29\x9b\x51\x96\x53\x36\xcb\x87\xde\xdd\x46\x6c\x92\x7f\xa4\xd9\x2f\x37\xb3\xe8\x13\xe5\xd1\x3c\x1f\xa7\xd3\x61\xc2\x0e\x41\xb2\x04\x8d\xb2\x92\x60\xfb\x85\x12\xce\x3d\x13\xab\x56\x17\x28\x8d\x26\xd8\x22\x68\xe7\xa3\x9b\x68\x92\x30\x8a\xd8\xf8\xb0\xdc\x3d\xd5\x0b\xa3\xfa\xa6\x01\x2b\xd0\xf8\xd3\xb8\xe7\xbc\x77\x79\x71\xf5\xd5\x23\x9d\xfc\xf8\xf5\x0f\x3f\x5d\x7f\x3f\x78\x20\xce\x39\x27\xce\xef\x89\xf3\x87\xcf\x95\x28\x10\x6a\xd0\x38\x08\x9e\x5b\x1a\x4b\xb2\xa2\xcd\x4a\x2a\xa0\xd2\x10\x28\x07\x24\x35\x95\xa0\x00\x81\x60\x2b\xf1\x8b\xce\x0d\x14\x52\xa8\x97\xea\x85\x05\xb1\xa6\xc2\x68\x94\xba\x05\xb2\x80\xad\xd5\x5f\xac\x7f\xed\xb7\x2b\x28\x94\x71\x40\x4b\x40\x25\x35\x90\x86\x2d\xee\x8c\xbf\x6d\xd4\x58\xa9\x71\x6f\x2b\x72\x4f\x0e\xa1\xa6\xaa\x52\xad\x5b\x1d\x23\x0a\x14\xfa\x5b\x2a\x8c\x23\xd8\x36\xe4\x09\xca\x2c\xc9\x0a\x5d\x92\x93\x9a\xdc\x1f\x16\xc9\xf9\xe1\x51\x88\x33\x16\x69\x67\x25\x2d\x41\xbb\x76\x41\x4b\x6f\xa4\x2e\x61\x4b\x0a\xf4\x12\x57\x54\x0b\x2c\x8e\x6a\x71\x8d\x92\x48\xee\x65\x0b\x68\xd1\xe8\xb6\x26\x0f\x72\xed\xc2\xa1\x25\x34\xca\x6c\xc0\xfb\xb6\x69\xc0\x1e\x83\xd5\x6b\x94\x35\x78\x4a\xb5\x0f\x9e\x9c\xf7\x47\xb7\xa1\x4b\x2a\x4c\xdd\x28\x52\x6e\x25\x2b\x24\x63\xc9\xee\xa3\xad\x39\xda\x6c\x21\x75\x89\xb0\xc5\xd2\xd4\xc2\x9f\x7e\xb1\x04\xf4\x63\x2a\x0b\xfd\x1c\xbe\x7f\x0d\x82\xf0\xaa\x7f\x71\xff\xe8\xef\xda\xc3\x55\xd8\x79\x9e\x2f\x8c\x76\x28\x34\xf6\x1d\x5a\xa9\x97\xfb\xa7\xc0\x7f\x0e\x85\xdd\xf5\x0c\xc3\xcf\x39\xd0\xe5\x9b\x8c\x5b\xcb\x66\x27\x8c\xf3\xfe\x6b\xf6\xe0\x55\x79\xf9\x0e\x3b\xed\x25\x8d\x56\xc2\xbe\x96\xfe\x57\x39\x1f\xde\xaa\xf9\xf0\x7f\x8a\xa9\x77\x3f\xfe\x1f\x22\x4e\xdf\x8a\xe8\xfe\x4b\x3b\x34\xa5\x19\x04\xe1\x59\x9e\x8e\x53\x9a\xcf\xe7\x14\x27\xf3\x69\x74\x3e\xb8\x0e\x3b\x9d\xbf\x03\x00\x00\xff\xff\x75\x88\x25\x4c\xdb\x05\x00\x00" + +func runtimeSyntaxAwkYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxAwkYaml, + "runtime/syntax/awk.yaml", + ) +} + +func runtimeSyntaxAwkYaml() (*asset, error) { + bytes, err := runtimeSyntaxAwkYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/awk.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxCYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x54\x4d\x93\xdb\x36\x0c\xbd\xfb\x57\xa8\x6a\x5a\x8b\x76\xec\x75\x92\x4e\xda\xb8\x1f\x9e\x5e\x7a\xca\xf4\xd6\x4b\x45\xad\x86\xa2\x20\x0b\xb3\x14\xa9\x21\x41\xdb\xdb\x20\xff\xbd\x43\xd9\xeb\x75\xb7\x99\xe8\x20\x89\x04\x1e\x01\x3c\x80\xaf\x43\x03\xf4\x38\xc2\x36\xd3\xcb\xe5\x6c\xd6\x02\x81\xa6\x6d\x36\xcb\xb2\x2c\x4b\x36\xab\x06\xd8\x66\xb9\x94\x6b\x5d\x68\x1e\x47\x3e\x9d\xc4\x2b\x96\x72\xdd\x17\xfd\xed\x12\x71\x37\x7d\x8b\x16\x3a\xf1\x2a\x9f\xcd\x7c\x34\x10\xb6\xd3\x39\xab\x0c\x5b\xb0\x84\x1d\x82\x9f\xce\x6a\xca\xdf\x57\x7f\xd7\x55\xb9\x59\x7d\x98\x7e\x96\x52\x36\xf9\xc5\xf5\x9c\x4c\x72\x2a\x54\x24\xc7\x9d\x71\x8a\xb8\x75\xb1\x31\xc0\x8d\x73\x86\x75\xaf\x3c\xa3\x25\x0e\xbd\xf3\xc4\xc6\xd9\x3d\x07\xfc\x07\x5c\xc7\x60\xe3\xc0\x07\x87\x2d\x07\x52\x84\x9a\xb5\xb3\x81\xce\x6f\x38\x8d\x9e\x03\xf9\xa8\x89\xa3\x45\x67\x39\x85\x6a\xa1\x63\x38\x11\x78\xcb\x45\xb4\x62\x17\x70\x6f\xa1\x65\xb4\x06\x2d\x88\x2f\xe7\x55\x84\x5d\x8a\x27\xb8\x28\x62\xbd\x13\x3b\xb4\x54\xfc\xc4\x6f\xde\xf3\xbb\xb7\xfc\xfe\x07\x1e\xc9\x0b\x21\x6a\xba\x01\xa7\x6c\x60\x00\x4b\x97\x13\xb4\x51\x21\x70\xe2\x36\x8c\x4a\x03\x13\x0c\xa3\x51\x04\x3c\xc6\xc6\xa0\xe6\xd1\xbb\xd4\x07\x68\x79\xf4\x78\x48\x86\x14\x3e\xf9\x33\xf5\x18\xb8\xf3\x08\xb6\xe5\x03\x7a\x8a\xca\x70\x0c\x68\xf7\x3c\x44\x52\x89\xa4\x83\x33\x8a\xd0\x00\x7b\xd8\x63\x20\xf0\x0c\xa7\xd1\xa0\x46\x12\x5f\x49\xa9\x73\x9e\xb1\xe3\x63\x9f\x90\xad\x63\x30\x01\x58\xab\x00\xdc\x42\xa7\xa2\x21\x0e\x47\x24\xdd\x7f\xed\x0c\xf2\x8f\x4c\xbd\x77\x47\xd6\x8a\x74\xcf\x6e\x04\xaf\xc8\x79\xb6\x70\xe4\x16\x0c\xd0\x7f\x28\x0d\x23\x68\x54\xe6\x02\xde\x3b\x72\xa9\x53\x84\x36\x02\x37\x1e\xd4\x03\x7b\xa0\xe8\xed\x2d\x66\xf4\x30\x7a\xa7\xb7\x59\x7e\x5f\x96\xdb\x89\xbd\x6d\x55\x2d\xbe\xbd\x5d\xa4\x19\x44\x0b\x3c\x7a\xb5\x1f\x14\xa3\xd5\x26\xb6\x90\xfa\xcb\xd8\xd9\x9d\x98\x7a\x6e\x5b\xec\x18\x4c\x81\x1d\x07\x10\x53\xe9\xca\xdb\xc4\x23\x78\xef\xbc\x78\x0a\x38\xcd\x8e\x9a\x4a\x9c\x17\xe5\xfd\x5c\x4a\x29\x2b\x2e\xd2\xa7\x94\xf9\x5c\x35\x9d\xf5\x74\x98\x76\x85\x98\xf3\x64\x2f\x8a\x72\xb3\x7a\x57\xed\xca\xcd\xea\xc7\xea\xd3\x9b\xd7\x6f\x3f\x5f\x4d\xa7\xf3\xd0\xff\xa1\x56\xdd\xd9\x32\xff\x12\x99\x75\xad\x88\x3c\x36\x91\xa0\xae\x6f\x4b\x93\xb2\x90\xb2\x28\xef\x45\xfa\x15\x52\x0a\xae\xeb\x42\x99\xf3\xd0\xaa\x30\x70\x13\xd1\x10\x5a\xee\xb1\x6d\xc1\x5e\xe6\x98\x47\xa5\x1f\xa0\x65\x0f\x81\x3c\x6a\xe2\x00\x9a\x9e\x6e\x80\xeb\xf8\x08\xea\x41\xd4\xf5\x35\x93\xc7\xa1\x71\x66\xfd\xd4\xbd\x6d\x96\x97\xeb\xed\xcf\xaf\x97\x0b\xfe\xf5\x1b\x29\xbf\xab\xf8\x17\xfe\x8d\xef\x78\xc5\xdf\xbf\x40\x34\x3e\xc5\xa1\x90\x10\x85\xf8\xf4\xb9\x62\x29\x4b\x96\xb2\x7a\x49\xe6\xda\xc6\xa1\xb9\x8a\xc1\x66\xf5\x61\x92\x00\x96\xb2\xd9\xdc\x12\x74\xab\x0b\x57\x68\xd2\x80\xeb\xbc\x45\xe0\x4e\x99\x30\x8d\x15\xff\xf9\xd7\xc7\x8f\xff\x73\x4f\x15\xdb\x7d\x02\xe4\x53\xd3\xd6\x5c\xde\xcb\xbc\x12\x0b\x99\x3f\xfb\x0e\x17\xde\xef\xee\xd6\x8b\x97\xbb\xd3\x32\x3d\x81\x94\x9f\x9c\xa4\xbc\x38\xa5\x07\x6c\x3b\x65\xb3\xb8\x7b\xde\x3b\x6b\x5f\x56\x56\xb3\x27\xfd\xb3\x49\x00\x57\x49\xb9\xd6\xc7\x1e\xe9\x7c\xed\x13\x4d\xcf\xbd\x5d\xbe\xca\x67\xff\x06\x00\x00\xff\xff\xa1\x4e\x79\xc7\x8e\x05\x00\x00" + +func runtimeSyntaxCYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCYaml, + "runtime/syntax/c++.yaml", + ) +} + +func runtimeSyntaxCYaml() (*asset, error) { + bytes, err := runtimeSyntaxCYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/c++.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxCYaml2 = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x54\xdd\x6e\x1b\x37\x13\xbd\xd7\x53\xec\xb7\xf1\x57\x91\x76\x24\x2b\x49\x91\x36\xdb\x1f\xa1\x50\x9b\xb6\x40\x5a\xdf\xb4\x80\xd1\xa5\xbc\xe0\x92\xb3\x12\x61\x8a\x5c\x90\xb3\xfe\x69\x26\xef\x5e\x70\xb5\x8a\x04\xd9\x70\x83\x54\x37\xe2\x0e\xe7\xf0\x1c\xce\x1c\x4e\x63\x2c\xe0\x7d\x0b\x45\xa6\x46\x23\x0d\x08\x0a\x8b\x51\x96\x65\x59\xda\x70\x72\x03\x45\x96\x33\x21\xa6\x4c\xd1\x82\x9f\x50\x5a\xad\xe9\x97\xed\xca\x98\xf9\x36\xa2\xa1\xe1\x27\x3c\x1f\x8d\x42\x67\x21\x6e\xf1\x93\xcc\x68\x70\x68\x1a\x03\xa1\xc8\x72\x21\xea\xf2\x87\xc9\x5f\xd5\xb2\x9c\x4d\xde\xf4\x8b\x33\x21\xea\x3c\x1b\x72\xb7\x12\x52\x16\x6b\xac\x97\x48\xda\x77\xb5\x05\x52\x6b\x19\xc8\x38\xa4\xb8\xf6\x01\xc9\x7a\xb7\xa2\x68\xfe\x06\xdf\x10\xb8\x6e\x43\x37\xde\x68\x8a\x28\xd1\x28\x52\xde\x45\xa4\x88\xa1\x53\x48\x9d\x33\xde\x51\x3a\x56\x43\x43\x70\x87\x10\x1c\xb1\xce\xf1\x79\x34\x2b\x07\x9a\x8c\xb3\xc6\x01\x4f\x22\x1e\x6a\x60\x71\x9e\x58\x38\x31\xd6\x55\x73\x3e\x37\x0e\xd9\xd7\xf4\xe2\x35\xbd\x7a\x49\xaf\xbf\xa4\x16\x03\xe7\xbc\xc2\x23\xf0\x34\xd1\x38\x0d\x7a\x38\xa5\xf6\xde\x1e\x12\x24\x9d\xb0\x01\x87\xc3\x7e\xc2\xa4\x12\xd3\xa6\x43\x99\x6e\x7b\xe3\xad\x44\x63\x81\x02\xac\x4c\x44\x08\x04\x77\xad\x35\xca\xe0\x53\xc7\x34\x3e\x90\x69\xe8\x76\x9d\x90\xda\x13\xd8\x08\xa4\x64\x04\xd2\xd0\xc8\xce\x22\xc5\x5b\x83\x6a\xfd\xa4\x94\x70\x4f\xb8\x0e\xfe\x96\x94\x44\xb5\x26\xdf\x42\x90\xe8\x03\x69\xb0\x80\xf0\x14\x74\xe5\xd1\xa7\xda\xa3\x71\x1d\x50\x1d\x40\x5e\x53\x00\xec\x82\x3b\x44\xb5\x01\xda\xe0\x55\x91\xe5\x57\x65\x59\xc4\x56\x2a\x28\x96\xcb\xd3\x67\x87\x1f\xc9\x47\xc6\x01\xb5\x41\xae\x36\x92\x8c\x53\xb6\xd3\x90\xba\x46\xa6\x71\x73\xde\x77\xd2\x69\xd3\x10\x58\x66\x1a\x8a\xc0\xfb\x8b\xcb\xe0\x8c\x5b\x11\x84\xe0\x03\xdf\x11\xf6\x6e\x90\xbd\xca\x31\x2b\xaf\xc6\x42\x08\xb1\x24\x96\xfe\x4a\x91\x8f\x65\xdd\xb8\x80\x37\x7d\x94\xf3\xf1\x63\xa8\xb4\xc7\x58\x39\x9b\xbc\x5a\xce\xcb\xd9\xe4\xab\xe5\xfb\x17\xcf\x5f\x7e\x78\x22\xf9\x6e\xeb\xed\xb7\x72\xd2\x6c\x73\x87\xcc\x2c\x7b\x96\xfd\xbc\x58\x64\x75\x67\x2c\x1a\x17\x1f\x29\x64\x55\x49\xc4\x60\xea\x0e\xa1\xaa\x0e\x6b\x22\x04\x13\x82\x95\x57\x3c\x2d\xb9\x10\xfc\xb1\x36\x54\x15\x93\x76\x6b\x6b\x19\x37\x34\xf0\xd0\xda\x68\x0d\x6e\x70\x3a\xb5\x52\x5d\x83\xa6\x00\x11\x83\x51\x48\x11\x14\xee\xde\x88\x6f\xe8\x16\xe4\x35\xaf\xaa\xbd\xe2\x8b\xc1\x02\xd9\xc2\x5b\x1f\x76\xac\xf7\x9b\xda\xdb\xe9\xce\x1e\x69\x38\x94\xd3\xe2\x9b\xe7\x67\xa7\xf4\xdd\xff\x84\xf8\xff\x92\xbe\xa5\xef\xe9\x9c\x26\xf4\x05\xff\xf8\xb8\x07\x50\x1d\x92\x02\x8c\x45\x96\x97\x8c\xbf\xff\xb0\x24\x21\x4a\x12\x62\x79\x5c\xcf\xa9\xeb\x36\x75\x3f\x35\x58\x1a\x1b\xb3\xc9\x9b\x7e\x58\x90\x10\xf5\xec\xb0\xc6\x29\xf8\xa0\xdf\x7b\xf0\xef\x7f\xbe\x7b\x97\x8f\x8e\xb7\xd3\xed\xdd\xaa\x18\xae\x99\xa5\x3a\x86\xde\xca\x79\xfe\x31\x06\x4e\x1f\x45\xe2\xb5\x69\x7b\xbf\x0b\x31\xdd\x47\x0f\xc6\xdd\xee\x77\xc8\xd4\x82\x32\xd2\x2e\xd6\x32\xec\xa1\x9f\x2a\x67\x7c\xac\x66\xfc\x59\x62\xf6\xcf\x6e\x3a\x3d\xcb\x3f\x4f\xe9\xa6\x77\xd9\x03\x85\xe7\xe7\xc7\x12\x4f\xfe\x45\x0c\x7a\xed\x53\x53\xff\xb8\xf8\xf1\x82\x2e\x2f\x2f\xe9\xed\xaf\x97\xbf\xfd\xc4\x8b\xf9\x27\x90\x09\x71\xfa\xa0\x3f\xe2\xf4\xfc\x3f\x30\xfe\x13\x00\x00\xff\xff\xa4\xc8\x98\x2d\xfa\x06\x00\x00" + +func runtimeSyntaxCYaml2Bytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCYaml2, + "runtime/syntax/c.yaml", + ) +} + +func runtimeSyntaxCYaml2() (*asset, error) { + bytes, err := runtimeSyntaxCYaml2Bytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/c.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxCaddyfileYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x8f\x41\x6e\x83\x30\x10\x45\xf7\x3e\xc5\xc8\x25\x12\x94\x84\xee\xd9\x64\x91\x23\x74\xc9\x10\xc9\xc2\x93\xd6\x2a\x38\x96\x3d\x55\x14\x91\xdc\xbd\xb2\x09\x4d\x45\xab\x66\x16\x20\x7f\x3d\xcf\x7f\x3e\x98\x9e\xf8\xec\xa8\x86\x4e\x69\x7d\x8e\x47\x21\x34\x31\x75\x5c\x0b\x00\x80\x98\x58\x35\x50\x0d\x72\x37\x13\x52\x08\xff\xd9\x53\x98\x88\x0d\x18\x4d\x96\xcd\xc1\x90\xaf\x41\xee\x11\xc3\x33\xe2\x6b\x99\x23\x86\x4b\x56\xc8\x1b\x34\xb5\xc8\x7d\xde\x20\x9e\xaa\xfa\x65\xd3\x96\xeb\x2d\x6c\x8b\xb2\x59\x8f\x6d\x36\x53\xdd\xd1\x06\x56\x96\xab\xe0\xa8\x33\xaa\xdf\xbd\xab\xb8\x14\x31\x8c\x8f\x98\x54\x7c\xfd\x83\x62\x6f\xec\xdb\xe4\x1a\x27\xb0\xf2\x1c\x77\x4a\xf9\x9d\x91\xd5\x8b\x24\x7c\x18\x97\x8a\x11\xab\x7b\xfa\xe3\xd9\xf3\xfc\xe3\x9c\xae\xde\x74\x9c\x27\xe7\x8f\x5d\xca\xc7\x1c\xf1\x54\x5e\x10\xb3\xf4\x5f\xc5\xef\xaa\x40\xbc\xde\xdd\x87\x81\x2c\xff\x76\x7e\x5a\x2a\x67\x4b\x37\x68\x5a\x21\xbe\x02\x00\x00\xff\xff\xde\x9c\x93\x00\xd6\x01\x00\x00" + +func runtimeSyntaxCaddyfileYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCaddyfileYaml, + "runtime/syntax/caddyfile.yaml", + ) +} + +func runtimeSyntaxCaddyfileYaml() (*asset, error) { + bytes, err := runtimeSyntaxCaddyfileYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/caddyfile.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxClojureYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x53\xd1\x6e\xd3\x30\x14\x7d\xcf\x57\x58\x61\x12\x09\x23\x5d\xd9\x26\xd0\x82\x20\x9a\x0a\x93\xf6\x80\xf6\xc0\x84\x2a\xe2\x3c\xd8\xce\x4d\xea\xcd\xb1\x23\xdb\x01\x0a\xe6\xdf\x91\x9d\xd0\x46\xed\xa4\xf5\xc5\x3e\xb7\xe7\x9c\x7b\x7c\x1d\x37\x5c\x80\xdd\xf6\x90\x23\x26\xd4\xc3\xa0\x21\x8a\x6a\xb0\xc0\x6c\x1e\x21\x84\x90\xff\x5b\x92\x0e\x72\x14\x63\xbc\x48\x98\x78\x28\x0d\xab\x8a\xf4\x24\x8e\x22\x3d\x08\x30\x79\x14\x78\x2f\xd0\x4a\x49\x63\x89\xb4\x26\xe0\x0c\xb1\x09\x2f\xa8\x52\x22\xc8\x69\x62\xf5\x00\xae\x21\xc2\x40\x8a\x31\x8d\x0f\x99\x1d\x61\x5a\x4d\x54\xc9\xc5\x9e\xe3\xfd\xbf\x11\xc1\x6b\x24\x87\x8e\x82\x3e\xea\x31\x96\x73\x14\x97\x18\x67\x55\x51\x2e\xb3\xab\xea\xb4\x78\xaa\xc7\x8e\xb9\xfc\x15\x58\xe5\x75\x76\x43\xb2\xe6\x39\xf6\xe8\x9b\x5c\x94\xcb\xec\x6d\xe5\xce\x83\xd4\xbd\x19\x97\xf2\x3c\xbb\xaa\x52\xed\xc1\x75\xf6\x7d\xee\xe4\x73\xdf\xca\x1f\x4f\x24\x07\xad\xd5\xcc\xb7\xbc\xf4\x51\x82\xdb\x45\xf9\x2e\x78\xbb\xe5\x91\xe5\xce\xf3\xeb\xb6\xa3\x4a\xfc\xf7\x32\x01\x2d\x54\x0f\x9a\xd8\xd1\xf5\xc3\xc7\x53\x8c\xb3\x57\x67\x2f\x8b\x6a\x26\xbb\xdf\xf6\x60\xce\x18\x31\x96\xcb\x76\x12\x8f\x77\x1f\x46\x4e\xb7\x16\x9c\xd9\x28\x6d\x5d\x42\x79\x9b\x16\x5c\xda\x04\x5a\xd0\x69\xe1\x84\x92\xad\x6b\x84\x22\xd6\xc9\xa1\x73\x94\xb7\x35\x30\xa7\x89\xe5\x4a\x12\xc1\x7f\x4f\x17\xba\x4f\x68\x35\x97\x2d\xda\xf0\x76\x23\x78\xbb\x99\x35\xdc\xcd\xd6\x04\x4a\x3e\x49\x10\x32\x96\x68\xeb\xa3\xc4\xf1\xae\x06\xb2\x3e\xa8\x98\x47\xde\x87\xbc\x18\x2f\xf6\xd5\xe9\x53\x44\xb3\xdf\xbc\x53\x0f\x8c\x13\xb1\xda\x10\x3f\x9c\xc4\x6b\x87\x71\xb4\x8d\xbf\xfa\x3f\x97\xaf\x2f\xff\x3a\x5f\x95\xf0\x53\x70\x09\x61\x6f\x7a\xc2\xc6\x9d\x25\x34\xac\x8d\xd2\x5d\x03\x50\x07\x40\x09\x7b\xdc\x53\x34\xd8\x41\xcb\xb0\x5d\xa4\xb3\x31\xac\x54\xd7\xc1\xfc\x4d\x04\x78\x7c\xe6\xf7\x87\x47\x3e\x79\xe6\x6c\x56\xd5\xfe\xa5\x24\xf7\x77\x9f\xee\xdc\x7a\xbd\x76\x37\xb7\xeb\x2f\x9f\xd3\xbc\x88\xa3\xe8\x5f\x00\x00\x00\xff\xff\x3b\xf2\x1f\x92\xd3\x03\x00\x00" + +func runtimeSyntaxClojureYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxClojureYaml, + "runtime/syntax/clojure.yaml", + ) +} + +func runtimeSyntaxClojureYaml() (*asset, error) { + bytes, err := runtimeSyntaxClojureYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/clojure.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxCmakeYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x53\xdf\x6f\x9b\x3c\x14\x7d\xe7\xaf\x40\x7c\x95\x0a\xdf\xa7\x46\xf9\x36\x69\x5b\x79\x89\x28\x71\x53\x24\x7e\x64\x40\x9b\x64\x71\x86\xa8\xb9\x59\xbd\x10\x83\x8c\xb3\x75\xea\xdd\xff\x3e\x41\x92\x2e\x4b\x2a\x6d\x2f\xf3\x0b\xf8\xda\xf7\x9c\xa3\xe3\x73\x97\xbc\x04\xf5\xad\x06\x5b\x67\xeb\x7c\x05\x9a\x56\x80\x02\xa6\x6c\x4d\xd7\x75\xbd\x3d\x14\xf9\x1a\x6c\xdd\x30\xdd\x20\x5f\x81\xcf\x1b\xd5\x50\xda\x53\x8f\x0a\x29\xed\x75\x2d\xd6\x99\xa1\x69\x72\x53\x42\xb3\x6d\xba\xd0\x79\x01\x42\xf1\x25\x07\xd9\xfb\x92\x4b\x5b\x37\x3e\xce\xe7\x76\x53\xe7\x0c\xec\xc5\xe2\xdf\xb9\x73\xf1\xa1\x7f\x71\x99\x2d\xfe\x33\x76\xf7\x6b\x09\xb5\xac\xd8\xf1\x45\x93\x0b\x56\x6e\x0a\xc0\xdd\x37\x2b\xb8\x04\xa6\x2a\xc9\xa1\x79\xae\xc1\xa3\x02\x29\xf2\x32\x5b\x37\xb5\xac\x3e\x03\x53\x16\xa5\xf7\x86\xb6\x83\x6e\x54\xae\x60\x0d\x42\x1d\x83\x53\x7a\x6f\x9a\x50\x36\x80\x20\x0a\x6b\xc0\x97\xd8\x6d\xcc\x6e\xf7\xf5\x81\x97\xfb\xff\x65\x25\x21\x67\x0f\x78\x2f\x21\x5f\x6d\xb1\x4f\xa1\x5b\x34\x37\x1a\xcf\x30\x8c\x52\x74\xa3\x20\x70\xc2\x21\x8e\xe3\x68\x4c\xe2\x74\x86\xe3\xc8\xf7\xdc\x19\xa6\x4e\x3c\x22\x29\x92\xa9\x97\xa4\x09\x7a\x49\x66\x0e\xbd\x98\xb8\x69\x14\xcf\xd0\xb9\x4a\x22\xff\x36\x25\x16\x0e\xc9\xb5\x17\x92\x61\xcb\x74\xa0\xf7\x25\xd2\x83\xe3\x96\x3f\x8a\xb1\x65\xf5\x92\x2c\x24\x13\x12\x67\xe9\x8d\x13\x62\xe0\xa4\xee\x0d\x49\xd0\x4c\xd2\x18\xef\x48\x9c\x78\x51\x98\x59\x03\xd3\x27\x49\x82\xa3\x98\x38\x29\x89\x91\xbc\xbf\x75\x7c\xeb\x84\x71\x4f\x59\x03\xe3\x79\xf9\xb2\x81\xad\x43\xe6\x72\x23\x98\xe2\x95\xc0\x75\xce\x64\x65\xa1\x04\xb5\x91\xc2\x7a\x46\x60\x95\x68\x54\x2e\x54\xaf\x51\x92\x8b\x4f\xdb\x98\xb4\xab\x51\xb9\xec\xec\x33\x8c\xe7\x1a\x88\xe2\xa8\xd2\xac\x78\xdd\x79\x4c\x69\xef\x67\xf5\x20\x71\xfb\x75\xc8\xb4\x15\xed\x3e\x74\xf9\xdb\xb5\xfe\xa9\x9c\xf3\x63\x35\xe7\x7f\x4f\xcc\x3e\xfb\xa7\x9e\xd0\x33\x93\xd2\x27\x24\xe1\x1d\xa5\x4f\xd6\x89\x41\xf4\xfb\x31\xbd\x3e\x5f\x68\xa7\x13\xd8\xbd\xc9\x2e\xa2\xce\x78\xec\x13\xbc\x0d\xbd\x29\x4e\xbc\xf0\xf5\x2b\x74\x67\xa3\x89\x17\xe2\x55\x14\xfb\x6d\x76\x02\x2f\x1c\x4d\x30\x48\xee\x5c\x33\xf3\x86\x04\xdf\xf4\xf1\xed\xff\xf8\xae\x8f\x97\x7d\x6b\xf0\xcb\x5c\xb1\x6a\xdd\xa5\xf0\x44\xf6\x3f\xc7\x42\xcf\x7e\xe3\x92\xaa\x8a\x56\x9e\x99\x46\xc3\x08\xa7\xd3\x29\x5e\x7b\xd3\x80\x58\xf6\xc0\xd0\xb4\x1f\x01\x00\x00\xff\xff\x28\x8d\x1c\xb5\x9d\x04\x00\x00" + +func runtimeSyntaxCmakeYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCmakeYaml, + "runtime/syntax/cmake.yaml", + ) +} + +func runtimeSyntaxCmakeYaml() (*asset, error) { + bytes, err := runtimeSyntaxCmakeYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/cmake.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxCoffeescriptYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x52\xcd\x8e\xd3\x4c\x10\xbc\xfb\x29\xfc\xf9\x5b\x21\x67\x91\x03\x57\x46\xb0\x80\xf8\x91\x38\xa0\xbd\x70\x88\x88\xad\xd5\x78\xa6\x27\x1e\x65\xd2\x6d\xcd\xb4\x15\x8c\xfa\xe1\x91\x93\x6c\xfe\x16\x2d\x7d\xb2\xda\x3d\xd5\x55\xd5\xe5\x7c\x00\x1e\x7b\x50\xb9\x21\xe7\x00\x92\x89\xbe\xe7\x2c\xb3\xc0\x60\x58\x65\x79\x9e\xe7\xd3\x0c\xea\x0d\xa8\xbc\xa8\xeb\xf9\x7e\xee\xa6\xc8\xb2\x38\x04\x48\xfb\x91\x2a\x4f\xe3\xa6\xa5\x30\xa7\x1e\xa2\x66\x8a\x2a\x2f\x96\xff\xbd\x90\x77\xaf\x6e\x5f\x56\x6f\xef\x1a\xa9\xeb\xb6\xd4\x68\x85\xa2\xf8\x24\x3e\x21\x0b\x12\xcf\xea\xba\x2d\x0e\x00\xde\x02\xb2\x77\x1e\xe2\xdc\x04\x9d\x92\xca\x8b\x72\xf9\xb1\xfa\xa9\xab\xdf\x0f\xcd\xe1\xe3\x75\xf5\xe6\xa1\xb9\x55\xcb\xa5\x4a\xbd\x36\xa0\x9a\xe6\xb6\xac\xee\xa4\xae\xcb\x99\x54\x77\xb3\xe2\x92\x4b\x1b\xb5\x59\x03\x4f\x48\xcb\x72\xd6\x1c\xff\xb2\x66\xd8\x00\xb2\xca\x27\x41\x6d\xe9\x28\x0a\x39\x31\x84\xec\x71\x00\x69\x23\xe8\xf5\x81\xe3\x10\x82\x0c\x18\x20\x25\xe1\xce\x27\x81\x90\x40\xbc\x93\x08\x3c\x44\x3c\xe7\xff\x04\x96\xe3\x28\x46\xb3\xe9\xc4\x79\xd4\x21\x8c\xc2\x5d\xa4\xad\x20\x6c\xc5\x42\x00\x06\x99\x9c\x27\x27\x1e\xc5\x63\x62\x8d\x06\xc8\x3d\x8b\x69\xa1\x1d\x56\x2b\x88\x92\xb6\x7e\x42\xde\x76\x3e\x80\x58\x92\x9d\x65\x02\xbf\x18\xd0\x26\x49\x43\x0f\xf1\x59\xa0\x01\x2d\x38\x8f\x60\x85\x3b\xc0\x47\x89\x03\xb2\x0f\x12\x88\xfa\xc9\x90\x76\x94\x6d\x07\x17\x22\x0d\xed\x78\xf2\xbc\x25\x0a\x27\xa1\x03\x88\xd3\x93\x33\x23\x24\x41\x12\x42\x21\xe7\xfe\x7e\x5d\x95\x17\x1f\x2e\xce\x59\x64\xd7\xe0\x89\xa3\xc7\xd5\x3e\x59\x53\x25\xd6\x91\xa7\xf4\x15\xc5\xb1\x07\x68\xaf\x3a\x69\xed\xfb\x5d\x44\xeb\x7a\x7e\xea\x9e\x85\xf4\xb1\xce\x37\xf5\x60\xbc\x0e\x9f\x3a\x1d\x4f\x4f\x8f\x74\x36\x3b\xc7\x9e\xd0\xf8\xff\x9a\xc5\xcd\x3f\xd6\x31\x59\x9a\xe2\xfc\xe3\xfe\xf3\xbd\x2c\x16\x0b\xf9\xfa\x6d\xf1\xfd\xcb\x4c\xbd\x2f\xb2\xec\x4f\x00\x00\x00\xff\xff\x82\xe2\xd1\x55\x81\x03\x00\x00" + +func runtimeSyntaxCoffeescriptYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCoffeescriptYaml, + "runtime/syntax/coffeescript.yaml", + ) +} + +func runtimeSyntaxCoffeescriptYaml() (*asset, error) { + bytes, err := runtimeSyntaxCoffeescriptYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/coffeescript.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxColortestYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x64\x8f\x31\x8a\xc3\x30\x10\x45\x7b\x9d\x62\x10\xdb\xee\x05\xd4\x2d\x5b\x2d\x2c\x21\x45\x4a\x35\x92\xfc\xe3\x98\xc8\x76\x90\xc7\x04\xdf\x3e\xc8\x32\xf6\x18\x75\xf3\xff\x7b\x48\x33\xf7\x2e\x82\x97\x17\x0c\x85\x31\x8e\x89\x31\xb1\x52\x0d\x18\x81\x8d\x22\x22\xca\xc2\xe0\x7a\x18\xd2\xbf\xd9\xb8\x61\xe2\x2f\xad\x54\x9a\x23\xa6\xa2\x7c\x93\x8f\x2e\x3c\x0d\x69\x6b\xfd\xf5\xff\xe7\xef\x62\xad\xd7\x1b\x4a\x68\x0a\x48\x68\x44\xdd\x26\x60\x28\x60\x1d\x05\x5a\x10\xe3\xf8\x2e\xac\xcc\x02\xfa\x38\xa3\xa0\x3c\x09\xd0\xbb\x16\x03\xbb\xc2\xb6\x20\x70\x58\xdc\xf6\x5d\x9e\xe4\x83\xa9\x6b\x1f\xbc\x6f\xb9\xc7\x4a\x11\x1b\x8b\xa2\xd2\xe4\xf6\xb2\xa9\x44\x71\xc9\x9e\x2b\xe9\x74\xd5\xa9\xaa\xd4\xe3\xc2\x23\xaf\xd2\x27\x00\x00\xff\xff\xcc\x8b\xc4\xc2\xe3\x01\x00\x00" + +func runtimeSyntaxColortestYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxColortestYaml, + "runtime/syntax/colortest.yaml", + ) +} + +func runtimeSyntaxColortestYaml() (*asset, error) { + bytes, err := runtimeSyntaxColortestYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/colortest.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxConfYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8d\x31\x0e\xc3\x20\x0c\x45\x77\x9f\xc2\xa2\x59\xcb\x01\x58\x7a\x90\x90\x01\x11\x53\xa1\x06\x27\xc2\xee\xd0\xdb\x57\x14\x29\x95\x68\x19\x1f\xfe\xef\xa5\xbc\x91\xbe\x0e\x72\x18\x77\x4e\x00\x2b\x29\x45\x75\x80\x88\xd8\xfe\x38\x14\x72\x68\xbc\xb7\x71\xde\x97\x1b\xa7\xc9\x00\xd4\xe7\x46\xd2\x6f\xae\x6d\x27\x1a\x58\xad\x68\xcd\x7c\xef\xb8\x3d\xd1\x50\xb5\x6d\x8d\x39\x19\xf1\x3a\x10\x79\xe4\xe3\x13\xf0\xde\x7e\x69\x2f\xe0\xbc\xc0\x59\x29\x85\x58\x7f\xed\x97\x51\x3e\xfd\xb5\xbc\x03\x00\x00\xff\xff\x7f\xd4\x74\x86\xe8\x00\x00\x00" + +func runtimeSyntaxConfYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxConfYaml, + "runtime/syntax/conf.yaml", + ) +} + +func runtimeSyntaxConfYaml() (*asset, error) { + bytes, err := runtimeSyntaxConfYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/conf.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxConkyYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x59\x49\xaf\x1c\xb7\x11\xbe\xeb\x57\x8c\x9f\x85\xc0\x72\x20\xc1\x96\x37\x59\x59\x9c\x20\xc8\x35\x27\x23\x08\xe2\x76\x98\x6a\xb2\xba\x9b\x18\x6e\xe2\x32\x8b\x4d\xff\xf7\xa0\x8a\x64\xcf\x8c\xe4\xdc\x82\x1c\x5e\xd7\x57\x1f\xd7\x61\x17\x6b\xe9\xb7\x68\x83\xf9\x1a\xf0\xed\x41\x7a\x77\xbc\x3e\x7b\xa6\x30\xa3\xcc\x6f\x9f\x1d\x0e\x87\x03\x35\x3a\xb0\xf8\xf6\xf0\xf4\xc9\x34\xbd\xfa\x94\xbb\x44\xf9\xea\xd3\xe7\x95\xe1\x2b\xe9\xdd\xf2\xe2\xe9\xd9\xb3\x58\x0c\xa6\x36\xe6\xe5\xa1\x4d\xf7\x34\x4d\xf3\x27\x60\xf4\xea\x2c\xba\x5c\x21\x04\x74\x4a\xd0\x8c\x75\x06\x79\x5c\xa3\x2f\x4e\xd5\xd9\x47\x85\x51\x68\xe7\x30\x0a\x0b\x71\xd5\x6e\x70\xbe\xe4\x0f\xb8\xb3\x56\x79\xab\xd2\x1b\x1f\x3f\x6b\xe2\xf3\x26\x5e\x37\xf1\x45\x13\x5f\x36\xf1\x55\x13\x5f\x37\xf1\x4d\x13\x6f\x9a\xf8\xb6\x89\xbf\x55\x19\x8a\x80\xd3\x2a\x12\xd8\x60\x30\x55\x85\x0b\x14\x93\xc5\x0c\x51\x6c\xa8\xd7\x2d\x3f\x50\x6d\x07\x83\xe1\x39\x76\x6d\x85\xb2\xe2\xfb\x83\x1a\xf9\x38\x6c\x8d\x10\xb6\x0f\x3a\x32\xf9\xd8\xd1\x97\x6c\xb4\xc3\xf7\xd6\x49\x1b\xa8\x9d\xd3\xe9\xa8\xfd\xe3\x2f\xd0\x29\x18\xb8\x56\xe5\xcb\x6c\x50\xcc\x65\x59\x30\x56\x15\xe1\x2c\xda\x31\xa6\xa6\xb4\x05\x1f\xa8\xbe\x5e\x53\x78\x99\x54\xf1\x92\x23\x08\x87\x67\x6e\x59\xbc\xcb\x75\xf1\xd1\x42\x16\x5b\xb1\xe0\x44\x44\x50\x30\x1b\xac\x2b\x04\x71\xe1\xe7\xb5\x6e\x39\x07\x11\x71\x89\x98\xb6\xaa\x17\x51\x82\x48\x39\x6a\x99\x1d\xa6\x54\xb5\x85\x50\xb5\x35\x7a\x16\x12\xe4\x86\x62\x31\x25\x6d\x42\xbb\x8c\xf1\x04\xe6\xa1\x29\xe9\x9f\xb0\x9a\x02\x82\xf7\xb4\x79\x7f\x14\xc1\xa7\xfc\x3e\x15\x5b\x27\xe3\x41\x31\x48\x5b\xc9\xca\x9f\x1d\x37\x37\x26\x43\xcc\x25\x34\xc2\x82\x36\x22\x05\xef\x4d\xb5\x70\x11\xc1\xc7\x2c\xac\x77\x3a\xfb\x28\xa4\x77\x0e\x65\xd6\xde\x25\x6e\xcc\x78\xc9\xfd\xbd\x90\x5a\x12\x46\xe6\x48\xd3\xb6\xd8\xd1\xa6\x1d\x6b\xfd\xb5\x0e\xb5\x37\x06\x25\x36\xda\x36\x81\x00\x29\x9d\x7d\x54\x4d\xf1\x31\x57\x5b\x92\x96\x82\xde\x1a\x5f\x86\x7e\x0c\xf6\x9a\xde\x99\x3e\x8c\x61\xeb\xcb\x90\x76\x31\xd8\x7d\x3a\x56\xd5\x5c\x1d\xe6\x07\x8b\x70\xbe\x5b\x41\xaa\xee\xa4\x95\x06\x31\x6c\xc4\x97\x2c\xb2\xa7\x9f\x9c\xbc\xc1\xa1\xd2\xdb\x1b\xd8\xc9\x12\x13\xa6\xa1\xa6\xac\x30\xc6\xa1\x5d\xaa\x3f\x61\x8c\x5a\xa1\x28\x79\x79\x23\x8c\x97\x40\xd3\x9c\x30\x9e\xa3\xce\xd8\xee\x3b\xbd\x86\xb3\x76\xca\x9f\xef\xa0\x90\x06\x52\x7a\x20\xbc\xf1\x25\xde\x33\x9b\x76\xf9\xa1\x4b\xd6\xf9\x61\x3e\x91\x23\xb8\x14\x20\x92\x8b\xb9\xa7\xaf\x01\x6b\x00\x25\x02\x46\x89\x34\x49\xf0\xe1\x8b\x9a\xd0\x25\x1f\x85\xc2\x93\x96\x58\xd3\x46\x6f\xbd\x38\x9d\x13\xe1\x71\x21\x22\xb8\x15\xef\x89\xc4\xbf\x29\x65\x1d\x82\x41\xb5\x5f\x98\x8c\x36\x60\x84\x5c\x22\xf2\x24\x4c\x18\xc8\xb8\x83\xcf\x76\xf4\xf9\x8e\x5e\xef\xe8\x8b\x1d\x7d\xb9\xa3\xaf\x76\xf4\xf5\x8e\xbe\xd9\xd1\x9b\x1d\x7d\x5b\xd9\x00\xd9\x32\xdb\x9b\x6d\xf7\x24\x6b\x8b\x49\x68\x27\x12\x4a\xef\x54\xaa\xd9\x07\x41\x1e\x2e\x61\x80\xc8\x7b\xf3\x41\x90\x4b\xef\x76\x99\x7d\x06\x23\x62\x71\x82\x87\xd6\x12\x14\x64\xbc\x99\xe0\x7b\xba\xf0\x4e\xcc\x90\x33\xc6\x6b\x2d\x81\x0e\x17\x12\xd6\x92\x50\xa4\x00\x12\x23\xc3\xcb\x92\xeb\x65\xc9\x60\xc2\x06\x04\xc8\x65\xbc\x98\xa6\xf9\xe9\x19\x07\x88\xc3\xe1\xe3\xc3\x5f\xbc\x5b\xf4\x5a\x22\xd0\x2d\x3b\xe8\x8c\x96\xc2\x4f\xca\xe0\x72\xea\x51\x24\x65\xc8\x48\xa1\x63\x84\x92\xd9\x9f\xb0\xce\x68\xfc\xb9\xce\x3e\x67\x6f\x85\xc1\x25\x0f\x1c\xf9\xd2\x75\xc5\x6a\xa5\x0c\x56\x85\xe9\x98\x7d\xa8\xca\xcb\x63\x75\xbe\x3a\xef\xb0\x3a\xf2\x5d\x66\xb7\xdb\x9a\x8e\x3a\x88\x00\x2b\xc6\x06\x33\xa4\xe3\x0c\x91\xde\xb7\x3c\x5e\xf9\xbc\x78\x1d\x02\x6d\x11\x42\x7d\x85\x26\x5a\x87\x8e\x63\xbf\xfd\xac\xf4\x6e\xc5\x29\x94\x9e\xce\x5f\xd5\x2b\xa6\xf7\x0e\xe3\xef\x10\x35\x39\xd0\xf1\xcb\x43\xc4\x10\xbd\x1c\xbf\x5b\x06\x0d\x12\x14\x84\x8c\xb1\x92\xb6\x80\x63\x49\xc6\x50\x41\xa9\xc8\x8f\x54\x39\xd8\xca\x26\x62\x85\x20\x4b\x48\x6a\x48\x21\xd9\x47\xef\xda\x06\x71\xbd\xa9\x06\x52\xbe\x50\x94\xd8\x09\xed\xf0\x74\xd3\xc8\xab\xde\x2b\x74\x40\xf7\x3a\x07\xb9\x47\x86\xae\xce\xce\x58\xaf\xd0\xec\x1a\xd9\xdf\xae\xd0\x7b\x2e\x69\x57\xdb\x8f\x1a\x8a\xb6\xc8\x67\x3b\x88\x12\x12\x4d\x55\x21\x58\xb1\x1f\x49\xb0\xc3\x26\x85\xd1\x0b\x3e\x10\x34\x43\x85\xa2\x40\x6a\x5f\x92\xe0\x7d\xdf\x34\x9d\xf9\x4e\xdc\x18\xb9\x81\x73\x68\xd2\x1d\x35\x72\xa0\x7b\x2a\xe2\xbb\x82\x4e\x5e\xef\x38\x83\x6e\xcd\xdb\x07\xc4\x7e\x11\x6f\x0d\x16\xb4\x13\x27\x6f\xca\xc3\x9c\xe4\x8d\x8d\x4e\xf9\xc3\x89\xf6\x96\xe0\x93\xa6\xfb\x72\xdf\xf6\xdf\xa9\x5f\x59\x79\x1c\xf5\x4e\x34\x77\x3a\x2e\xf4\x38\x33\x3a\xa4\x81\xbb\xff\xdc\x75\xf6\x99\xf5\xe1\x74\x67\xa3\xdd\xb1\xce\x36\x5c\x04\x98\xb9\xd8\x0e\x63\xd6\x29\x37\x3c\xce\x99\x95\xbe\x26\xc3\x08\xb2\x8f\x2c\x51\xd7\x11\xa2\x38\xee\xab\x2a\xad\xe2\xdc\x27\x7b\x11\xb4\x6a\xe9\xda\xff\x2c\xf5\xb3\x33\x25\x33\x9c\xc4\x8a\xb9\x68\xa3\x04\x44\xb9\x3d\x10\xe4\xf8\x3a\x71\xc2\x98\xe8\x94\x65\x28\xf4\x47\x07\x24\x43\x69\x46\x4f\x80\x6d\x5d\x96\x68\x6e\x2e\xa7\xc9\x66\xea\xbb\x52\xec\x8c\x2d\x65\x13\x21\x7a\xca\xb3\x7b\xfe\x36\xd2\x38\xca\xa5\x06\xe6\x00\xda\x95\xb6\xc2\x1d\xbe\xef\xd9\x13\xc7\xd1\x3d\x47\x3d\x17\x36\x0a\xca\x7f\x52\x40\x54\x37\xb4\xdc\x60\x9f\x33\xc2\x92\xc9\x26\x4d\xaa\x68\x12\x56\x74\x4a\x2f\x15\x5d\x8e\x3e\x5c\x05\x9c\x40\x9b\x5d\xa3\x1f\x3e\x30\x59\xc6\x4d\xf1\xde\x70\x00\x42\x0a\x1a\x78\xc2\x8a\x17\x94\xfc\xe0\x31\x17\x94\xed\xb4\x18\xf1\xc2\x84\x74\x7b\x8e\x2e\xfa\xd6\x47\xdf\x3a\x85\xf6\xd4\x75\x31\xb0\xae\xa8\xfa\x66\xef\x13\x51\xb6\xc3\xc5\xc7\x33\x44\x75\xeb\x10\xf1\x1d\x3f\xc4\x5a\x97\x76\xf5\x9b\xa0\xfb\x8b\x84\xef\x65\xfb\x3d\x4b\x6a\x71\x74\x49\x2d\x85\x58\x12\x25\x5a\x6a\xc8\xd6\x69\xf5\xd9\xd7\xf5\x2c\xf4\x02\x12\x19\x84\xba\x29\xc5\x9e\x6b\xa3\xd7\xb2\xc5\xba\x9d\xad\x77\x55\xbf\x96\x55\xbf\x39\x0a\x90\xe3\xee\x91\x36\x6b\xdf\x41\xc9\xd9\xbb\x74\xdf\x46\xb1\x9a\x27\x22\x85\x5c\x9f\x58\x28\xc5\x0e\xf6\x91\xb8\x1b\xc1\xf1\xe6\xa1\xd7\x8d\xb9\xeb\x96\x30\x6a\xca\xac\xdf\x1c\x77\x6b\xd6\xb3\x15\x33\x77\x6e\x49\xf9\x6c\x69\x10\x4b\xda\x42\x63\xba\xa3\xd2\x92\x06\x4b\xef\x4e\x2d\x8f\xde\xb1\x0f\x94\xde\xa3\x0d\xf9\xca\xe0\xa2\x53\xd6\x6e\x25\xbc\x9e\xe9\x69\x21\x4b\x2e\x01\xac\xbe\x50\x3d\x57\x32\xb2\xe6\x8b\xa3\x70\x48\x90\xb2\x60\x03\xd7\x3e\x2c\x16\xe7\x3a\x4c\x16\x82\x26\x5f\x2e\x34\x25\x07\xc6\xb4\x01\x25\xb4\x27\xdd\x50\x17\x09\x5f\xac\x4d\xaf\x47\xe2\x4e\x9d\x2c\xac\xc8\x65\x86\xb0\x98\x12\xac\xd8\x8a\x0e\x51\x5c\x42\x74\x55\xfb\x44\x3e\xa6\x18\x8c\x55\x47\x59\x8f\x18\x1d\x9a\x6a\x20\x70\x70\xa7\x10\x43\xbe\x27\x55\x0a\x65\x70\x5a\xeb\x2d\xa4\x99\x02\x5c\x4e\x90\x3d\x91\x6c\x36\xcb\x68\xb4\x8b\x00\x31\x61\xb5\x20\x37\xf2\x32\xcd\x1c\xed\xec\x2f\x49\x82\xab\x16\x2d\xfd\x9d\x75\xde\x86\xc7\xb3\x68\x69\xba\x47\xb6\x33\x08\xe9\xca\x86\x6a\xd1\x0e\xd9\xd6\x24\xc0\x4b\x5a\xb4\x16\x2e\x24\xd8\x3e\xf9\xa0\xdb\x93\xe7\x20\x60\xba\xd8\x89\x21\x98\xf0\xb2\xbb\x6e\x46\xcd\x73\x13\x1c\x8e\x9b\xb0\x2c\x91\xaf\x19\x61\xce\xea\x09\xec\xad\xc9\xbb\xb5\x81\x3c\xa8\x3d\x78\x37\x25\xf7\x21\x9c\x71\xf6\x99\xb8\xde\x1a\x72\xb8\x47\x32\x87\xbe\x1b\x42\x7d\x37\x41\xf1\x89\xb3\x1c\xbb\x0a\x4a\xa0\x81\x40\x17\x94\x70\xdb\x55\x50\x23\x84\x12\x64\xff\xcb\x06\xd6\x03\x19\xe1\x08\x4e\xf9\x36\x7d\xc4\x80\xd0\xd8\x64\xc9\xae\x19\xb5\x6b\x43\xb0\xef\x9b\x10\x07\x2b\x42\x27\xdf\x4b\xb3\x4a\xb3\x27\x8c\x27\x8c\xd5\xe1\xb9\xfb\x1d\xe7\x55\x4b\x18\x06\xe8\x41\xd3\xf9\x6e\xb2\xbd\x06\xab\x7e\x4e\x8a\xe2\x80\x2a\x32\x37\xa5\xd5\x27\x89\xaf\xe1\x03\xc1\x2e\xe1\x81\x39\x79\xd3\x07\x9d\xd0\x29\x1f\xab\x5f\x96\x84\xb9\xf6\x0a\xbe\x45\xcb\x30\xef\xd9\x7a\xd0\x94\xf4\x45\xef\x73\x83\x2d\xb8\x36\x7c\x56\x2c\xd1\x9d\x74\xf4\xee\x1e\x0b\x4a\x3c\x1a\x71\x69\x9d\x1d\x55\x4e\x04\x7c\x40\x47\x27\x9e\x58\xeb\x25\x18\xc3\xa8\x7d\xd4\xb9\x2d\xd9\xcc\x61\x47\xfd\x28\x9a\xce\x85\x64\x87\xda\x0d\xe4\x4b\x6b\xcf\x1b\x85\xb8\x74\x87\x6f\x9b\x21\xf3\x11\xed\xce\xf2\x5d\xdd\x39\xaa\x8a\x1f\x18\x06\x45\xf7\x1f\x38\x40\x1a\x60\xd9\xd1\x3a\xfa\x0c\x90\xd6\xbd\xcf\x40\x1c\x73\x09\x9c\x6c\x40\x38\x76\xc8\x01\xa3\x41\x23\x07\xb9\x9d\x6d\x47\x31\xa5\x8e\x14\x64\x18\x63\xf2\xe8\x38\xce\xf5\x64\x8d\x9e\xc7\xe4\xfd\xc8\x5a\x48\xa7\x82\x8f\xe2\x1c\x97\xb0\xc3\x81\x35\x4c\x96\x4f\xa5\x02\x26\xaa\xd0\xf9\x8c\xb2\x0c\x0d\x14\x45\x20\x18\xbd\x07\x44\xda\x49\x77\xae\xe2\x6e\x54\x67\xc6\x79\x27\x19\xbd\x31\x95\x56\xe9\xe3\xf8\x3b\x50\x33\x28\x76\xc8\xf5\xe6\x96\xb9\x50\xda\x35\xf6\x3e\x77\xaa\x3f\xe3\x7d\x33\x1b\x71\xf2\xee\x4a\xf6\xdd\xf2\x92\xbd\xa8\xde\xa8\xe0\xa2\x32\x2d\x9d\x21\xf0\x83\xa7\x3e\x43\x60\x9f\x47\x80\x5c\x1c\xc9\xb6\xca\x35\xf1\x1d\xcb\x30\xd7\x4c\x29\x4a\x96\x41\x04\x0a\x1b\x0c\x7c\xcc\x14\x7f\xff\x4f\x85\x38\x25\x32\xb9\x27\x29\xe3\x18\xd9\xf8\xb2\x17\xf3\x35\x23\x97\xe1\x5c\x36\x6a\xdf\xaa\x47\xb4\x2c\x7b\xa7\x0c\x86\xb2\xb2\x86\x4a\xa8\x39\x42\xda\xf6\xd7\x96\x7f\xe2\x6e\xab\xee\xde\xac\xec\xc0\x3d\x66\x44\xc5\xbd\x9f\x02\x15\xf7\x68\x01\xcd\x78\x86\xc2\xce\x88\x64\x7b\x17\x5d\x2e\x03\xb4\xd8\x52\x02\xaf\xde\x44\xbf\xbe\xfc\x05\x8c\x7d\x5f\x87\xcd\x71\xf7\x0f\x63\xd1\x76\xba\x7f\x51\x18\xb0\x16\x7e\x9e\xba\xa3\x22\x07\x06\x2b\x0a\x7b\xda\xe1\xa9\x9e\x11\xf2\x86\xb1\x9e\x75\x44\x83\x29\x09\x08\x37\x3c\xfc\xfe\x4e\x60\x4a\x5a\xdd\x54\xaa\x43\xd8\x22\x1f\x99\x77\x05\xcc\xaf\x50\x82\xec\xe9\x57\x68\x36\xaf\x9d\x67\x67\x72\xf6\x51\xa5\xda\x72\x8c\x16\x99\x3a\x6e\xb1\xa9\x29\xb4\x70\x47\x7d\x9f\x23\x29\xb1\xfc\x01\xbc\x69\xea\xd6\xa0\xfa\xe7\x8f\xae\x8e\x48\xd6\xb4\x15\x5d\x1c\x1d\xf5\x20\x47\x0c\xeb\x5a\xaf\x0b\xbb\xca\x6e\xa8\x43\x8e\x64\x1d\xb7\x58\xd6\x14\x7e\x23\xfc\x95\x51\xed\x0c\xc5\xb7\x8e\x29\xc2\xb9\xf1\x2b\x4a\x34\x77\xdf\x29\x5e\x1e\xb4\x42\x97\xf5\xa2\x31\xbe\x3a\x41\xe4\x8f\x13\xcf\xa7\xe9\xe7\xef\x7e\xf8\xec\xe5\xb7\x7f\x7e\xf9\x4f\xf1\xd1\x9f\x3e\x7e\xfe\xe9\x77\x2f\x7f\xfc\xed\x34\xfd\xf2\xdd\xd3\xf8\x88\x73\xb5\xb3\x37\xaf\x3c\x7f\x28\xf3\xb1\xfd\x1f\xe1\xe7\x3a\x4d\xbf\xd4\x69\xfa\xa4\x4e\xd3\x8b\x3a\x4d\xbf\xab\xd3\xf4\x63\x9d\xa6\x1f\xea\xbf\xeb\x34\x4d\x53\x9d\xa6\xe7\xf5\xf7\xf5\x8f\xf5\xa3\xfa\x87\xfa\x9b\x3a\x4d\xf5\xc5\x98\x6f\x7c\x24\x7a\x65\x41\x46\xff\xf6\xf0\xf4\xaf\xef\xff\xfa\x8f\xef\x9f\x3f\x3d\xfb\x4f\x00\x00\x00\xff\xff\x83\x4d\x49\xe6\xc7\x18\x00\x00" + +func runtimeSyntaxConkyYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxConkyYaml, + "runtime/syntax/conky.yaml", + ) +} + +func runtimeSyntaxConkyYaml() (*asset, error) { + bytes, err := runtimeSyntaxConkyYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/conky.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxCppYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x54\xdf\x6f\xdb\x36\x10\x7e\xf7\x5f\xa1\xa9\xd9\x4c\x26\xb5\x93\xb6\x43\xb7\x6a\x3f\x8c\x21\x5b\x87\x01\xdd\xb2\x87\x0d\x08\x26\x3a\x02\x45\x9d\xac\x43\x68\x52\x20\x4f\x89\xb3\x5e\xff\xf7\x81\x8a\xd3\x18\x71\x91\x15\xad\x1e\x24\xf1\x8e\x77\xf7\xf1\xbe\x8f\xd7\xa2\x05\xba\xe9\xa1\xc8\xcc\xd1\xd1\x64\xd2\x00\x81\xa1\x62\x92\x65\x59\x96\x5c\x4e\xaf\xa1\xc8\x72\xa1\xd4\xdc\x08\xc3\x7d\xcf\x9b\x8d\x3c\x60\xa5\xe6\x9d\xe8\x76\x97\x88\x8b\xf1\x2b\x1a\x68\xe5\x81\xcc\x27\x93\x30\x58\x88\xc5\x64\x4c\x35\xcb\xb0\x01\x47\xd8\x22\x84\x22\xcb\x95\xaa\xcb\x9f\x66\xff\x54\xcb\xf2\x64\xf6\x6a\xfc\x39\x52\xaa\xce\xb3\xed\xde\x5b\x3c\x69\x97\xd0\x03\x79\x6e\xad\xd7\xc4\x8d\x1f\x6a\x0b\x5c\x7b\x6f\xd9\x74\x3a\x30\x3a\xe2\xd8\xf9\x40\x6c\xbd\x5b\x71\xc4\x7f\xc1\xb7\x0c\x6e\x58\xf3\x95\xc7\x86\x23\x69\x42\xc3\xc6\xbb\x48\xb7\x6f\xd8\xf4\x81\x23\x85\xc1\x10\x0f\x0e\xbd\xe3\x54\xaa\x81\x96\x61\x43\x10\x1c\x8b\xc1\xc9\x45\xc4\x95\x83\x86\xd1\x59\x74\x20\x13\xb0\x7d\x5c\x22\x2e\x52\x3d\xc9\x42\x0c\xd5\x42\x2e\xd0\x91\xf8\x96\x9f\xbd\xe4\x17\xcf\xf9\xe5\xd7\xdc\x53\x90\x52\x56\xb4\x13\x9c\xd0\xc0\x1a\x1c\x6d\x33\x18\xab\x63\xe4\xd4\xdf\xd8\x6b\x03\x4c\xb0\xee\xad\x26\xe0\x7e\xa8\x2d\x1a\xee\x83\x4f\x54\x40\xc3\x7d\xc0\xab\xe4\x48\xe5\xd3\x7e\xa6\x0e\x23\xb7\x01\xc1\x35\x7c\x85\x81\x06\x6d\x79\x88\xe8\x56\xbc\x1e\x48\xa7\x26\x5d\x79\xab\x09\x2d\x70\x80\x15\x46\x82\xc0\xb0\xe9\x2d\x1a\x24\xf9\x08\xa4\xd6\x07\xc6\x96\xaf\xbb\x14\xd9\x78\x06\x1b\x81\x8d\x8e\xc0\x0d\xb4\x7a\xb0\xc4\xf1\x1a\xc9\x74\x8f\xe5\xa0\x70\xc3\xd4\x05\x7f\xcd\x46\x93\xe9\xd8\xf7\x10\x34\xf9\xc0\x0e\xae\xb9\x01\x0b\x04\x8f\x85\xaf\x3c\xf9\xc4\x15\xa1\x1b\x80\xeb\x00\xfa\x92\x03\xd0\x10\xdc\x6e\x54\x1f\xa0\x0f\xde\x14\x59\x7e\x51\x96\xc5\xd8\xbf\x62\xb9\x3c\x7c\xb2\xbb\x48\x42\x44\x07\xdc\x07\xbd\x5a\x6b\x46\x67\xec\xd0\x40\x62\x98\xb1\x75\x0b\x39\xb2\xee\x1a\x6c\x19\xac\xc0\x96\x23\xc8\xf1\xf0\x3a\xb8\xd4\x49\x08\xc1\x07\x79\x57\x70\x54\x8f\x1e\x51\x8a\xa9\x28\x2f\xa6\x4a\x29\xb5\x64\x91\x3e\xa5\xca\xa7\xba\x6e\x5d\xa0\xab\xd1\x2a\xe5\x94\x47\xbf\x10\xe5\xc9\xec\xc5\x72\x51\x9e\xcc\xbe\x59\xbe\x7d\xf6\xf4\xf9\xbb\xf7\xae\xcd\xad\xf0\x5f\xeb\x59\x7b\xeb\x99\xa6\x1b\x93\x8d\xcf\x93\xec\xd7\xd3\xd3\xac\x1e\xd0\x12\xba\xf8\x81\x3e\x89\xaa\xd2\x44\x01\xeb\x81\xa0\xaa\x76\xcf\xac\x94\x50\x4a\x94\x17\x32\xfd\x4a\xa5\x24\x57\x95\xd0\xf6\x56\xcf\x3a\xae\x79\x9b\x95\x3b\x6c\x1a\x70\x5b\x89\x73\xaf\xcd\x25\x34\x1c\x20\x52\x40\x43\x1c\xc1\xd0\xdd\xe5\xf0\x2d\x5f\x83\xbe\x94\x55\xb5\x8b\xf0\x6c\xcb\x6a\x76\xea\xad\x0f\x77\x18\x6f\xd6\xb5\xb7\xf3\x3b\xc6\x13\xd2\x72\x5e\x7c\xf7\xf4\xe8\x90\x7f\xf8\x42\xa9\x2f\x97\xfc\x3d\xff\xc8\xc7\x3c\xe3\xaf\xe4\xf6\xae\xa7\x5c\x7f\xea\x00\x8e\x3a\x20\x34\xda\x7e\x28\x61\x1d\x12\x3e\x8a\x45\x96\x97\x42\xbe\x7d\xb7\x64\xa5\x4a\x56\x6a\x99\x4f\x1e\xd0\x33\x77\xc3\xba\x1e\x27\x8c\x48\x23\xe6\x64\xf6\x6a\x1c\x2c\xac\x54\x7d\xb2\xdb\xf2\x64\xdc\xe3\x76\x9e\x26\xcb\x36\x54\x50\x18\x80\x5b\x6d\xe3\xa8\x56\xfe\xe3\xef\x37\x6f\xe4\x7e\xb9\xd4\x2f\xb7\x2a\xb6\x47\xc9\x12\x4b\x61\x54\x72\x9e\xbf\xb7\x81\x6b\x1e\x58\xe2\x25\xf6\xa3\xdc\x95\x9a\xdf\x5b\xb7\xe3\x32\xdb\x79\x76\x2b\xf5\x60\x50\xdb\xd3\x4e\x87\xfb\xd0\x8f\x85\x33\x7d\x88\x66\xfa\x49\x60\xee\x6f\xdd\x7c\x7e\x94\x7f\x1a\xd2\xf5\xa8\xe1\x3d\x84\xc7\xc7\x0f\x21\x1e\xfc\x0f\x18\xf2\x8d\x4f\x64\xfd\x75\xf6\xf3\x19\x9f\x9f\x9f\xf3\xeb\xdf\xce\x7f\xff\x45\x16\x8b\x8f\x28\xa6\xd4\xe1\x1e\x3f\xea\xf0\xf8\x33\x2a\xfe\x17\x00\x00\xff\xff\xe1\x82\x69\x3f\x46\x07\x00\x00" + +func runtimeSyntaxCppYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCppYaml, + "runtime/syntax/cpp.yaml", + ) +} + +func runtimeSyntaxCppYaml() (*asset, error) { + bytes, err := runtimeSyntaxCppYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/cpp.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxCrontabYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x54\x4b\x4f\xdb\x40\x10\xbe\xfb\x57\x4c\x4d\x54\xc5\x80\x21\x80\x2a\x84\x5b\x4a\xab\x3e\xa4\x1e\x10\x07\x50\x15\x95\x01\x75\xe3\x9d\x60\xc3\x7a\x37\xda\x07\x91\xd5\xe9\x7f\xaf\xd6\x09\x86\xa0\xd0\x5b\x3b\xb7\x99\xfd\xe6\x9b\xd7\x67\x4f\x6b\x45\xbe\x9d\x51\x01\xa5\x35\xda\x8b\x49\x92\x48\xf2\x54\xfa\x22\x01\x00\x88\xcf\x5a\x34\x54\x40\xba\x7c\x1f\xa4\xdd\x43\x45\x42\x92\x2d\x20\xbd\xde\xd8\xd9\x3c\xd9\x25\x5f\xee\x2e\x01\x69\x92\xd8\xa0\xc8\x2d\x08\x00\x36\x60\xc5\x2e\x2a\x02\x5f\x37\x04\x42\x4b\x90\xc2\x13\x4c\x6b\x52\xd2\x81\xb0\xf4\x42\x4a\x07\x78\x74\x85\x52\x66\x4e\x12\xee\x85\x0a\xe4\xd6\xa7\xe4\xd1\x9e\xb9\xbd\xad\x4f\x69\x6a\x1d\x3c\xf5\xee\x28\x7f\x73\xb4\x1e\x58\x99\x60\x9f\xb8\xa3\x7c\xff\x60\x3d\x50\x8a\x16\xcc\x14\x1a\xa3\x7d\xd5\x01\x0f\xf6\x5e\x28\xbd\x44\xf4\x8c\x7b\xfb\x30\x34\x16\xe2\xe6\xdd\x36\x38\x22\x98\x90\x32\xf3\xec\xaf\x75\xe6\x44\x77\x8b\xf4\x43\x18\x8e\xc0\x58\x38\x84\xda\xc1\x79\xd0\xdb\xd1\x09\x8e\x16\x84\x59\xd2\xd1\xe4\xe0\xbc\xf0\xd4\x90\xf6\xf1\x8c\xc3\x4b\xc4\xcd\x51\x7e\xb4\x8d\x98\x23\xee\x5e\x6d\x65\x88\x6e\xeb\x9f\x45\x77\x36\xb3\x01\xa2\x3e\x49\x97\xbd\x94\x46\x3b\x2f\xfe\x77\x2b\x8b\xea\xfd\x56\xcf\x2b\x52\x0a\xbe\x3f\xea\x2a\x87\xc5\xb7\x91\x5e\x5f\x7e\xcc\x7f\x5c\x6d\x21\x1e\xa7\x49\x0f\x3f\x8d\x67\x73\x9d\x90\xe3\xee\xe3\x19\xee\xa8\x9d\x1b\x2b\x9f\x65\xdf\x0a\xcd\x53\x9a\x70\x23\x2c\x8b\x99\xe5\x46\xb4\x7c\x1b\x34\xdf\x06\xc5\x22\xdc\xb0\xa3\x19\x9b\xd2\xb3\x36\xf7\x2c\xa9\x5c\xb3\x13\x17\x34\x37\x46\xb3\x0f\xc4\x73\x92\xec\xab\xc0\x53\x5b\xb3\x13\x3e\x5d\xad\x85\xf8\x61\x68\x69\x62\x8c\xe7\x96\x84\x55\x2d\x0b\xad\x83\x50\xaa\xe5\x4e\x66\xaa\xe5\xd8\xac\x6a\x59\x8a\x3a\x06\x6b\xa9\xeb\x9b\xca\x73\x94\xb5\x6a\xb3\x27\xf3\x7d\x32\x5a\xd6\xbe\x36\x5a\xa8\x87\x81\xdc\x8c\xca\x5a\xa8\x02\xd2\x21\xe2\x2f\x46\xfc\xcd\x88\x43\x46\xcc\x18\xf1\x2d\x23\x5e\x31\xe2\x25\xff\x64\x44\x44\x46\x1c\xf0\x3b\x7e\xcf\xd7\xfc\x8a\x8f\xf9\x35\x23\xf2\x03\x7f\x9c\xae\xe9\xb4\x97\x3c\xc8\xd8\x79\x61\xe3\xac\x1b\x69\x1f\x22\x2d\x0b\x48\x07\x8f\x81\x95\x3f\xcb\xc2\x72\xf0\x46\x9a\xd8\xd1\xc5\xd9\xe7\x33\x1e\x8f\xc7\xfc\xf5\xdb\xf8\xf4\x4b\x56\x9c\xa4\x49\xf2\x27\x00\x00\xff\xff\x30\xbd\xe9\x40\xe0\x04\x00\x00" + +func runtimeSyntaxCrontabYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCrontabYaml, + "runtime/syntax/crontab.yaml", + ) +} + +func runtimeSyntaxCrontabYaml() (*asset, error) { + bytes, err := runtimeSyntaxCrontabYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/crontab.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxCrystalYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x54\x4d\x6f\x1b\x37\x10\x3d\x57\xbf\x62\xb0\xb6\x61\x49\x81\xe4\x5e\x2b\x04\x90\xdd\x44\x29\x0c\xa4\x36\xd0\xfa\x60\x44\xd4\x07\x77\x39\x2b\x0d\xc4\x25\xd7\xfc\x88\x24\x7b\xfc\xdf\x0b\x4a\x8a\x5b\xaf\x0c\x34\x08\x90\x83\x28\x90\x33\xf3\xde\xe3\x9b\x59\x96\xa4\x31\x6c\x6b\x1c\x40\xe1\xb6\x3e\x48\xdd\x6a\x29\x0c\x58\x84\x41\x0b\x00\x20\x85\x8d\xac\x70\x00\x99\x10\xfd\xc2\x9d\x66\xad\x96\x8b\x1a\xfd\x3e\x7c\x02\x57\xbe\x20\xca\x31\x50\x21\x35\x68\xf2\x01\x6c\x09\x0e\x3d\xba\xaf\xa8\x60\x6d\x9d\xf2\xbb\xcc\x1e\xf8\x20\x03\x56\x68\xc2\x0e\x2b\x6f\xff\x3e\xfa\xe3\xfa\x86\x47\x37\x1f\x59\xe6\x3e\x38\x59\x04\x96\x9a\xa4\x67\x69\x14\xe7\xb8\x20\xc3\xb9\x43\xb9\xe2\x42\x7a\xe4\x42\x4b\xef\x59\x61\x99\x7e\x64\x50\x09\x31\x64\x65\x19\xb5\xc7\xb4\x50\xc9\x68\x14\xa3\xf1\xd1\x21\xa3\x89\x15\x97\x32\xc5\x4a\xeb\xb8\x8c\x86\xa9\x64\x32\x4c\xa6\xd0\x51\x21\x6b\xca\x59\x5b\x5b\x73\x25\x0b\x67\xb9\xb2\x2a\x6a\x64\x83\x9b\xc0\x86\x34\x1b\x1b\xd8\x96\x6c\x1d\xd7\x96\x4c\x40\x67\x4b\xae\x1d\x7d\x95\x01\xb9\x76\x36\xf9\x83\x8a\x9d\x24\x8f\xec\x50\x59\x76\xf8\x10\xc9\xa5\x8d\x2f\x62\xfa\x0b\x6e\x9b\xd6\xe8\x0c\x7b\xd4\x25\x7b\x7a\x44\x5b\xb2\xaf\xe5\xda\xb0\x0f\x2e\x16\x81\x7d\xac\xd1\x71\x58\xa2\xe1\xe0\x22\x72\xea\x03\x47\x93\x2e\x19\x0d\x59\x93\x56\x43\x81\xa4\xa6\x47\x54\x1c\x8d\x46\xef\x39\x9a\x40\x9a\xd7\xa9\x6a\xbd\x24\x8d\xbc\x25\xd4\xaa\x23\x44\x9e\xed\x9c\x4e\x5d\xf9\x60\x8d\x0f\xd2\x84\x6f\xde\x17\x87\xfd\x00\xb2\xb6\x10\xa7\x7c\xc9\x97\x97\x9d\xa1\x10\xf9\xf8\xaa\xf7\x65\xf2\x6e\xfc\x6b\xef\xb7\xab\xde\x97\x99\xec\x3d\x4e\xba\x59\xa3\xa6\x6f\x62\x95\xa3\xdb\x77\x2d\x65\x4e\xde\xbd\xe6\xda\xcf\x0d\x64\x7e\x5b\xe5\x56\xfb\x66\xfd\x00\x20\x6b\x8f\xe1\x97\x09\x4f\x3b\x83\x6f\x4c\x0d\x8c\xbf\x6d\x85\x10\x0d\x3d\x44\x84\xb0\x24\xb3\xf0\xb0\x46\x58\x4b\x13\x20\xd8\x34\x39\x46\x81\x8d\xe1\xf8\x36\x69\x90\x66\xb3\x4f\xd7\x9f\x47\xb3\x19\xcf\x66\x9f\xaf\x6f\x46\xb3\xd9\x6b\x2f\xfe\xc2\x45\xd4\xd2\x01\x6e\x6a\x87\xde\x93\x35\x6f\xb8\x72\xd1\x1e\x4f\x2f\x26\xdc\x16\x42\x88\x8b\x4e\xa7\x7b\x31\x26\x5b\x6d\x26\x5d\x3e\x73\x42\x3c\xb5\xc7\xd3\xe7\x43\xf0\xb9\xd3\xe9\x0a\xf1\x7c\x08\x67\xad\x7f\xaf\xb0\x44\xad\xa1\xb0\x55\x95\xc4\xe2\xa6\x96\x26\x71\x01\x79\x20\x03\xf3\x5c\x16\xab\x40\xc5\xca\xcf\xc1\x3a\xd0\xb4\x42\x38\xdb\x3c\x85\x25\xf9\xe7\x3e\xc0\xdd\x12\x3d\x82\x74\xf8\x02\x97\x29\x1b\x73\x8d\xbd\x87\x68\x03\xf9\x65\x06\xed\x60\x21\xa6\x24\xa8\xd1\x69\xf2\x55\xa7\xdf\x6c\x94\x0f\x8e\xcc\x62\x00\xd9\x7c\x3c\x9d\x4f\xba\x73\x3e\xdb\x08\xf1\x94\xb4\x27\xc9\x07\xad\xc7\xf9\x07\x4e\x48\x3e\xbb\x64\xc6\x3c\x7b\x39\x42\xa3\x5e\x1f\xec\x3f\x7e\x18\x4f\xbe\x1b\x6d\x27\xa2\x89\xb8\xd3\xf3\xe3\x98\x22\x3b\x02\xfc\xcf\x89\x5f\x51\xbd\xe3\x10\xa2\xdf\x64\x79\xd9\x36\x99\x6a\x2c\x48\xea\x0f\x4b\xe9\x8e\x4b\x0f\x0f\xd8\x3e\x65\x00\xd9\xc9\x0f\xd9\x7a\xde\xd4\x7c\xfe\x13\x24\xbf\x88\xa9\x76\x4f\xed\x91\x88\x93\xa6\x88\xd3\xff\xa1\x0b\x56\xd9\xf4\x6c\xdc\xdd\x7e\xbc\xe5\xfb\xfb\x7b\xfe\x74\x7d\xff\xe7\xa8\x33\x18\x36\xb9\xfa\xb9\xa3\xc5\xf2\x2d\xca\x9f\xc2\x79\xf8\x74\x8f\xd8\xde\xbf\xef\x0d\xcf\x87\xa3\xdb\xbb\xf3\x61\x93\x76\x3a\xba\xbd\x7b\x73\xea\xfe\x09\x00\x00\xff\xff\xd9\xcb\x71\xc4\x05\x07\x00\x00" + +func runtimeSyntaxCrystalYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCrystalYaml, + "runtime/syntax/crystal.yaml", + ) +} + +func runtimeSyntaxCrystalYaml() (*asset, error) { + bytes, err := runtimeSyntaxCrystalYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/crystal.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxCsharpYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x54\xdf\x6f\x23\x35\x10\x7e\xcf\x5f\x61\x96\x83\xe6\x87\x36\x2d\x12\x2f\xac\x80\x52\x1d\x54\xaa\x74\x70\x20\xf1\x50\x91\x5d\x55\xb3\xf6\x6c\xd6\x17\xaf\xbd\x67\x8f\x93\xee\x31\xf0\xb7\x23\x6f\x12\x9a\xb6\x02\x2a\xf1\x74\x91\x62\x8f\xc6\x3b\xf3\x79\xe6\xfb\xc6\x8d\x36\x48\x43\x8f\x85\x90\xa1\x05\xdf\x4f\x26\x0a\x09\x25\x15\x13\x21\x84\x48\xa7\x16\x3a\x2c\x44\x56\x96\x4b\x19\x5e\x65\x93\x89\x8f\x06\xc3\xfe\xf8\x53\xf1\xda\x40\x08\xa3\x9d\x0b\xad\xd0\x92\x6e\x34\xfa\xa5\x4c\xee\x42\x64\xe3\x2e\x16\xab\xab\xfc\x37\xc8\x3f\x5c\xe4\x5f\x55\x0b\x31\x9f\x4e\x8b\xd9\xa9\x6f\x59\x2d\x66\x97\xd9\x64\xcc\x92\x72\x5e\x59\xeb\x08\x48\x3b\xfb\x3c\xf1\x16\x7c\x21\xb2\xef\x0e\xc1\xd5\xe2\x10\x76\xfa\x4d\x21\xb2\xc3\xf1\x5d\xf5\x00\x72\x57\xcd\x57\xab\x22\xf4\x20\xb1\xa8\xaa\xf9\x6a\x3a\xab\xb2\x43\xe8\xbe\xfc\xac\x2c\xeb\x69\xed\x9c\xe1\x7a\x20\xe4\x30\xae\xb2\x05\xcf\x0a\xa5\xee\xc0\xb0\x72\xb1\x36\xc8\x8d\x71\x40\x7c\x63\xe9\x67\xf2\xac\x2d\x71\x4c\x8b\x71\x76\xcd\x71\x5c\x5d\xfd\x0e\x25\x71\x68\x9d\x27\x8e\xfb\x2d\x90\xd7\x76\xcd\x35\x04\x64\x6a\x75\xe0\x2d\x78\xde\x3a\xad\x66\x65\x59\x1f\x2f\x12\x08\x08\x3b\xb4\x74\xb8\x0d\x18\x0d\x81\x21\xb0\x4c\x61\x12\x48\xb6\x2c\x5b\x94\x1b\x54\xac\xb0\x81\x68\x88\x95\x63\x35\x58\xe8\xb4\x64\x34\x01\xb9\xd1\x16\x8c\x19\xb8\xd1\xf7\xa8\xb8\x71\x3e\xfd\x11\x64\xcb\x6b\x47\x8e\x75\xc3\x3a\xb0\x71\x72\xc3\x16\x77\x6c\xa3\x31\xec\x91\xa2\xb7\x1c\x76\x3a\x01\x50\xeb\xdd\x8e\xc9\x0f\x1c\xed\x11\x6c\xd7\x6a\x83\xff\x7a\xd3\x3a\x90\x07\x49\x0c\x61\xb0\x92\x47\xda\x59\x3a\x1b\x88\x15\x1a\x5c\x03\x21\xa3\x8d\x1d\xe3\x16\x2d\x31\xde\xf7\x46\x4b\x9d\x0c\x42\x6f\x79\x8d\xc4\xba\x3b\xf8\xb4\x4d\x5d\x45\x6f\xc1\xec\x8d\x06\x24\x72\x52\xe1\xc8\x1e\xbb\x1e\x3d\x90\xf3\xec\x22\xb1\xdb\xa2\xf7\x5a\x21\xf7\xe0\xa1\x0b\x69\x23\x0d\x86\x7b\xaf\xb7\x09\xb4\xf7\x2e\xa9\x19\x15\xf7\xb1\x36\x5a\xb2\x47\x50\xce\x9a\x81\x3d\x36\x1c\x10\x0c\x2a\x0e\x48\x1c\xf4\x07\x74\x0d\x07\x02\xb9\x01\x63\x9c\x4c\x26\xe9\xb4\xf9\x28\x89\x93\x48\x5c\xc3\xd1\x06\x68\x90\x63\x48\x6c\x6e\xc1\x44\xe4\xad\xf6\x14\xc1\xf0\xd6\x19\x20\x6d\x90\x07\x8d\xe6\x84\xd7\x24\xe9\x37\x37\x3f\xfd\x92\x27\x58\xb1\xc1\x61\xe7\xbc\x0a\x62\xea\x2c\x06\x41\x2d\x90\x90\x90\x14\x2f\x6a\x14\x31\xa0\x12\x2e\x52\xd0\x0a\x85\x6b\x04\x8c\x91\xe2\x7d\x44\x3f\x88\x5c\x18\x47\x41\x38\x6a\xd1\x87\x14\x34\xfb\x07\x36\x1a\xef\x3a\xde\xb5\xe8\x91\x03\x9a\xa4\xc5\xb5\x77\xb1\x67\x6d\x1b\xc7\xce\x2b\xf4\xf5\xc0\xef\x9c\xb6\x6c\x70\xec\xb7\xb3\x8c\xef\x23\x98\xc0\xf5\xc0\x10\x24\x5a\x95\xea\x53\x78\x34\x1f\x71\xdf\xa3\xd4\x60\x8e\x13\xe3\x11\x36\x89\x6a\xd2\x36\x3e\xd2\xc8\x48\x3f\x58\x5a\xa6\xa1\x3a\x7c\x4d\x3e\x22\x37\x60\xc2\x63\x35\x0d\x5d\xed\xcc\xf2\x48\x6c\x1a\xe0\xb2\xcc\x17\xe7\xf3\x6f\xbe\xfe\xf6\xb2\xf8\xe4\xcf\xcf\x3e\xe7\xea\x59\x56\x1b\xbb\x7a\x1c\xf6\x94\x77\x95\x9e\x91\xbb\x6a\xc1\x17\xf7\xab\xab\xfc\x1a\xf2\x66\x1c\xf9\x05\x5f\xd4\xab\x8b\xfc\x8b\xbb\x6a\x31\x5b\x5d\xbf\xa9\x2e\x47\xd0\xa7\x99\xf6\xb3\x59\x1c\xc8\x12\xa9\x9d\x7e\x6c\x65\x96\xfd\xed\x43\xab\x9e\x78\xc2\x46\xf7\x23\x7a\x59\x2e\x1f\xbc\x27\x8f\xe3\xf1\x77\x8a\xb4\x6f\xdd\xeb\x16\xfc\x21\x74\xba\xaa\xc9\x36\xbe\xe2\x33\x2e\xcb\x32\x4b\x4b\x39\xcb\x5e\x1e\x1f\x1f\xca\xad\x7e\xff\xf2\x8f\x97\x17\x77\xf6\xb4\xb6\xb3\x8f\xa7\xb4\x6e\xd4\xfa\xb3\x92\xce\xcf\x9f\xd6\xf4\xea\x3f\x6e\x4f\x4e\xb9\x42\x64\xd3\x5f\xdf\x7e\xff\x96\x6f\x6f\x6f\xf9\xfa\xe6\xf6\xc7\x1f\x66\xc5\xe5\x0b\xc0\xca\x72\xfe\x4c\x1e\xe5\xfc\xfc\x7f\x20\xfe\x15\x00\x00\xff\xff\x5f\x37\x1f\xac\x8b\x07\x00\x00" + +func runtimeSyntaxCsharpYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCsharpYaml, + "runtime/syntax/csharp.yaml", + ) +} + +func runtimeSyntaxCsharpYaml() (*asset, error) { + bytes, err := runtimeSyntaxCsharpYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/csharp.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxCssYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x59\x4f\x8f\xe4\xb6\xf1\xbd\xcf\xa7\xe8\x5f\xff\x8c\x78\xc7\x08\xd7\xf7\x76\x10\x2f\xb0\x4e\x00\x1f\x02\x1f\x36\x08\x16\xb0\x36\x40\xb5\x54\x6a\x71\x9b\x22\x65\x92\x9a\x9e\xde\xa5\xf3\xd9\x83\xaa\x22\x25\xaa\xa7\x07\xc9\x25\x73\x50\xbf\xf7\x48\x91\x54\x91\xf5\x47\x9a\x5e\x1b\x8c\xd7\x09\x0f\xbb\x36\x84\x87\x87\x0e\x23\xb6\xf1\xf0\xb0\xdb\xed\x76\xd4\x64\x61\xc4\xc3\x6e\xdf\x34\x6f\xdf\xb4\x21\xa4\xd0\x86\xf0\xf8\xcd\xfe\xe1\xc1\xcf\x06\x83\x74\xfb\xff\xdd\x7b\x03\x21\x60\xd8\x81\xed\x76\x3f\xff\x14\x58\x55\xbb\x10\x21\xe2\x88\x36\x1e\x76\xfb\x37\x3f\xea\xc7\xb7\xfb\xdc\x5d\xed\xac\xf3\x23\x98\x72\x3b\xfd\x85\x08\x3e\xf2\x44\x5f\xf7\x95\x8c\xb6\x63\xf1\xf7\x5a\x94\xb9\x77\xbf\x7e\xca\x5a\x1b\xc2\xae\x75\xe3\x08\xb6\x2b\x73\xcb\x13\xed\xdf\x80\xd1\x27\xab\x5a\x67\x23\xda\x98\x84\xe9\x88\x63\x10\x4c\xab\x53\x47\x08\x68\xb4\xc5\xdc\x1c\xd0\xf4\x09\x8c\x49\x60\xf5\x08\x51\x3b\xbb\x22\xd5\xa1\x81\x6b\xcd\xb5\xc7\xf6\xb6\xcf\xec\x6f\x6f\xeb\xb5\x31\x6a\x74\x1d\x56\x9a\x8e\x28\xfd\x54\xeb\x66\x5a\xdc\xd2\x42\x36\xaf\xe8\x64\xe0\xaa\xd8\x98\x95\x18\xf5\xa8\xed\x49\xf5\xb3\xcd\xd3\x4f\x13\x82\x07\xdb\x62\x82\x2f\x7a\x9c\xe3\x90\x8e\xd0\x9e\x7b\x68\x51\x3d\xe9\xa0\x8f\xda\xe8\x78\x65\xed\xe4\xdd\x6c\xbb\x0a\x2a\x88\x11\xda\x81\x8c\x51\xab\x47\x83\xb6\x93\x55\x57\x6a\x6b\xf4\xb4\xe1\xce\x38\x5f\x0b\x7a\x84\xd3\xe6\x0e\xe7\xf5\x49\xdb\x5a\x99\x5c\xd0\xbc\xea\x4a\xf3\x38\x21\x6c\xe6\x0f\xfa\x0b\x8d\x23\x9b\xa3\xc2\xa0\xfb\x98\x8e\xce\x9d\x47\xf0\x67\x65\xe0\x88\xa6\xa2\xf8\x54\x53\xb1\xd6\xd1\xf9\x0e\x7d\xfe\x51\x47\x17\xa3\x1b\xb7\xac\xac\x7e\xa3\x19\xec\xa3\xf2\xd0\xe9\x39\xdc\xb4\x78\x7d\x1a\x5e\x69\x0a\xf1\x6a\xf0\x46\xbb\xe8\x8e\xb6\xa1\x68\xb3\xed\xc0\x5f\x0b\x6f\x9d\x31\x30\x05\xac\xf8\xba\x92\x6c\xc3\x8a\x28\x37\xc7\x80\x71\xab\x15\x9b\xd5\x5a\x30\xba\xbd\xb9\x35\xb8\xd9\xdf\x6a\x9b\xb5\xd1\x13\xd7\x78\xbb\x18\x56\x36\xcf\xc7\xca\x66\x84\xad\x4d\xd8\x4e\x1b\xb2\x1d\x51\xa4\xcd\x90\x22\x6d\xc6\x0c\x13\xb4\xda\x9e\x16\x5a\x77\x8f\x6e\xaa\xe0\x76\x74\x12\xee\xec\x21\xc9\xf7\x36\x90\xf4\xdb\xb1\xb7\x0b\x29\x24\x9f\x9f\x67\xd5\x61\xeb\xb2\xef\x1e\x3d\xc2\x99\xc5\x30\x40\xe7\x2e\x02\xf5\x17\x59\xf8\xb3\x0a\x16\x26\x01\xf3\x34\x79\x0c\x21\xf1\x1d\x0a\xfa\x48\x47\x93\xf1\x11\x7b\xe7\x31\x13\x6d\x83\xee\x30\xb5\x30\xf1\xf8\x99\x78\x8c\x72\x55\x6b\x54\x12\x2e\x8f\x2e\x38\x0c\x30\x61\x6a\x07\xd0\x36\xa4\xd6\x20\xf8\xc4\xee\x4a\x17\x35\x41\x1c\x04\x51\xfc\x4c\xf9\x3e\xba\x2a\x6d\x23\xfa\xc9\x99\x25\x58\x45\xf4\x81\xda\xe6\xb1\x44\xa7\x4c\x28\x90\x15\x7c\x82\xa9\xc0\x32\x62\xc1\x6a\x19\x7d\x51\xc4\xc4\xb5\x22\x66\x15\x65\x99\x2d\x4c\x60\x0b\x2e\x1d\x24\x78\xd3\xaf\xb6\x33\x8d\x31\xd3\x7a\x95\xb6\xad\xe7\xfc\xb2\x28\x1e\xc9\x45\x0a\x63\x4c\xfd\x67\xcc\xe6\x26\x94\x8d\xdd\xce\x3e\x38\x9f\xd6\xf8\xdd\xe9\x40\x81\x36\x75\x6e\xd4\x16\xea\xb4\x80\x06\x9f\xc4\xe2\x38\x4e\xf1\xaa\x5a\x34\x26\x24\xb1\x52\xea\x0d\x3e\xf3\x85\xfa\xeb\x20\x70\x1d\x95\x69\x6f\xdc\x45\xd0\xc9\x17\x14\x06\xaf\xed\x59\xf0\xc5\xc3\x94\x7a\xe3\x20\xca\x55\x75\xd8\xf3\xd0\x84\x5d\xdf\xd3\x83\x08\xf1\xd4\x80\x14\xe4\x7b\xe3\x5c\x09\xbe\x82\x1d\xb9\x4b\xbc\xa6\x3c\x9b\xbb\xa8\xde\xbb\x51\x90\xb6\xd1\xa5\xde\xd9\xc8\x17\xd5\xc3\xa8\xcd\x35\x63\x84\x38\x7b\x24\x6b\x45\x6d\x4f\x41\xd4\x33\x7a\x4b\x47\x98\x89\x01\x7b\x9a\x39\x06\x3d\xa1\xf7\x74\x20\x59\xe6\xf8\xbc\x20\x05\xdd\xe7\x39\xe4\x09\x42\xf4\x18\xdb\xa1\x10\xda\x79\x81\x57\x1b\x07\x64\x3b\x11\x7d\x02\xaf\xa1\x2c\x2a\x13\x05\x64\x57\x0b\x11\xb7\x9d\x54\x0b\xd3\x8d\x82\x10\xa2\x82\xa0\xc1\x6e\x75\xa3\x4f\xfc\x4c\x37\xdd\xed\x3c\xa2\xd7\xed\x56\x5c\x52\x11\xab\x17\xe4\xc8\xd5\x3b\x17\xad\x8b\xa8\xca\xa1\x58\x84\xc9\x19\xdd\x5e\xd3\xc9\x5c\xa7\x81\x12\x1b\xda\x28\x4e\xf3\x84\x3e\xea\x16\x4c\x3a\x79\xdd\xf1\x45\x81\x47\xc8\x68\x8e\x4e\x95\x83\xbe\x2a\xbc\x53\x2b\xf5\xee\x92\x5b\xa5\x6b\x8d\x15\xda\x6e\xc3\xc9\xf9\x6a\xce\xf5\x93\x28\x4b\x93\x2f\xc3\x7b\x77\x59\x07\x20\x52\x77\xa9\x6f\x8d\x38\x4e\x86\x52\xe7\x86\xf1\x93\x84\x1b\x6d\xf3\x38\x8b\xca\xcf\x30\x80\x3d\x51\x71\x32\x51\x71\x32\x8b\xeb\x0c\x62\xd9\xe1\x3a\x0d\x68\xf9\xfe\x01\x3c\xb4\xe4\x42\xab\x66\xf4\xa8\x23\xb7\x84\x17\xaa\x81\x10\x5f\x8a\xda\xe2\xcb\xae\x5f\x9c\xc5\x2c\x86\x94\xb3\xe7\xba\x55\xa9\xe4\x4e\xdb\xa1\xa7\x33\x5e\x78\x70\x66\x96\x0e\x56\x47\x0d\x46\x19\x8c\xb4\xbe\x2d\x55\x5c\x25\xde\x8a\xec\xc2\x3a\xe4\x10\x9a\xc8\x13\x74\x7f\x5d\x0a\xcf\xc2\xa5\xf4\x2c\x8c\x2b\x4d\xce\xbd\x79\x94\x92\xf1\x0c\xd9\x8a\x2c\x28\xfe\xcd\xf5\x8f\x24\x1a\x86\x7c\xc4\x18\x65\xab\x4a\x81\x44\x99\xc6\xe8\x50\x1c\x6e\x85\xb9\x9c\xa8\x84\xe5\xd4\x57\x1a\x95\xcc\x69\x04\x4f\xb5\x9a\xfc\x94\x92\x29\x33\x5e\x69\xc6\x92\xe1\x33\xa1\x64\x4c\x65\x17\xfa\xfc\xc3\x87\x2d\xc3\xb3\x75\xed\xd9\xcd\x71\xb9\x7d\x23\x2e\xe3\x90\x3a\xea\xe5\xae\x09\xc8\x20\xb6\xd0\x80\x27\x0e\xf4\x85\x52\x0c\x2a\x98\x4f\xef\x08\xfe\xb7\x19\xb1\x8a\xbc\x45\x31\x4e\x56\xc7\x24\x4c\x88\xdd\xca\xd8\x4e\x23\x84\x33\x5f\x54\xae\x17\x2b\x2c\xd5\x6f\x2d\xe4\x32\xac\x96\x72\x15\x56\x4b\x52\x84\x6d\x14\xa9\xc1\x6a\x49\xd2\x1b\x2b\x9c\xa5\x05\xb9\x91\x37\x27\x77\x95\x9d\x63\xb8\x2e\x25\x17\xd4\x8c\x97\x9d\x64\x56\x2f\x85\xc3\x33\xa3\xbc\xb3\xcf\xe5\xb8\x10\x14\xcf\x21\x94\x97\xa1\xed\xd2\xac\xed\x22\x3e\xd7\x6f\x01\xa3\x93\x99\xf8\xa7\x24\xa6\xcc\xb8\xba\xc8\xd8\xbb\xec\x69\x16\x9e\x54\xe7\x2e\x02\x78\xff\x09\xc8\x9e\x13\x9a\xa7\xe4\x8e\x9f\xb1\x8d\xaa\xd7\xb1\xc0\xe5\x89\x64\x82\x9c\xba\x33\xc9\xd9\x3b\x33\x3a\x66\x19\xca\x31\x28\x39\x50\x36\xd2\xf9\x69\x00\x1b\x92\x9b\x23\x27\xf2\xfc\x9b\xbd\xaa\xb0\xfc\x1c\x85\xca\xa1\x28\x4c\xec\x40\x79\x8f\x83\x75\x01\xa5\x57\xa1\xec\xfe\x0b\x7b\x5e\xe1\x35\x4d\xd0\x75\xe4\xd3\xf9\xb7\xf8\x54\xa1\x6c\x95\x42\xc4\x32\x85\x91\x5b\x4d\xb4\xfd\x74\x51\x75\xd9\x58\x09\xd9\x20\x95\x92\x0b\xc8\x09\xe6\x90\xaf\xcb\x5d\x84\xcb\x0d\xe8\xc3\x44\xae\xf2\xb4\xc1\xe5\x6c\x4d\x9a\xd2\x37\x5f\x95\x07\x4b\x8b\xa0\xb7\xd0\x6e\xe6\x88\x49\xa5\xa2\x57\x60\xdb\xc1\xf9\x85\x9c\x0c\x66\xdc\xe9\x10\xf9\x4d\x54\x68\x19\xb2\xec\x2b\x95\xc1\x4b\xde\x94\x17\xb7\xdf\x66\x47\xf9\xde\xe3\x89\x0b\x50\x0f\xe2\xee\x1e\xf9\x10\x7b\x0c\x8c\xcb\x59\x60\x98\x9f\xc3\xeb\x76\xb0\x54\x56\x8b\xed\x96\xa3\x57\x80\x9a\x9c\xa6\x91\xe6\xe3\x35\x47\x6e\x86\x23\xfa\x13\x0a\x5c\xd6\xe5\x67\xcb\x35\x4f\x68\xbd\x33\x46\x1d\x71\x80\x27\xed\x7c\xe1\x14\x5f\xf3\x10\xb5\x92\x23\xe6\x4b\x49\x1d\x8d\x6b\xcf\xaf\x36\xf0\xe1\x7d\xb5\x51\x8e\xf3\xbd\x66\x39\x3e\x77\x5a\xb4\xe5\x43\xfe\x6a\xcb\x6b\x13\xe6\xd6\x57\x67\xe4\x13\x7a\x47\x17\x83\xdf\x69\xa0\x73\x5b\xcb\xc5\x03\xee\x68\x77\x6c\xb4\x69\x79\xb1\xe6\x6d\xeb\xcb\x35\xdf\x78\xd9\xbd\xa6\x3b\x76\xda\x36\xbd\x3a\xe9\xab\x96\xda\x38\xf3\xbd\x86\x97\xb6\xaa\x9d\xbc\xd6\x39\x56\xf3\x7b\x5c\x7e\x51\x8f\x83\xc7\x30\x38\xd3\x15\x55\xdc\x5b\x48\x39\x7c\x4c\x28\x35\x71\x13\xf9\x4c\x98\xa8\x5c\xe0\xab\x82\x90\xc1\x80\x40\x71\x51\x08\x97\xc3\x60\x32\xab\x6b\x35\xca\x92\xec\xf7\x11\x13\x55\xf2\x21\xd0\x0f\xad\x96\x02\x65\x88\xde\x9d\x31\xff\xa8\xe5\x33\x5a\x11\x3a\xa0\x17\x61\x7e\x15\xa8\x15\xef\xe1\x5a\x0b\xad\xf3\x96\x96\xb2\x2a\x39\x0e\x67\x85\x2c\xdd\xc2\x54\xd3\xcf\x8e\x1e\x55\xf8\xa8\x23\x7a\xae\xf6\x8a\x52\x42\x7f\xa6\x12\xb8\x23\x1c\x0d\x2a\x03\x57\x37\x47\x22\x92\x14\x23\x3e\xc7\xec\xc9\x2b\x54\x60\x4c\x4d\xb9\xde\x64\xde\xba\xf1\x48\xfb\x3e\x4f\xb2\x8d\x2c\xae\x9f\x00\x6e\x79\x4e\x2f\xb7\x2a\x1f\xba\x5b\x31\x9c\xf5\xf4\x52\xe4\xdc\xc2\x2a\x8e\xd3\xc0\xaf\x95\x1b\x56\xcf\xb0\x68\x4b\x18\xdb\xca\xd5\x60\xda\x76\xb4\x4f\x8c\x73\x09\x2a\xa4\x2e\x8e\x45\x28\xf9\x8e\x59\xfe\xb0\x21\x78\x82\x16\xd7\x6f\x57\x95\x16\xbd\x1e\x57\x4e\xfe\xce\x24\x7a\xb0\xa1\x77\x3e\xb7\xcd\x54\x74\xb3\x17\x6d\xd7\xcb\x09\x94\x7c\xa1\xea\x5f\x90\x3a\xba\xe7\x8a\xe5\x74\xb2\x0a\xf9\x11\x89\xe7\x11\x17\x98\xbf\xd7\xd6\x42\xf9\x38\x5b\x69\x93\x77\x13\xfa\xb8\xe9\x77\xfb\x7d\x75\xb6\xba\x75\x1d\xaa\xa3\xee\x74\x9a\x03\xd7\xa4\x06\xdb\x98\xca\x8b\x5f\x3e\x50\xd5\xb7\xd6\x27\xa7\x5b\x54\x47\x30\x9c\x0b\x85\x2d\xd3\x0b\xcd\x2f\xe2\x42\x24\xe7\x0a\x96\x9c\x5b\x70\x2c\x30\x7b\xa3\x90\x27\x7a\x03\xa3\x16\xfe\xb9\x0c\x3a\xa2\xec\x45\xba\xe8\x8e\xde\xc3\xc4\x07\x2e\xda\x18\x7a\xa7\xa2\x01\x2f\xce\x77\xf9\x4d\x82\x61\xd9\x2a\x26\xbc\x07\x74\xc9\x69\x96\x61\x4e\xb3\x8c\xf9\x48\x30\xca\x41\x88\x71\x1c\xbc\x9b\x4f\x43\xba\x78\xcd\xef\x2c\x5c\x2a\x7e\xe1\xd3\xf6\xfc\x78\x58\xbf\xf9\x77\xd8\xc3\x6c\xe2\xbd\x8f\xfe\x87\x97\x9f\xfc\x7f\xfd\xe1\x9f\x4d\xf3\xf5\xd3\xeb\x9f\xfd\xd5\x8e\x6a\x16\x0d\xe6\xb0\xdb\xff\x9f\x1e\x27\xe7\x23\xd8\xb8\xcf\x6d\x9a\x8e\xba\xee\x35\x7a\x1a\x1e\xa4\xce\x39\xf4\xae\x9d\x43\x3a\x0c\x74\xbe\xd3\xc1\x68\x7b\x4e\x07\xda\xb0\x88\x5d\xa1\xf2\xe8\x87\xfc\xd8\xdf\xec\x5f\xcc\xf5\xa6\x69\xbe\xa6\xa6\xf9\x3d\x35\xcd\x9b\xd4\x34\x8f\xa9\x69\x7e\x48\x87\xd4\x34\x9f\xd2\xbf\xd2\x9f\xd2\x9f\xd3\x1f\x1f\xcb\xa2\x3f\xbc\xff\xf0\x61\xf7\x0f\xf0\xa0\x8f\x06\xef\xfd\x57\xe4\x9d\xac\x3b\xbd\x1b\xf5\xb3\xb6\xe9\x1d\x3e\x47\xb4\xdd\x72\x3b\xc7\xdc\x72\x5f\xeb\x2c\x55\x55\xf1\xad\x84\x62\x31\xe3\xe6\x3f\x27\xfb\xfd\xa2\xe5\x7f\x9b\x54\x0a\x45\x1a\xfe\x4f\x4a\xd3\xbc\x5d\xd5\xea\xbf\x38\xe5\xaf\x9e\x49\x1e\xfa\xfd\x00\x7e\x7b\xeb\x7f\xb1\x9a\x6f\x6f\x17\xf3\xed\xff\x6c\x2d\xeb\xde\x34\xfb\xf4\x6d\xb1\xde\x7b\x37\x92\x95\xc3\xee\x0f\xbb\xbf\xff\xf2\xd3\x2f\xab\x19\x59\xbe\x63\xbe\xe6\xfb\xa6\xf9\xee\x85\x09\x9b\xef\x9a\xe6\xfb\xff\xb0\xc8\xe8\x3a\x47\x27\x83\xe6\x49\x1f\x3f\x7e\x4c\x7f\xfd\xf9\xe3\xdf\xfe\xf2\x78\xf8\x71\xbf\xe9\xf8\xf0\xef\x00\x00\x00\xff\xff\x7e\xdc\x51\x61\x6b\x1b\x00\x00" + +func runtimeSyntaxCssYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCssYaml, + "runtime/syntax/css.yaml", + ) +} + +func runtimeSyntaxCssYaml() (*asset, error) { + bytes, err := runtimeSyntaxCssYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/css.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxCythonYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x94\x4d\x4f\xdc\x3e\x10\xc6\xef\xf9\x14\xf9\x2f\xfc\x0b\xb4\x65\x7b\xdf\xbe\x1d\x60\x57\x42\xa5\x02\xa9\x3d\xac\x44\x38\x38\xf6\x84\xb5\x70\x6c\x6b\x3c\x29\x1b\xf5\xe9\x77\xaf\x9c\x2c\x65\x79\xa9\xda\x0b\x4d\x0e\x96\xc7\xd6\x6f\x9e\x79\x66\x92\xc6\x3a\x92\x3e\xd2\xac\xd4\xbd\xac\x82\x2f\x0a\x43\x42\x5a\x66\x45\x59\x96\x65\x3e\xf5\xaa\xa5\x59\x39\xa9\xaa\x69\xec\xd7\xbb\xc8\xeb\xda\x8c\x6b\x6f\x77\x27\x45\xc1\x9d\xa3\x34\xde\xdf\x29\xcf\x07\x4a\xf9\x89\xfa\x9b\xc0\xa6\x3c\x0a\x2e\xf0\x70\x74\x58\x26\x51\x42\x2d\x79\x19\x68\xf5\xbe\xf2\x06\x2a\x41\xa5\x44\x2c\xd0\x4e\xa5\x04\x43\x0d\x8e\xe7\x0b\x18\x72\x20\x67\x1b\xcc\x4f\x4f\x16\x20\x97\x08\xf3\xd3\x2f\x73\xd0\x5a\x53\x14\xd0\x9a\x34\x1a\xeb\x95\x73\x3d\x9a\xc0\x68\x38\xb4\xb8\x72\xa1\x56\x0e\xb6\xc1\xc9\x02\xb6\x8d\x81\x05\xd6\xc3\x26\x38\xd5\xd6\x46\xa1\x55\x11\x3e\x08\x02\x23\xe6\x6c\x91\xad\x17\xb0\xb2\x89\x20\xdc\xe3\x66\x65\x1d\xe1\xc6\xca\x0a\xbd\x25\x67\x0e\xaa\xaa\x9e\xdc\xaa\x8f\xa4\xad\x72\x1b\xed\x3a\x78\xb1\xbe\x23\xd4\x4c\xea\x1a\x4c\xd2\xb1\x1f\xaf\x0f\xf7\xb3\x15\x47\xbf\xb7\xc2\x1a\xf2\x62\x1b\x4b\x3c\x6d\x95\xe6\x70\x4b\xcd\xe5\xeb\x8d\x72\x1d\x87\x5d\x8c\xa3\x33\x3a\x77\x29\x47\x68\x2d\xc4\x1e\xd6\x6b\xd7\x19\x42\x6e\x4f\x8a\x4a\x13\x22\x87\x48\x2c\x3d\x92\x70\xa7\x65\x5b\xfc\xd8\xe1\x21\x47\x9d\x4b\xd6\x2b\xc5\x30\xa1\xab\x1d\x21\xef\x63\x57\x3b\xab\xf1\x2d\x58\x83\xce\x27\x7b\xe5\xc9\x3c\xa8\xe6\x2c\x12\x2b\x09\x7c\xbf\xa5\x7d\x5b\x87\xec\xc9\xc5\x74\xf6\xf6\xf5\xab\x97\x78\xff\x5f\x55\xfd\x7f\x89\x77\xf8\x80\x37\x38\xc4\x8b\x2d\xc0\xb9\x62\xf2\xb2\x22\xb1\x5a\xb9\x27\x28\xd3\x9a\x95\xbe\x26\x49\x19\xb7\x7f\xf0\xfd\xc7\x25\xaa\xea\x02\x55\x75\xb9\x81\x1c\x96\x3a\xf8\x24\xca\xcb\x34\x09\x5b\x7f\x35\xdb\xb0\xcb\x3c\x5a\x3c\x8c\xd5\xf0\x4e\x7e\xc5\xc9\x9b\x27\xa2\x5b\x03\x7b\xfb\x6c\xb3\xc7\x46\x1f\xad\x14\x0f\x96\x55\xd5\xf4\xef\x05\xec\xed\xed\x3d\xcc\x7e\x2f\xf4\x8c\xa9\x9f\xaa\xfb\x2e\x92\xae\x6d\xbc\x63\xfe\x0b\x27\x1e\xf9\xf0\x9c\x62\xda\xe1\xbf\xf2\x48\xc4\xce\x43\x11\xbb\x7f\x48\x27\xc1\xe4\x8f\x71\xff\xeb\xd9\xf1\x19\x96\xcb\x25\x16\x27\xcb\xcf\xf3\x83\xd9\xc7\x49\x51\xfc\x0c\x00\x00\xff\xff\x14\x89\xfe\x81\x2b\x05\x00\x00" + +func runtimeSyntaxCythonYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCythonYaml, + "runtime/syntax/cython.yaml", + ) +} + +func runtimeSyntaxCythonYaml() (*asset, error) { + bytes, err := runtimeSyntaxCythonYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/cython.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxDYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x96\xfb\x53\x1b\x39\x12\xc7\x7f\xe7\xaf\x98\x73\x1e\xe7\x81\x32\x90\x9f\xae\xc2\x71\xb8\x92\x00\x17\x6a\x09\xb0\x09\xd9\x47\x8d\x86\x89\x3c\xea\xb1\x55\x68\xa4\x59\xa9\x65\xe3\xa4\x37\x7f\xfb\x96\x66\x6c\xb0\xb1\x79\xee\x06\x57\x59\xcf\xf6\xb7\x3f\x52\x4b\x2d\x17\x52\x01\x8e\x2b\xd8\x8a\xc4\xca\x8a\x00\x84\x1c\xb7\x56\xa2\x28\x8a\xc2\x84\xe6\x25\x6c\x45\x2d\xc6\xd6\xdb\xa2\x2d\x49\xc4\xdd\xf8\x79\x6b\x65\xc5\x7a\x05\xae\xb1\x7a\x16\x1d\x57\x60\x39\x1a\xeb\x22\xae\x45\x54\x79\x9d\xa3\xe7\x28\x8d\xae\xe7\x3b\x91\x43\x8e\x50\x82\xc6\xad\xa8\xd5\x66\x6c\x95\x36\xe8\x05\x31\xb6\x46\x1d\xda\xd9\xa1\xed\x6d\xda\xd9\xd9\xa1\x97\xc4\xd8\x59\x9b\xb1\xb3\xb8\x4b\x8c\x11\x7d\x8f\xbb\xff\x6b\x2d\x11\x60\x6c\x3d\xc0\x30\xb6\x1e\x77\xe9\x5f\x14\xe4\x5e\xd2\x77\x62\xac\x4d\x8c\xc5\xc4\x58\x42\x8c\xa5\xc4\x18\x63\xb4\x31\xf1\xf2\x82\xb6\x69\x87\x18\xeb\xd2\x16\xfd\xb7\x35\xa5\xce\x91\xab\x48\x6a\x84\x3e\xd8\x48\x49\x04\xcb\x95\x8b\xb8\x85\x48\x40\x65\x21\xe7\x08\x62\x02\x00\xd6\x1a\x1b\xe8\x37\x93\xcd\xce\x7f\xb2\x74\x35\x6e\x1f\x26\xfe\x73\xda\xa5\x50\x1e\x76\xe3\xee\x54\x75\x17\x72\x59\x2e\xd1\x9d\x08\xe5\x46\x3b\xe4\x1a\xd7\xb5\x2f\x7b\x50\x4b\x26\x9b\x9d\xd7\x29\x25\xaf\x3a\xaf\xd3\xd0\xbc\x4d\xfc\xad\xd4\xdc\x8e\xef\xd2\x6e\x38\x7b\x6f\xd3\x64\xf3\xd5\x7d\x50\x0b\x65\x38\xde\x0d\x5a\x73\x4e\x08\x43\x04\x66\xfb\x71\x3b\x81\xbd\x34\x59\xeb\xa4\xdd\xf9\xf1\xb8\x9b\x14\xfb\x87\x69\x57\x76\x5b\xf7\x12\xbe\x51\xe7\x1e\x32\x67\xeb\xe9\x0f\xe4\x6a\xcc\x29\x29\xf6\xd3\x78\xba\x83\xef\xe1\x82\x8b\x07\x07\x7c\x33\xb9\xf8\x2d\xad\x71\x78\xa7\x78\xd3\xd9\x4f\xaf\x9a\x59\xba\x4a\x73\xbd\x19\xab\xf8\xc6\x40\xce\x62\xdc\x33\x98\x8f\x65\x08\xf7\xee\xe1\xbf\xea\x26\xd5\xc9\xb2\x28\xdc\x1d\x83\x9a\x73\x1a\xd5\x87\x39\xbd\x97\xcf\x67\xd1\xbb\x01\xb7\x3c\xc7\x5b\x22\xe7\xd0\x4a\xdd\x6f\x92\x5d\xf8\x38\xe4\x36\x5c\xb2\x7f\xb7\x2e\x87\x40\x8b\xf9\x81\x99\xfc\x38\xfd\xcc\x2a\x56\x90\x4b\xae\x82\xeb\x3a\xa3\x31\xb6\x3e\xc5\xf9\x09\xc6\x23\x63\x85\x9b\x74\x79\x07\x96\xe6\xc0\x5e\x9b\xf7\x1c\x06\x70\xe2\x4a\x72\x17\xca\xbe\x26\xee\x4a\xe2\xce\x81\x45\xe2\x1e\x0d\xf5\x8c\x18\x53\xcf\x02\x3f\xa7\x9c\x3b\x08\x05\x52\xce\x31\x1f\x50\xae\xb8\x73\x54\x23\x85\x12\xa5\xf6\x40\x02\x7a\xbe\x4f\x02\x0a\xee\x15\x92\x00\x05\x7d\x8e\x40\xc2\x10\x28\x07\x04\xda\x97\x04\x17\x95\xb1\x48\x70\x81\x60\x75\xcc\x58\x6f\x8a\x5e\x74\xd4\x0d\xac\x05\x0f\xbf\x2e\xa4\xe6\xaa\x29\xd5\x98\x0a\x63\xc3\x17\x78\x3e\x98\xd6\x99\x85\x21\xd8\x60\x19\x9e\x10\x69\x34\xf5\x0d\x1a\x92\x05\xc9\xb2\xf4\xc8\x7b\x0a\x48\x96\xb5\x77\xa9\x49\x6a\xe3\x43\x03\xc1\x16\x3c\x07\x92\x7a\xc8\xad\xe4\x1a\x49\x3a\x52\xfc\xeb\x78\x96\xad\xec\xd8\x1b\xd8\x4a\x9e\x5b\x43\xa5\xbc\x90\x9a\x4a\x23\xbc\x02\xd2\x30\x22\x6d\x70\x60\xcd\x88\xb4\x57\x8a\x82\x23\x33\x04\x6b\xa5\x00\xaa\x78\x7e\xce\xfb\x40\x95\xe5\xfd\x92\x53\x65\xe5\x30\xec\x51\x65\x4d\x78\x39\x41\x50\xe5\x7b\x4a\xe6\x54\x79\x0b\x64\xa1\x20\x0b\xe8\xe7\x77\xca\x75\x46\x37\xd0\xb8\xdc\x54\x40\x6e\xc0\x2d\x08\x0a\x93\x32\x27\x87\xd6\xe7\x48\xce\x57\x60\xc9\x8d\x64\x88\x9e\x1b\xeb\x7c\x60\x8d\x96\x5f\x41\x10\x42\x59\xa9\xc0\x80\x03\xe9\xa8\xe1\x46\xeb\x81\xd0\x8e\x29\xbc\xec\x52\xd4\x95\x29\xc8\xeb\xb0\xad\x5e\x4b\x44\x70\x48\x61\xbb\xc3\xc0\x68\x20\x15\xd0\x48\xe2\x60\x16\x33\xcb\x6e\xa0\xcc\xb2\xfd\x83\xc3\xbd\x2c\xa3\x2c\xfb\x70\xbc\xfb\x79\xd2\x3c\x3c\x38\x6a\x1a\xfb\x9f\x8f\xde\x9d\x1e\x1c\x1f\xd5\x9d\x93\x8f\x7b\xa7\xa7\xbf\xcf\x8f\xf5\x27\x0b\xcc\x32\xb4\x5c\xa2\xa3\x2c\x1b\x42\x8e\xc6\x52\x96\x55\xdc\xf2\x12\x10\xac\x9b\x45\xd9\xbd\x7c\x91\xa3\xf3\xd9\x1b\x72\xf5\x34\x07\xae\x70\x60\xc3\x71\xbd\x34\xae\x97\x2d\xa0\xa0\xa1\x51\x1c\xa5\x82\x59\xcd\x13\x2b\x4b\x89\x72\x08\x51\xb0\x9a\xea\x35\xff\x84\x6a\xb9\x9e\x31\x8a\x7a\x63\x04\xca\x85\xf1\xe1\xf4\xe5\xa0\x91\xf2\x3a\xc7\x52\x3e\xe0\x96\x72\x0b\x5c\x91\xa8\xdb\x13\x9b\x66\x56\x4e\x7a\x72\xd2\x0d\xc7\xb2\xb6\x55\x46\xf7\xa9\x6e\xb9\x41\x38\xc9\xbe\x76\xe0\x6b\x65\x1f\xcc\x7c\x6d\xe1\x9b\xd9\xa1\x91\x82\x46\x41\x7e\x96\xfc\xff\xca\xf4\xc2\x25\x8a\x04\x14\x52\x83\x88\xdc\xb8\xec\x19\xb5\x64\x09\x4d\xee\xa2\xd1\xa4\x16\x93\xda\xc9\xaf\x90\x21\x55\x68\x85\x2c\x8a\x0c\x67\xc5\x3f\x35\xc9\x29\x42\x73\x0e\x7a\xc9\x7f\x8b\xe6\x00\xec\xbe\x39\x6d\x82\xbd\x77\xbc\x5f\xd7\xa7\x07\x1f\xf6\x2e\x1b\x9f\x4e\xdf\x7c\x38\xa9\x7b\xbf\xec\x1d\xed\x1e\x7f\x9c\x34\x3f\x7e\xaa\x4f\xc0\x9c\xb7\x1a\x68\x3e\xf7\x3e\x8b\x76\xeb\xcd\xfb\xd9\x1b\x04\xd1\x58\xdc\x90\x94\xa3\x85\xac\xcc\x5a\xd7\xd3\xf2\xec\x88\x3b\x97\xd5\x7c\xca\xbd\xca\xd6\xd1\x23\xd2\xf5\xaf\x63\x27\x47\xe3\xfe\xad\x8c\x0b\x88\xf6\x76\xc6\x47\xbe\x1d\xf7\x70\xfc\xe5\xba\xdb\x2f\xff\xc0\x8b\xf5\x1e\x2e\x1e\xb6\xfc\x8b\x1f\xb2\xfc\x90\x23\x54\xb8\xd0\x77\x9c\x98\x05\x9c\x3f\x58\x8b\xb1\xf6\x02\x11\x8b\x9f\x26\x26\xb5\xfb\x6f\xd7\xdd\xd7\xa3\x7f\x3e\x99\xff\x64\xa9\xff\xf4\x89\xfc\x6f\x2f\xf1\xbe\xf3\xf7\x6f\xe7\xfd\x9c\x27\x67\xed\x6f\xc9\x36\x6b\xa5\xc9\x19\x6b\xa5\xab\xcf\xaf\xb3\x9c\xd5\xe3\x6b\x4f\x76\x18\xda\x97\x40\xf1\x0f\xb9\x25\xef\x4c\x19\x5e\xf2\xab\xc4\x5e\x36\x0f\xfb\x02\xcb\xc6\xc6\x75\xff\xcf\x17\x62\x92\xa4\xd7\x64\x16\x55\x18\x5b\x5d\xbc\x5b\xab\x1b\x8f\x93\x5a\x5b\x94\x5a\x5b\x2a\xb5\xf2\x57\x00\x00\x00\xff\xff\xe6\x35\xb2\x7c\xd5\x10\x00\x00" + +func runtimeSyntaxDYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxDYaml, + "runtime/syntax/d.yaml", + ) +} + +func runtimeSyntaxDYaml() (*asset, error) { + bytes, err := runtimeSyntaxDYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/d.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxDartYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x93\x41\x6f\xdb\x3a\x0c\xc7\xef\xf9\x14\x7e\x46\xdf\x6b\xe2\xc0\x71\xde\x69\xa8\xb1\xcd\x28\xb6\xf5\x54\xa0\x03\xb6\x5d\x26\xa9\x85\x6c\xd3\x8d\x50\x59\x36\x24\xba\x69\x06\x62\x9f\x7d\x90\xe2\xb6\x59\xda\x6e\xc1\x80\xf9\x40\x49\x14\xf9\xff\x51\x92\xd9\x28\x0d\xb8\xe9\x21\x8f\x6a\x69\x71\x32\xa9\x01\xa1\xc2\x7c\x12\x45\x51\xe4\xf7\x8c\x6c\x21\x8f\x62\xce\x17\x7e\xff\x28\x9e\x4c\xec\xa0\xc1\x6d\x03\xd2\xa8\xea\x8c\x43\x69\x70\x61\x86\xb6\x04\x1b\x22\x4b\x96\xce\x45\x31\x65\xff\xa7\x27\x82\x2d\xd3\x13\x91\xd0\x92\x2d\xd3\x57\x7e\xbc\xf3\x0e\x99\x36\xa7\xe9\x99\x98\xcf\xa6\x6c\xf8\x22\x98\x3e\x17\x05\x79\xeb\x57\xc5\xac\xe0\xbc\x8c\x0f\x90\xf7\xca\x73\xce\x17\x23\x62\x3b\xdc\xaf\xbd\xf6\x07\xf8\xd8\x0b\x36\x4f\x45\x31\xba\x0a\xd6\x9c\x79\xd8\xc1\xea\x4f\x25\xf6\x14\x54\x0d\x06\x55\xa3\x42\x32\x3b\x4d\xbf\xca\xf4\xdb\x95\x18\x27\xcb\xf4\xe4\x4a\x24\x8c\xe5\xae\x97\x15\xe4\x42\x24\x6c\x2a\xee\x33\x1d\x4a\x84\x16\x0c\x6e\xa9\xd3\xd2\x82\xbc\xa1\x4a\x3a\xa0\x4a\x62\xb5\xa2\xaa\x33\xa8\xcc\x00\x54\x43\x23\x07\x8d\x04\xda\x01\x35\xca\x48\xad\x37\xb3\x9d\x3b\xda\x57\x6a\x3a\x4b\xcd\x60\x2a\x54\x9d\xa1\x6b\x40\x52\x0d\x29\x43\xd2\x91\x72\x64\x60\x4d\x16\x70\xb0\x86\x1c\x20\xb9\xb5\xf2\xac\xa0\x4a\x72\x2d\x15\x92\x74\x1b\x53\x91\x37\xbf\x82\x8c\x89\xb8\x52\x8e\x70\x65\xbb\x35\xa1\xdd\xd0\xad\xb4\x74\xdb\xa9\x9a\xd6\x2b\xa5\x81\xd6\x0a\x57\xa4\xda\xbe\xb3\x48\x5a\x95\x56\xda\x0d\xf5\xd2\x22\x85\x8b\x27\xb8\xf3\x3b\xb3\x67\x9e\x7b\x84\xa0\x1d\x80\x1a\xe9\xcf\x6d\x06\xad\x77\x23\xb7\xbf\x6c\x88\x3a\x57\x0e\xe9\x13\x5a\x65\xae\x5f\x88\x50\x06\xc9\x0c\x2d\xd5\xdd\x50\x6a\xa0\xb2\xeb\xf4\x4b\x67\x63\xe9\x3c\x4b\xde\xbc\x7e\xfb\xcf\xf7\x7f\x8b\xfc\x3f\x12\xcf\x54\x96\xb1\xcb\x44\x4c\xd9\x65\x26\x68\xca\x39\xe7\xd9\x6c\x96\xb0\x4b\x3f\x13\x19\xbb\x56\xad\x48\x9e\x3d\x0e\xe7\xa1\x07\x82\x29\xb6\x96\xbc\xf7\xa7\x8e\x08\x1e\x56\x36\xc6\xe2\x31\x8f\x39\x2f\x82\x6c\x3c\x79\x10\x6c\x43\x9d\x61\xe9\x3f\x87\xd2\x86\x9a\xb2\xf8\xc1\x07\xa6\xce\xa3\xf8\xe8\xd1\xb1\xd3\xb0\xf7\x5f\x1a\x61\x57\x77\x79\x14\x7f\xbe\x78\x7f\x91\x17\x07\x00\x38\x4f\xf6\x11\x9c\x27\xd9\x1f\x52\xc6\xbe\x73\xe1\xd5\x9e\xd2\x78\xfc\x84\xb5\xe3\x71\x37\xaa\x1f\xaf\x74\xf1\x1b\xfe\x23\xa9\x87\x4a\x49\xfd\x6e\x25\xed\x63\xea\xa1\xe5\x1c\xef\x57\x73\xfc\x37\x8a\xf9\x11\x00\x00\xff\xff\x7a\xf4\xbf\x0c\x8a\x05\x00\x00" + +func runtimeSyntaxDartYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxDartYaml, + "runtime/syntax/dart.yaml", + ) +} + +func runtimeSyntaxDartYaml() (*asset, error) { + bytes, err := runtimeSyntaxDartYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/dart.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxDockerfileYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x90\x51\x6f\xda\x30\x10\xc7\xdf\xf3\x29\xac\x80\x28\x99\x54\xf6\x9e\x97\x2a\x24\x6e\x89\x48\x62\xe4\x84\x2e\x15\xa6\x92\x97\xdc\xd6\x08\x70\x22\xdb\xd5\x54\xe9\x3e\xfc\x64\x28\x05\x75\x0f\xdb\xcb\xfc\x76\x7f\xdd\xdd\xef\xe7\xfb\xd1\xed\xc1\xbe\x0d\x10\x92\xb6\x6f\x76\xa0\x5d\xed\x79\x2d\x58\x68\x6c\xe8\x11\x42\x88\x4b\x94\x3c\x40\x48\xfc\x69\xf2\xd1\xb3\x79\xfe\xba\xfd\x32\x46\x21\x66\x97\xb9\x71\xe0\x7b\x9e\x7e\xdd\x83\x39\x4d\x8e\x46\x64\x09\x6f\xbf\x7a\xdd\x9a\x63\x7d\x4b\x1c\x69\xb6\x3b\x65\x6e\xdf\x5d\x17\x3c\x4f\xef\x39\xcb\x31\x8f\xd2\xa2\x8a\xd2\x82\x72\xe4\xeb\x02\xe3\x3c\xc1\x2c\x9a\xd3\x0c\x69\xbd\x62\x25\x45\x5a\x3c\x62\x94\x24\x18\xb3\xd5\x13\xd2\xa2\xe2\x4f\x2b\x96\x16\x15\x3e\xb2\x6c\x9d\x53\x5c\x97\x94\xe3\x37\xc6\x97\x49\xca\x91\x15\xf3\x75\x9a\x25\x18\xf1\x07\x5c\xd0\x28\xab\x16\xf1\x82\xc6\x4b\x2c\x2b\xb6\x2a\xd3\x87\x22\xca\xb0\x5c\xd0\x2c\x0b\x36\x9b\xd0\x0c\xb2\x81\x70\xbb\xf5\xbd\xa3\xe2\x51\x7a\xae\x65\xb3\x03\x6b\xc8\x84\x0c\x52\x83\xb2\x2f\x60\xba\xf3\x17\x8c\x95\x16\x0e\xa0\xac\xf3\x17\x62\x8a\x42\x04\x28\xc4\x06\x85\xd8\x06\xd7\x5b\x92\xfe\xf5\xfb\x1e\x88\x3c\x0c\xa0\x8d\x54\xed\x79\x7e\x80\xa6\x93\xfb\x90\xf8\x93\xc9\x75\x7b\xdc\x1f\xdc\xd6\x33\xa6\x39\x95\xe1\x7b\x03\x71\x5c\xed\x98\x23\xff\x23\x02\xe5\x8e\x38\xbe\x04\x57\xb7\x3f\xbf\x5b\x62\xfb\xb6\x77\xae\x15\x4b\x18\xd6\x75\x8d\xf7\x69\x9d\xd3\x20\xbc\x7b\xa7\x3b\x96\x32\x56\x2a\x3b\x33\x56\x77\xea\xe7\x9f\x4c\xe1\x7f\x86\x5e\x27\x66\xd7\x0d\x2e\x12\x42\xcc\xfe\xe2\x72\x21\x9d\xae\x10\xbf\x48\x7d\x19\xfd\x57\x9d\x9b\xcf\x36\x37\xff\x43\xe6\x77\x00\x00\x00\xff\xff\xda\x2b\xb9\x29\x1a\x03\x00\x00" + +func runtimeSyntaxDockerfileYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxDockerfileYaml, + "runtime/syntax/dockerfile.yaml", + ) +} + +func runtimeSyntaxDockerfileYaml() (*asset, error) { + bytes, err := runtimeSyntaxDockerfileYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/dockerfile.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxDotYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x52\x4d\x8b\xdb\x40\x0c\xbd\xfb\x57\x18\xb3\x07\x7b\x21\x9b\xbb\xa1\xf5\xa1\x1f\x50\x68\xd9\x52\x5a\xc8\xc1\xb0\xc8\x1e\xc5\x16\x19\xcf\x0c\x1a\xa5\x21\x45\x3f\xbe\x8c\x67\x9b\xec\xc7\xa1\x85\xfa\xe4\x91\xf4\xf4\x9e\x9e\xb4\x27\x8b\x72\x0e\xd8\x96\xc6\x4b\x51\x18\x14\x1c\xa5\x2d\xca\xb2\x2c\x53\xca\xc1\x82\x6d\x59\xf5\xfd\x5d\x6d\xbc\xe8\xf4\xb3\xb9\xa9\x8a\x82\x8f\x16\x63\x2e\xda\x94\x19\x5d\xa6\xa2\xa1\x36\x34\x31\x84\x59\xd1\x4c\xa8\xf9\xd7\x79\x83\x1a\x8f\xc3\xfa\x6a\xfa\x7e\xa8\x1e\x81\x51\x40\x70\x41\x27\x6d\xc6\x02\xb3\x3f\xd5\x33\x82\xd1\x48\xbf\x50\x05\xc8\x36\x5a\x0f\x93\xee\xc9\x5a\xdd\x7b\x27\x4d\x37\x7a\xeb\x59\x47\x74\x82\xac\xa3\x77\x51\x18\xc8\x89\x1a\x1c\x3d\x83\xe0\x57\x35\xc4\x6a\x28\x8a\x67\x21\xef\x56\x58\x9d\xc6\x58\x9b\x36\x9a\xfa\xd7\xa3\xa5\xa0\x16\x06\xb4\x29\x40\xd3\x2c\xf9\x55\x83\x9b\x2c\xae\x70\x70\x23\x66\x70\xa6\xbc\xb6\x68\x3a\xb5\x70\x46\xae\x63\xd3\xe9\x02\x3c\x91\xd3\x65\xb4\xb4\x90\xe8\x42\xce\xa2\xcb\xc5\x69\xf0\x88\x41\x5d\xcc\x39\xcf\x06\x99\xdc\xa4\x9e\x09\x9d\xc0\x2a\x2f\xc0\x84\xb5\x21\x6e\x3a\x0d\xc8\x14\x66\x64\xc2\xa8\xc1\xb3\x3c\xac\x92\x1e\x2e\x62\x18\xdc\x21\x95\x6a\xc4\xd0\x74\xca\xa9\x81\x32\x4e\x47\x0b\xac\xec\x93\x9b\x1a\x61\xc1\x6c\x61\x76\x2f\xce\x10\xb0\x4e\x9b\x6c\x3a\x8d\x64\x30\x66\x6f\xe3\x01\x4f\x1a\xe5\x6c\xb3\xcd\xcf\x0c\xf9\xf1\xed\xb3\x9e\xb2\x29\x27\x32\xf2\x7c\x67\xe7\x65\xf0\xb6\x2d\xcb\xea\x8d\x6e\xde\xea\x66\x53\x15\x8f\x99\x75\x17\xe0\xe4\x2e\x4a\x1a\x32\x5f\x47\xfa\xa2\x00\xaf\x2b\xae\xaa\x4b\x0c\x9d\x79\x11\x89\x07\x0a\xeb\x1d\xf4\xfd\xdd\x35\xfa\xe4\xd0\xfe\x7c\x4f\x99\x02\x8e\x04\xf6\xdd\x0c\x7c\x85\x5e\xe4\x2c\xeb\x69\xbd\x92\xb1\xdd\xbe\x94\x71\xf3\x17\x3e\xf1\xc6\xb7\x65\x55\x7f\xbf\x7f\x7f\xaf\xbb\xdd\x4e\x3f\x7e\xda\x7d\xf9\xd0\xb4\xdd\x3f\x90\xf5\xfd\xed\xab\xa9\xfb\xdb\xed\x7f\x30\xfe\x0e\x00\x00\xff\xff\xd2\x53\x55\xa9\xb1\x03\x00\x00" + +func runtimeSyntaxDotYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxDotYaml, + "runtime/syntax/dot.yaml", + ) +} + +func runtimeSyntaxDotYaml() (*asset, error) { + bytes, err := runtimeSyntaxDotYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/dot.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxElixirYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x54\x7f\x6f\xdb\x36\x10\xfd\xdf\x9f\xc2\x71\x5d\x44\x72\x11\xa3\xff\x36\x18\x9a\x15\x4d\x06\x14\xe8\x0f\xac\xeb\xd6\x60\xa2\xc4\x50\xe2\xc9\x26\x4c\x91\xca\xf1\x14\xdb\xcd\xf5\xbb\x0f\x94\x14\xc7\xd9\x16\xc3\xd0\x51\xef\x9e\x8e\x8f\xc7\xbb\xab\x8d\x05\xda\xb7\x70\x3e\x05\x6b\x76\x06\x27\x13\x0d\x04\x15\x9d\x4f\xa6\xd3\xe9\x34\x7a\x9d\x6a\xe0\x7c\x3a\x13\x62\x09\xbb\x39\xf7\x26\xcc\x67\x93\x09\x76\x16\xc2\x40\x3b\x9b\x06\x52\x04\x0d\x38\xea\x99\x65\xa2\xca\xc0\x84\x9d\xab\x18\xa1\x61\x6d\xee\x18\x7d\xe7\x34\x37\x6a\xc7\x8d\x71\xac\x9c\x66\x8f\xec\x3c\x31\xad\xd1\x6f\x19\x95\x09\xc0\x08\x83\x5d\x6b\x26\xcb\xc6\xb1\x05\xb7\xa2\x35\x83\x85\x86\xdb\x8e\x64\xbf\xd0\x10\x08\xbb\x8a\x3a\x04\x26\x2f\x93\x40\x68\xdc\x8a\xab\xb5\x42\x6b\x02\xa5\x6c\x82\x4c\x14\xf9\x86\x4b\xe3\x14\xee\xb9\x34\x34\x72\x4a\xef\x2d\x28\xc7\xb5\xf5\x8a\xb8\xee\x5c\x45\xc6\x3b\x36\x8e\x60\x05\xc8\xf1\x73\x6e\x54\xcb\xce\x58\x76\x5d\x53\x02\x72\x6b\x34\xb7\x1e\x89\x11\x6a\x40\x70\x15\x30\x75\xad\x85\x94\x93\xd2\x10\x97\x7b\x82\xfe\x93\x01\x94\xc1\xfc\x80\x71\x5f\xd9\x2a\x24\xd6\x50\x27\x1a\x2c\xac\x14\x01\xc3\xae\x82\xb6\xdf\x72\xd5\x29\xd4\xc3\xb3\x65\xd3\xb4\x96\x1b\x55\xa1\x1f\x9e\x2d\x37\x5e\x77\x16\xd8\xdf\x01\xa2\xd1\xaa\xb4\xc0\x2d\xb7\xe8\xc9\x57\xde\xf2\x70\xfe\xf4\x82\x83\x59\x19\x2b\xb3\x0a\xc3\xf6\xfd\xd7\x3f\xbe\x5f\x7e\xfe\x96\xb3\xa9\x19\x6c\x00\xee\x9c\x85\x10\xb8\xf2\x4e\x47\x41\x3a\x9e\xdf\x79\x0d\x1c\xc0\xd6\x1c\x5a\xb5\x75\xc3\x53\x5a\xe3\x36\xe3\xb2\xf1\xce\x90\x47\x0e\xe0\x34\xc3\xce\xd0\xb8\x17\xaf\x80\xa4\x72\x5a\x76\xad\x56\x04\xd2\xb8\x1e\x31\xae\xbf\x96\x68\x7c\x1b\xcd\xa3\x5b\xb5\xad\xdd\xb3\x71\xa1\x85\x2a\x26\x75\x03\x12\xa1\xe6\x2e\x00\x6b\xcf\xe0\x74\x2a\x44\x39\x7b\xae\x7e\xac\x51\x21\xa6\x65\x48\xfc\x6d\x67\x10\xb8\x52\x01\xb8\x76\x8c\x50\x81\xb9\x03\x56\x35\x01\x32\xe1\x9e\x2b\x45\xd5\x9a\x11\x42\xd5\x01\x87\xae\x05\xe4\xdb\xce\x53\xcc\xc1\x13\x2b\x43\x6b\x4d\x15\x13\x51\x7b\xe4\xad\xa1\xf5\x20\x62\x54\x51\x79\x17\x48\x3d\x88\x10\x22\x7b\x77\xf6\x77\xfe\xea\x48\xe6\x03\x61\x39\xd4\xc6\xc0\xcb\x5e\x9f\xbd\x19\x59\xff\xa6\x0d\x55\x77\x3e\x9d\xdd\x64\xc5\x4d\xbe\xb8\xe1\x97\x3b\x21\xee\xb3\xe2\x67\xbe\x10\xe2\xe7\x7f\xa2\x1e\xe8\x62\x96\x64\x85\x98\xe5\x9c\x88\xf8\x9b\xa5\xe9\x42\xcc\xf8\x65\xf6\xfb\xf7\xfc\xe2\x28\xc0\x01\x49\xb2\x22\x8d\x48\x3a\x22\xbf\x64\xc5\xdb\x7c\xf1\xf6\xe0\xcf\xb2\x22\x8f\xfe\xfc\x80\xcc\xb3\x62\x1e\x91\xf9\x01\x29\xb2\xa2\x88\x48\x31\x22\x27\x59\x71\x92\x2f\x4e\x9e\x17\x79\x9a\x64\xc5\xe9\x28\xf1\x34\x4d\x17\xa7\xfc\x32\xbb\xdd\xe6\x4f\xf5\xf5\xc0\xb1\xbc\xdb\x6d\xfe\xa8\xae\xf7\x1e\x8b\xeb\x81\x63\x6d\x3d\x70\x2c\xed\x76\x9b\x1f\x94\x3d\x14\xcf\xbe\x29\xbd\x5d\x96\xa8\xaa\x0d\x50\xe8\x6f\xe5\x9e\xe3\xfe\x42\x64\x1c\x03\x0b\x91\xb0\x10\xe9\xd1\x05\x35\x63\xb1\xbd\xc8\x8a\xfb\x7c\xb9\x98\xf3\x8b\xf9\xec\xa9\x73\x59\xa2\x59\xad\x7b\xce\x23\x29\xb2\x46\x5a\x9c\x9a\xcb\x0d\xec\xb7\x1e\x75\xbf\xe5\x79\xa6\xce\x7e\xc4\x8a\x19\xed\xeb\xb3\x37\x32\x5f\xcc\x9e\xa3\x97\x89\x86\x50\xa1\x29\x81\x09\x02\xa5\xcf\xb5\x02\xec\x62\x03\x81\x66\x15\x02\x20\x8d\x46\x0e\x83\x72\x7c\x31\x4e\x6a\xb0\xa4\x0e\xce\xa1\x43\xf4\xd0\x18\x12\x10\x3d\x8e\xeb\x61\xdc\xd6\xb6\x73\x9b\x38\xd1\x3a\x82\xd1\x3c\x06\x19\xdf\x1f\x82\x3c\xe9\xd3\x21\xd5\xa4\x62\x01\x14\x42\x84\x85\x10\xbf\xfe\xef\xb9\x8f\xfb\xc1\x68\x70\x64\x6a\x03\xb8\xec\xc7\xdb\x78\x32\x29\xdf\xbf\xfb\xf8\xf1\xea\xab\x94\x2c\xe5\xe5\x87\xc1\x5e\x7d\xfe\xab\xb7\x9f\xbe\x5c\xfe\xf9\xf1\xaa\x5f\xf6\xc3\x00\x42\xbf\x2e\xad\xaf\x36\x52\xc6\xa9\xda\x87\x7a\xd2\xbf\xe4\x75\x8c\x9d\x5c\x5f\x5f\xf3\xb7\x2f\x97\x5f\xf8\xb7\x0f\xd7\x9f\xae\x58\x88\x8b\xe1\x7f\xc8\x71\x8b\xd0\xa2\xaf\x96\x61\x0d\xa5\x1a\x3a\x4e\x7c\x5f\xbc\x38\x59\xbe\xba\x48\xa6\x3c\x4f\x67\x93\x7f\x02\x00\x00\xff\xff\x5b\x2b\xa6\x36\x18\x07\x00\x00" + +func runtimeSyntaxElixirYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxElixirYaml, + "runtime/syntax/elixir.yaml", + ) +} + +func runtimeSyntaxElixirYaml() (*asset, error) { + bytes, err := runtimeSyntaxElixirYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/elixir.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxErbYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x55\x7f\x6f\xdb\xc8\x11\xfd\xbb\xfe\x14\xb4\x22\xd5\xbb\x72\x25\xb7\xff\x04\xa8\xce\x67\xe6\xda\x28\x45\x80\x6b\xdc\x02\x01\x9a\x1e\x7f\x28\x4b\x72\x48\x2d\xb4\xdc\xa5\x77\x97\xb2\x75\x79\xfe\xee\xc5\x52\xb2\x65\xc7\x6e\x0c\x7a\x21\xbc\x19\xce\xbc\xd9\x79\x33\xac\xa5\x22\xbf\xeb\x68\x11\x91\x2d\x4e\x4e\x2a\xf2\x54\xfa\x45\x74\x12\x45\x51\x14\x6c\x5a\xb4\xb4\x88\x46\x69\x3a\x27\x5b\x8c\x91\xa6\x73\xbb\xf6\xad\x1a\x8f\x4e\x4e\x6c\xaf\xc8\x2d\x06\xcf\x59\x44\xd6\x1a\xbb\x88\x46\x97\x49\x7e\x9a\xcd\xa7\xf1\xd5\xe8\x60\x70\xbb\xb6\x30\x6a\xee\x45\xb3\x88\x46\x2c\x96\xfc\x32\xb9\xc8\x62\x26\x58\x51\x58\x94\xd6\xe8\x5d\x8b\xaa\xb2\xe4\x1c\xba\x4e\x91\x87\x25\x01\xeb\x65\xa9\x08\x4e\x56\x84\xbe\x92\x86\xc7\x28\x98\x70\xc4\x6a\xa3\x3d\x8f\x51\x31\x09\xc3\x21\x1b\x28\x53\x6e\x6e\x7a\xe3\x09\x96\xc7\x28\x05\xd3\x5b\xe1\xd0\x79\x69\x34\x47\x49\xda\x93\x45\x29\x3d\xa1\x34\xac\x22\x28\xa8\xc6\x9a\xbe\xe3\xa8\x98\xf0\x82\x29\xe9\x86\x78\x20\x05\xf2\x42\x2a\x87\x5a\x43\x0a\x65\x1a\x48\x0b\x05\xcf\x41\x2d\x2b\xa8\xe2\x31\x6a\x49\xaa\x72\xe4\x51\xcb\x86\x95\x62\x48\x82\xde\x12\x47\xa0\x85\xda\xd8\x16\x4c\xf2\xb8\xb6\xa2\x25\x0c\x67\xf0\x5e\x27\x7f\x99\xbd\xcd\xb0\xb6\x90\x90\x6d\x03\xa9\x59\xd7\x7b\x38\x8e\x4d\x51\x61\x43\xbb\x86\x34\x94\x28\x48\x41\x51\x43\xba\x82\x92\x4c\x6f\x78\x8c\x56\x30\xa9\xd1\xc1\x6e\x38\x5a\xd2\x3d\x93\x9e\xda\x80\x93\x67\x02\x64\x39\xb4\xd8\x42\x1b\xb6\xcf\x05\x57\x5a\xd9\x79\x0e\xc3\x14\x3a\xcf\x86\x4a\x31\xdc\x44\xef\xbb\xde\x73\x74\x4c\x58\xd1\x42\x96\xbe\xb7\x84\xf0\x98\x26\x5c\x3d\x8f\x71\x03\xcb\x3a\x78\xf4\xc5\x8e\xc3\x31\x6f\xe5\x86\x78\x0c\x27\xda\x0e\x8e\x58\x39\x14\xab\xa8\xf4\x1c\xae\x15\x4a\xc1\x99\xde\x96\x04\xd7\x09\x0d\xe7\xad\xd1\x0d\x5c\xcf\x0a\x74\x68\x5b\x61\x77\x1c\x9e\xee\xbc\x08\xdd\xf4\xb2\x25\x78\x2b\xca\x0d\x7a\xa6\x78\x8c\xad\xb0\xd8\xca\x8a\x0c\x6e\x0b\xcb\x59\x34\x9f\xe2\x8a\xbf\xaa\x99\x39\xdd\x79\xd2\x15\x55\xcf\xc4\x53\x98\x6a\x87\x4a\x6e\x11\xa4\x88\x35\x89\x8a\x51\x68\x7f\x6d\x4c\xe8\xb7\x97\x5e\x11\xbc\x28\xc2\x79\x70\xc6\x9a\x91\x08\x4d\xb4\x83\x17\x7f\x25\x6b\x67\xa9\xb3\xa6\x7c\x96\x69\x7f\xa3\x70\x7e\xa7\xe8\x35\xa2\x1d\x95\x52\xa8\x45\x34\xfa\x63\x92\xff\x94\x24\x0b\xd7\x89\x92\x16\x59\x96\x4d\x7f\x7a\x5e\xcc\x22\x1a\x25\x8b\x9f\xb3\x07\x50\x56\xa4\xbd\xac\x25\x85\x99\x61\x42\x79\x14\x4d\x69\x94\xb1\x58\x93\x6c\xd6\x1e\x6b\x4b\x35\x64\xf5\xa0\x0b\xa3\x9b\x8a\x5c\x89\x30\x8e\x30\xba\x54\xb2\xdc\xc0\xe8\xda\x94\xbd\x83\xd1\xca\x88\x0a\x46\xb7\xa6\x77\x64\xb6\x64\xe1\xe4\xef\x0f\xad\xb1\xe5\x9e\x3e\xbc\xb0\x0d\x79\x84\x69\xc7\x56\xa8\x9e\x70\x2b\x2b\xbf\xe6\x3f\x3f\x90\x2a\x8d\x76\x5e\x68\x3f\x77\xde\x4a\x1d\xe6\x35\x1d\x25\x79\x3a\xca\xa6\xe9\xe8\x85\x8f\xee\xdb\x62\xcf\x3e\x96\xfc\x4d\xf2\xe7\xd9\x5f\x7f\x99\x7d\xc8\xbe\xbd\xfd\xd3\xdb\xfb\xff\x13\x6f\xde\xdb\x70\x0d\xac\xf6\x1d\x0b\x8a\x5b\xfb\xc3\x8f\x46\x7a\x94\x6b\x6b\x5a\xe2\x8b\x8b\x8b\x24\x8f\xfe\x90\x9d\x1f\x63\xb4\x2d\x69\x1f\x36\xcb\xe9\x6c\x36\x3f\x8f\x67\xb3\x57\x1a\x76\x79\xfa\xfe\xfa\xef\x9f\xff\xfb\xaf\xe5\xfc\xfc\xd8\x9c\x8a\x6a\xd1\x2b\xbf\xdf\x50\xe1\xcf\x79\x61\x87\x48\x93\xd1\x23\x46\x3a\x48\x6b\x72\x75\x44\xf6\x6b\x2d\x4a\xb2\x93\x97\x69\x26\x98\x3c\x86\xb7\x83\x28\x7f\xd0\x77\x2f\x3c\x1d\xb8\xa7\x69\xc1\xfe\xb6\xfc\xc7\xc7\x4f\x58\x7e\x7a\x0f\xa1\xa4\x70\x10\xba\x42\x41\x8d\xd4\x28\x2c\x89\x0d\x4a\xe1\x08\xa5\x12\xce\xa1\xa2\x3a\xfc\x4b\x4d\x55\x9a\xc6\xa8\x0c\x48\x39\x0a\x87\xac\x11\x16\x04\x69\x17\x06\xb8\x16\x01\xae\x8d\x85\xac\x21\x35\x5a\x53\xf5\x8a\xa0\xe9\xce\x43\x4b\x05\x6d\x3c\x8c\x85\xa5\xca\xc0\x92\x2b\xfb\x30\xf3\xde\xee\xc2\xd9\x5b\x0d\x47\xaa\x86\xeb\xbb\x30\x33\x6b\xd2\xf0\xb6\x27\xf4\x3a\xa4\xef\xb5\x0a\x2b\xb9\xd7\x5e\x2a\xdc\x06\xe3\xed\x5a\x2a\xc2\x2e\xec\x40\x9e\xa6\xc5\x4b\x25\xcf\xb7\x62\xd0\x43\x9a\x8e\xf1\x0e\xef\xde\xf1\x38\x4d\x8b\xe4\x97\xd9\x6f\xd9\xf9\x5e\x1e\xbf\xad\xc4\xec\xf7\x6c\xfa\xf0\x66\x2b\x1a\xd2\x5e\x1c\x24\xc4\x92\x28\xca\x90\xf3\xc5\x83\x6f\x76\xfe\x7a\x96\x56\x94\xd6\x1c\xee\x74\xb5\xfa\xf0\xf1\xd7\xe5\x6a\x85\xd5\xea\xd7\x8f\x9f\x96\xab\xd5\x53\x66\x85\x0d\x93\x74\xcc\x72\x7a\xc1\x92\xfc\x22\x03\x4b\xd3\x34\xbd\xe0\x7c\x7a\x91\x48\xd3\xde\x65\x53\x4c\x6c\x9a\x7e\x63\x49\x7e\x7f\x30\xde\x73\x3e\x4d\xd3\xfb\x83\xf9\x79\xbc\x42\xf5\xe1\x83\xf8\x35\xc9\xbf\x66\xd3\xaf\x98\xdc\xa5\xe9\xb7\xf0\x66\x78\xe1\x47\x83\xc4\x86\x49\xda\xc7\x4f\x47\x21\xc1\x08\x93\xe4\xdf\xff\xc9\xe2\x27\x01\x1e\x11\x96\xe4\x3c\x20\xfc\x80\x5c\x26\xf9\x55\x36\xbd\x7a\xb4\x27\x49\x9e\x05\x7b\xf6\x88\x8c\x93\x7c\x1c\x90\xf1\x23\x92\x27\x79\x1e\x90\xfc\x80\x9c\x86\x4f\xf3\xf4\xf4\x79\x39\x8d\x25\xd2\x8b\x68\xf4\xe6\x95\x32\x1e\x6c\x67\x2c\xc9\xcf\x0e\xd4\xcf\x38\x9f\x9e\x61\x92\xdc\xdc\x66\xcf\x79\x0f\xc0\x53\xda\x37\xb7\xd9\x91\xf5\x60\x7d\x4a\x7a\x00\x9e\x72\x1e\x80\xa7\x94\x6f\x6e\xb3\xef\x18\x1f\x77\xc1\x9b\x24\xff\x96\xcd\xa7\x63\xbc\x19\x7f\x67\x9c\xef\xcb\x0a\x3e\x47\xa7\xa3\xd7\x0b\x1d\xbd\x5c\x0e\x97\xb3\xf8\x2c\x5e\x5e\x7f\x3e\x8b\xbf\xdf\x12\xf9\xf2\xfa\xf3\x0f\xf6\x84\x37\x55\xd0\x25\xfb\xf2\xe5\x0b\x3e\x5f\xbf\xbf\xc6\x87\x8f\x5f\xfe\xb9\x44\x9a\xc6\xfb\x87\x8f\x4e\xfe\x17\x00\x00\xff\xff\x6d\x99\xea\xb9\x6e\x09\x00\x00" + +func runtimeSyntaxErbYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxErbYaml, + "runtime/syntax/erb.yaml", + ) +} + +func runtimeSyntaxErbYaml() (*asset, error) { + bytes, err := runtimeSyntaxErbYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/erb.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxFishYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x55\x5b\x73\x54\x37\x12\x7e\xf7\xaf\x38\x8c\x5d\xcb\x0c\xec\x78\x81\x05\x6a\xd7\x7b\x71\x52\x24\x54\xe5\x21\xe1\x25\x0f\xae\x58\xc6\xd1\x48\x7d\x46\xe2\xe8\x86\xd4\x9a\xb1\xc3\xc7\x7f\x4f\x49\x33\x36\x60\x28\x82\xcb\xba\x4c\xf7\xd1\xd7\xdd\x5f\xb7\x5a\xa3\x75\xc4\xd7\x89\x4e\x86\xd1\x16\x73\x70\xa0\x89\x49\xf1\xc9\xc1\x30\x0c\x43\xd3\x05\xe9\xe9\x64\x98\x09\x71\xdc\xf4\x47\xb3\xae\x30\x24\x35\xe5\x93\x61\xf6\xfa\xf0\xde\xf1\x83\x7f\xcc\x29\x6c\x86\x87\x8b\xd3\xf6\xc5\x7c\xc0\xd1\x62\x76\x70\x90\xab\xa3\xb2\x83\x19\x86\xc3\xe1\x97\xea\x57\x94\x4b\xff\xbd\x1c\x54\x0c\x85\x65\xe0\x0e\xbc\x3a\x7f\xb4\xfc\xf7\xc5\x43\x21\x56\xb3\x83\xdb\xef\x5f\xc4\xa0\x2d\xdb\x18\xa4\x2b\x83\x0c\xba\x1d\xe1\x1c\xdd\x30\xba\xb8\xdd\xa3\x14\x96\x4c\x9e\x6e\x60\xe6\x32\x68\xac\x68\x6d\x03\x56\x99\xe4\x04\x25\x0b\xa1\x9d\xb3\xa1\x12\xc8\x15\x02\x05\x8d\x31\x66\x8c\x35\xa8\x86\x0e\x3b\xc2\x06\x84\xc8\x88\x19\x99\xb8\xe6\x80\x42\x8e\x14\xa3\x18\x3b\x32\xca\xd6\xb2\x32\xd8\x1a\xeb\x68\xd1\x7d\xdc\x1b\x4f\xa4\xac\x74\x27\xc3\x6c\x2e\xc4\x3b\x08\xf1\x1e\x42\xcc\x21\xc4\x02\x42\xfc\x07\x42\x5c\x40\x88\x73\xfc\x0e\x21\x84\x80\x10\x47\xf8\x2f\xfe\x8f\xd7\xb8\x87\xff\xe1\x6f\x10\x02\x8b\x8f\xa2\x7d\x69\x8b\x19\x54\xf4\x5e\x06\x7d\xc3\xd1\x2e\x29\x3d\xb0\xd5\x1a\x2b\xdb\x82\x73\x51\x4d\xbb\xe0\x52\xb4\x81\xb1\xaa\xd6\xb1\x0d\x50\x1a\x2a\xd6\xc0\xd8\x63\xdc\xac\xce\x86\xc6\x80\x4f\x8e\x98\xa0\x6d\x36\x6d\x2a\x20\x65\x22\xc8\x5b\x06\x6d\xa4\x03\x5d\x91\x02\x5d\x59\xc6\xb8\x46\x4b\x62\x9f\x2e\x55\x0c\xa3\xdd\x09\x2e\xad\xa6\xc0\xbb\x6d\x92\x6b\xca\xfb\x6d\x8e\x3e\xed\xc5\xd9\xae\x0d\x7f\x22\xa9\x49\x4b\xa6\xcb\xbd\x7d\x1b\x43\xe9\x72\xdd\xd9\xa7\xdd\x52\xe4\x86\x6e\xb3\x51\x60\xc8\x25\x18\x5b\x38\xe6\x6b\xbc\x89\xab\x02\x2f\xd9\xc0\x5b\x4f\x7a\x85\x40\x57\xac\x11\x13\x05\xa4\x98\x34\x52\xa6\x8d\x46\x2a\x75\x85\x54\x1b\x70\xda\x6a\x64\x19\x74\xf4\xc8\x24\x35\x0a\x71\x1b\x97\x2a\xba\x98\x51\x62\xcd\x8a\xd0\xca\xa6\x16\x14\xce\x36\xac\xc1\x59\x26\x34\xae\x51\x9d\x6d\x8c\x54\x2f\xcb\x84\x8d\xcc\xa4\x17\x77\x6b\xd2\xfb\x18\x06\x67\x43\xbd\xfa\x4a\xb6\xe6\x6b\xd8\xf5\xe2\x54\x6e\x27\xac\x64\x31\xd0\xb2\x13\x1a\x34\x84\xd8\xbe\x7b\xf4\xf7\xa7\xef\xd7\x99\x12\x26\xeb\x5c\x9f\xa4\x73\xb7\x1a\x47\xa5\x85\x3c\x11\x52\xd7\x17\xd2\x28\x06\x2c\xf3\x67\xbe\x64\xaa\x6c\x5d\xf9\x5a\xd9\xc8\x42\xcf\x9f\x36\x27\xfa\x2d\x86\x92\x0c\x65\x54\x0c\x50\x66\x9d\x13\x94\xf1\x51\x43\x99\xb8\x6d\x92\x1c\x23\x43\x4d\xa5\xfa\x5e\x3d\x50\x09\xaa\x24\x67\x19\xaa\x32\x5a\x26\xa1\x35\xf4\xd8\x2a\xa8\x8d\xce\x69\x69\xbb\x0e\xae\x2b\x28\x6c\x40\x57\xa9\xd5\x1f\x5d\xa5\x8c\x51\x2a\x6e\x77\x4d\xb6\x9b\x37\x7a\xc6\x18\x9d\x46\xeb\x1d\x30\xb1\xb0\xd5\x68\xff\xad\x13\x38\x87\x37\xd1\x06\x38\x1b\x26\xb8\x00\x17\xd7\x1d\xd4\x15\x78\xfd\xac\xb9\xe4\xa7\x66\xd6\x4f\xa3\x1d\x23\xfc\x14\xa2\x86\x9f\x98\x7c\x82\xdf\x20\x58\x45\x08\x0e\x21\x9a\x9a\x10\x52\x8e\x0a\xa1\xfa\x66\x32\x6a\x24\x59\x98\x90\x24\x1b\x65\x26\x24\x1b\xa6\x6b\xa4\x8c\x94\x6d\xe0\xe6\x72\xdf\x8c\x48\x7c\xb5\xab\x1f\x92\xba\xfb\x91\x49\xba\x76\x0a\xd9\x23\xfb\x66\x3e\xd7\xd0\xd8\x2b\xf4\x16\xf3\x62\xe4\x63\x14\x23\x9f\x3c\x79\xda\x97\x67\xcf\xdb\xf2\xcf\x7f\xf5\x5f\xcf\x1e\x3f\x59\x34\xaf\x8b\xc9\x3d\x81\x75\x44\x71\x44\x09\x25\x66\xc6\x8e\xd5\x56\x86\x28\xac\x57\x4d\xc9\x7c\x8d\x7e\xe0\x3a\x28\xb0\x6c\xc3\x3a\x30\x11\x98\x0a\x83\xad\xa7\x3e\xc5\xca\xe0\x58\x95\x01\x67\x70\xae\xd4\xa6\xa0\x5a\x72\xb8\x63\x37\xa0\xda\xb9\xab\x61\x9f\x8b\x1a\xec\x5b\xd4\xd0\x63\xaa\x85\x72\xc1\xa6\x05\xb3\x55\xd8\x9a\xd8\x86\xf4\x16\xd7\x54\x3e\xab\xb0\xdb\x0e\x3c\x8c\x4e\xae\xcb\x17\xba\xee\x72\x79\x2e\x97\x7f\x2c\x2f\x1e\xce\xbe\xd8\x92\x87\xae\x6e\xda\xbd\xba\x77\x11\x3b\xda\xfe\x76\xcc\x4f\xed\x42\x88\x23\x21\xde\x9d\xb6\x17\xe0\xfb\xe5\x6f\x97\xf7\xbe\x3b\x3c\x7a\x70\xba\x6c\x8f\xc1\xfb\xd3\xdb\x53\x37\xaf\xc5\xf1\xee\xca\xde\x3c\x2a\x43\xb3\x96\xbb\xa5\xd9\xec\x56\x46\x41\xdf\x91\x94\xc9\xa6\xee\x8e\x10\xc7\x1f\xa4\x9f\xbc\x4f\xbb\xbf\x8f\x2d\xed\xba\xfb\x0b\x23\xf3\x87\xa3\xdf\xea\xce\xfd\xbb\xde\xdc\xff\x36\x67\x86\xf3\x8b\x0f\x36\x7c\x67\xf1\x33\xec\xc3\xbb\xd8\x47\x7f\x11\x12\x47\x1d\x1b\xd9\xbf\xbe\xfa\xe1\x15\xce\xce\xce\xf0\xf2\xa7\xb3\x9f\x7f\x5c\x9c\x34\x7a\xff\x0c\x00\x00\xff\xff\xd8\xe9\x5d\x6d\xfc\x07\x00\x00" + +func runtimeSyntaxFishYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxFishYaml, + "runtime/syntax/fish.yaml", + ) +} + +func runtimeSyntaxFishYaml() (*asset, error) { + bytes, err := runtimeSyntaxFishYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/fish.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxFortranYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x96\xdf\x8f\x23\x35\x0c\xc7\xdf\xf7\xaf\x98\xeb\x1d\xdc\xf6\xe0\x0a\x2f\x3c\x50\x84\x56\xe8\xe0\x24\x1e\xd0\x22\xc4\xc3\x4a\x6d\xa9\xdc\xc4\x33\x35\x9b\x71\xb2\x89\xb3\xdb\x82\xf9\xdf\x91\x67\xba\x3f\xee\x07\xed\xbd\x50\xa9\xf1\x24\x93\x7c\xea\xc4\xdf\xd8\x6d\x29\xa0\xec\x13\xce\x9b\x36\x66\xc9\xc0\x67\x67\x1e\x05\x9d\xcc\xcf\x9a\xa6\x69\xec\x35\x43\x8f\xf3\x66\xb2\x5c\xce\xce\x17\x6f\xdb\x95\x5a\xf3\xed\xd7\xa3\xf9\x66\x30\x8b\xcb\xb8\x5a\xfc\x96\x57\xd3\x17\x93\xb3\xb3\x5c\x03\x96\x71\xf5\xeb\x66\x44\x37\x93\xf3\x0b\x9a\x2e\x97\x9b\x73\x70\x42\x91\x15\xfc\x2d\xb0\x43\x85\x10\xec\x1b\x1d\x08\x6c\x02\xde\x3f\xa3\x57\xe0\xbd\x42\x8a\x45\x72\x4c\x5b\xb4\xb5\x93\xff\x42\xa6\x84\xec\x15\x0a\x15\x85\x52\xa8\xe3\x83\xe9\x91\xc5\x1e\xa3\xa3\x01\xe9\xb6\x90\xc1\x09\x66\x75\xb1\xef\x23\x1f\x83\xba\xd8\xa7\x80\x3b\xf5\x20\xa0\x1e\x5b\xa8\x41\xd4\x63\xa0\x5e\x3d\xf5\xc8\xc5\x76\xe1\x63\xdd\x04\x6c\x52\x46\x47\x36\x70\x0c\x88\x01\xcd\x1f\x08\x8a\xa9\x50\x88\xac\xb8\x13\xcc\x0c\x41\xed\x8c\xb5\xed\x45\xdb\x98\xfb\xa1\x01\xd1\x6d\xed\x8e\xee\x9a\xfa\x14\xc8\x91\x28\xb1\x0b\xd5\xa3\x12\x7b\xdc\x29\xf1\x4d\xa5\x6c\x3d\xc1\x0e\xf3\x60\x59\x06\x93\x5b\x70\xc7\x91\x2c\x99\xb8\x90\x53\x8a\x45\x40\xf4\x9a\xd8\x6b\x88\x1d\x39\x08\xda\x47\x5f\x03\x2a\x47\x46\xe5\x1a\x82\x46\x0e\xfb\xe9\x72\x79\x04\x18\x13\x66\x90\x98\x35\x26\x8b\x3a\x04\x4d\xe0\xae\x35\x41\x86\x1e\x2d\x0e\x29\x0e\x8e\x69\x8a\x85\x06\x5d\xa4\x4c\xb7\x20\x47\xbd\x4c\x39\x76\x19\x7a\x4d\x75\x13\xc8\x69\x46\x08\x9a\xd1\x0d\x4d\xcd\x85\x6e\x51\x0b\x06\x74\x82\x7e\x4d\x2c\x6b\xdb\xc4\x31\xde\xc3\x64\x23\x0d\xb3\xb5\xd4\x4d\x8e\x55\x88\x51\xed\x1c\x6a\x19\xd7\x1f\x00\x2e\x72\x11\x60\x79\x47\x83\x9b\xa2\x60\xfa\x52\xf0\x7f\xd6\x22\xe1\x60\xf3\x83\xa2\x75\x43\xb2\x2e\xf4\x17\xaa\x33\xd1\xdb\xdc\x81\xda\x1c\xa1\xba\x10\x0b\xaa\x8b\x2c\x40\x5c\xd4\xc5\xca\xa2\x2e\xd5\xb5\x50\x8f\xea\xca\x96\x5a\x31\x85\xe2\x1a\xd8\x0f\x83\x27\x91\x1e\x1f\x1c\xf2\xd4\x91\x14\xf5\x51\xd6\x29\x47\x5f\x9d\x28\xc6\xac\x18\x47\x6e\x5b\x79\xbc\xab\x04\x9f\xe4\x2c\x01\x7b\xa5\x8d\x0b\x59\x69\x63\x60\xda\x14\x14\xa5\xe1\x54\xc8\xc8\x14\x03\x72\x27\x5b\x25\xeb\x94\x6d\x2b\x63\xeb\x4e\xb2\xc3\x26\x56\x93\x22\xb2\x7d\xd7\x92\xa9\xd7\x1e\xa4\xaf\x41\x7b\xd8\xe1\x2e\x45\x36\x95\xf7\xb0\x0b\xd1\x99\xb9\x35\xc1\x62\xee\x4e\x1f\x48\x4f\xfc\xb8\x9e\x78\x58\x4f\x3c\xac\xbf\x1d\xb6\x61\xd9\x2f\x50\x11\x65\x84\x8c\x66\x6b\x08\xd4\xee\x4f\x92\x63\x42\xd6\x04\x5e\x53\xc6\x62\xf8\x94\x69\x68\xc7\xb3\x4e\x35\xa3\xde\xd4\x28\xa8\x19\x3c\xed\x4e\xf2\x32\xb0\x8f\xfd\x9a\x6b\xbf\xc1\xac\x87\x5e\x41\xf4\xf6\xdc\xa1\xdd\x04\x3f\x34\x77\x99\x0c\x8a\x29\xdc\x5f\xf8\xa3\x58\x2c\x5b\x48\x36\xff\x6e\xd0\x3e\xd8\x05\x72\xc0\x5a\xf0\xa6\xa2\x25\xe9\xf1\xfd\x90\x58\x07\x01\x97\x04\x8e\xb8\x3b\x49\x2e\x69\x70\xa9\xd4\x5e\xcb\xbe\x08\xf6\x6b\x17\xa2\xbb\x56\x81\xdc\xa1\xa8\x15\x9b\xd2\x62\x1e\x1f\x92\x49\xdd\x02\x7b\x12\x5b\x47\x31\x54\x1e\x92\xc9\x2d\x66\x6a\xf7\x3a\xee\x59\x88\xf7\x6a\x17\x5c\x6b\x41\xdd\xe3\xbb\x17\xd7\xee\xf2\x90\x84\xe7\x8f\xb0\x19\xb0\x9f\xa9\x83\x82\xea\xa3\x62\x28\x38\x34\x17\xd4\x8e\xf6\x6e\x8b\x19\xd5\xea\x0b\xb2\xbf\xb0\x29\xec\x2f\xa8\x7d\x9a\x50\x3e\x86\xb5\x59\x63\x62\xd1\x19\xde\xdc\xce\x2c\xab\xdb\xb5\xa7\x56\x43\x87\x1a\x3a\xd1\x10\x50\x43\x10\x9d\xf1\x30\x61\xc6\x51\x66\xa7\xb0\xb3\x98\x67\x16\x58\x04\x39\x24\xb9\x66\x70\x5d\xb6\xc8\x3a\xba\x7a\xb7\xa5\x80\xef\x6e\x3b\xa1\x23\x08\xf3\xa7\xc5\x8d\x85\xb8\xa2\xba\xbd\x0b\xa8\xb8\x23\xd1\x2e\x5e\x48\xd4\x8c\xc5\x0a\x5d\x46\xa9\x99\x9f\x50\x9a\xe6\xf9\xe5\x21\x99\x37\x6f\x62\x88\xf9\x9e\xbd\xef\x37\x31\xcc\xee\x13\xfd\xbc\x99\x2c\x66\xf3\xef\xbe\xfc\xe2\x95\x7e\xff\x6c\xb9\xfc\x6c\xa5\x5f\xe9\x6b\xfd\xfc\x11\xf2\x2b\x64\x64\xd9\xa2\x58\x49\xf9\x18\x69\x93\xc1\x5d\xa3\xed\x79\x71\x3e\xfd\xfb\x9f\x95\x2e\x97\x0b\x5d\x2e\x57\x8f\x88\xe6\x07\xef\xad\xe4\xa6\x1c\x1d\x96\x12\x73\x63\xd5\x1c\xd8\x97\xd9\x01\x75\x78\x39\x6f\x26\x7f\x2c\x16\x73\x53\x2b\xce\x57\xab\x57\xcf\x9f\x76\xce\x3d\xb6\x96\xdf\xef\xab\xe7\x79\x65\xa5\x96\x2f\xa6\x1e\x5b\x8b\xf1\x10\xff\x73\x6a\xb5\xe0\xd4\xa2\x76\x07\x99\x89\x3b\xc5\x9c\x63\x9e\x7e\x50\x0b\x66\xc5\x4a\x67\x37\x3f\x38\xd9\x58\xf4\xb2\xed\x62\x39\x99\x3c\x8c\x21\xfb\xf7\x46\xca\x35\xa5\xe1\x9f\xd5\x72\x39\x7b\x1c\x7d\xf2\x07\xea\xfe\xf3\xf4\x97\xc6\x70\xbe\xd9\x42\x7e\x5c\xfa\xa9\xee\xbc\x7c\xdf\x9b\x97\xff\xa7\x33\xfd\x20\xdf\x0f\x9c\x78\xf6\xbe\x13\x2f\x4e\xfc\x9c\x44\x1f\x4d\xbe\xbf\x5f\xfe\x78\xa9\x57\x57\x57\xfa\xf6\xe7\xab\x5f\x7e\x9a\xce\x2f\x26\x67\x67\xff\x06\x00\x00\xff\xff\x80\x03\x11\xed\xc0\x0a\x00\x00" + +func runtimeSyntaxFortranYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxFortranYaml, + "runtime/syntax/fortran.yaml", + ) +} + +func runtimeSyntaxFortranYaml() (*asset, error) { + bytes, err := runtimeSyntaxFortranYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/fortran.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxFsharpYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x94\xcd\x6e\x23\x37\x0c\xc7\xef\x7e\x0a\xc5\x6d\x91\x64\xd1\x49\x83\x6d\x81\x76\x73\x29\x16\x05\xfa\x06\xbd\xd4\x63\x14\x1c\x89\xf2\xb0\xab\xa1\x06\x12\xe5\x8f\x84\x7e\xf7\x42\x63\x3b\x6b\x27\xd9\x45\x7b\xae\x01\xcf\x68\x28\xf1\x4f\xea\x47\x4a\x9e\x02\xca\x6e\xc4\x07\xe3\x73\x0f\x69\x9c\xcd\x1c\x0a\x5a\x79\x98\x19\x63\x4c\x9d\x65\x18\xf0\xc1\xcc\xdb\xf6\xce\xe7\x5f\xbf\x9d\xcf\x66\xa9\x04\xcc\x87\xf9\xc6\x90\x43\x16\xf2\x84\x69\x5a\xd3\x2d\x3e\x36\x7f\x2e\x17\xf7\xcd\x07\x68\x1e\xff\x5a\x3e\xbd\xff\x7e\xdf\xb6\xdd\x7c\x5a\x6c\xcc\x37\x0e\x6d\x80\x04\x42\x91\xf3\x51\x20\x0b\x08\x0e\xc8\x72\xf0\xbf\x09\x28\xba\x86\xa0\x03\x4a\x1f\x9d\x12\x2b\xb0\xd3\x84\x56\xc7\x44\x6b\x10\xd4\x35\x25\x29\x10\xd4\x46\xce\x92\x80\x58\x6e\xcf\x63\x64\x49\xc5\x4a\x49\x68\x48\x70\x38\x85\x39\xec\x71\x8a\x50\x87\x1a\x47\x64\xb5\x01\x72\xd6\x21\xba\x12\x50\x71\x6b\x71\xac\x99\x29\x6e\x05\x13\x43\xb8\x90\x1d\x41\xaa\xf5\x4b\x69\xfb\xc2\xea\x0b\xdb\x49\x60\x1a\xc4\xa4\x03\x88\xed\x55\xd2\x4e\x37\x24\xfd\x9b\x72\xcd\x10\xdd\x84\xef\x4b\xc2\x90\x75\xd3\x23\x6b\xf4\x93\xbf\x39\x09\xd8\xc8\x8e\xbe\x06\x92\xbc\x4a\x75\xc4\x90\xf1\x22\x74\x17\xa2\x7d\x03\x4b\x87\x2b\x62\x45\x76\x1a\xbb\xbf\xd1\x8a\x1e\x40\x6a\xa6\x95\xfa\x98\x74\xd3\x53\x40\x75\x51\x5d\x64\x54\xa9\xef\x0d\x4b\xbc\x90\x9e\x4a\x02\x2c\x78\xd2\x3f\x19\xee\xba\x18\xc3\x89\x7f\x2a\xa8\x1e\x5e\xa6\x75\x28\x43\xfe\x61\x2a\xca\xb3\x40\x1e\xd1\x12\x9c\x5c\x89\x6d\x28\x0e\x95\xb8\xc7\x44\xa2\xc4\x24\x04\x81\x1e\x31\x5d\x68\xe1\x76\x4c\xe6\x15\xd9\x0b\x29\xc6\x8d\x26\xf4\x3a\x14\x81\x2e\xa0\x06\x78\xdc\x69\x8d\x9c\x44\x13\xd0\x8b\xe4\x3e\xe1\x6e\x13\x93\xcb\x66\xd3\x93\xed\x8d\x8b\x7c\x2d\x06\xb7\x94\xc5\x10\x9b\x68\x61\x08\x6f\x10\x85\x8c\xea\x30\xe0\xaa\xb6\x6d\xc5\x65\x21\xcb\xb1\xbd\xd4\x13\x43\x08\x3b\xf5\xb4\x45\xa7\xab\x10\x3b\x08\x4a\x1c\x88\xeb\xfe\x04\x93\x07\x7b\x1c\x31\x04\x0d\x28\x57\x3a\xe0\xd0\x61\xd2\x7a\x24\xf3\x58\xa7\xb9\x84\xa0\x71\x8d\x29\x91\xc3\xe7\x13\x32\x96\x2e\x90\xfd\xbc\x81\x8b\xac\x12\x4a\x49\xac\x87\xd7\x95\x66\x0c\x87\x62\x83\x90\xd5\x32\x4e\x29\x96\x8c\xf5\x7f\xa5\xeb\x48\x4e\x77\x84\xe1\xf8\xbc\x3a\x17\x7d\x2e\x6e\x96\x44\xbc\x7a\x38\xc2\x32\xb5\x15\x53\x6d\xc3\xeb\xf9\xb3\x09\xd9\x5d\x1a\xf2\x27\x1a\xa7\x8c\xda\xf6\xee\xb3\xf5\xec\x6e\x39\xfd\xce\xe3\x1c\x2a\xf8\x5b\x0f\xf5\xb6\xf9\xee\xcc\xef\xab\x0b\x6b\x8c\x05\x74\x9e\x93\xac\xaf\xdb\xb6\x9d\x0c\xcb\xff\xe0\x7c\xb3\xb8\x6f\x7e\x5e\x3e\xfd\xb8\xd7\xed\xe2\x63\xf3\x3b\x34\xfe\xbe\xf9\xb0\x7c\x7a\xbf\xd7\x72\xfe\xfd\xd3\x5e\xff\x38\xff\xfe\x65\x7f\xfb\xaf\x51\xb5\xf3\x97\xac\xce\x2d\xff\x37\x58\xc3\x74\x8f\xbd\x86\xd4\xde\xb4\xed\xbb\x57\xa0\xda\x77\x6d\x7b\xfb\x12\x8b\x59\x2c\x67\xff\x04\x00\x00\xff\xff\x83\x0b\x31\xb7\xdd\x06\x00\x00" + +func runtimeSyntaxFsharpYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxFsharpYaml, + "runtime/syntax/fsharp.yaml", + ) +} + +func runtimeSyntaxFsharpYaml() (*asset, error) { + bytes, err := runtimeSyntaxFsharpYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/fsharp.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxGdscriptYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x54\x69\x6f\xdb\x46\x13\xfe\xae\x5f\xc1\x57\xc9\x5b\x1f\x29\xd5\x80\x29\xd0\x56\xbd\xe2\xda\x31\x1a\xa0\x69\x8c\x5a\x29\x8c\x8a\x82\x33\xe2\x0e\xa5\xad\x97\xb3\xcc\xec\xd0\xb2\xe3\xf1\x7f\x2f\x96\x94\x65\xc9\xb1\xe1\xa2\xfd\x54\x09\x9c\x9d\x9d\xfb\x78\xc8\xd2\x3a\x94\xcb\x1a\x87\xc9\xcc\x84\x82\x6d\x2d\xbd\x9e\x41\xc1\x42\x86\xbd\x24\x49\x92\xa8\x27\xa8\x70\x98\xf4\xf3\x7c\x30\x33\x4f\xfb\xbd\x1e\x37\x0e\x43\xa7\x7e\x92\x4c\x1b\xeb\x24\xb5\x94\xf8\xe9\x9f\x58\x48\x68\xc5\x69\x52\x78\x0a\x02\x24\xad\xdf\x74\x9b\x1a\xe7\x34\xa0\x2b\x55\xb8\x41\x2d\xc1\x05\xdc\xc9\xf3\x69\xbf\x35\xdf\x88\x03\x22\x6c\xa7\x8d\x60\x58\xe9\x0a\xef\x3c\xaf\x42\x76\x11\x1f\xf0\x2e\x1b\x2a\xc4\x7a\xba\xa9\xc3\x1a\x24\xb1\xa5\x45\x5e\x56\x02\xd3\xa0\x50\xf8\xa0\x10\x2c\x29\x08\x74\x24\xd3\x02\xad\xd3\xc2\x41\x55\x6b\xe1\xe9\x1c\x59\x34\x9a\x15\x3e\xcc\xd5\x4c\x33\x67\x09\x81\xd5\x60\x61\x2b\x70\x41\x0d\xce\x32\x06\xa3\x08\x01\x15\x2f\x6a\x2d\x9d\x07\x89\xd4\xb3\x96\x95\x37\x5a\xd6\x3e\xc4\x73\x0e\x61\xae\x96\x44\x6d\xb0\x54\xaa\x0d\x04\xa4\x0e\xb9\xd6\x2e\x66\x66\xa6\xea\x3c\x18\x75\x7e\xa6\x15\x5c\x68\x65\x49\xa3\x02\x83\x9c\xd6\x3e\xd3\xda\x2f\xb4\x66\x6c\x6d\x6a\x8e\x91\x5a\x8a\xcc\x1d\xc3\xb0\xe8\x98\xd0\x1d\xa2\x0c\x26\x33\x38\x53\x06\x32\xa7\x0c\x34\xc3\x8e\x0d\x88\xa6\xe5\x7c\x65\x3f\x76\x32\xdb\xd2\x52\x97\x56\xbe\x21\xa3\xad\x59\x1c\x4f\x68\xcb\x0c\x1f\x58\x34\x08\xc7\x27\x3b\x07\xd6\x38\xb4\x08\x1a\x5f\xea\x39\x70\x16\x55\x0b\x84\x33\xc6\x72\x73\x2b\xa1\xc6\xc2\x82\x4b\x2a\x94\xb9\x37\x49\xc4\xd1\x83\x7b\xd9\x23\x5b\x41\xdc\xdc\x91\x83\x4b\x64\x5d\xdd\x47\x8c\xb8\x94\xfd\xd4\x88\x78\xd2\x7d\x4f\xc2\xde\xe9\xcf\xa3\xd1\xd1\xbe\xb3\x48\xd2\xb2\xbf\xe1\x87\x06\x83\xe8\x6b\xaa\x9b\x25\x7d\x75\x1e\x95\x6f\xc0\xd2\x2f\xde\xd7\xfa\xab\x37\xd8\x92\xec\x40\x8f\x0b\x24\x8c\xb1\xf5\xb8\x06\xb1\xe0\xf4\x58\x10\xaa\x23\x44\xd6\x23\x28\xce\x50\xee\xb0\xef\x0e\x8e\x74\x64\x2b\x64\x1d\x2d\x10\x69\xb3\xd3\x38\x8d\x9b\xd6\xba\xd7\xa9\x6d\xea\x77\x2c\xc4\x73\xa6\xdd\xf9\x62\xd3\xc7\x60\x69\xc9\x3e\x08\xd6\x88\xe4\x64\x0c\xe9\xc7\xbd\xf4\x8f\xd3\xe7\xe9\x37\x93\x67\xfd\x64\xe5\x7b\x86\x97\x0b\xcf\xe6\xc6\x31\x08\x08\x56\xb8\x7a\xdd\x80\x8c\x42\x84\x78\x88\x30\x9e\x32\xc2\x59\x47\x6b\x1f\xe1\x53\x38\x08\x11\xd9\x14\x22\xc6\x49\x2c\x35\xa8\xe8\x6c\xa9\xe8\x3a\x34\x7b\x16\xc5\x0b\x41\x32\x41\xcb\x08\xe8\x86\x0a\xb5\xa5\x5a\xd2\x0a\x6a\x25\x2f\xea\x89\x11\xcc\xa5\x7a\xd6\x3a\x86\x63\x94\x86\x49\x83\x9d\x11\xb8\x88\x0b\x5d\xcc\xad\x43\xbd\xb4\xe8\x4c\xdb\x79\xd2\x5b\xeb\xbd\xf0\x0c\xe2\x79\xd5\x41\x07\x95\x61\xd2\x7f\x39\xd8\x1d\x6f\x4f\xfa\xb7\xb6\xbe\xc6\x4d\xd3\xb5\x66\xc7\x83\xe1\xb7\x9f\x3f\xdb\xd5\xef\xff\x97\xe7\xff\x7f\x39\xd1\xef\xf4\x07\xfd\x42\x53\xfd\x6c\xcd\xbf\x06\x46\x92\x39\x06\xbc\x37\xc2\xf6\xce\xd5\xf5\x44\xf3\x7c\xac\x79\xbe\x9e\x96\x9a\x6a\x8a\x7c\xff\xf7\x6c\xdc\xee\x63\xb5\xcd\x5b\xf5\xa0\xf3\x5a\xae\xa1\x33\xd3\xe7\x17\x91\x81\xb4\xdc\x4b\x0f\x27\xbb\x71\x14\xba\x35\xd8\x5a\xa6\x8a\xbe\x55\x5b\xcb\x32\x73\x12\xcb\xe3\x36\x51\xfb\xef\xaf\xe4\x48\xe6\x1e\xe9\xda\xd7\xf8\xe6\x97\x26\xe2\x8d\x1f\x26\xfd\xed\xd1\xdb\x83\xb7\x7a\x72\x72\xa2\x87\xaf\x4f\xde\xbc\xda\x19\xfe\xf8\x78\xd6\xad\xad\xad\xbb\x29\x37\x44\xff\x38\xdf\x72\x42\x41\xd8\xd2\xec\xbe\x6e\x3f\xed\xf4\x56\x12\xce\x6c\xdd\x4e\x35\xcf\x07\x8f\xd4\x72\x9b\xa9\xc3\xd4\xfe\x1c\x78\xe9\x1a\x37\xf2\xd5\xe4\xea\xc5\xb5\x5e\x8c\xf7\xd2\x43\x48\xcb\xb8\xa1\xab\xec\x5a\x9b\xf5\xfb\x97\xd7\xfa\x6e\xfd\xfe\xf5\xf5\xce\xdf\xef\xe3\xd3\xe9\xfd\x17\xbb\x78\x7f\xb7\x8b\xf7\x77\xeb\x4d\xc6\x93\x47\xb1\xf4\xe4\x6e\x94\xa7\xff\x02\x47\x7f\x05\x00\x00\xff\xff\x9d\x69\x30\xea\xab\x08\x00\x00" + +func runtimeSyntaxGdscriptYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGdscriptYaml, + "runtime/syntax/gdscript.yaml", + ) +} + +func runtimeSyntaxGdscriptYaml() (*asset, error) { + bytes, err := runtimeSyntaxGdscriptYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/gdscript.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxGentooEbuildYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x55\x5d\x73\xdb\xb6\x12\x7d\xf7\xaf\x60\x14\xcf\x0d\x99\x5c\x69\xf2\x1a\xdf\xdb\x6a\x54\x89\x8e\x35\x51\x2c\x8d\x24\x27\x6e\x83\x44\x05\x89\xa5\x88\x0a\x04\x58\x00\xb4\xec\xe4\xe4\xbf\x77\x40\x49\xce\x47\xad\xb6\x2f\xf5\x8c\x25\x61\xb1\xc0\x9e\x3d\x7b\x76\x51\x48\x45\xfe\xae\xa6\xb3\x88\xb2\x46\x2a\x71\x72\x22\xc8\x53\xee\xcf\x4e\xa2\x28\x8a\xc2\xae\xe6\x15\x9d\x45\x1d\xc6\x7a\x14\xb7\x2e\xc8\x15\x77\x2e\x39\xed\x9c\x9c\xd8\x46\x91\xdb\xb9\x3e\x8e\x06\x4a\x45\xbe\xa4\xc8\x79\xae\x05\xb7\x22\xaa\x8d\xf5\x7c\x4d\x51\xd1\xe8\xdc\x4b\xa3\x5d\xeb\xd8\x8d\xa4\x20\xed\x65\x21\xc9\x9e\x45\x9d\x0f\xce\xe6\xab\xb8\xd1\x35\xcf\x37\xc8\x4d\x55\x4b\x45\x90\xda\x79\xae\x14\x3c\x39\x9f\xe0\x43\xbd\x59\xaf\xe2\xdc\xe8\x42\xae\xa1\x4d\x41\x3e\x2f\xe1\xc8\x37\x35\xe2\xda\x12\x6a\xe3\x7c\x12\x87\x33\xb0\x55\x92\x74\xda\x30\x01\xd1\x85\x5c\x97\x4a\xae\x4b\x1f\x65\xdc\x95\x91\x25\xc5\x3d\x89\xc8\xdd\x69\xcf\x6f\xf7\x60\x9c\xe7\x9e\x2a\xd2\xbe\xcd\x31\x8b\x73\xee\x08\xc2\x40\x18\x4d\x20\x25\x0b\x90\x72\x04\x72\x3c\x07\xdd\x4a\x8f\x42\xa2\x30\x16\x87\xa4\x20\x0b\x48\x0d\x65\x72\xae\x60\x89\x0b\x58\xf2\x8d\xd5\x70\xa4\x28\xf7\x70\xa5\x2c\x3c\x7c\x49\x1a\x5e\x56\x84\x46\x7b\xa9\xb0\x2d\x43\x9a\xb9\xd1\x5e\xea\x86\x90\x59\xe2\x9b\x84\xb1\xac\xf3\x00\xaa\x98\xb1\x4f\x60\xec\x33\x18\x8b\xc1\x58\x02\xc6\xfe\x07\xc6\xde\x83\xb1\x77\xf8\x15\x8c\x31\x06\xc6\x4e\xf1\x7f\xfc\x88\x47\xf8\x01\xff\x01\x63\x48\x1e\xba\xa9\x1b\x13\x04\x0a\x58\xac\xd1\x60\x8b\x5b\x4c\x8e\x05\xed\xc6\xf4\x3b\x34\x61\xed\xa1\x3c\xd6\x04\x45\x70\xd0\xf8\xf8\xe5\xc0\xb7\x0c\xdf\x70\x2b\x79\xa6\xc8\x45\xbd\x5e\x2f\x32\x45\x21\x73\xc9\xd5\xbd\x06\x8c\x26\x17\x49\x1d\x59\x12\xff\x8d\xb8\x52\x91\xf1\x25\xd9\xd6\x94\xd9\xf6\x02\x4b\x62\x8f\xa3\xb6\x54\x5b\x93\xb7\x05\x39\x65\xec\x53\xff\x1d\xef\x7e\x1c\x74\x7f\x59\x3d\xef\xbe\x78\xff\x8c\xb1\xcf\xfd\x7b\xc4\x35\x85\x28\xfb\xd2\x0d\xe6\xc3\x0b\x5c\x4c\x5f\xa7\xb3\xc1\xcb\x14\xa3\x74\x31\x9c\x8f\x67\xcb\xf1\xf4\x12\xe3\xab\x45\x8a\xc5\x7c\xb8\xba\x9a\x8f\x31\x19\x0f\xd3\xcb\xb0\x9e\x4c\x97\x78\x95\xfe\xfc\x76\x3a\x1f\x2d\x70\x3e\x9e\xa4\x8b\xd1\x78\x8e\xb7\xd3\xf9\xab\xf0\x1d\xcf\x30\x4f\xfa\xa3\x74\x96\x5e\x8e\x30\x9b\x4f\xdf\x8c\x47\x29\x46\xe3\xc5\x32\x6c\xce\xd3\xc5\x72\x3e\x1e\x2e\x71\xb5\x48\xe7\x93\xc1\xe5\xe8\x1b\x1e\xbf\x41\xb5\xc0\x08\x4b\xcc\xde\x60\x76\x8e\x19\x66\x97\x18\x04\x5f\x30\x96\x0d\xe3\xeb\xeb\xa4\x7f\x3e\x19\xbc\x5c\xec\x2d\x93\xd1\xd7\xab\x61\x7c\x31\x5d\x2c\xb1\x1c\xcc\x5f\xa6\x4b\xfc\x74\x35\x9e\x8c\x8e\xb1\x7f\xa0\x39\x37\x55\xc5\xb5\x78\xb0\xd3\x18\xcb\x1a\x47\xf1\x2a\xde\x4a\x5f\x82\x74\xa8\x56\x92\xf4\x19\xcb\xa2\x77\x8f\x76\x0c\x3f\xef\xbe\x58\x3d\x8b\xba\xef\x9f\x42\xea\x92\xac\xf4\xbd\xa7\x0f\x89\x83\xb1\x8c\xe2\x8c\xd6\x52\x83\xb4\x08\x32\x2e\xee\x5b\xb6\xe2\x1b\xc2\x96\x5b\x0d\xa9\x0b\xa3\xfb\x20\x6b\x8d\x85\x32\x6b\xd4\x3c\x34\xae\xa6\x6d\xbc\xb6\xa6\xa9\xd1\x38\xb2\xc9\x31\x01\x32\x96\x09\x49\x7b\x26\x8e\xe0\x0e\x5b\x7b\xa0\xfb\x55\xc9\xdd\xfe\x57\x5c\x72\x87\x2c\xcc\x8f\xd5\x0d\x59\x27\x8d\x3e\xdc\xd5\x8e\x9a\xe3\x51\x63\x61\x02\xc6\x76\xa0\xc0\xf5\x33\xa9\x21\x4c\x0e\x25\xb3\x98\xb1\x9e\x33\x60\xac\xc7\x13\x54\x7c\x97\x21\xe8\x36\xcc\x2b\xe9\x77\x3c\x08\x90\xbe\x11\xa8\x79\x85\x8a\x74\x03\x99\x1b\xfd\x57\x29\x9a\xb8\xbe\xf3\xa5\x09\xe3\x42\x40\x48\x8b\x92\x5b\x01\x77\x57\xa1\xf4\x95\xc2\x6f\xdc\xa2\x32\x07\xc1\x6c\x88\x6a\x21\xed\x91\xeb\x42\xdb\x70\xa5\x62\x61\x72\xb7\x83\x16\x30\x3a\x6f\x65\x9d\x20\x6c\xc6\xad\x51\xc9\x2c\xfc\x33\xd6\x8b\x9d\xc1\x3e\x93\x9d\xd7\x71\x46\xf2\x50\xdf\x90\x6a\x22\xb5\x37\x7b\x38\x45\x6c\xb6\x9a\xac\x43\x4d\xb6\x72\x07\x90\xf1\x8e\x10\x17\xb2\x49\x4c\xed\xdd\x11\xc9\x06\xa9\x1a\x7d\xaf\xd8\xa8\x71\x24\xc2\x38\xd8\xbd\x43\x07\x05\xef\xde\xa6\x80\x22\x08\xeb\x10\x22\xe7\x1e\xb9\x40\x5e\x56\x26\x7c\x9a\xad\x46\x5e\x83\xf2\xd2\x04\xfa\x41\xb7\xa1\x1f\xb0\xb6\x54\x43\x91\x87\xd2\xa8\x36\x81\xdc\xea\x06\xb6\x6a\xa9\x76\xe4\xe1\xb9\x85\x37\x4d\x5e\xa2\xd1\x8e\xfc\xae\x4c\xfb\xb8\xb9\x09\x7a\xd6\xbe\x17\x98\xd1\xeb\xb3\x7d\x02\x51\xe0\xc6\xb6\xbc\x74\x3a\xf7\x36\xd2\xe2\x3b\x8b\xdb\xc8\xba\x85\xcd\x58\xef\x8b\xf5\xab\xe7\xf2\xf0\xf7\x75\xa4\xdd\xd8\x18\x96\xdc\x7e\x39\xfa\x4f\xe1\x3c\xf9\x1e\xcd\x93\x7f\x13\x4c\xd5\x8a\xe3\x4f\x20\x1e\x7f\x0f\xe2\xf4\x6f\xc2\x79\x23\x4c\x78\xe1\x96\xd3\xd1\x14\xd7\xd7\xd7\x38\x1f\x5f\xbf\x4e\x93\xb3\x7e\xe7\xe4\xe4\x8f\x00\x00\x00\xff\xff\xe2\xea\x68\x25\x9a\x08\x00\x00" + +func runtimeSyntaxGentooEbuildYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGentooEbuildYaml, + "runtime/syntax/gentoo-ebuild.yaml", + ) +} + +func runtimeSyntaxGentooEbuildYaml() (*asset, error) { + bytes, err := runtimeSyntaxGentooEbuildYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/gentoo-ebuild.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxGentooEtcPortageYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x92\x4f\x8b\xdb\x30\x10\xc5\xef\xfe\x14\xc2\x9b\x43\xfe\x20\x77\xa1\x21\x74\x45\x92\x65\xd9\x6b\x7b\xec\xa5\xb6\x5b\xc6\xf2\xc4\x11\x91\x25\xa1\x91\xdb\xa6\x0c\xfb\xd9\x8b\x9b\xcd\x1f\x96\xa5\x86\xc1\xcc\xa0\xdf\x7b\x8f\x61\x76\xc6\x62\x3a\x06\x54\x02\x93\x96\xc1\xc7\x04\x1d\x66\x59\x8b\x09\x75\x52\x99\x10\x42\x8c\x4f\x1c\xf4\xa8\x44\x5e\x55\xc5\xf4\x80\xc7\x5f\x3e\xb6\xc4\x3d\xd0\x81\x07\x77\xfa\x11\xce\x26\x79\x96\xc5\xc1\x22\x9d\xb0\x3b\xf1\x95\x50\xec\x2c\x74\xaf\x03\x29\xb4\x77\x94\xc0\xa5\xa2\xf1\xde\x16\x3b\xb0\x34\x8a\x96\xa5\xa2\x00\x1a\x55\x5d\x2f\xaa\x6a\xf1\x58\x82\xfc\xf3\x24\xbf\xdd\xcb\x87\x1f\xb2\x5e\xe4\xef\xb2\x29\x0e\x6f\x51\xf9\x1e\x77\x27\x3e\x9b\x03\xda\xa3\xf8\x89\x91\x8c\x77\xc2\x0d\x7d\x83\xf1\x92\x88\x02\x6a\x03\x56\x89\x5c\x96\xa5\x6a\x4d\x67\x92\xaa\xeb\x62\x3e\xbd\x51\xe6\xc9\xec\x2c\xf6\xa4\x35\x86\x84\xad\x80\xa8\xf7\x78\x51\x31\x2d\xba\x64\x76\x06\x63\xa1\x2d\x10\x8d\xc9\x5e\x64\xfd\x58\x55\xcd\x14\x6c\xd8\x03\x43\xdf\xae\x96\x0c\xb1\xe7\x7d\x08\xc0\x06\x56\x4b\xee\x4d\x20\x0e\x41\x8f\xb5\x5a\x32\x7d\x7c\xb8\x67\xda\x33\x05\x88\x9a\x7f\x7f\x5a\x8d\x25\x77\x0d\xb5\xb3\xaa\x6a\xf2\xff\x58\x5d\xa3\xbe\xba\xce\xcf\x79\x9f\x21\x61\xe7\xa3\xb9\x46\xa5\x04\x09\x7b\x74\x49\x89\xfc\xfb\x0d\x39\x2f\xe6\x1f\xce\xd4\x17\xa0\x83\x71\x9d\x88\xd8\x0d\x16\x92\xbf\x59\xd7\xb1\x6f\xbc\x7d\x8b\x4e\x37\xfc\xc2\x6b\x5e\x6f\x78\xb3\xe6\x2d\x6f\x37\xbc\xd9\x5e\x56\xf6\xec\xfb\xd1\xee\xe6\x06\xfe\xf5\xa7\x76\xfc\x28\x41\x1c\xd3\xdc\xe5\x97\x11\xba\x56\x89\x7c\x72\x1d\x9c\xce\x4a\x94\x75\xf6\x37\x00\x00\xff\xff\x3f\x79\x8b\x6b\xb0\x02\x00\x00" + +func runtimeSyntaxGentooEtcPortageYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGentooEtcPortageYaml, + "runtime/syntax/gentoo-etc-portage.yaml", + ) +} + +func runtimeSyntaxGentooEtcPortageYaml() (*asset, error) { + bytes, err := runtimeSyntaxGentooEtcPortageYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/gentoo-etc-portage.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxGitCommitYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x92\x4f\x6b\xe3\x30\x10\xc5\xef\xfe\x14\x83\x13\x88\x94\x10\xef\x5e\x57\x17\xb3\x64\x77\x43\x0e\x21\x87\xcd\xa5\xc8\x76\xb1\xad\x71\x22\x6a\x4b\x41\x92\x49\x03\xfe\xf0\xc5\xff\xd2\x1c\x5a\x6a\xea\x93\x35\xfc\xe6\xbd\x27\xf1\x0a\x59\xa2\xbb\x5d\x90\xc1\x49\xba\x75\xae\xab\x4a\x3a\xcf\x13\xe8\x30\x77\xcc\x03\x00\x68\x09\x95\x56\xc8\xc0\x4f\x48\xb0\xe4\x51\xf4\x23\xa6\x21\xd9\x1c\xf6\xfb\xdd\xf1\xf9\xef\x9f\xdd\x71\xff\x7f\xdb\x1c\x7f\x6f\xc7\x7f\x3a\xf7\x3d\xcf\xd4\x25\xda\x5e\x60\x06\xff\x64\x89\x90\x9f\x53\x75\x42\xdb\x8d\xd6\xd0\x7a\x06\x2f\x78\xbb\x6a\x23\x18\xf8\x33\xce\x99\xbd\xa4\x39\xb2\x38\x26\x02\x4b\x74\x28\x9a\x4a\x0b\x59\x48\x14\x8d\xc2\x6b\x17\xa3\x31\x5d\x12\x41\xd9\x03\x1e\x2c\xfd\xaf\x35\x07\x49\x36\x01\x1d\x5d\xa7\xb0\x63\xb0\x29\xec\x90\xfd\x33\x34\x79\x64\x37\xfd\x5b\x05\x4b\xce\xe2\x29\xfc\x93\xae\x0d\x64\x26\x55\xf9\x19\x52\x25\x60\xc1\x93\x45\xbc\xfa\xd6\xe6\x94\xa5\x83\x1a\x57\x78\x02\xd3\x7c\xee\x2b\xfe\xd0\x89\x8d\x2e\xb5\x81\x81\xb6\x50\x68\x03\x79\xa9\xad\x54\x27\x90\xd6\xd6\x68\x81\xd8\xba\x0d\x65\x41\x2b\xd8\x4a\x77\xae\x33\xfa\xb1\x51\x14\x65\x24\x94\x94\x90\x42\xbe\x12\xb4\x0d\x0a\x1a\x36\xad\x18\x12\xdb\x08\x1a\x52\x98\xf1\x9f\xeb\x5f\xf1\x8a\x46\x51\xe6\x7b\xf7\x00\x55\x85\xca\x8d\x85\xcc\xfb\x63\x50\x4a\x85\x7d\x6f\xdb\xcf\xba\xd4\xb8\xee\x2e\xfe\x7d\x86\xaa\x35\x9d\xbf\x0f\xfa\xae\x03\x8f\xbd\xb7\x00\x00\x00\xff\xff\x3e\x9d\x3d\x2b\x4e\x03\x00\x00" + +func runtimeSyntaxGitCommitYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGitCommitYaml, + "runtime/syntax/git-commit.yaml", + ) +} + +func runtimeSyntaxGitCommitYaml() (*asset, error) { + bytes, err := runtimeSyntaxGitCommitYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/git-commit.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxGitConfigYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8f\xd1\x6a\x84\x30\x10\x45\xdf\xf3\x15\xc3\x54\x50\x03\x6b\xdf\x43\xb7\x3f\x92\x89\x10\x74\x94\x50\x8d\x8b\x99\xa5\x2c\xe4\xe3\x4b\x70\x59\x29\x6d\x1e\x4f\xce\x5c\xee\x9d\xc2\xc2\xf2\xb8\xb1\x81\x39\xc8\x65\xd8\xe2\x14\x66\xa5\x46\x16\x1e\xc4\x28\x00\x80\x62\x44\xbf\xb2\x01\x9c\x83\x34\x87\x92\xd7\x6d\xbc\x2f\x9c\xda\x2a\x13\x75\x73\x90\xf7\x83\x57\xa8\xd4\x5e\x3e\x8e\xdb\x0b\x0c\x5b\x4c\xe2\xa3\x18\x40\xa2\x8f\x46\xf6\x3b\xe7\xc9\x2f\x89\x5b\xa2\x4f\x7c\x4a\xa5\x40\xf7\xc5\x8f\xef\x6d\x1f\x0d\x60\x6f\xad\x49\x37\x3f\xb0\x71\x4e\xdb\xfe\xea\xf4\x15\xff\xc6\xfd\xb2\x88\x6c\xa7\x89\x5c\xf5\x8f\x48\xd8\x10\x11\x75\xd9\xf6\x84\xae\xd5\x84\xb9\x7e\x91\xda\xb5\xba\x3e\x8f\xd6\x95\xe3\x73\x77\x79\x49\xfc\x5e\x22\xde\xf0\x85\x38\x96\x8a\xd5\x09\x8e\xb9\x60\x9d\xfa\x09\x00\x00\xff\xff\x9d\x79\x43\xdc\x4c\x01\x00\x00" + +func runtimeSyntaxGitConfigYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGitConfigYaml, + "runtime/syntax/git-config.yaml", + ) +} + +func runtimeSyntaxGitConfigYaml() (*asset, error) { + bytes, err := runtimeSyntaxGitConfigYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/git-config.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxGitRebaseTodoYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x5c\x90\x41\x6f\xe3\x20\x10\x85\xef\xfe\x15\x23\x27\x07\xd8\x5d\x67\x73\xa8\x54\xd5\x17\x0e\xad\x54\xf5\xda\x6b\x70\x25\x6c\xc6\x09\x8a\x0d\x2e\x8c\x55\x47\xa5\xff\xbd\xc2\x76\x52\xa9\xdc\x78\xcc\x7b\x6f\xf8\x5a\xd3\x21\x5d\x06\x2c\xe1\x68\xa8\xf0\x58\xab\x80\x05\x39\xed\xb2\x4c\x23\x61\x43\x65\x06\x00\x90\xc6\xac\xea\xb1\x84\xfc\x8d\xed\xfe\x1c\xa4\xfc\x5f\x71\x71\x34\x24\xe5\x6a\x92\x72\xb6\x6d\xf3\x2c\xf3\x63\x87\x61\xf1\x6d\xe0\x75\x7e\x85\xc6\xf5\xbd\xb2\x3a\xcc\x6a\x01\x81\x14\x61\x8f\x96\xe6\xc0\x81\x99\xe6\xcc\x45\xf4\x0c\x3f\x9c\xd7\x5c\x44\x64\xda\x10\x17\x31\xb0\xf7\x51\x85\x13\x17\xb1\x65\x66\x1a\x07\x2e\xe2\x14\x71\xc2\x26\x6a\xe6\xdd\xc0\x05\x97\xb2\xce\xd7\xaa\x47\xd7\xf7\x86\xe0\xe5\xe9\xda\x62\x34\x5a\x32\xad\x41\x5f\x42\x2e\x65\xcd\x0e\xfb\xe2\x41\x15\x6d\xf5\x79\xff\xef\x6e\xff\xb5\x78\x6f\xe6\xce\x79\x38\xe3\x25\x6d\x10\xa0\x75\x1e\x9e\x0d\x9d\xc6\x1a\x98\xb2\x1a\x1c\x9d\xd0\x07\xbe\x06\x27\x62\xbb\x75\x76\x8d\x16\x86\x33\xd6\x9a\x89\x61\x88\x98\xbe\xd0\x74\x2e\x20\x0b\x51\x73\xc1\x61\x93\x9a\xab\xbf\xbf\x1a\xfb\x44\xe0\xba\x6c\xb3\x5c\x77\x9d\xb1\xb8\xc0\x4b\x27\x90\xf2\x33\xa4\x4d\x7e\xd3\xd0\xa6\xd2\xed\x8f\xb0\x00\x87\x43\x95\x7d\x07\x00\x00\xff\xff\x8f\x8c\x0f\x68\xcf\x01\x00\x00" + +func runtimeSyntaxGitRebaseTodoYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGitRebaseTodoYaml, + "runtime/syntax/git-rebase-todo.yaml", + ) +} + +func runtimeSyntaxGitRebaseTodoYaml() (*asset, error) { + bytes, err := runtimeSyntaxGitRebaseTodoYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/git-rebase-todo.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxGlslYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x93\x4f\x6f\xd3\x4c\x10\xc6\xef\xf9\x14\x7e\xad\xbe\x28\x75\xe5\x24\x24\xbd\xd4\x02\xaa\x42\xe8\x89\xaa\x15\x85\x0b\x59\x13\x8d\xed\xb1\xb3\x62\xbd\x6b\xed\x8e\x53\x82\x46\x7c\x76\xe4\x75\xfe\xd1\x20\x24\xf6\x30\x9a\xf9\xf9\x19\x3f\xb3\x5e\x6f\x29\x15\xd2\xa6\xc1\x24\xa8\x94\x53\x83\x41\x81\x84\x39\x25\x83\x20\x08\x82\xee\x99\x86\x1a\x93\x20\x14\x62\x34\x2c\x2d\x54\xbc\x46\x4b\x5c\x36\xbc\x6e\xb8\x6b\x38\x3f\x0b\x07\x03\xdb\x2a\x74\x7d\x4b\x1c\xc8\x02\x35\xc9\x52\xa2\x4d\x82\x70\x71\x13\x7f\x81\xf8\xc7\x32\xdd\x26\x93\xf8\x6a\x99\x46\x8b\x45\xe2\x1a\xc8\x31\x49\xd3\x68\x31\x3c\x4f\xc3\x6d\x6b\x3f\x47\x28\x44\x36\x5c\x1b\x59\x70\x66\x8c\xe2\x6c\x8d\xf9\xd4\xc7\x99\x8f\x97\x2c\x35\xb1\xf4\x54\x7a\x2a\x3d\x2d\x95\x01\x62\x8f\x3d\xf5\xb0\x06\x9a\x76\x61\xd6\x85\x4b\x76\x64\xdb\x9c\xd8\x41\xdd\x28\xb4\x2f\xe7\xbb\x6c\xba\xcf\x66\xfb\xec\xdd\xe7\xb7\xef\x0f\xca\xc7\x15\x14\xe6\xe9\xa0\xef\xeb\x73\x21\xb2\xf0\x4f\xfb\x16\x22\xab\xd4\x72\x38\xc7\x86\x56\x1f\x41\x57\xf8\x00\x16\x6a\x24\xb4\x8e\x1f\x8c\xd4\x74\x54\xdf\x01\xa1\x95\xa0\x8e\xd0\x07\x59\xad\xe8\xd1\xb4\x36\xc7\xe7\xf4\xce\x14\x78\x22\xed\xa1\x35\x45\x9b\xd3\x16\xed\xab\x5b\x53\x1d\xe4\xc7\x03\x3b\x02\xc2\x1a\x35\x6d\x3f\x79\x6e\xb4\x23\x06\x22\x2b\xb3\x96\x90\xd7\x60\x37\x52\x57\xdc\x6a\x59\x1a\x5b\xb3\xd4\x6c\x5a\x62\xa9\x7d\x2c\x19\x95\x43\xb6\x48\xad\xd5\x5c\x48\x97\x83\x2d\xf8\x69\x25\x15\x72\x69\x2c\x17\xe6\x6f\x5e\x99\x45\xf8\xc6\xb9\xd1\x24\x75\x8b\xc7\x4a\x3f\x05\x68\x1a\x75\x87\xbf\x55\x93\x6d\x91\x4b\x50\xee\x37\xa5\xdb\xd4\x99\x51\x23\xd3\xa0\x05\x32\xfe\x6f\x8b\x2f\xc6\xd1\xeb\x57\x6f\xae\x93\xff\x7e\xfe\xff\x82\xbf\xa6\x27\x2f\xd5\x6d\x9d\xed\x0e\x68\xb8\x98\xc4\x57\xe9\x05\x4f\xbe\x77\x09\xc4\xe5\x4d\x7c\x9b\x46\xbd\xc3\xbe\xaf\xee\x87\xf6\x75\xb7\x1c\x81\xed\x36\x31\x1e\x87\x7b\x86\xba\x48\x82\xf0\xec\x00\x8e\xee\xc3\x6e\xc5\x01\x99\xc2\x24\x41\xf8\xe9\x7e\x7e\x9f\x5c\x9f\x38\x9c\x1a\x08\x11\x3d\xb7\x10\x22\x1a\xff\x9b\xcb\xaf\x00\x00\x00\xff\xff\xb8\x3f\xae\xfa\xde\x03\x00\x00" + +func runtimeSyntaxGlslYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGlslYaml, + "runtime/syntax/glsl.yaml", + ) +} + +func runtimeSyntaxGlslYaml() (*asset, error) { + bytes, err := runtimeSyntaxGlslYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/glsl.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxGoYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\x94\x5f\x4f\xdb\x30\x14\xc5\xdf\xfb\x29\xbc\x0c\xd6\xa6\xac\x29\xff\xc4\x58\x34\x86\x18\x1b\xd2\x1e\x36\x5e\x98\x54\xa9\xce\x84\x93\xdc\x04\xab\x89\x1d\x39\x37\x40\xc5\xed\x3e\xfb\xe4\x24\x40\x08\x12\x30\x1e\xd7\xa7\xfa\xfa\xf8\x1c\xdf\x5f\x7d\x9b\xc8\x0c\x70\x59\x80\xcf\x52\x3d\x18\xc4\x80\x10\xa1\x3f\x60\x8c\x31\xbb\xa3\x44\x0e\x3e\x73\x38\xf7\x52\xbd\xe6\x0c\x06\xa6\xca\xa0\x6c\xb6\xdf\xb2\x63\xad\x62\x89\x52\x2b\x91\x95\x4c\xa8\x98\x45\x5a\xa1\xd1\x19\x4b\x32\x7d\x55\x6b\x26\xac\x2c\x20\x92\x22\xab\x3d\xc2\x51\x68\x40\x2c\x28\x12\x25\x90\xd5\x4a\x55\x01\xc5\x90\x88\x2a\x43\x4a\x35\xa5\x1a\x35\x19\xa1\x52\x20\x03\x58\x19\xe5\x72\x1e\x3a\xb7\x4e\x28\x10\x72\x50\xd8\x7a\x41\x56\x02\x25\xda\x90\x4c\xa8\xbc\x92\x18\x5d\x74\xd5\x85\x81\xc2\xe8\xa8\xd5\x16\x22\x5a\x88\x14\x48\xe6\x85\x36\x68\xb3\x4b\xa4\x4b\x61\xc8\x76\x4e\x25\x9a\x2a\x42\x4a\x2a\x15\xd9\x5b\xc4\x90\x80\x21\xa9\x51\x3c\x88\x5f\xe6\xa1\xce\x3c\x5d\x80\x11\xa8\x8d\xcf\x9c\xf9\x64\x63\x3a\x3e\xf8\xf4\xf9\xcd\x9f\xf5\x77\xf4\x3b\x20\xff\xc0\x19\xd4\x62\xcb\xe6\x6c\x59\x40\xf9\xe0\xa8\xcf\x9c\xd1\x7b\xe2\xdc\x73\x6f\x2d\x1b\xec\xf5\x05\xab\x43\xa9\x70\xb4\x4f\x5b\x7b\xb4\xb3\x4d\x7b\xbb\xee\x21\x25\x99\x16\x38\x6a\x56\x14\xe9\xbc\xc8\xe0\x7a\xb4\xb7\x4b\x5b\xdb\xfb\x6e\xf7\x62\x5d\x17\xa9\xb0\x40\x43\xe1\x12\x81\x4c\xa5\xea\xd6\xa4\x4a\x49\x2a\x04\x93\x88\x08\x28\xd4\x3a\xa3\x5c\x14\x14\x5d\x08\x45\x60\x8c\x36\x7d\x33\x6f\x01\xcb\x2b\x6d\xe2\xd6\xb4\xa1\xd3\x15\xd5\xf8\x84\x42\xcf\x9a\xb5\x2a\x34\x15\x50\x22\xec\x6f\xa2\x64\xd6\xa8\xef\x60\x7c\x31\x22\x5a\x00\x3e\xe4\xe1\x85\x6d\xd5\x82\xe1\xfc\x86\x38\x5f\xb9\xce\x53\x92\x11\x71\xee\x3e\x2d\x99\x13\xe7\x81\xdb\x89\xfe\x59\xe5\x21\x98\xe6\x79\x36\x30\xca\x7e\x17\xaa\x96\xb4\x7d\xcc\x37\x27\x1f\x83\x0d\xda\xbc\xb6\x5f\xc4\x24\x39\x9a\x9c\x04\x63\xdb\x0e\x0d\xbd\x61\xeb\xdb\x39\xdb\x58\xfa\x6d\x1c\xb3\x8f\xd4\xd4\x0f\xd4\x71\xee\x6a\xa0\xe2\x5e\xa5\x5c\xc8\xa2\xce\xe3\xdc\xbb\xaf\x76\x66\xeb\xf6\xd3\x4d\x6a\x06\xe9\xf8\x42\xd8\xab\xae\x77\xce\x3d\x29\xb4\x19\x73\x11\x26\xca\xe0\xe5\x90\x73\x5e\x17\x82\x7f\x38\x6c\x89\x7c\x08\x6e\x76\x56\x74\x3d\x3f\x9a\x9c\x88\x49\x62\x09\xdd\x6c\xaf\xa8\xea\xae\x77\x57\xf4\xab\xbb\xde\x5f\xb9\x2f\xa7\x35\xec\xc3\x1a\xbe\x8a\x55\xfd\x9a\x7d\xe6\x78\xde\xc6\x0b\x1b\xfc\xbf\x30\x9e\xf7\x31\x9e\xf7\x81\xb1\x79\x70\xef\x96\xd7\x7f\xa6\x8f\x5c\xa6\xd3\xbe\xcd\xda\x33\xdc\x51\xc7\xda\x8e\xdf\xd9\xe9\xd7\x53\x9a\xcd\x66\x74\xf2\x7d\xf6\xe3\x9b\xeb\x1f\x3a\xcf\x87\x71\x3e\x7e\x34\x29\x7c\x3c\x7d\x7d\xe2\xdf\x00\x00\x00\xff\xff\xf4\x69\x51\x13\xd0\x06\x00\x00" + +func runtimeSyntaxGoYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGoYaml, + "runtime/syntax/go.yaml", + ) +} + +func runtimeSyntaxGoYaml() (*asset, error) { + bytes, err := runtimeSyntaxGoYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/go.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxGoloYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x57\x5f\x73\x1c\xb7\x0d\x7f\xf7\xa7\x50\xd5\xb4\x8e\x93\x91\x9a\xd7\x6a\x9a\x76\x54\x5b\xd7\x51\x9b\x58\x19\xfb\xea\x78\xc6\xe7\xda\xd8\x25\xf6\x8e\x39\x2e\x41\x83\xe0\x9d\x36\x45\xfb\xd9\x3b\xe0\xde\xea\x6f\x3d\xd9\x3e\x54\x33\x22\x41\x2e\x01\x02\x20\xf0\x03\xae\xf3\x01\x65\x48\x78\x76\xb4\xa6\x40\x4f\x9e\x38\x14\x6c\xe5\xec\xc9\xd1\xd1\xd1\x91\x7d\x8b\xd0\xe3\xd9\xd1\xf1\x6a\x75\x6a\xdf\xbf\x38\x7e\xf2\x84\x4b\xc0\x3c\x1e\x38\x39\x1a\x59\x8f\x57\xab\xe6\xcb\xae\xc4\x56\x3c\x45\xed\x4a\xd4\x67\xab\x55\x73\xfc\xf8\x4c\x16\x2e\xad\xe8\x8b\x21\x42\xef\xdb\xab\xe6\x27\x6c\x45\x4b\x34\xae\x73\x07\x49\x90\x17\xd0\xb0\x6f\xa7\xd5\x74\xf2\x0d\xb0\x87\x26\xa0\x5e\x35\x19\x79\x67\xe4\x67\x6e\x08\x3e\x8b\x66\x14\x05\x66\x18\x74\x87\xad\x10\xab\x94\x14\x50\x7b\x48\x9f\xe1\xba\xda\xea\x05\x33\xb1\x5e\xf4\x49\x06\x7d\x49\x11\xf5\x35\xf5\xa8\x57\xa9\x9a\xf4\x0a\x73\x09\x72\x98\x4e\x69\x3b\x51\x1d\xf8\x30\xd1\x58\x05\x4c\x8b\x2a\x67\xe4\x86\xf0\x70\x49\xdd\xa8\xc7\x41\x11\xef\x30\x8a\xef\x3c\xf2\x69\x1b\x20\xe7\x83\x52\x50\xd6\x3d\x46\xd1\xe4\xfb\x7b\x7a\x7f\xe6\xb8\x8f\x82\xdc\x41\x8b\x59\x7d\x9f\x02\x1a\x6f\x56\xbc\x16\x8c\x2e\x2b\xed\x90\xd9\x3b\xcc\xda\xc3\x16\x59\x23\xee\x2f\x63\x16\x88\x2d\xce\x91\x9d\x47\xc7\xf8\x5c\x5d\xe3\xf3\x0f\x8c\xd9\x74\xf3\xb9\xba\xc9\x0b\x32\x98\xa3\xbb\x00\x22\x18\xd1\xa9\xd0\x77\xf6\x14\xb6\xf1\x3d\x24\xfd\x08\xd1\x29\xf1\x45\xc8\xf8\x17\x14\xfd\x68\x8f\x42\x07\xb7\x42\x4a\x61\x50\xf4\xb2\x41\x9e\xa1\x0c\x8f\x5c\x34\x3e\x8d\xf0\xe0\xe3\x5a\x19\x7c\xb6\x39\x96\x10\x7c\x37\x68\x0b\xd2\x6e\x7c\x5c\xcf\x90\x97\x98\x7a\x9f\xd1\xa2\x66\x51\xa4\x30\xaa\x3d\x2b\xba\xc3\x02\x42\x50\x88\xc3\xac\x17\xf0\xe2\x21\xf8\x9f\x51\x6f\xc9\x1f\xbd\x6c\x7c\x5c\x6e\x18\xc1\x69\x16\x60\xd1\x6e\xba\x25\x84\x06\xda\xed\x92\x94\xe2\x6b\x14\xa5\xb8\xb0\x78\x6a\xed\x51\x82\x62\xfc\x54\xb0\xcc\x79\x9d\xc4\x3e\x4a\x88\x5a\xe7\xea\x09\x54\xbb\x2e\xc4\x3a\xfd\x00\x39\xef\x89\x9d\x66\x6c\x0b\xe3\xab\xbb\x5b\x8c\x9f\x8a\x67\x7c\x49\xf2\xb2\x84\x30\x2d\x2d\x3a\x96\x43\x42\x77\x5e\x93\x88\x21\xae\x4d\xe2\x0e\x39\xa3\x7b\x55\x57\x3d\xa4\x8b\x28\x3c\x28\xe4\xcb\x29\xf0\xa6\x80\x52\xc8\x8b\x03\x18\x40\xb8\xf9\xaa\x3e\x3f\x0f\x94\xab\xe5\x3e\xe0\x92\x96\x78\x2d\x2a\x78\x2d\x4b\x5a\xf8\x30\xee\x5e\x5c\xfb\x2c\x59\xdb\xc2\x8c\x51\x5e\x78\xd6\x1c\x10\x93\x96\xe2\x9d\xfa\x3c\xea\x53\x53\xdb\xf4\xbb\xea\xb4\xdd\x00\xbf\x81\x50\xcc\xe5\x32\x12\x81\xe2\x7a\xa4\x1c\x95\x26\xe0\x48\x77\x81\xe0\x70\x80\xb1\xa7\x1d\xfe\x79\xb8\x8c\x0e\xaf\xb5\xa1\xeb\x19\x3e\x0e\x7e\x8b\x61\x78\x5d\x52\x22\x16\x34\xc7\x19\xc8\x34\x14\x9c\x96\xe8\x90\x73\x4b\x8c\xda\x04\x1f\xb7\x93\xa7\x3e\xec\xbc\x43\xd2\x96\x62\x8b\x10\xd0\x69\xb7\xfe\xd0\x04\x68\xb7\x46\xf0\xb8\x5e\x33\x62\x34\x62\xc0\x10\x68\x3f\x1e\x31\x6d\xd7\x1f\x7a\x58\x63\x14\x30\xb2\x1d\xa0\x1e\xda\x6f\xbc\xa0\x36\x93\x98\x66\x14\xd3\x4c\x62\x9a\x1b\x31\xcd\x41\x4c\x73\x2b\xa6\x39\x88\x69\x26\x31\x6d\xe1\x4c\xfc\x21\x51\xf6\x35\x91\x0e\xeb\x0c\x3b\x7c\xb4\xc9\x98\x85\xf8\xf1\x7e\x49\x13\xe5\x68\x7f\xb3\xdb\x11\xef\x81\xdd\xb4\xb4\x18\xaf\x6b\x64\xc8\xf8\xc1\xf9\x9c\x02\x0c\x87\x55\xf0\x71\x4e\x88\x57\x00\xad\x80\xd2\x52\xcc\x1a\xe0\xe7\x71\xd5\x31\xf5\x97\x56\x28\xd6\x18\x0f\x10\xc4\x98\x10\xe4\x00\x49\x73\x64\x43\xfe\xee\x46\x1c\x05\x17\xea\xc8\x2a\xb0\xc5\x3a\xfc\xb8\xb1\xe8\x74\x4c\xa9\x0e\xe3\x32\x97\xc6\x38\xe6\xa0\x42\x6f\x21\x33\xe3\x60\x4f\xae\x84\x39\x0a\xff\xf5\xf5\xd5\xcb\x19\xc7\xb2\xb0\x8f\x6b\x03\xc3\x04\x9c\x51\x85\x8c\x51\x85\x1e\x94\xdf\xe4\x40\x70\xc1\xd4\xcf\x94\x7b\xa7\x74\xa8\xc3\xce\x47\xd4\x35\xca\xdf\x70\xb0\x69\xcc\xb0\xc4\x94\x90\xc5\x63\xbe\x41\xb9\x19\x82\xc5\xf7\x98\xb5\xa4\x25\xa9\x85\xd3\x92\x66\xf0\x74\xc4\x3d\x88\x0a\x5d\xc6\xc3\x88\x6b\xb4\xda\xf2\xa2\xe6\xbe\x0a\x2d\x2c\xf1\xad\x1c\xd1\xac\x6a\xb0\x31\x9c\x16\xc3\xe1\xa9\xe8\x31\xba\xd2\xa2\x22\xb4\x1b\x6d\xa9\x44\x51\xac\x28\x35\xcf\x55\x86\xff\xaf\xa1\x47\xc3\x2b\x75\x78\xe8\x80\x20\x25\x8c\x4e\xc1\xd5\xff\xcb\xee\xbc\xa9\xe5\x34\x59\xf0\x46\xa7\x3e\x66\x64\xd1\x00\xd9\xda\xa3\x9e\x9c\xef\x6a\xff\xf3\xc6\xe3\x5e\x3b\x1f\x9d\x81\xa5\x85\x7d\x0f\x49\x7f\x22\x1f\x27\xcc\xb9\x41\x69\x25\x76\xc8\xe3\x58\xe1\xca\x20\xef\x5c\xd4\xc7\x36\x14\x87\x8a\xd7\xe3\x3c\x7e\x50\x87\x01\x05\x75\x03\xd9\x12\x4c\xc0\xc7\x6c\xaf\x79\x55\x0b\xb6\x0a\x55\xe0\x9d\x93\x4b\xa3\x41\x4b\xd2\x5c\xda\xd6\xec\x71\xda\x97\xa0\x11\xd7\x96\x32\xca\x36\x38\xbf\x53\xb6\xa1\x27\xa7\x6c\x43\xa2\xbd\xb2\x0d\x59\x58\x83\xe8\x5a\x14\x3f\x69\x0d\x2c\x0d\x38\x36\x0f\xd6\x32\x7c\x8c\x24\x7a\x4d\xac\xb8\xc3\xa8\xe4\xdc\xad\xb6\xd3\x6b\x7d\xf4\xd9\xfe\xa3\xf5\x18\x9d\xb5\x78\xc6\x78\xd9\xd5\xf2\xd6\x59\x6f\x18\x9d\x59\xe6\x05\x7b\xab\xf8\x75\x5e\xa3\x98\x33\x7d\x15\x97\x45\x17\x60\x56\x2f\xb9\xa0\x56\x3e\x2b\x47\x83\x96\x38\xcd\xc0\x83\xe6\x64\xb5\x15\x59\x77\xc0\xc0\xeb\xac\x79\x0f\xe9\x7c\x22\x9e\xd7\x93\x95\xa2\xda\x7b\x1a\xa9\x3e\xee\x68\x5b\x3b\x02\x4d\x3e\xa1\xb6\xd4\x27\xca\xa8\x9e\x14\xa2\x5b\x6e\x30\x6a\x89\xe2\xad\x0e\xb7\x85\x4d\x19\x37\x27\x6d\xe8\xef\x29\x21\x3f\x87\x8c\x8a\x9f\x0a\x84\x3c\xf6\x19\xd9\x2e\xba\xd7\x68\x66\x01\xa9\x7d\xe1\x04\x4d\x9d\x62\x7d\x5f\xbb\x79\x6f\x43\x6b\x42\x7a\xeb\x9d\x94\xac\x1d\xdb\xfb\x7c\x0f\x91\x72\xc2\xd6\x43\x38\xf0\xef\xcd\x92\x86\x11\xb6\xf5\x1d\x7c\xac\xc5\x55\x0a\xc7\xbb\x3c\xb5\x31\x9e\x74\xe5\x43\x6b\x66\x51\x0c\x21\x0c\x2a\x1b\xa6\xfd\x7f\xb7\x72\xc2\xb1\x92\x2c\xa3\x37\x3e\x6b\x40\x31\x7f\x6b\xa0\x16\xc2\x3d\xbd\x86\xbe\xa1\x70\xda\x30\xb4\x5b\x14\xf3\xcc\xbb\x2f\x9f\xfd\xf3\x5f\xef\x75\xb5\x7a\xa7\xab\xd5\xfb\xe3\xcf\x78\xa0\x23\xd6\x7d\x05\xf4\x8e\xb8\x66\xb8\xbf\xa7\x7b\x8d\x07\xb8\x39\x0e\x35\x37\xd5\x67\xb5\x40\x24\xd6\x1a\x68\x53\x7c\xdd\xf3\xf5\xc4\x79\xda\x10\x85\x1b\xeb\x4b\x6d\xfb\xee\xfb\xf4\xf6\x8e\x03\x68\x58\xc8\x59\x53\x61\xd0\xea\xee\x3f\xe0\x68\xa6\x81\xab\xd5\x3a\x33\x73\xb5\x3a\xf9\xfa\x77\x5f\x7d\xfb\x87\x3f\xfe\xea\xdf\xbf\xf9\xad\xfe\xe3\xbd\x9e\x7d\xfb\x50\xf0\x69\x2c\x7d\x63\xee\x3c\x5c\xf0\xee\x9b\x93\xdf\xbf\xff\x5a\xbf\xb9\x36\x02\x4e\xba\xf3\x93\xc5\xfb\xaf\xec\x1e\x7d\x7a\xfa\xf4\xb1\x01\x63\x1d\x19\x7f\xf1\xd9\x5f\x0d\x2e\xb3\xe8\xf8\xf8\x66\x0f\xa3\x7b\xb0\x93\xb7\x3e\x55\xb3\x57\xab\xd3\xdb\xdd\x3b\x3f\x1e\xa7\xbf\xbb\x37\x8d\xd1\xf5\x7c\x03\x7c\xcb\x3a\x57\x9d\xa7\x0f\xb5\x79\xfa\xff\x54\xa6\xaf\x41\xf4\x48\x89\x5f\x3f\x54\xe2\x8b\x5f\xb8\x4e\xc8\xd1\xd9\xd1\xf1\x97\xcb\xab\x17\x57\xfa\xf6\xed\x5b\x5d\x5c\xbe\xfd\xfe\xe2\xd9\xd9\x9f\x7e\xf9\xae\x93\x93\x93\x93\x87\xd7\xdd\xdf\xfb\x9f\x6f\xfc\x4f\x00\x00\x00\xff\xff\x8f\x72\x85\xf4\x0e\x10\x00\x00" + +func runtimeSyntaxGoloYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGoloYaml, + "runtime/syntax/golo.yaml", + ) +} + +func runtimeSyntaxGoloYaml() (*asset, error) { + bytes, err := runtimeSyntaxGoloYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/golo.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxGroffYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x52\xc1\x4e\xc3\x30\x0c\xbd\xf7\x2b\xac\xa8\x87\xb6\x68\x11\x1c\xc9\x85\x03\x9f\x11\x67\x52\xd4\xba\x23\xd2\x92\x56\x89\x39\x20\xf5\xe3\x51\xd2\x31\x26\xca\x06\xf3\xc5\x6d\xf2\x9e\xfd\xfc\x9c\xd1\x1d\x89\x3f\x66\x52\x70\x88\xd3\x38\x56\xd5\x40\x4c\x3d\x2b\xa8\x00\x00\xf2\x6d\xb0\x9e\x14\x08\x44\xe9\x35\xf9\x64\xea\x05\x51\xc6\x69\xcc\x89\xbd\xed\xeb\x65\x9f\x93\x14\x55\x15\xdf\x8f\x94\x54\x61\xee\x20\xb1\x65\xf2\x14\x58\x81\xd8\x23\xca\x66\x48\x4b\x88\x2d\xe8\xbd\xd6\x2a\xcd\xb6\x27\x65\x8c\xe9\xc4\x09\xde\x4f\x21\xb1\x0d\x2c\xd3\x4c\xbd\xb3\xc7\xd7\x37\x1b\x4b\x5b\x44\xf9\x0f\xcc\x28\x97\x92\x10\x1b\xb9\x7e\xa6\x06\xf1\x61\x41\xdc\xb5\x2f\xfa\x71\xf7\x6c\x7e\x16\x51\x20\x9a\x8c\x2b\xe0\x1c\x6d\x68\x32\xb3\x91\xb2\xdd\x60\xcb\x7f\x8e\xc4\x36\xfe\x46\x45\xd4\xe2\x0c\xa2\x30\x28\x10\xe6\xfb\x60\x35\x06\xb4\xa9\x4e\x85\x57\xcb\x8b\x2f\x17\x6e\x74\x57\xbd\xf1\x17\x46\x96\x8e\x42\x76\xf5\xd6\x16\x8e\x2e\x1c\xb6\xea\x10\xbb\xab\xa3\x7d\x91\xfe\x9a\x10\xb1\xbb\x73\xc6\x1b\xdb\x2a\x52\x6e\x6e\x75\x23\x67\xa5\xdd\x25\xc0\x0d\x14\xd8\x8d\x8e\xa2\xf4\xb6\x8f\xd3\xb9\x4a\x8e\x5a\x3f\x95\x47\xf1\x19\x00\x00\xff\xff\xb6\xd6\x2a\x2f\x01\x03\x00\x00" + +func runtimeSyntaxGroffYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGroffYaml, + "runtime/syntax/groff.yaml", + ) +} + +func runtimeSyntaxGroffYaml() (*asset, error) { + bytes, err := runtimeSyntaxGroffYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/groff.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxHamlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x91\xdf\x6e\x82\x30\x14\x87\xef\x79\x8a\x5a\x31\x50\x0c\x64\xb7\x23\x93\xb9\x47\xd8\xd5\x92\x9d\x9e\x63\x3a\xad\x1b\x09\xe0\x1f\xea\x8c\x5a\xdf\x7d\x29\x43\x64\x73\xe3\xf2\xfb\x7d\xa1\x5f\xd3\x65\x5e\x68\x73\x58\xeb\x94\x7d\xa8\xb2\xf0\xbc\x85\x36\x7a\x6e\x52\xe6\x31\xc6\x98\x1b\x2b\x55\xea\x94\x71\x29\x13\x27\xf8\xdc\xf3\xb6\xbb\x42\xd7\x69\x23\xc4\xac\x3e\x94\x6f\xab\x22\x65\x3c\xb6\x13\xde\xb2\x85\x5e\xaa\x5d\x61\x1c\xcc\xec\x24\xbb\xe0\xf9\xaa\xaa\x8d\xaa\x1c\x0f\x81\x31\xb4\x24\x46\x70\x17\xdf\x3f\xc5\xaf\x2a\x3e\xce\x70\xdc\x99\xf5\x5a\xcf\x73\xe5\xfe\x9a\xfe\x2d\x7c\x17\xbb\x28\xb8\x1d\x2f\xe7\x24\xb5\xd9\xe6\xd5\xbb\xf3\x78\x08\x24\x39\xda\x50\xba\x8f\x0b\x11\x49\x6e\x47\xf0\xfc\x82\x8f\x52\x9e\x80\xce\x18\x49\x79\xee\x48\x08\x24\x1c\x11\x2d\x79\x00\xca\x30\xca\xba\xdd\x07\xf2\xdd\xee\x77\x84\x80\xc8\x11\x6a\xc9\x00\x68\x80\xd1\xe0\xff\xa4\x20\x04\x0a\xda\xa0\x40\x88\x28\xb0\x23\xd8\xec\xf1\x67\x4d\x03\xfa\x31\x9b\x3d\x5e\x5b\x9a\x15\x80\xd0\xad\x78\x01\xfd\xb6\x06\xf4\xd3\x36\x7b\xfc\x55\x96\x2f\x74\x65\xf2\x65\xae\xb7\x29\xe3\xc3\xde\xf1\xb7\x42\xf2\xa9\x9c\x14\x4e\xed\x74\x2a\xda\x77\x99\xa9\xf8\x88\xe3\xeb\x35\xcb\x52\x37\x0f\x3c\x04\x3a\x61\x12\xf9\x76\xe8\x73\xef\x2b\x00\x00\xff\xff\x82\x41\x7f\x6a\x64\x02\x00\x00" + +func runtimeSyntaxHamlYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxHamlYaml, + "runtime/syntax/haml.yaml", + ) +} + +func runtimeSyntaxHamlYaml() (*asset, error) { + bytes, err := runtimeSyntaxHamlYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/haml.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxHaskellYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x94\x6f\x6f\xdb\x36\x10\xc6\xdf\xfb\x53\x68\x1a\x51\xc4\xc0\xec\xbd\xf7\xe2\x6c\x58\x1b\x0f\xdd\xda\x66\x4b\x8d\x21\x40\x2e\x1a\x68\xf1\x64\x11\xa5\x48\x97\xa4\x96\x05\x7d\xb2\xcf\x3e\x90\x92\x1d\x2f\xde\x3f\x60\x86\x41\xe2\xee\x48\x3e\x8f\x7e\x3c\xa9\xd1\x86\xe3\xc3\x8e\x17\x45\x2b\xc3\x07\x36\x66\x32\x51\x1c\xb9\x8e\x8b\x49\x51\x14\x45\x2a\x5b\xd9\xf1\xa2\x28\x89\xe6\x6d\x10\xe5\x64\xe2\x7b\xc3\x61\x28\x7f\x5e\xfc\xc0\x0f\xf7\xce\xab\x90\xc3\x59\x11\xa2\x8c\xdc\xb1\x8d\x8b\xa2\xbc\x2d\xee\xce\x64\x40\x2d\x03\xc3\x35\xa8\x8d\x0c\x01\x4a\x46\x09\xc5\x8d\xec\x4d\x84\x62\xaf\x7f\xd5\x76\x0b\xe5\xd0\x38\x2f\x8d\x49\x13\xeb\xad\x45\xab\x55\x2a\xe8\x06\xb1\x65\x0b\x36\x81\xa1\xbb\x9d\xf3\x11\xda\x36\xfa\xb7\x61\x34\xc3\xe4\xa1\x6d\x88\xd2\xd6\x0c\xc3\x69\x01\x3a\xe5\xd0\x39\xd5\x1b\x86\xe5\xfb\xf4\x80\xf8\xd8\x4b\xa3\x1b\xcd\x0a\x39\xbc\x6f\xd9\xf3\xf4\xb6\xb8\x2b\xff\xc2\xfa\x59\x95\x7d\x56\x7b\x37\xd5\x28\x5d\x0d\xda\xd5\x28\x5e\x8d\xea\xd5\x41\xbe\x1a\x45\xab\xbd\x6a\x95\xc6\xbf\x93\x19\x08\x89\x8c\x48\xc0\x35\x62\x80\x24\x32\x25\xb1\xc7\x24\x0e\x9c\x04\x94\x13\x23\x29\xb1\x47\x25\x46\x56\x02\xba\x11\x99\x96\xc8\xb8\xc4\xc8\x4b\x0c\x8c\xc6\xc9\x8c\xb3\x17\x07\x66\x22\x41\x4b\xa1\x48\xd8\xc4\xc8\x4d\xec\xc1\x89\x27\x72\x02\x43\x22\xb3\x13\xd3\x72\x92\x9f\x29\xb5\xc1\xcf\xd2\x6b\xd7\x87\x22\x3c\x74\x1b\x67\x0e\xdd\x90\xa3\xc4\x93\x08\xf8\x06\x9f\x61\x81\x5f\xf0\x3b\x96\x20\x22\xc2\x57\x20\x3a\x23\x9a\xe2\x0b\x10\xdd\x82\xe8\x0e\x44\x9f\x40\xf4\x78\x7c\xf4\xd5\x8e\xbd\x8c\xce\xff\xf9\xd0\xb9\x1b\xd3\xe9\xf4\xe5\x12\x5f\x2e\xf1\xe2\x05\x88\xd2\x1f\xe7\xb8\xc0\xf9\x12\x17\xcb\xff\x60\x71\xc7\xb5\x96\xd9\xe3\xec\x02\xe7\xb3\x69\xf9\xdc\x3b\xd1\x1c\x44\xe2\xe8\xa4\x57\x32\xca\xa2\x76\x36\x44\xdf\xd7\x47\xce\x72\x4a\xda\x38\xdf\xb8\x71\xe7\xe6\x6c\xed\x7b\xc6\x4a\x9a\xc0\x53\xa2\x4d\xf9\x6c\x65\x92\x7d\xe7\x62\x9b\x5a\xfd\xfb\x3e\x44\xbc\xe1\x26\xe2\x5a\x6f\xdb\x88\x37\x6b\x5c\xfe\x84\xef\xd6\xd3\x13\xe5\xd4\x23\xbc\x17\xd5\x8a\x6d\x4c\xb7\xe3\xe7\xb9\x30\xb6\xd5\x35\x4b\x85\xf7\xad\xbb\xc7\xa5\xed\x3b\x5c\x7e\xc4\x95\x57\x48\xfb\xf1\xad\xeb\xad\x62\x85\xf5\xc3\x8e\xe5\xc6\x30\xde\xf5\x1d\xae\x59\x1a\xac\xbc\xac\xa3\x76\x56\x1a\xbc\xb6\x91\xb7\x5e\x9a\x5c\x48\x79\xac\x8c\x93\x31\x19\xcd\x99\x14\xe0\xad\xb3\x52\x0d\xe3\x8f\xa6\x0f\x58\xf5\x36\xf1\x38\x76\xfc\x3e\x7a\x6d\xb7\x27\x84\x42\x4e\x2f\xc6\x65\x45\x7a\x2b\x7c\xa2\x41\x65\x79\xc8\xb1\x55\xcf\x32\xe1\x83\xde\x65\xae\x44\xf3\xa7\xec\xd1\xf7\x68\xff\x3b\x56\x1a\x2e\xf8\x65\x2b\xfd\xd3\xd6\x83\xbd\x97\xae\x4b\xef\xe2\x93\xbf\x1c\x9e\xfa\x9a\xcd\x9e\xfb\x12\xff\x62\x20\x3a\xe5\xd2\xf5\xae\xaf\x5e\x5d\xe1\xe6\xe6\x06\xab\xd7\x37\x6f\x2f\xa7\x8b\xaf\x47\xf5\x7f\x10\x23\xfa\x74\x22\x37\x23\x7a\xfc\xdf\x8a\x47\xbd\xd2\xe9\xda\xa7\xd5\xa9\x15\x1a\x6d\x59\x95\x93\x3f\x02\x00\x00\xff\xff\xef\xe3\xd9\xc6\x0b\x06\x00\x00" + +func runtimeSyntaxHaskellYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxHaskellYaml, + "runtime/syntax/haskell.yaml", + ) +} + +func runtimeSyntaxHaskellYaml() (*asset, error) { + bytes, err := runtimeSyntaxHaskellYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/haskell.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxHtmlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x54\x4d\x8f\xe3\x44\x10\x3d\x93\x5f\xe1\xf5\x22\xd4\xbd\x4b\x32\x70\x19\x09\x6f\x76\x2c\xb4\xc0\x15\x0e\x5c\x50\x26\x23\xb5\xbb\xcb\x76\x93\xfe\xf0\x76\x97\xb3\x1b\x78\xfc\x77\xd4\xce\xcc\x4e\x46\x3b\x20\x24\xac\xc8\x8a\x5e\x95\xab\x5e\xbd\xfa\xe8\xad\x23\x3e\x4d\xd4\x54\x23\x7b\xb7\x5a\x19\x62\xd2\xdc\x54\xab\xaa\xaa\xaa\x62\x0c\xca\x53\x53\xd5\xb7\xb7\x9b\x91\xfd\xce\xed\xdb\x2f\xeb\xd5\x2a\xcd\x8e\x72\xb3\xf8\xac\x2b\x4a\x29\xa6\xa6\xaa\xb7\xbb\xbb\x17\xfb\xcd\xab\xf6\xa6\xbe\x37\xe4\x93\xef\xa2\xdb\xb0\x1a\x9a\xaa\x16\xad\x95\xdb\xdd\xd5\xbe\x15\x4a\x74\x5d\x82\x4e\x31\x9c\x3c\x8c\x49\x94\x33\xa6\xc9\x11\x23\x91\x42\x62\xab\x1d\x21\x5b\x43\x98\x8d\x8d\xb2\x45\x27\x54\x26\xd1\xc7\xc0\xb2\x85\x11\x16\x51\xc2\x0e\x70\x51\x1f\xde\xcf\x91\x09\x49\xb6\xd0\x4a\x84\xa3\xca\x98\xd8\xc6\x20\xa1\x29\x30\x25\x68\xcb\x04\x1d\x85\x21\x38\xb8\x21\xc5\x79\x92\x30\x42\xb1\x12\xce\xe6\x25\x1e\xc8\x81\x58\x59\x97\xd1\x07\x58\xe5\xe2\x00\x9b\xe0\xc0\x12\xe4\x45\x47\x46\xb6\xe8\x2d\x39\x93\x89\xd1\xdb\x41\x68\xb5\x24\xc1\x9c\x48\xa2\xd0\x42\x1f\x93\x87\xb0\xb2\xed\x93\xf2\x84\xe5\x5d\xbc\xc7\xdd\xb7\xeb\xeb\x3d\xc6\x04\x0b\xeb\x07\xd8\x20\xa6\x99\x91\x25\x0e\x9d\xc1\x81\x4e\x03\x05\x38\xd5\x91\x83\xa3\x81\x82\x81\xb3\x22\x1c\x64\x0b\xaf\x84\x0d\x98\x90\x0e\x12\x9e\xc2\x2c\x2c\x93\x2f\x38\xb1\x50\xa0\x24\x11\xd4\x11\x21\x8a\x73\x2e\x64\x9d\xec\xc4\x12\x51\x38\x4c\x2c\x96\x4a\xb1\x28\x31\xf3\x34\xb3\xc4\x24\x54\x52\x1e\x56\xf3\x9c\x08\xe5\x17\x87\x22\xbd\x6c\xf1\x1e\x49\x4c\x60\xcc\xdd\x49\x22\x0b\x4e\xf6\x40\xb2\x45\x56\x7e\x42\x26\xa1\x97\x62\x1d\x69\x96\xc8\x5e\x39\x87\x1c\xe7\xa4\x09\x79\x52\x01\x99\x53\x0c\x03\xf2\x2c\x3a\x4c\xf0\x5e\xa5\x93\x04\xd3\x47\x56\xa5\x9b\x6c\x3d\x81\x93\xd2\x07\xcc\xc2\xc9\x16\x47\x95\x70\xb4\x86\x22\x3e\x74\x49\x8a\x6a\xf3\x0a\x37\xf2\xd9\x99\xd9\xd0\x47\xa6\x60\xc8\x3c\x19\x9e\x2e\x9a\x13\x8c\x3d\xa2\x8c\x2b\x46\x52\x46\x50\x69\x7f\x1f\x63\xe9\x37\x5b\x76\x04\x56\x5d\x79\xdf\x3b\x63\x14\xa4\x4a\x13\xd3\xe2\x25\x97\xac\x4f\x72\x4e\xa4\xad\x72\x4d\x55\x7f\xb5\xbb\x7b\xb3\xdb\x35\x79\x52\x9a\x9a\xfd\x7e\xff\xea\xcd\x53\x5e\x4d\x55\xef\x9a\xb7\xfb\x07\xd0\x1a\x0a\x6c\x7b\x4b\x65\xfc\x85\x72\x8c\x6e\xd0\xd1\xc5\x84\x91\xec\x30\x32\xc6\x44\x3d\xac\x79\x68\x71\x0c\x83\xa1\xac\x51\x76\x0a\x31\x08\xed\xac\x3e\xa0\x8f\x7a\xce\x70\x51\x19\xf8\x38\x67\x8a\xc7\xd2\xde\x6c\xff\x78\x50\x38\x69\xb0\x4a\x03\x31\xca\xa6\xe2\xa8\xdc\x4c\xf8\x60\x0d\x8f\xf2\xed\x03\x15\x1d\x43\x66\x15\x78\x13\x66\xdf\x9d\xf9\xb4\x56\xbe\xdc\x7d\xb3\xfe\xee\xfb\xf5\x4f\xfb\x3f\xaf\xbf\xbe\xfe\xeb\xec\xfb\xb2\x5a\x57\x86\x7a\x35\x3b\x6e\xee\x81\xf2\x64\x56\x89\x9b\xaa\xbe\xa9\x2f\x40\x0a\x45\xfd\xed\x25\x74\x5e\xfd\x6a\xb7\x5f\x3d\xb7\xe5\x5b\xdc\x7c\xc6\x28\x73\xb2\x61\xd8\xcc\xa9\xc8\x27\x7a\x9e\x44\x19\xba\x91\xef\xff\x0c\x96\xa1\xc7\x14\x3d\xc9\xe6\xea\x6a\x77\x57\x7d\xb1\x7f\xfd\x18\xc3\x7b\x0a\x85\xd6\xf6\xc5\x7a\xbd\x79\xdd\xae\xd7\x9f\xe2\x4f\x89\xa6\x14\xf5\x62\xfb\xe1\xe7\x77\xbf\xfe\xf6\xcb\x8f\x9b\xd7\xa5\xa9\xcf\xe7\x3f\xd7\x7a\x59\xe9\x6d\x5d\x7f\xc2\xce\x85\x5e\x22\xf9\x60\xa7\xe5\xee\xdd\xde\x6e\x1e\xd1\x8b\xc3\xf7\xf0\x5c\x66\x3a\x0f\xd2\xbb\x51\xa5\xc7\x4f\xef\xe9\x3c\x91\xfc\x92\xc6\xf6\xbc\xba\x8f\x87\xf3\x42\xf8\xab\xe7\x6c\xce\x7a\xcb\xeb\x65\xc3\x9b\x0b\xf5\xff\x9d\xa3\x0d\xda\xcd\xa6\x5c\xf2\xdf\xd5\x51\x9d\xc3\xfe\x17\x6e\x7c\x72\xf4\x0f\xd4\x3e\x37\xfd\x4f\x66\x3a\xe7\x7a\xb5\xfa\x3b\x00\x00\xff\xff\x01\xde\xaf\x06\x92\x06\x00\x00" + +func runtimeSyntaxHtmlYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxHtmlYaml, + "runtime/syntax/html.yaml", + ) +} + +func runtimeSyntaxHtmlYaml() (*asset, error) { + bytes, err := runtimeSyntaxHtmlYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/html.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxHtml4Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x54\x71\x8b\xdc\xb6\x13\xfd\xfb\x77\x9f\xc2\xf1\xaf\x14\xe9\xd2\xb5\x13\x12\x02\x75\x2e\x67\xda\x24\xa5\x85\xb4\x0d\xe5\x4a\x29\xbb\x7b\x20\x4b\x63\xaf\x58\x59\x72\xa4\xf1\x6e\xb6\x7d\xfd\xee\x45\xde\x5c\xd3\x90\xab\x58\xc4\xa2\x19\xeb\x8d\xe6\xbd\x79\xbd\x75\xc4\xa7\x89\x9a\x62\xc7\xa3\x7b\x7a\x71\x61\x88\x49\x73\x53\x5c\x14\x45\x51\xe4\xa8\x57\x23\x35\x45\xb9\xd9\x54\x3b\x1e\xd7\x6e\xdb\x3e\xfd\xa2\x5c\x82\x3b\x52\x86\x62\x53\x94\x57\x0f\x5e\xfd\xfc\xf2\xe6\xf7\xb7\xaf\x8b\xef\x6f\x7e\x7c\x53\xbc\xfd\xf5\xdb\x37\x3f\xbc\x2c\x36\xe5\xaa\xae\x7f\x7b\xf2\xb2\xae\x5f\xdd\xbc\x3a\x47\x9e\x56\x8f\x1e\xd7\xf5\xeb\x9f\xb0\x63\x9e\x9a\xba\x3e\x1e\x8f\xd5\xf1\x49\x15\xe2\x50\xdf\xfc\x52\x2f\x05\xd4\x89\xa3\xd5\x5c\x19\x36\x9b\xf2\xba\xbc\xb8\x88\xb3\xa3\xd4\x2c\x80\xab\x82\x62\x0c\x0b\xe2\xfa\xf6\xc1\xb6\xba\x6c\xaf\xcb\x0f\x81\x74\x1a\xbb\xe0\x2a\x56\x43\x53\x94\xa2\xb5\xf2\x6a\x5d\x6f\x5b\xa1\x44\xd7\x45\xe8\x18\xfc\x69\x84\x31\x91\x52\xc2\x34\x39\x62\x44\x52\x88\x6c\xb5\x23\x24\x6b\x08\xb3\xb1\x41\xb6\xe8\x84\x4a\x24\xfa\xe0\x59\xb6\x30\xc2\x22\x48\xd8\x01\x2e\xe8\xfd\xbb\x39\x30\x21\xca\x16\x5a\x09\x7f\x50\x09\x13\xdb\xe0\x25\x34\x79\xa6\x08\x6d\x99\xa0\x83\x30\x04\x07\x37\xc4\x30\x4f\x12\x46\x28\x56\xc2\xd9\xb4\xdc\x07\x72\x20\x56\xd6\x25\xf4\x1e\x56\xb9\x30\xc0\x46\x38\xb0\x04\x8d\xa2\x23\x23\x5b\xf4\x96\x9c\x49\xc4\xe8\xed\x20\xb4\x5a\x40\x30\x47\x92\xc8\x65\xa1\x0f\x71\x84\xb0\xb2\xed\xa3\x1a\x09\xcb\x9e\xb3\x77\xeb\xc7\xab\x67\x5b\xec\x22\x2c\xec\x38\xc0\x7a\x31\xcd\x8c\x24\xb1\xef\x0c\xf6\x74\x1a\xc8\xc3\xa9\x8e\x1c\x1c\x0d\xe4\x0d\x9c\x15\x7e\x2f\x5b\x8c\x4a\x58\x8f\x09\x71\x2f\x31\x92\x9f\x85\x65\x1a\xf3\x39\xb1\x50\xa0\x28\xe1\xd5\x01\x3e\x88\x33\x16\x92\x8e\x76\x62\x89\x20\x1c\x26\x16\xcb\x4b\xb1\x74\x62\xe6\x69\x66\x89\x49\xa8\xa8\x46\x58\xcd\x73\x24\xe4\x5f\x18\x72\xeb\x65\x8b\x77\x88\x62\x02\x63\xee\x4e\x12\x49\x70\xb4\x7b\x92\x2d\x92\x1a\x27\x24\x12\x7a\x79\xac\x23\xcd\x12\x69\x54\xce\x21\x85\x39\x6a\x42\x9a\x94\x47\xe2\x18\xfc\x80\x34\x8b\x0e\x13\xc6\x51\xc5\x93\x04\xd3\x7b\x56\x99\x4d\xb6\x23\x81\xa3\xd2\x7b\xcc\xc2\xc9\x16\x07\x15\x71\xb0\x86\x02\x8e\x5d\x94\xa2\xa8\x2e\x71\x2d\xef\xd5\x4c\x45\xef\x99\xbc\x21\xf3\x89\x78\xba\x60\x4e\x30\xf6\x80\x2c\x4c\x64\xb5\x0b\xca\xf4\xf7\x21\x64\xbe\xd9\xb2\x23\xb0\xea\xf2\xfe\x21\x19\x3b\x41\x2a\x93\x18\x97\x2c\xb9\xa0\xfe\x1b\x73\x8a\x34\xc5\xa0\x3f\xc1\x39\xf7\x13\x89\x4f\x8e\x3e\xfb\x20\x4d\xa4\xad\x72\x4d\x51\x7e\xb9\xbe\x7d\xbe\x5e\x37\x69\x52\x9a\x9a\xed\x76\x7b\xf9\xfc\xd3\x87\x34\x45\xb9\x6e\x5e\x6c\xef\x0e\xad\x21\xcf\xb6\xb7\xcb\x84\x0a\xe5\x18\xdd\xa0\x83\x0b\x11\x3b\xb2\xc3\x8e\xb1\x8b\xd4\xc3\x9a\x3b\x4d\x04\x3f\x18\x4a\x1a\x79\xdc\x11\xbc\xd0\xce\xea\x3d\xfa\xa0\xe7\x04\x17\x94\xc1\x18\xe6\x44\xe1\x90\xf5\x90\xec\x1f\x77\x94\x44\x7d\x2e\x1c\xac\xe2\x40\x8c\xec\x25\x38\x28\x37\x13\x8e\xd6\xf0\x4e\xbe\xb8\x2b\x48\x07\x9f\x58\x79\xae\xf2\x84\xfb\x3c\xa7\x9b\x72\x7d\xbb\x29\xb7\x97\x9b\xf2\xb3\x1c\x3f\x8f\xdd\xb9\xf2\xd6\xca\xff\xaf\x1f\xad\xbe\xfe\x66\xf5\xdd\xf6\xcf\x67\x5f\x3d\xfb\xeb\x2e\xd7\x50\xaf\x66\xc7\x67\x6b\xc8\x2b\xb1\x8a\xdc\x14\xe5\x87\xde\xe5\x45\x3e\x53\x7a\xf5\xf1\xe0\xec\x26\xc5\x7a\x7b\x71\x9f\x71\x5c\xe1\xfa\x3f\xaa\xad\xe6\x98\x1b\x2c\x7a\x9e\x44\xd6\x71\x36\xb0\xe5\xcf\x60\x19\x7a\x17\xc3\x48\xb2\xa9\xeb\xf5\x6d\xf1\xbf\xed\xc3\x8f\x77\x8c\x23\x79\x5e\x1c\x72\xb5\xaa\x1e\xb6\xab\xd5\x3d\x42\xf8\xc7\x3d\xab\x87\x99\xf6\xbf\x03\x00\x00\xff\xff\x65\x55\x73\x5e\x91\x05\x00\x00" + +func runtimeSyntaxHtml4YamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxHtml4Yaml, + "runtime/syntax/html4.yaml", + ) +} + +func runtimeSyntaxHtml4Yaml() (*asset, error) { + bytes, err := runtimeSyntaxHtml4YamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/html4.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxHtml5Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x54\x5d\x6f\xe4\x34\x14\x7d\x66\x7e\x45\x36\x20\x64\xb7\xcc\x14\x1e\xb6\x12\xd9\x6e\x47\x88\x8f\x57\x78\xe0\x05\xa5\xa9\xe4\xd8\x37\x89\x19\x7f\x64\xed\xeb\xd9\x1d\x38\xfc\x77\x94\x74\x86\x55\xd5\x62\x29\x56\xec\x7b\xe4\xfb\x75\xce\x1d\xac\x23\x3e\xcd\xd4\x54\x13\x7b\xf7\x76\xb3\x31\xc4\xa4\xb9\xa9\x36\x55\x55\x55\x8b\x35\x28\x4f\x4d\x55\x3f\x3c\xec\x26\xf6\xad\xeb\xf6\x6f\xbf\xaa\x57\xe3\x44\xca\x50\x6a\xaa\xfa\xee\xcd\x4f\xbf\xfe\xf8\xfb\x1f\xbf\xfd\xfc\xf4\xc6\x7d\xbd\xd9\xa4\xe2\x28\x37\x2b\x6c\x5b\x51\x4a\x71\xc5\xb5\x8f\x6f\xba\xdd\xd5\xfe\xbe\x3e\x1b\xf2\xc9\xf7\xd1\xed\x58\x8d\x4d\x55\x8b\xbd\x95\x77\xed\x4d\xb7\x17\x0a\x4a\xf4\x7d\x82\x31\x89\x72\x46\x22\x85\xc4\x56\x3b\x42\xb6\x86\x50\x8c\x8d\x12\x3d\x7a\xa1\x32\xc1\x08\x8b\x28\xe1\xa2\x3e\x7c\x28\x91\x09\x09\x85\x39\x06\x09\xad\x44\x38\xaa\x8c\x99\xed\x7a\xa4\xc0\x94\xa0\x2d\x13\x74\x14\x86\xe0\xe0\xc6\x14\xcb\x2c\x61\x84\x62\x05\xc5\xca\xd9\xcc\x30\x20\x07\x62\x65\x5d\xc6\x10\x60\x95\x8b\x23\x1c\x58\x82\x3c\xc8\xf7\x64\x30\x58\x72\x26\x13\x63\xb0\xa3\xd0\x6a\x75\x81\x92\x48\x62\x88\xc9\xc3\x0e\x49\x79\xc2\xd4\x7e\xb7\xbd\xed\x30\x25\x58\x58\x3f\xc2\x06\x31\x17\x46\x96\x38\xf4\x06\x07\x3a\x8d\x14\xe0\x54\x4f\x0e\x8e\x46\x0a\x06\xce\xc2\xd9\x70\x80\x57\xc2\x06\xcc\x48\x07\x09\x4f\xa1\xac\x9b\x65\xf2\xf0\xc4\x42\x81\x92\x44\x50\x47\x84\x98\x75\xb2\x33\x23\x8a\xfe\x4f\xd2\x0c\x87\x99\xc5\x9a\x15\xd6\xac\x0b\xcf\x85\x25\x66\xcc\x2a\x29\x8f\xd9\x6a\x2e\x89\x30\xaf\x5f\x1c\xd7\x02\x7f\x40\x12\x33\x18\xa5\x3f\x49\x64\x64\xe5\x67\x64\x12\x7a\x4d\xca\x91\x66\x89\xec\x95\x73\xc8\xb1\x24\x4d\xc8\xb3\x0a\xc8\x9c\x62\x18\x91\x8b\xe8\x31\xc3\x7b\x95\x4e\x12\x4c\x9f\x58\x2d\xfd\x62\xeb\x09\x9c\x94\x3e\xa0\xa0\x38\x1c\x55\xc2\xd1\x1a\x8a\xf8\xd8\x27\x29\xaa\xdd\x95\x7c\x95\x07\x3b\xfa\xc4\x14\x0c\x99\x67\x84\xe8\xa3\x39\xc1\xd8\x23\x16\x7e\x61\xe1\x9d\xa0\x24\xf7\x18\x62\x5c\x5a\xca\x96\x1d\x81\x55\xbf\xec\x67\x30\x26\x41\xca\xc8\x3d\xd2\x8a\x92\x2f\x7c\xce\x89\xe6\x14\xf5\x33\x3f\xe7\x5a\x66\x3e\x39\x7a\x19\xe4\x4c\xda\x2a\xd7\x54\xf5\xd7\xed\xe3\xbb\xb6\x6d\xf2\xac\x34\x35\x5d\xd7\x5d\xbd\x7b\x9e\x48\x53\xd5\x6d\xf3\xbe\xbb\x5c\x5a\x43\x81\xed\x60\x57\xad\x08\xe5\x18\xfd\xa8\xa3\x8b\x09\x13\xd9\x71\x62\x4c\x89\x06\x58\x73\x61\x42\x0c\xa3\xa1\xac\xb1\x08\x0f\x31\x08\xed\xac\x3e\x60\x88\xba\x64\xb8\xa8\x0c\x7c\x2c\x99\xe2\x71\xe1\x40\xb6\x7f\x5d\xfa\x91\xf4\x53\xe0\x60\x95\x46\x62\x2c\xaa\xc6\x51\xb9\x42\xf8\x68\x0d\x4f\xf2\xfd\x25\x20\x1d\x43\x66\x15\x78\x97\x39\xd9\xb0\x68\xef\xa1\x6e\x1f\x1f\xea\xee\xea\xa1\x7e\x81\x09\xc5\xf7\x4f\x91\xef\xad\xfc\xb2\xfd\x76\xfb\xfd\x0f\xdb\x5f\xba\xbf\x6f\xbf\xb9\xfd\xe7\x82\x35\x34\xa8\xe2\xf8\x49\xee\xcb\xca\xac\x12\x37\x55\x7d\xae\xdd\xb2\x28\x2c\x2d\xbd\xfb\x7c\xf1\x34\x21\xaa\xb6\xdb\xbc\x36\x0c\xee\x70\xff\x3f\xd1\xee\x4a\x5a\x0a\x2c\x06\x9e\x45\x96\x7b\x4c\x7c\xfe\x19\x2d\x43\x4f\x29\x7a\x92\xcd\xcd\x4d\xfb\x58\x7d\xd1\x5d\x7f\x7e\xc3\x7b\x0a\xbc\xce\xaa\xed\x76\x77\xbd\xdf\x6e\x5f\x21\xc2\x7f\x73\x6c\x77\xbd\xb4\xfd\xdf\x00\x00\x00\xff\xff\x14\x2c\xef\x1d\x1b\x05\x00\x00" + +func runtimeSyntaxHtml5YamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxHtml5Yaml, + "runtime/syntax/html5.yaml", + ) +} + +func runtimeSyntaxHtml5Yaml() (*asset, error) { + bytes, err := runtimeSyntaxHtml5YamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/html5.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxIniYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x90\x41\x8b\xd4\x30\x14\xc7\xef\xfd\x14\x21\x16\xa6\xed\xd2\x78\xcf\x32\x88\xa0\x82\x07\xd9\x8b\x87\x62\x5e\x06\x32\xed\xeb\x6e\x30\x4d\x42\xf2\x46\x51\xf2\xe1\xa5\x9d\x9d\x71\x50\xc1\xcb\xbe\xd3\xeb\xbf\xbf\xe4\xf7\x27\xb3\x75\x48\x3f\x22\x4a\x66\xbd\xad\xaa\x09\x09\x47\x92\xac\x62\x8c\xb1\xf5\x9f\x37\x0b\x4a\xc6\x01\x44\x63\xbd\x2d\x13\xe6\xaf\x14\x62\x71\xb3\x2b\xe1\x1b\xa6\x64\x27\x6c\xeb\xd2\x2c\x76\x41\x13\x63\x06\x10\xce\x66\x2a\xd1\xfa\x39\xa4\xb1\x64\xa4\x53\x04\x10\xe3\xfc\xd8\xd6\xe5\x3b\xe2\xf8\x64\xe8\xb5\xb8\x5b\xa3\xe0\xe7\x9a\x6f\xa2\x27\x34\x13\x26\xc9\xf8\x01\x40\xa9\xb7\xfd\x17\xd3\xff\xd4\x77\x00\xba\xe6\x55\x95\x4e\x0e\xb3\xdc\xb8\x9e\x8d\xc1\x67\x32\x9e\xc4\x31\x04\x27\x28\x9d\xce\xe5\x8e\xeb\x06\x70\xe4\xff\xc4\x66\xe3\xf2\x33\xb7\xad\x37\xa0\x9d\xd0\x93\x9d\xed\xd9\xae\x94\xcc\xd1\x8c\x28\xb5\xee\xd4\x61\xaf\xbb\xfd\x85\xcb\x11\x47\x6b\xdc\x9f\x10\x80\x12\xdd\xb9\xe7\x33\x47\x86\x70\x41\x4f\x92\x71\xb5\xbf\xd7\x7f\x15\xca\x94\xac\x7f\x5c\xcb\xf0\x06\x00\x40\x14\x75\x00\xae\xdb\x0e\x78\xd9\x5d\x93\x9d\x6e\xbb\x1d\xaf\xae\x87\x97\xed\xca\xed\x73\x9d\x4c\x26\xad\x86\x57\xfc\x1a\xa1\x9f\x24\xe3\xf5\xef\xe0\xe6\xd9\x2e\xd3\x33\x0a\x53\x90\x8c\x37\x9f\x1f\xde\x3d\x94\x61\x18\xca\x87\x8f\xc3\xa7\xf7\xad\x7c\xc3\xff\xa7\xba\x7f\x41\xd5\xaf\x00\x00\x00\xff\xff\x29\x32\xb2\x22\x74\x02\x00\x00" + +func runtimeSyntaxIniYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxIniYaml, + "runtime/syntax/ini.yaml", + ) +} + +func runtimeSyntaxIniYaml() (*asset, error) { + bytes, err := runtimeSyntaxIniYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/ini.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxInputrcYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\xcd\x4f\x6a\xf3\x30\x10\x05\xf0\x75\x74\x8a\x41\x5f\x20\x76\x4c\x74\x00\x6d\xb2\xf8\x8e\xe1\x71\x40\x51\xc6\x8d\x40\x19\x09\x69\x4c\x29\xd5\xe1\x4b\xfe\xb4\x0d\x34\xdb\x79\xbf\x37\x6f\x0e\x91\xe4\x23\x93\x85\xc0\x79\x91\xe2\x95\x3a\x91\x90\x17\x0b\x0a\x00\xe0\x9a\xb3\xbb\x90\x05\xfd\x00\x6b\xad\x54\x59\x22\x55\x7b\x03\x3b\xf0\x89\xab\x38\x16\x73\x4c\x29\x9a\xd9\xc5\x7a\xd5\x88\xc7\x2e\xcd\x73\xe3\xc4\xd4\x23\x1e\xf5\x4b\x2d\x65\x79\xe0\xc4\x4f\x28\x17\xca\x25\xf9\x7b\x52\x49\x1a\xe2\x3a\xb0\x8f\xcb\x89\x5e\xbd\xaa\x52\x02\xbf\x5d\xb5\xee\x10\x11\x4d\x1b\x0f\xa8\xa7\x7e\x8b\xba\x6d\x7e\x2e\x9b\xa9\xdf\x6e\xfe\x76\x33\xf9\xe0\xe2\xff\xb3\x2b\xb7\x39\x44\xb3\xff\x45\x97\x0b\xb1\x58\xd0\xdd\xa1\x8d\xa3\xad\xd9\x79\xb2\xd3\xd4\xff\xeb\xc6\xc3\xe7\x64\xb6\xfd\x7e\xfd\x6d\x03\x9f\x88\x65\xe7\xcf\xae\x98\xf7\x73\x10\xba\x63\xd0\x4f\xbd\xe1\x95\xb6\xa0\x57\x03\x0c\x0d\x86\xd5\xa0\xd5\x57\x00\x00\x00\xff\xff\x33\x3d\x95\x68\x90\x01\x00\x00" + +func runtimeSyntaxInputrcYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxInputrcYaml, + "runtime/syntax/inputrc.yaml", + ) +} + +func runtimeSyntaxInputrcYaml() (*asset, error) { + bytes, err := runtimeSyntaxInputrcYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/inputrc.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxJavaYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x92\xc1\x6e\xdb\x30\x0c\x86\xef\x79\x0a\xc3\x28\xd0\xad\x45\x93\x5d\x97\xeb\x1e\xa3\xea\x81\x96\xa9\x58\x8b\x4c\x09\x14\xe5\xcc\x03\x1f\x7e\x90\xbd\xac\x81\x5b\x60\x45\x75\x91\x41\x91\xff\xff\x91\xa6\xf3\x01\x65\x4e\x78\x6c\x7e\xc2\x04\xbb\x5d\x8f\x82\x56\x8e\xbb\xa6\x69\x9a\xfa\x46\x30\xe2\xb1\x69\x8d\xd9\xd7\xf7\xbb\x76\xb7\xe3\x12\x30\xaf\x09\x4f\xcd\x5a\xda\x1a\xd3\x7d\xe9\x62\x0c\x08\xa4\xdd\x2c\xa8\x76\x00\xd6\x3e\x96\x2e\xa0\xba\x10\x41\xd4\x93\x68\x88\x74\x52\xc2\x8b\xe6\x21\xb2\xa8\x0c\x3e\xab\x30\x50\xf6\x48\xa2\x53\xf4\xfd\x57\x63\xba\xf6\xaf\x76\x16\x10\x1c\x91\xe4\x6a\xc0\x08\x67\xb5\x90\x51\x2d\x88\x1d\xd4\x46\x12\x4f\x05\xb5\x47\x07\x25\x88\xf6\x51\x31\x64\x54\xe7\x09\x42\x98\xd5\x45\x56\xef\x94\x51\x0a\x93\xe6\x8b\xaf\x55\x32\x70\xbc\xa8\xf0\xac\x97\xc1\x07\xbc\x75\xbc\xe9\x06\xba\x2c\x0c\x56\xd4\x06\xc8\x59\xf1\x97\x20\xf5\x79\x55\x56\x3f\xa6\xb0\x90\xe5\xfa\x59\x5b\xf1\x94\x05\xc8\x62\x74\xb5\x51\x64\x07\x16\x95\x40\xfc\x84\x9a\xc0\x9e\xe1\x84\x9a\xd8\x4f\x20\xf5\x8e\x75\xc6\xd8\x6b\x2a\x5d\xf0\x56\x6b\xa3\xcb\xc5\xde\x8a\x4b\x9a\x4b\x42\xd6\x3c\x93\x1d\x38\x92\xff\x8d\xfd\x0a\x9d\x75\x8a\x01\x64\x03\x6d\xe3\xe2\x7d\x9d\x92\x70\x41\x75\x50\xc7\x40\x25\x84\xf7\x32\xf7\x54\xc6\x0e\x79\x2d\x78\xfe\xf6\xf4\xfd\xe5\x71\xc9\xda\xa6\x55\x20\x3a\xad\xbf\xba\x9e\x2c\xc0\x8b\x4d\xdb\xfe\x8b\x21\xf5\x9b\x48\x3e\xfb\xb4\x48\x1b\xb3\x7f\x8d\xde\x6c\xcd\xf5\xdc\x3a\x25\xb4\x1e\xc2\x8f\x01\xf8\xb5\xf4\xa3\x38\xf7\x5b\x9a\xfb\x4f\xc1\x24\xc6\xc4\xd1\x1e\x9b\x76\xbf\x7f\x6c\x3f\x47\x3a\x2e\xeb\xfa\x86\xf0\x70\xd8\x22\xde\x6d\x61\x9a\xe7\x97\xff\xcb\x18\xf3\xf0\x66\xf2\xe6\xe1\xf0\xae\xd6\x9f\x00\x00\x00\xff\xff\x38\x5c\x13\xf4\xd9\x03\x00\x00" + +func runtimeSyntaxJavaYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxJavaYaml, + "runtime/syntax/java.yaml", + ) +} + +func runtimeSyntaxJavaYaml() (*asset, error) { + bytes, err := runtimeSyntaxJavaYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/java.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxJavascriptYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x54\x51\x73\xe3\x34\x10\x7e\xef\xaf\xf0\xe5\x0a\xb5\x9d\x71\x5c\x1e\xe0\x68\x06\xf0\x14\x68\x9f\xa0\x30\x30\xbc\x20\xa9\x77\xb2\xbd\x4e\xd4\xca\xb2\x47\x5a\x27\x0d\x2c\xfc\x76\x46\xb6\x4b\x72\x6e\x2f\xf4\x01\x06\x3f\xc8\xf6\xce\xa7\xef\xfb\x56\xbb\xda\x4a\x69\xc0\x5d\x0b\xcb\xe0\x4e\x6e\xa4\x2b\xac\x6a\xf1\xe4\xa4\x04\x84\x02\x97\x27\x41\x10\x04\x1e\x61\x64\x0d\xcb\x60\x16\x72\xbe\xb8\x73\xa7\xc4\xf9\x02\x1c\xfb\xf4\xb3\x37\x9f\x8b\xec\x34\x9a\xf5\xb0\x35\xc8\x12\xec\x32\x98\xdd\xbe\x7e\xb5\x88\xd3\x10\xcc\x26\x98\x47\x99\x69\x4a\x08\x03\xf2\xa8\x13\xdb\x69\x70\x03\x69\x12\x14\x8d\x71\x28\x0d\x2e\x4c\x57\xe7\xfd\x46\xce\x73\x96\xcc\x45\x16\xb2\x4f\x92\x0b\xc1\xce\x93\x0b\x11\xd3\x39\x3b\x4f\xde\xf8\xf7\x83\x0f\xc8\xa4\xba\x4c\xae\xc5\x3c\x0a\x59\xf7\x8b\x60\xfa\x3b\x91\x91\x5f\xfd\x5f\x16\x65\x9c\xe7\xb3\x17\xd0\x7b\xe6\x39\xe7\x8b\x51\x62\x78\x3d\xfe\x7b\xee\x2b\xf8\xb1\x15\x6c\x9e\x88\x6c\x0c\x65\xac\xba\xf6\x62\x2f\x66\x7f\x4a\x31\x61\x50\x25\x18\x54\x95\xea\x37\xb3\xcb\xe4\x57\x99\xfc\xf6\x56\x8c\x1f\xe7\xc9\xc5\x5b\x11\x33\xb6\x74\xad\x2c\x60\x29\x44\xcc\x42\xf1\xb8\xd3\xed\xea\xbc\xd1\x8b\xdc\xca\xe2\x1e\xd0\x0d\x65\xf9\x9d\x38\xff\x23\x3a\x0a\x09\x89\xf3\xe8\x38\x84\x11\xe7\xe2\x38\xe4\x3f\x14\x6a\x5a\xb0\x12\x9b\xfe\x40\x92\x79\x1a\x7f\xf9\xc5\x57\xaf\xfe\xfc\x28\x5b\x7e\x4c\xfb\xdc\x51\x22\xd4\x60\x70\x38\xf1\x50\xba\x9d\x29\x48\x6e\xa5\x42\xca\x2d\xc8\x7b\x2a\xa4\x03\x2a\x24\x16\x6b\xea\x8b\xe4\x57\x54\xa6\x03\x2a\x21\xef\x56\x2b\xb0\x54\x42\x25\x3b\x8d\x54\x82\x06\x04\x2a\x1b\x02\xed\x80\xe0\xa1\x6d\x2c\x52\xa5\x8c\xd4\x7a\x17\x1d\xf4\xd2\x54\xb5\x6a\x2c\x55\x9d\x29\x50\x35\x86\x0a\x2d\x9d\x23\x78\x40\x30\xa5\xa3\x15\x20\xa9\x8a\x54\xdd\x73\x29\x43\xaa\x6f\x94\x02\x9a\x8a\x34\x20\x19\xd8\x92\x05\xec\xac\x21\x07\x78\x4c\xc4\x75\x2d\x58\x72\x5b\xe5\x53\xc1\xb5\x72\x84\x6b\xdb\x6c\x09\xed\x8e\xfc\x85\x6d\x2a\xda\x48\x4b\x9b\x46\x95\xb4\x5d\x2b\x0d\xb4\x55\xb8\xa6\x9d\x02\x5d\xee\x79\x5f\x07\x16\x1c\xd8\x0d\x94\x41\xde\x61\xd0\x19\xe9\x9c\x5a\x19\x28\x47\x55\xb0\xb6\x19\xdb\x37\x04\xd3\xd5\xde\xb9\xee\x6d\x38\x52\x06\xc1\x56\xb2\x00\x6a\x65\x71\x2f\x57\x40\xad\x55\x1b\x89\xfe\xdd\xf8\xf9\x00\x25\xb5\x5d\xae\x55\x11\x4d\xef\xc5\xc8\x68\x3a\xad\xa9\x33\x25\x54\xca\x40\x49\x37\xf2\x26\x7a\xe6\x8a\x8e\x60\xb4\x1d\x50\x25\xb5\x83\x43\xd0\x30\x9b\x7a\xc0\xa5\xb5\x72\x47\x5f\x37\x8d\x06\x69\xe8\x5b\x6f\xe4\xca\x74\xf5\xd0\x34\x74\xe5\x33\xa1\xeb\xc7\xb2\x7c\x2f\x71\xfd\x01\x9e\x9b\xfe\xce\xd2\x0f\xf9\x1d\x14\x48\x3f\xc1\xea\xea\xa1\xa5\x9f\xd1\x2a\xb3\x3a\x3c\xb8\xf7\x0c\xa6\xec\x36\x16\x21\xbb\x4d\x05\x85\x9c\x73\x9e\x46\x51\xcc\x6e\xfd\x97\x48\xd9\x4a\xd5\x22\x7e\x36\x2b\xce\xfb\xf1\xd5\x2f\xd9\xb0\x92\x8f\xbe\x37\xcc\xfa\x08\xcb\x2b\x63\xf1\x8c\xcf\x38\xcf\x7a\xda\x3d\x5f\x3d\x76\xc5\x87\x07\xeb\x74\x2a\xb9\x3e\x99\x61\xd2\xfa\xc7\xa1\xb4\xbd\xa1\xd9\xec\xef\x18\x98\x72\x12\x71\xf7\xaa\x1d\x5d\x2f\xf6\xd1\x83\xa1\xfd\xf8\x1c\x2a\xb5\x50\x28\xa9\xbf\x59\x4b\xbb\xdf\xfa\x52\x3b\x67\x53\x37\x67\xff\xa3\x99\x77\x53\x33\xef\xfe\x1d\xd9\xa1\x7a\x4f\xe4\xd2\x74\xaa\x77\x3a\xd5\x0b\x98\xf8\x67\x1a\xce\xe3\x27\x35\xe5\x71\xfa\x2c\xd7\x5f\x01\x00\x00\xff\xff\x05\x1c\xab\x64\xec\x07\x00\x00" + +func runtimeSyntaxJavascriptYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxJavascriptYaml, + "runtime/syntax/javascript.yaml", + ) +} + +func runtimeSyntaxJavascriptYaml() (*asset, error) { + bytes, err := runtimeSyntaxJavascriptYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/javascript.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxJsonYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x52\x3b\x6b\xf3\x30\x14\xdd\xfd\x2b\x84\x08\xf8\x85\xfc\xe5\x83\x42\x89\x16\x53\x4a\x33\x75\xe8\xd2\x49\x57\x01\xd9\xb9\x6e\xdc\x3a\x8a\x91\x64\x68\x89\xfb\xdf\x8b\x1c\xa7\xcd\xab\x90\xa5\x1a\x2c\xdf\x73\x74\x1e\x58\xae\xea\x06\xdd\x47\x8b\x9c\xbc\xda\x8d\x0e\x82\x25\x3a\x2c\x1d\x0f\x08\x21\xc4\x73\x5a\xad\x91\x13\x0a\x90\x79\x7e\x42\x07\x62\x85\x6a\x89\x86\x13\xba\x00\xd8\x4e\x68\x10\x98\xae\x41\xbb\x13\x31\x52\x6e\xb4\x75\x4a\xbb\x4c\x77\xeb\x62\x38\x06\x50\x08\x96\xca\x3c\x12\xff\xd9\x4c\x8a\x29\x9b\xc9\xa4\x9f\x8a\x29\xbb\xf5\xfb\xbb\x07\x14\xab\xee\xd8\x5c\xa6\x71\x24\xba\x67\x29\x9a\x47\x99\xf7\xfe\xe9\xa7\x3c\xce\x01\x0a\x7a\x85\xbd\x77\x4e\x01\xb2\x31\x62\xb7\xed\x67\xef\xfd\x80\x4f\xad\x14\x29\x93\xf9\x08\xe5\xa2\x9a\xfb\xb0\xab\xdd\xcf\x2d\x7e\x71\xd8\x49\x23\xdd\x35\x4d\x7c\xa1\xfe\x48\x3b\xd3\x61\x5f\xa9\xc6\xe2\xa5\x43\x99\x75\xa6\xd6\x2f\x9c\x0c\xb8\x5f\xd6\x29\x33\x68\x29\xfd\xc6\x50\x2f\x4f\x10\xfb\x56\xb7\x43\x00\x40\xf6\x83\x1e\xdc\xd2\x7e\x1d\x46\xb5\x58\xd6\xaa\xb9\x5f\x29\x73\x2c\x3d\xaf\x73\xd6\x26\x3c\x2d\x13\xfe\x41\x97\xb1\x8c\x75\xca\xe1\x1a\xc7\x2f\x08\x34\xf2\x34\xd0\x5e\x2c\x80\xca\x38\xf1\xef\x42\x70\xdb\xaa\x12\xb9\x94\x09\x07\x4a\x08\xd0\x30\x02\x08\x7b\xb1\x08\x65\x9c\x84\x47\xfc\xc5\x8b\x01\xe8\x0e\xfe\xca\xed\xcd\x67\xef\x31\x51\x54\xda\xb8\x10\xe8\x3f\x3f\x49\x1a\x7c\x05\x00\x00\xff\xff\x67\x47\xd8\x55\x3e\x03\x00\x00" + +func runtimeSyntaxJsonYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxJsonYaml, + "runtime/syntax/json.yaml", + ) +} + +func runtimeSyntaxJsonYaml() (*asset, error) { + bytes, err := runtimeSyntaxJsonYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/json.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxJuliaYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\xdd\x72\x9b\x30\x10\x85\xef\xfd\x14\x2a\x49\x6b\xb0\x07\x27\xb7\x61\xfa\xfb\x1a\x05\xe2\x11\x62\xb1\x37\x11\x2b\x57\x5a\x35\xe3\x76\xdb\x67\xef\x20\x27\x71\xed\xa4\x33\x1d\xae\x38\xe8\x7c\xbb\x7b\xb4\x0c\x68\x81\xf7\x3b\xa8\xd4\x5d\xb4\xa8\x67\xb3\x1e\x18\x0c\x57\x33\xa5\x94\x9a\x3e\x92\x1e\xa1\x52\x59\xd3\xac\xee\xec\x65\x96\xe4\x2d\xe8\x1e\x7c\xa5\xb2\xdb\x8b\x37\xab\xc5\x55\x0e\xf4\x5d\x2d\x8b\x4f\x09\x90\x2b\xb9\x2c\xb2\xd9\xcc\x47\x0b\xa1\x9a\xa5\xf3\x17\xaa\x8b\x68\xb9\x44\x52\xae\xbb\x03\xc3\x21\xc9\xa5\x32\x8e\x02\x6b\xe2\x55\xe7\x9c\x4d\x45\xba\x9c\x7d\x04\x19\xb4\x0d\x50\x34\x4d\x77\x28\x78\x82\xd0\xcc\x1e\xbb\xc8\x70\x4e\xa9\x54\xb6\x5e\xd7\x5f\xca\xaf\xba\xfc\x71\x5d\xde\xac\xdb\xe5\x7a\x7d\xf4\xf7\x30\x20\x21\xa3\xa3\x27\x1f\xf6\x40\x8c\x03\xa6\x51\x1e\x7d\xeb\xf6\x6f\xc0\xa2\xae\xab\xb0\xd3\x06\xaa\xb6\x5d\xd4\x79\x7b\xa4\xdd\xc3\xfe\xc1\xf9\xfe\x09\x15\x58\x33\x8c\x90\x7a\x98\x86\xe8\x60\x83\x24\x9d\x07\x7d\x2f\x46\xb3\xd9\x8a\x71\xc4\x48\xd3\x68\x91\xcc\xd4\x85\x80\x0d\x80\x83\x04\xf6\xd1\x70\x7a\x13\xa0\x5e\x06\x24\x6d\xed\x5e\x06\xe7\x65\x63\x5d\xa7\xad\x58\x67\xb4\x95\x34\xa6\xe0\x20\x48\xc6\xc6\x1e\x04\xc7\x9d\xf3\x2c\x31\x20\x6d\xc4\xc3\xb7\x88\x1e\x64\xd4\xc6\x3b\xd9\x79\x24\xb6\x24\x1e\x38\x7a\x12\xf6\x7b\x99\x2e\x59\x1e\xb6\x68\x41\x46\xd7\x47\x7b\x16\x6f\x0f\xc6\x79\xcd\xce\xbf\x4c\x67\x95\x98\x95\xca\x3e\x9f\x84\x7b\xf4\xba\x1d\x9c\x58\xc3\x7e\xec\x9c\x5d\x3d\xc9\x53\xba\xe5\x72\x71\x25\x1f\xde\xbe\xff\xf8\xee\xf7\x6d\x2b\x53\x44\x9a\x7a\x21\xc7\xe2\xbc\x60\x10\xa4\xd3\x76\x76\xda\x03\xf1\x16\x02\x9c\x41\x3b\xaf\xcd\x3d\x70\xa8\x54\x96\xd7\x79\xf1\xf3\xd7\x44\xab\xa5\x69\xda\xe2\xe8\xa6\x38\x76\xe0\x5f\x6c\xd9\x41\x3e\x5c\x51\x7d\x5d\xde\xb4\xcb\x54\xf3\xfc\x58\x60\x8f\xb4\x99\x8e\x65\x79\xd3\x34\xcd\x4a\xea\xdb\x26\x6b\x8b\x45\x93\xc9\xfc\x59\x99\xb7\xc5\x62\xfe\x4f\xf3\x63\x2b\x6a\xda\x0c\x9f\xb6\x22\x3d\xd9\xb3\x0e\xd4\xbf\xa2\x1e\xfe\x1a\x55\xb7\xff\xcd\x9d\xcf\xe7\xe7\xd0\x13\xe9\x15\xe2\x98\x16\xf5\x05\xe9\xe2\x9c\x73\xf9\x1a\xe5\x4f\x00\x00\x00\xff\xff\x44\x72\x62\x82\x30\x04\x00\x00" + +func runtimeSyntaxJuliaYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxJuliaYaml, + "runtime/syntax/julia.yaml", + ) +} + +func runtimeSyntaxJuliaYaml() (*asset, error) { + bytes, err := runtimeSyntaxJuliaYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/julia.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxKeymapYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x90\xd1\x6a\x33\x21\x10\x85\xef\x7d\x0a\x7f\x09\x24\xe1\x27\x4b\x6f\xbb\x50\x7a\xd1\x97\x28\xc4\x14\x66\x75\xd2\x2c\xeb\xa8\xe8\xa4\xb0\xe0\xc3\x97\x5d\x69\xbb\xdd\x50\xe8\x4d\xe7\x66\x64\xf4\x9c\xf3\x39\xe7\xde\x21\x8f\x11\x5b\x39\xe0\x48\x10\x85\xb0\xc8\x68\xb8\x15\x52\x4a\x39\xdd\x7a\x20\x6c\xa5\xd2\xba\xd9\x0d\x65\xc0\x71\xff\x48\x10\x37\xe5\x99\x82\x9d\x0e\x4a\x88\x74\x75\x98\xab\xe0\x20\x33\x03\x23\xa1\xe7\x59\xd3\xed\xc0\xda\x62\x1c\x42\x2a\x26\x50\x0c\x19\x27\x0f\x13\xec\xdc\x09\x62\x9e\x7a\x1e\xa9\x24\xa4\xf0\x86\x25\x73\xea\xfd\xeb\x5e\xeb\x4e\xfd\xe0\x68\x82\xe7\x14\x5c\x01\xc7\x25\x5f\xfa\x33\x2f\x1f\x9b\xe0\x33\x83\xe7\xc6\x5f\xa9\xc3\x54\x25\xc7\xbb\xc3\xfd\xe9\xff\xd2\x32\xa2\xe9\xc1\xb5\x52\x3d\xdc\x08\x2b\x40\xfd\xce\x54\x99\x21\xcd\xd1\x4a\x7d\xce\xd0\xdb\xd5\x24\x0f\x7d\x9c\xc3\xb4\x6e\xbe\xa6\x8b\xcd\x7c\xd4\x32\xa9\x52\x3c\x5d\x20\x7d\x97\xfe\x82\x66\xbb\x86\xd9\xfe\x21\x0b\xcd\xdb\xbf\x61\x78\xf9\xb7\x86\xd8\xac\xe3\xe4\xf1\x24\xc4\x7b\x00\x00\x00\xff\xff\x2a\x3b\x25\xf2\x64\x02\x00\x00" + +func runtimeSyntaxKeymapYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxKeymapYaml, + "runtime/syntax/keymap.yaml", + ) +} + +func runtimeSyntaxKeymapYaml() (*asset, error) { + bytes, err := runtimeSyntaxKeymapYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/keymap.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxKickstartYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x91\xe1\x6e\x9b\x30\x10\xc7\x3f\x97\xa7\xb0\x58\x26\x41\x90\xa3\x7d\x1d\xd2\xba\xf6\x35\x1a\x12\xe9\x30\x17\xb0\x30\x36\x3a\x1f\x49\xdb\xdd\xc3\x4f\x66\x45\x6b\xa5\x7c\xe1\xa4\xbb\xdf\x5f\xdc\xfd\x7c\xb1\x0e\xf9\x6d\xc6\x5a\x8d\xd6\x8c\x91\x81\x38\xcb\x3a\x64\x34\x5c\xab\x4c\x29\xa5\x12\xe1\x61\xc2\x5a\xe5\x4d\x73\x18\xe3\x4e\x52\xd9\xe0\x5d\x9e\x65\xb4\x38\x8c\xf5\x0a\x6b\x15\x67\x34\x16\x5c\xad\xf2\xef\x47\xd0\xef\xa7\x2a\xdf\x06\x0c\x8c\x13\x7a\xae\x55\x7e\x3e\x1e\xeb\x38\x83\xc1\xfa\x74\xda\x17\xd6\x47\x06\xe7\xc4\x74\x14\x26\x61\x7c\x65\xe9\x09\xe6\xc1\x1a\x70\x72\x0d\xae\xa7\xb0\xcc\xe2\x42\x7f\x0d\x4e\x08\xdb\x10\x58\xd8\x4e\xf8\x1e\x3c\x8a\x03\xdf\xcb\x88\x6f\x6d\x00\xea\x04\x16\x1e\x4c\xf0\x17\xdb\xcb\xc5\x52\xe4\x95\xa5\x10\x78\xbe\xc9\x12\x91\x52\x17\x6f\xe9\x67\x11\x9d\xf5\xcb\xab\x10\xce\x41\x66\x20\x5e\x3f\x96\x6d\xf0\x62\x1c\x02\xad\xbd\x94\x77\x01\x3a\xa4\x72\xbb\xc3\x84\xb4\xee\x7a\x86\xd6\x45\x32\x23\x93\x25\x0a\xe4\x6c\x64\x69\x21\xe2\x42\x4e\x16\x36\x65\xf1\x4b\x9a\xe6\xb1\xbc\x27\xa0\x69\x76\x05\xa1\x43\x88\x78\x45\x5a\x53\x40\x66\x28\x9b\xe6\x71\xc3\x5b\xb2\xfd\xc0\xad\x03\x33\x26\x63\x4f\xc7\x67\xfd\x92\x84\x7e\x54\x7d\xda\x7f\x25\x09\xbb\xc4\xe9\xa7\xa4\xfd\x59\xbf\xfc\xd0\x3f\xf7\xfa\xbf\xfe\x6d\x7c\x7f\x6a\xc2\xf4\xb1\x59\x71\x96\x4f\x8f\x53\x7e\x2b\x8e\xe7\x3f\xa7\xc3\xbe\xfc\xbd\xdb\x58\xeb\x3b\xf4\xac\xcd\x00\x74\xb8\x0d\x96\xf1\x1f\xac\xf2\x4f\xb9\xea\x1e\x5d\xab\xfc\xa1\x52\x95\xa8\xea\xa1\xca\xb3\xbf\x01\x00\x00\xff\xff\x96\xbc\x1a\x8d\x7a\x02\x00\x00" + +func runtimeSyntaxKickstartYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxKickstartYaml, + "runtime/syntax/kickstart.yaml", + ) +} + +func runtimeSyntaxKickstartYaml() (*asset, error) { + bytes, err := runtimeSyntaxKickstartYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/kickstart.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxKotlinYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x54\xef\x6f\xdb\x36\x10\xfd\xee\xbf\x82\x75\xf7\xc3\x4e\x17\xa7\x5f\xa7\xfd\xe8\x96\xa4\x05\x8a\xb5\xcb\x87\x64\x40\x80\x30\x03\x4e\xd4\xc9\xe6\x4c\x1d\x85\xe3\xc9\x89\xb1\xdb\xff\x3e\x50\x92\xbd\xc4\x73\x37\x60\x98\x01\x0b\x22\xef\xf8\xee\xde\xbb\x47\xd5\x3e\xa0\x6c\x5b\x2c\xcc\x3a\x4a\xf0\x34\x99\x54\x28\xe8\xa4\x98\x18\x63\x4c\x8e\x12\x34\x58\x98\xa9\xb5\x8b\xb5\x7c\x36\x9d\x4c\xb8\x0b\x98\x86\xb0\xe9\x9f\x2f\xcd\x55\x8b\x0c\x12\x39\xf5\xeb\x53\x93\xb6\x4d\x19\xc3\x22\x8e\xdb\x85\x99\xdd\x2d\x8a\x6f\xbe\x7a\x75\xa2\xdf\xbd\x78\x63\xed\xe7\xf7\xfa\xad\x7e\xaf\x67\x7a\xaa\x5f\xcc\x07\xa0\x3d\xd4\xb5\x80\x60\x83\x24\xc9\xfc\x84\xdb\x87\xc8\xd5\x1e\x74\x17\x29\x8c\x2d\x67\x90\xb4\xdc\xaa\x0b\x90\x92\xba\x48\x49\xb8\x73\x12\x59\x5d\x6c\x5a\x20\x1f\x49\xeb\x8e\xd4\x37\x6d\x64\x51\x4f\xea\xa9\xf6\x8f\xea\x49\x90\x6b\x70\xa8\x9e\x82\x27\x54\x9f\x34\x76\xa2\xbb\x4e\xb5\x05\xb7\x86\x25\x2a\xa3\x74\x4c\x9a\xba\xd4\x22\x55\x9a\xba\x16\x59\x65\xe5\x93\x3e\xac\x90\x74\x03\x41\x37\xc0\x73\x5b\x1e\x36\xb7\x68\x39\x83\x89\xc7\xd4\xf7\xb9\x44\xd1\x84\x72\x2c\xd3\x45\x12\x8e\xa1\x4f\x2b\x19\x61\x9d\x89\x88\xa7\x0e\x15\x43\x42\xad\xa2\xfa\x5a\x85\xb7\xea\x40\xdc\x4a\x6b\x4f\x10\xc2\x56\xeb\xc8\xfa\xb0\xf2\x01\x8f\x82\x66\x45\x06\x85\xca\x24\x0c\x4e\x14\x88\xa2\x80\x64\x4d\x2a\x10\x50\xa4\xae\x19\xc0\x32\x6f\xd2\x84\x10\xb0\x3a\x06\xd6\x60\x53\x22\xf7\x68\x71\x83\xcc\xbe\x42\x0d\x20\xe8\xc9\x67\x51\xfd\x51\x5a\xe0\x1c\x8e\x2d\xf4\x72\xe7\x3a\x2d\xfb\x0d\x08\x6a\xcb\x31\x9b\x0b\x2b\x6d\xbb\x32\x78\x77\x54\x40\x60\x68\x50\xc6\xba\x8e\x63\x4a\xe3\xb0\x28\x8e\x2f\x8c\xbe\xf6\x58\xe5\x11\x00\x2f\x77\x20\xa3\x83\xde\x3e\xb6\x8c\x29\xf9\x48\x06\xa8\x32\xd9\xdc\x3b\x0b\x0d\x46\xb7\xe5\xac\xda\x12\x34\xde\x69\x2c\x7f\x43\x27\x2a\x2b\x8e\x0f\x9a\xa3\x10\x3c\xa4\xfe\x2d\xd6\x73\x5b\x9a\xc9\x08\xfa\x11\x05\x8e\xc8\x23\x50\x18\xfb\xc3\xcc\x96\xf9\xa2\x68\x85\x01\x97\x99\x66\xed\x31\x54\x9a\x47\x3f\xba\x61\xab\x8c\x0e\xfd\x06\x39\x9b\x21\xff\x7b\x96\x3a\x3c\x33\x81\xb1\xce\x45\xb6\x32\x90\x8c\xb5\xdc\xb8\xec\x9b\x16\xee\x50\x6b\xc8\xd6\xa0\x2e\x84\xf9\x41\xce\x82\xba\x61\x5a\xb3\xbb\xd7\xa7\x5f\xdf\xbf\x9a\x4f\x9e\x5d\xab\xc8\xb0\x44\x73\x73\xa0\xc6\x22\x0d\x81\xbe\xc0\xf9\x56\x50\x2f\x56\xc0\x7a\x19\xbb\x32\xa0\xbe\x0b\x11\x44\xdf\x93\xe8\x87\x48\x4b\xbd\x5e\xe5\xcb\x74\x1e\x63\x40\x20\xfd\x25\x9b\xe0\xe7\x28\x2b\x4f\x87\x23\xb8\x88\x21\xa0\xcb\x8e\x7b\x56\xcb\xfd\xb5\xdd\xd7\xfb\x91\x19\xb6\x7b\xf2\x7d\x97\xec\x69\x79\xc8\x2b\xf5\xbb\xc5\xee\x43\x91\x07\xc0\x59\x91\xe9\x7e\x07\xa9\x7a\xb6\x4e\x6b\xdf\x16\xc6\xda\xc5\x7e\xe7\xe9\x47\x6b\xfc\x3d\xad\xd0\xa2\xf3\x10\x32\xf5\xc2\xcc\xac\x7d\xad\xd6\x5a\xab\xd6\x8a\x5a\x4b\x6a\x2d\xab\xb5\x53\xb5\xf6\xcb\xf9\xa7\x20\x3a\xf2\x2e\x56\x59\x47\xdb\xd9\xdf\xef\xee\x8a\xc7\xca\x2f\xbd\x14\xf7\xf7\xaf\xfe\xd8\x0d\xf7\x7a\x85\x25\xd0\xd2\x7c\xf0\x84\x7b\x92\x4d\x6f\xa5\x34\x84\x0a\xf3\xeb\xec\xe5\x8b\xf9\xe2\xe4\xa9\x9a\x39\xdd\x5c\x0c\x89\x07\xc7\xf2\x6d\x28\xcc\xf4\xec\x6c\x71\x32\x7d\x7a\xe4\x3c\x44\xb7\xfe\xc4\x99\x32\xc7\xfe\xa6\xe6\xf4\xcc\xda\x93\x03\x45\xa7\xd6\x9e\x9c\x4d\xff\x59\x43\x89\x55\x2c\xcc\x74\x76\x73\x75\x79\xa5\xb7\xb7\xb7\xfa\xee\xfd\xed\xc7\xb7\xf3\xe2\xcd\xee\xdc\xd8\xd1\x65\x74\xff\xb5\xab\xff\xbd\xb1\xb1\xa5\x9b\x58\xc5\xc9\xbf\x25\xff\x19\x00\x00\xff\xff\xac\x74\xa1\x79\x20\x07\x00\x00" + +func runtimeSyntaxKotlinYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxKotlinYaml, + "runtime/syntax/kotlin.yaml", + ) +} + +func runtimeSyntaxKotlinYaml() (*asset, error) { + bytes, err := runtimeSyntaxKotlinYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/kotlin.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxLedgerYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x90\xd1\x4a\xc3\x30\x14\x86\xef\xfb\x14\x67\xc5\x8b\xa4\x23\x9b\x88\x37\x46\x46\xf1\x35\x6c\x32\x49\xd3\xb3\x51\x68\xd3\x92\x9c\x09\xd3\xb8\x67\x97\xac\x8e\x75\x20\x78\xe1\x5d\x7e\xfe\x7c\xdf\xe1\x9c\x5d\xdb\x21\x1d\x47\x94\xd0\x61\xb3\x47\x9f\x65\x0d\x12\x5a\x92\x90\x01\x00\xa4\xda\x99\x1e\x25\xe4\x6c\x1b\x95\x5a\xc5\x35\x67\xd3\xcf\xd8\x35\x7b\x1f\x6b\x34\xce\x0e\x07\x47\xb1\x76\x96\xf8\x5d\x9e\x65\xfe\xd0\x61\x90\x67\x5c\x40\x18\xd1\xb6\xa6\x93\x90\x6f\x59\x75\x2f\x9e\xf4\xe7\xe3\x17\x5b\x47\xc1\xa7\xf0\x70\x1b\x62\xb5\x39\x69\x0e\xab\x22\xff\xc1\xed\xe0\x02\x19\x47\x89\xff\x1b\xbf\x50\x81\x0c\x61\x8f\x13\x76\x9a\xe9\xda\x06\x1d\xb5\xbb\x16\xfd\xea\xdd\xf8\xd4\x6e\x7e\x6d\xcf\xe3\x2a\x19\x46\x63\x51\x6a\xbd\x64\x8b\x79\xe2\xa5\x52\xac\xac\x5e\xc4\xab\x11\x1f\xa0\x97\x4c\x5e\xdf\xbc\x50\x8a\x97\xff\x32\xbe\x29\x25\x66\xd2\x29\xde\x7a\xc3\xb1\xaf\x87\x74\xd4\xaa\x58\xe8\xeb\xad\xfa\xcb\xce\x33\x77\xf1\x9c\x16\xfc\x0e\x00\x00\xff\xff\x6c\xff\x51\x0c\xe7\x01\x00\x00" + +func runtimeSyntaxLedgerYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxLedgerYaml, + "runtime/syntax/ledger.yaml", + ) +} + +func runtimeSyntaxLedgerYaml() (*asset, error) { + bytes, err := runtimeSyntaxLedgerYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/ledger.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxLfeYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x90\xed\x6e\x82\x30\x14\x86\x7f\xcb\x55\x9c\x34\x26\x82\x4d\x99\x7f\xed\xd4\x65\xd9\x5d\x8c\x53\xb7\x02\x87\x49\x06\x85\x94\x92\xe9\xd2\x8b\x5f\x00\xdd\x97\xfe\x7a\xfb\xf1\x9c\x27\x6f\x4e\x51\x56\xe4\x4e\x2d\x49\xa8\x0a\x0a\x82\x9c\x1c\x65\x4e\x42\x00\x00\x30\xfc\x19\x5d\x93\x04\x56\x15\x34\xf7\x88\xf1\x90\x2c\x08\x6c\x5f\x51\x27\x47\x48\x40\x77\xaa\xd3\xa6\x8a\x53\xab\xb3\x77\x72\x9d\x04\x86\x18\x7a\xc4\x88\x9d\x81\xc9\xcf\x72\x2a\x7a\xe3\x73\x2a\x4a\x43\xa2\x3b\x19\xa7\x8f\xe7\xdb\x10\xb5\xce\x6c\x33\x1e\x9a\xbc\xaf\xc8\xd3\xb1\x6d\xac\xbb\x28\xb2\xc6\x74\x4e\x1b\x37\xca\x21\x79\x14\xcf\x5a\x7c\xaa\x73\xae\xc4\xfa\x45\x28\x8e\x08\xec\x6f\xa5\xa6\x25\xab\x5d\x63\xa7\x4a\x61\x82\x28\xf8\xf2\x6e\xb3\x53\x7e\xb3\xf5\xbb\x6d\xe4\x17\xff\xfd\xb1\xe9\xeb\x94\xa6\x81\x34\x59\x89\xf5\xa0\x4d\xaf\xa8\xce\xd9\xd2\xbc\x8d\x14\xb2\x10\x11\x31\xf6\xc9\x1e\x99\x8a\x96\xc3\xcb\x77\x8d\x96\xb2\x52\x57\x12\x58\xb2\xf0\xaf\xea\x46\x6d\x44\xa1\xf8\xb5\x7e\x9a\x7b\x3a\xe8\xa9\x09\x62\xfc\xf0\x03\xd5\x35\x8d\x8b\x08\xf7\x3e\x49\x64\xd7\xea\x8c\xa4\x52\xd1\x7d\xbc\xbc\x30\xa5\xc9\xc9\x38\x91\x1d\xb4\x8d\x3f\x0e\xa5\xa3\x09\x02\xf6\x8b\xe7\xf3\x1b\xb4\x04\x36\xe3\xc0\x3d\xf0\x19\x67\xc1\x57\x00\x00\x00\xff\xff\x83\x15\xa2\x2c\x1c\x02\x00\x00" + +func runtimeSyntaxLfeYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxLfeYaml, + "runtime/syntax/lfe.yaml", + ) +} + +func runtimeSyntaxLfeYaml() (*asset, error) { + bytes, err := runtimeSyntaxLfeYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/lfe.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxLilypondYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x57\x71\x4f\x1c\xb9\x0e\xff\x9f\x4f\xb1\x0f\xb5\x7a\xf0\xde\x03\xa9\x7d\x55\x55\xa1\xd3\x21\x16\x5a\x7a\x6a\xa1\xa8\xa0\xfe\x71\xcc\x36\xf2\x64\xbc\x33\x11\x99\x64\xea\x64\x80\xa5\xe9\x77\x3f\x39\xd9\x65\x33\xb3\x7b\xba\x95\x0c\xf1\xcf\x9e\xc4\xb1\x1d\x3b\x99\x2b\x8d\x7e\xd1\xe1\xd1\x44\x2b\xbd\xe8\xac\xa9\x76\x76\x2a\xf4\x28\xfd\xd1\xce\x64\x32\x99\xb0\xdc\x40\x8b\x47\x93\xdd\xa2\x38\xd4\x8b\x17\xa1\x28\x0e\xd5\xf2\xbf\xd6\x8b\x17\xbb\x3b\x3b\xd4\x6b\x74\x49\xfd\x60\x22\xad\x71\x1e\x8c\x3f\x34\x7d\x5b\x22\xc5\xef\xaa\xff\xee\x2e\xa5\xaa\x42\xe3\xd5\x5c\x2d\x05\xe5\x9e\xf3\x30\x9f\x07\xd7\x81\x54\xa6\x0e\x4e\xd5\x06\x7c\x4f\x18\xc8\xf6\x5e\x19\x0c\xc6\x7a\x74\xa1\x01\x53\x69\xa4\x20\x2d\x11\x4a\x8f\x55\x28\x11\x5a\x17\x80\x3a\xac\x6b\x65\x5d\xf8\x66\xb5\x07\x81\xa6\x26\xb8\x47\x0a\xdf\xac\x92\x18\xbe\x21\x79\x25\x41\x0b\xd0\xaa\x36\x99\x14\x18\x36\x20\xb4\xaa\xe3\x72\x9b\xa2\xe5\x04\x4b\xee\x3a\x5a\x79\xf3\x80\x70\xb7\x56\xbd\xe9\x3b\x8d\x3e\xe3\x49\x69\x2d\x5c\x07\xc6\x20\x65\xb0\x6a\x95\xa9\x85\x27\x30\x4e\x83\xb7\x11\x41\xf1\xbc\x55\xd1\x21\xcd\x2d\xb5\xb8\x21\xc8\xa6\x18\x6a\xe5\x22\x7c\xf4\x5b\xd6\x64\x34\xe3\xda\xce\xe6\x13\x40\x29\xbc\x42\x31\xb7\x5a\xdb\x87\x4c\x0f\x4a\x11\xe3\x21\xdc\xa2\x2d\xad\x1e\x4a\x38\x12\xa2\x41\xa8\xdc\x00\x4f\x8e\xba\x81\x32\xf9\xe8\x7a\xe1\x3c\xb6\x3c\x0d\x79\x51\xa1\x56\xad\xf2\xb9\x65\xd7\x2c\xcd\x38\x30\x4f\x20\x52\xaa\xfc\x1d\x3c\x0a\xde\xf5\x56\x0b\x13\xba\xde\x63\xe2\xa5\xd5\x1a\xa5\x67\xff\x0f\x35\xcf\xc9\xf6\x5d\x58\x9a\xbc\xf4\x5e\x49\x1c\xde\xb9\xa5\x52\x55\x99\x7a\x07\x46\x94\x40\xc2\xf9\xbe\xdc\x02\x0f\x91\x55\x42\x0e\x60\x39\x5c\x5f\xf7\x94\x1b\xca\x6c\x26\x04\xd7\x08\xc2\x0e\x21\x0b\xe0\x35\x76\x40\x10\xb7\xa1\x95\x41\x51\xb3\xf5\x99\x58\x92\xea\xbc\xa0\x3c\x96\x4b\x6c\xcc\x4b\xab\xfb\x36\x77\xa6\xb4\x84\xe1\x6b\xb3\xf0\x4d\xab\xe4\x86\x78\x25\x48\x8e\xfa\x8a\x2e\x9b\x31\x72\xec\x60\xe5\x94\xcd\xbf\x49\xc6\xfb\x3c\x4b\x97\x18\xc8\x3b\x63\x1f\x34\x56\x75\x26\xbb\xe2\x54\x9f\x93\x6d\x85\x41\x55\x37\xa5\xcd\xdc\x71\xa5\xbc\x6c\xb0\x12\x3e\x1e\xad\x21\x2c\xdc\x8f\x9e\x9d\x95\xa1\x60\x38\xcd\x2b\xd0\x99\x7f\x73\x74\xab\xea\x28\xbd\xa2\x28\xed\xf7\xaa\x21\x70\xec\x74\x37\x88\xd1\x15\x7a\xea\xa5\x54\x29\xf3\x57\xdc\xf2\x13\x24\x89\xc6\x6f\x44\xf0\x8a\x8f\x83\xb4\x6d\xc9\xe1\xcb\x51\x34\xbe\x41\xa7\x5c\x0e\x76\x48\x1b\x91\xf8\xd2\xfb\xae\xf7\xa2\x23\xdb\x21\xf9\x45\x26\xf0\x1e\xee\x61\xb3\x04\x7c\x31\x98\x4c\xba\xec\xb5\x4e\xa6\x5e\xf2\x09\x76\xe3\x7c\x8c\xe8\xda\x5f\x91\xe5\x8a\x3f\xd2\x18\x9d\xfc\x67\x2c\x65\xe4\x00\xbf\x84\x16\x8b\x22\x0e\x3f\x22\x54\xe1\x12\x1f\xc4\x5c\x99\x1a\x69\xb0\xf0\x45\xaf\xbd\x12\x2d\x82\xe3\x0c\xa0\x41\x72\x5d\xa8\x4a\x09\x69\x8d\x27\xab\xc5\xbc\x37\xd2\x73\x8e\xad\xad\xbc\x40\x4f\xd6\xd8\x16\x45\x0b\x94\xd5\xe4\x0b\x34\xae\x27\xd0\x5b\x2a\xfb\x4a\x94\x7c\xb1\xe2\x92\x8f\x2e\x06\x93\x7c\x5e\x90\x92\x2e\xfd\xcb\xd6\x4c\xfc\x5a\x6b\xb5\x42\x49\x20\xef\xf2\x46\xf0\x99\x13\x9c\x46\x8e\xf9\x0c\xca\x39\x7c\x12\xf7\xaa\xa4\x3c\x4e\x9f\x14\xde\x83\xd9\x62\x6f\x12\x24\x6b\xd3\x38\xd9\xfa\x09\x17\x99\x51\xcc\xad\x3f\x41\xec\x38\x9f\xef\x51\x78\x5b\xa3\x6f\xf2\x85\xfe\x30\xce\x53\xdf\x72\x76\xba\x87\x78\x80\xb6\x89\x86\x91\xff\xb8\xe8\x1a\xcc\xb2\xf0\x9c\x6c\x29\xba\x1f\x39\x80\xb5\x25\x05\xe6\x86\xdb\x5b\xac\x31\xca\x2e\x8d\xde\x2e\x4b\x9b\x38\x27\x30\xd5\xf3\x50\x6e\x49\xcb\x04\x8f\x58\xee\xfa\x63\x0c\x7a\x6f\xc7\x02\x6d\x4b\xd0\xe1\x5c\x2b\xe7\xc0\x54\x59\x35\xfe\x40\xe8\x4b\x0b\x54\x0d\xa1\x29\x43\x2e\x7c\x48\xb5\x3f\x06\x2e\x75\x83\xb5\x96\xb5\x3e\x76\xc0\x0c\x61\x4f\xaa\xa7\x1c\xda\x4c\xf2\x35\x34\x3e\xd1\x1f\x54\xdd\x13\x56\xa2\x04\xe7\x44\x67\x9d\xf2\x83\x32\x3a\x10\x8f\xd1\x29\x38\x17\xde\x3f\x7a\x34\x55\x1e\xe2\xf7\x9d\x72\xd8\x66\xd7\xa0\xb3\x85\x81\x96\x73\x79\x39\xc8\x12\x67\x85\x8c\x75\xc7\xf5\xf0\x8c\xfa\x36\xf6\x7e\xb7\x05\xcb\xe7\xa3\xbe\x4d\x71\xe7\x51\x0a\xed\x99\xed\x4b\x1d\x95\xb6\x16\xc5\x33\xeb\xdd\x80\xdb\xf0\xd1\x19\xde\x9b\x5e\xeb\x70\x86\x73\xe8\xb5\x8f\x0d\x77\x78\xac\x4e\x7b\xe7\xad\xcb\x79\x14\x52\xe3\x7c\x80\x24\xbb\x4e\x97\xe5\xc4\xf3\x79\xcd\x2c\x3f\xb5\x46\xf6\xc4\x95\x58\x34\xa0\xa8\x53\x99\x01\xa7\x9b\xfd\xed\x54\xf7\x8e\xaf\x34\x1b\x15\xf7\x74\xb8\x6c\x63\x89\x1b\x17\xb6\x56\xdb\x31\x3c\x3c\x65\x11\xe3\xa2\xe9\x78\xa8\x28\x39\x6f\x4a\x08\xbe\x89\xed\x67\x10\x90\x69\x4c\xcc\x51\x94\xa6\x68\xaa\x9c\x83\x36\xdb\xe0\x74\x70\x38\x22\xb7\xa5\x6f\x4f\x81\x36\x2e\x62\xd3\xfc\x82\x73\xf2\xa8\xdc\xf8\xea\x71\xb2\x79\xf8\x4e\x36\xae\x40\x27\x52\xc6\x7b\x7f\xde\x81\xe3\xc5\x63\xbf\x28\xca\xd5\xcb\xc0\x79\xf0\xc8\x25\xe8\x68\xb2\x7b\x7b\x20\xbe\xcf\x8e\x8b\xa2\x28\x6e\x0f\x4e\x0e\xfe\x84\x83\x27\x31\x7b\x7e\x42\x74\x84\x1d\x59\xb9\x7c\x3f\xec\xed\xd5\xca\x29\x17\x6a\x26\x74\x18\xff\x86\x3a\xcc\x23\x3a\x67\x8a\xe8\x9c\x29\x60\x44\x91\x29\xa2\xc8\x14\xaa\x88\x56\x4c\x11\xad\x98\x82\x8c\xa8\x64\x8a\xa8\x64\x0a\x65\x44\x4b\xa6\x88\x96\x4c\x01\x22\x0a\x4c\x11\x05\xa6\xfd\xdb\xff\xfd\x7b\xf6\x9f\xdb\xe3\x7f\xcd\x8e\xf7\x83\x0b\x14\xbe\x86\x1f\xfb\x7b\xaf\x5e\xbf\x0b\x6f\xdf\x84\xff\xbf\x0e\xaf\xde\x86\x77\xe1\x4d\x78\x1d\x5e\x05\xde\x6a\x49\x78\x8f\x71\xa4\xad\xa9\x21\x8e\x5a\x78\x54\x2d\xec\x1f\xef\xdd\x7e\x2f\xe2\xef\x61\x16\x44\x28\x8a\x72\xff\xd9\x6d\x1d\x4a\x05\x9a\x9d\xb6\xb7\xff\xf3\xd7\x6f\xbf\xcf\x42\x51\xdc\x86\xa2\x98\xed\x8e\x1f\x64\xce\x73\x1d\x4a\xef\x34\xfe\xc5\x3b\x3a\xbb\x71\x77\xf7\x19\x43\x53\x8d\x10\x77\xa7\xba\xe8\xeb\xa2\x38\x5c\xa3\xd9\x93\x6f\xf5\xcb\x57\x4a\x46\x9d\x36\x40\xc3\x4f\x59\xa7\x8d\x41\xde\xb0\xe2\x65\x51\xfc\x1c\xdb\xf1\xb2\x28\x7e\x8d\xd7\x9c\xdc\xce\xfe\x71\xaa\xf1\x3c\x2f\xb6\x4d\xb2\xf3\x57\x00\x00\x00\xff\xff\x94\x50\x40\x16\xfb\x0e\x00\x00" + +func runtimeSyntaxLilypondYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxLilypondYaml, + "runtime/syntax/lilypond.yaml", + ) +} + +func runtimeSyntaxLilypondYaml() (*asset, error) { + bytes, err := runtimeSyntaxLilypondYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/lilypond.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxLispYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x90\x5d\x8b\xe3\x20\x14\x86\xaf\x9b\x5f\x21\x52\x68\x52\x31\xdb\xdb\xba\xfd\x60\xd9\xbf\xb0\x57\x9b\x63\x07\x63\x4f\xa7\x82\x5a\x89\x96\xa1\xc5\x1f\x3f\x24\xe9\x17\xcc\xcc\x95\xe0\xfb\x3c\xef\xd1\x73\x30\x16\xd3\x25\xa0\x20\xd6\xc4\x50\x14\x7b\x4c\xa8\x93\x20\x05\x21\x84\xf4\xa1\x57\x0e\x05\xa1\x25\x3a\xa5\x63\xbe\x1a\x8b\xd5\x34\x03\xd4\x25\xda\x6c\xcd\x36\x86\x1c\xb5\xcb\x31\x56\x53\x5a\x14\xdd\xd9\x62\x14\x83\xcb\xc9\x1e\x0f\xea\x6c\x93\x20\x14\xa0\x6c\x14\xbf\x72\xc9\xe8\x2d\x8b\x17\xd7\x9e\xec\x18\x95\x0d\x00\x67\xf3\x5f\xab\x8d\xcc\xab\x75\xde\xac\xab\x3c\xbb\x73\xfa\xe4\x63\x52\x3e\xd5\xfe\xec\x5a\xec\x06\xa1\x6d\x16\x7c\x29\x59\xbb\x79\x94\x05\xd4\x46\x8d\x6d\xad\x37\x16\xa0\xbd\x47\xa1\xc3\xd0\x9d\xf4\xcd\x4b\xff\xe4\xd3\x7a\x54\xc7\xd4\x19\xff\x3e\x20\x40\x4b\x00\x80\x3a\x37\x3b\xa0\xb2\x9a\xf7\x37\x5f\xf9\x71\xdc\xdf\xa3\xea\xdf\x33\x6b\xfe\xf0\xff\x8a\x5f\xe5\xed\x5c\xf0\xe5\xdb\xcb\x47\x7f\xb0\x86\x29\xdb\x27\xe4\x1c\xfa\x7e\x53\xe5\x2e\x37\x8d\x88\x41\x69\x14\x52\x56\xbf\xeb\xf9\x9d\x31\x7e\x8f\x3e\x71\x7d\x54\x5d\xfd\x71\x34\x09\x47\x88\xd0\x17\x9e\x4d\xbf\xa1\x05\xa1\x13\x46\x58\x26\x6c\xc2\x68\xf1\x19\x00\x00\xff\xff\x43\x3b\x48\x95\xf0\x01\x00\x00" + +func runtimeSyntaxLispYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxLispYaml, + "runtime/syntax/lisp.yaml", + ) +} + +func runtimeSyntaxLispYaml() (*asset, error) { + bytes, err := runtimeSyntaxLispYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/lisp.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxLuaYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x56\x6f\x6f\x14\x37\x13\x7f\x9f\x4f\xe1\xe7\x20\x22\x01\x2e\xf0\xc0\x8b\xb6\x27\x42\x55\xd1\x50\xf1\x02\xa2\xb6\x08\x55\xca\x5e\x91\x77\x77\x76\xd7\x8d\xd7\x76\xc6\xe3\xdc\xa5\x0c\xfd\xec\xd5\x78\xef\x92\x4b\xca\xd2\x86\x20\x38\x25\xfe\x33\xb6\x67\x7e\x33\x9e\xf9\x79\x1b\x63\x81\xce\x02\xcc\x94\x4d\x7a\x6b\xab\x06\x82\x8a\x66\x5b\x4a\x29\x25\x4b\x4e\xf7\x30\x53\x93\xa2\xd8\xb3\x49\xdf\x9e\x6c\x6d\x61\xb2\x10\x87\xf5\xa9\x8a\xa4\x09\x7a\x70\x94\xb7\x94\x3b\xb5\x67\x70\x35\x2f\x3a\x63\x81\x11\x02\x68\xe2\xe4\xc8\x58\x36\x0d\x83\x8d\x60\x1a\xa6\x0e\x5c\x1e\x73\xe3\x91\x8d\xe3\x26\xb9\x8a\x8c\x77\x6c\x7d\xa5\x2d\x23\x50\x42\xb7\x5b\x14\xe5\x64\xc4\x8a\xf3\xc4\xda\xd5\xec\xf1\x63\xbb\x6a\x28\x53\xcb\x91\xd0\xb8\x96\x7b\x4d\x1d\x93\x2e\x2d\xb0\xf1\x5c\x79\xf4\x89\x8c\x03\xf6\x91\x13\x35\xdf\x72\x69\xe8\xf1\x23\xd1\x56\x14\x7b\x63\x0a\xdf\x1e\xbc\x7a\xc3\x6f\x7f\xe2\xb7\x6f\x0e\x7e\xf9\xf5\xc5\xe1\x2b\xd6\x31\x02\x12\x57\xde\x5a\xa8\xa8\xd5\x58\xea\x16\xb8\xf6\x12\x37\x06\x44\x8f\xdc\x02\x35\xe0\x4e\xa5\xef\x81\xf4\x0a\x41\xd0\x06\x23\x5b\xaf\xeb\xdc\xe4\xfd\xbd\xaf\x93\x05\x76\xb0\x24\x1e\xd6\x43\xa5\xad\xe5\x80\xc6\x11\xa3\x5e\xc0\x49\x92\xe8\xe8\x45\x0b\x79\x6e\xc1\x49\x17\x65\x06\x27\xc9\x20\x70\x04\x01\xc2\x71\x65\x34\x6e\x1a\x25\xef\x52\x5f\x02\x32\xf9\x55\x4c\xe4\xd6\x39\xb9\xa0\xab\x63\x5e\x66\x63\xbb\x45\x11\xef\x16\xc5\xce\x3a\x02\xa6\x06\x47\xa6\x31\x80\x33\x35\x31\xbe\x28\xf6\x24\x0e\x95\xf5\x72\x79\x36\xc5\x8e\x8d\x0b\x89\xd8\x1a\x07\x91\x7d\x00\xc7\x3e\x91\x48\x42\x9e\x20\xe8\x9a\xa9\x0f\xd9\xc1\x6c\x6e\x81\x86\x60\xf3\xd6\x2e\x99\x90\x5b\x5a\x19\xd1\x65\x64\x5d\xf9\xc8\x3a\x1a\xc7\x9a\xb4\x7b\x94\x5b\xae\xc0\x58\xae\x7c\xec\xa4\xe1\x1a\x5a\x86\x65\xe0\xc6\x7a\x8f\xdc\xf4\xbe\xe6\x06\x45\xd0\xa5\x16\xd8\xd6\x32\xb4\xbe\xfd\xff\x43\x69\xb9\xd7\x4b\xf9\x37\x8e\xa0\x05\xe4\xde\x38\xf9\x3f\x9f\xfa\xba\xe1\x60\x38\xf8\x05\xa3\xae\x19\xb5\xab\x7d\xbf\xea\x22\x40\xcd\xd1\xb8\x8e\xe3\x09\x12\x0b\x12\xf2\xeb\x93\x43\x24\x2d\x8d\x3a\xe6\xe3\x45\xec\xaa\x63\xae\x35\x01\xd7\xa6\x69\xc8\xf4\xc0\xb0\x84\x2a\x91\xf4\x86\x24\x51\xe4\xea\x10\x7a\x7f\x2a\x25\x24\xf5\x27\x17\x99\x6b\x03\x38\x1f\xa0\x3e\x88\x78\xd4\x9a\xdc\xa8\x6e\x61\x6d\xd2\xbb\xc6\xb4\x5c\x05\x29\x01\x49\x37\x18\xb2\xce\x9a\x92\xb3\x2c\x20\xe4\x54\x8c\x00\x92\x70\x11\x34\x56\x1d\x60\x5c\x8d\x64\xcf\xa8\xa9\x21\x95\x56\x96\xca\x33\x02\xae\x3a\x8d\x5c\xa7\x3e\x70\x63\x5c\x2d\x35\xde\x6b\xe2\xb6\xd7\x54\x75\xdc\xc6\x54\xb2\x24\xae\xf5\x0b\x89\x78\x16\xe6\x04\x94\x26\x9a\x3f\x33\x6b\x30\xc2\x29\x60\x04\x96\xdd\xab\x04\x4d\x21\x00\x8e\xc2\xc8\x29\x7e\xe1\x6f\xa5\x89\x8d\xcb\xc5\xd9\xeb\xa5\xe3\x1c\xcb\xac\x66\x15\xd7\xe8\x91\x56\x9a\x47\x75\x0a\x2f\xac\x55\x8a\x4f\xd2\x04\x4d\x04\xe8\xb8\xf2\x35\xc4\xdc\x06\x49\x82\xec\x92\x6f\x9a\x08\xe3\x29\x70\xce\x39\x6b\x9d\x08\x92\x05\x26\x9e\x19\xb0\x75\x2e\x51\x84\x98\x7a\x60\x4c\xce\x49\x7d\x0a\xff\xa4\xc8\x0b\xd4\x81\xf3\xa6\x51\xdd\x99\xea\x56\x7a\x07\xda\xdb\xe0\x9d\xce\xfb\x63\xe9\x8d\x6b\xbc\xf4\x03\xcb\x5e\x22\xa4\x16\x08\xa1\x35\x91\xf0\x4c\xc6\x29\x9c\x6a\x9b\xb2\x38\x45\xc0\x61\xb2\x41\x2a\x59\xe3\x3a\x27\x2f\xb3\x4c\xbc\x38\x1d\x37\x4f\x13\xea\x0a\xca\xe1\x22\xb3\xc4\xd4\xeb\xd1\x1f\xde\xb8\x51\xcf\x32\x2f\xaf\x29\x01\x63\x67\x1a\xe2\x52\xb8\xbf\x94\x47\xa0\xf4\xc8\x25\x41\x24\x2e\x97\x1e\x19\x96\x62\x46\xe8\x30\x58\x5d\x01\x5b\xf4\x42\xe1\x6c\x87\x73\xb8\x9a\x0e\x6a\x46\x4d\x16\xc5\xec\x2a\xcb\x0d\xfc\x96\xd9\x2c\x02\x64\xdf\x4f\xcb\xd4\x0c\x6c\xc6\x5f\x2f\xed\x05\x67\x04\xdb\xb0\xc6\x76\x73\x53\xe5\x5d\x24\x7d\xfe\x70\x35\x5a\x5e\x5b\x67\x2c\x13\x26\x18\x7b\x33\x77\x86\x07\xbc\x19\x9e\xee\xe1\x41\x31\xae\xb2\xa9\x86\x5d\xde\x3e\xe1\xed\xff\xf1\xf6\xcf\xbc\x8d\xbc\xbd\xfc\x90\xad\xbd\xe1\x79\x59\x99\x3c\x7a\x38\xfd\x6e\x7e\xef\x92\xa9\xb3\xbe\xf4\x76\xaf\x44\x5d\x1d\x03\xc5\x99\x9a\x1c\xed\xec\xbe\x7b\x5f\x14\x47\x45\x31\x9f\x5f\xde\x35\xa0\xb9\xcb\x0f\x1e\xf0\x03\xde\xe6\xa2\xb8\xc7\x53\x2e\x8a\xdf\xf9\x29\x3f\xdd\xe7\x27\xfc\x64\x9f\xff\xda\xe7\x7d\x3e\x2a\x8a\xbd\xf9\xbb\x47\xf7\x1f\xbf\xe7\x5b\xbb\x93\xad\xab\x88\x06\x72\x1a\xbe\x55\xe4\x17\x49\x63\x8e\xc9\x64\x72\x2e\x03\x57\x5f\x91\xc4\x63\x13\xb2\x17\xe7\x9f\x02\xf2\xdb\xf8\xec\x59\xff\x36\x2d\x05\xa8\x8c\xb6\xcf\x3a\x8d\x17\x47\xff\x2b\x9c\x3b\x57\xd1\xdc\xf9\x8a\x60\xf2\x7d\x1c\xfd\x23\x3e\xc5\xbc\x28\xe6\x37\x03\x70\x4b\xc5\x14\x82\x47\x52\x8d\xc1\x48\xaa\x81\x85\xb2\xe0\x5a\xea\xa2\xf2\x8d\x9a\x58\xef\x5a\xb5\x4e\x8f\x89\x82\x65\xb0\xa6\x32\x64\xcf\xb6\x6e\x9d\x8b\x95\x6c\x02\x54\xd4\x69\x27\x0d\xa9\x85\xb1\x56\xb5\xe6\x14\x54\xce\x72\x15\x7c\x34\x64\x4e\x21\x5e\xc7\xe3\xfd\x0f\xbb\xbc\x7f\x63\x9f\xaf\x01\x61\x0c\xc3\x97\x05\x31\x8a\xe2\x0b\xc3\xd8\xbf\x37\x0a\x44\x96\x3e\x0b\x94\xd5\xda\x4a\x7e\xf4\x70\xfa\xcd\xfc\xa2\x61\x91\x2d\x85\xc6\xf4\xb4\xf9\x61\xfa\x7c\xbe\x31\xcc\x6b\x47\xba\x84\xc6\x61\x9c\xf3\x8e\x4c\xab\x2c\x7c\x36\xcd\xdd\xcb\x75\x37\xc8\x76\x37\xdd\xef\x85\x6e\xf7\x4a\xf9\x0e\xfc\x90\xf3\xd3\xfc\xf7\xc9\x35\x48\xbe\xf6\xc2\x9e\xaf\x0f\x7f\x3c\xe4\x57\x87\xaf\x0f\xf8\xf9\x8b\xdf\x5e\x1e\xec\xce\xbe\xbf\x54\x81\x97\x6a\xed\xbe\x8a\xba\x07\xa5\xa3\x5a\x18\xea\x54\x9f\x2c\x19\x79\xf1\xd4\x70\x45\xf1\xba\xd8\x3f\xbd\x9a\x3e\x8a\xfe\x9a\x20\x6e\x50\x4f\x9f\x15\xc6\x4d\x2a\xea\xf3\x02\xb9\x61\x4d\xfd\x4b\x6a\x51\x67\xa2\xea\x74\x54\xe4\x55\xeb\x95\x6e\x08\x50\x65\x54\x6b\x8c\xca\x5f\x15\xd4\x1e\xa2\x72\x9e\xd4\xc2\xe3\xf1\x15\x8f\x66\x6a\xc4\x99\xab\x1e\xdc\xbe\x01\xee\xbf\x03\x00\x00\xff\xff\xd6\x9d\x54\x28\xfd\x10\x00\x00" + +func runtimeSyntaxLuaYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxLuaYaml, + "runtime/syntax/lua.yaml", + ) +} + +func runtimeSyntaxLuaYaml() (*asset, error) { + bytes, err := runtimeSyntaxLuaYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/lua.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxMailYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x90\xcf\x4b\xc3\x30\x14\xc7\xef\xfd\x2b\x42\xd9\x61\x3f\x58\xbd\x07\xd9\x26\x82\x28\x78\x10\xa6\xa7\xbe\x0e\xb2\xe4\xcd\x45\x92\xb4\x24\xaf\x82\xd0\x3f\x5e\xd2\xae\x71\x6e\x1e\xcc\xa1\xf4\xfd\xfa\xbe\xcf\xfb\x1e\xb4\x41\xfa\x6a\x90\x33\x2b\xb4\xc9\x32\x85\x84\x92\x78\xc6\x18\x63\xb1\xe6\x84\x45\xce\xf2\x69\x31\xbf\xb1\x2d\xd1\xb2\x98\x77\x00\x05\x5a\x33\x9b\xe4\x7d\xd3\x11\x85\x42\xcf\x59\xbe\x7b\xf0\xb5\x65\xc5\x9c\x01\xa8\x05\x4f\x9f\x3e\xcc\xb3\xcc\xb7\x06\xc3\xa0\xbb\x64\xc3\xc6\x34\x92\x9f\xd2\x5a\xa1\x23\x7d\xd0\x83\x5e\xb9\x2b\x79\x68\x84\x44\x5e\x55\x0b\x3e\xf6\x34\x1e\x1b\x5f\xcb\xd8\xf0\xac\x03\x2d\xa7\x4f\xaa\xbb\xf3\xf2\xa8\x3f\xb1\xdb\xb6\xfb\x20\xbd\xde\x63\xf7\xe6\x42\xfa\x7f\xa9\x03\x75\x8f\x68\x9a\x59\x12\x91\xb5\x0b\x24\x1c\x45\x95\xe9\x6b\xdd\x45\x8e\xeb\x6a\x11\xc8\x6b\xf7\x3e\x40\xc7\x17\x48\xf8\x7e\x66\xdb\xee\x3f\xa2\x4d\x23\x7a\x7c\xe8\x14\x67\xf9\xe4\x27\x31\x5c\xcc\x52\x7c\x29\xde\xa0\xd4\xc2\xdc\x1f\x45\xbc\x16\x00\xa0\x18\x01\x02\x09\x42\x8b\x3d\xdf\xed\xba\xdc\x6d\xce\x8c\xd8\xfc\xb2\x65\xb5\x1e\x67\x14\x1e\x44\x6b\xe8\x0f\x58\x00\x07\xe0\x2e\x41\xcf\xd1\x4f\xa4\x65\x95\x0c\xb0\xfd\xf6\x6b\xad\xd5\x7f\x2e\x2e\xab\xec\x3b\x00\x00\xff\xff\xb9\x78\x17\xdc\x57\x02\x00\x00" + +func runtimeSyntaxMailYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxMailYaml, + "runtime/syntax/mail.yaml", + ) +} + +func runtimeSyntaxMailYaml() (*asset, error) { + bytes, err := runtimeSyntaxMailYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/mail.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxMakefileYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x53\xd1\x6e\xdb\x3a\x0c\x7d\xbe\xfe\x0a\x5f\xd7\x6d\xed\xfa\x36\xf7\xdd\x68\x96\x01\x1b\xf6\xb6\x2f\x30\x1d\x40\xb1\xa8\x46\xab\x2c\x79\x94\x92\xb6\x18\xfb\xef\x83\x94\xac\x6d\xb2\x76\xc8\xcb\x04\xc3\xa6\x68\x9d\xa3\xa3\x43\x4a\x69\x83\xe1\x71\xc2\x36\x1f\xc5\x1d\xc6\x59\x96\x49\x0c\x38\x84\x36\xcb\xf3\x3c\x8f\x19\x2b\x46\x6c\xf3\xa2\xea\xbe\x8e\xfd\x7e\x11\x03\xcc\x46\xb1\xb8\xab\xcb\x22\x2d\x5b\xa3\x90\x48\x6d\x5e\x2c\xcf\xfe\x9d\x5d\xfd\x5f\xa1\xdd\xe6\x4d\xbd\xe8\x56\xb7\xfd\x22\x12\x57\x39\x97\x75\x91\x65\xb4\x31\xe8\x77\xcc\xd7\xf9\x44\x38\x91\x1b\xda\xbc\x00\xb8\xa9\xb4\xc2\xef\xac\x95\x44\xc5\x5a\xd9\x14\xdb\x38\x41\xe3\x91\xd1\x4a\xad\x6a\x80\x0f\xc5\x1e\xeb\x83\x08\x38\xa2\x0d\x71\xcf\x0a\x1f\x26\x47\x81\xb5\x1d\xcc\x46\x22\xbb\x2d\x12\x69\x89\x07\x80\xc7\x71\xe5\xcc\xcc\x4d\x48\x22\xb8\x24\xb5\x5b\xb6\xf3\x7f\xfa\xa6\x7d\x7f\x49\xd5\xcd\xff\x3b\xef\x19\xa0\x99\x33\xc0\x62\xce\xed\x9c\x2f\x2e\x18\x20\x3e\xf5\x5b\x5a\x00\x4a\x80\xaa\x12\x2b\x3f\x89\xb0\x66\x21\xe5\x44\xa8\xf4\x43\x8c\xfc\x46\xa5\xc8\x4a\x5e\x09\x9f\x6c\xe5\x41\x18\xc3\x52\x53\xdd\x75\xad\x9f\xc4\x80\x6d\xdf\xff\x81\x17\x89\x1c\x31\x6e\x85\x61\xa5\x4d\x40\xda\x7f\xae\xdd\x26\xb0\xd2\x56\xfa\x40\xda\xde\xb2\xd2\xe4\xc3\xbd\x23\x79\x22\xaf\x32\x62\xeb\x88\x95\x23\x14\xc3\x9a\xb5\x62\x6d\x95\xe3\x6f\x4e\x5b\x36\x62\x47\xc5\xd6\x05\xa9\x89\xdd\xa9\x62\x1d\xe9\x5b\x6d\x79\x12\xc1\x6f\x56\x3e\x30\xa1\x30\xc9\x15\xbf\x46\x63\xd8\xc7\x92\x45\xbd\x13\xef\x9c\x39\x91\x76\x2b\xcc\x06\xf9\x5e\x90\x8d\x27\xbd\xd7\x46\x0e\x82\x24\x27\x89\xf1\x65\xb4\x0f\x29\xf0\x6f\x11\x6a\x89\x36\x68\xa5\x77\xdd\x3a\x7b\xa9\xfe\xc1\x8f\xae\xaa\xcb\x67\xc8\xe0\xac\x0f\xc2\x86\xd9\xce\xdc\x5d\xfb\xc6\xe1\x83\xa0\x24\xac\x28\x9e\x73\x68\xe5\x51\xc6\xdf\xe9\x29\xa9\x07\x98\xbd\x64\x5f\xdd\x84\x5f\xe3\xf5\x4e\x13\x0e\x5a\x98\x4f\x6b\x41\x87\xd0\x13\xd4\x5c\x1e\x8b\xb9\xfc\x6b\x5a\x0e\x3c\x03\x28\x9b\x0a\xe0\x47\xb7\x7c\xca\xfb\x06\xe0\x89\x01\xaa\x6e\x59\xa7\x49\x5d\xbf\x87\xe9\x3e\x2e\x6f\xae\x16\xe7\xdc\xc4\x7b\x16\x0b\xbc\x4f\x34\xd7\x7d\xf7\xf9\x4b\x0f\xf0\x2e\x12\xa0\xe4\x24\x67\xf1\xe2\xcd\x98\x7a\xe5\x37\x4f\xce\x8e\x3d\x29\x8f\x4f\x9f\x77\x7d\x96\xfd\x0c\x00\x00\xff\xff\x85\xaa\x15\xc9\x0e\x05\x00\x00" + +func runtimeSyntaxMakefileYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxMakefileYaml, + "runtime/syntax/makefile.yaml", + ) +} + +func runtimeSyntaxMakefileYaml() (*asset, error) { + bytes, err := runtimeSyntaxMakefileYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/makefile.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxManYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x64\xcc\x3f\x6b\x84\x30\x18\x80\xf1\x3d\x9f\xe2\x25\x38\x34\x05\x85\x8e\xcd\x22\x88\x85\xba\x85\xe8\x66\x1c\xb4\xbe\xfe\x81\x68\x4b\x1a\xf1\x84\xf7\xc3\x1f\x77\x7a\x83\x38\x3f\x3f\x9e\x6e\xb4\xe8\xb7\x3f\x94\x30\xd5\x33\x63\x2d\x7a\xfc\xf1\x12\x18\x00\xc0\xa3\xcd\xf5\x84\x12\xb8\x31\x51\xf9\x11\x7e\x56\xb7\x38\xe0\x8c\xb9\xc5\xe2\xbf\x7c\x9a\x10\x7a\x87\x38\xef\xe4\x2d\xa7\x42\x7c\x47\xef\x01\x3f\x5a\xe3\xc6\x7e\xf0\x17\x41\xc6\x44\x85\x3a\x23\x87\xed\x41\x12\x1d\x53\x56\x2a\x5d\xc5\xe2\xb2\x6a\xec\x82\x17\x46\x4a\x89\x33\x5b\x87\xd1\xef\xce\x98\xae\x4c\x32\xa5\xab\x17\xd8\xd0\xda\xdf\xf5\x78\x34\x8e\xd2\x9c\x74\x4e\xfa\x8b\x54\x2a\x38\xbb\x07\x00\x00\xff\xff\x92\x65\x68\x09\x0f\x01\x00\x00" + +func runtimeSyntaxManYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxManYaml, + "runtime/syntax/man.yaml", + ) +} + +func runtimeSyntaxManYaml() (*asset, error) { + bytes, err := runtimeSyntaxManYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/man.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxMarkdownYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\x4f\x6f\x9c\x30\x10\xc5\xef\x7c\x8a\x29\xd9\x83\x31\x65\xd3\xaa\x52\xa5\x22\x6d\x7a\xa8\xaa\x9e\x7a\x69\x73\xf3\x18\x96\x80\xb3\x58\x0b\x86\xda\x46\xfd\x13\x67\x3f\x7b\x65\x60\x23\xd8\x44\x55\x0f\xbb\x88\x99\x79\xbf\x79\x3c\xf0\xbd\x6c\x84\xfd\xdd\x8b\x14\xda\x42\x1f\xab\xee\xa7\x0a\x82\x4a\x58\x51\xda\x34\x00\x00\xf0\x7d\x55\xb4\x22\x85\x10\x71\x4b\xda\xca\xb5\xc7\xf1\xa7\xdc\x59\x10\x6d\xc2\x20\xd0\x43\x23\xcc\x24\xb9\x82\xdb\xe2\xae\x11\x06\xc8\x17\x69\xeb\xe1\x0e\xc4\x2f\x2b\x94\x91\x9d\x8a\xc6\x7e\x02\xd3\xc2\x70\x4b\x19\xa4\x1c\xd1\xf9\xcb\x96\x86\xc1\xd8\xf6\x80\x1f\x43\x67\x85\x99\xa7\x8d\x2d\xac\x68\x85\xb2\x29\x40\x98\xdd\xac\x06\x3f\xb7\x7d\x5d\x18\x69\xd6\x60\x92\x39\xc6\x52\xd3\x17\xa5\x48\x39\x8f\x48\xce\x32\xe0\x2c\xcb\x39\xcd\x1d\x22\x9d\xee\x28\xa7\x88\x34\x5a\xc0\xbe\x5b\xdd\xa9\x03\x88\xff\x63\x2e\xa0\x23\xf5\x02\x7c\xc1\x36\x56\xcb\xa3\x48\x6c\xad\xbb\xe1\x50\xff\x13\x7d\x3a\x4d\x9c\x13\xa7\xa7\xd3\x02\x51\x77\x5a\xfe\xe9\x94\x2d\x1a\x18\xd3\x3e\xc7\xd3\x8b\x52\x16\x4d\x0a\x61\x46\x92\x24\x89\xdd\x6e\xb7\x8b\x5d\x9e\xe7\xf1\xec\x0a\x91\xc6\x11\xa2\xa1\x9b\x25\x4c\x14\x55\x23\xd5\x73\x0a\x84\xd9\xd5\xc3\xdb\xd7\xef\x1f\x57\x39\x37\xd2\xd8\xf3\xa8\xac\x84\xb2\xf2\x5e\x0a\x9d\x82\x1f\x5f\x78\xa7\xcc\x2f\x4b\x38\xb8\x75\xf5\x4d\xf2\x81\xc7\x88\x5b\x58\x20\x5b\x69\xca\x99\xd8\x6b\xd1\xeb\xae\x1c\x71\x04\x91\x10\xf6\xa9\xfc\xa6\xb9\x63\xb7\x96\xb3\xaf\x2d\x8f\x10\x23\x87\xb8\x7d\x78\xf7\xe8\x2e\xc2\x42\x4c\x10\x13\xb2\x59\x15\xa3\x95\x73\x75\x3c\x3b\x2f\x3b\x65\x6c\xe1\x3f\xa4\x10\x91\xb1\x8c\x7b\x53\x3c\x7c\xb1\x4b\x58\xc6\x19\x77\xf3\x1c\x45\xe4\x91\xff\x43\x24\x2c\x8b\xbc\x6e\xb9\x44\xb6\xc5\xe1\x29\xca\x41\x55\x42\xfb\x6c\xab\x14\xc2\x57\x13\x80\x8d\x04\xb2\x50\xbb\x85\x83\x25\x6a\xd0\xcd\x8b\xa0\xda\xda\xde\x7c\x4c\xaf\xaf\x59\x06\xd1\x0d\x8f\x67\xc9\xea\xfd\xef\xf7\xfb\xcd\xb3\xfa\x4c\x06\x7f\x8e\xb4\x7f\xb8\x7d\xf8\x54\x12\xaa\x5a\x17\xa6\x63\x0c\x8c\x07\x7f\x03\x00\x00\xff\xff\x34\x33\xd2\x49\x19\x04\x00\x00" + +func runtimeSyntaxMarkdownYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxMarkdownYaml, + "runtime/syntax/markdown.yaml", + ) +} + +func runtimeSyntaxMarkdownYaml() (*asset, error) { + bytes, err := runtimeSyntaxMarkdownYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/markdown.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxMicroYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x93\x31\x6f\xdb\x30\x10\x85\x77\xfd\x0a\x42\xc9\x20\xc1\x90\x91\x8e\x15\x10\x18\x41\x9b\x00\x1d\xda\x0c\xcd\x50\xa0\xcc\x70\xa2\x4e\x32\x61\x8a\x14\x8e\xa7\xc4\x46\xd9\xff\x5e\x50\x72\x63\xab\x6e\x6c\x6d\x3e\x7e\x8f\xf7\xee\xd1\xd7\x68\x83\xbc\xeb\xb1\x14\x9d\x56\xe4\x92\xa4\x46\x46\xc5\x65\x22\x84\x10\xf1\xd0\x42\x87\xa5\x48\xa5\x5c\x66\x23\x91\x5f\xa7\x49\x42\x83\x41\x3f\x31\x85\xf0\x0c\x8c\x1d\x5a\x1e\xb1\x2a\xf3\x3b\xcb\xb0\x0d\xca\x19\x47\x59\x61\xb4\xdd\xe4\xab\x5c\xca\x2a\x7d\x8f\x67\x20\xbe\x0d\x68\xeb\xdb\x03\x76\x25\xbe\xeb\xae\x37\x28\x9c\xc5\x78\x07\x92\xdf\xcb\x75\x8d\x96\x75\xa3\x91\xf6\xfa\x1a\x1b\x18\x0c\x07\x3b\x74\x15\x52\x78\xbb\x3e\x0c\xb6\x46\x8a\xda\x3a\x20\x91\xa3\xc0\xae\x76\xe3\xf9\xe0\x63\x39\x68\x1b\xef\x2a\xd4\x1a\x28\xa8\x81\xbc\x23\x29\xc7\x66\x93\x79\x29\x0b\xe5\xcc\xd0\xd9\xa0\x5b\xeb\x08\x43\xad\x5f\x74\x8d\x14\x18\xaa\x0a\x68\x66\x16\x7b\x20\x60\x3c\x72\xe7\x05\x3b\xb1\x41\xec\x45\xaa\x5c\x1c\x65\x9b\x0a\xc2\x16\xb7\x42\x19\x04\xfb\xde\x34\xbe\x47\xa5\xc1\x64\x9f\xd6\x40\xf3\xdc\x4e\xd0\x4c\x0d\x44\x68\x59\xca\x22\x5f\x45\xdb\x52\x16\x53\x08\x67\x65\xed\xc0\x8c\x71\xb8\x4c\xdb\xc6\xed\xa3\x79\x05\xb2\xda\xb6\xf9\xaf\x0f\xbf\xcf\x8a\x95\xeb\x62\xb6\x99\x94\xcb\x8a\x74\xbb\xe6\x0b\x1e\xfd\xae\xab\x9c\x89\x78\x56\x11\xa8\x0d\xb2\x0f\xae\x47\x02\x8e\xef\x01\x6d\x7e\x41\x7f\x28\x8c\x77\x28\x03\xde\x87\x0e\x14\xb9\xf0\x02\x74\x49\xad\x9c\xf5\x0c\x93\xdd\xac\x72\x7b\x23\x4c\x03\x86\x06\x8c\xc7\x71\xdc\xd5\xdb\x3f\x67\x8a\x3e\x26\x1f\x3c\x93\xb6\x6d\xc4\x07\x32\xf9\x6a\x02\xcf\xf6\xea\x09\x7b\x72\x2a\x4a\xfc\x1a\x2b\xb0\xed\x05\x41\x5c\xbb\x48\x6f\x70\xf7\xea\xa8\x9e\xd3\x7f\x9d\x2f\x27\x6f\x7b\x49\x58\x87\xbb\x70\xb3\xcd\x17\x3f\x6f\x8a\x8f\xcf\x8b\xf1\x77\xbe\xb8\x24\xbb\xd9\x46\x5c\x40\xd1\x88\xbb\xe2\xe1\x79\xce\x8f\xcf\x39\xad\x72\xfc\xc6\x65\x2c\x45\x7a\x95\xbe\x95\xd0\xd6\xa5\x48\xaf\x0f\x85\xa3\xed\x9f\xbe\x42\xc4\xcd\x2a\x45\x9a\x3d\x7c\xf9\xf1\xf5\x3e\x3c\x3d\x7e\x7e\x0c\xdf\x1e\x9f\xee\xf3\x72\x75\xe2\x6c\x4a\xf6\xb4\xa3\x4c\xff\x6d\x79\x5c\xf1\x1b\xdd\x8f\xd3\x48\xb9\x3c\xe3\x64\xde\xe9\xf0\x9e\x73\xe9\xff\x72\xba\x1a\x33\xba\x2b\x1e\x62\x4e\xcf\x8b\x34\xf9\x13\x00\x00\xff\xff\x39\xf1\xae\x51\x1a\x05\x00\x00" + +func runtimeSyntaxMicroYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxMicroYaml, + "runtime/syntax/micro.yaml", + ) +} + +func runtimeSyntaxMicroYaml() (*asset, error) { + bytes, err := runtimeSyntaxMicroYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/micro.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxMpdconfYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x8f\x41\x8e\xdc\x20\x10\x45\xd7\xe3\x53\x20\x32\x52\x1b\x5b\xe3\x03\xb0\xc9\x41\x5c\xb6\x85\xa1\xc6\x8d\x62\x03\x82\x42\x51\x6b\x2a\x77\x8f\xdc\x49\x27\x1d\x29\xb3\x04\xde\x7f\xff\xf3\xee\x77\xa4\x5b\x42\x2d\x8e\xe4\x9a\xc6\x21\xa1\x25\x2d\x1a\x21\x84\x38\xdf\x82\x39\x50\x0b\x79\x24\x07\x30\xd8\x18\xde\x5f\x65\xd3\xe4\xba\x63\xd1\x77\xe6\x4d\x14\x32\x84\x07\x06\xd2\x42\x02\xac\x6d\x2d\x98\x79\xcb\xb1\x26\x5e\x7d\x70\x0b\xc5\xc5\x38\x97\xb1\x14\xbe\xc6\x42\x9c\x62\x26\x4e\x7b\xdd\x7c\xe0\xd3\xce\x67\xbd\x02\x58\xe5\x27\xc2\xf6\xa8\xc5\x5b\x4e\xbb\xb9\xed\xbe\x90\x5a\x9c\xcf\x68\x29\xe6\x1b\xb7\x6e\xe5\x3d\x6e\x7c\x8f\x70\xf2\x8e\x0b\x79\xfb\x0d\xb3\x5a\xce\xf1\xff\x58\x13\x5a\x6f\x76\x2d\xe4\xdc\xfa\x90\x2a\xb1\xa9\xce\xc7\x25\x56\x3a\x0f\x0e\x6d\x74\x98\xd5\x38\xea\x92\x8c\x45\x3d\x4d\x1d\xc0\x07\x03\xfc\x78\x18\x6c\x0c\x85\x4c\xa0\xa1\x50\xf6\x61\x3b\xd7\xc9\x16\x00\x60\xe0\x71\x06\x39\xa9\x0e\x24\x5f\xfe\xdc\x5c\x26\xd5\x5d\xfe\x66\x8f\xdf\x3f\x6a\x67\x7e\xea\x50\x5f\xda\x71\xfe\x98\x86\x4e\x7d\x7d\x7d\xb0\x3e\x38\x0c\xf4\x66\xaf\x26\x0f\xdf\xaf\x9e\xf0\x17\x2c\xe4\x53\xae\xff\x1f\xad\x85\x7c\xe9\x45\xcf\xa2\x7f\xe9\x65\xf3\x33\x00\x00\xff\xff\x32\x59\x3a\x12\xda\x01\x00\x00" + +func runtimeSyntaxMpdconfYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxMpdconfYaml, + "runtime/syntax/mpdconf.yaml", + ) +} + +func runtimeSyntaxMpdconfYaml() (*asset, error) { + bytes, err := runtimeSyntaxMpdconfYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/mpdconf.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxNanorcYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x93\x5f\x6e\xe3\x38\x0c\xc6\xdf\x73\x0a\x23\xdb\x07\xbb\xbb\x9b\x03\x04\xd8\xcd\x41\xaa\x16\xd0\x1f\xda\x16\x22\x93\x2a\x45\xc5\xcd\x80\x87\x1f\xd8\x49\x3b\xe9\xb4\x53\xcc\x3c\x29\x91\x7f\x24\x3f\x91\x1f\xfb\x98\x40\xce\x19\xf6\x0d\x5a\x24\xf6\x9b\x4d\x00\x01\x2f\xfb\x66\xd3\x34\x4d\xb3\x7c\x46\x3b\xc1\xbe\xd9\x1a\xb3\x3b\x5c\x98\xbb\xed\x66\xc3\x35\x41\xd9\xaf\xcc\xbf\x4d\x80\xde\xd6\x24\xfb\x66\xdb\x1e\x62\xf7\xf4\xf0\xb0\x2f\xd9\x7a\xd8\x3f\x3e\xde\xb7\x6d\xc5\xee\x50\x40\x34\xa2\x4f\x35\x80\x96\x33\x8a\x7d\xd1\x78\xf0\x94\x88\xbb\xdd\xfd\xdd\xf6\x9a\xe6\xa2\xe3\x93\x1c\x4b\x78\xc5\x02\xd2\xdd\x5c\xff\xdd\xda\x2a\x14\x31\x00\x8a\x3a\xeb\x8f\x35\x5f\x8f\x10\x79\xfd\x35\x5b\x0e\x45\x1d\xa5\x20\xf0\x22\xea\xd8\xfa\x23\x48\x51\x6f\x0b\x14\xc0\x12\x25\x9e\x40\x3d\x61\x11\xf5\x55\xb4\x8f\x29\xe9\x18\x8b\x10\x9f\x13\x0d\x3a\x59\xf1\xe3\x5b\xd4\x44\x0c\x6b\x6d\x9d\xa8\x16\xd0\xa9\x26\x89\xae\xf6\x3d\xb0\x22\x79\xc2\x13\xb0\x28\x52\x4f\x29\xd1\xac\x48\x23\xa4\xac\x48\x08\x73\x8a\x08\x45\x91\x66\xb6\x59\x29\x03\x5b\x89\x38\x2c\x32\x33\x43\x01\x3e\x81\xe6\x8a\x5e\x3a\x63\xfe\xd7\xdf\x7a\xfa\x73\x8d\xfe\xe8\x92\xc5\xa3\x3e\x57\x12\x28\xc2\xca\xe0\x22\x86\x00\x09\x04\xae\x7f\x8e\x70\xce\x36\x28\xc3\x00\x2f\x59\xcb\x64\x59\x46\x9a\x40\xcb\x44\x24\xa3\x96\x0c\x29\x01\x6b\xa9\x25\x03\x06\x15\xeb\x4a\xfc\x06\xeb\x29\xb4\x56\x2b\x2a\x30\xe5\xc5\x06\x5a\x31\x90\x9e\x22\xcc\x3a\x8f\x51\xae\xbd\x98\x89\x83\xa3\x8a\xa1\x74\xc6\xb8\xd7\x49\x66\x86\xcc\xe4\xbf\x1e\xe6\xcf\x8e\x18\xc1\x06\xe0\xdb\x34\xeb\x68\x2c\xca\xce\x11\xa5\x9d\x70\x7d\xb5\xc7\x92\xe4\xd7\x60\x6f\x53\x79\x23\x2f\xcd\xbb\x61\xe3\x62\x98\xd8\x47\xe0\x4f\xe5\xc5\xee\x62\xcc\x77\x97\x8e\xe3\x30\x4a\x77\x68\xd7\x97\xab\x4b\xd6\x1f\x95\x21\xa8\x4b\x15\x74\x60\x00\xd4\x33\xac\x73\x9f\xec\x00\x28\x56\xfd\xd9\x62\x77\x68\xff\xf9\xd3\x90\xee\x70\xa3\xb5\x64\xf0\xd1\xa6\x2f\x85\x1a\xe3\xd4\x18\xd7\x16\xb1\x2c\x0a\x18\xba\xff\x3e\xb4\xa5\x08\x47\x1c\x96\x25\xde\xb6\xc6\x18\xb3\xd3\x87\x27\xb3\x7d\xec\xee\xcd\xf6\x07\x3b\x4d\x80\xcb\x0e\xbf\x2b\xf3\xd7\xcd\x7e\x5e\x91\xdd\xa5\x1b\x1f\xc8\x0b\xfa\x3d\x00\x00\xff\xff\xa1\x3c\x8d\x21\x51\x04\x00\x00" + +func runtimeSyntaxNanorcYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxNanorcYaml, + "runtime/syntax/nanorc.yaml", + ) +} + +func runtimeSyntaxNanorcYaml() (*asset, error) { + bytes, err := runtimeSyntaxNanorcYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/nanorc.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxNginxYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x58\xdd\x8e\xeb\x28\x12\xbe\x9e\x7e\x0a\x2b\xdb\xd2\xe9\x1f\x75\x6b\xa5\x9d\x9b\xcd\x5c\xac\xf6\x35\xb6\x93\x83\x08\x94\x63\x26\x18\x38\x14\x4e\xc7\x7d\x78\xf8\x55\x01\xb6\xb1\x3b\x91\x92\x54\x7d\xc5\x6f\xfd\xdb\xad\xd2\x10\x46\x07\xfb\xc6\x9c\x95\xb9\x3d\x3c\x48\x08\x20\xc2\xbe\x79\x68\x9a\xa6\x21\xa9\xe1\x3d\xec\x9b\x5d\x12\xbf\xbf\x1c\x0e\xef\xc2\x9a\xf6\x31\x1e\x0e\xef\x09\x7a\xdc\xa5\x91\x1d\x70\x09\x7e\xdf\xec\x7e\x3e\x21\xf8\x2b\xf8\x38\x38\x0c\x1e\x78\xff\xfc\xc1\xdf\xbe\x9a\xe3\xcb\xe1\xf0\xfb\x71\xf7\xf0\xe0\x07\x0d\xb8\x4f\x73\xde\x1a\xe7\xc1\x79\x2b\xf6\xcd\xee\x70\x38\x3d\xc1\x15\x4c\xc0\x58\xe6\x77\x21\xb8\xa8\xad\xe0\x41\x59\x53\xad\xf6\xb1\x47\xc7\x05\xec\x8f\x69\xc9\x5d\x59\x09\x03\x0f\xd0\x83\x09\xfb\x66\xf7\xf4\x33\x2e\xa3\x7e\xff\x75\x7c\x7e\xe2\x42\x00\x22\xd3\xf6\x1c\xb9\x94\x8c\xb7\x01\x3c\x3b\x59\x39\x26\xf6\x04\xad\xf5\xb0\xf0\xf9\x2e\x44\x2a\xda\x9b\x91\x7e\x30\x72\x65\x23\xd7\x8a\x63\xe4\x5a\xdb\xcf\xc8\x8d\x50\x60\x02\x3b\x79\xfb\x89\x34\x7c\xcd\xb3\x2b\xd7\x03\x44\x3e\x84\x8e\x9d\x38\x2a\x51\x91\x6c\xa0\x01\xa4\x5c\x02\xad\x32\x12\x6e\x0b\xc5\xe0\xc6\x45\x60\xa8\xbe\x2a\x31\x23\x4d\xe8\xa0\x7a\x88\x27\x0f\xfc\x12\x45\xc7\x3d\x42\x98\xfe\x59\xcf\xdd\x4c\xe7\x03\x8b\x6e\x30\x17\x90\x2c\x78\x6e\xb0\x05\xcf\xc0\x08\x2b\x95\x39\x47\xa1\xf3\x49\xad\x1c\xd9\x69\x68\x49\x96\x76\xab\x71\x65\xd2\x01\x99\x35\x7a\xdc\x0a\x50\x99\xb3\x86\x32\x75\x25\x0c\xd0\x3b\xe6\x78\xe8\xd6\xa8\xea\xc1\x0e\x61\xc2\xb2\x7e\xef\xed\x5c\x24\x9b\xf1\x3d\xbf\xe5\x75\xf2\x50\x6b\x0c\x88\x64\x18\x67\xad\x2e\xa0\x07\x1e\x80\xb5\x83\xd6\xcc\x0d\x21\x1f\x41\x72\xe8\xad\x89\x92\x5f\x59\x76\x80\x44\xf6\x10\x3a\x2b\x31\x4a\x68\xf9\xa0\xb3\xb2\xa2\x04\x33\x46\xa9\x7c\x5a\x78\x26\x18\xd7\xea\x6c\xc8\xab\xa2\x54\xc8\x4f\x1a\x18\x8e\xbd\x56\xe6\x82\x11\x7a\x17\x46\x76\x56\x6d\x04\x73\x8d\xe0\xbd\xf5\xc9\xbf\x32\xe5\xf8\x19\x22\xdc\x9c\xf2\x80\xb1\xe5\x18\xc4\x59\xad\x2e\xbc\xc6\xea\x31\x38\xd9\x04\xd7\x23\x05\x17\xdd\x86\x63\xa7\xd1\x71\xc4\x0d\x78\x81\x71\x83\x68\x2b\x2e\x77\xa0\x59\xcf\x6b\x51\xaf\x0c\x39\xe8\x76\xd9\xa4\xd2\x35\x34\x20\x30\x0c\x5c\x6f\x8f\x75\xe5\x5a\xc9\x05\xcb\x06\xfb\xb6\x5b\xa7\x24\x4c\xb1\x36\x61\xea\x6c\x28\x14\x8b\xe1\xf9\xc9\xfa\xb0\x95\xe5\x19\xcb\xe9\x72\xf4\x2c\x5c\x00\x2f\xc0\x05\x96\x0c\xb1\x0c\xbb\x00\xb8\x74\x94\x19\x21\xb7\x4a\xfe\x9a\xfc\x7c\xa5\x6b\x03\xb7\xc0\xa6\x94\xb3\xa0\x76\x63\x04\xc7\x7d\x25\x5e\x99\x82\x98\xed\xe5\x3c\x70\xf9\x4d\x0b\x08\xe6\x0e\xe8\xb4\xca\x4e\xcc\x94\x69\xed\x82\x07\xeb\x61\xcd\x4d\xae\x3d\x81\xcb\x8d\x3e\xbd\x0a\x9b\x7b\x2d\xe1\xd9\xea\x6b\x3c\x83\xa5\xaf\x72\x4c\xa8\x30\x4e\xa4\x1d\x4c\xf0\x63\x3c\x7f\x29\x97\x7e\x66\x17\x4d\x8c\xb0\xbd\x63\x1a\xae\xa0\x33\x5f\xe2\x22\x33\x94\xb2\xd9\x15\x3c\x52\xc6\x4e\x08\xf9\x92\x06\x73\x0e\x5d\xe6\x9d\xb7\x37\x05\x32\x33\x94\xb3\x95\xc8\x74\x4e\x59\x89\xbc\x72\x3f\x46\xd5\x46\xd5\xb2\xde\x4a\xd5\x2a\x90\x94\x71\x04\xc4\xe2\x01\xca\x24\x07\x9b\x3d\x41\xf5\xfc\x0c\x74\xe7\x00\x7e\xc5\x4c\x19\x6a\x85\xfd\xed\xe0\xcc\x7e\x0d\x5c\xd3\x9d\x57\x12\xec\xb8\x77\x60\xd6\x60\xca\x9e\x8e\x7b\x30\x62\x8c\xca\x08\x3d\x48\x88\xd9\xe7\x92\xaf\x19\xae\x23\x5d\x9d\x63\x17\xc9\xc7\xb8\x56\x57\x58\xa8\x59\x41\x0b\xe2\xe1\xd7\x00\x18\xb0\x82\x26\xfb\x6b\xee\xcf\xb3\xf7\xaf\xd2\x24\x46\xad\x7a\x15\xb2\x07\x2f\x24\xa5\x9c\x62\x8e\x0a\xfc\xb2\x06\x0a\x0f\x37\x0a\x86\xc2\x78\x1e\xa0\x22\x73\x1d\x9c\x00\xf8\xb5\x50\xdf\x96\x25\xac\x5a\xb5\x90\xe6\x0c\x5e\x99\x33\x13\xda\x62\xcd\xa7\x32\xb5\x66\xd3\xed\x14\x06\x30\x4b\x4d\xa7\x4d\x5a\xeb\x7b\x1e\x12\x69\x6c\x60\xad\x1d\x8c\x4c\x1c\x0e\xa7\xa2\xa8\x48\xa5\xad\xe7\x59\xc7\xec\x34\x88\x0b\x94\xea\x38\x83\x14\xca\x05\x41\x32\x1a\x35\x15\x14\x14\x84\x7b\x6e\xce\x80\xb1\x87\x3e\x05\xaf\x5c\xa5\xe1\x05\xdd\x66\xa9\x45\xb2\x4e\x06\x0b\x9e\xe2\x7d\x61\x57\xd1\xbd\xc0\xab\xf8\xee\x81\xec\x8b\x9a\x63\x47\x47\x52\x86\x49\xd0\x10\x80\x49\x70\xa1\x8b\xbd\x95\xe0\xcd\xdc\x51\xac\xd9\xd2\x50\xf4\xee\x4f\xfa\xae\x6f\xe1\xfe\xcc\x45\xb2\xc6\x50\x51\xce\x96\xa9\xe0\x27\xc6\x43\xeb\x01\xbb\x68\x1d\x94\xda\x9e\xb3\xd9\x86\x9f\x12\xe7\x16\x9e\xcb\xc2\x56\x90\xb3\x7d\x42\x93\x45\xeb\x95\x83\xea\xd5\x17\xb0\xdc\xd2\x31\x6a\x25\x31\xda\x2b\x78\x4f\xb9\x7f\x6a\x61\x9c\xf0\xc0\xfe\x56\x21\x3a\xf0\x3a\xfd\x50\xe0\x53\x9f\x98\x19\xf2\x03\xe5\x21\x33\x69\x82\x92\xd1\x59\x1f\xa8\x17\xf1\x90\xab\x75\x74\x16\x83\xb3\x06\x98\x1d\x82\x1b\x42\xa4\x54\xb3\x6e\x6f\x6a\x84\xb4\x52\xf3\x38\x73\xdb\xfa\x9b\xf1\x7c\xa1\x8a\x9e\x6a\x6f\x0d\x51\xe5\xad\xf9\x54\x77\xb7\xc0\xec\x0c\xb5\x60\x56\x6e\x0d\xa6\x44\x5d\x03\x4b\xbd\xad\xd1\xac\xff\x82\x6c\xbc\x78\x42\xed\x45\x01\x93\xb6\xe7\xca\xac\xb1\x6a\x8f\xba\x1e\x17\xa4\xce\xe7\x19\xba\x57\xa0\x57\x92\x29\x29\x17\x70\x5b\x8e\x33\x7c\xa7\xf4\x66\xc1\x3a\xd6\x0a\x66\x57\xda\xaf\xb4\x5e\x17\xd9\x8c\xac\x82\x70\x82\x26\x07\x49\xec\x2a\x1e\x27\x28\xac\x57\x41\x24\x3f\x43\xba\x36\xf3\x30\xe0\xb4\x75\x2e\xbf\x15\x3d\x15\xdf\x0c\xdd\x2d\xbd\x95\x28\xe9\xda\x73\x23\x6d\x5f\xba\x96\x74\x5c\x4e\x7b\x13\xa9\x19\x15\x92\x7c\x10\x0f\x62\xf0\x48\xb5\x61\x69\x28\x31\x96\x8c\x58\x35\xbe\x1e\x52\xc3\xaf\x7a\x90\x76\x08\x6c\x69\x8e\x49\x62\xf5\x35\x2d\x95\x89\xf9\xd6\x1e\xc2\xe0\x69\x40\x3a\x66\xf4\xd6\x86\x88\x3c\x28\x6c\xc7\xe9\x9f\x71\x33\x46\xa4\x33\x00\xa3\x7e\x97\x21\x08\x0f\x21\x26\xed\x69\xfb\xc9\x0b\x39\x2d\x49\x4c\x7a\x9e\x99\x88\x64\xe2\xf4\x04\x32\x3d\xcf\xad\xfe\x52\x2a\xa8\xe9\x55\x28\xd7\xe9\xe2\x7b\xd6\xff\x2e\x9d\xd3\x7f\x11\x05\x7b\x01\x43\x0f\x92\xb4\x14\x15\xaf\xac\xda\xd6\xdb\x3e\xa2\x1d\xbc\x58\x72\x4f\xee\xb4\xb2\x3b\x63\x44\x54\xf4\x65\x48\xcf\xbd\xb3\xcf\x12\x92\xfb\x13\x44\x4d\x5f\x26\xc0\x07\xd5\x2a\x41\xf5\x74\xc3\xa7\x24\x90\x30\xe5\x3a\x48\xb3\xf5\x14\x2e\xdf\xa6\xf9\xbc\x9c\xec\x72\x27\x49\x34\xd0\x53\x75\x16\x3b\x0f\x29\x77\xe5\x4b\xd5\xeb\x39\x6f\x83\x15\x56\x67\x6e\x72\xd5\x1c\x25\x35\x32\x9b\x07\x35\xc5\xb1\x6a\xc7\x72\x94\x1a\xc9\xb5\x07\x87\xd3\xd4\x42\x2d\x24\xb3\xd4\x76\x55\x7c\x56\x43\x10\x8e\x19\x2b\x41\xf3\xb1\xd0\x6e\xc0\x2e\xd2\x6e\x9e\x25\x77\x1b\x92\x0b\x06\x3f\xa6\x78\xc0\x58\xe6\xd1\xef\x77\x83\x56\xf0\x6c\xc9\xc1\x50\x16\x11\xd6\x03\x92\x6b\x4c\x59\x65\x30\xca\xa8\xa0\xb8\x56\x5f\x20\xa9\x53\x54\xe9\xa9\xec\x93\xfb\xe5\x15\x41\xa4\xa7\xeb\xf4\xa3\x64\xf9\x9b\x52\x5f\xe1\xa6\x07\xb3\xc2\x26\x5f\x2c\xb4\xfb\x97\x9b\x49\x0a\xd7\x42\x93\x0d\x94\x80\x98\x1b\xcf\x64\x17\x3a\xce\x74\x80\x3b\x97\xda\x88\xe6\x8b\x7d\x5a\x7f\x49\x1d\x8a\xb2\x9e\x3a\xd0\x99\x4f\x1d\x0b\xe0\x04\xf8\xa9\x9f\xf3\xb0\x81\x8c\x4d\x91\x46\x20\x75\x57\x39\x66\xac\x1f\xe3\xad\x27\xf7\x09\x2a\x28\xc0\x78\x43\x1d\x18\x86\x51\x03\x76\x00\x21\xf3\x49\xd3\xcf\x4f\xd5\x3b\x94\xf8\xf8\x3c\xbd\x42\x11\xd6\x60\xe0\x26\xbc\x9f\xac\xd5\xef\xc1\x0f\x50\xde\xcb\x58\xf3\x7c\x38\x9c\xee\x0f\x6b\xb9\xc6\x79\x5c\xdb\xd6\x03\x95\xa4\xc3\xb4\x2a\xbd\x16\x3a\x1c\x1e\x3f\xfe\xfb\xf6\x3f\xfe\xf6\x75\x2c\xff\xff\x7c\xfb\x37\x3b\xbe\xcc\xef\x6f\xc6\xfe\x64\xf5\xbe\xd9\x7d\xbc\x1c\xb7\x3b\xbd\x61\xa0\x7a\x4d\xab\xec\x9e\x0e\x87\xc3\xe1\x3d\x7e\xfc\x3c\xec\x8e\xcf\x2f\x87\x5d\xfc\x31\x23\x3f\x8e\xcf\x2f\x3f\xbe\x9d\xb2\xcc\x4d\x30\x7d\x30\x70\x1f\xf6\xcd\xee\x47\x79\x71\x45\x1f\x30\x92\x90\xbf\x2a\x28\xbf\xa6\x6a\x3e\x8e\x0f\xf3\x82\xfd\xbd\xd7\x4b\xc7\xe7\x7f\x3c\x7d\xfc\xfc\x7d\x7c\x7f\x79\xfe\xcf\xe3\x7c\x73\x43\x57\x7f\xa3\x1c\xf3\xfe\xd9\xa9\x00\x79\x70\xb3\xab\xe6\xbd\xde\x1b\xbd\x6f\x76\x7f\xbc\x36\xaf\xb1\x79\xfd\xe3\x75\xf7\xf0\xff\x00\x00\x00\xff\xff\xa1\x09\x81\xbe\x9c\x13\x00\x00" + +func runtimeSyntaxNginxYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxNginxYaml, + "runtime/syntax/nginx.yaml", + ) +} + +func runtimeSyntaxNginxYaml() (*asset, error) { + bytes, err := runtimeSyntaxNginxYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/nginx.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxNimYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x56\x7b\x6f\x1c\x35\x10\xff\x3f\x9f\xe2\xb8\x16\x72\x97\x90\xa3\x49\xab\x50\x8e\x47\x28\x6d\x82\x2a\x01\x95\x48\x91\x22\xd6\xdb\x32\x6b\xcf\xde\xba\xf1\x63\xf1\x23\xc9\xb5\x53\x3e\x3b\x1a\xef\xde\x25\xa0\x22\x1a\x29\xe3\x79\x78\x6d\xcf\x6f\x7e\x33\xba\x56\x1b\x4c\xeb\x1e\x97\x13\xa7\xed\xce\x8e\xc2\x84\x32\x2d\x27\x3b\x93\xc9\x64\xc2\x31\x07\x16\x97\x93\xa9\x10\x0b\xa7\xed\xfd\xe9\xce\x4e\xc8\x06\xe3\xb2\xc4\x0f\x26\x7d\xc0\x3e\x78\xb9\x9c\x4c\x2b\x21\xde\x09\x41\xb5\x10\xcd\x0c\x92\xb7\x64\x74\xa2\xb8\xb6\xa4\x15\xba\x44\x12\x8c\x21\x73\x05\x26\x23\x45\xad\x10\xdb\x16\x65\x22\xe7\xef\x18\x3d\x04\xb0\xb4\x42\x87\x41\xcb\xc1\xb0\x5e\x65\x83\xc4\x0f\x24\x83\x89\xae\x20\x90\xf4\x2e\x26\x0a\x18\xb3\x49\xc4\xb7\x93\xc5\xd4\x79\x45\x3a\x61\x80\xe4\xcb\x8e\x2b\x0c\x09\x03\x59\x90\xc1\x53\x42\xdb\x1b\x48\x48\xad\x46\xa3\x08\x5d\xb6\x83\xd6\xfa\xc0\x27\x1a\x68\xd0\x90\xbb\xac\xe0\xe0\xed\x93\x83\xdf\xeb\x7d\x02\xa3\x21\x92\xf3\x65\x9d\x0b\xd1\x54\x42\xbc\xe7\xf4\xa6\x63\xe2\x31\x41\x42\x8b\x2e\x15\x6c\x9a\x19\x28\x15\x08\x9c\x22\x88\x04\xd1\x12\x43\xa0\x25\x35\xda\x29\x6a\x8c\x97\x97\xd4\x04\x84\x4b\x92\x10\x91\x45\xe2\x47\x4a\xec\xd3\x98\x8e\xf4\x2e\x69\x97\xf1\xce\xdb\x15\xb6\x2c\x75\x94\x10\x14\xaf\x49\x3b\x99\x48\xe9\x2b\x52\x9e\xd0\xe8\x96\xd0\x44\x24\x74\x43\x4a\x84\x37\xe5\x40\xbc\xe9\x7d\x48\xd4\x6a\x07\xc6\xac\x39\x47\x6a\x83\xb7\xd4\x66\x27\x37\xe8\x92\x6e\x49\xdb\xb2\x4f\x3b\xd2\x4e\x9a\xac\x90\xb4\x4b\x18\x5a\x90\x48\x3a\x92\x8e\xce\xa7\x5b\x4c\x19\xfd\x01\xcd\x11\x6d\xab\x6f\xb4\xe3\x02\x91\xd3\x86\x78\xaf\xf3\x49\x3b\xf2\xcd\x1b\x2e\xa6\x6f\xc9\x07\xf2\x79\x2c\x51\x9f\x02\x05\xd0\x11\x29\x60\x4b\x01\x53\x0e\x8e\x62\x67\x28\x76\x81\x18\x4c\x2d\x6f\xcb\x94\xc2\x9a\x52\xee\x37\x85\xcf\x51\xbb\x55\x29\xfd\x75\x87\x8e\xae\x3b\x6d\x90\xae\x75\xea\x8a\xe0\x2b\x6e\x7c\xa0\x35\x57\x94\x4b\xf5\x5f\x25\x52\xd8\x07\x94\x90\x50\x91\xf3\xe7\x5a\xe1\xe9\x40\xbb\x52\x80\x90\x25\x67\xa9\x70\xab\xfa\x2b\x0c\x41\x2b\x2c\xef\x1f\x78\x67\x7b\x6d\xf0\xa5\xb6\x48\xce\xff\x3a\xa4\x00\x72\x2d\x8d\x96\x03\xda\x14\x3b\x30\xc6\x5f\x53\x9f\x03\x32\x0d\x7e\xf1\xe7\x09\xe4\xe5\x59\x00\x8b\x84\x21\x70\x29\x20\x81\xa1\x6b\x08\x8e\x93\xea\xb4\x4b\x64\xb4\xc3\x22\x20\x9c\x4b\x70\xa7\x4e\x95\xbb\x72\x42\xf5\xa3\x4f\x9e\xb2\x0b\xde\x18\xd2\xd6\xa2\xd2\x8c\x8f\xec\x50\x5e\x46\x6a\x7c\x76\x2a\x3e\x1d\x0c\x7e\x6e\x6b\xfc\xf5\x68\x3a\x6d\x46\x0d\x62\xc4\xc0\x00\x7b\x17\x37\xf7\xc6\x72\x71\x24\xdf\x27\x6d\xf5\xdb\x12\xa4\x1e\x52\xc2\xe0\x62\xe9\x55\xa6\x21\xf5\x39\x76\xd4\xfb\x9e\x56\xc6\x37\x60\xa8\x0f\xb0\xb2\xc0\x04\xc3\xa0\x19\x59\x30\xd4\xe8\x14\xf5\x5b\xa4\x2b\x6f\x20\x71\x61\x9c\x7f\x86\xd2\x50\x87\xa0\x30\x30\xb5\xbc\xed\x0d\x26\x3c\x2f\xc0\x6e\x50\xe4\x7c\x2f\xa9\x87\x18\x9f\x16\xf9\x13\xa1\xd5\x69\xe4\xa4\xdc\xac\x7d\x3f\x6a\xbe\x79\x23\x49\x7a\x85\x2b\x74\xe5\x78\xed\x98\x65\xe7\xc9\x32\x81\x93\xc2\x96\x31\x8c\x29\x8c\xda\x15\x04\x08\xab\x38\xf6\x82\x24\xbc\xe1\xd4\xa8\x59\x4b\xdf\xaf\xa9\x59\x33\x09\xb3\x1b\xb2\x96\x97\xa8\x28\xbb\x02\x2a\x2a\x52\x6b\x67\x74\x43\x52\xf1\x35\xa9\x0b\x08\x8a\x56\x32\x42\x8b\xa3\xc5\x5c\x58\x65\xee\x49\xee\xeb\x78\x97\x17\xff\xa0\xdf\xda\x36\xde\x2c\x7c\x3f\x34\x10\x8f\xc8\x6f\x85\xd8\x17\xe2\x40\x88\xbd\x2f\xbe\xf9\xee\x7b\x21\xee\xff\xf5\xd9\xa7\x42\xd0\x27\x42\x9c\x08\xf1\x4a\x88\xc5\x52\x08\x21\xea\xfd\xed\x11\x3d\x4a\x0d\xa6\xf0\xf7\x9d\x10\x0b\x12\x62\x21\xc4\x7b\x12\xa2\xda\x5a\x35\x09\x31\xdb\x5a\x73\xfa\x9a\x3e\xa7\x3f\x3e\xdc\x02\x0b\x21\x16\x9b\xc8\x30\xf2\x4b\x5f\x30\x05\x25\x0b\xed\xd2\x63\x16\x87\xc7\x2c\x1f\x1e\xb1\x3c\x7e\x44\x99\x63\xb9\x04\xf3\x10\xcd\x43\x38\x0f\xf1\xd6\x78\x48\x83\x7c\x78\x34\xac\xc7\x8f\xa8\xf1\xde\x90\xec\x20\x0c\xb3\x29\xa6\xc0\x7c\x97\xe3\x0a\x21\xc0\x9a\x7c\x8f\x6e\xd0\x22\xfe\xb9\xad\xd9\xd0\xf9\xe3\x18\x89\x3c\xf4\xbd\x56\x04\x39\x79\x92\xb1\xe3\x91\x15\xc0\xad\xb0\x8c\x9d\x97\x94\x1d\xa7\xa2\xca\xa4\x50\x18\xe5\xdd\x12\x8c\x49\xee\x56\xfa\x79\x3d\x7b\x4c\x87\xc7\xf4\xf0\x88\x8e\x1f\xcd\x4f\x84\x68\x68\xb7\xca\xbf\x7d\xc8\xdb\x9e\xd5\xb3\xe2\xa0\xc3\xa3\xc7\x1b\xa7\x7a\x56\xdf\x39\xb7\x4c\x0c\x70\x69\xe1\xb2\x6d\x30\x0c\x38\x56\x0f\x0e\xbe\xaa\xf7\xff\x6f\xd7\x83\xea\xe6\xa2\xe6\xad\x4f\x0e\xce\xe0\xa0\x2d\xea\xeb\x51\xff\x88\x8f\xbd\x7c\xca\x9f\x7c\x59\xc4\xeb\x8f\xf9\xa2\xf9\xa1\xae\x1e\x1c\xf2\xff\x47\x6c\x2f\xaf\xa9\x67\xcc\xa7\x93\xf9\x60\xec\xcf\x4f\x2a\x3c\xad\x2b\x26\x6e\x79\x6d\x3d\xfa\x3f\x74\xd6\x50\x5d\x3e\x6b\x3a\x63\x2a\x2f\xa8\x7a\x25\xa6\xf5\x7c\x4f\x4c\x69\x77\xeb\xd9\xad\xe7\x7b\xbb\xb7\xdf\xda\x91\xa0\x55\xb5\x8c\x3d\x48\x5c\xd6\xf5\xde\xbd\xc5\xde\xfd\x7f\xef\x28\x26\xff\xc5\x04\x61\x60\xf4\x3d\x21\xaa\xe9\xd6\x8f\x4e\x15\x6f\x2d\xc4\xbd\x5b\xef\xf0\x7b\x65\x52\xd5\x3b\x1b\x56\x78\xe5\x97\x93\xe9\xec\xe5\x8b\x67\x2f\xe8\xec\xf9\xc5\xcf\xa7\x74\x71\x71\x31\x5f\x9e\x4c\x77\xfe\x0e\x00\x00\xff\xff\x35\x7c\xeb\x87\x0d\x09\x00\x00" + +func runtimeSyntaxNimYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxNimYaml, + "runtime/syntax/nim.yaml", + ) +} + +func runtimeSyntaxNimYaml() (*asset, error) { + bytes, err := runtimeSyntaxNimYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/nim.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxObjcYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x55\x6f\x6f\xdb\xb6\x13\x7e\x9f\x4f\xe1\x9f\x9a\xdf\x2a\xba\xb3\xd3\xfd\x41\xb1\x7a\x5d\x9c\xb4\x4b\x86\x02\x69\x32\x2c\x2d\x90\x55\x74\x05\x8a\x3c\xd9\x5c\x28\x52\x23\x8f\x49\x9d\x5d\xbf\xfb\x40\xd9\x4e\xec\xe6\xcf\x0a\x0c\x98\x5e\x58\xe2\xe9\xb9\xbb\x47\x77\xcf\x9d\x6b\x6d\x00\xe7\x2d\x8c\x7a\xae\xfa\x03\x24\xea\x0b\x18\xc8\xad\x2d\x05\x08\x12\x47\x5b\xbd\x5e\xaf\x97\x20\x56\x34\x30\xea\x65\x9c\x0f\xf3\x86\x9a\x86\x66\x6c\x3b\xdb\xda\xf2\xd1\x40\x58\x80\x06\xbd\x45\x94\x8c\xf3\x2a\xaf\x8d\x13\x48\xca\xc5\xca\x00\xbd\xfa\xe5\xb0\x3b\x6a\x45\x95\x73\x86\x5e\x9e\x9c\x1c\xd1\x4b\xe7\x0c\x08\x4b\x72\x26\x3c\x69\x8b\x14\x66\xce\x23\x19\x67\xa7\x14\xf4\x15\xb8\x9a\xc0\xc6\x86\x2e\x9c\x56\x14\x50\xa0\x96\x24\x9d\x0d\x48\x01\x7d\x94\x48\xd1\x6a\x67\x29\xe5\x54\x50\x13\x7c\x44\xf0\x96\xf2\x68\xd9\x38\xe8\xa9\x05\x45\xda\x1a\x6d\x81\x5e\x19\x11\x02\x9d\x1e\x1c\xd1\xeb\x37\xbf\xd2\xf1\x69\xfe\x8e\x8d\x5f\x5b\x84\x29\x78\xc6\x79\x95\xdd\x26\x9f\x87\x71\x62\xc0\x28\xcf\x63\x39\x66\x63\x6d\x31\xff\x81\xbe\x79\x46\xdf\x7d\x4b\xcf\xbe\xa7\x16\x3d\x63\xac\xc4\x3b\x9d\x8b\xfd\xc1\xfb\xc9\xe2\xa7\x18\x09\x63\x63\x33\x9a\x4c\xfa\xf7\x42\xc5\xe0\xea\xe9\xe0\x79\x39\xe9\xdf\x13\x4e\xe9\xd0\x0a\x94\xb3\xb2\x10\x83\xab\xfd\xc1\xfb\x0d\xf0\x12\x9d\x8a\x03\x0d\x58\x1c\xf5\xb2\xbc\x2c\x05\xa2\xd7\x55\x44\x28\xcb\xa2\x18\x85\x56\x48\x58\x50\xc8\x39\xcf\x8b\x0f\x2c\x3d\x32\xce\x19\x95\x65\x2e\xcc\xa2\x54\x22\x34\x54\x45\x6d\x50\x5b\x9a\x69\xa5\xc0\xae\xaa\xd7\x0a\x79\x0e\x8a\x3c\x04\xf4\x5a\x22\x85\xa4\x90\x65\xdd\x5d\x4d\x97\x20\xce\x59\x59\x52\x59\x46\x1b\x03\x28\x2a\x8f\x9d\xb5\xd1\x18\x2a\x8f\xa3\x31\x22\xb5\xbf\x2c\x2b\xe3\xe4\x79\xba\x2f\x52\x0c\xfb\x2c\xbb\x83\x7b\x2a\xbd\xec\x9a\x95\xb4\xd6\x11\x27\x84\xa6\x35\x02\x81\xda\x58\x19\x2d\xa9\xf5\x2e\xc9\x12\x14\xb5\x5e\x5f\xa4\x17\x89\x48\xc2\x13\xce\x74\xa0\xda\x6b\xb0\x8a\x2e\xb4\xc7\x28\x0c\xc5\xa0\xed\x94\x9a\x88\x1d\x91\x0b\x67\x04\x6a\x03\xe4\x61\xaa\x03\x82\x27\xf8\xd8\x1a\x2d\x35\xae\x0b\xe1\x73\x4a\xb5\xf3\xa4\x6b\xba\x9c\x25\x4f\xe5\x08\x4c\x00\x92\x22\x00\x29\xa8\x45\x34\x48\xe1\x52\xa3\x9c\x3d\x14\x03\xfd\x9c\x70\xe6\xdd\x25\xc9\xd4\x4d\x72\x2d\x78\x81\xce\x93\x85\x4b\x52\x60\x00\xe1\x21\xf7\xa9\x43\x97\xc4\x8f\xda\x46\xa0\xca\x83\x38\x27\x0f\x18\xbd\x7d\xc8\xcb\x3a\x2b\xd0\x35\x5a\xd2\xf2\xe6\x41\x28\x67\xcd\xbc\x7b\xb8\xf4\x1a\x21\xcd\x52\x1a\xb8\xd4\x46\x12\x21\x0d\xce\x7d\x11\xf7\x72\xb0\xd2\x29\xa0\x54\x5f\x6d\x11\x7c\x9d\x1a\xa4\x9b\xd6\x74\x10\xd1\xc9\x62\xd1\xbf\x00\x06\x64\xfa\xbc\xd4\x2e\x27\x9d\xa1\x30\xb7\x72\xe6\x9d\xd5\x57\xa0\x28\x55\x63\x51\x87\x5a\x5b\x61\xcc\x3c\xe1\x5a\xf0\x38\x27\xd7\xa6\x30\xc2\x90\x87\x3f\xa3\xf6\x69\x8a\x9b\x36\xed\x05\x11\xd1\x79\x30\x20\x02\xb4\xce\x19\x76\xad\xfe\xd6\x43\xeb\x9d\x1c\xf5\xb2\x0f\xeb\x72\x7f\xb4\x7e\xc8\x15\xd4\x49\xcc\xda\x4a\x13\x15\xac\x62\xe6\xd1\x92\xae\xed\x98\x75\x0b\xc4\x2a\x5d\x13\x98\x5c\xd7\x14\x80\x75\x2d\x17\xde\x26\xfd\x80\xf7\xdd\xb7\x88\x69\x23\xd8\xb0\xbf\x9d\xdd\x4a\x5d\x96\xc5\xcd\x70\x96\x37\x93\xd9\x82\xd4\xc2\x7c\xce\xad\x78\x44\x7b\x93\x0d\x7e\x4b\x42\x4b\x7e\x6c\x03\xcc\x33\x7a\x31\x19\xf6\x39\xdf\x19\x17\xbb\xc4\xb3\x0d\xcf\xed\xbb\xb7\x40\x31\x1c\xfd\xf8\xf5\x93\x3e\xfd\xf4\x3f\xce\xff\xcf\x79\xc1\xf9\x64\x42\x2f\x68\x97\x76\x68\x40\x5f\xdd\x14\xaf\x5b\xa8\xc2\xe2\xd0\xc6\xa6\x02\x9f\x5c\x93\x72\x06\x63\x36\x2e\x9e\x0e\x9e\x4f\x9e\x70\x5e\x11\xe7\x15\xe7\xab\xe3\x70\xc3\xfe\xf4\x63\x3a\xee\x0f\x0e\x3b\xcb\xf5\x54\xaf\xc2\xa6\x78\x7b\x9c\x17\x39\xe7\x9c\x0f\xa9\xf8\x90\x78\xb0\x3e\xe7\x13\xda\xe3\xfc\xaf\x35\xf3\xa7\xce\xfc\x29\x99\xf3\x35\x33\xeb\xcc\xec\xae\xc0\x9c\x57\x2f\x16\xc8\x04\xdc\xed\x80\xbb\x6b\xda\xdd\x84\xe6\x56\x1b\x3a\x7e\x77\x74\x44\xbf\x1f\x9c\xd2\xf1\x09\xbd\xfd\xed\xdd\x01\xa1\x8f\x40\x87\xfb\x47\xa7\x07\x54\x8b\x34\xd6\x01\x4c\xcd\xee\x0d\x72\xbe\x5a\xe9\x9b\x1b\xfd\xba\x88\x69\x45\xda\xe9\xa8\x97\x3d\x1e\x3e\xbe\x5d\xe2\xe5\xdb\xce\x9c\xae\x80\xc2\x77\x83\xc5\xb3\xec\xda\x08\x56\xa5\x5c\x6b\x96\x70\xae\xdb\x2e\x3d\xe7\xc3\x1b\xeb\xda\xff\xee\xea\x5a\x4f\xb5\xd0\xdd\xab\x99\xf0\x37\xae\x5f\xca\xe7\xbf\xa6\xd3\x74\xa2\xbd\x45\x63\x67\xe7\x73\x1a\xdb\xff\x90\x0f\x9d\x72\x49\x71\x6f\x4f\x7e\x3e\xa1\xb3\xb3\x33\x3a\x7c\x7d\xf6\xe6\x80\x8d\xc6\x5f\x90\x8c\xf3\xfe\xad\xaf\xe6\xfd\x9d\x7f\x91\xf1\xef\x00\x00\x00\xff\xff\x7d\xdf\x5a\xbd\x57\x09\x00\x00" + +func runtimeSyntaxObjcYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxObjcYaml, + "runtime/syntax/objc.yaml", + ) +} + +func runtimeSyntaxObjcYaml() (*asset, error) { + bytes, err := runtimeSyntaxObjcYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/objc.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxOcamlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x93\xcd\x6e\xdb\x3a\x10\x85\xf7\x7e\x0a\xc2\xf7\x5e\xe4\x07\x57\x69\x90\x16\x68\xe3\x4d\x11\x14\xe8\x1b\x74\x53\xd3\x28\x46\xe4\x28\x9a\x96\x1a\x0a\xe4\xc8\x76\x92\xf1\xbb\x17\x92\xa3\x54\xce\x1f\xda\x75\xbd\x31\x79\x34\x73\xce\xf0\x23\x58\x51\x40\xb9\x69\x71\x61\xa2\x83\x26\xcc\x66\x1e\x05\x9d\x2c\x66\xc6\x18\xd3\x7f\x64\x68\x70\x61\xe6\xd6\x9e\x35\x81\x3e\xfe\x3b\x9f\xcd\x52\x17\x30\xef\x0b\x0a\x43\x1e\x59\xa8\x22\x4c\x43\x51\xb9\xbc\x2a\xbe\xae\x96\xe7\xc5\x25\x14\xb7\xdf\x56\x77\x17\xff\xef\xac\x2d\xe7\x43\xb1\x31\xff\x78\x74\x01\x12\x08\x45\xce\xf7\x06\x59\x40\xb0\x41\x96\x7d\xff\x71\x40\xd1\x35\x04\x6d\x50\xea\xe8\x95\x58\x81\xbd\x26\x74\xda\x26\x5a\x83\xa0\xae\x29\x49\x07\x41\x5d\xe4\x2c\x09\x88\xe5\x64\x9a\x91\x25\x75\x4e\xba\x84\x86\x04\x9b\x31\x66\x7f\xc6\x21\xa1\x5f\x6a\x6c\x91\xd5\x05\xc8\x59\x9b\xe8\xbb\x80\x8a\x5b\x87\x6d\x3f\x99\xe2\x56\x30\x31\x84\x03\xdb\x16\xa4\x57\x5f\x1a\xbb\xea\x58\xab\x8e\xdd\x60\x30\x2c\x62\xd2\x06\xc4\xd5\x2a\xe9\x46\x37\x24\xf5\xb3\x76\x45\x13\xfd\x80\xef\x25\x63\xc8\xba\xa9\x91\x35\x56\x43\xbf\x19\x0d\x5c\x64\x4f\xaf\x81\xa4\x4a\xa5\x6f\xc4\x90\xf1\x20\xba\x0c\xd1\x3d\x83\xa5\xc4\x6b\x62\x45\xf6\x1a\xcb\xef\xe8\x44\xf7\x20\x35\xd3\xb5\x56\x31\xe9\xa6\xa6\x80\xea\xa3\xfa\xc8\xa8\xd2\xff\x6f\x58\xe2\x81\xf5\x70\x25\xc0\x82\xa3\xff\x28\x9c\x95\x31\x86\x91\x7f\xea\x50\x2b\x78\x3c\xd6\xfe\x1a\xf2\x9b\xe1\x52\x1e\x0c\x72\x8b\x8e\x60\x6c\x25\x76\xa1\xf3\xa8\xc4\x35\x26\x12\x25\x26\x21\x08\x74\x8b\xe9\xc0\x0b\xb7\x6d\x32\x4f\xc8\x1e\x58\x31\x6e\x34\x61\xa5\x4d\x27\x50\x06\xd4\x00\xb7\x37\xda\x27\x27\xd1\x04\x34\x1d\x6e\x72\x8c\x2c\x89\xf8\x7a\x71\x9f\x63\x7a\xe8\xa9\x07\x7e\x34\x7f\x90\x90\xfd\xa1\x90\x7f\x50\x3b\x84\x5a\x7b\xf6\x4b\x9d\xbc\xa2\xf1\x37\xcd\xd9\xcf\xfa\xa9\x86\xfe\x5d\xfd\x37\xe9\x7b\xb5\xb0\xcf\x58\x42\x59\x71\x92\xf5\x91\xb5\x76\x10\x56\x7f\xd0\x7c\xbc\x3c\x2f\xde\xaf\xee\xde\xee\x74\xbb\xbc\x2a\x3e\x43\x51\x9d\x17\x97\xab\xbb\x8b\x9d\x76\xd3\xfd\xbb\x9d\x7e\x99\xee\x3f\xec\x4e\x7e\x1b\x95\x9d\x3f\x66\x35\x55\xfe\x36\x58\xcd\xf0\x62\x9f\x42\xb2\xc7\xd6\x9e\x3e\x01\x65\x4f\xad\x3d\x79\x8c\xc5\x2c\x57\xb3\x9f\x01\x00\x00\xff\xff\xe2\xce\x5b\x59\xc7\x05\x00\x00" + +func runtimeSyntaxOcamlYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxOcamlYaml, + "runtime/syntax/ocaml.yaml", + ) +} + +func runtimeSyntaxOcamlYaml() (*asset, error) { + bytes, err := runtimeSyntaxOcamlYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/ocaml.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxOctaveYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x56\xdf\x6f\xdb\x36\x10\x7e\xd7\x5f\x71\x93\x9b\x25\x6e\x26\x29\xed\x0a\x6c\x13\xd6\x15\x5d\xb6\x00\x79\x68\x02\xac\x1b\x10\x20\xf2\x02\x8a\x3a\x59\x44\x28\x52\x20\x4f\x51\xbc\xd0\xfb\xdb\x07\x4a\xb2\x13\xbb\x9d\x9b\x6c\xd8\x80\xea\x45\xe4\xfd\xf8\x3e\xf2\xbb\xf3\x59\x13\xf8\x05\x4b\x34\xa8\x38\xda\x60\x02\x15\x51\x63\xd3\x24\x99\x0b\xaa\xda\x3c\xe6\xba\x4e\xfe\x58\x60\x21\x0a\xc1\x92\x5a\x70\xa3\x93\x5c\xea\x3c\xa9\x99\x25\x34\x89\x69\x15\x89\x1a\x13\xbb\x50\xc4\x6e\x93\xb9\x8e\x17\xac\x96\x1f\x87\xb9\x11\x75\x64\xb9\x11\x0d\xd9\x44\x73\x62\x37\x18\x7b\x53\xb4\x01\x38\x02\xdd\xfb\x83\x49\x30\x81\x5f\xcf\x7f\x3a\x0f\x26\x20\x14\x97\x6d\x81\xa0\x95\x5c\x80\x42\x2c\xb0\x00\xdd\xa0\x61\xa4\x8d\x3f\x7b\x1c\xc7\x50\x89\x79\x25\xc5\xbc\x22\xa1\xe6\xc1\x04\xf2\x56\x48\x8a\x84\x82\xb2\x55\x9c\x84\x56\x1b\x01\x6f\xfc\x49\x57\x7b\xc0\xc6\x26\x8d\x48\x10\x90\x78\x0c\xcc\xae\x73\x2c\x74\x15\x2a\x28\xb5\x94\xba\xc3\x02\xf2\x05\x1c\x4c\x83\x09\x74\x15\x23\x60\x06\xc1\x5e\x8b\x06\x98\x2a\x00\x8d\xd1\x06\x4a\x81\xb2\xb0\x20\x14\x58\x32\x42\xcd\xad\xe7\xa9\x5b\x49\x42\x0a\x85\xc0\x75\x5d\xa3\x22\x0b\x4a\x13\x74\xda\x5c\xfb\xa3\x06\xa5\x90\x48\x8b\x06\x53\x18\x2e\x1f\x04\x05\x12\x72\x4a\x03\x00\x00\xef\x55\xac\xc6\x14\xc2\x2c\x8b\xeb\x67\x61\x10\x98\x56\xa2\x1d\xbc\x13\x78\x4f\x8c\x70\x40\x5d\x49\xdf\x75\x5d\x3c\x57\x6d\xac\xcd\x3c\xb1\xba\xa4\x8e\x19\x1c\x85\x4d\x0a\xcd\x93\x9b\x57\xf1\x51\x7c\x94\xdc\x67\xc6\x15\xd5\xb2\xc7\x8b\xc0\xae\xac\x3d\x61\x7e\xb0\x92\xc2\xa1\x2a\xd6\x6b\x83\xd4\x9a\xde\xe4\xe6\x52\xe7\x4c\xba\x06\x8d\x15\x96\x50\xd1\x34\xcb\xf2\xf0\x6f\xc0\x44\xe9\x50\x5a\x1c\x5f\x3e\x5f\x94\xce\x76\x82\x78\xe5\x38\xb3\xe8\x34\x55\x68\x3a\x31\xf8\x06\xc7\x2e\xbc\xae\x12\xb2\x0f\x1d\x16\x85\x76\xbe\x2d\xa5\x2b\xb5\xe9\xcf\xab\x8d\x6b\x98\x19\x77\xe3\x2a\x37\xc8\xae\x1d\xd7\x8a\x84\x6a\x71\x17\x7a\xab\x3a\xa1\x8a\xab\xc6\x68\x5f\x0e\xb7\xb9\xbd\xe2\x12\x99\x6a\x1b\x8f\x7c\xb5\x15\x49\x66\xe1\x38\xf3\x97\xf2\x4e\x32\x8b\xab\x7e\x37\x70\x8d\x75\x3b\x5f\xb7\xef\x48\xbe\xa8\x73\x2d\xe3\x55\x57\xa7\x10\x5e\x46\x87\xc9\xf3\xd7\xdf\xff\xf0\xc5\x9f\x7b\x5f\xba\xdf\x67\x2e\x7d\xbd\x4e\xfe\xd1\x30\x7e\x8d\xb4\x95\x9b\x8f\xd6\x14\xc2\x83\x2c\xbb\x73\x59\xb6\x9c\x86\xbb\x42\x0e\x5c\x96\x4d\x77\x87\x5c\xba\x2c\x9b\x4d\xd7\xc4\xc7\xba\xae\xd9\x26\x6d\x0a\xe1\x57\x6b\xff\x59\x5b\xe7\x68\x9e\xd8\x8a\x2f\x92\x77\x8c\x2a\xac\x19\x09\xce\x64\x74\xac\x95\x25\xb6\xd5\x96\x7c\x34\xc6\xaa\x67\x18\x2b\x74\x79\x14\x7d\x37\x3b\x74\x47\xb7\x7e\xc1\xa2\xf2\x6d\x74\x32\x7b\xee\x65\x76\xfb\xf1\x7e\xb8\x33\xb5\x11\x0e\xdd\xa9\x3b\x55\xa5\x3b\x63\x67\x0e\x1b\xeb\x0c\x32\x59\xb3\xdb\xe1\x2d\x54\x8f\x73\x2f\xb9\xd6\xbe\xe0\xdb\x98\xb9\xee\x15\xf0\x88\x64\x5a\x74\x25\x93\x16\x37\x0a\xfd\x7e\x98\x04\x4f\x95\x64\x4c\xfb\xa8\x06\xc3\x70\x19\x26\x80\x7f\x2c\x31\xd3\x37\x6d\x18\xae\x6d\xa8\x8a\x2d\x8b\x9f\x55\xfd\x51\xb3\x2c\xbe\xb7\x3e\x18\x26\xab\xe7\x21\x53\x83\x5c\x30\x79\x5c\x31\xaf\xdb\x5e\xf8\xb8\x38\x4f\x71\xc9\xf2\x52\x19\xba\xd9\xcf\xb2\xac\x37\xcc\x9e\x90\xec\x0b\xfb\xcd\xec\xee\xeb\xa5\xbb\xbd\x7c\x1b\x9d\xb0\xa8\xf4\x85\xbe\x7b\xb9\x74\xed\xc3\xfd\xab\xa5\xfb\xed\xe1\xfe\xdb\xe5\xaa\x53\x1f\x21\xd6\xfe\xb6\x56\xfb\xff\x48\xaa\x7e\xf0\xa7\x10\xc6\xf1\xe1\x23\x2f\xf8\xf9\xa8\x38\xfc\xde\x9f\xfa\xdf\xf2\x32\x7e\x91\xac\xf2\x36\xdb\xb7\xb7\x7d\x58\x89\xbd\xed\x4a\x3c\xfb\x84\xe6\xa4\x0b\xed\xc7\x93\xff\x3a\x70\x17\x17\x17\xee\xe4\xf4\xe2\xdd\xcf\xd3\xf4\x4d\xf8\x29\xaa\xc9\xff\x47\xb5\x77\xb7\xcd\xb5\xb7\xfc\xef\xee\xf5\x01\xd9\xe4\x5f\x90\xfd\x15\x00\x00\xff\xff\xc0\x0a\x9c\xc0\x1a\x0a\x00\x00" + +func runtimeSyntaxOctaveYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxOctaveYaml, + "runtime/syntax/octave.yaml", + ) +} + +func runtimeSyntaxOctaveYaml() (*asset, error) { + bytes, err := runtimeSyntaxOctaveYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/octave.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxPascalYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x54\x6d\x8b\x23\x37\x0c\xfe\x9e\x5f\x11\xd2\x85\x26\xb7\xcd\x5e\x0b\xa5\xd0\x7c\x09\xa5\xd0\x3f\x91\x49\x41\x63\x6b\x32\xea\x7a\xec\x41\x92\xf3\xd2\xd5\xfd\xf7\x62\xcf\xde\xbe\x24\xd0\x3d\x2e\x84\xb1\x2c\xcb\xf2\xf3\x3c\xb2\xdc\x51\x40\xbd\x8c\xb8\x99\x8f\x20\x0e\xc2\x6c\xe6\x51\xd1\xe9\x66\x36\x9f\xcf\xe7\x65\x35\xc2\x80\x9b\xf9\xa2\x69\x1e\x46\x90\xbb\xc5\x6c\xc6\x39\xa0\x4c\xeb\xeb\xf9\xb4\x77\xd1\x34\xed\x72\x4b\x9b\xa5\x28\x53\x3c\x18\x44\xa1\x67\xf3\x44\x1e\x9f\x4d\xe9\x13\xeb\xb3\xed\x7a\xe0\x1a\x56\x8d\x12\x54\x8d\x36\xa5\x80\x10\xad\xbd\x28\x4e\xf1\x14\xd5\x4e\x89\xbd\xc9\x00\x21\x94\x59\x48\xf1\x50\x3d\x0e\xd8\x53\x84\x50\x3d\x65\x85\xa2\xe2\x01\xb9\x8c\xbf\xfd\x6a\x42\xf1\x10\xd0\x5c\x66\xc6\xe8\x2e\xe6\x53\x6e\x03\x1a\x9e\x15\xa3\x47\xbf\x5a\x35\x4d\xbb\x78\xa6\x21\x0a\x8a\x03\x46\x7d\xc3\x05\xa2\x37\x90\xc1\x80\x19\x2e\xd6\xe2\x81\xa2\xb5\x8c\xf0\x68\x0e\x04\xcd\xa5\x28\x3a\x7d\x39\x3b\x4d\x5c\x6c\xa5\x98\xd1\x2a\xe3\xc9\xe7\xe9\x68\x3e\x99\x4f\xa7\xa8\xc9\x30\x08\x1a\x46\x6f\x45\x58\xeb\x12\x5b\x97\xa3\x53\x4a\xd1\x0e\x49\x93\x51\x67\x34\x8c\xa1\x22\x81\xea\xa6\xf2\x0f\x14\xb1\x92\xe3\x0e\x1c\x5a\x80\x16\x83\x0d\xc9\x5b\x4c\x6a\xa9\xfd\x07\x9d\x5a\xea\x2c\x45\x4b\x23\x32\x94\x73\x13\xdb\x08\xee\x11\xbd\x8d\x9c\x1c\xfa\xcc\x58\xac\x03\xc3\x60\x8c\xae\xc8\xc7\x38\x22\xa8\x31\x4a\xca\xec\x5e\x8a\x84\x6a\xd2\x07\x93\x9e\x4d\x7b\x8c\xa6\xc9\x4a\x91\x2d\x47\x52\xcb\x51\x29\x58\x16\x14\x3b\x96\xba\xf5\x85\xc7\x89\xb4\xb7\x73\xe2\x8f\x15\x15\x73\x01\x44\xcc\x93\x8c\xa9\x48\x71\x76\x38\xaa\xe1\x99\xca\x67\x2c\xd7\xc3\xba\x52\x52\xfa\x77\xa2\x5f\x27\xe1\x62\x14\x7b\x64\x52\xf4\x46\x91\x94\x5e\x03\x48\x2c\x50\xcb\xc0\x17\x8b\x78\xaa\x12\x64\x2d\x4c\x47\x64\xbd\x18\x03\x09\x9a\x60\xe8\x4c\x7b\x46\xf0\x05\xb5\xf2\xe5\x63\xa8\xad\xa4\x90\x15\x0d\x5a\x51\x06\xa7\x06\x81\x40\x0c\x44\x70\x68\x03\xb2\x39\x8f\x2e\x98\x1b\xc7\x3a\x7a\xec\x20\x87\xaf\x2c\xea\x25\xe3\x72\x35\xbb\xc4\x27\x60\x6f\x07\x8c\xc8\xe4\x8c\xa2\xc7\xb3\x85\xe4\x20\x58\xe9\x2c\x8b\x49\x14\xdc\x63\xc7\x65\x92\x82\xef\x46\xe7\x20\x04\x4b\x47\x64\x26\x8f\x36\xf5\xa5\x8d\x4c\x47\xd0\x5a\xc4\xd2\x9f\xa5\xb0\xb9\x0d\xe4\xa6\x41\x7a\x2c\x05\x85\xf2\x39\x90\x28\xb2\x31\x52\x54\x4e\x3e\x3b\x34\x81\x0e\x6b\x56\x49\x9d\x76\x21\x81\x9a\x8c\xe8\xaa\x8e\x68\xa2\xbe\x2e\x1e\x89\x35\x43\xb0\x53\x51\xfa\x9d\x42\xf5\x96\xc3\x3b\x81\x3a\x28\x77\x59\x39\xa3\x45\x0a\xef\xf5\x9c\x52\x4f\x4f\x44\xf9\x89\x02\x97\xbd\x20\xc3\xe2\xc5\x89\xd1\x6f\xe6\x0b\x8c\xfe\xd5\x35\xbd\x2c\xf3\xdd\xfe\xea\xd8\x87\x98\x87\x16\xb9\x9e\x7e\xb7\xfb\x79\xfd\xfb\x1f\xeb\xbf\x60\xdd\xed\xef\xaf\xf1\xbd\x0d\x6c\x77\xf7\xeb\xfd\xb6\x44\xef\xef\x97\xbb\x87\xaf\xe6\x6a\x5b\xe0\xe3\x9b\xc5\xd5\xf6\x26\xcd\xd4\x0b\xb7\x04\x7e\xa8\x3b\x9e\x7e\xf9\xe9\xcb\x35\x8f\xbb\x1b\x16\x2f\xf3\xeb\xdc\x93\x3a\x7f\xf6\x30\xe1\x6c\x9a\x87\x6f\x3e\xff\xc7\xeb\x63\xdf\x38\xe4\x91\xc6\xf7\x09\x5f\xc1\x7c\x07\x96\x91\xb1\xbc\x1c\xb7\x18\x9e\x9a\xe6\xee\x1a\xc6\x97\xff\xab\xe1\x50\x5b\xeb\x26\xcf\xe7\xcf\x1f\x6b\xf8\x71\x96\xa6\x59\x36\xcd\xa7\xeb\x4c\x4d\xf3\xa9\x69\x56\xdf\x91\x6e\xf9\xb4\x5a\x6e\x37\xbb\xbf\xef\xf6\xab\x6f\xe2\x38\xfb\x2f\x00\x00\xff\xff\x99\x9e\xdd\x36\x40\x07\x00\x00" + +func runtimeSyntaxPascalYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPascalYaml, + "runtime/syntax/pascal.yaml", + ) +} + +func runtimeSyntaxPascalYaml() (*asset, error) { + bytes, err := runtimeSyntaxPascalYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/pascal.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxPatchYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x5c\xce\x4d\x0a\xc3\x20\x10\x86\xe1\xbd\xa7\x18\xa4\x8b\xfe\x60\x0e\xe0\x2a\x07\x91\x80\x89\xa3\x11\x8c\x0d\x76\x42\x09\xf4\xf0\x65\x92\x16\x43\xc0\xd5\xfb\x7c\xa2\x3e\x26\xa4\x75\x46\x0d\xb3\xa5\x61\x14\xc2\x21\xe1\x40\x1a\x04\x00\x00\x6b\xb6\x13\x6a\x90\xc6\x34\xd7\x6d\xf2\x71\xd1\xfb\xdb\x45\x0a\x51\x96\x84\x2f\xbd\x0d\x15\xf4\x25\x86\x91\x42\x41\xcc\x1a\x64\x67\xcc\xa3\xb9\xcb\x9f\x1d\xeb\x7e\xaa\xed\xf7\xfa\xb4\xf0\x23\x1d\x9c\xa1\xa0\xe3\xae\x6a\xff\x17\xa5\xce\xdb\x15\x53\x7a\xbe\x19\xdb\xb6\xda\x64\x03\x66\xb2\x9c\xf9\xe7\x0c\xdf\x00\x00\x00\xff\xff\xef\xe3\x40\xbb\xf5\x00\x00\x00" + +func runtimeSyntaxPatchYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPatchYaml, + "runtime/syntax/patch.yaml", + ) +} + +func runtimeSyntaxPatchYaml() (*asset, error) { + bytes, err := runtimeSyntaxPatchYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/patch.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxPegYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8f\x41\x6b\xc2\x30\x18\x86\xcf\xf6\x57\x7c\x0b\x6e\x6a\x43\x32\xaf\x06\x67\x19\xec\xee\x65\xa7\xe5\x4b\x47\xac\x9f\x1a\x68\xd3\xd2\xc6\x0d\x47\x7e\xfc\xa8\x53\x27\xe8\x29\x90\x3c\xef\x93\xf7\xdd\xb8\x92\xc2\xa1\x21\x05\x0d\x6d\x93\x64\x4d\x81\x8a\xa0\x20\x01\x00\xe8\xdf\xbc\xad\x48\x01\x43\x94\x65\xd6\xd0\x76\xc8\x92\xa4\xdd\x97\xd4\xa9\x23\x21\xc0\xad\xc9\x07\xb7\x71\xd4\x2a\x60\xb9\xd6\xaa\x6b\x6c\x41\xca\x98\x54\xbf\x8a\x0f\x2b\x7e\xcc\xe9\x9c\x8a\xd9\xa7\x49\xaf\x81\xb9\x60\x27\x49\x51\xfb\x2e\x58\x1f\xa4\xdf\x57\xab\xa3\x09\x31\xd7\x5c\x98\x4c\x4f\xc5\xcc\xf0\x33\xd7\x1d\xaa\x55\x5d\xca\xba\xa1\xd6\x86\xba\xe7\xb4\xe0\x69\x96\x3f\x3f\x3c\x99\x28\x16\x71\x2e\xe2\xcb\x82\xdd\x34\x93\x5f\xb6\x67\x1f\xef\x36\xba\xb8\x1b\x2a\x9c\x2d\x8f\x7f\x6b\x9d\x1b\x93\x22\x9a\x9b\x82\x5d\x68\x9d\xdf\xf6\x10\x1b\x23\x22\xca\xa8\x73\x64\x66\x92\x22\x8b\xa3\xcb\xcd\xc8\x4c\xd2\xd1\x7f\xb6\xaa\xc8\x07\x05\x6c\x9c\xc7\xab\xfd\x13\x44\x81\x28\x64\x3a\x3c\x93\xa1\x5e\xd7\x0a\xd8\xfb\xf2\x6d\xa9\xb2\xcb\x0c\xdf\xef\x10\xc5\xce\xb6\xf2\x7b\xe7\x02\xfd\xe5\x81\x5d\xa9\xf8\xf0\x0e\xad\x80\x0d\x38\xf0\x08\x7c\xc0\x59\xf2\x1b\x00\x00\xff\xff\x2d\xa9\x92\x64\xe8\x01\x00\x00" + +func runtimeSyntaxPegYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPegYaml, + "runtime/syntax/peg.yaml", + ) +} + +func runtimeSyntaxPegYaml() (*asset, error) { + bytes, err := runtimeSyntaxPegYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/peg.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxPerlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x54\x5d\x6f\xe3\x36\x10\x7c\xcf\xaf\x50\x7d\x29\x8e\xbc\xf6\x1c\xa0\x8f\xe9\xa5\xee\x3f\x68\x81\x16\xe8\x43\x94\x00\x14\xb9\x92\x59\xf3\xcb\xe4\xca\x8e\xd0\xe9\x7f\x2f\x48\x25\x0e\x90\x1c\xee\xa1\x06\x2c\x50\xdc\xdd\xd9\xd9\x19\x8a\xa3\x75\xc4\x4b\xa2\xdb\x2e\x51\x76\x57\x57\x86\x98\x34\xdf\x76\x57\x5d\xd7\x75\x35\x18\x94\xa7\xdb\x6e\xd3\xf7\xdb\x74\xef\xfc\xc3\xf5\xa6\x45\xf6\xa4\x0c\xe5\xdb\x6e\xf3\xf8\xe1\xbb\xed\xa7\x1b\x41\xe1\xd4\xfd\x20\x77\x15\x43\x74\xb8\x96\x9b\xab\xab\x3c\x3b\x2a\xb7\x2d\xfb\x73\xb7\xb6\xd8\xf4\xfd\x20\x94\xd6\x94\x18\xca\xa9\xec\xa1\x58\x85\x9f\x30\xd8\x20\x0c\x7c\x34\x24\xa1\x85\x72\x8e\x32\xf6\xc2\xd8\x5c\xf7\x10\x13\xe2\x39\x20\xc7\xc8\x12\x2e\x16\xaa\x11\xb9\x43\x0c\x81\x34\x23\x16\xe4\x25\xb1\x84\x11\x83\x17\xba\x26\x20\x26\x0a\x12\x34\xda\x40\x06\xe4\x88\x09\x96\x10\x31\xfb\x24\x41\x42\xe9\x3d\xe2\x88\x93\x72\x78\x12\xa4\x61\x0b\x17\x58\x46\x92\x12\xa3\xd0\x81\x1d\xea\xe4\x11\x2e\xea\x03\x62\x3e\x48\xd9\xf7\x03\x2a\xfb\x89\x58\x68\xb8\x38\xd9\x80\x44\x94\xab\x3c\x48\x53\x4e\x48\xc9\x1a\xa4\x6c\x63\xb6\xbc\x20\x9d\x83\xf2\x10\xfb\x58\x18\x81\x18\x29\x47\x8e\x28\x94\x4f\x72\x58\xd6\xa2\xf3\x6c\x0d\xa6\x3c\x59\xf3\x9a\x27\x87\x45\x19\x93\xd7\xf4\x61\x09\xb3\x1f\x28\xb7\xb2\x61\x49\x31\xb3\x84\xb8\x9f\xca\x03\x31\x28\x18\x29\xd2\x19\x53\xc6\xd7\x9a\x50\x60\x4c\xc4\x25\xea\x83\x68\xed\x62\x95\x68\xf2\x6c\x3d\x61\xaa\x69\x53\xa6\x84\x3d\x3d\xc1\x06\xd3\x9e\x0c\x1b\x35\x3b\xfc\x1d\x6d\xb8\xcc\x7b\xa0\xa5\xe0\x60\x9d\x83\x53\x85\xe1\x28\x4c\xbc\x87\xb3\xe1\x00\x67\x0b\x53\xa8\x1a\x29\x27\x2a\xae\xdc\x55\x61\xe0\x0a\x2b\x86\x87\x3f\x34\x07\xcb\x24\x2a\xea\x44\x8c\x12\x0c\xb2\x3e\x49\x04\x7a\x62\xc4\x6a\x5e\xa2\xf0\x62\x67\x36\x48\x4a\x1f\x90\x6c\x22\xa4\x98\xaa\x98\x81\xc7\x1d\xd2\x5c\xf6\x38\xe2\x78\xc4\xf1\x09\x59\x55\x10\x12\xca\xb4\x03\x52\x99\xc8\x1d\xf4\x09\x26\xa2\x0d\x7a\x9c\x6d\x26\x14\x62\xf0\x9c\x03\x4e\x94\x0b\xe1\x6c\x83\xa9\x6d\x90\xd7\x69\xb3\xaf\xc5\x05\x45\xd7\x73\x88\x42\x74\x58\x69\x5c\x06\x2f\x24\x5c\x3d\x5e\xbe\x92\xf7\x95\xbd\x8f\x09\xc1\x80\x9b\xdb\x7c\x71\xba\x69\xdc\xd4\x2d\x7b\x3b\x32\xca\xde\x5f\x06\xce\xa4\x0c\xce\xd9\x32\xd5\xe8\xcc\xa6\x1e\xe4\x62\x03\x8a\x23\x4a\xa8\x95\xc4\x22\xa9\x26\x40\x89\x99\x51\x92\xb3\x42\x13\x2a\xdc\x3a\x3f\xca\xb1\xee\xb7\xb9\x9b\xb2\x85\x67\xb3\xa0\xcc\x43\xe1\x8c\xb2\xf8\x66\x46\x59\x8a\xd0\xca\xb9\xb5\x25\x93\x7f\x69\xcb\xe4\xdc\xb3\xc2\xcd\x7b\xce\x62\xa9\xeb\x3c\x07\xad\x98\x30\x7b\x55\x0e\x97\xa9\xe7\x20\x0c\x8d\xab\xbf\xcd\x8c\x36\x93\xc4\xdc\x6a\x4f\xca\xcd\x54\x70\x22\x8d\xb3\xb2\x2c\x92\x35\x72\x87\xb3\x0a\xac\x72\x56\x0b\xce\x2a\x87\xe7\xbe\x7d\x3f\x6c\x9e\xbf\xfd\x4a\x9a\x3c\x05\x7e\xbe\x00\x74\x0c\x6c\xc3\x4c\x20\x57\xda\xc3\x8e\xd5\xbc\x31\xe6\xfa\xa7\xfa\x71\xda\x11\x73\x70\x54\x0a\xe6\xc0\xd6\xe1\xbc\xb7\x8e\x40\x47\x04\x82\x63\x4c\xf5\x20\x62\x22\x68\x9f\xf0\x04\xdf\xd4\xc0\x5c\xa8\x71\x56\x35\xa0\x02\x6c\x51\x2b\x8d\x17\x1e\x89\xb4\x55\xae\xb1\xf8\xdc\xf7\xbf\x5c\xf8\x2d\x7e\x88\x75\x5b\xfc\x88\xbe\xdf\xca\x4b\x81\x35\x14\xd8\x8e\x96\xf2\x7a\x8d\xd5\x5f\x61\x95\xeb\x20\xf7\x7d\x7f\xfd\xeb\xf7\x0f\x9b\x4b\x80\x82\x69\xc8\x7f\xbd\x6e\xad\x37\x60\x77\xff\xf0\x02\xa8\x63\x28\xac\x02\x6f\x0b\x67\x1b\xa6\x9a\xbf\xe9\x7b\xb1\xfd\xd4\xf7\xb2\xdf\xe0\x78\xdc\xf5\x3d\xea\x1b\xd6\xf5\x3f\x75\xfd\xef\xba\xbe\xa9\xeb\x9b\x17\xce\x86\x46\x35\xbb\x46\xa4\xf8\x87\x9b\xed\xa7\x4b\x24\x65\x4a\x39\xea\xf7\x8c\xc5\x63\x15\xa8\xbb\xeb\x02\x9d\xe5\x5b\xde\x3f\x7f\x93\xb5\x6f\xee\xbd\x43\xfc\xf0\x16\xe5\xfa\xff\xa0\x3c\xde\xbd\x85\x79\xbc\xd3\x33\x7f\x03\xea\xd5\x97\xad\x57\x3a\xc7\xf7\x98\x5f\xbe\x74\x1f\xff\xf8\xf3\xb7\xdf\x3f\xbe\x85\xae\x9b\x5f\x43\xfe\x2f\x00\x00\xff\xff\xec\x33\x9f\xea\x07\x07\x00\x00" + +func runtimeSyntaxPerlYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPerlYaml, + "runtime/syntax/perl.yaml", + ) +} + +func runtimeSyntaxPerlYaml() (*asset, error) { + bytes, err := runtimeSyntaxPerlYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/perl.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxPerl6Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x54\x4d\x8b\x1c\x37\x13\xbe\xcf\xaf\x68\xe6\xf5\x0b\xea\x05\x8f\x21\x07\x1f\x36\x0e\x1b\x42\x72\x08\x18\x42\x08\x21\x07\xf7\x06\x34\x52\x75\xb7\x32\xfa\x1a\x55\xf5\xf4\x36\x3c\x3f\x3e\x48\x33\x6b\x3b\xbb\x21\x0b\xab\x1e\x54\xaa\x7a\x3e\xaa\xa4\xd1\x79\x92\x2d\xd3\x7d\x97\xa9\xf8\xf7\xbb\x9d\x25\x21\x23\xf7\xdd\xae\xeb\xba\xae\x46\xa3\x0e\x74\xdf\xed\xd5\x30\x1c\xf2\xfb\x37\xa8\x1f\x7f\xfb\x86\xf7\x6f\xfa\xfd\x6e\x57\x16\x4f\x7c\xdf\x12\xde\x76\xd7\x62\xfb\x61\x38\x2a\x6d\x0c\x65\x81\xf6\xba\x04\x68\xd1\xf1\x1b\x1c\x5d\x54\x16\x21\x59\xea\x61\x94\xf6\x9e\x0a\x66\x65\x5d\xa9\x7b\x48\x19\x69\x8d\x28\x29\x49\x0f\x9f\x98\x6a\xa4\x7f\x40\x8a\x91\x8c\x20\x31\xca\x96\xa5\x87\x55\xc7\xa0\x4c\x3d\x80\x94\x29\xf6\xa0\xd1\x45\xb2\x20\x4f\x42\x70\x84\x84\x25\xe4\x1e\xa4\xb4\x99\x91\x46\x5c\xb4\xc7\x93\x22\x03\xc7\xc2\x70\x82\xdc\xf7\x18\x95\x89\xe2\x51\x25\x26\xf8\x64\x4e\x48\xe5\xd4\x63\x22\x51\x06\x3e\x4d\x2e\x22\x13\x95\xaa\x1f\x79\x2a\x19\x39\x3b\x8b\x5c\x5c\x2a\x4e\x36\xe4\x35\xea\x00\x35\x27\x16\x44\x12\xe4\x92\x24\x81\xa9\x5c\xfa\xe3\x76\x4d\x5a\x17\x67\x31\x95\xc9\xd9\x2f\xe7\xfa\xe3\xa6\xad\x2d\xd7\xe3\xc7\x2d\x2e\xe1\x48\xa5\xa5\x1d\xb7\x9c\x8a\xf4\x50\x9f\x26\x7e\x24\x01\x45\xdb\xab\xbc\x62\x2a\xf8\x37\x10\x8a\x52\xb9\x72\x32\x27\xd5\xe0\x52\xb5\x66\x0a\xe2\x02\x61\xaa\xc7\xa6\x42\x19\x33\x3d\xc1\x45\xdb\x56\x81\x4b\x46\x3c\xfe\x4a\x2e\xe2\x44\x1b\xe3\xe4\xbc\x87\xd7\x2c\xf0\x14\x27\x99\xe1\x5d\x3c\xc1\x3b\x16\x8a\xd5\x13\xed\x55\xad\xd7\x3f\x54\x43\xe0\x59\xb4\x20\x20\x9c\x5a\xc7\x78\x52\xb5\xda\x44\x02\x8e\x16\xc5\x5c\x7a\x44\x7a\x12\xa4\xda\xac\x4c\xf1\xb9\x7d\xc5\x22\x6b\x73\x42\x76\x99\x90\x53\xae\x26\x46\x19\x1f\x90\x17\x9e\x71\xc6\xf9\x8c\xf3\x13\x8a\xae\x45\x48\x69\xdb\x06\xa2\x32\xe9\x1f\x60\x2e\xb0\x09\x4d\xe0\x79\x71\x85\xc0\x24\x90\xa5\x44\x5c\xa8\x30\x61\x75\xd1\x56\x18\x94\xab\xca\x12\x6a\x32\x83\x4d\x9d\x3b\x30\xd1\xa9\x2d\x6d\x97\x94\xaf\x83\x14\x2a\xed\x50\x79\x87\x94\x11\x2d\xa4\xf5\x57\x3e\xf7\xb6\xb9\xda\xfc\xe4\xd9\x8d\x02\x9e\xc3\x67\xa9\x85\xb4\xc5\x5a\x9c\x50\x8d\x2e\x62\xeb\xc8\xb2\x8b\x60\x4f\x94\x51\x33\x49\x54\xd6\x4d\x3a\xa7\x22\xe0\xec\x9d\x32\x84\x5a\xee\xaa\x1c\x7c\xae\xfb\x4d\x71\xf3\x94\x65\xb1\x1b\x78\x39\xb2\x14\xf0\x16\x5a\x1b\x78\x63\x65\xb4\xf7\x57\x48\xa1\xf0\x0c\x2b\xe4\xfd\xcd\xdb\xd6\x6d\x29\xd8\x20\x65\x89\x46\x0b\x61\x09\x9a\x4f\x58\xa2\xb2\x34\x5e\xfb\xd9\xcc\x6f\x4a\x7a\x2c\x2d\xe3\xa2\xfd\x42\x8c\x0b\x19\xac\xda\x89\xca\xce\xf6\x0f\x58\x75\x14\x5d\x8a\xde\xb0\xea\x12\x6f\x68\xc3\x70\xdc\xdf\xee\x76\xa5\x4a\x81\xa2\xdc\x2e\xb8\x49\x51\x5c\x5c\x08\xe4\xb9\x2d\x6e\xac\xcd\x1a\x53\xa9\xff\x54\x2f\x9f\x1b\xb1\x44\x4f\xcc\x58\xa2\x38\x8f\x75\x76\x9e\x40\x67\x44\x82\x17\x4c\x75\xf0\x30\x11\x4c\xc8\x78\x42\x68\x1e\x60\x61\x6a\x9c\x75\x0d\xe8\x08\xc7\xfa\x1f\x34\x32\x19\xa7\xfd\x8d\xc4\xac\x19\x8e\x61\xbc\x66\x46\x49\xb5\x9c\xbb\x50\xc4\x3a\x53\xc4\x0f\xbf\xff\xfc\xf1\x47\x84\xc5\x8b\x43\xa1\x3a\x36\x8c\x40\x32\x27\x5b\x81\x9e\x7f\xf9\xa5\x64\xb0\x6e\xe0\x5f\x03\x39\x4b\x51\xdc\xe8\xa8\x5c\x5f\xb7\xfa\xc7\xa2\x4b\xd5\xff\xe9\xcd\xf7\xff\x7f\xdc\x7f\xde\xa6\x68\xeb\x23\xd9\x61\x18\x86\xe1\x0f\xbc\xed\xbf\x84\xae\xcf\x63\xf7\xe9\x71\x77\x2b\x6b\x52\x64\xd1\x51\x0e\x2c\xc5\xc5\xa9\xea\xd8\x1f\xee\x86\x3d\xce\xe7\x61\xc0\xe1\x6e\x18\xf0\xcc\xc0\xd2\xa8\x17\xdf\xf0\x38\x3c\xbe\x3b\xdc\xbd\x7b\x8e\xe4\x42\xb9\x24\xf3\x9a\x98\xfa\xb3\xda\xd7\x7d\xd7\x45\x5a\xfb\x97\x04\xbf\xfd\x4f\x5a\xe1\xd6\xdb\xff\x1d\xee\x5e\x5b\x70\x08\xda\x94\xf4\x1a\xef\xc3\x87\x9f\x7e\xf9\xed\xd7\x8f\x2f\x91\x5e\x6c\x7e\x85\xf6\x77\x00\x00\x00\xff\xff\xd5\xbb\xe9\xc6\x73\x06\x00\x00" + +func runtimeSyntaxPerl6YamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPerl6Yaml, + "runtime/syntax/perl6.yaml", + ) +} + +func runtimeSyntaxPerl6Yaml() (*asset, error) { + bytes, err := runtimeSyntaxPerl6YamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/perl6.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxPhpYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x56\xef\x8f\xdb\xb8\x11\xfd\xdc\xfd\x2b\xbc\xbe\x43\x42\xee\xc6\xde\xeb\xaf\x00\xe7\xc4\x2b\x04\xd7\xdc\xa7\xa0\x2d\xda\xbb\x0f\x3d\x51\x1b\x50\xd4\xc8\x22\x4c\x91\x0a\x39\xf2\xc6\x77\x2f\xfd\xdb\x0b\xca\xde\x1f\xa9\x77\x71\x82\x20\x5b\xe4\x90\x33\xf3\xe6\xcd\xa3\x5a\xeb\x88\xf7\x03\xad\x66\x43\x37\x9c\x9d\x35\xc4\x64\x78\x35\x3b\x9b\xcd\x66\xb3\x3c\xe7\x75\x4f\xab\xd9\x5c\xa9\xe5\xd0\x0d\xe5\x9f\xfe\xfc\x97\xbf\xa6\xff\x56\xc5\xb7\xf3\xb3\xb3\x38\x3a\x4a\xab\xc9\x70\x31\x4b\xfb\xbe\x0e\x6e\x19\x06\x8a\x9a\x43\x5c\xcd\xe6\x6f\x71\x3d\x3f\x4e\x52\x8c\x87\xa1\xf2\xe6\xbc\x5a\x5e\x14\xf7\x13\xc7\x55\xac\x37\xab\xd9\x5c\x14\x56\xbe\x2d\xaf\xaa\x42\x68\x51\xd7\x11\x26\x06\xbf\xef\xd1\x34\x91\x52\xc2\x30\x38\x62\x44\xd2\x88\x6c\x8d\x23\x24\xdb\x10\xc6\xc6\x06\x59\xa0\x16\x3a\x91\x68\x83\x67\x59\xa0\x11\x16\x41\xc2\x6e\xe0\x82\xd9\x7e\x1a\x03\x13\xa2\x2c\x60\xb4\xf0\x3b\x9d\x30\xb0\x0d\x5e\xc2\x90\x67\x8a\x30\x96\x09\x26\x88\x86\xe0\xe0\x36\x31\x8c\x83\x44\x23\x34\x6b\xe1\x6c\x9a\xf6\x03\x39\x10\x6b\xeb\x12\x5a\x0f\xab\x5d\xd8\xc0\x46\x38\xb0\x04\xf5\xa2\xa6\x46\x16\x68\x2d\xb9\x26\x11\xa3\xb5\x1b\x61\xf4\xe4\x04\x63\x24\x89\x1c\x16\xda\x10\x7b\x08\x2b\x8b\x36\xea\x9e\x30\x3d\xb3\x75\x57\xfe\x71\xf1\xba\x42\x17\x61\x61\xfb\x0d\xac\x17\xc3\xc8\x48\x12\xdb\xba\xc1\x96\xf6\x1b\xf2\x70\xba\x26\x07\x47\x1b\xf2\x0d\x9c\x15\x7e\x2b\x0b\xf4\x5a\x58\x8f\x01\x71\x2b\xd1\x93\x1f\x85\x65\xea\xf3\x38\xb1\xd0\xa0\x28\xe1\xf5\x0e\x3e\x88\x83\x2f\x24\x13\xed\xc0\x12\x41\x38\x0c\x2c\xa6\x4c\x31\x21\x31\xf2\x30\xb2\xc4\x20\x74\xd4\x3d\xac\xe1\x31\x12\xf2\x1d\x36\x19\x7a\x59\xe0\x13\xa2\x18\xc0\x18\xeb\xbd\x44\x12\x1c\xed\x96\x64\x81\xa4\xfb\x01\x89\x84\x99\x92\x75\x64\x58\x22\xf5\xda\x39\xa4\x30\x46\x43\x48\x83\xf6\x48\x1c\x83\xdf\x20\x8d\xa2\xc6\x80\xbe\xd7\x71\x2f\xc1\xf4\x99\x75\xae\x26\xdb\x9e\xc0\x51\x9b\x2d\x46\xe1\x64\x81\x9d\x8e\xd8\xd9\x86\x02\x6e\xeb\x28\xc5\x6c\x79\x81\x6b\xf9\x24\x67\x96\xf4\x99\xc9\x37\xd4\x7c\x45\x9e\x3a\x34\x7b\x34\x76\x87\x8e\x7b\x87\x8e\x74\x23\x28\x97\xbf\x0d\x21\xd7\x9b\x2d\x3b\x02\xeb\x3a\x3f\x8f\xc6\xe8\x04\xe9\x5c\xc4\x38\x59\xc9\x27\xbc\x0e\x91\x86\x18\xcc\x57\x9e\x0e\x88\x22\xf1\xde\xd1\x53\x81\x0e\x64\xac\x76\xab\xd9\xfc\x45\x79\xf3\xa6\x2c\x57\x69\xd0\x86\x56\x55\x55\x5d\xbc\xf9\x3a\x99\xd5\x6c\x5e\xae\xd6\xd5\xdd\xa0\x6d\xc8\xb3\x6d\x2d\xe5\x9e\x11\xda\x31\xea\x8d\x09\x2e\x44\x74\x64\x37\x1d\xa3\x8b\xd4\xde\x91\x22\xf8\x4d\x43\xc9\x20\xf7\x29\x82\x37\xce\x9a\x2d\x82\x6f\x83\x19\x13\x82\x77\x41\x37\x08\xbe\x0f\x63\xa2\xb0\xa3\x88\x64\x7f\xbd\xab\x4b\x34\x87\xd8\xc1\x3a\x6e\x88\x91\x65\x00\x3b\xed\x46\xc2\xad\x6d\xb8\x93\xeb\xbb\x88\x4c\xf0\x89\xb5\xe7\x65\xe2\x68\x7d\x6e\x56\x35\x2f\x6f\xd4\xbc\xba\x50\xf3\x13\x1b\x3f\xf6\xf5\x21\xf4\xc2\xca\x6f\xca\xef\x16\xdf\xbf\x5b\xfc\x58\xfd\xf6\xfa\xd5\xeb\x2f\xcf\xec\xb7\x1c\x63\xc6\x40\xb4\x3c\x88\x4c\xb7\x8e\x8f\x7f\x36\x96\x61\xba\x18\x7a\x92\xab\xab\xab\xf2\x66\xf6\x87\xea\xf2\x61\x8f\xbe\x27\xcf\x59\x56\xce\x17\x8b\xe5\x65\xb1\x58\xdc\x43\xdf\x50\xab\x47\x37\xcd\x29\x55\x88\xa1\x1b\xb0\x96\x6a\x3e\x23\xdf\xac\xd5\x5c\xa9\x87\x22\x3d\x60\xbd\x34\x4e\xa7\x94\xc3\x28\xf5\xe2\xd7\x77\x8b\x5f\xbe\x5b\x7c\xff\x71\x51\x5d\x4a\xa5\xc4\x29\x0b\x94\xaa\x45\xa4\x4f\xa3\x8d\x04\xeb\x8d\x1b\x1b\x92\xe2\x63\xf0\x86\x64\xa1\x54\x7d\xb7\xe0\xa0\xac\x93\x75\xe6\xf5\xe4\x02\x07\xda\x26\xb4\xa3\x3f\x74\x0e\x99\x2e\xc0\xe8\x44\x38\x06\x0e\xfa\x6c\x19\xe9\xd6\xb2\xe9\xee\xcd\x75\xca\xd3\xd6\x13\x9a\x80\x86\x8c\xd3\x93\xef\xdc\x3c\x96\x61\xb3\x9a\xb5\xda\x10\xca\xf7\xa0\xea\xb3\xa1\x83\x04\xe9\x18\xf5\x3e\xcf\xe2\x80\x35\xea\x10\x1c\x2c\x53\x9c\x5a\x60\x17\x6c\x23\x1f\x05\xfc\x04\x1e\x47\x38\x94\x52\xaa\xba\x5c\xad\x9e\x64\x69\x4e\xb0\x7c\xb7\xf8\xa5\x7a\x84\xdd\x04\xdd\x13\x1b\x4f\x10\x3f\xd8\x94\x6f\xa0\x54\x82\x52\x12\xaf\xaa\xc7\xb8\x2d\xb7\xb4\xbf\x0d\x71\xea\xee\x8d\x0b\xb5\x76\x18\xc6\xda\x59\x83\x21\xda\x9d\x66\xc2\x10\x43\x3e\xad\xa8\x41\x62\xcd\xd6\x60\xe2\x95\xbc\x6f\x2e\xd6\x4c\x47\x8e\x08\xdb\x0f\x6e\x7a\x49\xd0\x75\xca\x82\x93\x31\xcb\x2c\x34\x14\x5a\xd8\x16\xe4\x12\x09\xdb\xca\x02\xe4\x1b\xdb\x4e\x1d\x35\xb5\x2c\xc6\x44\x19\x7d\x4f\xb7\xe0\x2e\x86\x5b\x18\x9d\x0b\xc3\x71\x8f\xdb\xce\xba\x1c\x48\x06\x58\x90\x6f\x64\x21\xda\x10\x49\x9b\x4e\x16\xcf\xa6\xef\xe9\x56\xa9\xf4\x88\x67\x07\x6c\xe5\xa9\x72\x88\x3a\x92\xde\xe6\xbc\xd8\xfa\x91\xb0\x09\x1c\x10\x89\xc7\xe8\xe5\x49\x33\xe5\xca\xe6\x35\x1c\x47\x42\xab\x5d\x22\xf8\xd1\x39\xfc\xf4\xaf\x9f\xdf\xe3\xc7\x77\x1f\xfe\xfd\x1e\x7f\xff\xf9\xc3\x87\x93\x85\xb9\xc6\xb9\x04\xeb\x63\x21\x04\xae\x70\x89\x05\x94\xba\x80\x52\x65\xf5\x7c\x87\xe7\xe6\x7e\x46\xb6\x94\xfa\x96\x3b\x9b\x30\xe8\x48\x99\x7c\xe4\x5a\x1c\xc7\x16\xd7\x72\xfe\xec\x67\x83\x58\x5f\x63\xbd\x5e\xe3\x7c\xbd\xc6\xf4\x83\x17\x2f\xa0\x54\xbe\xb1\x5a\x61\x8d\xc5\x35\x94\x3a\x97\x4f\x10\x76\xa7\xef\x3c\x3f\x46\x76\xf1\xf1\x31\xb2\x27\xfe\xca\x9c\x6f\x26\x5f\xce\x59\xa9\xfb\xac\xb1\xc4\x2b\xbc\x39\xcd\xfd\x91\x02\x8a\x5c\xb6\x25\x26\x21\x94\x17\x6a\x8e\x97\xf7\x23\x2f\x2b\x79\xf1\xf2\x74\xed\xa1\xae\x3f\x74\xfa\xd0\x33\x4a\x95\xba\x6e\x7d\xe4\xdd\x4b\xa5\xd4\x34\x50\xfd\x5f\xa4\x75\x3e\x19\x89\xd3\x21\xb1\x12\x4a\x55\x50\xea\x37\x28\xf5\x05\xa5\x90\x95\x3c\x95\x43\x71\x83\x47\x87\x8d\xbc\xba\x5a\x5e\xfc\xae\xd1\x37\xa7\x36\xd3\x6b\xbe\x12\xeb\x98\x97\x5c\x29\x75\x34\xca\x17\xf9\x66\xca\xe1\xe2\xea\x61\xec\xf0\x45\x38\x2b\xab\xb3\x13\xbd\x7c\xa4\xc3\xc5\x53\x6a\xfa\xd4\x49\xfb\xf6\xfc\x6f\xff\xf8\xe1\xa7\xff\xfc\xf3\xfd\xf2\x32\x4f\xff\x2f\x00\x00\xff\xff\x13\xf8\x60\xe7\xaa\x0a\x00\x00" + +func runtimeSyntaxPhpYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPhpYaml, + "runtime/syntax/php.yaml", + ) +} + +func runtimeSyntaxPhpYaml() (*asset, error) { + bytes, err := runtimeSyntaxPhpYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/php.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxPkgConfigYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8f\x4d\x4b\x03\x31\x10\x86\xcf\xcd\xaf\x18\xc2\x1e\xba\x2e\xbb\x78\x35\x20\x22\xf5\x58\x3c\x14\xf4\xe0\x66\x2d\x69\x3a\x6b\x07\x76\x37\x71\x92\x56\xaa\xf1\xbf\x4b\xaa\xf6\xd4\xdb\x03\xcf\xfb\xce\x47\x4f\x03\xc6\xa3\x47\x05\xde\x0a\xb1\xc5\x88\x36\x2a\x10\x00\x00\x59\x4d\x66\x44\x05\x52\xeb\xc6\xdb\x42\x0a\xc1\xfb\x01\x83\x3a\xe9\x1a\x3c\xa3\x67\x67\x15\xc8\xd7\xf9\xa3\x19\x31\x3d\x60\xb0\x4c\x3e\x92\x9b\xd2\xd3\x6a\x99\x9e\x91\x43\xe6\x85\x9b\xfa\x81\x6c\x0c\x69\xd1\x0f\xe6\x2d\x94\x4a\x5e\x18\xb1\xc2\xf7\x3d\x31\x86\xb4\xa4\x4d\x28\xe7\x79\x27\xd3\xc1\x44\x2c\xef\xce\xf9\x70\x1c\x37\x6e\x68\x9c\x47\x36\xd1\xb1\x02\x79\xfb\xaf\x68\x8b\x53\xa4\x9e\x90\x9b\x83\xe1\xd3\xd1\x85\xd6\x5f\xed\x7d\xfd\x62\xea\xcf\x75\xf7\x07\xd7\xf5\xcd\xba\xbb\xd2\xfa\xfb\xdc\x9b\x72\xb1\xb6\x3b\xc3\xcd\xc7\x8e\x22\x06\x6f\x6c\x7e\xba\x6d\xd5\x2f\x76\x5d\x55\x5c\x48\x2b\x90\xb3\x0a\xaa\x04\xd5\xac\x92\xe2\x27\x00\x00\xff\xff\x0d\x58\x66\xca\x49\x01\x00\x00" + +func runtimeSyntaxPkgConfigYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPkgConfigYaml, + "runtime/syntax/pkg-config.yaml", + ) +} + +func runtimeSyntaxPkgConfigYaml() (*asset, error) { + bytes, err := runtimeSyntaxPkgConfigYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/pkg-config.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxPoYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\xce\x4b\x6a\xc4\x30\x0c\x06\xe0\xf5\xf8\x14\x42\x2d\x4c\x1e\x8c\x0f\xe0\xcd\x1c\x24\x4a\xc0\xe3\xa8\x19\x43\xec\x18\x5b\xa5\x94\xfa\xf0\x25\x99\xbe\x16\xdd\x4a\xdf\x2f\xfd\x2f\x7e\x65\x79\x4f\x6c\x20\x6d\x4a\xcd\x2c\xec\xc4\x80\x02\x00\xd8\x57\xd1\x06\x36\x80\x44\x3a\x6d\x72\x7d\x46\xa5\xf2\xeb\xca\xc5\x1c\xe0\x02\x29\x73\xca\x9b\x3b\xc4\xad\x09\x65\xf1\x73\x0d\x65\x29\x92\x5b\xa2\x1b\x7e\x29\xb7\xc5\x22\x36\x8a\x2e\x92\x7d\x5c\x76\x8d\x0d\x11\x91\xae\xc3\x44\x38\xb6\x1d\x61\x3d\xff\x4c\xce\x63\xdb\x9d\xbf\xb3\x25\xb1\xf3\x76\x3d\x3e\x10\xe9\xeb\xef\xcd\x10\x38\x8a\x01\x6c\xa6\x3a\x0c\xa6\x24\xeb\xd8\x8c\x63\xfb\xd4\x0c\xd3\xc7\xa8\xbb\x76\x6f\xfb\xb0\x3e\xce\x1c\xe5\xe2\xee\x36\xeb\xb7\xbb\x17\x7e\x60\xc0\x3f\xb9\xfe\x3f\x6d\x00\x4f\x3d\xf4\x15\xfa\x53\x8f\xea\x33\x00\x00\xff\xff\x13\x06\x8b\x95\x2b\x01\x00\x00" + +func runtimeSyntaxPoYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPoYaml, + "runtime/syntax/po.yaml", + ) +} + +func runtimeSyntaxPoYaml() (*asset, error) { + bytes, err := runtimeSyntaxPoYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/po.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxPonyYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x94\xcd\x72\x9b\x3e\x14\xc5\xf7\x3c\x05\x61\xfe\x1f\x40\x8a\xed\xae\x3a\x61\xfc\x31\x99\x69\xbb\xcd\xa6\xab\x20\xe2\x11\x70\x89\xd5\x82\xc4\x48\x17\x3b\xee\x9c\x87\xef\x80\x53\xbb\x69\x13\x0a\x0b\x24\x9d\x9f\x74\xc4\x11\x97\x5a\x35\xc4\xc7\x8e\x52\xbf\x33\xfa\xe8\x79\x15\x31\x95\x9c\xfa\x9e\xef\xfb\xfe\x20\x6a\xd9\x52\xea\x07\x42\xcc\x06\xe0\x9f\xc0\xf3\x6c\xdf\x90\x4b\x47\x20\xf1\x1d\x4b\xa6\x96\x34\x8f\x4c\x11\x0e\x6b\x41\x69\x26\x5b\xcb\x92\xc0\x56\x2a\x46\x67\x55\xab\x58\xed\x09\x65\x23\x9d\x83\x63\xdb\x97\x0c\x59\xb2\xb1\x91\x10\x45\xf0\xc6\x62\xa5\x69\x3b\xd5\x90\xdd\x2a\xcd\x56\x69\xa7\xca\x29\xba\x77\x34\x25\xef\xa5\x45\x43\x0c\x6a\x0b\xaa\xa6\x40\x4d\x07\x14\x84\xba\xd7\x53\x94\x72\x06\x6c\x35\x2c\xd5\xd8\xcb\x06\x85\x79\x02\xcb\x47\x94\x46\xbb\xbe\x9d\xdc\x49\x61\x49\x7e\x1b\x40\x56\xba\x27\x58\xe2\xde\x6a\x90\xb5\xd3\x69\xa8\x1a\xbc\x23\x0d\x6a\x1c\xa9\x7a\x7c\x80\x74\x85\x56\x72\xb9\xc3\x61\x47\x76\xc8\xfb\x88\x83\xe2\x1d\xa4\x83\xa5\xd2\xec\xc9\xc2\x14\x5f\xa9\x64\x34\xb2\x2d\x2a\x39\x08\x95\x7a\x24\xc7\xa6\x86\xaa\x2b\xaa\xa7\x2c\x0f\x3b\xd5\x10\x2a\x03\x4b\x1d\x49\x46\xaf\x59\x35\xa8\x8d\x85\x7a\x33\x9c\x50\x88\x0d\x56\xeb\xe8\x0d\x0d\x10\xe2\x3f\x08\xf1\x0e\x42\x3c\x5c\xa0\x63\x5b\x98\x66\x66\x3a\xb2\x92\x8d\x3d\xa1\x09\x84\xb8\x86\x10\x31\xe6\x10\xe2\x0a\xff\x62\xb9\xc4\x7a\x3d\x35\x69\xb5\xc2\xd5\x0a\xcb\x15\xd6\x2b\x2c\xf1\xfa\x26\x4e\xa7\x07\xe5\x34\x43\x1b\x86\xd4\x15\x8c\xc5\xd3\xcb\xf4\x4f\x45\x31\xc2\xdb\x38\xbb\x4d\xee\xf3\x6c\x2b\x93\xef\xb7\xc9\xfd\x22\xb9\x11\xe2\xff\x3c\xfe\x95\x1e\x4e\x9d\xe5\xa5\x0a\x76\xca\xbd\x26\xcf\x0a\x63\x9a\x9f\x8c\xed\x09\xb5\x6c\x5e\x7e\xb5\x67\x52\xf7\x6d\x41\xf6\x99\x0d\x17\x45\xb6\x48\xde\x6f\xf3\x38\x42\xb8\x30\xd9\x22\xf9\xf0\xdc\x7e\xca\x16\xc9\x8d\x4c\xea\xdb\xe4\xf3\x69\x64\xe8\x6f\xf3\xeb\x50\x88\xd9\x73\x33\xda\x84\x21\xe1\x53\x14\x0a\x31\xe4\x99\x44\x9b\xb3\x10\xbd\x6a\xed\x86\x62\x7b\x1c\xac\x83\x71\xce\x0c\xd9\x83\x08\xf2\x28\x16\xc1\x85\x6d\xc7\x34\xc7\xee\x70\x39\x96\x76\x7c\xfb\xf1\x1e\xf9\x38\x38\xab\xa4\xab\xb3\x76\x19\x3d\xfd\x48\xfc\x2c\xf7\x7e\x5b\xd5\x0f\xc2\x07\x64\x59\xea\x3a\x59\x52\x9a\xe7\xd1\x7c\x3e\x8b\xff\x6a\x3d\x17\xe2\x4f\x4b\x11\xcf\x27\x0c\xd9\x54\x26\xf5\x83\x2f\x77\x1f\xef\xd2\x4d\xe0\xfd\x08\x00\x00\xff\xff\xea\x67\x0e\xde\x0d\x05\x00\x00" + +func runtimeSyntaxPonyYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPonyYaml, + "runtime/syntax/pony.yaml", + ) +} + +func runtimeSyntaxPonyYaml() (*asset, error) { + bytes, err := runtimeSyntaxPonyYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/pony.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxPovYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x52\xdb\x8e\xd3\x30\x10\x7d\xcf\x57\x84\xb2\x42\x6d\x25\xda\xf7\x70\x91\xf8\x02\x10\x0f\x48\xa8\x53\xca\xc4\x99\xa4\x06\xc7\x63\x8d\x27\xd5\x46\x0c\xff\x8e\x9c\xad\xb4\x65\xa5\x5d\x3f\x1d\x4f\xce\x65\x72\x92\xde\x07\xd2\x39\x51\x53\x27\xbe\x54\x55\x47\x4a\x4e\x9b\xba\xaa\xeb\xba\x2e\xcf\x22\x8e\xd4\xd4\x2b\x80\xdd\x3a\xf1\xc5\xbe\x7c\xfe\x66\x89\x2f\x82\x73\x81\x5f\x3f\x7d\xdf\xdc\xad\xaa\x4a\xa6\x40\xb9\x59\x34\x6f\xeb\x24\x94\x84\x5d\x53\xaf\x7e\x1c\x0e\x4d\x4e\xe8\xa8\x39\x1e\xb7\xaf\x6f\x2f\xeb\x8e\x5c\x40\xa1\xcd\xea\x2a\xca\x8a\x4a\x23\x45\x5d\xb2\xda\x75\x4e\x67\x12\x32\x37\x07\x1f\x3b\x12\x53\xc1\x98\x03\x2a\xd9\x88\x2a\xfe\xde\x84\x8b\xc2\xb2\xc3\x40\x1b\x80\xf6\x39\x23\x16\x3d\xf3\x20\x98\xce\xde\x59\x60\x87\xea\x39\xda\x94\x4c\xfc\x70\x56\xeb\xbc\x90\x5b\x46\x2e\xf8\x94\xa8\x3b\xb5\xf3\x4b\x76\x3d\x0f\xa7\x52\x97\x15\xc0\x7d\x9f\x49\x17\x88\x41\x4d\x86\xd6\x3a\x9f\x15\xa3\xa3\x87\x85\x7b\x96\xf1\xd6\xcd\x77\x14\xd5\xf7\x9e\xa4\xb4\x53\xfc\x94\xee\x75\x12\x7a\x96\x54\x38\xa1\x6c\x7a\xca\x3c\x89\x23\x6b\xd1\xfd\x1e\x84\xa7\xd8\xbd\xa8\xe9\x79\x30\x6e\x7f\x91\x53\x73\x38\x92\xe0\x7f\x2f\x35\x8f\x2d\x87\x1d\x27\x12\x54\x2e\x92\x35\xc0\x1f\x03\xf8\x6b\x00\x6b\x03\xd8\x18\xc0\x3b\x03\x38\x1a\xc0\xc1\x7e\x1a\x00\x80\x01\xdc\xd9\x7b\xfb\x68\xaf\xec\x83\xbd\x31\x00\x7b\xfc\x78\x89\x9c\xc7\x70\x8d\x9e\x62\xa9\xb3\xec\x98\x2c\x4f\xed\x02\x6e\xd3\x1d\x8f\xd7\x42\xf7\xfb\xdd\xf6\xe9\x74\xb9\x96\x93\x15\x65\x21\x01\x5c\x49\xe5\x50\xec\x96\x98\xed\xfe\x71\xf6\xf0\xf7\xd5\x87\x63\x55\xfd\x0b\x00\x00\xff\xff\x47\x8d\xbf\x93\xce\x02\x00\x00" + +func runtimeSyntaxPovYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPovYaml, + "runtime/syntax/pov.yaml", + ) +} + +func runtimeSyntaxPovYaml() (*asset, error) { + bytes, err := runtimeSyntaxPovYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/pov.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxPrivoxyActionYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x54\x41\x6e\xdb\x30\x10\x3c\xc7\xaf\x20\xd4\x1c\x9c\x0a\xeb\x07\xe8\x92\x43\x9f\x61\x39\x00\x43\xae\xa4\x45\x28\xae\xb0\x5c\xd9\x31\xc2\xfe\xbd\xa0\x6d\x39\x49\x6b\x14\xe8\xa5\xa7\xdc\x8c\xe1\xec\x78\x67\x76\xa0\x8e\x02\xea\x71\xc2\xc6\x4c\x42\x7b\x7e\x3d\x82\x75\x4a\x1c\x57\x2b\x8f\x8a\x4e\x1b\xb3\x32\xc6\x98\x42\x8b\x76\xc4\xc6\x54\x6d\xbb\x39\x53\xee\xab\xd5\x4a\xe6\x80\xa9\x39\x51\xc0\x38\x8e\x49\x6d\xd4\xcd\x33\x73\xd8\x74\x36\xa4\xc2\xdf\xbe\x6d\x9b\x34\x59\x87\xcd\x6e\xd7\xb6\xf0\x1c\xd8\xbd\xac\xb7\x57\xec\xed\xe7\x2e\xdf\x3f\x54\x37\x25\x54\xe6\x3f\x15\xea\x7f\x51\x58\x96\x80\xb5\xf5\x1e\x06\xb4\x1e\x25\xbb\xc1\xc6\x1e\xe1\x15\x3a\x96\x83\x15\x8f\xbe\xfc\xca\x2e\x10\x46\xbd\x90\xa0\xa3\xa0\xf8\x3b\xa8\xb6\xef\x0b\xc8\x51\x0b\x5a\x82\x03\xde\xa3\x1c\x84\x14\xb3\x93\x39\xba\x01\x3e\x8d\x2c\x20\x75\x10\x39\x22\x8c\x56\xdd\x70\x05\xa3\xe3\x91\x62\x0f\x8e\xf9\x85\x30\x2d\x38\xcf\xda\xf3\x0d\x3c\xa1\xec\x51\x16\x65\x8f\x36\xd2\x68\x15\xa1\xa7\x2e\x65\xcf\x87\xd8\x8b\xf5\x08\x83\xea\x04\x7b\x94\x44\x1c\x73\x67\x93\x82\xa0\x27\x41\xa7\x29\x5f\x6c\x75\x2c\x0e\x41\xf1\x55\x61\x64\x8f\xf9\x92\xc4\xc9\x8c\x90\xc7\x3c\xd8\xe8\x03\x82\x4d\x80\xe3\xa4\x47\xf0\xec\xe6\x11\xa3\x7e\x78\xa0\xd1\xf6\x98\x07\xf2\x08\xd6\x39\x9c\x14\x82\x8d\xfd\x7c\x05\x97\x94\x3c\xa5\x89\x13\x95\xca\x9c\x1f\x3a\xe1\x71\x31\x71\x02\xa8\x2b\x5b\x50\x47\xe8\x21\x51\x74\x17\x01\xc1\x0e\x45\x16\xd2\x9c\x50\xc0\xf6\x65\x87\x40\x23\x69\xd1\x8f\xe8\x34\x5f\x0f\x00\xa1\x78\x5d\x94\xf2\x24\xb8\x2f\xff\xef\x78\x9c\x04\xd3\x29\x8d\x25\x88\xfc\x29\xca\xe5\xd8\x9f\xc1\xcb\xb1\xd3\x79\x74\xb9\x05\x70\x0c\xc7\x9c\x50\xcf\xfe\xcf\x7d\x46\xf9\x7b\x83\xdb\xb6\xfe\x2a\xe0\x57\x01\xff\x6f\x01\xd3\x84\x8e\x6c\xf8\x31\x58\x39\x55\xb0\x6d\x37\x8f\xef\xa4\xb1\x84\xd9\x98\x6a\xfd\x94\xdf\x3f\xa5\xbb\x87\x6f\xeb\xed\xd3\xdb\x6e\xf3\xfd\xe1\xf1\x7e\xe1\x52\xf4\x27\x17\x83\x95\xcd\x61\x20\xc5\x33\xd9\x54\x1f\xe6\xea\x5b\xec\xc6\x54\x77\xb5\xa9\xb3\xa9\xef\xea\x6a\xf5\x2b\x00\x00\xff\xff\x10\xd4\x24\x50\x6a\x06\x00\x00" + +func runtimeSyntaxPrivoxyActionYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPrivoxyActionYaml, + "runtime/syntax/privoxy-action.yaml", + ) +} + +func runtimeSyntaxPrivoxyActionYaml() (*asset, error) { + bytes, err := runtimeSyntaxPrivoxyActionYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/privoxy-action.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxPrivoxyConfigYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x52\xcb\x6e\xe4\x38\x0c\x3c\xa7\xbf\x42\xf0\xe6\x90\x6c\x83\xd9\xcb\xee\xc5\x97\xfd\x90\x20\x01\xd4\x52\xd9\x16\x42\x3d\x86\xa2\x3b\x69\x8c\x3e\x7e\x20\xa7\x9d\x64\x82\xb9\xe8\x41\x16\xc9\x62\x91\x53\x60\xe8\xa5\x60\x34\x45\xc2\x39\xbf\x5d\xc8\xe5\x34\x85\xf9\x70\xf0\x50\x38\x1d\xcd\xc1\x18\x63\x3a\x2c\xd9\x88\xd1\x0c\x57\xdc\x3f\xef\xb8\xdb\xe1\x70\x90\x95\x51\xc7\x0d\x47\xa6\xaa\x55\x44\x24\x1d\xcd\x70\x67\x9d\x43\x51\x0a\x49\x21\xfd\x05\x4f\x82\x1f\x2b\xaa\xd6\x66\x9d\x86\x9c\x6a\xcf\xdc\xac\x8f\x21\x91\xf5\x5e\x50\x6b\xb3\xcc\xf9\x95\xdc\x1c\x76\x30\x39\x59\x93\x5b\x42\x9a\xdb\x69\x9d\x26\x08\x71\x88\x41\x9b\xcb\xb1\xf4\x88\x90\x13\x31\xce\xe0\xd6\x49\xf9\x20\xfd\x4e\xd8\x0a\x50\x5d\xac\xf4\x48\x8f\xd3\xda\xcf\xc9\xae\xac\x54\x21\x67\x08\x69\x88\xc8\xab\x36\x8f\x74\xa1\xce\xb6\xd6\x86\x64\x4f\x0c\xfa\x92\x7c\x37\xc1\x07\xa5\x2b\xef\xdd\x26\x88\x59\x41\x8b\x6a\x21\xcd\xf3\xcc\xf8\xe6\xf9\x30\x4e\x59\x1c\xe8\xc4\xd9\xbd\xd4\x36\x05\x56\xc8\xd6\xfc\x94\xe5\xd5\x8a\xdf\x6f\x78\xba\xb2\x27\x81\x4a\x40\xdd\x3d\x54\x7b\xe8\xbf\xdf\xbe\xf6\xf7\xff\x7f\x6d\xb1\xc9\x33\xc8\x56\x42\x2c\x7a\x21\x9f\x5d\xcf\xb4\x4a\xaa\x94\x5f\xda\x92\xab\xf6\x51\xb6\x17\xa0\x90\xe5\x70\xc6\x87\x0c\x1c\xaa\xe2\x73\x10\x9c\xe7\x2e\x26\xe7\x79\x23\x1a\xed\x1b\x39\x0e\x48\x4a\x9f\xfa\xd6\x56\x20\x71\xd3\x65\x53\xaf\x48\x5f\xa2\x90\xa6\x4c\xab\x70\xab\x21\xcd\x0c\xd2\x45\x60\x3d\x7c\xeb\x1c\xa1\x1f\x05\x6b\xe1\xa0\xc4\x56\x66\xd0\x94\x25\xd6\xa6\x88\x85\x7b\xd5\xab\x6e\x9a\x19\x62\x15\x54\x42\x01\x87\xd4\x47\xa9\xb2\x56\xdd\x28\x6d\xaf\xcf\x6a\x6b\x85\x50\xb4\x69\xb5\x7c\xff\xf8\x38\xd6\x62\x1d\xc6\xa7\xa7\xe1\xba\x9b\x2e\xc7\x7d\x33\x9f\xdb\x17\xff\xfd\x5f\x77\x8f\xcf\x3f\x9f\x1e\xfe\xbe\xff\xff\x76\xc7\x86\xe4\xb7\x46\x17\x2b\x0f\xaf\x4b\x50\xbc\x83\xcd\xf0\x25\xee\xf8\x27\xf4\x68\x86\x9b\xa3\x39\x36\x73\xbc\x39\x0e\x87\x5f\x01\x00\x00\xff\xff\xcd\xb0\x1c\xf1\x60\x03\x00\x00" + +func runtimeSyntaxPrivoxyConfigYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPrivoxyConfigYaml, + "runtime/syntax/privoxy-config.yaml", + ) +} + +func runtimeSyntaxPrivoxyConfigYaml() (*asset, error) { + bytes, err := runtimeSyntaxPrivoxyConfigYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/privoxy-config.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxPrivoxyFilterYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\xd0\xcb\x6a\xc3\x30\x10\x05\xd0\x75\xf4\x15\x83\x9a\x85\x5d\x21\x7f\x80\x36\x21\xa4\x6a\x1a\x08\x5d\xb8\xa6\x1b\x3f\x40\x38\x63\x2c\xb0\x15\x23\x4d\x1f\x69\xfd\xf1\x25\x71\xfa\x24\xdb\x6e\x87\x33\x5c\xee\x6d\x6c\x87\x74\x18\x50\xc1\xe0\xed\xf3\xfe\xf5\x20\x1b\xdb\x11\x7a\xc6\x76\x48\x58\x93\x02\x06\x00\x70\x64\xce\xf4\xa8\x80\x17\x45\x32\x91\x39\x67\xcc\x3f\x75\x18\xd4\x89\x48\x08\x64\x08\x7b\x74\xa4\x80\x57\xd1\xed\x66\x9b\xe9\x74\x5c\x6d\x37\xfa\x3e\x93\x77\x7a\x79\xa3\x53\x79\xf1\x98\x2d\xd7\x6b\x9d\x8e\x0f\x3a\x7d\xd4\xe9\x1f\xf9\xfb\x38\xc9\x58\x41\x6e\xe4\x9b\x2c\x05\x3f\x27\xdb\x1d\x3a\xb2\x8d\x45\xff\xef\xd1\x9f\x91\xf5\xde\x05\x32\x8e\x92\x30\x60\x6d\x4d\xb7\x6a\x8d\x3f\xad\x53\x14\xc9\xe2\x1b\xf5\xe7\x3d\xa2\x6a\xcc\x73\x15\x06\x53\xa3\x2a\xcb\xf8\x2a\xca\xab\xf7\x32\xb9\x8e\x17\xf3\xaf\x0e\xee\x58\x42\xd6\xad\xf1\xc9\x4b\x6b\x09\x27\x0c\xfc\xc7\x9f\xb8\xa4\x15\xf0\x99\x00\x31\x82\x98\x09\xce\x3e\x02\x00\x00\xff\xff\x80\x28\x92\xe2\xd1\x01\x00\x00" + +func runtimeSyntaxPrivoxyFilterYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPrivoxyFilterYaml, + "runtime/syntax/privoxy-filter.yaml", + ) +} + +func runtimeSyntaxPrivoxyFilterYaml() (*asset, error) { + bytes, err := runtimeSyntaxPrivoxyFilterYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/privoxy-filter.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxPuppetYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x54\xd1\x6e\xe3\x36\x10\x7c\xf7\x57\x28\x3a\x05\x91\x64\xd8\xb9\x97\x3e\x9c\xd0\x26\x39\xa0\x2d\xd0\x87\xe2\x50\xa0\x40\x83\x23\x29\x87\xa6\x56\x16\x61\x89\x54\x48\x2a\xb1\x9d\x4d\xbf\xbd\xa0\x2c\xdb\xb2\x83\x03\x1a\x04\x32\x39\x33\xdc\x19\x5a\xeb\x2d\x65\x0d\x6e\xdb\x42\x16\xb4\x5d\xdb\x82\x9b\x4c\x0a\x70\x20\x5c\x16\x4c\x82\x20\x08\x3c\xad\x78\x03\x59\x10\x52\x3a\x6f\xdb\x28\x9c\x4c\x4c\x57\x83\xcd\x7a\x7a\x16\x14\x50\xf2\xae\x76\x59\x10\xe6\x84\x64\xb6\xe5\x02\x32\xc6\x62\xc2\x67\x3b\xe6\x1f\x9f\x67\x5f\x16\x6c\x9a\x84\x83\x5c\x16\xa0\x9c\x2c\x25\x98\xf9\x0b\x37\x7d\xd5\xc8\xcb\xb2\xa3\x38\x63\xd3\x83\x78\x9f\x2b\xa4\x74\x19\xf3\x6e\x05\xdc\xa2\xd0\x4d\xdb\x39\x30\x28\x8c\x56\x08\x1b\x10\xe8\x13\xf6\x8f\x65\x27\xd6\xe0\x70\x65\x74\xd7\x62\xa5\xad\x43\xa9\x1c\x98\x92\x0b\xc0\xf5\x4f\xb5\x5e\x49\x85\x0d\x17\xbc\x73\x95\x36\x72\xc7\x9d\xd4\x1e\x90\x35\xaf\x25\xb7\xfd\xaa\x96\xd6\x61\x23\x36\xd8\xe8\x4e\x39\x54\x7c\x25\xb5\x5d\x08\xdd\x34\x5c\x15\xa7\xad\x72\x5c\xb8\x8b\xed\xde\x76\xc0\x7a\xf7\xd1\xba\x80\x16\x54\x01\x4a\x6c\xc7\x28\x58\xc1\xeb\x7d\x8c\x31\xba\x71\x52\x95\x7a\x0c\x9d\xd5\xb6\x60\x5e\xa4\x80\x8b\xed\x47\x87\x81\xf8\x68\x72\x20\xce\x7d\x06\xf4\xcc\xca\xc9\x06\x5a\x30\x52\x17\xa8\xb4\x93\xe5\x16\x5b\x2e\xd6\x7c\x05\x68\xc0\xea\xce\x08\xb0\x68\x74\xff\x3e\xac\xa8\xa0\xe8\x6a\x38\x2e\x8a\x85\xe3\x76\x8d\x16\xea\xa5\xd6\x35\x70\xe5\x97\x8d\xde\x6b\x86\x2b\x58\x5b\x2d\x0e\xaf\x03\x8a\xc5\x1a\xb6\x1e\xea\x3f\x9c\x77\x71\xb2\xd8\x62\x67\xc1\xe0\x4b\xcd\x15\x6e\xbb\xc6\x40\xab\x71\x57\x5a\xdc\x69\x05\xb8\x6b\xb5\xae\x91\x2b\x51\x69\x93\x50\xba\x3c\xf4\x8d\x75\xdc\x41\x03\xca\x0d\xcd\x23\x6a\x6e\x2d\x16\x50\x4a\x05\x28\x4b\x84\xda\x02\x76\xaa\x80\x12\xa5\xaa\xc0\x48\x67\xcf\x8e\x6f\x9b\xa5\xae\xb3\x20\x8c\x7f\xc1\x19\xfe\x8b\x77\x3f\xee\xde\x98\xd2\x08\x1f\xf0\xe1\x21\xb9\xa7\x74\x49\xbe\xce\xbe\xb3\x29\xf9\x3c\xfb\xf2\x75\xf6\x7d\xe1\x7f\x01\xe9\xc7\x9a\x24\xe8\xff\x18\xe6\x49\x76\x90\xb2\xe9\xc8\x5e\x68\x65\x1d\xef\xc3\xdf\xc6\x24\xbf\x65\x18\x53\x4a\xe9\x6d\x92\xa4\xb7\x44\xea\x66\xc3\x52\xbc\x36\x94\xbe\xc5\x24\x7f\x1f\xc8\xf7\x24\x49\x29\x7d\x1f\xe8\xcb\x4a\x73\xeb\x8c\x54\xab\x2c\x08\x9f\x48\xfe\xc4\xd2\x27\xbc\xde\x50\xfa\xe6\x8f\xfb\x53\x3f\x96\xd3\x30\x26\x39\x0d\x07\x13\x1a\x7a\x97\x10\xaf\xc9\x5f\xff\xb0\xfb\x51\x81\x23\x12\x93\x3c\xf1\x48\x32\x20\x3f\x93\xfc\x8e\xa5\x77\x47\x9e\x90\x9c\x79\x9e\x1d\x91\x88\xe4\x91\x47\xa2\x23\x92\x93\x3c\xf7\x48\x3e\x20\x57\x24\xbf\x62\xe9\xd5\xf1\x8b\x6c\x41\x48\x5e\xef\x27\xc7\xff\xba\xc4\x4d\x4c\xf2\x9b\xe1\x0a\x37\x49\x92\xde\xe0\x35\x79\x7e\x65\xe7\xf9\x7b\x60\x1c\xff\xf9\x95\x9d\xd2\xf7\xec\x38\x7c\x0f\x8c\xb3\xf7\xc0\x38\xfa\xf3\x2b\xbb\x48\xee\xc7\xc8\xbe\x27\x3f\x91\xfc\x8d\xcd\xd3\x08\x3f\x45\x17\xe4\x7c\x69\xe4\xaa\xea\x35\x27\xd1\x49\xe5\x74\xa1\x7d\x0f\x3d\x3e\x3e\xe2\xdf\xdf\x7e\xfd\x86\xbf\xff\xf1\xf8\xe7\x6f\x48\xe9\xfd\xfe\xff\xd4\xa8\x7e\x16\xb8\x99\xa8\xb8\x99\xbf\x56\xd2\xc1\x7e\x30\x07\xe1\x68\x46\x4f\xa3\x70\xf2\x5f\x00\x00\x00\xff\xff\x70\xcf\x41\x80\xfe\x05\x00\x00" + +func runtimeSyntaxPuppetYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPuppetYaml, + "runtime/syntax/puppet.yaml", + ) +} + +func runtimeSyntaxPuppetYaml() (*asset, error) { + bytes, err := runtimeSyntaxPuppetYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/puppet.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxPython2Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x55\x4d\x73\xe3\x36\x0c\xbd\xfb\x57\x68\x9d\xb4\x71\x92\xda\xdb\x6b\xdd\xaf\xed\x74\xa6\xc7\x9e\x7a\xaa\xe5\x6a\x28\x11\xb2\xd8\xf0\x6b\x40\xc8\xb6\x52\xf4\xbf\x77\x48\x4a\xb6\xe3\x8d\xa7\xbd\x74\x32\x31\x9e\x61\x02\x7c\x78\x04\xc1\x56\x69\xa0\xc1\xc3\xba\xf0\x03\x75\xce\xce\x66\x12\x08\x1a\x5a\xcf\x8a\xa2\x28\xe2\xaf\x56\x18\x58\x17\xf3\xb2\x5c\xf9\xe1\x7e\x9e\xdc\x1d\x08\x09\xb8\x2e\xe6\x7f\xdc\x7d\x58\x3d\x7d\x5c\x80\xdd\x17\xcf\x8f\x3f\xe6\x0c\x8b\x82\xef\x1f\xe7\xb3\x19\xf6\x1a\xc2\x7a\x96\x02\xee\x8a\xba\x57\x9a\x96\xca\x16\xae\xfe\x13\x1a\x0a\xc9\xbd\x2c\x1a\x67\x03\x09\x4b\x69\x83\x7a\xf1\xab\xb3\xc0\x01\x74\xcb\xbf\x61\x0f\xfc\x8b\xd0\x01\x1e\xcb\xb2\xce\xdb\xbe\xc9\x23\x88\x50\xd5\x3d\xc1\x8d\x54\x55\x55\x8b\x00\xa1\xaa\xb8\xaa\x52\x90\xb2\x09\x37\x5a\x84\xec\x95\x50\xf7\xbb\x8c\x54\x43\x19\xb8\x26\xd9\x58\x77\x02\x06\x4c\x0d\x18\x46\x4c\x9d\x93\x19\x47\x51\x12\x88\x64\xab\xea\x06\xc7\xb6\xb7\x0d\x29\x67\x27\x8a\x4a\x82\x25\xd5\xaa\xa4\x5d\x24\x29\xea\xc0\xc2\x7b\x3d\x70\x23\xb4\x16\xb5\x06\x6e\x3a\xe4\xc6\x78\x6e\x9c\xf1\x4a\x03\x4b\xd0\xb1\x54\x96\x2a\xfe\xef\x8d\x93\x0c\x7b\xa1\x19\x8e\xd0\xa4\x8f\xc8\x95\x5b\xa5\x09\x90\x5b\x87\x46\x10\xef\x80\x52\xcc\x4e\xbb\x5a\xe8\xc0\x9d\x08\xe9\x7b\x27\x42\xc7\x1d\x68\xcf\x1d\x1c\x59\x49\x56\xd6\xf7\xc4\xca\x12\xa0\x65\x15\x54\x52\xb0\x01\x56\x21\xf4\x75\x52\x8a\x35\x58\xd6\xae\x89\x69\x8c\x38\xb2\x51\x96\x2d\x1c\x89\x5d\x43\xec\x3c\x58\x76\x28\xd9\xbb\x03\xa3\xb0\x3b\x60\x14\x87\x2a\x67\x45\x90\x7d\x03\x8c\xa0\x9d\x90\x8c\xe0\x91\xd1\xf5\x56\x72\x18\xd9\xf5\x56\xc5\x62\xf7\x02\x03\xbf\x2a\xcf\x55\xa5\x8c\x77\x48\xd7\x72\x06\x0f\x8d\x12\xba\xc8\xfa\x17\x51\xfa\x9b\x82\x56\x95\xa8\xf3\x09\x09\x29\xb3\xb5\xd9\x46\x81\x33\x30\x3e\x5b\x07\xd8\xc0\x08\x8d\xd7\x70\x1c\xb1\x6d\x04\x4d\x90\x84\xb2\x53\xb7\xe8\xc9\x46\xf6\x13\x56\x04\xe6\xaa\x87\x40\x07\xad\xc6\xcc\x52\xed\x27\x6b\x5c\x26\xd2\x6a\x37\xe6\x1f\x8f\x69\xc2\xa7\x54\x3b\xa0\x73\x86\x78\x66\x19\x8c\x04\x95\x55\x34\x82\xc9\xee\x27\x0b\x98\x5d\x1a\x72\xb3\x6b\x67\x73\x87\xeb\xd0\xa9\x36\xff\x36\xf1\x30\x7d\x2e\xc8\x42\x5e\x62\x9d\x7d\x05\x74\x09\xbb\xb1\x16\x97\xc9\x79\x17\x46\x7b\x48\x16\x27\x71\x71\x52\x17\x27\x55\x71\xaa\x18\x2f\x4a\x46\xf0\x30\xd6\x1c\xfb\x20\x83\x0b\x4a\x78\x5a\x38\x91\xc2\x71\x67\x3c\x6d\x89\x17\xcb\x2f\x61\x5f\x67\x70\x1c\x23\xc2\x85\xa8\xe1\x42\xd4\x70\x29\x6a\x98\x16\x8c\xd1\x29\xf8\x6d\xd7\xc5\xa1\x38\xb5\x59\x1e\x90\xa9\xc1\xd2\x50\x21\x54\x76\xc7\xb5\x73\x9a\xeb\xbe\x6d\x01\xb9\x1e\x08\x04\xa2\x18\x12\x0a\x9c\xee\x4e\x6e\x58\x1e\xbb\x8b\x63\x87\x30\xd8\xde\x00\x0a\x4a\x57\x16\x38\x35\x03\xb7\xe8\x5e\xc1\x06\x48\x57\x91\xb5\x0a\xc4\xf1\xe4\xd8\x08\xcf\x06\x8c\xc3\x61\xaf\xe0\xc0\x79\x74\xb2\x47\xe7\x01\x69\x60\x84\x3d\x60\x80\x74\xa3\x38\x15\xc7\x81\x04\xa9\x66\xdc\x38\x10\x72\xe8\x3d\x20\x53\xef\x35\x70\x2c\x23\xdd\x3a\x27\x81\x8f\xe9\xbe\xbe\xad\x59\x42\x1b\xbb\xeb\xd6\xc4\x92\xd0\x16\x1b\xb1\x7c\xfd\x69\xf9\x7b\xf5\xf5\xf2\x9b\xed\xf3\x39\xf2\x05\x86\x83\x43\x39\x85\x45\x1a\x60\xe0\x34\x8c\x85\x95\x2c\x02\x8b\x10\x00\x89\x6b\x04\xf1\x92\x25\xe2\x78\xc7\x94\xed\xe3\x9c\x6b\xe3\xac\x63\xd0\xaa\x65\xd0\x01\x18\x8e\x0d\x78\xe2\x56\x59\xa1\xf5\x10\x67\x5b\x14\xca\x8c\x53\x8d\x55\xcb\x79\x5e\xb0\x8a\xb3\x8b\xb5\x30\xb5\x14\x6c\x1d\xb1\x43\xf6\x31\xb9\xc7\xa8\x27\x0a\x15\xe2\x1c\xa2\x1e\x2d\x13\x0e\x7c\xe8\xa2\xf4\x07\x45\x1d\x0f\x0a\xb4\xbc\x16\xa1\x71\x28\xc8\xe1\x54\x4c\x8d\x6a\xd7\xd1\x0e\x01\xec\xba\x98\x7f\x5a\x3d\x6d\x16\xdb\xf3\xf2\x78\x16\x97\xab\x2f\x4b\x5f\x6c\x56\xeb\x6f\xbf\x7a\x7e\xe2\xef\x3f\x94\xe5\x17\x9f\xb6\xfc\x1d\xff\xc0\x1f\x79\xc9\x5f\x3e\x9e\x13\x78\x81\x60\xa9\x83\x00\xef\xa7\x58\x3c\xfe\xf5\xf7\x96\xcb\x72\xc3\x65\xb9\xbd\x88\xb3\x7d\x7a\x9a\xae\x5e\xbf\x55\x76\x67\xdd\x37\xe9\x94\x52\x75\xa7\x65\x26\x25\x1e\xb3\x14\x71\x2f\x4c\xa7\x94\xfe\xe6\x27\x3f\x58\xf9\x8e\x37\xbf\xe9\xc5\x66\xfb\xaf\xf9\x1e\x1e\x1e\xae\x93\xbd\x71\xbd\x93\x69\x2c\x20\xdf\xae\xf7\x18\x7e\xce\xee\xec\x09\x2f\xca\xa7\xa2\xcb\x72\x75\xbd\xcb\xe9\xeb\xf5\x4e\xf9\x61\xf9\xb9\x13\x78\x0e\xfd\xaf\x74\x3e\x2f\xef\xff\x24\x73\x43\xe5\xbb\x6b\x12\xf7\xef\x2a\xfc\x4f\x00\x00\x00\xff\xff\xcc\x2b\xa2\xe6\xe5\x09\x00\x00" + +func runtimeSyntaxPython2YamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPython2Yaml, + "runtime/syntax/python2.yaml", + ) +} + +func runtimeSyntaxPython2Yaml() (*asset, error) { + bytes, err := runtimeSyntaxPython2YamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/python2.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxPython3Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x55\x4b\x8f\xe3\x36\x0c\xbe\xcf\xaf\xf0\x66\xa7\x9d\x57\x93\x2d\xb0\xa7\x4e\x5f\x5b\x14\xe8\xb1\xa7\x9e\x1a\xa7\x86\x6c\xd3\x31\x3b\xb2\x24\x50\x74\x12\x4f\xd9\xff\x5e\xe8\xe1\x24\x93\x9d\x41\x7b\x29\x06\x03\x7e\x66\xa4\x8f\xe4\x27\x8a\xea\x50\x83\x51\x03\x3c\x16\x6e\xe2\xde\x9a\x8f\x57\x57\x2d\x30\x34\xfc\x78\x55\x14\x45\x71\xfa\x79\x51\x96\x2b\x37\x7d\xbc\x5e\x44\x7f\x0f\xaa\x05\x7a\x2c\x16\x7f\xbc\x7f\xb7\xba\xff\x70\x0b\x66\x57\x3c\xdc\xfd\x98\x39\xae\x17\x57\x57\x34\x6a\xf0\x89\xe4\x7d\x51\x8f\xa8\x79\x89\xa6\xb0\xf5\x9f\xd0\xb0\x8f\xee\x65\xd1\x58\xe3\x59\x19\x8e\xec\xf5\xed\xaf\xd6\x80\x78\xd0\x9d\xfc\x46\x23\xc8\x2f\x4a\x7b\xb8\x2b\xcb\x3a\x85\x7c\xc1\xa3\x98\x09\xeb\x91\xe1\x0d\xaa\xaa\xaa\x95\x07\x5f\x55\x52\x55\x71\x13\x9a\x88\x1b\xad\x7c\xf2\xb6\x50\x8f\xdb\x84\xb0\xe1\x04\x6c\x13\x6d\x28\x3a\x82\x01\x86\x1a\xc8\x67\xcc\xbd\x6d\x13\x0e\x8a\x44\x10\x92\xad\xaa\x37\x72\xec\x46\xd3\x30\x5a\x33\xa7\x88\x2d\x18\xc6\x0e\xa3\x6e\x21\x49\x55\x7b\x51\x5a\x8b\x32\x93\x28\xdf\x20\x4a\x8d\x46\x1a\xa5\xb5\xaa\x35\x48\xd3\x93\x34\x76\x70\xa8\x41\x5a\xd0\xa1\x64\x69\x31\xfc\xef\x06\xdb\x0a\xec\x94\x16\x38\x40\x23\x9d\xa5\x41\xb1\x6c\x81\xe3\x9a\xad\xb6\xb5\xd2\x5e\x7a\xe5\xe3\x77\xaf\x7c\x2f\x3d\x68\x27\x3d\x1c\x04\x5b\x41\xe3\x46\x16\xf4\x18\x25\x6b\x40\xd0\xfb\xb1\x8e\xd2\x08\x32\x90\x68\x30\xa2\x6d\x13\x48\x06\x75\x90\x01\x8d\x18\x38\xb0\xd8\x86\xc5\x3a\x30\x62\xa9\x15\x67\xf7\xe2\x08\x0d\x0b\x81\x23\x21\x3b\x9a\x56\x7c\xce\xc1\x5b\x62\x68\xc5\x8f\x83\xec\x14\x79\xa9\x2a\x1c\x9c\x25\xbe\x14\xcb\x3b\x68\x50\xe9\x22\xa9\x5b\x04\x61\xdf\x94\xab\xaa\x54\x9d\xf4\x57\x6d\x9b\xac\x49\x36\x48\x96\xc0\xe0\x92\xb5\x40\x0d\x64\x38\x38\x0d\x87\x8c\x4d\xa3\x78\x86\xac\xd0\xcc\xbd\xa0\x67\x1b\xb2\x9f\x31\x32\x0c\x33\xf6\x1a\x33\x61\x8b\xbb\xd9\x0e\x36\xc5\xef\xb4\xcd\xb4\xf9\x0c\x66\x7c\x64\xd8\x02\x9f\x18\xc2\x81\x24\x90\xf3\x42\x83\x9c\xc1\x6c\x77\xb3\x05\x4a\x2e\x0d\xe6\x65\xb7\x6a\x6b\x52\xff\x6a\xdf\x63\x97\x7c\x73\x42\xc3\x98\x0a\x32\xb0\xcd\xf6\x90\x16\x18\x6b\x9e\x81\x6c\xc4\x36\x13\xd9\x94\xae\xb3\x3e\xdb\x7d\xb4\x34\xab\x4c\xb3\xcc\x34\xcb\x4b\xb3\x06\x74\x26\x02\x81\x83\xac\x42\x68\x88\x04\xce\x72\xa3\xe3\xc2\x39\x3b\xca\x91\xe9\x18\x92\xce\x96\x9f\xc3\xb1\x4e\xe0\x90\x77\xf8\x33\x99\xfd\x99\xcc\xfe\x5c\x66\x3f\x2f\xc8\xbb\xe3\xe6\x97\xed\xc7\x93\x3b\xf6\x5b\xc0\xb9\xd3\x6a\x6b\xb5\xd4\x13\x83\x22\x52\x53\x44\x5e\xe2\xfd\x48\x7d\x2a\xb9\xa9\x24\x1c\x86\x80\x19\x07\x20\xc5\x20\x1d\xea\x70\x7d\x62\x3b\x48\x47\xf6\x19\x8c\x07\x96\x70\x47\x34\x7a\x96\x41\x39\x19\x60\xb0\x34\xed\x10\xf6\x92\x86\xa1\x38\xb2\x0e\x88\x27\x21\x65\xb6\x20\x04\x3b\x20\x0f\xf1\x2e\x49\xac\x46\x3c\x2b\xc6\x26\xc7\xf6\xe1\x7a\x8d\x0e\x48\x78\x74\x1a\x24\xe4\x2d\xcf\xe8\x5e\x56\xd6\x42\x17\xba\xea\xad\xf1\xd3\x42\x57\xac\xd5\xf2\xf9\xa7\xe5\xef\xd5\xd7\xcb\x6f\x36\x0f\x8b\xe2\xb8\xf5\x09\xa6\xbd\xa5\x76\xde\x17\x82\xc3\x00\xc7\xd1\xaa\x4c\x2b\xca\x8b\xf2\x1e\x88\xa5\x26\x50\x4f\x49\x1b\x09\x77\x0a\xcd\x18\xa6\x55\x17\x26\x96\x80\xc6\x4e\x40\x7b\x10\x38\x34\xe0\x58\x3a\x34\x4a\xeb\x29\x4c\xac\xa0\xcf\x90\x67\x95\x60\x27\x69\x3e\x08\x1a\x41\x2f\x5a\x0d\x75\xab\xc4\x58\x13\xc7\x90\x18\xcb\x62\x49\x5c\x88\x42\x0a\x7d\x50\x89\x47\x32\xc2\x34\xc9\xbe\x0f\x13\x72\x8f\xdc\xcb\x84\xa0\xdb\x28\x44\x71\xa6\x44\x63\x49\xb1\xa5\xb9\xa0\x9a\x70\xdb\xf3\x96\x00\xcc\x63\xb1\xf8\xb4\xba\x5f\xdf\x6e\x4e\xc2\x85\xb3\x38\x5f\x7d\x5e\xfe\xed\x7a\xf5\xf8\xed\x57\x0f\xf7\xf2\xfd\xbb\xb2\xfc\xe2\xd3\x46\xbe\x93\x1f\xe4\x83\x2c\xe5\xcb\xbb\x13\x81\x53\x04\x86\x7b\xf0\xf0\x3a\xc5\xed\xdd\x5f\x7f\x6f\xa4\x2c\xd7\x52\x96\x9b\xb3\x7d\x66\x8c\x8f\xcd\xc5\x7b\xb6\x4a\xee\xa4\xfd\x3a\x1e\x55\x3c\xe7\xe3\xb2\x21\x12\x67\x96\x22\xc4\xa2\x78\x52\xf1\x6f\x71\xf4\x83\x69\x5f\xf1\xa6\x47\xba\x58\x6f\xfe\x95\xef\xe6\xe6\xe6\x92\xec\x85\xeb\x15\xa6\x5c\x80\x67\x42\xb3\x7d\x2d\xc3\xcf\xb3\x3b\x79\xfc\x13\xba\x58\x74\x59\xae\x2e\xa3\x1c\x3f\x2f\x23\xa5\xc7\xe4\xe7\x5e\xd1\x69\xeb\x7f\x4d\xe7\xf3\xf2\xfe\xcf\x64\xde\x50\xf9\xfd\x65\x12\xd7\xaf\x2a\xfc\x4f\x00\x00\x00\xff\xff\x66\x10\x2e\xe5\xb5\x09\x00\x00" + +func runtimeSyntaxPython3YamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPython3Yaml, + "runtime/syntax/python3.yaml", + ) +} + +func runtimeSyntaxPython3Yaml() (*asset, error) { + bytes, err := runtimeSyntaxPython3YamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/python3.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxRYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x91\x6f\x6b\xdb\x40\x0c\xc6\xdf\xfb\x53\xdc\xbc\x6c\x8d\xd7\xd9\xeb\xdb\x79\xff\x08\x5d\x02\x85\xcc\x85\x2e\x85\x40\xd5\x85\xb3\x23\x37\x47\xed\xb3\xa7\x93\x69\x02\xfa\xf0\xe3\x6e\x5d\x52\xb2\xc1\xf6\x66\x07\x06\xe9\x91\xc4\xef\x91\x55\x9b\x06\x79\xd7\x63\xae\x28\x8a\xd6\xc8\x58\x71\x1e\x29\xa5\x94\x2f\x58\xdd\x62\xae\x62\x80\x6c\x4c\x72\x95\x8c\xe2\x28\xa2\xa1\x41\x97\x47\xa1\x25\x55\x8e\x35\x63\x8b\x96\x43\x57\x39\x6e\x4c\x49\x9a\x76\x42\xf8\x7d\x30\x84\x52\x12\xea\x7b\xc1\xc6\xa1\xd4\x1d\x49\x3d\xd8\x8a\x4d\x67\xc5\xd4\x62\xea\x20\x1b\x2b\x16\xb7\x2c\x1e\xe5\xc4\x3d\x18\xae\x36\x42\xd8\xa3\x66\xe9\xc9\x58\x16\xa6\x9d\xff\xce\xb5\xaf\x18\xb7\xb8\xba\x9e\x0a\x21\x0f\x64\xe5\x61\x63\x1a\x4c\x00\xca\xf8\xd1\x4f\xd5\x59\xc7\x7a\x6f\x67\x21\xa1\x7b\x26\xb3\xc9\xfc\xeb\x54\x8a\xeb\xf9\x5c\x2e\x6c\x2d\x85\x2e\xa4\x98\x48\x31\x59\x19\xcb\x78\x87\xb4\xf2\x31\xa1\x6e\x42\x50\x75\x6d\xdf\xe0\xf6\x67\xbc\xd1\xa4\x2b\x46\x5a\xfd\x89\x93\xd9\xa1\x2d\x91\x72\x15\x8f\x01\xca\x9b\xb3\xf4\xed\xed\x29\x40\x29\x00\xe5\xd9\xd6\xa7\x93\x74\xa6\xd3\x3a\x88\xc9\xaf\x61\xb7\x6b\xcb\xae\xc9\xba\x1e\x49\x73\x17\x86\x6f\xb2\xfc\xdd\xeb\xd3\x57\xf2\xe1\x19\xc0\x8b\x5b\x79\x2f\x1f\xe5\x8d\xa4\xf2\x52\x00\xbe\x09\xc0\x28\x89\x55\xb4\x47\xb7\xe1\x87\x87\xd4\x3f\xc7\x9a\xfc\xc2\xcf\xe3\xbd\x84\x76\x9d\xab\x78\x74\x10\x1e\xaf\xa6\x9e\xbc\x54\x71\xb7\xee\x3c\x7c\x71\xf9\xf9\x52\x96\xcb\xa5\xcc\x2e\x96\x5f\xa6\x49\xfe\x29\x8e\x8e\xd7\x74\x4c\xc6\xde\xfd\xce\x84\xf8\x18\xfa\x54\x71\xf7\xa6\x0f\x97\x00\xc8\xfe\xe2\xe5\x40\xea\xb1\x32\xba\x39\xdf\x68\x3a\x8c\xfe\xab\x9d\x93\x63\x37\x27\xff\xc3\xcc\x8f\x00\x00\x00\xff\xff\x74\xc8\xc8\xba\x33\x03\x00\x00" + +func runtimeSyntaxRYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxRYaml, + "runtime/syntax/r.yaml", + ) +} + +func runtimeSyntaxRYaml() (*asset, error) { + bytes, err := runtimeSyntaxRYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/r.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxRestYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x90\x4d\x6a\xc3\x30\x10\x46\xf7\x3a\xc5\x20\x7b\x25\xd7\x82\x76\x39\xe0\x93\x64\xe2\x1f\x9c\x49\x11\x38\x8a\xd1\x4c\x17\xa5\xed\xdd\x8b\x6a\x9b\x16\x2a\x82\xb4\xf8\x78\xef\x6d\xa4\x6b\x58\x58\xdf\x57\x46\x48\xa2\xc6\x5c\x58\x79\x56\x34\x00\x00\x59\xc5\xe9\xc6\x08\x96\xc8\x27\x16\xad\x3f\xf3\x10\xad\xad\x31\xe9\x6d\x61\xd9\xc2\x16\x44\x27\xe5\x1b\x47\xfd\x69\x1d\x91\x3b\xf5\xee\xdc\x6c\xd3\xee\xd1\x9a\x78\x4d\xf7\x19\xc1\x22\x1e\x6c\xbe\x47\xd1\x29\xaa\x17\x4d\x21\xbe\x22\xd8\xf1\xd4\x8f\xe7\x66\x1c\x3e\x9e\x9f\x5e\xbe\x1e\x64\x7b\x37\x1e\x49\xb8\x70\xd4\x70\x0d\x9c\x10\x6c\x4f\xe4\x89\x3c\x78\x57\x97\xfd\x30\xfc\x75\xdb\x07\xd8\xbe\xaa\xaa\xe6\x1f\xdc\x1e\x41\xe4\x7e\x95\xac\x3c\x87\x69\xc9\xb6\xeb\xba\x22\x6f\xdb\xb6\xc8\x89\xf6\x5b\xb6\x36\x9f\xac\xbe\x03\x00\x00\xff\xff\x66\xfb\x63\xc1\x98\x01\x00\x00" + +func runtimeSyntaxRestYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxRestYaml, + "runtime/syntax/reST.yaml", + ) +} + +func runtimeSyntaxRestYaml() (*asset, error) { + bytes, err := runtimeSyntaxRestYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/reST.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxRpmspecYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x55\xdf\x6f\xdb\x36\x10\x7e\xae\xff\x0a\x41\x73\x11\xc9\x81\x0d\x03\x71\xdd\x44\x0f\x0b\xd2\x25\x18\x0a\x64\x71\x60\x37\x7d\x98\xe9\x18\x34\x75\x96\x89\x50\x24\xcb\xa3\xbc\x64\xbd\xfd\xef\x03\x25\xff\xc8\x1a\x7b\x03\x16\x20\x77\x1f\xc9\xef\x3e\xde\x91\x47\x79\x29\x15\xf8\x17\x0b\x59\xe4\x6c\x89\x16\x44\xab\x95\x83\x07\xe1\xb3\xa8\x15\x45\x51\x14\xd6\x35\x2f\x21\x8b\x62\xc6\x7a\x81\xd0\x26\xc6\x7a\x1b\x72\x3b\x6e\xb5\x5c\xa5\x00\xb3\x9a\xdc\x8d\xac\x03\xeb\x8c\xa8\xd9\x8b\xe4\xb3\x30\x9a\x6e\x9e\x85\xaa\x50\xae\x61\x84\x0d\xce\x61\x84\x69\x16\x1f\x8c\xf8\x54\x49\x95\x5f\x39\xb1\xa2\x1d\x92\x21\x9b\xca\x01\xee\x95\x6a\xc2\x46\x2b\xe0\x63\x6a\xbf\x18\xbd\x54\x52\x78\xa4\xd1\x02\x8d\x02\x0f\x48\xf7\xce\xac\x65\x0e\x48\x63\xf8\x56\x49\xf7\x0a\x30\x96\xf4\x3a\x8c\xa5\x74\xa3\x57\x5c\x0b\x40\x9a\x54\x45\x01\xe8\xb1\x49\x66\xaf\x56\x0f\x5f\xc5\x0b\x53\x96\xa0\xf3\x20\x0e\x63\xf8\x46\x93\xca\x5a\x05\x25\x68\x7f\xb4\xd0\x1b\x6b\xc4\x8a\x26\xe0\x24\x57\x74\x67\xd0\x54\x4e\x00\xdd\x19\xcb\xfd\xf1\x7a\xae\x2a\x6f\x82\x7e\xf0\xa1\x0e\xda\x4c\x04\x7c\xfc\x0c\xec\x8b\x93\xc5\xca\xd3\xad\x14\xa0\x11\x68\x52\x95\x25\x77\x2f\x5b\xbf\x2b\xfb\x5a\xa2\x77\x72\x51\x79\x69\x34\x7d\x05\x9d\x1b\x47\xf7\x5c\x3c\xf1\x02\x1c\xfd\xea\x4c\x65\x69\x52\xa7\x39\xed\x77\x2f\x66\x1d\xba\x0f\xa9\x6e\x70\x73\x22\xc6\xf8\x70\x04\x4b\xf9\x7c\x2c\x9b\x3b\x5e\x02\x7d\x05\x87\x61\x8f\x31\x28\xe0\x08\xf4\xe0\x14\x3d\x8c\x6f\xdf\xc6\xd4\xc3\xf0\x87\x9e\x3b\x9f\x45\xf1\x63\xd2\x64\xd0\xec\x9d\xc6\x3b\x02\xe8\x3c\x8b\xe2\x6c\x3f\xd1\x74\x65\x34\x9d\xb5\xde\xe4\x91\xc8\xb3\xf3\x21\xc9\x41\x30\x1f\x82\x19\x9e\x0f\x89\xfb\x95\x32\x9a\x24\x1f\x0e\x88\x2b\xbb\xe2\x8d\x85\xf5\x87\x1d\x18\x36\xc8\x0a\xbe\x85\xb0\xde\x83\x8f\x84\x96\x3b\xd1\xd8\xf5\x45\xe3\x87\x03\xee\xca\xf5\x99\xa2\xe0\x06\x8b\xc6\xa9\x92\xa4\x45\x2a\xa5\x45\x50\x64\xad\xa8\xff\x25\x82\x93\x80\x01\xdb\x3d\x1c\x0e\xa8\x1c\x9e\x3f\xd5\xa6\x94\xda\xd3\xa4\x90\xe4\x70\xd8\xef\xf7\x49\x9e\x7d\xec\x13\x9e\x5d\xf4\x9f\x6b\x4b\xda\x70\xb7\x3b\x94\x7f\x16\xbc\x0c\x2b\x24\x97\x7a\xe3\x0d\x86\x81\xc1\x1d\x59\x18\x8d\x9e\x6b\xdf\x0b\x2d\xa0\x8b\x70\x5b\x71\xc2\x18\x63\x3d\x9a\x3e\xb2\x78\x96\x76\x58\x4c\x27\xbb\x99\x93\x59\xda\x39\xd9\xc6\xa2\xe7\xbe\x6e\xf6\x2c\x8a\xdf\x27\x72\x49\xa0\x10\x08\x74\x2e\x97\x94\xc3\x52\x6a\xa0\x42\x99\x05\x57\x54\xe9\x66\x9c\x1e\x0c\x9d\x5f\x26\xd3\xab\xee\xef\x73\xde\xfd\x73\xde\xef\x5e\xcc\x67\x9d\x03\xbc\x37\x2d\xf1\x9e\xb1\xef\x3f\xf6\x01\x63\x7f\xfd\x4b\x27\xfc\x87\xd8\x7c\xfe\x7f\xe5\x02\xb3\x9d\x8c\xef\x7f\x9b\x7f\x7a\xf8\x7c\x7b\x3d\x1f\x8f\x46\x5f\x52\xc6\x7e\xde\x55\x61\x41\x48\xae\x42\x1f\xbf\x4f\x16\xe1\xc5\xb4\x49\xac\xb8\x2e\x40\x99\x82\xc4\x0a\xc4\x53\x9b\x84\x02\xae\xdb\x94\x03\x0a\x27\x6d\x78\x8b\xe9\xc1\xf8\xf0\x61\x46\x92\xe1\xda\x94\x6a\x93\x6d\x1e\x2a\x85\x5b\x6f\x1f\x8e\xb0\xae\x5e\xae\x74\xb0\xde\x71\x8d\x64\x0d\xfa\xda\x84\x49\x83\xbe\x9e\x3d\x1c\xed\x9d\x2c\xc2\x87\x60\xe3\xa5\xde\xa2\x4d\xf8\x66\x54\x69\x5a\x83\x93\xcb\x97\x26\xfd\x57\x0d\x56\x6e\xce\x28\x79\xa4\xe9\x34\x43\xcb\x05\x64\xb3\x59\xfa\x53\x32\x7d\xfc\x3e\xeb\x75\xd2\xcb\xf6\x8f\xcd\x18\x36\x66\xac\xd3\xeb\xec\x56\xa4\xce\x41\xfb\xae\x58\x71\xd7\xfb\x23\xfc\x32\x34\x32\x51\xfc\x4a\xf1\xf4\x10\x3b\x8b\xe2\x77\xa7\xd1\x29\x45\xa7\xef\x4e\xb7\xcb\xde\xe4\x26\x8b\xe2\x2f\xa3\xeb\x51\x76\x19\xb7\xfe\x0e\x00\x00\xff\xff\x1f\xe9\xab\x07\x0a\x07\x00\x00" + +func runtimeSyntaxRpmspecYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxRpmspecYaml, + "runtime/syntax/rpmspec.yaml", + ) +} + +func runtimeSyntaxRpmspecYaml() (*asset, error) { + bytes, err := runtimeSyntaxRpmspecYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/rpmspec.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxRubyYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x54\x7f\x6f\xa3\x46\x10\xfd\xbb\xfe\x14\x84\x10\x19\x88\x8c\xef\xdf\x43\xd1\x91\x6b\xcf\x77\x8a\x74\x4d\xd4\x2a\x6a\xad\xdb\x1f\x64\x81\xc1\x5e\x05\x16\x67\x77\xa9\xe3\x66\xf2\xdd\xab\x25\xc4\x71\x53\x59\xaa\x65\xaf\xd1\x7b\x6f\x66\xde\x8c\xd8\xa9\x65\x03\x76\xb7\x81\xd4\xd3\x7d\xb1\x9b\x4c\x2a\xb0\x50\xda\xd4\x9b\x78\x9e\xe7\x39\x52\x89\x16\x52\xcf\xa7\x34\xd1\x45\x80\x94\x26\x2b\x68\xcd\x06\xca\x00\xbf\x41\xeb\x04\x58\x76\xaa\x96\xab\x44\xf7\xf8\xbb\xb8\x87\x01\xfa\x45\x6c\x86\xff\x3f\xc4\x4a\x0b\x65\xdd\xb3\x3f\x64\x5c\x83\xa8\x40\xa7\x9e\xcf\x4f\x4f\x92\x78\x1e\x82\xfa\xcb\x3b\x8f\x32\x57\x3b\xf4\x30\x88\xfc\xc9\x44\xf7\x0d\x98\x74\x50\xcf\x3c\x63\x85\x85\x16\x94\x1d\x2c\x14\xe1\xcf\x8b\x6f\x57\xd7\xb8\xb8\xfe\x82\xa2\x91\xc2\xa0\x50\x15\x16\xb0\x92\x0a\x0b\x0d\xe2\x1e\x4b\x61\x00\xcb\x46\x18\x83\x15\xd4\xee\x27\x15\x54\x94\x66\x58\x75\x08\x8d\x01\x77\xc8\x1a\x41\x55\x08\xca\xf4\x1a\xb0\x16\x0e\xae\x3b\x8d\xb2\x46\xa9\xb0\xed\xaa\xbe\x01\x54\xf0\x68\x51\xc9\x06\x55\x67\xb1\xd3\xa8\xa1\xea\x50\x83\x29\x7b\x40\x0d\x56\xef\xdc\xd9\x6b\x85\x06\x9a\x1a\x4d\xbf\x01\x8d\x76\x0d\x0a\xad\xee\x01\x7b\xe5\xca\xf7\xaa\x01\x63\xb0\x57\x56\x36\xb8\x75\xe4\x76\xed\xc6\xb2\x93\xd0\x54\x11\xa5\x85\x3f\xb6\x59\x76\xca\x58\x31\x74\x19\x52\x1a\xe0\x25\x5e\x5e\x46\x19\xa5\x05\xf9\x3c\xfb\xc1\xce\xc9\x87\xd9\xc7\xcf\xb3\x1f\xb9\x98\xfd\xcd\xe2\xf7\x31\x89\xea\xdb\x62\x98\xa9\xd3\x7f\x98\x7d\x64\xe7\x47\x32\xcb\x2c\x0a\x89\xf7\x13\x43\x1e\xa5\xaf\x29\x8f\x89\xdd\xb0\xf3\xfc\xeb\xd5\xf7\x45\x9e\x63\x9e\x7f\xbf\xba\x5e\xe4\xf9\x11\xcb\xf3\x90\xf0\x39\xc3\x90\x52\x4a\xe7\x51\x14\xcf\x89\xec\xda\x47\x16\xe3\x99\xa6\xf4\x29\x24\xfc\x79\x24\x9f\xa3\x28\xa6\xf4\x79\xa4\xff\xd3\x88\xb1\x5a\xaa\x55\xea\xf9\x77\x84\xdf\xb1\xf8\x0e\xcf\x1e\x29\x7d\x72\xe1\x2e\xea\xb8\x9c\xfa\x21\xe1\xd4\x1f\x8b\x50\xdf\x55\xf1\xf1\x8c\xfc\xf6\x27\xcb\x0e\x12\xec\x91\x90\xf0\xc8\x21\xd1\x88\x5c\x10\xfe\x89\xc5\x9f\xf6\x3c\x21\x9c\x39\x9e\xed\x91\x80\xf0\xc0\x21\xc1\x1e\xe1\x84\x73\x87\xf0\x11\x39\x21\xfc\x84\xc5\x27\xaf\x26\xdd\x0d\x91\xa2\x49\x3d\xff\xf4\x7f\xb5\x30\x0d\x09\x9f\x8e\x0d\x4c\xa3\x28\x9e\xe2\x19\x79\xd8\xb2\x7f\xbb\x1f\x80\x43\xf3\x0f\x5b\xf6\xe6\x7d\x60\x0f\xad\x0f\xc0\xa1\xf3\x01\x38\x34\xfe\xb0\x65\xef\x7c\x97\x5d\x3b\xde\xb6\x53\xc2\x9f\x58\x12\x07\x78\x1a\xbc\x23\x93\x42\xcb\xd5\x7a\xd0\xbc\x89\x0e\x55\x63\x73\xad\x28\x75\xf7\x72\x91\xdd\xc7\x58\xa1\x5d\xd0\xc5\xc5\x2c\x9b\x66\x8b\x9b\xdb\x69\xe6\xef\x49\x50\x95\x5b\x0a\x8b\x9b\xdb\x37\xec\x65\x11\x78\x84\x4d\xc6\xcc\xb6\xab\x3a\xf7\x1e\x2f\x97\x4b\xbc\xbd\xf9\x72\x83\x5f\xaf\x96\xbf\x2e\x90\xd2\xec\xe5\x1b\xbd\x5a\xd8\x68\xd8\xe8\xae\x4c\xcc\x1a\x0a\x31\xcc\xd7\xad\x9b\xf3\x6c\x5c\x31\xff\x04\x00\x00\xff\xff\xfa\x5b\x59\x4a\xf4\x04\x00\x00" + +func runtimeSyntaxRubyYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxRubyYaml, + "runtime/syntax/ruby.yaml", + ) +} + +func runtimeSyntaxRubyYaml() (*asset, error) { + bytes, err := runtimeSyntaxRubyYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/ruby.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxRustYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x52\x4f\x4f\x1b\x3f\x10\xbd\xe7\x53\x98\x0d\x07\x20\x4a\x96\x2b\x7b\xf9\xe9\x27\x4a\xa5\x1e\x5a\xa4\x96\x43\xd4\xec\x0a\x79\xbd\x63\x62\xe1\x3f\xab\xf1\x38\x40\x34\x1f\xbe\xf2\x26\x21\x90\x20\x51\xa9\x39\x38\xde\xf9\xf7\xde\x3c\x3f\x6d\x2c\xd0\x4b\x0f\x95\xc0\x14\x69\x34\xea\x80\x40\x51\x35\x12\x42\x88\x9c\xf3\xd2\x41\x25\x8a\xba\x9e\x61\x3c\x2d\x46\x23\x4c\x16\xe2\x26\x3d\x16\x3a\x79\x45\x26\x78\xd1\x81\x36\xde\xe4\xeb\x90\x99\x0a\xd3\x81\x27\xa3\x0d\x60\x25\x0a\xed\xc5\x42\x4e\xd7\x97\xd3\xab\xfb\x66\x52\x0c\x15\xb9\xfb\x27\x44\xc0\x15\x74\xe2\x29\x60\x17\xb7\x8d\x91\x24\x81\x03\x4f\x03\x68\x7b\x26\xdb\x48\x28\x15\xb1\xb4\xe6\xc1\x07\xcd\x32\x72\x0b\x2a\x38\xe0\x36\x3c\x73\x8b\x20\x1f\x59\x05\x1f\x29\x9f\x64\x7c\x02\x56\x28\x09\xb8\x0b\x0c\x36\x02\x83\x4f\x8e\xe1\x99\x00\x3d\x6b\x99\x23\xda\x78\x69\x59\x7b\xd6\x01\xd9\x68\x36\xae\xb7\x6c\x3c\x5b\x20\xb6\x21\xf4\xec\xa4\xc2\xc0\x4e\x92\x5a\xb2\x0b\x1d\xbb\xb0\x02\x76\x89\x38\x68\x1d\x81\x82\xe6\xb0\x02\x44\xd3\x01\xf7\x68\x56\xdc\xa7\x96\xfb\x84\xc0\x08\x9a\x11\x28\xa1\xe7\x68\xd6\x10\x34\xe7\x7d\x8c\xe2\x08\x36\xdf\x31\x29\xe2\x98\x7a\x40\x26\x4c\xc0\x84\xd2\x10\x67\xfd\x87\x23\x68\x4e\x3e\x4a\x0d\xf9\xcf\xac\xa1\xe3\x14\x81\x57\x06\x29\x49\xcb\x4f\x4b\x40\xe0\xa7\xa5\xb1\xc0\x2f\x06\x6c\x77\x5e\xd7\xed\x5e\xce\x81\xf4\xab\x8c\x3d\x28\x23\x6d\x25\x8a\xac\xfc\x7d\x33\x39\xd9\x17\x5e\x67\xb5\xa4\xa7\x5d\xad\xda\x7e\xe7\xe2\xff\xa7\xbf\x9b\x7c\xbc\x7b\xa8\x1f\xc9\xb5\x80\x87\xe5\x33\x3f\x84\x37\xef\xb4\xb8\x9c\x5e\x35\x93\x77\x7c\xee\xf2\x6e\xb1\xbc\xf1\xc9\xc5\xf2\xd7\xb0\x7a\x2c\xef\x5e\x7a\x88\x25\x90\x9a\x6d\xa7\x6d\xbc\xb7\x05\x96\xd3\x75\xc6\x3d\x04\x8a\x84\xc6\x3f\x54\xdb\xc9\x22\x7b\x04\x07\x7f\x14\xc5\x6b\x0c\x7c\x77\x10\x89\x8f\xa6\x1f\xc8\xd5\xf5\x6c\x1f\x7d\xe3\xdf\xdd\xef\x2d\xd2\x46\xb6\xeb\xa5\xc4\x7d\xeb\xdf\xd2\xc1\xf1\xe4\x23\x46\xe3\xc9\x21\xba\x58\x34\xfb\xa1\x6e\x30\xfb\xd1\xb0\xb2\x3c\x9c\x74\xfa\xc9\x12\x14\xba\x50\x89\xe2\xec\xee\xf6\xcb\x2d\xcf\xe7\x73\xfe\xfa\x6d\xfe\xfd\xe6\xbc\xfa\xaf\xf8\x1c\xac\xae\x2f\x8e\x88\xd7\x17\xe5\x3f\x23\xee\x6c\x78\x84\x38\x3e\xa9\xeb\xc5\x31\x64\xf3\xa1\x54\x7f\x02\x00\x00\xff\xff\x3f\xf7\x58\xfe\xa4\x04\x00\x00" + +func runtimeSyntaxRustYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxRustYaml, + "runtime/syntax/rust.yaml", + ) +} + +func runtimeSyntaxRustYaml() (*asset, error) { + bytes, err := runtimeSyntaxRustYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/rust.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxScalaYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x52\x41\x8e\xdb\x30\x0c\xbc\xfb\x15\x86\xb1\x87\x76\x81\x26\xf7\x5c\xfb\x8c\xaa\x07\x5a\xa2\x62\x36\x8c\x64\x50\xb4\x5d\x2f\xf8\xf8\x42\x76\xda\xdd\x64\x81\x16\x5d\x5d\x04\x50\xc3\xe1\x70\x46\x91\x18\x75\x1d\xf1\xd4\x16\x0f\x0c\x4d\x13\x50\xd1\xeb\xa9\x69\xdb\xb6\xad\x8f\x09\xae\x78\x6a\x3b\xe7\x0e\x1b\xe0\xa9\x6b\x1a\x99\x18\xcb\x8e\xf8\xd2\xee\xcd\x9d\x73\xfd\xa7\x3e\x67\x46\x48\xd6\xaf\x8a\xe6\x07\x10\x0b\x79\xea\x19\x2d\x72\x06\x35\x4a\x6a\x9c\xd3\xd9\x12\x2e\x56\x86\x2c\x6a\x3a\x50\x31\x15\x48\x85\x30\xa9\xcd\x99\xc2\x67\xe7\xfa\xee\xc6\x5d\x14\x14\xaf\x98\xf4\x36\xe0\x0a\xea\x07\x9b\x81\x6d\x06\xb1\x5e\x10\x2e\xe6\xa1\xa0\xf9\xed\xc1\xe7\xa4\x94\x26\xb4\x80\x11\x26\x56\x0b\xd9\x90\x0b\x5a\xa4\x04\xcc\xab\xc5\x2c\x46\xd1\x04\x75\x92\x64\x65\xa1\xda\xa5\x83\xe4\xc5\x54\x56\x5b\x06\x62\xfc\xdb\xfc\x80\xd1\x72\xff\x03\xbd\xee\x63\x55\x80\xd4\x18\x5e\x56\xa3\xeb\xc8\xe4\x49\x0d\xfa\xa2\x02\x15\xc1\x50\x8a\xe1\x4f\xc5\x14\x8a\x2d\xa4\xc3\xae\x63\x83\x6e\xac\xc5\xf2\x8c\x22\x14\xb0\xd6\xaa\x1f\x94\x8a\x42\xf2\x98\x63\x75\x0b\x25\x82\x47\x4b\xa0\x34\xa3\x8d\xe0\x2f\x70\x46\x1b\x85\x66\xd0\x7a\xe7\x9a\x14\x06\x1b\xa7\x9e\xc9\x5b\x55\xbb\x5d\x42\x5e\xe3\x68\x65\x1a\x51\xac\xac\xc9\x0f\x92\x13\xbd\x60\xd8\x77\x2d\x36\x67\x06\x25\x46\x2b\x08\x8c\x77\x96\xfb\xbc\x49\xd0\x43\xa5\x49\xe7\x3d\xe5\x7a\x8a\x82\x6c\x3e\x74\xdd\x9f\x1a\xa6\xf0\x50\x29\x17\x1a\x37\xb3\x9c\x3b\xbc\x56\xdf\x7c\x98\xdf\xe7\xed\xa4\x11\x3d\x01\x7f\x1d\x40\xee\x5b\x5f\x31\x37\xff\x55\x26\xb4\x08\x35\xd2\x34\x31\xdf\xeb\xbe\x6e\x41\xbd\xd3\x7b\x3c\x3e\xea\x7d\x7a\x14\xd6\x7e\xfb\xfe\x4f\x16\xe7\x9e\xdf\xed\xed\x9e\x8f\x1f\xa4\xfa\x0f\xb6\xe6\x57\x00\x00\x00\xff\xff\xbd\xe3\xf3\xfb\xa2\x03\x00\x00" + +func runtimeSyntaxScalaYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxScalaYaml, + "runtime/syntax/scala.yaml", + ) +} + +func runtimeSyntaxScalaYaml() (*asset, error) { + bytes, err := runtimeSyntaxScalaYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/scala.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxSedYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\xcc\xc1\x4e\x84\x30\x10\x80\xe1\xf3\xf6\x29\xc6\x2e\x07\xa0\x52\xbd\xda\x0b\x07\x1f\x83\x96\xa4\xb4\x63\x68\x42\x0b\xa1\xb3\x9a\xcd\xe2\xbb\x9b\x65\x35\x9a\xb8\xa7\x49\x66\xbe\x7f\xde\xc2\x84\x74\x5e\x50\x41\x46\xcf\x98\x47\x42\x47\x0a\x18\x00\xc0\xf5\x96\x6c\x44\x05\x5c\x6b\x99\xd1\x17\x7c\xdf\x8f\x68\x3d\xae\x0a\x78\x7f\x7c\x90\xf5\x10\xd2\x53\x89\xe9\x1d\x44\xd5\x66\xf4\x25\x6c\x45\xc5\x19\x5b\x4f\x13\x66\xb5\xfb\x06\xf2\x39\x0e\xf3\x24\xe7\x05\x57\x4b\xf3\x35\xed\xb6\xbe\x90\xb5\x30\xfc\x5b\xb8\x39\x65\xb2\x89\x64\x3a\xc5\x61\x7f\xae\xf5\xa5\x7b\x6e\x5e\x8c\x78\x6c\xf7\x59\x6b\xfd\xf9\x4f\xe7\x05\x5d\xb0\xd3\xeb\x68\x6f\x89\xd6\xf2\xd7\xc4\x88\x89\x14\xf0\xb2\xdf\xba\x4e\xe5\xc5\x3a\x54\xc6\x54\xc7\xb2\xeb\x2f\x46\xd6\x55\x5b\xfc\xd8\x90\x3c\x26\x6a\xdc\x68\x57\xf9\x31\x06\xc2\x1b\x06\xfe\xa7\x13\xf7\xb4\x02\x7e\x10\x20\x36\x10\x07\xc1\xd9\x57\x00\x00\x00\xff\xff\xc4\xf3\x36\xcd\x4d\x01\x00\x00" + +func runtimeSyntaxSedYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxSedYaml, + "runtime/syntax/sed.yaml", + ) +} + +func runtimeSyntaxSedYaml() (*asset, error) { + bytes, err := runtimeSyntaxSedYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/sed.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxShYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\x7f\x73\x1b\x45\x0c\xfd\x3f\x9f\xe2\xea\x64\xa8\xdd\x62\xd3\x96\xb6\x03\xe6\x87\x29\x2d\x30\x9d\x02\xed\x0c\x30\x93\x21\x9b\x96\xf5\xae\xce\xb7\xdc\xfe\xb8\xee\xea\xe2\x84\xbe\x7c\x77\x46\x67\x3b\x69\x4d\xa7\x40\x26\xb7\x3a\x49\x96\xf4\xa4\x7d\xa7\xda\x79\xe2\x8b\x8e\xe6\x55\x69\xc8\xfb\x83\x03\x4b\x4c\x86\xe7\x07\x55\x55\x55\xe2\x8c\x3a\xd0\xbc\x1a\x8d\x95\x9a\x95\xe6\x08\x4a\xcd\x96\xba\x34\x3b\x99\x0d\xb6\x62\x6b\x78\xa5\xbd\xd3\x85\x0a\xde\x51\x76\xce\xba\x8f\x86\x5d\x8a\x5b\xf7\xb5\xba\xfb\x41\x97\x93\x14\xc5\x3b\xca\x8b\x76\x35\xc8\xae\x5d\x85\x76\x66\x52\xac\xb1\x73\x65\xb3\xd1\x5f\x3c\xfb\xe1\xdb\xdf\x9e\xfe\xf8\x04\x33\x5a\xf6\xce\x5b\xa5\x8e\xf0\xe8\xc5\xb3\xc1\x36\x19\x0d\xcd\x34\xa4\x2d\xe5\x79\x35\x7a\x79\x78\x63\x76\xeb\x93\x31\xc5\xb3\xea\xf6\x64\x31\x5e\xea\xc9\xa2\x34\xe3\x0a\x47\x93\xd1\xc1\x41\xee\x3d\x95\x4d\xf7\x87\xd5\xcf\x7d\x58\x52\x2e\x83\x36\xad\x4c\x8a\x85\x75\xe4\x59\x1c\xcc\xf3\x6a\xa4\xd4\xf2\xe4\xce\xf4\xf3\xd3\xdb\x4a\x2d\x37\x45\x24\xea\x71\x8a\xd6\x49\x5b\xda\x97\x4a\x47\x2b\x81\x9c\x93\xaf\x6a\x9f\xd6\xdb\x5c\x85\x35\x53\xa0\xc8\x9b\x2c\x63\xa3\x0b\xc1\x26\xd8\x14\x09\xe4\x5d\x0d\xf2\x85\x40\x45\x1b\xd0\xb9\x63\xd4\x0e\x75\xca\xd8\x4d\x0c\xae\x86\x8b\xf0\xc9\x68\x8f\x4c\xda\x22\x13\xf7\x39\xa2\x90\x27\xc3\x28\x8d\xab\x19\xdc\x50\x04\xbb\x40\xe8\x23\x3b\x8f\x75\xe3\x3c\x4d\xae\xc0\x4e\xab\xd2\x91\x71\xda\x6f\xee\xf7\x0d\x94\xba\x84\x52\x63\x28\x35\x81\x52\x5f\x40\xa9\x53\x28\x75\x82\x3f\xa0\x94\x52\x90\xa1\x7e\x89\xaf\x71\x03\x5f\xe1\x23\x28\x85\xc9\x75\xd3\xbf\x08\x7b\x2a\x93\x42\xd0\xd1\xee\x26\xb6\x21\xd6\xa6\x41\x0b\x32\x4d\x02\x9d\x77\x29\x33\x3c\x31\x0a\x31\xfa\xa0\x4b\x8b\x3e\x16\xe2\xc9\xde\x10\x43\x48\xb1\xf2\x2e\xf6\xe7\x1f\x48\x3b\x5e\xc1\xad\x26\x0b\xbd\x6e\x07\xca\xc0\xca\x51\xbb\x68\xa1\xd4\xfa\xcd\x9d\x8f\xef\x5f\xae\x32\x75\x68\x9d\xf7\xc3\xa1\xbd\xbf\xf2\x78\x2a\x05\x41\xb7\x42\x2c\xf1\x17\xb2\x28\x0d\x58\xe7\x7d\x28\x99\x7a\x76\xbe\x7c\x00\xc7\x52\x17\x7a\x78\x5f\x30\x0c\x1f\x0c\x8c\x66\x98\xc6\xa4\x08\xd3\xac\x72\x07\xd3\x84\x64\x61\x9a\xb4\x16\x4b\x4e\x89\x61\xda\xd2\x07\x48\x4a\x98\x0e\xa6\x74\xde\x31\x4c\xcf\xb0\x9a\x09\xd6\xc2\xd6\xb0\x2e\xcb\x63\x92\x4f\xb9\xc8\xdb\x90\xdc\xf6\xa0\x78\x26\xa3\xd4\xd1\x8a\xc8\xa8\xb5\x61\xa1\x87\x16\xd6\xd4\x81\x51\x27\x6f\x21\x94\x47\x93\x0a\x3b\x0b\xf9\x17\xfe\x7a\x8f\x3f\x93\x50\xc7\xc5\x16\x5e\x28\xb4\x1a\x92\xfa\x82\x60\x1f\x08\xa4\xd0\x4a\xd9\xd0\xd6\xae\x4e\x08\x6d\x4c\x16\xa1\x65\x0a\x1d\xc2\x19\xa2\x33\x84\xe8\x11\x53\xd3\x77\x88\x5d\x4e\x06\xb1\x0f\x52\x32\x59\x74\xba\x30\xa1\xd3\xdc\x98\xa6\x45\xe7\x62\x7b\x81\x2e\xa3\xcb\x2e\xb2\x40\x1e\x5e\x6a\x74\x7c\x8e\x6e\x6d\x07\xe2\x0e\x38\x32\x69\x2f\x51\xc8\x01\x39\x48\xf9\xdc\x47\x99\x5e\xa1\xd7\x18\x97\x46\xdf\x45\x69\xf4\xbd\x7b\xf7\x07\xf1\xe0\xa1\x88\x4f\x3f\x1b\xb4\x07\x77\xef\x4d\x04\x75\x69\xf2\x70\x7f\x7d\x8d\xe2\x89\x3a\x14\xe1\xd9\x66\xaa\xf2\xb5\xa1\xb0\x5d\x8a\x93\xf9\x02\x43\xc0\x45\x34\x60\x2d\x8f\xf3\x60\x22\x30\x15\xde\x7c\x2e\x72\xa4\x9e\xc1\xa9\x37\x0d\x38\x83\x73\x4f\x72\x44\x23\x97\xc3\x43\x6e\x49\xd4\x0f\xb3\xeb\xe3\xf6\x2e\xfa\xe8\x5e\xa3\x8f\x43\x4f\x7d\xa1\x5c\x70\x26\xcd\xac\x0d\xd6\x4d\x92\x47\x07\x87\x0b\x2a\xfb\x04\xbb\x5a\x18\x55\xed\xf5\xaa\xbc\x67\x49\x4c\xa7\x27\x7a\xfa\xd7\xf4\xf4\xf6\xe8\xbd\x1b\xa4\x1a\xdc\xe2\xdd\xba\x9d\xa5\xc8\xae\x76\xdb\x3d\x75\xa4\xd4\x9b\x85\xec\xaa\x47\xd3\xdf\x5f\xdd\xf8\xe6\xf0\xe8\xd6\x62\x2a\x6b\xeb\x72\x31\xfa\xff\x01\xfb\xfb\xb0\x70\x76\x71\x35\xdf\xf6\x53\x09\xb4\x3c\xc0\x1a\x8d\xae\x6c\x14\xed\x9e\xa5\xb4\xae\x1b\x4a\x29\x35\xbb\xb6\xbe\xb5\x7f\x77\x7f\x6f\x57\xda\xec\xab\xc7\x8d\xce\xd7\xa1\xff\x15\xce\xcd\x7d\x34\x37\xf7\xcb\x56\x27\xa7\xd7\xd9\xc2\x30\xdc\x7f\x64\x19\xbf\x84\x52\x65\x72\xb8\x9f\xec\xe8\x5f\x7a\xe0\x64\x93\x84\xff\xfa\xfc\xc9\x73\x1c\x1f\x1f\xe3\xfb\xa7\xc7\x3f\x7d\x37\x99\xcb\x3c\xff\x0e\x00\x00\xff\xff\x42\xc3\x8d\xb7\x85\x07\x00\x00" + +func runtimeSyntaxShYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxShYaml, + "runtime/syntax/sh.yaml", + ) +} + +func runtimeSyntaxShYaml() (*asset, error) { + bytes, err := runtimeSyntaxShYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/sh.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxSlsYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x8f\xdd\x6a\xc3\x30\x0c\x85\xef\xf3\x14\xc6\x2b\xb4\x0d\xd4\xdd\xed\xfc\x00\x7b\x82\xdd\xd5\xc9\x70\x62\xa5\x18\x1c\x39\x58\xca\x60\xa0\x87\x1f\x4e\xd7\xc2\x28\xbb\x11\xe2\x3b\x47\x3f\x67\x8a\x09\xf8\x7b\x01\xab\xc8\x27\x6e\x9a\x00\x0c\x23\x5b\xd5\x28\xa5\x54\x15\xd1\xcf\x60\x95\x76\xce\x50\xa2\x9d\x6e\x9a\xb2\x26\x20\xbb\xe9\x27\x15\x03\x20\xc7\x29\x42\x31\x5f\xbe\x58\xa5\xfb\x4b\xaf\x4e\x9d\x69\xed\x4e\xff\x67\x31\xad\xbd\x6b\x01\x26\xbf\x26\xb6\x4a\xd7\xeb\x0f\x3c\x66\x24\xf6\xc8\x06\xd7\x79\x80\x3a\x73\x6e\x2f\xaf\xa7\xb7\xee\xdc\x3e\x59\x86\x9c\xd3\xf6\xdf\x70\xf8\x28\x2b\xc8\xbb\x4f\x04\x47\xe7\x86\x27\x27\x71\x89\x78\xad\x5e\x7d\x70\xce\x39\x23\x97\xde\xe9\xee\xd8\x3a\x2d\xfb\x07\xd9\x77\xc7\x76\x7f\x9f\xa5\x05\xc6\xe8\xef\xfb\xaf\xc5\x47\x94\xad\x92\x8c\x79\x5e\xf2\x8a\x41\x96\xb1\xc0\x0d\x7e\x6e\x6d\x8a\xc4\xb2\xc4\x94\x7c\xf9\xfb\xc6\x3c\x03\xd6\xa8\xfd\x8b\x79\xc4\x20\xf6\x0c\xbf\xbc\x9e\x88\x93\x40\xda\x0a\x81\xe4\x22\x98\x59\x3c\x06\x01\x0c\x95\x62\xb8\xad\xfc\x09\x00\x00\xff\xff\x06\xf6\xfb\xa9\xb6\x01\x00\x00" + +func runtimeSyntaxSlsYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxSlsYaml, + "runtime/syntax/sls.yaml", + ) +} + +func runtimeSyntaxSlsYaml() (*asset, error) { + bytes, err := runtimeSyntaxSlsYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/sls.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxSolidityYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x54\xc1\x8e\xe3\x36\x0c\xbd\xe7\x2b\xdc\x74\xdb\x9d\x64\x90\x99\x69\x8b\x2e\xd0\xa0\xed\x60\xd1\xa2\xd7\xbd\xf4\xd4\x38\x28\x68\x89\x8e\x89\xc8\x92\x41\xd2\xc9\x78\x41\xf4\xdb\x0b\xd9\x99\x9d\x34\xd9\xce\x6d\x73\x88\x28\xf9\x91\xef\x49\x4f\x54\x4d\x01\x75\xe8\x70\x5d\x48\x0a\xe4\x49\x87\xd9\xcc\xa3\xa2\xd3\xf5\xac\x28\x8a\x22\x7f\x8f\xd0\xe2\xba\x98\x97\xe5\x9d\xa4\xf0\x66\x3e\x9b\x71\x1f\x50\xa6\xef\xab\xa2\x63\xec\x38\xb9\x11\x50\xdd\xb8\x14\x95\xc1\xa9\x05\xaa\x18\x78\xb0\x8e\x61\xd7\xc2\xa2\x2c\xab\xf9\x29\xc1\xa5\x28\x0a\x51\xef\x62\xdf\x56\xc8\x53\xe2\x66\xb5\x7d\xbc\xd9\x3c\xac\x7e\xda\xde\xda\xc3\x53\x0e\x60\x55\xbf\x5f\xfd\xb1\xbd\x3d\x4f\x25\x8f\x51\xa9\xa6\x31\x6b\x03\xab\x8f\xef\x57\x7f\x6d\x37\x7f\x4f\x41\x4e\x5e\x6e\x36\x6b\xe9\xc0\xe1\x7a\xbb\x5d\x3e\x67\x89\x82\x62\x8b\x51\x4f\x1a\x41\x04\xdb\x2a\x0c\x56\x31\xc2\xde\xb2\x64\x8a\x3d\x9a\x4f\x56\x27\xb6\xba\x8f\x4e\x29\x45\xa3\xda\x30\x08\x5a\xc4\xa3\x31\x6a\xcf\xf1\x34\x88\x1d\x1b\x0a\x78\xae\x4c\x3a\x74\x04\xe1\xc4\x90\x8f\x0a\xa3\x37\x6d\x38\x1d\x47\x58\xf1\x75\xd1\xc2\x1e\x0b\xe9\x19\x0b\x6d\x70\x28\x80\xb1\x38\x20\x0f\xc5\x81\x84\xaa\x80\xa7\x42\xd9\x8c\xbb\x3d\x0e\xc7\xc4\xfe\x59\x6f\x4c\x71\x68\x53\x2f\xf6\x7c\x74\x46\xd1\xe3\x13\x7a\xeb\x60\x80\x2a\xa0\x75\x7d\x15\xc8\x59\xc7\x74\x00\x45\xc3\x27\x45\x8e\x10\x8c\xe2\x14\x7c\xee\xfc\x4f\xd5\xab\x90\xdc\x3e\x2b\x9e\xa2\x06\xa4\x31\x97\x28\x56\x20\x68\x9e\xea\x9a\x5c\x1f\x74\xb0\x1d\x48\xa0\x96\xd4\x26\xdb\x4c\xa9\x45\x51\x68\xbb\xc5\xe2\xd1\x5a\xd9\x8d\x25\x3c\x28\x64\xa4\xe5\xed\x23\xdb\x01\x42\x8f\x19\x10\xd3\xd1\xf4\x69\xc4\xec\x40\x3a\x26\x87\x96\x98\x76\x14\x17\x8b\xc7\x57\xd4\xed\xd1\x39\xd8\x7f\xff\xe3\x3b\x93\x06\x7e\xc8\x7f\x39\x66\xea\xb0\xf5\xdf\xbd\x7b\x30\x74\x8c\x2e\x1d\x90\x0d\xbc\x6f\x93\xb7\xb6\x0f\x79\xd0\x86\xc4\xa4\xef\x90\x4d\x30\xd4\x1e\x45\xb9\x77\x6a\x65\x79\x57\x41\x80\xe8\xf0\x15\x52\xe5\x1e\xad\x86\x20\xaf\x81\x8e\x48\x26\x1f\xa1\x4a\x56\x53\x8c\x38\x18\x6a\x33\xb2\xb9\x14\xbd\x58\x4b\xb1\x57\x14\x6b\x52\xcf\x62\x1e\x06\xb1\x23\xe2\x5e\x6c\x40\x60\x39\xaf\x3b\xb5\xdf\xe4\xb4\xf7\x8c\x22\x56\xa5\x14\xac\x85\xae\xa3\xb8\x33\x51\xce\xc3\x01\x38\xdb\x79\x53\x96\x7e\xb9\xb0\xfe\x25\xac\x06\xc5\x53\x58\xd3\x13\xfa\x67\xc4\xd9\xe4\x9c\x0e\x99\x13\x3f\xf3\x55\x32\x75\x2b\xd4\x8a\x6c\x2e\x5b\xee\x40\x5d\x63\x1e\x6b\xe8\x83\xe6\xbd\x8d\xd7\xc8\x28\x06\x8a\x38\x5d\xa8\x1a\x1c\x5a\x40\xb5\x76\xc4\xc6\x3e\x04\x4b\xb5\x75\x3d\xa3\x31\x86\xe4\x40\xc7\x5b\x99\x1b\x8f\x9c\xc9\x91\x32\x4c\x79\xb0\xbc\xd7\xf1\x2f\xd5\x76\x20\x3c\x9e\x0b\x4b\x1d\x32\xe8\xa8\x6d\xb3\xba\xbd\x5f\xfe\xf2\xf3\xaf\x5f\xfd\xf3\xcd\xe3\xfa\x5b\xdb\xbe\x58\xd0\x8e\x7d\x3c\x4e\xf3\x4f\x14\x38\x1b\x72\x7f\x3f\xff\xb4\x86\x31\x37\xce\x9b\x97\x85\xe9\xb9\x2a\x36\xdb\x8b\x2a\xc5\x75\x99\xb2\x5c\x5e\x16\x2a\xcb\xe5\xfd\xff\xd7\xd2\xe4\xd3\xba\x98\xff\xf9\xe1\xf7\x0f\xeb\xc7\xab\x17\x6e\xb2\xee\x33\x44\xe5\xfc\x8a\xe6\x6c\x45\xf6\xd4\x8d\xcc\x65\x79\x77\x49\xfd\x69\x7a\x49\x35\x3d\x40\xbf\x35\xc0\xff\x4d\xbd\x96\x73\xa5\xe6\xed\xa5\x98\xb7\x5f\x40\xcb\xec\xdf\x00\x00\x00\xff\xff\x28\x8c\x3d\xc3\x6b\x06\x00\x00" + +func runtimeSyntaxSolidityYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxSolidityYaml, + "runtime/syntax/solidity.yaml", + ) +} + +func runtimeSyntaxSolidityYaml() (*asset, error) { + bytes, err := runtimeSyntaxSolidityYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/solidity.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxSqlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x55\xdb\x6e\xe3\x36\x10\x7d\xde\x7c\x85\x61\x2c\xb0\xb9\x20\x41\x5f\xeb\x97\x05\x2d\x8e\x64\x36\x14\xa9\xf2\xe2\xcb\x46\xe9\xae\x62\xb3\xb5\x00\xdf\x62\xc9\xdd\x2d\x70\x3e\xbe\xa0\x72\xd9\x3c\xa4\xd5\x83\x34\x87\xc3\x33\x87\x9a\xe1\x60\xf4\x67\xbd\x09\xed\x3f\x87\x30\x1a\x34\x8f\x9b\xb3\xb3\x55\x68\xc3\xb2\x1d\x0d\xce\x06\x83\xc1\x20\xee\xed\xaa\x6d\x18\x0d\x86\x65\x79\xd3\x3c\x6e\x3e\xa2\x79\xdc\xd4\x6d\x38\x2e\x3f\x0e\xcf\xce\x8e\xa7\x4d\x68\x46\x1d\xf3\x7a\xd0\xb4\x55\x1b\xb6\x61\xd7\x8e\x06\xc3\xf3\xcf\xf5\x45\x59\x3e\x9c\x33\x29\xc1\x6c\x02\x66\xc1\xa4\x23\x03\xa6\x38\x18\xe7\x60\xde\xe9\xaf\x42\x25\x86\x72\x52\x2e\x72\x87\xff\x23\x33\x26\x37\x23\x52\x18\x0b\xc5\xcc\x02\x63\xed\x26\x18\x47\xab\x25\x31\xd5\x17\x9d\x4c\x98\xca\x08\xc9\x84\x92\x5b\x24\x5a\xfa\x5c\xd9\x67\x8b\xc4\x68\x6b\x91\x18\x62\x8e\xfa\x74\x38\x73\x6c\xcc\x2c\x59\xbc\xa0\x0e\x80\x93\x64\x0b\xe2\xe0\x64\x13\x23\xc6\xd4\x01\x70\x61\x9d\x50\x89\x8b\xdb\xe4\x08\xdc\xe8\x02\x9c\x52\xe6\x65\x6f\xbe\xa4\x12\xa9\x2d\x71\x90\x4d\x58\x11\xed\x5c\x58\x67\x41\xf3\x42\x32\xd1\x9b\x70\x2a\x48\x72\x8b\xce\x20\x95\xde\x4e\x90\x6a\x13\x1f\x12\x99\x42\xea\x55\xe2\x84\x56\x48\x8d\xce\xfb\xb4\x32\xa3\x7d\x81\xcc\x30\xe5\x30\x61\x53\xa1\xb2\xbe\x08\x91\x29\x6d\x08\x42\x71\x9a\x43\xa8\x54\xc8\xb8\xb0\x64\x1c\x84\x52\x64\x20\x94\xd3\x10\x9c\x94\x13\xa9\x20\x0e\xa1\x20\x2c\x44\xda\x27\xfc\x9b\x16\x0a\xb7\xb4\xb0\xb8\x15\x52\x46\xd4\x17\x21\x89\x71\xa1\x32\x48\x71\x4b\x90\x22\x17\x0e\x52\x28\xb2\x90\x9a\x71\x48\x9d\x30\x19\xdf\xb7\x90\x7a\xf6\xb5\x30\x42\x1b\xe1\x16\x90\x94\x3a\x48\xa6\x32\xcf\xb2\xde\xa6\xc8\x35\x17\xe9\x02\x8a\x39\x6f\x98\x84\xd2\x0e\xca\x4b\x09\x45\x73\x37\x65\xb2\x2f\x5c\x17\x4e\xe4\xe2\x0b\x21\x02\xad\x9e\x0d\x93\x72\x01\x6d\x38\x19\x68\xef\xba\x0a\xea\x0e\x46\x47\xef\xf5\x17\x46\x27\xc4\xbd\x21\xbc\x20\x26\x51\x18\x91\x33\xd3\x5b\x31\x43\x8c\xc3\x50\x4a\x86\x54\x42\x16\x86\x32\x9a\x17\x30\xa4\x58\x4e\x30\x54\x48\x96\x44\xeb\xbc\x51\x30\x34\xd5\xb7\x04\xd3\x95\xd7\x88\x6c\xd2\xdb\xd8\x76\xa2\x67\xb0\xba\x13\xb3\x8e\x39\x6f\x61\x9d\x61\x31\xf4\x6b\x77\xbd\x96\x24\x25\x0e\x96\x62\xf1\xa2\xe9\x53\x74\x6c\x2c\xc9\xc2\x91\xc9\x85\x62\x8e\x38\x9c\x46\x94\x94\xf1\xe2\x9d\xf1\x2a\x61\x8e\xd0\xd1\xe0\x28\x2f\xb4\x89\x23\xc4\x19\x91\x65\x64\x22\xc1\x3a\xe2\x7d\xa7\x78\x25\x7e\xf7\x04\xaf\xba\x6e\xf1\x96\xe0\x6d\xd4\xf7\x05\x8f\xea\x53\x26\x3d\x59\x4c\x99\x11\x4f\x9f\x33\x15\x34\xeb\xd3\x9c\x09\x37\xc1\xcc\x08\x47\x98\x4d\xc8\x10\xbe\x90\xd1\x69\xec\x6c\xb7\x28\x08\x73\x6d\xde\x2a\x3c\x4d\xe8\xd7\xe0\x29\x33\xc9\x84\x19\x38\xa1\x16\x42\x39\x38\x9a\x3b\x74\xdf\x62\x73\x26\x65\x74\xe5\xc4\x85\xcf\x23\x7a\x7e\x28\x26\x3c\x16\x59\x5c\xa6\x52\x33\x07\xae\x7d\x2c\x0b\xa7\x44\xe4\x4c\x76\xf1\x4e\xe4\x84\xf8\xb2\x8e\xe5\x45\x87\xb0\x20\x66\xe0\x95\x15\x99\x22\x8e\xd7\x73\xc7\x52\x8f\x3b\xd0\x1d\xde\xad\x9e\xce\x7c\x03\xbb\x2d\xa9\x55\xd6\xf9\x22\xe8\x3c\xa4\x7c\xde\x8d\xef\x97\x91\x3e\x65\xe6\x09\xbd\xcd\xf9\x70\x0c\x87\xe3\x7e\xf9\x9a\xf6\x4d\xcc\x7c\x55\xb5\xd5\x43\xd5\x84\x06\xab\xd3\xf6\x80\xb0\x5c\xef\x11\x7e\xd4\x2d\xc2\x8f\xc3\xa6\xaa\x77\x58\x87\x6a\x15\x8e\xe7\xcd\xc5\x67\xac\xc3\xe6\xd0\x2b\x58\x6f\x0f\xfb\x63\x8b\x7a\xb7\xaa\x97\xa1\xc1\x76\xbf\x0a\xd8\x9d\x36\x9b\xbf\xab\xcd\x29\x60\x7f\x6a\x0f\xa7\x16\x87\xe3\x7e\x7b\x68\xf1\x78\xaa\x5b\x1c\x43\xb5\xea\x55\x6d\x96\xeb\xb0\xad\xd0\x84\x43\x75\xac\xda\xfd\x11\xcd\x7a\xff\x1d\x6d\xf5\xb0\x09\x0d\xda\x7a\x1b\xf6\xa7\x16\xdf\xeb\x55\xbb\x7e\x2b\xb5\xdc\xef\x9a\xb6\xda\xb5\x37\x0f\xfb\xfd\xa6\xfb\xe9\x3e\x9c\xc7\xa9\x90\xa6\xef\xb2\x76\xa7\xed\x43\x38\x3e\xf3\xee\x7e\xb9\xfe\xf5\xfe\xea\x5d\x5e\xd3\x1e\xeb\xdd\x5f\x91\x37\x3c\x2f\xcb\xb2\xbc\xc1\xdd\x1f\xe5\xf0\xfe\xe2\xb2\x1c\xe2\xd3\xab\xe7\xd3\xfd\xc5\xe5\xa7\xff\x8e\xfd\xf6\x33\xb4\x2c\xcb\x6f\xf7\x17\x97\xdf\x7e\x92\xb7\xcf\xcd\x5d\x96\xd7\x65\x79\x7d\x73\xf9\xf1\x65\xab\xde\xad\xc2\xae\xbd\x5e\xae\xab\xe3\xcd\xf7\x75\xdd\x86\xe6\x50\x2d\x63\x27\xdf\xdd\x8d\x9e\xe0\xfd\xfd\xd5\x7b\xec\xd1\x60\xf8\xe1\x6a\x70\x85\xc1\xd5\x87\xab\xe1\xd9\xbf\x01\x00\x00\xff\xff\xfc\x6c\xf1\x96\xa5\x08\x00\x00" + +func runtimeSyntaxSqlYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxSqlYaml, + "runtime/syntax/sql.yaml", + ) +} + +func runtimeSyntaxSqlYaml() (*asset, error) { + bytes, err := runtimeSyntaxSqlYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/sql.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxSwiftYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x37\x79\x53\x1b\xcb\xf1\xff\xf3\x29\xd6\xf8\xf7\x4b\x00\xc7\xe2\x1d\x29\x57\xb2\x39\x1c\x10\x90\x52\x85\xc3\x65\xc0\x76\x85\xe5\xa9\x46\x33\xbd\x52\xdb\xb3\x33\xe3\x39\x10\x72\x3a\xdf\x3d\xd5\xb3\xbb\x20\x09\x30\xa9\xd4\x53\x95\x76\x76\x7a\xfa\x3e\xa6\x7b\x6b\xd4\x10\x17\x0e\xca\x22\xcc\xb1\x8e\x1b\x1b\x0a\x22\xc8\x58\x6e\x14\x45\x51\xf0\xa1\x11\x0d\x94\xc5\x66\x55\x0d\x32\xc2\xff\x6d\x6e\x6c\xf8\xa4\x21\x94\x1b\x45\xc6\x79\x59\xbc\x13\x31\x82\x37\x21\x6f\x5f\x17\x2d\xb7\x6a\xb2\x35\xde\xae\x26\x19\xd6\xe1\x9d\x39\xf0\x22\x5a\xdf\x23\x86\x45\x33\xb1\x7a\x60\x3b\x70\x59\x6c\x5d\x0d\xca\x3f\xfd\xee\xd5\x0e\xfd\xe5\xc5\xdb\xaa\xfa\xff\x6b\xfa\x33\xfd\x95\x76\xe9\x35\xfd\x66\x7b\x99\xcf\x01\x48\x2d\xbc\x88\x68\x4d\xf1\x0f\x58\xcc\xad\x57\x77\x2c\xa3\x88\xd0\x80\x89\x03\x75\x8f\x94\x95\x11\x21\x58\x89\x22\x82\x62\xfd\x48\x6a\x11\x02\x29\x40\x83\x91\xc0\xa4\x86\xe0\x36\x82\x09\x68\x0d\xb1\xd5\xce\xe3\x8d\x88\x40\x75\x32\x92\xb0\x71\xd6\x47\x62\xdc\xde\xa4\xef\x89\x42\x63\x13\x63\xb3\x53\x84\x26\x0d\x91\xac\x03\x43\xbd\xa1\xd4\x33\x77\xde\x46\x2b\xad\x26\x97\x26\x1a\x25\x31\xcb\xbc\xf8\x24\x23\x85\x34\x09\xd2\xa3\x8b\xc4\x1a\x0b\x8d\x22\xd0\x8d\xf0\x6b\x4e\x3d\xef\xd5\x08\x4f\xfa\x22\x2b\x35\xf1\x20\xbe\x90\x14\x01\x48\x5a\x13\xd1\x24\x20\x05\xb5\x48\x3a\xf2\x0a\x9e\x94\x25\xd0\x01\xa8\x16\x5a\xc7\x99\xb7\x69\x3a\xa3\xda\x7a\x9a\x26\xe1\xd5\x23\x76\xb7\xb6\xd6\xec\x96\x9a\x3c\x38\x10\x91\x3c\xc4\xe4\x0d\x85\x39\x46\x39\xa3\xf9\x0c\x3c\xd0\x7c\x86\x1a\xd6\xb4\xfe\xd2\xaa\x3a\xf0\x10\xc0\xdf\x80\x7a\xe0\xd3\xfe\x60\x25\x76\x78\x83\x71\xc1\xea\xdf\x80\x41\x30\x12\x48\x2d\x8c\x68\x50\x92\x42\x75\x0e\x91\x6a\x64\x87\x4f\x81\xbd\x5f\xe3\x2d\xa1\x51\xe8\x41\x46\xd2\xe2\xdb\x82\x34\xd4\x91\x9a\xc4\x4e\x36\xd3\xc7\x02\xb9\x22\xd4\x58\x03\x64\xac\xe9\x09\xc8\xde\x80\xf7\xa8\x80\x9c\x0d\x91\xb9\x3b\x0f\x12\x54\xd6\xc3\x79\x60\xc8\xbb\x3e\xa0\x1e\xbe\x26\xf4\xf0\x98\xdb\x56\xa5\x78\x9c\xce\x22\x05\x88\x74\xc1\x69\x99\x8c\x9d\x1b\x50\x34\xe7\x60\xcd\x51\xeb\x73\x88\x6b\xae\x3b\xbc\x75\x1e\x02\x27\x6a\x21\x8c\xca\xd5\xf6\xa0\xf2\x44\xa0\x3d\xb3\x20\x29\x38\x0a\x18\x38\x2c\x33\x6f\xe7\x81\x42\x72\xe0\x29\x80\xae\x29\x43\xa8\x83\x47\xbf\x58\x11\xb3\xac\xef\x24\xa1\x8e\x63\xec\xca\x68\x12\x48\xa8\x1b\xc1\x46\x0b\x8d\x53\x63\xeb\x7e\xfd\x20\x74\x02\x12\x66\xf1\x77\x30\x5d\xa2\x8b\x10\xc0\xc7\x6e\x41\x6b\x8e\x04\xea\xe4\x81\x26\x1e\xd5\x14\x8e\xbc\x6d\xce\x26\x9f\x41\x46\xbc\x81\xe1\x63\xae\x5a\x11\xfd\x18\xd1\xa5\x91\xd6\x28\x64\xde\x42\x77\x6c\x2f\xec\xfd\xf9\x23\xa0\x55\x12\xae\x05\x81\x26\x3c\x2b\x5d\xda\x64\x22\xe5\xe7\xa1\x6e\x0b\xae\xdd\x1d\x83\x50\x68\xa6\xff\x04\x6f\xf9\x42\x99\xa4\xe9\x3b\x8f\x26\x2e\xbd\x6a\x43\x0a\x43\xcc\x3e\x53\xde\xba\x23\xf4\x21\xe6\xb7\x63\xc1\x2f\xa9\x71\x04\x46\x5a\x05\xfb\x18\xc3\x5e\xf8\xc8\x45\xfc\xac\x42\x7c\x69\xb1\x9b\x81\xe0\x6b\x12\x9a\x6a\x11\x85\x3e\xf4\xde\x7a\xbe\xc0\x22\xf0\x62\x14\x17\xc3\x7e\xf6\x81\xba\x77\x41\x4e\xb5\x29\xc4\x0f\xe2\x18\x43\xcc\x55\x22\x21\x10\x9a\x2e\x4c\xe7\xd6\x3f\x7a\xd1\xad\xc8\xc7\xd0\xf1\x5d\xf1\xf7\x1d\xf4\x03\xf8\x89\x88\xd8\xac\x9d\x5e\x1a\xfc\x9a\x40\x2f\xde\xf3\x95\xc3\xa5\xa3\x1e\x05\x9e\x5a\x73\x36\xf9\xfc\x7c\x4e\x7c\xb6\x68\x48\xc3\x2d\x4a\x3b\xf5\xc2\xcd\x50\x0a\x3d\xb4\x8d\x13\x1e\xa8\x11\x8e\x1a\x71\xcb\xff\x2e\x62\xd4\xa0\xe1\x7f\xbf\xcd\x1e\x44\x39\xe4\x28\x70\x75\x6b\xe1\x02\x39\xe1\x63\xce\x0e\xae\x73\xbc\x7d\x56\x05\xbe\x05\xfa\x84\xa2\xe5\x4d\x9f\xec\x2e\xa7\x83\xeb\x32\xe1\x6b\x42\xf9\x85\x1d\x4c\x1e\x84\x3a\x46\x03\xe4\x41\x25\xc9\x4b\xad\x41\x3e\xef\x78\x0f\xb9\xb5\x38\x0f\x91\x35\x7f\xe1\xe1\x06\x7c\x00\xf2\x36\x19\x75\xe9\x2e\xec\x1e\xd7\x63\x36\x30\xe0\x37\xb0\x75\xb7\xb4\xf5\x19\x58\x74\x70\x1a\x23\xb7\x1b\x1f\xc3\x47\x8c\x33\x6e\x39\xa8\xe0\x59\xd1\x2d\x1a\x73\xec\x5e\x3a\x9e\x73\xe1\x28\xda\xf3\xe8\xf9\x9e\x8c\x5e\x98\xc0\xd9\x4c\xc9\x28\xf0\x10\x22\x36\x22\xc2\x30\x17\x50\x32\x41\xd4\xb0\xa7\x14\xdf\x61\x67\x75\xb7\xdf\xc7\x6c\xca\xb3\xf2\x5b\xec\x03\x3b\x37\x92\x63\xd6\x6e\x2f\xcd\xdc\x0b\xd7\x6d\xde\xb7\x4e\xa4\x39\xc6\xd9\x21\x77\x74\x05\xea\x18\x6b\x88\xd8\x40\x06\xb6\xd9\xb8\x17\xdf\xe9\x14\xb8\x66\x33\xf0\x32\xd3\xbe\xb3\xd9\xb1\xcf\x6a\xf1\x80\xa2\xcf\xf1\x25\x5e\x27\x29\x8a\x89\xee\x11\x9e\x3c\x08\xbf\x86\xf8\x96\x49\x57\xcc\xdf\xd0\x31\x87\xae\x59\x9c\x40\x14\x0f\xb8\x35\x10\x45\x59\x54\x7f\xe3\xeb\x3c\x45\x2b\xb5\x0d\x9c\xa7\xe2\x46\xa0\x66\xdd\xba\x0e\x9b\x13\x1a\x6e\x79\xf4\x01\x45\xa3\xfd\x3d\x99\x21\xa3\xfd\x03\x08\x38\x35\x19\x73\xb4\x7f\x96\x22\x0f\x38\xa3\xfd\x91\x09\x0e\x64\x36\xae\xed\xbe\x8f\x19\xb2\x24\x3a\xb7\x64\x63\xbb\x89\xc1\x58\x08\x52\xb8\xdc\x71\xed\xe4\xb3\xa4\xd3\xf3\x3d\xe7\x34\xca\x3c\x56\x9d\x08\x34\x74\x7a\x3e\xb4\x6e\xc1\x19\x76\x7a\x7e\x22\x8c\x98\x82\xa2\x8c\xda\x35\xdf\xae\x2d\x3f\x23\xb6\xef\xcc\x14\x21\xb4\xca\xce\x85\x37\xe3\x64\x52\x00\x35\xf6\x10\x78\x20\xba\x1c\xad\x09\x6f\x99\xb6\x4e\x75\x1e\x9c\xb7\x12\x42\xb0\xbe\x93\xd4\x81\xca\xe2\x97\xab\xab\x32\x38\x21\xa1\xbc\xbe\xde\x79\xb9\xbc\xd9\x52\x50\x73\xb1\xe7\x11\x8b\x1f\x58\x13\x18\xc5\xf3\x53\xcd\x0d\x19\x64\xb4\x4b\xb1\xef\x38\x0e\x0e\xb8\x8b\x8c\x14\x47\xa3\x46\xf0\xed\x5c\x3d\x1e\x9e\x1d\x5f\x9e\x9c\x8e\xc7\x34\x1e\x1f\x8d\x8e\x0f\xdb\x97\xcb\xd3\xe1\xc5\xe8\xac\x85\x1e\x8f\x4e\x0f\xc7\xe3\xff\x82\xdd\x77\x14\x96\x56\xa7\xa6\x9d\x86\xf3\x18\x9c\xa3\xaf\xd1\xc0\x52\x7e\x0d\xad\xe1\xc6\x16\x3b\x31\xb2\xdb\x66\x35\xa3\x4f\x79\x98\x0c\x40\x06\xf5\xf6\x1a\xca\xc0\xa4\x66\x02\x79\xe8\xff\xe1\xf5\x1f\xaf\x5f\x6d\xaf\x0e\xb5\xd6\x8b\x29\x14\x17\x6b\xc3\xcd\x20\xb4\x07\x99\xff\xd6\xe5\xf6\xdb\x91\x89\x5b\x7f\xa0\x1f\xdf\xd0\xcf\x3f\xd1\x9b\xdf\x6f\xdf\x1b\xfc\x00\x7b\x64\x38\xac\x26\x52\x77\x4b\xed\x63\xa4\x7d\x6b\x35\x0d\x67\xc2\x0b\xc9\x45\x7a\x60\x13\xe7\xc3\x99\xeb\x66\x83\x23\x6d\x45\xa4\xf7\xc2\x4c\xe1\x3b\x8c\xf7\xcc\xa2\xad\xfe\xb5\x39\x6d\x68\x35\x07\x15\xed\xca\x87\xd1\x40\xde\x83\x5b\x72\xef\xc5\x82\x0e\x30\x83\x84\x5f\x50\x37\xf1\xf5\x5c\xd6\xe7\xbb\x81\xcc\x90\x4c\x3b\x6c\x0d\x60\x0b\x68\x78\x69\xb8\x2a\x41\xb5\xbb\xf3\x19\xdf\xf3\x77\xc0\x6e\xcb\xf6\xdf\xc1\xf2\xe6\xd8\x9a\xe9\x3d\xa8\xdd\xf1\xf3\x21\xbc\x85\x7c\x44\x05\xad\x04\x7e\xfe\xf8\xa6\x5d\x7f\xfe\x89\x86\xad\xb7\x86\xad\x13\x97\x2c\x68\xfd\xbd\x1e\xfd\x90\xa1\xed\x57\x26\xff\x72\x2f\x2a\x8b\x6a\xf3\x0e\x02\x46\xad\xec\xc3\x17\x74\x65\x51\x55\x83\x3b\x48\xff\x19\xba\xf4\x5b\x96\xe0\x40\xa2\xd0\xac\x5e\x59\x6c\x55\xd5\x0f\x54\x55\x55\x45\x55\x15\xa9\xaa\x0c\x55\x95\xa7\xaa\xda\xa4\xaa\xfa\xed\xf6\x53\x2c\xda\x3e\x6b\x75\xff\x69\x57\x55\x5b\x57\x57\x65\x1e\x34\xb8\x42\xaa\x27\x09\x93\x41\x6e\x80\x4c\x92\xaa\x7f\x5d\x5d\x95\xb7\x0a\xa7\x18\xcb\xeb\xeb\x57\xff\xbe\xf3\xcb\x0c\x26\xc2\x4c\x0b\x1e\x01\xee\xbc\xd3\xe4\xeb\x2a\xb4\x47\x65\xf1\xcb\xd6\xcb\x17\xdb\x83\x9d\x9e\xe4\xc0\xca\x62\xd8\xe2\xac\x51\x28\xbe\x7c\xb6\x76\x77\x77\x19\x7b\x29\x09\x99\xf9\x13\x24\x5c\xc9\x65\xb1\xb9\xbb\x3b\xd8\xd9\x5c\x26\xd9\xd7\x56\x7e\x79\x82\x66\xc2\x67\x0f\x82\xb6\xb9\x5b\x55\x3b\x6b\x81\xdb\xac\xaa\x9d\xdd\xcd\xef\x87\x2a\x5a\x65\xcb\x62\x73\xeb\xe2\xec\xe0\x8c\x3e\x7d\xfa\x44\x47\xa3\x4f\x27\x87\xdb\xe5\xdb\x9e\x6e\xc9\xec\xff\x51\xab\x5f\x5d\xb1\x4e\xa5\x0b\xab\xec\xc6\xb3\xc8\xff\x09\x00\x00\xff\xff\x39\x00\x1b\xee\x5c\x11\x00\x00" + +func runtimeSyntaxSwiftYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxSwiftYaml, + "runtime/syntax/swift.yaml", + ) +} + +func runtimeSyntaxSwiftYaml() (*asset, error) { + bytes, err := runtimeSyntaxSwiftYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/swift.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxSyntax_checkerGo = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x91\x4f\x6b\xdc\x30\x10\xc5\xcf\xd2\xa7\x98\x15\x04\x64\x70\x65\xf6\x1a\xd8\x5e\x92\x96\x9e\x42\x68\xaf\x85\x45\xb5\x35\xf6\x10\xfd\x59\xf4\x07\x9a\x96\xfd\xee\x45\xf2\xd6\x64\xdb\x3d\x14\x0a\xc6\xd8\xe3\x37\xef\xfd\x9e\x75\xd2\xe3\x8b\x9e\x0d\x38\x4d\x9e\x73\x72\xa7\x10\x33\x48\xce\x04\xba\x2c\x38\x13\x14\x06\x0a\x25\x93\xad\x2f\x29\x47\xf2\x73\x12\x9c\x33\x31\x53\x5e\xca\x37\x35\x06\x37\xfc\x78\x35\x13\x4d\xa4\x07\x47\x63\x0c\xc3\xe8\xa6\xcb\xd3\x42\xf3\x62\x69\x5e\xb2\xe0\x1d\xe7\x58\xfc\xd8\x72\x64\x07\x3f\x39\x43\xb2\x26\xf5\x70\x84\xfb\x03\xac\x11\xea\xb3\xd1\xd3\x23\x45\x29\x94\xe8\x38\x67\x8b\x9e\x3e\xc4\x58\xbf\xa3\xb6\xc9\x70\x86\x21\xc2\xb1\x07\xac\xa3\xa8\xfd\x6c\xa0\x99\x54\x37\x46\x08\x17\x3c\xf5\x49\xa7\x2f\x05\x91\xbe\x4b\x54\x4f\xda\x19\xd9\xf5\x20\xd4\xab\x76\x56\xb4\x64\xc6\xc8\x9f\x4a\xfe\x3b\xfb\x23\x59\xb3\xed\x74\x55\x38\x0c\xe8\xb2\x7a\x8e\xe4\xb3\xf5\x52\x3c\x2c\x66\x7c\x21\x3f\xb7\x5c\x78\xf7\x1e\x44\x0f\x57\xfa\x3a\xef\xc1\xac\xd4\x5b\x7d\xf5\xac\x63\x32\xcd\xbd\x25\x37\x29\x61\xd3\xed\x0e\xe0\xc9\xae\x58\xbf\x1b\x1f\x20\xc7\x62\xda\x64\x8b\x47\x29\x1e\x42\xb1\x13\xf8\x90\xe1\x54\xfd\x36\x88\xbb\x74\xff\xd5\xff\x49\xc2\xde\x82\x9b\x18\xd7\xe1\x18\x7c\x26\xbf\x7a\x9f\xeb\xed\xd8\x68\xf7\x37\x70\x1f\x0d\xca\xb5\x8e\x27\xfb\x86\x78\xff\x3f\xc8\xad\xfe\x0a\x5e\x52\xfd\x91\x37\x42\xef\x52\xf7\x0f\x7d\xf6\xb7\x0b\x9d\x79\xbd\x08\x61\x77\x01\xab\x94\x57\x67\xf8\x14\x80\x52\x2a\x26\x01\x86\xe2\xa7\x9d\xe8\xea\xca\x99\xff\x0a\x00\x00\xff\xff\x81\x30\x89\xf2\x0a\x03\x00\x00" + +func runtimeSyntaxSyntax_checkerGoBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxSyntax_checkerGo, + "runtime/syntax/syntax_checker.go", + ) +} + +func runtimeSyntaxSyntax_checkerGo() (*asset, error) { + bytes, err := runtimeSyntaxSyntax_checkerGoBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/syntax_checker.go", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxSyntax_converterGo = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x58\x5d\x6f\xdb\xb8\x12\x7d\x96\x7e\xc5\x5c\x5e\x14\x90\x6a\x55\x46\x93\xf4\x25\xf7\x1a\xc1\xc5\xc5\x16\xed\x02\xdd\x2d\xe2\xdd\xa7\xc8\x68\x18\x8b\x96\xb9\x95\x28\x81\xa4\xd2\x04\xd9\xfc\xf7\xc5\x0c\x29\xc9\xdf\xb1\xbb\xc5\xbe\xd8\xe6\x90\x33\x3c\x73\x38\x87\x1f\x6e\xf8\xfc\x2b\x2f\x04\x54\x5c\xaa\x30\x94\x55\x53\x6b\x0b\x51\x18\xb0\x45\x65\x59\x18\x30\x59\x8f\x65\xdd\x5a\x59\x62\xa3\x36\xf8\xa9\x45\x21\x1e\x1a\xfc\x65\xac\x96\xaa\x30\x2c\x8c\xc3\xd0\x3e\x36\x02\xa6\x52\x15\xa5\xb8\x6e\x4b\x01\xc6\xea\x76\x6e\xe1\x29\x0c\xe6\x75\x59\x6b\x70\x63\xc3\x80\xbc\xbb\xd6\xb3\xf7\xfb\xd4\x96\x56\x1e\x74\x33\x96\x6b\xdb\xb7\x84\xca\x01\x56\x82\x8c\xc7\xf0\x73\x2d\x15\x45\xb0\xfc\xab\x30\xc0\xc1\x3c\x2a\xcb\x1f\x40\xa3\x2d\xfa\xb6\x94\xf3\x25\xcc\xb9\x82\x3b\x01\x15\xce\xd6\x94\x02\xb4\x28\xda\x92\x6b\x10\x0f\x8d\x16\xc6\xc8\x5a\x99\x18\x63\x71\x95\xc3\x1f\xb5\x54\x06\xa4\x05\xa9\x6c\x0d\xb5\xda\x35\x1a\xee\x1e\xe1\xd7\x6b\xa9\x0a\x10\xf7\x42\x3f\xda\x25\xfe\xb4\x75\x21\xec\x52\xe8\x70\xd1\xaa\x79\x0f\x2b\xd2\x3e\x3b\xa9\x8a\xd8\x7f\x63\x96\xa6\x29\xa5\x85\xcb\x89\x37\x99\x74\x8a\x06\x1a\x9d\xc0\x2d\x03\x76\x1b\x87\x01\x62\x11\xf9\xea\x28\x0c\x1b\x91\x6f\x02\xec\x4f\x16\x23\xaf\xb6\xd5\x0a\xdc\x50\xe4\x84\xa6\x6f\xb8\x36\xe2\xbd\x2c\x45\x64\xc5\x83\x4d\x60\x21\x4b\xa1\x78\x35\x20\x89\xd0\x82\x6b\x90\x78\xc2\x12\x58\x0a\x9e\x8b\x8e\xf9\x84\x08\x34\x70\x33\x93\xca\x0a\xbd\xe0\x73\xf1\xf4\x1c\x23\xf2\x52\x2a\x61\xb6\x91\xbb\x79\x58\xa6\x58\x1c\x86\xc1\x78\x0c\xd7\xb4\xe0\x8b\x5a\x13\x18\x4c\xdb\xaf\x8c\xb1\xdc\x8a\x4a\x28\x6b\xc2\xc0\x99\x3e\x23\x5a\x8d\x31\x5d\x8d\xa5\x9f\x5a\x63\xff\x5f\x57\x0d\x26\x70\xeb\xdd\x58\x94\xbe\xbe\x8a\x59\x66\x46\xf8\x2b\x66\x23\x64\x68\xe7\x3c\x7d\x22\xc3\x3c\xce\x74\x78\x1e\xef\xe6\xa2\xdf\xee\xcf\xc2\x72\x95\x73\x9d\xaf\x16\x9a\x09\x03\xfc\x3a\x1c\xdf\x15\x36\x65\x91\x99\x51\x74\x75\x99\x45\x51\x3a\xba\x8a\xaf\x32\x6c\xc7\x57\xfd\xc4\x07\xd9\x73\xcb\xf2\x4d\xda\x25\x90\x36\x26\x2c\x4d\x53\x06\x42\xe5\xee\x97\x43\x32\xc5\xae\x9f\x54\xfe\xf7\x10\xf9\x09\x08\x57\x66\x46\x34\xc7\xc0\x0e\x82\xc3\x62\xf8\xa5\xad\x12\xfa\x41\xd3\x70\x55\x08\x70\x35\xf2\x14\x06\x54\x2d\x30\xd4\xca\x6f\x5a\x56\xd3\x86\xcf\x45\x84\x1d\x71\x18\x04\x72\xe1\x7c\x27\x13\x60\x8c\x5c\x82\x79\xad\xac\x54\xad\x08\x83\xe0\xd9\x8d\xe8\xdc\x3f\x70\xf3\x59\x8b\x85\x7c\x20\xf7\x04\xd8\xbf\x59\x7c\xb2\x8f\x23\xb2\x73\x74\xad\x4f\xdc\xce\x97\xbe\xac\x57\x4a\x32\x7d\x2f\x55\x3e\x6d\xef\x2a\xec\x8e\x6e\x66\x77\x8f\xd6\x23\x47\xe8\x84\x5d\xa8\x68\x2d\x44\x8c\x99\x9c\xbb\xd8\x41\x27\xb2\x9e\x81\xf5\xb1\x37\x6f\x67\x14\xc7\x83\x80\xc9\xb0\x6d\xec\x1c\x7e\x36\x73\xf3\x3e\x83\x28\x8d\xe8\xe6\xa8\x6c\xfa\x59\x4b\x65\x4b\x15\x75\x32\x4f\x86\x85\x61\xd3\x0d\xd5\x81\x34\xa0\x6a\x0b\xf7\xbc\x94\xf9\x25\xb0\x51\xb7\x12\x6b\x24\x12\x8b\x2f\x31\xe9\x14\xd3\x31\x39\x1e\xc3\x87\x0d\xe5\xa1\xd9\x0d\x5a\x21\x78\x55\x8b\xc7\x11\xbc\x16\x82\x08\x3e\xf3\xc9\x7b\xcd\x6e\x13\xb7\xe6\x82\x3c\x9f\x4e\xdc\x66\x32\x27\x11\x17\x12\x1f\xd3\x41\xb3\x09\xdc\xb5\x16\xcf\x95\x79\xdd\x96\x39\x1e\x47\xfd\x46\x42\xc7\x1d\xd7\xf6\x8d\x50\xb9\x63\x7c\xd8\x4c\x52\x4a\x61\xea\x92\xa2\x09\x7b\xb2\xa7\x3b\x36\x22\xdf\x45\xbe\x60\x97\x4e\x89\x54\xe6\x9e\x63\xd2\xe8\x10\xfd\x30\xfd\xf7\x5c\xc3\xfa\x71\xec\x6c\xb4\x97\x4c\xed\xa6\x79\x51\xf2\xc2\xac\xd8\x3a\x79\xf8\xf8\xb4\x70\x17\x9e\xfc\xf1\x18\x3e\x52\x37\xb2\x7a\x81\x50\x15\xe1\x6d\x71\xbb\x32\x8d\x98\xcb\x85\x14\x39\x98\xba\x12\xc0\xf3\x5c\x5a\x59\x2b\x5e\xfa\x29\x6c\x8d\xe3\x3c\xf3\x08\x6f\x90\x97\x9f\xab\x57\x96\x73\xd8\xee\x3f\xf3\xfd\x72\xe1\x63\xfe\x6b\xd8\x7f\x82\xa0\x4f\x70\x02\x2c\xba\x62\x30\xf2\x83\x46\xc0\x62\x6c\x6d\xc9\xb4\x0b\x7b\xee\x0b\x6d\xbd\xd2\x56\xe3\x1d\xe1\xba\x52\xa9\xbb\x28\x3c\xdf\x45\xe1\x79\x02\xaa\xde\x66\xea\x9b\xd0\x02\x0a\x79\x2f\xd4\x51\x6c\x1d\x83\x73\xe7\x26\xb4\x86\x05\x45\x72\x8e\x55\x4d\xeb\xaa\x05\xda\x38\x34\xba\xbe\x2b\x45\x75\x94\xf4\x3e\x2a\x12\xd9\xa0\xbd\x43\x72\xc3\x4f\x77\x2a\x4e\x80\x37\x8d\x50\x39\x5d\xa3\x4c\xb2\x72\x2d\x7d\xa2\xcc\x93\xbe\x72\x9f\x31\xd0\xc0\xf1\xf6\x91\x79\x58\x77\x4e\xab\x9b\xc2\xdb\xd4\xd8\x46\xc4\xef\xd3\xda\xfa\x05\xd8\xd9\x68\xee\xde\x32\x1e\xc3\xef\x46\x40\x45\xd7\x57\xe3\x17\xfe\xee\x11\x72\xb1\xe0\x6d\x69\xf7\x29\xf1\xdd\xae\xa5\x7b\x37\x88\xb0\xd1\xf5\xbd\xcc\xf7\x69\xf0\xa8\x72\x72\xd8\xb7\xfb\xcf\x7d\x3f\xe6\xb1\xdd\x7b\x31\x8b\x5f\x50\xc0\xfe\x4d\xc4\x41\xcf\x65\x4e\x45\xe8\x53\xf8\xb1\xe0\xcf\x0e\x82\x3f\x9f\x1d\x21\x8e\x0b\x14\xc7\xbb\x7f\x4c\x1c\xe3\xb1\xbb\x35\xde\x50\xca\xb3\x7d\x9b\x1a\x8b\xf0\xd3\xa5\x8d\xb6\xf4\xf5\x15\x59\x30\x51\x1a\xb3\x5f\x68\xfd\x3b\xae\xd3\x19\x45\x49\xd0\xd5\x29\x2d\x24\x28\xee\xad\xd2\x3f\x52\x0a\xa1\x84\xe6\xd6\xbd\x53\xbe\xef\x3d\x32\x3c\xa8\xea\xd6\x36\x2d\xbd\xa8\x18\x0b\xfb\xe6\x68\x02\x48\xe7\xb4\x41\x3e\x17\x11\xeb\x66\xb9\x84\x57\x26\x53\x99\x62\xee\x69\x84\xa6\x78\xaf\x53\x2e\xac\x98\xdb\x4b\xc8\x14\x00\xf4\x4f\xa9\x4b\xc8\xd8\x2b\x93\x31\x0a\xd2\x5d\x91\xae\x45\x53\xe2\xed\x76\xab\xed\x73\x62\x59\xc6\xe8\x93\xbe\xdf\xbc\x8d\xb1\xc1\xbc\x89\x39\x13\xde\xad\xe5\xa2\x4b\x7f\x38\x97\xf6\xa0\x43\x4c\x6e\xec\x49\x88\x9c\xcb\xb1\x88\x68\xf9\x06\x00\x2c\x53\xb4\x1c\x97\x99\x62\xfe\x25\xf0\x25\x01\x3d\x3c\x00\xdc\x62\x3d\x0d\xb7\x99\x04\xea\xaf\xd4\x9d\x46\xc3\xae\x1c\xff\x07\xad\x24\x92\x03\xc9\xbd\x81\x57\x66\x2d\x35\x8c\x97\xf6\x85\x76\x38\x4d\x1a\x4b\xbb\xfe\xd1\xa9\x6e\x9c\x0b\x2b\xc8\xfb\x32\x3f\x01\xf8\x06\xe2\xf8\x05\x1f\xa0\xff\x37\xb8\xb6\x27\x2d\x26\xc5\xf7\x9a\x3b\x36\xcb\x97\x50\x08\x95\x9f\x8e\x41\xa8\xfc\xc7\x21\x70\x25\x06\x37\x33\x52\xea\xd6\x3e\x02\xce\xbd\xdf\x4e\x2a\x2e\x55\x44\xc7\xb4\x3f\x33\x6a\x93\xfe\x4f\x17\x26\x86\xff\xfa\xf7\xc2\xea\xce\xca\xf0\xba\xa4\x0b\x43\x71\xfd\xc6\x44\xc1\x73\x6e\x79\x02\x5f\x70\xc9\xdd\x3f\x60\xe9\xb5\xe0\x39\xed\x51\x3e\xa0\x3b\x22\xfa\x60\xd1\xda\x3e\x36\xfc\xf3\xe2\x8f\x06\x8c\x17\x27\xb0\xe2\x1b\xc7\xe1\x73\xf8\x57\x00\x00\x00\xff\xff\x09\x67\x45\x7d\x81\x13\x00\x00" + +func runtimeSyntaxSyntax_converterGoBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxSyntax_converterGo, + "runtime/syntax/syntax_converter.go", + ) +} + +func runtimeSyntaxSyntax_converterGo() (*asset, error) { + bytes, err := runtimeSyntaxSyntax_converterGoBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/syntax_converter.go", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxSystemdYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x58\x4d\x73\xe3\xb8\x11\x3d\xef\xfc\x0a\x95\x33\x87\x99\x4c\xed\x1c\x73\x70\x55\x92\xa2\x48\x4a\xc6\x5a\xfc\x58\x82\xb2\xd7\x19\xcd\xb2\x20\xb2\x25\x21\x86\x00\x2e\x00\xca\xd6\x06\x3f\x3e\x05\xf0\x5b\x3b\x17\xa9\xdf\x43\x93\x00\x89\xee\xd7\x4d\x1c\x28\x03\x7d\xad\xe1\x7e\xa1\xae\x4a\xc3\xb9\xfa\xf0\xa1\x02\x0d\xa5\xbe\x5f\x7c\x58\x2c\x16\x0b\x3b\xce\xc9\x19\xee\x17\x77\xbb\xdd\xd7\x4f\x0a\xe4\x85\x96\x60\x94\x28\x5f\x41\x7f\xfe\x78\xe7\x9c\x4e\x40\x2a\x90\xf7\x8b\xbb\xdf\x77\xbb\x6f\x5b\x4e\xf5\x6e\xf7\xfd\xe3\xdd\x87\x0f\xb2\x61\xa0\xee\x9d\xcb\xcf\x0b\xa5\x89\x86\x33\x70\x6d\xfd\x3e\x79\x65\x09\xb5\x36\xde\x41\x83\x34\x1e\xa3\x44\x19\x8f\x31\xf1\x86\x94\x60\x44\x83\xf1\x98\x12\xc6\x8b\x31\x2a\xfc\x64\x93\x64\xa6\xf0\xb6\x01\xca\x8b\x4d\xb2\x46\xf1\x16\x05\x3d\xc6\x21\xc6\x28\x89\xcd\x92\x94\xaf\x4c\x1c\xcd\x12\x0e\x42\x82\x59\x52\x5e\xa1\xf4\xf2\x8f\x84\xb3\xab\x03\x2a\x17\xee\x3f\x17\x01\xb8\x07\x58\x32\x51\xbe\xa2\x24\x03\x52\x2d\x09\xaf\xde\x68\xa5\x4f\x3d\xf9\x0c\xf4\x78\xd2\x03\x92\x54\xc3\xe8\x53\x2c\x93\x24\x2f\x50\x60\x96\x52\x90\xaa\x24\x4a\x9b\xe5\x76\x5d\x64\x61\x9a\x64\x79\xb1\xcd\x36\x66\xd9\xa8\x98\x9c\xc1\xf8\xa4\x26\x7b\xca\xa8\xa6\xa0\x46\x70\x5d\x8a\x86\x57\x94\x1f\x31\x68\xe3\x3f\x78\x18\x23\x6c\x4a\x5a\x9f\x40\x9a\x92\x11\xa5\x4c\xe1\x47\xc1\x06\xc5\xa1\xf1\x93\x20\x2c\x56\x68\xd3\x5b\xdb\xd8\x6f\x2d\x37\x5a\xf8\x49\x14\x19\x5f\x9c\x6b\x09\x4a\x19\x5f\xf0\x8a\x6a\x2a\xb8\xe7\xa7\xe2\x0d\xe4\x48\x8c\x53\x8f\x5c\x40\x25\x94\x5a\xc8\x6b\x2c\x74\x78\xae\xa7\x43\x2b\xca\x00\xa9\xf0\x1d\xca\x46\x93\x3d\x83\xf9\xc8\x5f\xfd\x1f\x84\xd2\x23\x7a\x04\xc9\x81\xf9\xe2\x7c\x26\xbc\xda\x50\x3e\xb9\x3c\x6e\x18\x1b\x51\x4a\xf4\x29\x7c\xa7\x4a\xab\x1f\x71\x6b\x26\xf6\x73\x1e\xa9\x61\xcd\xb7\x03\x91\x68\xb8\x4e\x05\xe5\xfa\x76\xc4\x6e\xaf\xdb\xbf\xdb\x01\x7c\x3d\xef\x05\xa3\xe5\x86\xf2\xd7\x71\x0c\x43\xd9\xc8\xd9\x7b\x7a\xa2\x52\x37\x84\xd1\x3f\x89\x45\x96\x3f\x30\x5a\xb6\x6b\xd6\x52\xb0\xb5\x14\x4d\x3d\x03\x9e\xd6\x92\xee\x9b\x76\xca\x81\x8d\x44\x45\x0f\xd7\x19\x95\x82\x54\x54\x69\xe0\xda\x94\x2d\xcd\x40\x0e\x37\x6e\xed\x34\x2c\x62\x2f\x0a\x8d\x9f\x6e\xbd\xc3\x81\x72\xb7\xb6\x74\x8b\xcb\x13\x54\x0d\xa3\xfc\x98\xda\x87\xb8\xe5\x24\x15\xf2\x2f\x9e\x19\x28\xd0\x09\x5f\x09\xf9\xea\x06\x4e\x44\xda\xb0\x94\x44\x9d\xfc\xd3\x53\xde\x5a\xf8\x04\x8c\x99\xa2\xf0\xb7\x19\x4e\x32\x53\xc1\xbe\x39\x9a\x00\x0e\xa4\x61\x7a\xba\xb0\x8e\x0a\xa0\x06\x5e\x01\x2f\x6d\x84\x77\xdc\x86\x9e\xa9\xf6\xf0\x0c\xfa\x49\x16\xce\x89\x74\x3b\xc3\x81\x97\x7b\x33\x62\x85\xd1\x7f\xe6\x97\x6c\x12\xff\x71\x7e\xd7\x28\x8c\x2c\x39\xe7\xf0\xfa\xd7\x6d\xb8\x9d\x5f\x1a\x23\xff\x86\x48\x5c\x56\xcd\xa8\x34\x4b\xfc\x19\x93\xe1\xf9\x74\x59\x9e\x66\x28\xb9\xa1\x72\x14\xcd\xef\x83\xd1\x3a\x0d\xe3\x00\xc5\xeb\x39\x9d\x7b\xe3\x4a\xb1\x26\xbc\x22\xb2\x0a\xa5\x14\xf2\x96\x4c\x1a\x5d\x37\xda\x04\xa0\x4a\x49\x6b\x17\x75\xad\x64\x39\x79\xec\xec\x00\xf8\xd5\x0c\xf9\x10\x89\x0a\xcc\x5f\x33\x3a\x10\x65\x63\xf5\xb6\x0d\xdd\xa0\x39\xd7\xbe\xd5\x46\xb0\xdb\x58\x5f\x4d\xc8\x2f\x54\x0a\x6e\x3d\xa6\xb6\x4d\x72\x13\x66\x59\x9c\x18\xb8\x00\xd7\x85\xa6\x67\x10\x8d\x36\x45\xf8\x5b\x68\xac\x2c\x64\xc0\x04\xa9\x9c\x89\x35\x91\x7a\xb4\x52\x2b\x05\x23\x92\xd0\x01\x51\x0f\xc6\xc4\x45\xd4\xd6\xe3\x40\x99\x2d\x01\xab\x24\xce\xdd\x4f\x11\x79\x69\x6b\x6c\x63\xe4\x6c\x21\xdf\x88\xac\x72\xe1\x0b\xae\x04\x83\x91\x78\x8c\xd4\x71\x44\xf8\xaa\x6c\x05\x58\x49\x00\xab\xf4\xe6\x20\xe1\x0f\xb3\x52\xe5\x6b\x4a\x94\x8a\x85\x39\x28\x4d\xf6\xa6\x58\xa3\xc0\xb4\x59\xbb\x6e\x40\xa9\x88\x50\x9e\xa2\xc0\x3c\x10\x5e\x31\x78\xa0\x7b\x90\x9c\x68\x78\x84\x6b\x47\x6d\x68\x85\xdf\xa8\x2e\x4f\x1d\x76\xe2\x3a\x0e\xe3\x46\xd9\x1c\xb0\xc4\x89\xa8\x93\x99\xde\x01\x1d\xb9\x90\x80\xf8\x89\xee\xa9\x86\xca\x3c\x24\x51\xe8\x2a\x44\xf1\x90\xe0\xdc\x25\x36\xf2\x93\xb8\x4d\x71\x14\x18\x54\x31\xf0\x4a\xb7\x5b\xa3\x89\xa1\x34\x28\x28\x36\xe8\xd1\xfa\x14\x51\x12\x84\x9b\xc1\x28\x56\x59\x12\x15\x36\x7b\x96\x1e\x0e\x4d\x3b\x61\xc2\xfb\x22\xda\x63\xcc\x49\xad\x4e\x42\x77\x84\x8d\x51\x94\x86\x06\x71\x52\x96\xa0\x14\xdd\x33\xe8\xc3\xc7\x66\x72\xb7\xe2\x00\x18\xb9\x46\xe4\xdd\xae\xc0\x4a\x8f\x41\xc9\x28\x27\xbe\x2b\x55\x53\x66\x90\x1d\x94\xe6\x09\xb6\xbf\xf9\xc6\xfc\x22\xf6\x79\x1b\x3f\xf6\x2e\xbf\x08\xca\xa7\x32\xf2\x08\x50\x7b\x8c\x5e\xc0\x3c\x86\x2f\x76\xaf\xdb\xbf\x22\x4f\xd6\xeb\x4d\x68\x1e\x29\x63\xe1\x7b\xc9\x9a\x0a\xb6\xca\xf9\x53\xc6\x5c\xb0\x5b\xc3\xd6\xf6\x91\xc6\xf4\xc8\x09\x73\xa6\x25\x53\x29\xec\x93\x81\x32\xc3\xfe\xdd\xee\x46\x2f\x54\xa3\x42\x0d\xd2\x34\x6a\xd2\x44\x8c\x26\x2a\x34\x93\x9f\xb9\xee\x8c\x82\x33\x55\x9a\x89\xc4\x0c\xda\x32\x15\x95\xa9\x9a\xdc\xca\xc8\x44\x3f\x18\xe5\xaf\x45\xdd\xbf\xe7\x0b\x61\x0d\x6c\x5c\x09\x09\x88\x26\x47\x49\xce\xa6\x85\x2b\xb4\x4a\x3a\x33\x02\xa5\xc8\x11\x7e\x6d\xa0\x81\x8e\x8a\x41\xdb\x1b\x75\x08\xc3\x1f\x0d\x70\x4d\x09\x4b\x89\xed\xe9\x7a\xba\x86\x92\x12\xd6\x23\x2d\xc1\xde\x5d\x1c\x7d\xc1\x84\xb4\xc6\x06\x2e\xc0\x9c\x21\xca\x56\x61\x36\xe2\x98\x13\x79\x04\x6d\x58\xf3\xaa\x4c\x11\x79\xfe\x03\x8a\x43\xdb\x2b\x45\xe4\x15\xc6\xf2\x1d\x11\xf9\x6a\x22\xf2\xee\x0b\xce\xc1\x05\xb9\xb2\xd0\x2a\x8f\x8d\x92\x88\xbc\xbb\x9b\xf7\xf9\xde\x63\x97\xee\x3d\xc0\xda\x6a\xd9\x80\xda\xdc\x8f\xc8\x7b\x06\xb6\xa2\x76\x79\x13\xc1\x59\xc8\xab\x7b\x81\x9d\x8d\xc5\x41\x77\x38\xc4\xd8\x5b\x87\xfd\xbf\x5b\xe5\xe4\x5d\x45\xe4\xbd\x83\x6a\xce\xb7\x36\xa6\x7f\x82\x29\x8a\x28\x89\x93\x3c\x89\x91\x5f\xd8\xad\xc3\xb9\x17\xa5\xc6\x75\x23\x2b\x46\x8e\xca\xb8\xc4\x8e\xbd\x46\x8b\xa7\x5c\x99\xd8\xf6\x9d\xb1\xe0\xae\xaf\xa4\xfc\x68\x62\x11\xc3\x5b\x2a\xe9\x85\x32\xb0\xf3\xc4\x42\xd3\xc3\xd5\x73\x39\x69\x12\x6e\xf3\xff\xe2\xde\x48\xc2\x97\x42\xe8\xd6\xf2\x09\x03\x5b\x28\x4c\xc2\x57\x84\xb2\x46\xc2\x68\xf5\x79\x9f\x70\x27\xc0\x4d\xdd\x5e\x62\x3b\xf2\xe9\xcd\x2c\xb6\xb9\x3f\x30\x49\x84\x4b\x21\xc1\xab\xfe\xdb\x28\x6d\x92\xba\xdd\x12\xd1\x56\xa2\xd4\x8b\x5c\x3b\x9b\x12\xa9\x93\x83\xb1\x6a\xea\x4b\xa8\xda\x98\x51\x0e\x0f\x7d\x93\x6d\xae\xfc\x13\xe1\x47\xa8\xcc\xa4\xc1\xbb\xe9\xeb\x2c\x74\x0d\x11\xb5\x6e\x20\xcf\x54\x29\x3b\xa3\x5b\xb4\x6b\xd9\x0b\x2b\xc9\x29\x0a\x5c\x31\x4a\x69\xdd\xbe\xef\x5e\x7a\x6f\x33\x39\xcd\xc2\x3c\x7f\x19\x45\xb5\xc3\xad\xdd\x67\x8b\xcd\xb3\x0c\xe5\x2f\x96\xb9\x10\x0d\x31\xe8\x37\xdb\x0b\x75\x30\x3f\xd7\x26\x95\xa2\x26\x47\xa2\x41\xb5\x25\x2e\x17\xa6\x56\xca\x64\x44\x83\x8b\x99\x65\x23\x95\x1e\x21\xe2\x1a\xe4\x85\x30\x63\xbb\x4c\xbb\xec\xa9\x86\x0e\x9d\xe7\x94\x2c\x8a\x2c\xf4\x36\x36\x54\x26\xf1\x92\x41\x09\xf4\x02\xcb\xe6\x70\x00\x69\x32\x38\x34\x0a\x22\xc2\x1b\xc2\xda\xea\x3a\x67\x44\x6d\x24\xd8\x29\xed\x02\x87\x05\x57\x2b\x29\xce\x26\x83\x33\xa1\xdc\x7d\x52\x85\xef\xd4\x5e\xf9\x47\x43\x25\x54\xcb\x6b\x6f\xaa\xc1\x70\x51\xaa\x56\x42\x0e\x4c\x72\x01\x29\x69\xe5\x5a\x7e\xc7\x29\xdb\x37\x0f\xd6\x7c\xd8\x7e\x07\xc2\x53\xee\xac\x59\x67\x98\x81\xea\x56\xad\xba\x1e\xc0\x36\x11\x76\x39\x58\x13\xdd\x0c\x0e\x36\xee\x32\x21\xf4\xa8\x0a\x33\x34\x86\x42\xd6\x70\xdb\x81\xd8\x52\x61\x4b\x7b\x8f\x7b\xbd\xb0\x71\x31\x52\x5b\x35\xa0\x67\xa2\xcb\x53\x25\x8e\x76\x22\x45\xce\x35\x03\x65\x54\x49\x18\x14\xef\xdd\xff\xd5\x60\x20\xcc\xb8\xe0\x85\x25\xd5\xca\x14\x38\xdc\xa0\x78\xfb\x5b\xe1\x27\x71\x1e\xfe\x96\x1b\x0c\xbc\xea\x36\xc6\x9a\x18\xad\x1f\xd1\x66\x63\x70\xf7\x15\x8c\x4f\xe2\xad\x7b\x2c\x7c\x6a\x74\x25\xde\xf8\x6c\x5a\xbb\x38\x7c\x26\xe5\xeb\x86\xec\x81\x4d\x4c\x94\x22\x3e\x83\x49\xa3\x0d\x76\xdf\xd4\xae\xbe\xb5\xa6\x32\x58\x34\xb2\x04\x9b\x2f\xa6\xc0\xc9\x36\xf3\xc3\x1f\x45\x10\xae\x19\xed\xae\x9b\x75\x96\x3d\x42\xdc\xe6\xf1\x4d\x83\xe9\xde\x70\x5b\x03\xdb\x96\x63\x24\xda\x38\x1f\xf1\x10\xe8\xf6\x13\x9e\x96\x05\x6f\xa7\x12\xf5\xf3\x09\xf8\x96\x73\x80\x0a\x2a\x4b\x48\x72\x04\xa3\xb4\xa4\xfc\x58\x80\x2a\x49\x0d\x86\x0b\x0e\x46\x42\xcd\x48\x09\xb8\x71\xd2\x36\x09\x06\xdc\xd4\x35\x73\x87\x02\x44\x5e\x5d\x57\xa6\x0c\xde\xa6\xc3\xa7\xf4\xd8\x5d\xdd\xe6\x7c\xab\xf8\x2b\x52\xb6\x1f\xb6\xf8\x05\x6f\x92\x75\xb1\xf2\x7c\xb4\xb1\x49\xde\x0e\x23\xa7\x52\x07\x6a\xb7\xaf\x75\x40\x41\x18\xe7\x68\x85\xc2\xac\x73\x69\xcb\xd8\xc4\x4e\x25\x1c\xe8\x7b\xef\x6f\x75\x08\xbb\x83\x11\x9f\x30\xb6\x6a\x7b\x55\xfc\x82\xf3\x30\x0a\x0a\x6f\x83\x3c\x6c\x8a\x1e\xfa\xeb\x2c\xd9\xa6\x23\x4e\x9e\xe3\x30\x2b\xb6\xf6\x0e\x1d\x93\x85\x5e\xf0\x32\x3a\xf4\x87\x17\x03\xb1\x8d\x51\x3e\x41\xd8\x5e\x6e\xa9\x9e\x79\xf6\xe2\x1c\x77\xeb\x19\x12\xa2\x85\xd3\x7c\x18\x18\x9b\x0e\xf8\xaa\x9e\xba\x76\xbc\x53\xc2\xdc\x4f\x7d\xc1\x8f\xa0\xdc\xb6\xe7\x7e\xfa\x2c\x49\xed\x24\xbe\x6f\xf5\x27\x2d\x5b\x6f\xf6\x39\x3b\x60\x51\xf7\x50\x62\x46\xca\xd7\xd8\x41\x49\xb8\xaa\x89\xb4\xdf\x14\x45\x9e\x79\x31\xb6\x5b\x69\xb4\x53\xbf\x3c\x7f\x71\x91\x9c\xe7\x2f\x4e\x36\xac\xf1\xf4\x40\xf8\xb1\xa9\x9d\x99\x07\x54\x11\xc6\x6c\x3b\x01\x26\xbf\xd6\x60\xdc\xcb\xdb\x46\x44\xbd\x1a\x5b\xb3\x8c\xed\xec\xcc\x56\x9f\xeb\xc9\xc6\x3e\x85\x99\x7b\x89\xdd\xbf\xad\xe3\xcf\x84\x6b\xa7\x7a\xd6\x50\x66\x9a\x92\xcf\x27\xa2\xcd\xf3\x09\x24\x98\x67\x21\x6d\x15\x1e\x24\xe7\xf3\x3f\xef\xba\x93\xaa\x5a\x42\x2d\x45\xd9\x9e\x67\x7d\xa5\xdc\x75\xa0\xbb\xdd\xbf\xfa\x71\xe5\x0e\x0f\xee\x17\x77\xc3\x15\xaa\xed\x96\xba\x13\xb0\x4f\x6e\xb1\x88\x2b\x4d\x18\x1b\xc5\xa2\x3d\x32\xdb\xed\xbe\xf7\x57\xd1\xe1\x29\xbe\xba\x93\x1f\x77\xc6\xf6\x31\xf2\x50\x9c\xa2\xa0\x77\x2a\x85\xbd\x0f\xd7\x5f\xf7\xc2\xcd\xb9\xdb\xed\x3f\x69\xd9\x80\x39\x10\xa6\xe0\xf3\x6e\xb7\x1f\x3d\xcf\xdd\xf1\xda\xa7\xdf\xcd\xb7\x6f\xf7\xaa\x26\x25\xdc\x7f\xff\xfe\xf9\x6f\x9f\xbe\xfd\xfe\xbf\xef\x5f\xff\xfe\xf9\xdf\x1f\x87\xa9\xed\x67\xbb\xfe\xb9\x3c\x11\xf9\xf5\xed\x44\x35\xb4\xce\x8b\xbb\xc9\x75\x5f\x7e\xe4\x7d\xbf\xb8\xfb\xe9\xcb\xe2\x8b\x59\x7c\xf9\xe9\xcb\xdd\x87\xff\x07\x00\x00\xff\xff\x12\x83\x8f\x17\x3e\x14\x00\x00" + +func runtimeSyntaxSystemdYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxSystemdYaml, + "runtime/syntax/systemd.yaml", + ) +} + +func runtimeSyntaxSystemdYaml() (*asset, error) { + bytes, err := runtimeSyntaxSystemdYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/systemd.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxTclYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x55\x5d\x97\xdb\x34\x10\x7d\xdf\x5f\xe1\xa6\x7b\x68\xb2\x7b\x36\xf0\x4a\x0a\x2c\xbc\xf3\x0b\x58\x6d\x83\x2c\x8f\x6d\x91\xb1\x24\x46\xe3\x24\xa6\xd3\xff\xce\x19\xd9\xc9\xa6\xe7\x40\x1f\x6c\xdd\xd1\xc7\x48\xba\xba\xba\x6a\x3d\x02\x4f\x09\x76\x15\x3b\xbc\xbb\x6b\x80\xc1\xf1\xae\xba\xab\xaa\xaa\xd2\xb6\x60\x07\xd8\x55\x2b\x63\xb6\xec\xf0\x7e\x55\xea\x7b\xb0\x0d\xd0\xae\x5a\x7d\x7a\xff\x6e\xfb\xf0\xfd\x1a\xc2\xb1\x7a\xdc\x3c\xb3\xc3\xdc\xaf\x2b\xb9\xdf\xac\xee\xee\x68\x44\xc8\xbb\xd2\xfd\xa9\xca\x6c\x19\x06\x08\x5c\x32\xd5\x6b\xdb\x32\x90\xd8\x94\x20\x34\x62\x89\xec\x24\x76\xe4\xb8\x87\x33\xb8\x78\x98\xb1\x1f\x52\x24\x9e\x31\x46\xdb\xbc\xa1\xbd\x0f\x0d\x9c\xe7\xf8\xef\xd1\xa2\x6f\x27\xa9\x7d\xb0\x34\x49\x4d\x60\x0f\xe2\x6c\x06\x71\x96\x5d\x2f\xae\x11\x87\xd1\x1d\xf4\xaf\x95\x31\x38\xcb\x5a\xb0\x0f\x23\x08\x60\x06\x81\xe0\x62\xe3\x43\x27\x10\x5b\x01\xa2\x48\x02\x47\x8b\xa2\xab\x11\x38\x7b\x16\x38\x27\x92\xb6\xd6\x44\xd0\x48\xeb\x62\x68\x7d\x37\x12\x28\x4c\x93\x28\x4f\xe5\x07\x47\x08\x2c\x2d\x8e\xb9\x97\x36\x92\x7e\x60\x5d\xc1\x83\x65\xe9\x80\xb3\x74\x18\xeb\xf2\xb3\x28\xbd\xcf\x1c\x69\x12\xdf\x8a\x0f\x8e\xc4\x87\x36\x8a\x0f\x0c\x94\xe4\xaf\xe8\x83\xe0\xc2\x11\xce\x5b\x46\x1f\x32\x10\x0b\xfa\xcc\x82\x08\xa1\xe3\x5e\x0a\x39\x48\x36\x74\x20\x48\x90\xd0\x3a\x10\xcc\x60\xc9\xf5\x5a\xb2\x60\x56\x26\xf5\x24\x73\xd2\xc6\x98\x20\x48\xb2\xee\x60\x3b\x90\xe4\x1b\x49\x23\x67\x49\xa7\x46\x08\xac\xfe\x3a\x38\x27\x2d\xf2\x58\x0b\x15\x09\x08\x01\x8f\x14\x24\x3b\x1b\x24\x03\x1c\x44\x13\x67\x25\x44\x8b\x91\x1c\x48\x4e\xe8\x59\x32\x93\x72\x99\xc7\x3a\xb3\xe4\x93\xd7\x53\x60\x87\xbf\xc7\x4e\x18\x10\x85\xfd\x00\xc2\xa4\xeb\x18\xc3\x21\xc4\x53\x90\x31\x68\xb2\x31\x35\x96\x41\xc6\x84\x70\x04\x94\x31\x1d\x2d\xc9\xd1\x92\xb7\x35\x82\x1c\x4f\xd6\xb3\x9c\x7a\x8f\xb0\x31\xa6\x5e\xfd\x9f\xb2\x54\x4c\x95\x0d\xd3\x10\x09\x66\x69\x55\x4d\x0c\xb0\xd0\x31\x57\xc0\xd9\x67\xce\x4b\xd0\x01\x2f\xa8\x10\x74\xc1\x70\x66\xc0\x92\x79\xa9\xc9\xd7\x7e\xd9\xff\x73\x49\x9d\xd9\x12\x7f\x95\x5b\x17\xe4\x33\x7b\x77\xc9\x54\x36\xf7\xad\x25\xcf\x84\x55\xf5\xa4\x13\x96\x13\x5d\x6a\x5c\x1c\x92\x25\xb8\x84\xa0\x5a\xbf\x04\xad\xa7\x7c\xe1\xba\x9a\xc5\x71\x09\xf2\x05\xa1\x7d\xeb\xf2\x75\xe6\xc1\xa6\x37\xa8\x07\xb4\x04\xb3\x88\x2e\x01\x24\xb0\x7c\x13\x15\x61\x2d\x21\xc7\x37\x84\xf1\x04\xf4\x16\xb2\x67\xbc\xe9\x37\xa6\x74\xd3\x4a\x7e\xb8\xc5\x08\x2d\xdf\xc6\xe4\xbb\xfe\x5a\x71\xf2\x78\xdd\xef\x29\x52\xa3\x17\xe1\x26\x2c\xdc\x7f\x53\x0b\x68\x69\xb8\xb1\x8d\x74\xe8\xa4\x5e\x0e\x4b\xdd\x61\x76\x04\xcb\xe5\x5a\x3a\xcb\xe5\x5a\x38\x17\x11\x55\x87\xee\xe2\x15\x33\xef\xae\xef\x28\x89\xeb\x87\xd8\x88\xeb\x55\xb5\xae\xa7\x18\x59\xdc\xcc\xbe\x5b\x18\x76\x43\x33\x8b\xdb\xc5\x61\xb0\xa1\xc1\x18\x93\xb8\x99\x58\x57\x2e\x05\x89\xe3\x78\xd0\xa9\xd4\x77\xa5\x19\x93\x80\xeb\x63\xb1\x1b\x94\xd6\x05\x46\x69\x8b\x67\xb5\x91\x0e\xd2\xea\xb6\xa4\x65\x1a\x75\x39\x20\xed\x18\x4a\x63\x1f\x33\xef\x67\xc3\x68\x8a\x71\x9c\xe5\x00\x13\x36\x80\xa5\x54\x59\x6b\x79\x80\x29\x17\xa0\xfa\x3d\x28\xa3\x68\x73\xf6\x5d\x10\x54\x17\xb4\x6a\x32\x30\x24\x9e\x04\x0b\x0f\xe8\xc3\x41\x70\x56\x85\xb2\x86\xbe\x5e\xbc\x47\x37\x82\x47\x4b\x4a\x8a\x96\x69\x89\x93\xba\xdd\x60\xcf\x32\xf8\x20\xc1\x3b\xb5\x94\x04\x92\x28\x16\x5f\x24\x1b\x9a\x38\x14\x67\x69\x3c\x89\xea\xc8\x97\x8d\xa8\x95\xe8\x12\xe0\xcc\x05\x97\xde\x0a\x16\x49\x02\x82\x63\xc9\x40\x47\xa0\xbd\x75\x0e\xd2\x35\x72\x04\x25\x83\xef\x82\x5e\x09\x04\x48\x92\xa7\xe0\x24\x4f\x99\x61\x50\xbf\x39\xef\x5b\x1f\x1a\x1f\x3c\x2f\x91\x72\x59\x50\xd1\x02\x87\xe6\x9c\xe7\x78\x1e\x3e\xc3\x9b\xe1\xc5\x6f\xd4\xac\xb2\xba\x55\xc8\xea\x6d\x4c\xd3\xbe\x3c\x0d\xe3\x60\xf3\x41\xb4\xcb\xad\x00\x7d\x03\x81\x7d\xeb\x81\xb6\x4e\x59\xde\x55\xab\x44\xd1\xbd\xbc\xec\x8a\xef\xee\x5e\x5f\x65\x6d\xcc\x67\x31\xe6\xcb\xe6\x2a\xda\x69\xa8\x23\x6e\x63\x02\xb2\x1c\xf5\x51\x5d\x1b\xb3\x16\x63\x36\x62\xcc\x47\xf9\x53\x8c\x31\x46\x8c\xb9\x97\x9f\xe4\x17\x79\x27\x3f\xcb\x77\x62\x8c\x5c\xc7\xbb\x18\x32\xdb\xc0\xdb\x30\x0e\x75\x79\x94\x8d\xa9\x5f\x7e\x78\xfa\xf1\xf5\x71\x6d\xcc\x76\x46\x9b\xe7\x9b\x55\x5e\x47\xcc\x77\x49\x47\xe8\x9c\xc6\x6c\xe5\xe5\x93\x59\xbd\x6e\x1e\xcc\x4a\x3e\x5c\x6b\x3e\xbc\x6e\x1e\x3e\xfc\xc7\x0e\x8f\x76\x9e\xec\xde\x98\xcf\xcf\x3a\xcd\x6f\x4f\x7f\xec\xdf\xfd\xfa\xfe\xfe\xe1\xf9\xe9\xf5\xd1\x98\x2f\xcf\x6f\x13\x0e\xcb\xad\x5c\x7f\x92\x8f\x9b\x1b\x3a\x1e\xde\x6f\x1f\xae\xa9\x83\xe6\x7e\x72\xbd\xa5\xed\xa9\xf7\x3c\xbf\x55\xbb\x6a\x75\xd3\xff\xf1\x7e\x75\xf7\x6f\x00\x00\x00\xff\xff\x44\x7a\xd2\xf7\xb1\x08\x00\x00" + +func runtimeSyntaxTclYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxTclYaml, + "runtime/syntax/tcl.yaml", + ) +} + +func runtimeSyntaxTclYaml() (*asset, error) { + bytes, err := runtimeSyntaxTclYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/tcl.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxTexYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x51\xdb\xae\x9b\x30\x10\x7c\xe7\x2b\x56\x24\xad\x12\x1d\x81\xfa\x5a\x54\x35\xed\x6f\xd4\x8b\x2a\x5f\x96\xc4\x2a\x36\x08\x6f\xaa\x34\x38\xff\x5e\x71\x49\x48\x1b\x21\x1d\x5e\x80\xd9\xf1\x78\x76\xa6\xb2\x35\xf1\x9f\x96\x0a\x60\xba\x24\x89\x21\x26\xcd\x05\x24\x00\x00\xc3\xcc\x4b\x47\x05\xa4\x88\x39\xd3\x65\x1b\x11\x73\x65\xd5\xf8\xd6\x75\xd8\xa6\x49\xd2\x9d\x6b\x0a\xc5\xc8\xdf\x80\x6e\xea\xa6\xb3\x57\x02\x3e\x11\x58\x43\x9e\x6d\x65\xa9\x0b\xd0\x54\xd0\x7f\x59\x80\xaf\x37\x90\xde\x80\x78\x86\xca\x51\x23\x7b\x3a\x36\xa9\x0e\x4f\x60\xd9\xf1\x68\xa3\x4f\x1f\x20\x79\x33\x42\xb7\x05\x9a\xcc\x80\x78\x9f\x96\x78\xd5\x2a\xd7\xb4\x36\xe0\xcf\x4e\x51\x17\x66\x65\xdd\xf8\xc0\xd2\x73\x3e\xc1\xe3\x61\x25\x3e\x65\x9f\xcb\xb7\x1d\x62\x3e\x7d\xed\x0f\x3b\x21\x8a\xd0\x4a\x4d\x45\x59\xee\x5a\x8e\xce\x45\xed\xa2\xf5\x91\x2e\x91\x5c\x54\x6d\x6c\x75\x34\x26\x6a\x1d\xbd\x89\x5e\xc7\xd0\xee\xf7\x07\x44\x95\xce\xb7\xd6\xc4\xa0\x3a\xa9\x7f\x11\x07\x38\xc9\xdf\x53\xb4\x86\x2a\x79\xae\x79\xca\x1b\xe4\x51\x5a\x3f\xfb\x9a\x27\x05\xa4\xa2\xbf\x21\x0a\xc4\x72\xde\x29\x83\xd0\x92\xb6\xb2\x1e\x66\x1f\x11\x1f\xcb\x6e\xc0\x49\xdd\x35\xf7\xcd\x02\x4b\x26\x47\x7e\xca\x08\xf1\xdb\x41\xc8\xec\xfa\x3d\xfb\xf1\xb3\x7c\x4b\x1f\x3d\xbb\x81\xb1\x84\x31\xfe\xbe\x66\xfc\xe1\xff\x84\xb7\xeb\x5d\xad\x8a\x0c\x26\x14\x1d\xad\x47\xec\x67\xd2\x3f\xa5\xdf\xbb\x43\x24\x6f\x56\x38\xcb\x65\x7f\x03\x00\x00\xff\xff\xbd\xc5\x77\x79\xf1\x02\x00\x00" + +func runtimeSyntaxTexYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxTexYaml, + "runtime/syntax/tex.yaml", + ) +} + +func runtimeSyntaxTexYaml() (*asset, error) { + bytes, err := runtimeSyntaxTexYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/tex.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxTomlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x92\x4f\x6b\xe3\x30\x10\xc5\xef\xfa\x14\x83\xb2\xe0\x38\x8b\x4d\xd8\x5d\xd8\x5d\x41\x28\xe9\x9f\x40\x0f\x6d\x2e\x2d\x18\x2c\x43\x14\x7b\x92\x98\xd8\xb2\xb1\x14\x48\x89\xfc\xdd\x8b\x9c\xb8\x31\x0e\xb4\x3d\x14\xea\x93\x35\x33\x4f\xef\xa7\xc7\xac\xd2\x0c\xf5\x4b\x89\x0c\x74\x91\x67\x84\x24\xa8\x31\xd6\x8c\x00\x00\xd8\x9e\x14\x39\x32\xa0\x9c\xfb\xb6\x4f\x09\xa9\x76\x19\xaa\x63\xdf\x03\xa5\x85\xc6\x1c\xa5\x66\x40\x87\xfe\xc8\x0d\x43\xa6\x4a\x11\x23\x8b\xa2\x09\x6d\x67\x4a\x8c\x53\x91\x31\xa0\x13\x4a\x9a\x1a\xc0\x00\xae\x2b\x11\x6f\x51\x83\xde\xa4\x72\x9d\xa2\xba\x18\x1e\x72\x1e\x1a\xce\x23\xb7\x23\x7a\xdc\xe5\x4b\xac\x14\x08\x99\x80\xd2\x55\x2a\xd7\xad\x2e\x2e\xa4\xd2\x42\x6a\x5f\x36\x23\x0d\xf1\x72\x18\x8e\xbd\xff\xd1\x4f\x33\xde\xdb\x1f\xe1\xad\xa6\xde\x2c\x1a\xb9\x9c\x2f\x8d\xe3\x3b\xf4\x1d\x29\xe7\x56\xfb\x37\x3a\xfc\xae\xcd\x3e\x9c\x7a\x33\xe1\xad\xec\x5d\x87\x5f\xb5\xd9\x75\xcf\x7f\x6a\xf3\xdc\x3d\xff\xab\x5b\xde\xce\xc5\x47\x54\x76\x7a\x06\xd8\xd4\x2a\x9b\x18\xa7\xf4\xad\x86\x32\xe9\x55\xd4\x36\x2d\x4f\x30\xfe\xb9\xda\x89\xbf\xfd\xba\x4e\xc7\xf8\x6e\x36\xa2\x3a\x4b\x3f\x8b\xe3\xf4\x69\x9c\x6f\x84\x59\xf4\x61\x16\x5f\x63\x9b\x37\xdb\x7a\x61\x37\xe8\xdb\xfd\xf8\xc0\x4e\x17\x49\x61\xb7\xf4\x69\x7e\x3b\x37\x41\x10\x98\xd9\x7d\xf0\x70\xe7\xb2\x2b\x4a\xc8\x6b\x00\x00\x00\xff\xff\xf6\x17\xf4\x94\x54\x03\x00\x00" + +func runtimeSyntaxTomlYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxTomlYaml, + "runtime/syntax/toml.yaml", + ) +} + +func runtimeSyntaxTomlYaml() (*asset, error) { + bytes, err := runtimeSyntaxTomlYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/toml.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxTwigYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x94\xdb\x6e\xf3\x36\x0c\xc7\xef\xf3\x14\x9e\xbb\x6e\xc9\xba\x64\xc5\xee\x96\x1d\x8a\x61\xc0\x5e\x22\x0a\x02\x5a\xa2\x1d\x35\x3a\x81\xa2\x93\x7a\x65\xdf\x7d\x70\x0e\x5f\x4f\x0e\xbe\xa2\xc0\x77\x17\xdd\x18\xd6\x9f\xa2\x7f\xa2\xc9\x7f\x6d\x1d\x72\x97\x70\x5e\xf0\xce\x36\xa3\x91\x41\x46\xcd\xf3\x51\x51\x14\x45\xaf\x05\xf0\x38\x2f\x4a\xa5\x66\xbd\xfe\x7d\x39\x1a\x51\xeb\x30\x1f\x02\xa6\x85\x0d\xda\xb5\xa6\x8f\x58\xb3\x77\xe5\x71\x37\x77\xbe\x8a\x6e\xc6\xd0\x1c\xe2\xfa\x95\x19\x88\xf7\x99\x1e\x95\x7a\x5c\x2c\xe6\x39\x81\xc6\xf9\x72\x59\x7e\x09\xc1\x60\xe6\x45\xf9\x42\x52\xea\x49\xa9\xa7\xe7\x80\x17\x9f\x3e\xad\x69\x61\x0d\x06\xb6\xb5\x45\xda\x67\xaf\xc6\x50\x65\xa9\x80\xf5\x5a\x34\x24\xcb\xe0\xec\x7f\x28\x3a\x86\x2d\x12\x0b\x06\x1d\x8d\x0d\x8d\x18\x60\x1c\xaf\x7c\x34\xb6\xee\x26\x77\x62\xb0\x86\xd6\xb1\x60\xd6\x90\x50\x6a\x4b\x99\xa5\x8e\xe4\x81\xe5\x3e\xda\x20\xf7\x39\x86\xd5\xfe\x34\xca\x06\xbb\x2c\x0e\x32\x8b\xc3\xd0\xf0\x5a\x5c\xdc\x21\x89\x47\x6a\x50\x82\xfb\xb5\x22\x09\xad\xaf\x90\x56\xc7\x0c\x04\x3b\x21\x4c\x0e\x34\x0a\xe1\x16\x29\xa3\x50\x6c\x83\x91\xec\xac\x46\xc9\x91\x58\x72\x72\x96\x25\x33\xd9\xc4\xd0\x64\x61\xcb\x0e\x85\xc9\x7a\x69\x53\x42\x92\x96\xdc\x91\x60\xa2\x54\x55\x9e\xad\xc3\x4c\x3b\xc8\xf9\x54\x0d\x66\xb2\x55\xcb\x28\x95\x8b\x7a\xd3\x17\x22\x33\x04\x16\xdd\x69\x87\xfb\x32\x88\x69\x7d\x92\xe3\xaf\x14\x0f\x0f\xe2\x6d\x90\x04\x84\xa1\x47\x0f\x26\xfa\xfe\xd1\xf4\x9c\x2d\x69\x14\x46\x9f\x1c\x30\xae\x6a\x8a\x7e\xd5\x13\x87\x66\x08\xa9\x6f\xac\xd9\x06\xbb\x5d\x24\x73\xc2\x09\x46\x20\x3f\x53\x18\xac\x6d\x40\x23\xc6\x6e\x6d\xb6\x95\xc3\xaa\x13\xf4\x89\x3b\xc1\x2d\x06\xa9\xc1\x65\x14\x1b\xc4\x66\xb1\x8c\x04\x95\x43\x09\x91\x25\xb4\xce\x49\x34\x46\x22\x49\x06\x8f\x63\xc8\x93\x3b\x61\x6a\x51\x76\x96\xd7\x43\x34\xc7\xae\x8c\x09\x09\x38\xf6\xdd\xb2\x98\xcd\x7f\xff\xf9\xe6\xa7\x3b\xf9\xf3\x3b\xa5\xae\x97\xf2\x87\xfc\x25\xbf\xc8\x54\x7e\x38\x73\xb4\x22\xd0\x1b\xe4\xbe\xb4\x8b\xf1\xe4\xf1\x69\x29\x4a\x2d\x44\xa9\xe5\xdb\xf8\xd3\xf5\x66\x87\x36\x38\xdc\x7d\x71\x3b\xfd\x6d\x79\xa3\x54\x25\x4a\x55\xb7\x0f\xfd\xeb\xdf\xd3\x7f\x61\x5a\xef\x37\xcf\xa6\x38\x94\xf7\x75\xd7\xbf\x1a\xa8\xb2\x7c\xa7\x1d\x26\x69\x48\xc9\x1b\x9b\xf6\x38\x4a\xbd\x17\x07\xe6\x6b\x08\x28\xa1\xb6\xe0\xfe\x59\x03\x1d\x33\xcd\x3e\x0d\xff\xe3\x39\xf6\x01\xe1\x5b\xa2\x7f\xd5\xb3\xae\x3f\xe6\x58\xd7\x17\xbf\xba\xf8\xd5\xc5\xaf\x2e\x7e\xf5\x79\xf4\x8f\xd9\x95\x8e\xde\x63\xe0\x41\xaf\xba\x7a\x6b\x50\x57\x03\xae\x54\x2c\x96\xa3\xff\x03\x00\x00\xff\xff\xea\x2f\x44\xaf\xfd\x09\x00\x00" + +func runtimeSyntaxTwigYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxTwigYaml, + "runtime/syntax/twig.yaml", + ) +} + +func runtimeSyntaxTwigYaml() (*asset, error) { + bytes, err := runtimeSyntaxTwigYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/twig.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxTypescriptYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x54\xc1\x6e\xe3\x36\x10\xbd\xfb\x2b\x54\x63\xdb\xd8\x32\x14\xa7\xa7\x22\x42\x5b\x21\xed\x26\xa7\x36\x29\xba\xed\xa5\x24\xb3\xa0\xa8\x91\xcd\x86\x22\x55\x72\x18\xc7\xc5\xa0\xdf\x5e\x50\x72\x36\x5e\x3b\x9b\xcd\x65\x7d\x18\x92\x23\xbe\xf7\xc6\x0f\xc3\x69\xb5\x01\xdc\xf6\x50\x66\x29\x06\xe5\x75\x8f\x93\x49\x03\x08\x0a\xcb\x49\x96\x65\x59\xba\x61\x65\x07\x65\x36\xe5\xfc\x14\xc3\x9b\xe9\x64\xe2\xa3\x81\x30\x7e\x2e\x32\xe5\x6c\x40\x69\xf1\xd4\xc6\xae\x06\x3f\xdc\xab\x59\xb1\x10\xd5\x8c\x7d\x5b\x9c\x0b\x76\x56\x9c\x8b\x9c\xce\xd8\x59\xf1\x5d\x5a\x1f\x52\x42\x16\xed\x45\x71\x25\x16\xf3\x19\x8b\x7f\x0a\x66\x7e\x11\x15\xa5\x98\x4e\xd5\xbc\xe2\xbc\x9e\xbe\x82\x3e\x31\x2f\x38\x3f\xdd\x49\x8c\xcb\xe3\x39\x71\x5f\xc2\x6f\xbd\x60\x8b\x42\x54\xbb\x54\xc5\xda\xab\x24\xf6\x6a\xf6\x63\x8a\x03\x06\xdd\x80\x45\xdd\xea\x01\xcc\x2e\x8a\xbf\x64\xf1\xef\x7b\xb1\xdb\x9c\x15\xe7\xef\x45\xce\x58\x19\x7a\xa9\xa0\x14\x22\x67\x33\xf1\x88\x0c\x28\x11\x3a\xb0\x38\xaa\xce\x64\x1d\xd0\x4b\x85\x24\x03\xc9\xb0\xb5\x8a\xe4\x46\x6a\xa4\xda\x83\xbc\x23\x25\x03\x90\x92\xa8\xd6\xa4\x8c\x0c\x81\x86\xd2\xc7\xe8\xa3\x42\xe7\xd3\x1e\xb5\x8d\x30\xdf\xb3\xef\x50\xa4\x81\x3a\xae\x56\xe0\xa9\x01\x65\xa4\x07\x6a\xa0\x95\xd1\x20\x35\x60\x00\x81\x1a\x47\x60\x02\x10\xd8\xd8\x11\x3c\xf4\xce\x23\xc1\x03\x82\x6d\x02\xb5\xda\x4a\x63\xb6\xd4\x3a\x4f\xad\x77\xdd\x4b\x3a\x6d\xb4\x0a\xb5\xb3\xb4\x02\x24\xdd\x92\xee\x7a\x33\x7c\x0f\x69\x9b\x58\xb5\x25\x3d\x98\xaf\xc0\xb5\xa4\x2d\x82\x6f\xa5\x02\xd2\x81\x0c\x20\x75\xae\x89\x06\x28\xb5\xde\x60\xde\x4b\x62\x16\x36\xe4\x5a\xea\xa5\xba\x93\x2b\xa0\xde\xeb\x7b\x89\x69\x75\xa9\x8f\xa1\xa1\x3e\xd6\x46\x2b\xf2\xf0\x4f\xd4\x1e\xc8\x03\x46\x6f\x29\x00\x52\xa2\xd2\x8a\x42\xec\xc1\x53\xd8\x68\x54\xeb\x97\x94\x70\xad\x03\xe1\xda\xbb\x0d\xa1\xdf\x52\x7a\x34\x43\x70\x2d\xdd\x4b\x4f\xf7\x4e\x37\xb4\x59\x6b\x03\xb4\xd1\xb8\xa6\xad\x06\xd3\xcc\x9f\xe9\xe6\x47\x97\x64\xf2\x1a\x7d\x04\xb2\xd1\x18\x8a\xb6\x81\x56\x5b\x68\xe8\x5a\x5e\xef\xe3\xc6\x37\x3a\x60\x2e\xbc\x97\x5b\xfa\xc9\x39\x03\xd2\xd2\xdb\xf4\x47\x2f\x6d\xec\xc0\xcb\xd4\x03\x97\xde\x3b\x4f\x57\x8f\xee\xff\x2a\x71\xfd\x09\x9e\xeb\xa1\xe3\xe9\xa6\xfe\x1b\x14\xd2\xef\xb0\xba\x7c\xe8\xe9\x1d\x7a\x6d\x57\xf4\x6e\xdb\xd5\xce\x7c\x02\x28\xed\x96\xea\x9d\xbc\x85\x7b\xf0\x34\x3e\x1e\x0a\x23\x38\x1c\x81\xf7\x5d\x64\xc5\x62\x99\xff\xf0\xfd\x8f\x5f\xfd\xf7\x75\x55\x7e\x43\xe2\x19\x67\x96\xec\x36\x17\x33\x76\xbb\x14\x34\xe3\x9c\xf3\xe5\x7c\x9e\xb3\xdb\xb4\x13\x4b\xb6\xd2\x9d\xc8\x9f\xb5\x93\xf3\x61\xc4\x0c\xa1\x1a\x23\xa5\xec\x47\x03\x67\xc8\xb0\xba\xb5\x1e\x4f\xf8\x94\xf3\x6a\xa0\x7d\xe2\xeb\x86\x32\x87\x63\xfa\x05\x94\x7e\x28\x69\x39\xfd\x90\x03\xdb\x94\xd9\xf4\xcd\x53\x62\x1c\x87\x19\x13\x9f\x65\xe1\x3c\x3f\xe4\xe1\x3c\x5f\x1e\x52\x7d\x38\xee\xbc\x77\x8d\x2b\xb3\xe9\x1f\x37\x6f\x6f\xca\xe3\xc9\x35\xba\x7e\x2c\xc6\xa7\x47\x52\x7b\x99\x70\xa7\xfb\x9d\x6b\xa7\x9f\x91\x7f\x52\xea\x41\x69\x69\x7e\x5e\x4b\xff\x31\xf4\x15\xd5\x9c\x1c\x16\x73\xf2\x85\x6a\x99\xfc\x1f\x00\x00\xff\xff\x53\xad\xdd\x6c\xd3\x06\x00\x00" + +func runtimeSyntaxTypescriptYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxTypescriptYaml, + "runtime/syntax/typescript.yaml", + ) +} + +func runtimeSyntaxTypescriptYaml() (*asset, error) { + bytes, err := runtimeSyntaxTypescriptYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/typescript.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxValaYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x53\x5d\x4f\xdb\x30\x14\x7d\x26\xbf\xc2\x8b\xd8\x68\x13\x25\x65\x1f\x42\x23\xda\x88\x26\xed\x9d\x97\x3d\x2d\x0e\xc8\x71\x6e\x1a\x0b\xd7\xae\xec\xeb\x76\xa0\xab\xfd\xf6\xc9\x6d\x0a\x85\x21\xfc\x94\xd8\xe7\x1c\x9f\x7b\x7d\xee\xa0\x34\xe0\xfd\x1a\x2a\xb6\x11\x5a\x24\x49\x0f\x08\x12\x2b\x96\x30\xc6\x58\x3c\x34\x62\x05\x15\x4b\x39\x2f\x23\xe0\x34\x4d\x12\x17\x34\xf8\x6a\x07\x28\xd8\x9e\x9b\x72\xde\xcd\x06\x6d\x05\x52\x6f\x43\xa7\x81\x3a\x6b\x35\x85\x5a\x8e\xc2\x51\xa8\x95\xc1\xd9\x57\xfa\x78\x41\x9f\x3f\xd1\xc5\x97\x79\x4d\xa1\xf6\xa3\x75\x48\xa1\xd6\xd6\x2c\x69\x63\x55\x4f\xbe\xf6\xea\x01\x6e\x91\x82\x51\x91\x37\xe7\xbc\x4b\xa7\x6b\x54\x0f\x06\xd5\xa0\xc0\x95\x52\x0b\xef\x2b\x96\x36\x3f\x8a\xdf\xa2\x78\xb8\x6d\xa7\x8f\xf3\xe2\xf2\xb6\xcd\x9a\xa6\xf2\x6b\x21\xa1\x6a\xdb\xac\x99\xcd\xdb\x83\x80\x47\x81\xb0\x02\x83\x07\xb3\xd6\x91\x1a\x68\x3b\x2a\x0d\xd4\x5b\x02\xed\x81\xa4\xf0\x40\x3d\x0c\x22\x68\x24\xbf\x55\x28\x47\x42\x77\x4f\x38\x3a\xbb\x25\x29\x50\x8e\xc7\xa6\x5e\x6a\x2a\xa3\x95\x01\x8a\x2d\xe9\x61\x20\x8f\x2e\x48\x24\x30\x61\x15\x4b\xb2\x86\xe0\x0f\x82\x33\x14\x79\x4a\x92\xb4\xc6\xe3\x5b\x7a\x76\x0d\x4e\xa0\x75\x64\x60\x4b\x3d\x68\x40\x20\x07\x18\x9c\x21\x13\xb4\x7e\x8b\xba\x6b\x12\xd9\x0d\x38\xa7\x7a\xa0\xb5\x53\x1b\x81\x40\xeb\xd0\x69\x25\xc9\xab\xa5\x11\x9a\x70\x54\x9e\xb6\x20\xee\x9e\x29\xad\x41\x2a\xa1\x27\x9d\xa5\x45\x4b\x9d\x03\x71\x17\xed\xa2\x32\x01\x8e\xc1\xbb\x12\x84\xc1\x32\x3e\xf7\x44\x41\x17\x80\x06\xa1\xfd\xeb\x48\x13\x56\x1d\xb8\x09\xdb\x9c\x17\x97\x6d\xfe\xec\xfa\xfb\x55\x67\x75\x79\x28\x3d\xbe\x33\xe7\x45\xbe\xc8\xbe\x7f\xbb\xaa\xab\x77\x7f\xdf\x7f\xa0\x96\x8a\xab\xff\x64\x3d\x3a\x65\x96\x51\x36\x9d\x71\xce\x79\x49\xcd\x0d\x4f\xdb\x79\xc6\x53\x3a\x7b\xdc\x39\x6b\xe7\xd9\xd9\x13\x77\x35\x75\x6c\x76\x43\x47\xb9\x99\x2f\x16\x65\xf6\x12\xb4\xfb\x8d\xcb\xa3\x70\x91\xb3\xe0\x7c\x02\xc5\x05\xa6\xdf\x95\x94\x2d\x9e\xf6\xf6\x73\xc2\x9a\x36\x39\xcc\x8a\xed\x6d\xc5\xd2\x5f\xd7\x3f\xaf\xab\xfa\x31\xd9\x26\x46\xbb\x88\x81\x2f\xb7\xa3\x42\xd8\xdb\x60\xe9\x91\xa3\xfc\xf4\x15\x74\xc5\xd2\x93\x9c\xe5\xc4\xf2\x93\x3c\x4d\xfe\x05\x00\x00\xff\xff\xa8\xac\xa2\x52\xc8\x03\x00\x00" + +func runtimeSyntaxValaYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxValaYaml, + "runtime/syntax/vala.yaml", + ) +} + +func runtimeSyntaxValaYaml() (*asset, error) { + bytes, err := runtimeSyntaxValaYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/vala.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxVhdlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x56\xdd\x8e\xdb\x46\x0f\xbd\xf7\x53\x18\xc6\x87\x2f\x52\x16\x72\x93\xcb\x1a\x6d\x85\xdc\xf4\x21\x6a\xb9\x06\x25\x51\x12\x9b\x11\x47\xe0\x70\xfc\x13\xf0\xe1\x8b\x91\xd7\x86\x1d\x64\xd7\x6d\x6f\x76\x2d\x0c\x79\xf8\x77\xe6\x70\x3a\x72\xa8\xe7\x09\x37\xcb\xc3\xd0\xba\xc5\xa2\x45\xc5\x46\x37\xcb\xc5\x72\xb9\x5c\xa6\x43\x86\x11\x37\xcb\x55\x55\xad\x93\x41\xf9\xbf\xd5\x62\x21\xd1\x61\xd8\xcc\x16\xc5\xf2\xe2\xbc\xca\x28\xaf\xaa\x3a\x0b\x2a\xc4\xbd\x11\x2b\xf6\x28\xc6\xa0\x51\xc0\xd9\xe4\x03\x29\x1d\xd0\xb2\xc8\x79\x19\xa8\x67\x6c\x2d\x68\xbb\x8f\xa5\xf3\x3d\x35\xd9\xfe\x80\x8d\x7a\xc9\x4b\xab\x49\xef\xbf\xbc\x77\x08\x6c\xb1\x3c\x7d\xfa\xfc\xad\x34\x10\x81\xb3\x09\x70\x8f\x29\xde\xea\x35\x09\x6a\x91\x95\x3a\x42\x49\xa9\x94\x94\x3b\xaa\x05\xe4\xbc\xdd\x6e\xc2\x04\x0d\x6e\x76\xbb\x97\x2d\x14\xdf\xbe\x14\x7f\xec\x3f\x15\x3f\xef\x5e\xde\x74\x8c\x01\xdf\x70\xaa\xaa\xf5\x3b\x7e\x8d\x1f\x27\xcf\xc8\xfa\xef\x43\x66\x20\xcd\x40\xa9\xed\x51\xd0\x1a\xcf\x1d\xf5\x51\x40\xc9\x73\xfe\x26\xda\xfd\x81\xef\xfe\x43\xd0\xf4\xad\x67\x9b\xa0\xf9\x0a\x3d\xfe\xb3\x40\x14\xde\xc4\x43\x6e\xef\x2d\xb3\xc7\xa2\x5e\x83\xdd\x9a\x64\x93\xf8\x06\x43\xb8\x86\xb7\x1e\x19\x05\xf4\x31\x8f\xbc\xfc\x61\x2d\x41\x41\x71\x44\xd6\xd7\xd0\x89\x77\x50\x07\x83\x66\x86\x84\x4e\x51\x0c\x1c\x41\x30\x70\xce\x80\x5b\x7b\x48\x06\x42\x40\x51\x03\x55\xa1\x3a\xea\x03\x91\x7e\x84\x5d\x63\x4f\x6c\xb5\xf3\xcd\x57\xab\x7d\x7b\xb6\x3a\x76\x1d\x8a\xd5\x31\x58\x03\x01\xef\xca\x7a\x18\x5e\xfa\x0a\x0a\xac\xcf\x02\xb4\x14\x1a\xcf\x8c\x8d\x5a\xeb\x8f\xac\xde\xd0\x05\x4c\x7f\xa8\x33\xe4\xf6\xda\x3e\x3c\xd1\x53\xac\x74\x65\xad\xf3\x62\x5d\xe4\x66\xce\xe2\xda\xda\xcb\x0f\x6a\xac\x8f\x20\x2d\xb6\xcf\x90\xa8\x33\x1a\xa7\xd4\x30\x62\x23\x46\x51\x02\x67\xc4\x3e\xaa\x51\x78\xe6\xed\xa0\x46\x67\xaf\xd7\xd0\x1c\xf1\x3c\x66\x47\x8a\x49\x0f\x9c\xf7\x93\x8d\x30\xd9\xe8\x9f\xe6\xc1\x69\x80\x8c\x47\x63\x3c\xa9\xb1\x17\x63\xaf\xc6\xd1\x39\xf3\x9d\x79\x36\x3f\x21\x9b\x17\xf3\x3a\xa0\x04\xf3\xf1\x69\x93\xae\xac\x9b\xbc\x68\xd2\x26\x4d\xe3\x6b\x2f\xa4\x6c\x53\xc5\x37\x7a\x46\x79\x4a\x8f\x59\x8c\x4c\xb0\xf1\xd2\x9a\x60\x4f\x21\xf1\x4f\xf0\xaf\x34\x4f\xc1\xd1\x04\xe7\x38\x82\x1a\x85\x4d\xbc\x33\xf1\xf2\x0c\x35\xa0\x4b\xfe\x01\x0f\x28\x69\xf6\x61\x00\x49\x9a\x49\x3d\x83\xb3\xe0\xc0\x82\x73\x16\x04\x2c\x88\xb3\x10\xeb\xa4\xc3\xcf\x40\x75\x40\x36\xf5\xa6\x02\x1c\xe6\xa4\x92\x97\x45\x86\xae\xc3\x46\xb1\xb5\xc8\xa4\xc1\x22\x2b\x39\x8b\xe1\x29\xe0\x01\x84\xa0\x76\x68\x47\x20\xb5\x63\x82\x3f\x0e\x89\x81\x47\xd2\xc1\x4e\x69\x58\xa7\xf7\x6b\xfd\x90\xd5\xe9\x0a\x39\xec\xd4\x84\xfa\x41\x6d\xa0\x7e\x30\xe7\x8f\x69\x30\x76\x48\xc5\xc6\xa6\xb1\x29\x55\x9f\xac\x7c\x77\xb1\xf3\x89\x9e\x69\x88\x99\x83\xa0\xfb\xbc\x3c\x80\x8b\x98\xbf\x1d\x27\x93\xd4\xcb\x80\xfb\xbc\xbc\x8c\xcc\x21\xf7\x3a\x18\x84\x06\xb9\x4d\x5b\x0b\x0f\xe9\x0e\x07\x4d\x15\xbd\x03\x14\x68\x9c\x1c\xda\x04\x3a\x18\xcd\x37\xbc\xc1\x7c\x9f\xf6\xe4\xbb\x03\xd5\x76\x3f\x82\x36\x83\x65\x42\x21\x85\xeb\xc0\x39\xe2\x3e\xdf\x63\xdb\xa3\x51\xd8\x9f\x9e\xb4\x5b\xfd\x3e\x8b\x7c\xdd\x9e\x97\x7f\xd7\x4d\x7b\x5d\x90\x41\xdb\xeb\x4e\xbd\x2e\xd1\x07\xd4\xf3\x58\x7b\xb7\xf6\x53\x92\x04\x3f\x8b\x77\x55\xbd\x58\x61\x55\xf5\xd1\x7e\xb2\xff\xdb\x2f\xf6\x9b\xfd\x6a\x55\xb5\xb6\xcd\xad\x05\x57\x1d\x5b\x73\x1c\xeb\x9b\xe2\x7f\xc8\xb6\x9f\x8a\xcf\x3b\x8b\x76\xb2\x6f\x76\x34\x67\x83\x15\xf9\x07\xdb\xd6\xfe\xb4\x2b\xab\xd5\x7c\x0c\x45\xf7\xa5\xf8\xfd\x7b\xa3\x97\x6a\xf5\x3e\x76\x55\xd5\xdb\xcb\xca\xdd\xef\x5e\x32\xdc\x56\x55\xb1\x2b\xb7\xf3\x16\xc8\xcb\x6c\x59\x6e\xbb\x89\xe3\xb8\x2b\x43\x5e\xde\x15\x77\xc3\x4a\xaf\x86\x7b\xda\x4b\xc4\xd4\xed\x47\x3e\x5f\xad\xef\xa5\xc6\x6b\xa2\xb2\xf0\xcc\x06\x91\x24\xa3\x40\xee\x3b\x11\xb8\x85\xb9\x3c\x76\xd2\xe3\x68\xb5\xfd\xb3\x5a\xed\x3e\xde\x97\x35\xbe\xce\xae\x28\xd6\x1f\x57\x8b\xbf\x03\x00\x00\xff\xff\x82\x03\x0d\x07\x67\x09\x00\x00" + +func runtimeSyntaxVhdlYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxVhdlYaml, + "runtime/syntax/vhdl.yaml", + ) +} + +func runtimeSyntaxVhdlYaml() (*asset, error) { + bytes, err := runtimeSyntaxVhdlYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/vhdl.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxViYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x90\xc1\xaa\xdb\x30\x10\x45\xf7\xfe\x0a\xd5\x84\xc6\x4e\x71\x9a\x6d\x0c\xc5\x94\xfe\x45\x25\x35\xc8\xf2\xb8\x15\x95\x46\x46\x92\x8d\x5b\xe6\xe3\x1f\x71\xf2\x92\x60\x08\x64\xf5\x66\x25\x5d\xe9\xce\x9c\xb9\xbd\xb1\x90\xfe\x0d\x50\xb3\xc9\x64\x59\x07\x09\x74\xaa\x33\xc6\x18\x3b\xbf\xa0\x72\x50\xb3\xbc\xf8\x45\x5f\x49\x88\x7d\x59\xc0\x4c\x93\x71\x65\xd0\x9b\xf3\x7d\x32\x2e\xcf\xb2\x30\x5a\x88\x17\x4f\xc5\x4c\x07\x98\x4c\x6f\x20\xd4\x2c\xe7\xdf\xab\x9f\xaa\xfa\x7f\x92\xd7\xc3\xa1\x3a\x9e\xe4\x8e\xf3\x3a\x0e\x4a\x43\x2d\xe5\x8e\x17\xa5\xcc\xaf\xd6\x98\x54\x02\x07\x98\x6a\x96\x0b\xd1\x16\x1c\xa7\x39\x7a\x63\xb5\x6c\x0a\xf4\x01\x68\xc4\xb2\x71\x6a\x20\x8e\x93\x9d\x25\x12\x37\xda\xcb\x06\x3d\x71\x6d\xac\x9f\x66\xc9\x47\x27\x29\x36\x23\xba\x52\x88\xf6\x59\xdf\x88\x3e\x10\x8e\x48\xe8\x28\x42\x22\xd3\x13\x60\x67\x7a\xb2\x90\x68\x44\x0b\xe9\x99\x9b\x7f\xfa\xfc\xed\x86\xab\x3d\xc6\xa4\x30\xed\x71\x74\xed\xb2\xae\x10\x2d\x3f\x54\x47\xf9\x65\xb1\xaf\xbf\xc5\x14\x0c\xfe\xbe\xe4\x74\xae\x98\x54\x58\x90\xf2\xfc\xa6\x01\x76\x2b\x25\xfe\x35\xc3\xd2\x5a\x88\xfd\x5d\x7d\x88\xfc\xbd\x1e\x27\x0d\xa0\x8d\xb2\x3f\xfe\xa8\x70\xb7\xbe\x8a\xb3\x5d\xd3\x6c\x3f\x00\x46\x7b\xb7\x44\xfc\x42\x38\x9b\xf5\x60\xc6\xe5\x4d\xc9\xb2\xb7\x00\x00\x00\xff\xff\x87\xcc\xe5\x31\xd0\x02\x00\x00" + +func runtimeSyntaxViYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxViYaml, + "runtime/syntax/vi.yaml", + ) +} + +func runtimeSyntaxViYaml() (*asset, error) { + bytes, err := runtimeSyntaxViYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/vi.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxXmlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\xcd\x31\x0b\xc2\x30\x10\x05\xe0\x3d\xbf\xe2\x3c\x44\xb4\x90\xba\xa7\x62\x07\x75\xd6\xc1\x45\xda\x0a\xa5\xbd\x96\x40\x12\x4b\x12\xa1\x42\x7f\xbc\x84\x56\x87\x22\xbe\xf5\xdd\xfb\xae\x91\x8a\xfc\xab\x23\x01\xbd\x56\x8c\xd5\xe4\xa9\xf2\x82\x01\x00\x84\xca\x94\x9a\x04\x60\x9e\xc7\xeb\x5e\xab\xc1\xb5\x5a\xa5\x83\x35\xed\xd0\x29\xe9\xfc\x66\x89\x8c\xd9\xa7\x22\x37\x2e\x38\xc8\x9a\x8c\x97\x8d\x24\x2b\x00\x77\x71\x94\xee\x71\x6a\xaa\x87\xd6\x64\x26\x3a\xc4\xf9\xd2\xfa\x70\xb5\x38\x9e\x0f\xd7\xdb\xe5\x84\xdf\x8a\x4c\x2d\x00\xb3\x6d\xf1\x99\x87\x8c\x7f\x20\x2b\x66\x20\xfc\x10\x39\x9f\x63\x9c\xff\xa1\x5c\x47\x95\x2c\x95\x00\x5c\x65\xf7\xa4\x88\x12\x64\xef\x00\x00\x00\xff\xff\x1f\x6d\x27\xb2\x18\x01\x00\x00" + +func runtimeSyntaxXmlYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxXmlYaml, + "runtime/syntax/xml.yaml", + ) +} + +func runtimeSyntaxXmlYaml() (*asset, error) { + bytes, err := runtimeSyntaxXmlYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/xml.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxXresourcesYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\xcf\xdd\x4a\xc3\x30\x18\xc6\xf1\xe3\xe5\x2a\x5e\xc3\x0e\xda\x86\x15\x4f\x7d\x41\xbc\x0d\x21\xcd\x20\xcd\xde\xb2\x40\x3e\x4a\x3e\xd4\x61\x2f\x5e\x6a\xdd\x98\xe8\xf9\xef\xf9\xc3\x33\x59\x47\xe5\x32\x13\xc2\x47\xa2\x1c\x6b\x32\x94\x19\x3b\x51\x21\x53\x10\x18\x00\xc0\x4a\x82\xf6\x84\xc0\x5f\x9b\x13\x4d\xba\xba\x92\x97\x9b\x6e\xf7\x9c\xb1\x54\x1d\x65\xfc\xe6\x07\xc8\x33\x19\xab\x1d\x02\x3f\x4a\x89\xda\x85\xea\x51\x29\x31\x0c\x1d\xff\x11\xf6\x44\xa1\xd8\xc9\x52\xea\xdf\x74\x42\xe0\xc3\xd0\xfd\xa6\x78\xa5\x26\x86\x5c\x74\x28\x7d\xa8\x7e\xa4\xcd\x8e\xf2\xf1\xf0\xb4\xaa\xf1\xaa\xf2\xc5\x8f\xd1\xf5\x71\xa6\xa4\x4b\x5c\x95\xec\xf0\x59\xfd\x89\x8c\x31\xba\x2d\xd1\x94\x54\x69\x99\xb4\xcb\xd4\xde\x85\x4c\xf4\x9e\x42\x41\xe0\xcd\x71\x91\x12\xf3\xac\x0d\xa1\x52\xed\x43\x23\x8f\x9f\xaa\xef\xda\x97\xfd\xed\x45\x58\x6f\x1c\xcc\x59\xa7\xfe\xfd\x6c\x0b\x6d\x18\xf8\xdd\x4e\xfc\xa7\x11\xf8\x4e\x80\x58\x40\xec\x04\x67\x5f\x01\x00\x00\xff\xff\x03\xc7\xb0\x2d\x83\x01\x00\x00" + +func runtimeSyntaxXresourcesYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxXresourcesYaml, + "runtime/syntax/xresources.yaml", + ) +} + +func runtimeSyntaxXresourcesYaml() (*asset, error) { + bytes, err := runtimeSyntaxXresourcesYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/xresources.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxYamlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x91\x4f\x8f\xd3\x30\x10\xc5\xef\xfe\x14\x5e\xb3\x4b\x93\xad\x1c\x71\xc5\x07\x50\x85\x58\x2e\xd0\x1e\xe0\x52\x32\x89\xe4\xb6\x13\x6a\xe1\x38\x21\x9e\x0a\x05\xcd\x87\x47\x49\x28\x0d\x2d\x17\x24\xac\x1c\xa2\x37\xff\x7e\x7a\xaf\x72\x1e\xa9\x6f\xd1\xc8\xde\xd6\x5e\x88\x03\x12\xee\xc9\x08\x29\xa5\x1c\x6a\xc1\xd6\x68\xa4\x02\xc8\x7a\xfb\xba\xf6\xf7\x6a\xac\x1c\xd1\x1e\xb0\x33\x52\x3d\x6c\x57\x1f\xde\x2b\x21\xba\x93\xc7\x38\x4d\x69\x39\xed\x53\x49\xc9\x32\xbd\xbb\x4b\x76\x2e\xd8\xae\xe7\x5d\xd3\x78\xae\x7c\x63\x89\x5d\x20\xae\x6d\xcb\xe1\xe4\x3d\x37\xc3\x5f\xc4\x6f\x1c\x91\x38\x52\x97\x4a\xf5\x6b\xcf\xbe\x09\x91\x6c\x20\x23\x07\x80\x5d\xb2\x7d\xfb\x91\x7b\x8c\xbc\xe5\x9e\x37\x6b\x6e\x02\xaf\x37\x1c\x1a\x5e\x73\xe0\xcd\xd3\x13\x37\x55\x95\x02\xec\x6e\xc7\xc7\x69\xea\x4e\xc8\x95\xf5\x11\xe7\x4d\x91\x2c\x61\x8d\x63\x57\x62\xf2\xdc\xc4\xd6\xee\xd1\x14\x05\x03\xe4\x0c\x50\xf0\x5c\x5c\xe6\xfc\xaa\xe0\x72\xa6\x3c\x6a\x99\x9e\x77\xb9\x03\x06\x72\x95\x1b\x9d\x99\xf5\xe4\x00\x8f\xcf\x8b\x7c\xa5\x3f\x5b\xfd\xe3\x85\x7e\x59\x2c\xd5\x9f\x4e\xe5\x3a\x03\xf8\x5e\x2c\xcd\xdf\xa8\x2e\x62\x8b\x7b\x67\xfd\xe0\x46\x52\x6a\xad\xb9\x04\xc8\xa6\x8f\xcb\x31\x08\x2e\x1f\x3e\xad\xde\xa5\x4a\x5c\x39\x90\x45\xea\x5c\xf8\x32\xe5\x33\xbc\x48\xb6\xa3\x73\x44\xa0\xd4\xef\x02\x86\xc3\x60\xd7\x4c\x89\x5f\x5d\x3b\x3a\x08\x90\x5d\xd4\x59\xde\xe7\x37\x3f\x37\x91\xbe\x39\xda\xee\x32\xfa\x4f\x4c\x8b\x6b\xa4\xc5\x0d\x51\x32\xee\x4d\x39\x59\x2c\xd2\xff\x03\x56\x8f\x8e\xdf\x00\x3d\xbb\x66\xb9\xbf\x3e\x27\xf3\x42\x08\xf1\x33\x00\x00\xff\xff\x9a\xfa\x6f\xca\x4b\x03\x00\x00" + +func runtimeSyntaxYamlYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxYamlYaml, + "runtime/syntax/yaml.yaml", + ) +} + +func runtimeSyntaxYamlYaml() (*asset, error) { + bytes, err := runtimeSyntaxYamlYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/yaml.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxYumYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8f\x4d\x4b\xc4\x30\x10\x40\xcf\x9b\x5f\x31\xc4\x1e\xfa\x41\x83\x57\x03\x8b\x07\xcf\x1e\x3d\x48\x92\x42\x4c\xa7\x34\xd0\xa6\x25\x1f\x4a\x31\x3f\x5e\x5a\x57\x5d\x70\x6f\x03\xf3\x1e\x6f\x66\xb0\x13\xc6\x6d\x45\x0e\x5b\x9a\x09\xe9\x31\xa2\x89\x1c\x08\x00\xc0\xbe\x73\x7a\x46\x0e\x54\x4a\xe6\x71\x5d\x8a\xbc\xa5\x99\xd5\x52\x32\xb3\xb8\xa1\xa0\x84\xf8\x34\x61\xe0\x07\xde\x82\xed\xd1\x45\x3b\x58\xf4\x1c\x68\x27\x04\x0f\xab\x36\xc8\x95\xaa\x45\x77\x56\xf5\x99\x5e\x38\xb3\xb8\x10\xb5\x8b\x2c\xac\x68\xac\x9e\x9e\x46\xfd\xcf\x90\x52\xec\x21\x55\xfc\x48\x21\xea\x88\x33\xba\x78\x9c\x53\x94\x1e\x27\xd4\x01\xdf\xd1\x67\xed\xcd\x98\xdf\x74\xc0\x63\x48\xc9\xf6\xf9\xf5\xe5\x59\xdc\xb7\x0f\xaa\xfa\x6b\xce\x17\xb9\xec\xf2\x55\xa8\xba\x2b\x45\xf7\xa9\x58\x5d\x3d\xfe\xa6\xac\xdb\x1f\x69\xcd\xa8\x3d\xfb\x18\x6d\xc4\x6f\x18\xe8\x95\xd7\xdc\xa2\x39\xd0\x53\x03\x4d\x86\xe6\xd4\x50\xf2\x15\x00\x00\xff\xff\x86\x2c\x1d\xe7\x5c\x01\x00\x00" + +func runtimeSyntaxYumYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxYumYaml, + "runtime/syntax/yum.yaml", + ) +} + +func runtimeSyntaxYumYaml() (*asset, error) { + bytes, err := runtimeSyntaxYumYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/yum.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxZshYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x55\x5d\x6f\x1b\xb7\x12\x7d\xf7\xaf\xd8\xc8\xc6\x8d\x36\xbe\xf2\x4d\x72\x93\xa0\x75\x3f\xd4\x36\x40\xd1\x87\xa2\x2f\x05\xfa\x10\xd3\x6d\x29\x72\x56\x64\x96\x4b\x6e\x38\x43\xcb\x52\x4e\xfe\x7b\xc1\x95\xbf\xaa\x24\x68\x05\xed\x72\xf9\x31\x67\x86\x87\x73\x86\x9d\x0f\x24\xdb\x91\xce\x9b\x1d\xbb\xa3\x23\x4b\x42\x46\xce\x8f\x9a\xa6\x69\xea\x54\xd4\x03\x9d\x37\xb3\xb9\x52\x67\x3b\x76\x27\x50\xea\x6c\x39\xdf\xb1\xa3\x78\x85\xdd\x98\x53\x5d\x83\x1d\xbb\x6c\xb0\x0b\x69\xed\xe3\xd4\xa4\x22\xed\x49\x3b\x9b\x50\x1c\x69\x4b\xf9\xbc\x99\xfd\x7e\xfc\xe8\xec\xc9\xff\xe6\x14\xaf\x9a\xd3\x76\xb9\x63\x37\x6f\x50\x17\x1d\xe5\x12\x88\xf7\x2e\x8f\x8f\x9b\x5f\xca\xb0\xa2\xcc\x53\x77\xd1\x98\x14\x59\x74\x94\xb3\x38\x0d\x9f\x37\x33\xa5\x56\x17\x4f\x17\x5f\x5e\x9e\x2a\xb5\x9a\x1d\x4d\xcb\x26\xbb\xd7\x29\x5a\x2f\x3e\x45\x1d\xb8\xd1\xd1\x56\x53\xc9\x29\x34\x5d\x48\x9b\x1b\x34\x16\x2d\x34\x50\x94\x3d\xce\x5c\x87\x8d\xde\x32\x56\x99\x74\x8f\xd5\x96\x60\x34\x13\xaa\xa1\x8f\x85\x60\x3d\xa7\x4d\x84\x4d\xb0\x29\x12\x28\xf8\x0e\x14\x98\x40\xac\x0d\xe8\xda\x0b\x3a\x8f\x2e\x65\x74\x25\x9a\xea\x1b\xbe\x83\x8f\x08\xc9\xe8\x80\x4c\xda\x22\x93\x94\x1c\xc1\x14\xc8\x08\xd8\xf9\x4e\x20\x8e\x22\xc4\x0f\x84\x12\xc5\x07\x6c\x9c\x0f\xd4\xde\xef\xe7\xef\x81\xce\x95\x7a\x0f\xa5\x3e\x40\xa9\x39\x94\x6a\xa1\xd4\x57\x50\xea\x12\x4a\x5d\xe0\x4f\x28\xa5\x14\x94\x3a\xc1\xd7\xf8\x16\x8f\xf0\x0d\xfe\x03\xa5\x70\x43\xfe\x21\x33\x4d\x17\xf4\xfa\x96\x5b\x1e\xc9\x78\x1d\xce\x9b\xd9\xe2\xe2\x67\x4b\xdd\x3a\x97\xcd\xf5\xe5\x14\xc6\x47\x0b\xe6\xf4\x0e\x91\xb0\x16\x04\xc1\x9a\x10\x08\x8c\x88\x5d\x7b\x70\x0a\x3f\x68\x76\x0b\x1f\x1d\x65\x2f\x64\x3f\x43\xfb\xbc\xc4\x76\xa9\x83\xd7\x8c\x95\x8f\xb6\xa7\x2d\x56\xc5\x07\xf1\x11\xc6\xc2\x92\x09\x3a\x13\xe8\x4a\x07\xd0\x35\x55\xa6\xc7\x94\x05\x6f\xd3\x8a\x11\x48\x30\xa6\xd1\x62\x2c\xec\x2c\x98\x04\x9c\x4a\x36\x84\x9a\xc5\xb5\x5b\x06\xcd\x3d\x4a\x64\x92\xf6\x6e\x33\x53\x70\x6f\x7e\xfd\x69\x31\xed\xa9\xf3\xe6\x26\xb4\x7d\xea\xef\x93\xc1\xda\xc5\x8e\xdd\xc2\xa5\xd4\x43\x17\x49\x21\x69\x0b\xe3\xac\xcf\x30\x69\x18\x7d\xf4\x02\xeb\x33\x63\x6e\x3d\x83\x62\xab\x57\x81\x40\xc6\x25\x31\xa0\xa1\x04\x2d\x84\x31\xfb\x28\x18\x73\x1a\x46\x99\x57\x93\x76\x89\x69\xbf\x4c\x92\x46\xc1\xae\xea\x65\x48\x76\x02\xdf\xb1\x6c\x03\x61\xe3\x28\x1a\x3a\xa4\xf2\x75\x1a\x86\x14\x9b\xe0\x63\xb9\x6e\x4c\x1a\x06\x1d\x2d\x7f\x8e\xd1\x35\xfc\xba\x5d\xea\x4d\x8f\xce\x47\x0b\xa5\x36\xef\x9f\xfe\xf7\xc5\x87\x75\xa6\x11\xbd\x0f\x61\x7a\xe9\x10\xee\x66\x02\x31\x63\xd0\x3d\x61\x9c\xe6\x99\x2c\x44\xe7\x8f\x83\xc8\x54\xc4\x07\xfe\xa7\x08\x56\x9a\xe9\xd5\x0b\xd4\xa6\xd6\x0c\x18\x2d\x30\xce\xa4\x08\xe3\xd6\x79\x84\x71\x43\xaa\x6c\x56\x41\x19\x97\x53\x12\x98\x9e\xcb\x50\xa9\x1d\x60\x46\x18\x1e\x83\x17\x98\x22\xb0\x95\x48\x6b\x61\xbb\xca\x77\x7d\x4c\x0a\x29\x73\xfd\x9a\xc0\x6d\x99\x68\x47\xad\x42\x74\x3d\xea\x68\x6b\x93\xd1\x69\x23\x55\x8d\xba\x8a\xb4\x1b\x04\x5d\x0a\x16\xb5\x02\xc1\x25\x16\x6f\x51\xff\xb5\xa2\x84\x80\xb7\xa9\x2a\xd5\xc7\x1e\xa1\x2a\x76\x3d\x21\x07\xc6\x60\x5f\xd6\xb8\x86\xbe\xfa\x1e\xfa\xce\x77\x09\x43\x1f\x93\xc5\xd0\x0b\x0d\x23\x86\x2b\x44\x6f\x08\x31\x20\x26\x57\x46\xc4\x31\x27\x83\x58\x86\xea\x32\x59\x8c\x9a\x6b\x26\x68\x71\xc6\xf5\x18\x7d\xec\xb7\x18\xf3\x3e\x35\x6a\xc8\xd3\x47\x87\x51\xae\x31\x6e\xec\x54\x27\xa6\x38\x32\xe9\x50\xad\x90\x07\xe4\xa1\xba\xcf\x25\x56\x0a\x99\xde\x61\xce\x4e\x3f\x03\x3b\xfd\xfc\xf9\x8b\xa9\x79\xf9\xaa\x36\xff\xff\x62\xea\xbd\x7c\xf6\xbc\xad\x51\xb3\xcb\x64\xc1\xae\x74\xe0\x40\x34\x82\xab\x72\xf6\xd4\xd6\x23\x03\x8b\x5d\xd5\x49\x91\x2d\x26\x83\x6d\x34\x10\x5d\x1f\x1f\x20\x44\x10\x62\x99\xaa\x53\x2a\x02\x49\xc5\x38\x48\x86\xe4\x42\xf5\x15\x4d\x3d\x1c\x99\x60\x2b\x46\x99\x68\x2b\xf1\xe6\x18\x4a\xf4\xef\x50\xe2\xb4\x9d\xc2\x94\x19\x57\x75\x1f\x1b\x83\x8d\x4b\xf5\xd1\x83\xc7\x96\xf8\x30\xcf\x7e\xbc\x29\xa0\x8d\xa5\xae\xaa\xc6\xa7\x78\x93\x68\xde\x52\x14\xdf\xf9\xfd\x1d\xa2\x14\x9f\xce\x6f\xab\x6d\xed\xb4\xf5\x32\xf8\x7e\xf1\xe6\x8f\x7a\x21\xf0\xa9\x52\x73\xa5\xda\x59\x73\xdc\xcc\x7d\xfb\x00\xff\x37\x9d\x7d\x95\x2b\x7f\x0a\x55\xa9\x13\xa5\xde\x2f\x6f\x91\x1e\x7d\x77\x7c\xf2\x64\xb9\xa8\x80\x1f\x96\xb3\xe6\xf8\x0e\xe9\xc1\x75\xc4\x92\x7d\x5c\x9f\xdf\x38\x68\xaa\x1c\xf2\x24\x85\xd9\xec\x6e\x8c\xa2\x3d\x18\xe1\xde\x8f\x93\x3f\xa5\xce\xee\x47\x1f\xdc\x7f\xb7\xbf\x87\x9e\xf6\x45\xf8\xb5\xd3\xf9\xde\xf4\xdf\x86\xf3\xf8\x30\x9a\xc7\x87\x6e\x9b\x8b\xcb\x7b\xb4\x61\x12\xf4\x47\x28\xc7\x87\x28\x27\x9f\x44\xf9\x2b\x00\x00\xff\xff\x63\xe6\xa7\x7e\x4b\x08\x00\x00" + +func runtimeSyntaxZshYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxZshYaml, + "runtime/syntax/zsh.yaml", + ) +} + +func runtimeSyntaxZshYaml() (*asset, error) { + bytes, err := runtimeSyntaxZshYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/zsh.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +// Asset loads and returns the asset for the given name. +// It returns an error if the asset could not be found or +// could not be loaded. +func Asset(name string) ([]byte, error) { + cannonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[cannonicalName]; ok { + a, err := f() + if err != nil { + return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) + } + return a.bytes, nil + } + return nil, fmt.Errorf("Asset %s not found", name) +} + +// MustAsset is like Asset but panics when Asset would return an error. +// It simplifies safe initialization of global variables. +func MustAsset(name string) []byte { + a, err := Asset(name) + if err != nil { + panic("asset: Asset(" + name + "): " + err.Error()) + } + + return a +} + +// AssetInfo loads and returns the asset info for the given name. +// It returns an error if the asset could not be found or +// could not be loaded. +func AssetInfo(name string) (os.FileInfo, error) { + cannonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[cannonicalName]; ok { + a, err := f() + if err != nil { + return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) + } + return a.info, nil + } + return nil, fmt.Errorf("AssetInfo %s not found", name) +} + +// AssetNames returns the names of the assets. +func AssetNames() []string { + names := make([]string, 0, len(_bindata)) + for name := range _bindata { + names = append(names, name) + } + return names +} + +// _bindata is a table, holding each asset generator, mapped to its name. +var _bindata = map[string]func() (*asset, error){ + "runtime/README.md": runtimeReadmeMd, + "runtime/colorschemes/atom-dark-tc.micro": runtimeColorschemesAtomDarkTcMicro, + "runtime/colorschemes/bubblegum.micro": runtimeColorschemesBubblegumMicro, + "runtime/colorschemes/cmc-16.micro": runtimeColorschemesCmc16Micro, + "runtime/colorschemes/cmc-paper.micro": runtimeColorschemesCmcPaperMicro, + "runtime/colorschemes/cmc-tc.micro": runtimeColorschemesCmcTcMicro, + "runtime/colorschemes/darcula.micro": runtimeColorschemesDarculaMicro, + "runtime/colorschemes/default.micro": runtimeColorschemesDefaultMicro, + "runtime/colorschemes/geany.micro": runtimeColorschemesGeanyMicro, + "runtime/colorschemes/github-tc.micro": runtimeColorschemesGithubTcMicro, + "runtime/colorschemes/gruvbox-tc.micro": runtimeColorschemesGruvboxTcMicro, + "runtime/colorschemes/gruvbox.micro": runtimeColorschemesGruvboxMicro, + "runtime/colorschemes/in_progress/codeblocks-paper.micro": runtimeColorschemesIn_progressCodeblocksPaperMicro, + "runtime/colorschemes/in_progress/codeblocks.micro": runtimeColorschemesIn_progressCodeblocksMicro, + "runtime/colorschemes/in_progress/funky-cactus.micro": runtimeColorschemesIn_progressFunkyCactusMicro, + "runtime/colorschemes/in_progress/gameboy-tc.micro": runtimeColorschemesIn_progressGameboyTcMicro, + "runtime/colorschemes/in_progress/geany-alt-tc.micro": runtimeColorschemesIn_progressGeanyAltTcMicro, + "runtime/colorschemes/in_progress/github.micro": runtimeColorschemesIn_progressGithubMicro, + "runtime/colorschemes/in_progress/mc.micro": runtimeColorschemesIn_progressMcMicro, + "runtime/colorschemes/in_progress/monochrome-paper.micro": runtimeColorschemesIn_progressMonochromePaperMicro, + "runtime/colorschemes/in_progress/monochrome.micro": runtimeColorschemesIn_progressMonochromeMicro, + "runtime/colorschemes/in_progress/nano.micro": runtimeColorschemesIn_progressNanoMicro, + "runtime/colorschemes/in_progress/paper-tc.micro": runtimeColorschemesIn_progressPaperTcMicro, + "runtime/colorschemes/in_progress/paper.micro": runtimeColorschemesIn_progressPaperMicro, + "runtime/colorschemes/in_progress/symbian-tc.micro": runtimeColorschemesIn_progressSymbianTcMicro, + "runtime/colorschemes/monokai.micro": runtimeColorschemesMonokaiMicro, + "runtime/colorschemes/railscast.micro": runtimeColorschemesRailscastMicro, + "runtime/colorschemes/simple.micro": runtimeColorschemesSimpleMicro, + "runtime/colorschemes/solarized-tc.micro": runtimeColorschemesSolarizedTcMicro, + "runtime/colorschemes/solarized.micro": runtimeColorschemesSolarizedMicro, + "runtime/colorschemes/twilight.micro": runtimeColorschemesTwilightMicro, + "runtime/colorschemes/zenburn.micro": runtimeColorschemesZenburnMicro, + "runtime/help/colors.md": runtimeHelpColorsMd, + "runtime/help/commands.md": runtimeHelpCommandsMd, + "runtime/help/defaultkeys.md": runtimeHelpDefaultkeysMd, + "runtime/help/gimmickcolors.md": runtimeHelpGimmickcolorsMd, + "runtime/help/help.md": runtimeHelpHelpMd, + "runtime/help/keybindings.md": runtimeHelpKeybindingsMd, + "runtime/help/options.md": runtimeHelpOptionsMd, + "runtime/help/plugins.md": runtimeHelpPluginsMd, + "runtime/help/tutorial.md": runtimeHelpTutorialMd, + "runtime/plugins/autoclose/autoclose.lua": runtimePluginsAutocloseAutocloseLua, + "runtime/plugins/ftoptions/ftoptions.lua": runtimePluginsFtoptionsFtoptionsLua, + "runtime/plugins/linter/linter.lua": runtimePluginsLinterLinterLua, + "runtime/plugins/literate/README.md": runtimePluginsLiterateReadmeMd, + "runtime/plugins/literate/literate.lua": runtimePluginsLiterateLiterateLua, + "runtime/syntax/LICENSE": runtimeSyntaxLicense, + "runtime/syntax/PowerShell.yaml": runtimeSyntaxPowershellYaml, + "runtime/syntax/README.md": runtimeSyntaxReadmeMd, + "runtime/syntax/ada.yaml": runtimeSyntaxAdaYaml, + "runtime/syntax/apacheconf.yaml": runtimeSyntaxApacheconfYaml, + "runtime/syntax/arduino.yaml": runtimeSyntaxArduinoYaml, + "runtime/syntax/asciidoc.yaml": runtimeSyntaxAsciidocYaml, + "runtime/syntax/asm.yaml": runtimeSyntaxAsmYaml, + "runtime/syntax/ats.yaml": runtimeSyntaxAtsYaml, + "runtime/syntax/awk.yaml": runtimeSyntaxAwkYaml, + "runtime/syntax/c++.yaml": runtimeSyntaxCYaml, + "runtime/syntax/c.yaml": runtimeSyntaxCYaml2, + "runtime/syntax/caddyfile.yaml": runtimeSyntaxCaddyfileYaml, + "runtime/syntax/clojure.yaml": runtimeSyntaxClojureYaml, + "runtime/syntax/cmake.yaml": runtimeSyntaxCmakeYaml, + "runtime/syntax/coffeescript.yaml": runtimeSyntaxCoffeescriptYaml, + "runtime/syntax/colortest.yaml": runtimeSyntaxColortestYaml, + "runtime/syntax/conf.yaml": runtimeSyntaxConfYaml, + "runtime/syntax/conky.yaml": runtimeSyntaxConkyYaml, + "runtime/syntax/cpp.yaml": runtimeSyntaxCppYaml, + "runtime/syntax/crontab.yaml": runtimeSyntaxCrontabYaml, + "runtime/syntax/crystal.yaml": runtimeSyntaxCrystalYaml, + "runtime/syntax/csharp.yaml": runtimeSyntaxCsharpYaml, + "runtime/syntax/css.yaml": runtimeSyntaxCssYaml, + "runtime/syntax/cython.yaml": runtimeSyntaxCythonYaml, + "runtime/syntax/d.yaml": runtimeSyntaxDYaml, + "runtime/syntax/dart.yaml": runtimeSyntaxDartYaml, + "runtime/syntax/dockerfile.yaml": runtimeSyntaxDockerfileYaml, + "runtime/syntax/dot.yaml": runtimeSyntaxDotYaml, + "runtime/syntax/elixir.yaml": runtimeSyntaxElixirYaml, + "runtime/syntax/erb.yaml": runtimeSyntaxErbYaml, + "runtime/syntax/fish.yaml": runtimeSyntaxFishYaml, + "runtime/syntax/fortran.yaml": runtimeSyntaxFortranYaml, + "runtime/syntax/fsharp.yaml": runtimeSyntaxFsharpYaml, + "runtime/syntax/gdscript.yaml": runtimeSyntaxGdscriptYaml, + "runtime/syntax/gentoo-ebuild.yaml": runtimeSyntaxGentooEbuildYaml, + "runtime/syntax/gentoo-etc-portage.yaml": runtimeSyntaxGentooEtcPortageYaml, + "runtime/syntax/git-commit.yaml": runtimeSyntaxGitCommitYaml, + "runtime/syntax/git-config.yaml": runtimeSyntaxGitConfigYaml, + "runtime/syntax/git-rebase-todo.yaml": runtimeSyntaxGitRebaseTodoYaml, + "runtime/syntax/glsl.yaml": runtimeSyntaxGlslYaml, + "runtime/syntax/go.yaml": runtimeSyntaxGoYaml, + "runtime/syntax/golo.yaml": runtimeSyntaxGoloYaml, + "runtime/syntax/groff.yaml": runtimeSyntaxGroffYaml, + "runtime/syntax/haml.yaml": runtimeSyntaxHamlYaml, + "runtime/syntax/haskell.yaml": runtimeSyntaxHaskellYaml, + "runtime/syntax/html.yaml": runtimeSyntaxHtmlYaml, + "runtime/syntax/html4.yaml": runtimeSyntaxHtml4Yaml, + "runtime/syntax/html5.yaml": runtimeSyntaxHtml5Yaml, + "runtime/syntax/ini.yaml": runtimeSyntaxIniYaml, + "runtime/syntax/inputrc.yaml": runtimeSyntaxInputrcYaml, + "runtime/syntax/java.yaml": runtimeSyntaxJavaYaml, + "runtime/syntax/javascript.yaml": runtimeSyntaxJavascriptYaml, + "runtime/syntax/json.yaml": runtimeSyntaxJsonYaml, + "runtime/syntax/julia.yaml": runtimeSyntaxJuliaYaml, + "runtime/syntax/keymap.yaml": runtimeSyntaxKeymapYaml, + "runtime/syntax/kickstart.yaml": runtimeSyntaxKickstartYaml, + "runtime/syntax/kotlin.yaml": runtimeSyntaxKotlinYaml, + "runtime/syntax/ledger.yaml": runtimeSyntaxLedgerYaml, + "runtime/syntax/lfe.yaml": runtimeSyntaxLfeYaml, + "runtime/syntax/lilypond.yaml": runtimeSyntaxLilypondYaml, + "runtime/syntax/lisp.yaml": runtimeSyntaxLispYaml, + "runtime/syntax/lua.yaml": runtimeSyntaxLuaYaml, + "runtime/syntax/mail.yaml": runtimeSyntaxMailYaml, + "runtime/syntax/makefile.yaml": runtimeSyntaxMakefileYaml, + "runtime/syntax/man.yaml": runtimeSyntaxManYaml, + "runtime/syntax/markdown.yaml": runtimeSyntaxMarkdownYaml, + "runtime/syntax/micro.yaml": runtimeSyntaxMicroYaml, + "runtime/syntax/mpdconf.yaml": runtimeSyntaxMpdconfYaml, + "runtime/syntax/nanorc.yaml": runtimeSyntaxNanorcYaml, + "runtime/syntax/nginx.yaml": runtimeSyntaxNginxYaml, + "runtime/syntax/nim.yaml": runtimeSyntaxNimYaml, + "runtime/syntax/objc.yaml": runtimeSyntaxObjcYaml, + "runtime/syntax/ocaml.yaml": runtimeSyntaxOcamlYaml, + "runtime/syntax/octave.yaml": runtimeSyntaxOctaveYaml, + "runtime/syntax/pascal.yaml": runtimeSyntaxPascalYaml, + "runtime/syntax/patch.yaml": runtimeSyntaxPatchYaml, + "runtime/syntax/peg.yaml": runtimeSyntaxPegYaml, + "runtime/syntax/perl.yaml": runtimeSyntaxPerlYaml, + "runtime/syntax/perl6.yaml": runtimeSyntaxPerl6Yaml, + "runtime/syntax/php.yaml": runtimeSyntaxPhpYaml, + "runtime/syntax/pkg-config.yaml": runtimeSyntaxPkgConfigYaml, + "runtime/syntax/po.yaml": runtimeSyntaxPoYaml, + "runtime/syntax/pony.yaml": runtimeSyntaxPonyYaml, + "runtime/syntax/pov.yaml": runtimeSyntaxPovYaml, + "runtime/syntax/privoxy-action.yaml": runtimeSyntaxPrivoxyActionYaml, + "runtime/syntax/privoxy-config.yaml": runtimeSyntaxPrivoxyConfigYaml, + "runtime/syntax/privoxy-filter.yaml": runtimeSyntaxPrivoxyFilterYaml, + "runtime/syntax/puppet.yaml": runtimeSyntaxPuppetYaml, + "runtime/syntax/python2.yaml": runtimeSyntaxPython2Yaml, + "runtime/syntax/python3.yaml": runtimeSyntaxPython3Yaml, + "runtime/syntax/r.yaml": runtimeSyntaxRYaml, + "runtime/syntax/reST.yaml": runtimeSyntaxRestYaml, + "runtime/syntax/rpmspec.yaml": runtimeSyntaxRpmspecYaml, + "runtime/syntax/ruby.yaml": runtimeSyntaxRubyYaml, + "runtime/syntax/rust.yaml": runtimeSyntaxRustYaml, + "runtime/syntax/scala.yaml": runtimeSyntaxScalaYaml, + "runtime/syntax/sed.yaml": runtimeSyntaxSedYaml, + "runtime/syntax/sh.yaml": runtimeSyntaxShYaml, + "runtime/syntax/sls.yaml": runtimeSyntaxSlsYaml, + "runtime/syntax/solidity.yaml": runtimeSyntaxSolidityYaml, + "runtime/syntax/sql.yaml": runtimeSyntaxSqlYaml, + "runtime/syntax/swift.yaml": runtimeSyntaxSwiftYaml, + "runtime/syntax/syntax_checker.go": runtimeSyntaxSyntax_checkerGo, + "runtime/syntax/syntax_converter.go": runtimeSyntaxSyntax_converterGo, + "runtime/syntax/systemd.yaml": runtimeSyntaxSystemdYaml, + "runtime/syntax/tcl.yaml": runtimeSyntaxTclYaml, + "runtime/syntax/tex.yaml": runtimeSyntaxTexYaml, + "runtime/syntax/toml.yaml": runtimeSyntaxTomlYaml, + "runtime/syntax/twig.yaml": runtimeSyntaxTwigYaml, + "runtime/syntax/typescript.yaml": runtimeSyntaxTypescriptYaml, + "runtime/syntax/vala.yaml": runtimeSyntaxValaYaml, + "runtime/syntax/vhdl.yaml": runtimeSyntaxVhdlYaml, + "runtime/syntax/vi.yaml": runtimeSyntaxViYaml, + "runtime/syntax/xml.yaml": runtimeSyntaxXmlYaml, + "runtime/syntax/xresources.yaml": runtimeSyntaxXresourcesYaml, + "runtime/syntax/yaml.yaml": runtimeSyntaxYamlYaml, + "runtime/syntax/yum.yaml": runtimeSyntaxYumYaml, + "runtime/syntax/zsh.yaml": runtimeSyntaxZshYaml, +} + +// AssetDir returns the file names below a certain +// directory embedded in the file by go-bindata. +// For example if you run go-bindata on data/... and data contains the +// following hierarchy: +// data/ +// foo.txt +// img/ +// a.png +// b.png +// then AssetDir("data") would return []string{"foo.txt", "img"} +// AssetDir("data/img") would return []string{"a.png", "b.png"} +// AssetDir("foo.txt") and AssetDir("notexist") would return an error +// AssetDir("") will return []string{"data"}. +func AssetDir(name string) ([]string, error) { + node := _bintree + if len(name) != 0 { + cannonicalName := strings.Replace(name, "\\", "/", -1) + pathList := strings.Split(cannonicalName, "/") + for _, p := range pathList { + node = node.Children[p] + if node == nil { + return nil, fmt.Errorf("Asset %s not found", name) + } + } + } + if node.Func != nil { + return nil, fmt.Errorf("Asset %s not found", name) + } + rv := make([]string, 0, len(node.Children)) + for childName := range node.Children { + rv = append(rv, childName) + } + return rv, nil +} + +type bintree struct { + Func func() (*asset, error) + Children map[string]*bintree +} + +var _bintree = &bintree{nil, map[string]*bintree{ + "runtime": &bintree{nil, map[string]*bintree{ + "README.md": &bintree{runtimeReadmeMd, map[string]*bintree{}}, + "colorschemes": &bintree{nil, map[string]*bintree{ + "atom-dark-tc.micro": &bintree{runtimeColorschemesAtomDarkTcMicro, map[string]*bintree{}}, + "bubblegum.micro": &bintree{runtimeColorschemesBubblegumMicro, map[string]*bintree{}}, + "cmc-16.micro": &bintree{runtimeColorschemesCmc16Micro, map[string]*bintree{}}, + "cmc-paper.micro": &bintree{runtimeColorschemesCmcPaperMicro, map[string]*bintree{}}, + "cmc-tc.micro": &bintree{runtimeColorschemesCmcTcMicro, map[string]*bintree{}}, + "darcula.micro": &bintree{runtimeColorschemesDarculaMicro, map[string]*bintree{}}, + "default.micro": &bintree{runtimeColorschemesDefaultMicro, map[string]*bintree{}}, + "geany.micro": &bintree{runtimeColorschemesGeanyMicro, map[string]*bintree{}}, + "github-tc.micro": &bintree{runtimeColorschemesGithubTcMicro, map[string]*bintree{}}, + "gruvbox-tc.micro": &bintree{runtimeColorschemesGruvboxTcMicro, map[string]*bintree{}}, + "gruvbox.micro": &bintree{runtimeColorschemesGruvboxMicro, map[string]*bintree{}}, + "in_progress": &bintree{nil, map[string]*bintree{ + "codeblocks-paper.micro": &bintree{runtimeColorschemesIn_progressCodeblocksPaperMicro, map[string]*bintree{}}, + "codeblocks.micro": &bintree{runtimeColorschemesIn_progressCodeblocksMicro, map[string]*bintree{}}, + "funky-cactus.micro": &bintree{runtimeColorschemesIn_progressFunkyCactusMicro, map[string]*bintree{}}, + "gameboy-tc.micro": &bintree{runtimeColorschemesIn_progressGameboyTcMicro, map[string]*bintree{}}, + "geany-alt-tc.micro": &bintree{runtimeColorschemesIn_progressGeanyAltTcMicro, map[string]*bintree{}}, + "github.micro": &bintree{runtimeColorschemesIn_progressGithubMicro, map[string]*bintree{}}, + "mc.micro": &bintree{runtimeColorschemesIn_progressMcMicro, map[string]*bintree{}}, + "monochrome-paper.micro": &bintree{runtimeColorschemesIn_progressMonochromePaperMicro, map[string]*bintree{}}, + "monochrome.micro": &bintree{runtimeColorschemesIn_progressMonochromeMicro, map[string]*bintree{}}, + "nano.micro": &bintree{runtimeColorschemesIn_progressNanoMicro, map[string]*bintree{}}, + "paper-tc.micro": &bintree{runtimeColorschemesIn_progressPaperTcMicro, map[string]*bintree{}}, + "paper.micro": &bintree{runtimeColorschemesIn_progressPaperMicro, map[string]*bintree{}}, + "symbian-tc.micro": &bintree{runtimeColorschemesIn_progressSymbianTcMicro, map[string]*bintree{}}, + }}, + "monokai.micro": &bintree{runtimeColorschemesMonokaiMicro, map[string]*bintree{}}, + "railscast.micro": &bintree{runtimeColorschemesRailscastMicro, map[string]*bintree{}}, + "simple.micro": &bintree{runtimeColorschemesSimpleMicro, map[string]*bintree{}}, + "solarized-tc.micro": &bintree{runtimeColorschemesSolarizedTcMicro, map[string]*bintree{}}, + "solarized.micro": &bintree{runtimeColorschemesSolarizedMicro, map[string]*bintree{}}, + "twilight.micro": &bintree{runtimeColorschemesTwilightMicro, map[string]*bintree{}}, + "zenburn.micro": &bintree{runtimeColorschemesZenburnMicro, map[string]*bintree{}}, + }}, + "help": &bintree{nil, map[string]*bintree{ + "colors.md": &bintree{runtimeHelpColorsMd, map[string]*bintree{}}, + "commands.md": &bintree{runtimeHelpCommandsMd, map[string]*bintree{}}, + "defaultkeys.md": &bintree{runtimeHelpDefaultkeysMd, map[string]*bintree{}}, + "gimmickcolors.md": &bintree{runtimeHelpGimmickcolorsMd, map[string]*bintree{}}, + "help.md": &bintree{runtimeHelpHelpMd, map[string]*bintree{}}, + "keybindings.md": &bintree{runtimeHelpKeybindingsMd, map[string]*bintree{}}, + "options.md": &bintree{runtimeHelpOptionsMd, map[string]*bintree{}}, + "plugins.md": &bintree{runtimeHelpPluginsMd, map[string]*bintree{}}, + "tutorial.md": &bintree{runtimeHelpTutorialMd, map[string]*bintree{}}, + }}, + "plugins": &bintree{nil, map[string]*bintree{ + "autoclose": &bintree{nil, map[string]*bintree{ + "autoclose.lua": &bintree{runtimePluginsAutocloseAutocloseLua, map[string]*bintree{}}, + }}, + "ftoptions": &bintree{nil, map[string]*bintree{ + "ftoptions.lua": &bintree{runtimePluginsFtoptionsFtoptionsLua, map[string]*bintree{}}, + }}, + "linter": &bintree{nil, map[string]*bintree{ + "linter.lua": &bintree{runtimePluginsLinterLinterLua, map[string]*bintree{}}, + }}, + "literate": &bintree{nil, map[string]*bintree{ + "README.md": &bintree{runtimePluginsLiterateReadmeMd, map[string]*bintree{}}, + "literate.lua": &bintree{runtimePluginsLiterateLiterateLua, map[string]*bintree{}}, + }}, + }}, + "syntax": &bintree{nil, map[string]*bintree{ + "LICENSE": &bintree{runtimeSyntaxLicense, map[string]*bintree{}}, + "PowerShell.yaml": &bintree{runtimeSyntaxPowershellYaml, map[string]*bintree{}}, + "README.md": &bintree{runtimeSyntaxReadmeMd, map[string]*bintree{}}, + "ada.yaml": &bintree{runtimeSyntaxAdaYaml, map[string]*bintree{}}, + "apacheconf.yaml": &bintree{runtimeSyntaxApacheconfYaml, map[string]*bintree{}}, + "arduino.yaml": &bintree{runtimeSyntaxArduinoYaml, map[string]*bintree{}}, + "asciidoc.yaml": &bintree{runtimeSyntaxAsciidocYaml, map[string]*bintree{}}, + "asm.yaml": &bintree{runtimeSyntaxAsmYaml, map[string]*bintree{}}, + "ats.yaml": &bintree{runtimeSyntaxAtsYaml, map[string]*bintree{}}, + "awk.yaml": &bintree{runtimeSyntaxAwkYaml, map[string]*bintree{}}, + "c++.yaml": &bintree{runtimeSyntaxCYaml, map[string]*bintree{}}, + "c.yaml": &bintree{runtimeSyntaxCYaml2, map[string]*bintree{}}, + "caddyfile.yaml": &bintree{runtimeSyntaxCaddyfileYaml, map[string]*bintree{}}, + "clojure.yaml": &bintree{runtimeSyntaxClojureYaml, map[string]*bintree{}}, + "cmake.yaml": &bintree{runtimeSyntaxCmakeYaml, map[string]*bintree{}}, + "coffeescript.yaml": &bintree{runtimeSyntaxCoffeescriptYaml, map[string]*bintree{}}, + "colortest.yaml": &bintree{runtimeSyntaxColortestYaml, map[string]*bintree{}}, + "conf.yaml": &bintree{runtimeSyntaxConfYaml, map[string]*bintree{}}, + "conky.yaml": &bintree{runtimeSyntaxConkyYaml, map[string]*bintree{}}, + "cpp.yaml": &bintree{runtimeSyntaxCppYaml, map[string]*bintree{}}, + "crontab.yaml": &bintree{runtimeSyntaxCrontabYaml, map[string]*bintree{}}, + "crystal.yaml": &bintree{runtimeSyntaxCrystalYaml, map[string]*bintree{}}, + "csharp.yaml": &bintree{runtimeSyntaxCsharpYaml, map[string]*bintree{}}, + "css.yaml": &bintree{runtimeSyntaxCssYaml, map[string]*bintree{}}, + "cython.yaml": &bintree{runtimeSyntaxCythonYaml, map[string]*bintree{}}, + "d.yaml": &bintree{runtimeSyntaxDYaml, map[string]*bintree{}}, + "dart.yaml": &bintree{runtimeSyntaxDartYaml, map[string]*bintree{}}, + "dockerfile.yaml": &bintree{runtimeSyntaxDockerfileYaml, map[string]*bintree{}}, + "dot.yaml": &bintree{runtimeSyntaxDotYaml, map[string]*bintree{}}, + "elixir.yaml": &bintree{runtimeSyntaxElixirYaml, map[string]*bintree{}}, + "erb.yaml": &bintree{runtimeSyntaxErbYaml, map[string]*bintree{}}, + "fish.yaml": &bintree{runtimeSyntaxFishYaml, map[string]*bintree{}}, + "fortran.yaml": &bintree{runtimeSyntaxFortranYaml, map[string]*bintree{}}, + "fsharp.yaml": &bintree{runtimeSyntaxFsharpYaml, map[string]*bintree{}}, + "gdscript.yaml": &bintree{runtimeSyntaxGdscriptYaml, map[string]*bintree{}}, + "gentoo-ebuild.yaml": &bintree{runtimeSyntaxGentooEbuildYaml, map[string]*bintree{}}, + "gentoo-etc-portage.yaml": &bintree{runtimeSyntaxGentooEtcPortageYaml, map[string]*bintree{}}, + "git-commit.yaml": &bintree{runtimeSyntaxGitCommitYaml, map[string]*bintree{}}, + "git-config.yaml": &bintree{runtimeSyntaxGitConfigYaml, map[string]*bintree{}}, + "git-rebase-todo.yaml": &bintree{runtimeSyntaxGitRebaseTodoYaml, map[string]*bintree{}}, + "glsl.yaml": &bintree{runtimeSyntaxGlslYaml, map[string]*bintree{}}, + "go.yaml": &bintree{runtimeSyntaxGoYaml, map[string]*bintree{}}, + "golo.yaml": &bintree{runtimeSyntaxGoloYaml, map[string]*bintree{}}, + "groff.yaml": &bintree{runtimeSyntaxGroffYaml, map[string]*bintree{}}, + "haml.yaml": &bintree{runtimeSyntaxHamlYaml, map[string]*bintree{}}, + "haskell.yaml": &bintree{runtimeSyntaxHaskellYaml, map[string]*bintree{}}, + "html.yaml": &bintree{runtimeSyntaxHtmlYaml, map[string]*bintree{}}, + "html4.yaml": &bintree{runtimeSyntaxHtml4Yaml, map[string]*bintree{}}, + "html5.yaml": &bintree{runtimeSyntaxHtml5Yaml, map[string]*bintree{}}, + "ini.yaml": &bintree{runtimeSyntaxIniYaml, map[string]*bintree{}}, + "inputrc.yaml": &bintree{runtimeSyntaxInputrcYaml, map[string]*bintree{}}, + "java.yaml": &bintree{runtimeSyntaxJavaYaml, map[string]*bintree{}}, + "javascript.yaml": &bintree{runtimeSyntaxJavascriptYaml, map[string]*bintree{}}, + "json.yaml": &bintree{runtimeSyntaxJsonYaml, map[string]*bintree{}}, + "julia.yaml": &bintree{runtimeSyntaxJuliaYaml, map[string]*bintree{}}, + "keymap.yaml": &bintree{runtimeSyntaxKeymapYaml, map[string]*bintree{}}, + "kickstart.yaml": &bintree{runtimeSyntaxKickstartYaml, map[string]*bintree{}}, + "kotlin.yaml": &bintree{runtimeSyntaxKotlinYaml, map[string]*bintree{}}, + "ledger.yaml": &bintree{runtimeSyntaxLedgerYaml, map[string]*bintree{}}, + "lfe.yaml": &bintree{runtimeSyntaxLfeYaml, map[string]*bintree{}}, + "lilypond.yaml": &bintree{runtimeSyntaxLilypondYaml, map[string]*bintree{}}, + "lisp.yaml": &bintree{runtimeSyntaxLispYaml, map[string]*bintree{}}, + "lua.yaml": &bintree{runtimeSyntaxLuaYaml, map[string]*bintree{}}, + "mail.yaml": &bintree{runtimeSyntaxMailYaml, map[string]*bintree{}}, + "makefile.yaml": &bintree{runtimeSyntaxMakefileYaml, map[string]*bintree{}}, + "man.yaml": &bintree{runtimeSyntaxManYaml, map[string]*bintree{}}, + "markdown.yaml": &bintree{runtimeSyntaxMarkdownYaml, map[string]*bintree{}}, + "micro.yaml": &bintree{runtimeSyntaxMicroYaml, map[string]*bintree{}}, + "mpdconf.yaml": &bintree{runtimeSyntaxMpdconfYaml, map[string]*bintree{}}, + "nanorc.yaml": &bintree{runtimeSyntaxNanorcYaml, map[string]*bintree{}}, + "nginx.yaml": &bintree{runtimeSyntaxNginxYaml, map[string]*bintree{}}, + "nim.yaml": &bintree{runtimeSyntaxNimYaml, map[string]*bintree{}}, + "objc.yaml": &bintree{runtimeSyntaxObjcYaml, map[string]*bintree{}}, + "ocaml.yaml": &bintree{runtimeSyntaxOcamlYaml, map[string]*bintree{}}, + "octave.yaml": &bintree{runtimeSyntaxOctaveYaml, map[string]*bintree{}}, + "pascal.yaml": &bintree{runtimeSyntaxPascalYaml, map[string]*bintree{}}, + "patch.yaml": &bintree{runtimeSyntaxPatchYaml, map[string]*bintree{}}, + "peg.yaml": &bintree{runtimeSyntaxPegYaml, map[string]*bintree{}}, + "perl.yaml": &bintree{runtimeSyntaxPerlYaml, map[string]*bintree{}}, + "perl6.yaml": &bintree{runtimeSyntaxPerl6Yaml, map[string]*bintree{}}, + "php.yaml": &bintree{runtimeSyntaxPhpYaml, map[string]*bintree{}}, + "pkg-config.yaml": &bintree{runtimeSyntaxPkgConfigYaml, map[string]*bintree{}}, + "po.yaml": &bintree{runtimeSyntaxPoYaml, map[string]*bintree{}}, + "pony.yaml": &bintree{runtimeSyntaxPonyYaml, map[string]*bintree{}}, + "pov.yaml": &bintree{runtimeSyntaxPovYaml, map[string]*bintree{}}, + "privoxy-action.yaml": &bintree{runtimeSyntaxPrivoxyActionYaml, map[string]*bintree{}}, + "privoxy-config.yaml": &bintree{runtimeSyntaxPrivoxyConfigYaml, map[string]*bintree{}}, + "privoxy-filter.yaml": &bintree{runtimeSyntaxPrivoxyFilterYaml, map[string]*bintree{}}, + "puppet.yaml": &bintree{runtimeSyntaxPuppetYaml, map[string]*bintree{}}, + "python2.yaml": &bintree{runtimeSyntaxPython2Yaml, map[string]*bintree{}}, + "python3.yaml": &bintree{runtimeSyntaxPython3Yaml, map[string]*bintree{}}, + "r.yaml": &bintree{runtimeSyntaxRYaml, map[string]*bintree{}}, + "reST.yaml": &bintree{runtimeSyntaxRestYaml, map[string]*bintree{}}, + "rpmspec.yaml": &bintree{runtimeSyntaxRpmspecYaml, map[string]*bintree{}}, + "ruby.yaml": &bintree{runtimeSyntaxRubyYaml, map[string]*bintree{}}, + "rust.yaml": &bintree{runtimeSyntaxRustYaml, map[string]*bintree{}}, + "scala.yaml": &bintree{runtimeSyntaxScalaYaml, map[string]*bintree{}}, + "sed.yaml": &bintree{runtimeSyntaxSedYaml, map[string]*bintree{}}, + "sh.yaml": &bintree{runtimeSyntaxShYaml, map[string]*bintree{}}, + "sls.yaml": &bintree{runtimeSyntaxSlsYaml, map[string]*bintree{}}, + "solidity.yaml": &bintree{runtimeSyntaxSolidityYaml, map[string]*bintree{}}, + "sql.yaml": &bintree{runtimeSyntaxSqlYaml, map[string]*bintree{}}, + "swift.yaml": &bintree{runtimeSyntaxSwiftYaml, map[string]*bintree{}}, + "syntax_checker.go": &bintree{runtimeSyntaxSyntax_checkerGo, map[string]*bintree{}}, + "syntax_converter.go": &bintree{runtimeSyntaxSyntax_converterGo, map[string]*bintree{}}, + "systemd.yaml": &bintree{runtimeSyntaxSystemdYaml, map[string]*bintree{}}, + "tcl.yaml": &bintree{runtimeSyntaxTclYaml, map[string]*bintree{}}, + "tex.yaml": &bintree{runtimeSyntaxTexYaml, map[string]*bintree{}}, + "toml.yaml": &bintree{runtimeSyntaxTomlYaml, map[string]*bintree{}}, + "twig.yaml": &bintree{runtimeSyntaxTwigYaml, map[string]*bintree{}}, + "typescript.yaml": &bintree{runtimeSyntaxTypescriptYaml, map[string]*bintree{}}, + "vala.yaml": &bintree{runtimeSyntaxValaYaml, map[string]*bintree{}}, + "vhdl.yaml": &bintree{runtimeSyntaxVhdlYaml, map[string]*bintree{}}, + "vi.yaml": &bintree{runtimeSyntaxViYaml, map[string]*bintree{}}, + "xml.yaml": &bintree{runtimeSyntaxXmlYaml, map[string]*bintree{}}, + "xresources.yaml": &bintree{runtimeSyntaxXresourcesYaml, map[string]*bintree{}}, + "yaml.yaml": &bintree{runtimeSyntaxYamlYaml, map[string]*bintree{}}, + "yum.yaml": &bintree{runtimeSyntaxYumYaml, map[string]*bintree{}}, + "zsh.yaml": &bintree{runtimeSyntaxZshYaml, map[string]*bintree{}}, + }}, + }}, +}} + +// RestoreAsset restores an asset under the given directory +func RestoreAsset(dir, name string) error { + data, err := Asset(name) + if err != nil { + return err + } + info, err := AssetInfo(name) + if err != nil { + return err + } + err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755)) + if err != nil { + return err + } + err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + if err != nil { + return err + } + err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) + if err != nil { + return err + } + return nil +} + +// RestoreAssets restores an asset under the given directory recursively +func RestoreAssets(dir, name string) error { + children, err := AssetDir(name) + // File + if err != nil { + return RestoreAsset(dir, name) + } + // Dir + for _, child := range children { + err = RestoreAssets(dir, filepath.Join(name, child)) + if err != nil { + return err + } + } + return nil +} + +func _filePath(dir, name string) string { + cannonicalName := strings.Replace(name, "\\", "/", -1) + return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) +} diff --git a/cmd/micro/settings.go b/cmd/micro/config/settings.go similarity index 92% rename from cmd/micro/settings.go rename to cmd/micro/config/settings.go index e4ac6344..2536b857 100644 --- a/cmd/micro/settings.go +++ b/cmd/micro/config/settings.go @@ -1,4 +1,4 @@ -package main +package config import ( "encoding/json" @@ -15,7 +15,7 @@ import ( type optionValidator func(string, interface{}) error // The options that the user can set -var globalSettings map[string]interface{} +var GlobalSettings map[string]interface{} // This is the raw parsed json var parsedSettings map[string]interface{} @@ -31,7 +31,7 @@ var optionValidators = map[string]optionValidator{ } func ReadSettings() error { - filename := configDir + "/settings.json" + filename := ConfigDir + "/settings.json" if _, e := os.Stat(filename); e == nil { input, err := ioutil.ReadFile(filename) if err != nil { @@ -51,26 +51,26 @@ func ReadSettings() error { // InitGlobalSettings initializes the options map and sets all options to their default values // Must be called after ReadSettings func InitGlobalSettings() { - globalSettings = DefaultGlobalSettings() + GlobalSettings = DefaultGlobalSettings() for k, v := range parsedSettings { if !strings.HasPrefix(reflect.TypeOf(v).String(), "map") { - globalSettings[k] = v + GlobalSettings[k] = v } } } // InitLocalSettings scans the json in settings.json and sets the options locally based -// on whether the buffer matches the glob +// on whether the filetype or path matches ft or glob local settings // Must be called after ReadSettings -func InitLocalSettings(buf *Buffer) error { +func InitLocalSettings(settings map[string]interface{}, path string) error { var parseError error for k, v := range parsedSettings { if strings.HasPrefix(reflect.TypeOf(v).String(), "map") { if strings.HasPrefix(k, "ft:") { - if buf.Settings["filetype"].(string) == k[3:] { + if settings["filetype"].(string) == k[3:] { for k1, v1 := range v.(map[string]interface{}) { - buf.Settings[k1] = v1 + settings[k1] = v1 } } } else { @@ -80,9 +80,9 @@ func InitLocalSettings(buf *Buffer) error { continue } - if g.MatchString(buf.Path) { + if g.MatchString(path) { for k1, v1 := range v.(map[string]interface{}) { - buf.Settings[k1] = v1 + settings[k1] = v1 } } } @@ -94,8 +94,8 @@ func InitLocalSettings(buf *Buffer) error { // WriteSettings writes the settings to the specified filename as JSON func WriteSettings(filename string) error { var err error - if _, e := os.Stat(configDir); e == nil { - for k, v := range globalSettings { + if _, e := os.Stat(ConfigDir); e == nil { + for k, v := range GlobalSettings { parsedSettings[k] = v } @@ -107,8 +107,8 @@ func WriteSettings(filename string) error { // AddOption creates a new option. This is meant to be called by plugins to add options. func AddOption(name string, value interface{}) error { - globalSettings[name] = value - err := WriteSettings(configDir + "/settings.json") + GlobalSettings[name] = value + err := WriteSettings(ConfigDir + "/settings.json") if err != nil { return errors.New("Error writing settings.json file: " + err.Error()) } @@ -117,13 +117,13 @@ func AddOption(name string, value interface{}) error { // GetGlobalOption returns the global value of the given option func GetGlobalOption(name string) interface{} { - return globalSettings[name] + return GlobalSettings[name] } // GetLocalOption returns the local value of the given option -func GetLocalOption(name string, buf *Buffer) interface{} { - return buf.Settings[name] -} +// func GetLocalOption(name string, buf *Buffer) interface{} { +// return buf.Settings[name] +// } // TODO: get option for current buffer // GetOption returns the value of the given option @@ -203,7 +203,7 @@ func DefaultLocalSettings() map[string]interface{} { // is local only it will set the local version // Use setlocal to force an option to be set locally // func SetOption(option, value string) error { -// if _, ok := globalSettings[option]; !ok { +// if _, ok := GlobalSettings[option]; !ok { // if _, ok := CurView().Buf.Settings[option]; !ok { // return errors.New("Invalid option") // } @@ -213,7 +213,7 @@ func DefaultLocalSettings() map[string]interface{} { // // var nativeValue interface{} // -// kind := reflect.TypeOf(globalSettings[option]).Kind() +// kind := reflect.TypeOf(GlobalSettings[option]).Kind() // if kind == reflect.Bool { // b, err := ParseBool(value) // if err != nil { @@ -236,7 +236,7 @@ func DefaultLocalSettings() map[string]interface{} { // return err // } // -// globalSettings[option] = nativeValue +// GlobalSettings[option] = nativeValue // // if option == "colorscheme" { // // LoadSyntaxFiles() @@ -372,7 +372,7 @@ func DefaultLocalSettings() map[string]interface{} { // // // SetOptionAndSettings sets the given option and saves the option setting to the settings config file // func SetOptionAndSettings(option, value string) { -// filename := configDir + "/settings.json" +// filename := ConfigDir + "/settings.json" // // err := SetOption(option, value) // diff --git a/cmd/micro/cursor_test.go b/cmd/micro/cursor_test.go deleted file mode 100644 index 06ab7d0f..00000000 --- a/cmd/micro/cursor_test.go +++ /dev/null @@ -1 +0,0 @@ -package main diff --git a/cmd/micro/debug.go b/cmd/micro/debug.go index 494b0e92..1751de13 100644 --- a/cmd/micro/debug.go +++ b/cmd/micro/debug.go @@ -5,12 +5,15 @@ import ( "os" ) +// NullWriter simply sends writes into the void type NullWriter struct{} +// Write is empty func (NullWriter) Write(data []byte) (n int, err error) { return 0, nil } +// InitLog sets up the debug log system for micro if it has been enabled by compile-time variables func InitLog() { if Debug == "ON" { f, err := os.OpenFile("log.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666) @@ -22,6 +25,5 @@ func InitLog() { log.Println("Micro started") } else { log.SetOutput(NullWriter{}) - log.Println("Micro started") } } diff --git a/cmd/micro/infobar.go b/cmd/micro/infobar.go new file mode 100644 index 00000000..4e231646 --- /dev/null +++ b/cmd/micro/infobar.go @@ -0,0 +1,82 @@ +package main + +import ( + "fmt" + "strings" + + runewidth "github.com/mattn/go-runewidth" + "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/tcell" +) + +type InfoBar struct { + *buffer.Buffer + + hasPrompt bool + hasMessage bool + + message string + // style to use when drawing the message + style tcell.Style + + width int + y int + + // This map stores the history for all the different kinds of uses Prompt has + // It's a map of history type -> history array + history map[string][]string + historyNum int + + // Is the current message a message from the gutter + gutterMessage bool +} + +func NewInfoBar() *InfoBar { + ib := new(InfoBar) + ib.style = config.DefStyle + ib.history = make(map[string][]string) + + ib.Buffer = buffer.NewBufferFromString("", "infobar") + ib.Type = buffer.BTScratch + + ib.width, ib.y = screen.Screen.Size() + + return ib +} + +func (i *InfoBar) Clear() { + for x := 0; x < i.width; x++ { + screen.Screen.SetContent(x, i.y, ' ', nil, config.DefStyle) + } +} + +func (i *InfoBar) Display() { + x := 0 + if i.hasPrompt || config.GlobalSettings["infobar"].(bool) { + display := i.message + strings.TrimSpace(string(i.Bytes())) + for _, c := range display { + screen.Screen.SetContent(x, i.y, c, nil, i.style) + x += runewidth.RuneWidth(c) + } + } +} + +// Message sends a message to the user +func (i *InfoBar) Message(msg ...interface{}) { + displayMessage := fmt.Sprint(msg...) + // only display a new message if there isn't an active prompt + // this is to prevent overwriting an existing prompt to the user + if i.hasPrompt == false { + // if there is no active prompt then style and display the message as normal + i.message = displayMessage + i.style = config.DefStyle + + if _, ok := config.Colorscheme["message"]; ok { + i.style = config.Colorscheme["message"] + } + + i.hasMessage = true + } +} diff --git a/cmd/micro/lua.go b/cmd/micro/lua/lua.go similarity index 99% rename from cmd/micro/lua.go rename to cmd/micro/lua/lua.go index 0425efa2..a87f4880 100644 --- a/cmd/micro/lua.go +++ b/cmd/micro/lua/lua.go @@ -1,4 +1,4 @@ -package main +package lua import ( "errors" diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index bd01dda1..c3746759 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -4,29 +4,21 @@ import ( "flag" "fmt" "os" - "time" "github.com/go-errors/errors" - homedir "github.com/mitchellh/go-homedir" - "github.com/zyedidia/micro/cmd/micro/terminfo" + "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/cmd/micro/util" "github.com/zyedidia/tcell" ) const ( doubleClickThreshold = 400 // How many milliseconds to wait before a second click is not a double click - undoThreshold = 500 // If two events are less than n milliseconds apart, undo both of them autosaveTime = 8 // Number of seconds to wait before autosaving ) var ( - // The main screen - screen tcell.Screen - - // Where the user's configuration is - // This should be $XDG_CONFIG_HOME/micro - // If $XDG_CONFIG_HOME is not set, it is ~/.config/micro - configDir string - // Version is the version number or commit hash // These variables should be set by the linker when compiling Version = "0.0.0-unknown" @@ -51,104 +43,6 @@ var ( flagOptions = flag.Bool("options", false, "Show all option help") ) -// InitConfigDir finds the configuration directory for micro according to the XDG spec. -// If no directory is found, it creates one. -func InitConfigDir() { - xdgHome := os.Getenv("XDG_CONFIG_HOME") - if xdgHome == "" { - // The user has not set $XDG_CONFIG_HOME so we should act like it was set to ~/.config - home, err := homedir.Dir() - if err != nil { - TermMessage("Error finding your home directory\nCan't load config files") - return - } - xdgHome = home + "/.config" - } - configDir = xdgHome + "/micro" - - if len(*flagConfigDir) > 0 { - if _, err := os.Stat(*flagConfigDir); os.IsNotExist(err) { - TermMessage("Error: " + *flagConfigDir + " does not exist. Defaulting to " + configDir + ".") - } else { - configDir = *flagConfigDir - return - } - } - - if _, err := os.Stat(xdgHome); os.IsNotExist(err) { - // If the xdgHome doesn't exist we should create it - err = os.Mkdir(xdgHome, os.ModePerm) - if err != nil { - TermMessage("Error creating XDG_CONFIG_HOME directory: " + err.Error()) - } - } - - if _, err := os.Stat(configDir); os.IsNotExist(err) { - // If the micro specific config directory doesn't exist we should create that too - err = os.Mkdir(configDir, os.ModePerm) - if err != nil { - TermMessage("Error creating configuration directory: " + err.Error()) - } - } -} - -// InitScreen creates and initializes the tcell screen -func InitScreen() { - // Should we enable true color? - truecolor := os.Getenv("MICRO_TRUECOLOR") == "1" - - tcelldb := os.Getenv("TCELLDB") - os.Setenv("TCELLDB", configDir+"/.tcelldb") - - // In order to enable true color, we have to set the TERM to `xterm-truecolor` when - // initializing tcell, but after that, we can set the TERM back to whatever it was - oldTerm := os.Getenv("TERM") - if truecolor { - os.Setenv("TERM", "xterm-truecolor") - } - - // Initilize tcell - var err error - screen, err = tcell.NewScreen() - if err != nil { - if err == tcell.ErrTermNotFound { - err = terminfo.WriteDB(configDir + "/.tcelldb") - if err != nil { - fmt.Println(err) - fmt.Println("Fatal: Micro could not create tcelldb") - os.Exit(1) - } - screen, err = tcell.NewScreen() - if err != nil { - fmt.Println(err) - fmt.Println("Fatal: Micro could not initialize a screen.") - os.Exit(1) - } - } else { - fmt.Println(err) - fmt.Println("Fatal: Micro could not initialize a screen.") - os.Exit(1) - } - } - if err = screen.Init(); err != nil { - fmt.Println(err) - os.Exit(1) - } - - // Now we can put the TERM back to what it was before - if truecolor { - os.Setenv("TERM", oldTerm) - } - - if GetGlobalOption("mouse").(bool) { - screen.EnableMouse() - } - - os.Setenv("TCELLDB", tcelldb) - - // screen.SetStyle(defStyle) -} - func InitFlags() { flag.Usage = func() { fmt.Println("Usage: micro [OPTIONS] [FILE]...") @@ -172,7 +66,7 @@ func InitFlags() { optionFlags := make(map[string]*string) - for k, v := range DefaultGlobalSettings() { + for k, v := range config.DefaultGlobalSettings() { optionFlags[k] = flag.String(k, "", fmt.Sprintf("The %s option. Default value: '%v'", k, v)) } @@ -188,7 +82,7 @@ func InitFlags() { if *flagOptions { // If -options was passed - for k, v := range DefaultGlobalSettings() { + for k, v := range config.DefaultGlobalSettings() { fmt.Printf("-%s value\n", k) fmt.Printf(" \tDefault value: '%v'\n", v) } @@ -201,26 +95,30 @@ func main() { InitLog() InitFlags() - InitConfigDir() - InitRuntimeFiles() - err = ReadSettings() + err = config.InitConfigDir(*flagConfigDir) if err != nil { - TermMessage(err) + util.TermMessage(err) } - InitGlobalSettings() - err = InitColorscheme() + config.InitRuntimeFiles() + err = config.ReadSettings() if err != nil { - TermMessage(err) + util.TermMessage(err) + } + config.InitGlobalSettings() + InitBindings() + err = config.InitColorscheme() + if err != nil { + util.TermMessage(err) } - InitScreen() + screen.Init() // If we have an error, we can exit cleanly and not completely // mess up the terminal being worked in // In other words we need to shut down tcell before the program crashes defer func() { if err := recover(); err != nil { - screen.Fini() + screen.Screen.Fini() fmt.Println("Micro encountered an error:", err) // Print the stack trace too fmt.Print(errors.Wrap(err, 2).ErrorStack()) @@ -228,26 +126,46 @@ func main() { } }() - b, err := NewBufferFromFile(os.Args[1]) + TryBindKey("Ctrl-z", "Undo", true) + + b, err := buffer.NewBufferFromFile(os.Args[1]) if err != nil { - TermMessage(err) + util.TermMessage(err) } - width, height := screen.Size() + width, height := screen.Screen.Size() + w := NewWindow(0, 0, width, height-1, b) - w := NewWindow(0, 0, width/2, height/2, b) + a := NewBufActionHandler(b, w) - for i := 0; i < 5; i++ { - screen.Clear() + // Here is the event loop which runs in a separate thread + go func() { + events = make(chan tcell.Event) + for { + // TODO: fix race condition with screen.Screen = nil + events <- screen.Screen.PollEvent() + } + }() + + for { + // Display everything + w.Clear() w.DisplayBuffer() w.DisplayStatusLine() - screen.Show() - time.Sleep(200 * time.Millisecond) - w.StartLine++ + screen.Screen.Show() + + var event tcell.Event + + // Check for new events + select { + case event = <-events: + } + + if event != nil { + a.HandleEvent(event) + } } - // time.Sleep(2 * time.Second) - - screen.Fini() + screen.Screen.Fini() } diff --git a/cmd/micro/runtime.go b/cmd/micro/runtime.go deleted file mode 100644 index 94741c4e..00000000 --- a/cmd/micro/runtime.go +++ /dev/null @@ -1,4119 +0,0 @@ -// Code generated by go-bindata. -// sources: -// runtime/README.md -// runtime/colorschemes/atom-dark-tc.micro -// runtime/colorschemes/bubblegum.micro -// runtime/colorschemes/cmc-16.micro -// runtime/colorschemes/cmc-paper.micro -// runtime/colorschemes/cmc-tc.micro -// runtime/colorschemes/darcula.micro -// runtime/colorschemes/default.micro -// runtime/colorschemes/geany.micro -// runtime/colorschemes/github-tc.micro -// runtime/colorschemes/gruvbox-tc.micro -// runtime/colorschemes/gruvbox.micro -// runtime/colorschemes/in_progress/codeblocks-paper.micro -// runtime/colorschemes/in_progress/codeblocks.micro -// runtime/colorschemes/in_progress/funky-cactus.micro -// runtime/colorschemes/in_progress/gameboy-tc.micro -// runtime/colorschemes/in_progress/geany-alt-tc.micro -// runtime/colorschemes/in_progress/github.micro -// runtime/colorschemes/in_progress/mc.micro -// runtime/colorschemes/in_progress/monochrome-paper.micro -// runtime/colorschemes/in_progress/monochrome.micro -// runtime/colorschemes/in_progress/nano.micro -// runtime/colorschemes/in_progress/paper-tc.micro -// runtime/colorschemes/in_progress/paper.micro -// runtime/colorschemes/in_progress/symbian-tc.micro -// runtime/colorschemes/material-tc.micro -// runtime/colorschemes/monokai.micro -// runtime/colorschemes/railscast.micro -// runtime/colorschemes/simple.micro -// runtime/colorschemes/solarized-tc.micro -// runtime/colorschemes/solarized.micro -// runtime/colorschemes/twilight.micro -// runtime/colorschemes/zenburn.micro -// runtime/help/colors.md -// runtime/help/commands.md -// runtime/help/defaultkeys.md -// runtime/help/gimmickcolors.md -// runtime/help/help.md -// runtime/help/keybindings.md -// runtime/help/options.md -// runtime/help/plugins.md -// runtime/help/tutorial.md -// runtime/plugins/autoclose/autoclose.lua -// runtime/plugins/ftoptions/ftoptions.lua -// runtime/plugins/linter/linter.lua -// runtime/plugins/literate/README.md -// runtime/plugins/literate/literate.lua -// runtime/syntax/LICENSE -// runtime/syntax/PowerShell.yaml -// runtime/syntax/README.md -// runtime/syntax/ada.yaml -// runtime/syntax/apacheconf.yaml -// runtime/syntax/arduino.yaml -// runtime/syntax/asciidoc.yaml -// runtime/syntax/asm.yaml -// runtime/syntax/ats.yaml -// runtime/syntax/awk.yaml -// runtime/syntax/c++.yaml -// runtime/syntax/c.yaml -// runtime/syntax/caddyfile.yaml -// runtime/syntax/clojure.yaml -// runtime/syntax/cmake.yaml -// runtime/syntax/coffeescript.yaml -// runtime/syntax/colortest.yaml -// runtime/syntax/conf.yaml -// runtime/syntax/conky.yaml -// runtime/syntax/cpp.yaml -// runtime/syntax/crontab.yaml -// runtime/syntax/crystal.yaml -// runtime/syntax/csharp.yaml -// runtime/syntax/css.yaml -// runtime/syntax/cython.yaml -// runtime/syntax/d.yaml -// runtime/syntax/dart.yaml -// runtime/syntax/dockerfile.yaml -// runtime/syntax/dot.yaml -// runtime/syntax/elixir.yaml -// runtime/syntax/erb.yaml -// runtime/syntax/erlang.yaml -// runtime/syntax/fish.yaml -// runtime/syntax/fortran.yaml -// runtime/syntax/fsharp.yaml -// runtime/syntax/gdscript.yaml -// runtime/syntax/gentoo-ebuild.yaml -// runtime/syntax/gentoo-etc-portage.yaml -// runtime/syntax/git-commit.yaml -// runtime/syntax/git-config.yaml -// runtime/syntax/git-rebase-todo.yaml -// runtime/syntax/glsl.yaml -// runtime/syntax/go.yaml -// runtime/syntax/golo.yaml -// runtime/syntax/graphql.yaml -// runtime/syntax/groff.yaml -// runtime/syntax/haml.yaml -// runtime/syntax/haskell.yaml -// runtime/syntax/html.yaml -// runtime/syntax/html4.yaml -// runtime/syntax/html5.yaml -// runtime/syntax/ini.yaml -// runtime/syntax/inputrc.yaml -// runtime/syntax/java.yaml -// runtime/syntax/javascript.yaml -// runtime/syntax/json.yaml -// runtime/syntax/julia.yaml -// runtime/syntax/keymap.yaml -// runtime/syntax/kickstart.yaml -// runtime/syntax/kotlin.yaml -// runtime/syntax/ledger.yaml -// runtime/syntax/lfe.yaml -// runtime/syntax/lilypond.yaml -// runtime/syntax/lisp.yaml -// runtime/syntax/lua.yaml -// runtime/syntax/mail.yaml -// runtime/syntax/makefile.yaml -// runtime/syntax/man.yaml -// runtime/syntax/markdown.yaml -// runtime/syntax/micro.yaml -// runtime/syntax/mpdconf.yaml -// runtime/syntax/nanorc.yaml -// runtime/syntax/nginx.yaml -// runtime/syntax/nim.yaml -// runtime/syntax/objc.yaml -// runtime/syntax/ocaml.yaml -// runtime/syntax/octave.yaml -// runtime/syntax/pascal.yaml -// runtime/syntax/patch.yaml -// runtime/syntax/peg.yaml -// runtime/syntax/perl.yaml -// runtime/syntax/perl6.yaml -// runtime/syntax/php.yaml -// runtime/syntax/pkg-config.yaml -// runtime/syntax/po.yaml -// runtime/syntax/pony.yaml -// runtime/syntax/pov.yaml -// runtime/syntax/privoxy-action.yaml -// runtime/syntax/privoxy-config.yaml -// runtime/syntax/privoxy-filter.yaml -// runtime/syntax/puppet.yaml -// runtime/syntax/python2.yaml -// runtime/syntax/python3.yaml -// runtime/syntax/r.yaml -// runtime/syntax/reST.yaml -// runtime/syntax/rpmspec.yaml -// runtime/syntax/ruby.yaml -// runtime/syntax/rust.yaml -// runtime/syntax/scala.yaml -// runtime/syntax/sed.yaml -// runtime/syntax/sh.yaml -// runtime/syntax/sls.yaml -// runtime/syntax/solidity.yaml -// runtime/syntax/sql.yaml -// runtime/syntax/stata.yaml -// runtime/syntax/swift.yaml -// runtime/syntax/syntax_checker.go -// runtime/syntax/syntax_converter.go -// runtime/syntax/systemd.yaml -// runtime/syntax/tcl.yaml -// runtime/syntax/tex.yaml -// runtime/syntax/toml.yaml -// runtime/syntax/twig.yaml -// runtime/syntax/typescript.yaml -// runtime/syntax/vala.yaml -// runtime/syntax/vhdl.yaml -// runtime/syntax/vi.yaml -// runtime/syntax/xml.yaml -// runtime/syntax/xresources.yaml -// runtime/syntax/yaml.yaml -// runtime/syntax/yum.yaml -// runtime/syntax/zsh.yaml -// DO NOT EDIT! - -package main - -import ( - "bytes" - "compress/gzip" - "fmt" - "io" - "io/ioutil" - "os" - "path/filepath" - "strings" - "time" -) - -func bindataRead(data []byte, name string) ([]byte, error) { - gz, err := gzip.NewReader(bytes.NewBuffer(data)) - if err != nil { - return nil, fmt.Errorf("Read %q: %v", name, err) - } - - var buf bytes.Buffer - _, err = io.Copy(&buf, gz) - clErr := gz.Close() - - if err != nil { - return nil, fmt.Errorf("Read %q: %v", name, err) - } - if clErr != nil { - return nil, err - } - - return buf.Bytes(), nil -} - -type asset struct { - bytes []byte - info os.FileInfo -} - -type bindataFileInfo struct { - name string - size int64 - mode os.FileMode - modTime time.Time -} - -func (fi bindataFileInfo) Name() string { - return fi.name -} -func (fi bindataFileInfo) Size() int64 { - return fi.size -} -func (fi bindataFileInfo) Mode() os.FileMode { - return fi.mode -} -func (fi bindataFileInfo) ModTime() time.Time { - return fi.modTime -} -func (fi bindataFileInfo) IsDir() bool { - return false -} -func (fi bindataFileInfo) Sys() interface{} { - return nil -} - -var _runtimeReadmeMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8f\xbd\x4e\xc5\x30\x0c\x46\xf7\x3e\xc5\x27\xb1\x5e\xb5\x8f\x81\x18\x58\x10\x0f\xd0\xfc\xb8\xd4\xdc\x24\xae\x1c\x87\x92\x85\x67\x47\x6d\x17\x24\xee\x6a\xfb\x9c\x23\x3f\xe1\xad\x15\xe3\x4c\x58\x38\x51\xc5\x22\x8a\x57\x0e\x2a\xc3\xf0\xbe\x72\x45\x64\xa5\x60\xa2\x1d\x3b\xa7\x04\x4f\xa0\xec\x29\x46\x8a\xe0\x02\x5b\x09\xcf\x02\xcf\xc5\x69\x3f\xd9\x4d\xd4\x9c\xe7\xc4\xd6\x6f\xf0\xcd\xc0\x86\xec\x3a\x3e\x5b\x35\xb8\x8a\x9d\x2e\xcb\x76\xac\x0a\xe6\x9f\x69\x0c\x52\x16\xfe\x98\xf2\x51\x9d\x47\xbc\x2c\xe8\xd2\xb0\x4b\x4b\x11\x89\xef\x04\x13\x64\x77\xa7\x63\xac\x90\xbd\x20\x48\x12\xad\x61\xa5\x4c\x75\x70\x25\xa2\xf6\x62\xee\xfb\x7a\xe1\x76\xe2\xc1\x95\xb3\x61\x2b\xe5\x47\xa1\xe9\xaf\x63\xc6\x21\xf9\x77\x72\x59\x67\x28\xd5\x8d\x82\xf1\x17\xa5\x3e\x0e\xc3\x6f\x00\x00\x00\xff\xff\x99\x17\xe0\x13\x33\x01\x00\x00") - -func runtimeReadmeMdBytes() ([]byte, error) { - return bindataRead( - _runtimeReadmeMd, - "runtime/README.md", - ) -} - -func runtimeReadmeMd() (*asset, error) { - bytes, err := runtimeReadmeMdBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/README.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesAtomDarkTcMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x93\x51\x6f\xdb\x20\x14\x85\xdf\xf3\x2b\x10\xbc\x6c\x52\x12\x35\x38\x26\xce\x63\xeb\xc0\xe3\xb4\xbf\x80\xe1\xb6\x43\xc5\x10\x5d\x83\xb6\xfe\xfb\x89\xd4\xdb\x9a\x15\x5b\xbc\x20\xf9\xe3\x9c\xab\x73\x8f\x4d\xf4\x11\x77\xde\x85\x57\x62\xe1\x59\x67\x9f\x08\x65\x7d\xdb\x77\xbd\xd8\xb2\xc3\xe5\xa0\xf8\x81\x6e\x3e\x40\x26\x8e\x23\x84\x02\x9d\xfa\x72\xaa\x90\xb3\x10\x92\x7b\x76\x80\x84\x32\x75\x96\xf2\xdc\x2d\x88\x85\x29\xe9\x9b\x9a\x52\xa7\x46\x5d\x56\xa9\xfd\x94\xd0\x85\x17\x42\xd9\x63\xa7\x94\x78\xa8\xc2\x53\xd2\x09\xe6\x09\xcf\xa2\x7f\x52\xb2\x8e\xbd\x8d\x43\xf4\xeb\xcc\x15\xe1\x8a\xd1\x10\xca\x04\x7f\x3a\x2c\x40\xe9\xed\x0a\x25\x31\xd1\xb7\x4b\x56\x57\x30\x4e\x17\xaf\x47\x21\x39\xaf\x43\x39\x58\x40\xef\x02\x58\x42\xd9\xa5\x69\x44\xc7\xab\x1c\x20\x46\x24\x74\x88\xde\x12\xa6\xd4\xf1\x78\x3c\xd6\xc7\x8a\x36\xfe\xc3\xba\x6e\x01\x2b\x69\xe5\xa9\xf8\x12\x3a\x7f\xdf\xce\xdb\xbf\x97\xd3\xc3\xa0\x71\x9d\x71\xa1\x6c\x7d\x67\x7e\xdc\xc0\xf6\xa1\x9c\xaa\x69\xb1\xdb\x85\x3c\x0e\xb7\x7a\x88\x56\x74\x42\x6c\x19\x6f\x78\xcb\xef\x15\x4d\x46\x2c\x92\xf5\x07\x15\xe5\x97\x9c\x12\xe0\x6e\x0e\x69\x2d\x9f\x99\xfc\xa9\x31\xbc\x57\x4a\x4a\x29\x4f\xa7\x7a\xff\x32\x4e\xef\xf7\x92\x12\xbf\x70\xd5\xfc\x5f\xd0\x72\x35\xd1\xe7\x31\x7c\x20\xd8\xa7\xbe\xed\x07\xd4\xe6\x15\xd2\x54\x29\x1e\xfb\x16\x09\xfc\x4a\x10\x2c\xd8\x5b\xab\x26\xf2\x65\x88\xd1\x13\x17\x48\xbf\x25\x90\xcc\xfe\xeb\x9d\x64\x61\xf6\x7f\x5f\xd0\xf9\xef\xa5\x1b\xf6\xdd\x6b\x17\xc8\x1f\xab\xcd\xef\x00\x00\x00\xff\xff\xf2\xb5\x33\x28\xe2\x03\x00\x00") - -func runtimeColorschemesAtomDarkTcMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesAtomDarkTcMicro, - "runtime/colorschemes/atom-dark-tc.micro", - ) -} - -func runtimeColorschemesAtomDarkTcMicro() (*asset, error) { - bytes, err := runtimeColorschemesAtomDarkTcMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/atom-dark-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesBubblegumMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x92\xdd\x4e\xc3\x30\x0c\x85\xef\x79\x0a\x2b\x48\x08\xa4\xad\x5a\xda\x51\xe0\x9a\x7b\xde\x21\x4d\xbc\x29\x5a\xea\x54\x4e\x22\xd8\xdb\xa3\xfe\x6c\xb0\x26\xbb\xb3\xf4\x1d\xc7\x27\x3e\xd6\xde\x79\xde\x3a\x4b\x27\x30\x78\x50\xc9\x45\x10\xf5\x5e\x6e\xea\x46\x8a\x87\x7f\x50\xfb\xbe\x47\x9a\x60\x5b\x80\x14\xa2\x1a\xa9\x6c\x76\x77\x69\x15\x22\x5b\x3a\x8e\xa2\xfb\x4f\x54\x94\xfa\x0e\x79\x14\xe5\x26\xac\x41\x8a\xf6\x60\x67\xde\x64\x3c\x44\x15\x71\xb6\xd9\xd4\x39\x3d\xf7\x9d\x77\x45\x34\x30\x0e\xec\x35\x88\xfa\x3d\x63\xf1\x3c\x20\x88\x36\x77\x13\x06\xd4\x56\x39\x10\xb2\x7d\xcb\x20\x32\x7b\x06\x51\x37\x72\x03\xb2\xdd\xdd\xb0\x44\x06\xd9\x59\x42\x03\xe2\x5a\x43\x69\xeb\xd1\x1b\x5f\x5e\xf9\xf8\xd5\x14\xa6\xc6\x39\xaf\xd7\xfd\x6d\xa7\xea\x3a\xc5\x65\x76\x4c\x31\x22\x6f\x17\x8b\xf2\x23\x77\xbf\x28\xbe\x15\xd3\x92\xd8\x3e\xd3\x8c\xb3\xb7\x97\xb4\x26\x8b\xab\x31\x3a\x71\x98\xeb\xd1\xe3\x1a\x4e\xa5\xf6\x2e\xf5\xb4\xd0\xc7\x2f\x0f\xf8\x13\x91\x0c\x9a\x69\xeb\x01\x9e\x3b\xef\x1d\x58\x82\xcf\x0d\x3c\xe9\xea\x05\x14\x19\x18\x9c\xb2\x04\x1d\x2b\x7d\xc2\x18\xd6\x51\x55\xd7\x27\xc4\x72\xd0\x85\x23\xa8\x2e\xdd\x7f\xa2\xdf\x00\x00\x00\xff\xff\x96\x2c\x9d\xee\x09\x03\x00\x00") - -func runtimeColorschemesBubblegumMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesBubblegumMicro, - "runtime/colorschemes/bubblegum.micro", - ) -} - -func runtimeColorschemesBubblegumMicro() (*asset, error) { - bytes, err := runtimeColorschemesBubblegumMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/bubblegum.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesCmc16Micro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x94\x41\xd2\xdb\x2c\x0c\x86\xf7\x39\x05\x43\x16\xff\x26\x61\xe6\xdf\xf4\x02\x59\xf7\x10\x02\x14\x87\x89\x0c\x1e\x21\x92\xe6\xf6\x1d\xa8\xf3\x35\xfe\x8c\xdd\x9d\x07\x3d\xc8\xaf\xa4\x17\x1d\x2f\x30\x09\x84\xf8\xd3\x5d\x08\x89\x20\xfe\x97\xd5\x84\x9c\x53\x04\x52\x2e\x51\x62\x95\xdd\x0d\x47\x34\x87\xe3\xff\x3f\xda\x49\x61\xf5\x40\xce\x21\x45\x73\x68\xc4\x99\x42\xbc\x2b\x97\xc6\x11\xa3\x28\x6d\x13\x79\x65\x09\xdc\x5d\x2f\xe3\x31\x0b\x54\xc0\xbd\x20\x76\x43\xc6\xa6\x44\x73\x82\x7d\xc8\x08\x17\x9c\xc9\x81\x11\xf7\xd0\x2b\x50\x7e\xb3\x8c\xbe\x4f\x66\xe1\x10\x07\xa5\x5f\x48\x94\x9e\x7b\x8c\x29\x4c\x4a\x97\xe8\x91\x29\x44\x54\x96\x0a\x9e\xd4\xf3\x16\x04\xf5\xe1\xd8\xbb\x17\xcb\x68\x91\x95\x7e\x1f\x6c\x64\x9f\xd0\x05\xa0\xcb\x0d\x78\x16\x3b\xc2\x80\x51\x60\x81\x07\x8f\x51\xc2\x35\x20\x6f\x54\xf4\x17\x30\x23\x38\x4e\xff\xc6\x1e\x5f\x3f\xac\xa5\x2c\x6b\xf8\xc0\x1c\x41\xce\x9b\x2d\xdf\x00\xe7\xb6\x7c\x80\x59\x40\xf0\xc3\x28\x9d\x86\xe7\xd7\x68\xab\x0f\xbe\x6b\xfe\x73\x6e\x2c\x83\xbb\xa3\xd4\x5f\x34\xbd\x6b\x42\x60\x58\x54\xd4\x25\x0c\xfe\x12\x8c\x1e\xfd\x66\x4d\x13\xe3\xc4\xc9\x6d\x19\x52\x5e\x13\x2a\xbd\xbe\x56\xcf\xcd\x1d\x5f\xcf\xc4\xdb\xb9\xe7\x69\x2b\xdd\x1d\xf2\x10\x13\xa3\xd2\x1e\xaf\x50\x68\xe9\x17\x64\x4e\xef\x79\x9d\x2c\x87\xe1\x26\xdf\xfb\x24\xc9\xa7\xa5\x43\xc1\xdd\x67\xb6\xd3\xee\x10\xeb\xec\xce\xae\x19\x6f\xc6\xd6\x82\x6b\xa6\xf3\xdb\xc9\xbb\x61\x93\x1d\x27\x22\x0b\x5d\xb0\xce\xbf\xe4\xa6\x4b\x37\x77\x9c\x56\x33\x12\xb0\xed\xf2\x46\xd8\x15\xe6\x2a\x78\xa1\x68\xf5\xb0\xd7\xd0\xac\xab\x47\x0f\x45\x04\xf9\x3c\xf7\xf6\xb4\x11\x7e\x02\xc7\xb6\x24\xd6\x5b\xa4\x7e\xba\x44\x65\x8c\x9d\xf5\xf6\x35\x09\xbf\xbb\x3b\x3e\x6e\xf8\xf0\x08\xbe\x3d\xf1\x56\xfc\xef\x00\x00\x00\xff\xff\xc4\x32\xdf\x3b\xa5\x05\x00\x00") - -func runtimeColorschemesCmc16MicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesCmc16Micro, - "runtime/colorschemes/cmc-16.micro", - ) -} - -func runtimeColorschemesCmc16Micro() (*asset, error) { - bytes, err := runtimeColorschemesCmc16MicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/cmc-16.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesCmcPaperMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x94\x41\x8e\xe3\x20\x10\x45\xf7\x7d\x0a\x44\x2f\x66\x93\xf8\x12\x59\x8f\x34\x57\x28\x70\xc5\x41\x29\x57\x59\x05\x74\xe4\xdb\x8f\x70\xe3\x9e\x24\xc6\x9e\x5d\xc4\x7f\x90\xcf\xe7\x97\x3f\x2f\x30\x25\x08\xfc\xdb\x5f\x08\x89\x80\x7f\x45\x33\xa1\x46\x61\x20\xe3\x85\x44\x4d\xf4\x37\x1c\xb1\xfb\xf8\xfc\x03\x13\xaa\xf9\x42\x8d\x41\xf8\x63\x11\xcf\x14\xf8\x6e\x7a\xbc\x42\xa6\x64\xac\x23\xf0\xf7\xd3\xe3\x16\x12\xda\x67\xc0\xcb\x38\x22\x17\x40\xa8\x37\x0b\xf5\xa6\x73\x4c\x50\x00\x3f\x03\x37\xa5\xce\x89\x50\x3d\xe0\x18\xea\x92\x66\xac\xe4\xa0\x88\x47\xe8\x15\x28\xae\xac\x62\xdf\x26\x63\xd2\xc0\x43\xa5\x66\x24\x92\xc7\x11\xd8\x65\x25\x63\x33\xf7\xa8\x14\x18\x8d\xa3\x8c\x27\xd3\x0a\xa5\x6e\xe3\x3c\x3a\x54\x63\xd7\x85\x9d\xc3\x27\xf4\x01\xe8\x72\x03\xad\x56\x46\x18\x90\x13\xbc\xe0\xa1\x47\x4e\xe1\x1a\x50\x77\x6e\xf5\x0f\xe8\x46\xf0\x2a\xff\xc7\xbe\x7e\xfe\xb0\xdc\x64\x8f\xf2\x04\x31\xee\xa6\x3e\x29\x4e\x2a\x7e\xef\xfd\x62\x82\x84\x4f\x0d\x69\x84\x1c\xe7\xd1\x95\x02\xbc\x1b\xfd\x5e\xef\x9c\x82\xbf\x63\x2a\x0e\xde\x4d\xa6\x79\x42\x63\xb7\x9e\xca\x7a\x77\xc7\xf9\x21\xda\xef\x1a\xaf\xa9\x1b\xdb\x0c\x7b\x60\x51\x34\xb6\xf6\xff\x45\x43\x55\x51\x63\x4f\x4e\xc3\x70\x4b\xef\xae\x93\xf4\xb2\x8e\xcb\x37\xd1\xb8\x72\xe0\x12\xef\xd9\x2f\x2f\x5e\xb1\xad\xc3\xd2\xb1\xf3\x5a\xa1\x43\xb9\x8b\x5e\x85\xc8\x41\x13\x2c\x6f\x90\xe3\xd2\x58\xbb\x94\xf5\xb4\x4d\x12\xdc\xb2\x79\x47\xf6\x59\xb5\x18\x7e\x71\xb4\x99\xaa\x2d\x54\x7d\xb5\xe8\x21\xa7\x84\x7a\x5e\xc3\xdc\x91\x1f\xa0\xbc\x4c\xe8\x76\x84\xcb\x4f\x2f\x94\x47\x6e\x7c\x5b\x7e\x66\xb4\x3f\x9a\xd9\xbf\x01\x00\x00\xff\xff\xa0\xd0\xed\x0e\x23\x05\x00\x00") - -func runtimeColorschemesCmcPaperMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesCmcPaperMicro, - "runtime/colorschemes/cmc-paper.micro", - ) -} - -func runtimeColorschemesCmcPaperMicro() (*asset, error) { - bytes, err := runtimeColorschemesCmcPaperMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/cmc-paper.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesCmcTcMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x94\xcf\x92\xe2\x20\x10\xc6\xef\x3e\x05\x05\x87\xbd\xc4\x94\xe6\x8f\xc1\xb3\x55\x7b\xdb\x87\x00\xd2\x71\x52\x12\x48\x35\xb0\x53\xbe\xfd\x16\xd1\xa8\xcc\xe0\xee\x72\x4a\xd2\x3f\x9a\x8f\xaf\xbb\xc3\x4e\x62\xf6\x62\x34\xbf\xd4\x49\x83\xd6\xc2\xfc\x70\x64\x06\x74\xd6\x08\x4d\x94\xd5\x36\x20\x71\xea\x03\x26\x28\x37\xec\x67\xd0\x8f\x8f\xd0\x8f\x7e\xb4\xa6\xdc\xc4\x77\xdc\xea\xd1\x5c\x48\x0f\x83\x08\xda\x13\xca\xc4\xb2\x0a\xb6\x87\x6a\x5f\x35\xf4\x15\x52\x76\x9a\xc0\x78\x42\xa5\xd5\x3d\x61\xed\xb2\xbe\x10\xc6\x79\x11\x11\xb6\xdb\x71\xce\x39\xdd\xb0\x4c\xb8\x74\x1e\x47\x73\x26\x94\x45\x66\xb7\xcb\xe6\x78\x42\x82\xb7\xdd\x5b\x68\x06\x35\x0a\x7d\xfa\x10\xb8\xea\x52\x4a\xa9\x61\x48\xf0\xb1\x07\xe3\xc7\x61\x84\x07\x04\x75\x53\xd5\xcd\x1b\xa8\x9c\x84\x42\xfb\x7f\xe8\xef\xe7\xc1\x6d\xd7\x76\x6f\x0f\x2e\x95\x16\xce\xad\xe8\xb0\xac\x04\x75\x5e\x78\x78\xf5\x37\x12\x5f\xfc\x75\xd7\x49\x5a\x4d\x28\xeb\xaa\x6a\xa8\xbb\x4c\xac\x94\x28\xd4\x05\xbc\x23\x94\x35\xfb\xc3\x11\xf6\x39\xc8\x8b\xe8\x6b\x46\xef\x8c\x30\xa3\x55\xcf\x12\x7f\x93\xe9\xaf\x33\x10\xca\x6a\x90\x0d\x3f\x7e\x8b\x94\x17\xb8\x7e\x5a\xec\xd7\x04\xb2\x07\x25\x0f\xa9\x84\x5b\xc5\x08\x65\xb2\xed\xa0\x57\xa9\x5f\x67\x63\x11\x08\xbd\xf7\x63\x12\x03\x44\xbb\x7a\x5d\xe4\xaa\xe2\x6d\xbf\x16\x2d\x98\x1e\x50\x8f\x06\xc8\xd2\x62\x9c\x17\x6c\xa8\x0e\x6d\x55\xa5\xa7\x99\x58\x9e\xad\x5a\x9a\xa7\xc8\x89\x8d\x29\xb6\x26\x4c\x32\x76\xce\x1d\x28\x58\x7d\xa8\x8f\x35\xbc\x03\x4b\xa7\xd0\x6a\x2d\x63\xd2\x9c\x4f\xb1\xd0\xc1\x2d\xe2\x9e\xe3\xc6\x45\x73\x3c\xc8\xf4\x3a\x42\xde\x72\xfc\x85\x51\x01\x31\x5e\x21\xd1\xf9\xda\xb6\x05\x6b\xaa\xa6\x6d\x8e\xff\xda\x75\x17\x1d\xb7\x23\xf4\x09\x7d\x0e\xde\x03\x6e\xef\xf6\x67\x9d\xbf\x23\x9f\x02\xcd\x6d\x64\x33\xcc\xed\x51\x59\x1d\x26\x43\x68\xae\x1c\x8f\xa1\x96\x36\x36\xf9\xdb\x16\x4c\xb8\xd2\x63\x80\x15\xe6\xed\x30\xf0\xfc\x2f\xe9\x06\x0f\x42\x3b\x78\x0e\x18\x6f\x79\x4b\xff\x04\x00\x00\xff\xff\xf6\xb1\x14\xb0\x49\x05\x00\x00") - -func runtimeColorschemesCmcTcMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesCmcTcMicro, - "runtime/colorschemes/cmc-tc.micro", - ) -} - -func runtimeColorschemesCmcTcMicro() (*asset, error) { - bytes, err := runtimeColorschemesCmcTcMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/cmc-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesDarculaMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\xc1\x8e\xea\x20\x14\x86\xf7\x3e\x05\x81\xad\x6d\xae\xb5\xb7\xd6\xdc\x95\x56\xbb\xbc\x99\x57\xa0\xe5\xe8\x10\x29\x34\x07\x9a\x19\xdf\x7e\x42\xad\x13\x47\x91\x91\xb3\x21\xe9\xc7\x7f\xe0\x3f\x7f\x5b\xa3\x0c\x26\x4a\xea\x13\x11\x70\xe0\x83\x72\x84\xb2\x6a\x5c\x73\x96\xe5\xbe\xe8\xec\x06\x6a\x4d\xd7\x81\xf6\xd0\xea\x8f\xaf\x20\x24\x05\x68\x27\x0f\x12\x90\x50\x56\xd7\x55\x51\xec\x9e\x88\x69\xeb\xf8\x45\x6d\xb3\xde\x57\x59\x94\x4a\xad\x43\xa9\x8f\x84\xb2\x62\x53\xae\xfe\xae\x5f\x81\xd3\xf6\x9d\x63\xfc\x84\x75\xdc\xc1\xf4\xa6\xaa\x2a\xb3\x3c\x7c\x0b\x7b\xee\x1a\xa3\xe2\xe6\xf4\x08\x3d\x9a\x36\x2e\xe4\xce\x3d\xfc\xd2\xaa\x87\x56\x72\x15\x87\x06\x2d\x00\x95\xd4\x20\x08\x65\xbb\xe5\xb2\x28\xc3\x1c\x20\x1a\x24\xb4\x31\x4a\x10\x56\x6d\xf3\xed\xa2\x08\x5f\xcb\x08\x73\xc5\x22\x72\xde\xad\xc1\xfa\xbe\x84\x4e\xdf\xe7\x93\x25\x3f\xe5\x78\xd3\x8c\xce\x47\x18\xa9\x7d\x4e\x92\x69\x44\x79\xed\x2b\xd8\xd4\xb7\x4b\xf4\xd0\x35\x63\xa0\x8a\x71\x85\xa7\x3f\x20\x7a\xc9\x97\x0f\x1c\x07\xe7\x00\x93\xc9\xa4\x98\x3f\x13\xf9\xc1\x51\x5f\x42\xb8\x2f\x76\xdb\x55\xfe\xec\x1a\xf6\xb2\x07\x42\xa7\xdf\x6a\xce\xb2\xca\xd7\x5d\x5a\xfd\xb6\x35\x6a\xe8\x74\x80\x64\xff\x0d\x81\x4f\x07\x5a\x80\x18\x73\x63\xff\x91\x37\xc5\xa5\x26\x0d\xf2\xf6\x04\xce\xa6\xf7\xc9\x4a\xbf\xf9\xab\x1c\x9d\xb1\x87\x18\xa7\xd7\xf3\x37\xd4\x23\xe4\xb8\x7f\xe7\x66\x5f\x2e\xea\x9b\xb9\x7c\x05\x00\x00\xff\xff\xe6\xbf\x86\x0a\x32\x04\x00\x00") - -func runtimeColorschemesDarculaMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesDarculaMicro, - "runtime/colorschemes/darcula.micro", - ) -} - -func runtimeColorschemesDarculaMicro() (*asset, error) { - bytes, err := runtimeColorschemesDarculaMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/darcula.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesDefaultMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\xcd\x6e\xab\x30\x10\x85\xf7\x79\x0a\xcb\xde\x06\x74\x43\x12\x43\x74\x57\x50\x60\x59\xf5\x15\x0c\x9e\xa4\x56\x8c\x8d\xfc\xa3\x36\x6f\x5f\x99\x92\x2a\x69\x5c\x5a\xbc\xb1\xc4\x37\x67\xc6\xc7\xc7\xbd\x96\xda\x24\x52\xa8\x33\xe2\x70\x64\x5e\x3a\x84\x49\x5b\xb4\x45\x9b\xad\x49\x56\x84\x85\x57\x37\x50\xaf\x87\x01\x54\x80\xf2\x7d\xbe\xd9\x37\x51\x48\x70\x50\x4e\x1c\x05\x18\x84\x09\xa5\xf5\xa1\x69\x7f\x10\x53\xd6\xb1\x49\xad\x6c\x8a\x4d\xbb\x4c\xa5\xd6\x19\xa1\x4e\x08\x93\x86\xd6\x55\xbe\xfb\x0b\x9c\xf6\xaf\x2c\x0c\x51\xd5\x0d\x2d\xeb\x68\x85\x75\xcc\xc1\x7c\xa6\xf6\x90\xd1\x3c\x7e\x70\x7b\x19\x3a\x2d\x97\x99\xd1\xc0\x68\x74\x8f\x30\x79\xaa\x76\xd5\x86\x46\x21\x77\x19\x61\xd9\x16\x3b\x42\x2f\x58\xe8\x55\xd2\x26\xcb\xe2\x1e\x7b\xc5\xc1\x48\xa1\x80\x23\x4c\xea\xed\x96\x16\xf1\x99\xc0\x18\x6d\x10\xee\xb4\xe4\x68\x71\x2c\xcd\xf5\x15\x5b\x90\x0b\x6e\x79\x1b\xfa\x22\x3c\xff\x5f\xcf\x79\xb9\x97\x63\x5d\x37\x39\xbf\xc0\x08\x15\x72\x92\xcc\x57\xb4\xff\x17\x56\xb4\x69\x68\x97\x28\x3f\x74\x53\xa0\xca\xe9\x5b\x93\x6d\x16\xd6\xfd\xed\x7b\x63\x82\x64\xbc\x20\xa2\x7c\xf2\xce\x81\x49\x66\x93\x96\xfc\x99\xc9\x37\x66\xd4\xef\x21\xf4\xc6\x7e\xee\x83\x4b\xb1\x39\xa7\x6d\xaf\xa5\x1f\xd4\x0d\x41\x9e\x35\x82\x77\x07\x8a\x03\x9f\x72\x62\xff\xa3\x17\xc9\x84\x42\x9d\x61\xfd\x19\x9c\x4d\xbf\x27\x29\xfd\xe2\xf1\xfc\x7e\xf1\x8a\x3c\xc4\x36\xbd\xd6\xdf\x50\x8f\x90\x63\xa7\xc8\x4b\xfc\x08\x00\x00\xff\xff\x92\xba\x33\x8a\x22\x04\x00\x00") - -func runtimeColorschemesDefaultMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesDefaultMicro, - "runtime/colorschemes/default.micro", - ) -} - -func runtimeColorschemesDefaultMicro() (*asset, error) { - bytes, err := runtimeColorschemesDefaultMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/default.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesGeanyMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x92\x41\x8e\xf3\x20\x0c\x85\xf7\xff\x29\x10\xff\xb6\xe9\x35\xe6\x1c\x06\xdc\x14\xc5\xb1\x23\xc7\x28\x93\xdb\x8f\x68\x32\x23\xd1\xd0\x1d\xe2\xb3\xfd\xfc\x1e\xfc\xff\x42\xe0\xfd\x5f\x14\x12\x1d\x28\xf3\xe4\xa2\xcc\x33\xb2\x39\xaf\x98\x7c\x0b\x78\x35\xa8\x24\xe1\x03\x0a\x59\x97\xde\xb9\xcc\x01\xb5\x8b\x56\xd3\xcc\xa3\xf3\x41\x28\xb9\x1d\x89\x64\x6b\x66\xe4\x84\x6c\xf9\x91\x51\xfb\x1a\x8b\xe2\xa2\x12\x9d\x8f\x3b\x70\x43\xd6\x05\x63\x06\x72\x3e\x50\xc1\x96\x18\x18\x1e\x86\xae\x6c\x9f\x83\x50\x5f\xeb\x60\x77\x83\xdf\x7d\x2f\xdd\xb6\x2f\xd8\x19\x5a\xaf\xef\xf8\x6d\xc8\x09\x53\x7f\x36\xaa\x8a\x5e\x03\x36\x49\x72\x8a\x5d\x0c\x66\xae\xd9\x0c\xf1\x09\xfa\xb7\x0f\xc4\xa9\xa9\xa1\xcc\x38\x1c\xf1\x3b\xdf\x3e\x4e\x51\xad\xed\x9f\x2b\x6a\x4c\x65\xad\xbc\x5a\x82\x38\xdd\xb6\x67\xb6\x37\x67\x10\xc2\x4b\xfe\x03\x3f\x8e\x51\xa8\xcc\x7c\x2e\x39\xa2\x62\x6b\x64\x2c\x66\xa8\xc3\x19\xc1\xed\x3d\x83\x13\x6f\xa0\xfc\xfa\x2a\x95\xff\x04\x00\x00\xff\xff\xc6\x46\x15\x05\xa4\x02\x00\x00") - -func runtimeColorschemesGeanyMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesGeanyMicro, - "runtime/colorschemes/geany.micro", - ) -} - -func runtimeColorschemesGeanyMicro() (*asset, error) { - bytes, err := runtimeColorschemesGeanyMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/geany.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesGithubTcMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x92\xc1\x6e\xdb\x40\x0c\x44\xef\xfe\x0a\xd6\x3a\xf4\x62\x19\x89\xec\xa8\xd6\xb1\x69\xda\xfe\x40\x81\xa2\xc7\x5d\x89\xd2\x12\x59\x91\x06\x97\x82\xa3\xbf\x2f\xe4\x44\x08\xd4\x2a\x48\xce\x7c\xb3\x33\x9c\x65\xf6\x4b\x07\x84\x5a\xa2\x28\x58\xc0\x1e\xc1\xbb\x84\x0d\x08\xc3\x4f\xb2\x30\xf8\xcf\x09\xd2\xc8\xe6\x9e\x20\x50\x17\x22\x75\xc1\x88\xbb\xfd\x26\xfb\xed\x94\x89\xbb\x1d\x58\xa0\x04\x94\x5e\x85\x41\x2e\x40\x06\x8a\xdc\xa0\x62\x03\xc4\xd0\x8f\xf0\x83\x14\x5b\x79\xfa\xb4\xc9\xfe\xc8\xa0\x09\x7a\x37\x42\x14\x79\x84\x86\xda\x16\x15\xd9\xf6\x9b\x6b\x8e\x3c\x12\x3f\x42\x2d\x7d\x8f\x6c\xb0\xf5\x12\x1b\xc8\xaa\xb2\x3a\x55\xe5\x76\x49\x70\x32\x37\x21\xd9\xcd\xcd\xa9\xbc\xaf\x56\xa7\x7b\x1e\x7a\x8f\xfa\x0e\x94\xce\x58\x93\x8b\xdf\x82\xd3\xd9\xf1\xf6\x74\x28\xef\x1f\xde\xc0\x4d\x89\xbb\x8f\x90\x5e\x24\xae\x7b\x53\x83\x6c\xd4\xd2\x35\xdb\xd7\x2f\xb7\x0f\x77\xcb\x27\xce\x8a\x67\x95\x7a\x36\x59\x21\x5e\x42\xaf\xcb\x93\x39\xc3\xe7\x06\x57\xc7\x63\xef\xa7\x64\x0d\xb6\x6e\x88\xb6\x98\xd9\x78\xc6\x75\x15\xaa\xca\x5c\xd0\x2e\xfb\x7e\x38\x16\x87\xe3\x52\x2a\x8d\xc0\xf6\x12\xc8\x70\xb9\x2c\x4f\xdb\xe6\xf5\xb5\xdf\x35\xcf\x48\x8c\xf9\xfc\x55\x6f\x7f\xf9\xa0\xd3\xa1\xe4\x1f\xa3\xbb\xc1\x0c\x35\x7f\x37\xf4\x0b\x77\x79\x3e\xe8\xf9\xc1\xb6\x28\xef\x8a\xe2\xbf\x4e\x87\x34\x99\xcf\x50\x7d\xaa\xab\xda\xef\xb2\xe2\x58\x54\xc5\x72\x65\x73\xde\xbf\x5e\xd3\x3f\xe0\xdf\x00\x00\x00\xff\xff\x2e\xfb\xbb\x2b\x77\x03\x00\x00") - -func runtimeColorschemesGithubTcMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesGithubTcMicro, - "runtime/colorschemes/github-tc.micro", - ) -} - -func runtimeColorschemesGithubTcMicro() (*asset, error) { - bytes, err := runtimeColorschemesGithubTcMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/github-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesGruvboxTcMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x92\xc1\x6e\xc3\x20\x0c\x86\xef\x7b\x0a\x94\x5c\x97\x2a\x0b\x6d\x02\x8f\x83\xc1\xed\xd0\x08\x44\x06\x34\xf5\xed\x27\xd2\x76\x5b\x3b\x96\x4d\x5c\x7c\xf8\xfc\xe3\xff\xb7\x75\x70\x81\x3a\x67\xfd\x1b\x33\x78\x54\xd9\x25\xd6\xb4\x08\x06\x60\x78\x6e\x07\x51\x5e\xf3\xf4\x0d\xd2\x61\x9e\xd1\x17\x48\x0e\x82\x4f\xfb\x2a\x14\xcf\x33\x04\xc7\x9a\xd6\x4c\x52\x0e\x2f\xbf\x08\xf9\x98\xd4\xaa\x64\xb8\x18\x25\x6c\x52\xbb\x98\xc8\xfa\x13\x6b\x5a\x10\x00\xc3\xf8\x1f\x78\xa7\x5f\x15\x6d\x77\x58\x83\x3e\xd9\xa3\xc5\xc2\x09\xd4\xfd\xa4\xeb\x86\x92\x4a\x78\xf5\x7d\x84\xbd\xe4\x75\xdf\x0b\xe1\x42\x41\x7f\x41\x03\x3f\xdc\x01\xe9\xbc\xe0\xb6\x44\x5c\x50\x5b\xf5\x47\x76\xd9\x1b\x24\x67\x3d\x1a\xd6\x7c\xd6\xac\x46\x22\x51\x28\xde\xa4\xe9\xfb\xbe\x9e\xc1\x29\xa7\x84\xd4\xdd\xc8\x8d\xd9\xae\xe4\xbb\x22\x7f\xd9\xc5\xc6\x88\x65\xa2\xce\xe7\x19\xd6\x68\xc7\xf1\xa0\x0f\x75\x51\x9d\x89\xd0\xa7\xae\xde\xc0\x35\x17\x7c\x7c\x6c\x88\x97\xba\x44\x59\x03\xd6\x52\x07\x97\x67\xcf\x9a\x76\x92\xd3\xbe\xc7\x1f\xeb\xcc\xf1\xaa\x70\x3b\xf6\xcb\x97\xf7\xeb\x52\x00\xeb\x09\x3d\x32\x1f\x01\x00\x00\xff\xff\x0f\xfc\xc9\xea\x36\x03\x00\x00") - -func runtimeColorschemesGruvboxTcMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesGruvboxTcMicro, - "runtime/colorschemes/gruvbox-tc.micro", - ) -} - -func runtimeColorschemesGruvboxTcMicro() (*asset, error) { - bytes, err := runtimeColorschemesGruvboxTcMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/gruvbox-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesGruvboxMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x90\xc1\x4e\xc6\x20\x10\x84\xef\x3e\xc5\x86\xf3\x5f\x23\xb4\x4d\xe3\xe3\x50\xd8\xdf\x10\x61\xb7\x59\xe0\xf0\xbf\xbd\xc1\x1a\xb5\x82\xb7\x49\xbe\x61\x76\x18\xc7\x91\x65\x8a\x81\xde\xc1\xe3\xdd\xd6\x58\x40\x19\x33\xdf\xcc\xbc\xaa\xa7\x5f\xd0\x71\x4a\x48\x0d\x2e\x23\x48\xb9\xd8\x46\xf5\xb6\xfe\x4b\x9f\x73\x91\x40\x6f\xa0\xf4\x62\x3a\x53\xf0\x48\x25\xdc\x03\x0a\x28\xfd\xf2\xda\xf1\x5c\x6c\xc1\xb3\x81\x36\x4b\x8f\x1f\x69\xe7\x38\x66\x87\xe0\x21\xec\x40\x6d\xfd\xd9\xf2\x38\x10\x94\xd1\x83\xc4\x03\x5d\xb0\x2d\x72\xf0\xac\x92\x47\x89\x81\xd0\x83\xfa\xd6\x30\xea\x8d\x22\x2c\xa0\xcc\xbc\xde\xb4\x59\xae\xb7\xd9\x33\xa8\x9d\xa3\x87\xd1\xe2\x2d\x72\xa2\x9a\xf6\x36\xc9\xb9\xfa\x76\xdd\xb5\x8a\x20\x95\xe9\x62\x3c\xdb\x76\xc6\x7c\xea\xf6\xd7\xbf\xf0\x53\x3a\x8e\x35\x51\x4f\xdb\xec\x35\x7f\xbd\x34\x7d\x87\x62\xf7\xdd\xca\x0f\xfb\x08\x00\x00\xff\xff\xe7\x9a\x4e\xad\x4f\x02\x00\x00") - -func runtimeColorschemesGruvboxMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesGruvboxMicro, - "runtime/colorschemes/gruvbox.micro", - ) -} - -func runtimeColorschemesGruvboxMicro() (*asset, error) { - bytes, err := runtimeColorschemesGruvboxMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/gruvbox.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesIn_progressCodeblocksPaperMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x52\x4b\xce\xf2\x30\x0c\xdc\x73\x0a\xab\x6c\x29\x07\x60\xf7\xbf\x16\xff\x31\xf2\x30\x6d\xd4\xd4\xae\x1c\x47\x15\xb7\xff\x94\x50\x10\x7d\xb0\xab\x3a\x93\x99\xf1\xd8\xe7\x5f\xe0\x38\xb2\x24\xd7\xe3\x88\x60\x4d\x42\x0f\x4c\xf0\x87\x3d\xde\x6e\xbf\x23\xbb\x21\xc1\xff\xbf\xff\x4e\x67\x9b\x15\xe6\xa0\x3d\x18\x98\xfb\xa0\x85\xeb\x86\x4e\x38\x93\xbf\x9e\xaa\x46\x1b\x03\x0d\xe0\xf1\x6e\x72\x54\x68\x6c\x34\x6e\xb8\x54\x6e\xf3\x49\x70\x3c\x8e\x48\x85\xc0\xd1\x43\x65\x6d\x70\x4a\x6a\x2a\x21\xe6\xed\xd3\x27\x74\xa5\x3c\x5a\x94\x45\x62\x34\x1d\x92\x9a\x63\x66\x52\x09\xd4\xbd\xcd\x36\x82\xc1\x23\x69\xb8\x87\xaa\xb5\x4b\x32\x09\x4e\xc2\x0e\x9a\x4e\x10\x69\x05\x25\x35\x8a\xcb\x18\x5b\xd1\xf4\x18\x2d\x47\x68\x04\xfd\xc1\xff\xab\x15\xe3\x06\xd4\x74\xf0\x52\x1f\x13\x1e\x09\x4e\xe8\x82\x89\xd0\x1c\x4d\x1a\x3a\x62\x41\x68\x96\xde\x57\x18\x8a\xf0\xab\xa5\xba\x88\x8b\x95\xd0\xf5\xba\x4d\xa6\xec\xf9\x73\x1f\x0b\xed\x81\x31\xf2\xbc\x76\xa3\xd2\x58\xeb\x7a\x23\x5f\x17\x18\x03\x61\xfb\xde\xd0\x97\x2b\x28\x05\xe6\x54\xa8\xd0\x3c\xa3\xed\x42\x19\x6b\x8b\xcb\x31\xea\xb2\x48\x49\xb2\x32\x13\xf4\x97\x7d\x9e\x2e\xab\xa2\xb4\x4b\x19\x3b\xa5\x05\x9e\x8d\x50\xbd\x94\x9d\x53\xfd\x74\x1c\xf3\x48\xaf\x2b\xf9\x09\x00\x00\xff\xff\xc6\xf2\xd8\xdd\x37\x03\x00\x00") - -func runtimeColorschemesIn_progressCodeblocksPaperMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesIn_progressCodeblocksPaperMicro, - "runtime/colorschemes/in_progress/codeblocks-paper.micro", - ) -} - -func runtimeColorschemesIn_progressCodeblocksPaperMicro() (*asset, error) { - bytes, err := runtimeColorschemesIn_progressCodeblocksPaperMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/in_progress/codeblocks-paper.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesIn_progressCodeblocksMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x92\x41\x92\xa3\x30\x0c\x45\xf7\x73\x0a\x95\x67\x31\x9b\x90\x03\x64\x39\x33\xbd\xe8\x7d\x5f\xc0\x36\x8a\x71\x21\x24\x4a\x96\x2b\xcd\xed\xbb\xa0\xe8\x54\x93\x38\x3b\x8a\xff\xd0\xff\x5f\xe2\xf7\xc7\x80\x13\x42\xf0\x05\x7b\x10\x86\x7f\xd2\xe3\xe5\xf2\x97\x24\x8e\x05\xde\xff\xbf\xfd\x29\xd0\xe3\xd5\x57\x32\x28\x0b\x9b\xff\x84\x21\xa7\x81\x72\x1a\x2c\x73\x3a\xff\x8a\x42\xa2\x1d\x65\x1e\x21\xca\x34\x21\x1b\xb8\x20\xd4\x43\x20\x1f\x47\x77\xd4\xb9\x98\xdf\x00\xaa\xd8\x94\xce\xc5\x34\x73\xba\x8f\x78\x85\x71\x9d\x02\xea\x8e\x4d\x3e\x21\x9b\x3f\x90\xb9\x47\xb6\x7c\xcd\x2b\xb4\xe7\x3f\xe8\xb3\xe2\xac\x12\xc1\x25\x45\xe4\x83\x54\xcc\x1b\xee\x45\x1e\x03\x94\x65\x0a\x42\xe0\x14\xfb\xc6\xfb\x73\x50\x1f\x47\xb4\xd2\xf8\xd2\x96\x19\x5b\x03\x67\x8c\xd9\x13\xb8\x66\x89\xc4\xa2\xd8\x2e\x80\xaa\xa2\xe0\x4e\x41\xd7\x53\x3c\xe6\x31\xe9\xe5\xe7\x1d\x76\x6c\x41\x22\xb9\x1d\x3d\x78\xdd\x54\x17\x07\xaf\x2f\x0f\x47\x99\xb1\xbb\xaf\x7c\x9b\x77\x1b\xb2\xe1\xd3\xda\x6a\x59\x51\x70\x9b\x7a\x7a\x0a\xe5\x43\x58\x5d\xda\x6a\xac\xaa\x6b\x92\x83\xd9\x23\x94\xaa\x19\x6a\xf7\x5d\xfe\x85\x7c\xf3\xca\xdb\x5f\xf4\xe4\xb1\x3d\x46\xa1\x3a\xf1\x9e\xc3\x7d\x05\x00\x00\xff\xff\x17\xc1\xfe\xd4\x01\x03\x00\x00") - -func runtimeColorschemesIn_progressCodeblocksMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesIn_progressCodeblocksMicro, - "runtime/colorschemes/in_progress/codeblocks.micro", - ) -} - -func runtimeColorschemesIn_progressCodeblocksMicro() (*asset, error) { - bytes, err := runtimeColorschemesIn_progressCodeblocksMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/in_progress/codeblocks.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesIn_progressFunkyCactusMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x93\xd1\xce\x9b\x30\x0c\x85\xef\xf7\x14\x51\x76\x5b\x78\x89\x5f\xda\x7b\x38\xc1\xa5\x11\x89\x8d\x1c\x67\x15\x6f\x3f\x85\xc1\xfe\x42\x43\x77\x87\xe2\x4f\xf6\xf1\x39\xf8\xe7\xaf\x42\xd3\x62\xbe\xc0\x6b\xc9\x46\x1f\x98\xf0\x87\xe7\xc8\xd2\xc5\x40\x93\xf1\x9c\x12\x92\x1a\xeb\x38\x0e\xc6\x45\xf0\x93\x3d\xd6\x29\x2b\x54\xc0\x2f\x40\xcd\x52\xef\x98\xe3\xd6\xe0\x33\xd4\xab\x14\xdc\xc8\x51\x10\x3f\xa1\x77\x88\x79\x67\x05\x87\x36\x99\x55\x02\x8d\xc6\x2e\x18\x23\x3f\xdb\x0c\x95\xe4\x50\x8c\xdd\x1f\x2e\x3a\xcd\xe8\x03\xc4\xaf\x07\xc8\x36\x34\xc1\x88\xa4\x70\xc0\xc3\x80\xa4\xe1\x1e\x50\x2e\x94\x7d\x03\x7d\x02\x2f\xfc\x7f\xec\xf7\xbf\x81\x2e\x16\xbc\xa2\x7c\x84\x9c\x2f\x9d\x9b\x05\x67\x61\x7f\x95\x41\x56\x50\x7c\x49\xb9\xe1\x56\x5e\x92\xab\x21\x9e\x85\xfe\x7d\xef\x9d\x80\x9f\x50\xab\x82\xb3\x48\x5d\x66\x34\xf6\x5d\x53\x7d\xef\x27\x5c\x9e\x2c\xc3\xa5\xf0\xcd\x75\x63\x9b\x66\x8f\xc4\x82\xc6\x0e\x78\x87\x12\x8f\xb9\xa1\x08\xef\xbe\xdd\x9c\x84\xf1\xa1\x67\xe9\xca\x03\x1b\x5b\x68\x40\x89\x81\x70\xc7\x1a\xcb\x07\xaa\x46\x77\xfe\x3b\xfb\x8d\x7d\x17\x5c\x3b\x75\xfb\x1f\xd5\xd8\x47\x41\x4b\x5e\xc7\xd9\xf5\x96\x6e\x0d\x63\xc0\xb9\x75\xd0\x5a\x6f\x2d\xee\x8b\x48\x15\x74\x18\x76\xf8\x27\xcd\x2b\x3e\x16\x55\x94\x6e\xb3\xe4\x76\xf6\x61\x2b\x3f\x41\x68\xbd\x95\xf7\x63\xaa\x9f\x9e\x63\x49\x74\x0c\xea\x4f\x00\x00\x00\xff\xff\xb2\xf5\xf9\xad\x3b\x04\x00\x00") - -func runtimeColorschemesIn_progressFunkyCactusMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesIn_progressFunkyCactusMicro, - "runtime/colorschemes/in_progress/funky-cactus.micro", - ) -} - -func runtimeColorschemesIn_progressFunkyCactusMicro() (*asset, error) { - bytes, err := runtimeColorschemesIn_progressFunkyCactusMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/in_progress/funky-cactus.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesIn_progressGameboyTcMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x92\x5d\x6a\xc3\x30\x10\x84\xdf\x7d\x0a\x21\xbf\xda\xd0\xe2\x52\xf7\x06\x3d\x87\x7e\xd6\xa9\xa8\xb4\x6b\x56\x2b\x8a\x6f\x5f\x4c\x44\x68\x8a\x1c\x07\xbd\x08\x66\xe7\x9b\xd1\x4f\xff\x69\x12\x58\xda\x94\x7c\x41\x82\xce\x51\x24\x1e\x63\xc0\x6f\xe5\x61\x31\x25\x8a\xd2\xfd\xb4\xec\x6b\xe8\xed\xe2\x5e\x3f\x5e\xf4\xdf\x21\x47\x29\x01\xee\x43\xb3\x9f\xa7\xb7\xe9\x9f\x88\x59\xcc\x91\x1a\x3c\xa0\x84\x25\x00\x2b\xdd\x7b\xef\x61\xf6\x77\xfa\xca\xb0\x32\xb9\x9b\x38\xb4\x20\x79\x05\x17\x4c\x6c\x27\x64\x31\x02\xc7\xf5\xf2\x96\x2c\x1d\x58\x65\x5b\xa1\xad\x00\x33\xf1\xe3\x52\x42\x9e\x6e\xe6\xa1\x75\xb6\xbd\x59\xc9\x31\x20\x9c\x90\x8c\xb5\xe6\x24\xed\xba\x75\x14\x4b\xc2\x76\xe5\x3d\x67\xc4\x92\x2c\x9c\xa1\x0a\x33\xa0\x8c\xf7\x86\x07\xcf\x7f\x29\x22\xc0\xe3\x13\x77\x52\x27\x7f\x0c\x63\xc0\x8b\xd2\xf5\x77\xe9\xae\xe2\xbb\x6a\xea\x6a\x4c\x77\x85\xbd\xff\x06\x00\x00\xff\xff\xf6\x94\x42\x4d\xa0\x02\x00\x00") - -func runtimeColorschemesIn_progressGameboyTcMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesIn_progressGameboyTcMicro, - "runtime/colorschemes/in_progress/gameboy-tc.micro", - ) -} - -func runtimeColorschemesIn_progressGameboyTcMicro() (*asset, error) { - bytes, err := runtimeColorschemesIn_progressGameboyTcMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/in_progress/gameboy-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesIn_progressGeanyAltTcMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x51\xcb\x4e\xc3\x30\x10\xbc\xf3\x15\x96\x7d\xa5\x91\x49\xa9\x1a\x8e\x9c\xf8\x0e\x3f\xd6\xc5\xc2\xde\x8d\x9c\x8d\x44\xfe\x1e\x39\x2d\x8f\x04\x23\x91\xb9\x58\x9a\xd9\xc9\xec\xac\x7a\x01\x83\x8b\x78\x4e\x0c\x05\x0d\x83\xe0\x57\xc8\x70\xe7\x28\x51\x39\xa4\x88\x6f\xc2\x43\x30\x73\x62\x21\x95\x5e\xbf\x7b\x15\xa0\x42\xfe\x14\x39\xca\x19\xb0\x8a\x06\x5d\xb1\x23\x71\x62\x53\xd9\x9b\x57\x93\xed\x2c\x51\x5a\xff\x72\xd4\xc7\xb6\x41\x87\x73\xb6\x50\x84\x54\xc7\x9a\x64\x68\x8b\x26\x2e\x11\x2f\xab\xd3\xa0\xf5\xd6\x29\x7a\x40\x8e\x21\x56\x93\x56\x98\xb1\xc0\x58\xc8\x09\xa9\xac\xb5\xf6\x7c\xde\x90\xd3\x08\x2e\x9a\x3f\x32\x4e\x6c\x18\x6e\x1d\xb4\xe8\x25\xdb\x75\xbd\x46\xf2\x2b\xd7\xb1\xb9\x08\x69\x29\x79\xa1\x1e\xe1\xc9\x9f\x1f\x36\x22\x5e\x46\x68\x5b\x43\x29\x54\x3b\x31\xa7\xde\xf4\x66\x3b\x44\x9e\x84\x54\x21\x98\xd3\xae\x88\x14\x11\x0e\x5f\x75\x7e\x5e\xd6\xeb\x8a\x6d\xad\x73\x29\x80\x7c\xf8\xff\xc0\xfa\x74\x94\xe6\x8c\x42\x2a\xd7\x83\x75\xfd\xde\x72\xba\xbe\xeb\x46\x41\x57\xfc\xda\xb5\x83\x77\x06\xf4\xe0\xbf\x0f\xf5\x11\x00\x00\xff\xff\x25\x91\x54\x44\xac\x02\x00\x00") - -func runtimeColorschemesIn_progressGeanyAltTcMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesIn_progressGeanyAltTcMicro, - "runtime/colorschemes/in_progress/geany-alt-tc.micro", - ) -} - -func runtimeColorschemesIn_progressGeanyAltTcMicro() (*asset, error) { - bytes, err := runtimeColorschemesIn_progressGeanyAltTcMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/in_progress/geany-alt-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesIn_progressGithubMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x92\xb1\x6e\xc3\x30\x0c\x44\xf7\x7c\x85\x90\x0c\x5d\x62\xff\x44\x87\xae\x1d\xfa\x03\x94\xcc\x58\x44\x64\xca\xa0\x28\xa4\xfe\xfb\x42\xa9\x93\x40\xb5\xd2\x76\xbe\x47\xdf\xe9\xce\x87\x0f\x8f\x13\x1a\x0b\x09\x07\x13\xd9\xbc\x91\xfa\x6c\x5f\x92\x49\x0b\x2b\x7c\x1a\x4f\xa3\x0f\x34\x7a\x25\x1e\xfb\x9d\x8b\x21\x4a\x17\x88\xcf\xc6\xc5\x69\x42\x56\xb3\xb7\x31\x0c\xc6\x06\x70\xe7\x7d\xad\x73\x52\x28\x80\x5b\x80\x9b\x52\xcf\x79\xb2\x28\xbf\x11\x69\x46\x47\x10\x5e\x3d\xc8\xdd\x29\xe3\x13\x56\x85\x78\xfc\x13\xb3\x31\x86\x86\x25\x0d\xc8\x4a\x27\x2a\x79\x26\x18\x91\x15\x2a\x7d\x16\x9c\x25\xba\xf5\xf3\x2d\x62\xcd\xda\x3e\x4f\x0a\x8a\xdf\x85\x35\xe5\x65\xb2\x25\xd6\x80\x27\xc8\x41\x2b\x4d\x97\x19\xdb\x57\x28\x12\x6f\xbd\x1c\xad\x94\x99\x04\x87\xfa\x38\x0e\xd1\xec\x2f\x9e\xb4\xae\x83\xb8\xbc\xb7\x73\xd7\x62\x5b\xae\x81\x18\xbb\xdb\x40\xcf\x36\xce\x22\xe5\x2b\xff\x61\xc7\xac\x8a\xd2\xad\x91\x8f\x3f\x73\xae\xf2\x05\x84\x1f\x23\x2e\x18\x42\xbc\x6c\x7a\xcc\xa9\x18\xae\xcc\xf5\x69\xc7\xad\x9f\x82\xb5\xf7\x9f\xa6\x82\x0e\xef\x01\x88\x8d\x15\x70\x67\xd4\xd4\xef\x0e\x9b\x21\xfa\x9b\xf8\xe8\xe6\x2b\x00\x00\xff\xff\xce\x9e\x02\x81\x29\x03\x00\x00") - -func runtimeColorschemesIn_progressGithubMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesIn_progressGithubMicro, - "runtime/colorschemes/in_progress/github.micro", - ) -} - -func runtimeColorschemesIn_progressGithubMicro() (*asset, error) { - bytes, err := runtimeColorschemesIn_progressGithubMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/in_progress/github.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesIn_progressMcMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x92\x41\x8e\xc3\x20\x0c\x45\xf7\x73\x0a\xc4\x6c\x9b\x5e\x62\xd6\x73\x08\x03\x6e\x82\x0a\x76\x64\x8c\xaa\xdc\x7e\x44\x9b\x56\x25\x4d\x66\x87\xf4\x5f\xbe\xbf\xbf\xf3\xfd\x1b\x03\xc5\x71\x52\xf3\xc3\x39\x03\x05\x14\x13\xa9\xcc\x51\x30\x18\x9d\x30\xe3\xf9\xcb\x73\x62\x19\x52\xa4\xab\x09\x78\x81\x9a\xd4\xd8\xdb\x14\x15\x4f\x2e\x55\xb4\xef\xba\xe7\x9c\x91\xd4\x58\xc7\x29\x18\x97\xc0\x5f\x37\x3a\x15\x85\x17\x70\x77\xd9\x05\xce\x45\x25\xd2\xb8\x72\x0b\xa6\xc4\xb7\x0e\x8c\x01\x49\xe3\x25\xa2\xac\x8c\x60\xe8\x80\xa2\xa0\xf8\x16\xc6\x2f\x40\x3d\xb0\x64\xc7\x69\x5d\x65\x47\x39\x3b\x01\x7f\x45\x2d\xff\x20\x0a\xcf\x88\xa3\x20\xf6\xfe\xb3\xe0\x2c\xec\x8d\xbd\xd7\x70\xfa\x98\xaf\xcb\x8c\xc6\x7e\x7e\x57\x66\xf4\x11\x92\xb1\x19\x46\x24\x85\x7e\xed\x91\x58\xd0\xd8\xf5\x10\x9d\x86\x22\x2c\xc6\x9e\x9c\xb4\x83\x6e\xfb\x50\x0e\xfc\x12\xf7\x0a\xa5\xd6\xe8\xe0\x27\x68\x1e\x1f\x69\x53\x24\x1c\xa8\x66\xd7\x0a\xdf\x09\xad\xa0\xb5\x34\xe8\x78\x5f\x70\xae\x79\x1f\xc8\xbe\x8a\xb4\x00\xdd\xa0\x63\xb6\x3c\xde\xc7\xe3\xc6\xaa\x8a\x32\x3c\x4b\xd9\xd6\xb1\xca\x37\x10\xba\xff\x67\x5b\xfd\xf1\xf4\x9c\x6a\x26\x63\x1f\xee\x7f\x01\x00\x00\xff\xff\xb6\x1b\x37\xd7\x2d\x03\x00\x00") - -func runtimeColorschemesIn_progressMcMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesIn_progressMcMicro, - "runtime/colorschemes/in_progress/mc.micro", - ) -} - -func runtimeColorschemesIn_progressMcMicro() (*asset, error) { - bytes, err := runtimeColorschemesIn_progressMcMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/in_progress/mc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesIn_progressMonochromePaperMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\xcb\x31\xae\x83\x30\x10\x84\xe1\x9e\x53\x8c\xa0\xe5\x71\x8b\x57\x46\xca\x15\xd6\x66\x89\x2d\x2f\xde\x68\xbd\x16\xca\xed\x23\xb9\x0a\xd5\x14\xff\x37\xcb\x43\xab\xc6\x64\x7a\x32\x9e\xf4\x66\x83\x27\x3e\x79\x9b\x96\xff\x3d\x3b\x3e\xda\x0d\x47\x16\x6e\xd0\x0a\xc2\x95\xb2\x33\x02\xc5\xf2\x32\xed\x75\xc7\x95\x3d\x69\x77\x44\x15\xb5\xb6\x4d\x63\xff\x24\xd7\x82\x9d\x0f\xea\xe2\x98\x83\x50\x2c\xeb\xb8\xce\xbf\xa0\x39\x79\x6f\x92\x2b\x63\x1e\x75\x1d\xf2\x66\x9c\x42\x20\xbb\xf7\x6f\x00\x00\x00\xff\xff\xb8\xc1\x9e\x9e\xb4\x00\x00\x00") - -func runtimeColorschemesIn_progressMonochromePaperMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesIn_progressMonochromePaperMicro, - "runtime/colorschemes/in_progress/monochrome-paper.micro", - ) -} - -func runtimeColorschemesIn_progressMonochromePaperMicro() (*asset, error) { - bytes, err := runtimeColorschemesIn_progressMonochromePaperMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/in_progress/monochrome-paper.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesIn_progressMonochromeMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2c\xc7\xb1\x0d\x02\x31\x0c\x05\xd0\xfe\xa6\xf8\x52\x0a\x3a\x36\xa1\x63\x01\x93\xf8\x48\x74\x89\xbf\x64\xc7\x05\xdb\xd3\x5c\xf9\xca\x8b\xc6\xda\x9d\x4b\x8f\xf2\xee\x23\xb0\xe4\xd2\xc0\x1a\xd5\x89\x0c\x05\x6d\xfe\xb0\xbb\x62\xab\xaf\x61\x32\x1f\x81\xa6\xa7\xe4\xdc\x47\xc1\x49\xd7\xaf\x33\xad\x41\xac\xe1\x23\xf5\xba\x59\x39\x99\x1e\xcf\x7f\x00\x00\x00\xff\xff\x84\x9e\x30\xa4\x62\x00\x00\x00") - -func runtimeColorschemesIn_progressMonochromeMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesIn_progressMonochromeMicro, - "runtime/colorschemes/in_progress/monochrome.micro", - ) -} - -func runtimeColorschemesIn_progressMonochromeMicro() (*asset, error) { - bytes, err := runtimeColorschemesIn_progressMonochromeMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/in_progress/monochrome.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesIn_progressNanoMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x93\x4d\x8e\xdb\x30\x0c\x85\xf7\x3d\x05\xa1\x6c\x5a\x20\xf1\x05\xba\x4c\xd7\x45\xaf\x40\x49\x8c\x2d\x44\xa2\x0c\x8a\x42\xea\xdb\x17\xfe\x99\xcc\x4c\x2c\x77\x76\x02\xf4\x85\x7c\xfa\x5e\x7c\xba\xe6\x98\xa5\xb8\x81\x12\x41\xd1\x29\x92\x07\xbc\x29\x09\x78\xba\x61\x8d\x0a\xbf\xc8\x06\x64\x60\xe4\xdc\x7d\x73\x33\x7d\x89\x81\xef\xe0\x72\x4a\xc4\x0a\xc6\xe6\xe8\xc1\xc6\x4a\xa6\x71\xdd\x59\x09\xfd\xa0\x60\xdc\x84\xfc\x02\x70\x51\x9c\x07\x08\xf9\xe6\x4d\x67\x73\x8e\x60\x26\x8a\x31\x3f\x8e\x89\x4e\xa5\xd2\x16\xa3\x17\xa2\xf6\x9a\x15\xbd\x61\x2c\x6f\xec\xe1\x5a\xae\xc9\x92\x80\xd9\x0c\xb4\xa1\x32\x92\x0b\x18\xaf\x03\xca\x36\x2f\x61\x4f\xac\x78\x80\xab\x04\xee\x37\xb2\xf1\xa2\xe0\x89\x35\xdc\x02\xc9\x91\xd0\x77\xa2\x4b\xe8\x24\x1f\xbc\xa2\x28\x2a\x7d\x28\x66\x35\x02\x9f\x90\x29\xd9\x59\xec\x26\xeb\xb4\xbb\xea\x14\xe7\xa8\xaf\x09\x46\xa1\x51\xb2\x03\xb3\x76\xba\x6b\x54\xa7\x91\x9e\x53\x3f\x0e\x5d\x55\x81\x69\x19\x0a\x3d\x67\xa1\xb6\x6c\x12\xc9\x02\xe6\x31\x04\xa5\xb3\x8d\xe8\xee\x9f\xf7\x65\xff\x66\x61\x97\x25\xf0\xac\xeb\xe2\x96\x7a\xce\xfb\x4c\x31\x30\x5d\xfe\x5b\x74\x15\x99\x27\x7c\x09\xf6\x55\x95\xe4\xb2\x65\x3d\x2f\x61\x5b\xc0\x03\x85\x97\xbf\xc0\x9e\x70\x55\xca\x7a\x3e\x10\xb1\x1e\x5d\x8e\x35\xf1\x73\xc0\xe9\x77\x06\xfa\xab\xc4\x9e\xfc\xe2\xbe\xc0\x77\x58\x3e\x99\xc0\x70\x85\x1f\x3f\xe1\x4f\xc4\xc0\x60\x05\xdd\x9d\xb4\xbc\x56\xd5\x3d\x7f\xfc\xbe\xf3\x5f\x00\x00\x00\xff\xff\xc7\x7e\x46\xd6\x0f\x04\x00\x00") - -func runtimeColorschemesIn_progressNanoMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesIn_progressNanoMicro, - "runtime/colorschemes/in_progress/nano.micro", - ) -} - -func runtimeColorschemesIn_progressNanoMicro() (*asset, error) { - bytes, err := runtimeColorschemesIn_progressNanoMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/in_progress/nano.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesIn_progressPaperTcMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x91\x41\x72\xc3\x20\x0c\x45\xf7\x39\x85\x8a\x77\x99\xc4\xd3\x4b\x74\xdf\x2b\xc8\x20\x3b\x1a\x63\xc9\x23\x44\x33\xb9\x7d\x27\x6e\x17\x2d\x76\x0b\x1b\xe6\xbf\x2f\xa4\x0f\xdd\x3b\xae\x64\xe0\x37\x5a\xe8\x02\x6e\x95\x20\x6a\x56\x03\x4a\xec\xac\x72\xea\xde\x12\x3b\xa8\x00\x0a\x9c\x31\x7a\xc5\x7c\x86\xfb\x8d\x9d\x60\xc0\x38\x4f\xa6\x55\xd2\xcb\x69\x2b\xba\x66\x96\x19\x12\x8d\x58\xb3\x43\xe8\x5e\xb7\x75\xe9\x68\x7c\xee\xf0\xd3\x14\x75\x59\x48\x1c\x42\xa3\x4a\x71\xfc\x53\xee\x8b\x1b\xcb\xf4\x3f\xed\xab\x65\x08\x55\x12\x59\x66\x21\xd8\xa6\x48\xe9\x57\x09\x27\x12\xe7\x91\xc9\x20\x04\x38\x26\xfd\x07\x5a\xd3\xa9\xac\x14\x19\x73\xab\x3a\x3a\x1d\x84\x29\x8f\x65\xd0\x9d\x79\x13\xfb\xc1\x30\xce\xe4\xe5\x98\x3a\xb6\x19\xfd\xb1\xd2\x41\xdb\x5a\xb6\x88\x8d\x17\x87\x61\x37\x3a\x99\x69\xab\xb9\x26\xdd\xbd\xe5\xf3\x18\x35\xd7\x45\x1a\x34\x55\x77\xb2\xeb\xd1\x45\xdf\xe8\x8e\x26\x5f\xdf\xf3\x19\x00\x00\xff\xff\x48\x1f\x8a\xc4\x56\x02\x00\x00") - -func runtimeColorschemesIn_progressPaperTcMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesIn_progressPaperTcMicro, - "runtime/colorschemes/in_progress/paper-tc.micro", - ) -} - -func runtimeColorschemesIn_progressPaperTcMicro() (*asset, error) { - bytes, err := runtimeColorschemesIn_progressPaperTcMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/in_progress/paper-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesIn_progressPaperMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x92\x41\xb2\xa3\x30\x0c\x44\xf7\x73\x0a\x17\xb3\x05\x6e\x31\xfb\xb9\x82\x6c\x14\xe3\xc2\x96\x28\x59\x9e\x14\xb7\x9f\x32\xf0\xf3\x7f\x1c\xd8\xa5\xd2\xaf\xda\xdd\x8d\x7e\xff\x85\x15\xc5\xe8\x8c\x09\x7b\xf3\x67\x0a\x6a\x98\x0c\x98\xe7\x1c\x14\x8d\x05\xb7\x78\xe1\x42\xd3\xf8\xcb\x71\x64\x19\x62\xa0\xc5\x4c\xf8\x80\x12\xd5\x74\x36\x82\x5b\xfa\x9d\xed\x7e\x02\x8e\x53\x42\xaa\x00\xc7\xc9\xec\x54\xa3\x53\x56\xa8\x80\xdb\x80\x2e\xa5\x31\xab\x04\xf2\xa7\x85\x17\xc4\x77\x2e\x4c\x48\x1a\x1e\x01\xa5\xc6\x28\x78\x23\x8e\x09\x9c\xf0\xe9\x22\x38\xdd\x61\xff\x40\x5e\x69\xef\xcd\x5c\x84\x9c\x6f\x23\x65\x05\xc5\xa3\xf7\x85\xb8\x25\xcb\xd1\x74\x6d\x86\xe3\xff\xd1\x0a\xb8\x05\x35\x9b\xee\x1c\xf7\x0a\x52\xf0\x77\x21\x57\xc1\x55\xd8\x9d\xf2\xc7\xaa\xba\xad\x78\x99\x6a\x45\x17\x20\x9a\x2e\x81\x47\x52\x78\x2f\xee\x89\x05\xaf\x13\xa1\x08\x8b\xe9\x7a\x2b\xc1\xcf\xda\x96\x52\x9e\xf8\x25\x6e\x18\x23\x3f\xdf\x9d\xa9\x6e\x3a\xb8\x19\xbe\x3d\x3e\xc3\xc5\x40\x38\x50\x49\xf6\xf8\xc6\xed\x11\xd5\xb9\x4b\xae\x90\xe9\xf6\x13\xec\x3f\x19\x05\x6b\xeb\x1b\x77\xba\x2b\x22\x35\x49\xf3\x54\x33\xae\x2f\xaa\x28\xc3\x57\xe7\xb6\xed\x29\x3f\x41\x68\xbf\xd8\x56\x3f\x7e\x3a\x8e\x25\xd1\xab\xc8\xff\x00\x00\x00\xff\xff\x60\x0f\x26\x59\x79\x03\x00\x00") - -func runtimeColorschemesIn_progressPaperMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesIn_progressPaperMicro, - "runtime/colorschemes/in_progress/paper.micro", - ) -} - -func runtimeColorschemesIn_progressPaperMicro() (*asset, error) { - bytes, err := runtimeColorschemesIn_progressPaperMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/in_progress/paper.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesIn_progressSymbianTcMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x52\x4d\x6e\xec\x20\x0c\xde\x73\x8a\x88\x6c\x13\x29\xcb\xdc\xe3\x9d\xc0\x10\x33\x42\x0f\xec\xc8\x18\x55\xb9\x7d\x95\x16\x8d\x3a\x15\x99\x94\x15\xd2\xf7\x0b\xf6\xf8\xef\xc8\x2e\x02\x19\xcf\x89\x65\x4e\x91\xfe\x0f\x1b\x06\xa8\x49\x07\x3b\x2e\x5f\x67\x1a\x43\x58\x61\x59\xec\x4f\x92\xe7\x9c\x91\x4e\xd2\xea\x4f\xd2\x2f\x90\x8a\xc2\x15\x1a\x37\x24\x8d\x21\xa2\x0c\x76\x0c\x21\x84\xd5\xbf\xe0\xbb\xe0\x2e\xec\x9f\xe0\xd4\x33\x29\x3b\xfa\x08\xa9\x9f\x50\x14\x14\xaf\xeb\x95\x23\x3b\xbe\x90\xea\xb1\x63\x1f\x41\x11\x96\xf7\xa5\x94\x37\x7e\x8a\xa7\xde\xdb\xce\x66\xb5\xa4\x48\x78\xe3\x04\xce\xc1\x4d\xda\xf7\xd5\x73\xaa\x99\xfa\x95\xcf\x9c\x99\x6a\x76\x78\x67\x55\x45\x90\x74\x7e\x15\xbc\x19\xff\xa3\xaa\xa2\xcc\x7f\xf8\x93\xc6\xfc\x00\xa1\x48\x8f\xc1\xb6\xed\xb2\xa6\xd9\x9b\x26\x32\x2d\xc6\x34\xb3\xcf\x00\x00\x00\xff\xff\x6b\x89\x5a\x04\x9a\x02\x00\x00") - -func runtimeColorschemesIn_progressSymbianTcMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesIn_progressSymbianTcMicro, - "runtime/colorschemes/in_progress/symbian-tc.micro", - ) -} - -func runtimeColorschemesIn_progressSymbianTcMicro() (*asset, error) { - bytes, err := runtimeColorschemesIn_progressSymbianTcMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/in_progress/symbian-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesMaterialTcMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x93\x41\x8e\xa3\x30\x10\x45\xf7\x73\x0a\x0b\xb6\x4d\x94\x86\xc6\x38\xcb\x04\xf0\x3d\x0c\xae\xce\x58\x01\x1b\x15\xf6\x8c\x72\xfb\x91\x81\x30\x42\x6d\x88\xd8\x14\xe2\xb9\xaa\xfc\xff\xa7\x35\x9d\xc1\xa4\x53\xfa\x41\xe6\xb2\x35\x9d\xeb\x35\x89\xe2\x94\x66\x69\xc6\xa2\x5f\x1b\xa2\xef\x41\x5b\x12\xc5\x5f\x9c\xb2\x22\xff\x08\x43\x7a\xb4\x62\xa2\xf8\xb9\xf8\x2c\xd8\x21\x75\xd2\xae\x6f\x00\x3d\x5c\xb0\x92\x5e\x8f\xe1\x71\x80\x56\x89\xae\xfc\x2d\xfc\x09\x76\xa9\x2a\x9e\xbd\x39\x61\x51\xe9\x3b\x89\xe2\x32\xab\x19\xab\xc2\xb0\x43\x04\x6d\xfd\x0b\x24\xeb\x3e\xec\x5c\xd5\xf5\xce\x3e\x0e\xc7\xb9\x06\x12\xc5\x59\xf3\x25\x73\xba\x01\x24\x7c\x0b\xd7\x79\x09\xea\x9a\x73\xce\x83\x5d\xa4\xfa\xa3\xe4\x34\x6a\xfe\xf8\xb1\x8c\xdc\x40\x80\x68\x90\x44\x8d\xe9\x24\x59\xb9\x59\xd7\x0d\x77\x77\xd6\x02\x26\x0b\xbe\x8e\xdd\x27\xff\x0a\xd4\xb3\x32\x2b\xcb\xf9\x67\xb1\xbd\x87\x92\xa0\xad\xfa\x56\xb3\x20\xe9\xf5\xba\x73\x95\xff\xdc\xa9\x17\x2d\x1a\x6f\x27\x2f\x6f\xf4\x16\xa6\xb5\xc7\x93\x76\x76\x31\x3f\xfb\x27\x08\x6e\x0d\xa1\x39\x65\x94\x06\xc1\x01\x61\x40\xd3\x7a\x9b\x8b\x4b\xba\xe3\xda\x12\x9e\x37\x90\x15\x16\x96\x90\xbf\xc1\xdc\xb8\x04\xe0\x95\x94\x40\x10\xc6\x67\xdf\x18\x3f\xf2\x42\xcb\x1b\xaf\xc3\xbd\x26\xe6\xd4\xa0\x68\x1f\x60\xc7\xe3\x60\x2f\xb0\x19\x00\x85\x9d\xac\x3e\xd8\xd2\x8a\xa6\x11\x78\xbc\xa1\x35\xd2\xbc\xf2\x75\xd4\xea\x39\xc0\xb1\xab\x4e\x4b\x40\xaf\x88\x24\xd1\x5a\x93\x1f\x3f\xc0\xbf\x00\x00\x00\xff\xff\x5a\x13\x7a\x2c\x71\x04\x00\x00") - -func runtimeColorschemesMaterialTcMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesMaterialTcMicro, - "runtime/colorschemes/material-tc.micro", - ) -} - -func runtimeColorschemesMaterialTcMicro() (*asset, error) { - bytes, err := runtimeColorschemesMaterialTcMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/material-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesMonokaiMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\xcd\x6e\xab\x30\x10\x85\xf7\x79\x0a\xcb\xde\x06\x74\x43\x12\x43\x74\x57\x50\x60\x59\xf5\x15\x0c\x9e\xa4\x56\x8c\x8d\xfc\xa3\x36\x6f\x5f\x99\x92\x2a\x69\x5c\x5a\xbc\xb1\xc4\x37\x67\xc6\xc7\xc7\xbd\x96\xda\x24\x52\xa8\x33\xe2\x70\x64\x5e\x3a\x84\x49\x5b\xb4\x45\x9b\xad\x49\x56\x84\x85\x57\x37\x50\xaf\x87\x01\x54\x80\xf2\x7d\xbe\xd9\x37\x51\x48\x70\x50\x4e\x1c\x05\x18\x84\x09\xa5\xf5\xa1\x69\x7f\x10\x53\xd6\xb1\x49\xad\x6c\x8a\x4d\xbb\x4c\xa5\xd6\x19\xa1\x4e\x08\x93\x86\xd6\x55\xbe\xfb\x0b\x9c\xf6\xaf\x2c\x0c\x51\xd5\x0d\x2d\xeb\x68\x85\x75\xcc\xc1\x7c\xa6\xf6\x90\xd1\x3c\x7e\x70\x7b\x19\x3a\x2d\x97\x99\xd1\xc0\x68\x74\x8f\x30\x79\xaa\x76\xd5\x86\x46\x21\x77\x19\x61\xd9\x16\x3b\x42\x2f\x58\xe8\x55\xd2\x26\xcb\xe2\x1e\x7b\xc5\xc1\x48\xa1\x80\x23\x4c\xea\xed\x96\x16\xf1\x99\xc0\x18\x6d\x10\xee\xb4\xe4\x68\x71\x2c\xcd\xf5\x15\x5b\x90\x0b\x6e\x79\x1b\xfa\x22\x3c\xff\x5f\xcf\x79\xb9\x97\x63\x5d\x37\x39\xbf\xc0\x08\x15\x72\x92\xcc\x57\xb4\xff\x17\x56\xb4\x69\x68\x97\x28\x3f\x74\x53\xa0\xca\xe9\x5b\x93\x6d\x16\xd6\xfd\xed\x7b\x63\x82\x64\xbc\x20\xa2\x7c\xf2\xce\x81\x49\x66\x93\x96\xfc\x99\xc9\x37\x66\xd4\xef\x21\xf4\xc6\x7e\xee\x83\x4b\xb1\x39\xa7\x6d\xaf\xa5\x1f\xd4\x0d\x41\x9e\x35\x82\x77\x07\x8a\x03\x9f\x72\x62\xff\xa3\x17\xc9\x84\x42\x9d\x61\xfd\x19\x9c\x4d\xbf\x27\x29\xfd\xe2\xf1\xfc\x7e\xf1\x8a\x3c\xc4\x36\xbd\xd6\xdf\x50\x8f\x90\x63\xa7\xc8\x4b\xfc\x08\x00\x00\xff\xff\x92\xba\x33\x8a\x22\x04\x00\x00") - -func runtimeColorschemesMonokaiMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesMonokaiMicro, - "runtime/colorschemes/monokai.micro", - ) -} - -func runtimeColorschemesMonokaiMicro() (*asset, error) { - bytes, err := runtimeColorschemesMonokaiMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/monokai.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesRailscastMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\xd3\xcd\x6e\xdb\x30\x0c\x00\xe0\x7b\x9f\x82\xb3\xaf\x4d\x01\x37\x75\xda\x9e\xf7\x02\x3b\xec\x05\xf4\xc3\xda\xc2\x64\xd2\xa0\x28\x64\x7e\xfb\x41\x49\x10\x24\x98\x22\x14\xbc\xe8\xf0\x85\xe1\x9f\x1d\x47\x96\x5d\x0c\xf4\x07\x3c\x7e\x99\x1c\x15\xba\x1e\x0f\x38\x78\xf7\xdc\xbf\xda\x12\xdd\xd3\x0d\x72\xbc\x2c\x48\x05\x59\xf7\xf9\x36\x7e\x54\x51\x52\xa3\x78\x61\xce\xbd\x7f\xec\xf7\x0f\x72\x51\x52\x73\x52\x66\x74\xaf\x87\xa1\xa9\x5e\x2c\x73\x84\xae\x3f\xf8\x4f\x67\xb1\x4a\x75\x5b\xb1\x2d\x56\xc1\x55\xd8\xb5\xeb\x4a\x2b\xba\x60\x62\x1b\x65\xf2\x28\x31\x10\xfa\xb6\x53\xf6\x0c\x9d\xe5\xe8\xa1\xc5\x50\x84\xe5\x1b\x6e\xca\xaa\x28\xbb\x0b\xbf\xca\x61\x18\xc6\xe1\xe7\x9d\x0c\xe4\x91\x74\xe7\x66\x53\xe0\xdb\x50\xa2\x9a\xb2\x34\xb1\xa3\xbc\x58\x2c\xd0\x0c\x25\x9e\xfb\xfd\x58\xe2\x7e\x13\x59\xa4\xa4\xbc\xff\x41\xe3\x58\x2e\xc5\x1e\x8d\x50\xa0\xe9\x66\xcd\x95\x72\xd3\xb6\xd8\xd3\x7e\xd1\xdb\xf7\xb1\xde\x7c\x28\x1d\x85\xaf\x70\xfe\xdf\xc7\xae\xdc\x5f\x4e\xa5\xcc\x9b\x86\xce\x13\xb8\xdf\x8d\xb1\xd6\x5c\xa7\xde\x80\x2e\x4b\x3a\xbf\x4b\xc6\xda\x68\x4e\x4f\xc7\x31\x2f\x54\x17\x69\x35\x0e\xa1\xbb\x9e\x0d\xfc\x37\xb8\xa7\x5e\x67\x84\x5f\x9b\xce\x4c\x90\x36\x52\xf3\xb7\x7c\x93\x81\x82\x06\x26\x30\x82\x70\x14\xa6\xe9\x05\x7e\xcf\x21\x41\x48\x40\xac\x30\xf3\x11\x36\xce\x90\x66\xce\xd1\x83\x67\xf0\xe8\x58\x8c\xb2\xa4\x1f\xb7\x05\x58\x09\xd3\xac\x93\x20\x52\x65\x7a\xff\x02\x00\x00\xff\xff\x67\xd0\x3f\x5f\x08\x04\x00\x00") - -func runtimeColorschemesRailscastMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesRailscastMicro, - "runtime/colorschemes/railscast.micro", - ) -} - -func runtimeColorschemesRailscastMicro() (*asset, error) { - bytes, err := runtimeColorschemesRailscastMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/railscast.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesSimpleMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x92\x4b\xce\xdb\x30\x0c\x84\xf7\x39\x05\xa1\x6c\x5a\xe0\x8f\x2f\x91\xae\x7b\x07\x4a\x66\x64\x22\x32\x19\x50\x14\x52\xdf\xbe\x70\xe2\xa6\x55\xe2\xee\x04\x7c\x33\xd4\xf0\x91\xb4\xa8\x9d\x0a\xcb\x15\x92\xce\x33\x89\x43\x88\xa5\x51\x38\x74\x44\xaa\xe3\x8a\x8c\xc6\x8e\xf0\x48\xe2\x7c\x61\x32\x08\x69\x41\xe9\x60\x75\x74\x7a\x96\x5c\xa8\x14\xbd\xf7\x74\x99\xa3\x96\x5d\x74\x33\xba\x99\x26\x08\x33\x66\x12\xc7\x0e\xfa\x72\x23\x08\xd9\x88\xde\x7e\xbb\x51\x62\x2c\xfb\x26\xce\xa2\x46\x10\x46\xba\x60\x2b\xde\x31\x32\x53\x83\xf0\x15\x8d\xf3\xe4\xef\x1d\xba\x8e\xfa\x82\x3b\x59\x59\xd6\x11\x9c\xd2\x84\xb6\x4e\x0e\xd3\xb5\xc3\x85\x85\x4e\xd2\xe6\xb8\x4e\x68\xc7\x9e\x9a\xd9\xea\xef\x74\xef\x19\x72\x73\x27\x3b\xfd\x09\xfa\x1f\x7c\x47\x13\x96\xbc\xd9\x8f\xe7\x66\x55\xed\x11\x00\x12\xb6\x4a\x15\x8c\x70\xc4\xc8\x85\x7d\x01\xae\xb5\x51\x1d\xe0\x07\x57\x8c\x85\x46\xb8\xa8\x81\xe8\x7d\x38\x1c\xfb\x78\xf5\xf9\x26\x08\xf7\x89\x9d\xbe\x3e\x7b\x7c\x3e\x93\x96\x36\xcb\xa6\x0a\x87\xe3\x4f\x05\xfa\xe5\x24\x23\x8d\x8f\x9d\xd5\x01\xbe\x45\xd5\x02\x2c\x70\xfe\xfe\xbe\xd1\xe1\xa5\xfd\xbb\xa3\xb5\x44\x34\x4c\x57\x72\x98\x38\x4f\x65\x5d\x01\x4b\x1e\x3e\xcf\x68\xd8\x74\xf5\x5f\xfb\x79\x55\x41\x9d\x28\xa2\xe4\x0a\x3e\xd1\xeb\xc6\x1f\x05\x76\x4e\x6e\xd8\xd4\x10\x36\x65\x38\xfc\x0e\x00\x00\xff\xff\xce\x91\x76\x31\x22\x03\x00\x00") - -func runtimeColorschemesSimpleMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesSimpleMicro, - "runtime/colorschemes/simple.micro", - ) -} - -func runtimeColorschemesSimpleMicro() (*asset, error) { - bytes, err := runtimeColorschemesSimpleMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/simple.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesSolarizedTcMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x93\x41\x73\x82\x30\x10\x85\xef\xfd\x15\x19\xb8\x8a\x83\x44\x68\x38\x8a\xb6\xff\x23\x24\xab\x66\x0c\x09\xb3\x24\xd3\xfa\xef\x3b\x01\x5b\x6b\x1b\x73\xcb\xe1\xdb\xb7\xcb\x7b\x0f\x61\xb5\xc5\x42\x2b\x73\x21\x12\x8e\xdc\x6b\x47\xb2\x9c\xd1\x76\xdb\x36\xab\xbc\x2c\x2b\x46\x69\xf6\xf2\x0b\x12\x76\x18\xc0\x04\xa8\x66\xcd\xdb\x6b\x1d\x85\x94\x04\xe3\xd4\x51\x01\x92\x2c\xaf\x1a\xd6\x1d\xaa\x27\x62\x66\x72\x7c\x56\xab\x76\xbb\x4d\xcb\x92\xd4\x7a\x1a\x41\x28\xae\xf7\x67\x1e\x74\x0f\x7b\x5a\x55\xef\xd1\x89\xc9\x71\x07\xb7\x33\x59\xdd\xb6\x65\x19\xc7\xae\x43\x6f\x75\x9a\x19\x11\x46\xb4\x82\x64\xf9\xbe\xdb\x76\x9b\xb8\x29\xee\x3a\x02\xc9\xf2\xae\x66\x4f\x57\x2d\xa7\xa7\xed\xf0\x46\x02\x6a\x65\x40\x86\xcf\xa3\xb4\x61\x71\x0e\x10\x2d\x92\xac\xb7\x5a\x92\xe4\x59\x56\xda\x6f\x2c\x21\x17\xdc\xf2\x53\xd8\x4b\xb2\xbc\x2c\x69\xbd\xdd\xac\x6e\x15\x78\x94\xe3\x7d\x3f\x3b\x9f\x60\x94\x09\xd1\x17\xe2\xfc\x00\x46\x96\x86\x75\x85\xf1\x43\x3f\x77\xe4\xde\xa5\x30\xf0\x98\xbe\x47\x0c\x92\xcf\x06\xfe\x29\x9f\xbc\x73\x80\xc5\xcd\xa4\x9f\x1b\x16\x9f\x62\xe4\x07\x47\xa3\xcc\x29\x1d\xb1\xf0\x38\x2d\xef\xbb\x4b\x7f\x5a\x1a\x9e\xc2\x6a\x3f\x98\x38\x11\x5a\xb2\x86\x4f\x07\x46\xce\x09\x27\xfe\xb2\xa5\x99\xeb\x1e\xb9\xb8\x80\x9b\x22\xf0\x57\x00\x00\x00\xff\xff\xed\xf4\x43\xd7\xb8\x03\x00\x00") - -func runtimeColorschemesSolarizedTcMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesSolarizedTcMicro, - "runtime/colorschemes/solarized-tc.micro", - ) -} - -func runtimeColorschemesSolarizedTcMicro() (*asset, error) { - bytes, err := runtimeColorschemesSolarizedTcMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/solarized-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesSolarizedMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x92\x51\x6e\x03\x21\x0c\x44\xff\x7b\x0a\xc4\x77\x36\x97\xe8\x49\x0c\x38\x1b\x14\xb0\x57\xc6\x28\xdd\xdb\x57\x88\xb4\x5a\xb2\xa8\xfd\x43\x9a\xc7\xcc\x60\xe3\x39\xb1\x2c\x29\xd2\xc3\x78\xce\x19\x49\x8d\x75\x9c\x82\x71\x12\xd7\xbb\xae\x82\x48\xf6\x63\xa0\xa8\x28\x34\xcc\xef\x30\x97\xae\x65\x43\x1f\x21\x7d\xde\x41\x8c\x15\x0c\x03\x15\x03\x92\xc6\x5b\x44\x31\xd6\xa5\x8a\x83\x58\x14\x14\x7b\x8b\x73\x74\xd9\xb3\xe3\x34\x53\x36\xc1\x4d\xd8\x1b\xdb\x5b\xbf\x47\xea\xbe\xa1\xb1\x3b\xa6\xc4\xcf\xd1\xb1\x17\x9d\x14\xa9\x14\x50\x52\x24\x0c\xc6\x66\x58\x91\x14\x06\x1d\x45\x58\x86\x51\x9d\x42\x39\xf0\x0b\x98\x19\xb4\x97\xd6\xd2\x12\x5a\x3a\xf8\xc7\xa5\xdb\x9c\x9a\x28\x38\x07\xf2\x0f\x14\xa9\x4d\x75\xf1\xf7\x5f\x72\x90\x5b\xcc\x42\x35\x3b\x94\xf3\x7a\x2f\x67\xde\x57\x91\xe6\xf7\xf7\xbd\x80\x37\xa8\x49\x87\x9b\x6b\x55\x45\x59\x7e\xc6\x73\xe8\xfc\x3e\x9f\x17\xf9\x04\xa1\x48\xeb\x61\x75\x53\x5f\x5f\xa5\xf4\x33\xce\x1e\xd8\x8f\x9e\x53\xcd\x34\xd3\xdb\x0f\xb8\xe2\x97\x22\x85\xb6\xd1\x59\x42\xff\x5d\x57\x27\xe0\x1f\xa8\xe5\x00\x7d\x07\x00\x00\xff\xff\xe2\xcf\x66\x2a\x24\x03\x00\x00") - -func runtimeColorschemesSolarizedMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesSolarizedMicro, - "runtime/colorschemes/solarized.micro", - ) -} - -func runtimeColorschemesSolarizedMicro() (*asset, error) { - bytes, err := runtimeColorschemesSolarizedMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/solarized.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesTwilightMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x93\x51\x8e\xb2\x30\x14\x85\xdf\x5d\x05\x81\x57\x35\xe0\x3f\x60\xfb\x58\x81\xae\xe0\xdf\x40\x81\x3b\xda\x08\x2d\xb9\x2d\x63\xdc\xfd\xe4\x82\x33\x19\xb4\xe6\xbc\xb4\x39\x9f\xed\xe9\xb9\x92\x44\xff\x6f\xba\xd7\xe7\x8b\x8f\x5a\xdb\x5b\x8c\x5c\x7b\x81\x01\x36\xf3\x66\xd7\x6b\x73\x8d\x3a\xf8\x54\x53\xef\xa3\x38\x91\x8c\xb4\x4d\xb2\x0f\x52\xfc\x17\x5a\x96\xad\xed\xa7\xc1\x44\x71\x92\x9d\x48\x4f\xc4\x30\x80\xa1\x63\x72\x99\x8b\x22\x7d\x32\x8d\xf3\x6a\x76\x4b\x59\x88\x8f\x32\xde\x24\x01\x7b\x6f\xa6\xa1\x01\xfc\x43\x85\x20\x37\x42\xab\x55\x5f\x5e\x14\x91\x55\x25\x0f\xe2\x39\xec\x0f\xe9\x51\x9b\x73\x14\x27\x4c\xf2\xaa\x10\x6b\x68\x42\x04\xe3\x69\x03\xbb\xdf\x7b\x59\x41\xda\x06\x1f\x38\xa1\x5b\xd6\x10\x6e\xa0\xd3\x5f\xba\x9b\x4f\xc9\x6a\xd2\xca\x04\x44\x3b\xc7\x3d\x08\x26\xb2\x95\x75\x9e\xbc\x07\xdc\xfd\x10\xfc\xc4\x72\x5e\x85\x88\x9b\x42\xb3\xbc\x27\xc0\xe8\x0e\x8c\xd7\x9f\x1a\x96\x33\x8e\xe9\x3f\xf9\xc6\xdf\xb7\xbd\x72\x8e\xb2\x88\x2a\x65\xf9\x3b\xea\x6b\xae\xf7\x98\xb3\xa3\x28\xd6\x8c\x21\x68\xd7\x2e\xfd\xe7\x19\x69\x05\x84\x2a\x5d\x01\x23\xc2\x88\xb6\x8d\xe2\xa4\x4e\xcb\x9c\xf1\x95\xf9\x18\xef\x1b\xd3\x2b\x0f\x8f\xff\x59\x59\x09\x56\xbc\xda\x93\x7b\x8c\x68\x49\xb6\x0d\x4d\xc3\xdd\x87\xc6\xd2\x15\xa2\x64\x2c\x3f\x05\xbc\x7d\x83\xaa\xbd\x82\x77\xbf\xdf\x45\x08\xb2\x23\xa0\xf2\xf3\xd8\x42\x69\x16\xc8\xab\x73\xf8\x26\xaf\x9a\x66\xee\x50\x1e\x64\x5a\x97\xdb\xe4\x50\x91\xd6\x8c\xed\x2c\x95\x78\xe2\x4c\x3c\xfd\xfa\x3e\xd2\x2b\x25\xaf\x6b\xce\x5e\x9c\xfd\x15\xee\x37\x8b\x5d\x38\xd9\x64\x3a\x40\xaa\x89\x7c\xc6\x79\x21\x58\xbc\xf9\x0e\x00\x00\xff\xff\x50\x4e\x7e\x42\x2c\x04\x00\x00") - -func runtimeColorschemesTwilightMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesTwilightMicro, - "runtime/colorschemes/twilight.micro", - ) -} - -func runtimeColorschemesTwilightMicro() (*asset, error) { - bytes, err := runtimeColorschemesTwilightMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/twilight.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeColorschemesZenburnMicro = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x92\xd1\x6e\x84\x20\x10\x45\xdf\xfb\x15\xc4\x67\x6d\x0a\xba\xea\xef\x20\xcc\x6e\x49\x71\x30\xe3\x90\x66\xff\xbe\x99\xdd\xb6\xa9\x05\xdf\x48\xce\x65\x3c\x5c\xc7\xa5\x98\xa8\x8b\x01\x3f\x94\x87\xab\xcd\x91\x55\xa3\xe7\xb9\x35\xfd\xd4\xbc\xfc\x81\x2e\xad\x2b\xa0\xc0\xb7\x1a\xc4\x9d\x2d\xf2\xeb\xce\x14\xf0\xa6\x1a\x3d\x0d\xe7\x21\xcc\xeb\x02\xa4\x1a\xad\xc7\xd3\x90\x48\xe8\x82\x06\x0f\xc8\xe1\x1a\xe4\xb6\x31\x7d\xc1\x77\xb6\x0c\x4f\xcd\x2a\xbe\xaf\x4b\x8a\x75\xb6\x11\x6c\x94\x5c\x1d\xf2\x7d\x03\x31\x9a\xca\x91\x1b\xb8\x60\x63\x5d\x37\xa3\x07\x8a\x01\xc1\xd7\x3b\x05\xa2\xf4\xe8\xe1\xd2\x9a\x7e\x3c\x7e\x31\xf9\xa4\x9a\x25\x45\xaf\xcc\xa5\xec\x52\x1e\x9a\x77\x19\x2d\x93\xc7\xf2\xba\x5d\x16\x4b\x75\x16\x50\x5a\xec\xdc\xbb\x04\x4c\x5f\x6a\xc9\xd8\xee\xe7\x27\x99\x41\x02\xf3\x21\x70\xcb\xcc\x40\xdd\xb7\xbe\xe9\xa7\x56\x4f\x43\x2d\xf1\x69\x09\xcf\xf7\x21\xd3\xfe\x3c\xc3\xc3\xe3\xdf\x1e\xc8\xd1\xa5\x98\x57\xac\xd0\x4c\x24\x6f\x38\x98\xfe\x36\xfc\x15\x00\x00\xff\xff\x4e\x40\x3f\x86\xd3\x02\x00\x00") - -func runtimeColorschemesZenburnMicroBytes() ([]byte, error) { - return bindataRead( - _runtimeColorschemesZenburnMicro, - "runtime/colorschemes/zenburn.micro", - ) -} - -func runtimeColorschemesZenburnMicro() (*asset, error) { - bytes, err := runtimeColorschemesZenburnMicroBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/colorschemes/zenburn.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeHelpColorsMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x5a\x6d\x73\xdc\x36\x92\xfe\x8e\x5f\xd1\x91\x73\xa5\x91\x6b\x86\xb2\x77\xef\x72\x7b\xba\xdc\xa6\xb4\xde\xbc\xb8\x2a\x8e\xab\x62\xa5\x2a\x5b\x96\xeb\x08\x92\x4d\x12\x3b\x20\xc0\x03\x40\x8d\x26\x19\xdf\x6f\xbf\xea\x06\xf8\x26\xc9\xc9\xde\x7e\xb2\x86\x00\x1b\xfd\xfa\xf4\xd3\xa0\x9f\xc1\x2b\xab\xad\xf3\x42\xdc\xb4\xca\x43\x8b\xba\x87\x5e\x36\x08\x52\x75\x1e\x82\x85\xd2\xde\xa1\x83\x70\xb0\x20\x7d\x8f\x65\xf0\x60\x6b\xe8\x54\xe9\xec\xb9\x07\x7f\x34\x41\xde\x43\xab\x9a\x56\xab\xa6\x0d\xca\x34\x80\xa6\x51\x06\xaf\x84\xd8\xc1\x77\xf6\xc0\x22\x1c\xca\x80\x50\xf2\x41\x65\x8b\x1d\x7a\x90\xa6\x82\xc1\x23\x84\x16\xbb\x47\x3b\x93\xd8\x5a\x69\x64\x1d\x64\x55\xd1\x3f\xa1\x45\xd0\xca\x07\xd2\x40\x4b\xd3\x0c\xb2\x41\x1f\x75\x81\x52\x9a\x59\x0d\x21\xc4\xb3\xd1\xb0\x78\x9e\x10\x37\x16\xca\x56\x9a\x06\xe1\x68\x07\xb7\x54\x66\x0b\xbd\x43\xef\xe1\x55\x70\x7a\xf7\x35\x28\x93\x44\x06\x0b\x85\x23\x8b\x86\x9e\x8f\x2e\x6d\xd7\x49\x53\x89\xde\xd9\xae\x0f\x5b\x36\x21\x1c\x7b\xbc\x12\x79\x9e\x0b\x8f\x61\x29\x14\xbc\xd5\xd2\xa9\x5f\xb0\xe2\xd5\x8d\x75\x70\x68\x55\xd9\x22\x79\x73\xb9\xef\x68\x07\x28\x5b\x6b\x3d\x5e\x64\x42\xbc\x89\xc6\x58\x72\xd1\x41\x85\x16\x24\x98\xa1\x2b\xd0\x91\xcd\x2b\x07\x16\x47\xa8\xb0\x96\x83\x0e\x19\x7c\x87\x0e\x41\xf9\xc9\x41\x57\x64\xff\x33\xf8\xc3\xbf\x7d\x11\xdf\xa1\xe0\xa2\x47\xf0\xad\x1d\x74\x05\x07\xeb\xf6\xac\xbd\xb6\x76\x0f\x46\x95\xc8\x46\x5b\x1f\x20\xa0\xeb\x94\x91\xda\x67\xf0\x1a\x1c\x92\xc9\x48\x66\xd2\xeb\x22\xc4\x93\xe9\x14\xda\x9c\x09\xf1\x1c\xf2\xce\x1a\xbb\x97\x2a\xbf\x82\x40\x09\xa4\xc6\x75\x7e\xba\x54\xf9\x3f\xd9\xd4\x4e\x1e\x59\x6e\x63\xd4\x2f\x08\x2a\x80\xf4\xf0\x6e\x28\xb4\xea\x50\x00\xdc\xe0\x7d\x38\xf7\xa3\x61\xcb\xb7\x33\x78\x1d\xc0\xe1\xff\x0c\xca\x91\x0a\x6e\x48\xf9\x44\x51\x62\x33\x7a\x74\x35\x96\x61\x0b\xc5\x10\x48\x05\x01\xb3\xfd\x20\xfb\xde\xd9\x7b\xd5\xc9\xa0\xac\xe1\xfd\x1e\xee\xd0\x1d\xa1\xb1\xb6\x22\x15\x0e\xa8\x35\x1d\x71\xee\x41\x6a\x1f\x53\x2d\x69\x21\x60\xa5\x07\xd9\xfc\x0b\x9a\x62\x70\x26\xa7\xbf\x1b\x37\xdc\x15\xf6\x9e\xff\xae\xa4\x2b\x07\x2d\xf9\xef\x70\x50\x9c\x8b\xfc\xc3\x49\xa5\x7d\x29\x7d\xfc\x55\x0c\x45\xa1\xb1\x19\xba\xfc\x0a\x24\xf0\xae\xe5\x11\x31\x78\x2f\x1f\xc4\x8e\x1c\x77\x27\xdd\x11\x0e\xaa\x42\x7d\x84\x42\x7a\xac\xc0\x1a\x56\x75\xdc\xec\xc1\xa3\xc6\x32\x60\x05\xb5\x75\x31\xd3\xc7\x90\xc6\x70\x79\xd5\xf5\x1a\x1f\x44\x2b\x3e\xf4\x8f\x1d\x3e\x78\xf4\x0b\xe1\x9c\xc1\x20\x1d\x02\x65\x7b\x71\x14\xb0\x3e\x82\x0f\x18\xf3\x3e\xbf\x82\xbf\xd9\x61\xcc\xb9\x56\xde\x61\x3c\x6b\x5c\x4f\xa1\xe9\xa5\xc6\x10\x38\x03\x57\xb2\x28\xb0\x11\x20\x94\x5f\x15\x4c\xef\x6c\x8f\x4e\x1f\x39\x12\x65\x57\xee\x5e\x7e\x91\x8f\x7f\xf6\xb2\x47\x97\x5f\x41\x7c\x1c\x73\xc1\x1a\x90\xa4\x79\x40\x28\x64\xb9\x6f\x9c\x1d\x4c\x95\xc1\xe6\xba\x0c\x83\xd4\xfa\x98\x02\xd0\x38\x24\x7b\x6c\x2a\x84\xeb\x1f\xde\xbd\x86\xcd\xcb\x2f\x76\x7c\xf4\xc5\x5c\x18\x17\x1c\x74\x94\xe6\x98\x5f\x2d\x21\x66\x0e\x08\x2f\x2e\xb2\x78\x89\x8e\x59\x0c\xee\xcd\x94\xbf\x63\x78\x53\x6a\xcf\xe7\x40\x68\x65\x00\x3f\xf4\xbd\x75\x61\x99\xf0\x54\xb8\xe3\xee\xfc\xcd\xeb\x57\x3f\xbe\xfd\xef\x9b\x1f\x7f\xfa\xfa\xd5\xdb\xef\xdf\xfe\xf8\x5f\x2f\x73\xd8\x8c\x91\x95\x06\xd0\xdc\x29\x67\x4d\x87\x26\x50\xf2\x28\x59\x68\x86\x99\x65\x9c\x76\xa1\x7c\x98\x0e\xeb\x10\x25\xfb\x28\xa1\x66\x35\xd8\xfb\x32\xd8\x6e\x57\x49\xb7\x5f\xc8\x58\xbe\xa2\xfc\xe8\x95\xba\x26\x00\xbb\x0e\xb6\x3b\xf7\x70\x46\xaf\x9c\x3d\xaa\x2a\x0a\x1a\xcb\xb9\x9e\xcf\x19\x5c\xd4\xdb\x30\xe8\x33\x0a\x77\x25\x37\x0d\xcc\xe0\xd3\x90\x20\x20\x82\x82\x0a\x1e\x0a\xf4\x21\x83\x9f\x3c\xa6\xac\x00\x55\x3f\xc8\xb4\xca\xa2\x37\xe7\x4f\x39\x3b\x5b\x54\x78\xd4\xed\xa6\xc5\xe5\x51\x77\xe8\x3c\x41\x4a\x52\x2e\x6d\x5d\x55\x33\x49\x50\xa1\x1d\x8a\x7f\x44\xc0\xb7\xbc\xf3\x31\x1a\xbc\xb1\xc6\x96\xad\xb3\xf4\x9b\xaa\x8a\xda\x1d\x03\x15\x95\x08\x63\x70\x5c\xcd\x93\x75\xe7\x15\x35\xb5\x1a\x19\x1f\xb9\xf6\xfe\x3e\x78\xc6\xc5\xc9\xec\x39\x43\x45\x6d\x1d\xc6\xba\xe0\xec\x9a\xcb\x24\x29\x92\xc1\x0f\x36\x20\xe9\xae\x3c\xd5\xdf\x9d\xaa\xd0\x83\xb1\x4f\xf5\xff\xcf\xa2\xc2\x6f\x43\x8b\x4e\x88\x77\x88\x90\x33\xa9\x68\x54\xd7\xa9\x72\x1f\x05\xe6\x9c\x4d\x72\xea\xe6\xde\x76\xb8\x0a\xfa\xd4\x6a\x64\x60\xbc\xe9\xac\x43\x10\x6c\x03\xbd\x59\x0f\x84\x7b\xd2\xf0\x0f\x8f\x4e\xd9\xc1\x93\x2b\x32\xd8\xdc\xb4\x76\x68\x5a\xa8\x11\x35\xd4\x0e\x31\x39\x04\x0e\xd2\x84\xcf\x2e\x12\x33\x20\x9a\x41\x9d\x5d\x2e\x2b\x38\x75\xdf\x73\xff\x80\xa9\x38\x8c\xae\xc6\xfb\xe0\xb0\x23\xec\x8d\x78\x39\x13\x96\x8c\xa3\x3a\xd6\xbb\x35\xe8\x29\x40\xa2\xa0\xa2\x19\x4c\x25\xde\xb7\xe8\xf0\xc3\xa6\x0d\xa1\xf7\x57\x97\x97\x31\x1d\xb2\xd2\x76\x97\xbf\x1c\xb1\x52\x95\x92\x97\x4c\x39\x2e\x83\x43\xbc\xec\xa4\x0f\xe8\x2e\xdd\x60\x82\xea\xf0\x72\xa9\x0c\xd5\xee\x4d\x8b\x47\x56\xca\x1a\x7d\x04\x59\xd8\x21\xc0\xcb\x3f\xed\xfe\xf8\x02\xb4\xa2\x93\x95\x81\x60\x03\xe3\xfd\x5f\xa4\x57\x25\x63\xdc\xcc\xad\x22\x93\x59\xf3\x0f\x83\xc8\x04\x4b\x2b\xb3\x9f\x83\x09\x94\x03\x7d\xe4\x21\x42\x32\x5a\x4e\xf9\x70\x93\xe0\xa2\xb2\x06\x61\xf0\xe4\x4b\x12\x9c\xf3\xfa\x8e\xe4\xe4\x23\x5f\xca\x84\xf8\xc6\x3a\xc0\x7b\x49\x4e\xdb\x72\x42\x4e\x47\x48\xad\x21\x92\x8c\xc0\x9a\x37\x0e\xd1\x6c\x63\xc0\xb8\x6f\x24\x8e\x38\x0a\xbb\x12\x4c\xa7\xe6\x63\xc6\xb7\xe1\x8c\x5f\x3d\xe3\x65\xf1\x97\x87\x19\x3c\x17\x4c\x81\x40\x3c\x56\xd5\x0a\xab\x91\x62\xb1\xf0\xdf\x13\xbd\x2d\xf4\x80\x49\x3e\x9b\x7f\x50\x5a\x43\xa3\xee\x66\x05\xd9\x0a\x09\xb4\x71\xd9\x6b\x84\x78\x5d\x2f\x4c\xd2\x6a\x8f\x54\x3c\x8b\xaa\x3b\xa6\x92\xe6\x04\x27\x93\x93\x4e\x51\x41\x63\x43\x4b\x1e\x56\x06\x6a\x67\x4d\xf8\x0d\x4d\x97\x4a\xae\x70\xa2\x1f\x02\x14\x56\x57\x5b\xb0\x0e\x06\x53\xa1\xa3\x6c\x99\x44\x4e\xe8\x4a\x32\x7f\x43\x3e\x89\x00\x87\x55\x3a\x62\xb7\xdb\x71\x42\x52\x89\x50\xf3\x6a\xa9\xe0\x2a\x55\xd7\xe8\x68\xfb\x41\x1e\x99\xbf\x47\x87\x1f\xe7\x13\x32\x21\x5e\x45\xa8\x9e\xda\xdd\xe0\x63\x37\x66\xb0\x9a\x29\xc7\x84\x00\xc4\xd1\x99\x74\xb0\x94\xc1\xa3\x4b\x59\xd8\xa1\x34\x5e\xf0\xbe\xe4\x46\x63\x03\x54\xd8\x13\x71\x65\x7e\x64\xfd\x98\xf2\x20\x35\xeb\x54\xe0\x98\xb1\x5e\x52\x27\x19\x5d\x15\xb3\xcd\x7a\x14\x23\xe3\x21\xff\xd3\x3e\x23\x09\x0b\xf2\x42\xcb\x72\xbf\x25\x0f\x6c\xa7\x5c\x45\xad\xed\x61\xcb\x51\xdf\x42\x27\x1b\x34\x41\x6e\xa1\x3c\x4a\xb3\x8d\xbc\x23\x17\x32\x72\x68\x9a\x27\x28\xeb\x53\x4b\xe3\x51\x0a\x65\xd9\x12\x64\xc0\x26\x2e\xa6\x13\xe2\x0f\x87\x55\x96\x65\xa9\xea\xcd\x94\x26\x63\x51\xcc\xde\x9b\xa8\x2e\x0f\x06\x53\x41\x2a\x97\xc6\x07\x0f\x2f\x77\xb4\x67\x93\x7e\x8a\x97\xd4\x09\x39\x83\xa7\x36\x31\x9a\x39\xd6\xcc\x45\x4c\xdc\xd1\xdd\xe7\x7e\xee\x98\xa9\x53\x2e\xbb\xee\x96\x36\xce\x2a\x72\xd2\x8d\x71\x8f\xf2\x04\xde\xcb\x32\xe8\xb5\x7a\x2d\x52\xb7\xac\x90\x06\x8e\x7a\x65\x14\xc1\x0b\x45\x72\xd1\x2c\x89\xce\xc5\xd9\x4c\x79\x11\x28\x15\x13\x49\x94\xcb\x5d\x2b\x06\x12\xa2\x91\x32\x04\xec\xfa\x40\xfb\x3b\xd9\x2f\x40\x70\x34\x5c\xc8\x3b\xa9\x34\xf1\xa3\x85\x2f\x33\x21\xbe\x45\x83\x8e\x13\x73\xd5\x14\x22\x13\x9e\x48\xdb\x82\x7b\xcc\xfc\x2d\x0d\x26\x71\xc4\x70\x28\x3a\xe9\xf6\x33\xe6\xe4\x44\x07\xc0\x0f\x75\xad\xee\xb9\xeb\x3e\x21\x9f\xdc\x4c\x18\xff\x88\xbe\x3e\x29\x2f\x92\xdf\x24\x32\x4b\xc5\x39\x8e\x86\x73\xaf\x7d\xd8\x00\x12\xca\x2f\x0b\x88\x7c\x7a\x45\x2c\x71\x6c\x69\x9b\x68\x5c\x7a\x7b\xa9\x87\xa9\x96\x38\x56\x33\xb8\x4c\xf0\x4e\x5d\x05\xef\x03\x51\xe6\x84\x20\xe2\x39\xa8\x0a\x4d\x20\xf8\x75\xfc\xd8\xf8\x20\xf9\xb9\x0f\x32\x60\xda\xe3\x8f\x5d\x61\x69\x9c\xe8\x1d\xf6\xce\x96\xe2\x39\x4f\xda\xb4\x42\x29\xc5\x93\xc6\x04\x62\x95\x78\x0e\xe8\x9c\x25\x79\xc1\x56\x36\xc9\x1a\x3c\x23\xdc\xe6\xd5\x52\xf5\x79\x81\x94\x0a\xb2\x28\xa4\x7b\xb0\x25\x3d\x64\x7f\x90\xcf\x3c\xd8\x1e\x4d\xbc\x8c\xa0\x97\x94\x21\x03\x76\x65\xfb\xe8\x4d\x7a\x24\xcb\x80\x69\xd4\xa7\x9d\xaa\x94\x81\x78\x8c\x2c\x3c\x11\x11\xda\x65\x7b\x1e\x42\x95\x17\x00\x68\x28\xe3\x2a\x12\x4b\x3a\xed\x62\x75\x8a\xe7\xd0\x0c\x21\xa0\xdb\x8d\x66\xa5\x9f\x07\xe9\x8c\x32\x0d\xf9\x6d\x70\x3e\x82\x33\xc6\x5f\x84\xb7\xbb\xb5\x8c\x88\xdf\xa5\xd5\x43\x67\x48\xef\xc6\x58\x47\xbb\x2b\x45\xfc\xed\xa1\xf2\xe3\xd3\x02\xc3\x01\xd1\x10\x31\x0d\x44\x1e\xc0\xf7\x5a\x05\x7f\x91\x10\x7b\x4c\xd0\x8e\x3a\x55\x81\xd0\x6b\x59\x62\xc5\xa4\x83\xfa\xff\xff\x5e\x66\xa5\x35\xb5\x6a\x12\xa1\x59\x26\x75\x0e\x95\x72\x58\x06\xeb\x88\x8f\x10\x3b\x1a\x3c\x56\x63\xa2\xbe\x36\x20\xab\x4a\xb1\x6f\x52\x4d\x76\x52\x99\x27\x52\x95\x91\x26\x75\x1c\x3f\x14\x4f\xe4\xaf\x18\x81\xa7\x38\xb2\x50\xd3\x40\x9e\x8d\x5b\xf3\x51\x3c\xff\x62\xd8\x21\xc2\xec\x30\x32\x24\xda\xcc\xe3\x81\x3d\x18\x28\x07\x1f\x6c\x27\x96\xf7\x51\xdb\xa9\x48\x3a\xb9\x67\x13\xc8\x83\xd3\x1b\x93\x42\x11\x3c\xa7\xcb\xa9\xf3\x00\x9d\x0c\x65\x6c\x26\xe3\xa6\x2d\xa8\x70\xae\xf5\x54\x66\x49\x31\x67\x6d\x22\x5f\x5b\xf0\x16\x68\x93\x17\x5e\xd6\x98\x66\xbf\x74\x2b\x83\x13\xfc\xcd\x5e\x18\xa7\xe8\xa8\xf8\xea\x22\x6d\xcd\xc3\x28\x1b\xf3\xb1\xfa\x32\x1f\x9c\x32\x4d\x4e\x40\xc1\x8c\x75\x96\xb3\xbc\x26\x8b\xc6\x30\x9e\x0e\xa9\xe3\x52\xc1\xaf\x6e\xff\xa2\xa4\x88\xe6\xa4\x37\x43\x38\xcb\xdc\x4e\x60\x3c\x70\x3f\x8e\x47\x83\x32\x3e\xa0\xac\xb2\x74\xf5\x15\x9c\x8a\x77\x7e\xb3\xb7\xb4\x74\x0d\xfa\xc0\x77\x0e\xb6\x1e\xf1\x4a\x05\x0e\x42\xad\xcc\x94\x7d\xcb\xa9\xa9\xc2\x5a\x19\xce\x26\xcf\x4e\x54\xf5\x96\x95\x25\xf3\x35\x2e\x4c\x2f\xac\xd5\x19\x01\xf8\xc2\x7a\xee\x64\x2b\x6b\x91\xcd\x65\xab\x3e\xf5\xea\x64\x28\xb7\xa9\xf5\xae\x85\x6c\x16\x2b\x26\x3f\x3c\xd8\xc7\x27\x18\x1b\xd8\x59\x7c\xfb\x32\x6d\xc8\x33\x88\x70\x7e\xbe\x44\xf3\x39\xf4\x54\x4c\xd3\xe5\xe5\xb9\x87\x62\x50\x3a\xec\x94\x79\x98\x04\x13\x16\x67\x89\x8d\x6c\xde\xd1\xf4\x45\xcb\x84\xb1\x3e\x32\xb0\x4a\xf9\xa0\x4c\xc9\x0e\x9c\x30\x21\xae\xf3\x4d\x64\x24\xbb\x17\x0b\x08\x67\x03\x1e\xfe\x66\xf7\x3c\x7a\x58\x4b\xed\x57\x4f\xd3\x1d\xe7\xf2\x51\x02\xfa\x57\xad\x74\xab\xc7\x9c\x5f\x8f\x9f\x64\x83\xd3\xb0\xea\x2e\x59\xa9\xa5\xf7\xb0\xb9\x4e\x63\x72\x35\x4e\x8e\xd1\xa8\x8b\xf5\xe6\x4e\x52\x58\x56\x8f\xee\xf8\xe4\xd4\x81\x32\xdf\x62\x21\x4d\x43\x03\x26\xc2\xb3\xcf\x40\xc6\x69\xba\xc0\x46\x19\x02\x65\x72\x8b\x64\x2f\x46\x28\x0a\xa8\x75\xbc\x4e\xb1\xd4\xce\x65\x10\x00\xbe\x74\xaa\xa7\x94\x0f\xe8\x7a\x87\x21\xf2\xae\xc1\x73\x33\x8a\x3d\x2f\x2b\x9c\x2c\xf7\x18\x3c\x6c\xf2\x5f\x3f\x6e\x2e\xde\x7f\xc8\xb9\xea\x69\x42\xa6\x71\xd0\x43\xfe\xe5\x9f\xf3\xc5\x7e\xdb\xa3\x93\xc1\xce\x70\x3e\xfe\x8e\xeb\x7e\xa6\xe3\xfa\xb8\x78\x2d\xc8\x06\x36\x84\x07\x6d\xe8\x34\x04\xd9\xf8\x2d\xc8\xce\x92\x1d\x84\xae\xc0\x13\x07\x3b\x89\x82\x9e\xed\xf1\x78\xb0\xae\x82\xcd\xeb\x79\x9a\x06\x39\x76\xe3\xc5\x40\x47\x3e\x4e\x9b\x7d\x9c\x74\xf2\xde\xa9\x3b\x19\x30\xbf\x60\x90\x27\x8f\xd4\x43\x18\x1c\x6e\xa1\xd7\x43\xa3\x8c\xe7\xbb\xcd\x71\x38\x63\x0a\x96\x70\x2d\xb2\x8e\x94\xdf\x3c\xea\x87\xa3\x8e\xb7\x68\x34\xc6\xbf\x5b\x24\x36\x33\xe4\xf5\x87\x03\x1a\xd1\x9c\x0a\x01\x0d\xc3\x99\xec\xf4\xae\xb6\xae\xa3\x79\x82\x1c\x9a\x5a\x44\x1b\xbf\x3c\xcc\xdf\x0e\xa6\x2f\x0b\xd9\x7c\x21\xc0\xb5\x34\x97\xd2\x0a\xf1\x22\x62\xf1\x6d\x72\x2b\x1d\x63\x32\xcd\x98\xd2\xe0\x16\x3c\x1a\xaf\xc8\xa0\xf4\xdd\x80\x5a\x2c\x44\xfc\xe5\xef\x2a\xb2\xc1\xb1\xff\xd2\x18\xa3\x4c\x53\x0f\x1a\x50\x63\x1c\x25\x39\xa5\x46\x7d\x32\x88\x08\xd9\x4a\xbf\x6a\x48\x51\x39\x9e\xe4\x28\xfc\x77\xe8\xe0\xe5\x8b\x17\x8b\x0f\x24\xc6\x1e\x3e\x83\xef\xec\x01\xef\xd0\x8d\xbd\x93\x3c\x5e\x20\x08\xaf\xc2\x20\x63\x91\x1f\x78\x81\x82\xcb\x98\x3a\x9a\xbe\xb6\x95\x6d\x53\x86\x39\x66\xa9\x68\xc6\xb3\x2e\xb2\x74\xcb\x0d\x43\x68\xb5\xa7\x00\xf1\x85\x08\x33\x5f\x83\x87\x74\xb1\xb8\xe0\x97\xe9\x2e\x62\xee\x9a\xab\x06\x4b\xe1\x61\x5e\x11\xbf\x0e\x29\x03\x8f\x89\x45\x7c\x23\xd6\xc6\x9b\x15\x52\xa7\x81\x6f\xea\x2b\x7c\x1d\xf5\x4d\x42\x37\x98\xfb\x42\x1c\x90\x99\xc7\xf8\x20\x5d\x2c\xe7\x85\x22\xf1\x0b\x4b\xa9\xa5\x1b\x67\xc5\x11\x22\xd3\x7c\x3c\xfd\x84\xc6\xc6\x71\xf8\x19\x1d\xf5\x57\x0c\x58\x86\xd5\x41\xd3\xf0\xc6\xa7\x8d\x79\xa0\x4c\x4c\x47\x62\x3c\xf1\x1a\x27\xe5\x62\x15\x25\x3c\x71\x64\x5c\xb9\x12\x00\xc0\x4b\x34\xae\x5d\xc1\xd9\xed\x6d\xd6\xd8\xcf\xd3\x4c\xbe\xf0\xc6\xd8\x43\x95\x07\x87\x0d\xde\x83\x6c\x24\xf9\x05\x24\xdf\x5b\x98\x49\xc6\x27\x4e\xe5\xc1\x58\x4c\xd5\x39\x25\xb0\x49\x24\x56\x6a\xc8\x5b\x94\x15\x8d\x1d\xf1\x00\x8e\x32\x9f\x5d\xb6\x58\xee\x93\x34\xe7\x03\xf3\x5b\xb0\xb5\x18\xe5\x67\xb0\x60\x23\xbf\x6b\xde\x51\x7e\xd5\xe9\xcf\xcf\x78\x25\x9e\x78\x05\x67\xff\xf2\xb7\xeb\x37\xdf\x9f\x2d\x5c\x9f\x00\xc1\x0d\x0c\x08\x3f\xe0\x7d\x78\xec\xf5\x45\x94\x57\xa9\xcd\x2f\x71\xde\x8e\x97\x19\x07\x3b\x35\x3c\xc1\xab\x57\xd0\xd3\x1c\xe9\x8c\x4f\x44\xac\xa1\xc2\xc9\xe0\x7a\x7c\x4e\x79\xce\x3e\x8f\x1f\x02\x24\xd0\xa0\xab\x31\xda\x1e\xbf\x78\xc6\x4b\x0e\x29\xd2\x0a\x83\xea\xf4\xfd\xe9\x3a\xc9\x9c\x35\x5b\xf4\xde\x83\x9d\x8f\xe7\x2a\xef\x06\x1d\x54\xaf\x51\xc4\x7b\x3f\x92\x4f\xa1\xe2\xf6\xcd\xfa\x12\x7e\x28\x82\x91\x03\x21\xa0\x1f\xad\x8f\x67\x64\x69\x36\x64\x16\x4d\x04\x60\x24\x86\xd3\x21\xca\xc0\xb7\x36\x45\x26\xda\xcf\xee\xdf\x8d\xa8\xcf\x91\x29\x36\x85\x43\xb9\x3f\x95\xd2\xe3\xa9\xb4\x26\x28\x33\xe0\x29\x11\xda\x53\x63\x4f\x8d\x0d\xf6\xe4\xa4\x69\xf0\xe4\x30\x0c\xce\x5c\xdc\xde\x16\x67\xa3\xa4\x71\xe6\x4b\xb2\x50\x7b\x3c\xd5\xd6\x9d\x54\x7d\xf2\x07\x15\xca\x76\xb9\x3b\xb5\xe2\xb4\xb7\x97\xe5\x5e\x36\x78\x52\x5d\x6f\x5d\x38\x31\x1f\x38\xdd\x49\x77\xa2\xa0\x9d\x7c\x70\x43\x19\x4e\xd4\xee\x49\x8b\x0a\x6b\x74\x27\x65\x83\x8c\x02\xd3\x2d\x1e\x82\x75\x55\xfc\xb8\x3a\x99\x5d\x59\xe4\x28\x52\x77\x96\x7e\x7e\xae\xed\x01\xdd\x48\x35\x19\x20\x38\xcf\x29\x14\xd4\x66\xf8\xf3\x68\xbc\xfb\xe5\xd2\xc7\x8a\x8a\x3a\x5e\x0e\x76\x99\x10\xd7\xa6\x82\xf6\x49\x87\xa7\x3c\x62\xf8\x9e\x1c\xbe\x7b\x48\x70\xa2\xf3\x19\xa9\xc8\x01\x67\xd1\x29\x68\xaa\xc5\xaf\x45\x94\xa2\xc7\x9e\x62\x53\x54\x38\xd9\xd9\xef\x6f\xba\xbd\xbd\xbd\x7d\x2f\x8b\xda\xb8\x70\x77\x7e\x7b\x7b\xcb\x0f\x3e\xfc\x83\x2f\x6e\xde\xbf\xd8\xfd\xfb\x87\x5f\xff\xf8\xf1\x74\xff\xfe\x7a\xf7\x8d\xdc\xd5\x2f\x76\xff\xf1\xe1\xd7\x3f\x7c\x3c\x0d\xcb\xdf\xff\xfa\xf1\xf4\xd3\xf2\xf7\x9f\x3e\x5e\x9c\x09\xb6\x9d\xf9\xe5\xda\xe6\xcb\xcb\xa5\xcd\x9f\x7f\xc2\xe4\x60\x2b\x7b\x05\x67\x9b\x9b\xb7\x7f\x7d\x7b\xfa\xf9\xe7\x9f\x4f\xdf\xbc\xfe\xf9\xcd\xd7\x17\x57\x5f\xfd\x86\xe0\xdb\xdb\xe7\x2b\x77\xde\x3e\xbf\xfc\xff\x4b\xe7\x94\xfa\xc1\x06\x55\x62\x04\xf2\x76\x0e\x2d\xd5\x25\x15\x07\x0d\xb4\xb1\x34\x53\x3d\xc6\xe6\xdf\x65\x70\x6d\x8e\xa0\x8c\x41\x97\xd6\x09\x48\x05\x7f\xf9\x48\x78\x12\xef\x57\xd1\x80\xdf\xab\xbe\xc7\x8a\xfa\xb5\x01\x8f\xd2\x95\x7c\x39\xcc\x9f\xe7\x5a\x04\xbe\xf5\xac\x97\x85\x4e\x40\x2b\xa6\xeb\x77\x7e\x6d\x85\x7c\xf9\x59\x6d\x2d\xdc\x9e\x41\x21\xdd\x59\xbe\x25\xd0\x2a\x11\xf2\xdb\xb3\x7c\x89\x67\x34\x4a\x9b\xa8\x22\xa3\xc1\x58\x09\xf1\x10\x9e\x57\x94\x1f\x95\xcb\xe0\x7b\xb5\xc7\x83\xf2\xf1\xb3\x61\x3a\x21\x1e\xb1\x38\xe1\x96\x4e\x10\x4f\x9c\xc0\x4e\x78\x20\x33\xfd\x87\x0b\x52\x9f\xaf\x1a\xce\x16\x43\x55\x5a\x11\xb1\x54\xc8\x07\x7e\x24\xe8\xa5\x75\x8e\xfa\x1a\x13\x8a\x2c\x35\xfd\xb1\xa3\xe1\x7d\xaf\x55\xa9\x82\x3e\x42\x27\xdd\x9e\x8f\x8a\x9d\x0c\xfd\xf8\xe1\xa8\xb2\x34\xbc\x33\xe1\xa5\x50\x45\x0e\x24\x16\x77\x5c\x4f\x75\xb2\x7f\xaa\x7c\xe9\xf4\xd8\xee\x96\xd9\x07\xef\x3f\x2c\x5a\xdc\x6b\x53\xea\xa1\xa2\xf6\xb6\x32\x44\xc5\xc7\x29\x79\x6a\x67\xbb\xc4\xe3\x57\x4c\x51\x7a\xc0\xae\xc0\xaa\xc2\x6a\xe6\x87\x0f\xf2\x83\xd1\xcd\x6a\x6d\x0f\xfc\xc9\xc1\x43\x6f\x7d\xe4\xb0\x75\x9a\x16\x26\x13\x13\xca\xaf\x4d\xfb\x32\x0e\x39\xd9\xf3\xaf\xfe\xbc\xb4\xf1\xcb\xcb\x87\xcf\x1f\xd5\x56\xb2\xe1\x0a\xce\xfe\x2e\xef\x64\xdc\xce\x45\xfb\x89\x73\xc2\x51\xe3\x13\xc7\xac\x1f\xff\xc6\x29\xa5\xf7\xb1\x6a\xff\x2f\x00\x00\xff\xff\xb9\xb4\xb6\xe7\x04\x25\x00\x00") - -func runtimeHelpColorsMdBytes() ([]byte, error) { - return bindataRead( - _runtimeHelpColorsMd, - "runtime/help/colors.md", - ) -} - -func runtimeHelpColorsMd() (*asset, error) { - bytes, err := runtimeHelpColorsMdBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/help/colors.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeHelpCommandsMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x57\x4f\x6f\xdc\xba\x11\x3f\x3f\x7d\x8a\x81\xdf\x21\x76\x10\xeb\xdd\xf7\xd0\x02\x75\x1b\xb4\x40\xd2\xba\x4d\xda\xa2\xa7\x6a\x56\x9a\x5d\xb1\xa6\x48\x85\x43\xee\x5a\xfd\xf4\xc5\xcc\x50\xda\xdd\xb8\xc0\x4b\x0e\xf1\x8a\x9c\xff\x7f\x7e\x33\xfc\x19\x9e\x23\xb3\xdb\x7b\x82\x3e\x4e\x13\x86\x81\x9b\xe6\x5f\xb1\x40\x8f\x01\xe8\x95\xfa\x92\x09\xe4\xe7\xe0\x72\x4c\x2b\x0d\xec\x17\x98\x13\x31\xbb\x70\x84\xee\x29\x27\xff\x48\x1d\x1c\xa2\xf7\xf1\x4c\x7a\x9b\xc7\x4d\x60\xdb\xfc\x91\x12\x01\x26\xd2\xd3\xf9\x7b\x7d\x90\x47\xcc\xb0\x54\x9d\x85\xa9\x6d\x9a\xf7\xd0\x7d\x2b\x2e\x77\x3b\xf8\x6b\x71\x99\x61\x72\x7d\x8a\x76\xce\x78\x22\x38\x38\x4f\x01\x27\xfa\x6d\xb7\x83\x2f\x78\x22\x36\x85\x25\x25\x0a\x19\xf6\xe5\x70\xa0\xd4\xc2\x9f\x0e\x7a\xbc\x12\x83\x63\x98\x53\x3c\xb9\x81\x06\x70\xb9\x01\x38\x3b\xef\xe1\x9d\x4a\x44\x7e\x77\x43\x6c\xca\x12\xcd\x1e\x7b\x82\x3b\x26\x4c\xfd\x78\x07\x77\x27\xf4\x85\xee\xe0\xe0\xf1\xc8\xdd\x0e\xbe\x8e\x8e\x4d\xcc\x4a\xda\x19\x69\x07\x67\x97\x47\xe8\x94\xbe\x6b\xa1\x01\x80\xaf\x23\x41\x67\x9c\x1a\x8e\x38\x67\x17\x03\xfa\xf6\x92\x04\xbd\x95\xcb\x9d\x30\xbc\x87\xee\x11\xbb\x1d\xfc\xad\xca\x46\xef\x21\xf6\xe6\x66\x4f\x0c\x98\x21\x86\x9e\x56\x52\xdf\xed\xe0\xf7\x11\x10\xbc\xcb\x94\xd0\x83\x99\x02\x2e\x70\x26\x1c\x20\x1e\x00\x21\xd1\x91\x5e\xeb\x4d\x23\x9c\x7f\x8e\x99\x2c\x07\x9b\xe9\x53\xe1\x0c\x7b\x02\x84\x13\x7a\x37\x54\x9e\xfb\x12\x3c\x31\xab\x22\x8d\x25\x32\xd3\xf0\xa0\x71\x8e\x81\xd4\xc5\x68\x21\xc7\x74\x2c\x13\x85\xcc\x30\x44\x62\x08\x31\xc3\xa8\x51\x0e\x0b\xf0\x8c\x62\xbb\x0b\xe0\xf2\x07\xcd\xfb\x84\x0b\xc4\xc9\x65\x65\xfd\x56\x62\x26\xbe\x09\xbf\xb8\xfd\x7d\x06\x7e\x3c\xf6\xfa\x11\x8b\xe4\x5b\xaa\x4b\x8a\x38\x1c\x5c\x9a\x50\x82\xdf\x36\xcd\x4f\x5f\x88\x36\x55\xdd\x56\xe2\x87\x98\x60\x8a\x89\xc0\x85\x43\xbc\x50\x4b\x05\x52\xae\xa9\x03\xd3\xb0\x03\xa6\x6c\x25\x58\xcf\x73\xb4\xab\x16\x44\xb8\x5c\x74\x76\xc3\x1d\x8c\xe4\x67\xc8\x71\x76\xbd\xe8\x10\xab\x24\x61\x9c\x25\x76\x95\x68\xeb\x06\xa6\xbc\xe9\xf4\xb1\x47\xff\xa3\x8a\x41\xa9\xfd\x02\xf7\x31\xf8\x45\x82\x7d\xd5\x20\xa2\xd3\x7a\xe4\xa1\x4a\x1f\xe3\xb9\x4a\x10\x99\x63\x3c\xdf\x36\x94\x89\xac\xb9\x3d\xba\x13\x85\x4a\x6d\xec\x74\x42\x0f\x77\xf4\x6a\x90\x10\x83\x24\xe7\x0f\xc2\x83\x59\x8a\x14\x3e\x15\x84\xcb\x6d\x7b\x55\x71\xda\xd7\x96\xc3\x10\xd5\xae\x39\xb9\x90\xa5\x4e\xf2\x28\xe0\xc2\x51\x63\xc1\x63\x2c\x7e\x90\xf4\x41\x37\x11\x33\x85\x23\xa5\xdd\x67\x62\xc6\x23\xdd\xb7\x6d\xfb\xd0\x89\xeb\x83\xe3\xd9\xe3\x62\x75\x5b\xd6\x1e\x2e\x01\x78\x7c\xac\x79\xed\x76\x90\x4a\xe0\x2b\x4f\x78\x24\xef\xb7\xb4\xd7\x48\xed\xb1\x7f\x39\xa6\x58\xc2\xd0\x6a\xdb\x8a\x69\x95\xe4\x1d\x43\x2c\x79\x2e\xd9\xec\xde\xd3\xaa\x96\x94\x5b\x3a\xc1\xbb\x40\x70\x1e\x49\x4a\x1c\x0e\x2e\x38\x1e\x89\x45\x6f\x70\xe1\x68\x56\xed\x5d\x18\xe0\x85\x16\xc0\xbe\x86\xbd\x4f\x54\xe3\xf5\x42\x8b\x5c\x8b\xff\x87\x14\x27\x25\xcb\xb1\x52\x5e\x4a\x8a\x49\x0f\x58\xfb\x2e\x5c\x71\x31\xe0\x3e\x0a\x4a\x5e\x97\xb0\x9c\x89\xcd\x12\xf6\x17\x5a\x18\xc4\x5b\x13\xa9\x80\x03\x78\x42\xe7\x71\xef\x6b\xd8\x4e\x3c\x7b\xb5\xde\xf0\xb0\xdb\x41\x9c\x49\x48\xe1\x44\x29\x3b\xa9\x45\xa3\xb0\x5e\xdb\xe8\x14\x0e\x42\xbc\x46\x5d\xcb\xab\x01\xef\x87\xb7\x02\x1c\xab\x68\x1a\x4c\x94\x4c\x9b\x69\xce\xcb\x0a\xe3\x6a\xcd\xf8\xc6\x1a\x16\xd9\xc8\xab\xa1\x1d\xec\x4b\xde\x4c\x1c\x63\x72\xff\x8d\x21\x5f\x74\x5c\x41\xa0\x98\x73\x6b\x82\xe9\xc8\xb8\x7f\xeb\xee\xa5\x4e\xe4\x4a\x12\x8c\x10\xe8\x0c\x19\xf7\x1b\x17\x9f\x5d\xee\x47\x39\x5a\x51\x69\xad\x26\xad\x90\xf5\x3a\x5a\xd6\x66\xea\xdd\xc1\xd1\xa0\x22\x6c\x26\x08\xa7\xf4\xbb\x58\x46\x2e\x8f\x94\x0c\x7d\xc5\xa2\x50\xa6\x3d\xa5\x0f\x10\x93\x68\x16\xa7\x15\xc6\x55\xff\x4f\xf2\x0f\xc4\x0a\x1f\x8f\x57\x19\xf2\xf1\xa8\x54\xde\xc3\x64\x3d\x62\xe9\x1e\x68\x5f\x8e\xc0\x19\x33\x29\x3a\x9b\x07\xb3\x2f\x47\x41\xe3\xc0\x59\x38\xec\xf3\xdf\x35\x0a\xf5\xf4\x3a\x10\x46\x70\xc3\x9b\x68\x92\x82\xbb\x65\xb5\xc3\x5f\xe1\x14\xe4\xeb\x76\xfa\x87\xd5\xe0\xaa\x90\x86\x4a\x7d\x6b\x64\x99\x07\xcc\x22\xdc\x7e\xfc\x08\x4b\x1d\x82\xb7\xb6\xd9\x21\xb1\xf6\xc8\x1b\x03\xaf\x10\xaa\x22\xb1\x64\xe6\x20\x2d\x7b\xc1\x6a\xd1\xbc\xf5\xcc\xaa\x19\x50\x51\xec\xe8\xf2\x58\xf6\x6d\x1f\xa7\x5f\x14\xe2\x1e\x6d\x7f\xfa\xc5\xa8\x1e\xfb\x11\x43\x20\xdf\xea\xfc\x5d\xb7\x2d\xf4\x1c\x81\x89\xde\x4c\x9d\xda\xb9\xba\x3c\x99\x4b\x13\x06\x3c\x52\xaa\x60\x25\x42\xba\x67\xbb\xf9\x6c\x37\xdd\x0a\x0e\x2b\x68\xd7\x60\xdc\x8c\x9f\x9b\x28\x6d\x9e\xd4\x64\x5c\x1c\xda\x5c\x94\x50\x0d\xf1\x1c\x7c\xc4\x01\xee\xb3\xd4\xb9\x0b\xbd\x2f\x83\x56\xd7\xa2\x5d\x5e\x99\x0c\xdc\x71\xd1\x32\xf6\x89\x70\x58\x2e\x59\x7a\x58\x87\xbb\x08\xd2\x3a\x91\x1f\x96\xca\x54\x42\x76\x93\xad\x61\x35\x8d\xfd\x00\x33\xe6\xb1\xdb\xc1\xd3\x88\xe1\x68\xd8\x77\x8e\xe9\x45\xf0\x71\x70\x89\xfa\x1c\xd3\xb2\xb6\x97\xe5\xb1\x53\x8e\xea\xe0\x59\x94\x3c\xeb\x5c\xb9\x1e\x6a\x6f\x44\x18\xb9\xf4\xd0\x35\x0c\xfc\x45\xbe\x71\xeb\xfe\xff\xb3\x67\x56\x6f\xac\xfd\xeb\xaa\x66\xde\x78\x42\x45\x71\xc1\x08\x03\xb7\xba\xfc\xc4\xb4\xdd\xd5\x13\xbd\x15\x3a\x09\xe3\x40\x33\x19\xfe\x47\xd3\xb8\x0d\x60\x85\x9b\x1c\x8d\xa9\x3a\x98\xf0\xdc\xed\xe0\xf3\x65\x94\x46\x33\xb9\xc2\x94\x76\xbe\x4e\x78\x91\x44\xdc\xe3\x2c\xb3\xe3\x5b\x91\x1d\x52\x93\x4a\x27\x4a\x8b\xfc\x6f\xab\x81\xcb\x90\xa8\x27\x27\xbd\xab\xf3\x47\xf8\x32\xa5\xc9\xe9\xae\xaa\x00\x67\x3b\x82\x34\xc7\xf9\x32\xc7\xb1\xcf\x45\x97\x0e\xa6\xca\x2a\xe2\xae\xb9\xd5\x16\xa9\x40\xe3\x95\x6a\x3f\x8f\xae\x1f\xe1\x32\xb9\x12\x85\x77\xf9\xf2\x4a\x50\x14\x1d\x17\x53\xab\xd6\x31\x4c\x91\xb3\xec\x02\x87\xe2\xad\x28\x05\xd6\x8e\x12\xae\xab\x19\x78\xd9\x6c\x5e\x68\x91\x67\xc2\x1a\x01\x9b\x79\xf7\xfc\x00\x7b\x99\xef\x3a\x59\x6b\xd9\xbc\xd0\xd2\xc2\x47\x89\xc8\x2b\x4e\xb3\xd7\xce\xaa\x53\x1b\xba\xdf\x40\x15\x06\xf2\xe0\x79\xea\x2c\xd6\xeb\xca\xd1\x4d\xe8\x42\x7b\xff\xfe\x1f\x8e\xce\x0f\xed\x53\x9c\x97\xae\x85\xbf\x4b\x13\x67\x59\x83\xbc\xb6\xc7\x2a\x60\x5b\x8a\xa5\x06\xe1\x2c\xfb\x87\xf8\xa1\x63\x79\x33\x6a\x6d\x4c\x1b\xd1\x66\x57\x1e\x23\x53\xcd\xd1\x7f\x64\x49\xb7\x3c\xdc\x7d\x2a\xf8\xb1\x04\xa5\xfc\x9d\xf9\xdf\xde\x35\xcd\xe3\xe3\x63\xd3\xc8\x80\xb1\x97\x99\x78\xb1\x3d\xba\x64\xe2\x6f\x8f\xa1\xfa\x60\x1b\xe8\x80\xc5\x6f\xad\xbf\xd3\x08\x7a\x17\x04\xa0\x3f\x7d\xdf\x3e\xda\x10\x5a\x3d\x29\xc5\x24\xe1\xfe\x19\x9e\xea\xd8\x7b\xc6\x24\x4f\xc3\xa6\xf9\xa7\xec\x40\x6b\x04\x71\xd5\xfe\xe1\xfa\xb5\x07\xf4\x9a\x13\x02\x2f\x21\xe3\xeb\x9b\xad\x90\x5e\x67\x7d\x6f\xd2\x21\x26\x6a\x56\x49\xd7\xaf\x4b\xf8\x1a\x55\x8c\x20\x68\x7d\x75\xd4\x3d\xc2\x5a\x6b\x7d\x68\xb0\x9b\x66\xbf\x80\xec\x6d\xba\x0f\x34\xf5\xa1\x71\x8b\xbf\x6a\x50\x38\xb9\x14\xc3\x64\x9b\x6f\x72\x02\x7e\xbc\xf5\xfe\xfa\x02\xc6\xa4\xb5\x99\x47\x5a\x9a\x75\x11\x34\x6b\x69\xa8\x60\xe4\xd2\xfa\x0a\xf8\x28\xc5\xef\x97\x8b\xe3\x62\x86\xbe\xb0\xd7\xad\x58\xe4\xcb\xd2\x99\x5d\xff\xc2\x8d\x6e\xa2\x97\x05\x93\xea\x32\xbd\x65\xca\x76\x56\x8b\xca\xa8\x6f\xec\xff\x05\x00\x00\xff\xff\x05\x5d\x9b\x73\xc9\x0f\x00\x00") - -func runtimeHelpCommandsMdBytes() ([]byte, error) { - return bindataRead( - _runtimeHelpCommandsMd, - "runtime/help/commands.md", - ) -} - -func runtimeHelpCommandsMd() (*asset, error) { - bytes, err := runtimeHelpCommandsMdBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/help/commands.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeHelpDefaultkeysMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x59\x5b\x73\xa3\xc6\x12\x7e\xd7\xaf\x68\x97\x1f\x8e\xbc\xf6\xba\xce\x9e\x93\xaa\xbc\xa5\xca\xd7\xec\xcd\x5e\xad\x2f\xd9\x4d\x9e\x3c\x42\x8d\x98\xd2\x30\x43\xe6\x62\xad\x2a\xce\x7f\x4f\xf5\x00\x03\x42\x80\x64\x59\x0e\x6f\x82\xe6\xfb\xe8\x7b\xf7\x68\x1f\xce\x31\x66\x4e\x58\xf8\x84\x0b\x33\x18\x9c\xa2\x50\x73\x60\x1a\xc1\xf0\x34\x13\x08\x51\xc2\xb4\x35\xa0\x62\xb0\x09\xc2\xa4\x10\x4e\x94\x9d\xe1\xc2\x00\x93\x13\xba\xcf\x35\xc4\x4e\x46\x96\x2b\x69\x8e\xe1\x52\x69\x48\x95\xc6\x01\x97\xb1\xd2\x29\xa3\xdb\xc0\xc6\xca\x59\x18\x73\x39\xe1\x72\x0a\x91\x33\x56\xa5\x01\x46\x69\xe2\x91\x53\x7a\x54\x52\x14\xa2\xe6\x08\x32\x81\xcc\xe0\x40\x3b\x09\x0f\xbf\x40\x82\x22\x83\x19\x2e\xca\xe7\x0f\x83\xc1\xc8\x0b\x80\xc6\x14\xd3\x31\x6a\xb0\x09\xb3\xf0\x86\x09\xf1\x06\x3c\x7c\x82\x1a\xbd\x4e\x1a\xe9\x2d\x36\x16\xb8\x07\x1f\x62\x58\x28\x07\x13\x25\xff\x63\x41\xf0\x19\x02\xb7\x47\x74\x6b\x10\x31\x99\x7f\x0e\xdd\xda\x1b\x0c\xf6\xf7\xf7\x61\xa4\xe6\xa8\xc1\x19\xd4\x83\xc1\x13\xd9\x0a\xf2\xeb\x09\xce\xd1\x44\x9a\x67\x5e\x49\x15\x07\x3b\xc0\xee\xae\xa7\xc1\xd3\xdb\xe2\xa2\x5f\x6f\x5f\xfd\x22\x46\x38\xb3\x5a\x1c\x5e\xe4\x3a\x7e\xc9\x50\x02\x83\x48\xa5\x29\x79\x3c\xd3\x2a\xcd\x2c\xc4\x4a\x83\x76\x52\x7a\x87\xe6\x8f\x0c\x0c\x0d\x62\x70\x53\x79\xf7\xc1\xcb\x32\x10\xdc\x58\x32\xd2\x23\x13\x7c\x12\x9e\x1e\x1c\x7b\x1d\xe1\x8e\x8d\x83\x55\x3f\xc8\x06\xdb\x11\x70\x0b\x73\x2e\x04\x30\x67\x55\xa4\x28\x38\x2d\x02\x8f\x21\x53\xc6\xf0\xb1\xc0\xe3\x67\x5b\x35\xd7\xf1\x34\x67\xbc\x71\xa4\xa2\x49\x50\x88\x40\x3d\xb4\x09\x37\x39\x6b\x24\x94\x41\x48\x79\xa4\x15\xcc\x13\x2e\x90\x42\x45\x07\x49\xfc\x81\x91\xb3\xe8\x75\xe9\x66\xf4\xa1\x74\xcd\x1e\xf9\xd4\x27\xc5\x72\x28\xad\x88\xbf\x62\x68\xd5\x42\xaa\xcd\xfd\xaf\x1c\x5a\x27\x5a\xab\xb9\x69\xd7\xf9\x4a\x3d\xa2\x2f\x35\x91\xd3\x86\x82\x46\x2b\x27\x27\x3b\x50\xd9\x33\xdf\x26\x3c\xb6\x87\xac\x85\xbf\x60\x26\x5f\x1a\x14\x18\x59\xb0\xf8\xc3\xee\x82\x37\x67\x7e\xaf\x52\xa4\x3a\x47\x21\xf7\x19\x63\xeb\x6d\x50\x67\xb6\xca\xab\x3d\xc6\x29\xcf\x53\xaa\x28\xb9\x91\xd3\x1a\x25\x95\x28\x89\x5b\x31\x5f\xc8\x49\x49\x7c\xc3\xa7\x49\x27\x33\x92\xdc\x0e\x38\x2b\xe6\x13\x61\x97\x55\xad\x9e\xe6\xcc\x85\x8f\x95\x44\x98\x2b\x3d\x01\x81\xf1\xcb\x4d\x5e\x30\x37\x74\x5d\xc3\xac\x49\x7a\x47\xcc\x87\x7f\xb5\x3f\x5d\x62\xb6\x0a\x32\x8d\x8f\x5c\x39\x03\x98\x66\x76\xe1\x8d\x7d\x44\x9e\x5a\x0a\x81\x89\x8a\x5c\x4a\xbe\xd8\x88\xf9\xef\xcd\x98\x25\x85\x76\x83\xb5\x70\xff\x66\x7c\xcb\xcc\x23\x36\xc5\xfb\x6c\x3d\xb3\xcb\xbc\xc1\x33\x36\xdd\x36\xaa\xda\x98\xcf\xd5\xbc\xa5\x24\x2e\x33\x4f\x48\x66\x67\xdc\x65\xeb\xa8\xe7\xf4\x7d\x56\xc6\xda\x8a\xb5\x8d\x65\xda\x6e\x63\xdb\x6e\xe6\x5a\x4e\x93\xfa\x05\xf5\x0a\xf3\x96\x3e\xed\x63\x3e\xfc\xdc\xfa\x14\x3e\xba\x34\x23\x4a\x96\x17\x0d\x2e\x7d\x21\x89\xa9\x51\x0e\xf3\x0e\x4e\x8d\xd4\x26\xb0\x7f\xb0\x2d\xf3\xb7\x76\xe6\xb3\x45\x24\xa8\x6e\xda\x39\xa2\x04\x93\x09\x6e\x4d\xc9\x5f\x16\x32\xcb\xc6\x30\x74\xc6\x4f\x26\x8f\x5e\xe4\x81\xec\x47\x73\x4a\xf1\xcb\x2a\x88\x34\x32\x8b\x34\x04\xd0\xad\x83\xd0\xb0\xef\xd8\xd8\xd4\x5b\x75\x5f\x63\xae\xcf\x6a\xdd\x6d\xb4\xa6\xd4\x5d\x6d\xbe\x92\x38\xf7\x5f\xda\x50\x9e\x12\xfb\xc8\xf3\x8e\xca\x8a\xd1\x90\xaa\xe4\x8e\xbd\xdc\x35\xe5\xf7\x8a\x0c\x54\x33\xc8\x25\x97\x13\x62\xd5\x7e\x0e\x31\xdb\xcf\xb4\x5b\xcf\xa6\x95\x05\x2e\x73\x4e\xff\x49\x43\x95\xa1\x34\xc5\xc8\xd7\x15\x28\xe1\xcd\xeb\xda\x9b\xbe\xa4\x71\x69\x2c\x93\x11\xd2\x47\x97\xae\x37\xc8\x74\x94\x34\xde\x1c\xd5\xde\x0c\x65\xb8\xef\xed\x60\x37\x81\x3b\xb1\x5b\xd7\xb5\xe3\x59\xbf\xae\xf3\xd7\x22\x5d\xfc\x20\x5b\xea\x97\x27\xe8\x9f\x8e\x72\x26\x1f\x6e\x39\x8d\x00\xdc\x00\x37\x3e\x83\x04\x33\x85\x14\xb9\xe6\x60\xc9\x8a\x5f\xa0\xbe\x1d\x2c\xe7\x3a\x0d\xfc\x74\x47\xb2\x14\xd7\x66\x7c\x40\xbc\xcd\x11\x6f\xd9\x63\xe3\x13\x9f\x7b\x95\xa9\x4b\x51\xa1\x3a\xfc\xd5\xf9\xee\x76\xf1\xdf\xe3\x84\xe7\xe6\xc5\x89\xb0\x7e\x52\xed\x98\x61\x72\x1b\xe5\x53\xea\x06\xd3\x4b\x1d\xb1\x63\x1e\x5b\x41\xec\x9f\xc4\xc2\x28\x5d\xef\x80\x2b\xf8\x01\xb1\xde\x03\x3b\x46\xcb\x80\x58\xeb\x6c\xab\x26\xa8\x23\x16\xbd\xad\x73\x54\x2d\x63\xca\xa3\x54\xdd\xb9\x4b\xeb\xfa\x37\x76\x44\xdc\x12\x62\xad\xed\x76\x23\x16\xdf\xd8\x19\xc1\x21\xee\xbf\x77\xdb\xda\xe7\xac\xb3\xc5\x56\x82\x93\xfe\xbd\x24\x20\x9e\xad\x41\x54\xd9\x62\x33\xc8\x80\xf8\x5b\x3f\xe2\x88\x19\xbb\x59\x9e\x06\xc4\x4f\x6b\xbe\xd1\xd9\x0d\x37\x91\x80\x78\xde\x8f\x78\xee\x32\xc1\x23\x6a\xf2\xeb\x70\x03\xe2\x1f\xfd\x88\xf7\x72\xa2\xfa\x24\x5a\x10\x7f\xef\x47\xbc\xc1\xe7\x20\x9e\x88\xee\xd8\x2e\x11\xcb\xa1\xb0\x52\x58\xe9\xca\xf7\x74\xc3\xd0\x68\x5e\x21\x76\xc6\x76\x0f\x62\xdc\x44\xf4\x23\x77\x89\x78\xca\xa2\x99\xc9\x58\xe4\xa9\x4f\x84\xf5\x86\x78\x5f\x43\x3c\x47\x7f\x9c\xb3\x61\xed\xf1\xaf\x9f\xf4\xda\xa6\xcc\x42\x26\xc4\x7a\x3b\xfa\x5e\x71\xc5\x22\xad\x5e\xa1\xa5\xb7\x28\x50\x6f\xcf\x5b\xf7\xf6\xfe\x16\xe2\x4d\x74\x9f\xeb\x70\xa7\xa6\x53\x81\x90\x92\x82\xa0\x31\x52\xda\x1f\xc2\x0e\x33\x8d\xc6\x94\x92\xa1\x00\x56\x02\xf9\xe9\x1b\xc9\xb0\x29\xa3\x89\x9a\x44\x54\x76\x50\x73\xc2\x47\x08\x87\x67\x82\x59\x34\xe5\xeb\x38\x29\xe8\xb6\xb7\x52\xee\x14\x27\x2c\xf7\xe7\xd0\x7e\xa9\xe9\xe8\xe0\xaf\x7d\x0a\xdb\xd2\xe5\x5f\xff\x24\x36\xcc\xf4\xd7\x0d\x5d\xcf\xf2\x3d\x85\xb6\x85\x74\xd9\x3c\x10\x6b\x95\x16\x89\x48\xda\x0f\xfd\xd1\x65\x71\x9e\x55\xe6\xab\xcf\x31\x1e\x83\x54\xb5\x29\xb7\x78\xe3\xa0\xda\x24\x46\x0d\xd6\x1b\x4c\x29\xeb\x0b\x2f\x37\x89\x77\x60\x61\xcf\x7a\xd6\xce\x4a\x59\xdc\xa0\x34\x30\x8c\x68\x5a\x17\xcf\xdd\x27\x5b\x58\xbf\x37\x58\x6f\x67\x3c\x5b\x51\xb1\x32\xeb\x0b\xaf\x92\xf5\xaa\xc9\x9a\xb1\x79\xb9\x06\x96\xa7\x9f\x76\xf5\x50\x10\x1f\x51\x2f\x96\xb6\xec\x15\x37\x76\xb1\x52\xca\xbe\xbd\x52\xce\xe0\xe7\xa2\xc6\x3e\xc1\x48\x50\x59\x66\x2b\xea\x32\x0b\x4c\x2e\x40\xa8\x88\xbd\x40\xe9\x22\x8d\xbf\xd8\xe4\xdf\xfa\xe7\xe4\xf5\xff\x2d\xa9\x5b\xf3\xf0\x57\xa8\x76\x20\xff\x9f\xc7\x56\xeb\x4a\xb7\x2e\x50\xb5\xca\x27\xa8\xda\xe8\x50\x09\x1a\xdb\x74\xca\x25\x13\xd4\x6c\x41\x2a\x0b\xc6\x65\x99\xd2\x45\xcc\x04\xd9\x19\x2e\x7c\x29\x77\x06\x4b\x34\x5a\x75\x91\x4d\x0e\x96\x59\x6e\xa0\xde\x2e\xfc\xf6\x47\x51\x26\x9d\xff\x57\x4d\x3b\x81\x2f\x48\xf4\x22\x12\x2e\x52\x16\x19\x30\x76\x21\x10\x58\xf4\xcc\x2d\xba\xf2\x2d\xf4\xfa\xb6\xca\xb1\xcb\x02\xd3\x9f\x88\xf8\xca\xd7\x66\x63\x92\x3c\x2d\x24\xc3\x19\xcb\x8a\x74\x29\x79\x52\x48\x96\x87\xe7\x61\x6f\x08\xc3\x64\x29\x79\xd1\x90\x2c\xf6\x81\xda\xd0\x59\x9e\x2b\x94\x3a\xce\x70\x61\x8e\x07\x83\x6f\x4c\x53\xba\xef\xc1\x5d\x82\x95\x01\xfc\x9f\x99\x29\x5b\x78\x5f\xcf\x95\x9e\x51\x01\xa0\xd2\x18\x02\x61\x0f\x2a\x63\x6e\x62\xc8\xf5\x46\xbc\x7c\x07\x8d\x00\x6f\x33\xe0\xe5\xff\xa0\x5a\xdc\x3b\xdc\xff\x04\x97\xff\x87\xea\xd8\xa5\x5b\xea\xa7\x5c\xea\xab\xe3\x1d\x63\xa0\x97\xfa\x79\x23\xac\x77\xff\x5d\x8b\xf5\x4f\x00\x00\x00\xff\xff\xc6\x76\xae\xe2\x03\x1f\x00\x00") - -func runtimeHelpDefaultkeysMdBytes() ([]byte, error) { - return bindataRead( - _runtimeHelpDefaultkeysMd, - "runtime/help/defaultkeys.md", - ) -} - -func runtimeHelpDefaultkeysMd() (*asset, error) { - bytes, err := runtimeHelpDefaultkeysMdBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/help/defaultkeys.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeHelpGimmickcolorsMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x52\xcd\x8e\x1a\x3d\x10\xbc\xfb\x29\xea\xd3\x77\x60\x17\x09\x24\x0e\x2b\x25\xdc\x12\x12\x21\x0e\x9b\x44\x42\xd1\x9e\x1b\x4f\x63\xb7\xb0\xdb\x23\xbb\x67\x61\xde\x3e\x9a\x61\xf3\x77\xc8\xc5\x3e\xb8\xba\x7e\x5c\xfd\x3f\xf6\x92\xb3\xf8\x0b\x7c\x49\xa5\x36\xe7\x5e\x18\x91\x5e\x19\xa2\x3e\x0d\x1d\x77\x20\x9c\xf9\xfa\xf6\xec\x23\x67\x6e\xb0\x48\x06\xaa\x8c\x73\xa9\x38\x0f\xba\x75\x6e\x39\xdd\x97\x71\xe5\xc9\xdb\xd0\xb6\x38\xa0\x2b\xba\x30\x5c\xb4\x5c\x71\x8d\x23\x0e\xc8\xd4\x31\x2c\x4a\x5b\xe3\xe1\xa5\x8a\x19\x2b\x4e\x23\x76\xd4\x1b\x89\x3e\xfb\x5d\xe2\x94\x48\x1f\xdd\x12\x81\x32\x9f\xca\xb8\x32\xbf\xc5\xee\xb7\x32\x4e\xd4\xb8\x43\x51\x58\x64\x94\x24\xaf\x8c\x50\x99\x15\xa5\x4a\x10\xa5\x84\xfd\x7d\xf2\x3f\xb7\x84\x72\x9b\x09\x3e\xfc\x69\x1e\xa4\x1d\xda\xa8\x46\x37\x44\x09\x31\x49\x88\x26\x1a\x30\xb4\xe9\x2c\x9a\xc6\x37\x38\xe4\x2e\xe3\x80\x2f\xa2\xc6\xda\x15\x7c\x56\xe3\x3a\xb9\xcd\xac\x86\xe3\xd8\x8c\xf3\x1d\x8e\x9e\x12\x9b\xf1\xda\x2d\xd1\xc6\x7c\x12\xd2\x7f\xbb\x3f\x8e\xf9\xf4\xf5\xb8\x68\xd8\x7f\x3f\x4c\x03\x99\xac\xca\x6d\x8b\x6f\x95\x27\x1d\x88\x2d\x1a\x36\xef\xdf\x6d\x70\x15\x8b\xa0\xbf\x02\xfc\x62\x21\xe4\xa2\xc5\xc7\x5a\x32\x3b\xe0\xf0\xf1\x19\x4f\x9b\xa7\xcd\x1a\x0f\x9f\x0a\x37\x68\xb1\x9f\x25\xce\x39\x42\x2c\x6d\x4e\x3a\xfd\x80\x55\x92\x24\x1a\x1e\x9d\xdb\x45\xf6\x97\x19\xd1\xa7\x21\x88\xa2\x72\x5f\xd0\x73\x95\xd2\x89\xa7\x94\xc6\xb9\xe6\x70\xdf\x93\xd5\x3d\x2d\xdf\x8c\xb5\x49\x51\xf4\xe4\x2f\x6d\xe6\x0c\xac\x83\x28\x3b\xea\x3a\x31\x29\x53\x1b\x36\xef\xcb\xfa\x47\x00\x00\x00\xff\xff\xcb\xc7\xfc\x0b\x66\x02\x00\x00") - -func runtimeHelpGimmickcolorsMdBytes() ([]byte, error) { - return bindataRead( - _runtimeHelpGimmickcolorsMd, - "runtime/help/gimmickcolors.md", - ) -} - -func runtimeHelpGimmickcolorsMd() (*asset, error) { - bytes, err := runtimeHelpGimmickcolorsMdBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/help/gimmickcolors.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeHelpHelpMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x56\xcd\x8e\xdc\x36\x0c\xbe\xeb\x29\x08\xec\x21\xed\x62\xd6\x0f\x90\x43\x80\xa0\x48\x9b\x1c\x02\x24\x48\xd0\xa0\xb7\xa1\x6d\x8e\x45\x8c\x2c\xba\x12\x6d\xef\xf4\xe9\x0b\x4a\xf6\xee\xcc\x66\xd1\x9e\x66\x40\x89\x1f\xff\xbe\x8f\xf2\x1d\x7c\xe6\x2e\x09\x78\x0a\x13\x28\x3d\xaa\x73\xdf\x3d\xc6\x33\x5c\x64\x86\x93\x24\xe8\x65\x8d\x41\xb0\xe7\x38\x00\xc6\x1e\xe6\x6c\xff\x46\x73\x6a\x9c\xab\xce\x9c\x01\x41\x29\x8d\x1c\x31\x3c\xb4\x98\xa9\x2f\x58\x40\x3d\xab\x24\x50\x8f\x0a\xc8\x63\x06\x15\x68\x09\x08\xf3\xc5\xfe\xce\x99\x0a\x26\x47\x9d\x59\x79\xa1\x03\xb8\xd5\x73\x20\xc0\x90\x05\x14\xcf\x25\x6a\xbf\x60\x54\x1c\x08\xe4\x04\xea\x09\x4e\x73\x08\xd0\xe1\x84\x2d\x07\x56\xa6\x6c\x07\xa3\xf4\x94\xe2\x53\x16\xb9\x71\xce\xb9\xdf\x25\x01\x42\xe0\xac\xbb\x6f\x4f\x27\x9c\x83\xc2\x99\x2e\x2d\x47\xab\x2a\xc3\x94\x28\x67\xf8\x4d\x53\xf8\x50\xd2\xd1\xcb\x44\x70\x2c\x1d\xd9\xae\x9f\xe9\x92\x8f\x4d\x81\x1b\x25\x11\x70\x3c\x49\x1a\x51\x59\x22\x48\xbc\x01\xcb\x44\x70\x7c\x57\xfb\x79\x65\x3f\x36\xce\x7d\x23\x2a\x39\x44\x6b\x4d\xa6\xae\xb8\x9f\x5e\xc3\xc4\x56\x66\x85\x5e\xba\x79\xa4\xa8\x9b\x2d\xf6\x05\xb5\x71\xee\xee\x0e\xbe\xce\xdc\x9d\x1f\xb2\x62\x52\xe7\xbe\x3c\x15\xf0\xd5\xda\xfa\xf7\xcc\x7a\x28\xf7\xcd\xf4\xcd\x4c\x19\x17\x6a\xe0\xcb\x55\xa1\x66\x34\x6f\xab\xd6\xba\xdc\xc9\x38\x62\xec\xb3\xf9\x39\x1b\x7e\x87\xb1\x14\xb3\x7a\xee\xfc\xd5\x71\x22\xc0\x05\x39\x60\x1b\x08\xda\x4b\xed\x9e\x21\x28\xb6\x07\x90\x64\xb6\x85\x69\x2d\x26\x4f\x25\x67\xa7\x32\x71\xf7\xd4\x97\x1d\xec\xd8\xc0\x0f\x4f\x11\x3e\xc1\x9a\x58\x4b\xdf\x9a\xa6\x39\xc2\x27\x18\x09\xe3\xcf\x73\xb1\xbb\x36\x1c\xb7\x7a\x54\x5a\x28\x19\xf3\xd4\x53\xa2\x06\x9c\xfb\x2c\x4b\xed\x6f\x37\xa7\x6c\x83\x4f\x32\xc7\x1e\x56\x56\x5f\xcc\xa3\x18\xdf\x0a\x1d\x09\x30\x25\x59\x6d\x40\xb9\x81\xef\x06\xb9\xe7\x76\x3d\x71\x6b\x12\x0c\xa4\x80\xd6\xd3\xee\x7c\xa8\xcc\x95\x85\x92\x55\xf8\x92\x53\x5e\x8a\x5b\xe9\xa0\x65\x68\x87\x17\xe8\xa5\x81\x1b\xe2\x18\x63\x12\x6d\xc4\x28\x29\x1c\x4a\xa3\x2b\xed\x5e\xa7\xce\xa7\x1a\xa9\x93\x20\x29\x77\x9e\x46\x82\x5e\x28\xc7\x37\x0a\x41\xe4\x0c\x83\x48\x7f\x80\x7d\x6c\x9d\xc7\x38\x10\xb0\x96\xe2\xad\xb4\x4c\x7a\xe3\x6c\x6d\x6e\xe0\xaf\xed\x7e\x6d\xb4\x62\x5b\x58\xb1\xb1\xf4\x79\xc8\x57\x8e\xd9\x26\xec\xec\xca\x4f\x9c\x2d\x7d\x7e\x9e\xb0\xb9\x58\xe6\xcf\x9c\xfb\x61\xe8\xa3\x0d\xa9\x25\x5d\x89\x22\xe4\x29\xb0\xe6\xc3\x95\xe8\xde\xc1\x52\x8c\x70\xe2\x40\x11\x47\x3a\x5a\x3c\x43\x7d\x69\x56\x01\x99\x28\x02\x42\xa4\xb5\x22\x99\xe4\xef\xee\xe0\x7d\xd7\x6d\x8c\x2c\x39\x16\xfe\x6d\x8b\xca\xa3\x6d\xaa\x76\xe6\xa0\x0f\x1c\x6b\xaa\xf9\x92\x95\x46\x18\xe7\xce\x43\xe0\x33\xc1\x9f\x3c\xbe\xc9\xf0\x0b\x06\xf5\x32\x0f\x1e\x82\x15\x40\x8f\x4a\x31\xf3\x42\xbf\x36\xce\x7d\xaf\xab\xcb\x54\x36\xdd\x4a\x0a\x4b\xec\x9d\xe0\x65\x29\x3d\x57\xc7\xb1\x6e\x95\x23\x9c\x24\x04\x59\xa9\x37\xad\x60\x15\x47\xa1\xa1\x25\xfd\xca\x95\x28\xea\xed\x68\xe5\x10\x6a\xd5\xea\x39\xc3\x84\x03\x35\xce\x7d\x24\x93\x64\xaa\x53\x9b\x24\x67\xb6\xa1\xd5\x85\x6e\xc8\xb9\xee\xdf\x9d\x1c\x89\xb0\x7f\xeb\xdc\x3d\xe8\xac\x92\x18\xc3\x5b\x78\x0f\x6d\x62\x3a\x3d\x59\x36\xcd\x0f\xbc\x90\xb1\xf9\x86\xf0\x18\x42\x09\x24\xa6\xbb\xda\x5c\xd8\xe2\xb8\xfb\x6b\xda\xbe\x85\x3f\xaa\x7f\xdd\xd7\xff\xb7\x84\x31\xc3\x4a\x21\xd8\xaf\x97\x15\x54\x1c\x6c\x2a\x31\x97\xd1\xdd\x5f\x2b\xf3\x19\xbb\x8c\x38\x6b\x42\x1e\xbc\x3e\x9c\x24\xad\x98\xfa\x9b\x60\x55\x95\x37\xfb\x0d\x4c\x9d\x96\xf6\xa6\x4f\x77\xff\x74\xfc\x8c\xbc\x63\xec\x05\xff\x04\xb0\xbb\xbb\x7b\x90\xc9\x24\xf0\x1f\xce\xdb\x85\x67\x85\xce\x59\x65\xe4\x7f\xc8\xdd\xc3\x14\xe6\x81\xcd\xf9\xc3\xe3\x14\x90\x63\x6d\x40\x79\x61\xdf\xe4\xed\x74\x67\xe9\x2a\xe9\x5c\x33\xa8\x4d\x82\x2e\x11\x2a\x19\x6e\x02\x59\xa3\x83\x1d\xae\xd4\x64\x22\xbc\xc2\xdd\x31\xaf\x37\x81\x61\xe5\x4b\x54\x7c\x04\xcf\x83\x0f\xd6\x47\xe3\x1a\xc5\x81\x23\x5d\x85\x72\xf0\x32\xd8\xcd\x62\xb0\xc5\x8a\x7d\x5f\xd4\x18\x30\x0e\x33\x0e\x54\xde\x7b\x2b\xbf\x82\xd5\xf7\x98\x1e\x71\x9c\x02\x1d\x9e\x14\xbc\x3f\x12\x85\xcf\xb6\x1c\xb7\x0a\x4a\xb3\x56\x99\x43\xff\xea\x0b\xed\xea\x0b\xbd\x5d\x2e\x4b\x12\x12\xd9\x94\x28\xf6\x65\x2b\x96\x8f\x87\x32\x26\x38\xee\xd4\x3e\xd6\x50\xb6\x47\xa0\xa5\x0e\xab\x8e\xed\x1d\xc9\x5e\x92\x96\xe7\x98\xb0\xf3\x6e\x7f\x9f\x2d\x5c\x15\x42\x27\xb1\x4b\xa4\xb4\x57\x50\x3e\x3b\xb6\x31\x18\x8c\xc5\x59\x30\xb1\xcc\xe5\xee\x89\x87\x39\x95\xd5\xe8\xf6\xe9\x73\xdc\x3e\x9c\xe0\xa3\xac\xf6\x7e\x1d\x2c\xb6\x2d\x72\x93\x78\x09\x53\x50\x38\x3e\xf4\x34\xa9\x7f\xf1\x05\xa0\x1b\xe9\x5c\xd5\xde\x26\xee\x29\xc9\xc2\x3d\x35\xee\xdf\x00\x00\x00\xff\xff\x94\x3d\xb0\x96\xcb\x09\x00\x00") - -func runtimeHelpHelpMdBytes() ([]byte, error) { - return bindataRead( - _runtimeHelpHelpMd, - "runtime/help/help.md", - ) -} - -func runtimeHelpHelpMd() (*asset, error) { - bytes, err := runtimeHelpHelpMdBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/help/help.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeHelpKeybindingsMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x5a\x5f\x77\xdb\x38\xae\x7f\xbe\xf8\x14\xbc\xee\xc3\xb6\x67\x1d\x37\xce\xbf\xfe\xb9\x7b\x7a\x4e\x9a\x46\x9b\x4e\x27\x6d\xa6\x49\xa6\xdb\xbd\xf3\x20\x5a\xa2\x63\x6e\x28\x52\x43\x52\x71\xbc\x7b\xf6\x7e\xf6\x7b\x00\x52\x12\x69\xa7\x3b\x79\x60\x28\x12\x04\x01\x10\x00\x7f\x90\xfc\x8c\x7d\x12\x9b\x85\xd4\xb5\xd4\x77\x0e\xe0\x52\x56\xd6\xb0\x15\x77\x8c\xb3\x56\x09\xbf\x32\x96\x33\xb3\x64\x2b\xe3\xef\xc5\xc6\x31\xbf\xe2\x9e\x35\xfc\x5e\x30\xe9\x99\xe0\x6e\xc3\xb8\xae\x59\x6b\xd6\xc2\x2e\x3b\xc5\xbc\x61\x9d\x13\x34\xc6\x95\x82\x7e\x15\xb7\x82\x2d\x3b\xa5\x36\xac\xea\x9c\x37\x8d\xfc\x27\x5f\x28\x81\xd4\x1b\xd3\x59\xa6\xe4\xbd\xd4\x77\x33\x80\x33\x9a\x65\xf7\xa3\x44\xb4\xd4\x79\x63\x45\xcd\xa4\xf6\xc2\x6a\x8e\x6c\xa4\x66\x0d\x49\x2a\x97\xac\x5a\x71\x7d\x27\x6a\xb6\x96\x7e\xc5\xfc\x4a\xb0\xf2\x1d\xc3\xe5\x25\x54\xa6\x69\x50\x14\x63\x71\x1f\x56\x71\xcd\xb8\x72\x86\x2d\x04\xe3\x75\x4d\x1c\x69\xc1\x52\x2a\xc1\xca\xff\x7b\x39\xab\x8c\x5e\xca\xbb\x97\xc4\xfa\x65\x2f\xc2\xec\x1f\xce\xe8\x92\x71\x07\xb5\x74\x55\xe7\x9c\xa8\xd9\x42\x28\xb3\x9e\x31\x56\x18\xcb\x38\x53\xd2\x79\x34\x12\xf2\xaa\xc5\x92\x77\xca\x67\x3a\xc4\x6d\x90\x0f\x5b\x1a\xdb\x70\x8f\x56\xaa\x61\xb1\x09\x5a\x4c\xd1\xd4\xdc\x09\xe6\x84\x20\x4a\x81\x42\x23\x3f\xe9\x48\xb8\x59\xdc\xa8\x31\x56\xe0\x52\xbb\xb7\xb4\x52\xe8\x5a\x6d\xc2\xde\xa8\x3a\x88\xc7\x56\x71\xcd\xbd\x34\xda\xe1\xea\x35\x1e\x55\x2a\x52\x7a\x1a\x68\x96\x9e\x60\xc3\xea\x4c\x04\x28\xdf\xad\x84\x6a\xfb\x75\xb8\xa6\x04\xf8\xb8\xfc\x43\x13\xd5\x46\x38\xa6\x8d\x67\xe2\x51\x3a\x3f\x1d\x8c\xee\x64\xd3\xe2\xd9\x5b\xc1\x3d\x3a\xce\x2c\xba\xd9\x5a\x2a\xc5\xee\xb5\x59\x47\x51\x0c\xab\x4d\x38\x46\xa4\x81\xef\x71\x39\x7a\x14\xea\xc1\x83\x59\x1d\xfb\x33\xe3\xd6\x9a\xb5\xc3\x15\x8d\x79\x10\x6c\x6d\x6c\xcd\x16\x1b\xfa\x3f\x63\x67\xde\x2a\xa6\xc4\xd2\x93\x96\x56\xde\xad\x3c\x91\x01\x32\xa9\x3a\xeb\x8c\xc5\x95\xf8\xe4\x3c\xb7\x81\x6c\x30\xb9\x60\x4a\x6a\x31\xa5\xc1\x0a\x39\x75\x2d\xf5\x6b\xb3\xd6\x61\x37\xbf\x12\xd0\xb3\xf9\x11\x8f\x45\xb7\x5c\x0a\x9b\x28\xb1\x32\xaa\x66\x6e\x25\x97\xe1\xb4\x30\x3c\x22\xad\x13\xc4\xb6\x11\xda\x33\x5e\x85\xe3\xf3\x86\x39\xa1\x44\xe5\xd9\x7a\x85\xce\xd9\x98\x87\x10\x21\xf0\xec\x19\xfb\x2a\xa2\xdd\xc9\x1a\x00\x37\xb8\x5f\xef\x6b\x0d\xdf\xa0\x7f\x5b\xb1\x30\x9d\xae\x59\xe7\x90\x8e\xa2\xe2\x0f\x0e\x2f\xf8\xd9\x39\xaf\x56\x70\x2f\x36\x4c\x3a\x16\x38\x78\xc3\x30\x6e\x48\xb0\x19\x00\x3a\xa2\x78\xe4\x4d\xab\xc4\x14\xe7\x90\x0b\x2b\xd1\xe4\x7b\x9b\x92\xe2\x5f\xd7\x86\xac\x11\x06\xff\x49\x83\x56\xa0\x8b\x91\x3f\x98\x4e\xd5\xac\xed\xc8\xf3\x60\x69\x94\x32\x6b\x14\x31\xc6\x48\xf9\x94\x54\x00\x65\x59\xe2\x33\xfc\x0b\xfe\x6b\x82\x6c\xbf\x4f\xde\xb2\xc9\xad\xae\xcd\x64\x1a\x47\xfe\x8e\x23\x5f\x45\x6d\x26\xf0\x6f\x24\x07\xf8\xa8\x31\xca\x25\xca\x8d\x22\x08\xec\xea\xbb\x90\x71\xfe\xc0\x18\xa3\xeb\xda\x4e\x43\xf9\x8e\x94\xfc\xcb\xbd\xd8\x54\xa6\x59\x98\x77\xec\x2f\xc1\x1c\xef\xca\xad\x04\x80\x74\x94\xd9\xe2\x39\x4e\x29\xa2\x43\xb2\x18\x5d\x81\x72\x50\xb5\xe2\x52\xb3\x98\xa1\x1c\x5b\xaf\x84\xc6\x43\x0b\x62\x84\x78\x1f\xcc\x2c\x97\x24\xcf\x9a\x6b\xcf\x4e\x95\xdf\x43\xff\x00\xc7\x1f\x42\x18\xff\xde\x49\x3f\xc8\x4b\x92\x4a\x8f\x29\x55\x30\x67\xde\xa6\xa6\x63\x8c\xb1\x09\xad\x47\x5b\x5d\xf3\x07\x31\xfd\xa5\x93\x7e\x30\xd8\xb3\x67\xec\x7d\x74\xac\x5e\xae\x2d\xa1\x89\x3b\x47\xb7\x23\x8b\x3e\x8a\xaa\xf3\x82\xf1\x9e\x9c\x8d\x1a\xb1\xc6\xd4\x82\x3d\x47\xf5\xa1\xa4\x6c\xd2\xb3\x2c\x5f\xcc\xd8\x75\x48\x08\xad\x15\x2d\xc6\x8c\x1f\x1d\x38\x04\x47\x19\x89\xdf\x96\x99\x25\x9e\xd6\xa6\x45\x6d\xfa\x05\xed\xba\x1e\xf4\xf9\x4c\x89\x45\x68\x32\x4e\x6b\x85\x73\xac\xa4\x05\x65\x70\xb5\x76\x5d\x97\x83\xbc\x94\x8b\x16\xa2\x57\x0a\xb3\xa3\xac\x56\x61\xd8\xad\xcc\x1a\xc8\x6f\xd6\xc6\xe2\x55\xc5\x6a\x69\x45\xe5\x8d\xdd\xf4\x7e\x2b\xf5\xd2\x2c\xb8\xdd\x3e\xe5\x60\x30\xcd\x26\xe8\x7d\xe8\x19\x93\x64\xc3\x44\xd1\x3d\x9c\x47\x6d\x6f\x30\xe5\x37\x82\xeb\x78\xd5\x42\xb8\xe6\xd6\x46\xff\xc9\x33\xd9\x34\xa2\x96\xdc\x0b\xb5\x19\x8c\x4f\x39\xad\x67\x99\x2b\x9b\x98\x75\xca\x16\x9d\x07\xa9\x9d\x17\xbc\x66\xff\xe8\x9c\x67\xad\xe2\x95\x88\x09\xcc\x26\x11\x18\x35\xd9\x3e\xcb\x2d\x97\x84\x31\x96\x83\xd7\x86\x70\xff\x2b\x45\x7b\xf9\x8e\xe1\x91\x97\xbb\xe7\x45\x34\xc9\x79\x05\xbd\xc9\x3f\xfe\xe3\xb1\x05\xde\x53\x46\xae\x54\x86\x53\xe1\x6d\x2b\x82\x9c\xa9\x0d\x50\x74\xfc\x4f\xc7\x15\xb3\x34\x92\xc3\x42\x04\x95\x6b\xc6\x97\x5e\x58\x0c\x92\xe7\xda\x44\x0b\xba\x16\x8d\x91\xde\xd3\x64\xfd\xca\x68\x6f\x8d\x0a\xa6\x8c\xcc\x88\x09\x26\xeb\x17\xb3\x2c\x64\x2c\x5f\x33\xe1\x2a\xde\xe2\x1d\xfa\x7b\x27\x74\x25\x1c\xc0\x17\xad\x36\xcc\xa2\xd1\xe9\x32\x77\x82\x12\x43\x1f\xd1\x78\x13\x13\xaa\x11\xce\x07\x38\x92\x66\xf6\x20\x03\xb7\x02\xcf\xde\x04\xd9\xa0\x4f\x35\xae\x6b\x5b\x63\x71\x15\x91\x2e\x8d\xed\xd7\xce\x70\x57\x31\xe0\x11\xcb\xd7\x0b\x5e\xdd\x13\x24\x08\xb7\x01\x67\x5e\xd8\x46\x6a\xae\xf6\x16\x1c\xd1\x0c\x1e\x82\xb1\x98\xf2\x7d\x8f\x19\xe2\x50\xd3\x39\x0f\x77\xc2\xf7\xd7\x95\xf4\x8e\x1c\x04\x31\x0c\xea\xc1\x17\xa6\xa3\x4b\x99\x89\x07\xa1\x3d\x32\xb0\xa6\xbb\x0b\x38\xac\xdf\x05\xbd\x7a\x7c\x02\x27\x30\xe1\x85\x8b\x2f\xae\xea\x71\x98\xb1\x0d\xee\xb2\x6d\x46\x66\x96\x5e\x68\xf6\x7c\xd1\x79\x82\x17\x5c\xad\xf9\xc6\xbd\x00\xba\x79\xc7\xa4\xb1\xff\x38\x5f\x94\x33\xb6\x75\x47\xc9\x65\x84\x8a\x78\x0a\x8e\x95\xbf\x3d\xce\x17\xff\x3b\xff\x9f\xe3\x0f\xe5\x14\x8d\xda\x18\xe7\x07\xd9\x5c\x38\x25\x72\x2f\x0c\x42\xba\xa3\x10\x6f\x05\x3f\x14\x35\x61\x8b\x9f\xc5\xd2\xc7\x9b\xb0\xe1\x7a\x43\xea\x57\x2b\x63\x49\x2b\xd4\x7e\x9a\xa9\x1f\x83\x17\xd5\x66\x48\x1e\xb5\xab\x30\x41\x46\xe7\xa4\x49\xe0\x3a\x9b\xe3\x0a\x25\xa6\x0c\xd3\xb9\x3c\xfe\xe8\xb8\x29\x28\xde\xe3\xd1\xa2\xf3\x96\x53\xd6\x6c\xb6\x8d\x5c\xfe\xd6\xed\xef\xbf\x5a\x96\x83\xa7\x4b\x47\x20\x8d\xe4\x21\xd8\x92\x58\xee\xc5\x34\xe6\x3c\xe9\x43\xf2\x0a\x3c\x96\xc6\x42\x39\x6e\x43\x76\x41\x9b\x07\xa3\x56\x1c\x79\x8d\x09\x60\x24\x9c\x01\x5c\x98\xb5\x78\x10\x76\xca\x9c\x69\x44\x62\x64\x04\x08\x78\xef\x53\x0c\xf4\x18\x22\x78\x7c\xd8\x95\xb9\x56\x54\x72\x29\xab\x68\x10\x18\x5d\x01\x97\xd4\x62\x29\xb5\x20\xb7\xd2\x6c\x69\x4d\x13\x85\xe9\x2f\xc1\x90\x9d\xd5\x26\x30\xf6\x2b\x83\x9e\xb6\xcd\x08\x71\x4d\xb8\xa5\xb7\x52\x5b\x06\x6a\x12\xc5\x7b\xee\x98\x45\x6d\x57\xd1\x9d\x6b\x61\x38\xe5\x5e\x74\x72\x30\x04\x8e\x18\x75\x25\xe5\x22\x8f\x72\xf6\x37\xb3\xd4\xdb\x20\x67\x37\x4d\xe2\xb1\x8d\x4c\x30\x5f\x7e\x10\x4a\x78\xf1\xcd\xd8\x1a\xbd\x6f\xc8\x95\x17\x02\xb1\x3c\x96\x48\x68\xe1\x5e\x32\x82\x90\xe8\x22\x28\x50\x9e\x9b\x28\xd6\x6a\x89\xe0\x14\xf1\xe6\x70\x26\x98\xca\x9e\x31\x79\x23\x6c\x73\x40\xd0\x29\x74\x47\x20\x54\x9b\xe0\x3e\x52\x33\x56\x5e\x59\x41\x0c\x2a\xe1\xf6\xde\x5d\x59\x83\x28\xcd\xed\xbd\xfb\x84\x95\x42\xd0\xb6\x52\xb2\xba\x0f\xd7\xec\x9f\xcb\x29\x48\x8d\x88\x8f\x72\xf2\x58\x18\x05\x8c\xbd\x8c\x30\xba\x3c\x25\xc1\xcb\x1e\xf8\x96\xd7\x68\xcd\xf3\x10\x10\xd7\xf1\xd8\x02\x1e\x20\x20\xcf\x17\x88\xc5\xfb\x80\x88\xb7\x33\xde\x47\x7e\xd3\x0a\x56\x8e\x27\x20\x75\x04\xfb\x0b\xf3\xc8\x9e\xd3\x56\xbf\x91\xbf\x33\xe9\x80\x77\xde\x60\x2e\xab\xa8\xac\x74\x68\x93\xc5\x26\x2a\x3f\x0b\x46\xf9\x59\xea\xee\x31\xa6\x4e\x65\x78\x1d\x40\xf7\xf7\x5d\xbb\xa8\x84\x90\xea\x88\x48\xcc\x5a\x6b\xee\x2c\x6f\xb0\xc0\x35\x0d\xce\x3a\x63\xf4\x7f\x07\x30\x7f\xab\x73\x30\xff\xd1\x63\x1e\xa6\xf8\x6b\x8d\x73\x32\xd6\xc9\xb5\x74\x01\x58\xea\xcd\x13\x95\xe6\x08\xff\x17\x1b\x2a\x97\x22\x09\x94\x81\xfd\x27\xb1\x29\xa3\xb7\xf7\xb9\x16\xb3\xda\x9f\xdc\x8f\xf0\x76\x7f\xb1\xa5\x60\x96\x4e\x6b\x40\xb8\x63\xe9\xd1\xdf\x48\x4f\x55\xbe\x78\x81\x72\xa9\x5d\x48\xb3\x51\xaa\x41\xaf\x94\x31\xf1\x0b\xf9\x67\x33\xd6\x7d\x84\x5b\x62\xce\xef\xeb\xa5\x66\xc6\xc8\xed\xd1\x4c\xf4\x56\x61\x84\xdf\xc6\xaf\x30\x31\xa7\x63\xdb\x9b\x85\x60\x83\x33\xba\xcc\x6f\xdb\xd8\xf9\x60\xd6\x3a\x76\xaf\xf8\x9d\x18\xc6\xf1\x21\x99\xc3\xd8\x8b\xdd\xaf\x58\x56\xc6\xfe\x35\xa6\xd2\xd8\x3f\xd7\x35\x5c\x93\x07\xdf\x98\x30\xde\x3f\x8d\x33\xb7\x6d\xec\x10\xeb\xd0\x25\xd6\xa1\x1b\x58\x63\xac\x8f\xbd\x64\x7a\x9c\x18\x9f\x69\xfa\xd2\x3c\x88\x9f\xa5\x16\xee\xb6\x1d\xfb\xb4\xc5\x98\x3d\xc2\xc2\x3c\x9b\xf4\x12\x48\x2d\x72\xd1\xbf\x2c\xb3\xb1\x73\x5d\xc7\x91\x8f\xda\x09\xeb\x3f\x8b\xb5\x1a\x9f\xae\x31\x4b\xc2\x90\x2f\xe3\x1e\x70\x26\x10\xdf\x44\x9a\x1b\xbe\x00\xac\x3b\xa8\x39\x55\x2a\xfc\x77\x50\x48\x5d\x53\xf3\x59\x3c\x7a\xea\x5c\x59\xf1\x20\x4d\xe7\x00\x8b\x3c\xc0\xba\x0e\xce\x4c\xbb\x81\xb3\x0e\x0d\x1d\x64\xfd\xd0\xb5\x4a\x56\xdc\x8b\xf0\x44\xfb\x45\xf1\x6a\xa1\x7d\x10\x5b\x1a\x0d\x5f\x3a\x9f\x0f\x5c\x71\xe7\x7b\xbd\x50\x8c\x2f\xad\xd0\x85\x54\x02\xc2\x89\xe1\x49\x45\x37\x18\x1c\x20\x10\xc7\xd1\xf1\x81\xe6\x2e\xb8\x5a\xc6\x99\xbe\x1b\xd6\x24\x46\x1c\x8d\x77\xc5\x2d\xbf\xb3\xbc\x5d\x0d\x3a\x0e\x23\xa4\xfe\x8d\xb9\xbb\x53\xe2\x42\xa8\x36\x76\xbf\x76\x4a\x58\xf8\xa9\x6b\x5a\x5a\x7f\xa6\x04\x47\x97\xf3\x9d\x83\xeb\x95\x50\xea\xd2\xd4\x02\x33\x0b\xe2\x5f\xea\x63\x55\x47\x0d\xea\x76\x5a\xd7\x68\xf6\x7e\x33\xec\xe3\x36\xfd\xff\xeb\x56\x49\x0f\xb7\xda\xd1\xff\x5f\xc3\xe3\x45\xf8\xd7\xaf\x09\x4f\x41\x98\x4b\x5e\x59\x03\x57\x8a\x6f\x42\xef\xba\x73\x54\xc3\x3d\xbf\xd5\xf2\x91\x19\xad\x36\x2f\xe0\xba\xb2\x46\x29\xb4\x13\x75\x82\x2d\x5a\xbe\xd6\x97\x9d\xf2\x32\xc4\xc9\xce\x40\xb0\x29\x7c\x15\x8d\x79\x10\x29\x61\x18\x39\x55\x2a\x19\x74\x70\x7d\x2f\xdb\x94\x6a\x48\x74\x64\xa8\x1b\x73\xc9\x7d\xb5\x92\xfa\xee\xbd\x45\x67\xa4\xcb\x72\xb7\x32\xa3\x5b\xb3\x31\xf4\xca\x32\xe6\xa2\xe7\xf1\x8d\x0c\x96\x48\x0b\x31\xbe\x03\x09\x54\x8b\xce\x7b\xa3\xdd\x8b\x90\x44\x2e\x71\xec\x0a\x91\x61\xe8\xa6\xf2\x8c\xd7\xb3\x74\xf1\xad\x52\x48\x48\x98\xc8\x86\xa4\x44\xd7\x43\x5a\xbb\xc7\xf4\x74\xdb\x02\x59\x2d\x84\x2b\x05\xe9\x6d\x1b\xff\xc5\x10\x36\x6b\x4d\x03\xd8\x89\xc9\x28\x84\xda\xb6\xe7\x5e\x98\x86\xdc\x2f\xc6\x60\x1f\x98\xe4\x60\xe7\x8f\xd2\x07\x87\x82\x33\xae\x2b\xa1\xe0\xca\x4a\xed\xe1\x8a\x77\x2e\x04\xb3\xe7\x0b\x28\xe6\x50\x1c\x40\x71\x08\xc5\x11\x14\xc7\x50\x9c\x40\xf1\x0a\x8a\xd7\x50\xbc\x81\x62\xbe\x0f\xc5\x7c\x0e\xc5\xfc\x00\x8a\xf9\x21\x14\xf3\x23\x28\xe6\xc7\x50\xcc\x4f\xa0\x98\xbf\x82\x62\xfe\x1a\x8a\xf9\x1b\x28\x0e\xf6\xa1\x38\x40\x3e\x07\x50\x1c\x1c\x42\x71\x70\x04\xc5\xc1\x31\x14\x07\x27\x50\x1c\xbc\x82\xe2\xe0\x35\x14\x07\x6f\xa0\x38\xdc\x87\xe2\x70\x0e\xc5\x21\x6e\x78\x08\xc5\xe1\x11\x14\x87\xc7\x50\x1c\x9e\x40\x71\xf8\x0a\x8a\xc3\xd7\x50\x1c\xbe\x81\xe2\x68\x1f\x8a\xa3\x39\x14\x47\x07\x50\x1c\xa1\x64\x47\x50\x1c\x1d\x43\x71\x74\x02\xc5\xd1\x2b\x28\x8e\x5e\x43\x71\xf4\x06\x8a\xe3\x7d\x28\x8e\xe7\x50\x1c\x1f\x40\x71\x7c\x08\xc5\x31\xaa\x70\x0c\xc5\xf1\x09\x14\xc7\xaf\xa0\x38\x7e\x0d\xc5\xf1\x1b\x28\x4e\xf6\xa1\x38\x99\x43\x71\x72\x00\xc5\xc9\x21\x14\x27\x47\x80\xf8\x2f\x64\x35\xec\x9d\x52\xfb\x9e\xda\x33\x6a\x3f\x50\x7b\x4e\x6d\x41\xed\x5f\xa9\xbd\xa0\xf6\x23\xb5\x3f\x51\xfb\x89\xda\x9f\xa9\xbd\xa4\xf6\x33\xb5\x5f\xa8\xbd\xa2\xf6\x17\x6a\xbf\x86\x5d\xa9\xbd\xa1\xf6\x96\xda\x5f\xa9\xfd\x46\xed\xdf\xa8\xfd\x4e\xed\xdf\xa1\xaf\x48\xae\x7f\x87\x01\xb0\x2a\xee\x56\x81\x1d\x3a\x46\x9c\x39\xe3\x96\xfb\xc0\x52\xd7\xc2\xba\xca\xd8\x34\x5f\x7f\x51\xf5\xf8\x80\xd9\xe1\xdc\x55\x10\xe0\x17\x9c\x93\x63\xfd\x71\x10\xc5\xf0\xa0\x20\xda\xf4\xaf\x22\x87\x10\xd2\x58\x36\xaa\x21\xd2\x8c\x85\x2c\xf4\xd2\xa0\x8a\xf7\x19\xc6\x94\xac\x6b\x25\x42\x3f\xb8\x39\x75\xbf\xad\x84\x50\x74\xcf\xf5\x0f\xe4\xeb\xe3\xe3\xc8\x81\x1e\xc3\xd2\xf0\x9a\x8b\x7d\xd8\x41\x2a\x2c\xbc\x0c\xec\x2c\x8f\xaf\x39\xb7\x00\xf9\x6d\x3b\x79\xcb\xd2\xbf\x49\x0f\x20\x26\xd3\x40\x81\xdb\x67\x34\x93\x11\x59\xf4\x34\x24\x44\x4a\x34\x49\xb0\x44\x4f\x44\xf8\xfe\x09\x46\x34\x1e\x69\xae\x57\x72\xe9\x53\x99\x26\x3d\xb0\xc8\x28\x52\x99\x26\x23\xe2\xc8\x68\xd2\xed\x26\x23\x14\xc9\x68\x52\xb9\x27\x09\x46\xe9\x89\x4e\x95\xcf\xa5\x9e\x0c\x85\xca\x48\x91\x2b\x3f\x19\xc0\x48\x42\x92\x5b\x79\x92\xe0\x99\x84\x28\x37\xf4\x24\x03\x3a\x09\x59\x2e\xf8\x64\x0b\x3a\x6d\x13\x0e\xe2\x4f\x72\x4c\xd5\xd3\xf5\x41\x36\xca\x9f\xdc\xed\x29\x51\xa6\xe5\x64\xb8\xf4\x53\x92\x6c\xc3\xc9\x13\x80\x2b\xb3\x3d\x66\xef\xad\xf3\x79\x92\x78\xe0\xdc\x4b\x30\xd9\x81\x6d\x19\xdf\x73\x5d\x27\xca\xfc\x88\x94\xb2\x45\x7a\x2a\x93\x04\xf1\xa6\x44\xd9\xa9\x4c\x06\x28\xbc\x23\x5d\xcf\x2c\x57\x65\x87\xac\x67\x97\x4a\x96\x9c\xd9\xde\xbf\x32\x47\xd9\x41\x54\x29\xe9\xbf\x9f\x26\x45\xec\xd3\x93\x51\x7a\xcb\xc8\x32\x80\x9b\x4a\x77\x91\x91\x0d\x09\xb3\x27\x19\x07\xde\xfe\x88\x04\x65\xca\x38\x6d\xd7\xf6\x09\x5d\xc6\xee\x07\x74\x37\x7c\x91\xe7\xa6\xc9\x16\xfc\x9d\x0e\xd8\x3b\x95\xd2\xa7\xcb\x26\xdb\x08\x79\x1a\x07\xb6\x7d\xe1\x4b\xa6\x7e\x0f\x9b\xb3\xe3\xcb\x28\x10\xdf\xa7\xb3\x45\x36\x8b\x40\x3f\x9d\xfd\xbc\x33\x9b\x9e\x12\x5d\x95\x3b\x14\xdb\x47\xde\x7f\x0b\x1a\xa9\xe2\x67\xa2\x61\xf6\x7b\x36\x4b\x9f\x8c\x92\xd9\xb3\x3c\x3f\x9b\x76\x93\xce\xfe\x6d\x2b\x7b\x67\xc2\x7d\xda\x9e\xdc\xb6\xde\x87\x8c\x20\x2b\x5f\x52\xb2\x5f\xb7\x3c\xd6\xf9\x6c\xfa\x34\xb7\x70\x5f\xc4\xa4\x24\x37\x19\x49\xa8\x00\x12\xbf\x9a\xe6\xf7\x4b\x52\x1a\x24\x44\xb3\x9c\x28\xd6\x0c\x3d\x41\x9a\x96\xa2\x20\xbb\x39\x29\xcd\x31\x8c\xfd\x30\x21\x66\xbc\x7e\x94\x60\x32\x5e\xbb\x09\x26\x80\xde\xdd\x44\x15\xc7\x13\xaa\xa7\x32\xd5\x30\x3e\xcd\x3f\x53\x8c\xdc\xc6\xa2\x2c\xcb\xf6\x4f\xd0\x50\xb5\x96\xdd\x1b\x19\x51\x5f\xc6\x0d\xb8\x81\x82\x3a\x15\x3c\x8e\x24\x1c\xde\xe7\x27\xde\xd7\x7c\x29\xc9\x2f\x19\x09\x7d\xd6\x4b\x8d\xb7\xe5\xd4\x43\xa9\x98\x12\x7d\xcb\x88\x86\xda\x30\xbb\x0a\x9e\xd0\x97\xca\xc0\x94\xe8\xa7\xdc\x7d\xfb\x4a\x71\x32\x05\xa2\x79\xf9\x92\x9d\x37\xbc\x72\x7b\xce\x6f\x42\x05\x34\xfc\xfa\x84\xf5\x79\x6f\x89\xf7\xd7\x53\x97\xf5\xde\xa2\x9f\xd9\x4e\x95\x9c\xae\xbc\x5d\x1f\xc4\x39\x34\x6f\xe6\x7a\xbd\x20\x1f\xb5\x17\x77\x01\xf3\x85\x37\xe1\xf4\x4b\x90\x86\x6b\x7e\x27\x6c\x94\xa7\x98\x53\xf2\xdd\x75\x80\xe2\x20\xdc\x50\x49\x8a\x2b\x0e\x69\x28\xcd\x6b\xc5\x11\x0d\xa5\x27\x52\xbc\xda\xa5\x9a\xef\xa3\x8c\x29\xd5\xb9\xab\x48\x6c\x42\xe0\x89\xcc\x97\x01\x69\x67\x36\x4b\x21\x71\x84\x31\xb1\x04\xef\xb9\xe5\x38\x99\x6c\x35\xd4\xe6\x19\x4d\x86\x07\xc7\x02\x37\xa3\x09\x98\x3c\x5e\xe4\x94\x9f\xae\xac\x6c\xb8\xcd\x52\xe5\x5e\xca\x6e\xb2\x5d\x1f\xa7\x0a\xe1\x68\xab\xfa\x0f\x6c\x8e\xed\xfa\x43\x10\x78\xeb\x85\x41\x7a\xc2\xcd\x53\x04\x21\x35\xa6\x64\x6d\xf8\x91\xc0\xd6\x1b\x86\x94\xa2\x1a\x29\xb6\xde\x38\xa4\x54\x8f\xb4\x5d\xfe\x06\x62\x32\x4d\xbe\xa3\x17\xf4\x49\x40\x1b\x2f\x1c\xc0\x67\xe3\xc5\x5b\xf6\x45\x87\x4a\xc9\xa8\x7a\xfc\x34\x24\x9a\x4e\x71\x8f\x4a\xd3\xef\x94\x34\xfb\x26\x75\x6d\xd6\x8e\x35\xbc\x5a\x21\xaa\x9d\x86\xcf\x10\x17\x25\x73\x2b\x7a\xbb\xbd\xa0\x0f\x52\xe1\xb5\xf9\xa2\x87\x07\x33\x80\xd3\xf8\x53\x07\xae\xd4\x66\x3a\xfe\x54\x86\xde\x2b\xf4\x35\x18\xbd\x1c\xc6\x6a\x87\x3e\x83\xdf\x8b\x4d\xfe\x79\x3d\x0c\xf3\x12\x2b\x33\xea\xde\xb6\xe5\x8c\x85\x9f\xea\xc4\xcf\x8d\x28\x27\x33\x6d\xd8\x88\x95\x7b\x25\x5b\x08\xbf\x16\x42\xb3\xc6\xd4\x72\x29\x85\x75\xe1\xa7\x07\xb8\x3e\x7c\xfc\x00\x52\xa0\x64\xce\x0c\xfc\xab\xa8\x09\xb3\x62\x6d\xa5\xf7\x42\x33\x1e\xbe\xcd\xf3\x92\x3d\xaf\xb8\xc3\x18\xf4\x1e\x99\xa1\x9a\xa8\x4c\xef\x13\x2f\x66\x40\x9f\xc8\xa5\x63\xeb\xd5\xf0\xf5\xfd\xa9\x57\xcf\xc3\x8f\x8f\x44\x90\x66\x80\xdd\x25\xeb\xbf\x83\x9b\x65\xd0\x33\x99\x0a\x95\x2b\xb7\x82\x89\xdf\x3b\xf9\xc0\x55\xf8\xd0\xfb\xff\x01\x00\x00\xff\xff\xa4\x09\x1c\xfe\x26\x27\x00\x00") - -func runtimeHelpKeybindingsMdBytes() ([]byte, error) { - return bindataRead( - _runtimeHelpKeybindingsMd, - "runtime/help/keybindings.md", - ) -} - -func runtimeHelpKeybindingsMd() (*asset, error) { - bytes, err := runtimeHelpKeybindingsMdBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/help/keybindings.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeHelpOptionsMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x5a\x51\x8f\xe4\xb6\x91\x7e\x1e\xfd\x8a\xc2\x38\xc0\xcc\x18\x3d\xbd\x46\xce\x0f\x41\xbf\x18\x6b\xef\xdd\xc6\xc8\xd9\x1b\x9c\x37\x77\x0e\x92\x20\xa2\xa4\x52\x8b\x19\x8a\xd4\x91\x54\xf7\x6a\x0d\xdf\x6f\x3f\x54\x15\x29\xa9\x7b\x7a\xa6\x73\xc0\xbd\x2c\xb6\x25\xb2\x58\x55\xac\xfa\xea\xab\xd2\x7c\x01\x1f\x86\xa8\x9d\x0d\x45\xf1\x83\xae\xbd\x83\x10\x9d\xc7\x00\xca\x18\x70\x2d\xc4\x0e\x61\x0c\xe8\xa1\x76\xb6\xd5\xfb\xd1\x2b\x5a\x0c\xda\x82\x8e\xe1\xec\x61\xa3\x3d\xd6\xd1\xf9\x69\x9b\x65\x8d\x01\x03\x8b\x28\x7f\xf3\xf3\xbb\xf7\x7f\xff\xee\xc3\x8f\xff\xf6\xfd\xfb\xbf\xff\xfe\xc3\x0f\xff\xfa\xa6\xa7\x05\x25\x28\x79\xff\x92\x20\x78\x1b\x60\x40\x5f\xd0\x9a\x9f\xdf\xbd\x87\x30\x60\xbd\x01\xdd\x3e\x17\x58\x82\x0e\x60\x5d\x84\x80\x71\x03\xe5\xff\xbc\xd9\x8a\xcc\x7c\x90\x0e\xa4\x4d\x43\x07\x16\xcb\x89\x27\x3a\xff\x1e\x3d\x82\xf2\xc8\x1a\x39\xf1\x0a\xc4\x4e\x45\x98\xdc\x08\xb5\xb2\x24\x7b\x57\x14\x5f\x42\xa9\xc6\xe8\xb4\x6d\xd0\xc6\x72\x07\xc7\x0e\x2d\xd4\x1e\x55\xd4\x76\x0f\x0a\x2c\x1e\xc1\x68\xcb\x8e\x63\x59\x41\xf5\x08\xb2\x5c\x0c\x4c\x56\x17\x00\x30\x78\x3c\x68\x37\x06\xde\xb1\x2d\x8a\x9b\x06\x5b\x35\x9a\x08\x07\x65\x46\xdc\x41\x19\xfd\x88\xe5\x7c\x68\x50\x07\x2c\x77\xc0\x46\xc1\x51\x1b\x03\xf4\x84\xa5\x55\x63\xdb\xa2\x07\x3c\xa0\x9f\xe0\x77\x10\xb0\x76\xb6\x09\x40\xbb\x7a\x15\x75\xad\x8c\x99\xb6\xc0\x17\x43\x07\x2b\x13\x92\x84\x93\x15\x22\x4f\xd9\x06\xfe\x7b\xd4\x51\x6c\x23\xf3\xf1\x13\xfd\xd2\xb1\x73\x63\x04\x15\x9e\xb4\xdd\x6f\xe1\x5b\x24\x49\xb5\xf2\xd8\x8e\x46\xd6\x8e\x81\x9c\x10\x3b\x1d\xa0\x45\x15\x47\x8f\x1b\xa8\xb0\x56\xe4\x0b\x92\xd3\xeb\x7d\x17\x41\xd5\xb5\x66\x77\x2c\x27\x42\xab\x0d\x6e\x48\x9e\x3b\xa0\x3f\x7a\xcd\xde\x3c\x92\xfb\x8f\xe2\x2f\x8f\x50\x61\xeb\xfc\x45\x37\xb5\xca\x84\xe4\xa7\x4a\x05\xb4\xaa\x27\x3f\x69\xcb\xae\xd1\xb6\x75\x95\xf2\x1b\x08\x9d\x3b\x82\xb3\x66\x12\x8f\xa5\x85\x39\xd0\x49\x03\xa8\x90\xce\xc5\x46\x47\x6c\x48\x1b\xaf\xe8\x68\x8a\x03\x91\xd5\x8e\xc6\xc0\xa0\x62\xb7\x2d\xe8\x35\xbc\xa2\x48\xed\x8c\xf3\xb5\x33\x63\x6f\x49\x97\x56\xdc\xb2\xc4\x29\x44\x07\x5f\x6d\x80\x1d\x6b\x0c\x34\x3a\x0c\x46\x4d\xa0\x40\xf6\x80\x8a\x74\x62\x01\x1c\xf6\xba\xd5\xd8\xa4\x37\x5b\xf8\x98\x24\x8d\x81\x5d\xaf\x5b\x76\xee\x51\xd9\x98\x37\xff\xee\x2b\x12\x5f\x21\x74\x7a\xdf\x19\xf2\x3a\xdb\xc3\xa2\x94\x81\xd6\x79\xc0\x4f\xaa\x1f\xcc\x45\x77\x7e\xb5\xb2\x20\xd4\x1d\xb2\x37\x8d\x53\x4d\xce\xd7\xf9\xb9\x00\x46\x43\xae\x26\x7f\xfc\xe6\x5e\x32\xeb\x9d\xf6\x0f\x6f\x56\xcb\xc2\x9b\x52\x52\xaa\xdc\x72\xf0\x6e\xc4\x84\x80\x91\xef\x59\x07\x28\xf7\xc6\x55\xca\xf0\xf5\x94\x97\x74\x4a\xbf\xcb\xa2\xb8\xf9\xd1\x45\x94\xd4\x24\x6d\xf2\xc2\xf5\x71\x70\x9f\x9e\x6e\x20\x38\xa3\xbc\xfe\x8c\xcd\x86\xe3\x7a\xfe\xf9\x18\xeb\x87\xe2\x86\x12\x9e\xee\xc3\xb8\x5a\x45\xb1\x63\xb6\x60\x09\xdd\xd8\xe1\xc4\xd8\x80\x7d\x85\x4d\x23\xeb\xe8\x6c\xc9\xc4\x4a\x5b\xc5\x18\x72\xf3\xf1\xcc\x3b\x04\x1b\x15\x42\x40\x83\x35\x89\x6f\xbd\xeb\x19\x5c\x73\xc0\x85\x2c\xa9\xb8\x39\x03\xad\x53\xf7\xad\x51\x51\xd0\xb5\x76\x64\x67\x35\xcd\xf6\x53\x7a\x42\xec\x3c\x62\x71\xb3\xde\xbb\x2b\x8a\x9b\x3f\x27\x08\xf3\xa8\x1a\xe8\x1d\x21\x5d\x45\xa9\xcc\x27\xdd\x85\x53\xdf\x25\x8d\xd2\xf5\x97\xd0\xa1\x19\x20\xba\x41\xd7\xc5\xcd\x7d\xc9\xbf\xd2\xab\x87\xad\xc4\xc9\xe8\x83\xf3\x04\x61\xe5\x6e\x09\x38\x16\xc2\x48\x38\x5f\x95\x2c\xa4\xeb\x96\x2a\xa2\xa0\xd1\x04\x5b\x68\xd3\xf5\x51\x0c\xdd\xcf\x21\x46\x0b\x1b\x6c\xb5\xc5\x86\x0c\x3d\x0f\x3d\x8a\x79\xba\x14\x06\x9d\x87\xd7\xd1\x13\x5d\x6b\xf1\x98\x54\x5c\xe1\xe7\x29\xfa\xa9\xa6\x11\x04\x17\xb5\xdd\x7c\x4d\x57\x30\xa7\x55\x21\x36\xda\xc7\xa9\xdc\x49\x96\x37\x18\xd1\xf7\xda\x62\x10\x0c\x7b\xd2\xb6\x21\x9c\x51\x66\xef\xbc\x8e\x5d\x9f\x74\x90\x12\xe9\x96\xf5\xa0\x5b\x86\xe7\x8c\xe7\x3a\x40\xef\x1a\xc9\x7e\xe7\x29\x54\xb7\xf0\x5f\x84\xb4\xab\x33\xc5\x9f\x9b\x24\xf2\x1f\x63\x88\x22\x57\x91\xa4\xca\x39\x83\xca\x42\x99\xc5\x94\x72\x1d\x92\x7d\x74\xb6\x78\x89\xaa\x52\x70\x4b\x75\xe2\xb2\xdf\xab\x27\x92\x63\x19\x10\xb7\x24\x2e\x23\x0f\x9d\xbe\x81\x6a\x8c\x39\xc4\xb5\x55\x75\x4d\x25\x1c\xb7\xf0\x7d\xfb\x4c\xbd\xb6\xdd\x90\x58\xbb\xf2\x3d\x89\xeb\x54\xe8\x72\x64\x70\x14\x24\xb3\xd5\x5e\x69\x1b\x22\x28\x59\x91\x10\xda\x79\xbd\xd7\x96\xe0\x8b\xa0\xfa\x9e\x8b\x2e\x36\x52\x79\x04\x2a\xf3\x7e\xaa\x19\x84\x57\xd8\x3c\x2c\x68\x29\x71\x9f\xb4\x64\xdd\x5d\xc5\xd5\xd7\x4c\xf2\xce\x63\x70\xa3\xaf\x59\x90\xb6\x11\x6d\xd0\x07\x4c\xfb\x05\xbe\xc4\xd5\x66\x62\x00\x1d\xd0\x0d\x06\xe1\xd8\x39\xca\x2b\x8a\x1f\xaa\x85\x29\xb3\x3a\x75\xd0\x76\xcf\x77\x99\x4f\x9c\x2f\x32\x44\x15\xc7\xf0\x7a\xc0\x92\x89\xad\xf3\xbd\x8a\xd7\x62\x8a\x63\x15\x6d\xa3\xed\x3e\xac\x43\x9b\x80\x8b\xd4\x4c\x9e\xe1\x30\x86\x3f\xfd\xf8\xfd\xcf\xa7\x3b\x48\x65\x8e\x99\xf2\xaf\xb6\x84\x7b\xd3\x3e\x90\x43\x3d\xaa\x00\x8d\x0b\xcf\xd6\x92\xa8\xf2\xaf\x9e\xd7\xd6\xde\xb4\xec\x5f\x84\x78\x74\x30\xb8\x10\x74\x65\x50\xac\x09\xe9\xf0\xc5\x77\x74\x52\x39\x5a\xfd\xa9\x64\x24\x2e\x1b\x17\xca\x14\x54\x92\x65\x62\xaf\x68\x5f\xe1\x59\x6e\x92\xf9\x8c\xa1\xb4\x37\x15\x4b\x4a\x0a\x01\x2b\x71\x29\x29\x2b\x51\x10\x4f\x4e\x7e\x5e\x2a\xdd\x68\x1a\x30\xfa\x89\xb3\xbc\xee\x94\xdd\xe3\x82\x57\xd9\x5c\x42\x20\x4e\xc7\x8c\x34\x21\x2a\xbf\xa2\x79\x2f\x21\x03\xdb\x38\xdf\x62\x9c\x06\x02\x9d\x80\x31\xcc\x78\x42\xcf\xf2\xe5\x9c\xc5\xfe\xf6\xbc\x34\xb2\xc7\xa9\x3e\xbd\x5c\x1c\xd9\xd6\xcb\x6e\xa3\x24\x6f\x70\x10\x93\xb2\xb7\x38\x7f\xc8\xa8\x4e\x1d\xb0\xb8\x71\x03\x5a\x56\x57\xef\xad\xf3\x58\xab\x40\x0a\x0f\xe8\xe9\x42\x80\x7e\x3e\x6a\x1b\x28\x1d\xa2\x3e\x50\x35\x53\xbe\xee\xf0\x62\x00\xaf\x40\x51\x28\x6f\xdd\x29\xbf\xb6\x7e\x4d\x84\xe9\x9d\xaa\x23\xfa\x4b\x92\x20\x4b\x61\xf2\x56\xee\x00\xad\xaa\x4c\xea\x28\xf8\x9a\x52\x51\xa9\x5c\x8c\xae\xcf\x18\x41\x48\xe5\xbc\x84\x30\xf4\x18\x82\xda\xe3\x1c\xb8\x83\xa7\xb4\x6e\x9e\xa5\xf4\x55\xf2\xb1\xe4\xe5\x13\xe2\xf0\x9c\xff\x0b\xef\x5d\x9e\x6f\xe0\xd8\xe9\x88\x61\x50\x35\xd2\x01\x8a\x49\x03\x5d\xf8\xe4\x46\x39\x9e\xb9\xae\x68\xb0\xca\x6c\xdd\x2e\xa4\xbb\x77\x87\xb9\x08\x59\xfc\x14\xc5\xea\x99\x85\xdb\x09\xe8\x56\xbc\xf4\x6f\x00\xbc\x6e\x75\x6c\xcc\xe4\x59\x0e\x0f\x1d\xc7\x7c\x45\x84\xc9\x20\x7b\xe1\xdb\x85\x3c\xd0\xde\x45\x7d\x92\x76\x6a\x40\xda\x23\x34\x36\xf9\x9f\x41\x16\xdb\x08\xd8\x0f\x71\xba\x12\x0d\x4f\x38\xf5\x68\xc7\x72\x37\x13\x5d\x36\x4b\x59\xf7\x18\xe2\x64\x10\x9e\x70\x02\x5a\x71\xf9\x5a\x43\xed\x11\xed\x16\x88\xfa\x89\xad\x2a\xc2\x47\xb7\xdf\x1b\xfc\x03\x4e\x3f\xd0\x3e\x1d\xa0\x72\xa3\x6d\xb8\xa6\xbd\x35\xf1\x71\x5f\xae\xe9\x11\xc1\x46\x66\xe0\x0b\x7c\x68\x9b\x3d\xb7\x20\xc8\x16\x3e\x3a\x5a\x42\xe1\xc6\x5b\x36\x10\x74\x3f\x98\x89\xc4\x65\xc9\x74\xc8\x9f\x6c\xa5\x6d\xf3\x07\xbc\x1c\x33\x2b\xe3\x7b\x37\x72\x4a\x1d\x3b\x94\x76\xc2\xa5\x68\x06\x7e\x03\x61\x1c\x06\xe7\x73\x69\x3f\x79\x96\xd4\xa5\xc5\x0d\xf7\x47\x63\x18\x39\xb1\x49\x67\x09\x1b\x65\x96\xdc\x67\x95\x1d\xd5\x1c\x0c\x21\x49\xc2\x03\xda\x48\x45\x43\xd7\x5d\x2e\xd7\x02\x87\x5c\xe8\x56\xcd\x03\x61\xa1\x1b\x26\xa1\xa9\x27\x07\x50\x35\x26\xee\xe8\x5a\x79\x29\x75\xe6\x5e\xb7\xdc\xaf\x41\x08\x1d\x45\x37\xc9\x4b\x6d\xc5\x09\x79\x5e\xe4\x74\x14\x8f\xa2\x5c\x8a\x6c\x41\xb6\xda\xe8\xa1\x72\xca\x0b\xbc\xf7\xb9\x4d\x6d\x1c\x72\xbf\x74\x85\xdd\x0d\x66\xdc\x6b\x4b\x30\x6e\xd1\x84\x72\x47\x1c\x3e\x12\x83\x98\xb9\x76\x7e\x37\x33\x5e\xd9\x02\xbd\xb2\x6a\x4f\x84\x81\x9b\x69\x06\x36\x2e\x96\x54\xde\x79\x05\xd1\xe1\x2d\xbc\xcd\x02\x98\x37\x49\x30\x28\x30\x3a\x44\xf2\xc8\x9d\xc7\xc1\x05\xc2\x9d\xe9\x0e\xfe\x11\x9c\x4d\xd4\x9e\x3d\xce\x3d\xb2\xa8\x03\x3d\x46\xd5\xa8\xa8\x12\x47\x20\xc5\xf6\xfa\x80\x36\x9d\xb5\x85\x9f\x50\xfc\x55\xfe\x51\xd4\xfb\x41\xd4\x2b\xa9\x9f\x67\xa8\x70\x6d\x8e\xd7\x64\xf4\x09\x3f\x67\xbd\x99\xca\x10\x6c\x52\x31\xd5\xce\x5e\x72\x5d\x17\xe3\x10\x76\x6f\xde\xec\x75\xec\xc6\x6a\x5b\xbb\x5e\x9a\x8e\x47\x81\xcf\x37\x22\xfb\x31\x19\xbd\x76\x32\x9b\x7a\xc9\xc3\x8b\x13\x34\x86\xbb\xd7\xfc\x4c\x16\x88\xab\x2f\xf8\x79\x71\x25\x1d\x11\x74\x88\x81\x89\x33\x94\xf4\x66\x4b\xde\x2d\xa5\x7e\x9d\x7b\x37\x2c\xee\x25\xb1\x0a\x08\x93\x0d\x66\xdf\xbe\x5c\x62\x7c\x1f\xbd\xd2\x46\xdb\xfd\x31\xbc\xd6\x1d\x44\xaf\x7b\xc8\x4b\x57\xf8\x18\x08\xb2\xd0\x99\x2b\x20\xe0\x47\x83\x7e\x85\x7f\x8c\xa1\x76\xec\x2b\xf4\x57\xb8\x60\x50\x07\x94\xd6\xa9\xdc\x81\xc7\x9e\xba\xd0\x5c\xe2\x56\x6d\x15\xe3\xb1\x0a\x11\xa2\xee\x71\xa9\xf3\xf4\x98\x2a\xbc\x50\x27\x2e\x83\x63\x04\x1d\xd3\x50\x65\x2e\x37\xb4\x66\xd9\xc5\x0c\xfc\x8a\x45\xa4\x57\xa7\x03\x5d\xd6\x5a\xb1\xda\xf5\x3d\x65\x71\x7a\x05\x15\xc6\x23\xa2\x85\xda\x38\x29\x93\xb6\x01\x8f\x8f\x74\x5e\xa2\xc8\xec\xf2\x17\x26\x2a\xa7\x6e\x18\x6d\xe3\x72\xd1\x8d\xe7\xbc\x7c\x03\xf4\x9a\x53\x54\x1d\xb0\x61\xe0\x03\xd5\x46\xf4\x32\xc3\x33\x2e\xe4\x51\x13\xc7\xa0\xcb\xe0\x97\xde\xb0\x5e\xec\x86\x34\x8f\x9a\x47\x7f\x54\xf5\x59\xb8\xb6\xfb\x6b\x4e\xa9\xbd\x33\x46\x28\xcb\x32\xd3\x91\xa7\x50\x29\x7f\x75\x6e\x24\x4b\x7b\xe5\xf7\xda\x96\x3b\x50\xbd\x1b\x6d\xcc\x44\x3f\x5c\xa0\xaf\x01\xb9\xe9\x48\x83\xbb\x0a\x8d\x3b\x66\xd2\x2f\x91\x71\x49\xe3\x7f\x59\x1f\x16\x06\xc4\xe6\xc2\x59\x24\x5c\x14\xa7\x8c\x72\x16\xf3\x4f\x2e\x29\x97\xc4\xfe\x36\x89\xed\x95\x8f\x83\x0a\x91\x99\xaf\x30\x0f\xc9\x2b\x6a\xb1\x0d\xaa\xe6\x34\x85\xe4\x42\x69\x03\x3d\xef\x47\x13\x35\xb5\x56\xac\xc5\x37\x73\xdf\x29\x39\x19\x23\xf1\x0d\xd2\x6d\xf0\x18\xd0\x1f\xf0\x84\x45\xaf\x09\xa6\xc1\x03\x9a\x53\xd9\x8a\x0b\xfe\x68\x65\x19\x36\x50\x19\x57\x3f\x5d\xc9\x3f\xd7\xc6\xa3\x57\xc3\xb9\x2d\xf4\x2c\x7b\x8a\xf8\x08\x4f\x8f\x9d\x03\xe3\xec\x9e\xf4\x6b\x75\x9c\xfb\x13\xe1\x2f\x57\x42\x67\x30\x3a\x0a\xef\xc9\x31\xae\xa0\x73\x5e\x7f\x26\x84\x33\xc0\xef\x29\xbc\x53\xe7\xbb\xc9\xea\xe8\x48\x35\x3d\xf7\xc3\x1c\x01\xb9\x4c\x64\xb7\xf0\xde\x6f\x5e\x37\x93\x96\x78\xbd\xef\xe2\x72\xfa\x81\xf8\x65\xfd\xcf\x9f\x2d\x45\x9d\x27\xa7\x3c\x03\x4a\xf4\xed\xff\xa2\xc5\xcc\xc3\xce\xb8\xa2\xbc\x78\x85\xfa\xbf\xec\xe3\x45\x7a\xaf\x62\xdd\x55\x5e\xd5\xa7\xa3\x2a\x7e\x4c\xe1\xc1\xaf\xa4\x75\xbd\xbb\x7f\xb8\xdb\xc0\xdd\x2f\xbf\xd2\xbf\x7f\xf9\xdb\xdd\xd5\xc4\x5d\x64\x13\x2b\xce\x3e\x9c\x45\xab\x19\x00\x79\xcd\xec\xc0\x79\x01\xff\x67\x1e\x64\xd0\x9a\x34\xf5\x33\x13\x61\x0f\xfa\x15\xd8\x6f\x20\x37\x8f\xb9\x87\x9a\xf9\x14\xb6\xf1\x1b\x19\x52\xf4\x94\x2b\x3e\x24\x96\xb7\xb6\x9d\x2e\x92\x9c\x72\x1d\x8c\x26\x1b\xd5\xa7\x72\x07\x71\xf4\x36\x80\xfc\xa4\xa0\x26\x3c\x68\xdb\x2b\x79\x33\xd6\x3d\xc1\x4a\x1e\x60\x4b\xef\x16\xc6\x01\x7d\xfe\xac\xc4\x95\x62\x0b\x1f\x88\xf5\x86\x08\x61\x0a\x11\xfb\x30\x13\xf5\xdb\x30\x36\xee\x96\xfa\x79\x6e\x97\x2c\x7c\xfb\xd3\x3b\x8a\xb8\xc4\x62\x6f\x1b\xa7\xc2\xf6\xf6\xa4\x9d\x4b\xaf\xea\x31\x44\xd7\xeb\xcf\x69\x60\x90\xe7\x36\xfc\x15\x88\xee\x85\x0b\x00\xcf\x68\x64\x70\x1a\xc6\x4b\xb6\xd0\xf1\x62\x4b\x54\x15\xf5\x63\xbd\x34\x7d\x56\x1d\xf4\x5e\x45\x84\x85\x00\x70\x3c\xe2\x5e\x5b\xcb\x8d\x76\x86\x50\x15\x52\xcf\x24\x03\xe4\xa8\x2a\xbe\x8f\x7b\xdc\xee\xb7\xd2\xe1\x31\x81\xfe\x7a\x25\xc9\xd9\x1a\x1f\x4e\x7b\x54\xd6\x9d\xc9\xb0\xb2\x53\xe4\x68\x91\xc9\x04\xe9\x15\xa2\x93\xcd\x69\x12\x78\x05\x65\x68\x87\xfe\x7c\x32\x92\x88\xaa\x02\x7a\xc6\x5d\x4d\x1a\xd4\x5f\x10\xf2\xf5\x22\x60\x3e\x72\xc7\x73\xa6\xa4\xfc\xaa\x4b\x60\x43\x5f\xd7\x03\x7d\x1f\x75\x34\x9c\xe7\x3c\xe5\x0d\x73\x83\x24\xa3\x4e\xaa\x75\x7e\xee\x1d\xee\x02\xf0\xf2\xb9\xd9\x09\x18\xa9\x23\x9b\x9b\x05\x4e\x37\x61\x3a\x57\x5c\x30\x06\x1c\xbc\xee\x95\x9f\x4a\xb8\xcf\x71\xd1\x8e\x86\x22\xec\x4b\xab\x3f\x3d\xbc\xa8\xd1\xd9\x7c\x2d\x25\x6b\x12\xb6\xea\x62\x72\x27\x25\x93\x7f\xfe\x96\x98\xc6\xea\x95\xaa\x9f\xf6\x9e\x1a\xd5\x74\xc5\xb9\xc7\x01\xd5\xb6\x58\xc7\x0c\xdc\x96\xf8\xfb\xba\x31\x92\x19\xc3\x77\xd1\x9b\xc7\xef\x38\xa6\xf9\xbf\xff\xf9\x4a\x0a\x3e\x3e\x3e\x16\xc5\xbb\xf4\x2e\x11\xf1\xf4\x65\x73\xf9\x90\xc9\xdc\x87\x6a\xff\x09\xd7\x15\x46\x54\xfe\xf2\x6b\x09\xe5\xfd\x43\x09\xe5\x5f\xfe\x56\x42\x79\x7b\x5b\x42\x79\x77\x57\x6e\xe1\x8f\xde\x1d\x74\x33\xcf\xe5\x39\x14\x17\x69\xe9\xb0\xd7\x07\x9c\x31\xa9\x52\xee\x56\x6d\xfa\xe6\xe4\xe3\x26\x46\x08\xae\x5f\x3e\xc7\x56\x2a\x2c\x23\xbf\x3c\x47\xdb\xc2\xdb\xd9\x69\xbd\xeb\x79\xfa\x72\x7e\x4d\xaa\x12\x4c\xef\xd5\x13\x4a\x6f\xc6\xdf\x82\x86\x19\xec\x87\x29\x76\xce\xf2\xd3\x49\xf5\x26\x0f\x4c\x03\x78\xdc\x2b\xdf\x18\x6a\x58\x5d\x2b\x01\x99\x46\x73\x81\x07\xdd\xcf\xe9\xd8\x7a\x72\x00\x15\x76\xea\xa0\xa5\x33\x26\x08\x3d\x21\xad\x57\x01\xd4\x68\x1b\xb9\x67\x78\x7b\x72\x39\xf4\x78\x9e\x7a\x0b\x5d\xcf\x9c\xf7\xd9\xcd\xcc\x42\x38\x4e\x5f\x6c\x85\xd2\x99\x6f\xed\x94\x95\x23\xc3\xe8\x02\x52\xd8\xe6\xb9\x5a\xce\x3d\x26\xd8\xab\x2f\x24\x50\x9c\x7f\xbf\x9a\xdd\xc4\x1d\x71\x70\x1b\x12\x85\x1c\xe3\x1b\x71\xe4\xe9\x77\x7f\x69\x56\x92\xfc\x22\x13\x8a\x79\x66\x26\xbe\xbe\x5b\xfc\x1c\xd5\x13\x5e\x92\xc3\x70\x4e\xda\x47\x07\xca\x3a\xca\xde\xa2\x57\x54\x62\x71\x1e\xe4\x70\x6e\x72\x31\x3a\x51\x32\xd9\xc3\x7b\x20\xed\xd9\x16\x45\xf1\xc5\x17\xf0\x5e\x26\x84\x14\x20\x32\xb1\xc8\x3b\x8b\xe2\xcf\xcb\xdf\x07\xd0\xf6\xb0\x48\x05\xd4\x2c\x4a\xc6\x8b\x66\x22\x14\xe1\xdd\x66\xda\xc2\xbf\xcb\x7f\xa0\x47\x95\xff\xd2\x80\x32\x29\x0f\x7e\x8f\xce\xde\xc5\x13\x57\x9f\xff\x59\xc3\xa9\x87\xcb\x34\xe1\x52\x71\xfe\xa4\x4c\xc8\x56\x24\xa0\x4c\xd7\x78\x3e\x6b\xfe\x29\x9d\xa6\x32\x32\x2c\xba\xea\xb0\xfe\xbc\xca\x5f\x4f\x8b\x39\x2d\x97\x3f\x92\xe0\xef\x78\x74\x69\x2c\x91\x3a\xd9\x8f\xcb\xc7\x43\xf9\x76\xbc\x6a\xd2\x56\x83\xd6\x4d\x52\x18\x57\x63\xf2\xd5\x4a\xf6\x53\x41\x0b\x79\x1e\x47\x87\x2e\x4a\x26\x27\x6e\x38\xbb\xcb\x80\x91\x1f\x94\xeb\x02\x44\x4f\xcb\x6d\x51\x7c\x9f\xbe\x66\x9e\x39\x6b\x1e\x81\xd3\xcd\xf1\x5f\x43\x50\x57\x4c\xa7\x64\xb0\x49\x67\x50\x1e\x09\x81\x99\xf8\x4f\x03\xf8\x46\x0b\xc5\x96\x00\xcf\x19\x16\x20\xe2\xbf\x21\xd1\xf2\xc5\x4c\xc6\x60\x69\xea\xd6\xa9\x70\x5e\xaa\x29\xe2\x69\xbb\x31\x09\x69\xf0\x53\x8d\x43\x84\xf7\xae\xe0\xdf\xe2\x9e\xb9\x5a\xc3\xd7\x97\x97\xff\xc7\x58\x4d\xf2\x64\x57\x14\x65\x59\x92\x75\xc5\x2f\xc5\xcd\x6d\x1b\x77\x7b\x77\xbb\x83\x5f\x8a\x9b\x9b\xdb\xf5\xd1\xb7\x3b\xe0\x52\x58\xdc\xfc\xba\x91\x75\x7e\xac\xa6\xf5\x4a\xfd\x19\x6f\x77\xf0\xdb\xb4\xe0\x6c\x2f\x21\x45\x7e\x2c\x0b\xbf\x2e\x7e\xa5\x93\x8b\xe2\x83\xa7\xfc\xd2\x46\x79\x33\xcd\xbe\x15\x56\xcb\x49\x49\x2e\x3b\x57\xf3\xcb\xed\x3f\xa5\xe5\x97\x5b\x5f\xfd\x3f\xa8\xf8\xbf\x01\x00\x00\xff\xff\xe0\x03\x35\xb9\xf0\x24\x00\x00") - -func runtimeHelpOptionsMdBytes() ([]byte, error) { - return bindataRead( - _runtimeHelpOptionsMd, - "runtime/help/options.md", - ) -} - -func runtimeHelpOptionsMd() (*asset, error) { - bytes, err := runtimeHelpOptionsMdBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/help/options.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeHelpPluginsMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x3a\x6b\x8f\xdc\x36\x92\xdf\xf5\x2b\xea\x3a\x38\xb8\x3b\x68\x6b\xb2\xb8\x6f\x03\x78\x01\x3b\x7e\xc4\x7b\x8e\x6d\x78\x9c\x04\x8b\x20\x80\xd8\x52\xa9\x9b\x19\x8a\xd4\x92\xd4\xf4\xf4\x19\xd9\xdf\x7e\xa8\x2a\x92\x52\xf7\x4c\xb2\xb9\x3b\x5c\x80\x78\xd4\x12\x59\x2f\xd6\xbb\xf8\x15\x7c\x34\xd3\x5e\xdb\x50\x55\xdf\xeb\xd6\x3b\x08\xd3\x38\x3a\x1f\x03\xb4\x1e\x55\xd4\x76\x0f\xa3\x2c\x80\xa3\x8e\x07\x50\x10\xf4\x30\x1a\x84\x77\x93\x82\x70\x0a\x11\x87\x1a\x5e\xdd\xa1\x3f\xa5\x75\x70\x50\x01\x54\x35\x28\x6d\x21\xb4\x5e\x8f\x11\x8e\x07\xdd\x1e\x40\x07\xf0\x93\x05\x15\x21\x44\xe5\xe3\x34\xa6\xf7\xe1\xe0\x26\xd3\xc1\x0e\x61\x34\xaa\xc5\x0e\xb4\x85\xaa\xf9\xe7\x55\xdd\x3a\xdb\xeb\xfd\xd5\x40\x64\x5d\x25\x22\xd2\xdf\xf7\x6a\xc0\xc5\x63\x6d\x26\xd5\xd4\x55\xf5\xf9\x80\x1e\x41\xd1\xff\x60\xa7\x61\x87\x1e\x5c\x0f\xad\x32\x66\xa7\xda\x5b\xe8\x27\xdb\x46\xed\x88\x15\xc6\x7c\x72\x13\xb4\xca\x0a\xa7\x48\x78\x4f\x6e\xf2\x99\x8f\xe8\x2a\xa2\xb7\x75\x1d\x12\xd1\x51\x0f\x18\xc0\xc5\x03\x7a\x88\x07\x65\x33\x17\x35\x7c\x3e\x20\x58\x35\x90\xa8\x42\x7b\xc0\x01\x89\xd5\xc6\xd9\xe7\x8c\x6c\x7d\xa7\xf1\xb8\x69\x6a\x78\xed\x7c\x85\xf7\x8a\x85\xa7\x0a\x2d\xe7\xc2\x41\x16\x24\xa1\x82\x78\x40\x98\x02\x7a\x08\xea\x0e\x03\xff\xdc\x4d\x7d\x8f\x1e\x8e\x49\x5e\xd7\x55\xd5\x34\x8d\x99\x54\x55\x80\x39\x7b\xa3\xee\x50\x50\x56\x00\x00\x75\x5d\xf3\x5f\x8f\x71\xf2\x16\x7a\x65\x02\x56\x68\x3b\xda\xc9\xf2\x82\x86\x16\x37\x70\xa7\xbc\x56\x3b\xc3\xb4\x2b\xf0\xd8\xa3\x47\xdb\x22\x44\xc7\xa8\x69\x11\x3f\x28\x41\xa4\x03\xec\x90\x38\xc6\x7b\x6c\xa7\x88\x1d\x38\x5b\x57\x9f\x0f\x3a\x30\x00\x33\xb8\x10\x41\x99\xa3\x3a\x09\xe9\xed\xe4\x3d\xda\xc8\x70\xb6\x17\xe2\xdf\x63\x14\xdd\x6a\xbe\x9d\xfc\x8f\x1a\x8f\xeb\x4d\x03\x2a\x54\x47\x34\xa6\xae\xaa\xe7\xc6\x80\xba\x53\xda\x30\x79\x2a\x9d\x20\x1d\xb2\xd1\x21\x8a\xbe\x10\x8a\x5b\x3c\xed\xb4\xed\xb4\xdd\x07\x08\x98\xe4\xd1\xf3\xa7\x03\x9a\xb1\xae\xaa\xd7\xce\x17\x65\x08\xc4\xd9\xe0\xa6\x50\x40\x6e\x99\x20\x56\x1e\x13\x1c\xec\xf5\x1d\x0a\x60\xbc\x23\xca\xb5\xed\xdd\xa3\x12\xff\x9e\x80\x7c\xf4\x18\xc2\x5a\xb8\xe3\xf5\x22\x7e\xe3\x5a\x65\xe0\x7e\x0b\x27\x78\x26\xef\xaf\x3f\xba\xa0\x59\x2f\x36\xd5\x1f\x9f\x4c\xc0\x85\xc2\x26\x23\x61\xca\xd2\x0e\x05\x3b\xe7\x0c\x92\x26\x8e\xd8\xea\xfe\x44\xc7\x71\x3c\x60\xd2\xd0\x74\x66\xb2\xb1\xda\x21\x78\x24\x6a\x48\x60\xe9\x4c\xdb\xc9\x07\xe7\xc1\x79\xb0\x2e\x82\xea\x63\xda\x37\x1f\x71\xeb\x48\x5b\x23\xd6\x55\xf5\xde\x45\xd2\x49\x32\x04\x26\x6d\x96\xa3\x6b\xdb\xc9\x3f\xdc\x4e\x6e\x60\x87\x68\x0b\x90\xae\x86\xb7\x3d\xcb\xf8\xa8\x6c\xac\xd4\x6c\x97\x3b\xec\x9d\xc7\x0b\xdc\x59\xb1\xb6\x64\x05\xd0\x8c\x1e\x93\x3d\x91\x2d\xbd\xa5\x93\x21\x02\x55\xe0\x7d\x55\x16\x85\xc8\x06\xbb\x24\x13\x8d\xa1\x88\x24\xf1\xb9\xc0\x32\x7b\x9e\xa2\xc5\xcc\x46\x45\x6b\xcc\xa4\xc4\xf6\x33\xfd\x81\x74\xd1\x8a\x03\x98\x02\xf6\x93\x99\x39\x88\x0e\x6e\xad\x3b\x82\xda\xb9\x69\xe1\xef\x58\xae\x76\x66\xaa\x6a\x9c\x25\x05\xff\x30\x62\xf6\x0b\xf3\x62\x02\x86\x1d\x91\x6b\xc9\x0d\x90\x0b\xc3\xa3\x1c\xa2\x0e\xe0\x46\x24\xb6\x94\xed\x98\x03\x8b\xc7\x2a\x7f\x1a\x55\x08\x6c\x06\xe4\x8a\xc4\x00\x13\x7d\xbd\xf3\x10\x30\xb2\x17\x17\x55\x74\xa3\xe8\xd3\x4e\x05\xb6\x59\x16\x5e\xaf\x0d\xc6\xd3\x88\x5b\xde\x90\x7d\x14\x09\x92\x36\xba\xbe\x87\x26\xaa\x5d\x88\x2e\x8c\xaa\xc5\xd0\x80\xb3\xe6\xc4\x6b\xdf\x38\xa0\xcd\x2c\x64\x86\x75\x22\x03\xaa\x84\xd8\xba\xaa\x9e\x3e\x7d\xfa\x7b\x5e\x79\xd6\x6d\xe2\x29\xbb\x9f\x20\x3a\xc6\x8b\x8b\xcd\x47\xc7\x6a\xa3\x2d\x38\xdf\xd1\xf1\x38\x50\x6d\x8b\x41\x5c\x8b\xb6\x96\x9d\xa2\xbf\x65\xd3\x77\x3d\x70\xc4\xa8\xe1\x3b\x42\xcb\xee\x8c\x1c\x05\xac\x69\x31\xb1\x09\x41\xef\xad\x8a\x93\xc7\x40\x4c\x54\x0b\x4a\x3c\x26\xbb\x9f\x02\xb1\xfe\xc6\x3d\x09\x69\x0b\x47\xba\xcd\x75\x55\x7d\x0d\xcd\x87\x9b\xe6\x7a\x76\x98\x72\x80\xb4\x4d\xe8\xf9\x70\x23\x04\xf0\x99\x8a\xdb\x33\x27\xf2\xee\x22\x4d\x4b\x84\xc8\x29\x91\xec\x01\x82\x1a\x10\x54\x10\x64\x6f\x3e\x7c\xb8\x29\xa0\xb7\x10\x1c\x34\x9d\xf2\x47\x6d\x9b\x2d\x34\x47\x6d\x3b\x77\x0c\xf4\x68\xb4\x9d\xee\xe9\xa1\xf7\x88\xbb\xd0\x35\x75\x5d\x6f\x98\x38\x89\x9a\x2f\xb5\x6f\xae\xa1\x75\x36\x2a\x0a\xdd\x44\xd7\xa8\xe2\x21\x9b\xbe\x10\x28\x4b\x27\xaf\x58\x3d\xf9\x20\x19\x04\x1d\x76\x73\x9d\xe5\xe6\x7a\x50\xc6\xf0\x36\xfa\xb0\xe0\x49\x93\x9c\x50\xb0\x4e\xfe\xb3\xda\x35\xd7\xe9\x44\x3a\xbc\xcf\xbe\x37\x7b\x7e\xde\x9b\x5c\x35\x3f\x13\x70\xde\x3b\x60\x08\x68\xf7\x48\x14\x1b\x8c\x81\x0f\x3b\xa0\xed\x80\xbe\xa8\x3d\x86\x4c\x36\xc7\x43\x72\xe2\x12\xb0\x47\xef\x86\x31\x0a\xcd\xef\xf1\xf8\x82\xc3\xe3\x3a\xe2\x7d\xdc\x0a\xb7\x21\x7a\x6d\xf7\x1b\xf8\x5a\x3e\x91\x44\x78\x67\x48\xc6\x95\x02\x6a\xef\xdd\x00\x4a\x4e\xbe\x62\x97\xac\x3a\x52\x29\xc9\x77\x44\x21\x08\xde\x39\xa2\xd7\xde\x0d\xaf\xb5\xc1\xf5\xff\x05\x55\x01\xfb\x06\xe3\x3b\x54\x14\xbd\x7e\x3a\xe8\x88\x6c\x69\xeb\x0d\xbb\xf8\xe6\x3a\xb9\x35\x39\x47\x23\xcb\x48\xef\xd2\xba\x2c\xea\x02\x55\x88\x61\xb8\x6f\xc3\x4f\xce\x77\xdf\x1e\x94\x5f\x87\xe8\x0b\x99\x17\x70\x1f\xf1\x91\xb2\x52\xec\xe7\xc9\xd1\xf9\x8e\x00\xb7\x07\xe5\x55\x1b\xd1\x3f\x61\xe0\x9f\x26\x8b\x37\xd1\xaf\x3d\xa9\x37\x6e\xd2\x9e\x05\x5c\x95\xc1\x24\x4d\xa4\xc7\x42\x29\x6f\x62\x38\xef\x5c\xbb\xe6\x20\xa9\x6d\xdc\xc0\x3b\xd7\x9e\x81\x20\xf1\xd1\x92\x86\x80\x4d\xad\x28\xcd\x4f\x62\xef\x2f\xb5\xc7\x36\x3a\x7f\x5a\x3f\x8a\xdd\x3b\x47\x5e\x9d\x4f\xc8\x92\x9d\xcd\xa1\x8f\x95\x32\x79\x0d\x62\xad\xcb\x90\x18\xfc\xdf\x9c\xb6\x1f\x55\x3c\x84\x75\xa7\x7d\x5d\xd7\x45\x70\x05\x49\xeb\x86\x9d\xb6\x18\x60\x98\x4c\xd4\xe4\x30\x33\x04\x2d\x0a\x4b\x39\x9e\x31\x67\x87\x5c\xa8\xa5\xa4\xf5\x4c\x6f\x96\x54\x1b\x03\xbb\x49\x0e\xc1\xa8\x10\x01\x0d\x0e\x44\xac\xeb\x19\xd2\x96\x40\xc6\xd3\xa8\x29\x60\x9c\x8a\x69\x3f\x09\x17\x2c\xbc\xc1\xf8\x81\xbd\xfd\x9a\x39\x7f\x88\x88\x73\x04\x65\xa6\xa2\x3f\x1e\xff\x31\x21\xa7\x54\x12\x26\x18\xcc\xf3\xae\x7b\x08\x66\x9b\x36\x6a\x1b\xd1\xf7\xaa\xc5\x2f\xbf\x11\xe4\x40\xd6\x3b\x9f\xaf\x40\x11\x3b\x12\x5f\x97\x3e\xc8\xe6\x75\xb3\xd8\xde\xc0\x80\x8a\x83\xc1\x49\x3c\xae\xb6\xf0\xc6\x89\x4b\xbb\x29\x9c\x08\xc4\x8c\x7d\x66\xe9\x71\xc4\x39\x77\xa5\xc5\x12\x1b\x89\x84\xa3\x36\x86\x36\xf0\xb7\xb4\x72\x6f\xdc\x8e\xa4\xb9\x85\xc9\x1a\x0a\x2c\x3a\xa6\xc8\x21\x51\x93\xe2\x9d\x2c\xad\x33\x45\xef\xe8\xcb\x1f\x90\xb5\x95\xd0\xfd\xf5\x8f\x1c\xe6\x7f\x9f\x44\x3e\xcd\x72\x12\x8c\x4f\x5c\xeb\xbc\x56\x7c\x07\x23\x7e\xa1\x6d\xf7\x9f\x78\x5a\xdf\xe2\x69\x5b\xd2\x98\x22\x06\xca\x7f\x03\x34\xb7\x78\x6a\x88\xf9\x46\x16\x34\xbc\xf3\x7b\x75\x8b\xdf\xba\x61\x50\xb6\xe3\x93\xdc\xce\x25\x48\x26\x38\x65\x3a\x1c\x0a\xeb\xba\xfe\xb6\xfc\x24\xd8\x6c\xfe\xc5\xa5\xb5\x02\x29\xe5\xed\x04\x2f\x67\x32\x2c\x5e\x62\x02\x9a\x8c\xa0\x91\xf4\x20\x27\x59\x35\xfc\x10\x10\xbe\x21\x80\x94\x43\x2c\xb1\x46\xc7\xd5\xc0\x7b\x37\xe3\xae\x97\xd4\xa7\x77\xeb\x0b\xd2\x37\xcd\xf5\x39\x79\xcd\xbc\x96\x25\x41\x29\xa4\x90\xba\x10\x83\xc8\x65\xae\x39\xce\x2d\x63\x59\xb1\xf0\xc2\xef\x94\xed\x4c\x11\x61\x3b\x74\x4b\x93\x9a\xec\xf2\x70\x93\x74\x78\xdb\xab\x7b\x6c\x97\x72\x2f\xd2\x56\x7e\x1f\xe0\xe7\x5f\xb2\x63\x59\xe7\xf7\xe8\xbd\xf3\x04\x94\xe4\x05\x0a\xd6\xe1\x80\xc6\x6c\xce\x45\x7e\x66\x4e\xca\xef\x27\xf2\x10\xa1\x86\x4f\x4b\x0e\x64\xc3\x93\x00\x6e\x8a\xe3\x14\x39\xd1\x52\x30\xba\x10\x34\x25\x2e\x8c\xa8\xce\x8e\xfc\x86\xb0\x3c\xc2\xdd\x23\x84\x7d\xa2\x32\x1e\x98\xac\x8c\x24\xa5\x9e\x53\xc0\x70\xc6\x72\x43\x54\x4e\xb6\x4b\xb5\xc1\xc1\xb9\x8e\x9d\x1b\x17\x32\x9d\xc3\x00\xc1\x0d\xe4\xc0\x3c\x27\x5c\xa4\x0f\x9c\xa0\x67\x8e\x60\xad\x6b\xac\xe1\x1f\x13\xfb\xf1\xf2\x7a\xc3\x55\x37\x6b\x50\xd6\x04\xff\xbf\xe6\xfc\x85\x6a\x6f\xf7\xde\x4d\xb6\x63\x19\x5c\x1c\xed\x23\xcc\x66\xeb\xdc\x95\x8d\x05\xd6\x5b\xf2\x68\x64\x76\x77\x78\x09\x6c\x0b\x47\xa5\x23\x47\xde\x2d\x69\xf9\x07\x21\x8d\x7e\xff\x49\x21\x13\xbf\xbb\x13\xb4\xc6\xb1\xb0\x24\x89\x23\x7a\x72\x72\xb9\xe0\x5d\x5c\xb3\x50\x62\x4e\x5c\x7a\x35\x84\xbf\xe1\xc4\xd3\x4f\xb8\x25\x81\x70\x02\x25\x26\xbb\x63\x71\x4e\x21\x17\x41\x12\x58\xbc\xe3\x3c\x1b\xef\x75\x64\xeb\x1c\xbd\x54\xc3\x9c\xc5\xa1\x1f\xb4\x55\x46\x92\x1a\x3d\x0c\xd8\x69\x15\x91\x92\x5d\xcc\xc5\x03\x15\xd9\x44\xe6\x96\xc2\x9a\x3b\xa6\x58\x5b\x72\xb9\xe8\xe6\xce\x42\x3a\xaa\x14\x8b\x12\x66\x21\xbc\x48\x6b\x41\xfd\xf9\x39\x87\xa8\x6c\xa7\x7c\x97\xa0\x14\x3f\xcf\x75\xaf\x94\x84\x35\xcc\x35\xac\xfe\x1d\xa0\xac\x8c\x0b\xc9\x65\x0c\x01\x06\x75\xe2\xd4\x68\x87\x07\x75\xc7\xa2\xb2\xce\x0f\xec\xab\x77\xd8\x2a\xae\x51\x75\x50\x31\x9e\x1a\xc1\xbc\xac\xeb\x8b\x7a\x7c\x46\x3f\xbc\x1a\x26\xa3\xa2\xf3\x7f\x4e\x35\xb6\x73\x91\x99\x0d\x92\x55\xa4\xb9\x86\x1b\x29\x1c\x88\x96\xc7\x54\xaf\x01\xbc\x6f\x71\x8c\xe7\x5a\x21\x7d\x26\xf2\x21\x49\x89\xb3\x9f\x0b\xa3\xa1\xa0\x47\x4a\x57\x0e\x16\x13\xa9\xdc\x43\xe2\x66\x51\x26\xa6\x01\x6d\x89\x44\xbd\xcc\xf1\x16\xd5\xb0\xe2\xfa\xf9\xa2\xc9\x95\x4f\x64\x51\xe9\x2e\xcf\x9a\x90\xb0\xa2\x49\x4b\xed\x51\x7d\x28\x30\x46\xef\xee\x74\x47\xca\x2a\x26\xdf\x6b\x1f\xc4\xce\x39\x58\x67\x4f\x51\x12\xbe\x44\x1b\xe1\x58\xeb\xa2\xf2\x80\xc3\x18\x4f\x8f\xa8\x03\x1f\xdb\x86\xf9\x5e\x76\x3e\xe8\x4b\xe2\x49\x19\x4d\x3b\x83\xe0\x4b\x5d\x53\xa9\xa9\x59\x8b\xdc\x88\x5e\xfa\xa7\x52\x3b\x06\x58\x73\xd1\xb6\x05\x29\xe8\xb6\xd0\x79\xb5\x77\xb6\x37\x27\xce\xe8\xa8\x66\xde\x85\x6e\x0b\xa9\xa2\xdb\x48\x98\x24\xe2\x9b\xa4\x36\x37\x19\x49\x03\xeb\x80\x08\x3b\x34\xee\xb8\x29\x6d\xa0\xe8\xa0\x43\x39\x3b\x24\x96\x16\xa7\xcb\x45\x01\x93\x41\x14\x17\x62\x45\x2f\x1f\x40\xbf\x86\x17\x0f\x3b\x4b\x09\xe0\x03\xdd\x38\x03\x98\x3a\x0a\x70\x87\x3e\x48\xff\x8d\x30\x8b\xa3\x12\xc3\x0b\xd9\x59\x25\xdc\x8e\x4a\x93\x8f\x2e\xac\x8d\x6b\x29\xf3\xdf\x52\xb6\x93\xab\xa8\x0d\xd9\xe2\x65\x5c\xce\x25\x08\xb9\x73\x9d\xbb\x7c\x6a\x8e\x86\x5c\x48\x70\xab\x2b\xa7\xb0\x9f\xd0\x38\x45\x6c\xad\x3f\xe1\x86\x1e\xa5\xcf\x4a\x26\x20\x45\xd2\x8b\x53\xc4\x0f\x7d\x1f\x30\xfe\x21\x19\x78\xaf\x5a\xaa\x7b\x8d\xbe\xc5\x05\xe9\xc5\xd0\xc8\x7e\x58\xd4\xad\x9b\x28\x76\xed\x4e\x94\x8d\x68\x1b\x22\xaa\x8e\xa8\xa4\x82\x27\xa4\xfa\x62\x77\x33\xaa\xa3\x25\x27\xf0\x7e\x99\x15\xb4\x43\xf7\x7c\x99\x18\x6c\xc1\xd9\x9b\xd8\xb9\x29\xa6\x27\xf4\x9e\x9e\x5e\xdd\xeb\x58\x36\x91\x2f\xe5\x74\xa2\xae\xeb\xb3\x8c\xe8\x26\x2a\x1f\xc3\x59\x7c\x48\xe5\x6c\x32\xa7\x87\x91\x0c\x9a\x8c\xb0\x49\x8f\xe8\x7d\x03\x29\xfc\x34\x82\xb9\xe1\x56\xc9\x59\x2f\x75\x69\xef\xe1\x5f\x18\x7c\x29\x54\x73\x37\xf7\xa0\xc6\x11\x4b\xc2\x3e\x53\x33\x87\x81\x26\xf3\x28\xa8\xcf\x93\x04\xc6\x56\x7c\x3e\x65\x90\xa9\x27\x76\x61\xfd\x33\x81\xe5\x10\x48\x40\x67\x9e\xf8\xff\x45\xdc\xff\x2a\x7d\x38\x73\x32\x28\x2a\x24\x6b\x53\xd2\xcc\x3e\x89\x5d\x1c\xa5\x4a\xd8\x51\x1e\x90\xb3\x03\x16\xab\x34\xac\xa4\x29\x9a\x53\xb2\xb7\x64\x6f\xe2\x55\x53\x7b\x53\x72\xe0\x70\x80\xa7\x6d\x53\x17\x19\x60\xca\xf8\xbe\xa6\x75\xf5\xb7\x43\x47\x3e\x2a\xaa\xb3\xfa\x8a\x13\xa8\xdc\x13\xb0\x49\xae\x21\x76\xba\x34\xd9\x7f\x75\x3b\x2e\x76\x93\x33\x2f\x02\x76\xe3\x39\x70\x82\x77\x4b\xe7\xa4\x78\x8b\x0c\x0d\x28\xbc\x06\xc4\x41\x6c\x4b\x41\xa0\xd0\x3a\xf7\x9f\x4a\x2b\x70\xd6\x30\xca\x22\xc5\xd1\x0a\x7a\xb7\xfb\x15\xdb\x18\xaa\xd2\x01\xde\x49\x6d\x3c\xef\xa0\xc0\x0d\x03\x15\x98\x03\xc6\x83\xeb\x48\xab\x16\x13\x87\xb9\x6b\xc0\x29\x89\xc0\xab\x44\x91\x79\xa6\x95\x9a\x60\xea\xf1\x19\x92\x32\x86\x67\x3c\xb9\x7f\x5a\xcd\xb0\xaf\x79\x28\x23\x21\xa5\xa9\xe1\xef\x69\x0b\xb9\x70\xa1\x70\xc1\x6a\xc9\x51\x33\x1a\x51\x96\x6a\x39\xdd\x38\xa0\x19\x21\xba\x51\xb7\x12\x29\x73\x00\x70\xf6\x01\x91\xb4\xa5\xe5\xa2\xe8\xbc\xc5\x33\xb7\xb8\x8b\x0d\xcf\xdd\x70\x3f\xd9\x1a\xde\xa6\x39\x93\x47\xd2\x27\x3a\xff\x3d\x5a\xf4\x9c\xf1\x84\xa8\xdb\xdb\x94\xde\xc9\xe0\x82\x75\x70\x50\xfc\x52\xcd\x13\x34\x50\x77\x4e\x33\x8c\xc9\x07\xca\xa7\x46\xef\x76\x06\x87\x70\xde\x6a\xd6\x7d\x92\xa3\x31\x0f\xc4\x46\x89\xd9\x86\xd2\x0d\xf6\x46\xf4\x86\x64\xf8\xb7\x29\x44\x19\x0c\x3c\x2e\x65\x08\x12\x70\x2a\x8a\xf5\xce\x3e\x89\xa9\x24\x2d\x20\x40\xed\x95\xa6\xe2\xf2\x87\x90\x4d\x75\x71\xec\xdb\x72\xae\x5c\xa8\x2c\xba\xcd\xa9\x8f\xa7\x42\x70\xad\x56\xc5\xa6\xd8\x74\xb9\x54\xdc\x9d\x92\x2d\xce\x94\xd5\x2f\xa6\xbe\xc9\x53\xaf\xd2\xe1\x5c\x00\x6d\x5e\x6b\x83\x9f\x4f\x23\x36\x5b\x68\x3e\xaa\x78\x68\xb6\x55\x43\x61\xa1\xa9\x6b\x19\x6b\xce\x7a\x91\x74\xf7\x11\xf5\x2b\x3e\x00\x97\x3d\xd5\xb9\x51\xad\x3c\x5e\x9f\x37\x5c\xeb\xef\xa5\xc1\xba\x1e\xc2\x9e\x9c\xd9\x59\x3b\xe7\x7c\xe5\x2b\x4a\x3a\xff\xc4\xba\xbf\x63\x78\xef\x3e\x72\x5d\xb1\x4e\xe5\x45\x29\x24\x39\x9f\xe5\x7a\xe7\x62\xd3\xd9\xfa\x2d\x1c\x74\x88\xce\x9f\x3e\x73\xe3\xfd\x41\x6f\x82\x5f\x2f\x7a\x13\x73\xed\xf4\x18\xe8\xe7\x5d\xf7\xce\xed\x1f\x27\xbc\xfa\xea\xab\xaf\xbe\x12\xd7\x5b\x55\x6f\xdc\xa2\x21\x32\x0f\x08\x58\xc7\x6a\x8e\x7f\x6c\x2f\x52\xe1\x5e\x93\x82\xf1\x30\x70\xef\xaa\x87\xe2\xdc\xc8\x10\x2f\x25\x2d\xae\x4c\x0d\xcb\xca\xeb\x8b\x95\x8b\xc1\x18\xbb\xd9\x54\xcc\x64\x81\xfc\x9a\xb4\xfd\x11\x40\x17\xa2\x5b\xad\xb6\xf0\x4d\x02\xfa\x12\x77\xd3\x9e\xec\xdd\xb8\xfd\x9e\x34\x63\x39\xdd\x26\xa5\xd9\x21\x74\xce\xa6\xce\x08\x27\x93\xcc\x62\xb6\xca\xd6\x75\x54\xb9\x3c\x40\x99\x44\xba\x4a\x3c\xc0\x9e\xca\x78\x9e\xf1\xac\xb6\x02\xfd\xc7\xa4\x72\x9f\xdd\x47\xaf\x6d\xfc\x0e\x3d\x66\x46\x2d\xc8\x35\x83\xe8\xd8\xff\x2d\x49\xca\x64\xa6\xc4\x7f\xf4\x64\x1e\xcd\xb7\xd1\x9b\x57\x0d\x69\xb5\x95\xc6\x60\x63\xdc\xbe\xa1\xea\xb5\xca\x1b\x64\x2e\x22\xc1\x9f\xd2\x68\x29\xf7\xed\xa9\x40\x0c\x54\x09\x70\x95\xba\xc4\x97\xb3\x93\x4e\x87\xd1\xa8\x13\x76\x15\x31\x51\x57\xa4\x17\xf0\x9c\xad\x33\xdb\xd3\x1b\x37\x1f\x8a\xd1\x3b\xaf\xfc\xa9\xaa\x38\xbc\xce\x86\x49\x0e\x8d\xc1\x97\xc9\xe1\x3c\xa7\xe2\xa8\x93\x02\xd5\x1c\x90\x52\x1e\xf0\xc6\x55\x97\xc0\xeb\xaa\xba\xd1\xc3\x68\x4e\xa0\x07\xca\xac\x53\x97\xb7\xbd\x25\x79\x9f\xdc\xf4\xa4\x4b\x81\x52\xc6\x81\xb6\xf8\x01\x52\x57\x1d\xcf\x02\xd1\x3c\xb4\x96\x66\xa6\x76\x53\xd4\x06\x9e\x25\xd0\xeb\x95\x76\x57\xf2\x6e\xb5\x49\x4b\xfa\x21\x2e\xbe\xf7\x43\x5c\x6d\xaa\xf4\x89\x12\x03\xee\x52\xd0\x02\xde\x55\x7f\x42\xd5\xf1\x20\x64\x75\xe3\x06\xa4\xa7\x3a\xde\xf3\x16\xdd\xf3\xca\x7f\x3e\x03\xab\x39\x2e\x71\xd2\x07\xb3\x2a\x89\x57\x59\xf1\x1f\x1e\xbb\x70\x13\x48\x1b\xbc\x86\x0b\x58\x48\x51\x86\x36\x3f\x7d\x0a\x2f\x29\x39\xa1\x4a\x22\x87\x7a\x8a\xce\x16\x94\xf7\x8a\xa5\xcc\x79\x77\x5e\x2c\xfe\xfd\x66\x24\x45\xec\x53\x77\xd2\xd9\x3b\xf4\x9c\xaf\x73\xa9\x9a\xc6\x25\xf3\xc0\x3e\x44\x62\xaf\x1f\x62\x9d\xf6\xad\x57\xff\x1e\x56\x92\x15\xa5\xb1\x3d\x91\xe1\x38\x01\xe1\x32\xa2\x74\xe5\x98\x7a\x3e\x0e\x36\x5a\xe2\xe9\xdf\xf2\x06\x72\xe6\x65\xc2\xff\x5d\x1e\x8a\x2e\x8e\x36\x88\x92\xfe\x8e\xc6\x49\x90\x29\x81\x89\x35\xab\xae\xde\xa3\xf2\x54\xf0\x1a\xb3\xd0\xac\x0c\x26\x2c\x40\x13\xae\xb9\xf2\x63\x0d\x51\x56\x6a\x9a\x2a\x67\x1f\x12\x54\xce\x07\xa2\x73\x71\x97\x51\x1b\xe7\x6e\x21\x1e\xbc\x9b\xf6\x07\x20\xcd\xaa\xf7\xae\xa9\xd6\x97\xd7\x79\x50\x85\x13\x37\x5f\x6d\x87\x9e\x99\xd9\x88\x3b\xa9\xfa\x21\x56\xda\x55\x45\xf1\x2a\x8b\xb1\x1a\x54\x3c\xf0\x3f\x57\x9e\x8a\x0d\x17\x2a\x3f\xd9\xa8\x07\xac\x78\x7e\x42\x72\xe5\x07\x39\x2d\x4a\xf4\xf6\x78\x3f\x56\xdc\x0d\x09\x15\x2f\x64\xc1\x12\x63\x9d\x6b\xb9\x34\x48\x93\x4d\x32\x06\xd5\x1e\x92\x05\x2e\x2f\x56\xcc\x81\x3e\x88\xbd\x11\x6f\x55\xe6\xed\xf7\x0e\xe2\x0c\x7c\x2d\xfe\xa2\x63\xdd\xe5\xd4\x8c\x27\xa9\x5b\x08\x27\x1b\xd5\x7d\xfe\xc5\x9d\x6e\xe3\xbc\x5c\x11\x0a\x17\xb7\x8d\xaa\xea\xef\x0b\x0b\xe6\x10\xfe\xbc\xeb\x3e\x89\x00\xd8\xb8\xa4\x67\x2f\x63\xfa\xb3\xc9\xd1\x1c\xb6\x48\x99\xbb\xae\xa2\x80\xef\xa6\x00\xb7\x3c\x0d\x70\x7d\x1a\xd1\xcb\x14\x3d\x23\x3c\x73\x11\xdb\x94\x81\x65\xb7\x22\x80\x40\x31\x3b\x15\x67\x9a\x17\xdb\x73\x49\xd7\x44\x0c\xb1\x11\x29\x4a\xbe\x98\x66\xb3\x4a\x3e\xd5\x43\xd7\x30\xfe\x2d\xfb\x2a\xce\xf0\x96\x4e\x70\x76\x4e\x17\xec\xae\x68\xf7\x6a\x0b\x2b\x22\x81\xfe\x26\x68\xab\x14\x48\x7e\x08\x0f\x44\x14\x5e\x7b\x37\xcc\x03\xc1\xa5\xc0\x3a\xed\x59\x6a\x11\xbd\xdd\x34\x33\x7f\xe5\x3a\x42\x55\x64\xc4\x83\x30\x01\x5a\xc3\x67\xc7\x16\x9c\x5a\x68\x36\xa6\x31\x9c\xca\x2b\xc4\xda\x29\x32\x37\xe4\x05\x97\x0c\xf4\x29\xa5\xdb\xc2\xd9\xf8\x8d\xf4\xa0\x79\xa7\x43\x5c\x12\x5e\x16\x97\x65\x15\xe9\x2c\xd9\xf4\x12\x51\xc8\xb1\x69\x8a\x2e\xdf\x4a\x29\x85\x62\xa9\x86\xab\xea\x86\x0b\x0b\xbe\x43\x93\xae\x72\x38\x30\xa8\xbc\x85\x83\x3b\xe6\x71\xc8\xc5\x48\x45\x32\x9c\x8b\xf1\xc8\x59\xdc\x28\x6a\x26\x55\xee\x4f\x3a\x1e\xd6\x37\x92\x79\xf1\x1b\xb9\xf1\x24\x6f\xe0\x59\x7a\xb8\x9e\xc6\x11\xfd\x3a\x7f\x53\x3e\xf2\x27\xe5\x63\xfe\x02\xcb\x5b\x50\xc2\x7e\x1d\xa6\x5d\x06\xfd\x97\x6d\x7a\x67\xd0\xae\x05\xcf\xe6\xd9\x33\x7e\x60\x5f\x3a\xdf\xc4\xca\x12\x59\x73\x67\x72\x79\xff\x4a\xf1\x60\xa3\x0c\x99\x9e\xc1\x97\xd5\x77\x68\x8c\x23\xb5\xfa\xc9\x79\xd3\xd1\xc3\x6b\xc7\xbf\x5f\x28\xbf\xfa\x6d\xb1\xd7\x63\x98\x0c\x11\xfd\xe5\x37\x71\xfc\x74\x30\x7a\x7b\x47\xf6\x3b\x2a\xed\xc3\xfa\x1c\xfa\x06\x3a\x1e\xe9\xf1\x7f\xba\x5f\x0a\xeb\x6e\x2b\x4d\xd3\xcd\x1c\x09\xf3\x7f\x91\xb2\xa5\x5a\xdb\x80\x3e\xae\x05\xe5\x16\xee\x36\x65\x0d\x4a\xf7\xa5\xfc\x4d\xe2\x92\x95\x17\x72\xe8\x9d\x5b\x2b\xbf\xdf\x5c\x84\xda\x9c\x71\xf2\x27\xde\xb1\x9c\x08\xae\x7a\x61\x3f\x69\x4c\x2d\x3f\x2f\xa6\x6e\xe5\x6b\x16\xf5\x6a\x93\xac\x91\xb4\xf2\x25\xf6\x8a\x44\x35\xe6\xfb\xa4\x0b\x07\xc3\x6e\x28\x7d\xd8\x96\xc2\xb7\x4b\x3b\x1a\x45\x0a\x6d\x5c\xc0\xa4\x85\x86\xf3\xf4\xa6\x80\x5a\x53\x3d\x30\xdf\xf4\x93\xce\x7b\xb9\xc4\xe2\x11\x3c\x8e\x29\xce\x40\x93\x2c\x26\xdf\x18\x6d\x36\x94\x1e\x1c\xd1\x18\x49\x13\x4e\x55\xbe\xcf\x5a\x6e\x1a\x9d\x43\x77\x7d\xaf\x5b\xad\x0c\xb4\x07\x65\x2d\x9a\xea\x67\x4a\x0b\x7f\x59\x1f\x62\x1c\xc3\xf5\xd5\xd5\x5e\xc7\xc3\xb4\x23\x19\xc8\xd5\xd4\xa7\xd8\xe9\xe8\x7c\xc2\xf7\x34\xed\xda\x24\x5b\x95\xdb\xb5\xf0\xbd\xb2\x6a\x8f\x3e\x5f\xb2\xe5\xaa\x92\x9b\x0a\xb0\x9b\xb4\xe1\xbe\x7b\x72\xac\x83\xac\xbc\xa8\xef\xb4\xbd\x73\xb7\x38\xcf\xfe\x9a\xbf\xe6\xf5\x75\x5d\x37\xa5\xe5\x23\x42\x4f\xe3\x64\xdd\xcd\xe3\x8b\x45\x7e\x38\xcb\xbf\xc9\x9f\x9b\x65\x4b\x41\xea\xcd\x4c\x46\x8f\xb1\x3d\x60\x28\x97\x80\x4b\x82\x92\xf8\x0c\xb0\x2e\x37\xd8\x52\x08\x9d\xef\x0d\xa5\xd8\x36\x60\x54\x9c\x3a\xe5\xcb\x6e\x91\x6f\xcb\x05\xb9\x2e\x57\xc3\x8b\x53\x56\x85\x6d\x3a\x54\xee\xa9\x2f\xd6\x9c\x1d\x4c\x95\x50\xcf\x57\xe7\xf2\xc5\x46\x15\xe1\xcf\x9d\x0e\x77\x8f\x92\x4c\x2a\x0a\x05\x1c\xda\xdc\x91\xaf\x15\xfa\xee\xe9\xa8\x7c\x3c\xcd\x2c\x2e\x0a\x6b\x81\x93\xbf\x34\x79\x8e\x4f\x6a\x9b\xe1\xc9\x35\x0c\xee\x13\xdb\xdb\x33\x80\x45\xf3\x9c\x8c\xc3\xb8\x37\xac\x8c\x91\x34\x65\x99\x75\x64\xc9\x65\x65\xc8\xd9\x65\xc2\x4f\xfa\x5e\x90\xd7\xb9\x7e\x5c\x84\xef\x71\xda\x19\x1d\x0e\x73\x2f\x86\x3e\x73\xfb\xab\xc3\x94\x2e\x17\x3d\x97\x15\x12\xc3\xd3\x75\xd1\x69\xe4\x36\xf9\x32\xe0\x3b\x6b\xb4\x45\x58\x47\x07\x6f\x58\xc6\x54\xa0\xf5\xe8\xd5\xce\x9c\x36\x52\x71\x71\x48\x6d\x88\xb6\xfa\xd7\x40\x21\x85\x82\x56\xba\x15\xcc\x81\x32\x67\xdf\x51\x25\x5b\xcb\x9a\x31\x17\x4f\x39\x3b\x29\x97\xf7\xec\x79\x1d\x43\x80\xab\x9f\xbf\x54\x00\xab\xf7\x6a\xc0\xd5\x35\xac\x64\x0b\x45\xd9\xd5\x96\xde\xbf\x44\xb9\x77\xae\x9d\xa5\xcf\xf3\x35\x40\xab\x5b\x0e\xe3\xad\x0e\xe4\x7c\xca\x2a\xbe\x33\x98\x4f\x47\x60\x7c\x56\xfb\xb0\xba\x86\x9f\x57\xe3\x29\x1e\x9c\x25\xd7\x48\x4e\x49\xdb\xfd\xea\x17\x5e\xf0\xa3\x4c\x38\x78\x11\x7b\xda\x2f\xc9\x59\xe7\x2f\x84\xfa\x2f\xf5\x37\xf5\x37\x0c\x90\xbf\xfc\xe0\x0d\xbd\x7d\xc4\x91\x4c\x01\xb3\x8a\x5e\x29\xdf\x1e\xf4\x1d\x5e\xdd\xf1\xee\xfa\xbf\xf4\x38\x43\xf8\x84\xff\x98\xb4\x27\xae\xbf\x94\xd8\xb0\x62\x3d\x27\xc0\x7f\x7d\x46\x5b\xfe\x63\x95\x3e\x49\x18\xa3\x7f\x7f\xa9\x7e\xfb\xa5\xdc\x2b\xb6\xa9\x46\x86\x71\xe2\x31\x25\xdf\xf9\xf9\x1f\x98\x8e\x92\x4c\x57\xb1\x7a\x57\x39\x63\x52\xc7\xb3\x93\xcf\xc3\x9e\x8b\x3b\xf5\xac\xb7\x04\xf4\xc4\xb9\xd5\xa0\x6e\x11\xa6\xb1\x93\x39\x19\xf9\xb5\x5c\x9a\x3b\x7f\xbb\x5d\xcc\xf5\x58\xf5\x5c\xbf\x84\x15\xe6\x3a\x3b\x95\x1c\x4b\xc5\x4a\x03\xa8\x2a\x4f\x0f\x93\x56\xad\xdf\xb1\x7d\x1c\x74\xb8\x86\xe6\xc7\x57\x9f\x6e\xde\x7e\x78\x0f\xcf\xf2\x41\x35\x1b\xf8\x68\x50\x05\x14\xc2\xc2\xe4\x31\x65\x4b\xd5\xcf\x01\x87\x3b\xf4\x12\x05\xae\xaf\xae\xe4\x67\xed\xfc\xfe\x6a\xc3\xca\x9b\x10\xf2\x60\xeb\xbf\x03\x00\x00\xff\xff\x86\xa3\xf8\x6b\x54\x31\x00\x00") - -func runtimeHelpPluginsMdBytes() ([]byte, error) { - return bindataRead( - _runtimeHelpPluginsMd, - "runtime/help/plugins.md", - ) -} - -func runtimeHelpPluginsMd() (*asset, error) { - bytes, err := runtimeHelpPluginsMdBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/help/plugins.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeHelpTutorialMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x57\x5b\x6f\xdd\x36\x12\x7e\xe7\xaf\x18\x9c\x3c\xd8\x5e\x1c\x2b\x40\xd0\x27\x03\x29\xd0\x1a\xdb\x4d\xd0\x5d\xa0\x68\x8c\x02\xfb\x26\x4a\x1a\x1d\xb1\xa6\x48\x81\x97\xa3\x68\x17\xdd\xdf\xbe\x98\x19\xf2\x5c\x6c\x27\x0f\xb9\x1c\x89\x9c\xcb\x37\xdf\x7c\x33\x7a\x07\x4f\x39\xf9\x60\xb4\x55\xea\x69\x32\x11\x4c\x04\x0d\x5d\x30\x38\x82\x71\x29\x78\x48\x1e\x66\xd3\x07\x7f\x13\xa1\xf7\x6e\x34\x87\x1c\x74\x32\xde\x41\xdc\x62\xc2\x19\xd2\xa4\x13\xac\xc6\x5a\x38\x98\x23\x42\xf4\x33\x42\x34\xf3\x62\x51\xe1\x57\x4d\xff\x46\x88\x93\x5f\x8d\x3b\xc0\xe4\x57\xb2\x57\xed\x20\x44\x4c\xc9\xb8\x43\xdc\x43\xc0\xce\xb8\x01\x9e\x71\x8b\x7b\xd0\x6e\x80\x1c\x11\x5a\xe3\x4c\x6a\x6c\xd6\x2d\x24\xaf\xce\xd7\x38\x20\xb2\xb4\xf9\x1c\xc0\x9a\x67\xe3\x0e\x8d\x52\x9f\xfc\x82\x63\xb6\x76\xa3\xe7\x37\xd6\xc2\x48\x26\x13\xa5\x95\x23\xbd\x69\x94\xfa\x82\x08\xed\x8f\x30\xa1\x5d\x60\xc0\x51\x67\x9b\xc8\x67\x0b\xa3\x0f\xa0\xc1\x9a\x98\x40\x3b\xc0\xaf\x8b\xd5\x4e\x12\xf5\x23\xa4\x09\xeb\x69\x0a\x91\x42\xa5\xb0\x1b\xa5\xde\xbd\x7b\x07\xbf\xd9\x7c\x30\x2e\x2a\xf5\x2f\x8e\x6b\xd2\x84\xe1\xc2\x0f\x61\xd6\x4e\x1f\x30\xc0\x3a\x99\x7e\x82\x5e\x3b\xd0\x39\xf9\x59\x27\xd3\x6b\x8a\x74\xf0\xab\xb3\x5e\x0f\xe5\x7c\xe4\x38\x36\x9f\x1b\x78\xf2\x2a\x22\xb2\xeb\x1b\x3f\x8e\xa6\x37\xda\xde\xd4\x63\x7b\x38\x30\x00\x07\x93\xa6\xdc\x35\xbd\x9f\xdf\x33\x28\xf7\x38\x98\xe4\xc3\x7b\x39\x76\xdf\x4f\xda\x39\xa4\xbc\x7f\xf1\x01\x4a\x3d\xf6\x60\x46\x46\x68\x20\xe8\x90\xcc\x18\x17\x93\xb6\x96\x9d\x45\x67\x96\x05\x53\xac\x19\xdc\x12\x26\x38\x80\x71\x52\xeb\x80\x8b\xbf\xdb\xab\x3f\x73\x4c\xb0\x04\x8c\x11\xda\xc7\x14\xec\xdf\xa9\x46\x80\x5f\xb1\xcf\x09\x41\x43\xef\xe7\x59\xbb\x41\x8a\x99\xb6\x05\xa1\x2d\x06\xab\xb3\xea\xa8\x2d\xe1\xcd\x3e\x20\x18\x37\xfa\x30\x0b\xf0\xba\xf3\x39\x71\x4c\xd7\x60\xee\xa1\x02\x83\x6e\xa8\xe5\x29\xd6\x63\xcb\xb5\x55\xc9\x2f\xa6\x2f\xf5\xf9\x52\x58\xa6\xd4\x67\x27\xdc\xd9\x0b\x73\x2a\xfd\x40\x13\x17\x93\x0f\x92\x66\xfb\xbf\xf7\x8d\x90\x4d\x40\x7d\x5f\xcf\x35\x7f\x46\xef\xda\x3d\x68\x18\x8d\x45\xc5\x70\x98\x08\x7d\x40\x4d\x08\x51\x18\xa3\x09\x31\x41\x32\x33\x92\x0b\x08\xb9\x78\x6c\xe0\x73\x92\xe6\x22\x1b\x7c\xbf\x70\x62\xf2\x76\x88\xa0\xad\x55\x8c\xfe\x29\x24\xa6\x2e\x9a\x00\x47\x6d\x33\x46\x22\x04\x50\x3d\x0f\x48\x04\xf5\x0b\x41\xc4\x79\x30\xab\xd0\xa4\x09\x43\x3d\x90\x26\x54\x7c\x4d\xaa\x86\xd0\x5e\xa7\xc0\xfe\xf7\x20\x54\xe3\xfb\x5c\x21\x93\xe8\xfc\x60\x02\xf6\xc9\x6e\x14\x9f\x45\xc8\xd1\xb8\x83\x92\x24\x94\xfa\x42\xad\xbd\x95\xc2\x73\xdd\x99\x86\x5e\xfa\x9a\x4b\x0e\xb3\x1f\xf0\xb2\xee\x11\x53\x89\x57\x72\x69\xe1\x56\xc2\x52\x63\x4e\x39\xe0\x1e\x3e\x8b\x82\x70\xcf\xff\x08\xaf\xcf\x33\x45\x07\xd3\xeb\x84\xe2\x9a\xd4\x84\xbd\xdf\x35\xf0\x34\x61\xc9\x5b\xb1\x95\xa4\x9f\x11\x70\x1c\xb1\x4f\x60\xe6\x19\x07\xa3\x13\xda\x8d\x03\xe2\x03\xda\x46\x0f\x1d\x42\xd4\x47\xaa\x9a\xff\x26\x42\x2a\x7a\xe1\xfc\x45\x65\xc4\x44\x4c\xa6\x7f\x06\x3c\xa2\x03\x3d\x26\x2c\x38\x5a\x1f\x8b\x38\x35\x4a\xfd\xbb\x20\xcb\xde\xce\x29\x45\xb0\x5e\x5a\x5f\xca\x3f\xa3\x76\xf1\x1b\x5e\xbc\xb3\x1b\x4c\xfa\x78\x59\x50\x72\xc4\x4a\x2b\xc5\xa2\x3b\x5d\x1e\xc7\x12\x02\xf9\xe1\x17\x0d\xbc\xd1\xf1\xc5\xd6\xea\x55\x5c\xac\x49\x11\xfc\x82\x4e\x2a\x45\x6f\xa5\x5a\x8c\x3f\xc7\x08\x49\x77\xd1\xfc\x07\xe1\x43\xbb\x67\x47\xf5\xf7\x39\xb8\x0e\xe1\x03\x18\xc7\xd4\xed\x73\x08\xe8\x52\x09\xa7\x81\x9f\x28\x71\x91\x6a\xbe\xe0\x7c\x62\xc8\x45\x91\xc5\x43\xe5\x2b\xd7\x40\xbd\x55\x83\x06\x3e\xf9\x15\x8f\xd4\xf5\x95\xab\x31\x71\x09\xde\x80\xb4\xd0\xea\x6d\x3b\x6f\x01\xb2\x6a\x27\xb8\xb7\x25\x37\xe6\x1a\x67\xc5\xf9\x19\xa7\x7e\xcf\xdd\xc6\x16\xca\x60\xfa\x01\x3c\xb5\xda\x6a\x22\x96\x90\x7c\xb6\x03\x2c\x45\xaa\x46\x6f\xad\x4c\x3b\x52\x92\xeb\x40\x1e\x94\x6a\xdb\x96\xfe\xab\xfe\xab\x00\x00\x76\x7f\x6b\x42\xb7\x7b\x00\xf9\xc5\x4f\x4a\x1c\xbb\x07\xf8\xc0\x0f\xff\xda\xab\x17\xcf\x7f\x50\x7f\x91\x99\x3a\x6e\xd6\x0a\xc6\xab\x34\x4e\x39\x48\xf8\x95\x70\x3a\xf5\x13\x1f\x3e\x58\xdf\x41\x4b\x21\x90\x04\x7f\x2e\x88\x70\x36\x75\x30\x3c\x3b\xbf\x8a\x30\x8b\x18\xd7\x21\xa1\x8f\xda\x58\xdd\x59\xac\x25\x38\x69\xb2\x6a\xcb\x13\x0a\x61\x31\x3d\xdc\xd6\x71\x5b\x9f\xdf\x15\x59\xfe\xf5\x3c\x48\x95\xba\xf8\x01\xab\x0f\xcf\x14\xf5\x9c\x4b\xa0\x51\xcf\x08\xab\xde\x40\xc7\x6a\xa5\x01\xee\xaf\xd3\x4a\x90\x26\x9c\x45\xaa\x24\x88\x97\x12\x7e\x1a\xd9\x17\x8c\xb8\x9a\x8a\x27\x46\x5c\xe5\xcf\x4b\x09\xcf\xb7\xdf\x19\xd2\x80\x83\x7f\x5d\x74\x75\x5d\xf4\x6b\x5f\xaf\x8b\xce\xe6\x76\x0f\xb0\x23\x6b\xbb\x5a\xcd\x3f\x30\x6c\x65\x73\x7a\xa9\x1e\xa7\xd5\xa8\x48\xb2\x29\x43\x05\xba\xed\x9c\x33\x75\x6e\x3d\x08\xba\x27\x94\xda\xd3\x14\x56\x5d\xa1\xe7\x09\x64\x4a\x62\x26\xa5\x5c\x4d\x12\x94\xab\x7c\xaf\xde\xdd\xa4\xd7\xfa\x78\x9d\x95\xba\x40\xf0\x1b\x83\xfb\x62\x51\xda\x0b\xa0\x42\x40\x4e\x84\x72\xeb\x10\x3a\x9f\xcb\x8e\xa0\x56\x92\x40\x89\x5b\x06\xf2\x89\x63\xe7\x79\xdf\x5e\xd8\x94\x41\xff\x92\x64\x97\x07\x2a\xd1\x1e\xaf\xf6\x56\xce\xf7\x9f\x59\x9f\x18\xef\x10\x07\xc9\x61\xf1\x2b\x06\xd2\x62\xd1\xd5\xd3\xa4\x8e\xb0\x04\x7f\x34\x03\x9e\x35\x88\x46\x15\x47\x74\x5a\x51\x05\x11\x78\xe4\x65\xa0\xa8\xf3\x4b\x1a\xb6\x34\xad\x4c\x94\xf1\xcf\xdb\x80\xcd\xb2\x4c\x40\x5d\x26\x68\x63\x58\x27\x74\x32\x71\x21\x26\x1d\x92\x6c\x03\x26\x02\xc6\x88\x2e\x19\xd6\x3a\x0d\xde\xe1\x3d\xdf\x95\xd5\x87\x7a\x98\xb6\x5e\xda\xb6\x45\xed\x65\xdd\x7e\x1d\xaa\x78\xec\x36\x1a\x24\xc4\x1e\x5e\x78\xa5\x0b\xfc\x58\xae\x29\xd9\x6a\xe8\x6b\x40\xf0\x24\x53\xb5\x13\xa4\x90\xac\x3c\x75\xe3\x6b\x0f\x9e\x62\x6f\xc1\x0b\x78\x75\x1a\xf0\xa6\xa1\x68\x62\xb9\xf3\x94\xbb\x7c\x29\x38\xfc\xc3\xd7\x9e\xac\xcc\x1f\xca\xec\xed\x36\x6a\xb3\x54\x59\x7e\xdd\x6a\xa7\x94\xa4\xcb\x6c\xd6\x6a\xcc\x8e\x49\x04\x07\x1f\xb2\xbb\xbd\xe3\x9e\x93\x69\xd3\xe5\x11\x3e\xc2\x63\x0e\x7f\x18\x5c\x6f\xef\x9a\x9f\xf3\x08\xf7\xf7\xb2\x40\x5c\x0d\x2f\xbe\x63\x46\xfa\xf5\xf0\x8b\xb1\xf8\xb4\x2d\x78\x7b\x07\x1f\x3f\xc2\xee\xe0\x77\x14\x87\x3b\x29\xf6\x27\xed\x06\x8b\x5f\x26\xb4\xf6\x51\x3a\xe8\x76\x27\x58\xc0\x0e\x9a\x86\x6c\x34\xbf\xe9\x34\xed\x21\x85\x8c\xf2\xf7\x1d\xb9\xbd\x58\x17\x43\xc6\xb2\x08\x0c\xdc\x7c\x74\xf9\x62\xbe\xeb\xfe\xf9\x10\xa8\x53\xd8\x29\xba\x41\xd1\x1f\xf5\xb3\x71\xc3\xaf\xb8\xdd\x16\x41\xd9\xc3\x8e\xe1\xe0\xbc\x77\x77\xa2\x2a\x3f\xd9\x84\x81\x3e\x64\x8e\x68\xb7\xcb\x79\x75\xc0\x04\xc1\x9c\xd7\xe7\x62\xac\x05\x6b\x5c\xd9\xde\x44\xdd\x68\x56\x1b\x87\xa7\xd9\xfa\x86\x92\x7e\x47\xe2\x2e\x22\xaa\x42\xf7\x1d\xc9\xa8\x1f\x41\x65\xf9\xe5\xee\xb8\xfc\xce\x94\x9e\xc8\x11\x2f\xe7\xcd\xd5\xe2\xff\x52\x0f\xea\xcb\xbb\x46\xfd\x3f\x00\x00\xff\xff\xe5\xd4\xf7\xf7\xec\x0e\x00\x00") - -func runtimeHelpTutorialMdBytes() ([]byte, error) { - return bindataRead( - _runtimeHelpTutorialMd, - "runtime/help/tutorial.md", - ) -} - -func runtimeHelpTutorialMd() (*asset, error) { - bytes, err := runtimeHelpTutorialMdBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/help/tutorial.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimePluginsAutocloseAutocloseLua = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\xff\x77\xda\x3a\xf2\xe8\xef\xfc\x15\x73\xd3\xed\x01\x6e\x6c\x8a\x81\xdb\x92\xdc\xd2\x77\x28\x21\x2d\xe7\xa5\x21\x0f\xc8\xed\x76\xb3\xb9\x5d\x63\x8b\xe0\xd6\xd8\xac\x2d\xd2\xf4\xf5\x74\xff\xf6\x77\x34\x92\x6c\xc9\x5f\x80\xf4\xdb\xe9\xdb\xcf\xcd\x0f\xc4\x96\xa5\xd1\x7c\xd3\x68\x34\x1a\xcb\xa6\x09\x7f\x1b\xb9\xc7\xb0\xa1\x8b\x6e\xc3\xdf\xd8\x60\x3d\x39\x82\x56\xb3\x79\x64\x36\x3b\x66\xb3\x0d\x56\xf7\xd8\x6a\x1e\x37\xdb\xff\x80\xb5\x1d\x53\x1b\xfe\x56\x31\xcd\x8a\x69\xc2\x45\x14\xde\x7a\x2e\x89\xe1\x72\x76\x6a\x76\xc1\xfe\x60\x47\x04\x62\x1a\x79\xc1\x0d\x2c\x36\x81\x43\xbd\x30\x88\xc1\x5b\xad\x7d\xb2\x22\x01\x25\x2e\x78\x01\xac\x37\x11\x01\x7f\x63\x1f\x33\x08\xbf\x62\x9f\x3e\x09\x6a\x71\x3d\xbd\x8f\x37\xf3\x5a\x6c\x80\x67\xc0\x3b\xa5\x34\x22\xb7\x24\x8a\x89\x56\xd3\x59\xda\x51\x6d\x13\x78\x4e\xe8\x12\xa5\x58\x94\x14\x00\xb9\x21\x81\x80\x1e\x6f\xe6\x6f\x7d\x12\x28\xcf\x16\x5e\xe0\xd6\x62\x1a\x19\x10\x91\x1b\x72\x67\x80\x17\x78\xd4\x80\xb5\x6f\x7b\x6a\xb5\x95\x4d\x9d\x65\xae\x9e\xda\x47\xbe\x86\xed\xfb\x6a\x05\x44\x41\x79\x1c\x91\xb5\x6f\x80\xef\xad\x38\x1c\x56\x73\xb4\xc0\xaa\xae\x4d\x6d\x14\x49\xcd\x09\x03\x6a\x7b\x01\xe3\x2d\x5d\x12\xf0\xc3\x0f\x24\x7a\x6a\x3e\xdb\xac\xd7\x24\x02\xc7\x8e\x09\xac\xec\xf5\xda\x0b\x6e\xe2\x3a\x78\x31\xf8\xa1\xed\x12\xd7\x60\x75\x63\xc2\x00\xda\xae\xeb\x31\x81\xd8\xbe\x22\x1b\x26\x30\xfb\xd6\xf6\x7c\x7b\xee\x13\x45\x22\x08\x55\xe3\x34\xf6\xc7\x4b\x58\x61\xdf\x57\xc1\xcc\xc9\xd2\xbe\x25\x60\xc7\xac\x3b\x2f\x82\x20\x0c\x34\x9d\x70\xc2\x4d\x40\x49\xb4\xb6\x23\x1a\xc3\x07\x8f\x2e\x91\x04\x72\xe7\x90\x35\x03\xc0\x00\xd2\xa5\x4d\x45\x1b\x26\x54\xdb\xa1\x24\xe2\xf8\x6d\x62\x54\x9c\x98\x12\xdb\x85\x70\x01\xf3\x8f\x94\xc4\xb0\x08\x23\xc6\x55\xd8\x04\x1e\x8d\x1b\x95\x8a\x69\x5e\x5d\x55\x06\xe1\xfa\x63\xe4\xdd\x2c\x29\xd4\x9c\x3a\xd3\xe0\xc7\x66\xab\xd9\x7c\x62\xc0\xff\xfe\xe8\x13\x98\xae\x3c\xba\xac\x30\xcc\xb1\x4e\x0c\x11\x89\x49\x74\x4b\xdc\x46\xa5\x32\x08\x03\x1a\x79\xf3\x0d\x0d\xa3\xf8\xb8\x02\x00\xd0\xf7\xbd\x55\x78\x0b\x53\x4a\xd6\x76\x50\xa9\x4c\x88\xeb\xc5\xbc\x8a\x17\x06\x60\x07\x2e\x43\x8c\x29\x74\x1c\x6e\x22\x87\x60\xc9\xdc\x0b\xec\xe8\x23\xc3\x6d\x15\x1b\x9c\xd0\x30\xc2\xff\xe1\x86\x56\x56\xa1\xeb\x2d\x3c\xc7\x66\x00\x0c\x24\x6d\x4d\xa2\x95\x47\xd9\xc0\x58\xf3\xa1\xe4\x72\x3e\x30\xee\x2c\x42\xdf\x0f\x3f\x30\x71\x3b\x61\xc0\x45\xc7\xf9\xb1\x22\xf4\xb8\x82\x28\xfe\x0a\x3a\x56\x31\x63\x8f\x40\x87\xe9\x3f\xac\x36\x31\x85\x88\x30\xbd\x41\x98\xf6\x3c\xbc\x65\x8f\x24\x97\x82\x90\x7a\x0e\x31\x10\x18\x00\x5d\x32\xbd\xf1\x62\xca\xc0\xa8\x9d\x06\x6e\x06\x23\xd7\x8b\x1d\xdf\xf6\x56\x24\x6a\x94\x20\xe2\x05\x2a\x33\x24\x22\xeb\x28\x74\x37\x0e\x29\xc2\x45\xe0\x20\x30\xfa\x22\x5c\x80\x53\x29\x20\xb9\xa1\xb3\x61\x56\xc7\x96\xf2\x7a\x14\x46\x10\xd2\x25\x89\x60\x65\x53\x12\x79\xb6\x1f\xa7\x6c\x4f\x94\x52\x25\x43\x12\x77\x4e\x3c\x6c\xc7\x9e\x07\xf6\x8a\x30\x9c\x90\x84\x0d\x5d\x86\x4c\xdb\xd3\x47\x28\x02\x8f\xc6\x0c\xe7\x44\xa1\x60\x65\x7f\x84\xb9\x44\x0c\xf5\x99\x86\x40\x02\x37\x8c\x62\xc2\x34\x64\x1d\x85\xab\x90\x12\xe0\xfc\xa1\x31\xb8\x24\xf2\x6e\x89\x0b\x8b\x28\x5c\x71\x5e\xc4\xe1\x82\xe2\x58\x92\xda\xc4\x81\xc5\x6b\xe2\x30\xa5\x82\x75\xe4\x31\x55\x8b\x98\x3a\x05\x5c\xb1\xe2\x18\x69\xa8\xcc\x5e\x8e\xa6\x30\x1d\x9f\xce\x5e\xf7\x27\x43\x18\x4d\xe1\x62\x32\xfe\x63\x74\x32\x3c\x81\xe7\x6f\x60\xf6\x72\x08\x83\xf1\xc5\x9b\xc9\xe8\xc5\xcb\x19\xbc\x1c\x9f\x9d\x0c\x27\x53\xe8\x9f\x9f\xc0\x60\x7c\x3e\x9b\x8c\x9e\x5f\xce\xc6\x93\x29\x1c\xf4\xa7\x30\x9a\x1e\x54\xd8\x83\xfe\xf9\x1b\x18\xfe\xfd\x62\x32\x9c\x4e\x61\x3c\x81\xd1\xab\x8b\xb3\xd1\xf0\x04\x5e\xf7\x27\x93\xfe\xf9\x6c\x34\x9c\x1a\x30\x3a\x1f\x9c\x5d\x9e\x8c\xce\x5f\x18\xf0\xfc\x72\x06\xe7\xe3\x19\x9c\x8d\x5e\x8d\x66\xc3\x13\x98\x8d\x0d\xd6\x69\x25\xdf\x0c\xc6\xa7\xf0\x6a\x38\x19\xbc\xec\x9f\xcf\xfa\xcf\x47\x67\xa3\xd9\x1b\x44\xe4\x74\x34\x3b\x67\x7d\x9d\x8e\x27\xd0\x87\x8b\xfe\x64\x36\x1a\x5c\x9e\xf5\x27\x70\x71\x39\xb9\x18\x4f\x87\xd0\x9f\x0c\x2b\x27\xa3\xe9\xe0\xac\x3f\x7a\x35\x3c\x69\xc0\xe8\x1c\xce\xc7\x30\xfc\x63\x78\x3e\x83\xe9\xcb\xfe\xd9\x59\x86\xca\xf1\xeb\xf3\xe1\x84\xa1\xae\x91\xf8\x7c\x08\x67\xa3\xfe\xf3\xb3\x61\x05\x3b\x3a\x7f\x03\x27\xa3\xc9\x70\x30\x63\xd4\xa4\x57\x83\xd1\xc9\xf0\x7c\xd6\x3f\x33\x60\x7a\x31\x1c\x8c\xd8\xc5\xf0\xef\xc3\x57\x17\x67\xfd\xc9\x1b\x43\xc0\x9c\x0e\xff\xcf\xe5\xf0\x7c\x36\xea\x9f\x55\x4e\xfa\xaf\xfa\x2f\x86\x53\xa8\xed\xe0\xc8\xc5\x64\x3c\xb8\x9c\x0c\x5f\x31\x94\xc7\xa7\x30\xbd\x7c\x3e\x9d\x8d\x66\x97\xb3\x21\xbc\x18\x8f\x4f\x18\x9f\x2b\xd3\xe1\xe4\x8f\xd1\x60\x38\xfd\x1d\xce\xc6\x53\x64\xd6\xe5\x74\x68\xc0\x49\x7f\xd6\xc7\x8e\x2f\x26\xe3\xd3\xd1\x6c\xfa\x3b\xbb\x7e\x7e\x39\x1d\x21\xcf\x46\xe7\xb3\xe1\x64\x72\x79\x31\x1b\x8d\xcf\xeb\xf0\x72\xfc\x7a\xf8\xc7\x70\x52\x19\xf4\x2f\xa7\xc3\x13\x64\xee\xf8\x1c\x49\x9d\xbd\x1c\x8e\x27\x6f\x18\x50\xc6\x03\xe4\xbd\x01\xaf\x5f\x0e\x67\x2f\x87\x13\xc6\x4f\xe4\x54\x9f\xb1\x60\x3a\x9b\x8c\x06\x33\xa5\x5a\x65\x3c\x81\xd9\x78\x32\x53\x68\x84\xf3\xe1\x8b\xb3\xd1\x8b\xe1\xf9\x60\xc8\xb0\x19\x33\x28\xaf\x47\xd3\x61\x1d\xfa\x93\xd1\x94\x55\x18\xf1\x6e\x5f\xf7\xdf\xc0\xf8\x12\x49\x66\x22\xba\x9c\x0e\x2b\x78\xa9\x28\xac\x81\x82\x84\xd1\x29\xf4\x4f\xfe\x18\x31\xb4\x45\xe5\x8b\xf1\x74\x3a\x12\x6a\x82\x2c\x1b\xbc\x04\xce\xee\x46\xc5\x34\xaf\xaf\x2b\x38\x4f\x3d\x3f\x3f\xe5\xa3\x68\x72\x3a\x80\xf6\xe3\xd6\x91\x98\xc0\x2e\x67\xa7\x5d\x33\x74\x28\xa1\x31\xf4\xe0\xd7\x1a\x2f\x60\x53\x0f\xd4\x93\xe7\x78\x0b\xd0\xe3\x77\x16\x3c\xe2\x17\x2d\x79\xd1\x96\x17\x9d\xa4\x89\xc5\xc7\x65\x0f\x1e\xde\x35\x9b\xe6\x93\xd3\xe4\x41\x2b\x7d\x30\x68\x99\x27\xa7\xbc\x94\xda\x9e\x9f\x54\x69\xa7\x55\x86\x4d\x78\x78\xd7\x6f\x9a\xcf\x95\x7a\xf0\x88\x3d\xb0\xcc\xe1\x00\x5a\x35\xa5\xb8\x0e\x8f\x18\x08\xfd\xef\xe1\xdd\xf0\x04\x1e\xde\x75\x9b\xe6\x51\x0e\xc4\xd0\x1c\x9e\x66\x40\x24\x38\x74\x52\x1c\x4e\x19\x0e\x47\x88\x43\xb6\x3f\xf6\xd4\x32\x4f\xdb\xd0\xde\x03\x91\xd3\x0e\x47\xa4\x5b\xda\x29\xde\xf2\x4e\xbb\xac\x3f\x26\xa3\x8a\x1f\x3a\xb6\x8f\xb3\x3d\x47\x88\x3b\x96\x0d\x56\x20\x9e\x09\xf1\xa4\xcf\x58\x81\x78\xe6\x6e\x56\x6b\xed\x19\x2b\x10\xcf\x98\xa3\xa7\x3d\x63\x05\xf2\x59\x18\xad\x6c\xaa\x3e\xc3\x02\xf1\xd4\x27\x01\x68\x2d\x7d\x12\xc8\x47\xcc\x41\xd2\x1e\xb1\x02\xf1\x30\x22\x6b\xbd\x5d\x44\x24\x32\xf1\x66\xae\x3f\x8a\x37\x73\xf1\x88\xfb\x76\xca\x23\x2c\x40\xbd\x8e\x08\xdd\x44\x41\xcc\xe7\x9d\xcd\x6a\x4e\xa2\xd4\x35\xc2\x09\x66\xfe\x11\x9f\x65\x3c\x2a\xb0\x29\xe7\xa8\x87\x9e\x0b\xfa\x85\x7e\x1c\x82\x1b\x6e\xe6\x3e\x89\x99\x07\x67\xe7\xda\xdc\xda\xbe\xe7\xda\x34\x94\xc4\x48\xbf\x2f\xf1\xc0\x79\xb7\xe8\x6d\xd7\x71\x5e\x62\x60\xa3\x1b\x9c\x7e\xc1\x25\x0b\x7b\xe3\xd3\x18\x1f\x78\xd0\x03\x8f\xcd\x78\x56\x25\x57\xd1\x59\x12\xe7\xbd\x17\xdc\xf0\x8a\x0b\xa0\x1f\xd7\xcc\xd9\x87\xff\xf4\xe0\x80\xd3\x7f\xc0\x48\x0a\x2a\x52\xb3\x48\x14\x85\x51\xed\x60\x6e\xbb\x29\x90\x07\x16\x9b\x5a\xab\x1a\x66\x55\xa8\x89\x45\x09\xb9\x5b\x13\x87\x32\xb7\xf8\x26\xa4\x70\xd0\x68\xc8\x4e\x1a\x0d\x38\xa8\x1f\x70\xe4\x49\xe0\x6a\x28\x78\x1c\x05\xce\xe5\x7d\x50\x68\x15\xa2\x20\xa4\x54\x82\x82\x97\x43\x01\x2f\x84\x9e\x43\x0f\xa5\x26\x38\x2c\x39\xe7\x12\xca\xa6\xf9\x80\x08\xb9\x07\x84\x30\x57\x86\x79\xc6\x89\xf0\x0c\x98\xdb\x4c\x1d\xc2\x20\x35\x80\xa2\xb9\x10\x2b\x6f\x0d\x96\xa4\xd9\x81\x67\xd0\x44\x3f\xcb\x81\xa7\x3d\xb0\x5a\x4f\x74\x92\x13\x43\x97\x94\x70\x5d\x94\x22\x25\x7e\x4c\x38\x98\x1e\x58\x47\x9d\x14\x52\xab\xd5\x2e\x86\xd4\x4a\x4a\x04\xb9\x2d\x95\x5e\x38\x04\x4b\xd0\x2c\x30\x0c\x42\xca\xea\x68\xb0\x14\x61\x70\xf5\x15\x12\xe7\x1c\xb2\x99\x8b\x4d\xec\xc8\xff\x28\x18\xac\x31\xb9\x90\x1f\x2d\xb5\x47\xa7\x05\x4f\xc1\x6a\x75\x99\xe6\x3a\x2d\x78\x06\xd6\x91\x55\xda\xff\x28\x40\x48\xd9\x61\x54\xd6\xb3\xe0\x5e\x2b\xcf\xbd\x56\x4b\xe5\x5e\xfb\xa8\x98\x7b\xed\x3d\xb8\x97\xa9\xd1\xce\xd4\x68\x15\xf2\x17\x3d\x5b\xca\x6a\xff\x48\x4e\x43\x2f\x25\xbc\xc6\xf9\xfe\xb8\xa9\xf2\xbd\xfe\x35\x8c\x97\xdc\x65\x9d\xb4\x9f\xa8\x9d\xa8\xc2\xfd\xed\xe8\x5b\x74\xf2\x1d\x75\x26\xc7\xc3\xb6\xc6\xc3\xb6\xd2\x73\xfb\xbb\x68\x6b\xbb\x40\x5b\x3b\x8a\xd5\x68\x75\x3a\xc5\xda\xda\xf9\x26\xda\x9a\xa9\xd1\xc9\xd4\x68\xef\xd0\x67\x79\xd5\xf9\xf1\x9a\x2d\x98\x24\x94\xae\xd3\xf9\x2e\x9a\xdd\xe9\x94\x69\x76\xa7\xfd\x97\x66\xef\xdb\x73\x47\xeb\xb9\xa3\xf4\xdc\xf9\x2e\x63\xaa\x93\x8e\xa9\xac\x7f\xb1\x1d\x20\x03\x86\x00\x4b\xfd\x42\x25\xa2\xe6\x05\x89\x87\xc7\xd5\xbb\xc8\xa9\x63\x6e\x6e\x2d\xce\xfb\x72\xf7\x76\xd1\x98\x2f\xf2\xde\xb8\xc5\xb8\xaf\xed\x45\x31\xab\xec\x86\xb0\x8e\xbc\x80\xd6\xaa\x07\x55\x83\x86\xbc\x5d\xed\x7d\xdd\xd0\xee\x6f\xf1\xbe\x9e\x78\x63\xb0\xdb\xe1\xf3\x49\xf0\x05\xae\x9e\xe2\x67\xad\x43\xb6\x16\xb4\x94\x12\xee\x58\xf5\x40\x44\xa8\xd3\x07\x3e\x09\x6e\xe8\x12\x7a\xd0\xe4\x00\x3e\x2c\x3d\x9f\x20\x80\xa7\x3d\xd1\xca\x0d\x53\x3b\x25\x6b\x8b\x8b\x43\x48\xbd\x27\xde\x29\xfb\x3d\xd4\x1d\x6a\x66\xcd\xd6\x61\x9c\xc1\x54\x28\x0b\x07\x94\x88\x5d\x89\xb6\xbb\x24\xa0\x9e\x63\xfb\xfe\x47\xc6\x98\x74\x4d\x21\xc2\xad\x3c\xc0\xe8\xa1\x81\x78\x87\xf1\xc4\x6c\xd0\x95\xc1\xcb\x86\x5b\x8b\x94\x84\xc1\x4c\x23\xec\x59\x55\xd1\xdc\xfe\x77\xd0\x83\x77\x6c\xe8\x98\xd6\x37\xe2\xb7\x69\x42\x18\xf8\x1f\x21\x26\x14\x7c\xa6\x8a\xb8\xaa\x78\x07\x1e\x73\x83\x6f\x6c\xea\xdd\x12\xb5\x35\xf4\xa0\xe6\xb1\x59\xaa\x29\x08\x67\x97\x75\xd6\x44\xd9\x7f\x48\xeb\xc7\xd4\x8e\xe8\x80\xad\x2e\x93\x76\x75\x6c\x88\xbd\xf8\x70\xc8\xa7\x2a\xa5\x05\x09\xdc\x81\x0c\x16\xd4\xde\x29\x2d\xde\xc9\x16\xef\xb0\x85\x44\xde\xb1\x83\x2a\x05\x8c\x9a\x63\x67\x30\x27\x8b\x30\x22\x0c\xce\x2f\x72\x74\xa5\x58\x3c\x4b\xe0\x6b\xa3\x4b\xe8\xc2\xc1\x81\xae\x22\xa6\xc9\x0d\x58\xb8\x58\xc4\x84\xc6\x4c\x0d\xd6\x76\x1c\xeb\xea\x90\xa5\xf6\xf9\x47\x4a\x0c\x12\xb8\xec\x3f\x13\x8a\xc1\xe5\xfe\x85\xca\xad\x9a\x4e\xf9\xbc\xa7\x10\x94\xb3\x9c\x09\x0e\x7c\x2c\x14\x1b\xca\xdd\x43\xa5\xb8\xdf\x42\xe6\x09\xe8\x69\x9f\x60\x2a\xa3\x92\xfd\xcd\x23\x62\xbf\xd7\x30\xd1\x30\xca\x48\x48\x74\xc7\xfa\xd0\xa8\x41\x04\x0f\x2d\x7d\x61\x99\xaa\xcb\x53\x10\x11\x23\x6c\x28\x11\x62\x6a\xd4\x84\x1c\x13\x84\xc0\xe5\x0e\x56\x22\x37\xd9\xae\x2e\x0d\xc2\xd5\x15\x9f\x0c\xd6\xbe\xed\xe4\x47\x78\xba\x26\xb4\xe5\xa6\x11\x50\x7b\xee\x93\xa2\x61\x2e\x81\xb0\x1e\x45\xe5\x6f\x30\x31\xec\x30\xe5\xa2\xd3\xaf\x5c\xb9\x4b\x74\x11\x0d\x24\xf0\x7e\xcb\xf7\x14\x0b\x6c\x5c\x86\x84\xec\xe6\xdb\xcc\x2c\x89\x52\x2b\x65\x01\xf9\x10\x53\x66\x8c\x0e\x0e\xf6\x19\x91\x69\x4c\xa6\xb7\x65\x4a\x01\x2d\xbe\x20\x74\x6a\x1d\xf2\x1f\x38\x54\xa0\x98\xda\x0a\x3c\x41\x46\x5c\x34\x1a\x20\x59\x70\xe5\x5c\xa3\x83\x54\x2f\x1e\xb3\x3a\x69\x59\xad\xe6\xe0\xb8\x06\xe3\x1c\x24\x67\x32\xc5\x70\xf1\x88\x98\x98\xc9\x3c\x0a\xef\x83\xf0\x43\x0c\xf6\x3c\xdc\x50\x10\x9b\xbe\x10\xe3\x86\x33\xdf\x12\x75\xc2\xe0\x96\x44\x31\x9b\x19\x8b\x74\x9b\x83\x93\xfc\x17\x78\x28\x92\x67\x1c\x61\xb7\x6f\x7d\xe7\xed\xc6\x49\x46\x57\x21\x6a\x3c\xfe\xf7\xcd\x50\xe3\xe0\xf6\x40\x6d\xe3\xbc\xf5\x05\x6a\x22\xe6\x5d\x84\x9d\xd8\x3c\xd7\x9d\x00\x0a\xf1\x66\xbd\x0e\x23\x2a\x76\xf0\x8b\x87\x3f\x6f\xf8\x4d\xdc\xc1\x9d\xa3\x1e\xfb\xfa\x3a\x27\xae\x74\x60\x71\x4d\xcc\x0e\xad\x7b\x0e\xb7\x67\xd0\xd4\xe6\xbe\x5c\x7c\x4e\x1b\x5e\xbc\x1d\x0f\x85\xb5\xba\x4a\x50\xed\xc8\x52\xa1\xe8\xe3\x24\x3b\x0d\x95\x42\xd7\xe6\xc6\xdd\x63\x7e\xdb\x00\xde\x7f\xf4\xe7\xf1\xdc\x36\x8e\x4d\x13\x96\x94\xae\x8f\x1f\x3d\x22\x41\xe3\x83\xf7\xde\x5b\x13\xd7\xb3\x1b\x61\x74\xf3\x88\xdd\x3d\xba\xa4\x8b\xae\x52\xc9\x25\xb7\xc4\x0f\xd7\x24\x6a\x38\x61\x14\x06\xb6\x6f\xcf\xe3\x86\x13\xae\x1e\xb1\xd1\xf3\x68\x43\x17\x66\xd7\x4c\xc7\x8d\xb9\xa1\x9e\xef\xd1\x8f\x65\x61\xe9\x34\x31\x44\xe8\xa7\x1c\x86\x4f\x7b\xd0\xbc\x7b\x72\xca\xa7\x5c\x81\xb5\xd6\x40\x9b\xe4\x6b\x99\x66\xa7\x99\x25\x34\xef\x9d\x4d\xbf\x4d\x36\x6b\xdf\x0d\x9a\x70\x08\x2b\x9b\x2e\x1b\x0b\x3f\x0c\x13\xa0\xf0\x08\x9a\x77\x9d\x66\xfd\xf7\x82\x86\x16\x36\xec\xb2\x86\x49\xf5\x87\xd9\xea\x2a\xa2\xd8\x9b\xc1\xdb\x8a\x2a\x24\x70\x7f\x2f\xc1\xf9\xf4\x74\x27\xd2\x43\xd6\x77\x19\xd6\x56\xb3\xb9\x1b\xef\x72\x8a\xf3\xa4\xa4\x10\x5a\x5f\x43\x39\xff\xd7\xda\xcd\x00\xab\x59\xca\x02\xac\xd4\x93\xaa\x51\x80\x61\x3b\x45\xb0\x18\x3b\x2c\xe5\x7f\x3d\x95\x83\x2a\x0b\x8a\x28\xff\x4e\x70\xad\xef\x04\xb7\x89\x9a\xc4\xe0\xb2\x8a\xbf\xe7\xc2\x17\x65\xd2\xe1\xff\xda\x39\x21\xe1\x5c\x00\xd5\x4b\x21\x27\xc7\x0e\x82\x90\x2d\x83\xe0\x26\x22\x36\xc5\x6c\x0b\x3b\x80\xcb\x43\x2e\xbb\x5f\xaa\xdc\xa0\x88\x15\xcb\xd2\x5b\xd0\xb7\x8f\x19\x01\xad\x3f\x1f\x6b\x85\x56\x0b\x0b\xad\x96\x5e\xda\xe5\xa5\x5d\x09\x41\xc9\x12\xab\x28\xd7\xd0\x4b\xcc\x08\x4f\xd0\x62\x8b\x5b\x03\xcd\xef\xdb\xc4\xf6\x2a\x9b\x58\xa0\x2e\x6e\xbd\x44\xfb\x3c\x78\x06\xef\x34\xf3\x92\xdd\xd1\x59\xaa\xeb\x2b\x6f\x91\xf4\xa0\xab\x68\x89\x41\xa7\x91\xa1\x63\xc4\x27\x00\x90\x6e\x9c\xf2\x3c\xb9\x30\xad\x43\x6c\x5d\xcf\x07\x99\x04\x32\x6f\xb9\x69\x4f\x12\xf0\x68\x64\x78\x86\x57\x37\xa0\x99\xc1\x47\xea\xce\x03\x67\x59\x34\x01\x4b\xb6\xaa\xa4\xc5\x6c\x19\xc6\x03\x66\x90\xb2\x1a\x67\x35\x67\x59\x57\x1d\xf7\xa4\x76\xab\x68\xb4\xce\x51\xbf\xe6\xc2\xf4\x88\xf6\x86\x65\xe4\x63\xc2\xa1\x4b\x9a\x06\xfb\x95\x15\x9b\x26\x33\xcd\xbc\xad\xc9\x46\x48\xd2\x22\x45\x08\x5b\xfd\x2a\xb5\x8b\x6b\xba\x95\x5d\x5a\x24\x18\xb6\x77\x60\x88\xbf\x2d\x0d\xcf\xf6\x16\x3c\xf1\xb7\xa5\x60\x3b\x54\xb1\xe5\xc0\xf6\x41\xdc\x6a\x49\xcc\x33\x94\xb4\x4a\x29\xe9\xec\x45\x09\xfe\xb6\x35\x7a\x3a\x3b\xe9\xc1\xdf\xb6\x42\xd5\x69\x09\x55\x1c\xfa\x5e\x04\x76\x33\x04\x26\x14\xb7\x32\x14\xb7\x0b\x1d\x14\x01\xd5\xd0\x32\x45\x71\xb0\x1f\x5a\xda\x70\x97\x23\x46\xba\x32\x13\x11\x5c\xb5\x03\xf0\x28\x89\x6c\x1a\x46\xcc\xc5\x73\x96\x7a\xd8\x95\xdc\x31\xc7\x7a\x2e\x7c\x58\x0c\x1b\xd1\x58\x6c\xbb\x07\x94\x44\xb7\xb6\x5f\xe4\xb2\xc8\xd4\x54\x86\x49\x92\x9c\xca\xd0\x16\x37\x90\x0c\x3c\x59\x90\x98\xa0\x54\x60\x6f\xf3\x2b\x4d\x11\x98\xc0\x11\xcb\x1c\x33\x85\x13\xa9\xad\x7b\xef\xad\xeb\x6a\xf0\x84\x15\xf0\xe1\xaa\x40\x4d\x2e\x0f\xf9\x73\x35\x36\x9b\x7a\xd3\x6f\x31\xdb\x13\x43\x75\xfa\x43\x1e\xe8\x12\x34\x48\x58\xca\x34\xb2\x26\x36\xd5\x3c\x5f\xd5\x2e\xea\x01\x16\xc5\xaa\xaa\x0d\x94\xee\x99\xce\xa4\x77\x87\x19\x9f\x5a\x5f\x2a\xec\x63\x5e\xa5\xf9\x43\x64\x34\x0a\x0e\x15\x4b\xce\x95\x96\x7a\x3a\x27\x12\x89\x55\x32\x1c\xf1\xed\x98\xaa\xa0\x94\x4d\x75\xc1\x32\xdf\x73\x88\x62\xd6\x91\x85\x06\x6b\x56\xcf\xce\xbf\x58\x55\x04\x85\x0c\x84\x9c\x28\xbf\x32\x73\x26\x1a\x37\xf7\x82\x98\xd8\x91\xb3\xac\xc5\x61\x44\x89\x3b\xb3\xe7\x3e\x31\x98\x5e\xaf\x0c\x70\xc2\xd5\x5a\x5d\x3a\x2d\x89\xed\x1a\x80\x59\x3a\x3d\xb0\x0c\x78\xa0\xb4\x51\xaa\xad\x3c\x57\x77\x29\x6a\xac\x21\x1c\x62\xcb\xfa\xa3\x56\xe2\x88\xe3\xee\x5b\xb8\x5a\xeb\x66\x87\xaf\x96\x6a\xd8\x8d\x89\x7d\xd6\xe1\x19\xe4\x56\x4a\x4c\x3b\xd3\xee\xaf\x68\xc8\xf7\x39\x6a\x2b\xcf\xad\x5f\xc3\x33\x24\x21\x1f\xea\x63\x7f\x82\x80\x95\xa7\x6b\x8d\x36\x19\xca\x3f\xc4\xbc\xa0\x6e\x46\xe3\xf6\x23\x19\x32\xf1\xc3\x6d\x64\x20\xdd\xd7\x4c\x69\xf2\x84\x08\x51\xd3\x68\x43\x0c\xd0\x5b\x24\xd3\x7a\x19\x5c\x44\xe8\x5e\x70\xb1\x45\xde\x5d\x90\xb6\xc3\x96\x85\x52\xc5\x32\x1a\xe6\xf8\x76\x1c\xbf\xb2\xa9\xb3\x7c\x41\x02\x6e\x2d\x6b\x58\x96\xa4\xd4\x83\x36\x6d\xb0\x91\xf8\xe9\xb3\x52\x18\xd9\xc1\x4d\xbe\xd4\xbb\x09\xc2\x08\x1d\xb5\x04\x01\xa5\x7a\x41\xf9\xc2\x8b\x62\xea\x13\xca\x7c\xca\x1e\xd2\xa8\x39\x2b\x98\xac\x9f\x34\x53\x3b\xa2\xc2\x34\x08\xc3\x8c\xb8\xd7\xd5\x1a\xcc\x08\xe2\x2d\xa6\xdc\x18\xf0\xd6\x60\xfe\xab\xc7\x66\x07\x55\x69\xd1\x56\xf6\xd2\x04\xe0\x64\x08\x08\x52\xd8\x0c\xc1\x6e\x91\x2b\x79\xcd\x95\xdb\xba\x07\x0f\x0f\x8a\xd5\x3a\xe1\x48\x42\x9b\xaa\xd9\x49\x73\xb3\xa4\x39\xc6\x36\x1b\xcc\x1c\x44\x14\x17\x01\x22\xb2\x24\xa7\x46\xa7\x5e\xcf\xb5\x91\xbc\xde\xde\xe3\x9f\x65\x08\x73\xf2\x55\xc1\x14\xd6\x83\x24\x64\x54\xfd\xe5\x97\x5f\xaa\x79\x34\x0a\x47\x2e\xa0\x0d\x96\x62\xcd\x61\x08\x05\xa3\x58\xc5\xba\x7a\x5d\x2d\xc6\x46\xdf\x0e\x28\xed\x5e\x10\xc7\x39\x54\x4a\xd6\x97\x30\xbd\x94\x5a\x0e\x2c\x22\xab\xf0\x96\x70\x60\x75\xc0\xf0\xff\x2a\xbc\x65\x2e\x48\xd5\xac\xee\x46\x82\x8f\x36\x03\x3e\x15\x40\xcb\xe2\xf6\x39\x8f\x1c\x28\x5a\x91\x8e\x40\x0d\xfd\x2c\xd3\xd5\x9d\x5d\x2e\x80\xfb\x0d\x88\xaa\xcd\x25\xc5\x68\x7d\x68\x1f\xe3\xfb\x05\x24\x26\x01\x8d\xf1\xcd\x10\xae\x59\x71\x03\x6a\xe3\xf3\xb3\x37\xd0\x9f\x0e\x46\xa3\x3c\xde\xc5\x3c\x78\xfc\x9b\x01\x47\xcd\xcf\xc8\xc6\x3e\x98\xf0\x8f\x3d\xdb\x1d\x3d\x31\xc0\x6a\xb5\x78\x43\x1b\x4c\xf8\xbf\xe5\x7a\xe6\x28\xd8\x3b\x39\xec\xf1\xfd\x81\xd0\x57\x76\x6d\x1a\x7b\xe2\xd0\x34\xa0\x6d\x15\x48\xa8\x48\xe5\xac\xd6\x93\x7a\x39\x86\xae\x82\xa1\x9b\xc3\xd0\xf5\x6e\xf0\xd5\x9b\xfd\xb0\xea\x74\x0d\xf8\xed\x09\x67\x4c\x13\x4c\x38\x2a\xef\xf6\x46\xe9\xf6\x26\xd7\x2d\xe6\x0e\xe0\x76\x8c\xb2\xa1\x25\xc2\xda\xf1\xda\x76\xc8\xbe\x18\x59\x06\x74\x77\xb1\x29\xad\xdc\xd9\x87\xab\x49\xf5\x76\xdb\x00\xab\xdd\xda\x1f\x7c\xbb\x63\x80\xf5\xdb\xd1\xfe\x0d\x1e\x5b\x8c\x9f\xf7\x68\xf1\xdb\x13\xd6\xa4\x6b\x1d\xed\x4f\x45\xb7\xd5\x6c\x1b\xd0\x6d\xdd\x83\xf0\x6e\x8b\x51\xd2\x6d\xb5\xf7\x67\x6d\xb7\xd5\x69\xb2\x26\xdd\xc7\xf7\x68\xd2\xed\xe2\x40\xeb\x3e\xf9\xbc\x45\x7f\x7d\x45\x91\xfc\xbc\x7d\x08\x3f\x90\x08\xb7\x62\xbe\xc6\x52\xdc\x67\xc4\xaf\x15\x7c\xd6\x79\xc5\x66\x8e\xd3\x86\xbf\xae\xa4\x8c\xfa\x2f\x41\x8a\xa9\x5f\x27\xcb\x9a\x2d\xaa\xd1\x35\xe0\x71\x67\xef\xea\x47\x96\x01\x47\xfb\x0b\xcb\x6a\xb1\xc1\xd0\xca\x36\xd0\x38\x13\x2b\x9c\x89\x73\x9c\xc1\x61\xfd\x05\x96\xf0\x88\x0d\xc2\x3d\x2d\x61\xbb\xb5\xa7\xc5\x6c\xb7\xf7\xac\xf8\xb8\xb9\x5f\xc5\xdf\x9e\xec\xac\x99\x2a\xbe\x75\xd4\x62\x63\xa5\xb9\xd3\xb4\x08\xe0\xdd\xd6\xbe\x84\x75\x5b\xfb\x52\xd6\x6d\xb5\x8f\xf6\xad\xd9\x7d\xb2\xef\x44\xd4\xea\x76\xb7\x28\xc8\x46\x51\x90\x4d\x4e\x41\x70\x1f\xf7\xab\x87\xf2\xf6\x49\x5f\x43\xe7\x83\x82\xce\x87\x1c\x3a\xb6\xbf\x5e\xda\xc1\x66\x45\x22\xcf\xf9\xda\xa1\xbc\x7d\xde\xfc\x52\x62\xca\xdb\xdd\xc7\x9e\xdd\x29\x5c\xb8\xcb\x71\x61\x49\xee\x6c\x97\x38\xde\xca\xfe\xb6\xbe\xc2\x76\x9a\x9f\x28\x34\x9f\xde\x87\xe6\xa6\x42\xf3\xe2\x2f\x37\xff\xbb\xb8\xf9\xa0\xae\x56\xf5\xe6\x39\xaa\x77\x33\xf8\xbe\xcc\x2d\x64\xec\x97\x30\xf5\x5b\x32\xb4\x9c\x99\xfb\x32\x4e\xcd\x02\xd0\x63\x1d\x7a\x88\xa6\x92\xa2\x1e\x87\x92\x63\x5a\x3c\x23\x09\xdd\x78\xc1\x04\xa9\xaa\x31\xe3\x35\x48\xb6\xd0\x41\x84\x3a\xde\x1a\xf8\xae\xb5\xc7\x53\x7a\x39\x03\xea\x05\x61\xba\xe8\xca\xba\x86\xa7\x3c\x10\xcb\xa0\xf0\x04\x08\x79\xf3\xb4\x07\xd1\x55\xeb\xba\x58\xb6\x4a\x44\xaa\x7c\xd1\xa8\x5c\x17\x06\xa5\x20\x55\x23\x19\x10\x28\x0a\x7b\x25\x51\xf0\x3c\xb5\x4a\xad\x34\x60\x2a\x54\x2d\xa9\x8d\x7b\x7f\xe5\x1c\x23\x81\x6b\xa4\xa1\xa2\xc2\x50\xda\x5e\x08\x24\x8c\xfb\x4f\x0f\x4c\x2b\x59\x24\xd7\xee\x8b\x58\x29\x66\x69\x1a\x39\x4f\x1f\x94\x49\xbe\xf8\x6e\x3c\xb9\xa3\x91\x9d\x64\xed\x18\xd8\x3d\x2f\x8b\x48\xbc\xf1\x29\xdc\xda\xfe\xa6\x30\x81\x30\xde\xcc\x5f\x7b\x74\xf9\x3c\x7d\x49\x10\x37\x59\xe2\xf9\xd7\x24\x0d\xc7\xf3\xa2\xdd\x8f\xbf\x52\x87\xe1\xaf\xd4\x61\xd5\x3c\x24\x37\x7f\xa5\x0e\xef\x4a\x1d\x4e\xae\x50\x0a\x32\x9d\x50\x84\xe7\x6d\x67\x89\xdb\x50\x84\xae\x08\xb5\x71\x12\xa9\x7d\xfa\x6c\x7c\x42\xd0\x6f\xdf\xae\xf8\x26\x6d\xf5\xfd\x6d\xb5\xf2\xb9\xae\x36\xba\xc0\x10\xde\x3d\x5b\x26\xe6\x03\x6d\x36\x89\xd2\xfd\x03\x71\x5e\x4e\x6e\xff\x40\x54\x84\x1e\x7c\x4a\x67\xaa\xe4\x9d\x88\x1e\x7c\xfa\x6c\x24\xe5\x8e\xbd\xa6\x9b\x48\xdd\x58\xf8\xac\xce\x14\x05\x41\x47\xa4\xe4\x0a\xfb\xbe\x86\x1e\xc8\xde\xf2\xf6\x3c\x25\x39\xad\xad\x55\x16\x62\xcc\x90\xc9\xd3\x42\x6b\xec\x3e\xb7\xad\x97\xce\x0d\x83\x7a\x76\x7e\x65\xcf\x58\x79\xf1\x14\x2a\x3a\x3e\x0e\xc8\x1d\x3d\x65\x35\xf3\xce\x87\x5a\x65\x4a\xa3\xda\x1e\xfe\x92\x6c\xc2\x3c\x7d\x9a\x6d\x50\x30\x39\x97\x91\x4c\xed\xe8\x7b\x11\xbc\xd8\xf8\xfe\x84\xa1\x37\x0e\xce\xbf\x0b\xed\x25\x1c\xbd\x07\xf9\x2b\x2f\xd8\xc4\x3f\x88\xfe\x02\xe2\xb2\x9b\x98\xe5\x74\xed\xa0\xe3\xdf\x1b\x12\x23\xb2\x3f\xb3\x28\xbf\x8c\xda\x22\x72\x85\xe9\xa8\x79\x6e\x39\xad\x6f\xf5\xde\x53\x2f\x42\xf4\xdb\x90\xf6\xe7\xca\x73\xaf\x99\xff\x6b\x16\x3f\xb1\xae\x0b\xe0\x88\x1a\xae\x92\xa7\x25\x1b\xf3\xf9\xd9\x28\x03\x56\xf2\xa0\x75\x5d\x84\x2e\x26\x76\xef\xd1\x07\xe6\xaa\x28\x37\x70\x08\x7e\x4e\xd2\x29\xce\x3d\x01\xb8\x50\xe4\xb8\xb0\x60\x73\x97\x01\x7e\x76\x2d\xb1\x9f\xa0\x8b\x84\xbd\x43\xe0\xf0\x9d\xcd\x9c\xa0\x7d\xca\xa6\xdb\xfb\x68\x4d\x89\x10\x15\x2d\x92\x99\x3c\x7b\x10\xb9\x2f\x8e\xe1\xfa\xab\x51\x6c\x65\x50\xcc\x39\x46\x5f\x31\xf8\xe6\xb6\x6f\x07\x0e\x89\x6a\x31\x8d\xb2\x69\x67\xf1\x66\x55\x90\x70\x34\x77\x0c\x20\x4e\x26\xa7\x11\x2c\x03\x2c\xb1\x32\x4f\xca\x5a\x46\xfe\xb5\x72\xb1\x6d\xcf\x3c\xfc\xb9\x53\x67\xaa\x4d\x82\x1a\x51\xac\x9c\x06\x5e\x2e\xf2\xe7\x4e\x66\xd5\x4f\xee\x67\x17\x9d\x01\xba\x9d\x0e\xae\x00\x18\x59\xcf\xa0\x59\x3c\x60\x38\xcd\xec\x37\xcb\x64\x01\x0a\x2b\xf4\xca\x9a\xef\x90\x46\x56\x2a\x65\xcd\x8a\xa7\xce\x84\x90\xb9\xb3\x0b\xf9\x6c\x6a\xd6\x7e\x1d\x6c\xa5\x37\x8c\x44\xef\x66\xc1\x3b\xda\x3a\x06\xcd\xad\x7c\x29\x1a\xfd\xa5\x18\xec\x46\x1c\x76\xed\x82\xe7\xd6\xe3\x15\x05\x68\x23\x71\x68\xb9\x25\x28\x1a\x98\x7b\xb9\x00\xc9\xf8\x24\xff\x46\xc3\x54\x62\x55\xb6\x28\x87\xb7\x00\x75\x4e\x80\x67\x0a\x00\x3b\x62\xdd\xa1\xfa\x26\x88\x47\xe1\x0a\x7b\xc2\x65\xb3\xd6\x50\xeb\xda\x0b\x6e\xce\x48\xc1\x86\x7f\x5a\x25\x5c\x17\xa5\x74\x14\x10\x14\x78\xfe\x2e\xc3\xe2\xdb\x31\xd2\xa5\x14\x95\xe6\x16\x09\x5b\x20\xa1\x2a\x09\x42\xb5\x44\x0c\x59\xfb\x71\x43\x02\x3d\x81\x08\x97\x04\xe5\xc6\xa0\x30\xe8\x73\x43\xb2\xc9\x99\x0a\x35\xf5\x9a\x96\x43\xa5\xac\x68\x44\x42\xd2\x3c\xde\x9a\x91\xa4\x32\xc9\x5b\x94\xa5\x5b\x68\xd1\xce\x9c\x2e\x1a\x72\xf5\x52\x98\xee\x25\x97\x6a\x6a\xd0\xa9\x20\xd0\x2b\xf8\x5e\x96\x2c\x84\x07\xb3\x56\xad\x56\xbb\xf3\xdb\xe3\x27\xdd\xa3\xaa\xc1\x68\xb3\x0c\x54\x84\x12\x07\x52\xb4\x94\x32\x2e\xaf\x74\x0f\x0a\x25\xb0\x82\x98\x7d\x22\x79\xd9\x9f\xce\x5c\xf5\xaf\xc8\xa0\xee\x83\x84\xf4\x3d\x93\xf4\x3c\xa7\x5e\xb2\x79\x90\xec\xcf\xcc\x4b\x32\x99\xfe\xff\x63\x8e\x98\xcf\x0b\x9f\xcd\x8d\x24\xc3\x2e\xf1\x10\xe4\x68\x43\xf5\x3f\x64\xba\x82\xff\x8f\x4a\xb0\xdb\x45\xe3\xfc\x1e\x53\x80\x42\x65\xd1\x90\xa8\x3e\xac\x42\xa3\x01\xce\x7e\x33\x6d\x49\xcc\xbf\x14\x81\x44\xf4\xbf\xfe\x10\xd1\xb3\x45\xfc\x37\x12\x7c\x19\x3b\x21\xcd\x01\xf4\xc4\x29\x28\x28\x59\xb0\x17\x94\x44\x50\x95\x6f\x2f\x0a\x71\x33\x49\xc7\x25\xa8\x14\x31\x58\x1b\x2f\x87\x3f\xd7\x78\xf9\x9f\xc6\x7e\xf3\x47\xb0\x9f\x47\x5e\xfe\x8b\xb8\xf6\xbf\x7e\x04\xd7\x92\x38\xcf\x7f\x11\xe3\xfe\xdc\xce\xb8\xb9\xf2\xce\x5a\x29\xae\x39\x0f\xb7\x2c\xe3\xf8\xa7\xa1\xfa\x6f\x3b\xa8\x26\xac\x16\x5b\xe9\x72\x6f\x75\x3f\xf2\x69\x38\x0c\xdc\x9f\x9e\xf4\xab\x9f\xc7\xbc\x97\xfa\x39\xa2\x59\xe2\xd2\x14\xb9\x10\x39\xef\x66\x97\x1f\x58\xfb\x79\x08\x87\xef\xe0\x24\xcb\x08\x94\x01\x9f\x4a\x32\x56\xf4\x4c\x91\xd8\x80\x07\xd9\xb6\x5f\xe6\x17\x6a\xe1\x3d\x27\xbe\x7a\xe0\xc4\xd7\x25\x84\x63\x7c\xa2\xd8\x2b\xb5\xea\x28\xa5\xba\xc8\xa6\xca\x05\xd6\x72\xc8\x5e\x37\xc8\x6a\x4d\x3f\x8a\x01\xb7\x5b\xf1\xeb\xff\x35\xf2\x4f\xa2\xe0\x8c\x76\x2d\xdf\xa6\x44\x82\xf2\x65\x33\x7b\xbd\x9d\xba\x8c\x0d\x12\x9c\x3e\x86\x83\xda\x01\xe0\x49\xfa\xc1\x4d\xc1\xfb\x27\xdb\x50\xdd\x5b\x77\xc2\x75\xcd\xb1\xd7\xbb\xc6\x70\xe3\xe7\x91\xe1\x2e\xe3\xa5\xc6\xa6\x9c\x41\x3d\xc9\x5f\x19\x88\xcc\x95\x9d\xfa\xfa\x70\x1b\xad\xa5\x2f\x3b\xc1\xb6\x79\xe6\xe7\x63\x51\x61\xbc\xe4\xde\xf1\xc2\x0a\xe8\xd9\x01\x0f\x9c\x38\x1f\x31\x2e\x55\xee\x7a\x56\xb9\x15\x48\xc5\xec\xfa\x32\xf6\x64\xd2\xcf\xca\x9b\x17\x04\xc3\xbc\x45\xc6\xcd\x50\x23\x8b\x31\x8d\x98\x52\xed\x1f\x43\xcc\x85\x74\x73\x1a\xb3\x2d\xd8\xa8\xc6\xde\xf4\xd8\xac\x0c\x92\x6a\x07\x48\x10\x7f\x91\x76\xc4\xee\x90\x54\xcc\x86\x90\xd7\x87\xa0\x9f\x2f\xa0\xc2\x9b\xe2\x21\x3d\xdb\xc0\xf1\x63\x7c\x92\xcb\x32\x60\x31\x8d\x30\x18\x5c\x0e\x8d\xdb\xd5\xd0\x77\x65\x3d\x84\x89\xbc\xca\xd4\xd1\xbb\xd4\xd1\x89\x72\x9d\xe8\xfa\x1c\x4b\x84\x33\x7b\x57\x71\xd2\x52\x62\x50\xaa\xe2\xa9\xce\xe4\x36\x86\xbf\x05\x75\x79\xf9\xe4\xde\xc8\xfe\x2a\xfa\x17\x29\x9e\x3f\x88\x33\x5b\x95\xe8\x4b\xc5\xae\x6d\xda\x14\x73\xee\x27\xe1\x8c\xc6\x9a\x75\x14\x3a\x24\x8e\xb3\xfc\x30\x80\x9f\xb9\x80\x3b\x14\x95\xc2\x01\x9b\x52\x1b\x8b\x55\x1e\xff\x9f\xe4\x20\x42\x3a\x24\xc5\x06\x48\x0f\x6a\xbc\x4e\x9a\xd0\x97\xb4\x49\x32\x07\x69\x54\x87\x43\x51\x7e\x98\x03\x95\x6e\x67\x68\xa0\xb7\xd8\x80\x92\x0a\xc2\x28\xf6\xb2\x1d\xe7\x70\xc7\x13\x2b\x74\x66\x8b\x27\x68\x0c\x95\x77\xa4\xef\x2f\x5a\x4b\x13\x50\x72\x63\x9a\xca\x7e\xcc\x05\x4f\xee\xcc\x8e\x2e\xad\xce\xf3\x8f\x34\x7b\x4e\x93\x38\x88\x06\x92\x84\x43\xe6\xf3\xa5\x88\x17\x1c\x20\x20\x39\xf7\x34\xcb\xa3\x42\xe7\xc0\x34\xaf\xae\xe4\x9c\xc8\x50\x4c\x5b\x95\x3b\x13\xe2\x8c\x63\x3c\xe2\x61\xfe\x91\x92\xaa\x91\x60\x5f\xec\x33\x38\xcb\xb4\x46\xba\x67\x9d\xa4\xce\x26\x9b\xd7\x49\xd7\x66\x82\x8f\xc9\xca\xbf\x0d\xf4\x9d\x80\x14\x20\xc9\x65\xd1\x06\x74\xa9\x2b\xb6\x17\x26\x92\xc8\xf4\x6a\xbf\x80\x79\x5e\x89\xe0\xfa\x3a\x57\x0b\xdf\x0c\xd7\x12\x00\x92\xfe\xca\xbb\x33\x4d\x21\x52\x67\x69\x47\x55\x03\xe9\xd0\xd2\xfb\x97\x05\xce\x60\x62\x44\xf8\xc6\x6d\x72\x7b\x5d\xdb\xda\xb4\x90\x79\xe5\xb0\x4c\x6b\x7b\x86\x8a\xea\x4c\xe9\xa6\x25\xa7\xbe\x5a\x9e\x91\xb2\xa3\x28\xff\x78\xfe\xff\xda\xf6\x22\xe5\x50\x6f\x06\x32\x59\x49\x17\x25\xef\x78\x0b\xac\x2a\xd6\xad\x7b\xbe\x2e\x93\x2c\xeb\x59\xd3\x2b\xeb\xfa\xde\xaf\xca\xe4\x00\x69\x22\x17\x50\xc5\x45\xab\x68\xe1\xbe\xeb\x5d\x16\x99\x54\xab\xb2\x54\x1b\xa0\x96\x01\x9b\x60\x6d\x3b\xef\x6b\xf9\x40\x43\x6e\x9a\x12\xd0\x64\xc2\xa8\x3c\x75\xa8\xe0\x1b\x45\x6a\x7a\xfd\xf6\xaf\x56\x42\x41\x8a\xac\x96\xce\x9a\x6e\xc8\x6f\xcb\xb2\xd5\x51\x3b\x16\x13\xa9\x38\x35\x09\xbf\x7e\x99\xc1\x16\x6b\x16\xa1\x5b\xf6\xf5\x4c\xd4\x92\x00\xb7\xd4\xf1\x5f\x26\xbb\x7f\x11\x6e\x30\xc2\xf8\xa9\x94\xe4\x7a\x92\xc5\x8b\x75\xaf\xac\xcc\x9b\x25\xc9\x83\x76\xc1\x2b\x27\xc9\xc9\x50\x28\x2b\xac\x67\x40\x3b\x2f\x2b\xd0\xcf\x62\x4d\x74\x49\x76\x29\xaf\x64\x5a\x9d\xf2\x4e\x85\xe4\xcc\x4d\x29\x6b\xca\xbe\x1b\xca\x3b\xbd\x21\x77\xcc\xa7\x90\xdd\xf2\x0a\x96\x61\xe1\x71\xab\xd5\x3f\xab\xdc\xc5\xe0\xf5\xc2\x08\xc4\x3e\x23\xde\x2b\x7c\x64\xf6\x51\xbc\x9d\x60\xa9\x92\x2d\xcd\x62\xd8\xce\x78\x09\xae\xfe\x39\xcf\xe7\xac\x00\x40\x98\x67\xd1\xbd\x64\x54\x2e\x01\x28\x01\x80\xaf\x52\x06\x2e\x58\x8c\x9e\x22\xa9\x95\x4a\x4e\x6f\xb9\x3d\x1d\xf4\x3e\xe2\xcc\x0e\xdb\xa2\x83\x95\xe4\xf9\xbc\xfc\x9b\xae\x76\x74\xa3\xbd\x1e\x12\xa1\xaf\x54\xad\x4a\x5d\xc5\xf3\x6c\x59\x55\x1e\x03\xe4\x3a\x52\x2d\x3a\x8e\xad\x64\x2b\x58\x9c\x58\xbb\x59\x25\x25\x98\xfb\xc1\x8c\xb3\x96\x7a\xc2\x7a\xc8\xfb\x41\xca\x29\x34\x65\xc9\x17\xdf\x2d\x24\xc3\x59\xc1\x7e\x1b\x0d\x70\x76\xdb\xde\x22\x38\x01\x26\x71\x29\x29\x11\x45\x14\xb0\x4a\xa5\xc8\x6b\x58\x30\x69\x5d\x05\x9b\x55\xde\x63\xf8\x56\x54\xc0\x8e\x4d\xfd\xa2\xe8\x0e\x0f\x8d\x65\x34\x05\x67\xb8\x6a\xee\xa5\x1e\xc4\x65\xed\x5f\x21\x25\x16\x9a\x77\xbc\x6c\x5e\xe3\xb5\x50\xbc\x62\x90\x52\x85\xab\x39\xc3\xf9\x80\xc1\x28\xce\x44\x4c\xfb\xac\x89\x31\xc8\xea\x1a\x60\xd5\xeb\x4a\x87\x85\x2c\x54\x9a\x0a\x1c\x73\x4d\x32\x6b\x5c\x31\x56\x23\x42\x71\xe8\x29\x46\x35\xfd\x68\x9e\x6e\x52\xb7\x7e\x69\x99\x81\xc4\x4b\xe6\xcb\xe2\x7f\xfe\xb6\x19\x14\x0f\x57\xf1\xfe\x59\x44\x6e\xf9\x6e\x97\x5a\x31\x3d\x2c\x2a\x6f\xc4\x31\x4d\xa9\x68\x2e\xf3\x68\xad\xae\x1e\x6d\x15\x24\x09\x89\x7c\x15\xf3\x80\xd7\x94\xdf\x63\xe3\x28\xfe\xa7\x07\x41\xfe\x08\x6a\x14\x50\x0f\x3e\x5d\x35\xaf\xb3\xae\x6d\x81\x31\x33\x72\x33\xdd\xe7\x9c\x12\xa1\x42\xeb\x0e\x13\xa7\x3c\x85\xc8\x8f\x86\x96\x0d\x71\xb6\x29\xb6\x7d\x80\xeb\x21\xc9\xb7\x42\xcb\xcf\x68\x0f\xb4\x92\x02\x36\xe5\xf5\xa0\x0c\xc9\xba\x01\x81\x6a\x9e\x59\x1d\xee\xcc\xf2\x8f\x9c\xab\xab\x61\x5e\x14\x6f\xe6\x29\xe7\x78\x91\x3c\xfb\xbc\xa7\x9e\x84\xce\x1f\x39\x7c\x12\x93\xaf\x92\xf1\xc2\xf4\xb8\xca\xec\xf1\xb2\x0d\x6e\x87\xb5\x7c\x40\xfe\x60\x9e\xae\x82\xb4\x06\xe9\x37\x2a\xe5\xc4\xcb\xcb\xf9\x6b\xac\xb2\x9c\xfb\x12\xbc\x07\xf1\x44\x55\x43\xf1\x44\x7c\x62\xb2\x97\x0c\x09\x5e\x9e\x7e\x22\x13\xbf\x8d\xc9\xbb\xe5\x9f\xbf\xec\x89\xef\x60\x0a\x6e\xe1\x59\xf4\x3d\x7e\x62\x8a\x20\x15\x4f\xce\xef\xf1\x93\x17\x24\xb7\xe4\x37\x2e\x23\xb2\xae\x54\xd2\xfc\xf2\xa5\x1d\xf5\xa9\xf0\x15\xeb\x72\xe2\xf3\xe0\x69\x0f\xa4\x2c\x78\x3c\xa2\xe8\x05\x45\x29\x9a\xe4\x34\x5e\x01\xa1\xe8\x35\x5a\xe5\x65\x46\x94\xbc\xb7\x80\x17\x84\x8e\xf1\x13\xe3\xb5\x03\x7b\x43\x43\xc7\x0f\x63\x72\x80\xd6\x2e\xf0\xfc\xb4\xc3\xbe\xeb\xe6\xab\xc9\x81\xab\x68\x51\xf2\xf0\x82\xad\x7b\x98\x3e\x1d\xfc\xf3\xe0\x9f\x07\x07\x06\x1c\x54\xab\xec\xf7\x5f\xff\x62\xbf\xb5\x3a\xfb\xfd\xf4\x99\xfd\x5e\x5d\x1f\x7c\x56\x5a\x9f\x93\x0f\xbe\x17\x28\xed\x73\x75\x53\xc6\x85\xc1\x64\x13\x90\x5a\x64\xc0\x6d\xc2\x36\x36\x61\x97\x10\x55\xc0\x3e\x7d\x7d\xc1\x1c\x03\x4f\x1c\xe0\x98\xa1\x44\xb1\x27\xde\x02\x22\xfe\xaa\x06\x8a\x4d\xaf\x78\xe5\x5d\x1b\xd0\x2a\xc8\x0a\x10\xcb\xc6\x4d\x74\xe6\x05\x4c\x9f\x6f\x1b\xcf\x37\x8b\x63\x76\x53\xbb\x6d\x0c\x36\x51\x1c\x46\x8d\x37\x4a\x70\x4d\xf4\x24\x3a\x11\xed\x0c\x48\xea\xfe\xfd\x90\xef\x8a\xde\x0f\x0b\xf6\x77\x7b\xfc\xdc\x76\xde\xe3\x91\x31\x35\x9c\x60\xf3\x3e\xc1\xed\x31\xef\x65\xe2\xdd\x2c\x69\x59\xa5\x82\xe3\xde\xd4\x95\xb4\x20\x20\x45\x18\x8f\xaa\xc4\xcf\xae\x8d\xe2\xd7\x61\x84\x2f\x69\xd6\xca\xe9\x33\xc5\x04\xb9\xb5\xc6\x76\x0e\x30\x08\xfb\x9e\x54\x57\xf2\xda\xfc\x6e\x61\x17\x7d\x95\xee\x0b\x85\xad\xf0\xaa\xa7\x8c\x7d\x01\xa7\x2e\x3f\xcb\xb7\x17\xfb\x0e\x4b\x89\x37\x4d\x3c\x85\xb7\x6a\x56\x61\x49\x22\x02\x1e\xbe\xbd\xec\x92\x88\x2c\x48\x20\xbe\x3d\xbf\x0e\xf1\x20\x5e\xf6\x20\x01\x79\x16\x3a\xe2\x30\x5f\x2f\xc6\xa1\xba\xb2\xe5\x77\xb4\x56\xb6\x9b\x77\xfe\x4c\x13\x3e\x2c\x49\x20\xbe\xe3\x41\xbd\xe0\x06\x6e\xf0\x2d\x69\xfc\x80\x3b\x0d\xc1\xdf\xd8\x45\x8d\x46\x14\x3f\xd4\x8a\x55\xe6\x44\x20\x16\x31\xd4\x5c\x98\x13\xc7\xde\xc4\x1c\xc7\xc4\x0c\xf0\x8f\x60\xc4\x60\x43\x10\x06\x09\xea\xbc\xa3\xbc\x6a\xa3\x28\x46\x3c\xf0\x61\xaa\xc4\x19\x5b\xc7\x52\xf9\x20\x39\x23\x8b\x7b\x8e\x91\xec\x75\x62\x90\x13\x92\xd6\x11\xe1\x28\x0a\x73\x58\xfb\x36\x06\x6e\x4f\xbd\xd4\xaa\x32\x13\x0b\xbd\x2d\xc3\x50\xad\x1f\x90\x3b\xba\xb3\xc1\xa1\xa5\x36\xf9\xc0\xcc\xfc\x0b\x42\xcf\x88\xed\x7a\xc1\xcd\xeb\xa5\x47\x09\x37\x4e\x52\xef\x8b\x8d\xb3\x36\x51\xe8\xe6\x39\xc1\x5a\x1b\xb7\x6a\x83\xd2\x91\xcb\x18\x9c\xd0\xb0\xbd\x79\xb9\x7d\xd5\x45\x57\x6a\x63\x79\xb5\x99\x3d\x2f\xad\xb2\x45\x57\x0f\xfe\x19\x1c\x30\xdf\xee\x43\x41\x5e\xc7\xed\x31\x06\xda\xc6\x8b\xb3\xad\xfd\xef\x56\xdf\xdc\xa1\x21\xbb\xb4\x58\x75\x3e\x71\xb1\x9b\x53\xeb\x74\xee\xf9\x91\x73\xf6\x3d\x14\x1f\xbe\xc5\xc4\x2b\xcf\x71\x29\x19\x31\xf7\x9f\x51\x6e\x8f\x4f\x88\x4f\x68\x4e\x9a\x3b\x99\xff\xff\x02\x00\x00\xff\xff\x27\x06\x53\xaa\xbb\x88\x00\x00") - -func runtimePluginsAutocloseAutocloseLuaBytes() ([]byte, error) { - return bindataRead( - _runtimePluginsAutocloseAutocloseLua, - "runtime/plugins/autoclose/autoclose.lua", - ) -} - -func runtimePluginsAutocloseAutocloseLua() (*asset, error) { - bytes, err := runtimePluginsAutocloseAutocloseLuaBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/plugins/autoclose/autoclose.lua", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimePluginsFtoptionsFtoptionsLua = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x51\xb1\x6a\xc3\x30\x10\xdd\xf5\x15\x87\xa6\x04\x4a\x86\x76\xf6\xd0\x2e\x1d\x33\x04\xba\x94\x0e\xaa\x7d\x17\x1f\x95\xef\x84\x75\x6e\xf0\xdf\x17\x29\x4e\x42\x29\x0e\xf4\xa6\xd3\x7b\x4f\xef\xe9\x21\x26\x78\x45\xdb\x27\x63\x95\x8d\x27\xd3\xba\x65\xbf\x85\xa6\x01\xe1\x08\xd6\xa3\x38\x00\x80\xe7\xae\xfb\x2b\x7b\x00\x1b\x27\xdc\x3a\x94\xce\x39\x9a\xa4\x2d\x30\xa8\xbc\x31\x9e\xf6\x09\x65\xf3\xcd\x78\xda\xd6\xfb\x4c\x20\x6a\x6b\x69\xd7\x98\x32\x23\xda\x34\x9e\x8f\xd5\xb8\x2c\x51\xdb\x10\x81\x0c\x1a\x28\x9e\xbb\x97\x89\x76\x07\x34\x63\x39\xe6\x77\x4f\x1c\xd1\xe6\x84\xfe\xc3\x5d\xc2\x8a\xb4\x01\x7f\x54\x0f\x3a\x56\x70\x41\x86\xf0\x85\x45\xef\x7f\x87\x1e\x6e\x0f\xb3\xf0\x99\x4d\x73\x0a\x2d\x96\x8a\x5e\x89\xfc\xb9\x04\xc6\x8c\x37\x6f\xe2\xdc\x5f\xdd\x97\x59\xa8\x34\x5b\xaf\x72\x97\x7c\xbc\xcb\x3e\xad\xb0\x73\x18\xe2\x0a\x25\x3c\xfc\xa3\x93\x5c\x2a\x49\x57\xbf\xef\x27\x00\x00\xff\xff\xe7\xc7\xa0\xb2\x0a\x02\x00\x00") - -func runtimePluginsFtoptionsFtoptionsLuaBytes() ([]byte, error) { - return bindataRead( - _runtimePluginsFtoptionsFtoptionsLua, - "runtime/plugins/ftoptions/ftoptions.lua", - ) -} - -func runtimePluginsFtoptionsFtoptionsLua() (*asset, error) { - bytes, err := runtimePluginsFtoptionsFtoptionsLuaBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/plugins/ftoptions/ftoptions.lua", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimePluginsLinterLinterLua = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x57\xdb\x8e\xdb\x36\x13\xbe\xf7\x53\x0c\x88\x5f\x80\xb4\x96\x94\xbf\x41\xaf\x0c\x08\x45\xba\x6d\x02\x14\x39\x14\xd8\xb4\xbd\xe8\x36\x05\x2d\x8d\x6c\x66\x29\x52\x20\x29\x1f\x60\xe4\xdd\x0b\x92\xb2\x2c\xc9\xf4\xf6\x80\x2c\xb0\xcb\x11\x39\x9c\xef\x9b\x03\xc9\x59\x56\xc3\x1b\x34\x1f\x5a\xc3\xa4\x88\x09\x67\xc2\xa0\x22\x09\x14\x05\x08\xc6\xc1\x6c\x51\x2c\x00\x00\x5e\x55\xd5\x4c\x27\x05\xa3\x3a\x4c\x16\x28\xaa\xc5\xe2\x1d\x7d\xc2\x7b\xd9\x34\x54\x54\x5e\x81\xa4\xd0\x2b\xe6\x76\xe8\xd7\x48\x0a\xff\x4f\x16\x8b\xba\x13\xa5\xb5\x05\xa3\xa5\x38\x71\x38\xf7\x9d\xfa\x95\xe1\x3e\x4e\x56\x0f\x74\x87\x71\x4d\xb9\x46\xbf\xa2\x3a\xf1\xd6\x19\x8c\x7b\xcc\xc1\xca\x78\xc5\x6a\x72\x59\x52\x0e\xb5\x81\xe2\x62\x2e\xff\xbe\xab\x57\xaf\x19\xc7\x8f\xc7\x16\xa7\x7a\x8c\xe3\x5c\x33\xff\x99\x9a\xed\x48\xa7\x62\x0a\x0a\xf8\x81\x29\x2c\x8d\x54\xc7\xf7\xb4\xc1\xd8\xee\xf3\x76\x58\x0d\x1f\x1e\x6c\xc4\xc8\x9e\x89\x4a\xee\x35\xb9\xc4\xcd\xfe\x54\xb8\x13\x1d\xe7\x50\x00\x79\xff\xcb\x5b\xe2\xe6\x91\x6b\x0c\x29\xbc\xa8\x70\xf7\xc2\x7e\xf4\x6a\xd6\xd1\x1e\xc3\x3a\x54\x00\x29\x67\xd6\x6d\x0c\x63\xb2\x29\x4b\x1b\x72\x3f\x9c\x48\x56\xeb\xa3\x30\xf4\x90\x49\xc1\x8f\x76\x21\xfb\x8d\x72\xee\x05\x3c\x18\x45\x49\xea\x1c\xff\x92\x02\x89\xea\x55\xc4\x57\x51\xb5\x5c\xe5\xcb\x15\x44\x0d\x49\x06\x86\x23\xd4\xe5\xf2\x3f\xe0\x92\x4c\x9b\xaa\x28\x97\xcb\x6f\xbe\xfd\x1a\x24\xaa\x20\x85\xaa\xb1\x75\xd5\x0f\x27\x92\x95\x92\x4b\x55\xc8\xba\x76\x48\x32\x73\xc3\xde\xff\x65\x6e\x28\x27\xc0\x51\x1c\xf1\x28\x79\x0e\x77\x23\xc3\xbe\xcb\x75\xc7\xb8\x03\xdf\x48\x87\x3d\x7c\x67\xf6\xbb\x4f\xeb\xc5\xbd\x8b\xfd\xb1\x91\xf3\x71\x19\xa4\xd3\x75\x50\x6e\x31\xfb\x4c\x77\x34\xc8\xcd\x2e\xb8\xcc\x9c\x85\x13\xc9\x2c\xb3\x8a\xa9\x79\xd0\x01\x95\x92\xea\x59\x08\x5d\x2a\xd6\x9a\x30\x90\xde\xf6\xfc\x07\x69\xcc\xdf\x6a\x21\x44\x3c\xcd\x97\xe9\x15\x82\x36\x8a\x89\x4d\xde\x50\x53\x6e\xe3\xda\xb8\x2b\xc3\xa0\xa2\x06\x49\x12\xc2\x1a\x56\xbd\x66\x9f\xee\xeb\x2a\x0a\x3b\xc2\xbb\x70\xa8\x78\x47\xcb\x2d\x96\x4f\xce\xea\x45\x3e\x91\x2c\x13\xd2\x57\x53\xb0\x50\x6f\x05\x4c\xb0\x26\x88\x63\xe7\x53\xe8\x87\x13\x19\x30\xb3\x8c\x33\x6d\x5e\x77\x9c\xdb\x5b\x47\xfb\x29\x6d\x2a\xd9\x19\x2f\xdb\xb0\xea\x95\x2f\xe8\x0b\x8d\x3c\xe2\x29\x44\xd5\x32\xbf\xc5\xe3\xc3\xfa\x33\x96\x86\xed\x30\xbb\x0f\xf2\x29\x39\x15\x1b\x8b\x70\x28\x55\x27\x3c\xa7\xf3\xd4\x57\xbf\x3f\xda\xa3\xd9\x4a\x11\xe4\xd1\x1e\x6b\x4e\x9f\xd0\x39\x3e\x92\x67\xa7\x20\xcf\x56\xdf\x85\xce\x4f\x73\x6c\x1d\xc1\x7e\x9c\xed\x0a\xed\x68\x8f\xe7\x13\x37\x48\x36\xd7\xb2\x33\x6d\x67\xb2\x5a\xaa\x86\x9a\xa2\xa5\x4a\x23\x5d\x73\xf4\x29\x50\xd8\x4a\x65\x74\x21\xe4\x95\xe3\xb7\x3c\xd6\x5b\xe4\x3c\xe8\xb0\xde\xd6\x8d\xc3\x3f\x0b\xff\xe2\xc0\xeb\x3d\xab\x0d\x01\x2a\xaa\xf3\x9b\x53\x51\xb5\x67\xe1\xc8\xea\x3d\x33\x75\x39\x4d\xb1\x33\x10\x38\x33\xcf\xa7\xef\x1a\x96\x33\xd1\x1d\xfe\x06\x75\xc0\x0a\x38\xf8\x0c\xd8\x91\x36\xe1\xc0\xb9\x85\xd4\x2b\x8c\x32\xe7\x53\xe6\x12\x4a\x95\xee\x93\x16\x42\x1c\x01\x8a\x6a\xd6\x44\x48\xe1\x1a\x8e\x1d\xc3\xfd\xf0\xaa\x87\x1a\xa3\x09\xad\x79\xe7\x31\x79\xd5\x2f\xad\xcc\x3d\x47\xaa\x5e\x71\xfe\xa6\x33\x06\xd5\x3b\xd4\x9a\x6e\x50\xc7\xb7\xa8\x38\x67\x3d\x60\x0a\x65\x53\xa5\x40\xd5\x46\xa7\xfe\x9e\xf6\xce\xce\x9b\x25\x87\x30\x33\xef\x2d\x24\xbe\x7f\xf8\x49\xae\x1f\x5a\xba\x17\xf1\xc8\x1e\x21\xfd\x6f\xdf\xa8\x49\xf1\xe3\xc1\xdd\xaa\x67\xec\x09\xe0\x3c\x5c\x56\x37\xf6\x87\xe6\xc6\x0e\x18\xfa\x27\xfb\x08\x68\x28\x40\xb7\x7c\xb4\x89\x3c\x0a\xd2\xd3\xf3\x6a\x0a\x37\x78\x80\x62\x6c\x65\xb5\xd1\xdd\x3a\x26\x51\xe4\x5e\xf3\x38\xcf\xb3\x84\x24\xc3\xa4\xab\x86\x38\xaa\x96\xe3\xc9\xc6\x6b\xda\x39\x67\xbb\x96\x0a\xfe\x4c\xdd\x3b\xc4\x04\xb0\x96\x32\xe5\x82\x83\x3a\x81\x4a\x0e\xe9\xca\x32\xf8\xa8\x58\x03\xfb\x2d\x33\xa8\x5b\x5a\xe2\xb8\xfa\x6c\x8b\x68\x87\x95\x7f\xac\xc8\xa7\x48\xdf\x59\x8c\x48\xdf\xfd\x6f\x74\xc3\x5c\x1e\xb5\x9a\x89\xca\xa1\xa4\xde\xad\x59\xe5\xc0\xa4\xff\x74\x01\xc4\x14\x1a\xbd\xb1\x51\x1a\x3f\x8b\x63\x13\x93\xdd\xac\x86\x35\xd5\x28\x6c\x2f\x7a\xdd\xbc\xba\x0e\x7e\x58\x77\xbd\xea\x35\x81\x69\x0d\x4d\xca\x67\xa8\x3f\x23\x45\xd7\xac\x51\x39\x22\x89\xa3\x98\xc2\xcb\x29\x15\x5b\x1a\x73\xf9\xba\xac\x7d\xf2\xb5\x51\x29\x68\x6c\x93\x49\xde\x75\xc7\x6d\xbb\x7e\xfa\x12\xa8\x86\x98\xc4\xbf\x7f\x8a\xf4\x1f\x2e\xc9\xbe\x2a\xe2\xc1\x80\x4d\x2e\xd2\x72\x6b\x53\xab\x8d\x5a\x6d\x7c\xd4\xfa\x90\x8f\xd2\x6b\xec\xbd\x90\x33\xa1\x51\x99\xd8\x03\xa6\x6e\xe7\xe5\x14\xba\x13\x8d\xa6\x53\xa2\x67\x34\x73\x60\x1a\xce\x11\x53\x8d\xad\xeb\xdd\xc9\x3f\xfa\x77\xa0\xd7\x7e\x7c\x24\x13\x64\x6f\xca\xda\xbf\x94\x80\x2b\x69\x5f\x20\x24\xce\xef\x08\xe4\xb9\xdb\x9e\xe7\x40\x92\x38\xbf\x4b\x6c\xa9\x47\x2f\xfb\x02\xec\xb9\x5b\x13\x8e\xf9\x5f\x01\x00\x00\xff\xff\x43\x20\x8f\x97\xdb\x0d\x00\x00") - -func runtimePluginsLinterLinterLuaBytes() ([]byte, error) { - return bindataRead( - _runtimePluginsLinterLinterLua, - "runtime/plugins/linter/linter.lua", - ) -} - -func runtimePluginsLinterLinterLua() (*asset, error) { - bytes, err := runtimePluginsLinterLinterLuaBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/plugins/linter/linter.lua", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimePluginsLiterateReadmeMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x64\xcd\x3d\x4e\x05\x31\x0c\xc4\xf1\x3e\xa7\x18\x89\x06\x9a\x4d\xcf\x19\xa0\x82\x0e\x21\x3d\xbf\xc4\x9b\x58\x78\x93\xc8\x71\x84\x96\xd3\x23\xbe\x2a\xea\xff\x6f\x34\x37\x78\x10\x67\x23\x67\x3c\x4a\xb2\x1e\xc2\xd3\x1a\xa3\x9b\x63\xef\x06\x63\xca\xd2\x0a\x2e\x9b\x8a\x5f\xb0\x8b\xf2\xc4\x6e\xfd\xc0\xcb\xc7\xc9\x59\xb2\x50\xfc\xdb\xbf\xde\x56\xf7\x31\xef\x63\x2c\xe2\x75\x5d\xb7\xd4\x8f\xf8\x4f\xdd\x6d\x21\x3c\x57\x99\x18\xba\x8a\x34\xbc\x8b\x2a\x68\x79\x3f\xc8\x25\x91\xea\x89\xcc\xce\xc9\xe1\x95\xbf\x0f\xfd\x1c\x0c\x6a\x19\x55\x4a\x55\x29\xf5\x27\xa5\x6e\xf6\xc5\x94\x5a\x59\x54\x18\xd2\xa6\x64\xfe\x6d\x99\x71\xd5\x9e\xde\xe6\x16\x3e\x03\x00\x00\xff\xff\x46\x7f\x67\x35\xe2\x00\x00\x00") - -func runtimePluginsLiterateReadmeMdBytes() ([]byte, error) { - return bindataRead( - _runtimePluginsLiterateReadmeMd, - "runtime/plugins/literate/README.md", - ) -} - -func runtimePluginsLiterateReadmeMd() (*asset, error) { - bytes, err := runtimePluginsLiterateReadmeMdBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/plugins/literate/README.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimePluginsLiterateLiterateLua = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x56\xdf\x6f\xe2\x38\x10\x7e\xe7\xaf\x18\xf9\xee\xd4\xe4\x9a\x44\xe5\x1e\x91\x22\xe5\x4e\xba\x9e\x4e\xda\x6d\x57\xad\xd4\x17\xa0\xc8\x8d\x27\x60\xe1\xd8\x91\xe3\x94\x45\xa5\xff\xfb\x6a\xe2\x00\x21\xbb\xab\x85\xe6\x05\x7b\xf2\xcd\xf7\xcd\xaf\xd8\xc4\x31\x3c\xfd\xfb\xf0\xf8\xff\xfd\x1d\xa4\xc0\xc6\xc9\x4d\x72\xc3\x46\xb2\x80\xff\xd0\xdd\x57\x4e\x1a\x1d\x30\x25\x1d\x5a\xee\x90\x85\x90\xa6\xa0\xa5\x02\xb7\x42\x3d\x02\x00\xf8\x5b\x88\xef\x50\x11\x38\xdb\x60\x38\x42\x2d\x46\xa3\xa2\xd1\x39\xbd\x87\xda\x71\xeb\xea\x8d\x74\xab\xa0\x76\x36\xf2\xfb\x90\x48\x2c\xba\xc6\x12\xc0\x4a\xbd\x4c\xea\xe6\xa5\x05\x8c\xa3\xce\xa0\x50\x07\x1e\x1c\xa6\x69\xbb\x18\x30\xa3\x16\x3d\x5e\xd4\xe2\xd1\xd9\x3e\xb1\xb7\xa4\xe9\xd5\x15\x18\x3b\x94\x89\x7b\x2a\x9d\x6b\x98\xa6\x7e\x35\xcc\xa0\x52\xd2\x05\x1e\x1f\x41\x8d\x55\x2b\xd2\x3e\xca\xe4\x5c\x91\x29\x82\x42\xa2\x12\x35\xa4\xb4\x23\x3d\x36\x61\x11\xbc\xbd\x0f\xa0\x15\x77\x0e\xad\x26\x98\xd7\x2f\x8c\x2d\xb9\x0b\x58\x30\x7d\xfe\xa3\x9e\x5f\x87\x6c\xa0\xe0\x61\x93\x25\xc5\xdd\x39\x47\xb0\x0f\x2d\xc8\xc3\x4e\x77\xfa\x9b\xff\xbd\x1e\xcf\x21\x85\x9c\x72\x3f\x72\x74\xf5\xf0\x88\x41\x72\x46\x3f\x49\xdc\xdc\x57\xa8\x83\x57\x89\x1b\xef\x24\x0b\xd0\xc6\xfd\x64\x14\x68\x06\x7a\x25\xee\x3b\x1c\x3a\x42\x54\xc9\x3f\x4d\x91\x7c\xe1\x6e\x15\x01\x4b\x94\x74\x9d\xeb\x20\xaa\x76\xdb\x86\x74\x2c\x52\x6e\x04\xba\x6d\x85\x34\x98\x8d\x5e\x6b\xb3\xd1\xac\x7d\x5d\x18\x0b\x32\x1d\x47\x07\xfa\xbb\xa6\xfc\x24\x35\xd6\x20\xcc\xa0\xd0\x4a\x6a\xf2\xdf\x23\x27\x04\x0b\x64\x3c\x3e\x56\x45\x16\xfd\xd9\x24\x7c\x04\x2c\x23\xed\x05\x89\x0f\xc3\xa5\xa7\x17\x98\x1f\x8a\xce\x0b\x58\x38\xfd\x6b\x7e\x02\x7d\xb1\xc8\xd7\x07\xcb\xbe\x4e\x83\x44\xeb\xad\x76\xfc\xeb\xad\x54\x6d\xaa\x3e\xc7\x13\x5b\x6f\x93\x24\xc0\x0a\xa9\x5a\xfd\x09\xec\xfb\x11\x33\x7a\x71\x88\x8b\x40\x33\xfd\x6b\x22\x81\x0e\x73\x37\x39\x07\xda\xd6\x5d\x2a\xd4\xbc\xc4\x09\xcc\xd8\x6c\x36\x9b\x51\x3b\x7f\x9f\x9d\xa5\x64\x1b\x85\xf5\xd9\x42\x31\x48\x9d\xab\x46\xb4\x4a\x25\xb7\x6b\x61\x36\xfa\x3c\x21\xef\x5e\x57\x98\x4b\xae\xc8\xfd\x39\xc8\xea\x5d\xe6\xa4\x53\xb8\x3b\xb6\x95\x96\x65\x89\xda\x75\xbb\x4e\x6f\x97\xe5\x2b\xae\x97\x87\xdf\x05\x7d\x40\x1f\x14\x0e\x32\x2e\xc4\x22\xaf\xeb\x5d\x66\x5e\xd1\x6e\xac\x74\xe8\xb7\xb9\x51\xc6\xd6\xf9\x0a\x4b\x1f\x47\x25\x15\xda\x5d\x86\xd6\x1a\xbb\xf0\x27\xc1\x2e\x7b\x31\x66\x7d\x91\xb4\xc0\x82\x37\xea\xfc\x6e\xfa\x63\x85\x5b\x47\xc1\xc6\x71\x9c\xfc\x79\x66\x2f\x7b\xd3\xdc\xb9\x5e\xe8\xa8\x64\x29\x5d\xbc\xb4\xa6\xa9\x88\x40\x0a\xd4\x4e\x16\x12\xed\x65\x34\x97\xcd\xd4\xfe\x39\xf6\xe8\x52\xcf\x93\x82\x65\xf4\x01\xbc\x5d\x16\xf0\xa0\x70\xc4\xf0\xfe\x31\x06\x9f\x3a\x4c\xe7\x97\x67\x7f\xf8\xb2\x7e\x7c\x64\xec\xaf\xf5\x87\x46\x3b\x59\x22\x91\xdc\x5a\x53\x7e\xc6\xd2\xd8\xed\xc9\x2d\xcf\xbc\x0c\xad\xf6\xd6\x64\xcb\x4b\x45\x57\xd7\x21\x00\x7f\xce\x3e\xa0\x32\x5c\x04\xfe\x3f\xc1\xb7\x00\x00\x00\xff\xff\x6b\x4a\xed\x64\x72\x08\x00\x00") - -func runtimePluginsLiterateLiterateLuaBytes() ([]byte, error) { - return bindataRead( - _runtimePluginsLiterateLiterateLua, - "runtime/plugins/literate/literate.lua", - ) -} - -func runtimePluginsLiterateLiterateLua() (*asset, error) { - bytes, err := runtimePluginsLiterateLiterateLuaBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/plugins/literate/literate.lua", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxLicense = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x5c\x91\x4f\xaf\xe2\x36\x14\xc5\xf7\xfe\x14\x47\x6c\x3a\x23\x45\xaf\x7f\x16\x5d\xbc\x9d\x5f\x62\xc0\x6a\xb0\x91\x63\x86\xd2\x9d\x49\x0c\x71\x15\x6c\x14\x9b\xbe\xe1\xdb\x57\x36\xcc\xbc\x69\x57\x91\xe2\x7b\xcf\x39\xbf\x73\x37\xae\x9f\xc3\x4f\x11\xf1\xee\x93\xf9\x8a\x93\x9b\x6c\x84\x99\x2d\x26\xd7\x5b\x1f\xed\x80\x9b\x1f\xec\x8c\x34\x5a\x6c\xb8\xc6\x82\x7d\xbd\x9a\xb4\x40\xfb\x78\x7e\x25\xa4\x0e\xd7\xfb\xec\xce\x63\xc2\xa7\xfe\x33\x7e\xfb\xe5\xd7\xdf\x5f\xf1\x97\xe9\x47\x33\xdf\x71\xb0\x83\x1b\x9c\xa9\x50\x87\x69\x72\x1e\x7b\x33\xcf\xd6\x57\xb0\x09\x66\x7a\x21\x64\x6b\xe7\x8b\x8b\xd1\x05\x0f\x17\x31\xda\xd9\x1e\xef\x38\xcf\xc6\x27\x3b\x54\x38\xcd\xd6\x22\x9c\x90\xb5\xce\xb6\x42\x0a\x30\xfe\x8e\xab\x9d\x63\xf0\x08\xc7\x64\x9c\x77\xfe\x4c\x0c\xfa\x70\xbd\xe7\xc9\x34\xba\x88\x18\x4e\xe9\x3d\x23\x18\x3f\xc0\xc4\x18\x7a\x67\x92\x1d\x30\x84\xfe\x76\xb1\x3e\x99\x94\xfd\x1e\xa4\x9f\xd2\x68\xc9\xa2\x7b\x6e\x2c\x3e\x17\x93\xc1\x9a\x09\xce\x17\xe6\x6f\x4f\x78\x77\x69\x0c\xb7\x84\xd9\xc6\x34\xbb\x3e\x6b\x54\x70\xbe\x9f\x6e\x43\xce\xf0\xed\x79\x72\x17\xf7\x74\xc8\xeb\xa5\x98\x98\x45\x6f\xd1\x56\x25\x67\x85\x4b\x18\xdc\x29\x7f\x6d\xc1\xba\xde\x8e\x93\x8b\x63\x45\x06\x97\xa5\x8f\xb7\x64\x2b\xc4\xfc\xb3\x54\x5c\x65\x8e\x9f\xc3\x8c\x68\xa7\x29\x2b\x38\x1b\x1f\xac\x1f\xe9\xca\x0c\x52\x20\xd7\x5c\x68\x7a\x56\x54\x7c\xdf\xc7\x70\xf9\x2f\x89\x8b\x38\xdd\x66\xef\xe2\x68\x87\x82\x1b\x10\x43\x71\xfc\xdb\xf6\x29\xab\xe4\xf1\x53\x98\xa6\xf0\xee\xfc\x19\x7d\xf0\x83\xcb\x44\xf1\x95\x10\x3d\x5a\x98\x63\xf8\xc7\x16\x96\xc7\xdd\x7d\x48\xae\x7f\xd4\x5d\x0e\x70\xfd\xb8\xea\xf3\x29\x8e\x66\x9a\x70\xb4\xe4\x51\x98\x1d\x72\xbd\xe6\x07\x9c\x39\xdb\xc7\x64\x7c\x72\x66\xc2\x35\xcc\xc5\xef\xff\x98\x2f\x84\xe8\x35\x43\x27\x97\x7a\x4f\x15\x03\xef\xb0\x55\xf2\x0b\x6f\x58\x83\x05\xed\xc0\xbb\x45\x85\x3d\xd7\x6b\xb9\xd3\xd8\x53\xa5\xa8\xd0\x07\xc8\x25\xa8\x38\xe0\x0f\x2e\x9a\x8a\xb0\x3f\xb7\x8a\x75\x1d\xa4\x02\xdf\x6c\x5b\xce\x9a\x0a\x5c\xd4\xed\xae\xe1\x62\x85\xb7\x9d\x86\x90\x1a\x2d\xdf\x70\xcd\x1a\x68\x89\x6c\xf8\x94\xe2\xac\x83\x5c\x92\x0d\x53\xf5\x9a\x0a\x4d\xdf\x78\xcb\xf5\xa1\xc2\x92\x6b\x91\x35\x97\x52\x81\x62\x4b\x95\xe6\xf5\xae\xa5\x0a\xdb\x9d\xda\xca\x8e\x81\x8a\x06\x42\x0a\x2e\x96\x8a\x8b\x15\xdb\x30\xa1\x5f\x08\x17\x10\x12\xec\x0b\x13\x1a\xdd\x9a\xb6\x6d\xb1\xa2\x3b\xbd\x96\xaa\xe4\xab\xe5\xf6\xa0\xf8\x6a\xad\xb1\x96\x6d\xc3\x54\x87\x37\x86\x96\xd3\xb7\x96\x3d\xac\xc4\x81\xd4\x2d\xe5\x9b\x0a\x0d\xdd\xd0\x15\x2b\x5b\x52\xaf\x99\x2a\x63\xcf\x74\xfb\x35\x2b\xbf\xb8\x00\x15\xa0\xb5\xe6\x52\xe4\x4e\x6a\x29\xb4\xa2\xb5\xae\x88\x96\x4a\x7f\x5f\xdd\xf3\x8e\x55\xa0\x8a\x77\xb9\x90\xa5\x92\x9b\x0a\xb9\x4e\xb9\x2c\x9d\x89\xbc\x27\xd8\x43\x25\x57\x9d\x53\x93\xef\x17\x91\xaa\x50\xec\x3a\xf6\x91\xa5\x61\xb4\xe5\x62\xd5\xe5\xe5\x1f\xcf\xf7\x42\xfe\x0d\x00\x00\xff\xff\x67\x82\x89\x6c\x7d\x04\x00\x00") - -func runtimeSyntaxLicenseBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxLicense, - "runtime/syntax/LICENSE", - ) -} - -func runtimeSyntaxLicense() (*asset, error) { - bytes, err := runtimeSyntaxLicenseBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/LICENSE", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxPowershellYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x58\x6f\x73\xdb\xb8\xd1\x7f\xaf\x4f\x81\x93\xf2\x3c\x91\x62\x4b\x4e\x3a\x9d\xce\x1c\x27\x8d\xcf\x91\xed\xd4\xad\x5d\x7b\x4c\xab\xc9\x54\xd4\x64\x40\x72\x25\xa2\x02\x01\x1e\xb0\xb4\xac\xcb\xa6\x9f\xbd\x03\x90\x92\x68\x49\x76\x3c\x37\x7d\x53\xcf\x98\x20\x17\xbb\x8b\xdf\x2e\xb0\x7f\xa0\x0e\xbb\xd1\x0b\x30\x61\x06\x52\x32\xbb\x54\xc8\x1f\x58\x26\x66\x99\x14\xb3\x0c\x85\x9a\xb1\xa9\x90\xc0\xa6\xda\xb0\x5c\x24\x46\xb3\x3e\xcb\x10\x0b\x1b\x1c\x1d\xf9\xef\x3e\xa4\x02\xb5\x19\xcc\x04\x66\x65\x3c\x10\xfa\xa8\xb5\x4f\x23\xf2\x39\x28\x36\x35\x3a\x0f\xd6\xf2\xb5\x48\xa2\xf3\xa3\x8d\xc0\xd1\x99\xd7\x17\x7a\xb1\x56\xcb\x2d\x8e\xcb\x02\x02\x56\x38\x16\xeb\x58\x5a\xad\x14\x10\x12\x0c\x5a\x8c\x31\x0f\x4f\xf1\x1c\x02\xd6\x8e\xa2\x41\x61\xbb\xef\x28\x7f\x47\xe9\xbb\xde\xab\xb6\x9f\xef\x64\xc0\x53\x30\x01\x6b\xb7\x5b\x2d\x53\x4a\xb0\x95\x5c\x87\xf5\x59\xa2\xf3\x1c\x14\x0e\x62\xa9\x93\x79\xc0\x36\x7f\x1d\xf6\xd1\x91\xd8\xb0\x62\xd8\x11\x48\x75\xd2\x64\x77\x93\xa7\x3a\x79\x92\x5d\x0a\x05\xc1\x63\xf6\x4b\xa1\xe0\x49\x7e\x9b\x41\xcc\xd5\x2c\x68\xf0\x87\x15\xc9\xcb\xb5\x1a\x02\xca\x22\x57\xf8\x18\x8c\x9f\x1c\xd6\x53\x3b\xbc\x83\x58\x6b\x19\xec\xe5\x65\x5d\x34\x25\x1c\xb2\x29\x97\x16\x7a\xbb\x92\x42\x21\x98\x42\x4b\x8e\x42\xab\x60\x77\x5e\x95\x79\xec\x5c\xbd\x4f\xb3\x2a\xa5\xdc\xa3\xd2\x16\x90\x08\x2e\x87\x19\x37\x7b\x14\x5a\x34\x62\xcb\x0f\x9e\xf2\x14\xe7\x20\x79\x4e\xcf\xa0\x34\xb5\xe1\x1d\x36\x32\x62\x97\xad\x54\x22\xd1\x29\x04\x1b\x07\x8b\x14\x14\x8a\xa9\x68\x5a\x55\x6b\x38\x91\x56\xb3\xd2\x42\xea\x83\x63\x5a\xaa\xc4\x79\xc5\xee\x11\x1d\x24\x92\x5b\x1b\xfc\x2e\xd1\x9c\x27\x46\x07\xfb\x66\xee\x9d\xa5\xeb\x89\xc2\x40\x61\xb6\x4f\x65\x35\x79\x53\x4d\x81\xb5\xda\x6c\xf3\x0f\x4e\x21\x2e\x67\x17\x0d\x2b\x7f\xc0\xbf\xe7\x68\xde\x65\xc0\x3a\x3f\x31\x8e\x0c\x33\x60\x31\xcc\x84\x52\x2e\x71\xe8\x29\xe3\x55\xf6\xc0\xcc\x4d\x82\x94\xd6\xb3\x68\xcb\x16\x8e\x62\x13\x23\x0a\x64\xd5\xa9\x32\x80\x60\x18\x7a\xbf\x6c\xcc\xaa\x8f\xc7\x3e\xb3\xc2\x6a\x8a\x75\x67\x52\xc7\x5c\x92\xd4\x09\x97\x54\x18\x71\xcf\x11\xa8\xd2\x4d\xa5\x15\x6a\x46\x0b\x6d\xe6\x53\xa9\x17\xbd\x86\x62\xe4\x08\x2e\xd8\xb6\x55\xbb\x23\x56\x4f\x59\xf6\x37\x58\x2e\xb4\x49\xed\xae\xd8\x20\x2e\x85\xc4\xaf\xa2\x11\x06\x9b\xb9\x14\x12\xc9\x4d\x15\x25\x55\x72\xd8\x10\x9e\xd3\x99\x03\xf2\xa0\x09\xe5\x0a\x90\xef\xe1\x33\x60\xc1\xdc\x43\x1a\xac\xf8\x6e\x6b\xc2\x46\xf9\x46\x6a\x99\xc7\x5a\x6e\x7d\x0e\x62\xc3\x93\x39\xa0\x6d\xee\xe3\xb7\xef\xdd\xde\x78\xc2\xb8\x4a\x99\xd5\x39\xa0\xc8\xc1\xb2\xf7\x1f\xb6\x45\x75\x01\x86\xa3\x7e\x14\xe6\xd7\x35\xcd\x6e\x33\x23\x9f\xed\x04\xce\xb9\x36\x2c\xc3\x5c\x32\xe4\x33\x7b\xc8\x78\xae\xdd\x61\xc1\xcc\x6d\x7f\x26\xd4\xac\x01\xde\xa5\xfe\x47\x1f\x83\x44\x4b\x09\x55\xb8\x34\x02\x6a\xb8\xa1\xb2\x2e\x37\x86\x2f\x0f\x59\xc6\x6d\x86\x3c\x96\x8d\x44\x56\x69\x70\x4f\xbb\x9d\xbe\x87\x77\x8e\xca\xba\xc3\x8f\x5a\xcb\x43\x36\x74\x09\xe9\x90\x01\x26\x83\x2d\xf1\x79\xe5\xe1\xad\x74\x7e\x31\x65\x4b\x5d\xb2\x85\x4b\x75\x7c\x75\x6a\x37\x75\xd4\xc7\x79\x2d\x69\x99\x14\x73\x60\xaf\xeb\x93\xfa\xfa\xb1\x7a\x8b\xda\xf0\xd9\x76\xb5\x08\x2b\x2a\xab\x41\x0a\x85\x87\xac\xf4\xcf\x2a\xb3\xad\x90\xd6\xba\x86\x2e\xdf\xf8\xf7\x7d\x69\xa8\xed\x47\x76\x30\x3e\xe9\xff\x93\xf7\x7f\x7b\xdb\xff\x79\x72\xc0\xde\x74\xbb\x41\xaf\x49\x1b\x4c\x0e\x7a\xc7\xed\xa7\x95\x74\x57\x69\xab\xd7\x3d\x0e\xba\xe3\x71\x60\x0b\x9e\x40\x30\x99\x34\xd5\x36\xc8\x6f\x7a\xbd\xf6\x0a\xdf\x3f\xc0\xc4\xb6\xd1\x13\xb0\x9b\x45\x98\xb1\x3f\x0d\xde\x0e\xfe\xb0\xb3\xa0\x5b\xea\x24\x4d\xe9\xa4\x28\x8c\xbe\x07\x3a\xb1\x16\x0c\xd2\x47\x9e\xcc\xcb\x82\x7c\x99\xa6\x8f\xa5\x90\x29\x0d\x33\x48\xe6\x85\x16\x0a\x69\x28\x81\x1b\x1a\x4a\x6d\x81\x86\x3a\x2f\xb8\xa9\x46\x09\x58\xbd\x18\xb0\x96\x86\x5a\x4d\x85\xc9\xdd\xa8\x20\x41\x37\xde\x3b\xdd\xf5\x78\x6e\x74\xbe\x7a\xbf\xd3\x34\xd4\xc5\xb2\x37\xee\x3f\xb2\x6f\xd7\x3f\x0e\xae\xcf\xa9\x74\x0a\x6a\x49\xa7\x50\x48\xbd\xa4\x53\x61\xdd\x49\x74\x63\x52\x2f\x76\x2a\x6c\xae\x4b\x85\xe4\x1a\x1e\x3a\x53\x7e\xfe\xcc\xa5\x42\x3a\x7b\x70\x94\x87\x82\xab\xd4\x0d\xda\x20\x9d\x0b\x95\xd2\xb9\x36\x39\x47\xfa\x04\x48\x9f\x0c\x57\xee\xa9\xcb\x82\xfe\x22\x52\x78\x19\xb0\x8b\xdc\x2b\xbb\x50\x02\x05\x97\xe2\x37\xa0\x0b\x57\xf9\xa4\xa4\x0b\x75\xaf\xe7\x40\x7f\xd5\x42\xd1\xa5\xc8\x05\xd2\xa5\x73\xec\x15\x70\x5b\x1a\xa0\x2b\x30\x33\xa0\x2b\x8f\xf7\xca\xed\xc2\xdf\x61\x41\xd7\x05\x28\xba\x2e\x50\xe4\x4e\xd3\x75\x89\x74\xe3\x92\xed\x8d\x2e\xe8\xc6\x68\xd7\xa1\xd1\x4d\x19\x4b\x61\x33\xba\x29\x6d\xf6\x32\x88\xb7\xc0\x53\xba\x85\x04\xc4\x3d\xd0\x2d\xa4\x9a\x6e\x61\x26\xac\x73\xcb\x2d\xe4\xda\x13\x5d\xbb\x47\xb7\x50\x70\xe1\x88\xbf\x96\x60\x91\x5c\x06\xf4\x4f\x87\xe5\x16\xac\x96\x9e\xd5\x22\x37\x9e\x8c\xda\xf8\xef\xd2\x8b\x3a\x63\x5f\x86\x27\xe4\xf7\x40\x21\x70\x93\x64\x14\x82\x4b\x32\x14\x82\x4a\x29\x04\xa4\x30\xd3\x0b\x0a\xe7\xa2\xa0\xb0\x90\x02\x29\xf4\x8b\x85\x08\x05\x85\xa8\x0b\x0a\xcb\xd8\x79\x32\x2c\x6d\xe1\x45\x16\x02\x9d\x96\xa5\x4a\xe8\xce\x61\xbe\x33\x3c\x79\x21\x8c\x91\xf2\x3d\x2a\x8d\x54\xaa\x69\xa4\x44\xbd\x6d\x23\x55\x53\x8b\xda\xe1\x23\x55\xd4\x2e\x1f\x29\xb3\x72\xdc\xa8\x48\x5d\x49\x1c\x59\xa0\xcf\x5c\x20\x7d\xe6\x0e\xc7\x67\x23\xf0\x05\xab\xfb\x3e\xc3\xf5\xd6\xaf\xba\xc7\xa2\xd7\xed\x7e\xaa\xaa\xed\xa5\xaf\xb6\x37\x75\xb5\x0d\xab\x6a\x3b\xf2\xd5\xf6\xf3\xaa\xda\x8e\x83\x49\xef\xb8\xa1\xfd\x4d\xbb\xb5\xca\x00\x67\x0f\x3e\x04\x5d\x3d\x74\xf5\xc6\xa7\xe4\x7a\xe9\xaa\xdd\x6f\x47\xd1\x38\x8a\xe2\x6e\x2d\x3e\x39\xa0\xf5\xdb\xd8\x23\xed\x45\x51\x1c\x45\x93\x75\x4e\x79\x54\x56\x1f\xd5\xf7\xb6\xd3\xc3\xa5\xe0\x96\xb8\x25\xdf\x9f\x50\x6c\x80\xcf\x29\xf1\x8e\x48\xb4\x42\xa1\x4a\xa0\x94\x23\xa7\x14\xa6\xbc\x94\xe8\x46\xa1\x80\x52\x4d\xe9\x52\xf1\x5c\x24\x05\x37\x3c\x77\xab\xb6\x9f\x58\x02\xa4\x05\x72\x0f\x31\x25\xb7\xdf\xe0\xc2\x78\x2a\x14\x97\x72\x49\x53\x6d\xdc\x3f\xf0\x24\x5b\x8d\x7d\x1d\xff\xcb\xed\x99\xcb\x80\x24\xa6\x24\x14\x09\xe5\xae\x0a\x55\xef\xf2\xdc\x52\x0e\x8b\x94\x20\xc9\x83\xa2\xba\x5d\x23\x03\x58\x1a\x45\xb6\x3a\x68\x98\x19\xbd\x20\x34\xbc\x20\x34\x4b\x2a\x15\x0a\x59\x37\x44\xf7\xdc\xd0\x22\x03\x03\xd5\x73\x85\x64\x91\x09\x09\xd5\xba\xad\xc7\x4d\xd6\xb6\x77\x57\x6d\x99\x47\x53\x3b\x73\xe5\x46\x67\x77\x43\xc9\x9e\x9e\xa3\xdd\x8d\xa2\x6f\x14\x45\xdf\x7b\xed\xe7\x58\xba\x14\x45\xbd\xe7\x59\xc6\x14\x45\x93\x6d\x96\x4d\x87\xd2\x1e\x47\x51\xff\xe0\xe8\xcd\x9f\xdf\x7f\x38\x0e\x7e\xfa\xf7\xff\xfd\x3f\x4d\x9e\xe1\x6d\xd4\xb0\xfe\xa4\xab\x80\xe0\x57\x9a\x21\xcd\x80\x24\x92\x04\x72\x75\x9b\x94\x46\x3f\xe6\xfe\xec\x28\x8d\xf9\xfa\x10\x71\xa1\xac\xa3\xac\xdf\x85\x72\x9f\x42\x91\x81\x42\xf2\x04\x48\x58\x12\x56\x69\xec\x35\xd6\x5a\xfb\x7a\x75\x57\x5a\x39\x79\xeb\xc2\xd6\xf6\x07\xfe\x95\xbf\xa2\x91\xbf\xa1\x91\xbf\x53\x35\x8e\xc9\xce\x45\xcc\x6f\x8f\x8b\x97\xc1\xd7\xc9\x01\xbd\x7d\x18\x9f\xf4\xcf\x79\x7f\xfa\xb6\xff\xb3\xff\x8e\xc7\x6f\xfb\xef\xbe\x4e\x0e\x7a\xe3\xf3\xcb\xc9\x71\x73\xdf\x1b\xf1\x79\xa5\x53\x68\x5e\xbb\x76\xaf\x67\xad\x55\xa3\xe2\xb3\xad\x5b\xb5\xdd\x5e\xd3\x40\xa5\x5b\x94\x8e\x9d\x8b\xc2\x63\x8b\xa2\xc1\x86\xdc\xb8\x9b\xaf\xfe\x9e\xb8\x27\x56\xa2\xdd\x71\x8c\x6a\x6a\x26\xf4\x9a\xa2\x28\x6a\xbb\x47\xd4\x6b\xbf\x5c\xbe\xdc\x38\x63\xf2\xed\x8f\xdf\xd7\xa6\x9f\x98\x59\xe9\x42\xed\xf7\x18\xfe\x7a\xdb\xee\xd7\xff\x33\x66\xef\xfc\x20\xb1\xfe\x39\x62\xd7\xcc\xce\xb6\x99\xaf\x7e\x60\x0f\xea\x54\xbb\x80\xbd\xbb\x3e\xbd\xa6\x2f\x5f\xbe\xd0\xf9\xc5\x97\xab\x33\xfa\x38\xfa\xd4\x0b\x8e\xd7\x10\x76\x7f\x73\x79\x06\xc3\xfb\x1d\x10\x9d\x0f\xff\x15\x14\x67\x79\x0c\x69\x0a\x29\x1b\x76\x6a\x0c\x75\x49\xd8\xc5\xf0\xcb\xbe\x83\xfe\xcb\x0f\x50\x08\x95\xc8\x32\x75\x25\x2e\xb1\x19\x37\xc5\x7a\xe1\x3b\x9d\xea\xd6\x8b\x90\xfe\x27\x00\x00\xff\xff\x5e\xc4\xe1\x21\xb4\x13\x00\x00") - -func runtimeSyntaxPowershellYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxPowershellYaml, - "runtime/syntax/PowerShell.yaml", - ) -} - -func runtimeSyntaxPowershellYaml() (*asset, error) { - bytes, err := runtimeSyntaxPowershellYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/PowerShell.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxReadmeMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x56\xc1\x6e\x1b\x39\x12\xbd\xf3\x2b\x6a\x93\x05\x2c\x09\x42\xeb\xb0\x7b\xca\x61\x17\x98\x41\x92\xf1\x20\x31\x06\x88\x73\x18\x18\xc6\x34\x45\x56\x37\x19\xb3\x59\x0d\xb2\x5a\x72\xcf\x61\xbe\x7d\x50\x64\x4b\x96\xe2\xc9\xc1\xb0\x44\xd6\x2b\xbe\x7a\x7c\x55\xd4\x5b\xf8\x32\x47\xd6\xcf\xf0\xc1\x07\xcc\x4a\xfd\x82\x09\x41\x27\x84\xc1\x9b\x44\x37\x19\x72\xdd\xee\x64\xbb\x51\xea\xbd\x36\x0e\x66\x3d\x84\xb2\x02\x79\x44\xe3\x3b\x8f\x19\x1c\x1d\x81\x09\x2c\x32\x1a\x06\x76\x58\x02\x78\x1e\x11\xf6\x3a\xa3\x05\x8a\x15\x82\xcf\x8c\x31\x7b\x8a\x40\x09\x1c\x6a\x8b\x29\xc3\xaa\xf3\x29\x33\x04\x1f\x11\xa8\x3b\xc3\xd7\x8d\xba\x77\x18\xe5\xfb\x42\x6b\xd4\xcc\x98\x62\x06\x1d\x2d\x24\xec\x3d\xc5\x2c\xb0\x27\xb4\x72\xbc\xf3\xbd\x0b\xbe\x77\x0c\x7d\xa2\x69\xcc\x70\x74\xde\x38\x60\x0c\xa1\x56\x74\xe2\xf9\x12\xc8\x4e\xf3\x99\x6b\xa3\xd4\x67\xfd\xe4\x63\x0f\x33\x4d\x09\xe8\x18\xaf\x04\x00\x9f\xe1\x80\x69\x86\xec\x87\x31\x60\x03\xb7\x90\xd0\xd0\x30\x60\xb4\x82\x00\xe3\xd0\x3c\x9d\xe9\x83\xee\x18\x53\xd9\x10\xee\x9d\x8f\x3e\x3b\xb4\x70\xf4\xec\x24\x48\x3d\xb4\x35\xfb\x1f\x05\x87\xa9\xe9\xa9\x7d\x5c\x35\xbb\x57\xab\x6b\x18\x13\xf5\x49\x0f\xb0\x0a\x64\x34\xa3\x05\x2f\xb2\xf8\x0c\xd6\x27\x34\x4c\x69\x5e\x37\xf0\xeb\x94\x19\xc6\xa0\x0d\x56\xfe\xe5\xa2\x6a\x32\x55\x08\x15\x10\x82\x99\x52\xc2\xc8\x2f\xd8\x2a\xe7\x14\xa1\xed\xa9\xfc\x7f\xcd\xab\x84\x78\x86\xa3\x0f\x61\xa9\x13\x8b\x16\x92\xb8\x81\xdb\xee\xe2\x96\x22\x29\x4c\x89\x52\x3e\x03\xc6\xe4\x23\x43\x7b\x47\xe0\x73\x9e\x30\xff\xab\x6d\x94\xfa\x5d\x14\xd3\x11\x12\x6a\x0b\x03\x09\x78\x4f\x13\x9f\xee\xe8\x98\x3c\xe3\xb5\xfe\x2b\x21\x61\x28\x50\xca\xc6\xe1\x80\x79\x7d\x2a\xe9\xa1\xae\x3e\xae\x9a\x66\xe7\x30\x8c\xbb\xfa\xbd\x19\xec\x1a\x2c\x99\x69\xc0\xc8\x9a\x3d\xc5\x46\xa9\xb7\xf0\x09\x7b\x6d\x66\xb8\x69\xaa\xcd\xcf\xf7\xaf\xd4\xe7\xe2\x92\x29\x57\x3f\x4d\x19\x4b\xf6\xb6\x06\xb6\x2f\xa6\xee\x28\x5d\x53\xab\x4e\xf3\x19\x22\x41\xa0\xd8\x63\x82\x3c\x8d\x23\x25\x46\x5b\xe4\x11\x1b\x38\x7d\x78\x49\xa6\xae\xf0\xc5\x87\x12\x73\xa4\x29\x58\x08\xfe\x09\x85\x81\xa1\x78\xc0\xc4\xf2\x51\x88\x44\x3c\x9e\x39\x6c\xab\xe5\x74\x3c\xd3\x7c\xf1\x53\x45\xbd\x76\xd4\xc5\xfa\x85\xa7\x74\xc8\x42\xfa\x47\xc6\x7a\xa7\x54\xdb\xb6\xea\xdf\xf0\x9d\x39\x2e\x92\x81\xa9\x45\xc1\xff\xc0\x34\x62\xbb\x82\x50\x9f\x29\xd7\x61\x20\x7f\x57\xe5\x16\xaf\x14\x39\xf6\x88\xf1\x54\x26\x5a\x98\xb2\xb4\x5f\x51\x83\x89\x42\xa3\xd4\x1d\x31\x2e\x0b\x92\x89\x28\x80\xcf\xf1\x86\x61\xc4\xd4\xc9\xb4\x11\x53\xb0\xa3\xa9\x77\xe2\x37\x9f\x61\x8a\x22\x5f\x98\xab\x42\x83\x9e\x0b\x6d\x1f\x99\x20\xd3\x80\x90\x07\x1d\xc2\xe2\xc4\x0b\xe1\xc5\xa8\x85\x12\x13\x74\xfe\x19\x06\x1d\x27\x1d\xc2\xac\x56\xd5\x97\xff\x5d\xb8\x77\x89\x86\xef\x34\x02\xa7\xed\x29\x61\xed\xfa\x3d\x4a\x1d\xe7\xba\xd6\xc5\x77\xd5\x5d\x8b\x10\xe7\x19\x24\x81\x5d\x9d\xbf\xf7\x0e\x73\xed\xa1\x0b\xc5\x5e\x07\x16\xfb\x15\xc1\x1b\xb8\x27\xf0\x31\xb3\x54\xc4\x0e\x87\x2d\x7c\x9b\x32\xab\x71\x62\x58\x96\xbe\x1b\x61\x11\xda\xbf\x76\x8d\xa1\xd8\xf9\x7e\x57\x72\x2c\xee\x90\x96\xbc\x77\x38\xd7\xe3\xf5\x13\xc6\x5a\xe9\x9d\x8e\xb4\x3d\x8d\x7a\x23\x82\xd4\xf5\x87\x22\x41\xc2\x91\xb2\x17\x0d\x1e\x57\x8e\x79\xcc\xef\x76\xbb\xde\xb3\x9b\xf6\x8d\xa1\x61\x97\x0d\x8d\x9a\xff\xdc\x45\x1d\x29\x99\x75\xa3\xae\x24\xa8\x94\xe4\x3c\x1d\x06\xf1\x8a\xb7\x18\x59\x0e\x91\x3b\x90\x83\x6f\xf2\x16\xf0\xd9\xe0\xc8\xb5\xe5\xe4\xfa\x9e\x70\x06\xeb\xbb\x0e\x13\x46\x83\xf9\x9d\x52\x9b\x45\x59\x4b\x28\x0d\xc8\xa5\x23\x5a\x5f\x66\x40\xdb\xc0\x6d\xcc\x8c\xda\x6e\x4b\x0a\x0d\x46\x67\x19\x85\x59\xde\x21\xf6\x07\x84\x41\xb3\x71\xdb\x73\x1b\xbd\xda\xef\x82\xee\x61\xd5\xfa\xf6\x3c\x6e\x12\xf6\x53\xd0\x09\xf0\x79\x4c\x98\xe5\x39\x53\x00\x00\x1b\xf8\x40\xb2\xa8\xe5\x79\xd8\x9e\x18\x40\x9f\xc4\xe3\x6f\x9a\xcd\x9b\x76\x69\xef\xbd\x3c\x1b\x08\xed\xd5\xfe\xea\xff\x7e\x2d\x31\xe2\x94\xaf\xa5\x0d\xca\x4b\x71\x39\xef\x4a\x37\x94\x8b\xad\xcf\x64\xc6\x53\x3f\xfd\x43\x2b\x2d\x03\xec\xf4\x94\x5f\xe4\x81\x0e\x35\x4f\x09\x1b\x28\x1d\x5a\x73\x0d\xc5\x39\xe0\x74\xb2\x86\xec\x22\x45\xc1\x6c\x97\xe9\x26\xb3\x66\x8f\x32\x37\xf6\x01\x07\xcd\xde\x80\xc5\x11\xa3\x15\xae\x14\x2f\x10\xf5\x14\xe9\xaa\x29\xcb\xab\x5a\x7e\x57\xf8\x0c\x1a\x82\x3f\x1f\x78\x39\xf9\x7e\xc0\x7f\x4c\x34\x62\x0a\x73\x29\xe4\x52\x88\x72\xe9\x07\xaf\x36\xd0\x93\xda\x80\x51\x1b\xb0\x6a\x03\x83\x4e\x4f\x96\x8e\x51\x6d\xc0\xf1\x10\xd4\x06\xc2\xa4\xd5\x06\xf2\xd1\x77\xac\x36\x90\xa4\x37\x36\xf0\x4d\x1f\xf4\xf2\x2f\x9b\xe4\x47\x59\x1b\x75\x36\x5a\x10\xe3\xcc\x8e\x62\x09\xde\xcf\x82\x75\x72\x8a\x97\x18\xc6\x67\x59\xa0\xe0\xad\xe7\xb9\xbc\x24\xde\x60\xcc\xa8\xd4\x4f\x68\xf4\xc9\x40\x62\xf6\x6b\x8b\xdf\xd6\x02\x07\xb2\xf2\x73\xc9\x16\xcb\x5b\x9f\x39\xf9\xfd\x54\xa6\x5e\xb4\x98\x0a\xf6\xe3\xdd\x57\xf8\xf8\xdb\xa7\xc3\x7f\x20\xd4\xd4\xdb\xab\x7b\xae\xbd\x92\xe9\x12\xad\x4e\x68\xcd\x27\x50\x03\x5f\x10\xe1\xe1\xd3\xed\xcf\xef\xef\xbe\xbc\x7f\x5c\x2d\x1f\xd6\x8d\xfa\x3b\x00\x00\xff\xff\xbd\xd7\x92\xf8\xf2\x09\x00\x00") - -func runtimeSyntaxReadmeMdBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxReadmeMd, - "runtime/syntax/README.md", - ) -} - -func runtimeSyntaxReadmeMd() (*asset, error) { - bytes, err := runtimeSyntaxReadmeMdBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/README.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxAdaYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x54\x6d\x6f\xdb\x36\x10\xfe\xee\x5f\xa1\x79\xdd\x62\x27\x8b\xd6\xaf\xd3\x5e\x0a\xc3\x73\xd2\x00\x59\x3c\x38\xea\x10\xc0\x34\x86\x93\x78\x96\x89\x48\xa4\x76\xa4\x92\x78\x7d\xfa\xdf\x07\xca\x2f\x6b\xb3\xb5\x31\x60\x9d\xee\xed\x79\x8e\xd4\xdd\xad\x4d\xcd\x61\xdb\x72\x96\x90\xa6\xc1\x40\x73\xe0\x32\x64\x83\x24\x49\x92\xe8\xb2\xd4\x70\x96\x0c\x47\x4a\xa5\xa4\xfd\x2b\xf4\xb2\xd8\x4b\x7a\x35\x1e\x0e\x06\xd2\xd5\xec\xb3\x24\x49\xfa\xa4\xaf\x93\x79\xcb\x42\xc1\x89\xef\xf5\xf3\xc4\x6f\x9b\xc2\xd5\xa9\xdb\x9b\xb3\x64\xb4\x4c\xb3\x1f\xbf\x3b\x3b\xc5\xcf\x5f\xbd\x51\xea\x9b\x15\x7e\xc2\x2f\xf8\x1e\xe7\xf8\x76\xfc\x69\x4a\x21\x54\xde\x73\xf0\x59\x32\x5c\x8e\xc6\xef\x3f\xac\xa0\xd4\x12\x4a\xad\x86\x7b\xaa\x7b\xde\x3e\x3a\xd1\xa9\xb0\x67\x79\x60\x7d\x48\x0f\x14\xb8\x61\x1b\x8e\x8e\x2c\x51\xc5\x88\x0a\x27\x01\x54\xf8\xf8\x0f\x42\x65\x00\x95\x25\xb7\x3b\xe1\x3d\xa8\x36\xe4\x59\x83\xea\x1a\x64\x35\x48\x84\xb6\xa0\x80\x82\x2b\x63\x51\x38\xbd\x45\x49\x9e\xc7\xaa\xf8\x32\x53\xe9\xac\x0f\x64\x03\x34\x97\x35\x09\x43\x73\x4d\xdb\xf8\x0c\x04\x6d\x2a\x13\x3c\xb4\x03\xd7\x9e\xe3\xc3\xac\xc1\x56\x83\x6d\x90\x2d\xf8\x29\x96\x64\x9c\x05\x3f\x99\x80\xb5\x13\xac\x3b\x5b\x46\xcb\x8b\xbc\x15\x5b\x16\x53\xa2\x72\xc1\xc1\xac\x61\x2c\x8c\x0d\x2c\x6b\x2a\x19\xc6\xa3\x36\x8d\x09\xac\x51\x3b\xd7\xa2\x71\x1a\x96\x1f\x61\x5d\x80\xed\xea\x1a\x6e\x0d\x27\x70\x61\xc3\xe2\xe1\xba\x00\xf7\xc0\x22\x46\x1b\x5b\xbd\xc8\xdc\x52\x79\x4f\x15\xa3\x15\xaa\x1a\x42\x2b\xe6\x81\x42\x54\x5d\xc9\xba\x93\xfe\x2d\x76\x16\x6b\x08\x19\xcf\x10\xb2\x15\x43\xb8\x74\xa2\x21\xdc\x40\xfa\x5e\xf3\x10\x0e\x9d\x58\x08\xff\xd5\x71\xf7\xf2\x55\x0b\x3f\xb0\x78\x86\xe7\x9a\xcb\x00\xcf\x2d\x49\x64\xf6\xae\x61\xf8\xae\x88\xbd\x0d\xbf\xb5\xe5\x46\x9c\x35\x7f\xb3\x46\xa0\xaa\xea\x85\xbf\x47\x60\x69\x8c\x8d\xf1\x61\xc3\x16\x7d\x70\x67\x83\xa9\x5f\xe4\xed\x3c\xe3\x31\xe6\x3c\x6e\x4c\xcd\x78\x34\x61\x83\x27\x27\x31\x6f\xdf\x9c\xd3\x7d\x13\xec\x71\x0e\x3d\x91\x16\xce\xd5\x3d\x44\xbe\x78\x37\xc3\xc5\xe4\xfa\x76\x36\x7e\x1e\x63\xbb\xa6\xe0\x7e\x54\x5e\x9f\xff\xb0\x3a\xdb\xf9\xf7\xb8\xb7\xc1\x09\x55\x9c\xe4\xdb\x96\x0f\x33\x16\x0b\x4f\xfd\xce\xd1\x63\x5f\xdd\xe4\xb3\xcb\xd9\x02\x37\x93\xfc\xdd\x62\x72\x8d\xdf\xe7\xb7\x57\xf9\xd5\x1f\x33\x5c\x5c\xcf\x27\x39\xa6\x6f\x27\x8b\xc9\x34\x9f\x2d\x70\x9b\x2f\xae\x6e\x2e\xff\x3d\xee\x7f\x90\xae\xe7\x37\x97\x7f\x1e\xe0\x6e\xdf\xce\x17\xf9\x51\xeb\x5d\x3b\xc0\x9d\xa3\x7f\x3f\x60\xed\xca\x9d\x6e\x28\x4e\x1a\xcb\xf3\x23\xfa\x20\xc6\x56\x69\xb9\x21\xc9\x12\x75\x92\xaa\x93\xc1\xf1\x80\xd1\xf3\xff\xf1\xbb\xcd\x14\x7f\x3e\x90\x84\x2c\x51\xc3\xa3\x85\xad\xfe\x44\xf7\xf7\xa6\xcd\x12\xa5\xd2\xa3\x65\xb7\xaa\x8e\xea\x73\x86\x96\x4b\x43\xf5\xb4\xaf\x68\xa4\xd4\x6b\x28\xa5\x14\x94\x0a\x50\xca\x42\x29\x81\x52\x43\x28\x75\x32\xfe\x1c\x44\x3f\x6d\xad\xab\x29\x8e\x6b\xe4\x56\xa3\xe5\x32\xab\x84\xda\x4d\xb6\x5a\x9d\xaa\xcf\x26\x76\xd6\x94\x4e\xc7\x1b\x57\x9d\x7a\xbf\x5c\x66\x4f\xfd\x9a\xc8\x56\xab\xb3\x0f\x83\x8f\xbf\xfe\xb5\xb1\x9c\x4c\x5d\x13\x3b\xf2\x78\x45\xbd\x96\xd6\xc6\xc6\x5d\x7d\x7e\x9e\x9e\x0e\x3f\x4e\xc9\x9d\x76\x87\xaf\xeb\xb4\x8b\xeb\x3c\x9f\xff\x3a\xc7\xdd\xdd\x1d\x2e\xae\xee\x7e\x9b\x8d\xb3\x37\xc3\xc1\x3f\x01\x00\x00\xff\xff\x2d\xaf\x92\x76\x09\x06\x00\x00") - -func runtimeSyntaxAdaYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxAdaYaml, - "runtime/syntax/ada.yaml", - ) -} - -func runtimeSyntaxAdaYaml() (*asset, error) { - bytes, err := runtimeSyntaxAdaYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/ada.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxApacheconfYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x59\xdb\x8e\xe3\x36\xd2\xbe\xef\xa7\x68\xf4\xff\x5f\x6c\x36\x48\x27\xc8\xde\x35\x06\x09\x7c\xea\x19\x21\x92\xed\x58\xee\xc9\x60\xe3\x6c\xc0\x11\xcb\x12\xd7\x12\xa9\x25\x29\xb7\x1d\xf0\xe1\x17\xc5\xa2\x0e\xb6\x5b\xbd\x03\x8c\x55\xdf\xa7\x22\x55\x24\xeb\x24\xf5\x5e\x94\x60\xcf\x35\x3c\xdd\xb3\x9a\x65\x05\x64\x4a\xee\xef\xee\x38\x58\xc8\xec\xd3\xdd\xfd\xfd\xfd\x3d\x6a\x48\x56\xc1\xd3\xfd\x43\x61\x6d\xcd\x77\xbb\x47\x54\x72\x95\xa8\x60\xb7\x7b\xc4\xc1\xc6\x1d\x0b\x65\xac\xd9\xed\x1e\xf9\x6e\xb7\xdb\xfd\xdd\xed\x76\x8f\x85\x65\x59\x06\xc6\x3c\xdc\xdd\xe9\xa6\x04\x43\xb3\x7d\x77\x2f\x38\x48\x2b\xf6\x02\xf4\xd3\xfd\xc3\xdf\x26\x59\x06\xb5\x4d\x1a\x0b\x27\x47\xf2\x9a\xd9\x22\x92\x7b\xe5\xa1\x31\xcf\xa2\x84\x25\xab\xc0\x4d\x32\x2b\x94\x74\x13\xce\x27\xa5\x0d\x97\xe9\x79\x21\x33\xc5\x85\xcc\x3b\x62\x7b\xae\x01\xc1\xac\x60\xda\x80\x57\x9c\xc3\x9e\x35\xa5\xbd\x60\x4c\xa6\x45\xdd\x4e\xd8\x4e\xf2\xcd\xc3\xdb\x36\x72\xfe\x89\x49\x5e\x82\x46\xe5\x28\xa3\x41\x78\xbd\x7c\x3e\x31\xad\x01\x91\xac\x1b\xfb\x2c\x4a\x4b\xc3\x62\x26\xf3\x86\xe5\xfe\x56\xa2\x78\x53\x02\x2d\x92\xf3\x55\x63\x2f\x34\x87\xb8\x9f\x8e\xae\xa5\x60\x86\x7e\x13\x66\xb3\x62\xcc\xe0\xb2\x54\xaf\xce\xff\xce\x56\xcb\xe5\x62\xb6\x25\xe0\x8d\x05\x9e\x96\xcc\x14\x60\x88\x5b\x1d\x41\x6b\xc1\xc1\x4d\xa4\x92\xe7\x4a\x35\xa6\x97\xfe\x9c\x34\xb6\x50\x5a\x58\x66\xc5\x71\xa0\xf1\x67\xac\xf2\x45\xc5\x44\x39\xa0\x92\xc6\xd8\x8f\xe2\x08\xd7\xfc\x52\xbd\x18\xd0\xd1\x7c\xcc\xd4\x4e\xf1\x33\x68\xb1\x3f\x87\xe1\xc6\x88\x5c\xd2\x40\x87\x46\x5c\x19\xd2\xd8\x62\x3e\x4d\xde\x24\x3f\x6a\xd5\xd4\xe8\x34\x2d\x41\x1b\x47\x32\xce\xd8\xdf\x13\x39\x18\x3b\x29\x73\x9c\xa3\xa8\xc6\x0c\xec\x34\xe7\xaa\x62\x42\x0e\x86\x5e\xcd\x74\xf5\x64\xcf\x2d\xb3\x59\x01\xd9\x61\xc8\x28\x99\xc1\xb3\xd2\x15\xb3\xd7\x6c\x2c\xf6\x60\x45\x35\x1c\xff\xab\xaa\x07\x28\x2d\x2a\xa8\x52\xf1\x17\xbc\x63\xeb\xa5\x15\xf1\x7c\xb2\xbe\xdd\x26\x64\xa7\x42\xf2\xf9\xf2\x02\xae\x99\x31\xaf\x4a\xf3\x8e\x0c\x11\x33\x53\x72\x2f\xf2\x9e\x55\x55\xcd\x34\xcc\x97\x2b\x99\x82\x3e\xa2\xd3\x86\x3b\x73\xd0\xb0\x07\x0d\x32\x03\xef\xa3\x60\xde\x31\x14\x07\x2c\x24\xfb\x5a\x42\xff\xc0\x67\xad\xa4\x5d\xb3\x1c\x3e\xb1\xb0\x69\xc8\xfa\x25\x4d\xac\xd5\xe2\x6b\x63\x61\x84\x8e\xcc\x60\x35\x1b\xa8\x94\x05\xef\x3f\x43\xfa\x45\x97\x5e\xa6\x7c\xd2\xd8\xa2\xf3\x8d\xd6\x31\x46\xec\x9d\x6a\xf5\x6a\x40\xfb\x98\x73\x43\xb0\x54\x33\x66\xc0\x4d\xd3\x1f\x7f\xf8\xe1\x87\x49\x96\xa9\x46\x5a\x37\x6d\xf6\xb8\x0b\x3c\x56\xb9\x71\x33\xcc\xaa\x21\x03\x2d\x4e\xb5\xd0\x10\x28\xa1\x63\x90\xb9\x2d\x06\xf0\x08\x65\x3b\x40\x18\xdc\x19\x02\xb4\x4b\x41\xc6\x29\xce\xde\xa9\x46\x6c\xf5\x6a\xde\x01\x48\x52\x3a\x03\x3c\xb2\x12\x7c\xba\xf3\xe4\xc7\x6c\x56\x02\xeb\xc0\x9c\x89\xf2\xdc\x82\x48\x5a\xd0\x47\x56\xb6\x38\x81\xea\xc5\x60\xe2\x0a\xf8\x45\x36\x06\x38\xa1\x28\x97\x4a\x83\x17\x67\x4a\x5a\xad\xca\x21\xff\x09\x18\x07\x3d\xe6\x03\x03\xc5\xa5\x8a\x99\xb1\x89\x0a\xb3\x06\x80\x9a\xfc\x99\x65\x56\x69\xe2\x13\x76\x1a\xee\x60\xc2\x4e\xb8\x4c\x8c\x87\x40\x08\x79\x49\x2c\x21\x57\x56\x30\x0b\x7c\xae\xb2\xb0\xb3\x1b\xa5\x2c\x49\xbd\xde\x56\x54\x90\x30\x9d\x0b\x39\x66\xeb\xc7\x28\x61\xf5\xe2\x64\x41\x1a\xbf\x89\x14\x18\xe1\x58\x5b\xb8\xf2\x05\xc5\xb4\x30\x55\x8d\xce\x60\x21\x33\xe7\x8f\x2b\xad\xa1\x2c\xb1\x52\xcc\x0a\x51\xf2\x35\xe8\x90\xde\x70\xe3\x40\x5a\x8a\x70\x37\x53\xea\x20\x20\xa4\x1a\x02\xb4\x66\x13\x50\xac\xf2\x20\xa1\x17\x8f\xd9\xeb\x15\x52\x7b\x46\x2f\xf0\xf2\x56\xb3\xec\xe0\x9f\xae\x34\xcc\x9b\xaa\x9e\x0b\x0d\xb8\xb5\x67\x37\x6b\x8c\x55\x15\xce\x3b\x67\x47\xfc\x3f\x87\xda\x97\x60\x21\x85\x3d\x23\x11\xab\xec\x30\x9f\xa2\x94\x08\x89\x9b\xa5\x1a\xeb\xc2\xe2\x7d\x39\x0c\x72\x57\xe3\x02\xc6\xf0\x1a\xb1\x70\x0e\xfb\x92\x59\xa0\x50\xf1\x27\x11\x18\x74\x55\x0d\x06\xb7\xd9\x07\x44\xcb\x53\x3d\x5c\x2a\xdb\x69\x26\x50\x5d\x68\xfc\x26\x24\x57\xaf\x61\x2e\x79\x76\xfd\x0a\x3b\x29\x92\x1c\x4e\x3d\xa4\x78\xee\xa0\xaf\x8b\x63\xf6\xaa\xac\xa9\x40\x5a\xef\x3e\xb8\x7f\xd1\xca\x17\xf8\x20\x53\xcd\x76\x14\xa9\x8b\x13\xf6\x31\x42\xc9\x4f\x4a\x1d\x02\x97\x24\x93\x75\x10\x53\x90\x1c\x9b\x2a\xb7\xd0\x5a\xe9\x76\x62\x42\x78\x0a\x8b\x13\xc3\x68\x75\xe1\xdc\xb1\xef\x39\x76\x88\x1a\x82\x11\x23\x83\x4e\xeb\x96\xde\x5f\xb1\xde\x5b\x66\x1b\x83\x90\x36\x71\x0e\x7b\x21\xa1\xc7\xad\xdf\x62\xf0\x2c\xb6\x2c\xf7\x02\x41\x6a\x33\x9c\x4f\x22\xed\xe9\xae\xb5\xc0\x72\x72\x26\xd6\xa7\xd0\x67\xa5\x31\x32\x32\x34\xdf\xa7\x65\x47\xb1\x3f\x62\x27\xdd\xf4\x59\xf8\x93\x32\x16\xbb\xcb\x58\xa9\x43\x53\x1b\x17\x79\x45\x4b\x19\xce\x45\xfb\x60\x6b\xb4\xa7\x9e\xc9\x45\xfb\xcf\xa0\x7d\x0c\x46\x15\xab\xa7\x98\x7c\x51\x68\x97\x8c\x72\x02\xb2\x71\x91\xcc\xca\x86\x83\xf3\x27\x4e\x59\x86\xe4\x76\xb1\x04\x34\xf7\xdb\x81\x63\x47\x6c\x8d\xd2\xc9\x3a\x9a\xd4\x35\x48\xcc\xe7\x5b\xe5\x8f\xc9\xb8\x6b\xfa\xd7\x06\xf4\x99\xd8\x3e\x01\x7b\xf8\xcc\x0e\x30\x31\x67\x99\x11\x8c\x55\xbe\x54\x36\x6d\xea\x5a\x69\x0b\x9c\xc8\x0d\x30\x3e\x29\x80\x71\x8a\x07\xf7\x0b\x40\x3d\x29\xf1\xd8\x3b\x29\x84\xdd\x88\x95\x37\x67\xe3\x0b\x35\x15\x0f\xab\x05\x98\x9e\xd8\x6e\x63\x02\x4a\x4a\xf0\x3d\x75\x1b\xd1\xc8\xae\xea\x9b\x51\x81\x6a\xc7\xa5\x05\xd3\xc0\xfb\x45\x5e\x71\xef\xb4\x27\xa8\xb9\xd5\x8d\xb1\xc0\x67\x13\x77\x81\xbc\x17\xc5\xa2\x12\x96\x7e\x29\x84\x48\xf6\x05\x49\xb2\x72\x03\x59\x43\x47\xef\xe9\x0d\xfc\xa7\x01\x63\xa7\x8a\x9f\x2f\x88\x67\x01\x25\x37\xb7\x94\x4f\x0c\x43\x36\x16\x72\xd4\x52\x54\xfb\x92\xc4\x97\xcf\x30\x16\x64\xb8\x4c\x59\x76\x40\x67\x8f\x15\xe3\xb4\x0b\x8a\x85\xb6\xde\xc5\x2a\x63\xbe\xd4\xb6\x02\xc5\x10\x26\xd1\xa0\x9a\x87\xfe\x2f\x56\x39\x65\xb0\x84\x9d\x66\xa5\x00\x69\x0d\x8a\xdd\x99\x87\xc7\x8f\x55\xd0\x84\x9d\x12\xa8\x9e\x35\x00\x8e\x6a\x95\xd7\xa0\x7d\x85\xb9\xe2\xb6\x85\x06\xe6\xc9\x14\xbb\x37\xea\xdc\x4c\x87\xe9\xb6\xc7\xb7\x62\x3f\x65\x5b\x78\x57\x5f\xff\x0d\x99\x9d\xf9\x76\xe7\x8a\x7c\xc7\x01\x3a\xcd\xd4\x6a\x60\x95\x90\x79\xf0\xf7\xa4\xad\xdf\xfd\x14\x81\xc3\x4e\xee\xc8\xca\xae\x4b\x0f\x34\x69\x80\x65\x73\xa1\xfd\x95\x52\x16\x4a\x69\xb3\xdf\x8b\x93\x4b\x7c\x4d\xcf\x45\xe6\xf7\x3c\x11\xf2\x72\xd9\x01\x87\x05\x8e\xd9\x9b\x30\x6a\xa5\x13\xc5\x71\xbe\x17\x03\xdd\xdb\x69\xd2\x94\x56\x1c\x05\xbc\x86\x14\x89\xd9\xec\xb3\xd0\xb6\x61\x25\xe6\x34\xb7\x54\x6b\xad\x4e\x67\xb7\x6c\xaa\xf6\xa1\xcb\xdf\xd2\x34\x6e\x5d\x1e\xb4\x0d\xcc\x4b\x9d\x6b\xc6\xc1\xf7\x78\x6d\x76\xf2\x89\xc9\x61\x43\xbe\x90\x47\xb7\x16\xfc\x9d\xe6\x74\xad\x95\x55\x99\x2a\x17\x59\xa1\x1c\x3d\xd4\xff\x4e\x19\xa7\x44\x1b\x60\xa9\xb2\x03\x89\xa1\xbd\xf0\xb2\xcf\x67\xdd\x4b\xa0\xa7\xa2\xd5\xa0\x2c\x7b\x86\x96\x18\xc4\xd3\xb3\xd2\xaf\x4c\x73\x43\x04\x1a\xd9\x4b\x1b\xc0\xa5\xbe\x63\xea\xe9\xbc\xd6\x60\x70\x47\xfc\x36\x79\x66\x03\x19\x88\x23\x5c\x3f\x95\xba\xf8\xa1\x3c\xb0\xa3\x75\x6d\x42\x6d\x0a\xf3\xe0\xb3\x60\x0e\x33\x6a\x45\x1f\x0e\x36\xc0\x7d\x85\xef\x84\xf7\x5e\x9d\x5b\x9d\x35\xe8\x8a\x49\xac\xcb\x2d\xb3\x85\xaa\x76\xde\x1d\xa1\xfd\x92\x40\xa8\xfb\x04\x40\xb0\xfd\x54\x40\x68\xf8\x15\x80\x98\xae\x49\x22\x78\xf1\xf6\x4f\x94\x4f\x86\x61\x7d\xef\xd6\x51\xd4\xc1\x76\x78\x03\xaf\x5a\x58\xf0\xd5\x30\xc8\x33\x25\x79\x2b\x2f\x64\x8e\x35\x34\x20\xcc\x43\xbd\x9c\x0f\x44\xca\x45\x01\x27\xac\x6e\xc5\xd6\x29\x03\xdc\x60\x92\xdb\xf8\x14\x39\x5b\xbf\x04\x29\x59\x24\x41\x5a\xae\x37\xab\xd9\x88\xc1\x29\xb3\xc2\xec\xcf\x2e\xcd\x94\x86\xa9\x62\x9a\x92\x67\xea\x3f\xc6\x84\x0b\x7d\xe3\x18\xc8\x74\xe8\x44\xf8\x5a\x50\x6b\xb0\xa0\xa9\xbd\x0e\x3c\x2e\xa4\x93\x42\x52\xe9\x70\x78\xcf\x22\x9c\xe2\xf2\x53\x2c\x25\x40\xa9\x7c\xcc\x54\x90\x7c\xe0\x90\x14\xc3\x13\x5e\x09\xd9\xca\x64\xa7\x97\xa9\x72\x91\xec\x7d\x8e\x44\x4c\x16\x41\xf4\x7d\x23\x89\xa9\xc8\x25\xb3\x8d\x6e\xb5\xb6\xea\x00\x12\x67\xb2\x18\xeb\x74\x89\xf6\x9d\x10\x5e\x31\x53\xb0\xc1\xb3\x46\x0d\xb6\x43\x67\x4b\xc1\x5e\xb8\x56\x9a\x46\x0b\xc9\xb1\xbb\x43\x09\x83\x3e\x31\x5e\x4e\x2d\xd3\x36\xf0\x18\x46\xa1\x36\xa5\x69\xf4\x22\xb9\xef\xbe\xb8\xcf\x2c\x69\x1a\xcf\x26\x98\xb6\xc4\x5e\x64\xd4\x90\xc3\x0d\x89\x2b\x1e\xb3\x0f\x55\x37\x70\x0c\x45\xb1\x1f\xde\x73\xb4\x5f\x69\x3c\x98\x70\x56\x30\xd1\xeb\xbe\xf1\xf4\x9e\xfa\x05\xce\x1d\x2b\xea\x02\x74\xda\x08\xeb\x61\x08\x80\x34\x8d\xe9\x43\x63\x9a\xc6\xc1\xa7\xc7\x6d\xc5\x64\xb6\x2e\x34\x33\x30\x17\xac\x44\xf7\x4a\xe3\x36\xd3\x06\xf9\x74\x7e\x73\x43\x6e\xef\xb4\xeb\x0a\x77\x6e\x37\xe1\xe6\xc6\xe5\x88\x7e\x35\xef\xd8\xeb\x93\x79\xb7\xd0\x90\xab\xb3\x42\x48\x18\xb3\xf1\xf6\xf6\xc5\x63\x6f\x56\x4b\x5f\xe8\xae\xa0\x7f\x59\x44\x6e\xc3\x24\x57\x55\x0a\xc0\x3d\xa2\xd4\x34\x6e\x6f\x50\x48\xd3\x18\xd5\x53\x7a\xe3\xf3\xb5\xfd\x1a\xb7\xb9\x1d\x4b\xa5\x69\xe3\x2b\x8d\xe9\xf1\xd4\x36\xf5\x38\x98\x83\x3e\xdd\x96\x5d\x72\xf0\xd0\xd4\xa4\x0d\x9c\x20\xc3\x79\xe8\x3d\x85\x78\x1f\xbf\x23\xb6\x5e\xf7\x40\x84\x53\xcb\xb2\x83\xcf\x0c\x68\xde\xaa\xb1\x0e\xdf\xb0\xdb\x4f\x35\x5b\xcd\xa4\xd9\x83\x7f\x9d\xc3\x6c\x6e\xc2\x27\xb4\x17\x69\x28\xca\x5f\x0c\xcc\x98\x54\x52\x64\xac\xf4\x0b\x42\x8b\xfc\x0f\x36\x34\xa1\x8f\x18\xbe\x73\x8e\x18\xf7\x86\x66\xb4\x76\xc3\x3e\x24\xc8\xc3\xdc\x7a\x4b\x45\x6b\xf7\x9b\x90\xff\xf8\x31\x7c\x76\xa2\x0f\xf1\x8b\x93\xfb\x32\x15\xf6\x13\x1b\x7c\x6a\x32\xe7\xea\xab\x2a\x1f\x2d\xcb\x9f\xee\x1f\x3e\xfc\xfe\xaf\x9f\xfe\xf8\xf6\xa7\x37\x2d\xfb\xf0\xfd\xcf\xbf\x4f\xbe\xfb\x27\xfb\xee\xaf\x3f\xbe\x7d\xdb\xf4\x0f\xee\xc3\xf7\xee\xa7\x6f\x1e\xee\xc2\xdd\x4c\x49\x63\x99\xb4\x8f\xc6\x6a\x21\x73\xfa\x73\x01\xfe\x33\x78\x7e\x4f\xf7\x0f\xbb\x87\x87\x8e\x03\xc9\xaf\x18\x73\x10\x35\x52\xbb\xdd\xee\xb1\x67\x07\x7f\x79\x68\xff\x0d\x9f\x54\x43\x26\x58\x89\xe5\xbc\x1f\xda\x99\x53\xe1\x8e\xde\x9a\xf1\x7f\xd7\x56\xfc\xff\xff\x78\x9c\x55\x5c\x79\x47\x5a\xcd\x57\xee\xcb\x97\x2f\xee\x39\xfa\x92\x2c\xbe\x79\xfa\xf9\xe1\xee\xee\xbf\x01\x00\x00\xff\xff\xbb\xb1\xb0\x1d\x7f\x19\x00\x00") - -func runtimeSyntaxApacheconfYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxApacheconfYaml, - "runtime/syntax/apacheconf.yaml", - ) -} - -func runtimeSyntaxApacheconfYaml() (*asset, error) { - bytes, err := runtimeSyntaxApacheconfYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/apacheconf.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxArduinoYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x56\x71\x4f\xdb\xc8\x12\xff\x9f\x4f\x61\x85\xea\xd5\x6e\x55\x78\xd0\xf7\xaa\xbb\x48\x55\x04\x21\x80\x25\x48\x10\x31\x2d\x77\xb8\xb5\x36\xde\x71\x3c\x62\xb3\xeb\xee\x8e\x09\x9c\xe6\xc3\x9f\xd6\x09\x90\x73\x1a\x5a\xf5\xf2\xc7\xce\xec\x7a\xf6\x37\xbf\x9d\x9d\x99\x4d\x81\x0a\xe8\xa1\x82\x6e\x80\xda\x6c\x6d\x49\x20\xc8\xa9\xbb\x15\x04\x41\xe0\x3f\x69\x31\x83\x6e\xd0\x49\xd3\x9d\x1e\x6a\xf3\xaa\xb3\xb5\x65\x6b\x05\x6e\x61\xf0\x2e\x40\x09\x9a\xb0\x40\xb0\x8d\xd1\xe4\xe6\xe0\xdd\x9f\xd9\x97\x9b\xff\xbe\xfb\xbd\x51\xde\xa6\xe9\xa4\x13\x6c\x35\xc6\x41\xb0\xbd\x1d\x2c\xb7\x2d\x1c\xfa\x0d\x61\xe8\x7a\x0e\xff\x82\x88\xc3\xb0\xce\x7a\x51\x0f\x35\x85\xbf\xf1\xde\x07\x7e\xbf\xcf\x1f\xfe\xc7\x15\xd9\x28\x8a\x32\xf2\x40\x2b\x38\x7d\xa3\x1d\x09\x4d\x6e\x09\x98\x2f\xe7\xdd\xa0\x13\xf6\x30\xf2\xc0\xa7\xf1\xc9\x29\x9f\x8d\x3e\x73\x3c\xbc\xb8\x4a\x78\x74\x95\x5c\x5c\x25\x51\x0b\x67\x0c\x16\x85\x0a\x2e\x2c\x6a\xda\x0c\x75\x34\xe8\xf3\x61\x3c\xe4\xd3\xc1\x35\x8f\xfa\x09\x1f\xfe\x91\x0c\xda\x48\x17\xf1\xcf\x90\xba\x88\xf9\xf4\xe0\xec\x38\xbb\x88\x39\xf9\x3c\xca\x2e\xe2\x35\x42\x25\x16\x34\xaa\x5f\x20\x73\x36\x3e\x3c\x8e\x2f\xc7\x09\x9f\x2f\x95\x36\xc4\x01\x91\xc8\xcb\x20\xd6\x04\xd6\xd6\xd5\x0b\x50\xfd\xd3\x83\xe1\xc9\x80\x8f\x0f\xce\xce\xe2\xe1\x09\x5f\xc6\xe3\x78\x78\xb2\x06\xa7\x85\x32\xd3\xe0\x12\x0a\xb0\xa0\x73\x78\x29\x4c\xc7\x07\x57\x67\x09\x0f\xae\x93\xc1\xe5\xf0\xe0\x8c\xe3\x61\x4b\xd9\xfb\xb4\xf7\xa4\xef\x7f\xfa\xff\x87\xb6\xaf\x8f\x1f\x3f\x06\xc7\x57\xc3\x7e\x12\x8f\x86\xe3\x66\xb6\xbd\xbd\xf2\xf9\x48\x90\x08\x92\x87\x0a\xdc\x7a\x1e\x4d\x8c\x51\x20\x34\x4f\x1e\x08\x38\x2f\x85\xe5\x42\x19\x41\x8c\x9a\x58\x19\x3d\xe5\xb9\xb1\xb2\xed\xaf\x6f\x34\x59\xa3\x82\x31\xd9\x3a\x27\x34\xfa\x11\xd8\x91\x20\x98\x41\x73\x3c\x8f\x9e\x0b\x07\x9c\x2b\xe1\x1c\x4b\x28\x44\xad\x88\xa5\x61\x69\xea\x89\x02\x06\xe5\x80\x0b\xd1\x8c\xc6\x32\x16\xac\x61\xce\xba\x56\x8a\x2b\x8b\x77\x82\x80\x2b\x6b\x7c\x5d\x81\xe4\xaa\x9e\x28\xcc\xd9\x95\xc6\x12\x3b\x9c\x6a\x90\xec\xbd\x61\xce\x63\xb2\xa8\xa7\xec\xe6\x48\x79\xc9\x54\xa2\x63\x2a\xad\x99\x33\xd9\x07\x26\x5b\x03\xd7\x7a\xb9\xe3\xce\xa0\xe4\x79\x89\x0a\xa2\x45\x89\x7d\x9f\xf6\xd4\x90\xe1\xdc\x68\x42\x5d\x03\x4f\x2c\x88\x5b\xb6\x40\xb5\xd5\xed\x48\x9c\x0b\x2a\x37\xd4\x74\x28\x26\x8e\x45\x6e\x1c\x0b\x87\x9a\x05\x89\xc5\xb0\xcf\x39\xa0\xe2\x26\x11\xac\x40\xcd\xde\x44\xc2\xd4\x02\x38\x86\xfb\xca\x5f\x80\xb1\xac\xcc\x94\x67\xa2\xe2\x99\xb8\xe7\x19\x6a\xb6\x42\xa2\xd0\x8e\xad\xd0\xd2\xcc\x96\x62\x0c\x20\xd9\x9a\x5a\x4b\xf6\x3e\xdc\x37\x76\xdf\x2c\x31\x89\x35\xa2\x87\x48\x2e\xf8\x4f\x70\xf8\x40\x4f\x59\xb0\x46\x78\x82\x74\x09\x42\xf2\x04\xe9\xb3\x45\x02\xaf\x8c\x81\xbc\xe8\x2b\x10\xd6\x2b\x5c\xe2\xb4\xf4\x28\xac\xcc\xdc\xcb\x0d\x79\x1f\xef\x8e\x36\xc6\xa5\xb1\x78\x2a\x0c\x7e\x9c\x0b\xb9\x54\x1b\xe7\x6d\xdc\xc1\x3d\x81\xd5\x42\x3d\x17\xe8\xc6\x73\x88\xa6\x92\x9f\xec\x58\xc2\x3f\xe6\x6d\xe4\x04\x67\xb0\x09\x4a\x82\x12\x0f\xdc\x8c\xe7\x98\x5b\xe3\x20\x37\x5a\x3a\x9e\xa1\x52\xe8\x85\x5f\x6b\x03\x1e\xe1\x14\xc9\x33\xdd\x1c\x83\x0a\xf5\xb9\x91\xc0\x72\x61\xba\x08\xf7\x72\xe2\x23\xd1\x86\xfc\xf1\xa1\xf1\xc9\x82\xb5\x79\x36\x5f\xbb\x1e\x79\x27\x74\x0e\xf2\x25\x72\xda\x24\x46\x03\x57\xb5\x72\x10\x6b\x76\xbe\xb7\x3e\xca\x51\x4d\x4c\x46\xaf\x5d\xcf\xe2\x45\xd8\x84\xb8\xf8\xca\x0b\xb1\xb7\x94\xfb\x4b\xf9\x9e\x27\x30\x45\xcd\xa0\x25\x57\x00\xbe\xd4\x84\xf4\x2d\x40\xd3\x62\x54\x9a\xc5\x9d\x40\x25\x7c\xd7\x28\x54\xed\xca\x35\xef\x4d\x23\xaa\xed\xc6\x7b\x74\x40\x75\xc5\xca\x98\xaa\xbd\xf5\x3b\x2d\xe0\xeb\xcd\x4d\xd7\x55\x22\x87\xee\x97\x2f\x6f\xb6\x57\x27\xa1\x84\x02\x35\x30\xea\x5c\xd5\x12\xc2\x4c\xc3\x3d\x45\x3d\x0e\x6b\xcd\x58\xe8\x5e\x24\xa1\xf0\xe7\xc0\x82\x41\x85\x58\xb0\x83\xc8\x37\xb6\xb9\xb0\xda\xf7\x28\xb0\xd6\x58\xae\xac\x98\xce\x44\xb4\xca\xe2\xa4\xdf\x0f\x26\x35\x2a\x42\xfd\xbd\x67\x30\xcb\x04\x91\xc5\x49\x4d\x90\x65\xab\x84\xd2\x34\x4c\xd3\xf0\xe6\x6b\xe4\xd5\x28\x4d\x23\xce\xb2\x50\xa8\x45\xb7\x13\x6e\xc6\x4b\x50\x2e\x51\x4a\xd0\x8c\x5a\x79\xfe\x95\xc8\x6f\x7d\xe7\x00\x47\x16\x73\x62\x07\x4d\x1b\x67\xff\x30\x98\x82\xe7\x20\x6e\xa3\x2c\x7b\x64\xf8\xcc\x65\xc7\x35\xbd\xb6\xbb\x24\x1e\xf8\xb0\xd9\xa6\x6b\x76\x3a\x4f\x6b\xa0\x65\x6b\xc5\xdd\x62\xd5\x5c\x44\x9a\xee\x3c\xaf\xae\xfc\x23\x7a\xfc\xad\x7a\xaa\x20\x47\xa1\xfa\xa5\xb0\xcf\x5b\x7f\x96\xce\xeb\x36\x9b\xd7\xbf\x44\xa6\xb2\x50\x59\x93\x77\x83\xce\xce\xce\xdb\xce\xaf\x31\x9d\x35\x49\xb5\xc6\x70\x77\xb7\x4d\xf1\xd5\x0f\xc8\x90\x91\xc6\xe7\x42\x32\x3a\x1a\xf1\xf5\xf5\x35\x1f\xc7\xd7\xe7\x83\xa8\xdb\xfb\x09\x67\x69\xfa\x66\xed\x7e\xd2\x37\xbb\xff\xc2\xe3\xdf\x01\x00\x00\xff\xff\x21\xfd\xe0\xed\x00\x0b\x00\x00") - -func runtimeSyntaxArduinoYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxArduinoYaml, - "runtime/syntax/arduino.yaml", - ) -} - -func runtimeSyntaxArduinoYaml() (*asset, error) { - bytes, err := runtimeSyntaxArduinoYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/arduino.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxAsciidocYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\x5d\x6f\xda\x30\x14\x86\xef\xf3\x2b\xac\xac\x12\x6d\x42\xac\x51\xad\x17\x8b\x4a\x25\x34\x4d\x13\x17\x03\x54\x65\xda\x85\x8f\x03\xc6\x31\x25\x6a\xbe\xe4\x38\x9a\x18\x21\xbf\x7d\xca\x67\x43\x21\xd5\x90\x2f\x90\xcf\xc3\xe3\xe3\xf7\x98\x9d\x1f\x08\x75\x48\x84\x8d\x58\xca\x7d\xdf\x8b\xb9\xa6\x79\x42\x09\xae\x6c\x0d\x21\x84\xca\x7a\xc4\x42\x61\x23\x1d\x00\xdf\xb2\x94\xe7\x2d\x98\x33\x2f\xe6\x77\x37\xba\xa6\xc9\x2c\x10\x69\xcd\x7f\x42\x21\xf3\x23\xb4\x17\xcc\x13\xb2\xda\xb1\x50\x22\x45\x22\x63\x6e\x23\xdd\x9d\x4e\xa7\x53\xf3\x46\xaf\x0a\x25\xbc\x9f\x34\x4c\xaa\x98\x12\xa1\x88\x54\x4d\x11\x62\xa7\x09\xe3\xc2\xa6\x14\x1b\x0d\xff\x0e\xb2\x2c\xcb\x3a\x53\xdd\xb7\xd4\x21\xdc\xc6\x41\x73\xda\x80\xa8\x43\x8a\xa2\x28\xce\x2c\x5f\x1a\xa4\x0e\xa5\xee\xf8\xba\xa4\x25\x00\xde\xd6\x99\xea\xa1\x01\x79\x1c\xa5\x8a\xb5\x57\x1b\xf4\xf5\x31\x00\xb3\x5b\xa5\xb3\x93\x32\xa5\xa4\xbf\xcd\x94\x48\x7b\x5d\xe0\x57\x71\xf8\x13\x4b\xcf\x46\xba\x8d\x0d\xbb\x15\xfa\x9e\x88\x94\xbf\xf3\x85\xc4\x21\xe3\x32\xae\x66\x78\x24\xcc\xfa\xfb\xd9\xfa\x4a\x0d\x80\xd3\x25\x59\x31\xe5\xe7\x7f\xb8\xae\xc7\x33\xb8\xdb\xef\xb5\xbd\x62\x92\xbd\x48\x96\xec\x91\xe3\xab\x40\x5c\x9b\x27\x00\xae\xc2\xe8\x7e\x93\xc6\x99\xe4\x02\x5d\x3b\xda\x05\x20\xb7\x75\x7d\x8c\xcd\x7c\xb1\x74\xbe\xe7\xce\x7c\x95\xcf\x7f\xae\x96\xcf\xce\x6c\xe1\xe4\xbf\x67\xcf\x8b\xf9\xe2\x47\xfe\x6d\xf6\xcb\x99\x2f\x17\x77\x00\xb4\xa7\x5e\xaa\xbd\x90\x28\x64\xf2\x35\x4b\xde\xa5\x8f\x53\x25\xfd\xe8\xc5\x46\x3a\x36\x7a\x73\x02\x30\x2f\x06\xf5\x86\xae\x89\xbb\xa6\xe6\x7a\x18\x00\x30\x88\x0b\x60\x50\x13\xc0\xf8\x08\x33\x4b\xcc\xa4\x75\x7c\x43\xd8\x86\xb8\x1b\x6a\x6e\x3e\xf2\xb8\xa5\xc7\x2d\x3d\xee\x30\x56\x10\xb7\xa0\x66\x31\x0c\x8c\x88\x3b\xa2\xe6\xa8\x49\xee\xec\x89\x6e\x8e\x93\xf1\xfd\xa9\xae\x57\x5f\x7b\xf1\x6e\xb3\x20\x10\x2a\xbd\xf8\xb3\xf5\xf2\x34\x08\x80\x01\x80\x2d\x7a\x9c\x8c\x1f\x4e\xbd\x4a\xff\xb1\x47\x7c\x1f\xcb\xd6\xa3\x6f\xe3\xc0\x43\x9e\xd8\xb1\x2c\x50\x7a\x75\x4b\x02\x40\xb0\x01\x40\xab\xf1\x0e\x60\x8f\x8f\xd8\x78\x7a\xd2\xb5\x7f\x01\x00\x00\xff\xff\x85\x03\x17\x35\xeb\x04\x00\x00") - -func runtimeSyntaxAsciidocYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxAsciidocYaml, - "runtime/syntax/asciidoc.yaml", - ) -} - -func runtimeSyntaxAsciidocYaml() (*asset, error) { - bytes, err := runtimeSyntaxAsciidocYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/asciidoc.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxAsmYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\xe1\xaf\xdc\x36\x8e\xff\x9e\xbf\x62\x90\xee\x61\x93\x0b\xd2\xcd\xcc\x4b\xd2\x24\xf7\xa1\x28\xba\xb7\x40\x3f\xb4\x3d\x5c\xf7\x80\xe2\xfa\x8a\x42\x16\xe5\xb1\xe6\xc9\xb2\x46\x94\xc7\x9e\x01\xff\xf8\x03\x49\x79\xde\x24\x0d\x72\xfe\xb2\x01\xe6\x47\x8a\xa6\x44\x8a\xa2\x24\xda\x79\xad\x0f\xae\x9c\x93\xfb\xb0\x31\xd8\x3f\x79\x02\xae\x38\x5b\x3e\x3c\xd9\x6c\x36\x1b\x7e\x14\x4d\xef\x3e\x6c\x9e\xde\xdf\x7f\xfd\xec\x17\x42\x32\xd8\x3f\xff\xcb\xd3\x27\x4f\xf2\x18\x1c\xaa\xd6\x57\x9b\x7f\x76\x1e\x45\x79\xe3\x71\xd3\x1b\x70\x9b\x76\xc8\x9b\x9f\xbe\xfb\xe5\xc7\x8d\x41\x74\x7d\x13\xce\x4f\x54\xf5\xab\xcd\x0f\x11\x4b\x1e\x6d\xf1\x43\xc4\xda\x7d\x7e\xf7\x56\xb8\x97\x1b\x2c\xa6\xb8\xde\xc5\x22\x16\x9b\x67\xdf\xfa\xe7\xcf\xfa\xe1\x44\xc6\x18\x32\x06\xc8\x98\x9e\x8c\x41\x32\x60\xc9\x00\x90\x89\x40\xd6\x84\x40\xb6\x99\xc8\x06\x4b\x36\x00\xd9\xe0\xc9\xf6\x96\x6c\x9f\xf8\x87\x8d\xe0\x44\x76\x02\x02\x63\x08\x0c\x12\x38\x4b\xe0\x4f\xe4\xd0\x52\x17\x0a\x79\x6e\xf8\x7e\x0c\xe4\x23\xf9\x68\xc9\xc7\xc2\xbf\x81\x7c\x76\x85\x0e\x86\x0e\xc6\xd1\xa1\xa1\x43\xe3\xe8\x60\xe9\xe0\xe8\xb0\xa7\xc3\xde\xd1\x21\xd0\x21\x38\x3a\x44\xc3\x3f\x66\x1a\xfe\x31\x63\xe9\x10\x99\xee\xf9\xc7\x4c\xe0\x1f\x33\x03\x1d\x62\xa2\x43\x44\x3a\xc4\x0b\x1d\x06\x3a\x24\x3a\x24\x47\x87\x34\xd0\x01\xe9\x70\xa1\x83\x9d\x2f\x74\xe8\x13\x05\xd3\xb5\x14\x00\x29\x38\x43\xc1\x21\x85\xc1\x3e\x50\x18\x00\x1b\xc1\x89\xc2\x30\x24\x01\x27\x18\x2b\xb9\x08\xb9\x50\x3f\x9c\xb0\x11\x9c\x88\x27\x18\xdd\x9e\xe2\x90\x68\xc8\x94\x86\xc4\xbf\x96\xd2\x88\x9d\x40\x4b\xd9\x06\xca\x36\x53\x76\x89\x7f\x8e\x21\x2a\x5e\x18\x19\x0a\xff\x22\x43\x4b\x79\x08\x94\x87\x4c\xc8\x7e\xa2\x09\x84\x26\x13\x36\x0d\xa1\x35\xa8\x38\x11\x76\x81\xb0\xcb\x84\xc5\x12\x16\x20\x2c\x9e\xb0\x0c\xfc\xbc\x0c\xfc\x7c\x6c\xa8\x38\x2c\x34\x19\x5f\x68\xb6\xdd\x9e\xe6\x60\x0a\xcd\x43\x7e\xfe\xec\xdb\x97\xfe\xf9\xfd\x7d\xf3\xf4\x0b\x39\xd2\x0c\x63\x04\x72\xb1\xb8\x4c\x3e\x4a\xac\x4e\x8e\x86\xb1\x20\xcf\xcf\xc8\xd4\xcc\xaa\x91\x4c\x4e\x81\x6c\x28\x48\xc1\x64\x0a\x7b\x28\x14\x3c\x43\x60\xe8\x25\xdc\x06\x38\xe5\x02\x06\x0a\x25\x13\xb2\x0e\xb2\x0e\xb2\x0e\xb2\x0e\x96\x4c\x27\x97\x05\xa6\x75\x33\xc0\x96\x1a\xcc\xd4\x14\x6a\x8a\xa5\xa6\x30\x8b\x64\xe1\x28\xd9\x0b\x9c\xbd\x8e\xe7\x06\x9a\x91\x0c\xca\xb6\x74\x70\x9c\x2c\xa1\x45\x0a\x7b\xa4\x80\x28\x89\x01\xb2\xfe\x9a\x1e\x6e\xaa\xa9\x51\xe9\x45\x69\x25\xaa\xe9\xa0\xea\x54\x7a\x51\x7a\x01\xb2\x99\x4a\x26\xc8\x92\x44\x20\x38\x33\x5e\x66\x09\x31\x48\x8c\x05\x5b\xd0\x50\x2b\x69\x41\x96\x1f\x08\x5d\x31\x02\x8e\xb1\x11\x10\xd6\x32\x08\xb7\x17\x10\x36\x08\x08\x1b\x8d\xa2\x36\x1a\x45\x6d\x48\xd7\xa8\xfc\x5e\x51\x1b\x41\x51\x1b\x83\x60\x12\x44\xc1\x0b\xa3\x88\x45\x9a\x44\x2f\x89\x40\x14\x2e\x84\x1d\x48\xb6\x82\x24\x27\xac\x5c\xbe\xc9\xc8\x69\x33\xdb\x7d\x47\x3e\x9e\x80\x21\xa4\x3d\x4d\x8d\xb4\x66\x03\xeb\x46\xb2\x69\xf4\xa0\x23\x75\xfb\x77\x0d\x65\xe8\x31\x53\x86\x82\x96\xa6\x2c\x3c\xf6\xab\x46\xca\x90\x7a\xbb\x4a\x13\xcf\x28\xa7\x28\x9e\x31\xbb\xb2\xce\xcd\x7e\x38\x19\x12\x74\x42\x1a\x45\x6d\x58\x41\xe5\xf7\x8a\xda\x08\x8a\xda\x88\xa6\x92\xda\x6c\x2a\xa9\x4d\x1d\x24\xd6\xd6\xbe\x92\xda\x5c\x86\x18\x84\xa4\xa8\x2d\x54\x72\x11\x52\x1f\x29\xaa\x7a\x52\x99\xaa\x5d\x78\xbe\x7a\x66\x30\x33\xfb\x42\x23\xec\x56\xcd\xbe\x37\xf8\xd0\x0f\xa7\x23\xef\x82\x58\x12\x2a\x3d\x52\xca\xae\x75\xc5\x76\xaf\xae\xdc\xf6\xca\xed\xae\x5c\xe4\xdd\xd0\xba\x68\xdd\xba\x50\x87\x36\xf0\xf9\x1c\xa4\x0b\x55\xdb\x70\x1c\xa9\xaf\x12\x36\x0e\xd5\x19\x5f\x7d\x02\x4a\x66\xc4\x75\x16\xfa\x21\xfa\x32\x64\xea\xf9\xf8\x5d\xe7\x13\x1c\x1d\xd9\xe3\x20\x87\xd3\x71\x49\xd7\xed\xdb\x46\x8e\xa4\x23\x1d\xb2\x1c\x49\x03\xe0\x51\x4f\x8d\x59\x8e\x87\xa3\x9e\x0b\x47\xcd\xe7\x24\xc7\xc3\x51\xb6\xd9\x91\x78\x07\xed\x71\x65\x44\xf6\xbe\xee\x2f\x43\xf8\xe0\xa3\x2f\x84\x65\xef\xe9\xd4\xf3\xe9\x4c\xa7\xbe\x97\x7c\x3e\xf5\x79\x8c\x74\xea\xd1\x9c\xd6\x05\xe2\xd4\xa7\x92\x81\x3b\xa6\x92\xb1\xd0\xa9\xb7\xc1\x99\xcc\x03\x39\x19\x77\xca\xbe\x38\x16\xeb\xf0\xc1\x8c\xd1\x76\xf2\x18\xc7\x9e\x1f\xcc\x43\xdb\x0a\x89\xab\x0c\x86\x8b\x8d\x85\x43\x63\xe3\xba\xc0\x37\x6e\xe6\xab\x21\xd8\xd6\x87\xc0\xd4\x0b\x58\x46\xce\x0c\xa6\x48\x4d\xc0\xfa\x1c\xbd\xa5\xb2\xed\xf1\xc1\x52\xb9\xf4\xf8\x70\x63\x44\xac\x68\xfd\xf5\xcd\x17\x2c\xb6\xbb\xb9\xdf\x52\x6b\x1a\xa4\x96\x6b\x2e\x86\x44\x6d\x13\x80\xda\x06\x4b\xa2\xd6\x76\x48\xad\x0d\x6e\xa6\xd6\x0e\xbd\x40\x52\x4c\xd4\x82\xb3\xa2\x04\x1e\x3d\xe3\x89\xda\x93\x07\x11\x9c\xb2\x62\xa2\xd6\x45\x4f\x6d\x9b\x9d\xa3\xd6\x8b\x11\x2f\x23\x79\x1d\x4a\xaa\x33\xc1\x4c\xad\x67\xc3\x52\xaa\xb5\x3e\xea\xd8\x92\x00\xad\x47\x05\x16\x70\x41\x21\x98\xa9\x65\xfd\x00\x5b\x06\x3b\x31\xba\x78\xaa\x44\x9a\x61\xe7\x94\x14\x21\xfb\x9d\x90\x28\x24\x79\xc6\x0b\xb5\x62\xaf\x1f\x43\xa2\x36\xea\x54\xa3\xce\x28\x8a\xeb\x51\x5d\xe0\xba\xaa\x8d\x9c\x6e\x95\xf0\x8d\xdb\x46\x2c\x56\x89\x58\x56\xaa\x02\x9c\xa8\x4d\xa6\x98\x48\x6d\xca\xae\xa7\x36\x09\x9f\x23\x70\x01\xda\x66\xe4\x6d\xa9\x64\xa2\x56\x07\x66\xe4\x86\x35\x81\x5b\xc7\x5c\xa8\x45\xf9\xb1\x95\x6a\x64\xb1\x21\xe1\xc0\xc2\xf5\x6f\x2b\x41\xc1\xb1\x49\x82\x59\x31\x51\x5b\xb8\xb7\x54\x5e\xed\x6c\x7a\x6a\x67\xdb\x51\x3b\x97\x6c\x6c\xa1\xf6\x1c\x76\xb3\x62\xda\xae\xca\xd0\x96\xef\xd3\x75\x37\x54\x6b\x07\xac\x2b\x01\x3a\x2f\xa8\x9e\x83\xc6\x63\x5b\xe7\xce\x62\x1f\x05\xa4\xcb\xa2\x33\x4a\x96\x8c\x9a\x25\x42\xd2\x4a\xc3\x72\x63\xb5\xf5\xca\x6a\xf5\xb6\xba\x25\xb1\x59\xe8\x22\x58\xe8\xa8\x74\x5c\x3b\xc3\xde\xcb\x5e\xf0\xd5\x43\x5f\xc9\x4a\x47\xe7\x9a\x02\xf3\xea\x33\x8c\xb7\x40\x59\x39\x3a\xef\xb8\xf4\xb9\x23\xe1\x97\x1f\x7e\xfc\xfb\x17\x3a\xba\xbe\x97\x3b\x4f\x8a\xc1\x23\x25\x63\x1f\x10\x61\xaa\xcc\xd4\x08\x33\x2a\x03\xa0\x38\x09\x82\x20\xaa\x08\x55\x36\xd6\xe6\x28\xed\x08\x02\x91\x12\xbf\xa1\xcc\x0c\xb6\x4f\xee\xd8\x54\x3a\x55\x0a\x42\xf7\xa5\xa9\x74\xaa\x14\x28\xf5\x6c\x8e\xe9\x18\xba\x49\x48\x98\x28\xe1\x82\x20\x78\xa4\x84\x99\x2b\x55\xcc\x86\xe5\x39\x28\x8a\x44\x9e\x8e\x4d\x23\x38\x09\x82\x20\xaa\x08\x55\x26\x9e\x8f\x31\xd9\x87\x8e\xb5\x94\x63\xcb\xca\x01\xdf\x77\xf1\xc1\x3e\x84\xeb\xd3\xa0\x32\xe6\xa6\x75\x05\x61\x32\x27\x57\xc3\xe5\x79\x32\x66\x3f\x51\x02\x8f\xc5\x57\x57\x44\x3a\x5d\x1a\x9d\x6f\xe6\xd6\x29\x4a\xf3\x14\x94\xec\xdd\xf5\xa9\x0e\x61\x99\x59\x97\x22\xb2\xd4\xc9\x9c\xf6\x32\xd7\x76\xe7\x81\x52\x6b\xac\x65\xe4\xd5\x6c\x65\x31\x94\xee\x5d\xa5\x85\x52\xdb\x9b\x99\xd1\x47\xc6\x31\x50\x6a\xb3\x4d\x8a\xbe\x6c\x17\x66\xc7\x0c\x1e\xab\x44\x0e\xb3\x24\x07\x55\xd2\x33\x2a\xf9\x5d\x0b\x8f\x33\xab\x15\xd4\x95\x59\x37\x09\x76\x7b\xa2\xd4\x46\xf5\x3b\x29\xf5\xbb\x96\x57\x71\x32\x69\xe5\x42\xa8\x7f\x27\x75\xfd\xb4\xee\x75\x12\x20\x21\xf1\xda\x71\xcd\x99\x92\x20\xf3\x43\xef\x99\x9c\x4a\xf2\xbb\xa4\x0c\xee\x92\x67\x06\xfd\x4e\x1f\x21\xee\x50\x24\x8f\xcf\xaa\x0c\xfc\x29\x21\x23\xbf\xeb\x41\x3f\x5b\xcc\xd4\x9b\x99\x0b\x51\x33\x23\x52\xef\x63\x12\x44\xd9\xa6\x46\x2b\xd4\x2e\x54\xaa\x24\x2c\x54\x49\x8f\x0f\x4b\x21\xab\x54\xfb\x8e\xdc\x18\x83\x22\x22\x65\xcb\xb3\xc8\x96\x67\x21\xf1\x48\x95\x22\x12\x76\x63\x9b\x90\xaa\x74\x11\x16\xf5\x8f\x2f\x1e\x64\x44\xa4\xb1\xce\x5f\xb7\x49\xaa\x4c\x48\xeb\xca\x3f\x3e\x1d\x38\xaa\x91\x63\x3b\xe4\xa4\xf9\xd9\x08\x4e\x94\xb8\x42\x9a\x28\xf9\x88\xb2\x17\xcc\x8c\x4a\x38\xa9\x38\x24\x93\x10\x69\xc9\xac\xeb\xd6\x18\x39\x19\x0c\xc8\x6e\xef\xc6\x76\xa2\x99\x87\x5e\x59\x3f\x6b\x98\x96\x98\x85\x8f\xe3\x1d\x6e\x26\xf8\x38\xe5\x4f\x16\xe2\xf6\xe5\xe0\xcb\xaf\x11\x5c\x64\xd4\x45\xbd\xcd\x9f\x6b\xda\x7c\x9a\x2c\x1f\xe5\x96\x48\x96\xf0\x57\xf2\xf1\x7a\x7d\xba\xa8\xba\xe0\x37\xc1\x96\xb8\xd0\x6d\x66\xdf\xe6\xc7\xed\x32\xdf\xa6\xe1\x6d\xca\xde\xa6\x6a\x0d\xf6\x92\xc5\xd7\x6c\xd1\x57\x9b\xdb\x3d\xb3\xac\xa8\xae\x6f\xcd\xb5\x9b\x35\xac\x6b\xaa\x0b\x7d\x9b\x10\x75\x75\x97\x77\xb4\x25\x07\x34\x31\x74\xc9\x97\x17\xba\xd5\x9b\x1a\x64\xea\x82\x31\xc9\xfb\xba\xe2\xca\xef\x05\x1f\x0d\x11\x65\x08\x8e\xf0\x47\x03\xe9\xf2\x00\x2f\x1b\x1c\x77\xe9\xca\xe8\x22\xc3\x0e\x8e\x95\xd1\xa5\x65\xe6\x9a\x11\x50\x57\xbd\xea\x60\x95\x20\xd4\x84\x60\xe6\x9a\x35\xb0\x64\x06\xe8\x61\xb3\x0c\xfd\x38\xf6\xe3\x50\x75\x08\x5e\x4d\x90\xd5\x04\x59\x4d\x41\xe6\x3d\x4f\xa5\x97\xef\x54\x92\xa3\xa0\x79\x0e\xba\x0f\x60\x39\x68\xe0\xf1\x5b\xd2\xc8\x8d\x31\x28\x22\x70\x8e\x81\xae\x2e\x68\x66\x2a\x41\x90\xd4\x12\x44\xa8\x29\x0c\xcb\x76\x82\x65\x83\x81\xa4\xe7\xba\x45\x90\xb7\xe8\x9d\xbc\xa0\xc2\xd1\xd0\xf2\x52\x3d\x9c\x8e\x3c\x59\xbe\x71\xb5\x0a\x38\x4a\x0a\x8d\xd2\xea\xc6\xb6\xab\x27\x44\xa8\x54\xcb\x09\x79\x9a\x1f\xaf\xf7\xee\xf8\x78\xd3\x1f\x61\x75\x62\xe9\x1c\x2b\x83\xd4\x69\xa2\x74\xba\xdb\x3a\x7d\xda\xe9\x33\xf6\x17\x46\x39\x0b\xb0\x5b\x98\x00\xeb\x0a\xd3\x00\x70\x5c\xa7\x99\xd0\xef\x23\x4f\xd5\xef\xb9\x34\x63\xd2\xe8\xc4\x97\x9a\x42\x77\x13\x80\x96\x45\x9d\x56\x4c\x1d\x3e\x36\x81\x52\xa7\x15\x60\x57\xab\xbe\xae\x96\x82\xc1\xef\x63\xa6\x64\x44\xd5\xf0\xc2\x32\x36\xab\x1c\x03\x3e\x1a\x80\xb7\x4b\x13\x9c\x1c\x4f\x4a\x6b\xfb\xb4\x08\x38\x53\xf3\x30\x8a\x86\x50\xac\x74\x91\x23\x90\x8f\xe8\xe4\xd4\x73\xfa\xde\xb3\xf6\xe0\x5f\x6e\x8c\x8e\x13\x7f\xc0\xb1\x56\x9b\x5a\xb1\x70\x02\xa8\x07\x4d\x65\xf4\xea\x41\x3d\xa6\xb0\x1e\x5a\xf5\x76\xaa\xd7\x12\x68\x0b\x54\x53\x5b\x4c\xf8\xf0\x6b\x94\xc0\xdf\x84\x1c\xf5\x28\x6c\xae\x37\x1e\x13\xf8\x9b\x90\xa3\x1c\x8c\x38\xb3\x6f\xf2\xa5\xb6\x32\x38\xf3\x62\xa8\x04\x16\xc9\x71\x91\x2c\xbd\xa6\x45\x67\x5a\x74\xa6\x45\x67\x5a\x74\x60\x91\x30\x23\xdf\xee\xb5\x2c\x3f\xd6\xda\x1f\xa6\xe5\xbb\xd4\xba\x0f\xef\xea\xb5\xae\x43\xfd\x94\xa5\xe7\x43\x2c\xb8\xf2\xab\x50\xb6\x77\x3b\xf5\x02\x4b\xf6\x57\xae\x17\xce\x5f\x65\xfe\x2a\xdb\x97\x75\xfb\xf2\xd4\xf6\xba\x0f\x2b\x83\x95\xc1\x45\x82\x57\x89\x6c\xd0\x47\x5e\xe4\x38\x36\xd7\xee\x95\x5f\xe4\x57\xe1\x55\x82\x8b\x44\xc6\x8c\x57\xc3\xf1\x6a\x39\x5e\x4d\xc7\xab\xed\x78\x1d\x23\x5e\x07\x51\x0e\x3f\xf7\x7a\xf7\x7d\x3e\xa7\x32\x7c\xe9\x24\x72\xe8\xa2\x25\x25\xc1\x60\x61\x16\x9c\xad\x64\x91\x3c\xb8\xf3\xde\x45\x83\xe8\xb5\xed\xd7\x7e\x70\xee\xcc\x36\x47\xc0\xd7\xc4\x5c\x74\x73\x71\xc2\xf5\xb8\xdf\x2e\xcc\x8e\x99\xdd\x9b\xb7\xac\xb7\xf0\xcb\x73\x65\x77\x9f\x9b\xda\xff\x44\x18\xec\xc8\xf6\x1c\x7c\x69\x82\xf2\x3f\x89\x40\x68\x82\x25\x6f\x5d\x93\x1e\xff\x63\x47\x29\xd0\x08\xdb\xcf\x58\xf8\x6a\xf3\xdf\x6e\xef\xb1\xb8\x8c\x75\x7c\x0f\x2e\x16\xdf\x7a\x97\x6f\x0d\x04\x32\x1d\x35\x81\x9a\x8e\x6c\x20\xdb\x11\x04\x82\x8e\x9a\x14\x08\x7d\xa0\xfc\xae\xa1\xfc\xbe\xa1\xbc\x7d\xc5\xb0\x6d\x08\x7c\x20\x4c\x81\xf2\x76\xc7\x92\x3b\x86\xd7\x0c\x6f\xfe\x14\xd3\xcf\x5a\xb4\x13\xe1\x44\x65\xa2\x36\xfd\x01\xc8\x38\x24\xcb\xc4\x27\x11\x09\x5a\x24\x8b\xc4\xf5\x18\x92\x43\x6a\x91\xf6\x48\x7b\x28\x99\x3c\x43\xc9\x14\x98\x9a\x99\x9a\x99\xec\x4c\x30\x53\x93\x08\x3d\xe5\x77\x13\xe5\xf7\x13\xfb\xcb\xb0\x9d\x08\x3c\x61\x62\x6f\xb9\x7d\xc7\xf0\x9a\xe1\xcd\x44\x9f\xf9\xb8\xf1\x59\x8f\xaf\x5e\xf9\x44\xce\xcc\xe4\x9a\x99\x9c\x9d\xc9\x01\xf3\x89\x9c\xd8\x05\xca\xef\x81\xed\x32\x6c\x81\x1c\x78\x72\x6a\x99\x25\x77\x0c\xaf\x19\xde\x00\x39\x1e\xa9\x0d\x66\x8f\x24\x75\xe4\x3a\x3f\xfa\xfe\x15\xf5\xfd\x96\xfa\x7e\x47\x7d\x7f\x47\x7d\xff\x9a\xfa\xfe\x0d\xf5\xfd\x5b\xea\xfb\x6f\x28\x9b\x99\x72\x33\x53\xb6\x33\x65\x60\x3e\x51\x16\xdf\x28\xbf\x67\xcf\xd8\x31\xca\xe0\x29\xab\x5f\xec\x16\x7b\xc5\x4e\x51\xf6\x89\xb2\xfa\x64\xf3\x2b\xb2\x79\x4b\x36\xef\xc8\xe6\x3b\xb2\xf9\x35\xd9\xfc\x86\x6c\x7e\x4b\x36\x7f\x43\x36\xbf\x23\x9b\xdf\xb3\x8e\x28\xb2\xe6\x96\x55\xb7\xac\xbb\x65\xe5\xed\x1b\xea\x71\x22\xc8\xaf\x08\xf2\x96\x20\xef\x08\xf2\x1d\xe5\xd7\x04\xf9\x0d\x41\x7e\x4b\x90\xbf\x21\xc8\xef\x08\xf2\x7b\x56\x11\x3d\x56\xdc\xb2\xe6\xf6\x8e\x81\x95\xd7\xa6\x15\x96\x57\x84\x65\x4b\x58\x76\x84\xe5\x8e\xb0\xbc\x26\x2c\x6f\x08\xcb\x5b\xc2\xf2\xcd\xba\x41\x66\x0e\xf1\xcc\x31\x9e\x39\xc8\x33\x47\x79\xe6\x30\xcf\x1c\xe7\x99\x03\x3d\x73\xa4\xe7\xbe\x7f\xc7\xf0\x5e\x94\xb5\x8b\xf4\xd9\x4a\xa7\xad\xf4\xda\x4a\xb7\xb5\xfe\x9f\xd9\xf4\x99\x4d\x9f\xd9\xf4\x99\x4d\x9f\xd9\xf4\x99\x4d\x9f\xd9\xf4\x99\x4d\x9f\xd9\xf4\x99\x4d\x9f\xc5\xf4\x59\x4c\x9f\xc5\xf4\x59\x4c\x9f\xc5\xf4\x79\xbd\xe9\x0b\x9b\xbe\xb0\xe9\x0b\x9b\xbe\xb0\xe9\x0b\x9b\xbe\xb0\xe9\x0b\x9b\xbe\xb0\xe9\x0b\x9b\xbe\xb0\xe9\x8b\x98\xbe\x88\xe9\x8b\x98\xbe\x88\xe9\x8b\x98\x66\x94\x7e\x5b\xe9\xb8\x95\x9e\x5b\xe9\xba\x95\xbe\x3b\xe9\xbb\x53\x7b\xd2\x77\x27\x7d\x77\xd2\x77\x27\x7d\x77\xd2\x77\x27\x7d\x77\xd2\x77\x27\x7d\xef\xa4\xef\xdd\xe7\x8f\xbc\xef\x87\x88\xc5\xc4\x82\xd7\x73\xf6\xa7\xb1\x6f\x5c\xe6\x99\x97\xcd\x34\xe4\x87\xe5\x30\xb4\x55\xf3\xeb\x28\x0a\x35\x1a\xd4\xd1\x77\xf4\x6a\x7e\xfe\xe2\xb7\x57\x2f\xdf\xff\xfe\x42\xda\xcf\x5f\xdc\xc4\xef\xb3\xdd\x5e\xcd\xac\xbe\x31\x2f\xdb\xcd\x77\x2f\xff\xf1\xfb\x8b\x4f\x9c\xfa\xaf\xec\x52\x1e\xac\x43\x1c\xf2\xe6\xd9\x4f\xdf\xfd\xf2\xe3\xf3\x3a\x5a\xd2\x27\x1f\x36\x4f\xff\xed\xc5\xb3\xfb\xfb\x17\x74\x7f\xff\x2d\xff\x98\x3c\xff\xcd\xbc\xbc\x6c\xbe\x7b\xf9\xbf\x1b\x71\xe5\xe9\x9f\xbb\xdc\xdf\xff\xf6\xdb\xd7\x9b\x5b\xad\x7f\xbf\xbf\xff\xfd\xd6\xf2\xcf\xa5\x73\xf9\xcb\xc5\x8c\xcb\x91\xf6\x61\x68\x4c\x20\x74\xf2\xe7\x2e\x84\x6e\xcf\x7a\xf4\x07\x16\x93\x0b\xdd\xdf\x7f\x5d\xdc\x2c\x14\x4c\x31\x4c\x9b\x95\xa5\x0e\x34\x04\x13\x01\x10\x1c\x09\x0a\xf1\x8b\x0a\x0c\x5f\xce\xc9\xdb\x59\x6f\xfe\xf8\xfd\xc5\x87\x3a\x9f\x9b\xd0\x73\x85\x14\xf7\x1f\xea\x34\x37\x1b\x71\x93\xad\x3e\x7d\x7a\x95\xb9\x08\x9f\x48\xf0\xc1\x27\x71\xed\xfe\xfe\xeb\x47\xe9\xcd\xdf\x07\x2d\xff\x6e\x2d\x25\x67\xbd\x09\xdf\x77\x26\x3f\x76\x5d\xeb\xce\x5f\x3f\xf5\xe6\xaf\xff\x4a\x67\x7a\x09\xfd\x9f\x9c\xf8\x8f\x4f\x9d\xf8\xcb\xff\x63\xae\x0c\x30\x7c\xd8\x3c\x7d\xf6\xcf\x9f\xff\xfe\x33\xfd\xfa\xeb\xaf\xf4\x8f\x1f\x7e\xfd\xf1\x3f\x9f\x7f\xf8\xf6\xe9\x93\x27\xff\x17\x00\x00\xff\xff\xc4\x3e\x7c\x48\x83\x25\x00\x00") - -func runtimeSyntaxAsmYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxAsmYaml, - "runtime/syntax/asm.yaml", - ) -} - -func runtimeSyntaxAsmYaml() (*asset, error) { - bytes, err := runtimeSyntaxAsmYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/asm.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxAtsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x17\x7f\x73\xdb\xba\xed\xff\x7c\x0a\xd6\x69\x57\x29\xa9\x9d\xec\xed\xaf\xe7\xfd\x90\xbb\xae\xbd\xdb\xae\xef\x75\x77\xed\xee\x7a\xb3\x9c\x8c\x96\x40\x9b\x0b\x45\x6a\x24\xa4\xd8\x19\xde\x3e\xfb\x0e\x94\x64\x39\x6d\xbc\xeb\x75\xbe\xb3\x08\x40\x20\x00\xe2\x07\x01\x29\x6d\x00\xf7\x35\xcc\xc5\xeb\x4f\x1f\xcf\xce\x4a\x40\x28\x70\x7e\x26\x84\x10\xfc\xca\xca\x0a\xe6\x62\x92\xe7\xb3\xa4\xa4\x2d\x85\x54\x62\x78\x3e\x39\x3b\xf3\x8d\x81\xd0\xb1\x4d\x45\x09\x4a\x36\x06\xe7\x22\x5f\x2f\x97\x73\x69\x6c\x53\xcd\x57\xab\xcb\xe5\xcd\xf5\xf4\xc7\xd7\xd3\xbf\xcb\xe9\xc3\xea\x2c\xb2\x9e\x8b\x0f\x35\x78\x89\xce\x87\x7e\x6b\xd8\x57\x6b\x67\x66\xae\x27\xcf\xc5\x64\x39\x9b\xff\xf6\xf2\x1f\xf4\x9f\xdf\xfd\x21\xfb\xfd\xcb\x3c\xff\xd5\x8a\xae\xe8\x05\x4d\xe9\x15\x3d\xa3\x3c\xbf\xa0\x05\xe5\xf9\xf9\xe4\xd4\xf6\xfc\x66\xd0\xf4\x69\x5f\x43\x78\x25\xe4\x3a\xa0\x97\x05\x0a\x3e\x64\x10\xd2\x96\x22\xb8\x0a\x44\xed\xa1\x04\xa5\x2d\x30\xee\x71\xb0\xa7\x73\x45\xbe\x4e\x64\x59\x7a\x92\x1b\xc8\x1e\x68\xed\x9c\xa1\x62\x2b\x3d\x15\x26\x50\x88\x50\x13\x9f\xa5\x6b\xd6\x06\xc8\xf4\x2b\x28\x45\xb0\xb3\xa4\x8c\x93\x48\xda\x62\x52\xa3\x4f\x33\x32\xda\x16\xc6\xd5\xe8\xa9\xd1\x16\xd3\x7c\xfd\xa5\x32\xa3\x2d\x52\x13\x9f\xa6\x87\xe3\x62\x25\x12\x6f\xf3\x20\x0d\x79\x50\x14\xf4\x03\xdc\x22\x85\x61\x8d\xbc\xf1\x19\xd0\x6b\xbb\x21\xbc\xd3\xb6\xa4\x56\xc3\x3d\x52\x9b\xe1\x75\x4d\x2d\x52\xeb\x74\xf9\x84\xd6\xda\xbb\x9a\x70\xb9\xb8\x5e\xed\x6b\x20\x26\x77\x1b\x07\x4a\x44\x22\x30\x92\x0e\x5c\x27\xe4\x2d\x2f\xa7\xab\x83\xcc\x0e\x19\x80\x63\xd9\x23\xe1\x80\x3c\x7e\xf5\x68\x17\x03\xe9\x10\xd7\x8f\x28\x11\x2a\xb0\x87\x90\x85\x81\xd0\xc5\x6d\x1d\xa2\x8d\xbc\xf2\x23\x1e\x52\xae\x43\xe7\x12\x06\x30\xd9\xd7\x90\x66\x03\x91\xa4\x2d\xf9\x2f\x4d\x70\x24\x03\x25\x1e\xd2\x4c\x86\xd0\x54\x40\x6b\xd8\x68\x4b\x49\xed\xd3\xac\x90\x01\x28\xc4\x65\x3c\xfa\x63\xd5\x85\x91\x21\x94\x50\x50\x29\x51\x46\xbd\x0c\x24\x6d\xe7\xaf\x2c\x9a\xc5\x94\xa8\x95\x01\x4e\x3c\x2a\x1d\x95\x7b\x6b\x9c\x2c\x09\x4c\x00\x02\x5b\x12\xec\x0a\xa8\x51\x3b\x4b\xb0\x8b\xdb\x60\x87\xad\x4c\x3c\x99\x94\x42\xa6\xd5\x29\x0b\xb4\x8a\x66\xea\xaa\x66\xc9\xca\x79\xd2\x96\xb4\x55\x7a\x97\x18\x8a\x99\x08\x48\xc6\x15\xd2\x50\x25\x0b\xef\x4a\x50\x0c\xf0\x62\x1d\x92\x53\xe4\x6a\x72\x9e\x9c\x8f\xa6\xb8\x16\x7c\x34\x2c\xa9\x3d\x50\xed\x02\x92\x75\x36\x55\x7a\x77\xca\x00\x3e\x35\x4b\xf3\x50\x10\x9f\x8e\xe1\x80\xb2\x08\x9c\xa0\xb2\xc7\xa2\xc8\x80\xb2\x95\x9e\x97\x04\x75\x91\x66\x14\xf6\x15\x18\x5d\xf1\xaa\x2d\xfa\x2e\x93\x41\x11\x6e\xc1\x12\xfa\x7d\xf4\x22\x13\xda\xe8\xc9\x12\x4e\x7a\x61\xc8\x2b\x66\x8e\xb1\x6b\x65\x3c\x3e\xdd\xb3\xa8\xfb\x2d\x78\xa0\xfb\xad\x36\x40\xf7\x1a\xb7\xf1\x11\x9d\xcc\x40\x0c\x1b\x03\x6d\x32\x06\x2d\xe2\x8f\x72\xfe\xeb\x9c\x1b\x2a\x64\x48\x35\xc6\xb3\x81\x70\xfc\x16\xd7\x6e\x17\x57\x65\x64\x9f\x90\x3d\xa5\x3d\x90\x74\x55\x1b\x5e\x3d\x0c\xd0\xc9\x9c\x93\xa1\xab\x93\xe3\x83\x46\x82\x72\x3e\xbf\xe8\xce\x99\x5f\x1c\xaa\xe7\xe7\xa6\x5a\xc3\xe1\xf6\x2d\x9c\x0d\x28\x2d\xce\x6c\x24\xc7\x0b\xfc\x7a\xfa\xe3\x6c\x75\x99\x2c\xe1\xed\x8a\xe5\x64\x4c\x58\x5d\xa6\xd9\x52\xbd\x33\xef\x57\xd9\xc1\x8e\x27\xf6\x5e\x2f\x77\x9f\x57\xcb\x78\xe9\xbf\x93\x53\xb5\xba\x48\xf2\xd9\x31\x9a\x66\xcb\xfa\xaf\xc7\x52\xbf\x41\x66\xd2\x71\xd2\x97\xb2\x2f\xd3\xa5\x79\xdf\xfc\x6d\x75\x91\xaf\x87\xb3\xbd\x6b\x6c\xc1\x45\x33\xf5\x60\x24\x42\x29\xee\x60\x7f\xef\x7c\x19\x5e\x89\x50\x43\xa1\xa5\x11\xaa\x67\xe9\x1a\x01\x37\xb7\x50\xcb\x02\xc2\x4c\xfc\xec\x50\xf0\x35\x6b\xf6\x42\x97\x60\x51\x2b\x3d\xfa\x69\xa4\x44\x93\x94\xde\x75\xfe\x56\x4d\x66\x49\xd9\x1d\x15\x32\xa0\xb2\x54\x7b\xb9\xd3\x5c\xac\xe0\x2d\x19\x59\x91\xe1\x47\x64\xe5\x40\xc6\xb0\x8d\x68\x75\xdc\x0b\xbe\x56\xb1\x20\xe5\x4c\xb9\x20\xe5\x01\x16\x2c\x6d\x11\xc5\x2d\x88\x5b\xd3\x22\x96\xc3\x82\x9b\xc2\x82\x94\xe5\x08\x3f\x21\xe7\x79\x7e\x7f\xe4\x9f\x0f\xb8\x05\x7f\xe4\x94\xc1\x19\x02\x94\x82\x02\xc3\x6c\x36\x1b\x72\xac\x73\xd7\x5c\x24\xf9\xf3\x44\x7a\x5f\x87\x07\xe2\x05\x3d\x37\x1e\x5a\x7b\x90\x77\x54\x38\x8b\xda\x36\x40\xe5\x0f\x45\x77\xb7\x81\x91\x7b\x6e\x82\x95\x0c\x77\xb7\x89\xc5\x2a\x76\x43\xee\x5b\xf7\x1e\x49\x1a\x93\xa6\x47\x79\x7c\xac\xa3\xdf\x34\xb8\xae\xbb\xf5\x6e\x03\xfa\xa6\xc0\xa3\x3b\x30\x36\xb7\x78\x17\x1a\x5e\x54\x21\x4d\x04\xaa\x08\x98\xce\x00\xa3\x11\xbc\x34\xa7\x54\x19\x9d\x05\xbc\x6d\x91\x3a\xa0\x5f\xa9\xda\x0f\xe3\x0e\x83\xbd\x67\xa8\xda\xf3\x6d\x19\x41\x2f\x75\x00\xbe\xd8\x12\xe7\xcb\x34\xbb\x6d\xf1\x94\x86\x91\x07\x47\x7e\x0a\x5b\xd7\x75\xd3\xe0\x4c\x0b\xfe\x56\x86\x00\x1e\x07\xac\x05\xaf\xd5\x9e\x10\xaa\x1a\x6c\x0b\xfe\x94\x6c\x6c\xea\xc4\x40\x54\x4f\x07\x78\x04\x09\xf7\x1e\x6a\x6a\xa5\x97\x7e\x43\x6d\xe1\xea\x3d\xd8\x96\x99\x47\xf8\x29\xd1\xf9\xb3\x84\x43\x04\x3b\xcb\xd1\x82\x9d\xed\x31\x0e\x1e\x83\x4c\x65\x17\x73\x4c\x8d\x7c\x78\x4a\xc2\x3a\x51\x8d\x4d\xae\xe9\xd7\x29\xf1\x3c\x93\x66\xdd\xc8\x13\x29\x19\x15\xc6\x79\x50\x23\xd2\x43\x46\x73\xd1\xa8\x13\xf2\xb2\xda\xf3\x10\x65\x6c\x9a\x3d\xa3\xda\x83\xf7\x3d\x8c\x4d\xfd\xf0\x6c\x9c\x08\x78\x9e\x7b\x23\x62\x47\xeb\x0a\xdb\xc5\x4c\x7f\xfd\xe9\x63\x4f\xec\x85\xd7\x1e\x6a\xef\x8a\xb9\xb8\x59\x2e\xe7\xb1\xf0\xe7\xab\xd5\xc5\xf9\x31\x92\x74\x43\x21\x57\xf2\xa6\x92\xc4\x83\x5b\x53\x02\x25\x8d\x25\xad\x6c\x96\x72\x4f\x01\x5b\x6a\x45\x60\x12\xad\x28\x40\x4a\x5a\xd1\xbd\xf4\x96\xc7\x2f\xf0\xde\x79\xea\x42\x3b\x1e\xea\x5b\xf4\x16\xae\x84\x0d\xd8\x1f\xa8\x07\x7e\x43\x60\xb4\x8a\xea\x8c\x56\xb1\x13\x46\x0f\x50\xf4\x09\x79\xf8\x57\xa3\x3d\x74\xdd\x71\xe8\xa9\xfd\x1c\x91\x8e\x25\xff\x47\xe7\x0c\x48\x2b\x5a\x69\x1a\xf8\xea\xd6\xe7\xc1\x36\x7a\x1a\x7d\x03\xa4\x24\xf7\x7c\xdb\x18\x13\x05\x0c\x63\xf4\x16\xc4\xe4\xc5\xbf\xc5\x6c\x36\x13\x2f\x7e\x99\x88\xb5\x71\xc5\x9d\xd0\x96\x4f\x18\x84\x72\x1e\xf4\xc6\x0a\x36\x5a\x68\x8b\x2e\x3a\x5d\xa2\x28\x5c\x55\x6b\x03\x53\xd4\x15\xf4\x92\xde\x74\x3c\x41\x97\x20\x9c\x12\x1a\x85\x0e\x62\x03\x96\x8b\xd5\xec\xc5\x1b\xe1\xbc\xf8\x8b\x6c\xe5\xc7\xc2\xeb\x1a\xbf\xf8\xb4\x88\x28\xff\x02\x4a\x8f\x73\x36\x69\x79\x7e\xf3\x7c\x95\x4d\x0e\x6f\xc0\x96\x4c\xff\x65\xa4\x84\x3b\x5d\x77\x1f\x2f\x23\xcd\xe8\x4a\xe3\x74\xe3\x5d\x53\xcf\xbf\xfc\x7c\x38\x30\x1d\x7d\xdd\x0c\xbf\xa9\xe8\x73\x61\x2e\x26\xc5\xe4\xe4\xab\x7f\xca\x56\x86\x78\x80\xc9\xd9\x38\xb1\xf2\x68\xde\x65\x26\x7f\x36\x7c\x15\x87\x6e\x76\x9f\x8b\x7c\xb2\xbc\x99\xac\x2e\xf2\xc9\x49\x86\x97\xcb\x9b\x97\xab\x8b\xfc\xe5\x41\xf6\x1b\x57\x8d\xb3\xf0\xb9\x98\x5c\x5d\x5d\x5d\x4d\xd8\xfb\x91\x2a\xa0\x05\xbf\xc7\xad\xb6\x1b\xd1\x58\xd4\x86\xbd\xee\x41\x16\x5b\x08\xe2\xed\x87\x77\x07\x3d\x91\x7d\x16\x63\xfb\x95\xab\x59\xe4\x63\x27\x3f\x97\xff\xdb\x53\xe8\x4a\x37\x17\xc9\xa7\x0f\x7f\xfa\x40\x9f\x3f\x7f\xa6\x77\x7f\xfe\xfc\xd3\xdb\xbe\x5c\x47\x6d\x46\x5b\x78\x42\xd9\x17\xaa\xbe\x5f\xd3\xb9\xf8\xe9\xfd\xd4\xe8\x3b\xe8\x73\xb6\xd7\xfb\x4d\x67\xce\x93\xfc\xe2\xb1\x21\xf9\x45\x9e\xfe\x3f\xb6\xbc\xf9\x5e\x53\xae\x9e\xb0\xe4\xea\xbb\x2c\xf9\x6f\x00\x00\x00\xff\xff\xdb\x34\xe9\x45\xeb\x0f\x00\x00") - -func runtimeSyntaxAtsYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxAtsYaml, - "runtime/syntax/ats.yaml", - ) -} - -func runtimeSyntaxAtsYaml() (*asset, error) { - bytes, err := runtimeSyntaxAtsYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/ats.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxAwkYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x94\xdd\x72\xea\x36\x10\xc7\xef\x79\x0a\xc7\xa1\x3d\xf9\x18\x48\xa7\x77\xa5\x1f\x29\x01\x9b\xe3\x99\x20\x9f\x31\x6e\xca\x34\x4a\x3a\xc2\x5e\x83\x06\x59\x72\xa5\x75\x21\x9d\x7d\xf8\x8e\x20\x39\xe1\xa4\x19\xda\x9b\xfa\x62\x77\xb5\xd2\xfe\xf6\x2f\x4b\xa3\x4a\x2a\xc0\xa7\x06\x06\x81\xd8\xac\x3b\x9d\x12\x10\x0a\x1c\x74\x82\x20\x08\xfc\x94\x16\x35\x0c\x82\x90\xf3\xbe\xd8\xac\xbb\xe1\x2e\xbf\x02\x51\x82\x1d\x04\xe1\xe3\xe9\x49\xff\x62\x21\xf5\xd5\x19\xe8\x3f\x83\xcb\xf3\x6b\xb1\x59\x9f\x05\xd4\x3d\x0f\x3b\x1d\xdb\x2a\x70\x7b\x4e\x2f\x68\x2c\x34\xd6\x14\x3b\x50\xf7\x7e\xd8\xfb\x4d\xf4\xfe\xfa\xa6\xf7\xdd\xef\x27\x3f\x9f\x76\x2f\xae\x39\xef\x3d\x5c\x86\xef\x2c\x5d\x9c\x0d\xb3\xc9\x88\x86\xd9\x24\x61\x63\xef\xee\xe8\x26\x61\xd3\x74\x1c\xd1\x28\x65\x77\xf1\x34\xa7\x88\xdd\x25\x59\xca\x28\xca\x32\x96\x52\x9c\x44\xb7\xe3\x5f\x93\x71\xfe\x71\x76\xce\xf9\xe2\x7d\x66\x9c\xdc\x46\x6c\x38\x8d\x28\x66\x19\xc5\x33\x4a\x26\x2c\xcd\xa2\xd1\x70\x16\xd1\x6d\xc2\x72\x62\x31\xb1\x8c\x52\x4f\x4f\xe3\x19\xa5\xd9\x11\xd6\xa7\x2c\x1d\x25\x2c\x4e\x29\x9b\x51\x96\x53\x36\xcb\x87\xde\xdd\x46\x6c\x92\x7f\xa4\xd9\x2f\x37\xb3\xe8\x13\xe5\xd1\x3c\x1f\xa7\xd3\x61\xc2\x0e\x41\xb2\x04\x8d\xb2\x92\x60\xfb\x85\x12\xce\x3d\x13\xab\x56\x17\x28\x8d\x26\xd8\x22\x68\xe7\xa3\x9b\x68\x92\x30\x8a\xd8\xf8\xb0\xdc\x3d\xd5\x0b\xa3\xfa\xa6\x01\x2b\xd0\xf8\xd3\xb8\xe7\xbc\x77\x79\x71\xf5\xd5\x23\x9d\xfc\xf8\xf5\x0f\x3f\x5d\x7f\x3f\x78\x20\xce\x39\x27\xce\xef\x89\xf3\x87\xcf\x95\x28\x10\x6a\xd0\x38\x08\x9e\x5b\x1a\x4b\xb2\xa2\xcd\x4a\x2a\xa0\xd2\x10\x28\x07\x24\x35\x95\xa0\x00\x81\x60\x2b\xf1\x8b\xce\x0d\x14\x52\xa8\x97\xea\x85\x05\xb1\xa6\xc2\x68\x94\xba\x05\xb2\x80\xad\xd5\x5f\xac\x7f\xed\xb7\x2b\x28\x94\x71\x40\x4b\x40\x25\x35\x90\x86\x2d\xee\x8c\xbf\x6d\xd4\x58\xa9\x71\x6f\x2b\x72\x4f\x0e\xa1\xa6\xaa\x52\xad\x5b\x1d\x23\x0a\x14\xfa\x5b\x2a\x8c\x23\xd8\x36\xe4\x09\xca\x2c\xc9\x0a\x5d\x92\x93\x9a\xdc\x1f\x16\xc9\xf9\xe1\x51\x88\x33\x16\x69\x67\x25\x2d\x41\xbb\x76\x41\x4b\x6f\xa4\x2e\x61\x4b\x0a\xf4\x12\x57\x54\x0b\x2c\x8e\x6a\x71\x8d\x92\x48\xee\x65\x0b\x68\xd1\xe8\xb6\x26\x0f\x72\xed\xc2\xa1\x25\x34\xca\x6c\xc0\xfb\xb6\x69\xc0\x1e\x83\xd5\x6b\x94\x35\x78\x4a\xb5\x0f\x9e\x9c\xf7\x47\xb7\xa1\x4b\x2a\x4c\xdd\x28\x52\x6e\x25\x2b\x24\x63\xc9\xee\xa3\xad\x39\xda\x6c\x21\x75\x89\xb0\xc5\xd2\xd4\xc2\x9f\x7e\xb1\x04\xf4\x63\x2a\x0b\xfd\x1c\xbe\x7f\x0d\x82\xf0\xaa\x7f\x71\xff\xe8\xef\xda\xc3\x55\xd8\x79\x9e\x2f\x8c\x76\x28\x34\xf6\x1d\x5a\xa9\x97\xfb\xa7\xc0\x7f\x0e\x85\xdd\xf5\x0c\xc3\xcf\x39\xd0\xe5\x9b\x8c\x5b\xcb\x66\x27\x8c\xf3\xfe\x6b\xf6\xe0\x55\x79\xf9\x0e\x3b\xed\x25\x8d\x56\xc2\xbe\x96\xfe\x57\x39\x1f\xde\xaa\xf9\xf0\x7f\x8a\xa9\x77\x3f\xfe\x1f\x22\x4e\xdf\x8a\xe8\xfe\x4b\x3b\x34\xa5\x19\x04\xe1\x59\x9e\x8e\x53\x9a\xcf\xe7\x14\x27\xf3\x69\x74\x3e\xb8\x0e\x3b\x9d\xbf\x03\x00\x00\xff\xff\x75\x88\x25\x4c\xdb\x05\x00\x00") - -func runtimeSyntaxAwkYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxAwkYaml, - "runtime/syntax/awk.yaml", - ) -} - -func runtimeSyntaxAwkYaml() (*asset, error) { - bytes, err := runtimeSyntaxAwkYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/awk.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxCYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x54\x4d\x93\xdb\x36\x0c\xbd\xfb\x57\xa8\x6a\x5a\x8b\x76\xec\x75\x92\x4e\xda\xb8\x1f\x9e\x5e\x7a\xca\xf4\xd6\x4b\x45\xad\x86\xa2\x20\x0b\xb3\x14\xa9\x21\x41\xdb\xdb\x20\xff\xbd\x43\xd9\xeb\x75\xb7\x99\xe8\x20\x89\x04\x1e\x01\x3c\x80\xaf\x43\x03\xf4\x38\xc2\x36\xd3\xcb\xe5\x6c\xd6\x02\x81\xa6\x6d\x36\xcb\xb2\x2c\x4b\x36\xab\x06\xd8\x66\xb9\x94\x6b\x5d\x68\x1e\x47\x3e\x9d\xc4\x2b\x96\x72\xdd\x17\xfd\xed\x12\x71\x37\x7d\x8b\x16\x3a\xf1\x2a\x9f\xcd\x7c\x34\x10\xb6\xd3\x39\xab\x0c\x5b\xb0\x84\x1d\x82\x9f\xce\x6a\xca\xdf\x57\x7f\xd7\x55\xb9\x59\x7d\x98\x7e\x96\x52\x36\xf9\xc5\xf5\x9c\x4c\x72\x2a\x54\x24\xc7\x9d\x71\x8a\xb8\x75\xb1\x31\xc0\x8d\x73\x86\x75\xaf\x3c\xa3\x25\x0e\xbd\xf3\xc4\xc6\xd9\x3d\x07\xfc\x07\x5c\xc7\x60\xe3\xc0\x07\x87\x2d\x07\x52\x84\x9a\xb5\xb3\x81\xce\x6f\x38\x8d\x9e\x03\xf9\xa8\x89\xa3\x45\x67\x39\x85\x6a\xa1\x63\x38\x11\x78\xcb\x45\xb4\x62\x17\x70\x6f\xa1\x65\xb4\x06\x2d\x88\x2f\xe7\x55\x84\x5d\x8a\x27\xb8\x28\x62\xbd\x13\x3b\xb4\x54\xfc\xc4\x6f\xde\xf3\xbb\xb7\xfc\xfe\x07\x1e\xc9\x0b\x21\x6a\xba\x01\xa7\x6c\x60\x00\x4b\x97\x13\xb4\x51\x21\x70\xe2\x36\x8c\x4a\x03\x13\x0c\xa3\x51\x04\x3c\xc6\xc6\xa0\xe6\xd1\xbb\xd4\x07\x68\x79\xf4\x78\x48\x86\x14\x3e\xf9\x33\xf5\x18\xb8\xf3\x08\xb6\xe5\x03\x7a\x8a\xca\x70\x0c\x68\xf7\x3c\x44\x52\x89\xa4\x83\x33\x8a\xd0\x00\x7b\xd8\x63\x20\xf0\x0c\xa7\xd1\xa0\x46\x12\x5f\x49\xa9\x73\x9e\xb1\xe3\x63\x9f\x90\xad\x63\x30\x01\x58\xab\x00\xdc\x42\xa7\xa2\x21\x0e\x47\x24\xdd\x7f\xed\x0c\xf2\x8f\x4c\xbd\x77\x47\xd6\x8a\x74\xcf\x6e\x04\xaf\xc8\x79\xb6\x70\xe4\x16\x0c\xd0\x7f\x28\x0d\x23\x68\x54\xe6\x02\xde\x3b\x72\xa9\x53\x84\x36\x02\x37\x1e\xd4\x03\x7b\xa0\xe8\xed\x2d\x66\xf4\x30\x7a\xa7\xb7\x59\x7e\x5f\x96\xdb\x89\xbd\x6d\x55\x2d\xbe\xbd\x5d\xa4\x19\x44\x0b\x3c\x7a\xb5\x1f\x14\xa3\xd5\x26\xb6\x90\xfa\xcb\xd8\xd9\x9d\x98\x7a\x6e\x5b\xec\x18\x4c\x81\x1d\x07\x10\x53\xe9\xca\xdb\xc4\x23\x78\xef\xbc\x78\x0a\x38\xcd\x8e\x9a\x4a\x9c\x17\xe5\xfd\x5c\x4a\x29\x2b\x2e\xd2\xa7\x94\xf9\x5c\x35\x9d\xf5\x74\x98\x76\x85\x98\xf3\x64\x2f\x8a\x72\xb3\x7a\x57\xed\xca\xcd\xea\xc7\xea\xd3\x9b\xd7\x6f\x3f\x5f\x4d\xa7\xf3\xd0\xff\xa1\x56\xdd\xd9\x32\xff\x12\x99\x75\xad\x88\x3c\x36\x91\xa0\xae\x6f\x4b\x93\xb2\x90\xb2\x28\xef\x45\xfa\x15\x52\x0a\xae\xeb\x42\x99\xf3\xd0\xaa\x30\x70\x13\xd1\x10\x5a\xee\xb1\x6d\xc1\x5e\xe6\x98\x47\xa5\x1f\xa0\x65\x0f\x81\x3c\x6a\xe2\x00\x9a\x9e\x6e\x80\xeb\xf8\x08\xea\x41\xd4\xf5\x35\x93\xc7\xa1\x71\x66\xfd\xd4\xbd\x6d\x96\x97\xeb\xed\xcf\xaf\x97\x0b\xfe\xf5\x1b\x29\xbf\xab\xf8\x17\xfe\x8d\xef\x78\xc5\xdf\xbf\x40\x34\x3e\xc5\xa1\x90\x10\x85\xf8\xf4\xb9\x62\x29\x4b\x96\xb2\x7a\x49\xe6\xda\xc6\xa1\xb9\x8a\xc1\x66\xf5\x61\x92\x00\x96\xb2\xd9\xdc\x12\x74\xab\x0b\x57\x68\xd2\x80\xeb\xbc\x45\xe0\x4e\x99\x30\x8d\x15\xff\xf9\xd7\xc7\x8f\xff\x73\x4f\x15\xdb\x7d\x02\xe4\x53\xd3\xd6\x5c\xde\xcb\xbc\x12\x0b\x99\x3f\xfb\x0e\x17\xde\xef\xee\xd6\x8b\x97\xbb\xd3\x32\x3d\x81\x94\x9f\x9c\xa4\xbc\x38\xa5\x07\x6c\x3b\x65\xb3\xb8\x7b\xde\x3b\x6b\x5f\x56\x56\xb3\x27\xfd\xb3\x49\x00\x57\x49\xb9\xd6\xc7\x1e\xe9\x7c\xed\x13\x4d\xcf\xbd\x5d\xbe\xca\x67\xff\x06\x00\x00\xff\xff\xa1\x4e\x79\xc7\x8e\x05\x00\x00") - -func runtimeSyntaxCYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxCYaml, - "runtime/syntax/c++.yaml", - ) -} - -func runtimeSyntaxCYaml() (*asset, error) { - bytes, err := runtimeSyntaxCYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/c++.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxCYaml2 = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x54\xef\x6f\xdb\x36\x10\xfd\xee\xbf\x42\x53\xb3\x99\x4c\x6a\xc7\x6d\x87\x6e\xd5\x7e\x18\x83\xb7\x6e\x03\xba\xe5\xcb\x06\x04\x13\x15\x81\x22\x4f\x36\x11\x9a\x14\xc8\x53\xd2\xae\xd7\xff\x7d\xa0\xec\xcc\x86\x63\xa4\x41\xfc\xc5\xf4\xdd\x3d\xbe\xc7\x77\x77\x6e\x8d\x05\xfc\xd0\x41\x91\xa9\xd1\x48\x03\x82\xc2\x62\x94\x65\x59\x96\x12\x4e\xae\xa1\xc8\x72\x26\xc4\x94\x29\x5a\xf0\x13\x4a\xa7\x15\xfd\xb6\x39\x19\x33\xdf\x44\x34\xb4\xfc\x84\xe7\xa3\x51\xe8\x2d\xc4\x0d\x7e\x92\x19\x0d\x0e\x4d\x6b\x20\x14\x59\x2e\x44\x53\xfe\x34\xf9\xa7\xae\xca\xd9\xe4\xcd\x70\x38\x13\xa2\xc9\xb7\xa5\x1b\x05\xa9\x88\xb5\xd6\x4b\x24\xed\xfb\xc6\x02\xa9\x95\x0c\x64\x1c\x52\x5c\xf9\x80\x64\xbd\x5b\x52\x34\xff\x82\x6f\x09\x5c\xbf\xa6\x1b\x6f\x34\x45\x94\x68\x14\x29\xef\x22\x52\xc4\xd0\x2b\xa4\xde\x19\xef\x28\x5d\xab\xa1\x25\x78\x8f\x10\x1c\xb1\xde\xf1\x79\x34\x4b\x07\x9a\x8c\xb3\xc6\x01\x3f\xae\x81\xc5\x79\x62\xe1\xc4\x58\x5f\xcf\xf9\xdc\x38\x64\xdf\xd2\x8b\xd7\xf4\xea\x25\xbd\xfe\x9a\x3a\x0c\x9c\xf3\x1a\x0f\xc0\xd3\x44\xe3\x34\xe8\xed\x2d\x8d\xf7\x76\x9f\x20\xe9\x84\x35\x38\xdc\xe6\x6f\xbc\x95\x68\x2c\x50\x80\xa5\x89\x08\xe1\xa1\xe2\xd6\x07\x32\x2d\xdd\xae\x12\x40\x7b\x02\x1b\x81\x94\x8c\x40\x1a\x5a\xd9\x5b\xa4\x78\x6b\x50\xad\x1e\xba\x63\xe9\xd1\x27\x9b\xd0\xb8\x1e\xa8\x09\x20\xaf\x29\x00\xf6\xc1\xed\xa3\xba\x00\x5d\xf0\xaa\xc8\xf2\xab\xb2\x2c\x62\x27\x15\x14\x55\x75\xfa\x6c\xff\x47\xea\xb8\x71\x40\x5d\x90\xcb\xb5\x24\xe3\x94\xed\x35\x24\x83\xc9\xb4\x6e\xce\x07\xd3\x9d\x36\x2d\x81\x65\xa6\xa5\x08\x7c\x50\x2f\x83\x33\x6e\x49\x10\x82\x0f\xfc\x8e\x70\x68\x9c\x1c\x54\x8e\x59\x79\x35\x16\x42\x88\x8a\x58\xfa\x2a\x45\x3e\x96\x4d\xeb\x02\xde\x0c\x51\xce\xc7\xc7\x50\x29\xc7\x58\x39\x9b\xbc\xaa\xe6\xe5\x6c\xf2\x4d\xf5\xf1\xc5\xf3\x97\x9f\x1e\x28\x7e\xbf\x99\xc2\xb7\x72\xd2\x6e\x6a\xb7\x95\x59\xf6\x2c\xfb\x75\xb1\xc8\x9a\xde\x58\x34\x2e\x1e\x31\xb2\xae\x25\x62\x30\x4d\x8f\x50\xd7\xfb\x9e\x08\xc1\x84\x60\xe5\x15\x4f\x47\x2e\x04\x3f\xd6\x86\xba\x66\xd2\x6e\x26\x50\xc6\x35\x6d\x79\x68\x65\xb4\x06\xb7\x1d\x4a\xea\xa4\xba\x06\x4d\x01\x22\x06\xa3\x90\x22\x28\xbc\x1b\x67\xdf\xd2\x2d\xc8\x6b\x5e\xd7\x3b\xc5\x17\x1d\x04\x89\x3e\x64\x0b\x6f\x7d\xb8\x63\xfd\xb0\x6e\xbc\x9d\xfa\x6d\x2e\xad\x71\x39\x2d\xbe\x7b\x7e\x76\x4a\x3f\x7c\x21\xc4\x97\x15\x7d\x4f\x3f\xd2\x39\x4d\xe8\xab\x9d\xd2\x0d\xa6\x09\x49\x00\xc6\x22\xcb\x4b\xc6\x3f\x7e\xaa\x48\x88\x92\x84\xa8\x0e\xed\x9c\xba\x7e\xdd\x0c\xeb\xcd\xd2\x7e\xcf\x26\x6f\x86\xad\x26\x21\x9a\xd9\xbe\xc5\x29\x78\xaf\xdd\x3b\xf0\x9f\x7f\xbf\x7b\x97\x8f\x0e\xd3\xe9\xf1\x6e\x59\x6c\x5f\x99\x25\x1b\xc3\x30\xc9\x79\xfe\x7f\x0c\x9c\x3e\x88\xc4\x6b\xd3\x0d\xe3\x2e\xc4\x74\x17\xdd\xfb\x5f\xba\xfb\xec\x33\x75\xa0\x8c\xb4\x8b\x95\x0c\x3b\xe8\x63\xe5\x8c\x0f\xd5\x8c\x9f\x24\x66\xb7\x75\xd3\xe9\x59\xfe\x34\xa5\xeb\x61\xc8\xee\x29\x3c\x3f\x3f\x94\x78\xf2\x19\x31\xe8\xb5\x4f\x4d\xfd\xeb\xe2\xe7\x0b\xba\xbc\xbc\xa4\xb7\xbf\x5f\xfe\xf1\x0b\x2f\xe6\x8f\x20\x13\xe2\xf4\x5e\x7f\xc4\xe9\xf9\xd3\x19\xff\x0b\x00\x00\xff\xff\x70\x80\xff\x83\xa2\x06\x00\x00") - -func runtimeSyntaxCYaml2Bytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxCYaml2, - "runtime/syntax/c.yaml", - ) -} - -func runtimeSyntaxCYaml2() (*asset, error) { - bytes, err := runtimeSyntaxCYaml2Bytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/c.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxCaddyfileYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x8f\x41\x6e\x83\x30\x10\x45\xf7\x3e\xc5\xc8\x25\x12\x94\x84\xee\xd9\x64\x91\x23\x74\xc9\x10\xc9\xc2\x93\xd6\x2a\x38\x96\x3d\x55\x14\x91\xdc\xbd\xb2\x09\x4d\x45\xab\x66\x16\x20\x7f\x3d\xcf\x7f\x3e\x98\x9e\xf8\xec\xa8\x86\x4e\x69\x7d\x8e\x47\x21\x34\x31\x75\x5c\x0b\x00\x80\x98\x58\x35\x50\x0d\x72\x37\x13\x52\x08\xff\xd9\x53\x98\x88\x0d\x18\x4d\x96\xcd\xc1\x90\xaf\x41\xee\x11\xc3\x33\xe2\x6b\x99\x23\x86\x4b\x56\xc8\x1b\x34\xb5\xc8\x7d\xde\x20\x9e\xaa\xfa\x65\xd3\x96\xeb\x2d\x6c\x8b\xb2\x59\x8f\x6d\x36\x53\xdd\xd1\x06\x56\x96\xab\xe0\xa8\x33\xaa\xdf\xbd\xab\xb8\x14\x31\x8c\x8f\x98\x54\x7c\xfd\x83\x62\x6f\xec\xdb\xe4\x1a\x27\xb0\xf2\x1c\x77\x4a\xf9\x9d\x91\xd5\x8b\x24\x7c\x18\x97\x8a\x11\xab\x7b\xfa\xe3\xd9\xf3\xfc\xe3\x9c\xae\xde\x74\x9c\x27\xe7\x8f\x5d\xca\xc7\x1c\xf1\x54\x5e\x10\xb3\xf4\x5f\xc5\xef\xaa\x40\xbc\xde\xdd\x87\x81\x2c\xff\x76\x7e\x5a\x2a\x67\x4b\x37\x68\x5a\x21\xbe\x02\x00\x00\xff\xff\xde\x9c\x93\x00\xd6\x01\x00\x00") - -func runtimeSyntaxCaddyfileYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxCaddyfileYaml, - "runtime/syntax/caddyfile.yaml", - ) -} - -func runtimeSyntaxCaddyfileYaml() (*asset, error) { - bytes, err := runtimeSyntaxCaddyfileYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/caddyfile.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxClojureYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x53\x51\x6f\xd3\x30\x10\x7e\xcf\xaf\xb0\xc2\x24\x12\x46\xba\xb2\x4d\xa0\x05\x41\x34\x15\x26\xed\x01\xed\x81\x09\x55\xc4\x79\xb0\x9d\x4b\xea\xcd\xb1\x23\xdb\x01\x0a\xe6\xbf\x23\x3b\xa1\x8d\xda\x49\xeb\x8b\xfd\x5d\xbf\xfb\xee\xbb\xbb\xb8\xe1\x02\xec\xb6\x87\x1c\x31\xa1\x1e\x06\x0d\x51\x54\x83\x05\x66\xf3\x08\x21\x84\xfc\xdf\x92\x74\x90\xa3\x18\xe3\x45\xc2\xc4\x43\x69\x58\x55\x38\xa8\x65\x7a\x12\x47\x91\x1e\x04\x98\x3c\x0a\xdc\x17\x68\xa5\xa4\xb1\x44\x5a\x13\x70\x86\xd8\x84\x17\x54\x29\x11\x24\x68\x62\xf5\x00\xae\x21\xc2\x40\x8a\x31\x8d\x0f\x99\x1d\x61\x5a\x4d\x54\xc9\xc5\x9e\xe3\xf5\xbf\x11\xc1\x6b\x24\x87\x8e\x82\x3e\xaa\x31\x86\x73\x14\x97\x18\x67\x55\x51\x2e\xb3\xab\xea\xb4\x78\xaa\xc6\x8e\xb9\xfc\x15\x58\xe5\x75\x76\x43\xb2\xe6\x39\xf6\xa8\x9b\x5c\x94\xcb\xec\x6d\xe5\xce\x43\xaa\x7b\x33\x1e\xe5\x79\x76\x55\xa5\xda\x83\xeb\xec\xfb\x5c\xc9\xfb\xbe\x95\x3f\x9e\x70\x0e\x5a\xab\x99\x6e\x79\xe9\xad\x04\xb5\x8b\xf2\x5d\xd0\x76\xcb\x23\xc9\x9d\xe6\xd7\x6d\x47\x95\xf8\xaf\x65\x02\x5a\xa8\x1e\x34\xb1\xa3\xea\x87\x8f\xa7\x18\x67\xaf\xce\x5e\x16\xd5\x2c\xed\x7e\xdb\x83\x39\x63\xc4\x58\x2e\xdb\x29\x79\xdc\x7f\x18\x39\xdd\x5a\x70\x66\xa3\xb4\x75\x09\xe5\x6d\x5a\x70\x69\x13\x68\x41\xa7\x85\x13\x4a\xb6\xae\x11\x8a\x58\x27\x87\xce\x51\xde\xd6\xc0\x9c\x26\x96\x2b\x49\x04\xff\x3d\x2d\x74\xef\xd0\x6a\x2e\x5b\xb4\xe1\xed\x46\xf0\x76\x33\x2b\xb8\x9b\xad\x09\x94\x7c\x4a\x41\xc8\x58\xa2\xad\xb7\x12\xc7\xbb\x18\xc8\xfa\x20\x62\x1e\x79\x1f\xfc\x62\xbc\xd8\x47\xa7\x4f\x11\xcd\x7e\xf3\x4a\x3d\x30\x4e\xc4\x6a\x43\xfc\x70\x12\x9f\x3b\x8c\xa3\x6d\xfc\xea\xff\x5c\xbe\xbe\xfc\xeb\x7c\x54\xc2\x4f\xc1\x25\x84\xbb\xe9\x09\x1b\x6f\x96\xd0\x70\x36\x4a\x77\x0d\x40\x1d\x00\x25\xec\x71\x4f\xd1\x60\x07\x2d\xc3\x75\x91\xce\xc6\xb0\x52\x5d\x07\xf3\x37\x11\xe0\x71\xcf\xef\x0f\x5b\x3e\x79\xa6\x37\xab\x6a\xff\x52\x92\xfb\xbb\x4f\x77\x6e\xbd\x5e\xbb\x9b\xdb\xf5\x97\xcf\x69\x5e\xc4\x51\xf4\x2f\x00\x00\xff\xff\x9a\x5d\xd4\x68\xd7\x03\x00\x00") - -func runtimeSyntaxClojureYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxClojureYaml, - "runtime/syntax/clojure.yaml", - ) -} - -func runtimeSyntaxClojureYaml() (*asset, error) { - bytes, err := runtimeSyntaxClojureYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/clojure.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxCmakeYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x53\xdf\x6f\x9b\x3c\x14\x7d\xe7\xaf\x40\x7c\x95\x0a\xdf\xa7\x46\xf9\x36\x69\x5b\x79\x89\x28\x71\x53\x24\x7e\x64\x40\x9b\x64\x71\x86\xa8\xb9\x59\xbd\x10\x83\x8c\xb3\x75\xea\xdd\xff\x3e\x41\x92\x2e\x4b\x2a\x6d\x2f\xf3\x0b\xf8\xda\xf7\x9c\xa3\xe3\x73\x97\xbc\x04\xf5\xad\x06\x5b\x67\xeb\x7c\x05\x9a\x56\x80\x02\xa6\x6c\x4d\xd7\x75\xbd\x3d\x14\xf9\x1a\x6c\xdd\x30\xdd\x20\x5f\x81\xcf\x1b\xd5\x50\xda\x53\x8f\x0a\x29\xed\x75\x2d\xd6\x99\xa1\x69\x72\x53\x42\xb3\x6d\xba\xd0\x79\x01\x42\xf1\x25\x07\xd9\xfb\x92\x4b\x5b\x37\x3e\xce\xe7\x76\x53\xe7\x0c\xec\xc5\xe2\xdf\xb9\x73\xf1\xa1\x7f\x71\x99\x2d\xfe\x33\x76\xf7\x6b\x09\xb5\xac\xd8\xf1\x45\x93\x0b\x56\x6e\x0a\xc0\xdd\x37\x2b\xb8\x04\xa6\x2a\xc9\xa1\x79\xae\xc1\xa3\x02\x29\xf2\x32\x5b\x37\xb5\xac\x3e\x03\x53\x16\xa5\xf7\x86\xb6\x83\x6e\x54\xae\x60\x0d\x42\x1d\x83\x53\x7a\x6f\x9a\x50\x36\x80\x20\x0a\x6b\xc0\x97\xd8\x6d\xcc\x6e\xf7\xf5\x81\x97\xfb\xff\x65\x25\x21\x67\x0f\x78\x2f\x21\x5f\x6d\xb1\x4f\xa1\x5b\x34\x37\x1a\xcf\x30\x8c\x52\x74\xa3\x20\x70\xc2\x21\x8e\xe3\x68\x4c\xe2\x74\x86\xe3\xc8\xf7\xdc\x19\xa6\x4e\x3c\x22\x29\x92\xa9\x97\xa4\x09\x7a\x49\x66\x0e\xbd\x98\xb8\x69\x14\xcf\xd0\xb9\x4a\x22\xff\x36\x25\x16\x0e\xc9\xb5\x17\x92\x61\xcb\x74\xa0\xf7\x25\xd2\x83\xe3\x96\x3f\x8a\xb1\x65\xf5\x92\x2c\x24\x13\x12\x67\xe9\x8d\x13\x62\xe0\xa4\xee\x0d\x49\xd0\x4c\xd2\x18\xef\x48\x9c\x78\x51\x98\x59\x03\xd3\x27\x49\x82\xa3\x98\x38\x29\x89\x91\xbc\xbf\x75\x7c\xeb\x84\x71\x4f\x59\x03\xe3\x79\xf9\xb2\x81\xad\x43\xe6\x72\x23\x98\xe2\x95\xc0\x75\xce\x64\x65\xa1\x04\xb5\x91\xc2\x7a\x46\x60\x95\x68\x54\x2e\x54\xaf\x51\x92\x8b\x4f\xdb\x98\xb4\xab\x51\xb9\xec\xec\x33\x8c\xe7\x1a\x88\xe2\xa8\xd2\xac\x78\xdd\x79\x4c\x69\xef\x67\xf5\x20\x71\xfb\x75\xc8\xb4\x15\xed\x3e\x74\xf9\xdb\xb5\xfe\xa9\x9c\xf3\x63\x35\xe7\x7f\x4f\xcc\x3e\xfb\xa7\x9e\xd0\x33\x93\xd2\x27\x24\xe1\x1d\xa5\x4f\xd6\x89\x41\xf4\xfb\x31\xbd\x3e\x5f\x68\xa7\x13\xd8\xbd\xc9\x2e\xa2\xce\x78\xec\x13\xbc\x0d\xbd\x29\x4e\xbc\xf0\xf5\x2b\x74\x67\xa3\x89\x17\xe2\x55\x14\xfb\x6d\x76\x02\x2f\x1c\x4d\x30\x48\xee\x5c\x33\xf3\x86\x04\xdf\xf4\xf1\xed\xff\xf8\xae\x8f\x97\x7d\x6b\xf0\xcb\x5c\xb1\x6a\xdd\xa5\xf0\x44\xf6\x3f\xc7\x42\xcf\x7e\xe3\x92\xaa\x8a\x56\x9e\x99\x46\xc3\x08\xa7\xd3\x29\x5e\x7b\xd3\x80\x58\xf6\xc0\xd0\xb4\x1f\x01\x00\x00\xff\xff\x28\x8d\x1c\xb5\x9d\x04\x00\x00") - -func runtimeSyntaxCmakeYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxCmakeYaml, - "runtime/syntax/cmake.yaml", - ) -} - -func runtimeSyntaxCmakeYaml() (*asset, error) { - bytes, err := runtimeSyntaxCmakeYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/cmake.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxCoffeescriptYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x52\xcd\x8e\xd3\x4c\x10\xbc\xfb\x29\xfc\xf9\x5b\x21\x67\x91\x03\x57\x46\xb0\x80\xf8\x91\x38\xa0\xbd\x70\x88\x88\xad\xd5\x78\xa6\x27\x1e\x65\xd2\x6d\xcd\xb4\x15\x8c\xfa\xe1\x91\x93\x6c\xfe\x16\x2d\x7d\xb2\xda\x3d\xd5\x55\xd5\xe5\x7c\x00\x1e\x7b\x50\xb9\x21\xe7\x00\x92\x89\xbe\xe7\x2c\xb3\xc0\x60\x58\x65\x79\x9e\xe7\xd3\x0c\xea\x0d\xa8\xbc\xa8\xeb\xf9\x7e\xee\xa6\xc8\xb2\x38\x04\x48\xfb\x91\x2a\x4f\xe3\xa6\xa5\x30\xa7\x1e\xa2\x66\x8a\x2a\x2f\x96\xff\xbd\x90\x77\xaf\x6e\x5f\x56\x6f\xef\x1a\xa9\xeb\xb6\xd4\x68\x85\xa2\xf8\x24\x3e\x21\x0b\x12\xcf\xea\xba\x2d\x0e\x00\xde\x02\xb2\x77\x1e\xe2\xdc\x04\x9d\x92\xca\x8b\x72\xf9\xb1\xfa\xa9\xab\xdf\x0f\xcd\xe1\xe3\x75\xf5\xe6\xa1\xb9\x55\xcb\xa5\x4a\xbd\x36\xa0\x9a\xe6\xb6\xac\xee\xa4\xae\xcb\x99\x54\x77\xb3\xe2\x92\x4b\x1b\xb5\x59\x03\x4f\x48\xcb\x72\xd6\x1c\xff\xb2\x66\xd8\x00\xb2\xca\x27\x41\x6d\xe9\x28\x0a\x39\x31\x84\xec\x71\x00\x69\x23\xe8\xf5\x81\xe3\x10\x82\x0c\x18\x20\x25\xe1\xce\x27\x81\x90\x40\xbc\x93\x08\x3c\x44\x3c\xe7\xff\x04\x96\xe3\x28\x46\xb3\xe9\xc4\x79\xd4\x21\x8c\xc2\x5d\xa4\xad\x20\x6c\xc5\x42\x00\x06\x99\x9c\x27\x27\x1e\xc5\x63\x62\x8d\x06\xc8\x3d\x8b\x69\xa1\x1d\x56\x2b\x88\x92\xb6\x7e\x42\xde\x76\x3e\x80\x58\x92\x9d\x65\x02\xbf\x18\xd0\x26\x49\x43\x0f\xf1\x59\xa0\x01\x2d\x38\x8f\x60\x85\x3b\xc0\x47\x89\x03\xb2\x0f\x12\x88\xfa\xc9\x90\x76\x94\x6d\x07\x17\x22\x0d\xed\x78\xf2\xbc\x25\x0a\x27\xa1\x03\x88\xd3\x93\x33\x23\x24\x41\x12\x42\x21\xe7\xfe\x7e\x5d\x95\x17\x1f\x2e\xce\x59\x64\xd7\xe0\x89\xa3\xc7\xd5\x3e\x59\x53\x25\xd6\x91\xa7\xf4\x15\xc5\xb1\x07\x68\xaf\x3a\x69\xed\xfb\x5d\x44\xeb\x7a\x7e\xea\x9e\x85\xf4\xb1\xce\x37\xf5\x60\xbc\x0e\x9f\x3a\x1d\x4f\x4f\x8f\x74\x36\x3b\xc7\x9e\xd0\xf8\xff\x9a\xc5\xcd\x3f\xd6\x31\x59\x9a\xe2\xfc\xe3\xfe\xf3\xbd\x2c\x16\x0b\xf9\xfa\x6d\xf1\xfd\xcb\x4c\xbd\x2f\xb2\xec\x4f\x00\x00\x00\xff\xff\x82\xe2\xd1\x55\x81\x03\x00\x00") - -func runtimeSyntaxCoffeescriptYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxCoffeescriptYaml, - "runtime/syntax/coffeescript.yaml", - ) -} - -func runtimeSyntaxCoffeescriptYaml() (*asset, error) { - bytes, err := runtimeSyntaxCoffeescriptYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/coffeescript.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxColortestYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x64\x8f\x31\x8a\xc3\x30\x10\x45\x7b\x9d\x62\x10\xdb\xee\x05\xd4\x2d\x5b\x2d\x2c\x21\x45\x4a\x35\x92\xfc\xe3\x98\xc8\x76\x90\xc7\x04\xdf\x3e\xc8\x32\xf6\x18\x75\xf3\xff\x7b\x48\x33\xf7\x2e\x82\x97\x17\x0c\x85\x31\x8e\x89\x31\xb1\x52\x0d\x18\x81\x8d\x22\x22\xca\xc2\xe0\x7a\x18\xd2\xbf\xd9\xb8\x61\xe2\x2f\xad\x54\x9a\x23\xa6\xa2\x7c\x93\x8f\x2e\x3c\x0d\x69\x6b\xfd\xf5\xff\xe7\xef\x62\xad\xd7\x1b\x4a\x68\x0a\x48\x68\x44\xdd\x26\x60\x28\x60\x1d\x05\x5a\x10\xe3\xf8\x2e\xac\xcc\x02\xfa\x38\xa3\xa0\x3c\x09\xd0\xbb\x16\x03\xbb\xc2\xb6\x20\x70\x58\xdc\xf6\x5d\x9e\xe4\x83\xa9\x6b\x1f\xbc\x6f\xb9\xc7\x4a\x11\x1b\x8b\xa2\xd2\xe4\xf6\xb2\xa9\x44\x71\xc9\x9e\x2b\xe9\x74\xd5\xa9\xaa\xd4\xe3\xc2\x23\xaf\xd2\x27\x00\x00\xff\xff\xcc\x8b\xc4\xc2\xe3\x01\x00\x00") - -func runtimeSyntaxColortestYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxColortestYaml, - "runtime/syntax/colortest.yaml", - ) -} - -func runtimeSyntaxColortestYaml() (*asset, error) { - bytes, err := runtimeSyntaxColortestYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/colortest.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxConfYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8d\x31\x0e\xc3\x20\x0c\x45\x77\x9f\xc2\xa2\x59\xcb\x01\x58\x7a\x90\x90\x01\x11\x53\xa1\x06\x27\xc2\xee\xd0\xdb\x57\x14\x29\x95\x68\x19\x1f\xfe\xef\xa5\xbc\x91\xbe\x0e\x72\x18\x77\x4e\x00\x2b\x29\x45\x75\x80\x88\xd8\xfe\x38\x14\x72\x68\xbc\xb7\x71\xde\x97\x1b\xa7\xc9\x00\xd4\xe7\x46\xd2\x6f\xae\x6d\x27\x1a\x58\xad\x68\xcd\x7c\xef\xb8\x3d\xd1\x50\xb5\x6d\x8d\x39\x19\xf1\x3a\x10\x79\xe4\xe3\x13\xf0\xde\x7e\x69\x2f\xe0\xbc\xc0\x59\x29\x85\x58\x7f\xed\x97\x51\x3e\xfd\xb5\xbc\x03\x00\x00\xff\xff\x7f\xd4\x74\x86\xe8\x00\x00\x00") - -func runtimeSyntaxConfYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxConfYaml, - "runtime/syntax/conf.yaml", - ) -} - -func runtimeSyntaxConfYaml() (*asset, error) { - bytes, err := runtimeSyntaxConfYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/conf.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxConkyYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x59\x49\xaf\x1c\xb7\x11\xbe\xeb\x57\x8c\x9f\x85\xc0\x72\x20\xc1\x96\x37\x59\x59\x9c\x20\xc8\x35\x27\x23\x08\xe2\x76\x98\x6a\xb2\xba\x9b\x18\x6e\xe2\x32\x8b\x4d\xff\xf7\xa0\x8a\x64\xcf\x8c\xe4\xdc\x82\x1c\x5e\xd7\x57\x1f\xd7\x61\x17\x6b\xe9\xb7\x68\x83\xf9\x1a\xf0\xed\x41\x7a\x77\xbc\x3e\x7b\xa6\x30\xa3\xcc\x6f\x9f\x1d\x0e\x87\x03\x35\x3a\xb0\xf8\xf6\xf0\xf4\xc9\x34\xbd\xfa\x94\xbb\x44\xf9\xea\xd3\xe7\x95\xe1\x2b\xe9\xdd\xf2\xe2\xe9\xd9\xb3\x58\x0c\xa6\x36\xe6\xe5\xa1\x4d\xf7\x34\x4d\xf3\x27\x60\xf4\xea\x2c\xba\x5c\x21\x04\x74\x4a\xd0\x8c\x75\x06\x79\x5c\xa3\x2f\x4e\xd5\xd9\x47\x85\x51\x68\xe7\x30\x0a\x0b\x71\xd5\x6e\x70\xbe\xe4\x0f\xb8\xb3\x56\x79\xab\xd2\x1b\x1f\x3f\x6b\xe2\xf3\x26\x5e\x37\xf1\x45\x13\x5f\x36\xf1\x55\x13\x5f\x37\xf1\x4d\x13\x6f\x9a\xf8\xb6\x89\xbf\x55\x19\x8a\x80\xd3\x2a\x12\xd8\x60\x30\x55\x85\x0b\x14\x93\xc5\x0c\x51\x6c\xa8\xd7\x2d\x3f\x50\x6d\x07\x83\xe1\x39\x76\x6d\x85\xb2\xe2\xfb\x83\x1a\xf9\x38\x6c\x8d\x10\xb6\x0f\x3a\x32\xf9\xd8\xd1\x97\x6c\xb4\xc3\xf7\xd6\x49\x1b\xa8\x9d\xd3\xe9\xa8\xfd\xe3\x2f\xd0\x29\x18\xb8\x56\xe5\xcb\x6c\x50\xcc\x65\x59\x30\x56\x15\xe1\x2c\xda\x31\xa6\xa6\xb4\x05\x1f\xa8\xbe\x5e\x53\x78\x99\x54\xf1\x92\x23\x08\x87\x67\x6e\x59\xbc\xcb\x75\xf1\xd1\x42\x16\x5b\xb1\xe0\x44\x44\x50\x30\x1b\xac\x2b\x04\x71\xe1\xe7\xb5\x6e\x39\x07\x11\x71\x89\x98\xb6\xaa\x17\x51\x82\x48\x39\x6a\x99\x1d\xa6\x54\xb5\x85\x50\xb5\x35\x7a\x16\x12\xe4\x86\x62\x31\x25\x6d\x42\xbb\x8c\xf1\x04\xe6\xa1\x29\xe9\x9f\xb0\x9a\x02\x82\xf7\xb4\x79\x7f\x14\xc1\xa7\xfc\x3e\x15\x5b\x27\xe3\x41\x31\x48\x5b\xc9\xca\x9f\x1d\x37\x37\x26\x43\xcc\x25\x34\xc2\x82\x36\x22\x05\xef\x4d\xb5\x70\x11\xc1\xc7\x2c\xac\x77\x3a\xfb\x28\xa4\x77\x0e\x65\xd6\xde\x25\x6e\xcc\x78\xc9\xfd\xbd\x90\x5a\x12\x46\xe6\x48\xd3\xb6\xd8\xd1\xa6\x1d\x6b\xfd\xb5\x0e\xb5\x37\x06\x25\x36\xda\x36\x81\x00\x29\x9d\x7d\x54\x4d\xf1\x31\x57\x5b\x92\x96\x82\xde\x1a\x5f\x86\x7e\x0c\xf6\x9a\xde\x99\x3e\x8c\x61\xeb\xcb\x90\x76\x31\xd8\x7d\x3a\x56\xd5\x5c\x1d\xe6\x07\x8b\x70\xbe\x5b\x41\xaa\xee\xa4\x95\x06\x31\x6c\xc4\x97\x2c\xb2\xa7\x9f\x9c\xbc\xc1\xa1\xd2\xdb\x1b\xd8\xc9\x12\x13\xa6\xa1\xa6\xac\x30\xc6\xa1\x5d\xaa\x3f\x61\x8c\x5a\xa1\x28\x79\x79\x23\x8c\x97\x40\xd3\x9c\x30\x9e\xa3\xce\xd8\xee\x3b\xbd\x86\xb3\x76\xca\x9f\xef\xa0\x90\x06\x52\x7a\x20\xbc\xf1\x25\xde\x33\x9b\x76\xf9\xa1\x4b\xd6\xf9\x61\x3e\x91\x23\xb8\x14\x20\x92\x8b\xb9\xa7\xaf\x01\x6b\x00\x25\x02\x46\x89\x34\x49\xf0\xe1\x8b\x9a\xd0\x25\x1f\x85\xc2\x93\x96\x58\xd3\x46\x6f\xbd\x38\x9d\x13\xe1\x71\x21\x22\xb8\x15\xef\x89\xc4\xbf\x29\x65\x1d\x82\x41\xb5\x5f\x98\x8c\x36\x60\x84\x5c\x22\xf2\x24\x4c\x18\xc8\xb8\x83\xcf\x76\xf4\xf9\x8e\x5e\xef\xe8\x8b\x1d\x7d\xb9\xa3\xaf\x76\xf4\xf5\x8e\xbe\xd9\xd1\x9b\x1d\x7d\x5b\xd9\x00\xd9\x32\xdb\x9b\x6d\xf7\x24\x6b\x8b\x49\x68\x27\x12\x4a\xef\x54\xaa\xd9\x07\x41\x1e\x2e\x61\x80\xc8\x7b\xf3\x41\x90\x4b\xef\x76\x99\x7d\x06\x23\x62\x71\x82\x87\xd6\x12\x14\x64\xbc\x99\xe0\x7b\xba\xf0\x4e\xcc\x90\x33\xc6\x6b\x2d\x81\x0e\x17\x12\xd6\x92\x50\xa4\x00\x12\x23\xc3\xcb\x92\xeb\x65\xc9\x60\xc2\x06\x04\xc8\x65\xbc\x98\xa6\xf9\xe9\x19\x07\x88\xc3\xe1\xe3\xc3\x5f\xbc\x5b\xf4\x5a\x22\xd0\x2d\x3b\xe8\x8c\x96\xc2\x4f\xca\xe0\x72\xea\x51\x24\x65\xc8\x48\xa1\x63\x84\x92\xd9\x9f\xb0\xce\x68\xfc\xb9\xce\x3e\x67\x6f\x85\xc1\x25\x0f\x1c\xf9\xd2\x75\xc5\x6a\xa5\x0c\x56\x85\xe9\x98\x7d\xa8\xca\xcb\x63\x75\xbe\x3a\xef\xb0\x3a\xf2\x5d\x66\xb7\xdb\x9a\x8e\x3a\x88\x00\x2b\xc6\x06\x33\xa4\xe3\x0c\x91\xde\xb7\x3c\x5e\xf9\xbc\x78\x1d\x02\x6d\x11\x42\x7d\x85\x26\x5a\x87\x8e\x63\xbf\xfd\xac\xf4\x6e\xc5\x29\x94\x9e\xce\x5f\xd5\x2b\xa6\xf7\x0e\xe3\xef\x10\x35\x39\xd0\xf1\xcb\x43\xc4\x10\xbd\x1c\xbf\x5b\x06\x0d\x12\x14\x84\x8c\xb1\x92\xb6\x80\x63\x49\xc6\x50\x41\xa9\xc8\x8f\x54\x39\xd8\xca\x26\x62\x85\x20\x4b\x48\x6a\x48\x21\xd9\x47\xef\xda\x06\x71\xbd\xa9\x06\x52\xbe\x50\x94\xd8\x09\xed\xf0\x74\xd3\xc8\xab\xde\x2b\x74\x40\xf7\x3a\x07\xb9\x47\x86\xae\xce\xce\x58\xaf\xd0\xec\x1a\xd9\xdf\xae\xd0\x7b\x2e\x69\x57\xdb\x8f\x1a\x8a\xb6\xc8\x67\x3b\x88\x12\x12\x4d\x55\x21\x58\xb1\x1f\x49\xb0\xc3\x26\x85\xd1\x0b\x3e\x10\x34\x43\x85\xa2\x40\x6a\x5f\x92\xe0\x7d\xdf\x34\x9d\xf9\x4e\xdc\x18\xb9\x81\x73\x68\xd2\x1d\x35\x72\xa0\x7b\x2a\xe2\xbb\x82\x4e\x5e\xef\x38\x83\x6e\xcd\xdb\x07\xc4\x7e\x11\x6f\x0d\x16\xb4\x13\x27\x6f\xca\xc3\x9c\xe4\x8d\x8d\x4e\xf9\xc3\x89\xf6\x96\xe0\x93\xa6\xfb\x72\xdf\xf6\xdf\xa9\x5f\x59\x79\x1c\xf5\x4e\x34\x77\x3a\x2e\xf4\x38\x33\x3a\xa4\x81\xbb\xff\xdc\x75\xf6\x99\xf5\xe1\x74\x67\xa3\xdd\xb1\xce\x36\x5c\x04\x98\xb9\xd8\x0e\x63\xd6\x29\x37\x3c\xce\x99\x95\xbe\x26\xc3\x08\xb2\x8f\x2c\x51\xd7\x11\xa2\x38\xee\xab\x2a\xad\xe2\xdc\x27\x7b\x11\xb4\x6a\xe9\xda\xff\x2c\xf5\xb3\x33\x25\x33\x9c\xc4\x8a\xb9\x68\xa3\x04\x44\xb9\x3d\x10\xe4\xf8\x3a\x71\xc2\x98\xe8\x94\x65\x28\xf4\x47\x07\x24\x43\x69\x46\x4f\x80\x6d\x5d\x96\x68\x6e\x2e\xa7\xc9\x66\xea\xbb\x52\xec\x8c\x2d\x65\x13\x21\x7a\xca\xb3\x7b\xfe\x36\xd2\x38\xca\xa5\x06\xe6\x00\xda\x95\xb6\xc2\x1d\xbe\xef\xd9\x13\xc7\xd1\x3d\x47\x3d\x17\x36\x0a\xca\x7f\x52\x40\x54\x37\xb4\xdc\x60\x9f\x33\xc2\x92\xc9\x26\x4d\xaa\x68\x12\x56\x74\x4a\x2f\x15\x5d\x8e\x3e\x5c\x05\x9c\x40\x9b\x5d\xa3\x1f\x3e\x30\x59\xc6\x4d\xf1\xde\x70\x00\x42\x0a\x1a\x78\xc2\x8a\x17\x94\xfc\xe0\x31\x17\x94\xed\xb4\x18\xf1\xc2\x84\x74\x7b\x8e\x2e\xfa\xd6\x47\xdf\x3a\x85\xf6\xd4\x75\x31\xb0\xae\xa8\xfa\x66\xef\x13\x51\xb6\xc3\xc5\xc7\x33\x44\x75\xeb\x10\xf1\x1d\x3f\xc4\x5a\x97\x76\xf5\x9b\xa0\xfb\x8b\x84\xef\x65\xfb\x3d\x4b\x6a\x71\x74\x49\x2d\x85\x58\x12\x25\x5a\x6a\xc8\xd6\x69\xf5\xd9\xd7\xf5\x2c\xf4\x02\x12\x19\x84\xba\x29\xc5\x9e\x6b\xa3\xd7\xb2\xc5\xba\x9d\xad\x77\x55\xbf\x96\x55\xbf\x39\x0a\x90\xe3\xee\x91\x36\x6b\xdf\x41\xc9\xd9\xbb\x74\xdf\x46\xb1\x9a\x27\x22\x85\x5c\x9f\x58\x28\xc5\x0e\xf6\x91\xb8\x1b\xc1\xf1\xe6\xa1\xd7\x8d\xb9\xeb\x96\x30\x6a\xca\xac\xdf\x1c\x77\x6b\xd6\xb3\x15\x33\x77\x6e\x49\xf9\x6c\x69\x10\x4b\xda\x42\x63\xba\xa3\xd2\x92\x06\x4b\xef\x4e\x2d\x8f\xde\xb1\x0f\x94\xde\xa3\x0d\xf9\xca\xe0\xa2\x53\xd6\x6e\x25\xbc\x9e\xe9\x69\x21\x4b\x2e\x01\xac\xbe\x50\x3d\x57\x32\xb2\xe6\x8b\xa3\x70\x48\x90\xb2\x60\x03\xd7\x3e\x2c\x16\xe7\x3a\x4c\x16\x82\x26\x5f\x2e\x34\x25\x07\xc6\xb4\x01\x25\xb4\x27\xdd\x50\x17\x09\x5f\xac\x4d\xaf\x47\xe2\x4e\x9d\x2c\xac\xc8\x65\x86\xb0\x98\x12\xac\xd8\x8a\x0e\x51\x5c\x42\x74\x55\xfb\x44\x3e\xa6\x18\x8c\x55\x47\x59\x8f\x18\x1d\x9a\x6a\x20\x70\x70\xa7\x10\x43\xbe\x27\x55\x0a\x65\x70\x5a\xeb\x2d\xa4\x99\x02\x5c\x4e\x90\x3d\x91\x6c\x36\xcb\x68\xb4\x8b\x00\x31\x61\xb5\x20\x37\xf2\x32\xcd\x1c\xed\xec\x2f\x49\x82\xab\x16\x2d\xfd\x9d\x75\xde\x86\xc7\xb3\x68\x69\xba\x47\xb6\x33\x08\xe9\xca\x86\x6a\xd1\x0e\xd9\xd6\x24\xc0\x4b\x5a\xb4\x16\x2e\x24\xd8\x3e\xf9\xa0\xdb\x93\xe7\x20\x60\xba\xd8\x89\x21\x98\xf0\xb2\xbb\x6e\x46\xcd\x73\x13\x1c\x8e\x9b\xb0\x2c\x91\xaf\x19\x61\xce\xea\x09\xec\xad\xc9\xbb\xb5\x81\x3c\xa8\x3d\x78\x37\x25\xf7\x21\x9c\x71\xf6\x99\xb8\xde\x1a\x72\xb8\x47\x32\x87\xbe\x1b\x42\x7d\x37\x41\xf1\x89\xb3\x1c\xbb\x0a\x4a\xa0\x81\x40\x17\x94\x70\xdb\x55\x50\x23\x84\x12\x64\xff\xcb\x06\xd6\x03\x19\xe1\x08\x4e\xf9\x36\x7d\xc4\x80\xd0\xd8\x64\xc9\xae\x19\xb5\x6b\x43\xb0\xef\x9b\x10\x07\x2b\x42\x27\xdf\x4b\xb3\x4a\xb3\x27\x8c\x27\x8c\xd5\xe1\xb9\xfb\x1d\xe7\x55\x4b\x18\x06\xe8\x41\xd3\xf9\x6e\xb2\xbd\x06\xab\x7e\x4e\x8a\xe2\x80\x2a\x32\x37\xa5\xd5\x27\x89\xaf\xe1\x03\xc1\x2e\xe1\x81\x39\x79\xd3\x07\x9d\xd0\x29\x1f\xab\x5f\x96\x84\xb9\xf6\x0a\xbe\x45\xcb\x30\xef\xd9\x7a\xd0\x94\xf4\x45\xef\x73\x83\x2d\xb8\x36\x7c\x56\x2c\xd1\x9d\x74\xf4\xee\x1e\x0b\x4a\x3c\x1a\x71\x69\x9d\x1d\x55\x4e\x04\x7c\x40\x47\x27\x9e\x58\xeb\x25\x18\xc3\xa8\x7d\xd4\xb9\x2d\xd9\xcc\x61\x47\xfd\x28\x9a\xce\x85\x64\x87\xda\x0d\xe4\x4b\x6b\xcf\x1b\x85\xb8\x74\x87\x6f\x9b\x21\xf3\x11\xed\xce\xf2\x5d\xdd\x39\xaa\x8a\x1f\x18\x06\x45\xf7\x1f\x38\x40\x1a\x60\xd9\xd1\x3a\xfa\x0c\x90\xd6\xbd\xcf\x40\x1c\x73\x09\x9c\x6c\x40\x38\x76\xc8\x01\xa3\x41\x23\x07\xb9\x9d\x6d\x47\x31\xa5\x8e\x14\x64\x18\x63\xf2\xe8\x38\xce\xf5\x64\x8d\x9e\xc7\xe4\xfd\xc8\x5a\x48\xa7\x82\x8f\xe2\x1c\x97\xb0\xc3\x81\x35\x4c\x96\x4f\xa5\x02\x26\xaa\xd0\xf9\x8c\xb2\x0c\x0d\x14\x45\x20\x18\xbd\x07\x44\xda\x49\x77\xae\xe2\x6e\x54\x67\xc6\x79\x27\x19\xbd\x31\x95\x56\xe9\xe3\xf8\x3b\x50\x33\x28\x76\xc8\xf5\xe6\x96\xb9\x50\xda\x35\xf6\x3e\x77\xaa\x3f\xe3\x7d\x33\x1b\x71\xf2\xee\x4a\xf6\xdd\xf2\x92\xbd\xa8\xde\xa8\xe0\xa2\x32\x2d\x9d\x21\xf0\x83\xa7\x3e\x43\x60\x9f\x47\x80\x5c\x1c\xc9\xb6\xca\x35\xf1\x1d\xcb\x30\xd7\x4c\x29\x4a\x96\x41\x04\x0a\x1b\x0c\x7c\xcc\x14\x7f\xff\x4f\x85\x38\x25\x32\xb9\x27\x29\xe3\x18\xd9\xf8\xb2\x17\xf3\x35\x23\x97\xe1\x5c\x36\x6a\xdf\xaa\x47\xb4\x2c\x7b\xa7\x0c\x86\xb2\xb2\x86\x4a\xa8\x39\x42\xda\xf6\xd7\x96\x7f\xe2\x6e\xab\xee\xde\xac\xec\xc0\x3d\x66\x44\xc5\xbd\x9f\x02\x15\xf7\x68\x01\xcd\x78\x86\xc2\xce\x88\x64\x7b\x17\x5d\x2e\x03\xb4\xd8\x52\x02\xaf\xde\x44\xbf\xbe\xfc\x05\x8c\x7d\x5f\x87\xcd\x71\xf7\x0f\x63\xd1\x76\xba\x7f\x51\x18\xb0\x16\x7e\x9e\xba\xa3\x22\x07\x06\x2b\x0a\x7b\xda\xe1\xa9\x9e\x11\xf2\x86\xb1\x9e\x75\x44\x83\x29\x09\x08\x37\x3c\xfc\xfe\x4e\x60\x4a\x5a\xdd\x54\xaa\x43\xd8\x22\x1f\x99\x77\x05\xcc\xaf\x50\x82\xec\xe9\x57\x68\x36\xaf\x9d\x67\x67\x72\xf6\x51\xa5\xda\x72\x8c\x16\x99\x3a\x6e\xb1\xa9\x29\xb4\x70\x47\x7d\x9f\x23\x29\xb1\xfc\x01\xbc\x69\xea\xd6\xa0\xfa\xe7\x8f\xae\x8e\x48\xd6\xb4\x15\x5d\x1c\x1d\xf5\x20\x47\x0c\xeb\x5a\xaf\x0b\xbb\xca\x6e\xa8\x43\x8e\x64\x1d\xb7\x58\xd6\x14\x7e\x23\xfc\x95\x51\xed\x0c\xc5\xb7\x8e\x29\xc2\xb9\xf1\x2b\x4a\x34\x77\xdf\x29\x5e\x1e\xb4\x42\x97\xf5\xa2\x31\xbe\x3a\x41\xe4\x8f\x13\xcf\xa7\xe9\xe7\xef\x7e\xf8\xec\xe5\xb7\x7f\x7e\xf9\x4f\xf1\xd1\x9f\x3e\x7e\xfe\xe9\x77\x2f\x7f\xfc\xed\x34\xfd\xf2\xdd\xd3\xf8\x88\x73\xb5\xb3\x37\xaf\x3c\x7f\x28\xf3\xb1\xfd\x1f\xe1\xe7\x3a\x4d\xbf\xd4\x69\xfa\xa4\x4e\xd3\x8b\x3a\x4d\xbf\xab\xd3\xf4\x63\x9d\xa6\x1f\xea\xbf\xeb\x34\x4d\x53\x9d\xa6\xe7\xf5\xf7\xf5\x8f\xf5\xa3\xfa\x87\xfa\x9b\x3a\x4d\xf5\xc5\x98\x6f\x7c\x24\x7a\x65\x41\x46\xff\xf6\xf0\xf4\xaf\xef\xff\xfa\x8f\xef\x9f\x3f\x3d\xfb\x4f\x00\x00\x00\xff\xff\x83\x4d\x49\xe6\xc7\x18\x00\x00") - -func runtimeSyntaxConkyYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxConkyYaml, - "runtime/syntax/conky.yaml", - ) -} - -func runtimeSyntaxConkyYaml() (*asset, error) { - bytes, err := runtimeSyntaxConkyYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/conky.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxCppYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x54\xdf\x6f\xdb\x36\x10\x7e\xf7\x5f\xa1\xa9\xd9\x4c\x26\xb5\x93\xb6\x43\xb7\x6a\x3f\x8c\x21\x5b\x87\x01\xdd\xb2\x87\x0d\x08\x26\x3a\x02\x45\x9d\xac\x43\x68\x52\x20\x4f\x89\xb3\x5e\xff\xf7\x81\x8a\xd3\x18\x71\x91\x15\xad\x1e\x24\xf1\x8e\x77\xf7\xf1\xbe\x8f\xd7\xa2\x05\xba\xe9\xa1\xc8\xcc\xd1\xd1\x64\xd2\x00\x81\xa1\x62\x92\x65\x59\x96\x5c\x4e\xaf\xa1\xc8\x72\xa1\xd4\xdc\x08\xc3\x7d\xcf\x9b\x8d\x3c\x60\xa5\xe6\x9d\xe8\x76\x97\x88\x8b\xf1\x2b\x1a\x68\xe5\x81\xcc\x27\x93\x30\x58\x88\xc5\x64\x4c\x35\xcb\xb0\x01\x47\xd8\x22\x84\x22\xcb\x95\xaa\xcb\x9f\x66\xff\x54\xcb\xf2\x64\xf6\x6a\xfc\x39\x52\xaa\xce\xb3\xed\xde\x5b\x3c\x69\x97\xd0\x03\x79\x6e\xad\xd7\xc4\x8d\x1f\x6a\x0b\x5c\x7b\x6f\xd9\x74\x3a\x30\x3a\xe2\xd8\xf9\x40\x6c\xbd\x5b\x71\xc4\x7f\xc1\xb7\x0c\x6e\x58\xf3\x95\xc7\x86\x23\x69\x42\xc3\xc6\xbb\x48\xb7\x6f\xd8\xf4\x81\x23\x85\xc1\x10\x0f\x0e\xbd\xe3\x54\xaa\x81\x96\x61\x43\x10\x1c\x8b\xc1\xc9\x45\xc4\x95\x83\x86\xd1\x59\x74\x20\x13\xb0\x7d\x5c\x22\x2e\x52\x3d\xc9\x42\x0c\xd5\x42\x2e\xd0\x91\xf8\x96\x9f\xbd\xe4\x17\xcf\xf9\xe5\xd7\xdc\x53\x90\x52\x56\xb4\x13\x9c\xd0\xc0\x1a\x1c\x6d\x33\x18\xab\x63\xe4\xd4\xdf\xd8\x6b\x03\x4c\xb0\xee\xad\x26\xe0\x7e\xa8\x2d\x1a\xee\x83\x4f\x54\x40\xc3\x7d\xc0\xab\xe4\x48\xe5\xd3\x7e\xa6\x0e\x23\xb7\x01\xc1\x35\x7c\x85\x81\x06\x6d\x79\x88\xe8\x56\xbc\x1e\x48\xa7\x26\x5d\x79\xab\x09\x2d\x70\x80\x15\x46\x82\xc0\xb0\xe9\x2d\x1a\x24\xf9\x08\xa4\xd6\x07\xc6\x96\xaf\xbb\x14\xd9\x78\x06\x1b\x81\x8d\x8e\xc0\x0d\xb4\x7a\xb0\xc4\xf1\x1a\xc9\x74\x8f\xe5\xa0\x70\xc3\xd4\x05\x7f\xcd\x46\x93\xe9\xd8\xf7\x10\x34\xf9\xc0\x0e\xae\xb9\x01\x0b\x04\x8f\x85\xaf\x3c\xf9\xc4\x15\xa1\x1b\x80\xeb\x00\xfa\x92\x03\xd0\x10\xdc\x6e\x54\x1f\xa0\x0f\xde\x14\x59\x7e\x51\x96\xc5\xd8\xbf\x62\xb9\x3c\x7c\xb2\xbb\x48\x42\x44\x07\xdc\x07\xbd\x5a\x6b\x46\x67\xec\xd0\x40\x62\x98\xb1\x75\x0b\x39\xb2\xee\x1a\x6c\x19\xac\xc0\x96\x23\xc8\xf1\xf0\x3a\xb8\xd4\x49\x08\xc1\x07\x79\x57\x70\x54\x8f\x1e\x51\x8a\xa9\x28\x2f\xa6\x4a\x29\xb5\x64\x91\x3e\xa5\xca\xa7\xba\x6e\x5d\xa0\xab\xd1\x2a\xe5\x94\x47\xbf\x10\xe5\xc9\xec\xc5\x72\x51\x9e\xcc\xbe\x59\xbe\x7d\xf6\xf4\xf9\xbb\xf7\xae\xcd\xad\xf0\x5f\xeb\x59\x7b\xeb\x99\xa6\x1b\x93\x8d\xcf\x93\xec\xd7\xd3\xd3\xac\x1e\xd0\x12\xba\xf8\x81\x3e\x89\xaa\xd2\x44\x01\xeb\x81\xa0\xaa\x76\xcf\xac\x94\x50\x4a\x94\x17\x32\xfd\x4a\xa5\x24\x57\x95\xd0\xf6\x56\xcf\x3a\xae\x79\x9b\x95\x3b\x6c\x1a\x70\x5b\x89\x73\xaf\xcd\x25\x34\x1c\x20\x52\x40\x43\x1c\xc1\xd0\xdd\xe5\xf0\x2d\x5f\x83\xbe\x94\x55\xb5\x8b\xf0\x6c\xcb\x6a\x76\xea\xad\x0f\x77\x18\x6f\xd6\xb5\xb7\xf3\x3b\xc6\x13\xd2\x72\x5e\x7c\xf7\xf4\xe8\x90\x7f\xf8\x42\xa9\x2f\x97\xfc\x3d\xff\xc8\xc7\x3c\xe3\xaf\xe4\xf6\xae\xa7\x5c\x7f\xea\x00\x8e\x3a\x20\x34\xda\x7e\x28\x61\x1d\x12\x3e\x8a\x45\x96\x97\x42\xbe\x7d\xb7\x64\xa5\x4a\x56\x6a\x99\x4f\x1e\xd0\x33\x77\xc3\xba\x1e\x27\x8c\x48\x23\xe6\x64\xf6\x6a\x1c\x2c\xac\x54\x7d\xb2\xdb\xf2\x64\xdc\xe3\x76\x9e\x26\xcb\x36\x54\x50\x18\x80\x5b\x6d\xe3\xa8\x56\xfe\xe3\xef\x37\x6f\xe4\x7e\xb9\xd4\x2f\xb7\x2a\xb6\x47\xc9\x12\x4b\x61\x54\x72\x9e\xbf\xb7\x81\x6b\x1e\x58\xe2\x25\xf6\xa3\xdc\x95\x9a\xdf\x5b\xb7\xe3\x32\xdb\x79\x76\x2b\xf5\x60\x50\xdb\xd3\x4e\x87\xfb\xd0\x8f\x85\x33\x7d\x88\x66\xfa\x49\x60\xee\x6f\xdd\x7c\x7e\x94\x7f\x1a\xd2\xf5\xa8\xe1\x3d\x84\xc7\xc7\x0f\x21\x1e\xfc\x0f\x18\xf2\x8d\x4f\x64\xfd\x75\xf6\xf3\x19\x9f\x9f\x9f\xf3\xeb\xdf\xce\x7f\xff\x45\x16\x8b\x8f\x28\xa6\xd4\xe1\x1e\x3f\xea\xf0\xf8\x33\x2a\xfe\x17\x00\x00\xff\xff\xe1\x82\x69\x3f\x46\x07\x00\x00") - -func runtimeSyntaxCppYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxCppYaml, - "runtime/syntax/cpp.yaml", - ) -} - -func runtimeSyntaxCppYaml() (*asset, error) { - bytes, err := runtimeSyntaxCppYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/cpp.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxCrontabYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x54\x4b\x4f\xdb\x40\x10\xbe\xfb\x57\x4c\x4d\x54\xc5\x80\x21\x80\x2a\x84\x5b\x4a\xab\x3e\xa4\x1e\x10\x07\x50\x15\x95\x01\x75\xe3\x9d\x60\xc3\x7a\x37\xda\x07\x91\xd5\xe9\x7f\xaf\xd6\x09\x86\xa0\xd0\x5b\x3b\xb7\x99\xfd\xe6\x9b\xd7\x67\x4f\x6b\x45\xbe\x9d\x51\x01\xa5\x35\xda\x8b\x49\x92\x48\xf2\x54\xfa\x22\x01\x00\x88\xcf\x5a\x34\x54\x40\xba\x7c\x1f\xa4\xdd\x43\x45\x42\x92\x2d\x20\xbd\xde\xd8\xd9\x3c\xd9\x25\x5f\xee\x2e\x01\x69\x92\xd8\xa0\xc8\x2d\x08\x00\x36\x60\xc5\x2e\x2a\x02\x5f\x37\x04\x42\x4b\x90\xc2\x13\x4c\x6b\x52\xd2\x81\xb0\xf4\x42\x4a\x07\x78\x74\x85\x52\x66\x4e\x12\xee\x85\x0a\xe4\xd6\xa7\xe4\xd1\x9e\xb9\xbd\xad\x4f\x69\x6a\x1d\x3c\xf5\xee\x28\x7f\x73\xb4\x1e\x58\x99\x60\x9f\xb8\xa3\x7c\xff\x60\x3d\x50\x8a\x16\xcc\x14\x1a\xa3\x7d\xd5\x01\x0f\xf6\x5e\x28\xbd\x44\xf4\x8c\x7b\xfb\x30\x34\x16\xe2\xe6\xdd\x36\x38\x22\x98\x90\x32\xf3\xec\xaf\x75\xe6\x44\x77\x8b\xf4\x43\x18\x8e\xc0\x58\x38\x84\xda\xc1\x79\xd0\xdb\xd1\x09\x8e\x16\x84\x59\xd2\xd1\xe4\xe0\xbc\xf0\xd4\x90\xf6\xf1\x8c\xc3\x4b\xc4\xcd\x51\x7e\xb4\x8d\x98\x23\xee\x5e\x6d\x65\x88\x6e\xeb\x9f\x45\x77\x36\xb3\x01\xa2\x3e\x49\x97\xbd\x94\x46\x3b\x2f\xfe\x77\x2b\x8b\xea\xfd\x56\xcf\x2b\x52\x0a\xbe\x3f\xea\x2a\x87\xc5\xb7\x91\x5e\x5f\x7e\xcc\x7f\x5c\x6d\x21\x1e\xa7\x49\x0f\x3f\x8d\x67\x73\x9d\x90\xe3\xee\xe3\x19\xee\xa8\x9d\x1b\x2b\x9f\x65\xdf\x0a\xcd\x53\x9a\x70\x23\x2c\x8b\x99\xe5\x46\xb4\x7c\x1b\x34\xdf\x06\xc5\x22\xdc\xb0\xa3\x19\x9b\xd2\xb3\x36\xf7\x2c\xa9\x5c\xb3\x13\x17\x34\x37\x46\xb3\x0f\xc4\x73\x92\xec\xab\xc0\x53\x5b\xb3\x13\x3e\x5d\xad\x85\xf8\x61\x68\x69\x62\x8c\xe7\x96\x84\x55\x2d\x0b\xad\x83\x50\xaa\xe5\x4e\x66\xaa\xe5\xd8\xac\x6a\x59\x8a\x3a\x06\x6b\xa9\xeb\x9b\xca\x73\x94\xb5\x6a\xb3\x27\xf3\x7d\x32\x5a\xd6\xbe\x36\x5a\xa8\x87\x81\xdc\x8c\xca\x5a\xa8\x02\xd2\x21\xe2\x2f\x46\xfc\xcd\x88\x43\x46\xcc\x18\xf1\x2d\x23\x5e\x31\xe2\x25\xff\x64\x44\x44\x46\x1c\xf0\x3b\x7e\xcf\xd7\xfc\x8a\x8f\xf9\x35\x23\xf2\x03\x7f\x9c\xae\xe9\xb4\x97\x3c\xc8\xd8\x79\x61\xe3\xac\x1b\x69\x1f\x22\x2d\x0b\x48\x07\x8f\x81\x95\x3f\xcb\xc2\x72\xf0\x46\x9a\xd8\xd1\xc5\xd9\xe7\x33\x1e\x8f\xc7\xfc\xf5\xdb\xf8\xf4\x4b\x56\x9c\xa4\x49\xf2\x27\x00\x00\xff\xff\x30\xbd\xe9\x40\xe0\x04\x00\x00") - -func runtimeSyntaxCrontabYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxCrontabYaml, - "runtime/syntax/crontab.yaml", - ) -} - -func runtimeSyntaxCrontabYaml() (*asset, error) { - bytes, err := runtimeSyntaxCrontabYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/crontab.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxCrystalYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x54\x4d\x6f\x1b\x37\x10\x3d\x57\xbf\x62\xb0\xb6\x61\x49\x81\xe4\x5e\x2b\x04\x90\xdd\x44\x29\x0c\xa4\x36\xd0\xfa\x60\x44\xd4\x07\x77\x39\x2b\x0d\xc4\x25\xd7\xfc\x88\x24\x7b\xfc\xdf\x0b\x4a\x8a\x5b\xaf\x0c\x34\x08\x90\x83\x28\x90\x33\xf3\xde\xe3\x9b\x59\x96\xa4\x31\x6c\x6b\x1c\x40\xe1\xb6\x3e\x48\xdd\x6a\x29\x0c\x58\x84\x41\x0b\x00\x20\x85\x8d\xac\x70\x00\x99\x10\xfd\xc2\x9d\x66\xad\x96\x8b\x1a\xfd\x3e\x7c\x02\x57\xbe\x20\xca\x31\x50\x21\x35\x68\xf2\x01\x6c\x09\x0e\x3d\xba\xaf\xa8\x60\x6d\x9d\xf2\xbb\xcc\x1e\xf8\x20\x03\x56\x68\xc2\x0e\x2b\x6f\xff\x3e\xfa\xe3\xfa\x86\x47\x37\x1f\x59\xe6\x3e\x38\x59\x04\x96\x9a\xa4\x67\x69\x14\xe7\xb8\x20\xc3\xb9\x43\xb9\xe2\x42\x7a\xe4\x42\x4b\xef\x59\x61\x99\x7e\x64\x50\x09\x31\x64\x65\x19\xb5\xc7\xb4\x50\xc9\x68\x14\xa3\xf1\xd1\x21\xa3\x89\x15\x97\x32\xc5\x4a\xeb\xb8\x8c\x86\xa9\x64\x32\x4c\xa6\xd0\x51\x21\x6b\xca\x59\x5b\x5b\x73\x25\x0b\x67\xb9\xb2\x2a\x6a\x64\x83\x9b\xc0\x86\x34\x1b\x1b\xd8\x96\x6c\x1d\xd7\x96\x4c\x40\x67\x4b\xae\x1d\x7d\x95\x01\xb9\x76\x36\xf9\x83\x8a\x9d\x24\x8f\xec\x50\x59\x76\xf8\x10\xc9\xa5\x8d\x2f\x62\xfa\x0b\x6e\x9b\xd6\xe8\x0c\x7b\xd4\x25\x7b\x7a\x44\x5b\xb2\xaf\xe5\xda\xb0\x0f\x2e\x16\x81\x7d\xac\xd1\x71\x58\xa2\xe1\xe0\x22\x72\xea\x03\x47\x93\x2e\x19\x0d\x59\x93\x56\x43\x81\xa4\xa6\x47\x54\x1c\x8d\x46\xef\x39\x9a\x40\x9a\xd7\xa9\x6a\xbd\x24\x8d\xbc\x25\xd4\xaa\x23\x44\x9e\xed\x9c\x4e\x5d\xf9\x60\x8d\x0f\xd2\x84\x6f\xde\x17\x87\xfd\x00\xb2\xb6\x10\xa7\x7c\xc9\x97\x97\x9d\xa1\x10\xf9\xf8\xaa\xf7\x65\xf2\x6e\xfc\x6b\xef\xb7\xab\xde\x97\x99\xec\x3d\x4e\xba\x59\xa3\xa6\x6f\x62\x95\xa3\xdb\x77\x2d\x65\x4e\xde\xbd\xe6\xda\xcf\x0d\x64\x7e\x5b\xe5\x56\xfb\x66\xfd\x00\x20\x6b\x8f\xe1\x97\x09\x4f\x3b\x83\x6f\x4c\x0d\x8c\xbf\x6d\x85\x10\x0d\x3d\x44\x84\xb0\x24\xb3\xf0\xb0\x46\x58\x4b\x13\x20\xd8\x34\x39\x46\x81\x8d\xe1\xf8\x36\x69\x90\x66\xb3\x4f\xd7\x9f\x47\xb3\x19\xcf\x66\x9f\xaf\x6f\x46\xb3\xd9\x6b\x2f\xfe\xc2\x45\xd4\xd2\x01\x6e\x6a\x87\xde\x93\x35\x6f\xb8\x72\xd1\x1e\x4f\x2f\x26\xdc\x16\x42\x88\x8b\x4e\xa7\x7b\x31\x26\x5b\x6d\x26\x5d\x3e\x73\x42\x3c\xb5\xc7\xd3\xe7\x43\xf0\xb9\xd3\xe9\x0a\xf1\x7c\x08\x67\xad\x7f\xaf\xb0\x44\xad\xa1\xb0\x55\x95\xc4\xe2\xa6\x96\x26\x71\x01\x79\x20\x03\xf3\x5c\x16\xab\x40\xc5\xca\xcf\xc1\x3a\xd0\xb4\x42\x38\xdb\x3c\x85\x25\xf9\xe7\x3e\xc0\xdd\x12\x3d\x82\x74\xf8\x02\x97\x29\x1b\x73\x8d\xbd\x87\x68\x03\xf9\x65\x06\xed\x60\x21\xa6\x24\xa8\xd1\x69\xf2\x55\xa7\xdf\x6c\x94\x0f\x8e\xcc\x62\x00\xd9\x7c\x3c\x9d\x4f\xba\x73\x3e\xdb\x08\xf1\x94\xb4\x27\xc9\x07\xad\xc7\xf9\x07\x4e\x48\x3e\xbb\x64\xc6\x3c\x7b\x39\x42\xa3\x5e\x1f\xec\x3f\x7e\x18\x4f\xbe\x1b\x6d\x27\xa2\x89\xb8\xd3\xf3\xe3\x98\x22\x3b\x02\xfc\xcf\x89\x5f\x51\xbd\xe3\x10\xa2\xdf\x64\x79\xd9\x36\x99\x6a\x2c\x48\xea\x0f\x4b\xe9\x8e\x4b\x0f\x0f\xd8\x3e\x65\x00\xd9\xc9\x0f\xd9\x7a\xde\xd4\x7c\xfe\x13\x24\xbf\x88\xa9\x76\x4f\xed\x91\x88\x93\xa6\x88\xd3\xff\xa1\x0b\x56\xd9\xf4\x6c\xdc\xdd\x7e\xbc\xe5\xfb\xfb\x7b\xfe\x74\x7d\xff\xe7\xa8\x33\x18\x36\xb9\xfa\xb9\xa3\xc5\xf2\x2d\xca\x9f\xc2\x79\xf8\x74\x8f\xd8\xde\xbf\xef\x0d\xcf\x87\xa3\xdb\xbb\xf3\x61\x93\x76\x3a\xba\xbd\x7b\x73\xea\xfe\x09\x00\x00\xff\xff\xd9\xcb\x71\xc4\x05\x07\x00\x00") - -func runtimeSyntaxCrystalYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxCrystalYaml, - "runtime/syntax/crystal.yaml", - ) -} - -func runtimeSyntaxCrystalYaml() (*asset, error) { - bytes, err := runtimeSyntaxCrystalYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/crystal.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxCsharpYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x54\xdf\x6f\x23\x35\x10\x7e\xcf\x5f\x61\x96\x83\xe6\x87\x36\x2d\x12\x2f\xac\x80\x52\x1d\x54\xaa\x74\x70\x20\xf1\x50\x91\x5d\x55\xb3\xf6\x6c\xd6\x17\xaf\xbd\x67\x8f\x93\xee\x31\xf0\xb7\x23\x6f\x12\x9a\xb6\x02\x2a\xf1\x74\x91\x62\x8f\xc6\x3b\xf3\x79\xe6\xfb\xc6\x8d\x36\x48\x43\x8f\x85\x90\xa1\x05\xdf\x4f\x26\x0a\x09\x25\x15\x13\x21\x84\x48\xa7\x16\x3a\x2c\x44\x56\x96\x4b\x19\x5e\x65\x93\x89\x8f\x06\xc3\xfe\xf8\x53\xf1\xda\x40\x08\xa3\x9d\x0b\xad\xd0\x92\x6e\x34\xfa\xa5\x4c\xee\x42\x64\xe3\x2e\x16\xab\xab\xfc\x37\xc8\x3f\x5c\xe4\x5f\x55\x0b\x31\x9f\x4e\x8b\xd9\xa9\x6f\x59\x2d\x66\x97\xd9\x64\xcc\x92\x72\x5e\x59\xeb\x08\x48\x3b\xfb\x3c\xf1\x16\x7c\x21\xb2\xef\x0e\xc1\xd5\xe2\x10\x76\xfa\x4d\x21\xb2\xc3\xf1\x5d\xf5\x00\x72\x57\xcd\x57\xab\x22\xf4\x20\xb1\xa8\xaa\xf9\x6a\x3a\xab\xb2\x43\xe8\xbe\xfc\xac\x2c\xeb\x69\xed\x9c\xe1\x7a\x20\xe4\x30\xae\xb2\x05\xcf\x0a\xa5\xee\xc0\xb0\x72\xb1\x36\xc8\x8d\x71\x40\x7c\x63\xe9\x67\xf2\xac\x2d\x71\x4c\x8b\x71\x76\xcd\x71\x5c\x5d\xfd\x0e\x25\x71\x68\x9d\x27\x8e\xfb\x2d\x90\xd7\x76\xcd\x35\x04\x64\x6a\x75\xe0\x2d\x78\xde\x3a\xad\x66\x65\x59\x1f\x2f\x12\x08\x08\x3b\xb4\x74\xb8\x0d\x18\x0d\x81\x21\xb0\x4c\x61\x12\x48\xb6\x2c\x5b\x94\x1b\x54\xac\xb0\x81\x68\x88\x95\x63\x35\x58\xe8\xb4\x64\x34\x01\xb9\xd1\x16\x8c\x19\xb8\xd1\xf7\xa8\xb8\x71\x3e\xfd\x11\x64\xcb\x6b\x47\x8e\x75\xc3\x3a\xb0\x71\x72\xc3\x16\x77\x6c\xa3\x31\xec\x91\xa2\xb7\x1c\x76\x3a\x01\x50\xeb\xdd\x8e\xc9\x0f\x1c\xed\x11\x6c\xd7\x6a\x83\xff\x7a\xd3\x3a\x90\x07\x49\x0c\x61\xb0\x92\x47\xda\x59\x3a\x1b\x88\x15\x1a\x5c\x03\x21\xa3\x8d\x1d\xe3\x16\x2d\x31\xde\xf7\x46\x4b\x9d\x0c\x42\x6f\x79\x8d\xc4\xba\x3b\xf8\xb4\x4d\x5d\x45\x6f\xc1\xec\x8d\x06\x24\x72\x52\xe1\xc8\x1e\xbb\x1e\x3d\x90\xf3\xec\x22\xb1\xdb\xa2\xf7\x5a\x21\xf7\xe0\xa1\x0b\x69\x23\x0d\x86\x7b\xaf\xb7\x09\xb4\xf7\x2e\xa9\x19\x15\xf7\xb1\x36\x5a\xb2\x47\x50\xce\x9a\x81\x3d\x36\x1c\x10\x0c\x2a\x0e\x48\x1c\xf4\x07\x74\x0d\x07\x02\xb9\x01\x63\x9c\x4c\x26\xe9\xb4\xf9\x28\x89\x93\x48\x5c\xc3\xd1\x06\x68\x90\x63\x48\x6c\x6e\xc1\x44\xe4\xad\xf6\x14\xc1\xf0\xd6\x19\x20\x6d\x90\x07\x8d\xe6\x84\xd7\x24\xe9\x37\x37\x3f\xfd\x92\x27\x58\xb1\xc1\x61\xe7\xbc\x0a\x62\xea\x2c\x06\x41\x2d\x90\x90\x90\x14\x2f\x6a\x14\x31\xa0\x12\x2e\x52\xd0\x0a\x85\x6b\x04\x8c\x91\xe2\x7d\x44\x3f\x88\x5c\x18\x47\x41\x38\x6a\xd1\x87\x14\x34\xfb\x07\x36\x1a\xef\x3a\xde\xb5\xe8\x91\x03\x9a\xa4\xc5\xb5\x77\xb1\x67\x6d\x1b\xc7\xce\x2b\xf4\xf5\xc0\xef\x9c\xb6\x6c\x70\xec\xb7\xb3\x8c\xef\x23\x98\xc0\xf5\xc0\x10\x24\x5a\x95\xea\x53\x78\x34\x1f\x71\xdf\xa3\xd4\x60\x8e\x13\xe3\x11\x36\x89\x6a\xd2\x36\x3e\xd2\xc8\x48\x3f\x58\x5a\xa6\xa1\x3a\x7c\x4d\x3e\x22\x37\x60\xc2\x63\x35\x0d\x5d\xed\xcc\xf2\x48\x6c\x1a\xe0\xb2\xcc\x17\xe7\xf3\x6f\xbe\xfe\xf6\xb2\xf8\xe4\xcf\xcf\x3e\xe7\xea\x59\x56\x1b\xbb\x7a\x1c\xf6\x94\x77\x95\x9e\x91\xbb\x6a\xc1\x17\xf7\xab\xab\xfc\x1a\xf2\x66\x1c\xf9\x05\x5f\xd4\xab\x8b\xfc\x8b\xbb\x6a\x31\x5b\x5d\xbf\xa9\x2e\x47\xd0\xa7\x99\xf6\xb3\x59\x1c\xc8\x12\xa9\x9d\x7e\x6c\x65\x96\xfd\xed\x43\xab\x9e\x78\xc2\x46\xf7\x23\x7a\x59\x2e\x1f\xbc\x27\x8f\xe3\xf1\x77\x8a\xb4\x6f\xdd\xeb\x16\xfc\x21\x74\xba\xaa\xc9\x36\xbe\xe2\x33\x2e\xcb\x32\x4b\x4b\x39\xcb\x5e\x1e\x1f\x1f\xca\xad\x7e\xff\xf2\x8f\x97\x17\x77\xf6\xb4\xb6\xb3\x8f\xa7\xb4\x6e\xd4\xfa\xb3\x92\xce\xcf\x9f\xd6\xf4\xea\x3f\x6e\x4f\x4e\xb9\x42\x64\xd3\x5f\xdf\x7e\xff\x96\x6f\x6f\x6f\xf9\xfa\xe6\xf6\xc7\x1f\x66\xc5\xe5\x0b\xc0\xca\x72\xfe\x4c\x1e\xe5\xfc\xfc\x7f\x20\xfe\x15\x00\x00\xff\xff\x5f\x37\x1f\xac\x8b\x07\x00\x00") - -func runtimeSyntaxCsharpYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxCsharpYaml, - "runtime/syntax/csharp.yaml", - ) -} - -func runtimeSyntaxCsharpYaml() (*asset, error) { - bytes, err := runtimeSyntaxCsharpYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/csharp.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxCssYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x59\x4f\x8f\xe4\xb6\xf1\xbd\xcf\xa7\xe8\x5f\xff\x8c\x78\xc7\x08\xd7\xf7\x76\x10\x2f\xb0\x4e\x00\x1f\x02\x1f\x36\x08\x16\xb0\x36\x40\xb5\x54\x6a\x71\x9b\x22\x65\x92\x9a\x9e\xde\xa5\xf3\xd9\x83\xaa\x22\x25\xaa\xa7\x07\xc9\x25\x73\x50\xbf\xf7\x48\x91\x54\x91\xf5\x47\x9a\x5e\x1b\x8c\xd7\x09\x0f\xbb\x36\x84\x87\x87\x0e\x23\xb6\xf1\xf0\xb0\xdb\xed\x76\xd4\x64\x61\xc4\xc3\x6e\xdf\x34\x6f\xdf\xb4\x21\xa4\xd0\x86\xf0\xf8\xcd\xfe\xe1\xc1\xcf\x06\x83\x74\xfb\xff\xdd\x7b\x03\x21\x60\xd8\x81\xed\x76\x3f\xff\x14\x58\x55\xbb\x10\x21\xe2\x88\x36\x1e\x76\xfb\x37\x3f\xea\xc7\xb7\xfb\xdc\x5d\xed\xac\xf3\x23\x98\x72\x3b\xfd\x85\x08\x3e\xf2\x44\x5f\xf7\x95\x8c\xb6\x63\xf1\xf7\x5a\x94\xb9\x77\xbf\x7e\xca\x5a\x1b\xc2\xae\x75\xe3\x08\xb6\x2b\x73\xcb\x13\xed\xdf\x80\xd1\x27\xab\x5a\x67\x23\xda\x98\x84\xe9\x88\x63\x10\x4c\xab\x53\x47\x08\x68\xb4\xc5\xdc\x1c\xd0\xf4\x09\x8c\x49\x60\xf5\x08\x51\x3b\xbb\x22\xd5\xa1\x81\x6b\xcd\xb5\xc7\xf6\xb6\xcf\xec\x6f\x6f\xeb\xb5\x31\x6a\x74\x1d\x56\x9a\x8e\x28\xfd\x54\xeb\x66\x5a\xdc\xd2\x42\x36\xaf\xe8\x64\xe0\xaa\xd8\x98\x95\x18\xf5\xa8\xed\x49\xf5\xb3\xcd\xd3\x4f\x13\x82\x07\xdb\x62\x82\x2f\x7a\x9c\xe3\x90\x8e\xd0\x9e\x7b\x68\x51\x3d\xe9\xa0\x8f\xda\xe8\x78\x65\xed\xe4\xdd\x6c\xbb\x0a\x2a\x88\x11\xda\x81\x8c\x51\xab\x47\x83\xb6\x93\x55\x57\x6a\x6b\xf4\xb4\xe1\xce\x38\x5f\x0b\x7a\x84\xd3\xe6\x0e\xe7\xf5\x49\xdb\x5a\x99\x5c\xd0\xbc\xea\x4a\xf3\x38\x21\x6c\xe6\x0f\xfa\x0b\x8d\x23\x9b\xa3\xc2\xa0\xfb\x98\x8e\xce\x9d\x47\xf0\x67\x65\xe0\x88\xa6\xa2\xf8\x54\x53\xb1\xd6\xd1\xf9\x0e\x7d\xfe\x51\x47\x17\xa3\x1b\xb7\xac\xac\x7e\xa3\x19\xec\xa3\xf2\xd0\xe9\x39\xdc\xb4\x78\x7d\x1a\x5e\x69\x0a\xf1\x6a\xf0\x46\xbb\xe8\x8e\xb6\xa1\x68\xb3\xed\xc0\x5f\x0b\x6f\x9d\x31\x30\x05\xac\xf8\xba\x92\x6c\xc3\x8a\x28\x37\xc7\x80\x71\xab\x15\x9b\xd5\x5a\x30\xba\xbd\xb9\x35\xb8\xd9\xdf\x6a\x9b\xb5\xd1\x13\xd7\x78\xbb\x18\x56\x36\xcf\xc7\xca\x66\x84\xad\x4d\xd8\x4e\x1b\xb2\x1d\x51\xa4\xcd\x90\x22\x6d\xc6\x0c\x13\xb4\xda\x9e\x16\x5a\x77\x8f\x6e\xaa\xe0\x76\x74\x12\xee\xec\x21\xc9\xf7\x36\x90\xf4\xdb\xb1\xb7\x0b\x29\x24\x9f\x9f\x67\xd5\x61\xeb\xb2\xef\x1e\x3d\xc2\x99\xc5\x30\x40\xe7\x2e\x02\xf5\x17\x59\xf8\xb3\x0a\x16\x26\x01\xf3\x34\x79\x0c\x21\xf1\x1d\x0a\xfa\x48\x47\x93\xf1\x11\x7b\xe7\x31\x13\x6d\x83\xee\x30\xb5\x30\xf1\xf8\x99\x78\x8c\x72\x55\x6b\x54\x12\x2e\x8f\x2e\x38\x0c\x30\x61\x6a\x07\xd0\x36\xa4\xd6\x20\xf8\xc4\xee\x4a\x17\x35\x41\x1c\x04\x51\xfc\x4c\xf9\x3e\xba\x2a\x6d\x23\xfa\xc9\x99\x25\x58\x45\xf4\x81\xda\xe6\xb1\x44\xa7\x4c\x28\x90\x15\x7c\x82\xa9\xc0\x32\x62\xc1\x6a\x19\x7d\x51\xc4\xc4\xb5\x22\x66\x15\x65\x99\x2d\x4c\x60\x0b\x2e\x1d\x24\x78\xd3\xaf\xb6\x33\x8d\x31\xd3\x7a\x95\xb6\xad\xe7\xfc\xb2\x28\x1e\xc9\x45\x0a\x63\x4c\xfd\x67\xcc\xe6\x26\x94\x8d\xdd\xce\x3e\x38\x9f\xd6\xf8\xdd\xe9\x40\x81\x36\x75\x6e\xd4\x16\xea\xb4\x80\x06\x9f\xc4\xe2\x38\x4e\xf1\xaa\x5a\x34\x26\x24\xb1\x52\xea\x0d\x3e\xf3\x85\xfa\xeb\x20\x70\x1d\x95\x69\x6f\xdc\x45\xd0\xc9\x17\x14\x06\xaf\xed\x59\xf0\xc5\xc3\x94\x7a\xe3\x20\xca\x55\x75\xd8\xf3\xd0\x84\x5d\xdf\xd3\x83\x08\xf1\xd4\x80\x14\xe4\x7b\xe3\x5c\x09\xbe\x82\x1d\xb9\x4b\xbc\xa6\x3c\x9b\xbb\xa8\xde\xbb\x51\x90\xb6\xd1\xa5\xde\xd9\xc8\x17\xd5\xc3\xa8\xcd\x35\x63\x84\x38\x7b\x24\x6b\x45\x6d\x4f\x41\xd4\x33\x7a\x4b\x47\x98\x89\x01\x7b\x9a\x39\x06\x3d\xa1\xf7\x74\x20\x59\xe6\xf8\xbc\x20\x05\xdd\xe7\x39\xe4\x09\x42\xf4\x18\xdb\xa1\x10\xda\x79\x81\x57\x1b\x07\x64\x3b\x11\x7d\x02\xaf\xa1\x2c\x2a\x13\x05\x64\x57\x0b\x11\xb7\x9d\x54\x0b\xd3\x8d\x82\x10\xa2\x82\xa0\xc1\x6e\x75\xa3\x4f\xfc\x4c\x37\xdd\xed\x3c\xa2\xd7\xed\x56\x5c\x52\x11\xab\x17\xe4\xc8\xd5\x3b\x17\xad\x8b\xa8\xca\xa1\x58\x84\xc9\x19\xdd\x5e\xd3\xc9\x5c\xa7\x81\x12\x1b\xda\x28\x4e\xf3\x84\x3e\xea\x16\x4c\x3a\x79\xdd\xf1\x45\x81\x47\xc8\x68\x8e\x4e\x95\x83\xbe\x2a\xbc\x53\x2b\xf5\xee\x92\x5b\xa5\x6b\x8d\x15\xda\x6e\xc3\xc9\xf9\x6a\xce\xf5\x93\x28\x4b\x93\x2f\xc3\x7b\x77\x59\x07\x20\x52\x77\xa9\x6f\x8d\x38\x4e\x86\x52\xe7\x86\xf1\x93\x84\x1b\x6d\xf3\x38\x8b\xca\xcf\x30\x80\x3d\x51\x71\x32\x51\x71\x32\x8b\xeb\x0c\x62\xd9\xe1\x3a\x0d\x68\xf9\xfe\x01\x3c\xb4\xe4\x42\xab\x66\xf4\xa8\x23\xb7\x84\x17\xaa\x81\x10\x5f\x8a\xda\xe2\xcb\xae\x5f\x9c\xc5\x2c\x86\x94\xb3\xe7\xba\x55\xa9\xe4\x4e\xdb\xa1\xa7\x33\x5e\x78\x70\x66\x96\x0e\x56\x47\x0d\x46\x19\x8c\xb4\xbe\x2d\x55\x5c\x25\xde\x8a\xec\xc2\x3a\xe4\x10\x9a\xc8\x13\x74\x7f\x5d\x0a\xcf\xc2\xa5\xf4\x2c\x8c\x2b\x4d\xce\xbd\x79\x94\x92\xf1\x0c\xd9\x8a\x2c\x28\xfe\xcd\xf5\x8f\x24\x1a\x86\x7c\xc4\x18\x65\xab\x4a\x81\x44\x99\xc6\xe8\x50\x1c\x6e\x85\xb9\x9c\xa8\x84\xe5\xd4\x57\x1a\x95\xcc\x69\x04\x4f\xb5\x9a\xfc\x94\x92\x29\x33\x5e\x69\xc6\x92\xe1\x33\xa1\x64\x4c\x65\x17\xfa\xfc\xc3\x87\x2d\xc3\xb3\x75\xed\xd9\xcd\x71\xb9\x7d\x23\x2e\xe3\x90\x3a\xea\xe5\xae\x09\xc8\x20\xb6\xd0\x80\x27\x0e\xf4\x85\x52\x0c\x2a\x98\x4f\xef\x08\xfe\xb7\x19\xb1\x8a\xbc\x45\x31\x4e\x56\xc7\x24\x4c\x88\xdd\xca\xd8\x4e\x23\x84\x33\x5f\x54\xae\x17\x2b\x2c\xd5\x6f\x2d\xe4\x32\xac\x96\x72\x15\x56\x4b\x52\x84\x6d\x14\xa9\xc1\x6a\x49\xd2\x1b\x2b\x9c\xa5\x05\xb9\x91\x37\x27\x77\x95\x9d\x63\xb8\x2e\x25\x17\xd4\x8c\x97\x9d\x64\x56\x2f\x85\xc3\x33\xa3\xbc\xb3\xcf\xe5\xb8\x10\x14\xcf\x21\x94\x97\xa1\xed\xd2\xac\xed\x22\x3e\xd7\x6f\x01\xa3\x93\x99\xf8\xa7\x24\xa6\xcc\xb8\xba\xc8\xd8\xbb\xec\x69\x16\x9e\x54\xe7\x2e\x02\x78\xff\x09\xc8\x9e\x13\x9a\xa7\xe4\x8e\x9f\xb1\x8d\xaa\xd7\xb1\xc0\xe5\x89\x64\x82\x9c\xba\x33\xc9\xd9\x3b\x33\x3a\x66\x19\xca\x31\x28\x39\x50\x36\xd2\xf9\x69\x00\x1b\x92\x9b\x23\x27\xf2\xfc\x9b\xbd\xaa\xb0\xfc\x1c\x85\xca\xa1\x28\x4c\xec\x40\x79\x8f\x83\x75\x01\xa5\x57\xa1\xec\xfe\x0b\x7b\x5e\xe1\x35\x4d\xd0\x75\xe4\xd3\xf9\xb7\xf8\x54\xa1\x6c\x95\x42\xc4\x32\x85\x91\x5b\x4d\xb4\xfd\x74\x51\x75\xd9\x58\x09\xd9\x20\x95\x92\x0b\xc8\x09\xe6\x90\xaf\xcb\x5d\x84\xcb\x0d\xe8\xc3\x44\xae\xf2\xb4\xc1\xe5\x6c\x4d\x9a\xd2\x37\x5f\x95\x07\x4b\x8b\xa0\xb7\xd0\x6e\xe6\x88\x49\xa5\xa2\x57\x60\xdb\xc1\xf9\x85\x9c\x0c\x66\xdc\xe9\x10\xf9\x4d\x54\x68\x19\xb2\xec\x2b\x95\xc1\x4b\xde\x94\x17\xb7\xdf\x66\x47\xf9\xde\xe3\x89\x0b\x50\x0f\xe2\xee\x1e\xf9\x10\x7b\x0c\x8c\xcb\x59\x60\x98\x9f\xc3\xeb\x76\xb0\x54\x56\x8b\xed\x96\xa3\x57\x80\x9a\x9c\xa6\x91\xe6\xe3\x35\x47\x6e\x86\x23\xfa\x13\x0a\x5c\xd6\xe5\x67\xcb\x35\x4f\x68\xbd\x33\x46\x1d\x71\x80\x27\xed\x7c\xe1\x14\x5f\xf3\x10\xb5\x92\x23\xe6\x4b\x49\x1d\x8d\x6b\xcf\xaf\x36\xf0\xe1\x7d\xb5\x51\x8e\xf3\xbd\x66\x39\x3e\x77\x5a\xb4\xe5\x43\xfe\x6a\xcb\x6b\x13\xe6\xd6\x57\x67\xe4\x13\x7a\x47\x17\x83\xdf\x69\xa0\x73\x5b\xcb\xc5\x03\xee\x68\x77\x6c\xb4\x69\x79\xb1\xe6\x6d\xeb\xcb\x35\xdf\x78\xd9\xbd\xa6\x3b\x76\xda\x36\xbd\x3a\xe9\xab\x96\xda\x38\xf3\xbd\x86\x97\xb6\xaa\x9d\xbc\xd6\x39\x56\xf3\x7b\x5c\x7e\x51\x8f\x83\xc7\x30\x38\xd3\x15\x55\xdc\x5b\x48\x39\x7c\x4c\x28\x35\x71\x13\xf9\x4c\x98\xa8\x5c\xe0\xab\x82\x90\xc1\x80\x40\x71\x51\x08\x97\xc3\x60\x32\xab\x6b\x35\xca\x92\xec\xf7\x11\x13\x55\xf2\x21\xd0\x0f\xad\x96\x02\x65\x88\xde\x9d\x31\xff\xa8\xe5\x33\x5a\x11\x3a\xa0\x17\x61\x7e\x15\xa8\x15\xef\xe1\x5a\x0b\xad\xf3\x96\x96\xb2\x2a\x39\x0e\x67\x85\x2c\xdd\xc2\x54\xd3\xcf\x8e\x1e\x55\xf8\xa8\x23\x7a\xae\xf6\x8a\x52\x42\x7f\xa6\x12\xb8\x23\x1c\x0d\x2a\x03\x57\x37\x47\x22\x92\x14\x23\x3e\xc7\xec\xc9\x2b\x54\x60\x4c\x4d\xb9\xde\x64\xde\xba\xf1\x48\xfb\x3e\x4f\xb2\x8d\x2c\xae\x9f\x00\x6e\x79\x4e\x2f\xb7\x2a\x1f\xba\x5b\x31\x9c\xf5\xf4\x52\xe4\xdc\xc2\x2a\x8e\xd3\xc0\xaf\x95\x1b\x56\xcf\xb0\x68\x4b\x18\xdb\xca\xd5\x60\xda\x76\xb4\x4f\x8c\x73\x09\x2a\xa4\x2e\x8e\x45\x28\xf9\x8e\x59\xfe\xb0\x21\x78\x82\x16\xd7\x6f\x57\x95\x16\xbd\x1e\x57\x4e\xfe\xce\x24\x7a\xb0\xa1\x77\x3e\xb7\xcd\x54\x74\xb3\x17\x6d\xd7\xcb\x09\x94\x7c\xa1\xea\x5f\x90\x3a\xba\xe7\x8a\xe5\x74\xb2\x0a\xf9\x11\x89\xe7\x11\x17\x98\xbf\xd7\xd6\x42\xf9\x38\x5b\x69\x93\x77\x13\xfa\xb8\xe9\x77\xfb\x7d\x75\xb6\xba\x75\x1d\xaa\xa3\xee\x74\x9a\x03\xd7\xa4\x06\xdb\x98\xca\x8b\x5f\x3e\x50\xd5\xb7\xd6\x27\xa7\x5b\x54\x47\x30\x9c\x0b\x85\x2d\xd3\x0b\xcd\x2f\xe2\x42\x24\xe7\x0a\x96\x9c\x5b\x70\x2c\x30\x7b\xa3\x90\x27\x7a\x03\xa3\x16\xfe\xb9\x0c\x3a\xa2\xec\x45\xba\xe8\x8e\xde\xc3\xc4\x07\x2e\xda\x18\x7a\xa7\xa2\x01\x2f\xce\x77\xf9\x4d\x82\x61\xd9\x2a\x26\xbc\x07\x74\xc9\x69\x96\x61\x4e\xb3\x8c\xf9\x48\x30\xca\x41\x88\x71\x1c\xbc\x9b\x4f\x43\xba\x78\xcd\xef\x2c\x5c\x2a\x7e\xe1\xd3\xf6\xfc\x78\x58\xbf\xf9\x77\xd8\xc3\x6c\xe2\xbd\x8f\xfe\x87\x97\x9f\xfc\x7f\xfd\xe1\x9f\x4d\xf3\xf5\xd3\xeb\x9f\xfd\xd5\x8e\x6a\x16\x0d\xe6\xb0\xdb\xff\x9f\x1e\x27\xe7\x23\xd8\xb8\xcf\x6d\x9a\x8e\xba\xee\x35\x7a\x1a\x1e\xa4\xce\x39\xf4\xae\x9d\x43\x3a\x0c\x74\xbe\xd3\xc1\x68\x7b\x4e\x07\xda\xb0\x88\x5d\xa1\xf2\xe8\x87\xfc\xd8\xdf\xec\x5f\xcc\xf5\xa6\x69\xbe\xa6\xa6\xf9\x3d\x35\xcd\x9b\xd4\x34\x8f\xa9\x69\x7e\x48\x87\xd4\x34\x9f\xd2\xbf\xd2\x9f\xd2\x9f\xd3\x1f\x1f\xcb\xa2\x3f\xbc\xff\xf0\x61\xf7\x0f\xf0\xa0\x8f\x06\xef\xfd\x57\xe4\x9d\xac\x3b\xbd\x1b\xf5\xb3\xb6\xe9\x1d\x3e\x47\xb4\xdd\x72\x3b\xc7\xdc\x72\x5f\xeb\x2c\x55\x55\xf1\xad\x84\x62\x31\xe3\xe6\x3f\x27\xfb\xfd\xa2\xe5\x7f\x9b\x54\x0a\x45\x1a\xfe\x4f\x4a\xd3\xbc\x5d\xd5\xea\xbf\x38\xe5\xaf\x9e\x49\x1e\xfa\xfd\x00\x7e\x7b\xeb\x7f\xb1\x9a\x6f\x6f\x17\xf3\xed\xff\x6c\x2d\xeb\xde\x34\xfb\xf4\x6d\xb1\xde\x7b\x37\x92\x95\xc3\xee\x0f\xbb\xbf\xff\xf2\xd3\x2f\xab\x19\x59\xbe\x63\xbe\xe6\xfb\xa6\xf9\xee\x85\x09\x9b\xef\x9a\xe6\xfb\xff\xb0\xc8\xe8\x3a\x47\x27\x83\xe6\x49\x1f\x3f\x7e\x4c\x7f\xfd\xf9\xe3\xdf\xfe\xf2\x78\xf8\x71\xbf\xe9\xf8\xf0\xef\x00\x00\x00\xff\xff\x7e\xdc\x51\x61\x6b\x1b\x00\x00") - -func runtimeSyntaxCssYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxCssYaml, - "runtime/syntax/css.yaml", - ) -} - -func runtimeSyntaxCssYaml() (*asset, error) { - bytes, err := runtimeSyntaxCssYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/css.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxCythonYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x94\x4d\x4f\xdc\x3e\x10\xc6\xef\xf9\x14\xf9\x2f\xfc\x0b\xb4\x65\x7b\xdf\xbe\x1d\x60\x57\x42\xa5\x02\xa9\x3d\xac\x44\x38\x38\xf6\x84\xb5\x70\x6c\x6b\x3c\x29\x1b\xf5\xe9\x77\xaf\x9c\x2c\x65\x79\xa9\xda\x0b\x4d\x0e\x96\xc7\xd6\x6f\x9e\x79\x66\x92\xc6\x3a\x92\x3e\xd2\xac\xd4\xbd\xac\x82\x2f\x0a\x43\x42\x5a\x66\x45\x59\x96\x65\x3e\xf5\xaa\xa5\x59\x39\xa9\xaa\x69\xec\xd7\xbb\xc8\xeb\xda\x8c\x6b\x6f\x77\x27\x45\xc1\x9d\xa3\x34\xde\xdf\x29\xcf\x07\x4a\xf9\x89\xfa\x9b\xc0\xa6\x3c\x0a\x2e\xf0\x70\x74\x58\x26\x51\x42\x2d\x79\x19\x68\xf5\xbe\xf2\x06\x2a\x41\xa5\x44\x2c\xd0\x4e\xa5\x04\x43\x0d\x8e\xe7\x0b\x18\x72\x20\x67\x1b\xcc\x4f\x4f\x16\x20\x97\x08\xf3\xd3\x2f\x73\xd0\x5a\x53\x14\xd0\x9a\x34\x1a\xeb\x95\x73\x3d\x9a\xc0\x68\x38\xb4\xb8\x72\xa1\x56\x0e\xb6\xc1\xc9\x02\xb6\x8d\x81\x05\xd6\xc3\x26\x38\xd5\xd6\x46\xa1\x55\x11\x3e\x08\x02\x23\xe6\x6c\x91\xad\x17\xb0\xb2\x89\x20\xdc\xe3\x66\x65\x1d\xe1\xc6\xca\x0a\xbd\x25\x67\x0e\xaa\xaa\x9e\xdc\xaa\x8f\xa4\xad\x72\x1b\xed\x3a\x78\xb1\xbe\x23\xd4\x4c\xea\x1a\x4c\xd2\xb1\x1f\xaf\x0f\xf7\xb3\x15\x47\xbf\xb7\xc2\x1a\xf2\x62\x1b\x4b\x3c\x6d\x95\xe6\x70\x4b\xcd\xe5\xeb\x8d\x72\x1d\x87\x5d\x8c\xa3\x33\x3a\x77\x29\x47\x68\x2d\xc4\x1e\xd6\x6b\xd7\x19\x42\x6e\x4f\x8a\x4a\x13\x22\x87\x48\x2c\x3d\x92\x70\xa7\x65\x5b\xfc\xd8\xe1\x21\x47\x9d\x4b\xd6\x2b\xc5\x30\xa1\xab\x1d\x21\xef\x63\x57\x3b\xab\xf1\x2d\x58\x83\xce\x27\x7b\xe5\xc9\x3c\xa8\xe6\x2c\x12\x2b\x09\x7c\xbf\xa5\x7d\x5b\x87\xec\xc9\xc5\x74\xf6\xf6\xf5\xab\x97\x78\xff\x5f\x55\xfd\x7f\x89\x77\xf8\x80\x37\x38\xc4\x8b\x2d\xc0\xb9\x62\xf2\xb2\x22\xb1\x5a\xb9\x27\x28\xd3\x9a\x95\xbe\x26\x49\x19\xb7\x7f\xf0\xfd\xc7\x25\xaa\xea\x02\x55\x75\xb9\x81\x1c\x96\x3a\xf8\x24\xca\xcb\x34\x09\x5b\x7f\x35\xdb\xb0\xcb\x3c\x5a\x3c\x8c\xd5\xf0\x4e\x7e\xc5\xc9\x9b\x27\xa2\x5b\x03\x7b\xfb\x6c\xb3\xc7\x46\x1f\xad\x14\x0f\x96\x55\xd5\xf4\xef\x05\xec\xed\xed\x3d\xcc\x7e\x2f\xf4\x8c\xa9\x9f\xaa\xfb\x2e\x92\xae\x6d\xbc\x63\xfe\x0b\x27\x1e\xf9\xf0\x9c\x62\xda\xe1\xbf\xf2\x48\xc4\xce\x43\x11\xbb\x7f\x48\x27\xc1\xe4\x8f\x71\xff\xeb\xd9\xf1\x19\x96\xcb\x25\x16\x27\xcb\xcf\xf3\x83\xd9\xc7\x49\x51\xfc\x0c\x00\x00\xff\xff\x14\x89\xfe\x81\x2b\x05\x00\x00") - -func runtimeSyntaxCythonYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxCythonYaml, - "runtime/syntax/cython.yaml", - ) -} - -func runtimeSyntaxCythonYaml() (*asset, error) { - bytes, err := runtimeSyntaxCythonYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/cython.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxDYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x96\xfb\x53\x1b\x39\x12\xc7\x7f\xe7\xaf\x98\x73\x1e\xe7\x81\x32\x90\x9f\xae\xc2\x71\xb8\x92\x00\x17\x6a\x09\xb0\x09\xd9\x47\x8d\x86\x89\x3c\xea\xb1\x55\x68\xa4\x59\xa9\x65\xe3\xa4\x37\x7f\xfb\x96\x66\x6c\xb0\xb1\x79\xee\x06\x57\x59\xcf\xf6\xb7\x3f\x52\x4b\x2d\x17\x52\x01\x8e\x2b\xd8\x8a\xc4\xca\x8a\x00\x84\x1c\xb7\x56\xa2\x28\x8a\xc2\x84\xe6\x25\x6c\x45\x2d\xc6\xd6\xdb\xa2\x2d\x49\xc4\xdd\xf8\x79\x6b\x65\xc5\x7a\x05\xae\xb1\x7a\x16\x1d\x57\x60\x39\x1a\xeb\x22\xae\x45\x54\x79\x9d\xa3\xe7\x28\x8d\xae\xe7\x3b\x91\x43\x8e\x50\x82\xc6\xad\xa8\xd5\x66\x6c\x95\x36\xe8\x05\x31\xb6\x46\x1d\xda\xd9\xa1\xed\x6d\xda\xd9\xd9\xa1\x97\xc4\xd8\x59\x9b\xb1\xb3\xb8\x4b\x8c\x11\x7d\x8f\xbb\xff\x6b\x2d\x11\x60\x6c\x3d\xc0\x30\xb6\x1e\x77\xe9\x5f\x14\xe4\x5e\xd2\x77\x62\xac\x4d\x8c\xc5\xc4\x58\x42\x8c\xa5\xc4\x18\x63\xb4\x31\xf1\xf2\x82\xb6\x69\x87\x18\xeb\xd2\x16\xfd\xb7\x35\xa5\xce\x91\xab\x48\x6a\x84\x3e\xd8\x48\x49\x04\xcb\x95\x8b\xb8\x85\x48\x40\x65\x21\xe7\x08\x62\x02\x00\xd6\x1a\x1b\xe8\x37\x93\xcd\xce\x7f\xb2\x74\x35\x6e\x1f\x26\xfe\x73\xda\xa5\x50\x1e\x76\xe3\xee\x54\x75\x17\x72\x59\x2e\xd1\x9d\x08\xe5\x46\x3b\xe4\x1a\xd7\xb5\x2f\x7b\x50\x4b\x26\x9b\x9d\xd7\x29\x25\xaf\x3a\xaf\xd3\xd0\xbc\x4d\xfc\xad\xd4\xdc\x8e\xef\xd2\x6e\x38\x7b\x6f\xd3\x64\xf3\xd5\x7d\x50\x0b\x65\x38\xde\x0d\x5a\x73\x4e\x08\x43\x04\x66\xfb\x71\x3b\x81\xbd\x34\x59\xeb\xa4\xdd\xf9\xf1\xb8\x9b\x14\xfb\x87\x69\x57\x76\x5b\xf7\x12\xbe\x51\xe7\x1e\x32\x67\xeb\xe9\x0f\xe4\x6a\xcc\x29\x29\xf6\xd3\x78\xba\x83\xef\xe1\x82\x8b\x07\x07\x7c\x33\xb9\xf8\x2d\xad\x71\x78\xa7\x78\xd3\xd9\x4f\xaf\x9a\x59\xba\x4a\x73\xbd\x19\xab\xf8\xc6\x40\xce\x62\xdc\x33\x98\x8f\x65\x08\xf7\xee\xe1\xbf\xea\x26\xd5\xc9\xb2\x28\xdc\x1d\x83\x9a\x73\x1a\xd5\x87\x39\xbd\x97\xcf\x67\xd1\xbb\x01\xb7\x3c\xc7\x5b\x22\xe7\xd0\x4a\xdd\x6f\x92\x5d\xf8\x38\xe4\x36\x5c\xb2\x7f\xb7\x2e\x87\x40\x8b\xf9\x81\x99\xfc\x38\xfd\xcc\x2a\x56\x90\x4b\xae\x82\xeb\x3a\xa3\x31\xb6\x3e\xc5\xf9\x09\xc6\x23\x63\x85\x9b\x74\x79\x07\x96\xe6\xc0\x5e\x9b\xf7\x1c\x06\x70\xe2\x4a\x72\x17\xca\xbe\x26\xee\x4a\xe2\xce\x81\x45\xe2\x1e\x0d\xf5\x8c\x18\x53\xcf\x02\x3f\xa7\x9c\x3b\x08\x05\x52\xce\x31\x1f\x50\xae\xb8\x73\x54\x23\x85\x12\xa5\xf6\x40\x02\x7a\xbe\x4f\x02\x0a\xee\x15\x92\x00\x05\x7d\x8e\x40\xc2\x10\x28\x07\x04\xda\x97\x04\x17\x95\xb1\x48\x70\x81\x60\x75\xcc\x58\x6f\x8a\x5e\x74\xd4\x0d\xac\x05\x0f\xbf\x2e\xa4\xe6\xaa\x29\xd5\x98\x0a\x63\xc3\x17\x78\x3e\x98\xd6\x99\x85\x21\xd8\x60\x19\x9e\x10\x69\x34\xf5\x0d\x1a\x92\x05\xc9\xb2\xf4\xc8\x7b\x0a\x48\x96\xb5\x77\xa9\x49\x6a\xe3\x43\x03\xc1\x16\x3c\x07\x92\x7a\xc8\xad\xe4\x1a\x49\x3a\x52\xfc\xeb\x78\x96\xad\xec\xd8\x1b\xd8\x4a\x9e\x5b\x43\xa5\xbc\x90\x9a\x4a\x23\xbc\x02\xd2\x30\x22\x6d\x70\x60\xcd\x88\xb4\x57\x8a\x82\x23\x33\x04\x6b\xa5\x00\xaa\x78\x7e\xce\xfb\x40\x95\xe5\xfd\x92\x53\x65\xe5\x30\xec\x51\x65\x4d\x78\x39\x41\x50\xe5\x7b\x4a\xe6\x54\x79\x0b\x64\xa1\x20\x0b\xe8\xe7\x77\xca\x75\x46\x37\xd0\xb8\xdc\x54\x40\x6e\xc0\x2d\x08\x0a\x93\x32\x27\x87\xd6\xe7\x48\xce\x57\x60\xc9\x8d\x64\x88\x9e\x1b\xeb\x7c\x60\x8d\x96\x5f\x41\x10\x42\x59\xa9\xc0\x80\x03\xe9\xa8\xe1\x46\xeb\x81\xd0\x8e\x29\xbc\xec\x52\xd4\x95\x29\xc8\xeb\xb0\xad\x5e\x4b\x44\x70\x48\x61\xbb\xc3\xc0\x68\x20\x15\xd0\x48\xe2\x60\x16\x33\xcb\x6e\xa0\xcc\xb2\xfd\x83\xc3\xbd\x2c\xa3\x2c\xfb\x70\xbc\xfb\x79\xd2\x3c\x3c\x38\x6a\x1a\xfb\x9f\x8f\xde\x9d\x1e\x1c\x1f\xd5\x9d\x93\x8f\x7b\xa7\xa7\xbf\xcf\x8f\xf5\x27\x0b\xcc\x32\xb4\x5c\xa2\xa3\x2c\x1b\x42\x8e\xc6\x52\x96\x55\xdc\xf2\x12\x10\xac\x9b\x45\xd9\xbd\x7c\x91\xa3\xf3\xd9\x1b\x72\xf5\x34\x07\xae\x70\x60\xc3\x71\xbd\x34\xae\x97\x2d\xa0\xa0\xa1\x51\x1c\xa5\x82\x59\xcd\x13\x2b\x4b\x89\x72\x08\x51\xb0\x9a\xea\x35\xff\x84\x6a\xb9\x9e\x31\x8a\x7a\x63\x04\xca\x85\xf1\xe1\xf4\xe5\xa0\x91\xf2\x3a\xc7\x52\x3e\xe0\x96\x72\x0b\x5c\x91\xa8\xdb\x13\x9b\x66\x56\x4e\x7a\x72\xd2\x0d\xc7\xb2\xb6\x55\x46\xf7\xa9\x6e\xb9\x41\x38\xc9\xbe\x76\xe0\x6b\x65\x1f\xcc\x7c\x6d\xe1\x9b\xd9\xa1\x91\x82\x46\x41\x7e\x96\xfc\xff\xca\xf4\xc2\x25\x8a\x04\x14\x52\x83\x88\xdc\xb8\xec\x19\xb5\x64\x09\x4d\xee\xa2\xd1\xa4\x16\x93\xda\xc9\xaf\x90\x21\x55\x68\x85\x2c\x8a\x0c\x67\xc5\x3f\x35\xc9\x29\x42\x73\x0e\x7a\xc9\x7f\x8b\xe6\x00\xec\xbe\x39\x6d\x82\xbd\x77\xbc\x5f\xd7\xa7\x07\x1f\xf6\x2e\x1b\x9f\x4e\xdf\x7c\x38\xa9\x7b\xbf\xec\x1d\xed\x1e\x7f\x9c\x34\x3f\x7e\xaa\x4f\xc0\x9c\xb7\x1a\x68\x3e\xf7\x3e\x8b\x76\xeb\xcd\xfb\xd9\x1b\x04\xd1\x58\xdc\x90\x94\xa3\x85\xac\xcc\x5a\xd7\xd3\xf2\xec\x88\x3b\x97\xd5\x7c\xca\xbd\xca\xd6\xd1\x23\xd2\xf5\xaf\x63\x27\x47\xe3\xfe\xad\x8c\x0b\x88\xf6\x76\xc6\x47\xbe\x1d\xf7\x70\xfc\xe5\xba\xdb\x2f\xff\xc0\x8b\xf5\x1e\x2e\x1e\xb6\xfc\x8b\x1f\xb2\xfc\x90\x23\x54\xb8\xd0\x77\x9c\x98\x05\x9c\x3f\x58\x8b\xb1\xf6\x02\x11\x8b\x9f\x26\x26\xb5\xfb\x6f\xd7\xdd\xd7\xa3\x7f\x3e\x99\xff\x64\xa9\xff\xf4\x89\xfc\x6f\x2f\xf1\xbe\xf3\xf7\x6f\xe7\xfd\x9c\x27\x67\xed\x6f\xc9\x36\x6b\xa5\xc9\x19\x6b\xa5\xab\xcf\xaf\xb3\x9c\xd5\xe3\x6b\x4f\x76\x18\xda\x97\x40\xf1\x0f\xb9\x25\xef\x4c\x19\x5e\xf2\xab\xc4\x5e\x36\x0f\xfb\x02\xcb\xc6\xc6\x75\xff\xcf\x17\x62\x92\xa4\xd7\x64\x16\x55\x18\x5b\x5d\xbc\x5b\xab\x1b\x8f\x93\x5a\x5b\x94\x5a\x5b\x2a\xb5\xf2\x57\x00\x00\x00\xff\xff\xe6\x35\xb2\x7c\xd5\x10\x00\x00") - -func runtimeSyntaxDYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxDYaml, - "runtime/syntax/d.yaml", - ) -} - -func runtimeSyntaxDYaml() (*asset, error) { - bytes, err := runtimeSyntaxDYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/d.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxDartYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x93\x41\x6f\xdb\x3a\x0c\xc7\xef\xf9\x14\x7e\x46\xdf\x6b\xe2\xc0\x71\xde\x69\xa8\xb1\xcd\x28\xb6\xf5\x54\xa0\x03\xb6\x5d\x26\xa9\x85\x6c\xd3\x8d\x50\x59\x36\x24\xba\x69\x06\x62\x9f\x7d\x90\xe2\xb6\x59\xda\x6e\xc1\x80\xf9\x40\x49\x14\xf9\xff\x51\x92\xd9\x28\x0d\xb8\xe9\x21\x8f\x6a\x69\x71\x32\xa9\x01\xa1\xc2\x7c\x12\x45\x51\xe4\xf7\x8c\x6c\x21\x8f\x62\xce\x17\x7e\xff\x28\x9e\x4c\xec\xa0\xc1\x6d\x03\xd2\xa8\xea\x8c\x43\x69\x70\x61\x86\xb6\x04\x1b\x22\x4b\x96\xce\x45\x31\x65\xff\xa7\x27\x82\x2d\xd3\x13\x91\xd0\x92\x2d\xd3\x57\x7e\xbc\xf3\x0e\x99\x36\xa7\xe9\x99\x98\xcf\xa6\x6c\xf8\x22\x98\x3e\x17\x05\x79\xeb\x57\xc5\xac\xe0\xbc\x8c\x0f\x90\xf7\xca\x73\xce\x17\x23\x62\x3b\xdc\xaf\xbd\xf6\x07\xf8\xd8\x0b\x36\x4f\x45\x31\xba\x0a\xd6\x9c\x79\xd8\xc1\xea\x4f\x25\xf6\x14\x54\x0d\x06\x55\xa3\x42\x32\x3b\x4d\xbf\xca\xf4\xdb\x95\x18\x27\xcb\xf4\xe4\x4a\x24\x8c\xe5\xae\x97\x15\xe4\x42\x24\x6c\x2a\xee\x33\x1d\x4a\x84\x16\x0c\x6e\xa9\xd3\xd2\x82\xbc\xa1\x4a\x3a\xa0\x4a\x62\xb5\xa2\xaa\x33\xa8\xcc\x00\x54\x43\x23\x07\x8d\x04\xda\x01\x35\xca\x48\xad\x37\xb3\x9d\x3b\xda\x57\x6a\x3a\x4b\xcd\x60\x2a\x54\x9d\xa1\x6b\x40\x52\x0d\x29\x43\xd2\x91\x72\x64\x60\x4d\x16\x70\xb0\x86\x1c\x20\xb9\xb5\xf2\xac\xa0\x4a\x72\x2d\x15\x92\x74\x1b\x53\x91\x37\xbf\x82\x8c\x89\xb8\x52\x8e\x70\x65\xbb\x35\xa1\xdd\xd0\xad\xb4\x74\xdb\xa9\x9a\xd6\x2b\xa5\x81\xd6\x0a\x57\xa4\xda\xbe\xb3\x48\x5a\x95\x56\xda\x0d\xf5\xd2\x22\x85\x8b\x27\xb8\xf3\x3b\xb3\x67\x9e\x7b\x84\xa0\x1d\x80\x1a\xe9\xcf\x6d\x06\xad\x77\x23\xb7\xbf\x6c\x88\x3a\x57\x0e\xe9\x13\x5a\x65\xae\x5f\x88\x50\x06\xc9\x0c\x2d\xd5\xdd\x50\x6a\xa0\xb2\xeb\xf4\x4b\x67\x63\xe9\x3c\x4b\xde\xbc\x7e\xfb\xcf\xf7\x7f\x8b\xfc\x3f\x12\xcf\x54\x96\xb1\xcb\x44\x4c\xd9\x65\x26\x68\xca\x39\xe7\xd9\x6c\x96\xb0\x4b\x3f\x13\x19\xbb\x56\xad\x48\x9e\x3d\x0e\xe7\xa1\x07\x82\x29\xb6\x96\xbc\xf7\xa7\x8e\x08\x1e\x56\x36\xc6\xe2\x31\x8f\x39\x2f\x82\x6c\x3c\x79\x10\x6c\x43\x9d\x61\xe9\x3f\x87\xd2\x86\x9a\xb2\xf8\xc1\x07\xa6\xce\xa3\xf8\xe8\xd1\xb1\xd3\xb0\xf7\x5f\x1a\x61\x57\x77\x79\x14\x7f\xbe\x78\x7f\x91\x17\x07\x00\x38\x4f\xf6\x11\x9c\x27\xd9\x1f\x52\xc6\xbe\x73\xe1\xd5\x9e\xd2\x78\xfc\x84\xb5\xe3\x71\x37\xaa\x1f\xaf\x74\xf1\x1b\xfe\x23\xa9\x87\x4a\x49\xfd\x6e\x25\xed\x63\xea\xa1\xe5\x1c\xef\x57\x73\xfc\x37\x8a\xf9\x11\x00\x00\xff\xff\x7a\xf4\xbf\x0c\x8a\x05\x00\x00") - -func runtimeSyntaxDartYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxDartYaml, - "runtime/syntax/dart.yaml", - ) -} - -func runtimeSyntaxDartYaml() (*asset, error) { - bytes, err := runtimeSyntaxDartYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/dart.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxDockerfileYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x90\x51\x6f\xda\x30\x10\xc7\xdf\xf3\x29\xac\x80\x28\x99\x54\xf6\x9e\x97\x2a\x24\x6e\x89\x48\x62\xe4\x84\x2e\x15\xa6\x92\x97\xdc\xd6\x08\x70\x22\xdb\xd5\x54\xe9\x3e\xfc\x64\x28\x05\x75\x0f\xdb\xcb\xfc\x76\x7f\xdd\xdd\xef\xe7\xfb\xd1\xed\xc1\xbe\x0d\x10\x92\xb6\x6f\x76\xa0\x5d\xed\x79\x2d\x58\x68\x6c\xe8\x11\x42\x88\x4b\x94\x3c\x40\x48\xfc\x69\xf2\xd1\xb3\x79\xfe\xba\xfd\x32\x46\x21\x66\x97\xb9\x71\xe0\x7b\x9e\x7e\xdd\x83\x39\x4d\x8e\x46\x64\x09\x6f\xbf\x7a\xdd\x9a\x63\x7d\x4b\x1c\x69\xb6\x3b\x65\x6e\xdf\x5d\x17\x3c\x4f\xef\x39\xcb\x31\x8f\xd2\xa2\x8a\xd2\x82\x72\xe4\xeb\x02\xe3\x3c\xc1\x2c\x9a\xd3\x0c\x69\xbd\x62\x25\x45\x5a\x3c\x62\x94\x24\x18\xb3\xd5\x13\xd2\xa2\xe2\x4f\x2b\x96\x16\x15\x3e\xb2\x6c\x9d\x53\x5c\x97\x94\xe3\x37\xc6\x97\x49\xca\x91\x15\xf3\x75\x9a\x25\x18\xf1\x07\x5c\xd0\x28\xab\x16\xf1\x82\xc6\x4b\x2c\x2b\xb6\x2a\xd3\x87\x22\xca\xb0\x5c\xd0\x2c\x0b\x36\x9b\xd0\x0c\xb2\x81\x70\xbb\xf5\xbd\xa3\xe2\x51\x7a\xae\x65\xb3\x03\x6b\xc8\x84\x0c\x52\x83\xb2\x2f\x60\xba\xf3\x17\x8c\x95\x16\x0e\xa0\xac\xf3\x17\x62\x8a\x42\x04\x28\xc4\x06\x85\xd8\x06\xd7\x5b\x92\xfe\xf5\xfb\x1e\x88\x3c\x0c\xa0\x8d\x54\xed\x79\x7e\x80\xa6\x93\xfb\x90\xf8\x93\xc9\x75\x7b\xdc\x1f\xdc\xd6\x33\xa6\x39\x95\xe1\x7b\x03\x71\x5c\xed\x98\x23\xff\x23\x02\xe5\x8e\x38\xbe\x04\x57\xb7\x3f\xbf\x5b\x62\xfb\xb6\x77\xae\x15\x4b\x18\xd6\x75\x8d\xf7\x69\x9d\xd3\x20\xbc\x7b\xa7\x3b\x96\x32\x56\x2a\x3b\x33\x56\x77\xea\xe7\x9f\x4c\xe1\x7f\x86\x5e\x27\x66\xd7\x0d\x2e\x12\x42\xcc\xfe\xe2\x72\x21\x9d\xae\x10\xbf\x48\x7d\x19\xfd\x57\x9d\x9b\xcf\x36\x37\xff\x43\xe6\x77\x00\x00\x00\xff\xff\xda\x2b\xb9\x29\x1a\x03\x00\x00") - -func runtimeSyntaxDockerfileYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxDockerfileYaml, - "runtime/syntax/dockerfile.yaml", - ) -} - -func runtimeSyntaxDockerfileYaml() (*asset, error) { - bytes, err := runtimeSyntaxDockerfileYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/dockerfile.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxDotYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x52\x4d\x8b\xdb\x40\x0c\xbd\xfb\x57\x18\xb3\x07\x7b\x21\x9b\xbb\xa1\xf5\xa1\x1f\x50\x68\xd9\x52\x5a\xc8\xc1\xb0\xc8\x1e\xc5\x16\x19\xcf\x0c\x1a\xa5\x21\x45\x3f\xbe\x8c\x67\x9b\xec\xc7\xa1\x85\xfa\xe4\x91\xf4\xf4\x9e\x9e\xb4\x27\x8b\x72\x0e\xd8\x96\xc6\x4b\x51\x18\x14\x1c\xa5\x2d\xca\xb2\x2c\x53\xca\xc1\x82\x6d\x59\xf5\xfd\x5d\x6d\xbc\xe8\xf4\xb3\xb9\xa9\x8a\x82\x8f\x16\x63\x2e\xda\x94\x19\x5d\xa6\xa2\xa1\x36\x34\x31\x84\x59\xd1\x4c\xa8\xf9\xd7\x79\x83\x1a\x8f\xc3\xfa\x6a\xfa\x7e\xa8\x1e\x81\x51\x40\x70\x41\x27\x6d\xc6\x02\xb3\x3f\xd5\x33\x82\xd1\x48\xbf\x50\x05\xc8\x36\x5a\x0f\x93\xee\xc9\x5a\xdd\x7b\x27\x4d\x37\x7a\xeb\x59\x47\x74\x82\xac\xa3\x77\x51\x18\xc8\x89\x1a\x1c\x3d\x83\xe0\x57\x35\xc4\x6a\x28\x8a\x67\x21\xef\x56\x58\x9d\xc6\x58\x9b\x36\x9a\xfa\xd7\xa3\xa5\xa0\x16\x06\xb4\x29\x40\xd3\x2c\xf9\x55\x83\x9b\x2c\xae\x70\x70\x23\x66\x70\xa6\xbc\xb6\x68\x3a\xb5\x70\x46\xae\x63\xd3\xe9\x02\x3c\x91\xd3\x65\xb4\xb4\x90\xe8\x42\xce\xa2\xcb\xc5\x69\xf0\x88\x41\x5d\xcc\x39\xcf\x06\x99\xdc\xa4\x9e\x09\x9d\xc0\x2a\x2f\xc0\x84\xb5\x21\x6e\x3a\x0d\xc8\x14\x66\x64\xc2\xa8\xc1\xb3\x3c\xac\x92\x1e\x2e\x62\x18\xdc\x21\x95\x6a\xc4\xd0\x74\xca\xa9\x81\x32\x4e\x47\x0b\xac\xec\x93\x9b\x1a\x61\xc1\x6c\x61\x76\x2f\xce\x10\xb0\x4e\x9b\x6c\x3a\x8d\x64\x30\x66\x6f\xe3\x01\x4f\x1a\xe5\x6c\xb3\xcd\xcf\x0c\xf9\xf1\xed\xb3\x9e\xb2\x29\x27\x32\xf2\x7c\x67\xe7\x65\xf0\xb6\x2d\xcb\xea\x8d\x6e\xde\xea\x66\x53\x15\x8f\x99\x75\x17\xe0\xe4\x2e\x4a\x1a\x32\x5f\x47\xfa\xa2\x00\xaf\x2b\xae\xaa\x4b\x0c\x9d\x79\x11\x89\x07\x0a\xeb\x1d\xf4\xfd\xdd\x35\xfa\xe4\xd0\xfe\x7c\x4f\x99\x02\x8e\x04\xf6\xdd\x0c\x7c\x85\x5e\xe4\x2c\xeb\x69\xbd\x92\xb1\xdd\xbe\x94\x71\xf3\x17\x3e\xf1\xc6\xb7\x65\x55\x7f\xbf\x7f\x7f\xaf\xbb\xdd\x4e\x3f\x7e\xda\x7d\xf9\xd0\xb4\xdd\x3f\x90\xf5\xfd\xed\xab\xa9\xfb\xdb\xed\x7f\x30\xfe\x0e\x00\x00\xff\xff\xd2\x53\x55\xa9\xb1\x03\x00\x00") - -func runtimeSyntaxDotYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxDotYaml, - "runtime/syntax/dot.yaml", - ) -} - -func runtimeSyntaxDotYaml() (*asset, error) { - bytes, err := runtimeSyntaxDotYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/dot.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxElixirYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x54\x7f\x6f\xdb\x36\x10\xfd\xdf\x9f\xc2\x71\x5d\x44\x72\x11\xa3\xff\x36\x18\x9a\x15\x4d\x06\x14\xe8\x0f\xac\xeb\xd6\x60\xa2\xc4\x50\xe2\xc9\x26\x4c\x91\xca\xf1\x14\xdb\xcd\xf5\xbb\x0f\x94\x14\xc7\xd9\x16\xc3\xd0\x51\xef\x9e\x8e\x8f\xc7\xbb\xab\x8d\x05\xda\xb7\x70\x3e\x05\x6b\x76\x06\x27\x13\x0d\x04\x15\x9d\x4f\xa6\xd3\xe9\x34\x7a\x9d\x6a\xe0\x7c\x3a\x13\x62\x09\xbb\x39\xf7\x26\xcc\x67\x93\x09\x76\x16\xc2\x40\x3b\x9b\x06\x52\x04\x0d\x38\xea\x99\x65\xa2\xca\xc0\x84\x9d\xab\x18\xa1\x61\x6d\xee\x18\x7d\xe7\x34\x37\x6a\xc7\x8d\x71\xac\x9c\x66\x8f\xec\x3c\x31\xad\xd1\x6f\x19\x95\x09\xc0\x08\x83\x5d\x6b\x26\xcb\xc6\xb1\x05\xb7\xa2\x35\x83\x85\x86\xdb\x8e\x64\xbf\xd0\x10\x08\xbb\x8a\x3a\x04\x26\x2f\x93\x40\x68\xdc\x8a\xab\xb5\x42\x6b\x02\xa5\x6c\x82\x4c\x14\xf9\x86\x4b\xe3\x14\xee\xb9\x34\x34\x72\x4a\xef\x2d\x28\xc7\xb5\xf5\x8a\xb8\xee\x5c\x45\xc6\x3b\x36\x8e\x60\x05\xc8\xf1\x73\x6e\x54\xcb\xce\x58\x76\x5d\x53\x02\x72\x6b\x34\xb7\x1e\x89\x11\x6a\x40\x70\x15\x30\x75\xad\x85\x94\x93\xd2\x10\x97\x7b\x82\xfe\x93\x01\x94\xc1\xfc\x80\x71\x5f\xd9\x2a\x24\xd6\x50\x27\x1a\x2c\xac\x14\x01\xc3\xae\x82\xb6\xdf\x72\xd5\x29\xd4\xc3\xb3\x65\xd3\xb4\x96\x1b\x55\xa1\x1f\x9e\x2d\x37\x5e\x77\x16\xd8\xdf\x01\xa2\xd1\xaa\xb4\xc0\x2d\xb7\xe8\xc9\x57\xde\xf2\x70\xfe\xf4\x82\x83\x59\x19\x2b\xb3\x0a\xc3\xf6\xfd\xd7\x3f\xbe\x5f\x7e\xfe\x96\xb3\xa9\x19\x6c\x00\xee\x9c\x85\x10\xb8\xf2\x4e\x47\x41\x3a\x9e\xdf\x79\x0d\x1c\xc0\xd6\x1c\x5a\xb5\x75\xc3\x53\x5a\xe3\x36\xe3\xb2\xf1\xce\x90\x47\x0e\xe0\x34\xc3\xce\xd0\xb8\x17\xaf\x80\xa4\x72\x5a\x76\xad\x56\x04\xd2\xb8\x1e\x31\xae\xbf\x96\x68\x7c\x1b\xcd\xa3\x5b\xb5\xad\xdd\xb3\x71\xa1\x85\x2a\x26\x75\x03\x12\xa1\xe6\x2e\x00\x6b\xcf\xe0\x74\x2a\x44\x39\x7b\xae\x7e\xac\x51\x21\xa6\x65\x48\xfc\x6d\x67\x10\xb8\x52\x01\xb8\x76\x8c\x50\x81\xb9\x03\x56\x35\x01\x32\xe1\x9e\x2b\x45\xd5\x9a\x11\x42\xd5\x01\x87\xae\x05\xe4\xdb\xce\x53\xcc\xc1\x13\x2b\x43\x6b\x4d\x15\x13\x51\x7b\xe4\xad\xa1\xf5\x20\x62\x54\x51\x79\x17\x48\x3d\x88\x10\x22\x7b\x77\xf6\x77\xfe\xea\x48\xe6\x03\x61\x39\xd4\xc6\xc0\xcb\x5e\x9f\xbd\x19\x59\xff\xa6\x0d\x55\x77\x3e\x9d\xdd\x64\xc5\x4d\xbe\xb8\xe1\x97\x3b\x21\xee\xb3\xe2\x67\xbe\x10\xe2\xe7\x7f\xa2\x1e\xe8\x62\x96\x64\x85\x98\xe5\x9c\x88\xf8\x9b\xa5\xe9\x42\xcc\xf8\x65\xf6\xfb\xf7\xfc\xe2\x28\xc0\x01\x49\xb2\x22\x8d\x48\x3a\x22\xbf\x64\xc5\xdb\x7c\xf1\xf6\xe0\xcf\xb2\x22\x8f\xfe\xfc\x80\xcc\xb3\x62\x1e\x91\xf9\x01\x29\xb2\xa2\x88\x48\x31\x22\x27\x59\x71\x92\x2f\x4e\x9e\x17\x79\x9a\x64\xc5\xe9\x28\xf1\x34\x4d\x17\xa7\xfc\x32\xbb\xdd\xe6\x4f\xf5\xf5\xc0\xb1\xbc\xdb\x6d\xfe\xa8\xae\xf7\x1e\x8b\xeb\x81\x63\x6d\x3d\x70\x2c\xed\x76\x9b\x1f\x94\x3d\x14\xcf\xbe\x29\xbd\x5d\x96\xa8\xaa\x0d\x50\xe8\x6f\xe5\x9e\xe3\xfe\x42\x64\x1c\x03\x0b\x91\xb0\x10\xe9\xd1\x05\x35\x63\xb1\xbd\xc8\x8a\xfb\x7c\xb9\x98\xf3\x8b\xf9\xec\xa9\x73\x59\xa2\x59\xad\x7b\xce\x23\x29\xb2\x46\x5a\x9c\x9a\xcb\x0d\xec\xb7\x1e\x75\xbf\xe5\x79\xa6\xce\x7e\xc4\x8a\x19\xed\xeb\xb3\x37\x32\x5f\xcc\x9e\xa3\x97\x89\x86\x50\xa1\x29\x81\x09\x02\xa5\xcf\xb5\x02\xec\x62\x03\x81\x66\x15\x02\x20\x8d\x46\x0e\x83\x72\x7c\x31\x4e\x6a\xb0\xa4\x0e\xce\xa1\x43\xf4\xd0\x18\x12\x10\x3d\x8e\xeb\x61\xdc\xd6\xb6\x73\x9b\x38\xd1\x3a\x82\xd1\x3c\x06\x19\xdf\x1f\x82\x3c\xe9\xd3\x21\xd5\xa4\x62\x01\x14\x42\x84\x85\x10\xbf\xfe\xef\xb9\x8f\xfb\xc1\x68\x70\x64\x6a\x03\xb8\xec\xc7\xdb\x78\x32\x29\xdf\xbf\xfb\xf8\xf1\xea\xab\x94\x2c\xe5\xe5\x87\xc1\x5e\x7d\xfe\xab\xb7\x9f\xbe\x5c\xfe\xf9\xf1\xaa\x5f\xf6\xc3\x00\x42\xbf\x2e\xad\xaf\x36\x52\xc6\xa9\xda\x87\x7a\xd2\xbf\xe4\x75\x8c\x9d\x5c\x5f\x5f\xf3\xb7\x2f\x97\x5f\xf8\xb7\x0f\xd7\x9f\xae\x58\x88\x8b\xe1\x7f\xc8\x71\x8b\xd0\xa2\xaf\x96\x61\x0d\xa5\x1a\x3a\x4e\x7c\x5f\xbc\x38\x59\xbe\xba\x48\xa6\x3c\x4f\x67\x93\x7f\x02\x00\x00\xff\xff\x5b\x2b\xa6\x36\x18\x07\x00\x00") - -func runtimeSyntaxElixirYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxElixirYaml, - "runtime/syntax/elixir.yaml", - ) -} - -func runtimeSyntaxElixirYaml() (*asset, error) { - bytes, err := runtimeSyntaxElixirYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/elixir.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxErbYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x55\x7f\x6f\xdb\xc8\x11\xfd\xbb\xfe\x14\xb4\x22\xd5\xbb\x72\x25\xb7\xff\x04\xa8\xce\x67\xe6\xda\x28\x45\x80\x6b\xdc\x02\x01\x9a\x1e\x7f\x28\x4b\x72\x48\x2d\xb4\xdc\xa5\x77\x97\xb2\x75\x79\xfe\xee\xc5\x52\xb2\x65\xc7\x6e\x0c\x7a\x21\xbc\x19\xce\xbc\xd9\x79\x33\xac\xa5\x22\xbf\xeb\x68\x11\x91\x2d\x4e\x4e\x2a\xf2\x54\xfa\x45\x74\x12\x45\x51\x14\x6c\x5a\xb4\xb4\x88\x46\x69\x3a\x27\x5b\x8c\x91\xa6\x73\xbb\xf6\xad\x1a\x8f\x4e\x4e\x6c\xaf\xc8\x2d\x06\xcf\x59\x44\xd6\x1a\xbb\x88\x46\x97\x49\x7e\x9a\xcd\xa7\xf1\xd5\xe8\x60\x70\xbb\xb6\x30\x6a\xee\x45\xb3\x88\x46\x2c\x96\xfc\x32\xb9\xc8\x62\x26\x58\x51\x58\x94\xd6\xe8\x5d\x8b\xaa\xb2\xe4\x1c\xba\x4e\x91\x87\x25\x01\xeb\x65\xa9\x08\x4e\x56\x84\xbe\x92\x86\xc7\x28\x98\x70\xc4\x6a\xa3\x3d\x8f\x51\x31\x09\xc3\x21\x1b\x28\x53\x6e\x6e\x7a\xe3\x09\x96\xc7\x28\x05\xd3\x5b\xe1\xd0\x79\x69\x34\x47\x49\xda\x93\x45\x29\x3d\xa1\x34\xac\x22\x28\xa8\xc6\x9a\xbe\xe3\xa8\x98\xf0\x82\x29\xe9\x86\x78\x20\x05\xf2\x42\x2a\x87\x5a\x43\x0a\x65\x1a\x48\x0b\x05\xcf\x41\x2d\x2b\xa8\xe2\x31\x6a\x49\xaa\x72\xe4\x51\xcb\x86\x95\x62\x48\x82\xde\x12\x47\xa0\x85\xda\xd8\x16\x4c\xf2\xb8\xb6\xa2\x25\x0c\x67\xf0\x5e\x27\x7f\x99\xbd\xcd\xb0\xb6\x90\x90\x6d\x03\xa9\x59\xd7\x7b\x38\x8e\x4d\x51\x61\x43\xbb\x86\x34\x94\x28\x48\x41\x51\x43\xba\x82\x92\x4c\x6f\x78\x8c\x56\x30\xa9\xd1\xc1\x6e\x38\x5a\xd2\x3d\x93\x9e\xda\x80\x93\x67\x02\x64\x39\xb4\xd8\x42\x1b\xb6\xcf\x05\x57\x5a\xd9\x79\x0e\xc3\x14\x3a\xcf\x86\x4a\x31\xdc\x44\xef\xbb\xde\x73\x74\x4c\x58\xd1\x42\x96\xbe\xb7\x84\xf0\x98\x26\x5c\x3d\x8f\x71\x03\xcb\x3a\x78\xf4\xc5\x8e\xc3\x31\x6f\xe5\x86\x78\x0c\x27\xda\x0e\x8e\x58\x39\x14\xab\xa8\xf4\x1c\xae\x15\x4a\xc1\x99\xde\x96\x04\xd7\x09\x0d\xe7\xad\xd1\x0d\x5c\xcf\x0a\x74\x68\x5b\x61\x77\x1c\x9e\xee\xbc\x08\xdd\xf4\xb2\x25\x78\x2b\xca\x0d\x7a\xa6\x78\x8c\xad\xb0\xd8\xca\x8a\x0c\x6e\x0b\xcb\x59\x34\x9f\xe2\x8a\xbf\xaa\x99\x39\xdd\x79\xd2\x15\x55\xcf\xc4\x53\x98\x6a\x87\x4a\x6e\x11\xa4\x88\x35\x89\x8a\x51\x68\x7f\x6d\x4c\xe8\xb7\x97\x5e\x11\xbc\x28\xc2\x79\x70\xc6\x9a\x91\x08\x4d\xb4\x83\x17\x7f\x25\x6b\x67\xa9\xb3\xa6\x7c\x96\x69\x7f\xa3\x70\x7e\xa7\xe8\x35\xa2\x1d\x95\x52\xa8\x45\x34\xfa\x63\x92\xff\x94\x24\x0b\xd7\x89\x92\x16\x59\x96\x4d\x7f\x7a\x5e\xcc\x22\x1a\x25\x8b\x9f\xb3\x07\x50\x56\xa4\xbd\xac\x25\x85\x99\x61\x42\x79\x14\x4d\x69\x94\xb1\x58\x93\x6c\xd6\x1e\x6b\x4b\x35\x64\xf5\xa0\x0b\xa3\x9b\x8a\x5c\x89\x30\x8e\x30\xba\x54\xb2\xdc\xc0\xe8\xda\x94\xbd\x83\xd1\xca\x88\x0a\x46\xb7\xa6\x77\x64\xb6\x64\xe1\xe4\xef\x0f\xad\xb1\xe5\x9e\x3e\xbc\xb0\x0d\x79\x84\x69\xc7\x56\xa8\x9e\x70\x2b\x2b\xbf\xe6\x3f\x3f\x90\x2a\x8d\x76\x5e\x68\x3f\x77\xde\x4a\x1d\xe6\x35\x1d\x25\x79\x3a\xca\xa6\xe9\xe8\x85\x8f\xee\xdb\x62\xcf\x3e\x96\xfc\x4d\xf2\xe7\xd9\x5f\x7f\x99\x7d\xc8\xbe\xbd\xfd\xd3\xdb\xfb\xff\x13\x6f\xde\xdb\x70\x0d\xac\xf6\x1d\x0b\x8a\x5b\xfb\xc3\x8f\x46\x7a\x94\x6b\x6b\x5a\xe2\x8b\x8b\x8b\x24\x8f\xfe\x90\x9d\x1f\x63\xb4\x2d\x69\x1f\x36\xcb\xe9\x6c\x36\x3f\x8f\x67\xb3\x57\x1a\x76\x79\xfa\xfe\xfa\xef\x9f\xff\xfb\xaf\xe5\xfc\xfc\xd8\x9c\x8a\x6a\xd1\x2b\xbf\xdf\x50\xe1\xcf\x79\x61\x87\x48\x93\xd1\x23\x46\x3a\x48\x6b\x72\x75\x44\xf6\x6b\x2d\x4a\xb2\x93\x97\x69\x26\x98\x3c\x86\xb7\x83\x28\x7f\xd0\x77\x2f\x3c\x1d\xb8\xa7\x69\xc1\xfe\xb6\xfc\xc7\xc7\x4f\x58\x7e\x7a\x0f\xa1\xa4\x70\x10\xba\x42\x41\x8d\xd4\x28\x2c\x89\x0d\x4a\xe1\x08\xa5\x12\xce\xa1\xa2\x3a\xfc\x4b\x4d\x55\x9a\xc6\xa8\x0c\x48\x39\x0a\x87\xac\x11\x16\x04\x69\x17\x06\xb8\x16\x01\xae\x8d\x85\xac\x21\x35\x5a\x53\xf5\x8a\xa0\xe9\xce\x43\x4b\x05\x6d\x3c\x8c\x85\xa5\xca\xc0\x92\x2b\xfb\x30\xf3\xde\xee\xc2\xd9\x5b\x0d\x47\xaa\x86\xeb\xbb\x30\x33\x6b\xd2\xf0\xb6\x27\xf4\x3a\xa4\xef\xb5\x0a\x2b\xb9\xd7\x5e\x2a\xdc\x06\xe3\xed\x5a\x2a\xc2\x2e\xec\x40\x9e\xa6\xc5\x4b\x25\xcf\xb7\x62\xd0\x43\x9a\x8e\xf1\x0e\xef\xde\xf1\x38\x4d\x8b\xe4\x97\xd9\x6f\xd9\xf9\x5e\x1e\xbf\xad\xc4\xec\xf7\x6c\xfa\xf0\x66\x2b\x1a\xd2\x5e\x1c\x24\xc4\x92\x28\xca\x90\xf3\xc5\x83\x6f\x76\xfe\x7a\x96\x56\x94\xd6\x1c\xee\x74\xb5\xfa\xf0\xf1\xd7\xe5\x6a\x85\xd5\xea\xd7\x8f\x9f\x96\xab\xd5\x53\x66\x85\x0d\x93\x74\xcc\x72\x7a\xc1\x92\xfc\x22\x03\x4b\xd3\x34\xbd\xe0\x7c\x7a\x91\x48\xd3\xde\x65\x53\x4c\x6c\x9a\x7e\x63\x49\x7e\x7f\x30\xde\x73\x3e\x4d\xd3\xfb\x83\xf9\x79\xbc\x42\xf5\xe1\x83\xf8\x35\xc9\xbf\x66\xd3\xaf\x98\xdc\xa5\xe9\xb7\xf0\x66\x78\xe1\x47\x83\xc4\x86\x49\xda\xc7\x4f\x47\x21\xc1\x08\x93\xe4\xdf\xff\xc9\xe2\x27\x01\x1e\x11\x96\xe4\x3c\x20\xfc\x80\x5c\x26\xf9\x55\x36\xbd\x7a\xb4\x27\x49\x9e\x05\x7b\xf6\x88\x8c\x93\x7c\x1c\x90\xf1\x23\x92\x27\x79\x1e\x90\xfc\x80\x9c\x86\x4f\xf3\xf4\xf4\x79\x39\x8d\x25\xd2\x8b\x68\xf4\xe6\x95\x32\x1e\x6c\x67\x2c\xc9\xcf\x0e\xd4\xcf\x38\x9f\x9e\x61\x92\xdc\xdc\x66\xcf\x79\x0f\xc0\x53\xda\x37\xb7\xd9\x91\xf5\x60\x7d\x4a\x7a\x00\x9e\x72\x1e\x80\xa7\x94\x6f\x6e\xb3\xef\x18\x1f\x77\xc1\x9b\x24\xff\x96\xcd\xa7\x63\xbc\x19\x7f\x67\x9c\xef\xcb\x0a\x3e\x47\xa7\xa3\xd7\x0b\x1d\xbd\x5c\x0e\x97\xb3\xf8\x2c\x5e\x5e\x7f\x3e\x8b\xbf\xdf\x12\xf9\xf2\xfa\xf3\x0f\xf6\x84\x37\x55\xd0\x25\xfb\xf2\xe5\x0b\x3e\x5f\xbf\xbf\xc6\x87\x8f\x5f\xfe\xb9\x44\x9a\xc6\xfb\x87\x8f\x4e\xfe\x17\x00\x00\xff\xff\x6d\x99\xea\xb9\x6e\x09\x00\x00") - -func runtimeSyntaxErbYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxErbYaml, - "runtime/syntax/erb.yaml", - ) -} - -func runtimeSyntaxErbYaml() (*asset, error) { - bytes, err := runtimeSyntaxErbYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/erb.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxErlangYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x56\x5f\x8f\x13\x37\x10\x7f\xcf\xa7\x88\x72\x54\xec\xd2\x26\x07\xb4\x52\xcb\xbd\x44\x27\x0a\x2a\xaa\xca\x3d\x40\x55\x44\x7c\xb2\xbc\xf6\xec\xc6\x3a\xaf\xbd\x1d\xcf\xde\x25\x30\xf9\xee\x95\xbd\xd9\x5c\xe0\x10\x50\x2a\x35\xd2\xee\xac\xff\x8c\x67\xe6\xf7\x1b\xcf\xa4\xb6\x0e\x68\xdb\xc1\xd9\x14\xd0\x29\xdf\x4c\x26\x06\x08\x34\x9d\x4d\xa6\xd3\xe9\x34\xad\x7a\xd5\xc2\xd9\x74\x26\xc4\x02\xd0\xdd\x9b\x4d\x26\xd8\x3b\x88\xc3\xfa\x7c\x6a\x0d\x78\xb2\xb5\x05\xcc\x7b\xaa\xd5\xf9\xfc\xed\xe5\xea\xe1\xfc\x89\x9a\xbf\x93\x97\x0f\x84\xa8\x66\x79\xe7\xc9\xf4\x15\xc0\xd9\x74\x4d\xd4\x9d\x9d\x9e\x0e\xb6\x16\x01\x9b\x53\x13\xf4\x29\x42\x0d\x08\x5e\x83\x6c\x95\xef\x95\x3b\x35\x8a\x94\x4c\x6e\xc5\xc5\x9a\x5a\xb7\xb7\xa5\x83\x8f\xa4\x3c\x2d\x7c\xdf\x56\x07\x83\x0f\xe7\x4f\x2e\xbf\x2f\x84\x58\x0c\x5f\xe5\xb2\x80\xf9\x72\xfc\x3e\xd8\xff\x9c\xf6\xfb\x47\x3f\x3c\xde\x09\x71\xb2\x52\xf3\x77\xe7\xf3\xb7\x59\xf5\x53\x8a\x55\x08\x6e\x50\x2b\x08\x7b\xe0\x5a\xb9\x08\xe5\x17\x4c\xdc\x13\x42\x88\xa5\x10\xaf\xde\x3f\xda\x7d\x0b\x14\xd6\x13\x06\xd3\x6b\xb2\xc1\x1f\x83\x11\x49\x11\xb4\xe0\x69\xef\x91\xaa\x09\x90\x95\x37\xe9\x51\x2e\x06\xae\xd2\xa0\x82\xc6\x7a\xae\x7c\x20\xae\x02\x72\x15\x1d\x57\x11\xb9\xda\x04\x64\xad\x22\xb0\x56\xa4\xd7\xac\x83\x37\x6c\xec\x35\x83\x37\x5c\xf7\x9e\x6d\xcd\x0e\x88\x93\x5e\xa8\x39\x20\x07\x04\x17\x81\x11\x34\xd8\xeb\x24\x5b\x26\xdc\xf2\xcd\x1a\x3c\x6f\x02\x96\xdf\xc8\x74\xab\x34\x86\x0f\x58\xee\x10\x3a\x0c\x3a\x87\x35\x2f\xda\x60\x7a\x07\x0c\x9b\x2e\x20\x25\xeb\x01\x0d\x5b\xaf\x5d\x6f\x60\x94\xd2\xd9\x8a\x0d\xd4\xd6\x03\xf7\xde\x40\xcd\xb6\x1e\xde\x79\x90\xfd\x06\x6f\x6c\x9a\x61\x70\xe9\x85\x18\x90\x6f\x14\x7a\xeb\x9b\x63\x06\x6f\xd3\x79\x91\x3d\xcb\x5e\x2c\x57\x43\x56\xc8\xa3\xb4\xf8\x6c\x94\xad\xf2\xe3\xd4\x31\x63\x1d\x68\xab\xc6\x0c\x82\x0d\xc9\xca\x7a\x85\x5b\xde\x0b\x1b\xae\x41\x73\x0b\x31\xaa\x06\xe4\xdf\x3d\xf4\x20\xd3\x45\x60\xb2\x2d\x14\xb2\xf7\x96\x38\x92\x6a\xbb\x92\x55\x15\x59\x75\x9d\xdb\xb2\xa2\xd0\x16\x92\xc2\x78\x56\xfa\x74\x36\x52\xb9\x3f\x55\x16\x9d\x42\x62\x0a\x32\xed\x4c\x12\x36\x36\x92\xf5\xcd\x61\xa2\x76\x41\xe5\x1d\xd6\x13\x34\x80\xbc\x3f\x22\x49\x02\x6c\xd3\x51\x54\xc8\x68\xdf\x01\x47\xc2\xa4\x7a\x6b\x64\x4b\x30\xac\x68\xb0\x8e\xf5\x1a\xf4\x95\x2c\x82\x33\x52\x07\x03\x9c\x88\x84\x18\xf3\xa0\x64\xa3\x08\xd8\x80\x03\x02\xb9\xe7\xd5\x40\x1b\xbc\xa5\x80\x6c\x6c\xd4\xc1\x7b\xd0\x24\x7d\x52\x05\x97\xb3\x9b\x01\x53\x96\x0e\x84\xc1\xc6\x12\x67\x77\x3f\x19\xf2\x32\xad\x05\xe4\x46\x61\x95\x20\xd4\xc1\x39\xd0\xc4\x0d\x10\x37\x18\xfa\x4e\x3a\x50\x06\x90\xd7\xca\x11\xef\xa3\x3d\x3e\xe9\x10\x96\x0d\x49\xca\x22\x47\x76\x58\x2f\xd9\x46\x59\x28\x97\xf2\x3f\x83\x77\xe0\x8f\x06\x5c\x38\x55\x08\x50\x7e\xf0\x31\xdd\xa3\x7c\x6d\x47\x53\x9c\x51\x6d\x55\x97\x1e\x79\x05\x5b\x1e\xea\x04\x77\xd6\x70\xce\xef\x11\xaf\xc1\xc6\x3e\xdb\x0f\x77\x86\xa9\xef\x1c\xb0\x03\xdf\xd0\xba\x64\x67\xfd\x55\x3e\x32\x45\x50\x7c\xda\xa1\x0f\xc9\x1e\xdc\x1a\xbd\x39\x58\x45\xa8\x87\xa3\x4b\x76\x41\x99\x91\x9b\x56\x5d\x81\x4c\x6b\xc9\xdb\x22\x81\x98\xe0\x28\xb9\x55\x1b\x6e\xad\xe7\x61\x9b\x4c\x2a\x60\x78\xcf\x63\x91\xd9\x2b\x97\x9c\x44\x4c\xe2\x86\x43\x07\x5e\x0e\xf1\x59\x33\xb2\x95\x4d\x17\x52\xbb\x90\x8a\x50\x68\xdb\x54\xad\xf6\x19\x90\x24\x61\x70\xb7\x84\x74\x78\x30\xb4\xc7\xa8\x90\xb5\x53\x0d\x4b\xeb\xeb\xc0\x10\x4b\xee\x7a\x6c\x0e\x79\xd5\xf5\x29\xac\xc6\x46\x02\x2c\xc0\x94\x4b\xc6\xd0\x7b\xc3\x11\x5c\xcd\x11\x68\xcc\xae\x21\xa9\x3b\x75\xe3\x0b\x99\xf1\x94\x63\x3e\xca\xd0\x11\x8f\xc4\x2f\xd3\xc5\xa3\x04\xa5\x8e\x4c\xd8\x7b\x3d\x00\x76\x9b\x21\x83\x9b\xbd\xcf\x87\xf4\x7e\xb4\x9d\xea\x23\x82\x8d\xdf\x5a\x1e\x3f\x6a\x84\x27\x89\xc6\xb1\x9c\x6c\xdb\x2a\xb8\xa1\x0f\xa7\x5f\x24\x85\xa9\x19\xdc\x9f\x1d\xa6\xc0\x9b\x0f\x27\xe2\x95\xed\x72\xfd\x11\x62\x71\x3b\x3b\x34\xf4\xe9\xea\x72\x72\x32\x3d\xfa\x1d\xf5\xb3\x7d\xe9\x7a\xba\x56\xa9\xa9\x7d\xb7\x98\x7d\xe5\xce\x64\x68\xa5\xaa\xda\x23\x5d\xdf\x17\x42\xe4\x89\xcb\x7f\xa3\x5d\xac\x1e\xce\x7f\xbe\x7c\xff\xe3\x8e\x37\xab\xf3\xf9\x73\x35\xaf\x73\xc7\x7e\xbc\xe3\xfe\x78\xfc\xd3\x8e\xff\x3c\x1e\xff\xb2\x2b\xef\x34\xe5\xe1\x4a\xdc\x05\x4c\xcc\x3e\x46\xec\x78\xe6\x73\x90\x4d\xbe\x1a\xae\xff\x84\xd6\xff\x0a\x56\x9b\xff\x53\xdc\x05\x49\x14\x42\x3c\xb8\x03\x94\x78\x20\x44\xf9\x05\x58\x28\x98\xd4\x47\x8b\xd7\x17\xbf\x5e\xf0\xf3\x17\x6f\xfe\x78\xc6\x7f\x5d\xbc\x7c\xfd\xfc\xc5\x1b\x7e\x79\xf1\xfa\x19\xff\x76\xfe\xf4\xf7\xf2\x6c\x39\xfb\x27\x00\x00\xff\xff\x80\xeb\x8d\x34\x8b\x0a\x00\x00") - -func runtimeSyntaxErlangYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxErlangYaml, - "runtime/syntax/erlang.yaml", - ) -} - -func runtimeSyntaxErlangYaml() (*asset, error) { - bytes, err := runtimeSyntaxErlangYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/erlang.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxFishYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x55\x5b\x73\x54\x37\x12\x7e\xf7\xaf\x38\x8c\x5d\xcb\x0c\xec\x78\x81\x05\x6a\xd7\x7b\x71\x52\x24\x54\xe5\x21\xe1\x25\x0f\xae\x58\xc6\xd1\x48\x7d\x46\xe2\xe8\x86\xd4\x9a\xb1\xc3\xc7\x7f\x4f\x49\x33\x36\x60\x28\x82\xcb\xba\x4c\xf7\xd1\xd7\xdd\x5f\xb7\x5a\xa3\x75\xc4\xd7\x89\x4e\x86\xd1\x16\x73\x70\xa0\x89\x49\xf1\xc9\xc1\x30\x0c\x43\xd3\x05\xe9\xe9\x64\x98\x09\x71\xdc\xf4\x47\xb3\xae\x30\x24\x35\xe5\x93\x61\xf6\xfa\xf0\xde\xf1\x83\x7f\xcc\x29\x6c\x86\x87\x8b\xd3\xf6\xc5\x7c\xc0\xd1\x62\x76\x70\x90\xab\xa3\xb2\x83\x19\x86\xc3\xe1\x97\xea\x57\x94\x4b\xff\xbd\x1c\x54\x0c\x85\x65\xe0\x0e\xbc\x3a\x7f\xb4\xfc\xf7\xc5\x43\x21\x56\xb3\x83\xdb\xef\x5f\xc4\xa0\x2d\xdb\x18\xa4\x2b\x83\x0c\xba\x1d\xe1\x1c\xdd\x30\xba\xb8\xdd\xa3\x14\x96\x4c\x9e\x6e\x60\xe6\x32\x68\xac\x68\x6d\x03\x56\x99\xe4\x04\x25\x0b\xa1\x9d\xb3\xa1\x12\xc8\x15\x02\x05\x8d\x31\x66\x8c\x35\xa8\x86\x0e\x3b\xc2\x06\x84\xc8\x88\x19\x99\xb8\xe6\x80\x42\x8e\x14\xa3\x18\x3b\x32\xca\xd6\xb2\x32\xd8\x1a\xeb\x68\xd1\x7d\xdc\x1b\x4f\xa4\xac\x74\x27\xc3\x6c\x2e\xc4\x3b\x08\xf1\x1e\x42\xcc\x21\xc4\x02\x42\xfc\x07\x42\x5c\x40\x88\x73\xfc\x0e\x21\x84\x80\x10\x47\xf8\x2f\xfe\x8f\xd7\xb8\x87\xff\xe1\x6f\x10\x02\x8b\x8f\xa2\x7d\x69\x8b\x19\x54\xf4\x5e\x06\x7d\xc3\xd1\x2e\x29\x3d\xb0\xd5\x1a\x2b\xdb\x82\x73\x51\x4d\xbb\xe0\x52\xb4\x81\xb1\xaa\xd6\xb1\x0d\x50\x1a\x2a\xd6\xc0\xd8\x63\xdc\xac\xce\x86\xc6\x80\x4f\x8e\x98\xa0\x6d\x36\x6d\x2a\x20\x65\x22\xc8\x5b\x06\x6d\xa4\x03\x5d\x91\x02\x5d\x59\xc6\xb8\x46\x4b\x62\x9f\x2e\x55\x0c\xa3\xdd\x09\x2e\xad\xa6\xc0\xbb\x6d\x92\x6b\xca\xfb\x6d\x8e\x3e\xed\xc5\xd9\xae\x0d\x7f\x22\xa9\x49\x4b\xa6\xcb\xbd\x7d\x1b\x43\xe9\x72\xdd\xd9\xa7\xdd\x52\xe4\x86\x6e\xb3\x51\x60\xc8\x25\x18\x5b\x38\xe6\x6b\xbc\x89\xab\x02\x2f\xd9\xc0\x5b\x4f\x7a\x85\x40\x57\xac\x11\x13\x05\xa4\x98\x34\x52\xa6\x8d\x46\x2a\x75\x85\x54\x1b\x70\xda\x6a\x64\x19\x74\xf4\xc8\x24\x35\x0a\x71\x1b\x97\x2a\xba\x98\x51\x62\xcd\x8a\xd0\xca\xa6\x16\x14\xce\x36\xac\xc1\x59\x26\x34\xae\x51\x9d\x6d\x8c\x54\x2f\xcb\x84\x8d\xcc\xa4\x17\x77\x6b\xd2\xfb\x18\x06\x67\x43\xbd\xfa\x4a\xb6\xe6\x6b\xd8\xf5\xe2\x54\x6e\x27\xac\x64\x31\xd0\xb2\x13\x1a\x34\x84\xd8\xbe\x7b\xf4\xf7\xa7\xef\xd7\x99\x12\x26\xeb\x5c\x9f\xa4\x73\xb7\x1a\x47\xa5\x85\x3c\x11\x52\xd7\x17\xd2\x28\x06\x2c\xf3\x67\xbe\x64\xaa\x6c\x5d\xf9\x5a\xd9\xc8\x42\xcf\x9f\x36\x27\xfa\x2d\x86\x92\x0c\x65\x54\x0c\x50\x66\x9d\x13\x94\xf1\x51\x43\x99\xb8\x6d\x92\x1c\x23\x43\x4d\xa5\xfa\x5e\x3d\x50\x09\xaa\x24\x67\x19\xaa\x32\x5a\x26\xa1\x35\xf4\xd8\x2a\xa8\x8d\xce\x69\x69\xbb\x0e\xae\x2b\x28\x6c\x40\x57\xa9\xd5\x1f\x5d\xa5\x8c\x51\x2a\x6e\x77\x4d\xb6\x9b\x37\x7a\xc6\x18\x9d\x46\xeb\x1d\x30\xb1\xb0\xd5\x68\xff\xad\x13\x38\x87\x37\xd1\x06\x38\x1b\x26\xb8\x00\x17\xd7\x1d\xd4\x15\x78\xfd\xac\xb9\xe4\xa7\x66\xd6\x4f\xa3\x1d\x23\xfc\x14\xa2\x86\x9f\x98\x7c\x82\xdf\x20\x58\x45\x08\x0e\x21\x9a\x9a\x10\x52\x8e\x0a\xa1\xfa\x66\x32\x6a\x24\x59\x98\x90\x24\x1b\x65\x26\x24\x1b\xa6\x6b\xa4\x8c\x94\x6d\xe0\xe6\x72\xdf\x8c\x48\x7c\xb5\xab\x1f\x92\xba\xfb\x91\x49\xba\x76\x0a\xd9\x23\xfb\x66\x3e\xd7\xd0\xd8\x2b\xf4\x16\xf3\x62\xe4\x63\x14\x23\x9f\x3c\x79\xda\x97\x67\xcf\xdb\xf2\xcf\x7f\xf5\x5f\xcf\x1e\x3f\x59\x34\xaf\x8b\xc9\x3d\x81\x75\x44\x71\x44\x09\x25\x66\xc6\x8e\xd5\x56\x86\x28\xac\x57\x4d\xc9\x7c\x8d\x7e\xe0\x3a\x28\xb0\x6c\xc3\x3a\x30\x11\x98\x0a\x83\xad\xa7\x3e\xc5\xca\xe0\x58\x95\x01\x67\x70\xae\xd4\xa6\xa0\x5a\x72\xb8\x63\x37\xa0\xda\xb9\xab\x61\x9f\x8b\x1a\xec\x5b\xd4\xd0\x63\xaa\x85\x72\xc1\xa6\x05\xb3\x55\xd8\x9a\xd8\x86\xf4\x16\xd7\x54\x3e\xab\xb0\xdb\x0e\x3c\x8c\x4e\xae\xcb\x17\xba\xee\x72\x79\x2e\x97\x7f\x2c\x2f\x1e\xce\xbe\xd8\x92\x87\xae\x6e\xda\xbd\xba\x77\x11\x3b\xda\xfe\x76\xcc\x4f\xed\x42\x88\x23\x21\xde\x9d\xb6\x17\xe0\xfb\xe5\x6f\x97\xf7\xbe\x3b\x3c\x7a\x70\xba\x6c\x8f\xc1\xfb\xd3\xdb\x53\x37\xaf\xc5\xf1\xee\xca\xde\x3c\x2a\x43\xb3\x96\xbb\xa5\xd9\xec\x56\x46\x41\xdf\x91\x94\xc9\xa6\xee\x8e\x10\xc7\x1f\xa4\x9f\xbc\x4f\xbb\xbf\x8f\x2d\xed\xba\xfb\x0b\x23\xf3\x87\xa3\xdf\xea\xce\xfd\xbb\xde\xdc\xff\x36\x67\x86\xf3\x8b\x0f\x36\x7c\x67\xf1\x33\xec\xc3\xbb\xd8\x47\x7f\x11\x12\x47\x1d\x1b\xd9\xbf\xbe\xfa\xe1\x15\xce\xce\xce\xf0\xf2\xa7\xb3\x9f\x7f\x5c\x9c\x34\x7a\xff\x0c\x00\x00\xff\xff\xd8\xe9\x5d\x6d\xfc\x07\x00\x00") - -func runtimeSyntaxFishYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxFishYaml, - "runtime/syntax/fish.yaml", - ) -} - -func runtimeSyntaxFishYaml() (*asset, error) { - bytes, err := runtimeSyntaxFishYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/fish.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxFortranYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x96\xdf\x8f\x23\x35\x0c\xc7\xdf\xf7\xaf\x98\xeb\x1d\xdc\xf6\xe0\x0a\x2f\x3c\x50\x84\x56\xe8\xe0\x24\x1e\xd0\x22\xc4\xc3\x4a\x6d\xa9\xdc\xc4\x33\x35\x9b\x71\xb2\x89\xb3\xdb\x82\xf9\xdf\x91\x67\xba\x3f\xee\x07\xed\xbd\x50\xa9\xf1\x24\x93\x7c\xea\xc4\xdf\xd8\x6d\x29\xa0\xec\x13\xce\x9b\x36\x66\xc9\xc0\x67\x67\x1e\x05\x9d\xcc\xcf\x9a\xa6\x69\xec\x35\x43\x8f\xf3\x66\xb2\x5c\xce\xce\x17\x6f\xdb\x95\x5a\xf3\xed\xd7\xa3\xf9\x66\x30\x8b\xcb\xb8\x5a\xfc\x96\x57\xd3\x17\x93\xb3\xb3\x5c\x03\x96\x71\xf5\xeb\x66\x44\x37\x93\xf3\x0b\x9a\x2e\x97\x9b\x73\x70\x42\x91\x15\xfc\x2d\xb0\x43\x85\x10\xec\x1b\x1d\x08\x6c\x02\xde\x3f\xa3\x57\xe0\xbd\x42\x8a\x45\x72\x4c\x5b\xb4\xb5\x93\xff\x42\xa6\x84\xec\x15\x0a\x15\x85\x52\xa8\xe3\x83\xe9\x91\xc5\x1e\xa3\xa3\x01\xe9\xb6\x90\xc1\x09\x66\x75\xb1\xef\x23\x1f\x83\xba\xd8\xa7\x80\x3b\xf5\x20\xa0\x1e\x5b\xa8\x41\xd4\x63\xa0\x5e\x3d\xf5\xc8\xc5\x76\xe1\x63\xdd\x04\x6c\x52\x46\x47\x36\x70\x0c\x88\x01\xcd\x1f\x08\x8a\xa9\x50\x88\xac\xb8\x13\xcc\x0c\x41\xed\x8c\xb5\xed\x45\xdb\x98\xfb\xa1\x01\xd1\x6d\xed\x8e\xee\x9a\xfa\x14\xc8\x91\x28\xb1\x0b\xd5\xa3\x12\x7b\xdc\x29\xf1\x4d\xa5\x6c\x3d\xc1\x0e\xf3\x60\x59\x06\x93\x5b\x70\xc7\x91\x2c\x99\xb8\x90\x53\x8a\x45\x40\xf4\x9a\xd8\x6b\x88\x1d\x39\x08\xda\x47\x5f\x03\x2a\x47\x46\xe5\x1a\x82\x46\x0e\xfb\xe9\x72\x79\x04\x18\x13\x66\x90\x98\x35\x26\x8b\x3a\x04\x4d\xe0\xae\x35\x41\x86\x1e\x2d\x0e\x29\x0e\x8e\x69\x8a\x85\x06\x5d\xa4\x4c\xb7\x20\x47\xbd\x4c\x39\x76\x19\x7a\x4d\x75\x13\xc8\x69\x46\x08\x9a\xd1\x0d\x4d\xcd\x85\x6e\x51\x0b\x06\x74\x82\x7e\x4d\x2c\x6b\xdb\xc4\x31\xde\xc3\x64\x23\x0d\xb3\xb5\xd4\x4d\x8e\x55\x88\x51\xed\x1c\x6a\x19\xd7\x1f\x00\x2e\x72\x11\x60\x79\x47\x83\x9b\xa2\x60\xfa\x52\xf0\x7f\xd6\x22\xe1\x60\xf3\x83\xa2\x75\x43\xb2\x2e\xf4\x17\xaa\x33\xd1\xdb\xdc\x81\xda\x1c\xa1\xba\x10\x0b\xaa\x8b\x2c\x40\x5c\xd4\xc5\xca\xa2\x2e\xd5\xb5\x50\x8f\xea\xca\x96\x5a\x31\x85\xe2\x1a\xd8\x0f\x83\x27\x91\x1e\x1f\x1c\xf2\xd4\x91\x14\xf5\x51\xd6\x29\x47\x5f\x9d\x28\xc6\xac\x18\x47\x6e\x5b\x79\xbc\xab\x04\x9f\xe4\x2c\x01\x7b\xa5\x8d\x0b\x59\x69\x63\x60\xda\x14\x14\xa5\xe1\x54\xc8\xc8\x14\x03\x72\x27\x5b\x25\xeb\x94\x6d\x2b\x63\xeb\x4e\xb2\xc3\x26\x56\x93\x22\xb2\x7d\xd7\x92\xa9\xd7\x1e\xa4\xaf\x41\x7b\xd8\xe1\x2e\x45\x36\x95\xf7\xb0\x0b\xd1\x99\xb9\x35\xc1\x62\xee\x4e\x1f\x48\x4f\xfc\xb8\x9e\x78\x58\x4f\x3c\xac\xbf\x1d\xb6\x61\xd9\x2f\x50\x11\x65\x84\x8c\x66\x6b\x08\xd4\xee\x4f\x92\x63\x42\xd6\x04\x5e\x53\xc6\x62\xf8\x94\x69\x68\xc7\xb3\x4e\x35\xa3\xde\xd4\x28\xa8\x19\x3c\xed\x4e\xf2\x32\xb0\x8f\xfd\x9a\x6b\xbf\xc1\xac\x87\x5e\x41\xf4\xf6\xdc\xa1\xdd\x04\x3f\x34\x77\x99\x0c\x8a\x29\xdc\x5f\xf8\xa3\x58\x2c\x5b\x48\x36\xff\x6e\xd0\x3e\xd8\x05\x72\xc0\x5a\xf0\xa6\xa2\x25\xe9\xf1\xfd\x90\x58\x07\x01\x97\x04\x8e\xb8\x3b\x49\x2e\x69\x70\xa9\xd4\x5e\xcb\xbe\x08\xf6\x6b\x17\xa2\xbb\x56\x81\xdc\xa1\xa8\x15\x9b\xd2\x62\x1e\x1f\x92\x49\xdd\x02\x7b\x12\x5b\x47\x31\x54\x1e\x92\xc9\x2d\x66\x6a\xf7\x3a\xee\x59\x88\xf7\x6a\x17\x5c\x6b\x41\xdd\xe3\xbb\x17\xd7\xee\xf2\x90\x84\xe7\x8f\xb0\x19\xb0\x9f\xa9\x83\x82\xea\xa3\x62\x28\x38\x34\x17\xd4\x8e\xf6\x6e\x8b\x19\xd5\xea\x0b\xb2\xbf\xb0\x29\xec\x2f\xa8\x7d\x9a\x50\x3e\x86\xb5\x59\x63\x62\xd1\x19\xde\xdc\xce\x2c\xab\xdb\xb5\xa7\x56\x43\x87\x1a\x3a\xd1\x10\x50\x43\x10\x9d\xf1\x30\x61\xc6\x51\x66\xa7\xb0\xb3\x98\x67\x16\x58\x04\x39\x24\xb9\x66\x70\x5d\xb6\xc8\x3a\xba\x7a\xb7\xa5\x80\xef\x6e\x3b\xa1\x23\x08\xf3\xa7\xc5\x8d\x85\xb8\xa2\xba\xbd\x0b\xa8\xb8\x23\xd1\x2e\x5e\x48\xd4\x8c\xc5\x0a\x5d\x46\xa9\x99\x9f\x50\x9a\xe6\xf9\xe5\x21\x99\x37\x6f\x62\x88\xf9\x9e\xbd\xef\x37\x31\xcc\xee\x13\xfd\xbc\x99\x2c\x66\xf3\xef\xbe\xfc\xe2\x95\x7e\xff\x6c\xb9\xfc\x6c\xa5\x5f\xe9\x6b\xfd\xfc\x11\xf2\x2b\x64\x64\xd9\xa2\x58\x49\xf9\x18\x69\x93\xc1\x5d\xa3\xed\x79\x71\x3e\xfd\xfb\x9f\x95\x2e\x97\x0b\x5d\x2e\x57\x8f\x88\xe6\x07\xef\xad\xe4\xa6\x1c\x1d\x96\x12\x73\x63\xd5\x1c\xd8\x97\xd9\x01\x75\x78\x39\x6f\x26\x7f\x2c\x16\x73\x53\x2b\xce\x57\xab\x57\xcf\x9f\x76\xce\x3d\xb6\x96\xdf\xef\xab\xe7\x79\x65\xa5\x96\x2f\xa6\x1e\x5b\x8b\xf1\x10\xff\x73\x6a\xb5\xe0\xd4\xa2\x76\x07\x99\x89\x3b\xc5\x9c\x63\x9e\x7e\x50\x0b\x66\xc5\x4a\x67\x37\x3f\x38\xd9\x58\xf4\xb2\xed\x62\x39\x99\x3c\x8c\x21\xfb\xf7\x46\xca\x35\xa5\xe1\x9f\xd5\x72\x39\x7b\x1c\x7d\xf2\x07\xea\xfe\xf3\xf4\x97\xc6\x70\xbe\xd9\x42\x7e\x5c\xfa\xa9\xee\xbc\x7c\xdf\x9b\x97\xff\xa7\x33\xfd\x20\xdf\x0f\x9c\x78\xf6\xbe\x13\x2f\x4e\xfc\x9c\x44\x1f\x4d\xbe\xbf\x5f\xfe\x78\xa9\x57\x57\x57\xfa\xf6\xe7\xab\x5f\x7e\x9a\xce\x2f\x26\x67\x67\xff\x06\x00\x00\xff\xff\x80\x03\x11\xed\xc0\x0a\x00\x00") - -func runtimeSyntaxFortranYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxFortranYaml, - "runtime/syntax/fortran.yaml", - ) -} - -func runtimeSyntaxFortranYaml() (*asset, error) { - bytes, err := runtimeSyntaxFortranYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/fortran.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxFsharpYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x94\xcd\x6e\x23\x37\x0c\xc7\xef\x7e\x0a\xc5\x6d\x91\x64\xd1\x49\x83\x6d\x81\x76\x73\x29\x16\x05\xfa\x06\xbd\xd4\x63\x14\x1c\x89\xf2\xb0\xab\xa1\x06\x12\xe5\x8f\x84\x7e\xf7\x42\x63\x3b\x6b\x27\xd9\x45\x7b\xae\x01\xcf\x68\x28\xf1\x4f\xea\x47\x4a\x9e\x02\xca\x6e\xc4\x07\xe3\x73\x0f\x69\x9c\xcd\x1c\x0a\x5a\x79\x98\x19\x63\x4c\x9d\x65\x18\xf0\xc1\xcc\xdb\xf6\xce\xe7\x5f\xbf\x9d\xcf\x66\xa9\x04\xcc\x87\xf9\xc6\x90\x43\x16\xf2\x84\x69\x5a\xd3\x2d\x3e\x36\x7f\x2e\x17\xf7\xcd\x07\x68\x1e\xff\x5a\x3e\xbd\xff\x7e\xdf\xb6\xdd\x7c\x5a\x6c\xcc\x37\x0e\x6d\x80\x04\x42\x91\xf3\x51\x20\x0b\x08\x0e\xc8\x72\xf0\xbf\x09\x28\xba\x86\xa0\x03\x4a\x1f\x9d\x12\x2b\xb0\xd3\x84\x56\xc7\x44\x6b\x10\xd4\x35\x25\x29\x10\xd4\x46\xce\x92\x80\x58\x6e\xcf\x63\x64\x49\xc5\x4a\x49\x68\x48\x70\x38\x85\x39\xec\x71\x8a\x50\x87\x1a\x47\x64\xb5\x01\x72\xd6\x21\xba\x12\x50\x71\x6b\x71\xac\x99\x29\x6e\x05\x13\x43\xb8\x90\x1d\x41\xaa\xf5\x4b\x69\xfb\xc2\xea\x0b\xdb\x49\x60\x1a\xc4\xa4\x03\x88\xed\x55\xd2\x4e\x37\x24\xfd\x9b\x72\xcd\x10\xdd\x84\xef\x4b\xc2\x90\x75\xd3\x23\x6b\xf4\x93\xbf\x39\x09\xd8\xc8\x8e\xbe\x06\x92\xbc\x4a\x75\xc4\x90\xf1\x22\x74\x17\xa2\x7d\x03\x4b\x87\x2b\x62\x45\x76\x1a\xbb\xbf\xd1\x8a\x1e\x40\x6a\xa6\x95\xfa\x98\x74\xd3\x53\x40\x75\x51\x5d\x64\x54\xa9\xef\x0d\x4b\xbc\x90\x9e\x4a\x02\x2c\x78\xd2\x3f\x19\xee\xba\x18\xc3\x89\x7f\x2a\xa8\x1e\x5e\xa6\x75\x28\x43\xfe\x61\x2a\xca\xb3\x40\x1e\xd1\x12\x9c\x5c\x89\x6d\x28\x0e\x95\xb8\xc7\x44\xa2\xc4\x24\x04\x81\x1e\x31\x5d\x68\xe1\x76\x4c\xe6\x15\xd9\x0b\x29\xc6\x8d\x26\xf4\x3a\x14\x81\x2e\xa0\x06\x78\xdc\x69\x8d\x9c\x44\x13\xd0\x8b\xe4\x3e\xe1\x6e\x13\x93\xcb\x66\xd3\x93\xed\x8d\x8b\x7c\x2d\x06\xb7\x94\xc5\x10\x9b\x68\x61\x08\x6f\x10\x85\x8c\xea\x30\xe0\xaa\xb6\x6d\xc5\x65\x21\xcb\xb1\xbd\xd4\x13\x43\x08\x3b\xf5\xb4\x45\xa7\xab\x10\x3b\x08\x4a\x1c\x88\xeb\xfe\x04\x93\x07\x7b\x1c\x31\x04\x0d\x28\x57\x3a\xe0\xd0\x61\xd2\x7a\x24\xf3\x58\xa7\xb9\x84\xa0\x71\x8d\x29\x91\xc3\xe7\x13\x32\x96\x2e\x90\xfd\xbc\x81\x8b\xac\x12\x4a\x49\xac\x87\xd7\x95\x66\x0c\x87\x62\x83\x90\xd5\x32\x4e\x29\x96\x8c\xf5\x7f\xa5\xeb\x48\x4e\x77\x84\xe1\xf8\xbc\x3a\x17\x7d\x2e\x6e\x96\x44\xbc\x7a\x38\xc2\x32\xb5\x15\x53\x6d\xc3\xeb\xf9\xb3\x09\xd9\x5d\x1a\xf2\x27\x1a\xa7\x8c\xda\xf6\xee\xb3\xf5\xec\x6e\x39\xfd\xce\xe3\x1c\x2a\xf8\x5b\x0f\xf5\xb6\xf9\xee\xcc\xef\xab\x0b\x6b\x8c\x05\x74\x9e\x93\xac\xaf\xdb\xb6\x9d\x0c\xcb\xff\xe0\x7c\xb3\xb8\x6f\x7e\x5e\x3e\xfd\xb8\xd7\xed\xe2\x63\xf3\x3b\x34\xfe\xbe\xf9\xb0\x7c\x7a\xbf\xd7\x72\xfe\xfd\xd3\x5e\xff\x38\xff\xfe\x65\x7f\xfb\xaf\x51\xb5\xf3\x97\xac\xce\x2d\xff\x37\x58\xc3\x74\x8f\xbd\x86\xd4\xde\xb4\xed\xbb\x57\xa0\xda\x77\x6d\x7b\xfb\x12\x8b\x59\x2c\x67\xff\x04\x00\x00\xff\xff\x83\x0b\x31\xb7\xdd\x06\x00\x00") - -func runtimeSyntaxFsharpYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxFsharpYaml, - "runtime/syntax/fsharp.yaml", - ) -} - -func runtimeSyntaxFsharpYaml() (*asset, error) { - bytes, err := runtimeSyntaxFsharpYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/fsharp.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxGdscriptYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x55\xff\x4f\x1b\xc7\x12\xff\x9d\xbf\xc2\x8f\xe4\x3d\x42\xf2\x4c\xa3\x4b\xa5\xb6\xf4\xab\xc1\x41\x45\x6d\xc0\x05\xa7\x42\xc5\x28\x1a\xdf\xce\xd9\x5b\xf6\x66\x2f\xbb\x73\x80\x93\x0f\xff\x7b\xb5\x77\x87\x4d\x89\xa3\x54\xf9\xa9\x87\x98\x9d\xaf\x3b\x3b\x33\xfb\x59\x17\xd6\xb1\x2e\x2a\xde\xed\xcd\x4c\xcc\x83\xad\x74\x63\xc3\xb0\x72\xae\xbb\x1b\xbd\x5e\xaf\x97\xec\x42\x25\xef\xf6\x36\x27\x93\x9d\x99\x79\xbc\xb9\xb1\x11\x6a\xc7\xb1\x35\x3f\xea\xed\xd5\xd6\x69\xdf\x4a\x2f\xf7\x12\x95\x44\x63\x63\xe8\x2f\xe5\x26\x72\xfa\xe4\xf0\xe8\x00\x47\x83\x23\x8c\x0e\x31\x1e\xbc\xde\x9e\x4c\xa6\x9b\x0f\x1c\x77\xa6\xde\xbb\xce\x5b\x6a\xe7\xa0\xa1\x66\x14\xe4\x22\xaf\xdc\xef\x25\x2c\x6a\xc9\xd5\x7a\xb9\x4b\x68\x0d\x8b\xda\xc2\x72\xe8\x36\xa1\x69\x04\xe5\x3e\x82\xa2\x15\x90\x52\x4b\x32\xe4\x6c\x1d\x72\x47\x65\x85\xdc\xcb\x15\x07\x45\x72\xcb\x7d\x9c\xc3\x4c\x33\x67\x85\x29\xc0\x70\x6e\x4b\x72\x11\x86\x67\x59\x20\x03\xa6\xc8\xe0\x9b\x0a\x85\xf3\xa4\x89\xfa\x80\xa2\xf4\x06\x45\xe5\x63\x5a\xe7\x14\xe7\xb0\xa2\xb0\xd1\x4a\x01\x1b\x85\x04\x8e\x43\x85\x76\xcf\xcc\x4c\xe1\x3c\x19\x38\x3f\x43\x49\x37\x28\xad\x20\x19\x38\xea\x9b\xca\x67\xa8\xfc\x35\xaa\xc0\x8d\x4f\x15\xd2\x4e\x0d\xe5\x10\x5a\x26\xd0\x75\xcb\xc4\x76\x51\x04\x32\x99\xe1\x19\x02\x89\x79\x13\x48\x66\xdc\xb2\x91\xd9\x34\x9c\x2f\xed\xbb\x56\x67\x1b\x5a\xa0\xf3\xf2\xb5\x18\x34\x6e\xa9\x3d\xb1\x39\x66\x7c\x1b\x14\x51\x43\xfa\xcf\xae\x28\x20\x35\x2d\xdd\x0f\x5f\xe0\x8a\x42\x96\x4c\xd7\x4c\x97\x81\x8b\xb5\x33\x11\x6f\xb8\x97\xee\xcb\x47\x87\x32\x10\x5b\x52\x1a\xdb\xc8\xd1\x82\x03\x96\xf2\x38\x30\x77\xba\xbd\x5a\xd5\x0b\xf6\xbd\x68\xf0\x0e\x2f\x65\x66\x85\xf1\xf3\x78\x3c\xda\x77\x96\x45\x1b\xf6\x84\xdf\xd6\x1c\x15\x87\x52\xd5\x1d\x7d\x79\x95\x8c\xaf\xc8\xca\xaf\xde\x57\x38\xf2\x86\x1b\x92\x0d\x71\x7c\x8a\xd3\x9c\x85\x53\x16\x9c\x56\xa4\x96\x1c\x4e\x35\x30\x95\x23\xe6\x80\x11\xe5\x97\xac\x0f\xd8\xd7\xc3\x11\xc6\xb6\xe4\x80\xf1\x35\xb3\xdc\xaf\x78\xbc\xa8\x96\x35\xb6\xf8\x69\xab\x1b\xec\xed\x61\x10\x02\x2d\xb0\x47\xd1\x46\xec\x7b\xe7\x03\x86\xb6\xb9\xa9\x14\x16\xcd\x79\x46\xa4\x73\x1c\x4f\xff\xe4\x5c\x31\x72\x24\x8c\x91\xf7\x6e\x6f\xa1\xdc\x86\x26\xa9\x09\x5c\x89\x87\xa2\x2b\xe1\x84\xc9\xad\xa4\xdf\x39\x57\x1f\xb2\x87\x8a\x17\xad\xe2\xb7\x9a\x14\x27\x9c\x6b\x86\x93\xc3\x61\x2a\xd9\xca\x0c\xe3\x40\x12\x0b\x1f\xca\x15\x97\x0d\xd1\xed\xd4\xad\x2f\xee\xd7\x3b\xe4\xc2\x8a\xfd\x28\xdc\x12\x16\x7b\xe7\xd4\x7f\x37\xe8\xff\xf1\xe6\x79\xff\x9b\x8b\x67\x77\x81\xbf\xf0\xe2\xda\x07\x73\x17\x15\x95\x94\x4b\x5e\x3e\x0b\x24\x06\x94\x10\x1a\x13\x0a\xa7\x81\xe9\xb2\xa5\x95\x4f\xb7\x3f\x77\x14\x13\x30\x25\x26\x88\x8a\x5a\xa9\x19\xec\x6c\x01\x76\x09\x8c\x52\x97\x09\x91\x3e\x28\xf8\x46\x59\x4c\x44\x91\x40\x59\x4b\x0e\x5b\xc0\x0a\x6c\x44\x49\x15\x4a\x8a\xca\xa1\x5b\xe2\x42\x72\x94\xa4\xf9\x1c\xe2\x15\x5e\x02\x93\x59\xc0\x07\x54\x29\x5d\xe0\xd2\x2b\x77\x4b\xe3\x1b\x58\xeb\x20\x88\xec\x0a\x44\xd6\x19\x2b\xa2\xa3\x2b\x6e\x69\xe3\x12\xed\x4c\xc8\xa1\xe1\xd5\x7b\x97\xe0\x82\xeb\xb9\x75\x8c\x85\x65\x67\xda\x66\x76\x4d\x39\xae\x38\x90\xfa\xb0\xae\x2b\xe7\x3b\xbb\xdf\xfe\xff\xd9\x53\x7c\xff\x9f\xc9\xe4\xbf\x3f\x5d\xe0\x3b\xfc\x80\x2f\xd0\xc7\xff\x96\xd1\x23\x0a\x2c\x3a\xe7\xc8\x6b\xe3\x9f\x6c\xbf\xbf\xbd\xc0\x64\x72\x8e\xc9\xe4\x62\x19\x74\x54\x97\x53\x0e\xeb\x1f\xe7\xf3\x66\x62\xeb\x9e\x64\x69\xa2\xba\x59\xb5\x6e\x78\x7e\x93\x18\xea\x17\x83\xfe\xc1\xc5\xd3\x54\x17\xb6\x76\xb6\xba\x44\x29\xb6\x6c\x4e\xd2\x88\xe9\x8b\x4a\xa1\x49\xd4\xfc\x6d\x2e\xf5\x2c\x66\x8d\xf6\xde\x8f\xcb\xdd\xd7\xef\xa9\x37\x7e\xb7\xb7\xf9\x64\x7c\x3c\x3c\xc6\xd9\xd9\x19\x0e\x0e\xcf\x5e\xbd\xdc\xde\xfd\xf1\xd3\x59\xb7\xb6\xb6\x1e\xa6\xfc\x9b\xea\xb3\xf3\x75\x1d\x8a\x0d\xa0\xd6\x55\xfb\x61\xa5\x2b\x4d\xbc\xb4\x55\xd3\xd5\xc9\x64\xe7\x13\x67\x59\x65\xaa\x38\xb7\xe4\xf6\xe7\x14\xba\xd0\x34\x91\xaf\x2e\xde\xbf\xb8\xc5\xcd\xf9\xa0\x7f\x40\xfd\x22\x4d\xe8\x7d\x76\x8b\xfa\xbe\xfc\xe5\x2d\x5e\xdf\x97\xbf\xbe\xdd\xfe\xe7\x75\x7c\xd8\xbd\x7f\x65\x15\x1f\x99\xfe\xa3\x87\xa7\x7f\xfc\xf9\x93\xff\x2b\x00\x00\xff\xff\x87\x84\xe4\x7b\x2b\x09\x00\x00") - -func runtimeSyntaxGdscriptYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxGdscriptYaml, - "runtime/syntax/gdscript.yaml", - ) -} - -func runtimeSyntaxGdscriptYaml() (*asset, error) { - bytes, err := runtimeSyntaxGdscriptYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/gdscript.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxGentooEbuildYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x55\x5d\x73\xdb\xb6\x12\x7d\xf7\xaf\x60\x14\xcf\x0d\x99\x5c\x69\xf2\x1a\xdf\xdb\x6a\x54\x89\x8e\x35\x51\x2c\x8d\x24\x27\x6e\x83\x44\x05\x89\xa5\x88\x0a\x04\x58\x00\xb4\xec\xe4\xe4\xbf\x77\x40\x49\xce\x47\xad\xb6\x2f\xf5\x8c\x25\x61\xb1\xc0\x9e\x3d\x7b\x76\x51\x48\x45\xfe\xae\xa6\xb3\x88\xb2\x46\x2a\x71\x72\x22\xc8\x53\xee\xcf\x4e\xa2\x28\x8a\xc2\xae\xe6\x15\x9d\x45\x1d\xc6\x7a\x14\xb7\x2e\xc8\x15\x77\x2e\x39\xed\x9c\x9c\xd8\x46\x91\xdb\xb9\x3e\x8e\x06\x4a\x45\xbe\xa4\xc8\x79\xae\x05\xb7\x22\xaa\x8d\xf5\x7c\x4d\x51\xd1\xe8\xdc\x4b\xa3\x5d\xeb\xd8\x8d\xa4\x20\xed\x65\x21\xc9\x9e\x45\x9d\x0f\xce\xe6\xab\xb8\xd1\x35\xcf\x37\xc8\x4d\x55\x4b\x45\x90\xda\x79\xae\x14\x3c\x39\x9f\xe0\x43\xbd\x59\xaf\xe2\xdc\xe8\x42\xae\xa1\x4d\x41\x3e\x2f\xe1\xc8\x37\x35\xe2\xda\x12\x6a\xe3\x7c\x12\x87\x33\xb0\x55\x92\x74\xda\x30\x01\xd1\x85\x5c\x97\x4a\xae\x4b\x1f\x65\xdc\x95\x91\x25\xc5\x3d\x89\xc8\xdd\x69\xcf\x6f\xf7\x60\x9c\xe7\x9e\x2a\xd2\xbe\xcd\x31\x8b\x73\xee\x08\xc2\x40\x18\x4d\x20\x25\x0b\x90\x72\x04\x72\x3c\x07\xdd\x4a\x8f\x42\xa2\x30\x16\x87\xa4\x20\x0b\x48\x0d\x65\x72\xae\x60\x89\x0b\x58\xf2\x8d\xd5\x70\xa4\x28\xf7\x70\xa5\x2c\x3c\x7c\x49\x1a\x5e\x56\x84\x46\x7b\xa9\xb0\x2d\x43\x9a\xb9\xd1\x5e\xea\x86\x90\x59\xe2\x9b\x84\xb1\xac\xf3\x00\xaa\x98\xb1\x4f\x60\xec\x33\x18\x8b\xc1\x58\x02\xc6\xfe\x07\xc6\xde\x83\xb1\x77\xf8\x15\x8c\x31\x06\xc6\x4e\xf1\x7f\xfc\x88\x47\xf8\x01\xff\x01\x63\x48\x1e\xba\xa9\x1b\x13\x04\x0a\x58\xac\xd1\x60\x8b\x5b\x4c\x8e\x05\xed\xc6\xf4\x3b\x34\x61\xed\xa1\x3c\xd6\x04\x45\x70\xd0\xf8\xf8\xe5\xc0\xb7\x0c\xdf\x70\x2b\x79\xa6\xc8\x45\xbd\x5e\x2f\x32\x45\x21\x73\xc9\xd5\xbd\x06\x8c\x26\x17\x49\x1d\x59\x12\xff\x8d\xb8\x52\x91\xf1\x25\xd9\xd6\x94\xd9\xf6\x02\x4b\x62\x8f\xa3\xb6\x54\x5b\x93\xb7\x05\x39\x65\xec\x53\xff\x1d\xef\x7e\x1c\x74\x7f\x59\x3d\xef\xbe\x78\xff\x8c\xb1\xcf\xfd\x7b\xc4\x35\x85\x28\xfb\xd2\x0d\xe6\xc3\x0b\x5c\x4c\x5f\xa7\xb3\xc1\xcb\x14\xa3\x74\x31\x9c\x8f\x67\xcb\xf1\xf4\x12\xe3\xab\x45\x8a\xc5\x7c\xb8\xba\x9a\x8f\x31\x19\x0f\xd3\xcb\xb0\x9e\x4c\x97\x78\x95\xfe\xfc\x76\x3a\x1f\x2d\x70\x3e\x9e\xa4\x8b\xd1\x78\x8e\xb7\xd3\xf9\xab\xf0\x1d\xcf\x30\x4f\xfa\xa3\x74\x96\x5e\x8e\x30\x9b\x4f\xdf\x8c\x47\x29\x46\xe3\xc5\x32\x6c\xce\xd3\xc5\x72\x3e\x1e\x2e\x71\xb5\x48\xe7\x93\xc1\xe5\xe8\x1b\x1e\xbf\x41\xb5\xc0\x08\x4b\xcc\xde\x60\x76\x8e\x19\x66\x97\x18\x04\x5f\x30\x96\x0d\xe3\xeb\xeb\xa4\x7f\x3e\x19\xbc\x5c\xec\x2d\x93\xd1\xd7\xab\x61\x7c\x31\x5d\x2c\xb1\x1c\xcc\x5f\xa6\x4b\xfc\x74\x35\x9e\x8c\x8e\xb1\x7f\xa0\x39\x37\x55\xc5\xb5\x78\xb0\xd3\x18\xcb\x1a\x47\xf1\x2a\xde\x4a\x5f\x82\x74\xa8\x56\x92\xf4\x19\xcb\xa2\x77\x8f\x76\x0c\x3f\xef\xbe\x58\x3d\x8b\xba\xef\x9f\x42\xea\x92\xac\xf4\xbd\xa7\x0f\x89\x83\xb1\x8c\xe2\x8c\xd6\x52\x83\xb4\x08\x32\x2e\xee\x5b\xb6\xe2\x1b\xc2\x96\x5b\x0d\xa9\x0b\xa3\xfb\x20\x6b\x8d\x85\x32\x6b\xd4\x3c\x34\xae\xa6\x6d\xbc\xb6\xa6\xa9\xd1\x38\xb2\xc9\x31\x01\x32\x96\x09\x49\x7b\x26\x8e\xe0\x0e\x5b\x7b\xa0\xfb\x55\xc9\xdd\xfe\x57\x5c\x72\x87\x2c\xcc\x8f\xd5\x0d\x59\x27\x8d\x3e\xdc\xd5\x8e\x9a\xe3\x51\x63\x61\x02\xc6\x76\xa0\xc0\xf5\x33\xa9\x21\x4c\x0e\x25\xb3\x98\xb1\x9e\x33\x60\xac\xc7\x13\x54\x7c\x97\x21\xe8\x36\xcc\x2b\xe9\x77\x3c\x08\x90\xbe\x11\xa8\x79\x85\x8a\x74\x03\x99\x1b\xfd\x57\x29\x9a\xb8\xbe\xf3\xa5\x09\xe3\x42\x40\x48\x8b\x92\x5b\x01\x77\x57\xa1\xf4\x95\xc2\x6f\xdc\xa2\x32\x07\xc1\x6c\x88\x6a\x21\xed\x91\xeb\x42\xdb\x70\xa5\x62\x61\x72\xb7\x83\x16\x30\x3a\x6f\x65\x9d\x20\x6c\xc6\xad\x51\xc9\x2c\xfc\x33\xd6\x8b\x9d\xc1\x3e\x93\x9d\xd7\x71\x46\xf2\x50\xdf\x90\x6a\x22\xb5\x37\x7b\x38\x45\x6c\xb6\x9a\xac\x43\x4d\xb6\x72\x07\x90\xf1\x8e\x10\x17\xb2\x49\x4c\xed\xdd\x11\xc9\x06\xa9\x1a\x7d\xaf\xd8\xa8\x71\x24\xc2\x38\xd8\xbd\x43\x07\x05\xef\xde\xa6\x80\x22\x08\xeb\x10\x22\xe7\x1e\xb9\x40\x5e\x56\x26\x7c\x9a\xad\x46\x5e\x83\xf2\xd2\x04\xfa\x41\xb7\xa1\x1f\xb0\xb6\x54\x43\x91\x87\xd2\xa8\x36\x81\xdc\xea\x06\xb6\x6a\xa9\x76\xe4\xe1\xb9\x85\x37\x4d\x5e\xa2\xd1\x8e\xfc\xae\x4c\xfb\xb8\xb9\x09\x7a\xd6\xbe\x17\x98\xd1\xeb\xb3\x7d\x02\x51\xe0\xc6\xb6\xbc\x74\x3a\xf7\x36\xd2\xe2\x3b\x8b\xdb\xc8\xba\x85\xcd\x58\xef\x8b\xf5\xab\xe7\xf2\xf0\xf7\x75\xa4\xdd\xd8\x18\x96\xdc\x7e\x39\xfa\x4f\xe1\x3c\xf9\x1e\xcd\x93\x7f\x13\x4c\xd5\x8a\xe3\x4f\x20\x1e\x7f\x0f\xe2\xf4\x6f\xc2\x79\x23\x4c\x78\xe1\x96\xd3\xd1\x14\xd7\xd7\xd7\x38\x1f\x5f\xbf\x4e\x93\xb3\x7e\xe7\xe4\xe4\x8f\x00\x00\x00\xff\xff\xe2\xea\x68\x25\x9a\x08\x00\x00") - -func runtimeSyntaxGentooEbuildYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxGentooEbuildYaml, - "runtime/syntax/gentoo-ebuild.yaml", - ) -} - -func runtimeSyntaxGentooEbuildYaml() (*asset, error) { - bytes, err := runtimeSyntaxGentooEbuildYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/gentoo-ebuild.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxGentooEtcPortageYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x92\x5b\x8b\xdb\x3e\x10\xc5\xdf\xfd\x29\x84\x93\x87\x5c\x90\x77\xe1\x1f\xc2\x7f\x45\x2e\x2c\xfb\xda\x3e\xf6\xa5\xb6\x5b\xc6\xf2\xc4\x11\x91\x25\xa1\x51\xda\xa6\x0c\xfb\xd9\x8b\x9b\xcd\x85\x65\xa9\x61\x30\x33\xe8\x77\xce\x61\x98\x9d\xb1\x98\x4e\x01\x95\xc0\xa4\x65\xf0\x31\x41\x87\x59\xd6\x62\x42\x9d\x54\x26\x84\x10\xc3\x13\x07\x3d\x2a\x91\x57\x55\x31\x39\xe0\xe9\xa7\x8f\x2d\x71\x0f\x74\xe0\xa3\x3b\xff\x08\xa7\x93\x87\x62\x3e\xdd\x8e\xf3\x2c\x8b\x47\x8b\x74\x86\x47\xe2\x0b\xa1\xd8\x59\xe8\xde\x06\x52\x68\xef\x28\x81\x4b\x45\xe3\xbd\x2d\x76\x60\x69\x90\x2e\x4b\x45\x01\x34\xaa\xba\x9e\x57\xd5\x7c\x5b\x82\xfc\xfd\x2c\xbf\x3e\xca\xa7\xef\xb2\x9e\xe7\x1f\xb2\x29\x1e\xdf\xa3\xf2\x23\x6e\x24\x3e\x99\x03\xda\x93\xf8\x81\x91\x8c\x77\xc2\x1d\xfb\x06\xe3\x35\x11\x05\xd4\x06\xac\x12\xb9\x2c\x4b\xd5\x9a\xce\x24\x55\xd7\xc5\x6c\x72\xa7\xcc\xe3\xe9\x45\xec\x59\x6b\x0c\x09\x5b\x01\x51\xef\xf1\xaa\x62\x5a\x74\xc9\xec\x0c\xc6\x42\x5b\x20\x1a\x92\xbd\xca\x7a\x5b\x55\xcd\x04\x6c\xd8\x03\x43\xdf\x2e\x17\x0c\xb1\xe7\x7d\x08\xc0\x06\x96\x0b\xee\x4d\x20\x0e\x41\x0f\xb5\x5c\x30\xfd\xf7\xf4\xc8\xb4\x67\x0a\x10\x35\xff\xfa\x7f\x39\x94\xdc\x35\xd4\x4e\xab\xaa\xc9\xff\x61\x75\x8b\xfa\xe6\x3a\xbb\xe4\x7d\x81\x84\x9d\x8f\xe6\x16\x95\x12\x24\xec\xd1\x25\x25\xf2\x6f\x77\xe4\xac\x98\x3d\x5c\xa8\xcf\x40\x07\xe3\x3a\x11\xb1\x3b\x5a\x48\xfe\x6e\x5d\xa7\xbe\xf1\xf6\x3d\x3a\x59\xf3\x2b\xaf\x78\xb5\xe6\xf5\x8a\x37\xbc\x59\xf3\x7a\x73\x5d\xd9\x8b\xef\x07\xbb\xbb\x1b\xf8\xdb\x9f\xdb\xe1\xa3\x04\x71\x48\x33\xca\xaf\x23\x74\xad\x12\xf9\xf8\x36\x38\x9f\x95\x28\xeb\xec\x4f\x00\x00\x00\xff\xff\x7c\x89\xb4\x8b\xb6\x02\x00\x00") - -func runtimeSyntaxGentooEtcPortageYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxGentooEtcPortageYaml, - "runtime/syntax/gentoo-etc-portage.yaml", - ) -} - -func runtimeSyntaxGentooEtcPortageYaml() (*asset, error) { - bytes, err := runtimeSyntaxGentooEtcPortageYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/gentoo-etc-portage.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxGitCommitYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x92\x4f\x6b\xe3\x30\x10\xc5\xef\xfe\x14\x83\x13\x88\x94\x10\xef\x5e\x57\x17\xb3\x64\x77\x43\x0e\x21\x87\xcd\xa5\xc8\x76\xb1\xad\x71\x22\x6a\x4b\x41\x92\x49\x03\xfe\xf0\xc5\xff\xd2\x1c\x5a\x6a\xea\x93\x35\xfc\xe6\xbd\x27\xf1\x0a\x59\xa2\xbb\x5d\x90\xc1\x49\xba\x75\xae\xab\x4a\x3a\xcf\x13\xe8\x30\x77\xcc\x03\x00\x68\x09\x95\x56\xc8\xc0\x4f\x48\xb0\xe4\x51\xf4\x23\xa6\x21\xd9\x1c\xf6\xfb\xdd\xf1\xf9\xef\x9f\xdd\x71\xff\x7f\xdb\x1c\x7f\x6f\xc7\x7f\x3a\xf7\x3d\xcf\xd4\x25\xda\x5e\x60\x06\xff\x64\x89\x90\x9f\x53\x75\x42\xdb\x8d\xd6\xd0\x7a\x06\x2f\x78\xbb\x6a\x23\x18\xf8\x33\xce\x99\xbd\xa4\x39\xb2\x38\x26\x02\x4b\x74\x28\x9a\x4a\x0b\x59\x48\x14\x8d\xc2\x6b\x17\xa3\x31\x5d\x12\x41\xd9\x03\x1e\x2c\xfd\xaf\x35\x07\x49\x36\x01\x1d\x5d\xa7\xb0\x63\xb0\x29\xec\x90\xfd\x33\x34\x79\x64\x37\xfd\x5b\x05\x4b\xce\xe2\x29\xfc\x93\xae\x0d\x64\x26\x55\xf9\x19\x52\x25\x60\xc1\x93\x45\xbc\xfa\xd6\xe6\x94\xa5\x83\x1a\x57\x78\x02\xd3\x7c\xee\x2b\xfe\xd0\x89\x8d\x2e\xb5\x81\x81\xb6\x50\x68\x03\x79\xa9\xad\x54\x27\x90\xd6\xd6\x68\x81\xd8\xba\x0d\x65\x41\x2b\xd8\x4a\x77\xae\x33\xfa\xb1\x51\x14\x65\x24\x94\x94\x90\x42\xbe\x12\xb4\x0d\x0a\x1a\x36\xad\x18\x12\xdb\x08\x1a\x52\x98\xf1\x9f\xeb\x5f\xf1\x8a\x46\x51\xe6\x7b\xf7\x00\x55\x85\xca\x8d\x85\xcc\xfb\x63\x50\x4a\x85\x7d\x6f\xdb\xcf\xba\xd4\xb8\xee\x2e\xfe\x7d\x86\xaa\x35\x9d\xbf\x0f\xfa\xae\x03\x8f\xbd\xb7\x00\x00\x00\xff\xff\x3e\x9d\x3d\x2b\x4e\x03\x00\x00") - -func runtimeSyntaxGitCommitYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxGitCommitYaml, - "runtime/syntax/git-commit.yaml", - ) -} - -func runtimeSyntaxGitCommitYaml() (*asset, error) { - bytes, err := runtimeSyntaxGitCommitYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/git-commit.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxGitConfigYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8f\xd1\x6a\x84\x30\x10\x45\xdf\xf3\x15\xc3\x54\x50\x03\x6b\xdf\x43\xb7\x3f\x92\x89\x10\x74\x94\x50\x8d\x8b\x99\xa5\x2c\xe4\xe3\x4b\x70\x59\x29\x6d\x1e\x4f\xce\x5c\xee\x9d\xc2\xc2\xf2\xb8\xb1\x81\x39\xc8\x65\xd8\xe2\x14\x66\xa5\x46\x16\x1e\xc4\x28\x00\x80\x62\x44\xbf\xb2\x01\x9c\x83\x34\x87\x92\xd7\x6d\xbc\x2f\x9c\xda\x2a\x13\x75\x73\x90\xf7\x83\x57\xa8\xd4\x5e\x3e\x8e\xdb\x0b\x0c\x5b\x4c\xe2\xa3\x18\x40\xa2\x8f\x46\xf6\x3b\xe7\xc9\x2f\x89\x5b\xa2\x4f\x7c\x4a\xa5\x40\xf7\xc5\x8f\xef\x6d\x1f\x0d\x60\x6f\xad\x49\x37\x3f\xb0\x71\x4e\xdb\xfe\xea\xf4\x15\xff\xc6\xfd\xb2\x88\x6c\xa7\x89\x5c\xf5\x8f\x48\xd8\x10\x11\x75\xd9\xf6\x84\xae\xd5\x84\xb9\x7e\x91\xda\xb5\xba\x3e\x8f\xd6\x95\xe3\x73\x77\x79\x49\xfc\x5e\x22\xde\xf0\x85\x38\x96\x8a\xd5\x09\x8e\xb9\x60\x9d\xfa\x09\x00\x00\xff\xff\x9d\x79\x43\xdc\x4c\x01\x00\x00") - -func runtimeSyntaxGitConfigYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxGitConfigYaml, - "runtime/syntax/git-config.yaml", - ) -} - -func runtimeSyntaxGitConfigYaml() (*asset, error) { - bytes, err := runtimeSyntaxGitConfigYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/git-config.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxGitRebaseTodoYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x5c\x90\x41\x6f\xe3\x20\x10\x85\xef\xfe\x15\x23\x27\x07\xd8\x5d\x67\x73\xa8\x54\xd5\x17\x0e\xad\x54\xf5\xda\x6b\x70\x25\x6c\xc6\x09\x8a\x0d\x2e\x8c\x55\x47\xa5\xff\xbd\xc2\x76\x52\xa9\xdc\x78\xcc\x7b\x6f\xf8\x5a\xd3\x21\x5d\x06\x2c\xe1\x68\xa8\xf0\x58\xab\x80\x05\x39\xed\xb2\x4c\x23\x61\x43\x65\x06\x00\x90\xc6\xac\xea\xb1\x84\xfc\x8d\xed\xfe\x1c\xa4\xfc\x5f\x71\x71\x34\x24\xe5\x6a\x92\x72\xb6\x6d\xf3\x2c\xf3\x63\x87\x61\xf1\x6d\xe0\x75\x7e\x85\xc6\xf5\xbd\xb2\x3a\xcc\x6a\x01\x81\x14\x61\x8f\x96\xe6\xc0\x81\x99\xe6\xcc\x45\xf4\x0c\x3f\x9c\xd7\x5c\x44\x64\xda\x10\x17\x31\xb0\xf7\x51\x85\x13\x17\xb1\x65\x66\x1a\x07\x2e\xe2\x14\x71\xc2\x26\x6a\xe6\xdd\xc0\x05\x97\xb2\xce\xd7\xaa\x47\xd7\xf7\x86\xe0\xe5\xe9\xda\x62\x34\x5a\x32\xad\x41\x5f\x42\x2e\x65\xcd\x0e\xfb\xe2\x41\x15\x6d\xf5\x79\xff\xef\x6e\xff\xb5\x78\x6f\xe6\xce\x79\x38\xe3\x25\x6d\x10\xa0\x75\x1e\x9e\x0d\x9d\xc6\x1a\x98\xb2\x1a\x1c\x9d\xd0\x07\xbe\x06\x27\x62\xbb\x75\x76\x8d\x16\x86\x33\xd6\x9a\x89\x61\x88\x98\xbe\xd0\x74\x2e\x20\x0b\x51\x73\xc1\x61\x93\x9a\xab\xbf\xbf\x1a\xfb\x44\xe0\xba\x6c\xb3\x5c\x77\x9d\xb1\xb8\xc0\x4b\x27\x90\xf2\x33\xa4\x4d\x7e\xd3\xd0\xa6\xd2\xed\x8f\xb0\x00\x87\x43\x95\x7d\x07\x00\x00\xff\xff\x8f\x8c\x0f\x68\xcf\x01\x00\x00") - -func runtimeSyntaxGitRebaseTodoYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxGitRebaseTodoYaml, - "runtime/syntax/git-rebase-todo.yaml", - ) -} - -func runtimeSyntaxGitRebaseTodoYaml() (*asset, error) { - bytes, err := runtimeSyntaxGitRebaseTodoYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/git-rebase-todo.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxGlslYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x93\x4f\x6f\xd3\x4c\x10\xc6\xef\xf9\x14\x7e\xad\xbe\x28\x75\xe5\x24\x24\xbd\xd4\x02\xaa\x42\xe8\x89\xaa\x15\x85\x0b\x59\x13\x8d\xed\xb1\xb3\x62\xbd\x6b\xed\x8e\x53\x82\x46\x7c\x76\xe4\x75\xfe\xd1\x20\x24\xf6\x30\x9a\xf9\xf9\x19\x3f\xb3\x5e\x6f\x29\x15\xd2\xa6\xc1\x24\xa8\x94\x53\x83\x41\x81\x84\x39\x25\x83\x20\x08\x82\xee\x99\x86\x1a\x93\x20\x14\x62\x34\x2c\x2d\x54\xbc\x46\x4b\x5c\x36\xbc\x6e\xb8\x6b\x38\x3f\x0b\x07\x03\xdb\x2a\x74\x7d\x4b\x1c\xc8\x02\x35\xc9\x52\xa2\x4d\x82\x70\x71\x13\x7f\x81\xf8\xc7\x32\xdd\x26\x93\xf8\x6a\x99\x46\x8b\x45\xe2\x1a\xc8\x31\x49\xd3\x68\x31\x3c\x4f\xc3\x6d\x6b\x3f\x47\x28\x44\x36\x5c\x1b\x59\x70\x66\x8c\xe2\x6c\x8d\xf9\xd4\xc7\x99\x8f\x97\x2c\x35\xb1\xf4\x54\x7a\x2a\x3d\x2d\x95\x01\x62\x8f\x3d\xf5\xb0\x06\x9a\x76\x61\xd6\x85\x4b\x76\x64\xdb\x9c\xd8\x41\xdd\x28\xb4\x2f\xe7\xbb\x6c\xba\xcf\x66\xfb\xec\xdd\xe7\xb7\xef\x0f\xca\xc7\x15\x14\xe6\xe9\xa0\xef\xeb\x73\x21\xb2\xf0\x4f\xfb\x16\x22\xab\xd4\x72\x38\xc7\x86\x56\x1f\x41\x57\xf8\x00\x16\x6a\x24\xb4\x8e\x1f\x8c\xd4\x74\x54\xdf\x01\xa1\x95\xa0\x8e\xd0\x07\x59\xad\xe8\xd1\xb4\x36\xc7\xe7\xf4\xce\x14\x78\x22\xed\xa1\x35\x45\x9b\xd3\x16\xed\xab\x5b\x53\x1d\xe4\xc7\x03\x3b\x02\xc2\x1a\x35\x6d\x3f\x79\x6e\xb4\x23\x06\x22\x2b\xb3\x96\x90\xd7\x60\x37\x52\x57\xdc\x6a\x59\x1a\x5b\xb3\xd4\x6c\x5a\x62\xa9\x7d\x2c\x19\x95\x43\xb6\x48\xad\xd5\x5c\x48\x97\x83\x2d\xf8\x69\x25\x15\x72\x69\x2c\x17\xe6\x6f\x5e\x99\x45\xf8\xc6\xb9\xd1\x24\x75\x8b\xc7\x4a\x3f\x05\x68\x1a\x75\x87\xbf\x55\x93\x6d\x91\x4b\x50\xee\x37\xa5\xdb\xd4\x99\x51\x23\xd3\xa0\x05\x32\xfe\x6f\x8b\x2f\xc6\xd1\xeb\x57\x6f\xae\x93\xff\x7e\xfe\xff\x82\xbf\xa6\x27\x2f\xd5\x6d\x9d\xed\x0e\x68\xb8\x98\xc4\x57\xe9\x05\x4f\xbe\x77\x09\xc4\xe5\x4d\x7c\x9b\x46\xbd\xc3\xbe\xaf\xee\x87\xf6\x75\xb7\x1c\x81\xed\x36\x31\x1e\x87\x7b\x86\xba\x48\x82\xf0\xec\x00\x8e\xee\xc3\x6e\xc5\x01\x99\xc2\x24\x41\xf8\xe9\x7e\x7e\x9f\x5c\x9f\x38\x9c\x1a\x08\x11\x3d\xb7\x10\x22\x1a\xff\x9b\xcb\xaf\x00\x00\x00\xff\xff\xb8\x3f\xae\xfa\xde\x03\x00\x00") - -func runtimeSyntaxGlslYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxGlslYaml, - "runtime/syntax/glsl.yaml", - ) -} - -func runtimeSyntaxGlslYaml() (*asset, error) { - bytes, err := runtimeSyntaxGlslYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/glsl.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxGoYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\x94\x5f\x4f\xdb\x30\x14\xc5\xdf\xfb\x29\xbc\x0c\xd6\xa6\xac\x29\xff\xc4\x58\x34\x86\x18\x1b\xd2\x1e\x36\x5e\x98\x54\xa9\xce\x84\x93\xdc\x04\xab\x89\x1d\x39\x37\x40\xc5\xed\x3e\xfb\xe4\x24\x40\x08\x12\x30\x1e\xd7\xa7\xfa\xfa\xf8\x1c\xdf\x5f\x7d\x9b\xc8\x0c\x70\x59\x80\xcf\x52\x3d\x18\xc4\x80\x10\xa1\x3f\x60\x8c\x31\xbb\xa3\x44\x0e\x3e\x73\x38\xf7\x52\xbd\xe6\x0c\x06\xa6\xca\xa0\x6c\xb6\xdf\xb2\x63\xad\x62\x89\x52\x2b\x91\x95\x4c\xa8\x98\x45\x5a\xa1\xd1\x19\x4b\x32\x7d\x55\x6b\x26\xac\x2c\x20\x92\x22\xab\x3d\xc2\x51\x68\x40\x2c\x28\x12\x25\x90\xd5\x4a\x55\x01\xc5\x90\x88\x2a\x43\x4a\x35\xa5\x1a\x35\x19\xa1\x52\x20\x03\x58\x19\xe5\x72\x1e\x3a\xb7\x4e\x28\x10\x72\x50\xd8\x7a\x41\x56\x02\x25\xda\x90\x4c\xa8\xbc\x92\x18\x5d\x74\xd5\x85\x81\xc2\xe8\xa8\xd5\x16\x22\x5a\x88\x14\x48\xe6\x85\x36\x68\xb3\x4b\xa4\x4b\x61\xc8\x76\x4e\x25\x9a\x2a\x42\x4a\x2a\x15\xd9\x5b\xc4\x90\x80\x21\xa9\x51\x3c\x88\x5f\xe6\xa1\xce\x3c\x5d\x80\x11\xa8\x8d\xcf\x9c\xf9\x64\x63\x3a\x3e\xf8\xf4\xf9\xcd\x9f\xf5\x77\xf4\x3b\x20\xff\xc0\x19\xd4\x62\xcb\xe6\x6c\x59\x40\xf9\xe0\xa8\xcf\x9c\xd1\x7b\xe2\xdc\x73\x6f\x2d\x1b\xec\xf5\x05\xab\x43\xa9\x70\xb4\x4f\x5b\x7b\xb4\xb3\x4d\x7b\xbb\xee\x21\x25\x99\x16\x38\x6a\x56\x14\xe9\xbc\xc8\xe0\x7a\xb4\xb7\x4b\x5b\xdb\xfb\x6e\xf7\x62\x5d\x17\xa9\xb0\x40\x43\xe1\x12\x81\x4c\xa5\xea\xd6\xa4\x4a\x49\x2a\x04\x93\x88\x08\x28\xd4\x3a\xa3\x5c\x14\x14\x5d\x08\x45\x60\x8c\x36\x7d\x33\x6f\x01\xcb\x2b\x6d\xe2\xd6\xb4\xa1\xd3\x15\xd5\xf8\x84\x42\xcf\x9a\xb5\x2a\x34\x15\x50\x22\xec\x6f\xa2\x64\xd6\xa8\xef\x60\x7c\x31\x22\x5a\x00\x3e\xe4\xe1\x85\x6d\xd5\x82\xe1\xfc\x86\x38\x5f\xb9\xce\x53\x92\x11\x71\xee\x3e\x2d\x99\x13\xe7\x81\xdb\x89\xfe\x59\xe5\x21\x98\xe6\x79\x36\x30\xca\x7e\x17\xaa\x96\xb4\x7d\xcc\x37\x27\x1f\x83\x0d\xda\xbc\xb6\x5f\xc4\x24\x39\x9a\x9c\x04\x63\xdb\x0e\x0d\xbd\x61\xeb\xdb\x39\xdb\x58\xfa\x6d\x1c\xb3\x8f\xd4\xd4\x0f\xd4\x71\xee\x6a\xa0\xe2\x5e\xa5\x5c\xc8\xa2\xce\xe3\xdc\xbb\xaf\x76\x66\xeb\xf6\xd3\x4d\x6a\x06\xe9\xf8\x42\xd8\xab\xae\x77\xce\x3d\x29\xb4\x19\x73\x11\x26\xca\xe0\xe5\x90\x73\x5e\x17\x82\x7f\x38\x6c\x89\x7c\x08\x6e\x76\x56\x74\x3d\x3f\x9a\x9c\x88\x49\x62\x09\xdd\x6c\xaf\xa8\xea\xae\x77\x57\xf4\xab\xbb\xde\x5f\xb9\x2f\xa7\x35\xec\xc3\x1a\xbe\x8a\x55\xfd\x9a\x7d\xe6\x78\xde\xc6\x0b\x1b\xfc\xbf\x30\x9e\xf7\x31\x9e\xf7\x81\xb1\x79\x70\xef\x96\xd7\x7f\xa6\x8f\x5c\xa6\xd3\xbe\xcd\xda\x33\xdc\x51\xc7\xda\x8e\xdf\xd9\xe9\xd7\x53\x9a\xcd\x66\x74\xf2\x7d\xf6\xe3\x9b\xeb\x1f\x3a\xcf\x87\x71\x3e\x7e\x34\x29\x7c\x3c\x7d\x7d\xe2\xdf\x00\x00\x00\xff\xff\xf4\x69\x51\x13\xd0\x06\x00\x00") - -func runtimeSyntaxGoYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxGoYaml, - "runtime/syntax/go.yaml", - ) -} - -func runtimeSyntaxGoYaml() (*asset, error) { - bytes, err := runtimeSyntaxGoYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/go.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxGoloYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x57\x5f\x73\x1c\xb7\x0d\x7f\xf7\xa7\x50\xd5\xb4\x8e\x93\x91\x9a\xd7\x6a\x9a\x76\x54\x5b\xd7\x51\x9b\x58\x19\xfb\xea\x78\xc6\xe7\xda\xd8\x25\xf6\x8e\x39\x2e\x41\x83\xe0\x9d\x36\x45\xfb\xd9\x3b\xe0\xde\xea\x6f\x3d\xd9\x3e\x54\x33\x22\x41\x2e\x01\x02\x20\xf0\x03\xae\xf3\x01\x65\x48\x78\x76\xb4\xa6\x40\x4f\x9e\x38\x14\x6c\xe5\xec\xc9\xd1\xd1\xd1\x91\x7d\x8b\xd0\xe3\xd9\xd1\xf1\x6a\x75\x6a\xdf\xbf\x38\x7e\xf2\x84\x4b\xc0\x3c\x1e\x38\x39\x1a\x59\x8f\x57\xab\xe6\xcb\xae\xc4\x56\x3c\x45\xed\x4a\xd4\x67\xab\x55\x73\xfc\xf8\x4c\x16\x2e\xad\xe8\x8b\x21\x42\xef\xdb\xab\xe6\x27\x6c\x45\x4b\x34\xae\x73\x07\x49\x90\x17\xd0\xb0\x6f\xa7\xd5\x74\xf2\x0d\xb0\x87\x26\xa0\x5e\x35\x19\x79\x67\xe4\x67\x6e\x08\x3e\x8b\x66\x14\x05\x66\x18\x74\x87\xad\x10\xab\x94\x14\x50\x7b\x48\x9f\xe1\xba\xda\xea\x05\x33\xb1\x5e\xf4\x49\x06\x7d\x49\x11\xf5\x35\xf5\xa8\x57\xa9\x9a\xf4\x0a\x73\x09\x72\x98\x4e\x69\x3b\x51\x1d\xf8\x30\xd1\x58\x05\x4c\x8b\x2a\x67\xe4\x86\xf0\x70\x49\xdd\xa8\xc7\x41\x11\xef\x30\x8a\xef\x3c\xf2\x69\x1b\x20\xe7\x83\x52\x50\xd6\x3d\x46\xd1\xe4\xfb\x7b\x7a\x7f\xe6\xb8\x8f\x82\xdc\x41\x8b\x59\x7d\x9f\x02\x1a\x6f\x56\xbc\x16\x8c\x2e\x2b\xed\x90\xd9\x3b\xcc\xda\xc3\x16\x59\x23\xee\x2f\x63\x16\x88\x2d\xce\x91\x9d\x47\xc7\xf8\x5c\x5d\xe3\xf3\x0f\x8c\xd9\x74\xf3\xb9\xba\xc9\x0b\x32\x98\xa3\xbb\x00\x22\x18\xd1\xa9\xd0\x77\xf6\x14\xb6\xf1\x3d\x24\xfd\x08\xd1\x29\xf1\x45\xc8\xf8\x17\x14\xfd\x68\x8f\x42\x07\xb7\x42\x4a\x61\x50\xf4\xb2\x41\x9e\xa1\x0c\x8f\x5c\x34\x3e\x8d\xf0\xe0\xe3\x5a\x19\x7c\xb6\x39\x96\x10\x7c\x37\x68\x0b\xd2\x6e\x7c\x5c\xcf\x90\x97\x98\x7a\x9f\xd1\xa2\x66\x51\xa4\x30\xaa\x3d\x2b\xba\xc3\x02\x42\x50\x88\xc3\xac\x17\xf0\xe2\x21\xf8\x9f\x51\x6f\xc9\x1f\xbd\x6c\x7c\x5c\x6e\x18\xc1\x69\x16\x60\xd1\x6e\xba\x25\x84\x06\xda\xed\x92\x94\xe2\x6b\x14\xa5\xb8\xb0\x78\x6a\xed\x51\x82\x62\xfc\x54\xb0\xcc\x79\x9d\xc4\x3e\x4a\x88\x5a\xe7\xea\x09\x54\xbb\x2e\xc4\x3a\xfd\x00\x39\xef\x89\x9d\x66\x6c\x0b\xe3\xab\xbb\x5b\x8c\x9f\x8a\x67\x7c\x49\xf2\xb2\x84\x30\x2d\x2d\x3a\x96\x43\x42\x77\x5e\x93\x88\x21\xae\x4d\xe2\x0e\x39\xa3\x7b\x55\x57\x3d\xa4\x8b\x28\x3c\x28\xe4\xcb\x29\xf0\xa6\x80\x52\xc8\x8b\x03\x18\x40\xb8\xf9\xaa\x3e\x3f\x0f\x94\xab\xe5\x3e\xe0\x92\x96\x78\x2d\x2a\x78\x2d\x4b\x5a\xf8\x30\xee\x5e\x5c\xfb\x2c\x59\xdb\xc2\x8c\x51\x5e\x78\xd6\x1c\x10\x93\x96\xe2\x9d\xfa\x3c\xea\x53\x53\xdb\xf4\xbb\xea\xb4\xdd\x00\xbf\x81\x50\xcc\xe5\x32\x12\x81\xe2\x7a\xa4\x1c\x95\x26\xe0\x48\x77\x81\xe0\x70\x80\xb1\xa7\x1d\xfe\x79\xb8\x8c\x0e\xaf\xb5\xa1\xeb\x19\x3e\x0e\x7e\x8b\x61\x78\x5d\x52\x22\x16\x34\xc7\x19\xc8\x34\x14\x9c\x96\xe8\x90\x73\x4b\x8c\xda\x04\x1f\xb7\x93\xa7\x3e\xec\xbc\x43\xd2\x96\x62\x8b\x10\xd0\x69\xb7\xfe\xd0\x04\x68\xb7\x46\xf0\xb8\x5e\x33\x62\x34\x62\xc0\x10\x68\x3f\x1e\x31\x6d\xd7\x1f\x7a\x58\x63\x14\x30\xb2\x1d\xa0\x1e\xda\x6f\xbc\xa0\x36\x93\x98\x66\x14\xd3\x4c\x62\x9a\x1b\x31\xcd\x41\x4c\x73\x2b\xa6\x39\x88\x69\x26\x31\x6d\xe1\x4c\xfc\x21\x51\xf6\x35\x91\x0e\xeb\x0c\x3b\x7c\xb4\xc9\x98\x85\xf8\xf1\x7e\x49\x13\xe5\x68\x7f\xb3\xdb\x11\xef\x81\xdd\xb4\xb4\x18\xaf\x6b\x64\xc8\xf8\xc1\xf9\x9c\x02\x0c\x87\x55\xf0\x71\x4e\x88\x57\x00\xad\x80\xd2\x52\xcc\x1a\xe0\xe7\x71\xd5\x31\xf5\x97\x56\x28\xd6\x18\x0f\x10\xc4\x98\x10\xe4\x00\x49\x73\x64\x43\xfe\xee\x46\x1c\x05\x17\xea\xc8\x2a\xb0\xc5\x3a\xfc\xb8\xb1\xe8\x74\x4c\xa9\x0e\xe3\x32\x97\xc6\x38\xe6\xa0\x42\x6f\x21\x33\xe3\x60\x4f\xae\x84\x39\x0a\xff\xf5\xf5\xd5\xcb\x19\xc7\xb2\xb0\x8f\x6b\x03\xc3\x04\x9c\x51\x85\x8c\x51\x85\x1e\x94\xdf\xe4\x40\x70\xc1\xd4\xcf\x94\x7b\xa7\x74\xa8\xc3\xce\x47\xd4\x35\xca\xdf\x70\xb0\x69\xcc\xb0\xc4\x94\x90\xc5\x63\xbe\x41\xb9\x19\x82\xc5\xf7\x98\xb5\xa4\x25\xa9\x85\xd3\x92\x66\xf0\x74\xc4\x3d\x88\x0a\x5d\xc6\xc3\x88\x6b\xb4\xda\xf2\xa2\xe6\xbe\x0a\x2d\x2c\xf1\xad\x1c\xd1\xac\x6a\xb0\x31\x9c\x16\xc3\xe1\xa9\xe8\x31\xba\xd2\xa2\x22\xb4\x1b\x6d\xa9\x44\x51\xac\x28\x35\xcf\x55\x86\xff\xaf\xa1\x47\xc3\x2b\x75\x78\xe8\x80\x20\x25\x8c\x4e\xc1\xd5\xff\xcb\xee\xbc\xa9\xe5\x34\x59\xf0\x46\xa7\x3e\x66\x64\xd1\x00\xd9\xda\xa3\x9e\x9c\xef\x6a\xff\xf3\xc6\xe3\x5e\x3b\x1f\x9d\x81\xa5\x85\x7d\x0f\x49\x7f\x22\x1f\x27\xcc\xb9\x41\x69\x25\x76\xc8\xe3\x58\xe1\xca\x20\xef\x5c\xd4\xc7\x36\x14\x87\x8a\xd7\xe3\x3c\x7e\x50\x87\x01\x05\x75\x03\xd9\x12\x4c\xc0\xc7\x6c\xaf\x79\x55\x0b\xb6\x0a\x55\xe0\x9d\x93\x4b\xa3\x41\x4b\xd2\x5c\xda\xd6\xec\x71\xda\x97\xa0\x11\xd7\x96\x32\xca\x36\x38\xbf\x53\xb6\xa1\x27\xa7\x6c\x43\xa2\xbd\xb2\x0d\x59\x58\x83\xe8\x5a\x14\x3f\x69\x0d\x2c\x0d\x38\x36\x0f\xd6\x32\x7c\x8c\x24\x7a\x4d\xac\xb8\xc3\xa8\xe4\xdc\xad\xb6\xd3\x6b\x7d\xf4\xd9\xfe\xa3\xf5\x18\x9d\xb5\x78\xc6\x78\xd9\xd5\xf2\xd6\x59\x6f\x18\x9d\x59\xe6\x05\x7b\xab\xf8\x75\x5e\xa3\x98\x33\x7d\x15\x97\x45\x17\x60\x56\x2f\xb9\xa0\x56\x3e\x2b\x47\x83\x96\x38\xcd\xc0\x83\xe6\x64\xb5\x15\x59\x77\xc0\xc0\xeb\xac\x79\x0f\xe9\x7c\x22\x9e\xd7\x93\x95\xa2\xda\x7b\x1a\xa9\x3e\xee\x68\x5b\x3b\x02\x4d\x3e\xa1\xb6\xd4\x27\xca\xa8\x9e\x14\xa2\x5b\x6e\x30\x6a\x89\xe2\xad\x0e\xb7\x85\x4d\x19\x37\x27\x6d\xe8\xef\x29\x21\x3f\x87\x8c\x8a\x9f\x0a\x84\x3c\xf6\x19\xd9\x2e\xba\xd7\x68\x66\x01\xa9\x7d\xe1\x04\x4d\x9d\x62\x7d\x5f\xbb\x79\x6f\x43\x6b\x42\x7a\xeb\x9d\x94\xac\x1d\xdb\xfb\x7c\x0f\x91\x72\xc2\xd6\x43\x38\xf0\xef\xcd\x92\x86\x11\xb6\xf5\x1d\x7c\xac\xc5\x55\x0a\xc7\xbb\x3c\xb5\x31\x9e\x74\xe5\x43\x6b\x66\x51\x0c\x21\x0c\x2a\x1b\xa6\xfd\x7f\xb7\x72\xc2\xb1\x92\x2c\xa3\x37\x3e\x6b\x40\x31\x7f\x6b\xa0\x16\xc2\x3d\xbd\x86\xbe\xa1\x70\xda\x30\xb4\x5b\x14\xf3\xcc\xbb\x2f\x9f\xfd\xf3\x5f\xef\x75\xb5\x7a\xa7\xab\xd5\xfb\xe3\xcf\x78\xa0\x23\xd6\x7d\x05\xf4\x8e\xb8\x66\xb8\xbf\xa7\x7b\x8d\x07\xb8\x39\x0e\x35\x37\xd5\x67\xb5\x40\x24\xd6\x1a\x68\x53\x7c\xdd\xf3\xf5\xc4\x79\xda\x10\x85\x1b\xeb\x4b\x6d\xfb\xee\xfb\xf4\xf6\x8e\x03\x68\x58\xc8\x59\x53\x61\xd0\xea\xee\x3f\xe0\x68\xa6\x81\xab\xd5\x3a\x33\x73\xb5\x3a\xf9\xfa\x77\x5f\x7d\xfb\x87\x3f\xfe\xea\xdf\xbf\xf9\xad\xfe\xe3\xbd\x9e\x7d\xfb\x50\xf0\x69\x2c\x7d\x63\xee\x3c\x5c\xf0\xee\x9b\x93\xdf\xbf\xff\x5a\xbf\xb9\x36\x02\x4e\xba\xf3\x93\xc5\xfb\xaf\xec\x1e\x7d\x7a\xfa\xf4\xb1\x01\x63\x1d\x19\x7f\xf1\xd9\x5f\x0d\x2e\xb3\xe8\xf8\xf8\x66\x0f\xa3\x7b\xb0\x93\xb7\x3e\x55\xb3\x57\xab\xd3\xdb\xdd\x3b\x3f\x1e\xa7\xbf\xbb\x37\x8d\xd1\xf5\x7c\x03\x7c\xcb\x3a\x57\x9d\xa7\x0f\xb5\x79\xfa\xff\x54\xa6\xaf\x41\xf4\x48\x89\x5f\x3f\x54\xe2\x8b\x5f\xb8\x4e\xc8\xd1\xd9\xd1\xf1\x97\xcb\xab\x17\x57\xfa\xf6\xed\x5b\x5d\x5c\xbe\xfd\xfe\xe2\xd9\xd9\x9f\x7e\xf9\xae\x93\x93\x93\x93\x87\xd7\xdd\xdf\xfb\x9f\x6f\xfc\x4f\x00\x00\x00\xff\xff\x8f\x72\x85\xf4\x0e\x10\x00\x00") - -func runtimeSyntaxGoloYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxGoloYaml, - "runtime/syntax/golo.yaml", - ) -} - -func runtimeSyntaxGoloYaml() (*asset, error) { - bytes, err := runtimeSyntaxGoloYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/golo.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxGraphqlYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x53\xdd\x6e\x9b\x4c\x10\xbd\xf7\x53\xec\xe7\xf8\x02\xbe\x2a\x79\x00\xa4\xca\x25\x36\x4e\xa9\x6c\x92\x82\xa9\x54\x65\x22\x6b\x8d\x27\x0e\xea\xc2\xe2\xdd\x25\x6d\xd4\xe9\xbb\x57\x2c\xc6\x3f\xb8\xe1\x02\x69\x66\xcf\x9c\x33\x73\x76\xf6\x39\x17\x68\xde\x2a\xf4\xd8\x56\xf1\xea\x65\x27\x06\x83\x0d\x1a\xcc\x8c\x37\x60\x8c\xb1\xe6\xb8\xe4\x05\x7a\x6c\x08\x70\xe3\x6c\x77\x82\xf6\x38\x77\x34\x1c\x0c\x54\x2d\x50\xb7\xc8\x6b\xd6\xd2\x0c\x01\xd6\xce\xd8\x73\x76\x35\xaa\x37\x2a\x6a\xc3\x4d\x2e\x4b\xd2\xf5\x5a\x67\x2a\xaf\x6c\xd0\x20\xe9\x59\xf1\x6d\x81\xa5\x21\x9d\xbd\x60\xc1\xa9\x2e\x9b\x23\x59\x12\xfe\x32\x58\x6e\xf4\xd8\x75\x01\xd6\xc3\x81\x65\xbf\x62\x3a\xe3\x82\x2b\x2b\xa2\xf7\x82\xda\x70\x83\x0d\xc5\x5e\x35\x9c\x52\x58\x1a\x9a\x09\xc9\x0d\xdd\x4a\x29\x90\x97\x94\x18\x95\x97\x5b\x9a\x72\x83\x26\x2f\x90\xa2\x5a\x88\x33\xe2\xbc\x34\x4a\xea\x0a\xb3\xa6\xb5\x77\xf9\x9d\xd5\x0a\xe0\xe7\x07\xf7\x50\x56\x71\xc5\x0b\x34\xa8\xfe\x89\x76\x2c\xd8\x19\x7b\x00\x9e\xf3\x08\xa0\x9f\xfe\x77\xc7\x6d\x3c\x72\x8f\x24\x9b\x5c\x35\xba\xaf\xc8\x84\xcc\xac\x51\xef\xcd\xf6\x35\x0d\xe2\xef\xb4\x48\x97\xfe\x32\xbc\x8f\x28\x49\x6f\x93\x49\x1c\x3e\xd8\x60\x16\x06\xf3\x29\xcd\x62\xff\x6e\x11\x44\xcb\xd5\x34\x98\x85\x51\xd8\x9e\x74\xb9\xe4\x21\x0e\xfc\x29\x85\xd1\x3c\x8c\x82\x55\x97\xa6\x64\xf2\x39\x58\xf8\x94\x4c\xfc\xb9\x1f\xd3\xfd\xed\x97\x60\xb2\x6c\xe9\x4e\x59\xfc\xf8\x2e\xed\x33\x87\xd1\x32\x88\x67\xfe\x24\xa0\x34\x6a\xe2\x20\x4a\x17\xf6\xb7\xfa\xe6\xcf\xd3\x80\xc2\xe8\x21\x5d\xae\xf6\x8c\x6d\xd0\xe7\x3d\xbb\x85\x83\x13\x9d\x01\x99\x2c\xb5\xe1\xad\x9b\x9f\xce\xad\x57\x52\x9a\xb3\x8b\x3a\xc1\x5a\xaf\xec\xea\x2d\xba\xd5\x4b\x4e\x57\x2f\x69\x97\x2d\x96\xd2\x9c\xe9\xbf\x72\x95\xf3\xb5\x38\xde\x7d\x85\x59\xce\x45\xa3\x0e\x30\xea\xe9\xe3\xae\xce\x15\x6e\x98\x7e\x2b\xd6\x52\x5c\x56\xfc\xd7\x61\xaf\xf7\x90\x26\xe9\xd1\x47\x02\x20\x02\x70\x08\xc0\x25\x80\xdf\x04\xf0\x87\x00\x1e\x09\xe0\xe9\x58\xd2\x4d\x73\xb3\x96\xb6\xb2\x19\xc9\xa8\x1a\xe9\x99\x0b\x8d\xb6\x6b\xc6\x2e\xc0\xda\xee\x79\xfb\x16\x9b\x4f\x1b\xae\xac\x21\xc3\xe1\x21\x87\xe5\xa6\x97\xd1\x3f\xf2\xca\x4a\x00\xdc\x1c\xb3\x27\xcf\xba\xfb\x4e\x95\xda\x41\x27\x2f\x5c\x1d\x4b\x0f\xed\x14\x76\x69\x2f\xda\xb8\xea\x77\x31\xea\xcb\xb1\xc7\xa7\xbf\x01\x00\x00\xff\xff\x7f\xe6\xec\xe6\x8d\x04\x00\x00") - -func runtimeSyntaxGraphqlYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxGraphqlYaml, - "runtime/syntax/graphql.yaml", - ) -} - -func runtimeSyntaxGraphqlYaml() (*asset, error) { - bytes, err := runtimeSyntaxGraphqlYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/graphql.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxGroffYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x52\xc1\x4e\xc3\x30\x0c\xbd\xf7\x2b\xac\xa8\x87\xb6\x68\x11\x1c\xc9\x85\x03\x9f\x11\x67\x52\xd4\xba\x23\xd2\x92\x56\x89\x39\x20\xf5\xe3\x51\xd2\x31\x26\xca\x06\xf3\xc5\x6d\xf2\x9e\xfd\xfc\x9c\xd1\x1d\x89\x3f\x66\x52\x70\x88\xd3\x38\x56\xd5\x40\x4c\x3d\x2b\xa8\x00\x00\xf2\x6d\xb0\x9e\x14\x08\x44\xe9\x35\xf9\x64\xea\x05\x51\xc6\x69\xcc\x89\xbd\xed\xeb\x65\x9f\x93\x14\x55\x15\xdf\x8f\x94\x54\x61\xee\x20\xb1\x65\xf2\x14\x58\x81\xd8\x23\xca\x66\x48\x4b\x88\x2d\xe8\xbd\xd6\x2a\xcd\xb6\x27\x65\x8c\xe9\xc4\x09\xde\x4f\x21\xb1\x0d\x2c\xd3\x4c\xbd\xb3\xc7\xd7\x37\x1b\x4b\x5b\x44\xf9\x0f\xcc\x28\x97\x92\x10\x1b\xb9\x7e\xa6\x06\xf1\x61\x41\xdc\xb5\x2f\xfa\x71\xf7\x6c\x7e\x16\x51\x20\x9a\x8c\x2b\xe0\x1c\x6d\x68\x32\xb3\x91\xb2\xdd\x60\xcb\x7f\x8e\xc4\x36\xfe\x46\x45\xd4\xe2\x0c\xa2\x30\x28\x10\xe6\xfb\x60\x35\x06\xb4\xa9\x4e\x85\x57\xcb\x8b\x2f\x17\x6e\x74\x57\xbd\xf1\x17\x46\x96\x8e\x42\x76\xf5\xd6\x16\x8e\x2e\x1c\xb6\xea\x10\xbb\xab\xa3\x7d\x91\xfe\x9a\x10\xb1\xbb\x73\xc6\x1b\xdb\x2a\x52\x6e\x6e\x75\x23\x67\xa5\xdd\x25\xc0\x0d\x14\xd8\x8d\x8e\xa2\xf4\xb6\x8f\xd3\xb9\x4a\x8e\x5a\x3f\x95\x47\xf1\x19\x00\x00\xff\xff\xb6\xd6\x2a\x2f\x01\x03\x00\x00") - -func runtimeSyntaxGroffYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxGroffYaml, - "runtime/syntax/groff.yaml", - ) -} - -func runtimeSyntaxGroffYaml() (*asset, error) { - bytes, err := runtimeSyntaxGroffYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/groff.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxHamlYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x91\xdf\x6e\x82\x30\x14\x87\xef\x79\x8a\x5a\x31\x50\x0c\x64\xb7\x23\x93\xb9\x47\xd8\xd5\x92\x9d\x9e\x63\x3a\xad\x1b\x09\xe0\x1f\xea\x8c\x5a\xdf\x7d\x29\x43\x64\x73\xe3\xf2\xfb\x7d\xa1\x5f\xd3\x65\x5e\x68\x73\x58\xeb\x94\x7d\xa8\xb2\xf0\xbc\x85\x36\x7a\x6e\x52\xe6\x31\xc6\x98\x1b\x2b\x55\xea\x94\x71\x29\x13\x27\xf8\xdc\xf3\xb6\xbb\x42\xd7\x69\x23\xc4\xac\x3e\x94\x6f\xab\x22\x65\x3c\xb6\x13\xde\xb2\x85\x5e\xaa\x5d\x61\x1c\xcc\xec\x24\xbb\xe0\xf9\xaa\xaa\x8d\xaa\x1c\x0f\x81\x31\xb4\x24\x46\x70\x17\xdf\x3f\xc5\xaf\x2a\x3e\xce\x70\xdc\x99\xf5\x5a\xcf\x73\xe5\xfe\x9a\xfe\x2d\x7c\x17\xbb\x28\xb8\x1d\x2f\xe7\x24\xb5\xd9\xe6\xd5\xbb\xf3\x78\x08\x24\x39\xda\x50\xba\x8f\x0b\x11\x49\x6e\x47\xf0\xfc\x82\x8f\x52\x9e\x80\xce\x18\x49\x79\xee\x48\x08\x24\x1c\x11\x2d\x79\x00\xca\x30\xca\xba\xdd\x07\xf2\xdd\xee\x77\x84\x80\xc8\x11\x6a\xc9\x00\x68\x80\xd1\xe0\xff\xa4\x20\x04\x0a\xda\xa0\x40\x88\x28\xb0\x23\xd8\xec\xf1\x67\x4d\x03\xfa\x31\x9b\x3d\x5e\x5b\x9a\x15\x80\xd0\xad\x78\x01\xfd\xb6\x06\xf4\xd3\x36\x7b\xfc\x55\x96\x2f\x74\x65\xf2\x65\xae\xb7\x29\xe3\xc3\xde\xf1\xb7\x42\xf2\xa9\x9c\x14\x4e\xed\x74\x2a\xda\x77\x99\xa9\xf8\x88\xe3\xeb\x35\xcb\x52\x37\x0f\x3c\x04\x3a\x61\x12\xf9\x76\xe8\x73\xef\x2b\x00\x00\xff\xff\x82\x41\x7f\x6a\x64\x02\x00\x00") - -func runtimeSyntaxHamlYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxHamlYaml, - "runtime/syntax/haml.yaml", - ) -} - -func runtimeSyntaxHamlYaml() (*asset, error) { - bytes, err := runtimeSyntaxHamlYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/haml.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxHaskellYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x94\x6f\x6f\xdb\x36\x10\xc6\xdf\xfb\x53\x68\x1a\x51\xc4\xc0\xec\xbd\xf7\xe2\x6c\x58\x1b\x0f\xdd\xda\x66\x4b\x8d\x21\x40\x2e\x1a\x68\xf1\x64\x11\xa5\x48\x97\xa4\x96\x05\x7d\xb2\xcf\x3e\x90\x92\x1d\x2f\xde\x3f\x60\x86\x41\xe2\xee\x48\x3e\x8f\x7e\x3c\xa9\xd1\x86\xe3\xc3\x8e\x17\x45\x2b\xc3\x07\x36\x66\x32\x51\x1c\xb9\x8e\x8b\x49\x51\x14\x45\x2a\x5b\xd9\xf1\xa2\x28\x89\xe6\x6d\x10\xe5\x64\xe2\x7b\xc3\x61\x28\x7f\x5e\xfc\xc0\x0f\xf7\xce\xab\x90\xc3\x59\x11\xa2\x8c\xdc\xb1\x8d\x8b\xa2\xbc\x2d\xee\xce\x64\x40\x2d\x03\xc3\x35\xa8\x8d\x0c\x01\x4a\x46\x09\xc5\x8d\xec\x4d\x84\x62\xaf\x7f\xd5\x76\x0b\xe5\xd0\x38\x2f\x8d\x49\x13\xeb\xad\x45\xab\x55\x2a\xe8\x06\xb1\x65\x0b\x36\x81\xa1\xbb\x9d\xf3\x11\xda\x36\xfa\xb7\x61\x34\xc3\xe4\xa1\x6d\x88\xd2\xd6\x0c\xc3\x69\x01\x3a\xe5\xd0\x39\xd5\x1b\x86\xe5\xfb\xf4\x80\xf8\xd8\x4b\xa3\x1b\xcd\x0a\x39\xbc\x6f\xd9\xf3\xf4\xb6\xb8\x2b\xff\xc2\xfa\x59\x95\x7d\x56\x7b\x37\xd5\x28\x5d\x0d\xda\xd5\x28\x5e\x8d\xea\xd5\x41\xbe\x1a\x45\xab\xbd\x6a\x95\xc6\xbf\x93\x19\x08\x89\x8c\x48\xc0\x35\x62\x80\x24\x32\x25\xb1\xc7\x24\x0e\x9c\x04\x94\x13\x23\x29\xb1\x47\x25\x46\x56\x02\xba\x11\x99\x96\xc8\xb8\xc4\xc8\x4b\x0c\x8c\xc6\xc9\x8c\xb3\x17\x07\x66\x22\x41\x4b\xa1\x48\xd8\xc4\xc8\x4d\xec\xc1\x89\x27\x72\x02\x43\x22\xb3\x13\xd3\x72\x92\x9f\x29\xb5\xc1\xcf\xd2\x6b\xd7\x87\x22\x3c\x74\x1b\x67\x0e\xdd\x90\xa3\xc4\x93\x08\xf8\x06\x9f\x61\x81\x5f\xf0\x3b\x96\x20\x22\xc2\x57\x20\x3a\x23\x9a\xe2\x0b\x10\xdd\x82\xe8\x0e\x44\x9f\x40\xf4\x78\x7c\xf4\xd5\x8e\xbd\x8c\xce\xff\xf9\xd0\xb9\x1b\xd3\xe9\xf4\xe5\x12\x5f\x2e\xf1\xe2\x05\x88\xd2\x1f\xe7\xb8\xc0\xf9\x12\x17\xcb\xff\x60\x71\xc7\xb5\x96\xd9\xe3\xec\x02\xe7\xb3\x69\xf9\xdc\x3b\xd1\x1c\x44\xe2\xe8\xa4\x57\x32\xca\xa2\x76\x36\x44\xdf\xd7\x47\xce\x72\x4a\xda\x38\xdf\xb8\x71\xe7\xe6\x6c\xed\x7b\xc6\x4a\x9a\xc0\x53\xa2\x4d\xf9\x6c\x65\x92\x7d\xe7\x62\x9b\x5a\xfd\xfb\x3e\x44\xbc\xe1\x26\xe2\x5a\x6f\xdb\x88\x37\x6b\x5c\xfe\x84\xef\xd6\xd3\x13\xe5\xd4\x23\xbc\x17\xd5\x8a\x6d\x4c\xb7\xe3\xe7\xb9\x30\xb6\xd5\x35\x4b\x85\xf7\xad\xbb\xc7\xa5\xed\x3b\x5c\x7e\xc4\x95\x57\x48\xfb\xf1\xad\xeb\xad\x62\x85\xf5\xc3\x8e\xe5\xc6\x30\xde\xf5\x1d\xae\x59\x1a\xac\xbc\xac\xa3\x76\x56\x1a\xbc\xb6\x91\xb7\x5e\x9a\x5c\x48\x79\xac\x8c\x93\x31\x19\xcd\x99\x14\xe0\xad\xb3\x52\x0d\xe3\x8f\xa6\x0f\x58\xf5\x36\xf1\x38\x76\xfc\x3e\x7a\x6d\xb7\x27\x84\x42\x4e\x2f\xc6\x65\x45\x7a\x2b\x7c\xa2\x41\x65\x79\xc8\xb1\x55\xcf\x32\xe1\x83\xde\x65\xae\x44\xf3\xa7\xec\xd1\xf7\x68\xff\x3b\x56\x1a\x2e\xf8\x65\x2b\xfd\xd3\xd6\x83\xbd\x97\xae\x4b\xef\xe2\x93\xbf\x1c\x9e\xfa\x9a\xcd\x9e\xfb\x12\xff\x62\x20\x3a\xe5\xd2\xf5\xae\xaf\x5e\x5d\xe1\xe6\xe6\x06\xab\xd7\x37\x6f\x2f\xa7\x8b\xaf\x47\xf5\x7f\x10\x23\xfa\x74\x22\x37\x23\x7a\xfc\xdf\x8a\x47\xbd\xd2\xe9\xda\xa7\xd5\xa9\x15\x1a\x6d\x59\x95\x93\x3f\x02\x00\x00\xff\xff\xef\xe3\xd9\xc6\x0b\x06\x00\x00") - -func runtimeSyntaxHaskellYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxHaskellYaml, - "runtime/syntax/haskell.yaml", - ) -} - -func runtimeSyntaxHaskellYaml() (*asset, error) { - bytes, err := runtimeSyntaxHaskellYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/haskell.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxHtmlYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x54\x4d\x8f\xe3\x44\x10\x3d\x93\x5f\xe1\xf5\x22\xd4\xbd\x4b\x32\x70\x19\x09\x6f\x76\x2c\xb4\xc0\x15\x0e\x5c\x50\x26\x23\xb5\xbb\xcb\x76\x93\xfe\xf0\x76\x97\xb3\x1b\x78\xfc\x77\xd4\xce\xcc\x4e\x46\x3b\x20\x24\xac\xc8\x8a\x5e\x95\xab\x5e\xbd\xfa\xe8\xad\x23\x3e\x4d\xd4\x54\x23\x7b\xb7\x5a\x19\x62\xd2\xdc\x54\xab\xaa\xaa\xaa\x62\x0c\xca\x53\x53\xd5\xb7\xb7\x9b\x91\xfd\xce\xed\xdb\x2f\xeb\xd5\x2a\xcd\x8e\x72\xb3\xf8\xac\x2b\x4a\x29\xa6\xa6\xaa\xb7\xbb\xbb\x17\xfb\xcd\xab\xf6\xa6\xbe\x37\xe4\x93\xef\xa2\xdb\xb0\x1a\x9a\xaa\x16\xad\x95\xdb\xdd\xd5\xbe\x15\x4a\x74\x5d\x82\x4e\x31\x9c\x3c\x8c\x49\x94\x33\xa6\xc9\x11\x23\x91\x42\x62\xab\x1d\x21\x5b\x43\x98\x8d\x8d\xb2\x45\x27\x54\x26\xd1\xc7\xc0\xb2\x85\x11\x16\x51\xc2\x0e\x70\x51\x1f\xde\xcf\x91\x09\x49\xb6\xd0\x4a\x84\xa3\xca\x98\xd8\xc6\x20\xa1\x29\x30\x25\x68\xcb\x04\x1d\x85\x21\x38\xb8\x21\xc5\x79\x92\x30\x42\xb1\x12\xce\xe6\x25\x1e\xc8\x81\x58\x59\x97\xd1\x07\x58\xe5\xe2\x00\x9b\xe0\xc0\x12\xe4\x45\x47\x46\xb6\xe8\x2d\x39\x93\x89\xd1\xdb\x41\x68\xb5\x24\xc1\x9c\x48\xa2\xd0\x42\x1f\x93\x87\xb0\xb2\xed\x93\xf2\x84\xe5\x5d\xbc\xc7\xdd\xb7\xeb\xeb\x3d\xc6\x04\x0b\xeb\x07\xd8\x20\xa6\x99\x91\x25\x0e\x9d\xc1\x81\x4e\x03\x05\x38\xd5\x91\x83\xa3\x81\x82\x81\xb3\x22\x1c\x64\x0b\xaf\x84\x0d\x98\x90\x0e\x12\x9e\xc2\x2c\x2c\x93\x2f\x38\xb1\x50\xa0\x24\x11\xd4\x11\x21\x8a\x73\x2e\x64\x9d\xec\xc4\x12\x51\x38\x4c\x2c\x96\x4a\xb1\x28\x31\xf3\x34\xb3\xc4\x24\x54\x52\x1e\x56\xf3\x9c\x08\xe5\x17\x87\x22\xbd\x6c\xf1\x1e\x49\x4c\x60\xcc\xdd\x49\x22\x0b\x4e\xf6\x40\xb2\x45\x56\x7e\x42\x26\xa1\x97\x62\x1d\x69\x96\xc8\x5e\x39\x87\x1c\xe7\xa4\x09\x79\x52\x01\x99\x53\x0c\x03\xf2\x2c\x3a\x4c\xf0\x5e\xa5\x93\x04\xd3\x47\x56\xa5\x9b\x6c\x3d\x81\x93\xd2\x07\xcc\xc2\xc9\x16\x47\x95\x70\xb4\x86\x22\x3e\x74\x49\x8a\x6a\xf3\x0a\x37\xf2\xd9\x99\xd9\xd0\x47\xa6\x60\xc8\x3c\x19\x9e\x2e\x9a\x13\x8c\x3d\xa2\x8c\x2b\x46\x52\x46\x50\x69\x7f\x1f\x63\xe9\x37\x5b\x76\x04\x56\x5d\x79\xdf\x3b\x63\x14\xa4\x4a\x13\xd3\xe2\x25\x97\xac\x4f\x72\x4e\xa4\xad\x72\x4d\x55\x7f\xb5\xbb\x7b\xb3\xdb\x35\x79\x52\x9a\x9a\xfd\x7e\xff\xea\xcd\x53\x5e\x4d\x55\xef\x9a\xb7\xfb\x07\xd0\x1a\x0a\x6c\x7b\x4b\x65\xfc\x85\x72\x8c\x6e\xd0\xd1\xc5\x84\x91\xec\x30\x32\xc6\x44\x3d\xac\x79\x68\x71\x0c\x83\xa1\xac\x51\x76\x0a\x31\x08\xed\xac\x3e\xa0\x8f\x7a\xce\x70\x51\x19\xf8\x38\x67\x8a\xc7\xd2\xde\x6c\xff\x78\x50\x38\x69\xb0\x4a\x03\x31\xca\xa6\xe2\xa8\xdc\x4c\xf8\x60\x0d\x8f\xf2\xed\x03\x15\x1d\x43\x66\x15\x78\x13\x66\xdf\x9d\xf9\xb4\x56\xbe\xdc\x7d\xb3\xfe\xee\xfb\xf5\x4f\xfb\x3f\xaf\xbf\xbe\xfe\xeb\xec\xfb\xb2\x5a\x57\x86\x7a\x35\x3b\x6e\xee\x81\xf2\x64\x56\x89\x9b\xaa\xbe\xa9\x2f\x40\x0a\x45\xfd\xed\x25\x74\x5e\xfd\x6a\xb7\x5f\x3d\xb7\xe5\x5b\xdc\x7c\xc6\x28\x73\xb2\x61\xd8\xcc\xa9\xc8\x27\x7a\x9e\x44\x19\xba\x91\xef\xff\x0c\x96\xa1\xc7\x14\x3d\xc9\xe6\xea\x6a\x77\x57\x7d\xb1\x7f\xfd\x18\xc3\x7b\x0a\x85\xd6\xf6\xc5\x7a\xbd\x79\xdd\xae\xd7\x9f\xe2\x4f\x89\xa6\x14\xf5\x62\xfb\xe1\xe7\x77\xbf\xfe\xf6\xcb\x8f\x9b\xd7\xa5\xa9\xcf\xe7\x3f\xd7\x7a\x59\xe9\x6d\x5d\x7f\xc2\xce\x85\x5e\x22\xf9\x60\xa7\xe5\xee\xdd\xde\x6e\x1e\xd1\x8b\xc3\xf7\xf0\x5c\x66\x3a\x0f\xd2\xbb\x51\xa5\xc7\x4f\xef\xe9\x3c\x91\xfc\x92\xc6\xf6\xbc\xba\x8f\x87\xf3\x42\xf8\xab\xe7\x6c\xce\x7a\xcb\xeb\x65\xc3\x9b\x0b\xf5\xff\x9d\xa3\x0d\xda\xcd\xa6\x5c\xf2\xdf\xd5\x51\x9d\xc3\xfe\x17\x6e\x7c\x72\xf4\x0f\xd4\x3e\x37\xfd\x4f\x66\x3a\xe7\x7a\xb5\xfa\x3b\x00\x00\xff\xff\x01\xde\xaf\x06\x92\x06\x00\x00") - -func runtimeSyntaxHtmlYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxHtmlYaml, - "runtime/syntax/html.yaml", - ) -} - -func runtimeSyntaxHtmlYaml() (*asset, error) { - bytes, err := runtimeSyntaxHtmlYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/html.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxHtml4Yaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x54\x71\x8b\xdc\xb6\x13\xfd\xfb\x77\x9f\xc2\xf1\xaf\x14\xe9\xd2\xb5\x13\x12\x02\x75\x2e\x67\xda\x24\xa5\x85\xb4\x0d\xe5\x4a\x29\xbb\x7b\x20\x4b\x63\xaf\x58\x59\x72\xa4\xf1\x6e\xb6\x7d\xfd\xee\x45\xde\x5c\xd3\x90\xab\x58\xc4\xa2\x19\xeb\x8d\xe6\xbd\x79\xbd\x75\xc4\xa7\x89\x9a\x62\xc7\xa3\x7b\x7a\x71\x61\x88\x49\x73\x53\x5c\x14\x45\x51\xe4\xa8\x57\x23\x35\x45\xb9\xd9\x54\x3b\x1e\xd7\x6e\xdb\x3e\xfd\xa2\x5c\x82\x3b\x52\x86\x62\x53\x94\x57\x0f\x5e\xfd\xfc\xf2\xe6\xf7\xb7\xaf\x8b\xef\x6f\x7e\x7c\x53\xbc\xfd\xf5\xdb\x37\x3f\xbc\x2c\x36\xe5\xaa\xae\x7f\x7b\xf2\xb2\xae\x5f\xdd\xbc\x3a\x47\x9e\x56\x8f\x1e\xd7\xf5\xeb\x9f\xb0\x63\x9e\x9a\xba\x3e\x1e\x8f\xd5\xf1\x49\x15\xe2\x50\xdf\xfc\x52\x2f\x05\xd4\x89\xa3\xd5\x5c\x19\x36\x9b\xf2\xba\xbc\xb8\x88\xb3\xa3\xd4\x2c\x80\xab\x82\x62\x0c\x0b\xe2\xfa\xf6\xc1\xb6\xba\x6c\xaf\xcb\x0f\x81\x74\x1a\xbb\xe0\x2a\x56\x43\x53\x94\xa2\xb5\xf2\x6a\x5d\x6f\x5b\xa1\x44\xd7\x45\xe8\x18\xfc\x69\x84\x31\x91\x52\xc2\x34\x39\x62\x44\x52\x88\x6c\xb5\x23\x24\x6b\x08\xb3\xb1\x41\xb6\xe8\x84\x4a\x24\xfa\xe0\x59\xb6\x30\xc2\x22\x48\xd8\x01\x2e\xe8\xfd\xbb\x39\x30\x21\xca\x16\x5a\x09\x7f\x50\x09\x13\xdb\xe0\x25\x34\x79\xa6\x08\x6d\x99\xa0\x83\x30\x04\x07\x37\xc4\x30\x4f\x12\x46\x28\x56\xc2\xd9\xb4\xdc\x07\x72\x20\x56\xd6\x25\xf4\x1e\x56\xb9\x30\xc0\x46\x38\xb0\x04\x8d\xa2\x23\x23\x5b\xf4\x96\x9c\x49\xc4\xe8\xed\x20\xb4\x5a\x40\x30\x47\x92\xc8\x65\xa1\x0f\x71\x84\xb0\xb2\xed\xa3\x1a\x09\xcb\x9e\xb3\x77\xeb\xc7\xab\x67\x5b\xec\x22\x2c\xec\x38\xc0\x7a\x31\xcd\x8c\x24\xb1\xef\x0c\xf6\x74\x1a\xc8\xc3\xa9\x8e\x1c\x1c\x0d\xe4\x0d\x9c\x15\x7e\x2f\x5b\x8c\x4a\x58\x8f\x09\x71\x2f\x31\x92\x9f\x85\x65\x1a\xf3\x39\xb1\x50\xa0\x28\xe1\xd5\x01\x3e\x88\x33\x16\x92\x8e\x76\x62\x89\x20\x1c\x26\x16\xcb\x4b\xb1\x74\x62\xe6\x69\x66\x89\x49\xa8\xa8\x46\x58\xcd\x73\x24\xe4\x5f\x18\x72\xeb\x65\x8b\x77\x88\x62\x02\x63\xee\x4e\x12\x49\x70\xb4\x7b\x92\x2d\x92\x1a\x27\x24\x12\x7a\x79\xac\x23\xcd\x12\x69\x54\xce\x21\x85\x39\x6a\x42\x9a\x94\x47\xe2\x18\xfc\x80\x34\x8b\x0e\x13\xc6\x51\xc5\x93\x04\xd3\x7b\x56\x99\x4d\xb6\x23\x81\xa3\xd2\x7b\xcc\xc2\xc9\x16\x07\x15\x71\xb0\x86\x02\x8e\x5d\x94\xa2\xa8\x2e\x71\x2d\xef\xd5\x4c\x45\xef\x99\xbc\x21\xf3\x89\x78\xba\x60\x4e\x30\xf6\x80\x2c\x4c\x64\xb5\x0b\xca\xf4\xf7\x21\x64\xbe\xd9\xb2\x23\xb0\xea\xf2\xfe\x21\x19\x3b\x41\x2a\x93\x18\x97\x2c\xb9\xa0\xfe\x1b\x73\x8a\x34\xc5\xa0\x3f\xc1\x39\xf7\x13\x89\x4f\x8e\x3e\xfb\x20\x4d\xa4\xad\x72\x4d\x51\x7e\xb9\xbe\x7d\xbe\x5e\x37\x69\x52\x9a\x9a\xed\x76\x7b\xf9\xfc\xd3\x87\x34\x45\xb9\x6e\x5e\x6c\xef\x0e\xad\x21\xcf\xb6\xb7\xcb\x84\x0a\xe5\x18\xdd\xa0\x83\x0b\x11\x3b\xb2\xc3\x8e\xb1\x8b\xd4\xc3\x9a\x3b\x4d\x04\x3f\x18\x4a\x1a\x79\xdc\x11\xbc\xd0\xce\xea\x3d\xfa\xa0\xe7\x04\x17\x94\xc1\x18\xe6\x44\xe1\x90\xf5\x90\xec\x1f\x77\x94\x44\x7d\x2e\x1c\xac\xe2\x40\x8c\xec\x25\x38\x28\x37\x13\x8e\xd6\xf0\x4e\xbe\xb8\x2b\x48\x07\x9f\x58\x79\xae\xf2\x84\xfb\x3c\xa7\x9b\x72\x7d\xbb\x29\xb7\x97\x9b\xf2\xb3\x1c\x3f\x8f\xdd\xb9\xf2\xd6\xca\xff\xaf\x1f\xad\xbe\xfe\x66\xf5\xdd\xf6\xcf\x67\x5f\x3d\xfb\xeb\x2e\xd7\x50\xaf\x66\xc7\x67\x6b\xc8\x2b\xb1\x8a\xdc\x14\xe5\x87\xde\xe5\x45\x3e\x53\x7a\xf5\xf1\xe0\xec\x26\xc5\x7a\x7b\x71\x9f\x71\x5c\xe1\xfa\x3f\xaa\xad\xe6\x98\x1b\x2c\x7a\x9e\x44\xd6\x71\x36\xb0\xe5\xcf\x60\x19\x7a\x17\xc3\x48\xb2\xa9\xeb\xf5\x6d\xf1\xbf\xed\xc3\x8f\x77\x8c\x23\x79\x5e\x1c\x72\xb5\xaa\x1e\xb6\xab\xd5\x3d\x42\xf8\xc7\x3d\xab\x87\x99\xf6\xbf\x03\x00\x00\xff\xff\x65\x55\x73\x5e\x91\x05\x00\x00") - -func runtimeSyntaxHtml4YamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxHtml4Yaml, - "runtime/syntax/html4.yaml", - ) -} - -func runtimeSyntaxHtml4Yaml() (*asset, error) { - bytes, err := runtimeSyntaxHtml4YamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/html4.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxHtml5Yaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x54\x5d\x6f\xe4\x34\x14\x7d\x66\x7e\x45\x36\x20\x64\xb7\xcc\x14\x1e\xb6\x12\xd9\x6e\x47\x88\x8f\x57\x78\xe0\x05\xa5\xa9\xe4\xd8\x37\x89\x19\x7f\x64\xed\xeb\xd9\x1d\x38\xfc\x77\x94\x74\x86\x55\xd5\x62\x29\x56\xec\x7b\xe4\xfb\x75\xce\x1d\xac\x23\x3e\xcd\xd4\x54\x13\x7b\xf7\x76\xb3\x31\xc4\xa4\xb9\xa9\x36\x55\x55\x55\x8b\x35\x28\x4f\x4d\x55\x3f\x3c\xec\x26\xf6\xad\xeb\xf6\x6f\xbf\xaa\x57\xe3\x44\xca\x50\x6a\xaa\xfa\xee\xcd\x4f\xbf\xfe\xf8\xfb\x1f\xbf\xfd\xfc\xf4\xc6\x7d\xbd\xd9\xa4\xe2\x28\x37\x2b\x6c\x5b\x51\x4a\x71\xc5\xb5\x8f\x6f\xba\xdd\xd5\xfe\xbe\x3e\x1b\xf2\xc9\xf7\xd1\xed\x58\x8d\x4d\x55\x8b\xbd\x95\x77\xed\x4d\xb7\x17\x0a\x4a\xf4\x7d\x82\x31\x89\x72\x46\x22\x85\xc4\x56\x3b\x42\xb6\x86\x50\x8c\x8d\x12\x3d\x7a\xa1\x32\xc1\x08\x8b\x28\xe1\xa2\x3e\x7c\x28\x91\x09\x09\x85\x39\x06\x09\xad\x44\x38\xaa\x8c\x99\xed\x7a\xa4\xc0\x94\xa0\x2d\x13\x74\x14\x86\xe0\xe0\xc6\x14\xcb\x2c\x61\x84\x62\x05\xc5\xca\xd9\xcc\x30\x20\x07\x62\x65\x5d\xc6\x10\x60\x95\x8b\x23\x1c\x58\x82\x3c\xc8\xf7\x64\x30\x58\x72\x26\x13\x63\xb0\xa3\xd0\x6a\x75\x81\x92\x48\x62\x88\xc9\xc3\x0e\x49\x79\xc2\xd4\x7e\xb7\xbd\xed\x30\x25\x58\x58\x3f\xc2\x06\x31\x17\x46\x96\x38\xf4\x06\x07\x3a\x8d\x14\xe0\x54\x4f\x0e\x8e\x46\x0a\x06\xce\xc2\xd9\x70\x80\x57\xc2\x06\xcc\x48\x07\x09\x4f\xa1\xac\x9b\x65\xf2\xf0\xc4\x42\x81\x92\x44\x50\x47\x84\x98\x75\xb2\x33\x23\x8a\xfe\x4f\xd2\x0c\x87\x99\xc5\x9a\x15\xd6\xac\x0b\xcf\x85\x25\x66\xcc\x2a\x29\x8f\xd9\x6a\x2e\x89\x30\xaf\x5f\x1c\xd7\x02\x7f\x40\x12\x33\x18\xa5\x3f\x49\x64\x64\xe5\x67\x64\x12\x7a\x4d\xca\x91\x66\x89\xec\x95\x73\xc8\xb1\x24\x4d\xc8\xb3\x0a\xc8\x9c\x62\x18\x91\x8b\xe8\x31\xc3\x7b\x95\x4e\x12\x4c\x9f\x58\x2d\xfd\x62\xeb\x09\x9c\x94\x3e\xa0\xa0\x38\x1c\x55\xc2\xd1\x1a\x8a\xf8\xd8\x27\x29\xaa\xdd\x95\x7c\x95\x07\x3b\xfa\xc4\x14\x0c\x99\x67\x84\xe8\xa3\x39\xc1\xd8\x23\x16\x7e\x61\xe1\x9d\xa0\x24\xf7\x18\x62\x5c\x5a\xca\x96\x1d\x81\x55\xbf\xec\x67\x30\x26\x41\xca\xc8\x3d\xd2\x8a\x92\x2f\x7c\xce\x89\xe6\x14\xf5\x33\x3f\xe7\x5a\x66\x3e\x39\x7a\x19\xe4\x4c\xda\x2a\xd7\x54\xf5\xd7\xed\xe3\xbb\xb6\x6d\xf2\xac\x34\x35\x5d\xd7\x5d\xbd\x7b\x9e\x48\x53\xd5\x6d\xf3\xbe\xbb\x5c\x5a\x43\x81\xed\x60\x57\xad\x08\xe5\x18\xfd\xa8\xa3\x8b\x09\x13\xd9\x71\x62\x4c\x89\x06\x58\x73\x61\x42\x0c\xa3\xa1\xac\xb1\x08\x0f\x31\x08\xed\xac\x3e\x60\x88\xba\x64\xb8\xa8\x0c\x7c\x2c\x99\xe2\x71\xe1\x40\xb6\x7f\x5d\xfa\x91\xf4\x53\xe0\x60\x95\x46\x62\x2c\xaa\xc6\x51\xb9\x42\xf8\x68\x0d\x4f\xf2\xfd\x25\x20\x1d\x43\x66\x15\x78\x97\x39\xd9\xb0\x68\xef\xa1\x6e\x1f\x1f\xea\xee\xea\xa1\x7e\x81\x09\xc5\xf7\x4f\x91\xef\xad\xfc\xb2\xfd\x76\xfb\xfd\x0f\xdb\x5f\xba\xbf\x6f\xbf\xb9\xfd\xe7\x82\x35\x34\xa8\xe2\xf8\x49\xee\xcb\xca\xac\x12\x37\x55\x7d\xae\xdd\xb2\x28\x2c\x2d\xbd\xfb\x7c\xf1\x34\x21\xaa\xb6\xdb\xbc\x36\x0c\xee\x70\xff\x3f\xd1\xee\x4a\x5a\x0a\x2c\x06\x9e\x45\x96\x7b\x4c\x7c\xfe\x19\x2d\x43\x4f\x29\x7a\x92\xcd\xcd\x4d\xfb\x58\x7d\xd1\x5d\x7f\x7e\xc3\x7b\x0a\xbc\xce\xaa\xed\x76\x77\xbd\xdf\x6e\x5f\x21\xc2\x7f\x73\x6c\x77\xbd\xb4\xfd\xdf\x00\x00\x00\xff\xff\x14\x2c\xef\x1d\x1b\x05\x00\x00") - -func runtimeSyntaxHtml5YamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxHtml5Yaml, - "runtime/syntax/html5.yaml", - ) -} - -func runtimeSyntaxHtml5Yaml() (*asset, error) { - bytes, err := runtimeSyntaxHtml5YamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/html5.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxIniYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x90\xc1\x6b\xdb\x30\x14\xc6\xef\xfe\x2b\x84\x66\x88\xed\x11\xed\xae\x10\x76\xd9\x06\x3b\x8c\x5c\x76\x30\xf8\x39\xa0\xc8\xcf\x99\x56\x59\x12\xd2\x4b\x4b\x41\x7f\x7c\x71\xd2\xb8\xa1\x2d\xf4\xd2\x77\xfa\xf4\xe9\x27\x7d\x1f\x6f\x34\x16\xe9\x31\xa0\x64\xc6\x99\xa2\x18\x90\x50\x93\x2c\x18\x63\x6c\xbe\x72\x6a\x42\xc9\x38\x80\xa8\x8c\x33\x79\xc0\x74\x47\x3e\x64\x3b\xda\xec\xef\x31\x46\x33\x60\xa6\xa4\x5d\xa6\x88\xa9\x2e\x73\x35\x99\x09\x55\x08\x09\x40\x58\x93\x28\x07\xe3\x46\x1f\x75\x4e\x48\xa7\x00\x20\xf4\x78\xcc\x21\xfa\xff\xa8\x09\x40\x1c\xfd\xe0\xa9\x2e\xf3\x03\xa2\xfe\xa7\xe8\x9b\xf8\x3a\x23\xde\x8d\x25\x2f\x8a\x78\xb2\x98\x2e\x55\xd6\x4c\x7b\x97\x48\x39\x12\x07\xef\xad\xa0\x78\xba\xd4\x3a\xcc\x0a\xe0\xc0\xdf\xc5\x46\x65\xd3\x33\x77\x96\x37\xa0\x19\xd0\x91\x19\x0d\x46\xc9\xf8\xbe\xeb\x64\x0a\x4a\xa3\xec\xfb\xa6\xdb\x6f\xfb\x66\x7b\xe5\x52\x40\x6d\x94\x7d\x0d\x01\x74\xa2\x01\xe8\xcb\x85\x23\x45\x38\xa1\x23\xc9\x78\xb7\xdd\xf4\x6f\x0a\x25\x8a\xc6\x1d\xe7\x32\xbc\x02\x00\x10\xb9\xdb\x03\xef\xeb\x06\x78\x5e\x2d\xce\xaa\xaf\x9b\x15\x2f\x96\xc7\xd3\xf9\xcb\xf3\x71\x9e\x44\x2a\xce\x09\x5f\xf8\x62\xa1\x1b\x24\xe3\xe5\x8b\x71\xb3\xb6\xeb\xac\x19\xf9\xc1\x4b\xc6\xab\xbf\xbb\x1f\xbb\xdc\xb6\x6d\xfe\xf5\xbb\xfd\xf3\xb3\x96\xdf\xf9\x47\x51\x9b\x4f\x8c\x7a\x0a\x00\x00\xff\xff\xff\x58\x08\xe3\x6d\x02\x00\x00") - -func runtimeSyntaxIniYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxIniYaml, - "runtime/syntax/ini.yaml", - ) -} - -func runtimeSyntaxIniYaml() (*asset, error) { - bytes, err := runtimeSyntaxIniYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/ini.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxInputrcYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\xcd\x4f\x6a\xf3\x30\x10\x05\xf0\x75\x74\x8a\x41\x5f\x20\x76\x4c\x74\x00\x6d\xb2\xf8\x8e\xe1\x71\x40\x51\xc6\x8d\x40\x19\x09\x69\x4c\x29\xd5\xe1\x4b\xfe\xb4\x0d\x34\xdb\x79\xbf\x37\x6f\x0e\x91\xe4\x23\x93\x85\xc0\x79\x91\xe2\x95\x3a\x91\x90\x17\x0b\x0a\x00\xe0\x9a\xb3\xbb\x90\x05\xfd\x00\x6b\xad\x54\x59\x22\x55\x7b\x03\x3b\xf0\x89\xab\x38\x16\x73\x4c\x29\x9a\xd9\xc5\x7a\xd5\x88\xc7\x2e\xcd\x73\xe3\xc4\xd4\x23\x1e\xf5\x4b\x2d\x65\x79\xe0\xc4\x4f\x28\x17\xca\x25\xf9\x7b\x52\x49\x1a\xe2\x3a\xb0\x8f\xcb\x89\x5e\xbd\xaa\x52\x02\xbf\x5d\xb5\xee\x10\x11\x4d\x1b\x0f\xa8\xa7\x7e\x8b\xba\x6d\x7e\x2e\x9b\xa9\xdf\x6e\xfe\x76\x33\xf9\xe0\xe2\xff\xb3\x2b\xb7\x39\x44\xb3\xff\x45\x97\x0b\xb1\x58\xd0\xdd\xa1\x8d\xa3\xad\xd9\x79\xb2\xd3\xd4\xff\xeb\xc6\xc3\xe7\x64\xb6\xfd\x7e\xfd\x6d\x03\x9f\x88\x65\xe7\xcf\xae\x98\xf7\x73\x10\xba\x63\xd0\x4f\xbd\xe1\x95\xb6\xa0\x57\x03\x0c\x0d\x86\xd5\xa0\xd5\x57\x00\x00\x00\xff\xff\x33\x3d\x95\x68\x90\x01\x00\x00") - -func runtimeSyntaxInputrcYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxInputrcYaml, - "runtime/syntax/inputrc.yaml", - ) -} - -func runtimeSyntaxInputrcYaml() (*asset, error) { - bytes, err := runtimeSyntaxInputrcYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/inputrc.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxJavaYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x92\xc1\x6e\xdb\x30\x0c\x86\xef\x79\x0a\xc3\x28\xd0\xad\x45\x93\x5d\x97\xeb\x1e\xa3\xea\x81\x96\xa9\x58\x8b\x4c\x09\x14\xe5\xcc\x03\x1f\x7e\x90\xbd\xac\x81\x5b\x60\x45\x75\x91\x41\x91\xff\xff\x91\xa6\xf3\x01\x65\x4e\x78\x6c\x7e\xc2\x04\xbb\x5d\x8f\x82\x56\x8e\xbb\xa6\x69\x9a\xfa\x46\x30\xe2\xb1\x69\x8d\xd9\xd7\xf7\xbb\x76\xb7\xe3\x12\x30\xaf\x09\x4f\xcd\x5a\xda\x1a\xd3\x7d\xe9\x62\x0c\x08\xa4\xdd\x2c\xa8\x76\x00\xd6\x3e\x96\x2e\xa0\xba\x10\x41\xd4\x93\x68\x88\x74\x52\xc2\x8b\xe6\x21\xb2\xa8\x0c\x3e\xab\x30\x50\xf6\x48\xa2\x53\xf4\xfd\x57\x63\xba\xf6\xaf\x76\x16\x10\x1c\x91\xe4\x6a\xc0\x08\x67\xb5\x90\x51\x2d\x88\x1d\xd4\x46\x12\x4f\x05\xb5\x47\x07\x25\x88\xf6\x51\x31\x64\x54\xe7\x09\x42\x98\xd5\x45\x56\xef\x94\x51\x0a\x93\xe6\x8b\xaf\x55\x32\x70\xbc\xa8\xf0\xac\x97\xc1\x07\xbc\x75\xbc\xe9\x06\xba\x2c\x0c\x56\xd4\x06\xc8\x59\xf1\x97\x20\xf5\x79\x55\x56\x3f\xa6\xb0\x90\xe5\xfa\x59\x5b\xf1\x94\x05\xc8\x62\x74\xb5\x51\x64\x07\x16\x95\x40\xfc\x84\x9a\xc0\x9e\xe1\x84\x9a\xd8\x4f\x20\xf5\x8e\x75\xc6\xd8\x6b\x2a\x5d\xf0\x56\x6b\xa3\xcb\xc5\xde\x8a\x4b\x9a\x4b\x42\xd6\x3c\x93\x1d\x38\x92\xff\x8d\xfd\x0a\x9d\x75\x8a\x01\x64\x03\x6d\xe3\xe2\x7d\x9d\x92\x70\x41\x75\x50\xc7\x40\x25\x84\xf7\x32\xf7\x54\xc6\x0e\x79\x2d\x78\xfe\xf6\xf4\xfd\xe5\x71\xc9\xda\xa6\x55\x20\x3a\xad\xbf\xba\x9e\x2c\xc0\x8b\x4d\xdb\xfe\x8b\x21\xf5\x9b\x48\x3e\xfb\xb4\x48\x1b\xb3\x7f\x8d\xde\x6c\xcd\xf5\xdc\x3a\x25\xb4\x1e\xc2\x8f\x01\xf8\xb5\xf4\xa3\x38\xf7\x5b\x9a\xfb\x4f\xc1\x24\xc6\xc4\xd1\x1e\x9b\x76\xbf\x7f\x6c\x3f\x47\x3a\x2e\xeb\xfa\x86\xf0\x70\xd8\x22\xde\x6d\x61\x9a\xe7\x97\xff\xcb\x18\xf3\xf0\x66\xf2\xe6\xe1\xf0\xae\xd6\x9f\x00\x00\x00\xff\xff\x38\x5c\x13\xf4\xd9\x03\x00\x00") - -func runtimeSyntaxJavaYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxJavaYaml, - "runtime/syntax/java.yaml", - ) -} - -func runtimeSyntaxJavaYaml() (*asset, error) { - bytes, err := runtimeSyntaxJavaYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/java.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxJavascriptYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x54\xc1\x72\xe4\x34\x10\xbd\xe7\x2b\xbc\xb3\x81\xd8\x9e\xf2\x4c\x38\xc0\x92\x29\xc0\x15\x20\x39\x41\xa0\xa0\xb8\x20\x29\xbb\xb2\xdd\x9e\x51\x22\x4b\x2e\xa9\x3d\x93\x81\x86\x6f\xa7\x64\x3b\x64\xd6\xc9\x86\x1c\xa0\xf0\x41\xb2\xba\x9e\xde\x7b\x2d\xb5\xba\x56\x1a\x70\xdf\xc2\x2a\xba\x91\x5b\xe9\x4b\xa7\x5a\x3c\x3a\xaa\x00\xa1\xc4\xd5\x51\x14\x45\x51\x40\x18\xd9\xc0\x2a\x9a\xc5\x9c\x2f\x6e\xfc\x31\x71\xbe\x00\xcf\x3e\xfd\xec\xcd\xe7\x22\xef\x57\xcd\x8d\x3f\x4e\x66\x3d\x7c\x03\xb2\x02\xb7\x8a\x66\xd7\xaf\x5f\x2d\xd2\x65\x0c\x66\x1b\xcd\x93\xdc\xd8\x0a\xe2\x88\x02\xea\xc8\x75\x1a\xfc\x40\x9e\x45\xa5\x35\x1e\xa5\xc1\x85\xe9\x9a\xa2\xdf\xc8\x79\xc1\xb2\xb9\xc8\x63\xf6\x49\x76\x26\xd8\x69\x76\x26\x52\x3a\x65\xa7\xd9\x9b\x30\xdf\x85\x80\xcc\xea\xf3\xec\x52\xcc\x93\x98\x75\xbf\x08\xa6\xbf\x13\x39\x85\x31\xac\xf2\x24\xe7\xbc\x98\xbd\x80\x3e\x30\xcf\x39\x5f\x8c\x12\xc3\x74\xbf\x0e\xdc\x17\xf0\x63\x2b\xd8\x3c\x13\xf9\x18\xca\x59\x7d\x19\xc4\x5e\xcc\xfe\x98\x62\xc2\xa0\x2a\x30\xa8\x6a\xd5\x6f\x66\xe7\xd9\xaf\x32\xfb\xed\xad\x18\x7f\x4e\xb3\xb3\xb7\x22\x65\x6c\xe5\x5b\x59\xc2\x4a\x88\x94\xc5\xe2\x7e\xa7\xdf\x37\x85\xd5\x8b\xc2\xc9\xf2\x16\xd0\x0f\xd7\xf3\x3b\x71\xfe\x47\xf2\x2c\x24\x26\xce\x93\xe7\x21\x8c\x38\x17\xcf\x43\xfe\x43\x21\xdb\x82\x93\x68\xfb\x03\xc9\xe6\xcb\xf4\xcb\x2f\xbe\x7a\xf5\xe7\x47\xf9\xea\x63\x7a\xc8\x1d\x25\x42\x03\x06\x87\x13\x8f\xa5\xdf\x9b\x92\xe4\x4e\x2a\xa4\xc2\x81\xbc\xa5\x52\x7a\xa0\x52\x62\xb9\xa1\xfe\x92\xc2\x88\xca\x74\x40\x15\x14\xdd\x7a\x0d\x8e\x2a\xa8\x65\xa7\x91\x2a\xd0\x80\x40\x95\x25\xd0\x1e\x08\xee\x5a\xeb\x90\x6a\x65\xa4\xd6\xfb\xe4\xa0\x96\xa6\xaa\xb5\x75\x54\x77\xa6\x44\x65\x0d\x95\x5a\x7a\x4f\x70\x87\x60\x2a\x4f\x6b\x40\x52\x35\xa9\x66\xe0\x72\xb6\x21\x65\xc8\xd6\xa4\xfa\x82\x29\xc1\xd6\xa4\x01\xc9\xc0\x8e\x1c\x60\xe7\x0c\x79\xc0\xe7\xc4\x7c\xd7\x82\x23\xbf\x53\x21\x25\xdc\x28\x4f\xb8\x71\x76\x47\xe8\xf6\x14\x1e\xb0\xad\x69\x2b\x1d\x6d\xad\xaa\x68\xb7\x51\x1a\x68\xa7\x70\x43\x7b\x05\xba\x7a\xe0\x7d\x1d\x39\xf0\xe0\xb6\x50\x45\x45\x87\x51\x67\xa4\xf7\x6a\x6d\xa0\x1a\x55\xc1\x39\x3b\x96\x71\x0c\xa6\x6b\x42\x06\xba\xb7\xe1\x49\x19\x04\x57\xcb\x12\xa8\x95\xe5\xad\x5c\x03\xb5\x4e\x6d\x25\x86\xd9\x86\x7e\x01\x15\xb5\x5d\xa1\x55\x99\x4c\xdf\xc7\xc8\x68\x3a\xad\xa9\x33\x15\xd4\xca\x40\x45\x57\xf2\x2a\x79\xe2\xa9\x8e\x60\x74\x1d\x50\x2d\xb5\x87\x43\xd0\xd0\xab\x7a\xc0\xb9\x73\x72\x4f\x5f\x5b\xab\x41\x1a\xfa\x36\x18\xb9\x30\x5d\x33\x14\x0f\x5d\x84\x4c\xe8\xf2\xfe\x7a\xbe\x97\xb8\xf9\x00\xcf\x55\xff\x76\xe9\x87\xe2\x06\x4a\xa4\x9f\x60\x7d\x71\xd7\xd2\xcf\xe8\x94\x59\x1f\x1e\xdc\x7b\x06\x97\xec\x3a\x15\x31\xbb\x5e\x0a\x8a\x39\xe7\x7c\x99\x24\x29\xbb\x0e\x7f\x62\xc9\xd6\xaa\x11\xe9\x93\x59\x71\xde\xb7\xb1\x7e\xc8\x87\x91\x42\xf4\xbd\xa6\xd6\x47\x58\x51\x1b\x87\x27\x7c\xc6\x79\xde\xd3\x3e\xf0\x35\x63\x55\x7c\xb8\xc1\x4e\xbb\x93\xef\x93\x19\x3a\x6e\xf8\x3c\x4a\xd7\x1b\x9a\xcd\xfe\x8e\x81\xa9\x26\x11\x7f\xab\xda\xd1\xf5\xe2\x21\x7a\xd0\xbc\xef\xbf\x43\xa5\x16\x4a\x25\xf5\x37\x1b\xe9\x1e\xb6\xbe\xd4\xce\xc9\xd4\xcd\xc9\xff\x68\xe6\xdd\xd4\xcc\xbb\x7f\x47\x76\xb8\xbd\x47\x72\xcb\xe5\x54\xef\x78\xaa\x17\x31\xf1\xcf\x34\x9c\xa7\x8f\xee\x94\xa7\xcb\x27\xb9\xfe\x0a\x00\x00\xff\xff\xbc\x58\x3c\x18\xfc\x07\x00\x00") - -func runtimeSyntaxJavascriptYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxJavascriptYaml, - "runtime/syntax/javascript.yaml", - ) -} - -func runtimeSyntaxJavascriptYaml() (*asset, error) { - bytes, err := runtimeSyntaxJavascriptYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/javascript.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxJsonYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x52\x3b\x6b\xf3\x30\x14\xdd\xfd\x2b\x84\x08\xf8\x85\xfc\xe5\x83\x42\x89\x16\x53\x4a\x33\x75\xe8\xd2\x49\x57\x01\xd9\xb9\x6e\xdc\x3a\x8a\x91\x64\x68\x89\xfb\xdf\x8b\x1c\xa7\xcd\xab\x90\xa5\x1a\x2c\xdf\x73\x74\x1e\x58\xae\xea\x06\xdd\x47\x8b\x9c\xbc\xda\x8d\x0e\x82\x25\x3a\x2c\x1d\x0f\x08\x21\xc4\x73\x5a\xad\x91\x13\x0a\x90\x79\x7e\x42\x07\x62\x85\x6a\x89\x86\x13\xba\x00\xd8\x4e\x68\x10\x98\xae\x41\xbb\x13\x31\x52\x6e\xb4\x75\x4a\xbb\x4c\x77\xeb\x62\x38\x06\x50\x08\x96\xca\x3c\x12\xff\xd9\x4c\x8a\x29\x9b\xc9\xa4\x9f\x8a\x29\xbb\xf5\xfb\xbb\x07\x14\xab\xee\xd8\x5c\xa6\x71\x24\xba\x67\x29\x9a\x47\x99\xf7\xfe\xe9\xa7\x3c\xce\x01\x0a\x7a\x85\xbd\x77\x4e\x01\xb2\x31\x62\xb7\xed\x67\xef\xfd\x80\x4f\xad\x14\x29\x93\xf9\x08\xe5\xa2\x9a\xfb\xb0\xab\xdd\xcf\x2d\x7e\x71\xd8\x49\x23\xdd\x35\x4d\x7c\xa1\xfe\x48\x3b\xd3\x61\x5f\xa9\xc6\xe2\xa5\x43\x99\x75\xa6\xd6\x2f\x9c\x0c\xb8\x5f\xd6\x29\x33\x68\x29\xfd\xc6\x50\x2f\x4f\x10\xfb\x56\xb7\x43\x00\x40\xf6\x83\x1e\xdc\xd2\x7e\x1d\x46\xb5\x58\xd6\xaa\xb9\x5f\x29\x73\x2c\x3d\xaf\x73\xd6\x26\x3c\x2d\x13\xfe\x41\x97\xb1\x8c\x75\xca\xe1\x1a\xc7\x2f\x08\x34\xf2\x34\xd0\x5e\x2c\x80\xca\x38\xf1\xef\x42\x70\xdb\xaa\x12\xb9\x94\x09\x07\x4a\x08\xd0\x30\x02\x08\x7b\xb1\x08\x65\x9c\x84\x47\xfc\xc5\x8b\x01\xe8\x0e\xfe\xca\xed\xcd\x67\xef\x31\x51\x54\xda\xb8\x10\xe8\x3f\x3f\x49\x1a\x7c\x05\x00\x00\xff\xff\x67\x47\xd8\x55\x3e\x03\x00\x00") - -func runtimeSyntaxJsonYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxJsonYaml, - "runtime/syntax/json.yaml", - ) -} - -func runtimeSyntaxJsonYaml() (*asset, error) { - bytes, err := runtimeSyntaxJsonYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/json.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxJuliaYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\xdd\x72\x9b\x30\x10\x85\xef\xfd\x14\x2a\x49\x6b\xb0\x07\x27\xb7\x61\xfa\xfb\x1a\x05\xe2\x11\x62\xb1\x37\x11\x2b\x57\x5a\x35\xe3\x76\xdb\x67\xef\x20\x27\x71\xed\xa4\x33\x1d\xae\x38\xe8\x7c\xbb\x7b\xb4\x0c\x68\x81\xf7\x3b\xa8\xd4\x5d\xb4\xa8\x67\xb3\x1e\x18\x0c\x57\x33\xa5\x94\x9a\x3e\x92\x1e\xa1\x52\x59\xd3\xac\xee\xec\x65\x96\xe4\x2d\xe8\x1e\x7c\xa5\xb2\xdb\x8b\x37\xab\xc5\x55\x0e\xf4\x5d\x2d\x8b\x4f\x09\x90\x2b\xb9\x2c\xb2\xd9\xcc\x47\x0b\xa1\x9a\xa5\xf3\x17\xaa\x8b\x68\xb9\x44\x52\xae\xbb\x03\xc3\x21\xc9\xa5\x32\x8e\x02\x6b\xe2\x55\xe7\x9c\x4d\x45\xba\x9c\x7d\x04\x19\xb4\x0d\x50\x34\x4d\x77\x28\x78\x82\xd0\xcc\x1e\xbb\xc8\x70\x4e\xa9\x54\xb6\x5e\xd7\x5f\xca\xaf\xba\xfc\x71\x5d\xde\xac\xdb\xe5\x7a\x7d\xf4\xf7\x30\x20\x21\xa3\xa3\x27\x1f\xf6\x40\x8c\x03\xa6\x51\x1e\x7d\xeb\xf6\x6f\xc0\xa2\xae\xab\xb0\xd3\x06\xaa\xb6\x5d\xd4\x79\x7b\xa4\xdd\xc3\xfe\xc1\xf9\xfe\x09\x15\x58\x33\x8c\x90\x7a\x98\x86\xe8\x60\x83\x24\x9d\x07\x7d\x2f\x46\xb3\xd9\x8a\x71\xc4\x48\xd3\x68\x91\xcc\xd4\x85\x80\x0d\x80\x83\x04\xf6\xd1\x70\x7a\x13\xa0\x5e\x06\x24\x6d\xed\x5e\x06\xe7\x65\x63\x5d\xa7\xad\x58\x67\xb4\x95\x34\xa6\xe0\x20\x48\xc6\xc6\x1e\x04\xc7\x9d\xf3\x2c\x31\x20\x6d\xc4\xc3\xb7\x88\x1e\x64\xd4\xc6\x3b\xd9\x79\x24\xb6\x24\x1e\x38\x7a\x12\xf6\x7b\x99\x2e\x59\x1e\xb6\x68\x41\x46\xd7\x47\x7b\x16\x6f\x0f\xc6\x79\xcd\xce\xbf\x4c\x67\x95\x98\x95\xca\x3e\x9f\x84\x7b\xf4\xba\x1d\x9c\x58\xc3\x7e\xec\x9c\x5d\x3d\xc9\x53\xba\xe5\x72\x71\x25\x1f\xde\xbe\xff\xf8\xee\xf7\x6d\x2b\x53\x44\x9a\x7a\x21\xc7\xe2\xbc\x60\x10\xa4\xd3\x76\x76\xda\x03\xf1\x16\x02\x9c\x41\x3b\xaf\xcd\x3d\x70\xa8\x54\x96\xd7\x79\xf1\xf3\xd7\x44\xab\xa5\x69\xda\xe2\xe8\xa6\x38\x76\xe0\x5f\x6c\xd9\x41\x3e\x5c\x51\x7d\x5d\xde\xb4\xcb\x54\xf3\xfc\x58\x60\x8f\xb4\x99\x8e\x65\x79\xd3\x34\xcd\x4a\xea\xdb\x26\x6b\x8b\x45\x93\xc9\xfc\x59\x99\xb7\xc5\x62\xfe\x4f\xf3\x63\x2b\x6a\xda\x0c\x9f\xb6\x22\x3d\xd9\xb3\x0e\xd4\xbf\xa2\x1e\xfe\x1a\x55\xb7\xff\xcd\x9d\xcf\xe7\xe7\xd0\x13\xe9\x15\xe2\x98\x16\xf5\x05\xe9\xe2\x9c\x73\xf9\x1a\xe5\x4f\x00\x00\x00\xff\xff\x44\x72\x62\x82\x30\x04\x00\x00") - -func runtimeSyntaxJuliaYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxJuliaYaml, - "runtime/syntax/julia.yaml", - ) -} - -func runtimeSyntaxJuliaYaml() (*asset, error) { - bytes, err := runtimeSyntaxJuliaYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/julia.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxKeymapYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x90\xd1\x6a\x33\x21\x10\x85\xef\x7d\x0a\x7f\x09\x24\xe1\x27\x4b\x6f\xbb\x50\x7a\xd1\x97\x28\xc4\x14\x66\x75\xd2\x2c\xeb\xa8\xe8\xa4\xb0\xe0\xc3\x97\x5d\x69\xbb\xdd\x50\xe8\x4d\xe7\x66\x64\xf4\x9c\xf3\x39\xe7\xde\x21\x8f\x11\x5b\x39\xe0\x48\x10\x85\xb0\xc8\x68\xb8\x15\x52\x4a\x39\xdd\x7a\x20\x6c\xa5\xd2\xba\xd9\x0d\x65\xc0\x71\xff\x48\x10\x37\xe5\x99\x82\x9d\x0e\x4a\x88\x74\x75\x98\xab\xe0\x20\x33\x03\x23\xa1\xe7\x59\xd3\xed\xc0\xda\x62\x1c\x42\x2a\x26\x50\x0c\x19\x27\x0f\x13\xec\xdc\x09\x62\x9e\x7a\x1e\xa9\x24\xa4\xf0\x86\x25\x73\xea\xfd\xeb\x5e\xeb\x4e\xfd\xe0\x68\x82\xe7\x14\x5c\x01\xc7\x25\x5f\xfa\x33\x2f\x1f\x9b\xe0\x33\x83\xe7\xc6\x5f\xa9\xc3\x54\x25\xc7\xbb\xc3\xfd\xe9\xff\xd2\x32\xa2\xe9\xc1\xb5\x52\x3d\xdc\x08\x2b\x40\xfd\xce\x54\x99\x21\xcd\xd1\x4a\x7d\xce\xd0\xdb\xd5\x24\x0f\x7d\x9c\xc3\xb4\x6e\xbe\xa6\x8b\xcd\x7c\xd4\x32\xa9\x52\x3c\x5d\x20\x7d\x97\xfe\x82\x66\xbb\x86\xd9\xfe\x21\x0b\xcd\xdb\xbf\x61\x78\xf9\xb7\x86\xd8\xac\xe3\xe4\xf1\x24\xc4\x7b\x00\x00\x00\xff\xff\x2a\x3b\x25\xf2\x64\x02\x00\x00") - -func runtimeSyntaxKeymapYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxKeymapYaml, - "runtime/syntax/keymap.yaml", - ) -} - -func runtimeSyntaxKeymapYaml() (*asset, error) { - bytes, err := runtimeSyntaxKeymapYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/keymap.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxKickstartYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x91\xe1\x6e\x9b\x30\x10\xc7\x3f\x97\xa7\xb0\x58\x26\x41\x90\xa3\x7d\x1d\xd2\xba\xf6\x35\x1a\x12\xe9\x30\x17\xb0\x30\x36\x3a\x1f\x49\xdb\xdd\xc3\x4f\x66\x45\x6b\xa5\x7c\xe1\xa4\xbb\xdf\x5f\xdc\xfd\x7c\xb1\x0e\xf9\x6d\xc6\x5a\x8d\xd6\x8c\x91\x81\x38\xcb\x3a\x64\x34\x5c\xab\x4c\x29\xa5\x12\xe1\x61\xc2\x5a\xe5\x4d\x73\x18\xe3\x4e\x52\xd9\xe0\x5d\x9e\x65\xb4\x38\x8c\xf5\x0a\x6b\x15\x67\x34\x16\x5c\xad\xf2\xef\x47\xd0\xef\xa7\x2a\xdf\x06\x0c\x8c\x13\x7a\xae\x55\x7e\x3e\x1e\xeb\x38\x83\xc1\xfa\x74\xda\x17\xd6\x47\x06\xe7\xc4\x74\x14\x26\x61\x7c\x65\xe9\x09\xe6\xc1\x1a\x70\x72\x0d\xae\xa7\xb0\xcc\xe2\x42\x7f\x0d\x4e\x08\xdb\x10\x58\xd8\x4e\xf8\x1e\x3c\x8a\x03\xdf\xcb\x88\x6f\x6d\x00\xea\x04\x16\x1e\x4c\xf0\x17\xdb\xcb\xc5\x52\xe4\x95\xa5\x10\x78\xbe\xc9\x12\x91\x52\x17\x6f\xe9\x67\x11\x9d\xf5\xcb\xab\x10\xce\x41\x66\x20\x5e\x3f\x96\x6d\xf0\x62\x1c\x02\xad\xbd\x94\x77\x01\x3a\xa4\x72\xbb\xc3\x84\xb4\xee\x7a\x86\xd6\x45\x32\x23\x93\x25\x0a\xe4\x6c\x64\x69\x21\xe2\x42\x4e\x16\x36\x65\xf1\x4b\x9a\xe6\xb1\xbc\x27\xa0\x69\x76\x05\xa1\x43\x88\x78\x45\x5a\x53\x40\x66\x28\x9b\xe6\x71\xc3\x5b\xb2\xfd\xc0\xad\x03\x33\x26\x63\x4f\xc7\x67\xfd\x92\x84\x7e\x54\x7d\xda\x7f\x25\x09\xbb\xc4\xe9\xa7\xa4\xfd\x59\xbf\xfc\xd0\x3f\xf7\xfa\xbf\xfe\x6d\x7c\x7f\x6a\xc2\xf4\xb1\x59\x71\x96\x4f\x8f\x53\x7e\x2b\x8e\xe7\x3f\xa7\xc3\xbe\xfc\xbd\xdb\x58\xeb\x3b\xf4\xac\xcd\x00\x74\xb8\x0d\x96\xf1\x1f\xac\xf2\x4f\xb9\xea\x1e\x5d\xab\xfc\xa1\x52\x95\xa8\xea\xa1\xca\xb3\xbf\x01\x00\x00\xff\xff\x96\xbc\x1a\x8d\x7a\x02\x00\x00") - -func runtimeSyntaxKickstartYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxKickstartYaml, - "runtime/syntax/kickstart.yaml", - ) -} - -func runtimeSyntaxKickstartYaml() (*asset, error) { - bytes, err := runtimeSyntaxKickstartYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/kickstart.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxKotlinYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x54\xef\x6f\xdb\x36\x10\xfd\xee\xbf\x82\x75\xf7\xc3\x4e\x17\xa7\x5f\xa7\xfd\xe8\x96\xa4\x05\x8a\xb5\xcb\x87\x64\x40\x80\x30\x03\x4e\xd4\xc9\xe6\x4c\x1d\x85\xe3\xc9\x89\xb1\xdb\xff\x3e\x50\x92\xbd\xc4\x73\x37\x60\x98\x01\x0b\x22\xef\xf8\xee\xde\xbb\x47\xd5\x3e\xa0\x6c\x5b\x2c\xcc\x3a\x4a\xf0\x34\x99\x54\x28\xe8\xa4\x98\x18\x63\x4c\x8e\x12\x34\x58\x98\xa9\xb5\x8b\xb5\x7c\x36\x9d\x4c\xb8\x0b\x98\x86\xb0\xe9\x9f\x2f\xcd\x55\x8b\x0c\x12\x39\xf5\xeb\x53\x93\xb6\x4d\x19\xc3\x22\x8e\xdb\x85\x99\xdd\x2d\x8a\x6f\xbe\x7a\x75\xa2\xdf\xbd\x78\x63\xed\xe7\xf7\xfa\xad\x7e\xaf\x67\x7a\xaa\x5f\xcc\x07\xa0\x3d\xd4\xb5\x80\x60\x83\x24\xc9\xfc\x84\xdb\x87\xc8\xd5\x1e\x74\x17\x29\x8c\x2d\x67\x90\xb4\xdc\xaa\x0b\x90\x92\xba\x48\x49\xb8\x73\x12\x59\x5d\x6c\x5a\x20\x1f\x49\xeb\x8e\xd4\x37\x6d\x64\x51\x4f\xea\xa9\xf6\x8f\xea\x49\x90\x6b\x70\xa8\x9e\x82\x27\x54\x9f\x34\x76\xa2\xbb\x4e\xb5\x05\xb7\x86\x25\x2a\xa3\x74\x4c\x9a\xba\xd4\x22\x55\x9a\xba\x16\x59\x65\xe5\x93\x3e\xac\x90\x74\x03\x41\x37\xc0\x73\x5b\x1e\x36\xb7\x68\x39\x83\x89\xc7\xd4\xf7\xb9\x44\xd1\x84\x72\x2c\xd3\x45\x12\x8e\xa1\x4f\x2b\x19\x61\x9d\x89\x88\xa7\x0e\x15\x43\x42\xad\xa2\xfa\x5a\x85\xb7\xea\x40\xdc\x4a\x6b\x4f\x10\xc2\x56\xeb\xc8\xfa\xb0\xf2\x01\x8f\x82\x66\x45\x06\x85\xca\x24\x0c\x4e\x14\x88\xa2\x80\x64\x4d\x2a\x10\x50\xa4\xae\x19\xc0\x32\x6f\xd2\x84\x10\xb0\x3a\x06\xd6\x60\x53\x22\xf7\x68\x71\x83\xcc\xbe\x42\x0d\x20\xe8\xc9\x67\x51\xfd\x51\x5a\xe0\x1c\x8e\x2d\xf4\x72\xe7\x3a\x2d\xfb\x0d\x08\x6a\xcb\x31\x9b\x0b\x2b\x6d\xbb\x32\x78\x77\x54\x40\x60\x68\x50\xc6\xba\x8e\x63\x4a\xe3\xb0\x28\x8e\x2f\x8c\xbe\xf6\x58\xe5\x11\x00\x2f\x77\x20\xa3\x83\xde\x3e\xb6\x8c\x29\xf9\x48\x06\xa8\x32\xd9\xdc\x3b\x0b\x0d\x46\xb7\xe5\xac\xda\x12\x34\xde\x69\x2c\x7f\x43\x27\x2a\x2b\x8e\x0f\x9a\xa3\x10\x3c\xa4\xfe\x2d\xd6\x73\x5b\x9a\xc9\x08\xfa\x11\x05\x8e\xc8\x23\x50\x18\xfb\xc3\xcc\x96\xf9\xa2\x68\x85\x01\x97\x99\x66\xed\x31\x54\x9a\x47\x3f\xba\x61\xab\x8c\x0e\xfd\x06\x39\x9b\x21\xff\x7b\x96\x3a\x3c\x33\x81\xb1\xce\x45\xb6\x32\x90\x8c\xb5\xdc\xb8\xec\x9b\x16\xee\x50\x6b\xc8\xd6\xa0\x2e\x84\xf9\x41\xce\x82\xba\x61\x5a\xb3\xbb\xd7\xa7\x5f\xdf\xbf\x9a\x4f\x9e\x5d\xab\xc8\xb0\x44\x73\x73\xa0\xc6\x22\x0d\x81\xbe\xc0\xf9\x56\x50\x2f\x56\xc0\x7a\x19\xbb\x32\xa0\xbe\x0b\x11\x44\xdf\x93\xe8\x87\x48\x4b\xbd\x5e\xe5\xcb\x74\x1e\x63\x40\x20\xfd\x25\x9b\xe0\xe7\x28\x2b\x4f\x87\x23\xb8\x88\x21\xa0\xcb\x8e\x7b\x56\xcb\xfd\xb5\xdd\xd7\xfb\x91\x19\xb6\x7b\xf2\x7d\x97\xec\x69\x79\xc8\x2b\xf5\xbb\xc5\xee\x43\x91\x07\xc0\x59\x91\xe9\x7e\x07\xa9\x7a\xb6\x4e\x6b\xdf\x16\xc6\xda\xc5\x7e\xe7\xe9\x47\x6b\xfc\x3d\xad\xd0\xa2\xf3\x10\x32\xf5\xc2\xcc\xac\x7d\xad\xd6\x5a\xab\xd6\x8a\x5a\x4b\x6a\x2d\xab\xb5\x53\xb5\xf6\xcb\xf9\xa7\x20\x3a\xf2\x2e\x56\x59\x47\xdb\xd9\xdf\xef\xee\x8a\xc7\xca\x2f\xbd\x14\xf7\xf7\xaf\xfe\xd8\x0d\xf7\x7a\x85\x25\xd0\xd2\x7c\xf0\x84\x7b\x92\x4d\x6f\xa5\x34\x84\x0a\xf3\xeb\xec\xe5\x8b\xf9\xe2\xe4\xa9\x9a\x39\xdd\x5c\x0c\x89\x07\xc7\xf2\x6d\x28\xcc\xf4\xec\x6c\x71\x32\x7d\x7a\xe4\x3c\x44\xb7\xfe\xc4\x99\x32\xc7\xfe\xa6\xe6\xf4\xcc\xda\x93\x03\x45\xa7\xd6\x9e\x9c\x4d\xff\x59\x43\x89\x55\x2c\xcc\x74\x76\x73\x75\x79\xa5\xb7\xb7\xb7\xfa\xee\xfd\xed\xc7\xb7\xf3\xe2\xcd\xee\xdc\xd8\xd1\x65\x74\xff\xb5\xab\xff\xbd\xb1\xb1\xa5\x9b\x58\xc5\xc9\xbf\x25\xff\x19\x00\x00\xff\xff\xac\x74\xa1\x79\x20\x07\x00\x00") - -func runtimeSyntaxKotlinYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxKotlinYaml, - "runtime/syntax/kotlin.yaml", - ) -} - -func runtimeSyntaxKotlinYaml() (*asset, error) { - bytes, err := runtimeSyntaxKotlinYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/kotlin.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxLedgerYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x90\xd1\x4a\xc3\x30\x14\x86\xef\xfb\x14\x67\xc5\x8b\xa4\x23\x9b\x88\x37\x46\x46\xf1\x35\x6c\x32\x49\xd3\xb3\x51\x68\xd3\x92\x9c\x09\xd3\xb8\x67\x97\xac\x8e\x75\x20\x78\xe1\x5d\x7e\xfe\x7c\xdf\xe1\x9c\x5d\xdb\x21\x1d\x47\x94\xd0\x61\xb3\x47\x9f\x65\x0d\x12\x5a\x92\x90\x01\x00\xa4\xda\x99\x1e\x25\xe4\x6c\x1b\x95\x5a\xc5\x35\x67\xd3\xcf\xd8\x35\x7b\x1f\x6b\x34\xce\x0e\x07\x47\xb1\x76\x96\xf8\x5d\x9e\x65\xfe\xd0\x61\x90\x67\x5c\x40\x18\xd1\xb6\xa6\x93\x90\x6f\x59\x75\x2f\x9e\xf4\xe7\xe3\x17\x5b\x47\xc1\xa7\xf0\x70\x1b\x62\xb5\x39\x69\x0e\xab\x22\xff\xc1\xed\xe0\x02\x19\x47\x89\xff\x1b\xbf\x50\x81\x0c\x61\x8f\x13\x76\x9a\xe9\xda\x06\x1d\xb5\xbb\x16\xfd\xea\xdd\xf8\xd4\x6e\x7e\x6d\xcf\xe3\x2a\x19\x46\x63\x51\x6a\xbd\x64\x8b\x79\xe2\xa5\x52\xac\xac\x5e\xc4\xab\x11\x1f\xa0\x97\x4c\x5e\xdf\xbc\x50\x8a\x97\xff\x32\xbe\x29\x25\x66\xd2\x29\xde\x7a\xc3\xb1\xaf\x87\x74\xd4\xaa\x58\xe8\xeb\xad\xfa\xcb\xce\x33\x77\xf1\x9c\x16\xfc\x0e\x00\x00\xff\xff\x6c\xff\x51\x0c\xe7\x01\x00\x00") - -func runtimeSyntaxLedgerYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxLedgerYaml, - "runtime/syntax/ledger.yaml", - ) -} - -func runtimeSyntaxLedgerYaml() (*asset, error) { - bytes, err := runtimeSyntaxLedgerYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/ledger.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxLfeYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x90\xed\x6e\x82\x30\x14\x86\x7f\xcb\x55\x9c\x34\x26\x82\x4d\x99\x7f\xed\xd4\x65\xd9\x5d\x8c\x53\xb7\x02\x87\x49\x06\x85\x94\x92\xe9\xd2\x8b\x5f\x00\xdd\x97\xfe\x7a\xfb\xf1\x9c\x27\x6f\x4e\x51\x56\xe4\x4e\x2d\x49\xa8\x0a\x0a\x82\x9c\x1c\x65\x4e\x42\x00\x00\x30\xfc\x19\x5d\x93\x04\x56\x15\x34\xf7\x88\xf1\x90\x2c\x08\x6c\x5f\x51\x27\x47\x48\x40\x77\xaa\xd3\xa6\x8a\x53\xab\xb3\x77\x72\x9d\x04\x86\x18\x7a\xc4\x88\x9d\x81\xc9\xcf\x72\x2a\x7a\xe3\x73\x2a\x4a\x43\xa2\x3b\x19\xa7\x8f\xe7\xdb\x10\xb5\xce\x6c\x33\x1e\x9a\xbc\xaf\xc8\xd3\xb1\x6d\xac\xbb\x28\xb2\xc6\x74\x4e\x1b\x37\xca\x21\x79\x14\xcf\x5a\x7c\xaa\x73\xae\xc4\xfa\x45\x28\x8e\x08\xec\x6f\xa5\xa6\x25\xab\x5d\x63\xa7\x4a\x61\x82\x28\xf8\xf2\x6e\xb3\x53\x7e\xb3\xf5\xbb\x6d\xe4\x17\xff\xfd\xb1\xe9\xeb\x94\xa6\x81\x34\x59\x89\xf5\xa0\x4d\xaf\xa8\xce\xd9\xd2\xbc\x8d\x14\xb2\x10\x11\x31\xf6\xc9\x1e\x99\x8a\x96\xc3\xcb\x77\x8d\x96\xb2\x52\x57\x12\x58\xb2\xf0\xaf\xea\x46\x6d\x44\xa1\xf8\xb5\x7e\x9a\x7b\x3a\xe8\xa9\x09\x62\xfc\xf0\x03\xd5\x35\x8d\x8b\x08\xf7\x3e\x49\x64\xd7\xea\x8c\xa4\x52\xd1\x7d\xbc\xbc\x30\xa5\xc9\xc9\x38\x91\x1d\xb4\x8d\x3f\x0e\xa5\xa3\x09\x02\xf6\x8b\xe7\xf3\x1b\xb4\x04\x36\xe3\xc0\x3d\xf0\x19\x67\xc1\x57\x00\x00\x00\xff\xff\x83\x15\xa2\x2c\x1c\x02\x00\x00") - -func runtimeSyntaxLfeYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxLfeYaml, - "runtime/syntax/lfe.yaml", - ) -} - -func runtimeSyntaxLfeYaml() (*asset, error) { - bytes, err := runtimeSyntaxLfeYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/lfe.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxLilypondYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x57\x71\x4f\x1c\xb9\x0e\xff\x9f\x4f\xb1\x0f\xb5\x7a\xf0\xde\x03\xa9\x7d\x55\x55\xa1\xd3\x21\x16\x5a\x7a\x6a\xa1\xa8\xa0\xfe\x71\xcc\x36\xf2\x64\xbc\x33\x11\x99\x64\xea\x64\x80\xa5\xe9\x77\x3f\x39\xd9\x65\x33\xb3\x7b\xba\x95\x0c\xf1\xcf\x9e\xc4\xb1\x1d\x3b\x99\x2b\x8d\x7e\xd1\xe1\xd1\x44\x2b\xbd\xe8\xac\xa9\x76\x76\x2a\xf4\x28\xfd\xd1\xce\x64\x32\x99\xb0\xdc\x40\x8b\x47\x93\xdd\xa2\x38\xd4\x8b\x17\xa1\x28\x0e\xd5\xf2\xbf\xd6\x8b\x17\xbb\x3b\x3b\xd4\x6b\x74\x49\xfd\x60\x22\xad\x71\x1e\x8c\x3f\x34\x7d\x5b\x22\xc5\xef\xaa\xff\xee\x2e\xa5\xaa\x42\xe3\xd5\x5c\x2d\x05\xe5\x9e\xf3\x30\x9f\x07\xd7\x81\x54\xa6\x0e\x4e\xd5\x06\x7c\x4f\x18\xc8\xf6\x5e\x19\x0c\xc6\x7a\x74\xa1\x01\x53\x69\xa4\x20\x2d\x11\x4a\x8f\x55\x28\x11\x5a\x17\x80\x3a\xac\x6b\x65\x5d\xf8\x66\xb5\x07\x81\xa6\x26\xb8\x47\x0a\xdf\xac\x92\x18\xbe\x21\x79\x25\x41\x0b\xd0\xaa\x36\x99\x14\x18\x36\x20\xb4\xaa\xe3\x72\x9b\xa2\xe5\x04\x4b\xee\x3a\x5a\x79\xf3\x80\x70\xb7\x56\xbd\xe9\x3b\x8d\x3e\xe3\x49\x69\x2d\x5c\x07\xc6\x20\x65\xb0\x6a\x95\xa9\x85\x27\x30\x4e\x83\xb7\x11\x41\xf1\xbc\x55\xd1\x21\xcd\x2d\xb5\xb8\x21\xc8\xa6\x18\x6a\xe5\x22\x7c\xf4\x5b\xd6\x64\x34\xe3\xda\xce\xe6\x13\x40\x29\xbc\x42\x31\xb7\x5a\xdb\x87\x4c\x0f\x4a\x11\xe3\x21\xdc\xa2\x2d\xad\x1e\x4a\x38\x12\xa2\x41\xa8\xdc\x00\x4f\x8e\xba\x81\x32\xf9\xe8\x7a\xe1\x3c\xb6\x3c\x0d\x79\x51\xa1\x56\xad\xf2\xb9\x65\xd7\x2c\xcd\x38\x30\x4f\x20\x52\xaa\xfc\x1d\x3c\x0a\xde\xf5\x56\x0b\x13\xba\xde\x63\xe2\xa5\xd5\x1a\xa5\x67\xff\x0f\x35\xcf\xc9\xf6\x5d\x58\x9a\xbc\xf4\x5e\x49\x1c\xde\xb9\xa5\x52\x55\x99\x7a\x07\x46\x94\x40\xc2\xf9\xbe\xdc\x02\x0f\x91\x55\x42\x0e\x60\x39\x5c\x5f\xf7\x94\x1b\xca\x6c\x26\x04\xd7\x08\xc2\x0e\x21\x0b\xe0\x35\x76\x40\x10\xb7\xa1\x95\x41\x51\xb3\xf5\x99\x58\x92\xea\xbc\xa0\x3c\x96\x4b\x6c\xcc\x4b\xab\xfb\x36\x77\xa6\xb4\x84\xe1\x6b\xb3\xf0\x4d\xab\xe4\x86\x78\x25\x48\x8e\xfa\x8a\x2e\x9b\x31\x72\xec\x60\xe5\x94\xcd\xbf\x49\xc6\xfb\x3c\x4b\x97\x18\xc8\x3b\x63\x1f\x34\x56\x75\x26\xbb\xe2\x54\x9f\x93\x6d\x85\x41\x55\x37\xa5\xcd\xdc\x71\xa5\xbc\x6c\xb0\x12\x3e\x1e\xad\x21\x2c\xdc\x8f\x9e\x9d\x95\xa1\x60\x38\xcd\x2b\xd0\x99\x7f\x73\x74\xab\xea\x28\xbd\xa2\x28\xed\xf7\xaa\x21\x70\xec\x74\x37\x88\xd1\x15\x7a\xea\xa5\x54\x29\xf3\x57\xdc\xf2\x13\x24\x89\xc6\x6f\x44\xf0\x8a\x8f\x83\xb4\x6d\xc9\xe1\xcb\x51\x34\xbe\x41\xa7\x5c\x0e\x76\x48\x1b\x91\xf8\xd2\xfb\xae\xf7\xa2\x23\xdb\x21\xf9\x45\x26\xf0\x1e\xee\x61\xb3\x04\x7c\x31\x98\x4c\xba\xec\xb5\x4e\xa6\x5e\xf2\x09\x76\xe3\x7c\x8c\xe8\xda\x5f\x91\xe5\x8a\x3f\xd2\x18\x9d\xfc\x67\x2c\x65\xe4\x00\xbf\x84\x16\x8b\x22\x0e\x3f\x22\x54\xe1\x12\x1f\xc4\x5c\x99\x1a\x69\xb0\xf0\x45\xaf\xbd\x12\x2d\x82\xe3\x0c\xa0\x41\x72\x5d\xa8\x4a\x09\x69\x8d\x27\xab\xc5\xbc\x37\xd2\x73\x8e\xad\xad\xbc\x40\x4f\xd6\xd8\x16\x45\x0b\x94\xd5\xe4\x0b\x34\xae\x27\xd0\x5b\x2a\xfb\x4a\x94\x7c\xb1\xe2\x92\x8f\x2e\x06\x93\x7c\x5e\x90\x92\x2e\xfd\xcb\xd6\x4c\xfc\x5a\x6b\xb5\x42\x49\x20\xef\xf2\x46\xf0\x99\x13\x9c\x46\x8e\xf9\x0c\xca\x39\x7c\x12\xf7\xaa\xa4\x3c\x4e\x9f\x14\xde\x83\xd9\x62\x6f\x12\x24\x6b\xd3\x38\xd9\xfa\x09\x17\x99\x51\xcc\xad\x3f\x41\xec\x38\x9f\xef\x51\x78\x5b\xa3\x6f\xf2\x85\xfe\x30\xce\x53\xdf\x72\x76\xba\x87\x78\x80\xb6\x89\x86\x91\xff\xb8\xe8\x1a\xcc\xb2\xf0\x9c\x6c\x29\xba\x1f\x39\x80\xb5\x25\x05\xe6\x86\xdb\x5b\xac\x31\xca\x2e\x8d\xde\x2e\x4b\x9b\x38\x27\x30\xd5\xf3\x50\x6e\x49\xcb\x04\x8f\x58\xee\xfa\x63\x0c\x7a\x6f\xc7\x02\x6d\x4b\xd0\xe1\x5c\x2b\xe7\xc0\x54\x59\x35\xfe\x40\xe8\x4b\x0b\x54\x0d\xa1\x29\x43\x2e\x7c\x48\xb5\x3f\x06\x2e\x75\x83\xb5\x96\xb5\x3e\x76\xc0\x0c\x61\x4f\xaa\xa7\x1c\xda\x4c\xf2\x35\x34\x3e\xd1\x1f\x54\xdd\x13\x56\xa2\x04\xe7\x44\x67\x9d\xf2\x83\x32\x3a\x10\x8f\xd1\x29\x38\x17\xde\x3f\x7a\x34\x55\x1e\xe2\xf7\x9d\x72\xd8\x66\xd7\xa0\xb3\x85\x81\x96\x73\x79\x39\xc8\x12\x67\x85\x8c\x75\xc7\xf5\xf0\x8c\xfa\x36\xf6\x7e\xb7\x05\xcb\xe7\xa3\xbe\x4d\x71\xe7\x51\x0a\xed\x99\xed\x4b\x1d\x95\xb6\x16\xc5\x33\xeb\xdd\x80\xdb\xf0\xd1\x19\xde\x9b\x5e\xeb\x70\x86\x73\xe8\xb5\x8f\x0d\x77\x78\xac\x4e\x7b\xe7\xad\xcb\x79\x14\x52\xe3\x7c\x80\x24\xbb\x4e\x97\xe5\xc4\xf3\x79\xcd\x2c\x3f\xb5\x46\xf6\xc4\x95\x58\x34\xa0\xa8\x53\x99\x01\xa7\x9b\xfd\xed\x54\xf7\x8e\xaf\x34\x1b\x15\xf7\x74\xb8\x6c\x63\x89\x1b\x17\xb6\x56\xdb\x31\x3c\x3c\x65\x11\xe3\xa2\xe9\x78\xa8\x28\x39\x6f\x4a\x08\xbe\x89\xed\x67\x10\x90\x69\x4c\xcc\x51\x94\xa6\x68\xaa\x9c\x83\x36\xdb\xe0\x74\x70\x38\x22\xb7\xa5\x6f\x4f\x81\x36\x2e\x62\xd3\xfc\x82\x73\xf2\xa8\xdc\xf8\xea\x71\xb2\x79\xf8\x4e\x36\xae\x40\x27\x52\xc6\x7b\x7f\xde\x81\xe3\xc5\x63\xbf\x28\xca\xd5\xcb\xc0\x79\xf0\xc8\x25\xe8\x68\xb2\x7b\x7b\x20\xbe\xcf\x8e\x8b\xa2\x28\x6e\x0f\x4e\x0e\xfe\x84\x83\x27\x31\x7b\x7e\x42\x74\x84\x1d\x59\xb9\x7c\x3f\xec\xed\xd5\xca\x29\x17\x6a\x26\x74\x18\xff\x86\x3a\xcc\x23\x3a\x67\x8a\xe8\x9c\x29\x60\x44\x91\x29\xa2\xc8\x14\xaa\x88\x56\x4c\x11\xad\x98\x82\x8c\xa8\x64\x8a\xa8\x64\x0a\x65\x44\x4b\xa6\x88\x96\x4c\x01\x22\x0a\x4c\x11\x05\xa6\xfd\xdb\xff\xfd\x7b\xf6\x9f\xdb\xe3\x7f\xcd\x8e\xf7\x83\x0b\x14\xbe\x86\x1f\xfb\x7b\xaf\x5e\xbf\x0b\x6f\xdf\x84\xff\xbf\x0e\xaf\xde\x86\x77\xe1\x4d\x78\x1d\x5e\x05\xde\x6a\x49\x78\x8f\x71\xa4\xad\xa9\x21\x8e\x5a\x78\x54\x2d\xec\x1f\xef\xdd\x7e\x2f\xe2\xef\x61\x16\x44\x28\x8a\x72\xff\xd9\x6d\x1d\x4a\x05\x9a\x9d\xb6\xb7\xff\xf3\xd7\x6f\xbf\xcf\x42\x51\xdc\x86\xa2\x98\xed\x8e\x1f\x64\xce\x73\x1d\x4a\xef\x34\xfe\xc5\x3b\x3a\xbb\x71\x77\xf7\x19\x43\x53\x8d\x10\x77\xa7\xba\xe8\xeb\xa2\x38\x5c\xa3\xd9\x93\x6f\xf5\xcb\x57\x4a\x46\x9d\x36\x40\xc3\x4f\x59\xa7\x8d\x41\xde\xb0\xe2\x65\x51\xfc\x1c\xdb\xf1\xb2\x28\x7e\x8d\xd7\x9c\xdc\xce\xfe\x71\xaa\xf1\x3c\x2f\xb6\x4d\xb2\xf3\x57\x00\x00\x00\xff\xff\x94\x50\x40\x16\xfb\x0e\x00\x00") - -func runtimeSyntaxLilypondYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxLilypondYaml, - "runtime/syntax/lilypond.yaml", - ) -} - -func runtimeSyntaxLilypondYaml() (*asset, error) { - bytes, err := runtimeSyntaxLilypondYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/lilypond.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxLispYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x90\x5d\x8b\xe3\x20\x14\x86\xaf\x9b\x5f\x21\x52\x68\x52\x31\xdb\xdb\xba\xfd\x60\xd9\xbf\xb0\x57\x9b\x63\x07\x63\x4f\xa7\x82\x5a\x89\x96\xa1\xc5\x1f\x3f\x24\xe9\x17\xcc\xcc\x95\xe0\xfb\x3c\xef\xd1\x73\x30\x16\xd3\x25\xa0\x20\xd6\xc4\x50\x14\x7b\x4c\xa8\x93\x20\x05\x21\x84\xf4\xa1\x57\x0e\x05\xa1\x25\x3a\xa5\x63\xbe\x1a\x8b\xd5\x34\x03\xd4\x25\xda\x6c\xcd\x36\x86\x1c\xb5\xcb\x31\x56\x53\x5a\x14\xdd\xd9\x62\x14\x83\xcb\xc9\x1e\x0f\xea\x6c\x93\x20\x14\xa0\x6c\x14\xbf\x72\xc9\xe8\x2d\x8b\x17\xd7\x9e\xec\x18\x95\x0d\x00\x67\xf3\x5f\xab\x8d\xcc\xab\x75\xde\xac\xab\x3c\xbb\x73\xfa\xe4\x63\x52\x3e\xd5\xfe\xec\x5a\xec\x06\xa1\x6d\x16\x7c\x29\x59\xbb\x79\x94\x05\xd4\x46\x8d\x6d\xad\x37\x16\xa0\xbd\x47\xa1\xc3\xd0\x9d\xf4\xcd\x4b\xff\xe4\xd3\x7a\x54\xc7\xd4\x19\xff\x3e\x20\x40\x4b\x00\x80\x3a\x37\x3b\xa0\xb2\x9a\xf7\x37\x5f\xf9\x71\xdc\xdf\xa3\xea\xdf\x33\x6b\xfe\xf0\xff\x8a\x5f\xe5\xed\x5c\xf0\xe5\xdb\xcb\x47\x7f\xb0\x86\x29\xdb\x27\xe4\x1c\xfa\x7e\x53\xe5\x2e\x37\x8d\x88\x41\x69\x14\x52\x56\xbf\xeb\xf9\x9d\x31\x7e\x8f\x3e\x71\x7d\x54\x5d\xfd\x71\x34\x09\x47\x88\xd0\x17\x9e\x4d\xbf\xa1\x05\xa1\x13\x46\x58\x26\x6c\xc2\x68\xf1\x19\x00\x00\xff\xff\x43\x3b\x48\x95\xf0\x01\x00\x00") - -func runtimeSyntaxLispYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxLispYaml, - "runtime/syntax/lisp.yaml", - ) -} - -func runtimeSyntaxLispYaml() (*asset, error) { - bytes, err := runtimeSyntaxLispYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/lisp.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxLuaYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x56\x6f\x6f\x14\x37\x13\x7f\x9f\x4f\xe1\xe7\x20\x22\x01\x2e\xf0\xc0\x8b\xb6\x27\x42\x55\xd1\x50\xf1\x02\xa2\xb6\x08\x55\xca\x5e\x91\x77\x77\x76\xd7\x8d\xd7\x76\xc6\xe3\xdc\xa5\x0c\xfd\xec\xd5\x78\xef\x92\x4b\xca\xd2\x86\x20\x38\x25\xfe\x33\xb6\x67\x7e\x33\x9e\xf9\x79\x1b\x63\x81\xce\x02\xcc\x94\x4d\x7a\x6b\xab\x06\x82\x8a\x66\x5b\x4a\x29\x25\x4b\x4e\xf7\x30\x53\x93\xa2\xd8\xb3\x49\xdf\x9e\x6c\x6d\x61\xb2\x10\x87\xf5\xa9\x8a\xa4\x09\x7a\x70\x94\xb7\x94\x3b\xb5\x67\x70\x35\x2f\x3a\x63\x81\x11\x02\x68\xe2\xe4\xc8\x58\x36\x0d\x83\x8d\x60\x1a\xa6\x0e\x5c\x1e\x73\xe3\x91\x8d\xe3\x26\xb9\x8a\x8c\x77\x6c\x7d\xa5\x2d\x23\x50\x42\xb7\x5b\x14\xe5\x64\xc4\x8a\xf3\xc4\xda\xd5\xec\xf1\x63\xbb\x6a\x28\x53\xcb\x91\xd0\xb8\x96\x7b\x4d\x1d\x93\x2e\x2d\xb0\xf1\x5c\x79\xf4\x89\x8c\x03\xf6\x91\x13\x35\xdf\x72\x69\xe8\xf1\x23\xd1\x56\x14\x7b\x63\x0a\xdf\x1e\xbc\x7a\xc3\x6f\x7f\xe2\xb7\x6f\x0e\x7e\xf9\xf5\xc5\xe1\x2b\xd6\x31\x02\x12\x57\xde\x5a\xa8\xa8\xd5\x58\xea\x16\xb8\xf6\x12\x37\x06\x44\x8f\xdc\x02\x35\xe0\x4e\xa5\xef\x81\xf4\x0a\x41\xd0\x06\x23\x5b\xaf\xeb\xdc\xe4\xfd\xbd\xaf\x93\x05\x76\xb0\x24\x1e\xd6\x43\xa5\xad\xe5\x80\xc6\x11\xa3\x5e\xc0\x49\x92\xe8\xe8\x45\x0b\x79\x6e\xc1\x49\x17\x65\x06\x27\xc9\x20\x70\x04\x01\xc2\x71\x65\x34\x6e\x1a\x25\xef\x52\x5f\x02\x32\xf9\x55\x4c\xe4\xd6\x39\xb9\xa0\xab\x63\x5e\x66\x63\xbb\x45\x11\xef\x16\xc5\xce\x3a\x02\xa6\x06\x47\xa6\x31\x80\x33\x35\x31\xbe\x28\xf6\x24\x0e\x95\xf5\x72\x79\x36\xc5\x8e\x8d\x0b\x89\xd8\x1a\x07\x91\x7d\x00\xc7\x3e\x91\x48\x42\x9e\x20\xe8\x9a\xa9\x0f\xd9\xc1\x6c\x6e\x81\x86\x60\xf3\xd6\x2e\x99\x90\x5b\x5a\x19\xd1\x65\x64\x5d\xf9\xc8\x3a\x1a\xc7\x9a\xb4\x7b\x94\x5b\xae\xc0\x58\xae\x7c\xec\xa4\xe1\x1a\x5a\x86\x65\xe0\xc6\x7a\x8f\xdc\xf4\xbe\xe6\x06\x45\xd0\xa5\x16\xd8\xd6\x32\xb4\xbe\xfd\xff\x43\x69\xb9\xd7\x4b\xf9\x37\x8e\xa0\x05\xe4\xde\x38\xf9\x3f\x9f\xfa\xba\xe1\x60\x38\xf8\x05\xa3\xae\x19\xb5\xab\x7d\xbf\xea\x22\x40\xcd\xd1\xb8\x8e\xe3\x09\x12\x0b\x12\xf2\xeb\x93\x43\x24\x2d\x8d\x3a\xe6\xe3\x45\xec\xaa\x63\xae\x35\x01\xd7\xa6\x69\xc8\xf4\xc0\xb0\x84\x2a\x91\xf4\x86\x24\x51\xe4\xea\x10\x7a\x7f\x2a\x25\x24\xf5\x27\x17\x99\x6b\x03\x38\x1f\xa0\x3e\x88\x78\xd4\x9a\xdc\xa8\x6e\x61\x6d\xd2\xbb\xc6\xb4\x5c\x05\x29\x01\x49\x37\x18\xb2\xce\x9a\x92\xb3\x2c\x20\xe4\x54\x8c\x00\x92\x70\x11\x34\x56\x1d\x60\x5c\x8d\x64\xcf\xa8\xa9\x21\x95\x56\x96\xca\x33\x02\xae\x3a\x8d\x5c\xa7\x3e\x70\x63\x5c\x2d\x35\xde\x6b\xe2\xb6\xd7\x54\x75\xdc\xc6\x54\xb2\x24\xae\xf5\x0b\x89\x78\x16\xe6\x04\x94\x26\x9a\x3f\x33\x6b\x30\xc2\x29\x60\x04\x96\xdd\xab\x04\x4d\x21\x00\x8e\xc2\xc8\x29\x7e\xe1\x6f\xa5\x89\x8d\xcb\xc5\xd9\xeb\xa5\xe3\x1c\xcb\xac\x66\x15\xd7\xe8\x91\x56\x9a\x47\x75\x0a\x2f\xac\x55\x8a\x4f\xd2\x04\x4d\x04\xe8\xb8\xf2\x35\xc4\xdc\x06\x49\x82\xec\x92\x6f\x9a\x08\xe3\x29\x70\xce\x39\x6b\x9d\x08\x92\x05\x26\x9e\x19\xb0\x75\x2e\x51\x84\x98\x7a\x60\x4c\xce\x49\x7d\x0a\xff\xa4\xc8\x0b\xd4\x81\xf3\xa6\x51\xdd\x99\xea\x56\x7a\x07\xda\xdb\xe0\x9d\xce\xfb\x63\xe9\x8d\x6b\xbc\xf4\x03\xcb\x5e\x22\xa4\x16\x08\xa1\x35\x91\xf0\x4c\xc6\x29\x9c\x6a\x9b\xb2\x38\x45\xc0\x61\xb2\x41\x2a\x59\xe3\x3a\x27\x2f\xb3\x4c\xbc\x38\x1d\x37\x4f\x13\xea\x0a\xca\xe1\x22\xb3\xc4\xd4\xeb\xd1\x1f\xde\xb8\x51\xcf\x32\x2f\xaf\x29\x01\x63\x67\x1a\xe2\x52\xb8\xbf\x94\x47\xa0\xf4\xc8\x25\x41\x24\x2e\x97\x1e\x19\x96\x62\x46\xe8\x30\x58\x5d\x01\x5b\xf4\x42\xe1\x6c\x87\x73\xb8\x9a\x0e\x6a\x46\x4d\x16\xc5\xec\x2a\xcb\x0d\xfc\x96\xd9\x2c\x02\x64\xdf\x4f\xcb\xd4\x0c\x6c\xc6\x5f\x2f\xed\x05\x67\x04\xdb\xb0\xc6\x76\x73\x53\xe5\x5d\x24\x7d\xfe\x70\x35\x5a\x5e\x5b\x67\x2c\x13\x26\x18\x7b\x33\x77\x86\x07\xbc\x19\x9e\xee\xe1\x41\x31\xae\xb2\xa9\x86\x5d\xde\x3e\xe1\xed\xff\xf1\xf6\xcf\xbc\x8d\xbc\xbd\xfc\x90\xad\xbd\xe1\x79\x59\x99\x3c\x7a\x38\xfd\x6e\x7e\xef\x92\xa9\xb3\xbe\xf4\x76\xaf\x44\x5d\x1d\x03\xc5\x99\x9a\x1c\xed\xec\xbe\x7b\x5f\x14\x47\x45\x31\x9f\x5f\xde\x35\xa0\xb9\xcb\x0f\x1e\xf0\x03\xde\xe6\xa2\xb8\xc7\x53\x2e\x8a\xdf\xf9\x29\x3f\xdd\xe7\x27\xfc\x64\x9f\xff\xda\xe7\x7d\x3e\x2a\x8a\xbd\xf9\xbb\x47\xf7\x1f\xbf\xe7\x5b\xbb\x93\xad\xab\x88\x06\x72\x1a\xbe\x55\xe4\x17\x49\x63\x8e\xc9\x64\x72\x2e\x03\x57\x5f\x91\xc4\x63\x13\xb2\x17\xe7\x9f\x02\xf2\xdb\xf8\xec\x59\xff\x36\x2d\x05\xa8\x8c\xb6\xcf\x3a\x8d\x17\x47\xff\x2b\x9c\x3b\x57\xd1\xdc\xf9\x8a\x60\xf2\x7d\x1c\xfd\x23\x3e\xc5\xbc\x28\xe6\x37\x03\x70\x4b\xc5\x14\x82\x47\x52\x8d\xc1\x48\xaa\x81\x85\xb2\xe0\x5a\xea\xa2\xf2\x8d\x9a\x58\xef\x5a\xb5\x4e\x8f\x89\x82\x65\xb0\xa6\x32\x64\xcf\xb6\x6e\x9d\x8b\x95\x6c\x02\x54\xd4\x69\x27\x0d\xa9\x85\xb1\x56\xb5\xe6\x14\x54\xce\x72\x15\x7c\x34\x64\x4e\x21\x5e\xc7\xe3\xfd\x0f\xbb\xbc\x7f\x63\x9f\xaf\x01\x61\x0c\xc3\x97\x05\x31\x8a\xe2\x0b\xc3\xd8\xbf\x37\x0a\x44\x96\x3e\x0b\x94\xd5\xda\x4a\x7e\xf4\x70\xfa\xcd\xfc\xa2\x61\x91\x2d\x85\xc6\xf4\xb4\xf9\x61\xfa\x7c\xbe\x31\xcc\x6b\x47\xba\x84\xc6\x61\x9c\xf3\x8e\x4c\xab\x2c\x7c\x36\xcd\xdd\xcb\x75\x37\xc8\x76\x37\xdd\xef\x85\x6e\xf7\x4a\xf9\x0e\xfc\x90\xf3\xd3\xfc\xf7\xc9\x35\x48\xbe\xf6\xc2\x9e\xaf\x0f\x7f\x3c\xe4\x57\x87\xaf\x0f\xf8\xf9\x8b\xdf\x5e\x1e\xec\xce\xbe\xbf\x54\x81\x97\x6a\xed\xbe\x8a\xba\x07\xa5\xa3\x5a\x18\xea\x54\x9f\x2c\x19\x79\xf1\xd4\x70\x45\xf1\xba\xd8\x3f\xbd\x9a\x3e\x8a\xfe\x9a\x20\x6e\x50\x4f\x9f\x15\xc6\x4d\x2a\xea\xf3\x02\xb9\x61\x4d\xfd\x4b\x6a\x51\x67\xa2\xea\x74\x54\xe4\x55\xeb\x95\x6e\x08\x50\x65\x54\x6b\x8c\xca\x5f\x15\xd4\x1e\xa2\x72\x9e\xd4\xc2\xe3\xf1\x15\x8f\x66\x6a\xc4\x99\xab\x1e\xdc\xbe\x01\xee\xbf\x03\x00\x00\xff\xff\xd6\x9d\x54\x28\xfd\x10\x00\x00") - -func runtimeSyntaxLuaYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxLuaYaml, - "runtime/syntax/lua.yaml", - ) -} - -func runtimeSyntaxLuaYaml() (*asset, error) { - bytes, err := runtimeSyntaxLuaYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/lua.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxMailYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x90\xcf\x4b\xc3\x30\x14\xc7\xef\xfd\x2b\x42\xd9\x61\x3f\x58\xbd\x07\xd9\x26\x82\x28\x78\x10\xa6\xa7\xbe\x0e\xb2\xe4\xcd\x45\x92\xb4\x24\xaf\x82\xd0\x3f\x5e\xd2\xae\x71\x6e\x1e\xcc\xa1\xf4\xfd\xfa\xbe\xcf\xfb\x1e\xb4\x41\xfa\x6a\x90\x33\x2b\xb4\xc9\x32\x85\x84\x92\x78\xc6\x18\x63\xb1\xe6\x84\x45\xce\xf2\x69\x31\xbf\xb1\x2d\xd1\xb2\x98\x77\x00\x05\x5a\x33\x9b\xe4\x7d\xd3\x11\x85\x42\xcf\x59\xbe\x7b\xf0\xb5\x65\xc5\x9c\x01\xa8\x05\x4f\x9f\x3e\xcc\xb3\xcc\xb7\x06\xc3\xa0\xbb\x64\xc3\xc6\x34\x92\x9f\xd2\x5a\xa1\x23\x7d\xd0\x83\x5e\xb9\x2b\x79\x68\x84\x44\x5e\x55\x0b\x3e\xf6\x34\x1e\x1b\x5f\xcb\xd8\xf0\xac\x03\x2d\xa7\x4f\xaa\xbb\xf3\xf2\xa8\x3f\xb1\xdb\xb6\xfb\x20\xbd\xde\x63\xf7\xe6\x42\xfa\x7f\xa9\x03\x75\x8f\x68\x9a\x59\x12\x91\xb5\x0b\x24\x1c\x45\x95\xe9\x6b\xdd\x45\x8e\xeb\x6a\x11\xc8\x6b\xf7\x3e\x40\xc7\x17\x48\xf8\x7e\x66\xdb\xee\x3f\xa2\x4d\x23\x7a\x7c\xe8\x14\x67\xf9\xe4\x27\x31\x5c\xcc\x52\x7c\x29\xde\xa0\xd4\xc2\xdc\x1f\x45\xbc\x16\x00\xa0\x18\x01\x02\x09\x42\x8b\x3d\xdf\xed\xba\xdc\x6d\xce\x8c\xd8\xfc\xb2\x65\xb5\x1e\x67\x14\x1e\x44\x6b\xe8\x0f\x58\x00\x07\xe0\x2e\x41\xcf\xd1\x4f\xa4\x65\x95\x0c\xb0\xfd\xf6\x6b\xad\xd5\x7f\x2e\x2e\xab\xec\x3b\x00\x00\xff\xff\xb9\x78\x17\xdc\x57\x02\x00\x00") - -func runtimeSyntaxMailYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxMailYaml, - "runtime/syntax/mail.yaml", - ) -} - -func runtimeSyntaxMailYaml() (*asset, error) { - bytes, err := runtimeSyntaxMailYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/mail.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxMakefileYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x53\xd1\x6e\xdb\x3a\x0c\x7d\xbe\xfe\x0a\x5f\xd7\x6d\xed\xfa\x36\xf7\xdd\x68\x96\x01\x1b\xf6\xb6\x2f\x30\x1d\x40\xb1\xa8\x46\xab\x2c\x79\x94\x92\xb6\x18\xfb\xef\x83\x94\xac\x6d\xb2\x76\xc8\xcb\x04\xc3\xa6\x68\x9d\xa3\xa3\x43\x4a\x69\x83\xe1\x71\xc2\x36\x1f\xc5\x1d\xc6\x59\x96\x49\x0c\x38\x84\x36\xcb\xf3\x3c\x8f\x19\x2b\x46\x6c\xf3\xa2\xea\xbe\x8e\xfd\x7e\x11\x03\xcc\x46\xb1\xb8\xab\xcb\x22\x2d\x5b\xa3\x90\x48\x6d\x5e\x2c\xcf\xfe\x9d\x5d\xfd\x5f\xa1\xdd\xe6\x4d\xbd\xe8\x56\xb7\xfd\x22\x12\x57\x39\x97\x75\x91\x65\xb4\x31\xe8\x77\xcc\xd7\xf9\x44\x38\x91\x1b\xda\xbc\x00\xb8\xa9\xb4\xc2\xef\xac\x95\x44\xc5\x5a\xd9\x14\xdb\x38\x41\xe3\x91\xd1\x4a\xad\x6a\x80\x0f\xc5\x1e\xeb\x83\x08\x38\xa2\x0d\x71\xcf\x0a\x1f\x26\x47\x81\xb5\x1d\xcc\x46\x22\xbb\x2d\x12\x69\x89\x07\x80\xc7\x71\xe5\xcc\xcc\x4d\x48\x22\xb8\x24\xb5\x5b\xb6\xf3\x7f\xfa\xa6\x7d\x7f\x49\xd5\xcd\xff\x3b\xef\x19\xa0\x99\x33\xc0\x62\xce\xed\x9c\x2f\x2e\x18\x20\x3e\xf5\x5b\x5a\x00\x4a\x80\xaa\x12\x2b\x3f\x89\xb0\x66\x21\xe5\x44\xa8\xf4\x43\x8c\xfc\x46\xa5\xc8\x4a\x5e\x09\x9f\x6c\xe5\x41\x18\xc3\x52\x53\xdd\x75\xad\x9f\xc4\x80\x6d\xdf\xff\x81\x17\x89\x1c\x31\x6e\x85\x61\xa5\x4d\x40\xda\x7f\xae\xdd\x26\xb0\xd2\x56\xfa\x40\xda\xde\xb2\xd2\xe4\xc3\xbd\x23\x79\x22\xaf\x32\x62\xeb\x88\x95\x23\x14\xc3\x9a\xb5\x62\x6d\x95\xe3\x6f\x4e\x5b\x36\x62\x47\xc5\xd6\x05\xa9\x89\xdd\xa9\x62\x1d\xe9\x5b\x6d\x79\x12\xc1\x6f\x56\x3e\x30\xa1\x30\xc9\x15\xbf\x46\x63\xd8\xc7\x92\x45\xbd\x13\xef\x9c\x39\x91\x76\x2b\xcc\x06\xf9\x5e\x90\x8d\x27\xbd\xd7\x46\x0e\x82\x24\x27\x89\xf1\x65\xb4\x0f\x29\xf0\x6f\x11\x6a\x89\x36\x68\xa5\x77\xdd\x3a\x7b\xa9\xfe\xc1\x8f\xae\xaa\xcb\x67\xc8\xe0\xac\x0f\xc2\x86\xd9\xce\xdc\x5d\xfb\xc6\xe1\x83\xa0\x24\xac\x28\x9e\x73\x68\xe5\x51\xc6\xdf\xe9\x29\xa9\x07\x98\xbd\x64\x5f\xdd\x84\x5f\xe3\xf5\x4e\x13\x0e\x5a\x98\x4f\x6b\x41\x87\xd0\x13\xd4\x5c\x1e\x8b\xb9\xfc\x6b\x5a\x0e\x3c\x03\x28\x9b\x0a\xe0\x47\xb7\x7c\xca\xfb\x06\xe0\x89\x01\xaa\x6e\x59\xa7\x49\x5d\xbf\x87\xe9\x3e\x2e\x6f\xae\x16\xe7\xdc\xc4\x7b\x16\x0b\xbc\x4f\x34\xd7\x7d\xf7\xf9\x4b\x0f\xf0\x2e\x12\xa0\xe4\x24\x67\xf1\xe2\xcd\x98\x7a\xe5\x37\x4f\xce\x8e\x3d\x29\x8f\x4f\x9f\x77\x7d\x96\xfd\x0c\x00\x00\xff\xff\x85\xaa\x15\xc9\x0e\x05\x00\x00") - -func runtimeSyntaxMakefileYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxMakefileYaml, - "runtime/syntax/makefile.yaml", - ) -} - -func runtimeSyntaxMakefileYaml() (*asset, error) { - bytes, err := runtimeSyntaxMakefileYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/makefile.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxManYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x64\xcc\x3f\x6b\x84\x30\x18\x80\xf1\x3d\x9f\xe2\x25\x38\x34\x05\x85\x8e\xcd\x22\x88\x85\xba\x85\xe8\x66\x1c\xb4\xbe\xfe\x81\x68\x4b\x1a\xf1\x84\xf7\xc3\x1f\x77\x7a\x83\x38\x3f\x3f\x9e\x6e\xb4\xe8\xb7\x3f\x94\x30\xd5\x33\x63\x2d\x7a\xfc\xf1\x12\x18\x00\xc0\xa3\xcd\xf5\x84\x12\xb8\x31\x51\xf9\x11\x7e\x56\xb7\x38\xe0\x8c\xb9\xc5\xe2\xbf\x7c\x9a\x10\x7a\x87\x38\xef\xe4\x2d\xa7\x42\x7c\x47\xef\x01\x3f\x5a\xe3\xc6\x7e\xf0\x17\x41\xc6\x44\x85\x3a\x23\x87\xed\x41\x12\x1d\x53\x56\x2a\x5d\xc5\xe2\xb2\x6a\xec\x82\x17\x46\x4a\x89\x33\x5b\x87\xd1\xef\xce\x98\xae\x4c\x32\xa5\xab\x17\xd8\xd0\xda\xdf\xf5\x78\x34\x8e\xd2\x9c\x74\x4e\xfa\x8b\x54\x2a\x38\xbb\x07\x00\x00\xff\xff\x92\x65\x68\x09\x0f\x01\x00\x00") - -func runtimeSyntaxManYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxManYaml, - "runtime/syntax/man.yaml", - ) -} - -func runtimeSyntaxManYaml() (*asset, error) { - bytes, err := runtimeSyntaxManYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/man.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxMarkdownYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\x4f\x6f\x9c\x30\x10\xc5\xef\x7c\x8a\x29\xd9\x83\x31\x65\xd3\xaa\x52\xa5\x22\x6d\x7a\xa8\xaa\x9e\x7a\x69\x73\xf3\x18\x96\x80\xb3\x58\x0b\x86\xda\x46\xfd\x13\x67\x3f\x7b\x65\x60\x23\xd8\x44\x55\x0f\xbb\x88\x99\x79\xbf\x79\x3c\xf0\xbd\x6c\x84\xfd\xdd\x8b\x14\xda\x42\x1f\xab\xee\xa7\x0a\x82\x4a\x58\x51\xda\x34\x00\x00\xf0\x7d\x55\xb4\x22\x85\x10\x71\x4b\xda\xca\xb5\xc7\xf1\xa7\xdc\x59\x10\x6d\xc2\x20\xd0\x43\x23\xcc\x24\xb9\x82\xdb\xe2\xae\x11\x06\xc8\x17\x69\xeb\xe1\x0e\xc4\x2f\x2b\x94\x91\x9d\x8a\xc6\x7e\x02\xd3\xc2\x70\x4b\x19\xa4\x1c\xd1\xf9\xcb\x96\x86\xc1\xd8\xf6\x80\x1f\x43\x67\x85\x99\xa7\x8d\x2d\xac\x68\x85\xb2\x29\x40\x98\xdd\xac\x06\x3f\xb7\x7d\x5d\x18\x69\xd6\x60\x92\x39\xc6\x52\xd3\x17\xa5\x48\x39\x8f\x48\xce\x32\xe0\x2c\xcb\x39\xcd\x1d\x22\x9d\xee\x28\xa7\x88\x34\x5a\xc0\xbe\x5b\xdd\xa9\x03\x88\xff\x63\x2e\xa0\x23\xf5\x02\x7c\xc1\x36\x56\xcb\xa3\x48\x6c\xad\xbb\xe1\x50\xff\x13\x7d\x3a\x4d\x9c\x13\xa7\xa7\xd3\x02\x51\x77\x5a\xfe\xe9\x94\x2d\x1a\x18\xd3\x3e\xc7\xd3\x8b\x52\x16\x4d\x0a\x61\x46\x92\x24\x89\xdd\x6e\xb7\x8b\x5d\x9e\xe7\xf1\xec\x0a\x91\xc6\x11\xa2\xa1\x9b\x25\x4c\x14\x55\x23\xd5\x73\x0a\x84\xd9\xd5\xc3\xdb\xd7\xef\x1f\x57\x39\x37\xd2\xd8\xf3\xa8\xac\x84\xb2\xf2\x5e\x0a\x9d\x82\x1f\x5f\x78\xa7\xcc\x2f\x4b\x38\xb8\x75\xf5\x4d\xf2\x81\xc7\x88\x5b\x58\x20\x5b\x69\xca\x99\xd8\x6b\xd1\xeb\xae\x1c\x71\x04\x91\x10\xf6\xa9\xfc\xa6\xb9\x63\xb7\x96\xb3\xaf\x2d\x8f\x10\x23\x87\xb8\x7d\x78\xf7\xe8\x2e\xc2\x42\x4c\x10\x13\xb2\x59\x15\xa3\x95\x73\x75\x3c\x3b\x2f\x3b\x65\x6c\xe1\x3f\xa4\x10\x91\xb1\x8c\x7b\x53\x3c\x7c\xb1\x4b\x58\xc6\x19\x77\xf3\x1c\x45\xe4\x91\xff\x43\x24\x2c\x8b\xbc\x6e\xb9\x44\xb6\xc5\xe1\x29\xca\x41\x55\x42\xfb\x6c\xab\x14\xc2\x57\x13\x80\x8d\x04\xb2\x50\xbb\x85\x83\x25\x6a\xd0\xcd\x8b\xa0\xda\xda\xde\x7c\x4c\xaf\xaf\x59\x06\xd1\x0d\x8f\x67\xc9\xea\xfd\xef\xf7\xfb\xcd\xb3\xfa\x4c\x06\x7f\x8e\xb4\x7f\xb8\x7d\xf8\x54\x12\xaa\x5a\x17\xa6\x63\x0c\x8c\x07\x7f\x03\x00\x00\xff\xff\x34\x33\xd2\x49\x19\x04\x00\x00") - -func runtimeSyntaxMarkdownYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxMarkdownYaml, - "runtime/syntax/markdown.yaml", - ) -} - -func runtimeSyntaxMarkdownYaml() (*asset, error) { - bytes, err := runtimeSyntaxMarkdownYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/markdown.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxMicroYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x93\x31\x6f\xdb\x30\x10\x85\x77\xfd\x0a\x42\xc9\x20\xc1\x90\x91\x8e\x15\x10\x18\x41\x9b\x00\x1d\xda\x0c\xcd\x50\xa0\xcc\x70\xa2\x4e\x32\x61\x8a\x14\x8e\xa7\xc4\x46\xd9\xff\x5e\x50\x72\x63\xab\x6e\x6c\x6d\x3e\x7e\x8f\xf7\xee\xd1\xd7\x68\x83\xbc\xeb\xb1\x14\x9d\x56\xe4\x92\xa4\x46\x46\xc5\x65\x22\x84\x10\xf1\xd0\x42\x87\xa5\x48\xa5\x5c\x66\x23\x91\x5f\xa7\x49\x42\x83\x41\x3f\x31\x85\xf0\x0c\x8c\x1d\x5a\x1e\xb1\x2a\xf3\x3b\xcb\xb0\x0d\xca\x19\x47\x59\x61\xb4\xdd\xe4\xab\x5c\xca\x2a\x7d\x8f\x67\x20\xbe\x0d\x68\xeb\xdb\x03\x76\x25\xbe\xeb\xae\x37\x28\x9c\xc5\x78\x07\x92\xdf\xcb\x75\x8d\x96\x75\xa3\x91\xf6\xfa\x1a\x1b\x18\x0c\x07\x3b\x74\x15\x52\x78\xbb\x3e\x0c\xb6\x46\x8a\xda\x3a\x20\x91\xa3\xc0\xae\x76\xe3\xf9\xe0\x63\x39\x68\x1b\xef\x2a\xd4\x1a\x28\xa8\x81\xbc\x23\x29\xc7\x66\x93\x79\x29\x0b\xe5\xcc\xd0\xd9\xa0\x5b\xeb\x08\x43\xad\x5f\x74\x8d\x14\x18\xaa\x0a\x68\x66\x16\x7b\x20\x60\x3c\x72\xe7\x05\x3b\xb1\x41\xec\x45\xaa\x5c\x1c\x65\x9b\x0a\xc2\x16\xb7\x42\x19\x04\xfb\xde\x34\xbe\x47\xa5\xc1\x64\x9f\xd6\x40\xf3\xdc\x4e\xd0\x4c\x0d\x44\x68\x59\xca\x22\x5f\x45\xdb\x52\x16\x53\x08\x67\x65\xed\xc0\x8c\x71\xb8\x4c\xdb\xc6\xed\xa3\x79\x05\xb2\xda\xb6\xf9\xaf\x0f\xbf\xcf\x8a\x95\xeb\x62\xb6\x99\x94\xcb\x8a\x74\xbb\xe6\x0b\x1e\xfd\xae\xab\x9c\x89\x78\x56\x11\xa8\x0d\xb2\x0f\xae\x47\x02\x8e\xef\x01\x6d\x7e\x41\x7f\x28\x8c\x77\x28\x03\xde\x87\x0e\x14\xb9\xf0\x02\x74\x49\xad\x9c\xf5\x0c\x93\xdd\xac\x72\x7b\x23\x4c\x03\x86\x06\x8c\xc7\x71\xdc\xd5\xdb\x3f\x67\x8a\x3e\x26\x1f\x3c\x93\xb6\x6d\xc4\x07\x32\xf9\x6a\x02\xcf\xf6\xea\x09\x7b\x72\x2a\x4a\xfc\x1a\x2b\xb0\xed\x05\x41\x5c\xbb\x48\x6f\x70\xf7\xea\xa8\x9e\xd3\x7f\x9d\x2f\x27\x6f\x7b\x49\x58\x87\xbb\x70\xb3\xcd\x17\x3f\x6f\x8a\x8f\xcf\x8b\xf1\x77\xbe\xb8\x24\xbb\xd9\x46\x5c\x40\xd1\x88\xbb\xe2\xe1\x79\xce\x8f\xcf\x39\xad\x72\xfc\xc6\x65\x2c\x45\x7a\x95\xbe\x95\xd0\xd6\xa5\x48\xaf\x0f\x85\xa3\xed\x9f\xbe\x42\xc4\xcd\x2a\x45\x9a\x3d\x7c\xf9\xf1\xf5\x3e\x3c\x3d\x7e\x7e\x0c\xdf\x1e\x9f\xee\xf3\x72\x75\xe2\x6c\x4a\xf6\xb4\xa3\x4c\xff\x6d\x79\x5c\xf1\x1b\xdd\x8f\xd3\x48\xb9\x3c\xe3\x64\xde\xe9\xf0\x9e\x73\xe9\xff\x72\xba\x1a\x33\xba\x2b\x1e\x62\x4e\xcf\x8b\x34\xf9\x13\x00\x00\xff\xff\x39\xf1\xae\x51\x1a\x05\x00\x00") - -func runtimeSyntaxMicroYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxMicroYaml, - "runtime/syntax/micro.yaml", - ) -} - -func runtimeSyntaxMicroYaml() (*asset, error) { - bytes, err := runtimeSyntaxMicroYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/micro.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxMpdconfYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x8f\x41\x8e\xdc\x20\x10\x45\xd7\xe3\x53\x20\x32\x52\x1b\x5b\xe3\x03\xb0\xc9\x41\x5c\xb6\x85\xa1\xc6\x8d\x62\x03\x82\x42\x51\x6b\x2a\x77\x8f\xdc\x49\x27\x1d\x29\xb3\x04\xde\x7f\xff\xf3\xee\x77\xa4\x5b\x42\x2d\x8e\xe4\x9a\xc6\x21\xa1\x25\x2d\x1a\x21\x84\x38\xdf\x82\x39\x50\x0b\x79\x24\x07\x30\xd8\x18\xde\x5f\x65\xd3\xe4\xba\x63\xd1\x77\xe6\x4d\x14\x32\x84\x07\x06\xd2\x42\x02\xac\x6d\x2d\x98\x79\xcb\xb1\x26\x5e\x7d\x70\x0b\xc5\xc5\x38\x97\xb1\x14\xbe\xc6\x42\x9c\x62\x26\x4e\x7b\xdd\x7c\xe0\xd3\xce\x67\xbd\x02\x58\xe5\x27\xc2\xf6\xa8\xc5\x5b\x4e\xbb\xb9\xed\xbe\x90\x5a\x9c\xcf\x68\x29\xe6\x1b\xb7\x6e\xe5\x3d\x6e\x7c\x8f\x70\xf2\x8e\x0b\x79\xfb\x0d\xb3\x5a\xce\xf1\xff\x58\x13\x5a\x6f\x76\x2d\xe4\xdc\xfa\x90\x2a\xb1\xa9\xce\xc7\x25\x56\x3a\x0f\x0e\x6d\x74\x98\xd5\x38\xea\x92\x8c\x45\x3d\x4d\x1d\xc0\x07\x03\xfc\x78\x18\x6c\x0c\x85\x4c\xa0\xa1\x50\xf6\x61\x3b\xd7\xc9\x16\x00\x60\xe0\x71\x06\x39\xa9\x0e\x24\x5f\xfe\xdc\x5c\x26\xd5\x5d\xfe\x66\x8f\xdf\x3f\x6a\x67\x7e\xea\x50\x5f\xda\x71\xfe\x98\x86\x4e\x7d\x7d\x7d\xb0\x3e\x38\x0c\xf4\x66\xaf\x26\x0f\xdf\xaf\x9e\xf0\x17\x2c\xe4\x53\xae\xff\x1f\xad\x85\x7c\xe9\x45\xcf\xa2\x7f\xe9\x65\xf3\x33\x00\x00\xff\xff\x32\x59\x3a\x12\xda\x01\x00\x00") - -func runtimeSyntaxMpdconfYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxMpdconfYaml, - "runtime/syntax/mpdconf.yaml", - ) -} - -func runtimeSyntaxMpdconfYaml() (*asset, error) { - bytes, err := runtimeSyntaxMpdconfYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/mpdconf.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxNanorcYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x93\x5f\x6e\xe3\x38\x0c\xc6\xdf\x73\x0a\x23\xdb\x07\xbb\xbb\x9b\x03\x04\xd8\xcd\x41\xaa\x16\xd0\x1f\xda\x16\x22\x93\x2a\x45\xc5\xcd\x80\x87\x1f\xd8\x49\x3b\xe9\xb4\x53\xcc\x3c\x29\x91\x7f\x24\x3f\x91\x1f\xfb\x98\x40\xce\x19\xf6\x0d\x5a\x24\xf6\x9b\x4d\x00\x01\x2f\xfb\x66\xd3\x34\x4d\xb3\x7c\x46\x3b\xc1\xbe\xd9\x1a\xb3\x3b\x5c\x98\xbb\xed\x66\xc3\x35\x41\xd9\xaf\xcc\xbf\x4d\x80\xde\xd6\x24\xfb\x66\xdb\x1e\x62\xf7\xf4\xf0\xb0\x2f\xd9\x7a\xd8\x3f\x3e\xde\xb7\x6d\xc5\xee\x50\x40\x34\xa2\x4f\x35\x80\x96\x33\x8a\x7d\xd1\x78\xf0\x94\x88\xbb\xdd\xfd\xdd\xf6\x9a\xe6\xa2\xe3\x93\x1c\x4b\x78\xc5\x02\xd2\xdd\x5c\xff\xdd\xda\x2a\x14\x31\x00\x8a\x3a\xeb\x8f\x35\x5f\x8f\x10\x79\xfd\x35\x5b\x0e\x45\x1d\xa5\x20\xf0\x22\xea\xd8\xfa\x23\x48\x51\x6f\x0b\x14\xc0\x12\x25\x9e\x40\x3d\x61\x11\xf5\x55\xb4\x8f\x29\xe9\x18\x8b\x10\x9f\x13\x0d\x3a\x59\xf1\xe3\x5b\xd4\x44\x0c\x6b\x6d\x9d\xa8\x16\xd0\xa9\x26\x89\xae\xf6\x3d\xb0\x22\x79\xc2\x13\xb0\x28\x52\x4f\x29\xd1\xac\x48\x23\xa4\xac\x48\x08\x73\x8a\x08\x45\x91\x66\xb6\x59\x29\x03\x5b\x89\x38\x2c\x32\x33\x43\x01\x3e\x81\xe6\x8a\x5e\x3a\x63\xfe\xd7\xdf\x7a\xfa\x73\x8d\xfe\xe8\x92\xc5\xa3\x3e\x57\x12\x28\xc2\xca\xe0\x22\x86\x00\x09\x04\xae\x7f\x8e\x70\xce\x36\x28\xc3\x00\x2f\x59\xcb\x64\x59\x46\x9a\x40\xcb\x44\x24\xa3\x96\x0c\x29\x01\x6b\xa9\x25\x03\x06\x15\xeb\x4a\xfc\x06\xeb\x29\xb4\x56\x2b\x2a\x30\xe5\xc5\x06\x5a\x31\x90\x9e\x22\xcc\x3a\x8f\x51\xae\xbd\x98\x89\x83\xa3\x8a\xa1\x74\xc6\xb8\xd7\x49\x66\x86\xcc\xe4\xbf\x1e\xe6\xcf\x8e\x18\xc1\x06\xe0\xdb\x34\xeb\x68\x2c\xca\xce\x11\xa5\x9d\x70\x7d\xb5\xc7\x92\xe4\xd7\x60\x6f\x53\x79\x23\x2f\xcd\xbb\x61\xe3\x62\x98\xd8\x47\xe0\x4f\xe5\xc5\xee\x62\xcc\x77\x97\x8e\xe3\x30\x4a\x77\x68\xd7\x97\xab\x4b\xd6\x1f\x95\x21\xa8\x4b\x15\x74\x60\x00\xd4\x33\xac\x73\x9f\xec\x00\x28\x56\xfd\xd9\x62\x77\x68\xff\xf9\xd3\x90\xee\x70\xa3\xb5\x64\xf0\xd1\xa6\x2f\x85\x1a\xe3\xd4\x18\xd7\x16\xb1\x2c\x0a\x18\xba\xff\x3e\xb4\xa5\x08\x47\x1c\x96\x25\xde\xb6\xc6\x18\xb3\xd3\x87\x27\xb3\x7d\xec\xee\xcd\xf6\x07\x3b\x4d\x80\xcb\x0e\xbf\x2b\xf3\xd7\xcd\x7e\x5e\x91\xdd\xa5\x1b\x1f\xc8\x0b\xfa\x3d\x00\x00\xff\xff\xa1\x3c\x8d\x21\x51\x04\x00\x00") - -func runtimeSyntaxNanorcYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxNanorcYaml, - "runtime/syntax/nanorc.yaml", - ) -} - -func runtimeSyntaxNanorcYaml() (*asset, error) { - bytes, err := runtimeSyntaxNanorcYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/nanorc.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxNginxYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x58\xdd\x8e\xeb\x28\x12\xbe\x9e\x7e\x0a\x2b\xdb\xd2\xe9\x1f\x75\x6b\xa5\x9d\x9b\xcd\x5c\xac\xf6\x35\xb6\x93\x83\x08\x94\x63\x26\x18\x38\x14\x4e\xc7\x7d\x78\xf8\x55\x01\xb6\xb1\x3b\x91\x92\x54\x7d\xc5\x6f\xfd\xdb\xad\xd2\x10\x46\x07\xfb\xc6\x9c\x95\xb9\x3d\x3c\x48\x08\x20\xc2\xbe\x79\x68\x9a\xa6\x21\xa9\xe1\x3d\xec\x9b\x5d\x12\xbf\xbf\x1c\x0e\xef\xc2\x9a\xf6\x31\x1e\x0e\xef\x09\x7a\xdc\xa5\x91\x1d\x70\x09\x7e\xdf\xec\x7e\x3e\x21\xf8\x2b\xf8\x38\x38\x0c\x1e\x78\xff\xfc\xc1\xdf\xbe\x9a\xe3\xcb\xe1\xf0\xfb\x71\xf7\xf0\xe0\x07\x0d\xb8\x4f\x73\xde\x1a\xe7\xc1\x79\x2b\xf6\xcd\xee\x70\x38\x3d\xc1\x15\x4c\xc0\x58\xe6\x77\x21\xb8\xa8\xad\xe0\x41\x59\x53\xad\xf6\xb1\x47\xc7\x05\xec\x8f\x69\xc9\x5d\x59\x09\x03\x0f\xd0\x83\x09\xfb\x66\xf7\xf4\x33\x2e\xa3\x7e\xff\x75\x7c\x7e\xe2\x42\x00\x22\xd3\xf6\x1c\xb9\x94\x8c\xb7\x01\x3c\x3b\x59\x39\x26\xf6\x04\xad\xf5\xb0\xf0\xf9\x2e\x44\x2a\xda\x9b\x91\x7e\x30\x72\x65\x23\xd7\x8a\x63\xe4\x5a\xdb\xcf\xc8\x8d\x50\x60\x02\x3b\x79\xfb\x89\x34\x7c\xcd\xb3\x2b\xd7\x03\x44\x3e\x84\x8e\x9d\x38\x2a\x51\x91\x6c\xa0\x01\xa4\x5c\x02\xad\x32\x12\x6e\x0b\xc5\xe0\xc6\x45\x60\xa8\xbe\x2a\x31\x23\x4d\xe8\xa0\x7a\x88\x27\x0f\xfc\x12\x45\xc7\x3d\x42\x98\xfe\x59\xcf\xdd\x4c\xe7\x03\x8b\x6e\x30\x17\x90\x2c\x78\x6e\xb0\x05\xcf\xc0\x08\x2b\x95\x39\x47\xa1\xf3\x49\xad\x1c\xd9\x69\x68\x49\x96\x76\xab\x71\x65\xd2\x01\x99\x35\x7a\xdc\x0a\x50\x99\xb3\x86\x32\x75\x25\x0c\xd0\x3b\xe6\x78\xe8\xd6\xa8\xea\xc1\x0e\x61\xc2\xb2\x7e\xef\xed\x5c\x24\x9b\xf1\x3d\xbf\xe5\x75\xf2\x50\x6b\x0c\x88\x64\x18\x67\xad\x2e\xa0\x07\x1e\x80\xb5\x83\xd6\xcc\x0d\x21\x1f\x41\x72\xe8\xad\x89\x92\x5f\x59\x76\x80\x44\xf6\x10\x3a\x2b\x31\x4a\x68\xf9\xa0\xb3\xb2\xa2\x04\x33\x46\xa9\x7c\x5a\x78\x26\x18\xd7\xea\x6c\xc8\xab\xa2\x54\xc8\x4f\x1a\x18\x8e\xbd\x56\xe6\x82\x11\x7a\x17\x46\x76\x56\x6d\x04\x73\x8d\xe0\xbd\xf5\xc9\xbf\x32\xe5\xf8\x19\x22\xdc\x9c\xf2\x80\xb1\xe5\x18\xc4\x59\xad\x2e\xbc\xc6\xea\x31\x38\xd9\x04\xd7\x23\x05\x17\xdd\x86\x63\xa7\xd1\x71\xc4\x0d\x78\x81\x71\x83\x68\x2b\x2e\x77\xa0\x59\xcf\x6b\x51\xaf\x0c\x39\xe8\x76\xd9\xa4\xd2\x35\x34\x20\x30\x0c\x5c\x6f\x8f\x75\xe5\x5a\xc9\x05\xcb\x06\xfb\xb6\x5b\xa7\x24\x4c\xb1\x36\x61\xea\x6c\x28\x14\x8b\xe1\xf9\xc9\xfa\xb0\x95\xe5\x19\xcb\xe9\x72\xf4\x2c\x5c\x00\x2f\xc0\x05\x96\x0c\xb1\x0c\xbb\x00\xb8\x74\x94\x19\x21\xb7\x4a\xfe\x9a\xfc\x7c\xa5\x6b\x03\xb7\xc0\xa6\x94\xb3\xa0\x76\x63\x04\xc7\x7d\x25\x5e\x99\x82\x98\xed\xe5\x3c\x70\xf9\x4d\x0b\x08\xe6\x0e\xe8\xb4\xca\x4e\xcc\x94\x69\xed\x82\x07\xeb\x61\xcd\x4d\xae\x3d\x81\xcb\x8d\x3e\xbd\x0a\x9b\x7b\x2d\xe1\xd9\xea\x6b\x3c\x83\xa5\xaf\x72\x4c\xa8\x30\x4e\xa4\x1d\x4c\xf0\x63\x3c\x7f\x29\x97\x7e\x66\x17\x4d\x8c\xb0\xbd\x63\x1a\xae\xa0\x33\x5f\xe2\x22\x33\x94\xb2\xd9\x15\x3c\x52\xc6\x4e\x08\xf9\x92\x06\x73\x0e\x5d\xe6\x9d\xb7\x37\x05\x32\x33\x94\xb3\x95\xc8\x74\x4e\x59\x89\xbc\x72\x3f\x46\xd5\x46\xd5\xb2\xde\x4a\xd5\x2a\x90\x94\x71\x04\xc4\xe2\x01\xca\x24\x07\x9b\x3d\x41\xf5\xfc\x0c\x74\xe7\x00\x7e\xc5\x4c\x19\x6a\x85\xfd\xed\xe0\xcc\x7e\x0d\x5c\xd3\x9d\x57\x12\xec\xb8\x77\x60\xd6\x60\xca\x9e\x8e\x7b\x30\x62\x8c\xca\x08\x3d\x48\x88\xd9\xe7\x92\xaf\x19\xae\x23\x5d\x9d\x63\x17\xc9\xc7\xb8\x56\x57\x58\xa8\x59\x41\x0b\xe2\xe1\xd7\x00\x18\xb0\x82\x26\xfb\x6b\xee\xcf\xb3\xf7\xaf\xd2\x24\x46\xad\x7a\x15\xb2\x07\x2f\x24\xa5\x9c\x62\x8e\x0a\xfc\xb2\x06\x0a\x0f\x37\x0a\x86\xc2\x78\x1e\xa0\x22\x73\x1d\x9c\x00\xf8\xb5\x50\xdf\x96\x25\xac\x5a\xb5\x90\xe6\x0c\x5e\x99\x33\x13\xda\x62\xcd\xa7\x32\xb5\x66\xd3\xed\x14\x06\x30\x4b\x4d\xa7\x4d\x5a\xeb\x7b\x1e\x12\x69\x6c\x60\xad\x1d\x8c\x4c\x1c\x0e\xa7\xa2\xa8\x48\xa5\xad\xe7\x59\xc7\xec\x34\x88\x0b\x94\xea\x38\x83\x14\xca\x05\x41\x32\x1a\x35\x15\x14\x14\x84\x7b\x6e\xce\x80\xb1\x87\x3e\x05\xaf\x5c\xa5\xe1\x05\xdd\x66\xa9\x45\xb2\x4e\x06\x0b\x9e\xe2\x7d\x61\x57\xd1\xbd\xc0\xab\xf8\xee\x81\xec\x8b\x9a\x63\x47\x47\x52\x86\x49\xd0\x10\x80\x49\x70\xa1\x8b\xbd\x95\xe0\xcd\xdc\x51\xac\xd9\xd2\x50\xf4\xee\x4f\xfa\xae\x6f\xe1\xfe\xcc\x45\xb2\xc6\x50\x51\xce\x96\xa9\xe0\x27\xc6\x43\xeb\x01\xbb\x68\x1d\x94\xda\x9e\xb3\xd9\x86\x9f\x12\xe7\x16\x9e\xcb\xc2\x56\x90\xb3\x7d\x42\x93\x45\xeb\x95\x83\xea\xd5\x17\xb0\xdc\xd2\x31\x6a\x25\x31\xda\x2b\x78\x4f\xb9\x7f\x6a\x61\x9c\xf0\xc0\xfe\x56\x21\x3a\xf0\x3a\xfd\x50\xe0\x53\x9f\x98\x19\xf2\x03\xe5\x21\x33\x69\x82\x92\xd1\x59\x1f\xa8\x17\xf1\x90\xab\x75\x74\x16\x83\xb3\x06\x98\x1d\x82\x1b\x42\xa4\x54\xb3\x6e\x6f\x6a\x84\xb4\x52\xf3\x38\x73\xdb\xfa\x9b\xf1\x7c\xa1\x8a\x9e\x6a\x6f\x0d\x51\xe5\xad\xf9\x54\x77\xb7\xc0\xec\x0c\xb5\x60\x56\x6e\x0d\xa6\x44\x5d\x03\x4b\xbd\xad\xd1\xac\xff\x82\x6c\xbc\x78\x42\xed\x45\x01\x93\xb6\xe7\xca\xac\xb1\x6a\x8f\xba\x1e\x17\xa4\xce\xe7\x19\xba\x57\xa0\x57\x92\x29\x29\x17\x70\x5b\x8e\x33\x7c\xa7\xf4\x66\xc1\x3a\xd6\x0a\x66\x57\xda\xaf\xb4\x5e\x17\xd9\x8c\xac\x82\x70\x82\x26\x07\x49\xec\x2a\x1e\x27\x28\xac\x57\x41\x24\x3f\x43\xba\x36\xf3\x30\xe0\xb4\x75\x2e\xbf\x15\x3d\x15\xdf\x0c\xdd\x2d\xbd\x95\x28\xe9\xda\x73\x23\x6d\x5f\xba\x96\x74\x5c\x4e\x7b\x13\xa9\x19\x15\x92\x7c\x10\x0f\x62\xf0\x48\xb5\x61\x69\x28\x31\x96\x8c\x58\x35\xbe\x1e\x52\xc3\xaf\x7a\x90\x76\x08\x6c\x69\x8e\x49\x62\xf5\x35\x2d\x95\x89\xf9\xd6\x1e\xc2\xe0\x69\x40\x3a\x66\xf4\xd6\x86\x88\x3c\x28\x6c\xc7\xe9\x9f\x71\x33\x46\xa4\x33\x00\xa3\x7e\x97\x21\x08\x0f\x21\x26\xed\x69\xfb\xc9\x0b\x39\x2d\x49\x4c\x7a\x9e\x99\x88\x64\xe2\xf4\x04\x32\x3d\xcf\xad\xfe\x52\x2a\xa8\xe9\x55\x28\xd7\xe9\xe2\x7b\xd6\xff\x2e\x9d\xd3\x7f\x11\x05\x7b\x01\x43\x0f\x92\xb4\x14\x15\xaf\xac\xda\xd6\xdb\x3e\xa2\x1d\xbc\x58\x72\x4f\xee\xb4\xb2\x3b\x63\x44\x54\xf4\x65\x48\xcf\xbd\xb3\xcf\x12\x92\xfb\x13\x44\x4d\x5f\x26\xc0\x07\xd5\x2a\x41\xf5\x74\xc3\xa7\x24\x90\x30\xe5\x3a\x48\xb3\xf5\x14\x2e\xdf\xa6\xf9\xbc\x9c\xec\x72\x27\x49\x34\xd0\x53\x75\x16\x3b\x0f\x29\x77\xe5\x4b\xd5\xeb\x39\x6f\x83\x15\x56\x67\x6e\x72\xd5\x1c\x25\x35\x32\x9b\x07\x35\xc5\xb1\x6a\xc7\x72\x94\x1a\xc9\xb5\x07\x87\xd3\xd4\x42\x2d\x24\xb3\xd4\x76\x55\x7c\x56\x43\x10\x8e\x19\x2b\x41\xf3\xb1\xd0\x6e\xc0\x2e\xd2\x6e\x9e\x25\x77\x1b\x92\x0b\x06\x3f\xa6\x78\xc0\x58\xe6\xd1\xef\x77\x83\x56\xf0\x6c\xc9\xc1\x50\x16\x11\xd6\x03\x92\x6b\x4c\x59\x65\x30\xca\xa8\xa0\xb8\x56\x5f\x20\xa9\x53\x54\xe9\xa9\xec\x93\xfb\xe5\x15\x41\xa4\xa7\xeb\xf4\xa3\x64\xf9\x9b\x52\x5f\xe1\xa6\x07\xb3\xc2\x26\x5f\x2c\xb4\xfb\x97\x9b\x49\x0a\xd7\x42\x93\x0d\x94\x80\x98\x1b\xcf\x64\x17\x3a\xce\x74\x80\x3b\x97\xda\x88\xe6\x8b\x7d\x5a\x7f\x49\x1d\x8a\xb2\x9e\x3a\xd0\x99\x4f\x1d\x0b\xe0\x04\xf8\xa9\x9f\xf3\xb0\x81\x8c\x4d\x91\x46\x20\x75\x57\x39\x66\xac\x1f\xe3\xad\x27\xf7\x09\x2a\x28\xc0\x78\x43\x1d\x18\x86\x51\x03\x76\x00\x21\xf3\x49\xd3\xcf\x4f\xd5\x3b\x94\xf8\xf8\x3c\xbd\x42\x11\xd6\x60\xe0\x26\xbc\x9f\xac\xd5\xef\xc1\x0f\x50\xde\xcb\x58\xf3\x7c\x38\x9c\xee\x0f\x6b\xb9\xc6\x79\x5c\xdb\xd6\x03\x95\xa4\xc3\xb4\x2a\xbd\x16\x3a\x1c\x1e\x3f\xfe\xfb\xf6\x3f\xfe\xf6\x75\x2c\xff\xff\x7c\xfb\x37\x3b\xbe\xcc\xef\x6f\xc6\xfe\x64\xf5\xbe\xd9\x7d\xbc\x1c\xb7\x3b\xbd\x61\xa0\x7a\x4d\xab\xec\x9e\x0e\x87\xc3\xe1\x3d\x7e\xfc\x3c\xec\x8e\xcf\x2f\x87\x5d\xfc\x31\x23\x3f\x8e\xcf\x2f\x3f\xbe\x9d\xb2\xcc\x4d\x30\x7d\x30\x70\x1f\xf6\xcd\xee\x47\x79\x71\x45\x1f\x30\x92\x90\xbf\x2a\x28\xbf\xa6\x6a\x3e\x8e\x0f\xf3\x82\xfd\xbd\xd7\x4b\xc7\xe7\x7f\x3c\x7d\xfc\xfc\x7d\x7c\x7f\x79\xfe\xcf\xe3\x7c\x73\x43\x57\x7f\xa3\x1c\xf3\xfe\xd9\xa9\x00\x79\x70\xb3\xab\xe6\xbd\xde\x1b\xbd\x6f\x76\x7f\xbc\x36\xaf\xb1\x79\xfd\xe3\x75\xf7\xf0\xff\x00\x00\x00\xff\xff\xa1\x09\x81\xbe\x9c\x13\x00\x00") - -func runtimeSyntaxNginxYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxNginxYaml, - "runtime/syntax/nginx.yaml", - ) -} - -func runtimeSyntaxNginxYaml() (*asset, error) { - bytes, err := runtimeSyntaxNginxYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/nginx.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxNimYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x56\x7b\x6f\x1c\x35\x10\xff\x3f\x9f\xe2\xb8\x16\x72\x97\x90\xa3\x49\xab\x50\x8e\x47\x28\x6d\x82\x2a\x01\x95\x48\x91\x22\xd6\xdb\x32\x6b\xcf\xde\xba\xf1\x63\xf1\x23\xc9\xb5\x53\x3e\x3b\x1a\xef\xde\x25\xa0\x22\x1a\x29\xe3\x79\x78\x6d\xcf\x6f\x7e\x33\xba\x56\x1b\x4c\xeb\x1e\x97\x13\xa7\xed\xce\x8e\xc2\x84\x32\x2d\x27\x3b\x93\xc9\x64\xc2\x31\x07\x16\x97\x93\xa9\x10\x0b\xa7\xed\xfd\xe9\xce\x4e\xc8\x06\xe3\xb2\xc4\x0f\x26\x7d\xc0\x3e\x78\xb9\x9c\x4c\x2b\x21\xde\x09\x41\xb5\x10\xcd\x0c\x92\xb7\x64\x74\xa2\xb8\xb6\xa4\x15\xba\x44\x12\x8c\x21\x73\x05\x26\x23\x45\xad\x10\xdb\x16\x65\x22\xe7\xef\x18\x3d\x04\xb0\xb4\x42\x87\x41\xcb\xc1\xb0\x5e\x65\x83\xc4\x0f\x24\x83\x89\xae\x20\x90\xf4\x2e\x26\x0a\x18\xb3\x49\xc4\xb7\x93\xc5\xd4\x79\x45\x3a\x61\x80\xe4\xcb\x8e\x2b\x0c\x09\x03\x59\x90\xc1\x53\x42\xdb\x1b\x48\x48\xad\x46\xa3\x08\x5d\xb6\x83\xd6\xfa\xc0\x27\x1a\x68\xd0\x90\xbb\xac\xe0\xe0\xed\x93\x83\xdf\xeb\x7d\x02\xa3\x21\x92\xf3\x65\x9d\x0b\xd1\x54\x42\xbc\xe7\xf4\xa6\x63\xe2\x31\x41\x42\x8b\x2e\x15\x6c\x9a\x19\x28\x15\x08\x9c\x22\x88\x04\xd1\x12\x43\xa0\x25\x35\xda\x29\x6a\x8c\x97\x97\xd4\x04\x84\x4b\x92\x10\x91\x45\xe2\x47\x4a\xec\xd3\x98\x8e\xf4\x2e\x69\x97\xf1\xce\xdb\x15\xb6\x2c\x75\x94\x10\x14\xaf\x49\x3b\x99\x48\xe9\x2b\x52\x9e\xd0\xe8\x96\xd0\x44\x24\x74\x43\x4a\x84\x37\xe5\x40\xbc\xe9\x7d\x48\xd4\x6a\x07\xc6\xac\x39\x47\x6a\x83\xb7\xd4\x66\x27\x37\xe8\x92\x6e\x49\xdb\xb2\x4f\x3b\xd2\x4e\x9a\xac\x90\xb4\x4b\x18\x5a\x90\x48\x3a\x92\x8e\xce\xa7\x5b\x4c\x19\xfd\x01\xcd\x11\x6d\xab\x6f\xb4\xe3\x02\x91\xd3\x86\x78\xaf\xf3\x49\x3b\xf2\xcd\x1b\x2e\xa6\x6f\xc9\x07\xf2\x79\x2c\x51\x9f\x02\x05\xd0\x11\x29\x60\x4b\x01\x53\x0e\x8e\x62\x67\x28\x76\x81\x18\x4c\x2d\x6f\xcb\x94\xc2\x9a\x52\xee\x37\x85\xcf\x51\xbb\x55\x29\xfd\x75\x87\x8e\xae\x3b\x6d\x90\xae\x75\xea\x8a\xe0\x2b\x6e\x7c\xa0\x35\x57\x94\x4b\xf5\x5f\x25\x52\xd8\x07\x94\x90\x50\x91\xf3\xe7\x5a\xe1\xe9\x40\xbb\x52\x80\x90\x25\x67\xa9\x70\xab\xfa\x2b\x0c\x41\x2b\x2c\xef\x1f\x78\x67\x7b\x6d\xf0\xa5\xb6\x48\xce\xff\x3a\xa4\x00\x72\x2d\x8d\x96\x03\xda\x14\x3b\x30\xc6\x5f\x53\x9f\x03\x32\x0d\x7e\xf1\xe7\x09\xe4\xe5\x59\x00\x8b\x84\x21\x70\x29\x20\x81\xa1\x6b\x08\x8e\x93\xea\xb4\x4b\x64\xb4\xc3\x22\x20\x9c\x4b\x70\xa7\x4e\x95\xbb\x72\x42\xf5\xa3\x4f\x9e\xb2\x0b\xde\x18\xd2\xd6\xa2\xd2\x8c\x8f\xec\x50\x5e\x46\x6a\x7c\x76\x2a\x3e\x1d\x0c\x7e\x6e\x6b\xfc\xf5\x68\x3a\x6d\x46\x0d\x62\xc4\xc0\x00\x7b\x17\x37\xf7\xc6\x72\x71\x24\xdf\x27\x6d\xf5\xdb\x12\xa4\x1e\x52\xc2\xe0\x62\xe9\x55\xa6\x21\xf5\x39\x76\xd4\xfb\x9e\x56\xc6\x37\x60\xa8\x0f\xb0\xb2\xc0\x04\xc3\xa0\x19\x59\x30\xd4\xe8\x14\xf5\x5b\xa4\x2b\x6f\x20\x71\x61\x9c\x7f\x86\xd2\x50\x87\xa0\x30\x30\xb5\xbc\xed\x0d\x26\x3c\x2f\xc0\x6e\x50\xe4\x7c\x2f\xa9\x87\x18\x9f\x16\xf9\x13\xa1\xd5\x69\xe4\xa4\xdc\xac\x7d\x3f\x6a\xbe\x79\x23\x49\x7a\x85\x2b\x74\xe5\x78\xed\x98\x65\xe7\xc9\x32\x81\x93\xc2\x96\x31\x8c\x29\x8c\xda\x15\x04\x08\xab\x38\xf6\x82\x24\xbc\xe1\xd4\xa8\x59\x4b\xdf\xaf\xa9\x59\x33\x09\xb3\x1b\xb2\x96\x97\xa8\x28\xbb\x02\x2a\x2a\x52\x6b\x67\x74\x43\x52\xf1\x35\xa9\x0b\x08\x8a\x56\x32\x42\x8b\xa3\xc5\x5c\x58\x65\xee\x49\xee\xeb\x78\x97\x17\xff\xa0\xdf\xda\x36\xde\x2c\x7c\x3f\x34\x10\x8f\xc8\x6f\x85\xd8\x17\xe2\x40\x88\xbd\x2f\xbe\xf9\xee\x7b\x21\xee\xff\xf5\xd9\xa7\x42\xd0\x27\x42\x9c\x08\xf1\x4a\x88\xc5\x52\x08\x21\xea\xfd\xed\x11\x3d\x4a\x0d\xa6\xf0\xf7\x9d\x10\x0b\x12\x62\x21\xc4\x7b\x12\xa2\xda\x5a\x35\x09\x31\xdb\x5a\x73\xfa\x9a\x3e\xa7\x3f\x3e\xdc\x02\x0b\x21\x16\x9b\xc8\x30\xf2\x4b\x5f\x30\x05\x25\x0b\xed\xd2\x63\x16\x87\xc7\x2c\x1f\x1e\xb1\x3c\x7e\x44\x99\x63\xb9\x04\xf3\x10\xcd\x43\x38\x0f\xf1\xd6\x78\x48\x83\x7c\x78\x34\xac\xc7\x8f\xa8\xf1\xde\x90\xec\x20\x0c\xb3\x29\xa6\xc0\x7c\x97\xe3\x0a\x21\xc0\x9a\x7c\x8f\x6e\xd0\x22\xfe\xb9\xad\xd9\xd0\xf9\xe3\x18\x89\x3c\xf4\xbd\x56\x04\x39\x79\x92\xb1\xe3\x91\x15\xc0\xad\xb0\x8c\x9d\x97\x94\x1d\xa7\xa2\xca\xa4\x50\x18\xe5\xdd\x12\x8c\x49\xee\x56\xfa\x79\x3d\x7b\x4c\x87\xc7\xf4\xf0\x88\x8e\x1f\xcd\x4f\x84\x68\x68\xb7\xca\xbf\x7d\xc8\xdb\x9e\xd5\xb3\xe2\xa0\xc3\xa3\xc7\x1b\xa7\x7a\x56\xdf\x39\xb7\x4c\x0c\x70\x69\xe1\xb2\x6d\x30\x0c\x38\x56\x0f\x0e\xbe\xaa\xf7\xff\x6f\xd7\x83\xea\xe6\xa2\xe6\xad\x4f\x0e\xce\xe0\xa0\x2d\xea\xeb\x51\xff\x88\x8f\xbd\x7c\xca\x9f\x7c\x59\xc4\xeb\x8f\xf9\xa2\xf9\xa1\xae\x1e\x1c\xf2\xff\x47\x6c\x2f\xaf\xa9\x67\xcc\xa7\x93\xf9\x60\xec\xcf\x4f\x2a\x3c\xad\x2b\x26\x6e\x79\x6d\x3d\xfa\x3f\x74\xd6\x50\x5d\x3e\x6b\x3a\x63\x2a\x2f\xa8\x7a\x25\xa6\xf5\x7c\x4f\x4c\x69\x77\xeb\xd9\xad\xe7\x7b\xbb\xb7\xdf\xda\x91\xa0\x55\xb5\x8c\x3d\x48\x5c\xd6\xf5\xde\xbd\xc5\xde\xfd\x7f\xef\x28\x26\xff\xc5\x04\x61\x60\xf4\x3d\x21\xaa\xe9\xd6\x8f\x4e\x15\x6f\x2d\xc4\xbd\x5b\xef\xf0\x7b\x65\x52\xd5\x3b\x1b\x56\x78\xe5\x97\x93\xe9\xec\xe5\x8b\x67\x2f\xe8\xec\xf9\xc5\xcf\xa7\x74\x71\x71\x31\x5f\x9e\x4c\x77\xfe\x0e\x00\x00\xff\xff\x35\x7c\xeb\x87\x0d\x09\x00\x00") - -func runtimeSyntaxNimYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxNimYaml, - "runtime/syntax/nim.yaml", - ) -} - -func runtimeSyntaxNimYaml() (*asset, error) { - bytes, err := runtimeSyntaxNimYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/nim.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxObjcYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x55\x6f\x6f\xdb\xb6\x13\x7e\x9f\x4f\xe1\x9f\x9a\xdf\x2a\xba\xb3\xd3\xfd\x41\xb1\x7a\x5d\x9c\xb4\x4b\x86\x02\x69\x32\x2c\x2d\x90\x55\x74\x05\x8a\x3c\xd9\x5c\x28\x52\x23\x8f\x49\x9d\x5d\xbf\xfb\x40\xd9\x4e\xec\xe6\xcf\x0a\x0c\x98\x5e\x58\xe2\xe9\xb9\xbb\x47\x77\xcf\x9d\x6b\x6d\x00\xe7\x2d\x8c\x7a\xae\xfa\x03\x24\xea\x0b\x18\xc8\xad\x2d\x05\x08\x12\x47\x5b\xbd\x5e\xaf\x97\x20\x56\x34\x30\xea\x65\x9c\x0f\xf3\x86\x9a\x86\x66\x6c\x3b\xdb\xda\xf2\xd1\x40\x58\x80\x06\xbd\x45\x94\x8c\xf3\x2a\xaf\x8d\x13\x48\xca\xc5\xca\x00\xbd\xfa\xe5\xb0\x3b\x6a\x45\x95\x73\x86\x5e\x9e\x9c\x1c\xd1\x4b\xe7\x0c\x08\x4b\x72\x26\x3c\x69\x8b\x14\x66\xce\x23\x19\x67\xa7\x14\xf4\x15\xb8\x9a\xc0\xc6\x86\x2e\x9c\x56\x14\x50\xa0\x96\x24\x9d\x0d\x48\x01\x7d\x94\x48\xd1\x6a\x67\x29\xe5\x54\x50\x13\x7c\x44\xf0\x96\xf2\x68\xd9\x38\xe8\xa9\x05\x45\xda\x1a\x6d\x81\x5e\x19\x11\x02\x9d\x1e\x1c\xd1\xeb\x37\xbf\xd2\xf1\x69\xfe\x8e\x8d\x5f\x5b\x84\x29\x78\xc6\x79\x95\xdd\x26\x9f\x87\x71\x62\xc0\x28\xcf\x63\x39\x66\x63\x6d\x31\xff\x81\xbe\x79\x46\xdf\x7d\x4b\xcf\xbe\xa7\x16\x3d\x63\xac\xc4\x3b\x9d\x8b\xfd\xc1\xfb\xc9\xe2\xa7\x18\x09\x63\x63\x33\x9a\x4c\xfa\xf7\x42\xc5\xe0\xea\xe9\xe0\x79\x39\xe9\xdf\x13\x4e\xe9\xd0\x0a\x94\xb3\xb2\x10\x83\xab\xfd\xc1\xfb\x0d\xf0\x12\x9d\x8a\x03\x0d\x58\x1c\xf5\xb2\xbc\x2c\x05\xa2\xd7\x55\x44\x28\xcb\xa2\x18\x85\x56\x48\x58\x50\xc8\x39\xcf\x8b\x0f\x2c\x3d\x32\xce\x19\x95\x65\x2e\xcc\xa2\x54\x22\x34\x54\x45\x6d\x50\x5b\x9a\x69\xa5\xc0\xae\xaa\xd7\x0a\x79\x0e\x8a\x3c\x04\xf4\x5a\x22\x85\xa4\x90\x65\xdd\x5d\x4d\x97\x20\xce\x59\x59\x52\x59\x46\x1b\x03\x28\x2a\x8f\x9d\xb5\xd1\x18\x2a\x8f\xa3\x31\x22\xb5\xbf\x2c\x2b\xe3\xe4\x79\xba\x2f\x52\x0c\xfb\x2c\xbb\x83\x7b\x2a\xbd\xec\x9a\x95\xb4\xd6\x11\x27\x84\xa6\x35\x02\x81\xda\x58\x19\x2d\xa9\xf5\x2e\xc9\x12\x14\xb5\x5e\x5f\xa4\x17\x89\x48\xc2\x13\xce\x74\xa0\xda\x6b\xb0\x8a\x2e\xb4\xc7\x28\x0c\xc5\xa0\xed\x94\x9a\x88\x1d\x91\x0b\x67\x04\x6a\x03\xe4\x61\xaa\x03\x82\x27\xf8\xd8\x1a\x2d\x35\xae\x0b\xe1\x73\x4a\xb5\xf3\xa4\x6b\xba\x9c\x25\x4f\xe5\x08\x4c\x00\x92\x22\x00\x29\xa8\x45\x34\x48\xe1\x52\xa3\x9c\x3d\x14\x03\xfd\x9c\x70\xe6\xdd\x25\xc9\xd4\x4d\x72\x2d\x78\x81\xce\x93\x85\x4b\x52\x60\x00\xe1\x21\xf7\xa9\x43\x97\xc4\x8f\xda\x46\xa0\xca\x83\x38\x27\x0f\x18\xbd\x7d\xc8\xcb\x3a\x2b\xd0\x35\x5a\xd2\xf2\xe6\x41\x28\x67\xcd\xbc\x7b\xb8\xf4\x1a\x21\xcd\x52\x1a\xb8\xd4\x46\x12\x21\x0d\xce\x7d\x11\xf7\x72\xb0\xd2\x29\xa0\x54\x5f\x6d\x11\x7c\x9d\x1a\xa4\x9b\xd6\x74\x10\xd1\xc9\x62\xd1\xbf\x00\x06\x64\xfa\xbc\xd4\x2e\x27\x9d\xa1\x30\xb7\x72\xe6\x9d\xd5\x57\xa0\x28\x55\x63\x51\x87\x5a\x5b\x61\xcc\x3c\xe1\x5a\xf0\x38\x27\xd7\xa6\x30\xc2\x90\x87\x3f\xa3\xf6\x69\x8a\x9b\x36\xed\x05\x11\xd1\x79\x30\x20\x02\xb4\xce\x19\x76\xad\xfe\xd6\x43\xeb\x9d\x1c\xf5\xb2\x0f\xeb\x72\x7f\xb4\x7e\xc8\x15\xd4\x49\xcc\xda\x4a\x13\x15\xac\x62\xe6\xd1\x92\xae\xed\x98\x75\x0b\xc4\x2a\x5d\x13\x98\x5c\xd7\x14\x80\x75\x2d\x17\xde\x26\xfd\x80\xf7\xdd\xb7\x88\x69\x23\xd8\xb0\xbf\x9d\xdd\x4a\x5d\x96\xc5\xcd\x70\x96\x37\x93\xd9\x82\xd4\xc2\x7c\xce\xad\x78\x44\x7b\x93\x0d\x7e\x4b\x42\x4b\x7e\x6c\x03\xcc\x33\x7a\x31\x19\xf6\x39\xdf\x19\x17\xbb\xc4\xb3\x0d\xcf\xed\xbb\xb7\x40\x31\x1c\xfd\xf8\xf5\x93\x3e\xfd\xf4\x3f\xce\xff\xcf\x79\xc1\xf9\x64\x42\x2f\x68\x97\x76\x68\x40\x5f\xdd\x14\xaf\x5b\xa8\xc2\xe2\xd0\xc6\xa6\x02\x9f\x5c\x93\x72\x06\x63\x36\x2e\x9e\x0e\x9e\x4f\x9e\x70\x5e\x11\xe7\x15\xe7\xab\xe3\x70\xc3\xfe\xf4\x63\x3a\xee\x0f\x0e\x3b\xcb\xf5\x54\xaf\xc2\xa6\x78\x7b\x9c\x17\x39\xe7\x9c\x0f\xa9\xf8\x90\x78\xb0\x3e\xe7\x13\xda\xe3\xfc\xaf\x35\xf3\xa7\xce\xfc\x29\x99\xf3\x35\x33\xeb\xcc\xec\xae\xc0\x9c\x57\x2f\x16\xc8\x04\xdc\xed\x80\xbb\x6b\xda\xdd\x84\xe6\x56\x1b\x3a\x7e\x77\x74\x44\xbf\x1f\x9c\xd2\xf1\x09\xbd\xfd\xed\xdd\x01\xa1\x8f\x40\x87\xfb\x47\xa7\x07\x54\x8b\x34\xd6\x01\x4c\xcd\xee\x0d\x72\xbe\x5a\xe9\x9b\x1b\xfd\xba\x88\x69\x45\xda\xe9\xa8\x97\x3d\x1e\x3e\xbe\x5d\xe2\xe5\xdb\xce\x9c\xae\x80\xc2\x77\x83\xc5\xb3\xec\xda\x08\x56\xa5\x5c\x6b\x96\x70\xae\xdb\x2e\x3d\xe7\xc3\x1b\xeb\xda\xff\xee\xea\x5a\x4f\xb5\xd0\xdd\xab\x99\xf0\x37\xae\x5f\xca\xe7\xbf\xa6\xd3\x74\xa2\xbd\x45\x63\x67\xe7\x73\x1a\xdb\xff\x90\x0f\x9d\x72\x49\x71\x6f\x4f\x7e\x3e\xa1\xb3\xb3\x33\x3a\x7c\x7d\xf6\xe6\x80\x8d\xc6\x5f\x90\x8c\xf3\xfe\xad\xaf\xe6\xfd\x9d\x7f\x91\xf1\xef\x00\x00\x00\xff\xff\x7d\xdf\x5a\xbd\x57\x09\x00\x00") - -func runtimeSyntaxObjcYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxObjcYaml, - "runtime/syntax/objc.yaml", - ) -} - -func runtimeSyntaxObjcYaml() (*asset, error) { - bytes, err := runtimeSyntaxObjcYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/objc.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxOcamlYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x93\xcd\x6e\xdb\x3a\x10\x85\xf7\x7e\x0a\xc2\xf7\x5e\xe4\x07\x57\x69\x90\x16\x68\xe3\x4d\x11\x14\xe8\x1b\x74\x53\xd3\x28\x46\xe4\x28\x9a\x96\x1a\x0a\xe4\xc8\x76\x92\xf1\xbb\x17\x92\xa3\x54\xce\x1f\xda\x75\xbd\x31\x79\x34\x73\xce\xf0\x23\x58\x51\x40\xb9\x69\x71\x61\xa2\x83\x26\xcc\x66\x1e\x05\x9d\x2c\x66\xc6\x18\xd3\x7f\x64\x68\x70\x61\xe6\xd6\x9e\x35\x81\x3e\xfe\x3b\x9f\xcd\x52\x17\x30\xef\x0b\x0a\x43\x1e\x59\xa8\x22\x4c\x43\x51\xb9\xbc\x2a\xbe\xae\x96\xe7\xc5\x25\x14\xb7\xdf\x56\x77\x17\xff\xef\xac\x2d\xe7\x43\xb1\x31\xff\x78\x74\x01\x12\x08\x45\xce\xf7\x06\x59\x40\xb0\x41\x96\x7d\xff\x71\x40\xd1\x35\x04\x6d\x50\xea\xe8\x95\x58\x81\xbd\x26\x74\xda\x26\x5a\x83\xa0\xae\x29\x49\x07\x41\x5d\xe4\x2c\x09\x88\xe5\x64\x9a\x91\x25\x75\x4e\xba\x84\x86\x04\x9b\x31\x66\x7f\xc6\x21\xa1\x5f\x6a\x6c\x91\xd5\x05\xc8\x59\x9b\xe8\xbb\x80\x8a\x5b\x87\x6d\x3f\x99\xe2\x56\x30\x31\x84\x03\xdb\x16\xa4\x57\x5f\x1a\xbb\xea\x58\xab\x8e\xdd\x60\x30\x2c\x62\xd2\x06\xc4\xd5\x2a\xe9\x46\x37\x24\xf5\xb3\x76\x45\x13\xfd\x80\xef\x25\x63\xc8\xba\xa9\x91\x35\x56\x43\xbf\x19\x0d\x5c\x64\x4f\xaf\x81\xa4\x4a\xa5\x6f\xc4\x90\xf1\x20\xba\x0c\xd1\x3d\x83\xa5\xc4\x6b\x62\x45\xf6\x1a\xcb\xef\xe8\x44\xf7\x20\x35\xd3\xb5\x56\x31\xe9\xa6\xa6\x80\xea\xa3\xfa\xc8\xa8\xd2\xff\x6f\x58\xe2\x81\xf5\x70\x25\xc0\x82\xa3\xff\x28\x9c\x95\x31\x86\x91\x7f\xea\x50\x2b\x78\x3c\xd6\xfe\x1a\xf2\x9b\xe1\x52\x1e\x0c\x72\x8b\x8e\x60\x6c\x25\x76\xa1\xf3\xa8\xc4\x35\x26\x12\x25\x26\x21\x08\x74\x8b\xe9\xc0\x0b\xb7\x6d\x32\x4f\xc8\x1e\x58\x31\x6e\x34\x61\xa5\x4d\x27\x50\x06\xd4\x00\xb7\x37\xda\x27\x27\xd1\x04\x34\x1d\x6e\x72\x8c\x2c\x89\xf8\x7a\x71\x9f\x63\x7a\xe8\xa9\x07\x7e\x34\x7f\x90\x90\xfd\xa1\x90\x7f\x50\x3b\x84\x5a\x7b\xf6\x4b\x9d\xbc\xa2\xf1\x37\xcd\xd9\xcf\xfa\xa9\x86\xfe\x5d\xfd\x37\xe9\x7b\xb5\xb0\xcf\x58\x42\x59\x71\x92\xf5\x91\xb5\x76\x10\x56\x7f\xd0\x7c\xbc\x3c\x2f\xde\xaf\xee\xde\xee\x74\xbb\xbc\x2a\x3e\x43\x51\x9d\x17\x97\xab\xbb\x8b\x9d\x76\xd3\xfd\xbb\x9d\x7e\x99\xee\x3f\xec\x4e\x7e\x1b\x95\x9d\x3f\x66\x35\x55\xfe\x36\x58\xcd\xf0\x62\x9f\x42\xb2\xc7\xd6\x9e\x3e\x01\x65\x4f\xad\x3d\x79\x8c\xc5\x2c\x57\xb3\x9f\x01\x00\x00\xff\xff\xe2\xce\x5b\x59\xc7\x05\x00\x00") - -func runtimeSyntaxOcamlYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxOcamlYaml, - "runtime/syntax/ocaml.yaml", - ) -} - -func runtimeSyntaxOcamlYaml() (*asset, error) { - bytes, err := runtimeSyntaxOcamlYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/ocaml.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxOctaveYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x56\xdf\x6f\xdb\x36\x10\x7e\xd7\x5f\x71\x93\x9b\x25\x6e\x26\x29\xed\x0a\x6c\x13\xd6\x15\x5d\xb6\x00\x79\x68\x02\xac\x1b\x10\x20\xf2\x02\x8a\x3a\x59\x44\x28\x52\x20\x4f\x51\xbc\xd0\xfb\xdb\x07\x4a\xb2\x13\xbb\x9d\x9b\x6c\xd8\x80\xea\x45\xe4\xfd\xf8\x3e\xf2\xbb\xf3\x59\x13\xf8\x05\x4b\x34\xa8\x38\xda\x60\x02\x15\x51\x63\xd3\x24\x99\x0b\xaa\xda\x3c\xe6\xba\x4e\xfe\x58\x60\x21\x0a\xc1\x92\x5a\x70\xa3\x93\x5c\xea\x3c\xa9\x99\x25\x34\x89\x69\x15\x89\x1a\x13\xbb\x50\xc4\x6e\x93\xb9\x8e\x17\xac\x96\x1f\x87\xb9\x11\x75\x64\xb9\x11\x0d\xd9\x44\x73\x62\x37\x18\x7b\x53\xb4\x01\x38\x02\xdd\xfb\x83\x49\x30\x81\x5f\xcf\x7f\x3a\x0f\x26\x20\x14\x97\x6d\x81\xa0\x95\x5c\x80\x42\x2c\xb0\x00\xdd\xa0\x61\xa4\x8d\x3f\x7b\x1c\xc7\x50\x89\x79\x25\xc5\xbc\x22\xa1\xe6\xc1\x04\xf2\x56\x48\x8a\x84\x82\xb2\x55\x9c\x84\x56\x1b\x01\x6f\xfc\x49\x57\x7b\xc0\xc6\x26\x8d\x48\x10\x90\x78\x0c\xcc\xae\x73\x2c\x74\x15\x2a\x28\xb5\x94\xba\xc3\x02\xf2\x05\x1c\x4c\x83\x09\x74\x15\x23\x60\x06\xc1\x5e\x8b\x06\x98\x2a\x00\x8d\xd1\x06\x4a\x81\xb2\xb0\x20\x14\x58\x32\x42\xcd\xad\xe7\xa9\x5b\x49\x42\x0a\x85\xc0\x75\x5d\xa3\x22\x0b\x4a\x13\x74\xda\x5c\xfb\xa3\x06\xa5\x90\x48\x8b\x06\x53\x18\x2e\x1f\x04\x05\x12\x72\x4a\x03\x00\x00\xef\x55\xac\xc6\x14\xc2\x2c\x8b\xeb\x67\x61\x10\x98\x56\xa2\x1d\xbc\x13\x78\x4f\x8c\x70\x40\x5d\x49\xdf\x75\x5d\x3c\x57\x6d\xac\xcd\x3c\xb1\xba\xa4\x8e\x19\x1c\x85\x4d\x0a\xcd\x93\x9b\x57\xf1\x51\x7c\x94\xdc\x67\xc6\x15\xd5\xb2\xc7\x8b\xc0\xae\xac\x3d\x61\x7e\xb0\x92\xc2\xa1\x2a\xd6\x6b\x83\xd4\x9a\xde\xe4\xe6\x52\xe7\x4c\xba\x06\x8d\x15\x96\x50\xd1\x34\xcb\xf2\xf0\x6f\xc0\x44\xe9\x50\x5a\x1c\x5f\x3e\x5f\x94\xce\x76\x82\x78\xe5\x38\xb3\xe8\x34\x55\x68\x3a\x31\xf8\x06\xc7\x2e\xbc\xae\x12\xb2\x0f\x1d\x16\x85\x76\xbe\x2d\xa5\x2b\xb5\xe9\xcf\xab\x8d\x6b\x98\x19\x77\xe3\x2a\x37\xc8\xae\x1d\xd7\x8a\x84\x6a\x71\x17\x7a\xab\x3a\xa1\x8a\xab\xc6\x68\x5f\x0e\xb7\xb9\xbd\xe2\x12\x99\x6a\x1b\x8f\x7c\xb5\x15\x49\x66\xe1\x38\xf3\x97\xf2\x4e\x32\x8b\xab\x7e\x37\x70\x8d\x75\x3b\x5f\xb7\xef\x48\xbe\xa8\x73\x2d\xe3\x55\x57\xa7\x10\x5e\x46\x87\xc9\xf3\xd7\xdf\xff\xf0\xc5\x9f\x7b\x5f\xba\xdf\x67\x2e\x7d\xbd\x4e\xfe\xd1\x30\x7e\x8d\xb4\x95\x9b\x8f\xd6\x14\xc2\x83\x2c\xbb\x73\x59\xb6\x9c\x86\xbb\x42\x0e\x5c\x96\x4d\x77\x87\x5c\xba\x2c\x9b\x4d\xd7\xc4\xc7\xba\xae\xd9\x26\x6d\x0a\xe1\x57\x6b\xff\x59\x5b\xe7\x68\x9e\xd8\x8a\x2f\x92\x77\x8c\x2a\xac\x19\x09\xce\x64\x74\xac\x95\x25\xb6\xd5\x96\x7c\x34\xc6\xaa\x67\x18\x2b\x74\x79\x14\x7d\x37\x3b\x74\x47\xb7\x7e\xc1\xa2\xf2\x6d\x74\x32\x7b\xee\x65\x76\xfb\xf1\x7e\xb8\x33\xb5\x11\x0e\xdd\xa9\x3b\x55\xa5\x3b\x63\x67\x0e\x1b\xeb\x0c\x32\x59\xb3\xdb\xe1\x2d\x54\x8f\x73\x2f\xb9\xd6\xbe\xe0\xdb\x98\xb9\xee\x15\xf0\x88\x64\x5a\x74\x25\x93\x16\x37\x0a\xfd\x7e\x98\x04\x4f\x95\x64\x4c\xfb\xa8\x06\xc3\x70\x19\x26\x80\x7f\x2c\x31\xd3\x37\x6d\x18\xae\x6d\xa8\x8a\x2d\x8b\x9f\x55\xfd\x51\xb3\x2c\xbe\xb7\x3e\x18\x26\xab\xe7\x21\x53\x83\x5c\x30\x79\x5c\x31\xaf\xdb\x5e\xf8\xb8\x38\x4f\x71\xc9\xf2\x52\x19\xba\xd9\xcf\xb2\xac\x37\xcc\x9e\x90\xec\x0b\xfb\xcd\xec\xee\xeb\xa5\xbb\xbd\x7c\x1b\x9d\xb0\xa8\xf4\x85\xbe\x7b\xb9\x74\xed\xc3\xfd\xab\xa5\xfb\xed\xe1\xfe\xdb\xe5\xaa\x53\x1f\x21\xd6\xfe\xb6\x56\xfb\xff\x48\xaa\x7e\xf0\xa7\x10\xc6\xf1\xe1\x23\x2f\xf8\xf9\xa8\x38\xfc\xde\x9f\xfa\xdf\xf2\x32\x7e\x91\xac\xf2\x36\xdb\xb7\xb7\x7d\x58\x89\xbd\xed\x4a\x3c\xfb\x84\xe6\xa4\x0b\xed\xc7\x93\xff\x3a\x70\x17\x17\x17\xee\xe4\xf4\xe2\xdd\xcf\xd3\xf4\x4d\xf8\x29\xaa\xc9\xff\x47\xb5\x77\xb7\xcd\xb5\xb7\xfc\xef\xee\xf5\x01\xd9\xe4\x5f\x90\xfd\x15\x00\x00\xff\xff\xc0\x0a\x9c\xc0\x1a\x0a\x00\x00") - -func runtimeSyntaxOctaveYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxOctaveYaml, - "runtime/syntax/octave.yaml", - ) -} - -func runtimeSyntaxOctaveYaml() (*asset, error) { - bytes, err := runtimeSyntaxOctaveYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/octave.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxPascalYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x54\x6d\x8b\x23\x37\x0c\xfe\x9e\x5f\x11\xd2\x85\x26\xb7\xcd\x5e\x0b\xa5\xd0\x7c\x09\xa5\xd0\x3f\x91\x49\x41\x63\x6b\x32\xea\x7a\xec\x41\x92\xf3\xd2\xd5\xfd\xf7\x62\xcf\xde\xbe\x24\xd0\x3d\x2e\x84\xb1\x2c\xcb\xf2\xf3\x3c\xb2\xdc\x51\x40\xbd\x8c\xb8\x99\x8f\x20\x0e\xc2\x6c\xe6\x51\xd1\xe9\x66\x36\x9f\xcf\xe7\x65\x35\xc2\x80\x9b\xf9\xa2\x69\x1e\x46\x90\xbb\xc5\x6c\xc6\x39\xa0\x4c\xeb\xeb\xf9\xb4\x77\xd1\x34\xed\x72\x4b\x9b\xa5\x28\x53\x3c\x18\x44\xa1\x67\xf3\x44\x1e\x9f\x4d\xe9\x13\xeb\xb3\xed\x7a\xe0\x1a\x56\x8d\x12\x54\x8d\x36\xa5\x80\x10\xad\xbd\x28\x4e\xf1\x14\xd5\x4e\x89\xbd\xc9\x00\x21\x94\x59\x48\xf1\x50\x3d\x0e\xd8\x53\x84\x50\x3d\x65\x85\xa2\xe2\x01\xb9\x8c\xbf\xfd\x6a\x42\xf1\x10\xd0\x5c\x66\xc6\xe8\x2e\xe6\x53\x6e\x03\x1a\x9e\x15\xa3\x47\xbf\x5a\x35\x4d\xbb\x78\xa6\x21\x0a\x8a\x03\x46\x7d\xc3\x05\xa2\x37\x90\xc1\x80\x19\x2e\xd6\xe2\x81\xa2\xb5\x8c\xf0\x68\x0e\x04\xcd\xa5\x28\x3a\x7d\x39\x3b\x4d\x5c\x6c\xa5\x98\xd1\x2a\xe3\xc9\xe7\xe9\x68\x3e\x99\x4f\xa7\xa8\xc9\x30\x08\x1a\x46\x6f\x45\x58\xeb\x12\x5b\x97\xa3\x53\x4a\xd1\x0e\x49\x93\x51\x67\x34\x8c\xa1\x22\x81\xea\xa6\xf2\x0f\x14\xb1\x92\xe3\x0e\x1c\x5a\x80\x16\x83\x0d\xc9\x5b\x4c\x6a\xa9\xfd\x07\x9d\x5a\xea\x2c\x45\x4b\x23\x32\x94\x73\x13\xdb\x08\xee\x11\xbd\x8d\x9c\x1c\xfa\xcc\x58\xac\x03\xc3\x60\x8c\xae\xc8\xc7\x38\x22\xa8\x31\x4a\xca\xec\x5e\x8a\x84\x6a\xd2\x07\x93\x9e\x4d\x7b\x8c\xa6\xc9\x4a\x91\x2d\x47\x52\xcb\x51\x29\x58\x16\x14\x3b\x96\xba\xf5\x85\xc7\x89\xb4\xb7\x73\xe2\x8f\x15\x15\x73\x01\x44\xcc\x93\x8c\xa9\x48\x71\x76\x38\xaa\xe1\x99\xca\x67\x2c\xd7\xc3\xba\x52\x52\xfa\x77\xa2\x5f\x27\xe1\x62\x14\x7b\x64\x52\xf4\x46\x91\x94\x5e\x03\x48\x2c\x50\xcb\xc0\x17\x8b\x78\xaa\x12\x64\x2d\x4c\x47\x64\xbd\x18\x03\x09\x9a\x60\xe8\x4c\x7b\x46\xf0\x05\xb5\xf2\xe5\x63\xa8\xad\xa4\x90\x15\x0d\x5a\x51\x06\xa7\x06\x81\x40\x0c\x44\x70\x68\x03\xb2\x39\x8f\x2e\x98\x1b\xc7\x3a\x7a\xec\x20\x87\xaf\x2c\xea\x25\xe3\x72\x35\xbb\xc4\x27\x60\x6f\x07\x8c\xc8\xe4\x8c\xa2\xc7\xb3\x85\xe4\x20\x58\xe9\x2c\x8b\x49\x14\xdc\x63\xc7\x65\x92\x82\xef\x46\xe7\x20\x04\x4b\x47\x64\x26\x8f\x36\xf5\xa5\x8d\x4c\x47\xd0\x5a\xc4\xd2\x9f\xa5\xb0\xb9\x0d\xe4\xa6\x41\x7a\x2c\x05\x85\xf2\x39\x90\x28\xb2\x31\x52\x54\x4e\x3e\x3b\x34\x81\x0e\x6b\x56\x49\x9d\x76\x21\x81\x9a\x8c\xe8\xaa\x8e\x68\xa2\xbe\x2e\x1e\x89\x35\x43\xb0\x53\x51\xfa\x9d\x42\xf5\x96\xc3\x3b\x81\x3a\x28\x77\x59\x39\xa3\x45\x0a\xef\xf5\x9c\x52\x4f\x4f\x44\xf9\x89\x02\x97\xbd\x20\xc3\xe2\xc5\x89\xd1\x6f\xe6\x0b\x8c\xfe\xd5\x35\xbd\x2c\xf3\xdd\xfe\xea\xd8\x87\x98\x87\x16\xb9\x9e\x7e\xb7\xfb\x79\xfd\xfb\x1f\xeb\xbf\x60\xdd\xed\xef\xaf\xf1\xbd\x0d\x6c\x77\xf7\xeb\xfd\xb6\x44\xef\xef\x97\xbb\x87\xaf\xe6\x6a\x5b\xe0\xe3\x9b\xc5\xd5\xf6\x26\xcd\xd4\x0b\xb7\x04\x7e\xa8\x3b\x9e\x7e\xf9\xe9\xcb\x35\x8f\xbb\x1b\x16\x2f\xf3\xeb\xdc\x93\x3a\x7f\xf6\x30\xe1\x6c\x9a\x87\x6f\x3e\xff\xc7\xeb\x63\xdf\x38\xe4\x91\xc6\xf7\x09\x5f\xc1\x7c\x07\x96\x91\xb1\xbc\x1c\xb7\x18\x9e\x9a\xe6\xee\x1a\xc6\x97\xff\xab\xe1\x50\x5b\xeb\x26\xcf\xe7\xcf\x1f\x6b\xf8\x71\x96\xa6\x59\x36\xcd\xa7\xeb\x4c\x4d\xf3\xa9\x69\x56\xdf\x91\x6e\xf9\xb4\x5a\x6e\x37\xbb\xbf\xef\xf6\xab\x6f\xe2\x38\xfb\x2f\x00\x00\xff\xff\x99\x9e\xdd\x36\x40\x07\x00\x00") - -func runtimeSyntaxPascalYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxPascalYaml, - "runtime/syntax/pascal.yaml", - ) -} - -func runtimeSyntaxPascalYaml() (*asset, error) { - bytes, err := runtimeSyntaxPascalYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/pascal.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxPatchYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x5c\xce\x4d\x0a\xc3\x20\x10\x86\xe1\xbd\xa7\x18\xa4\x8b\xfe\x60\x0e\xe0\x2a\x07\x91\x80\x89\xa3\x11\x8c\x0d\x76\x42\x09\xf4\xf0\x65\x92\x16\x43\xc0\xd5\xfb\x7c\xa2\x3e\x26\xa4\x75\x46\x0d\xb3\xa5\x61\x14\xc2\x21\xe1\x40\x1a\x04\x00\x00\x6b\xb6\x13\x6a\x90\xc6\x34\xd7\x6d\xf2\x71\xd1\xfb\xdb\x45\x0a\x51\x96\x84\x2f\xbd\x0d\x15\xf4\x25\x86\x91\x42\x41\xcc\x1a\x64\x67\xcc\xa3\xb9\xcb\x9f\x1d\xeb\x7e\xaa\xed\xf7\xfa\xb4\xf0\x23\x1d\x9c\xa1\xa0\xe3\xae\x6a\xff\x17\xa5\xce\xdb\x15\x53\x7a\xbe\x19\xdb\xb6\xda\x64\x03\x66\xb2\x9c\xf9\xe7\x0c\xdf\x00\x00\x00\xff\xff\xef\xe3\x40\xbb\xf5\x00\x00\x00") - -func runtimeSyntaxPatchYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxPatchYaml, - "runtime/syntax/patch.yaml", - ) -} - -func runtimeSyntaxPatchYaml() (*asset, error) { - bytes, err := runtimeSyntaxPatchYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/patch.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxPegYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8f\x41\x6b\xc2\x30\x18\x86\xcf\xf6\x57\x7c\x0b\x6e\x6a\x43\x32\xaf\x06\x67\x19\xec\xee\x65\xa7\xe5\x4b\x47\xac\x9f\x1a\x68\xd3\xd2\xc6\x0d\x47\x7e\xfc\xa8\x53\x27\xe8\x29\x90\x3c\xef\x93\xf7\xdd\xb8\x92\xc2\xa1\x21\x05\x0d\x6d\x93\x64\x4d\x81\x8a\xa0\x20\x01\x00\xe8\xdf\xbc\xad\x48\x01\x43\x94\x65\xd6\xd0\x76\xc8\x92\xa4\xdd\x97\xd4\xa9\x23\x21\xc0\xad\xc9\x07\xb7\x71\xd4\x2a\x60\xb9\xd6\xaa\x6b\x6c\x41\xca\x98\x54\xbf\x8a\x0f\x2b\x7e\xcc\xe9\x9c\x8a\xd9\xa7\x49\xaf\x81\xb9\x60\x27\x49\x51\xfb\x2e\x58\x1f\xa4\xdf\x57\xab\xa3\x09\x31\xd7\x5c\x98\x4c\x4f\xc5\xcc\xf0\x33\xd7\x1d\xaa\x55\x5d\xca\xba\xa1\xd6\x86\xba\xe7\xb4\xe0\x69\x96\x3f\x3f\x3c\x99\x28\x16\x71\x2e\xe2\xcb\x82\xdd\x34\x93\x5f\xb6\x67\x1f\xef\x36\xba\xb8\x1b\x2a\x9c\x2d\x8f\x7f\x6b\x9d\x1b\x93\x22\x9a\x9b\x82\x5d\x68\x9d\xdf\xf6\x10\x1b\x23\x22\xca\xa8\x73\x64\x66\x92\x22\x8b\xa3\xcb\xcd\xc8\x4c\xd2\xd1\x7f\xb6\xaa\xc8\x07\x05\x6c\x9c\xc7\xab\xfd\x13\x44\x81\x28\x64\x3a\x3c\x93\xa1\x5e\xd7\x0a\xd8\xfb\xf2\x6d\xa9\xb2\xcb\x0c\xdf\xef\x10\xc5\xce\xb6\xf2\x7b\xe7\x02\xfd\xe5\x81\x5d\xa9\xf8\xf0\x0e\xad\x80\x0d\x38\xf0\x08\x7c\xc0\x59\xf2\x1b\x00\x00\xff\xff\x2d\xa9\x92\x64\xe8\x01\x00\x00") - -func runtimeSyntaxPegYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxPegYaml, - "runtime/syntax/peg.yaml", - ) -} - -func runtimeSyntaxPegYaml() (*asset, error) { - bytes, err := runtimeSyntaxPegYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/peg.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxPerlYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x54\x5d\x6f\xe3\x36\x10\x7c\xcf\xaf\x50\x7d\x29\x8e\xbc\xf6\x1c\xa0\x8f\xe9\xa5\xee\x3f\x68\x81\x16\xe8\x43\x94\x00\x14\xb9\x92\x59\xf3\xcb\xe4\xca\x8e\xd0\xe9\x7f\x2f\x48\x25\x0e\x90\x1c\xee\xa1\x06\x2c\x50\xdc\xdd\xd9\xd9\x19\x8a\xa3\x75\xc4\x4b\xa2\xdb\x2e\x51\x76\x57\x57\x86\x98\x34\xdf\x76\x57\x5d\xd7\x75\x35\x18\x94\xa7\xdb\x6e\xd3\xf7\xdb\x74\xef\xfc\xc3\xf5\xa6\x45\xf6\xa4\x0c\xe5\xdb\x6e\xf3\xf8\xe1\xbb\xed\xa7\x1b\x41\xe1\xd4\xfd\x20\x77\x15\x43\x74\xb8\x96\x9b\xab\xab\x3c\x3b\x2a\xb7\x2d\xfb\x73\xb7\xb6\xd8\xf4\xfd\x20\x94\xd6\x94\x18\xca\xa9\xec\xa1\x58\x85\x9f\x30\xd8\x20\x0c\x7c\x34\x24\xa1\x85\x72\x8e\x32\xf6\xc2\xd8\x5c\xf7\x10\x13\xe2\x39\x20\xc7\xc8\x12\x2e\x16\xaa\x11\xb9\x43\x0c\x81\x34\x23\x16\xe4\x25\xb1\x84\x11\x83\x17\xba\x26\x20\x26\x0a\x12\x34\xda\x40\x06\xe4\x88\x09\x96\x10\x31\xfb\x24\x41\x42\xe9\x3d\xe2\x88\x93\x72\x78\x12\xa4\x61\x0b\x17\x58\x46\x92\x12\xa3\xd0\x81\x1d\xea\xe4\x11\x2e\xea\x03\x62\x3e\x48\xd9\xf7\x03\x2a\xfb\x89\x58\x68\xb8\x38\xd9\x80\x44\x94\xab\x3c\x48\x53\x4e\x48\xc9\x1a\xa4\x6c\x63\xb6\xbc\x20\x9d\x83\xf2\x10\xfb\x58\x18\x81\x18\x29\x47\x8e\x28\x94\x4f\x72\x58\xd6\xa2\xf3\x6c\x0d\xa6\x3c\x59\xf3\x9a\x27\x87\x45\x19\x93\xd7\xf4\x61\x09\xb3\x1f\x28\xb7\xb2\x61\x49\x31\xb3\x84\xb8\x9f\xca\x03\x31\x28\x18\x29\xd2\x19\x53\xc6\xd7\x9a\x50\x60\x4c\xc4\x25\xea\x83\x68\xed\x62\x95\x68\xf2\x6c\x3d\x61\xaa\x69\x53\xa6\x84\x3d\x3d\xc1\x06\xd3\x9e\x0c\x1b\x35\x3b\xfc\x1d\x6d\xb8\xcc\x7b\xa0\xa5\xe0\x60\x9d\x83\x53\x85\xe1\x28\x4c\xbc\x87\xb3\xe1\x00\x67\x0b\x53\xa8\x1a\x29\x27\x2a\xae\xdc\x55\x61\xe0\x0a\x2b\x86\x87\x3f\x34\x07\xcb\x24\x2a\xea\x44\x8c\x12\x0c\xb2\x3e\x49\x04\x7a\x62\xc4\x6a\x5e\xa2\xf0\x62\x67\x36\x48\x4a\x1f\x90\x6c\x22\xa4\x98\xaa\x98\x81\xc7\x1d\xd2\x5c\xf6\x38\xe2\x78\xc4\xf1\x09\x59\x55\x10\x12\xca\xb4\x03\x52\x99\xc8\x1d\xf4\x09\x26\xa2\x0d\x7a\x9c\x6d\x26\x14\x62\xf0\x9c\x03\x4e\x94\x0b\xe1\x6c\x83\xa9\x6d\x90\xd7\x69\xb3\xaf\xc5\x05\x45\xd7\x73\x88\x42\x74\x58\x69\x5c\x06\x2f\x24\x5c\x3d\x5e\xbe\x92\xf7\x95\xbd\x8f\x09\xc1\x80\x9b\xdb\x7c\x71\xba\x69\xdc\xd4\x2d\x7b\x3b\x32\xca\xde\x5f\x06\xce\xa4\x0c\xce\xd9\x32\xd5\xe8\xcc\xa6\x1e\xe4\x62\x03\x8a\x23\x4a\xa8\x95\xc4\x22\xa9\x26\x40\x89\x99\x51\x92\xb3\x42\x13\x2a\xdc\x3a\x3f\xca\xb1\xee\xb7\xb9\x9b\xb2\x85\x67\xb3\xa0\xcc\x43\xe1\x8c\xb2\xf8\x66\x46\x59\x8a\xd0\xca\xb9\xb5\x25\x93\x7f\x69\xcb\xe4\xdc\xb3\xc2\xcd\x7b\xce\x62\xa9\xeb\x3c\x07\xad\x98\x30\x7b\x55\x0e\x97\xa9\xe7\x20\x0c\x8d\xab\xbf\xcd\x8c\x36\x93\xc4\xdc\x6a\x4f\xca\xcd\x54\x70\x22\x8d\xb3\xb2\x2c\x92\x35\x72\x87\xb3\x0a\xac\x72\x56\x0b\xce\x2a\x87\xe7\xbe\x7d\x3f\x6c\x9e\xbf\xfd\x4a\x9a\x3c\x05\x7e\xbe\x00\x74\x0c\x6c\xc3\x4c\x20\x57\xda\xc3\x8e\xd5\xbc\x31\xe6\xfa\xa7\xfa\x71\xda\x11\x73\x70\x54\x0a\xe6\xc0\xd6\xe1\xbc\xb7\x8e\x40\x47\x04\x82\x63\x4c\xf5\x20\x62\x22\x68\x9f\xf0\x04\xdf\xd4\xc0\x5c\xa8\x71\x56\x35\xa0\x02\x6c\x51\x2b\x8d\x17\x1e\x89\xb4\x55\xae\xb1\xf8\xdc\xf7\xbf\x5c\xf8\x2d\x7e\x88\x75\x5b\xfc\x88\xbe\xdf\xca\x4b\x81\x35\x14\xd8\x8e\x96\xf2\x7a\x8d\xd5\x5f\x61\x95\xeb\x20\xf7\x7d\x7f\xfd\xeb\xf7\x0f\x9b\x4b\x80\x82\x69\xc8\x7f\xbd\x6e\xad\x37\x60\x77\xff\xf0\x02\xa8\x63\x28\xac\x02\x6f\x0b\x67\x1b\xa6\x9a\xbf\xe9\x7b\xb1\xfd\xd4\xf7\xb2\xdf\xe0\x78\xdc\xf5\x3d\xea\x1b\xd6\xf5\x3f\x75\xfd\xef\xba\xbe\xa9\xeb\x9b\x17\xce\x86\x46\x35\xbb\x46\xa4\xf8\x87\x9b\xed\xa7\x4b\x24\x65\x4a\x39\xea\xf7\x8c\xc5\x63\x15\xa8\xbb\xeb\x02\x9d\xe5\x5b\xde\x3f\x7f\x93\xb5\x6f\xee\xbd\x43\xfc\xf0\x16\xe5\xfa\xff\xa0\x3c\xde\xbd\x85\x79\xbc\xd3\x33\x7f\x03\xea\xd5\x97\xad\x57\x3a\xc7\xf7\x98\x5f\xbe\x74\x1f\xff\xf8\xf3\xb7\xdf\x3f\xbe\x85\xae\x9b\x5f\x43\xfe\x2f\x00\x00\xff\xff\xec\x33\x9f\xea\x07\x07\x00\x00") - -func runtimeSyntaxPerlYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxPerlYaml, - "runtime/syntax/perl.yaml", - ) -} - -func runtimeSyntaxPerlYaml() (*asset, error) { - bytes, err := runtimeSyntaxPerlYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/perl.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxPerl6Yaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x54\x4d\x8b\x1c\x37\x13\xbe\xcf\xaf\x68\xe6\xf5\x0b\xea\x05\x8f\x21\x07\x1f\x36\x0e\x1b\x42\x72\x08\x18\x42\x08\x21\x07\xf7\x06\x34\x52\x75\xb7\x32\xfa\x1a\x55\xf5\xf4\x36\x3c\x3f\x3e\x48\x33\x6b\x3b\xbb\x21\x0b\xab\x1e\x54\xaa\x7a\x3e\xaa\xa4\xd1\x79\x92\x2d\xd3\x7d\x97\xa9\xf8\xf7\xbb\x9d\x25\x21\x23\xf7\xdd\xae\xeb\xba\xae\x46\xa3\x0e\x74\xdf\xed\xd5\x30\x1c\xf2\xfb\x37\xa8\x1f\x7f\xfb\x86\xf7\x6f\xfa\xfd\x6e\x57\x16\x4f\x7c\xdf\x12\xde\x76\xd7\x62\xfb\x61\x38\x2a\x6d\x0c\x65\x81\xf6\xba\x04\x68\xd1\xf1\x1b\x1c\x5d\x54\x16\x21\x59\xea\x61\x94\xf6\x9e\x0a\x66\x65\x5d\xa9\x7b\x48\x19\x69\x8d\x28\x29\x49\x0f\x9f\x98\x6a\xa4\x7f\x40\x8a\x91\x8c\x20\x31\xca\x96\xa5\x87\x55\xc7\xa0\x4c\x3d\x80\x94\x29\xf6\xa0\xd1\x45\xb2\x20\x4f\x42\x70\x84\x84\x25\xe4\x1e\xa4\xb4\x99\x91\x46\x5c\xb4\xc7\x93\x22\x03\xc7\xc2\x70\x82\xdc\xf7\x18\x95\x89\xe2\x51\x25\x26\xf8\x64\x4e\x48\xe5\xd4\x63\x22\x51\x06\x3e\x4d\x2e\x22\x13\x95\xaa\x1f\x79\x2a\x19\x39\x3b\x8b\x5c\x5c\x2a\x4e\x36\xe4\x35\xea\x00\x35\x27\x16\x44\x12\xe4\x92\x24\x81\xa9\x5c\xfa\xe3\x76\x4d\x5a\x17\x67\x31\x95\xc9\xd9\x2f\xe7\xfa\xe3\xa6\xad\x2d\xd7\xe3\xc7\x2d\x2e\xe1\x48\xa5\xa5\x1d\xb7\x9c\x8a\xf4\x50\x9f\x26\x7e\x24\x01\x45\xdb\xab\xbc\x62\x2a\xf8\x37\x10\x8a\x52\xb9\x72\x32\x27\xd5\xe0\x52\xb5\x66\x0a\xe2\x02\x61\xaa\xc7\xa6\x42\x19\x33\x3d\xc1\x45\xdb\x56\x81\x4b\x46\x3c\xfe\x4a\x2e\xe2\x44\x1b\xe3\xe4\xbc\x87\xd7\x2c\xf0\x14\x27\x99\xe1\x5d\x3c\xc1\x3b\x16\x8a\xd5\x13\xed\x55\xad\xd7\x3f\x54\x43\xe0\x59\xb4\x20\x20\x9c\x5a\xc7\x78\x52\xb5\xda\x44\x02\x8e\x16\xc5\x5c\x7a\x44\x7a\x12\xa4\xda\xac\x4c\xf1\xb9\x7d\xc5\x22\x6b\x73\x42\x76\x99\x90\x53\xae\x26\x46\x19\x1f\x90\x17\x9e\x71\xc6\xf9\x8c\xf3\x13\x8a\xae\x45\x48\x69\xdb\x06\xa2\x32\xe9\x1f\x60\x2e\xb0\x09\x4d\xe0\x79\x71\x85\xc0\x24\x90\xa5\x44\x5c\xa8\x30\x61\x75\xd1\x56\x18\x94\xab\xca\x12\x6a\x32\x83\x4d\x9d\x3b\x30\xd1\xa9\x2d\x6d\x97\x94\xaf\x83\x14\x2a\xed\x50\x79\x87\x94\x11\x2d\xa4\xf5\x57\x3e\xf7\xb6\xb9\xda\xfc\xe4\xd9\x8d\x02\x9e\xc3\x67\xa9\x85\xb4\xc5\x5a\x9c\x50\x8d\x2e\x62\xeb\xc8\xb2\x8b\x60\x4f\x94\x51\x33\x49\x54\xd6\x4d\x3a\xa7\x22\xe0\xec\x9d\x32\x84\x5a\xee\xaa\x1c\x7c\xae\xfb\x4d\x71\xf3\x94\x65\xb1\x1b\x78\x39\xb2\x14\xf0\x16\x5a\x1b\x78\x63\x65\xb4\xf7\x57\x48\xa1\xf0\x0c\x2b\xe4\xfd\xcd\xdb\xd6\x6d\x29\xd8\x20\x65\x89\x46\x0b\x61\x09\x9a\x4f\x58\xa2\xb2\x34\x5e\xfb\xd9\xcc\x6f\x4a\x7a\x2c\x2d\xe3\xa2\xfd\x42\x8c\x0b\x19\xac\xda\x89\xca\xce\xf6\x0f\x58\x75\x14\x5d\x8a\xde\xb0\xea\x12\x6f\x68\xc3\x70\xdc\xdf\xee\x76\xa5\x4a\x81\xa2\xdc\x2e\xb8\x49\x51\x5c\x5c\x08\xe4\xb9\x2d\x6e\xac\xcd\x1a\x53\xa9\xff\x54\x2f\x9f\x1b\xb1\x44\x4f\xcc\x58\xa2\x38\x8f\x75\x76\x9e\x40\x67\x44\x82\x17\x4c\x75\xf0\x30\x11\x4c\xc8\x78\x42\x68\x1e\x60\x61\x6a\x9c\x75\x0d\xe8\x08\xc7\xfa\x1f\x34\x32\x19\xa7\xfd\x8d\xc4\xac\x19\x8e\x61\xbc\x66\x46\x49\xb5\x9c\xbb\x50\xc4\x3a\x53\xc4\x0f\xbf\xff\xfc\xf1\x47\x84\xc5\x8b\x43\xa1\x3a\x36\x8c\x40\x32\x27\x5b\x81\x9e\x7f\xf9\xa5\x64\xb0\x6e\xe0\x5f\x03\x39\x4b\x51\xdc\xe8\xa8\x5c\x5f\xb7\xfa\xc7\xa2\x4b\xd5\xff\xe9\xcd\xf7\xff\x7f\xdc\x7f\xde\xa6\x68\xeb\x23\xd9\x61\x18\x86\xe1\x0f\xbc\xed\xbf\x84\xae\xcf\x63\xf7\xe9\x71\x77\x2b\x6b\x52\x64\xd1\x51\x0e\x2c\xc5\xc5\xa9\xea\xd8\x1f\xee\x86\x3d\xce\xe7\x61\xc0\xe1\x6e\x18\xf0\xcc\xc0\xd2\xa8\x17\xdf\xf0\x38\x3c\xbe\x3b\xdc\xbd\x7b\x8e\xe4\x42\xb9\x24\xf3\x9a\x98\xfa\xb3\xda\xd7\x7d\xd7\x45\x5a\xfb\x97\x04\xbf\xfd\x4f\x5a\xe1\xd6\xdb\xff\x1d\xee\x5e\x5b\x70\x08\xda\x94\xf4\x1a\xef\xc3\x87\x9f\x7e\xf9\xed\xd7\x8f\x2f\x91\x5e\x6c\x7e\x85\xf6\x77\x00\x00\x00\xff\xff\xd5\xbb\xe9\xc6\x73\x06\x00\x00") - -func runtimeSyntaxPerl6YamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxPerl6Yaml, - "runtime/syntax/perl6.yaml", - ) -} - -func runtimeSyntaxPerl6Yaml() (*asset, error) { - bytes, err := runtimeSyntaxPerl6YamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/perl6.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxPhpYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x56\xef\x8f\xdb\xb8\x11\xfd\xdc\xfd\x2b\xbc\xbe\x43\x42\xee\xc6\xde\xeb\xaf\x00\xe7\xc4\x2b\x04\xd7\xdc\xa7\xa0\x2d\xda\xbb\x0f\x3d\x51\x1b\x50\xd4\xc8\x22\x4c\x91\x0a\x39\xf2\xc6\x77\x2f\xfd\xdb\x0b\xca\xde\x1f\xa9\x77\x71\x82\x20\x5b\xe4\x90\x33\xf3\xe6\xcd\xa3\x5a\xeb\x88\xf7\x03\xad\x66\x43\x37\x9c\x9d\x35\xc4\x64\x78\x35\x3b\x9b\xcd\x66\xb3\x3c\xe7\x75\x4f\xab\xd9\x5c\xa9\xe5\xd0\x0d\xe5\x9f\xfe\xfc\x97\xbf\xa6\xff\x56\xc5\xb7\xf3\xb3\xb3\x38\x3a\x4a\xab\xc9\x70\x31\x4b\xfb\xbe\x0e\x6e\x19\x06\x8a\x9a\x43\x5c\xcd\xe6\x6f\x71\x3d\x3f\x4e\x52\x8c\x87\xa1\xf2\xe6\xbc\x5a\x5e\x14\xf7\x13\xc7\x55\xac\x37\xab\xd9\x5c\x14\x56\xbe\x2d\xaf\xaa\x42\x68\x51\xd7\x11\x26\x06\xbf\xef\xd1\x34\x91\x52\xc2\x30\x38\x62\x44\xd2\x88\x6c\x8d\x23\x24\xdb\x10\xc6\xc6\x06\x59\xa0\x16\x3a\x91\x68\x83\x67\x59\xa0\x11\x16\x41\xc2\x6e\xe0\x82\xd9\x7e\x1a\x03\x13\xa2\x2c\x60\xb4\xf0\x3b\x9d\x30\xb0\x0d\x5e\xc2\x90\x67\x8a\x30\x96\x09\x26\x88\x86\xe0\xe0\x36\x31\x8c\x83\x44\x23\x34\x6b\xe1\x6c\x9a\xf6\x03\x39\x10\x6b\xeb\x12\x5a\x0f\xab\x5d\xd8\xc0\x46\x38\xb0\x04\xf5\xa2\xa6\x46\x16\x68\x2d\xb9\x26\x11\xa3\xb5\x1b\x61\xf4\xe4\x04\x63\x24\x89\x1c\x16\xda\x10\x7b\x08\x2b\x8b\x36\xea\x9e\x30\x3d\xb3\x75\x57\xfe\x71\xf1\xba\x42\x17\x61\x61\xfb\x0d\xac\x17\xc3\xc8\x48\x12\xdb\xba\xc1\x96\xf6\x1b\xf2\x70\xba\x26\x07\x47\x1b\xf2\x0d\x9c\x15\x7e\x2b\x0b\xf4\x5a\x58\x8f\x01\x71\x2b\xd1\x93\x1f\x85\x65\xea\xf3\x38\xb1\xd0\xa0\x28\xe1\xf5\x0e\x3e\x88\x83\x2f\x24\x13\xed\xc0\x12\x41\x38\x0c\x2c\xa6\x4c\x31\x21\x31\xf2\x30\xb2\xc4\x20\x74\xd4\x3d\xac\xe1\x31\x12\xf2\x1d\x36\x19\x7a\x59\xe0\x13\xa2\x18\xc0\x18\xeb\xbd\x44\x12\x1c\xed\x96\x64\x81\xa4\xfb\x01\x89\x84\x99\x92\x75\x64\x58\x22\xf5\xda\x39\xa4\x30\x46\x43\x48\x83\xf6\x48\x1c\x83\xdf\x20\x8d\xa2\xc6\x80\xbe\xd7\x71\x2f\xc1\xf4\x99\x75\xae\x26\xdb\x9e\xc0\x51\x9b\x2d\x46\xe1\x64\x81\x9d\x8e\xd8\xd9\x86\x02\x6e\xeb\x28\xc5\x6c\x79\x81\x6b\xf9\x24\x67\x96\xf4\x99\xc9\x37\xd4\x7c\x45\x9e\x3a\x34\x7b\x34\x76\x87\x8e\x7b\x87\x8e\x74\x23\x28\x97\xbf\x0d\x21\xd7\x9b\x2d\x3b\x02\xeb\x3a\x3f\x8f\xc6\xe8\x04\xe9\x5c\xc4\x38\x59\xc9\x27\xbc\x0e\x91\x86\x18\xcc\x57\x9e\x0e\x88\x22\xf1\xde\xd1\x53\x81\x0e\x64\xac\x76\xab\xd9\xfc\x45\x79\xf3\xa6\x2c\x57\x69\xd0\x86\x56\x55\x55\x5d\xbc\xf9\x3a\x99\xd5\x6c\x5e\xae\xd6\xd5\xdd\xa0\x6d\xc8\xb3\x6d\x2d\xe5\x9e\x11\xda\x31\xea\x8d\x09\x2e\x44\x74\x64\x37\x1d\xa3\x8b\xd4\xde\x91\x22\xf8\x4d\x43\xc9\x20\xf7\x29\x82\x37\xce\x9a\x2d\x82\x6f\x83\x19\x13\x82\x77\x41\x37\x08\xbe\x0f\x63\xa2\xb0\xa3\x88\x64\x7f\xbd\xab\x4b\x34\x87\xd8\xc1\x3a\x6e\x88\x91\x65\x00\x3b\xed\x46\xc2\xad\x6d\xb8\x93\xeb\xbb\x88\x4c\xf0\x89\xb5\xe7\x65\xe2\x68\x7d\x6e\x56\x35\x2f\x6f\xd4\xbc\xba\x50\xf3\x13\x1b\x3f\xf6\xf5\x21\xf4\xc2\xca\x6f\xca\xef\x16\xdf\xbf\x5b\xfc\x58\xfd\xf6\xfa\xd5\xeb\x2f\xcf\xec\xb7\x1c\x63\xc6\x40\xb4\x3c\x88\x4c\xb7\x8e\x8f\x7f\x36\x96\x61\xba\x18\x7a\x92\xab\xab\xab\xf2\x66\xf6\x87\xea\xf2\x61\x8f\xbe\x27\xcf\x59\x56\xce\x17\x8b\xe5\x65\xb1\x58\xdc\x43\xdf\x50\xab\x47\x37\xcd\x29\x55\x88\xa1\x1b\xb0\x96\x6a\x3e\x23\xdf\xac\xd5\x5c\xa9\x87\x22\x3d\x60\xbd\x34\x4e\xa7\x94\xc3\x28\xf5\xe2\xd7\x77\x8b\x5f\xbe\x5b\x7c\xff\x71\x51\x5d\x4a\xa5\xc4\x29\x0b\x94\xaa\x45\xa4\x4f\xa3\x8d\x04\xeb\x8d\x1b\x1b\x92\xe2\x63\xf0\x86\x64\xa1\x54\x7d\xb7\xe0\xa0\xac\x93\x75\xe6\xf5\xe4\x02\x07\xda\x26\xb4\xa3\x3f\x74\x0e\x99\x2e\xc0\xe8\x44\x38\x06\x0e\xfa\x6c\x19\xe9\xd6\xb2\xe9\xee\xcd\x75\xca\xd3\xd6\x13\x9a\x80\x86\x8c\xd3\x93\xef\xdc\x3c\x96\x61\xb3\x9a\xb5\xda\x10\xca\xf7\xa0\xea\xb3\xa1\x83\x04\xe9\x18\xf5\x3e\xcf\xe2\x80\x35\xea\x10\x1c\x2c\x53\x9c\x5a\x60\x17\x6c\x23\x1f\x05\xfc\x04\x1e\x47\x38\x94\x52\xaa\xba\x5c\xad\x9e\x64\x69\x4e\xb0\x7c\xb7\xf8\xa5\x7a\x84\xdd\x04\xdd\x13\x1b\x4f\x10\x3f\xd8\x94\x6f\xa0\x54\x82\x52\x12\xaf\xaa\xc7\xb8\x2d\xb7\xb4\xbf\x0d\x71\xea\xee\x8d\x0b\xb5\x76\x18\xc6\xda\x59\x83\x21\xda\x9d\x66\xc2\x10\x43\x3e\xad\xa8\x41\x62\xcd\xd6\x60\xe2\x95\xbc\x6f\x2e\xd6\x4c\x47\x8e\x08\xdb\x0f\x6e\x7a\x49\xd0\x75\xca\x82\x93\x31\xcb\x2c\x34\x14\x5a\xd8\x16\xe4\x12\x09\xdb\xca\x02\xe4\x1b\xdb\x4e\x1d\x35\xb5\x2c\xc6\x44\x19\x7d\x4f\xb7\xe0\x2e\x86\x5b\x18\x9d\x0b\xc3\x71\x8f\xdb\xce\xba\x1c\x48\x06\x58\x90\x6f\x64\x21\xda\x10\x49\x9b\x4e\x16\xcf\xa6\xef\xe9\x56\xa9\xf4\x88\x67\x07\x6c\xe5\xa9\x72\x88\x3a\x92\xde\xe6\xbc\xd8\xfa\x91\xb0\x09\x1c\x10\x89\xc7\xe8\xe5\x49\x33\xe5\xca\xe6\x35\x1c\x47\x42\xab\x5d\x22\xf8\xd1\x39\xfc\xf4\xaf\x9f\xdf\xe3\xc7\x77\x1f\xfe\xfd\x1e\x7f\xff\xf9\xc3\x87\x93\x85\xb9\xc6\xb9\x04\xeb\x63\x21\x04\xae\x70\x89\x05\x94\xba\x80\x52\x65\xf5\x7c\x87\xe7\xe6\x7e\x46\xb6\x94\xfa\x96\x3b\x9b\x30\xe8\x48\x99\x7c\xe4\x5a\x1c\xc7\x16\xd7\x72\xfe\xec\x67\x83\x58\x5f\x63\xbd\x5e\xe3\x7c\xbd\xc6\xf4\x83\x17\x2f\xa0\x54\xbe\xb1\x5a\x61\x8d\xc5\x35\x94\x3a\x97\x4f\x10\x76\xa7\xef\x3c\x3f\x46\x76\xf1\xf1\x31\xb2\x27\xfe\xca\x9c\x6f\x26\x5f\xce\x59\xa9\xfb\xac\xb1\xc4\x2b\xbc\x39\xcd\xfd\x91\x02\x8a\x5c\xb6\x25\x26\x21\x94\x17\x6a\x8e\x97\xf7\x23\x2f\x2b\x79\xf1\xf2\x74\xed\xa1\xae\x3f\x74\xfa\xd0\x33\x4a\x95\xba\x6e\x7d\xe4\xdd\x4b\xa5\xd4\x34\x50\xfd\x5f\xa4\x75\x3e\x19\x89\xd3\x21\xb1\x12\x4a\x55\x50\xea\x37\x28\xf5\x05\xa5\x90\x95\x3c\x95\x43\x71\x83\x47\x87\x8d\xbc\xba\x5a\x5e\xfc\xae\xd1\x37\xa7\x36\xd3\x6b\xbe\x12\xeb\x98\x97\x5c\x29\x75\x34\xca\x17\xf9\x66\xca\xe1\xe2\xea\x61\xec\xf0\x45\x38\x2b\xab\xb3\x13\xbd\x7c\xa4\xc3\xc5\x53\x6a\xfa\xd4\x49\xfb\xf6\xfc\x6f\xff\xf8\xe1\xa7\xff\xfc\xf3\xfd\xf2\x32\x4f\xff\x2f\x00\x00\xff\xff\x13\xf8\x60\xe7\xaa\x0a\x00\x00") - -func runtimeSyntaxPhpYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxPhpYaml, - "runtime/syntax/php.yaml", - ) -} - -func runtimeSyntaxPhpYaml() (*asset, error) { - bytes, err := runtimeSyntaxPhpYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/php.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxPkgConfigYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8f\x4d\x4b\x03\x31\x10\x86\xcf\xcd\xaf\x18\xc2\x1e\xba\x2e\xbb\x78\x35\x20\x22\xf5\x58\x3c\x14\xf4\xe0\x66\x2d\x69\x3a\x6b\x07\x76\x37\x71\x92\x56\xaa\xf1\xbf\x4b\xaa\xf6\xd4\xdb\x03\xcf\xfb\xce\x47\x4f\x03\xc6\xa3\x47\x05\xde\x0a\xb1\xc5\x88\x36\x2a\x10\x00\x00\x59\x4d\x66\x44\x05\x52\xeb\xc6\xdb\x42\x0a\xc1\xfb\x01\x83\x3a\xe9\x1a\x3c\xa3\x67\x67\x15\xc8\xd7\xf9\xa3\x19\x31\x3d\x60\xb0\x4c\x3e\x92\x9b\xd2\xd3\x6a\x99\x9e\x91\x43\xe6\x85\x9b\xfa\x81\x6c\x0c\x69\xd1\x0f\xe6\x2d\x94\x4a\x5e\x18\xb1\xc2\xf7\x3d\x31\x86\xb4\xa4\x4d\x28\xe7\x79\x27\xd3\xc1\x44\x2c\xef\xce\xf9\x70\x1c\x37\x6e\x68\x9c\x47\x36\xd1\xb1\x02\x79\xfb\xaf\x68\x8b\x53\xa4\x9e\x90\x9b\x83\xe1\xd3\xd1\x85\xd6\x5f\xed\x7d\xfd\x62\xea\xcf\x75\xf7\x07\xd7\xf5\xcd\xba\xbb\xd2\xfa\xfb\xdc\x9b\x72\xb1\xb6\x3b\xc3\xcd\xc7\x8e\x22\x06\x6f\x6c\x7e\xba\x6d\xd5\x2f\x76\x5d\x55\x5c\x48\x2b\x90\xb3\x0a\xaa\x04\xd5\xac\x92\xe2\x27\x00\x00\xff\xff\x0d\x58\x66\xca\x49\x01\x00\x00") - -func runtimeSyntaxPkgConfigYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxPkgConfigYaml, - "runtime/syntax/pkg-config.yaml", - ) -} - -func runtimeSyntaxPkgConfigYaml() (*asset, error) { - bytes, err := runtimeSyntaxPkgConfigYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/pkg-config.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxPoYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\xce\x4b\x6a\xc4\x30\x0c\x06\xe0\xf5\xf8\x14\x42\x2d\x4c\x1e\x8c\x0f\xe0\xcd\x1c\x24\x4a\xc0\xe3\xa8\x19\x43\xec\x18\x5b\xa5\x94\xfa\xf0\x25\x99\xbe\x16\xdd\x4a\xdf\x2f\xfd\x2f\x7e\x65\x79\x4f\x6c\x20\x6d\x4a\xcd\x2c\xec\xc4\x80\x02\x00\xd8\x57\xd1\x06\x36\x80\x44\x3a\x6d\x72\x7d\x46\xa5\xf2\xeb\xca\xc5\x1c\xe0\x02\x29\x73\xca\x9b\x3b\xc4\xad\x09\x65\xf1\x73\x0d\x65\x29\x92\x5b\xa2\x1b\x7e\x29\xb7\xc5\x22\x36\x8a\x2e\x92\x7d\x5c\x76\x8d\x0d\x11\x91\xae\xc3\x44\x38\xb6\x1d\x61\x3d\xff\x4c\xce\x63\xdb\x9d\xbf\xb3\x25\xb1\xf3\x76\x3d\x3e\x10\xe9\xeb\xef\xcd\x10\x38\x8a\x01\x6c\xa6\x3a\x0c\xa6\x24\xeb\xd8\x8c\x63\xfb\xd4\x0c\xd3\xc7\xa8\xbb\x76\x6f\xfb\xb0\x3e\xce\x1c\xe5\xe2\xee\x36\xeb\xb7\xbb\x17\x7e\x60\xc0\x3f\xb9\xfe\x3f\x6d\x00\x4f\x3d\xf4\x15\xfa\x53\x8f\xea\x33\x00\x00\xff\xff\x13\x06\x8b\x95\x2b\x01\x00\x00") - -func runtimeSyntaxPoYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxPoYaml, - "runtime/syntax/po.yaml", - ) -} - -func runtimeSyntaxPoYaml() (*asset, error) { - bytes, err := runtimeSyntaxPoYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/po.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxPonyYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x94\xcd\x72\x9b\x3e\x14\xc5\xf7\x3c\x05\x61\xfe\x1f\x40\x8a\xed\xae\x3a\x61\xfc\x31\x99\x69\xbb\xcd\xa6\xab\x20\xe2\x11\x70\x89\xd5\x82\xc4\x48\x17\x3b\xee\x9c\x87\xef\x80\x53\xbb\x69\x13\x0a\x0b\x24\x9d\x9f\x74\xc4\x11\x97\x5a\x35\xc4\xc7\x8e\x52\xbf\x33\xfa\xe8\x79\x15\x31\x95\x9c\xfa\x9e\xef\xfb\xfe\x20\x6a\xd9\x52\xea\x07\x42\xcc\x06\xe0\x9f\xc0\xf3\x6c\xdf\x90\x4b\x47\x20\xf1\x1d\x4b\xa6\x96\x34\x8f\x4c\x11\x0e\x6b\x41\x69\x26\x5b\xcb\x92\xc0\x56\x2a\x46\x67\x55\xab\x58\xed\x09\x65\x23\x9d\x83\x63\xdb\x97\x0c\x59\xb2\xb1\x91\x10\x45\xf0\xc6\x62\xa5\x69\x3b\xd5\x90\xdd\x2a\xcd\x56\x69\xa7\xca\x29\xba\x77\x34\x25\xef\xa5\x45\x43\x0c\x6a\x0b\xaa\xa6\x40\x4d\x07\x14\x84\xba\xd7\x53\x94\x72\x06\x6c\x35\x2c\xd5\xd8\xcb\x06\x85\x79\x02\xcb\x47\x94\x46\xbb\xbe\x9d\xdc\x49\x61\x49\x7e\x1b\x40\x56\xba\x27\x58\xe2\xde\x6a\x90\xb5\xd3\x69\xa8\x1a\xbc\x23\x0d\x6a\x1c\xa9\x7a\x7c\x80\x74\x85\x56\x72\xb9\xc3\x61\x47\x76\xc8\xfb\x88\x83\xe2\x1d\xa4\x83\xa5\xd2\xec\xc9\xc2\x14\x5f\xa9\x64\x34\xb2\x2d\x2a\x39\x08\x95\x7a\x24\xc7\xa6\x86\xaa\x2b\xaa\xa7\x2c\x0f\x3b\xd5\x10\x2a\x03\x4b\x1d\x49\x46\xaf\x59\x35\xa8\x8d\x85\x7a\x33\x9c\x50\x88\x0d\x56\xeb\xe8\x0d\x0d\x10\xe2\x3f\x08\xf1\x0e\x42\x3c\x5c\xa0\x63\x5b\x98\x66\x66\x3a\xb2\x92\x8d\x3d\xa1\x09\x84\xb8\x86\x10\x31\xe6\x10\xe2\x0a\xff\x62\xb9\xc4\x7a\x3d\x35\x69\xb5\xc2\xd5\x0a\xcb\x15\xd6\x2b\x2c\xf1\xfa\x26\x4e\xa7\x07\xe5\x34\x43\x1b\x86\xd4\x15\x8c\xc5\xd3\xcb\xf4\x4f\x45\x31\xc2\xdb\x38\xbb\x4d\xee\xf3\x6c\x2b\x93\xef\xb7\xc9\xfd\x22\xb9\x11\xe2\xff\x3c\xfe\x95\x1e\x4e\x9d\xe5\xa5\x0a\x76\xca\xbd\x26\xcf\x0a\x63\x9a\x9f\x8c\xed\x09\xb5\x6c\x5e\x7e\xb5\x67\x52\xf7\x6d\x41\xf6\x99\x0d\x17\x45\xb6\x48\xde\x6f\xf3\x38\x42\xb8\x30\xd9\x22\xf9\xf0\xdc\x7e\xca\x16\xc9\x8d\x4c\xea\xdb\xe4\xf3\x69\x64\xe8\x6f\xf3\xeb\x50\x88\xd9\x73\x33\xda\x84\x21\xe1\x53\x14\x0a\x31\xe4\x99\x44\x9b\xb3\x10\xbd\x6a\xed\x86\x62\x7b\x1c\xac\x83\x71\xce\x0c\xd9\x83\x08\xf2\x28\x16\xc1\x85\x6d\xc7\x34\xc7\xee\x70\x39\x96\x76\x7c\xfb\xf1\x1e\xf9\x38\x38\xab\xa4\xab\xb3\x76\x19\x3d\xfd\x48\xfc\x2c\xf7\x7e\x5b\xd5\x0f\xc2\x07\x64\x59\xea\x3a\x59\x52\x9a\xe7\xd1\x7c\x3e\x8b\xff\x6a\x3d\x17\xe2\x4f\x4b\x11\xcf\x27\x0c\xd9\x54\x26\xf5\x83\x2f\x77\x1f\xef\xd2\x4d\xe0\xfd\x08\x00\x00\xff\xff\xea\x67\x0e\xde\x0d\x05\x00\x00") - -func runtimeSyntaxPonyYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxPonyYaml, - "runtime/syntax/pony.yaml", - ) -} - -func runtimeSyntaxPonyYaml() (*asset, error) { - bytes, err := runtimeSyntaxPonyYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/pony.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxPovYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x52\xdb\x8e\xd3\x30\x10\x7d\xcf\x57\x84\xb2\x42\x6d\x25\xda\xf7\x70\x91\xf8\x02\x10\x0f\x48\xa8\x53\xca\xc4\x99\xa4\x06\xc7\x63\x8d\x27\xd5\x46\x0c\xff\x8e\x9c\xad\xb4\x65\xa5\x5d\x3f\x1d\x4f\xce\x65\x72\x92\xde\x07\xd2\x39\x51\x53\x27\xbe\x54\x55\x47\x4a\x4e\x9b\xba\xaa\xeb\xba\x2e\xcf\x22\x8e\xd4\xd4\x2b\x80\xdd\x3a\xf1\xc5\xbe\x7c\xfe\x66\x89\x2f\x82\x73\x81\x5f\x3f\x7d\xdf\xdc\xad\xaa\x4a\xa6\x40\xb9\x59\x34\x6f\xeb\x24\x94\x84\x5d\x53\xaf\x7e\x1c\x0e\x4d\x4e\xe8\xa8\x39\x1e\xb7\xaf\x6f\x2f\xeb\x8e\x5c\x40\xa1\xcd\xea\x2a\xca\x8a\x4a\x23\x45\x5d\xb2\xda\x75\x4e\x67\x12\x32\x37\x07\x1f\x3b\x12\x53\xc1\x98\x03\x2a\xd9\x88\x2a\xfe\xde\x84\x8b\xc2\xb2\xc3\x40\x1b\x80\xf6\x39\x23\x16\x3d\xf3\x20\x98\xce\xde\x59\x60\x87\xea\x39\xda\x94\x4c\xfc\x70\x56\xeb\xbc\x90\x5b\x46\x2e\xf8\x94\xa8\x3b\xb5\xf3\x4b\x76\x3d\x0f\xa7\x52\x97\x15\xc0\x7d\x9f\x49\x17\x88\x41\x4d\x86\xd6\x3a\x9f\x15\xa3\xa3\x87\x85\x7b\x96\xf1\xd6\xcd\x77\x14\xd5\xf7\x9e\xa4\xb4\x53\xfc\x94\xee\x75\x12\x7a\x96\x54\x38\xa1\x6c\x7a\xca\x3c\x89\x23\x6b\xd1\xfd\x1e\x84\xa7\xd8\xbd\xa8\xe9\x79\x30\x6e\x7f\x91\x53\x73\x38\x92\xe0\x7f\x2f\x35\x8f\x2d\x87\x1d\x27\x12\x54\x2e\x92\x35\xc0\x1f\x03\xf8\x6b\x00\x6b\x03\xd8\x18\xc0\x3b\x03\x38\x1a\xc0\xc1\x7e\x1a\x00\x80\x01\xdc\xd9\x7b\xfb\x68\xaf\xec\x83\xbd\x31\x00\x7b\xfc\x78\x89\x9c\xc7\x70\x8d\x9e\x62\xa9\xb3\xec\x98\x2c\x4f\xed\x02\x6e\xd3\x1d\x8f\xd7\x42\xf7\xfb\xdd\xf6\xe9\x74\xb9\x96\x93\x15\x65\x21\x01\x5c\x49\xe5\x50\xec\x96\x98\xed\xfe\x71\xf6\xf0\xf7\xd5\x87\x63\x55\xfd\x0b\x00\x00\xff\xff\x47\x8d\xbf\x93\xce\x02\x00\x00") - -func runtimeSyntaxPovYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxPovYaml, - "runtime/syntax/pov.yaml", - ) -} - -func runtimeSyntaxPovYaml() (*asset, error) { - bytes, err := runtimeSyntaxPovYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/pov.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxPrivoxyActionYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x54\x41\x6e\xdb\x30\x10\x3c\xc7\xaf\x20\xd4\x1c\x9c\x0a\xeb\x07\xe8\x92\x43\x9f\x61\x39\x00\x43\xae\xa4\x45\x28\xae\xb0\x5c\xd9\x31\xc2\xfe\xbd\xa0\x6d\x39\x49\x6b\x14\xe8\xa5\xa7\xdc\x8c\xe1\xec\x78\x67\x76\xa0\x8e\x02\xea\x71\xc2\xc6\x4c\x42\x7b\x7e\x3d\x82\x75\x4a\x1c\x57\x2b\x8f\x8a\x4e\x1b\xb3\x32\xc6\x98\x42\x8b\x76\xc4\xc6\x54\x6d\xbb\x39\x53\xee\xab\xd5\x4a\xe6\x80\xa9\x39\x51\xc0\x38\x8e\x49\x6d\xd4\xcd\x33\x73\xd8\x74\x36\xa4\xc2\xdf\xbe\x6d\x9b\x34\x59\x87\xcd\x6e\xd7\xb6\xf0\x1c\xd8\xbd\xac\xb7\x57\xec\xed\xe7\x2e\xdf\x3f\x54\x37\x25\x54\xe6\x3f\x15\xea\x7f\x51\x58\x96\x80\xb5\xf5\x1e\x06\xb4\x1e\x25\xbb\xc1\xc6\x1e\xe1\x15\x3a\x96\x83\x15\x8f\xbe\xfc\xca\x2e\x10\x46\xbd\x90\xa0\xa3\xa0\xf8\x3b\xa8\xb6\xef\x0b\xc8\x51\x0b\x5a\x82\x03\xde\xa3\x1c\x84\x14\xb3\x93\x39\xba\x01\x3e\x8d\x2c\x20\x75\x10\x39\x22\x8c\x56\xdd\x70\x05\xa3\xe3\x91\x62\x0f\x8e\xf9\x85\x30\x2d\x38\xcf\xda\xf3\x0d\x3c\xa1\xec\x51\x16\x65\x8f\x36\xd2\x68\x15\xa1\xa7\x2e\x65\xcf\x87\xd8\x8b\xf5\x08\x83\xea\x04\x7b\x94\x44\x1c\x73\x67\x93\x82\xa0\x27\x41\xa7\x29\x5f\x6c\x75\x2c\x0e\x41\xf1\x55\x61\x64\x8f\xf9\x92\xc4\xc9\x8c\x90\xc7\x3c\xd8\xe8\x03\x82\x4d\x80\xe3\xa4\x47\xf0\xec\xe6\x11\xa3\x7e\x78\xa0\xd1\xf6\x98\x07\xf2\x08\xd6\x39\x9c\x14\x82\x8d\xfd\x7c\x05\x97\x94\x3c\xa5\x89\x13\x95\xca\x9c\x1f\x3a\xe1\x71\x31\x71\x02\xa8\x2b\x5b\x50\x47\xe8\x21\x51\x74\x17\x01\xc1\x0e\x45\x16\xd2\x9c\x50\xc0\xf6\x65\x87\x40\x23\x69\xd1\x8f\xe8\x34\x5f\x0f\x00\xa1\x78\x5d\x94\xf2\x24\xb8\x2f\xff\xef\x78\x9c\x04\xd3\x29\x8d\x25\x88\xfc\x29\xca\xe5\xd8\x9f\xc1\xcb\xb1\xd3\x79\x74\xb9\x05\x70\x0c\xc7\x9c\x50\xcf\xfe\xcf\x7d\x46\xf9\x7b\x83\xdb\xb6\xfe\x2a\xe0\x57\x01\xff\x6f\x01\xd3\x84\x8e\x6c\xf8\x31\x58\x39\x55\xb0\x6d\x37\x8f\xef\xa4\xb1\x84\xd9\x98\x6a\xfd\x94\xdf\x3f\xa5\xbb\x87\x6f\xeb\xed\xd3\xdb\x6e\xf3\xfd\xe1\xf1\x7e\xe1\x52\xf4\x27\x17\x83\x95\xcd\x61\x20\xc5\x33\xd9\x54\x1f\xe6\xea\x5b\xec\xc6\x54\x77\xb5\xa9\xb3\xa9\xef\xea\x6a\xf5\x2b\x00\x00\xff\xff\x10\xd4\x24\x50\x6a\x06\x00\x00") - -func runtimeSyntaxPrivoxyActionYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxPrivoxyActionYaml, - "runtime/syntax/privoxy-action.yaml", - ) -} - -func runtimeSyntaxPrivoxyActionYaml() (*asset, error) { - bytes, err := runtimeSyntaxPrivoxyActionYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/privoxy-action.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxPrivoxyConfigYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x52\xcb\x6e\xe4\x38\x0c\x3c\xa7\xbf\x42\xf0\xe6\x90\x6c\x83\xd9\xcb\xee\xc5\x97\xfd\x90\x20\x01\xd4\x52\xd9\x16\x42\x3d\x86\xa2\x3b\x69\x8c\x3e\x7e\x20\xa7\x9d\x64\x82\xb9\xe8\x41\x16\xc9\x62\x91\x53\x60\xe8\xa5\x60\x34\x45\xc2\x39\xbf\x5d\xc8\xe5\x34\x85\xf9\x70\xf0\x50\x38\x1d\xcd\xc1\x18\x63\x3a\x2c\xd9\x88\xd1\x0c\x57\xdc\x3f\xef\xb8\xdb\xe1\x70\x90\x95\x51\xc7\x0d\x47\xa6\xaa\x55\x44\x24\x1d\xcd\x70\x67\x9d\x43\x51\x0a\x49\x21\xfd\x05\x4f\x82\x1f\x2b\xaa\xd6\x66\x9d\x86\x9c\x6a\xcf\xdc\xac\x8f\x21\x91\xf5\x5e\x50\x6b\xb3\xcc\xf9\x95\xdc\x1c\x76\x30\x39\x59\x93\x5b\x42\x9a\xdb\x69\x9d\x26\x08\x71\x88\x41\x9b\xcb\xb1\xf4\x88\x90\x13\x31\xce\xe0\xd6\x49\xf9\x20\xfd\x4e\xd8\x0a\x50\x5d\xac\xf4\x48\x8f\xd3\xda\xcf\xc9\xae\xac\x54\x21\x67\x08\x69\x88\xc8\xab\x36\x8f\x74\xa1\xce\xb6\xd6\x86\x64\x4f\x0c\xfa\x92\x7c\x37\xc1\x07\xa5\x2b\xef\xdd\x26\x88\x59\x41\x8b\x6a\x21\xcd\xf3\xcc\xf8\xe6\xf9\x30\x4e\x59\x1c\xe8\xc4\xd9\xbd\xd4\x36\x05\x56\xc8\xd6\xfc\x94\xe5\xd5\x8a\xdf\x6f\x78\xba\xb2\x27\x81\x4a\x40\xdd\x3d\x54\x7b\xe8\xbf\xdf\xbe\xf6\xf7\xff\x7f\x6d\xb1\xc9\x33\xc8\x56\x42\x2c\x7a\x21\x9f\x5d\xcf\xb4\x4a\xaa\x94\x5f\xda\x92\xab\xf6\x51\xb6\x17\xa0\x90\xe5\x70\xc6\x87\x0c\x1c\xaa\xe2\x73\x10\x9c\xe7\x2e\x26\xe7\x79\x23\x1a\xed\x1b\x39\x0e\x48\x4a\x9f\xfa\xd6\x56\x20\x71\xd3\x65\x53\xaf\x48\x5f\xa2\x90\xa6\x4c\xab\x70\xab\x21\xcd\x0c\xd2\x45\x60\x3d\x7c\xeb\x1c\xa1\x1f\x05\x6b\xe1\xa0\xc4\x56\x66\xd0\x94\x25\xd6\xa6\x88\x85\x7b\xd5\xab\x6e\x9a\x19\x62\x15\x54\x42\x01\x87\xd4\x47\xa9\xb2\x56\xdd\x28\x6d\xaf\xcf\x6a\x6b\x85\x50\xb4\x69\xb5\x7c\xff\xf8\x38\xd6\x62\x1d\xc6\xa7\xa7\xe1\xba\x9b\x2e\xc7\x7d\x33\x9f\xdb\x17\xff\xfd\x5f\x77\x8f\xcf\x3f\x9f\x1e\xfe\xbe\xff\xff\x76\xc7\x86\xe4\xb7\x46\x17\x2b\x0f\xaf\x4b\x50\xbc\x83\xcd\xf0\x25\xee\xf8\x27\xf4\x68\x86\x9b\xa3\x39\x36\x73\xbc\x39\x0e\x87\x5f\x01\x00\x00\xff\xff\xcd\xb0\x1c\xf1\x60\x03\x00\x00") - -func runtimeSyntaxPrivoxyConfigYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxPrivoxyConfigYaml, - "runtime/syntax/privoxy-config.yaml", - ) -} - -func runtimeSyntaxPrivoxyConfigYaml() (*asset, error) { - bytes, err := runtimeSyntaxPrivoxyConfigYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/privoxy-config.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxPrivoxyFilterYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\xd0\xcb\x6a\xc3\x30\x10\x05\xd0\x75\xf4\x15\x83\x9a\x85\x5d\x21\x7f\x80\x36\x21\xa4\x6a\x1a\x08\x5d\xb8\xa6\x1b\x3f\x40\x38\x63\x2c\xb0\x15\x23\x4d\x1f\x69\xfd\xf1\x25\x71\xfa\x24\xdb\x6e\x87\x33\x5c\xee\x6d\x6c\x87\x74\x18\x50\xc1\xe0\xed\xf3\xfe\xf5\x20\x1b\xdb\x11\x7a\xc6\x76\x48\x58\x93\x02\x06\x00\x70\x64\xce\xf4\xa8\x80\x17\x45\x32\x91\x39\x67\xcc\x3f\x75\x18\xd4\x89\x48\x08\x64\x08\x7b\x74\xa4\x80\x57\xd1\xed\x66\x9b\xe9\x74\x5c\x6d\x37\xfa\x3e\x93\x77\x7a\x79\xa3\x53\x79\xf1\x98\x2d\xd7\x6b\x9d\x8e\x0f\x3a\x7d\xd4\xe9\x1f\xf9\xfb\x38\xc9\x58\x41\x6e\xe4\x9b\x2c\x05\x3f\x27\xdb\x1d\x3a\xb2\x8d\x45\xff\xef\xd1\x9f\x91\xf5\xde\x05\x32\x8e\x92\x30\x60\x6d\x4d\xb7\x6a\x8d\x3f\xad\x53\x14\xc9\xe2\x1b\xf5\xe7\x3d\xa2\x6a\xcc\x73\x15\x06\x53\xa3\x2a\xcb\xf8\x2a\xca\xab\xf7\x32\xb9\x8e\x17\xf3\xaf\x0e\xee\x58\x42\xd6\xad\xf1\xc9\x4b\x6b\x09\x27\x0c\xfc\xc7\x9f\xb8\xa4\x15\xf0\x99\x00\x31\x82\x98\x09\xce\x3e\x02\x00\x00\xff\xff\x80\x28\x92\xe2\xd1\x01\x00\x00") - -func runtimeSyntaxPrivoxyFilterYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxPrivoxyFilterYaml, - "runtime/syntax/privoxy-filter.yaml", - ) -} - -func runtimeSyntaxPrivoxyFilterYaml() (*asset, error) { - bytes, err := runtimeSyntaxPrivoxyFilterYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/privoxy-filter.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxPuppetYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x54\xd1\x6e\xe3\x36\x10\x7c\xf7\x57\x28\x3a\x05\x91\x64\xd8\xb9\x97\x3e\x9c\xd0\x26\x39\xa0\x2d\xd0\x87\xe2\x50\xa0\x40\x83\x23\x29\x87\xa6\x56\x16\x61\x89\x54\x48\x2a\xb1\x9d\x4d\xbf\xbd\xa0\x2c\xdb\xb2\x83\x03\x1a\x04\x32\x39\x33\xdc\x19\x5a\xeb\x2d\x65\x0d\x6e\xdb\x42\x16\xb4\x5d\xdb\x82\x9b\x4c\x0a\x70\x20\x5c\x16\x4c\x82\x20\x08\x3c\xad\x78\x03\x59\x10\x52\x3a\x6f\xdb\x28\x9c\x4c\x4c\x57\x83\xcd\x7a\x7a\x16\x14\x50\xf2\xae\x76\x59\x10\xe6\x84\x64\xb6\xe5\x02\x32\xc6\x62\xc2\x67\x3b\xe6\x1f\x9f\x67\x5f\x16\x6c\x9a\x84\x83\x5c\x16\xa0\x9c\x2c\x25\x98\xf9\x0b\x37\x7d\xd5\xc8\xcb\xb2\xa3\x38\x63\xd3\x83\x78\x9f\x2b\xa4\x74\x19\xf3\x6e\x05\xdc\xa2\xd0\x4d\xdb\x39\x30\x28\x8c\x56\x08\x1b\x10\xe8\x13\xf6\x8f\x65\x27\xd6\xe0\x70\x65\x74\xd7\x62\xa5\xad\x43\xa9\x1c\x98\x92\x0b\xc0\xf5\x4f\xb5\x5e\x49\x85\x0d\x17\xbc\x73\x95\x36\x72\xc7\x9d\xd4\x1e\x90\x35\xaf\x25\xb7\xfd\xaa\x96\xd6\x61\x23\x36\xd8\xe8\x4e\x39\x54\x7c\x25\xb5\x5d\x08\xdd\x34\x5c\x15\xa7\xad\x72\x5c\xb8\x8b\xed\xde\x76\xc0\x7a\xf7\xd1\xba\x80\x16\x54\x01\x4a\x6c\xc7\x28\x58\xc1\xeb\x7d\x8c\x31\xba\x71\x52\x95\x7a\x0c\x9d\xd5\xb6\x60\x5e\xa4\x80\x8b\xed\x47\x87\x81\xf8\x68\x72\x20\xce\x7d\x06\xf4\xcc\xca\xc9\x06\x5a\x30\x52\x17\xa8\xb4\x93\xe5\x16\x5b\x2e\xd6\x7c\x05\x68\xc0\xea\xce\x08\xb0\x68\x74\xff\x3e\xac\xa8\xa0\xe8\x6a\x38\x2e\x8a\x85\xe3\x76\x8d\x16\xea\xa5\xd6\x35\x70\xe5\x97\x8d\xde\x6b\x86\x2b\x58\x5b\x2d\x0e\xaf\x03\x8a\xc5\x1a\xb6\x1e\xea\x3f\x9c\x77\x71\xb2\xd8\x62\x67\xc1\xe0\x4b\xcd\x15\x6e\xbb\xc6\x40\xab\x71\x57\x5a\xdc\x69\x05\xb8\x6b\xb5\xae\x91\x2b\x51\x69\x93\x50\xba\x3c\xf4\x8d\x75\xdc\x41\x03\xca\x0d\xcd\x23\x6a\x6e\x2d\x16\x50\x4a\x05\x28\x4b\x84\xda\x02\x76\xaa\x80\x12\xa5\xaa\xc0\x48\x67\xcf\x8e\x6f\x9b\xa5\xae\xb3\x20\x8c\x7f\xc1\x19\xfe\x8b\x77\x3f\xee\xde\x98\xd2\x08\x1f\xf0\xe1\x21\xb9\xa7\x74\x49\xbe\xce\xbe\xb3\x29\xf9\x3c\xfb\xf2\x75\xf6\x7d\xe1\x7f\x01\xe9\xc7\x9a\x24\xe8\xff\x18\xe6\x49\x76\x90\xb2\xe9\xc8\x5e\x68\x65\x1d\xef\xc3\xdf\xc6\x24\xbf\x65\x18\x53\x4a\xe9\x6d\x92\xa4\xb7\x44\xea\x66\xc3\x52\xbc\x36\x94\xbe\xc5\x24\x7f\x1f\xc8\xf7\x24\x49\x29\x7d\x1f\xe8\xcb\x4a\x73\xeb\x8c\x54\xab\x2c\x08\x9f\x48\xfe\xc4\xd2\x27\xbc\xde\x50\xfa\xe6\x8f\xfb\x53\x3f\x96\xd3\x30\x26\x39\x0d\x07\x13\x1a\x7a\x97\x10\xaf\xc9\x5f\xff\xb0\xfb\x51\x81\x23\x12\x93\x3c\xf1\x48\x32\x20\x3f\x93\xfc\x8e\xa5\x77\x47\x9e\x90\x9c\x79\x9e\x1d\x91\x88\xe4\x91\x47\xa2\x23\x92\x93\x3c\xf7\x48\x3e\x20\x57\x24\xbf\x62\xe9\xd5\xf1\x8b\x6c\x41\x48\x5e\xef\x27\xc7\xff\xba\xc4\x4d\x4c\xf2\x9b\xe1\x0a\x37\x49\x92\xde\xe0\x35\x79\x7e\x65\xe7\xf9\x7b\x60\x1c\xff\xf9\x95\x9d\xd2\xf7\xec\x38\x7c\x0f\x8c\xb3\xf7\xc0\x38\xfa\xf3\x2b\xbb\x48\xee\xc7\xc8\xbe\x27\x3f\x91\xfc\x8d\xcd\xd3\x08\x3f\x45\x17\xe4\x7c\x69\xe4\xaa\xea\x35\x27\xd1\x49\xe5\x74\xa1\x7d\x0f\x3d\x3e\x3e\xe2\xdf\xdf\x7e\xfd\x86\xbf\xff\xf1\xf8\xe7\x6f\x48\xe9\xfd\xfe\xff\xd4\xa8\x7e\x16\xb8\x99\xa8\xb8\x99\xbf\x56\xd2\xc1\x7e\x30\x07\xe1\x68\x46\x4f\xa3\x70\xf2\x5f\x00\x00\x00\xff\xff\x70\xcf\x41\x80\xfe\x05\x00\x00") - -func runtimeSyntaxPuppetYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxPuppetYaml, - "runtime/syntax/puppet.yaml", - ) -} - -func runtimeSyntaxPuppetYaml() (*asset, error) { - bytes, err := runtimeSyntaxPuppetYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/puppet.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxPython2Yaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x55\x4d\x93\x23\x35\x0c\xbd\xe7\x57\xf4\x66\x17\x36\xb3\x4b\xb2\x5c\x09\x5f\x4b\x51\xc5\x91\x13\x27\xd2\xa1\xcb\x6d\xab\xd3\x66\xfc\x55\xb2\x3a\x49\x0f\xe2\xbf\x53\xb6\xbb\x93\x4c\x76\xa7\xe0\x42\x4d\x4d\xfc\xa2\x58\xf2\xd3\x93\x2c\x77\xda\x00\x8d\x01\xb6\x55\x18\xa9\xf7\x6e\xb1\x50\x40\x20\x69\xbb\xa8\xaa\xaa\x4a\xbf\x3a\x61\x61\x5b\x2d\xeb\x7a\x13\xc6\x37\xcb\x6c\xee\x41\x28\xc0\x6d\xb5\xfc\xe3\xf5\xab\xcd\xbb\x0f\x2b\x70\xc7\xea\xfd\xc3\x8f\x25\xc2\xaa\xe2\x37\x0f\xcb\xc5\x02\x07\x03\x71\xbb\xc8\x0e\xaf\xab\x76\xd0\x86\xd6\xda\x55\xbe\xfd\x13\x24\xc5\x6c\x5e\x57\xd2\xbb\x48\xc2\x51\x3e\xa0\x5d\xfd\xea\x1d\x70\x04\xd3\xf1\x6f\x38\x00\xff\x22\x4c\x84\x87\xba\x6e\xcb\xb1\xcf\xe2\x08\x22\xd4\xed\x40\xf0\x42\xa8\xa6\x69\x45\x84\xd8\x34\xdc\x34\xd9\x49\xbb\x8c\xa5\x11\xb1\x58\x15\xb4\xc3\xa1\x20\x2d\xa9\x00\x2f\xf3\x9a\xf2\xce\xc0\x82\x6d\x01\xe3\x84\xa9\xf7\xaa\xe0\x24\x4a\x06\x89\x6c\xd3\xbc\xc0\xb1\x1b\x9c\x24\xed\xdd\x4c\x51\x2b\x70\xa4\x3b\x9d\xb5\x4b\x24\x45\x1b\x59\x84\x60\x46\x96\xc2\x18\xd1\x1a\x60\xd9\x23\x4b\x1b\x58\x7a\x1b\xb4\x01\x56\x60\x52\xaa\xac\x74\xfa\x3f\x5a\xaf\x18\x8e\xc2\x30\x9c\x41\xe6\x8f\xc4\x95\x3b\x6d\x08\x90\x3b\x8f\x56\x10\x1f\x80\xb2\xcf\xc1\xf8\x56\x98\xc8\xbd\x88\xf9\x7b\x2f\x62\xcf\x3d\x98\xc0\x3d\x9c\x59\x2b\xd6\x2e\x0c\xc4\xda\x11\xa0\x63\x1d\x75\x56\x50\x02\xeb\x18\x87\x36\x2b\xc5\x06\x1c\x1b\x2f\x53\x18\x2b\xce\x6c\xb5\x63\x07\x67\x62\x2f\x89\x7d\x00\xc7\x1e\x15\x07\x7f\x62\x14\xee\x00\x8c\xe2\xd4\x94\xa8\x08\x6a\x90\xc0\x08\xc6\x0b\xc5\x08\x01\x19\xfd\xe0\x14\xc7\x89\xdd\xe0\x74\x4a\xf6\x28\x30\xf2\x93\x0e\xdc\x34\xda\x06\x8f\x74\x2f\x67\x0c\x20\xb5\x30\x55\xd1\xbf\x4a\xd2\xbf\x28\x68\xd3\x88\xb6\x54\x48\x28\x55\x56\x57\xd6\x24\x70\x01\x36\x94\xd5\x03\x4a\x98\xa0\x0d\x06\xce\x13\x76\x52\xd0\x0c\x49\x68\x37\x77\x8b\x99\xd7\xc4\x7e\xc6\x9a\xc0\xde\xf5\x10\x98\x68\xf4\x14\x59\xe9\xe3\xbc\x5a\x5f\x88\x74\xc6\x4f\xf1\xa7\x32\xcd\xf8\x12\xea\x00\x74\x8d\x90\x6a\x56\xc0\x44\x50\x3b\x4d\x13\x98\xd7\xe3\xbc\x02\x16\x93\x81\xd2\xec\xc6\xbb\xd2\xe1\x26\xf6\xba\x2b\xbf\xcd\x3c\xec\x50\x12\x72\x50\xb6\x38\xef\x9e\x00\x7d\xc6\x7e\xca\xc5\x17\x72\xc1\xc7\x69\x3d\xe5\x15\x67\x71\x71\x56\x17\x67\x55\x71\xce\x18\x6f\x52\x46\x08\x30\xe5\x9c\xfa\xa0\x80\x1b\x4a\x78\xd9\x38\x93\xc2\xe9\x64\xbc\x1c\x89\x37\xdb\x6f\xe1\xd0\x16\x70\x9e\x3c\xe2\x8d\xa8\xf1\x46\xd4\x78\x2b\x6a\x9c\x37\x4c\xde\xd9\xf9\x79\xd7\xa5\xa1\x38\xb7\x59\x19\x90\xb9\xc1\xf2\x50\x21\xd4\xee\xc0\xad\xf7\x86\xdb\xa1\xeb\x00\xb9\x1d\x09\x04\xa2\x18\x33\x8a\x9c\xef\x4e\x69\x58\x9e\xba\x8b\x53\x87\x30\xb8\xc1\x02\x0a\xca\x57\x16\x38\x37\x03\x77\xe8\x9f\xc0\x45\xc8\x57\x91\x8d\x8e\xc4\xa9\x72\x6c\x45\x60\x0b\xd6\xe3\x78\xd4\x70\xe2\x32\x3a\x39\xa0\x0f\x80\x34\x32\xc2\x11\x30\x42\xbe\x51\x9c\x93\xe3\x48\x82\xb4\x9c\x0e\x8e\x84\x1c\x87\x00\xc8\x34\x04\x03\x9c\xd2\xc8\xb7\xce\x2b\xe0\x73\xbe\xaf\xcf\x73\x56\xd0\xa5\xee\x7a\x69\x62\x29\xe8\xaa\x9d\x58\x3f\xfd\xb4\xfe\xbd\xf9\x7a\xfd\xcd\xfe\xfd\xd5\xf3\x11\xc6\x93\x47\x35\xbb\x25\x1a\x60\xe1\x32\x8c\x85\x53\x2c\x22\x8b\x18\x01\x89\x5b\x04\xf1\x58\x24\xe2\x74\xc7\xb4\x1b\xd2\x9c\xeb\xd2\xac\x63\x30\xba\x63\x30\x11\x18\xce\x12\x02\x71\xa7\x9d\x30\x66\x4c\xb3\x2d\x09\x65\xa7\xa9\xc6\xba\xe3\x32\x2f\x58\xa7\xd9\xc5\x46\xd8\x56\x09\x76\x9e\xd8\x23\x87\x14\x3c\x60\xd2\x13\x85\x8e\x69\x0e\xd1\x80\x8e\x09\x47\x3e\xf5\x49\xfa\x93\xa6\x9e\x47\x0d\x46\xdd\x8b\x20\x3d\x0a\xf2\x38\x27\xd3\xa2\x3e\xf4\x74\x40\x00\xb7\xad\x96\x1f\x37\xef\x76\xab\xfd\x75\x7b\xaa\xc5\xed\xee\x38\xda\xd6\x9b\xcd\x6c\xde\x56\xcb\xd5\x6e\xb3\xfd\xf6\xab\xf7\xef\xf8\xfb\x57\x75\xfd\xc5\xc7\x3d\x7f\xc7\x3f\xf0\x07\x5e\xf3\x97\x0f\xd7\x30\x41\x20\x38\xea\x21\xc2\x5d\xa0\x16\x85\x7c\x04\x8a\x39\xd0\xea\xe1\xaf\xbf\xf7\x5c\xd7\x3b\xae\xeb\xfd\x8d\xb7\x1b\xf2\x33\x75\xf7\x12\x6e\x8a\xb9\xd4\x60\x97\x2b\x96\x33\xbd\xdf\x56\xfa\x79\x3b\x45\xab\x52\xf5\x30\x57\x2e\xff\x2d\x2f\x76\x70\xea\x33\xd6\xf2\xce\x57\xbb\xfd\x35\xae\xcd\xa5\xff\x24\xde\xdb\xb7\x6f\xef\x83\x3d\x33\x7d\x26\xd2\xbf\x32\xfc\x94\xdd\xd5\x12\x1f\x75\xc8\xc9\xd7\xf5\xe6\xfe\x94\xcb\xd7\xfb\x93\xca\x63\xf3\x73\x2f\xf0\xea\xfa\x5f\xe9\x7c\x9a\xde\xff\x49\xe6\x05\x95\x5f\xdf\x93\x78\xf3\x59\x85\xff\x09\x00\x00\xff\xff\xdd\xb7\xca\x12\xf9\x09\x00\x00") - -func runtimeSyntaxPython2YamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxPython2Yaml, - "runtime/syntax/python2.yaml", - ) -} - -func runtimeSyntaxPython2Yaml() (*asset, error) { - bytes, err := runtimeSyntaxPython2YamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/python2.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxPython3Yaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x55\x4d\x6f\xe3\x46\x0c\xbd\xe7\x57\x68\xbd\xdb\x6e\xb2\xa9\xbd\x05\xf6\x54\xf7\x6b\x8b\x02\x3d\xf6\xd4\x53\x2d\x57\x18\x49\x94\xc5\x66\xbe\xc0\xa1\x6c\x2b\x65\xff\x7b\x31\x33\x92\xed\x38\x09\xda\x4b\xb1\x58\xf0\x99\x99\x79\x24\x1f\x39\x54\x87\x1a\xac\x32\xb0\x2e\xfc\xc8\xbd\xb3\x9f\x6e\x6e\x5a\x60\x68\x78\x7d\x53\x14\x45\x71\xfe\xf3\xa2\x2c\x57\x7e\xfc\xf4\x6e\x91\xfc\x3d\xa8\x16\x68\x5d\x2c\xfe\x78\xfb\x66\xf5\xe1\xe3\x2d\xd8\x7d\x71\x7f\xf7\xe3\xc4\xf1\x6e\x71\x73\x43\x83\x86\x90\x49\xde\x16\xf5\x80\x9a\x97\x68\x0b\x57\xff\x09\x0d\x87\xe4\x5e\x16\x8d\xb3\x81\x95\xe5\xc4\x5e\xdf\xfe\xea\x2c\x48\x00\xdd\xc9\x6f\x34\x80\xfc\xa2\x74\x80\xbb\xb2\xac\x73\xc8\x27\x3c\x8a\x99\xb0\x1e\x18\x5e\xa1\xaa\xaa\x5a\x05\x08\x55\x25\x55\x95\x2e\xa1\x4d\xb8\xd1\x2a\x64\x6f\x0b\xf5\xb0\xcb\x08\x1b\xce\xc0\x35\xc9\xc6\xa2\x13\x30\x60\x6a\xa0\x30\x61\xee\x5d\x9b\x71\x54\x24\x81\x98\x6c\x55\xbd\x92\x63\x37\xd8\x86\xd1\xd9\x39\x45\x6c\xc1\x32\x76\x98\x74\x8b\x49\xaa\x3a\x88\xd2\x5a\x94\x1d\x45\x85\x06\x51\x6a\xb4\xd2\x28\xad\x55\xad\x41\x9a\x9e\xa4\x71\xc6\xa3\x06\x69\x41\xc7\x92\xa5\xc5\xf8\x7f\x6f\x5c\x2b\xb0\x57\x5a\xe0\x08\x8d\x74\x8e\x8c\x62\xd9\x01\xa7\x33\x3b\xed\x6a\xa5\x83\xf4\x2a\xa4\xdf\xbd\x0a\xbd\xf4\xa0\xbd\xf4\x70\x14\x6c\x05\xad\x1f\x58\x30\x60\x92\xac\x01\xc1\x10\x86\x3a\x49\x23\xc8\x40\xa2\xc1\x8a\x76\x4d\x24\x31\xea\x28\x06\xad\x58\x38\xb2\xb8\x86\xc5\x79\xb0\xe2\xa8\x15\xef\x0e\xe2\x09\x2d\x0b\x81\x27\x21\x37\xd8\x56\xc2\x94\x43\x70\xc4\xd0\x4a\x18\x8c\xec\x15\x05\xa9\x2a\x34\xde\x11\x5f\x8b\x15\x3c\x34\xa8\x74\x91\xd5\x2d\xa2\xb0\xaf\xca\x55\x55\xaa\xce\xfa\xab\xb6\xcd\xd6\x66\x1b\x25\xcb\xc0\xf8\x6c\x1d\x50\x03\x13\x34\x5e\xc3\x71\xc2\xb6\x51\x3c\x43\x56\x68\xe7\x59\xd0\xb3\x8d\xd9\xcf\x18\x19\xcc\x8c\x83\xc6\x89\xb0\xc5\xfd\x6c\x8d\xcb\xf1\x3b\xed\x26\xda\xa9\x07\x33\x3e\x31\xec\x80\xcf\x0c\xb1\x21\x19\x4c\x79\xa1\x45\x9e\xc0\x6c\xf7\xb3\x05\xca\x2e\x0d\xf6\xe9\xb4\x6a\x67\xf3\xfc\xea\xd0\x63\x97\x7d\x73\x42\x66\xc8\x05\x59\xd8\x4d\xf6\x98\x0f\x58\x67\x1f\x81\x5c\xc2\x6e\x22\x72\x39\x5d\xef\xc2\x64\x0f\xc9\xd2\xac\x32\xcd\x32\xd3\x2c\x2f\xcd\x1a\xd0\x85\x08\x04\x1e\x26\x15\xe2\x40\x64\x70\x91\x1b\x9d\x0e\xce\xd9\xd1\x14\x99\x4e\x21\xe9\xe2\xf8\x25\x1c\xea\x0c\x8e\xd3\x8d\x70\x21\x73\xb8\x90\x39\x5c\xca\x1c\xe6\x03\xd3\xed\x74\xf9\xe9\xf8\xf1\xe8\x4f\xf3\x16\xf1\x34\x69\xb5\x73\x5a\xea\x91\x41\x11\xa9\x31\xa1\x20\xe9\x7d\xe4\x39\x95\x69\xa8\x24\x36\x43\xc0\x0e\x06\x48\x31\x48\x87\x3a\x3e\x9f\x34\x0e\xd2\x91\x7b\x04\x1b\x80\x25\xbe\x11\x8d\x81\xc5\x28\x2f\x06\x8c\xa3\x71\x8f\x70\x90\xbc\x0c\xc5\x93\xf3\x40\x3c\x0a\x29\xbb\x03\x21\xd8\x03\x05\x48\x6f\x49\x52\x35\x12\x58\x31\x36\x53\xec\x10\x9f\xd7\xe0\x81\x84\x07\xaf\x41\x62\xde\xf2\x88\xfe\x69\x65\x2d\x74\x71\xaa\x5e\x5b\x3f\x2d\x74\xc5\x46\x2d\x1f\x7f\x5a\xfe\x5e\x7d\xbd\xfc\x66\x7b\x7f\xbe\xf9\x00\xe3\xc1\x51\x3b\x5f\x8b\xb1\xc1\xc0\x69\xb3\x2a\xdb\x8a\x0a\xa2\x42\x00\x62\xa9\x09\xd4\x43\x96\x46\xe2\x93\x42\x3b\xc4\x65\xd5\xc5\x85\x25\xa0\xb1\x13\xd0\x01\x04\x8e\x0d\x78\x96\x0e\xad\xd2\x7a\x8c\x0b\x2b\xca\x63\xa6\x55\x25\xd8\x49\x5e\x0f\x82\x56\x30\x88\x56\xa6\x6e\x95\x58\x67\xd3\x16\x12\xeb\x58\x1c\x89\x8f\x51\x48\x61\x88\x22\xf1\x40\x56\x98\x46\x39\xf4\x71\x41\x1e\x90\x7b\x19\x11\x74\x7b\xad\x43\xe3\x48\xb1\xa3\xb9\x9e\x9a\x70\xd7\xf3\x8e\x00\xec\xba\x58\x7c\x5e\x7d\xd8\xdc\x6e\xcf\xc7\x63\x27\x2e\x4f\x87\xd1\xd4\x4e\xaf\x66\xf7\xba\x58\xdc\x6e\x56\xeb\x6f\xbf\xba\xff\x20\xdf\xbf\x29\xcb\x2f\x3e\x6f\xe5\x3b\xf9\x41\x3e\xca\x52\xbe\xbc\x3b\xd3\x78\x45\x60\xb9\x87\x00\x57\x44\x35\xa9\xe6\x01\x38\x24\xa2\xdb\xbb\xbf\xfe\xde\x4a\x59\x6e\xa4\x2c\xb7\x17\xb7\xed\x90\x3e\x3b\x57\x5f\xb6\x55\x76\xe7\x36\x6c\x52\xd3\x52\xa5\xd7\xc7\x02\x13\xda\xdd\x7a\x62\x2b\x62\x03\x29\x35\x2f\xfd\x5b\x9c\xfc\x60\xdb\x17\xbc\xf9\xb3\x5d\x6c\xb6\x67\x5e\x93\xba\xff\x8c\xef\xfd\xfb\xf7\xd7\x64\x4f\x5c\x2f\x30\xfd\x6b\x86\xcf\xb3\x3b\x7b\xc2\x03\xfa\x54\x7c\x59\xae\xae\xa3\x9c\x7e\x5e\x47\xca\x9f\x97\x9f\x7b\x45\xe7\xab\xff\x35\x9d\xe7\xe5\xfd\x9f\xc9\xbc\xa2\xf2\xdb\xeb\x24\xde\xbd\xa8\xf0\x3f\x01\x00\x00\xff\xff\x43\xff\xd3\x9d\xc7\x09\x00\x00") - -func runtimeSyntaxPython3YamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxPython3Yaml, - "runtime/syntax/python3.yaml", - ) -} - -func runtimeSyntaxPython3Yaml() (*asset, error) { - bytes, err := runtimeSyntaxPython3YamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/python3.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxRYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x91\x6f\x6b\xdb\x40\x0c\xc6\xdf\xfb\x53\xdc\xbc\x6c\x8d\xd7\xd9\xeb\xdb\x79\xff\x08\x5d\x02\x85\xcc\x85\x2e\x85\x40\xd5\x85\xb3\x23\x37\x47\xed\xb3\xa7\x93\x69\x02\xfa\xf0\xe3\x6e\x5d\x52\xb2\xc1\xf6\x66\x07\x06\xe9\x91\xc4\xef\x91\x55\x9b\x06\x79\xd7\x63\xae\x28\x8a\xd6\xc8\x58\x71\x1e\x29\xa5\x94\x2f\x58\xdd\x62\xae\x62\x80\x6c\x4c\x72\x95\x8c\xe2\x28\xa2\xa1\x41\x97\x47\xa1\x25\x55\x8e\x35\x63\x8b\x96\x43\x57\x39\x6e\x4c\x49\x9a\x76\x42\xf8\x7d\x30\x84\x52\x12\xea\x7b\xc1\xc6\xa1\xd4\x1d\x49\x3d\xd8\x8a\x4d\x67\xc5\xd4\x62\xea\x20\x1b\x2b\x16\xb7\x2c\x1e\xe5\xc4\x3d\x18\xae\x36\x42\xd8\xa3\x66\xe9\xc9\x58\x16\xa6\x9d\xff\xce\xb5\xaf\x18\xb7\xb8\xba\x9e\x0a\x21\x0f\x64\xe5\x61\x63\x1a\x4c\x00\xca\xf8\xd1\x4f\xd5\x59\xc7\x7a\x6f\x67\x21\xa1\x7b\x26\xb3\xc9\xfc\xeb\x54\x8a\xeb\xf9\x5c\x2e\x6c\x2d\x85\x2e\xa4\x98\x48\x31\x59\x19\xcb\x78\x87\xb4\xf2\x31\xa1\x6e\x42\x50\x75\x6d\xdf\xe0\xf6\x67\xbc\xd1\xa4\x2b\x46\x5a\xfd\x89\x93\xd9\xa1\x2d\x91\x72\x15\x8f\x01\xca\x9b\xb3\xf4\xed\xed\x29\x40\x29\x00\xe5\xd9\xd6\xa7\x93\x74\xa6\xd3\x3a\x88\xc9\xaf\x61\xb7\x6b\xcb\xae\xc9\xba\x1e\x49\x73\x17\x86\x6f\xb2\xfc\xdd\xeb\xd3\x57\xf2\xe1\x19\xc0\x8b\x5b\x79\x2f\x1f\xe5\x8d\xa4\xf2\x52\x00\xbe\x09\xc0\x28\x89\x55\xb4\x47\xb7\xe1\x87\x87\xd4\x3f\xc7\x9a\xfc\xc2\xcf\xe3\xbd\x84\x76\x9d\xab\x78\x74\x10\x1e\xaf\xa6\x9e\xbc\x54\x71\xb7\xee\x3c\x7c\x71\xf9\xf9\x52\x96\xcb\xa5\xcc\x2e\x96\x5f\xa6\x49\xfe\x29\x8e\x8e\xd7\x74\x4c\xc6\xde\xfd\xce\x84\xf8\x18\xfa\x54\x71\xf7\xa6\x0f\x97\x00\xc8\xfe\xe2\xe5\x40\xea\xb1\x32\xba\x39\xdf\x68\x3a\x8c\xfe\xab\x9d\x93\x63\x37\x27\xff\xc3\xcc\x8f\x00\x00\x00\xff\xff\x74\xc8\xc8\xba\x33\x03\x00\x00") - -func runtimeSyntaxRYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxRYaml, - "runtime/syntax/r.yaml", - ) -} - -func runtimeSyntaxRYaml() (*asset, error) { - bytes, err := runtimeSyntaxRYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/r.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxRestYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x90\x4d\x6a\xc3\x30\x10\x46\xf7\x3a\xc5\x20\x7b\x25\xd7\x82\x76\x39\xe0\x93\x64\xe2\x1f\x9c\x49\x11\x38\x8a\xd1\x4c\x17\xa5\xed\xdd\x8b\x6a\x9b\x16\x2a\x82\xb4\xf8\x78\xef\x6d\xa4\x6b\x58\x58\xdf\x57\x46\x48\xa2\xc6\x5c\x58\x79\x56\x34\x00\x00\x59\xc5\xe9\xc6\x08\x96\xc8\x27\x16\xad\x3f\xf3\x10\xad\xad\x31\xe9\x6d\x61\xd9\xc2\x16\x44\x27\xe5\x1b\x47\xfd\x69\x1d\x91\x3b\xf5\xee\xdc\x6c\xd3\xee\xd1\x9a\x78\x4d\xf7\x19\xc1\x22\x1e\x6c\xbe\x47\xd1\x29\xaa\x17\x4d\x21\xbe\x22\xd8\xf1\xd4\x8f\xe7\x66\x1c\x3e\x9e\x9f\x5e\xbe\x1e\x64\x7b\x37\x1e\x49\xb8\x70\xd4\x70\x0d\x9c\x10\x6c\x4f\xe4\x89\x3c\x78\x57\x97\xfd\x30\xfc\x75\xdb\x07\xd8\xbe\xaa\xaa\xe6\x1f\xdc\x1e\x41\xe4\x7e\x95\xac\x3c\x87\x69\xc9\xb6\xeb\xba\x22\x6f\xdb\xb6\xc8\x89\xf6\x5b\xb6\x36\x9f\xac\xbe\x03\x00\x00\xff\xff\x66\xfb\x63\xc1\x98\x01\x00\x00") - -func runtimeSyntaxRestYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxRestYaml, - "runtime/syntax/reST.yaml", - ) -} - -func runtimeSyntaxRestYaml() (*asset, error) { - bytes, err := runtimeSyntaxRestYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/reST.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxRpmspecYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x55\xdf\x6f\xdb\x36\x10\x7e\xae\xff\x0a\x41\x73\x11\xc9\x81\x0d\x03\x71\xdd\x44\x0f\x0b\xd2\x25\x18\x0a\x64\x71\x60\x37\x7d\x98\xe9\x18\x34\x75\x96\x89\x50\x24\xcb\xa3\xbc\x64\xbd\xfd\xef\x03\x25\xff\xc8\x1a\x7b\x03\x16\x20\x77\x1f\xc9\xef\x3e\xde\x91\x47\x79\x29\x15\xf8\x17\x0b\x59\xe4\x6c\x89\x16\x44\xab\x95\x83\x07\xe1\xb3\xa8\x15\x45\x51\x14\xd6\x35\x2f\x21\x8b\x62\xc6\x7a\x81\xd0\x26\xc6\x7a\x1b\x72\x3b\x6e\xb5\x5c\xa5\x00\xb3\x9a\xdc\x8d\xac\x03\xeb\x8c\xa8\xd9\x8b\xe4\xb3\x30\x9a\x6e\x9e\x85\xaa\x50\xae\x61\x84\x0d\xce\x61\x84\x69\x16\x1f\x8c\xf8\x54\x49\x95\x5f\x39\xb1\xa2\x1d\x92\x21\x9b\xca\x01\xee\x95\x6a\xc2\x46\x2b\xe0\x63\x6a\xbf\x18\xbd\x54\x52\x78\xa4\xd1\x02\x8d\x02\x0f\x48\xf7\xce\xac\x65\x0e\x48\x63\xf8\x56\x49\xf7\x0a\x30\x96\xf4\x3a\x8c\xa5\x74\xa3\x57\x5c\x0b\x40\x9a\x54\x45\x01\xe8\xb1\x49\x66\xaf\x56\x0f\x5f\xc5\x0b\x53\x96\xa0\xf3\x20\x0e\x63\xf8\x46\x93\xca\x5a\x05\x25\x68\x7f\xb4\xd0\x1b\x6b\xc4\x8a\x26\xe0\x24\x57\x74\x67\xd0\x54\x4e\x00\xdd\x19\xcb\xfd\xf1\x7a\xae\x2a\x6f\x82\x7e\xf0\xa1\x0e\xda\x4c\x04\x7c\xfc\x0c\xec\x8b\x93\xc5\xca\xd3\xad\x14\xa0\x11\x68\x52\x95\x25\x77\x2f\x5b\xbf\x2b\xfb\x5a\xa2\x77\x72\x51\x79\x69\x34\x7d\x05\x9d\x1b\x47\xf7\x5c\x3c\xf1\x02\x1c\xfd\xea\x4c\x65\x69\x52\xa7\x39\xed\x77\x2f\x66\x1d\xba\x0f\xa9\x6e\x70\x73\x22\xc6\xf8\x70\x04\x4b\xf9\x7c\x2c\x9b\x3b\x5e\x02\x7d\x05\x87\x61\x8f\x31\x28\xe0\x08\xf4\xe0\x14\x3d\x8c\x6f\xdf\xc6\xd4\xc3\xf0\x87\x9e\x3b\x9f\x45\xf1\x63\xd2\x64\xd0\xec\x9d\xc6\x3b\x02\xe8\x3c\x8b\xe2\x6c\x3f\xd1\x74\x65\x34\x9d\xb5\xde\xe4\x91\xc8\xb3\xf3\x21\xc9\x41\x30\x1f\x82\x19\x9e\x0f\x89\xfb\x95\x32\x9a\x24\x1f\x0e\x88\x2b\xbb\xe2\x8d\x85\xf5\x87\x1d\x18\x36\xc8\x0a\xbe\x85\xb0\xde\x83\x8f\x84\x96\x3b\xd1\xd8\xf5\x45\xe3\x87\x03\xee\xca\xf5\x99\xa2\xe0\x06\x8b\xc6\xa9\x92\xa4\x45\x2a\xa5\x45\x50\x64\xad\xa8\xff\x25\x82\x93\x80\x01\xdb\x3d\x1c\x0e\xa8\x1c\x9e\x3f\xd5\xa6\x94\xda\xd3\xa4\x90\xe4\x70\xd8\xef\xf7\x49\x9e\x7d\xec\x13\x9e\x5d\xf4\x9f\x6b\x4b\xda\x70\xb7\x3b\x94\x7f\x16\xbc\x0c\x2b\x24\x97\x7a\xe3\x0d\x86\x81\xc1\x1d\x59\x18\x8d\x9e\x6b\xdf\x0b\x2d\xa0\x8b\x70\x5b\x71\xc2\x18\x63\x3d\x9a\x3e\xb2\x78\x96\x76\x58\x4c\x27\xbb\x99\x93\x59\xda\x39\xd9\xc6\xa2\xe7\xbe\x6e\xf6\x2c\x8a\xdf\x27\x72\x49\xa0\x10\x08\x74\x2e\x97\x94\xc3\x52\x6a\xa0\x42\x99\x05\x57\x54\xe9\x66\x9c\x1e\x0c\x9d\x5f\x26\xd3\xab\xee\xef\x73\xde\xfd\x73\xde\xef\x5e\xcc\x67\x9d\x03\xbc\x37\x2d\xf1\x9e\xb1\xef\x3f\xf6\x01\x63\x7f\xfd\x4b\x27\xfc\x87\xd8\x7c\xfe\x7f\xe5\x02\xb3\x9d\x8c\xef\x7f\x9b\x7f\x7a\xf8\x7c\x7b\x3d\x1f\x8f\x46\x5f\x52\xc6\x7e\xde\x55\x61\x41\x48\xae\x42\x1f\xbf\x4f\x16\xe1\xc5\xb4\x49\xac\xb8\x2e\x40\x99\x82\xc4\x0a\xc4\x53\x9b\x84\x02\xae\xdb\x94\x03\x0a\x27\x6d\x78\x8b\xe9\xc1\xf8\xf0\x61\x46\x92\xe1\xda\x94\x6a\x93\x6d\x1e\x2a\x85\x5b\x6f\x1f\x8e\xb0\xae\x5e\xae\x74\xb0\xde\x71\x8d\x64\x0d\xfa\xda\x84\x49\x83\xbe\x9e\x3d\x1c\xed\x9d\x2c\xc2\x87\x60\xe3\xa5\xde\xa2\x4d\xf8\x66\x54\x69\x5a\x83\x93\xcb\x97\x26\xfd\x57\x0d\x56\x6e\xce\x28\x79\xa4\xe9\x34\x43\xcb\x05\x64\xb3\x59\xfa\x53\x32\x7d\xfc\x3e\xeb\x75\xd2\xcb\xf6\x8f\xcd\x18\x36\x66\xac\xd3\xeb\xec\x56\xa4\xce\x41\xfb\xae\x58\x71\xd7\xfb\x23\xfc\x32\x34\x32\x51\xfc\x4a\xf1\xf4\x10\x3b\x8b\xe2\x77\xa7\xd1\x29\x45\xa7\xef\x4e\xb7\xcb\xde\xe4\x26\x8b\xe2\x2f\xa3\xeb\x51\x76\x19\xb7\xfe\x0e\x00\x00\xff\xff\x1f\xe9\xab\x07\x0a\x07\x00\x00") - -func runtimeSyntaxRpmspecYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxRpmspecYaml, - "runtime/syntax/rpmspec.yaml", - ) -} - -func runtimeSyntaxRpmspecYaml() (*asset, error) { - bytes, err := runtimeSyntaxRpmspecYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/rpmspec.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxRubyYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x54\x7f\x6f\xa3\x46\x10\xfd\xbb\xfe\x14\x84\x10\x19\x88\x8c\xef\xdf\x43\xd1\x91\x6b\xcf\x77\x8a\x74\x4d\xd4\x2a\x6a\xad\xdb\x1f\x64\x81\xc1\x5e\x05\x16\x67\x77\xa9\xe3\x66\xf2\xdd\xab\x25\xc4\x71\x53\x59\xaa\x65\xaf\xd1\x7b\x6f\x66\xde\x8c\xd8\xa9\x65\x03\x76\xb7\x81\xd4\xd3\x7d\xb1\x9b\x4c\x2a\xb0\x50\xda\xd4\x9b\x78\x9e\xe7\x39\x52\x89\x16\x52\xcf\xa7\x34\xd1\x45\x80\x94\x26\x2b\x68\xcd\x06\xca\x00\xbf\x41\xeb\x04\x58\x76\xaa\x96\xab\x44\xf7\xf8\xbb\xb8\x87\x01\xfa\x45\x6c\x86\xff\x3f\xc4\x4a\x0b\x65\xdd\xb3\x3f\x64\x5c\x83\xa8\x40\xa7\x9e\xcf\x4f\x4f\x92\x78\x1e\x82\xfa\xcb\x3b\x8f\x32\x57\x3b\xf4\x30\x88\xfc\xc9\x44\xf7\x0d\x98\x74\x50\xcf\x3c\x63\x85\x85\x16\x94\x1d\x2c\x14\xe1\xcf\x8b\x6f\x57\xd7\xb8\xb8\xfe\x82\xa2\x91\xc2\xa0\x50\x15\x16\xb0\x92\x0a\x0b\x0d\xe2\x1e\x4b\x61\x00\xcb\x46\x18\x83\x15\xd4\xee\x27\x15\x54\x94\x66\x58\x75\x08\x8d\x01\x77\xc8\x1a\x41\x55\x08\xca\xf4\x1a\xb0\x16\x0e\xae\x3b\x8d\xb2\x46\xa9\xb0\xed\xaa\xbe\x01\x54\xf0\x68\x51\xc9\x06\x55\x67\xb1\xd3\xa8\xa1\xea\x50\x83\x29\x7b\x40\x0d\x56\xef\xdc\xd9\x6b\x85\x06\x9a\x1a\x4d\xbf\x01\x8d\x76\x0d\x0a\xad\xee\x01\x7b\xe5\xca\xf7\xaa\x01\x63\xb0\x57\x56\x36\xb8\x75\xe4\x76\xed\xc6\xb2\x93\xd0\x54\x11\xa5\x85\x3f\xb6\x59\x76\xca\x58\x31\x74\x19\x52\x1a\xe0\x25\x5e\x5e\x46\x19\xa5\x05\xf9\x3c\xfb\xc1\xce\xc9\x87\xd9\xc7\xcf\xb3\x1f\xb9\x98\xfd\xcd\xe2\xf7\x31\x89\xea\xdb\x62\x98\xa9\xd3\x7f\x98\x7d\x64\xe7\x47\x32\xcb\x2c\x0a\x89\xf7\x13\x43\x1e\xa5\xaf\x29\x8f\x89\xdd\xb0\xf3\xfc\xeb\xd5\xf7\x45\x9e\x63\x9e\x7f\xbf\xba\x5e\xe4\xf9\x11\xcb\xf3\x90\xf0\x39\xc3\x90\x52\x4a\xe7\x51\x14\xcf\x89\xec\xda\x47\x16\xe3\x99\xa6\xf4\x29\x24\xfc\x79\x24\x9f\xa3\x28\xa6\xf4\x79\xa4\xff\xd3\x88\xb1\x5a\xaa\x55\xea\xf9\x77\x84\xdf\xb1\xf8\x0e\xcf\x1e\x29\x7d\x72\xe1\x2e\xea\xb8\x9c\xfa\x21\xe1\xd4\x1f\x8b\x50\xdf\x55\xf1\xf1\x8c\xfc\xf6\x27\xcb\x0e\x12\xec\x91\x90\xf0\xc8\x21\xd1\x88\x5c\x10\xfe\x89\xc5\x9f\xf6\x3c\x21\x9c\x39\x9e\xed\x91\x80\xf0\xc0\x21\xc1\x1e\xe1\x84\x73\x87\xf0\x11\x39\x21\xfc\x84\xc5\x27\xaf\x26\xdd\x0d\x91\xa2\x49\x3d\xff\xf4\x7f\xb5\x30\x0d\x09\x9f\x8e\x0d\x4c\xa3\x28\x9e\xe2\x19\x79\xd8\xb2\x7f\xbb\x1f\x80\x43\xf3\x0f\x5b\xf6\xe6\x7d\x60\x0f\xad\x0f\xc0\xa1\xf3\x01\x38\x34\xfe\xb0\x65\xef\x7c\x97\x5d\x3b\xde\xb6\x53\xc2\x9f\x58\x12\x07\x78\x1a\xbc\x23\x93\x42\xcb\xd5\x7a\xd0\xbc\x89\x0e\x55\x63\x73\xad\x28\x75\xf7\x72\x91\xdd\xc7\x58\xa1\x5d\xd0\xc5\xc5\x2c\x9b\x66\x8b\x9b\xdb\x69\xe6\xef\x49\x50\x95\x5b\x0a\x8b\x9b\xdb\x37\xec\x65\x11\x78\x84\x4d\xc6\xcc\xb6\xab\x3a\xf7\x1e\x2f\x97\x4b\xbc\xbd\xf9\x72\x83\x5f\xaf\x96\xbf\x2e\x90\xd2\xec\xe5\x1b\xbd\x5a\xd8\x68\xd8\xe8\xae\x4c\xcc\x1a\x0a\x31\xcc\xd7\xad\x9b\xf3\x6c\x5c\x31\xff\x04\x00\x00\xff\xff\xfa\x5b\x59\x4a\xf4\x04\x00\x00") - -func runtimeSyntaxRubyYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxRubyYaml, - "runtime/syntax/ruby.yaml", - ) -} - -func runtimeSyntaxRubyYaml() (*asset, error) { - bytes, err := runtimeSyntaxRubyYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/ruby.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxRustYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x52\x4f\x4f\x1b\x3f\x10\xbd\xe7\x53\x98\x0d\x07\x20\x4a\x96\x2b\x7b\xf9\xe9\x27\x4a\xa5\x1e\x5a\xa4\x96\x43\xd4\xec\x0a\x79\xbd\x63\x62\xe1\x3f\xab\xf1\x38\x40\x34\x1f\xbe\xf2\x26\x21\x90\x20\x51\xa9\x39\x38\xde\xf9\xf7\xde\x3c\x3f\x6d\x2c\xd0\x4b\x0f\x95\xc0\x14\x69\x34\xea\x80\x40\x51\x35\x12\x42\x88\x9c\xf3\xd2\x41\x25\x8a\xba\x9e\x61\x3c\x2d\x46\x23\x4c\x16\xe2\x26\x3d\x16\x3a\x79\x45\x26\x78\xd1\x81\x36\xde\xe4\xeb\x90\x99\x0a\xd3\x81\x27\xa3\x0d\x60\x25\x0a\xed\xc5\x42\x4e\xd7\x97\xd3\xab\xfb\x66\x52\x0c\x15\xb9\xfb\x27\x44\xc0\x15\x74\xe2\x29\x60\x17\xb7\x8d\x91\x24\x81\x03\x4f\x03\x68\x7b\x26\xdb\x48\x28\x15\xb1\xb4\xe6\xc1\x07\xcd\x32\x72\x0b\x2a\x38\xe0\x36\x3c\x73\x8b\x20\x1f\x59\x05\x1f\x29\x9f\x64\x7c\x02\x56\x28\x09\xb8\x0b\x0c\x36\x02\x83\x4f\x8e\xe1\x99\x00\x3d\x6b\x99\x23\xda\x78\x69\x59\x7b\xd6\x01\xd9\x68\x36\xae\xb7\x6c\x3c\x5b\x20\xb6\x21\xf4\xec\xa4\xc2\xc0\x4e\x92\x5a\xb2\x0b\x1d\xbb\xb0\x02\x76\x89\x38\x68\x1d\x81\x82\xe6\xb0\x02\x44\xd3\x01\xf7\x68\x56\xdc\xa7\x96\xfb\x84\xc0\x08\x9a\x11\x28\xa1\xe7\x68\xd6\x10\x34\xe7\x7d\x8c\xe2\x08\x36\xdf\x31\x29\xe2\x98\x7a\x40\x26\x4c\xc0\x84\xd2\x10\x67\xfd\x87\x23\x68\x4e\x3e\x4a\x0d\xf9\xcf\xac\xa1\xe3\x14\x81\x57\x06\x29\x49\xcb\x4f\x4b\x40\xe0\xa7\xa5\xb1\xc0\x2f\x06\x6c\x77\x5e\xd7\xed\x5e\xce\x81\xf4\xab\x8c\x3d\x28\x23\x6d\x25\x8a\xac\xfc\x7d\x33\x39\xd9\x17\x5e\x67\xb5\xa4\xa7\x5d\xad\xda\x7e\xe7\xe2\xff\xa7\xbf\x9b\x7c\xbc\x7b\xa8\x1f\xc9\xb5\x80\x87\xe5\x33\x3f\x84\x37\xef\xb4\xb8\x9c\x5e\x35\x93\x77\x7c\xee\xf2\x6e\xb1\xbc\xf1\xc9\xc5\xf2\xd7\xb0\x7a\x2c\xef\x5e\x7a\x88\x25\x90\x9a\x6d\xa7\x6d\xbc\xb7\x05\x96\xd3\x75\xc6\x3d\x04\x8a\x84\xc6\x3f\x54\xdb\xc9\x22\x7b\x04\x07\x7f\x14\xc5\x6b\x0c\x7c\x77\x10\x89\x8f\xa6\x1f\xc8\xd5\xf5\x6c\x1f\x7d\xe3\xdf\xdd\xef\x2d\xd2\x46\xb6\xeb\xa5\xc4\x7d\xeb\xdf\xd2\xc1\xf1\xe4\x23\x46\xe3\xc9\x21\xba\x58\x34\xfb\xa1\x6e\x30\xfb\xd1\xb0\xb2\x3c\x9c\x74\xfa\xc9\x12\x14\xba\x50\x89\xe2\xec\xee\xf6\xcb\x2d\xcf\xe7\x73\xfe\xfa\x6d\xfe\xfd\xe6\xbc\xfa\xaf\xf8\x1c\xac\xae\x2f\x8e\x88\xd7\x17\xe5\x3f\x23\xee\x6c\x78\x84\x38\x3e\xa9\xeb\xc5\x31\x64\xf3\xa1\x54\x7f\x02\x00\x00\xff\xff\x3f\xf7\x58\xfe\xa4\x04\x00\x00") - -func runtimeSyntaxRustYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxRustYaml, - "runtime/syntax/rust.yaml", - ) -} - -func runtimeSyntaxRustYaml() (*asset, error) { - bytes, err := runtimeSyntaxRustYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/rust.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxScalaYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x52\x41\x8e\xdb\x30\x0c\xbc\xfb\x15\x86\xb1\x87\x76\x81\x26\xf7\x5c\xfb\x8c\xaa\x07\x5a\xa2\x62\x36\x8c\x64\x50\xb4\x5d\x2f\xf8\xf8\x42\x76\xda\xdd\x64\x81\x16\x5d\x5d\x04\x50\xc3\xe1\x70\x46\x91\x18\x75\x1d\xf1\xd4\x16\x0f\x0c\x4d\x13\x50\xd1\xeb\xa9\x69\xdb\xb6\xad\x8f\x09\xae\x78\x6a\x3b\xe7\x0e\x1b\xe0\xa9\x6b\x1a\x99\x18\xcb\x8e\xf8\xd2\xee\xcd\x9d\x73\xfd\xa7\x3e\x67\x46\x48\xd6\xaf\x8a\xe6\x07\x10\x0b\x79\xea\x19\x2d\x72\x06\x35\x4a\x6a\x9c\xd3\xd9\x12\x2e\x56\x86\x2c\x6a\x3a\x50\x31\x15\x48\x85\x30\xa9\xcd\x99\xc2\x67\xe7\xfa\xee\xc6\x5d\x14\x14\xaf\x98\xf4\x36\xe0\x0a\xea\x07\x9b\x81\x6d\x06\xb1\x5e\x10\x2e\xe6\xa1\xa0\xf9\xed\xc1\xe7\xa4\x94\x26\xb4\x80\x11\x26\x56\x0b\xd9\x90\x0b\x5a\xa4\x04\xcc\xab\xc5\x2c\x46\xd1\x04\x75\x92\x64\x65\xa1\xda\xa5\x83\xe4\xc5\x54\x56\x5b\x06\x62\xfc\xdb\xfc\x80\xd1\x72\xff\x03\xbd\xee\x63\x55\x80\xd4\x18\x5e\x56\xa3\xeb\xc8\xe4\x49\x0d\xfa\xa2\x02\x15\xc1\x50\x8a\xe1\x4f\xc5\x14\x8a\x2d\xa4\xc3\xae\x63\x83\x6e\xac\xc5\xf2\x8c\x22\x14\xb0\xd6\xaa\x1f\x94\x8a\x42\xf2\x98\x63\x75\x0b\x25\x82\x47\x4b\xa0\x34\xa3\x8d\xe0\x2f\x70\x46\x1b\x85\x66\xd0\x7a\xe7\x9a\x14\x06\x1b\xa7\x9e\xc9\x5b\x55\xbb\x5d\x42\x5e\xe3\x68\x65\x1a\x51\xac\xac\xc9\x0f\x92\x13\xbd\x60\xd8\x77\x2d\x36\x67\x06\x25\x46\x2b\x08\x8c\x77\x96\xfb\xbc\x49\xd0\x43\xa5\x49\xe7\x3d\xe5\x7a\x8a\x82\x6c\x3e\x74\xdd\x9f\x1a\xa6\xf0\x50\x29\x17\x1a\x37\xb3\x9c\x3b\xbc\x56\xdf\x7c\x98\xdf\xe7\xed\xa4\x11\x3d\x01\x7f\x1d\x40\xee\x5b\x5f\x31\x37\xff\x55\x26\xb4\x08\x35\xd2\x34\x31\xdf\xeb\xbe\x6e\x41\xbd\xd3\x7b\x3c\x3e\xea\x7d\x7a\x14\xd6\x7e\xfb\xfe\x4f\x16\xe7\x9e\xdf\xed\xed\x9e\x8f\x1f\xa4\xfa\x0f\xb6\xe6\x57\x00\x00\x00\xff\xff\xbd\xe3\xf3\xfb\xa2\x03\x00\x00") - -func runtimeSyntaxScalaYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxScalaYaml, - "runtime/syntax/scala.yaml", - ) -} - -func runtimeSyntaxScalaYaml() (*asset, error) { - bytes, err := runtimeSyntaxScalaYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/scala.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxSedYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\xcc\xc1\x4e\x84\x30\x10\x80\xe1\xf3\xf6\x29\xc6\x2e\x07\xa0\x52\xbd\xda\x0b\x07\x1f\x83\x96\xa4\xb4\x63\x68\x42\x0b\xa1\xb3\x9a\xcd\xe2\xbb\x9b\x65\x35\x9a\xb8\xa7\x49\x66\xbe\x7f\xde\xc2\x84\x74\x5e\x50\x41\x46\xcf\x98\x47\x42\x47\x0a\x18\x00\xc0\xf5\x96\x6c\x44\x05\x5c\x6b\x99\xd1\x17\x7c\xdf\x8f\x68\x3d\xae\x0a\x78\x7f\x7c\x90\xf5\x10\xd2\x53\x89\xe9\x1d\x44\xd5\x66\xf4\x25\x6c\x45\xc5\x19\x5b\x4f\x13\x66\xb5\xfb\x06\xf2\x39\x0e\xf3\x24\xe7\x05\x57\x4b\xf3\x35\xed\xb6\xbe\x90\xb5\x30\xfc\x5b\xb8\x39\x65\xb2\x89\x64\x3a\xc5\x61\x7f\xae\xf5\xa5\x7b\x6e\x5e\x8c\x78\x6c\xf7\x59\x6b\xfd\xf9\x4f\xe7\x05\x5d\xb0\xd3\xeb\x68\x6f\x89\xd6\xf2\xd7\xc4\x88\x89\x14\xf0\xb2\xdf\xba\x4e\xe5\xc5\x3a\x54\xc6\x54\xc7\xb2\xeb\x2f\x46\xd6\x55\x5b\xfc\xd8\x90\x3c\x26\x6a\xdc\x68\x57\xf9\x31\x06\xc2\x1b\x06\xfe\xa7\x13\xf7\xb4\x02\x7e\x10\x20\x36\x10\x07\xc1\xd9\x57\x00\x00\x00\xff\xff\xc4\xf3\x36\xcd\x4d\x01\x00\x00") - -func runtimeSyntaxSedYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxSedYaml, - "runtime/syntax/sed.yaml", - ) -} - -func runtimeSyntaxSedYaml() (*asset, error) { - bytes, err := runtimeSyntaxSedYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/sed.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxShYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\x7f\x73\x1b\x45\x0c\xfd\x3f\x9f\xe2\xea\x64\xa8\xdd\x62\xd3\x96\xb6\x03\xe6\x87\x29\x2d\x30\x9d\x02\xed\x0c\x30\x93\x21\x9b\x96\xf5\xae\xce\xb7\xdc\xfe\xb8\xee\xea\xe2\x84\xbe\x7c\x77\x46\x67\x3b\x69\x4d\xa7\x40\x26\xb7\x3a\x49\x96\xf4\xa4\x7d\xa7\xda\x79\xe2\x8b\x8e\xe6\x55\x69\xc8\xfb\x83\x03\x4b\x4c\x86\xe7\x07\x55\x55\x55\xe2\x8c\x3a\xd0\xbc\x1a\x8d\x95\x9a\x95\xe6\x08\x4a\xcd\x96\xba\x34\x3b\x99\x0d\xb6\x62\x6b\x78\xa5\xbd\xd3\x85\x0a\xde\x51\x76\xce\xba\x8f\x86\x5d\x8a\x5b\xf7\xb5\xba\xfb\x41\x97\x93\x14\xc5\x3b\xca\x8b\x76\x35\xc8\xae\x5d\x85\x76\x66\x52\xac\xb1\x73\x65\xb3\xd1\x5f\x3c\xfb\xe1\xdb\xdf\x9e\xfe\xf8\x04\x33\x5a\xf6\xce\x5b\xa5\x8e\xf0\xe8\xc5\xb3\xc1\x36\x19\x0d\xcd\x34\xa4\x2d\xe5\x79\x35\x7a\x79\x78\x63\x76\xeb\x93\x31\xc5\xb3\xea\xf6\x64\x31\x5e\xea\xc9\xa2\x34\xe3\x0a\x47\x93\xd1\xc1\x41\xee\x3d\x95\x4d\xf7\x87\xd5\xcf\x7d\x58\x52\x2e\x83\x36\xad\x4c\x8a\x85\x75\xe4\x59\x1c\xcc\xf3\x6a\xa4\xd4\xf2\xe4\xce\xf4\xf3\xd3\xdb\x4a\x2d\x37\x45\x24\xea\x71\x8a\xd6\x49\x5b\xda\x97\x4a\x47\x2b\x81\x9c\x93\xaf\x6a\x9f\xd6\xdb\x5c\x85\x35\x53\xa0\xc8\x9b\x2c\x63\xa3\x0b\xc1\x26\xd8\x14\x09\xe4\x5d\x0d\xf2\x85\x40\x45\x1b\xd0\xb9\x63\xd4\x0e\x75\xca\xd8\x4d\x0c\xae\x86\x8b\xf0\xc9\x68\x8f\x4c\xda\x22\x13\xf7\x39\xa2\x90\x27\xc3\x28\x8d\xab\x19\xdc\x50\x04\xbb\x40\xe8\x23\x3b\x8f\x75\xe3\x3c\x4d\xae\xc0\x4e\xab\xd2\x91\x71\xda\x6f\xee\xf7\x0d\x94\xba\x84\x52\x63\x28\x35\x81\x52\x5f\x40\xa9\x53\x28\x75\x82\x3f\xa0\x94\x52\x90\xa1\x7e\x89\xaf\x71\x03\x5f\xe1\x23\x28\x85\xc9\x75\xd3\xbf\x08\x7b\x2a\x93\x42\xd0\xd1\xee\x26\xb6\x21\xd6\xa6\x41\x0b\x32\x4d\x02\x9d\x77\x29\x33\x3c\x31\x0a\x31\xfa\xa0\x4b\x8b\x3e\x16\xe2\xc9\xde\x10\x43\x48\xb1\xf2\x2e\xf6\xe7\x1f\x48\x3b\x5e\xc1\xad\x26\x0b\xbd\x6e\x07\xca\xc0\xca\x51\xbb\x68\xa1\xd4\xfa\xcd\x9d\x8f\xef\x5f\xae\x32\x75\x68\x9d\xf7\xc3\xa1\xbd\xbf\xf2\x78\x2a\x05\x41\xb7\x42\x2c\xf1\x17\xb2\x28\x0d\x58\xe7\x7d\x28\x99\x7a\x76\xbe\x7c\x00\xc7\x52\x17\x7a\x78\x5f\x30\x0c\x1f\x0c\x8c\x66\x98\xc6\xa4\x08\xd3\xac\x72\x07\xd3\x84\x64\x61\x9a\xb4\x16\x4b\x4e\x89\x61\xda\xd2\x07\x48\x4a\x98\x0e\xa6\x74\xde\x31\x4c\xcf\xb0\x9a\x09\xd6\xc2\xd6\xb0\x2e\xcb\x63\x92\x4f\xb9\xc8\xdb\x90\xdc\xf6\xa0\x78\x26\xa3\xd4\xd1\x8a\xc8\xa8\xb5\x61\xa1\x87\x16\xd6\xd4\x81\x51\x27\x6f\x21\x94\x47\x93\x0a\x3b\x0b\xf9\x17\xfe\x7a\x8f\x3f\x93\x50\xc7\xc5\x16\x5e\x28\xb4\x1a\x92\xfa\x82\x60\x1f\x08\xa4\xd0\x4a\xd9\xd0\xd6\xae\x4e\x08\x6d\x4c\x16\xa1\x65\x0a\x1d\xc2\x19\xa2\x33\x84\xe8\x11\x53\xd3\x77\x88\x5d\x4e\x06\xb1\x0f\x52\x32\x59\x74\xba\x30\xa1\xd3\xdc\x98\xa6\x45\xe7\x62\x7b\x81\x2e\xa3\xcb\x2e\xb2\x40\x1e\x5e\x6a\x74\x7c\x8e\x6e\x6d\x07\xe2\x0e\x38\x32\x69\x2f\x51\xc8\x01\x39\x48\xf9\xdc\x47\x99\x5e\xa1\xd7\x18\x97\x46\xdf\x45\x69\xf4\xbd\x7b\xf7\x07\xf1\xe0\xa1\x88\x4f\x3f\x1b\xb4\x07\x77\xef\x4d\x04\x75\x69\xf2\x70\x7f\x7d\x8d\xe2\x89\x3a\x14\xe1\xd9\x66\xaa\xf2\xb5\xa1\xb0\x5d\x8a\x93\xf9\x02\x43\xc0\x45\x34\x60\x2d\x8f\xf3\x60\x22\x30\x15\xde\x7c\x2e\x72\xa4\x9e\xc1\xa9\x37\x0d\x38\x83\x73\x4f\x72\x44\x23\x97\xc3\x43\x6e\x49\xd4\x0f\xb3\xeb\xe3\xf6\x2e\xfa\xe8\x5e\xa3\x8f\x43\x4f\x7d\xa1\x5c\x70\x26\xcd\xac\x0d\xd6\x4d\x92\x47\x07\x87\x0b\x2a\xfb\x04\xbb\x5a\x18\x55\xed\xf5\xaa\xbc\x67\x49\x4c\xa7\x27\x7a\xfa\xd7\xf4\xf4\xf6\xe8\xbd\x1b\xa4\x1a\xdc\xe2\xdd\xba\x9d\xa5\xc8\xae\x76\xdb\x3d\x75\xa4\xd4\x9b\x85\xec\xaa\x47\xd3\xdf\x5f\xdd\xf8\xe6\xf0\xe8\xd6\x62\x2a\x6b\xeb\x72\x31\xfa\xff\x01\xfb\xfb\xb0\x70\x76\x71\x35\xdf\xf6\x53\x09\xb4\x3c\xc0\x1a\x8d\xae\x6c\x14\xed\x9e\xa5\xb4\xae\x1b\x4a\x29\x35\xbb\xb6\xbe\xb5\x7f\x77\x7f\x6f\x57\xda\xec\xab\xc7\x8d\xce\xd7\xa1\xff\x15\xce\xcd\x7d\x34\x37\xf7\xcb\x56\x27\xa7\xd7\xd9\xc2\x30\xdc\x7f\x64\x19\xbf\x84\x52\x65\x72\xb8\x9f\xec\xe8\x5f\x7a\xe0\x64\x93\x84\xff\xfa\xfc\xc9\x73\x1c\x1f\x1f\xe3\xfb\xa7\xc7\x3f\x7d\x37\x99\xcb\x3c\xff\x0e\x00\x00\xff\xff\x42\xc3\x8d\xb7\x85\x07\x00\x00") - -func runtimeSyntaxShYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxShYaml, - "runtime/syntax/sh.yaml", - ) -} - -func runtimeSyntaxShYaml() (*asset, error) { - bytes, err := runtimeSyntaxShYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/sh.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxSlsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x8f\xdd\x6a\xc3\x30\x0c\x85\xef\xf3\x14\xc6\x2b\xb4\x0d\xd4\xdd\xed\xfc\x00\x7b\x82\xdd\xd5\xc9\x70\x62\xa5\x18\x1c\x39\x58\xca\x60\xa0\x87\x1f\x4e\xd7\xc2\x28\xbb\x11\xe2\x3b\x47\x3f\x67\x8a\x09\xf8\x7b\x01\xab\xc8\x27\x6e\x9a\x00\x0c\x23\x5b\xd5\x28\xa5\x54\x15\xd1\xcf\x60\x95\x76\xce\x50\xa2\x9d\x6e\x9a\xb2\x26\x20\xbb\xe9\x27\x15\x03\x20\xc7\x29\x42\x31\x5f\xbe\x58\xa5\xfb\x4b\xaf\x4e\x9d\x69\xed\x4e\xff\x67\x31\xad\xbd\x6b\x01\x26\xbf\x26\xb6\x4a\xd7\xeb\x0f\x3c\x66\x24\xf6\xc8\x06\xd7\x79\x80\x3a\x73\x6e\x2f\xaf\xa7\xb7\xee\xdc\x3e\x59\x86\x9c\xd3\xf6\xdf\x70\xf8\x28\x2b\xc8\xbb\x4f\x04\x47\xe7\x86\x27\x27\x71\x89\x78\xad\x5e\x7d\x70\xce\x39\x23\x97\xde\xe9\xee\xd8\x3a\x2d\xfb\x07\xd9\x77\xc7\x76\x7f\x9f\xa5\x05\xc6\xe8\xef\xfb\xaf\xc5\x47\x94\xad\x92\x8c\x79\x5e\xf2\x8a\x41\x96\xb1\xc0\x0d\x7e\x6e\x6d\x8a\xc4\xb2\xc4\x94\x7c\xf9\xfb\xc6\x3c\x03\xd6\xa8\xfd\x8b\x79\xc4\x20\xf6\x0c\xbf\xbc\x9e\x88\x93\x40\xda\x0a\x81\xe4\x22\x98\x59\x3c\x06\x01\x0c\x95\x62\xb8\xad\xfc\x09\x00\x00\xff\xff\x06\xf6\xfb\xa9\xb6\x01\x00\x00") - -func runtimeSyntaxSlsYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxSlsYaml, - "runtime/syntax/sls.yaml", - ) -} - -func runtimeSyntaxSlsYaml() (*asset, error) { - bytes, err := runtimeSyntaxSlsYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/sls.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxSolidityYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x54\xc1\x8e\xe3\x36\x0c\xbd\xe7\x2b\xdc\x74\xdb\x9d\x64\x90\x99\x69\x8b\x2e\xd0\xa0\xed\x60\xd1\xa2\xd7\xbd\xf4\xd4\x38\x28\x68\x89\x8e\x89\xc8\x92\x41\xd2\xc9\x78\x41\xf4\xdb\x0b\xd9\x99\x9d\x34\xd9\xce\x6d\x73\x88\x28\xf9\x91\xef\x49\x4f\x54\x4d\x01\x75\xe8\x70\x5d\x48\x0a\xe4\x49\x87\xd9\xcc\xa3\xa2\xd3\xf5\xac\x28\x8a\x22\x7f\x8f\xd0\xe2\xba\x98\x97\xe5\x9d\xa4\xf0\x66\x3e\x9b\x71\x1f\x50\xa6\xef\xab\xa2\x63\xec\x38\xb9\x11\x50\xdd\xb8\x14\x95\xc1\xa9\x05\xaa\x18\x78\xb0\x8e\x61\xd7\xc2\xa2\x2c\xab\xf9\x29\xc1\xa5\x28\x0a\x51\xef\x62\xdf\x56\xc8\x53\xe2\x66\xb5\x7d\xbc\xd9\x3c\xac\x7e\xda\xde\xda\xc3\x53\x0e\x60\x55\xbf\x5f\xfd\xb1\xbd\x3d\x4f\x25\x8f\x51\xa9\xa6\x31\x6b\x03\xab\x8f\xef\x57\x7f\x6d\x37\x7f\x4f\x41\x4e\x5e\x6e\x36\x6b\xe9\xc0\xe1\x7a\xbb\x5d\x3e\x67\x89\x82\x62\x8b\x51\x4f\x1a\x41\x04\xdb\x2a\x0c\x56\x31\xc2\xde\xb2\x64\x8a\x3d\x9a\x4f\x56\x27\xb6\xba\x8f\x4e\x29\x45\xa3\xda\x30\x08\x5a\xc4\xa3\x31\x6a\xcf\xf1\x34\x88\x1d\x1b\x0a\x78\xae\x4c\x3a\x74\x04\xe1\xc4\x90\x8f\x0a\xa3\x37\x6d\x38\x1d\x47\x58\xf1\x75\xd1\xc2\x1e\x0b\xe9\x19\x0b\x6d\x70\x28\x80\xb1\x38\x20\x0f\xc5\x81\x84\xaa\x80\xa7\x42\xd9\x8c\xbb\x3d\x0e\xc7\xc4\xfe\x59\x6f\x4c\x71\x68\x53\x2f\xf6\x7c\x74\x46\xd1\xe3\x13\x7a\xeb\x60\x80\x2a\xa0\x75\x7d\x15\xc8\x59\xc7\x74\x00\x45\xc3\x27\x45\x8e\x10\x8c\xe2\x14\x7c\xee\xfc\x4f\xd5\xab\x90\xdc\x3e\x2b\x9e\xa2\x06\xa4\x31\x97\x28\x56\x20\x68\x9e\xea\x9a\x5c\x1f\x74\xb0\x1d\x48\xa0\x96\xd4\x26\xdb\x4c\xa9\x45\x51\x68\xbb\xc5\xe2\xd1\x5a\xd9\x8d\x25\x3c\x28\x64\xa4\xe5\xed\x23\xdb\x01\x42\x8f\x19\x10\xd3\xd1\xf4\x69\xc4\xec\x40\x3a\x26\x87\x96\x98\x76\x14\x17\x8b\xc7\x57\xd4\xed\xd1\x39\xd8\x7f\xff\xe3\x3b\x93\x06\x7e\xc8\x7f\x39\x66\xea\xb0\xf5\xdf\xbd\x7b\x30\x74\x8c\x2e\x1d\x90\x0d\xbc\x6f\x93\xb7\xb6\x0f\x79\xd0\x86\xc4\xa4\xef\x90\x4d\x30\xd4\x1e\x45\xb9\x77\x6a\x65\x79\x57\x41\x80\xe8\xf0\x15\x52\xe5\x1e\xad\x86\x20\xaf\x81\x8e\x48\x26\x1f\xa1\x4a\x56\x53\x8c\x38\x18\x6a\x33\xb2\xb9\x14\xbd\x58\x4b\xb1\x57\x14\x6b\x52\xcf\x62\x1e\x06\xb1\x23\xe2\x5e\x6c\x40\x60\x39\xaf\x3b\xb5\xdf\xe4\xb4\xf7\x8c\x22\x56\xa5\x14\xac\x85\xae\xa3\xb8\x33\x51\xce\xc3\x01\x38\xdb\x79\x53\x96\x7e\xb9\xb0\xfe\x25\xac\x06\xc5\x53\x58\xd3\x13\xfa\x67\xc4\xd9\xe4\x9c\x0e\x99\x13\x3f\xf3\x55\x32\x75\x2b\xd4\x8a\x6c\x2e\x5b\xee\x40\x5d\x63\x1e\x6b\xe8\x83\xe6\xbd\x8d\xd7\xc8\x28\x06\x8a\x38\x5d\xa8\x1a\x1c\x5a\x40\xb5\x76\xc4\xc6\x3e\x04\x4b\xb5\x75\x3d\xa3\x31\x86\xe4\x40\xc7\x5b\x99\x1b\x8f\x9c\xc9\x91\x32\x4c\x79\xb0\xbc\xd7\xf1\x2f\xd5\x76\x20\x3c\x9e\x0b\x4b\x1d\x32\xe8\xa8\x6d\xb3\xba\xbd\x5f\xfe\xf2\xf3\xaf\x5f\xfd\xf3\xcd\xe3\xfa\x5b\xdb\xbe\x58\xd0\x8e\x7d\x3c\x4e\xf3\x4f\x14\x38\x1b\x72\x7f\x3f\xff\xb4\x86\x31\x37\xce\x9b\x97\x85\xe9\xb9\x2a\x36\xdb\x8b\x2a\xc5\x75\x99\xb2\x5c\x5e\x16\x2a\xcb\xe5\xfd\xff\xd7\xd2\xe4\xd3\xba\x98\xff\xf9\xe1\xf7\x0f\xeb\xc7\xab\x17\x6e\xb2\xee\x33\x44\xe5\xfc\x8a\xe6\x6c\x45\xf6\xd4\x8d\xcc\x65\x79\x77\x49\xfd\x69\x7a\x49\x35\x3d\x40\xbf\x35\xc0\xff\x4d\xbd\x96\x73\xa5\xe6\xed\xa5\x98\xb7\x5f\x40\xcb\xec\xdf\x00\x00\x00\xff\xff\x28\x8c\x3d\xc3\x6b\x06\x00\x00") - -func runtimeSyntaxSolidityYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxSolidityYaml, - "runtime/syntax/solidity.yaml", - ) -} - -func runtimeSyntaxSolidityYaml() (*asset, error) { - bytes, err := runtimeSyntaxSolidityYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/solidity.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxSqlYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x55\xdb\x6e\xe3\x36\x10\x7d\xde\x7c\x85\x61\x2c\xb0\xb9\x20\x41\x5f\xeb\x97\x05\x2d\x8e\x64\x36\x14\xa9\xf2\xe2\xcb\x46\xe9\xae\x62\xb3\xb5\x00\xdf\x62\xc9\xdd\x2d\x70\x3e\xbe\xa0\x72\xd9\x3c\xa4\xd5\x83\x34\x87\xc3\x33\x87\x9a\xe1\x60\xf4\x67\xbd\x09\xed\x3f\x87\x30\x1a\x34\x8f\x9b\xb3\xb3\x55\x68\xc3\xb2\x1d\x0d\xce\x06\x83\xc1\x20\xee\xed\xaa\x6d\x18\x0d\x86\x65\x79\xd3\x3c\x6e\x3e\xa2\x79\xdc\xd4\x6d\x38\x2e\x3f\x0e\xcf\xce\x8e\xa7\x4d\x68\x46\x1d\xf3\x7a\xd0\xb4\x55\x1b\xb6\x61\xd7\x8e\x06\xc3\xf3\xcf\xf5\x45\x59\x3e\x9c\x33\x29\xc1\x6c\x02\x66\xc1\xa4\x23\x03\xa6\x38\x18\xe7\x60\xde\xe9\xaf\x42\x25\x86\x72\x52\x2e\x72\x87\xff\x23\x33\x26\x37\x23\x52\x18\x0b\xc5\xcc\x02\x63\xed\x26\x18\x47\xab\x25\x31\xd5\x17\x9d\x4c\x98\xca\x08\xc9\x84\x92\x5b\x24\x5a\xfa\x5c\xd9\x67\x8b\xc4\x68\x6b\x91\x18\x62\x8e\xfa\x74\x38\x73\x6c\xcc\x2c\x59\xbc\xa0\x0e\x80\x93\x64\x0b\xe2\xe0\x64\x13\x23\xc6\xd4\x01\x70\x61\x9d\x50\x89\x8b\xdb\xe4\x08\xdc\xe8\x02\x9c\x52\xe6\x65\x6f\xbe\xa4\x12\xa9\x2d\x71\x90\x4d\x58\x11\xed\x5c\x58\x67\x41\xf3\x42\x32\xd1\x9b\x70\x2a\x48\x72\x8b\xce\x20\x95\xde\x4e\x90\x6a\x13\x1f\x12\x99\x42\xea\x55\xe2\x84\x56\x48\x8d\xce\xfb\xb4\x32\xa3\x7d\x81\xcc\x30\xe5\x30\x61\x53\xa1\xb2\xbe\x08\x91\x29\x6d\x08\x42\x71\x9a\x43\xa8\x54\xc8\xb8\xb0\x64\x1c\x84\x52\x64\x20\x94\xd3\x10\x9c\x94\x13\xa9\x20\x0e\xa1\x20\x2c\x44\xda\x27\xfc\x9b\x16\x0a\xb7\xb4\xb0\xb8\x15\x52\x46\xd4\x17\x21\x89\x71\xa1\x32\x48\x71\x4b\x90\x22\x17\x0e\x52\x28\xb2\x90\x9a\x71\x48\x9d\x30\x19\xdf\xb7\x90\x7a\xf6\xb5\x30\x42\x1b\xe1\x16\x90\x94\x3a\x48\xa6\x32\xcf\xb2\xde\xa6\xc8\x35\x17\xe9\x02\x8a\x39\x6f\x98\x84\xd2\x0e\xca\x4b\x09\x45\x73\x37\x65\xb2\x2f\x5c\x17\x4e\xe4\xe2\x0b\x21\x02\xad\x9e\x0d\x93\x72\x01\x6d\x38\x19\x68\xef\xba\x0a\xea\x0e\x46\x47\xef\xf5\x17\x46\x27\xc4\xbd\x21\xbc\x20\x26\x51\x18\x91\x33\xd3\x5b\x31\x43\x8c\xc3\x50\x4a\x86\x54\x42\x16\x86\x32\x9a\x17\x30\xa4\x58\x4e\x30\x54\x48\x96\x44\xeb\xbc\x51\x30\x34\xd5\xb7\x04\xd3\x95\xd7\x88\x6c\xd2\xdb\xd8\x76\xa2\x67\xb0\xba\x13\xb3\x8e\x39\x6f\x61\x9d\x61\x31\xf4\x6b\x77\xbd\x96\x24\x25\x0e\x96\x62\xf1\xa2\xe9\x53\x74\x6c\x2c\xc9\xc2\x91\xc9\x85\x62\x8e\x38\x9c\x46\x94\x94\xf1\xe2\x9d\xf1\x2a\x61\x8e\xd0\xd1\xe0\x28\x2f\xb4\x89\x23\xc4\x19\x91\x65\x64\x22\xc1\x3a\xe2\x7d\xa7\x78\x25\x7e\xf7\x04\xaf\xba\x6e\xf1\x96\xe0\x6d\xd4\xf7\x05\x8f\xea\x53\x26\x3d\x59\x4c\x99\x11\x4f\x9f\x33\x15\x34\xeb\xd3\x9c\x09\x37\xc1\xcc\x08\x47\x98\x4d\xc8\x10\xbe\x90\xd1\x69\xec\x6c\xb7\x28\x08\x73\x6d\xde\x2a\x3c\x4d\xe8\xd7\xe0\x29\x33\xc9\x84\x19\x38\xa1\x16\x42\x39\x38\x9a\x3b\x74\xdf\x62\x73\x26\x65\x74\xe5\xc4\x85\xcf\x23\x7a\x7e\x28\x26\x3c\x16\x59\x5c\xa6\x52\x33\x07\xae\x7d\x2c\x0b\xa7\x44\xe4\x4c\x76\xf1\x4e\xe4\x84\xf8\xb2\x8e\xe5\x45\x87\xb0\x20\x66\xe0\x95\x15\x99\x22\x8e\xd7\x73\xc7\x52\x8f\x3b\xd0\x1d\xde\xad\x9e\xce\x7c\x03\xbb\x2d\xa9\x55\xd6\xf9\x22\xe8\x3c\xa4\x7c\xde\x8d\xef\x97\x91\x3e\x65\xe6\x09\xbd\xcd\xf9\x70\x0c\x87\xe3\x7e\xf9\x9a\xf6\x4d\xcc\x7c\x55\xb5\xd5\x43\xd5\x84\x06\xab\xd3\xf6\x80\xb0\x5c\xef\x11\x7e\xd4\x2d\xc2\x8f\xc3\xa6\xaa\x77\x58\x87\x6a\x15\x8e\xe7\xcd\xc5\x67\xac\xc3\xe6\xd0\x2b\x58\x6f\x0f\xfb\x63\x8b\x7a\xb7\xaa\x97\xa1\xc1\x76\xbf\x0a\xd8\x9d\x36\x9b\xbf\xab\xcd\x29\x60\x7f\x6a\x0f\xa7\x16\x87\xe3\x7e\x7b\x68\xf1\x78\xaa\x5b\x1c\x43\xb5\xea\x55\x6d\x96\xeb\xb0\xad\xd0\x84\x43\x75\xac\xda\xfd\x11\xcd\x7a\xff\x1d\x6d\xf5\xb0\x09\x0d\xda\x7a\x1b\xf6\xa7\x16\xdf\xeb\x55\xbb\x7e\x2b\xb5\xdc\xef\x9a\xb6\xda\xb5\x37\x0f\xfb\xfd\xa6\xfb\xe9\x3e\x9c\xc7\xa9\x90\xa6\xef\xb2\x76\xa7\xed\x43\x38\x3e\xf3\xee\x7e\xb9\xfe\xf5\xfe\xea\x5d\x5e\xd3\x1e\xeb\xdd\x5f\x91\x37\x3c\x2f\xcb\xb2\xbc\xc1\xdd\x1f\xe5\xf0\xfe\xe2\xb2\x1c\xe2\xd3\xab\xe7\xd3\xfd\xc5\xe5\xa7\xff\x8e\xfd\xf6\x33\xb4\x2c\xcb\x6f\xf7\x17\x97\xdf\x7e\x92\xb7\xcf\xcd\x5d\x96\xd7\x65\x79\x7d\x73\xf9\xf1\x65\xab\xde\xad\xc2\xae\xbd\x5e\xae\xab\xe3\xcd\xf7\x75\xdd\x86\xe6\x50\x2d\x63\x27\xdf\xdd\x8d\x9e\xe0\xfd\xfd\xd5\x7b\xec\xd1\x60\xf8\xe1\x6a\x70\x85\xc1\xd5\x87\xab\xe1\xd9\xbf\x01\x00\x00\xff\xff\xfc\x6c\xf1\x96\xa5\x08\x00\x00") - -func runtimeSyntaxSqlYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxSqlYaml, - "runtime/syntax/sql.yaml", - ) -} - -func runtimeSyntaxSqlYaml() (*asset, error) { - bytes, err := runtimeSyntaxSqlYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/sql.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxStataYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\xbc\x5b\xaf\x24\x37\x92\x1f\xfe\xae\x4f\xd1\xdb\xff\xf9\x7b\xa5\x99\x95\xd4\xe7\xe8\xd2\x3d\xc2\x6a\x05\xb8\xbd\xc2\xae\xb1\xc6\xbe\xf8\x61\x00\x95\x36\xcd\x24\x23\x33\xa9\xe2\xed\x90\xcc\xcc\xaa\x9e\x98\xf9\xec\x46\x44\x90\x59\x75\x4e\xb7\x31\x06\x0c\xbf\xb8\xd1\x8c\xdf\x2f\x78\xbf\x25\x19\x64\x66\x9d\xc9\x3a\xa8\xd7\x04\x3f\xbc\x2a\x55\x55\xf5\xd9\x67\x06\x2a\xe8\xfa\xc3\x67\xaf\x5e\xbd\x7a\x45\x81\x41\x79\xf8\xe1\xd5\xeb\xd3\xe9\x2b\xf5\x93\x89\xbf\x7b\xfd\xd9\x67\x79\x75\x50\x24\xc2\x97\xaf\x74\x0c\xa5\xaa\x50\xbf\x2a\x35\xdb\x30\x8b\x37\xfd\x2b\x55\xe5\xfa\xc3\xab\xd7\xff\xe3\xf4\xfa\xf5\xe1\x09\xc1\x50\x5e\xaf\xff\xfe\xe6\x75\x97\x5b\xff\xf7\xe5\x2b\x6b\x20\x54\x3b\x59\xc8\x5f\x79\xa5\x73\x7c\x1e\xfe\x2c\xfb\xd7\x1f\x05\x49\x21\x7f\xff\x71\x80\x14\xf5\xea\x97\x5f\xff\x56\x69\xd4\xdc\xdf\x9d\x4e\xfb\x1f\x5e\xbf\x88\x79\x6b\x6d\x02\x6d\x95\x7b\xbf\xa8\xcc\xb1\x4f\xa7\xaf\x5e\x7f\xf6\xbf\xdb\x25\x9f\xea\x91\xff\x77\x3b\xe4\xff\x7b\xf5\x9f\x57\xeb\xea\x97\x36\xbc\x9a\xd6\xa0\xab\x8d\xa1\x7c\xf6\xb2\x9c\x5b\x7b\x5e\x9f\x4e\xe3\xe7\x83\x56\xce\x41\x46\x35\x8e\x19\x36\x54\x63\x41\xa5\xa3\x88\x05\x55\xb1\x81\xc5\x82\xaa\xaa\xc0\xe2\x91\xe5\x82\x6a\xad\x51\x47\x03\x38\x42\x55\x06\x02\x8e\x36\x44\x6f\x95\x3b\x48\x3a\x58\x55\x56\xbc\xb3\xa7\xf0\x38\x19\x1c\xaf\x15\x62\x36\x90\x51\xa3\x56\xab\x5e\xae\x0d\x28\x2b\x61\x9c\xea\xbd\x59\x7c\x41\x0d\xd6\xa1\x5e\x54\x46\xbd\xd8\x47\x16\x1c\x6f\xb1\x8f\x12\x8b\x23\x2d\xd1\x41\x39\x5f\x89\x24\xd4\xce\x26\x7c\xef\xa2\x3e\xa3\x76\x71\x76\x71\xc6\xf7\xde\x5c\x29\xe2\xfb\x38\x69\x12\x06\x75\x74\xf0\x14\x56\x3f\x12\x73\xaa\xc6\xec\xa2\x56\x0e\x0e\x75\x83\x5c\x6c\x0c\xa4\x87\x29\x03\x24\x95\xa9\xa4\xe8\x7a\xa2\x12\x27\xd4\x91\x79\xa0\xfc\x72\x46\xea\x3f\xee\x3e\xa3\x2a\xa0\x51\x57\x34\x50\xd1\xcc\xca\x7b\x95\x8c\xba\xb1\x67\xfc\x72\xf0\x3b\x46\x9c\x6a\x6c\xac\x9a\x59\xbc\xd1\xa1\xa2\xb1\x1c\x8e\x26\x4e\x23\x89\xf7\x24\x16\x12\x9e\xc4\x13\x89\x9d\xc4\x15\x4d\x24\x72\x45\xb3\x86\x00\xb5\xa6\x1c\x47\x04\x04\x87\x90\x8a\x89\xeb\xe8\x80\xd8\xe4\xa2\xaa\x08\x97\x44\x2e\x06\x9a\x2b\xca\xdd\x73\xea\xec\x3b\x95\xfb\xfc\x67\xfc\x99\xbc\x69\xe9\x82\x8b\x2d\xb5\x30\xcd\xa0\xcc\x41\x20\xe7\x98\x59\xdb\xb3\xad\x80\x52\xce\xe4\x22\xf9\xfa\xba\x5b\x53\x17\xfc\x99\x73\xe3\x16\x51\x7e\xd2\xf4\x06\x1c\xb4\x28\xa3\xbc\xca\x06\x17\xe5\xa6\x2b\xa8\x7c\x10\x77\xc5\x45\x95\x01\x52\x8e\x09\x97\x05\x97\xe5\x3d\x52\x77\x2d\x34\xb6\x4b\x5c\x73\xc1\xe5\x9a\x20\xcf\x10\x3d\xd4\x6c\xf5\x0b\x35\xe1\xbf\xa2\xa5\xf9\x2b\x92\x4b\xb3\xb3\x5a\x4b\xb1\x2a\xdc\x18\x55\xeb\x50\x24\x52\x30\x70\x09\xb1\xa2\x0d\xce\x16\x82\xac\xc2\x0c\x68\x03\xf1\x8d\xdc\xf1\x38\xdc\xf1\x96\x76\x6b\x13\xfe\x60\x87\x3f\x4d\xee\x86\x87\x5f\x9b\xbc\x36\x6c\xf7\x83\x68\xc3\x76\x3f\x56\xcf\xd5\x9e\xf6\x67\x16\x5d\x6b\x3d\x7b\xb0\xee\xdf\x7a\xa0\x91\xc3\xf7\xd6\x0f\x77\x4a\x0f\x75\x2a\x39\xa5\xe1\x8e\x1e\x21\x71\xb6\xa5\x5a\x7d\xcf\xef\xc3\xb8\x83\xc2\x7d\xef\x84\x97\xdd\x13\x7a\x3f\x84\xfb\x8e\x08\x3f\x8b\x3c\xf4\xa3\xde\x6d\x5d\x21\x26\xb9\xd7\x1e\x27\x45\x5b\x4a\x0c\x77\xb4\x87\x94\xab\x27\xe0\xf8\x47\xf4\xba\x9e\xe1\xda\xbb\x77\x07\x3b\xae\xce\xdd\xd1\xb4\x3c\x53\x7a\xaa\xe6\x21\x6a\x06\x5e\x14\x6d\x29\x57\xdf\xe6\xdc\x7f\xc5\xde\x5b\x0d\x69\x3e\xdd\xf7\x9a\x0b\xe8\xc2\x6d\xf5\x73\x61\x52\xba\xc6\x4c\xdd\xe3\x82\x3c\xea\x2e\xd8\xe3\x09\x61\x7e\x9b\x99\x2e\xd8\xdd\x96\x45\xe5\x2a\xda\x7d\x21\xc1\xb7\xce\x11\xad\x75\x54\x27\xe2\x79\x9f\x38\xce\xe4\x1e\xde\xe0\x31\x8a\x9d\xb4\xe0\xdb\x70\xca\x58\x7a\x55\xbd\x2d\xc5\x86\x99\x68\xb6\x17\x82\x35\xd8\x29\x66\x8f\x5e\x91\x7a\xa1\xa5\x9e\xb0\xad\x37\x5e\x5d\x64\x1d\xf0\xea\x42\xcf\x8b\x57\x17\x17\x29\xbd\xb9\x62\x5b\xa0\x8f\x2c\x6d\x20\x27\x19\xd8\xd0\x33\xb0\xa1\x65\x60\x03\x67\x60\x83\x64\x60\xc3\x5a\xa1\xa0\xf7\xe8\xfd\x7b\xf4\xd1\xa0\xa7\x85\xc0\xc7\x50\x17\x91\xee\x8a\x3e\x83\x33\x76\x42\x5f\xe2\x24\x4b\x04\xb1\x23\x6d\x89\x53\x01\x5a\xcb\x0b\x86\xbe\xb3\xdd\x66\x6b\xb8\xed\x6d\xcf\x67\xad\x4c\xd9\xd0\x37\xa6\xdb\xc4\x0d\x3f\x63\xe0\x75\xb2\x4d\xdc\x36\x6b\xdb\x48\xdc\xc6\x21\xa4\x96\x45\xa2\x14\x29\x54\xe4\xff\x1c\x24\xf3\x33\xac\xce\x79\x55\x31\xb9\x35\x2b\x87\x7d\x6a\x37\x4c\x78\x3f\xc1\x9f\xa8\xdd\x4f\xab\xca\x15\x72\x47\x77\xc5\x8c\x99\x4b\xcf\x47\x83\x72\x5b\x8a\x32\x17\x9e\x81\xbc\x64\x06\x67\x98\xe1\xe2\x05\xb2\x40\xc1\xd6\x77\x19\x92\x53\x57\xcc\x50\xd7\x1c\x30\xdf\x2f\x44\x59\xe6\x6b\x7e\xb1\xee\xe6\xdb\x72\x92\xfb\xd3\x90\x8f\x49\x96\x6f\x3d\x9c\x5b\xcf\xe4\xb8\x06\x83\x39\xee\x6d\x7f\xce\x71\xbf\xdb\x80\x49\x6b\xbe\xb4\x01\xe7\xde\x19\xb9\x62\xee\xb3\xaf\x13\x9a\x22\xb9\x3f\xcc\xf9\xf6\x28\x17\x2c\x5a\x39\x95\xb1\x8f\x77\xb1\x73\x40\xb2\x78\xd8\xe0\x29\x9e\x2c\xa3\x52\xdb\xa4\x2b\x54\x1f\xb8\x60\x79\xca\x15\x4b\xc1\x52\xde\x63\xa9\x59\xab\x4a\x60\xd6\x44\x10\x27\xee\x41\x31\x47\x09\x6a\xb6\x9e\xd5\x4e\x5c\x27\x47\x90\x83\x40\xb0\xa6\x04\x99\xf5\xb8\x0b\xa1\x4d\x4d\x98\x57\x55\x2f\xec\x15\x0b\xa7\xed\x08\x64\x9e\x00\x17\x14\xe9\xf8\x80\x65\x1d\x6d\x28\x35\x0b\xd9\x63\x36\xc4\xc4\xc3\x63\xd9\x01\x12\x56\x24\x53\x8e\x6d\xb8\xfa\x1e\xab\x41\x9e\x64\x75\xc1\x6a\x03\x56\x8f\x35\xd2\xf3\x56\xb0\x3e\x61\xcd\x34\x4e\x35\x37\x7b\x43\xe6\xe1\x6d\x91\xac\x3b\xd6\xdd\xd6\xc5\x06\x5c\xd9\x38\x5b\x4d\x6b\xd0\x6a\x5a\xb1\xab\x2d\xc6\xd2\x42\xb1\xda\xe2\xa0\xd2\x74\x5c\xa9\xdb\xa2\x4f\x2a\x03\xf3\x12\x73\x3d\xc3\xf5\xde\x1f\x2e\xf7\x21\x4d\x9b\xac\x60\x8d\xa2\xe6\xe8\x99\x70\x79\xdc\xe5\x9b\x72\xd6\x90\x81\xb4\xf6\xd2\x39\x78\xaa\x4c\xb2\x9d\x17\x61\xd2\xd7\xeb\xd1\xd9\x9c\xab\xad\x4e\xea\xc3\x03\xb3\x1e\x63\xb5\x1e\x83\x45\x4c\x66\xa7\xfd\x20\x51\x69\x1c\xd6\x3e\x20\x4c\xe4\xa1\x39\x68\x9e\xee\xb8\xba\xf1\x1e\x5b\xc6\x8f\xeb\x14\xa0\x68\x95\x5a\x15\xe2\x02\xbd\xb1\x3c\xae\x44\x79\x34\x3b\xd1\x71\x6d\xed\x94\xf1\xde\x40\x93\x63\x3b\x71\x07\x38\xb3\x70\x57\xec\xf3\xbe\x21\x8d\xf4\xed\x09\x38\xd8\x33\x6f\x1e\xe4\xfb\x3d\x6d\xa7\xc5\x84\x4b\x27\x31\x66\x50\xe7\x66\x25\xb3\x31\xd6\x0c\xb1\xeb\x82\x57\x8f\x57\x8a\x7b\x7d\xc2\xeb\xfe\xc5\xe9\x34\xbe\x7e\x79\x2e\xd1\xd1\x7b\x15\x4c\x3f\x96\xd0\x49\x18\x3c\x84\xfa\xe2\x54\x62\x27\x04\x57\x80\xc5\xe9\x54\xfe\x60\x27\xb4\x01\xa7\x98\x41\xe9\x85\x90\xdc\xc6\x42\x89\x74\x0d\xd6\x8e\x70\x90\x82\xe3\x15\xc7\x2b\x01\x4d\x28\x7c\x5a\x2d\x54\x77\x25\x44\x35\xc6\xb5\xa2\xd2\xa8\xf4\xf0\x16\x95\x4e\x39\xb9\x58\x0f\x42\x7e\xe6\xb7\xb5\x54\x54\x26\x92\x4b\xaa\x2e\x84\x6b\x62\xdb\x5e\xb9\xb4\x28\x54\x1e\x54\x28\x48\xe7\xa3\x10\xc9\x6d\x2c\x94\xc8\x01\xa8\x95\x8d\x57\xa0\xd5\x8b\xb9\x81\x09\x95\x9c\x80\x54\x42\x95\xd8\x01\x8b\x20\xd2\xa0\xca\x7a\x61\x31\x98\x2c\xd8\x32\x23\x9a\x18\x9c\x47\x95\x61\x66\xc1\x5e\x73\x41\x95\xad\x57\x22\x25\x21\x91\x9e\x92\x78\x42\x55\x50\x15\x4f\x4f\xb1\xad\x37\xd6\x23\x1d\xba\x9b\xee\x14\x3f\x5d\x86\xc1\xb8\xf9\xce\x8b\x32\xa2\x9c\x0a\xb0\xc8\x22\x2b\xaa\x4d\xfa\x71\xeb\xbd\xc8\xa4\x74\x1c\xde\xe2\xa8\xcb\x19\xf6\x37\x38\xce\xd1\x4c\x19\xae\x74\x3c\xa4\x76\x8c\x36\xbd\xa1\x62\x47\xcb\x39\x8c\x36\xa5\xa6\xe6\x03\x13\x03\x57\x7d\xb4\x15\x4a\x07\x4b\x18\xf7\x8a\xa3\x18\x27\xa3\x07\x5f\xe8\x59\x1d\x23\x65\x15\x63\x2d\xca\x27\x21\x35\xab\x3b\x36\xbc\xc3\x31\x5e\x74\x1c\x5c\xc3\x24\x78\x69\x30\x7c\xdf\x49\xc2\xb1\x17\x9d\x91\x9f\x05\x1c\xb3\x05\xe2\x91\xdc\xce\xa2\x88\x04\x1c\x33\x85\x64\xee\xd6\xb1\xe0\xc8\x4d\xa7\x5a\xb8\x61\x6f\x04\x3a\x72\xd0\x13\x77\x42\x8b\x5f\x55\x65\x4f\xc2\x77\x84\x5c\x69\xa9\xf1\x5b\xd4\x0a\x75\x1f\x57\x4d\x83\xaa\x55\xeb\x35\xad\x3c\xfb\x05\x3a\xb9\x92\x1c\xde\x75\xe4\x68\xc4\x7a\x3a\xe2\xe4\xc7\x2e\xc7\xdf\x80\x2f\x0e\x48\xa9\x2c\x56\x91\xb9\x01\x20\x6d\x79\x5a\xa3\xa6\x15\xbf\x36\xa0\xda\x68\x8b\xda\xa0\x86\x50\xe2\x58\x86\xaa\x68\xd7\xd4\x64\x15\x10\x4e\xfd\xf4\x6e\x2c\x49\xd0\x67\xe3\x66\x3a\x18\x16\xd1\x68\xf4\xbc\xe2\x2b\x0b\xe9\x13\xf6\x5d\x5c\xba\x8b\x43\x5b\x98\x5e\xc0\x25\xa4\xa2\xac\x45\xed\x50\x3b\x9a\x80\x2c\xd7\x6a\x49\xa7\x25\x49\x3b\x0a\xb4\x85\x45\xa5\xf3\x3f\xdf\x01\xb0\xa0\x59\xc4\x98\x18\xac\xc8\xa1\xec\x42\x6a\x83\x1e\x8d\x27\xb9\x10\x41\xd7\xa3\xb6\x0c\x03\x6c\x5c\x62\xa1\xa2\x54\xce\xea\x8a\xda\xad\x85\x76\xba\x86\x83\x07\x55\xd6\x4c\xcd\x68\x1e\xa5\xf2\x05\x85\x28\x35\x03\x3c\x53\x68\xb0\x44\xe5\x51\xf4\x86\x4b\x0a\x99\x1c\xb0\x98\x45\x52\xcd\x18\xa9\x46\xa1\xb0\x7f\x34\x30\xc6\x78\x96\x0b\x8c\x54\xbe\xed\x84\xaf\x34\x62\xf6\xab\xab\x43\x18\xef\x95\x1d\xfb\x6e\x4c\x98\x81\xfa\x33\x86\x89\x85\x15\x99\x1b\x78\xc2\x0c\x81\x80\x63\x51\xe7\x46\xde\x80\x04\x54\x47\x7b\x90\x70\x63\x1c\xb9\xda\xb0\x02\x93\xac\x34\xf9\xa4\x2b\x0b\xd9\x9e\x89\x95\xb8\x66\x4d\x51\x28\xd7\xac\xfb\xa5\x4a\xce\x8f\x46\x55\xc5\x6c\x50\xa1\x5a\x61\x67\x1f\x85\x14\x2f\x51\x41\xa4\x6b\xa0\x3a\xd6\x83\x48\x8c\x39\x2b\x6a\xcf\x4a\x2e\xa0\x6c\xa8\xf4\xc4\xcb\x53\x4e\x92\xba\x35\x5e\x46\xc5\x9d\x77\x59\xd4\x07\x02\x1e\xed\xb6\x4f\xdc\xb6\x09\x4d\xf5\xcc\x50\x59\xac\x22\x73\x83\x80\x3a\x47\xea\x55\xfa\xaf\xb3\xa5\x07\x4b\x70\xe0\x91\x2d\x16\xa9\x23\xea\x40\x13\xb6\x16\xca\xa4\x96\x3a\x7c\x27\x40\x5d\x5c\x6b\x24\x58\x7d\x49\x22\xa9\xc4\xd5\xaf\x0e\xf5\xca\x4f\x05\x49\xf6\xa3\x67\xc0\x20\xf5\x53\xb1\x73\xc7\x70\x10\x75\x63\xf5\x8e\xae\xf7\x3c\x3f\x53\x80\x6f\xb1\x6a\x9c\xd0\x8c\x68\xf8\xf4\x60\x00\x0d\x68\x72\x91\x85\x11\x49\xbe\xd3\x84\x06\x0a\x39\xcd\x22\x8b\xb4\x0d\xc6\x8e\x14\xb7\x59\xc9\x66\x92\x4c\xa7\xd9\x15\x34\xd3\xca\xd7\x91\xc6\xa2\xb1\xc3\x8c\xb4\x5a\x18\xcb\xcb\x67\x41\x63\xd9\x69\x95\x0d\x61\x62\x31\xd0\x73\xc5\x44\xc0\x89\x54\x0d\xae\x84\xd5\x06\x5d\xd1\x44\x34\x11\xc8\x19\x16\x56\x24\x05\x54\x1e\xcd\x86\xc3\x5b\x34\x6d\x89\x37\x59\xed\x64\xf1\xa1\xc9\x31\xa1\x29\x68\xca\x20\x5d\x5c\xaa\xa1\x8d\xc5\xac\xc9\x59\xad\xc8\x5c\x36\x2b\x9d\xaa\x14\x9a\x9d\x17\x56\x73\x35\x17\x04\x04\x83\x54\x12\x97\x03\x33\x04\x04\xbb\xd1\x73\x0a\x9e\xf6\x7f\xda\xe3\xc9\x2f\x68\x72\x91\x85\x11\x09\x08\x4f\x08\x99\xe6\x1e\x70\x02\x7a\xce\xdd\x24\x98\x04\xca\xce\xb8\x40\xed\x38\xcc\x2d\x4a\xe3\x43\x59\x6e\x6a\x3a\xa8\xbd\x8b\x65\x9f\xc7\xb2\x1c\x8b\x33\xac\xab\xc8\xdc\x20\x20\x64\xe2\x39\xa2\x5c\xec\xd1\xce\x0b\xa5\x0e\x7a\xe2\x0b\xc0\xc6\xd9\x60\x65\xea\xac\x3e\xf3\x36\x40\x1a\x5c\x92\xa2\xe6\x96\x3a\x2c\xd1\x09\xa9\x47\xe8\x1a\x0e\x4f\xa1\xf1\x8c\xb2\x43\xb1\x1c\x0c\x4c\x6a\x75\x5d\x2b\xab\xf7\x8d\x6e\x1a\x86\x18\xdc\x15\x79\xff\x6f\xdb\x08\x14\x84\x1a\x4d\xdc\x91\x67\x2e\xd4\xe8\xcd\x15\xe1\x82\x70\xb1\xe4\xf8\xae\x93\x6b\xc3\xa0\x1d\x4e\x4a\x93\xab\x2c\xa2\xc8\xdc\xa0\x6d\x95\x4d\x49\x07\xd1\x6a\xc8\x91\x2c\x58\xd3\xbd\x44\x6d\x1a\x2d\xde\x93\x56\xa5\xc9\x81\x56\xd7\x95\x42\x59\x9b\xb3\x4a\x0b\x4e\x46\xd1\xf3\x22\xa0\x3b\xe6\x83\xd8\x1b\x1b\xef\x28\x10\x2f\x6a\x6b\xc0\xea\x5a\x00\xa7\x85\x96\x8b\x48\x16\x24\xdf\xc3\x6a\x17\xc9\x97\x76\x60\x12\x93\x75\xb4\x2d\x4d\xd6\x39\x32\xa7\x6d\x30\xc3\xe2\xd2\xd0\xc2\x83\x39\x88\xad\x0d\x86\xb7\x38\x91\xe2\x70\x72\x96\x5c\x61\x51\xc9\xb8\xfe\x6e\x78\x83\x7c\xd0\x26\xa1\x44\x56\x9c\x52\x06\x63\xa9\x23\xb3\xd2\xc3\xc3\x77\xdf\x0a\x51\xe6\x37\x21\x7a\x39\x37\x12\x2f\x42\x8c\x49\x8d\x50\xee\x4c\x36\x41\xaa\x24\xa1\x5f\x1b\x49\x2d\x66\x7a\x6a\xd8\x22\xee\x73\x2b\xef\x12\x19\xe9\x41\x23\xe4\xc7\xba\x13\x6a\x0b\xd1\xe8\xae\x42\x32\x0d\x5c\x26\x53\xe8\x22\xb8\x04\xc1\x24\x50\x43\xc7\x47\x26\x95\xcc\xbc\xa9\x46\x36\xfd\xa7\x1a\x59\xd0\xc4\x9a\x6a\xdc\xd9\x73\xc6\x59\xf9\xfe\x18\x76\x9a\x3a\xb3\x37\x4f\xdb\x2e\xb8\x45\x0e\xe6\xb1\x91\xe6\x4d\x4f\x36\x13\x7a\xb4\x67\x63\x87\x05\x2e\x6a\x8e\x81\x79\x49\xf1\x0c\x05\x67\x40\x6a\xe6\x0c\x81\x09\x64\x91\xaa\x41\xed\xc8\xa1\x59\x85\x33\x61\xa9\x86\x60\xa3\x13\x0b\xce\x50\x6b\x3c\x53\x1e\x0e\x67\xa7\x0c\x1d\x45\x1a\x0e\x6f\x71\x76\xd6\x0f\xee\xcd\x43\x27\x8f\x9d\x7c\xd3\xc9\xb7\x9d\x7c\xd7\xc9\xf7\x9d\x1c\xc9\xdf\x75\xf2\xc7\x46\x1e\xde\x74\xd2\x73\x7e\xe8\x39\x4f\x82\x7e\x15\x0c\xfb\x43\x27\x8f\x9d\xb4\xb2\x93\xc0\xd6\x22\x6c\x2d\x7c\x6b\xc1\x5b\xab\xd9\xd6\x2a\xb6\xb5\x7a\x6d\x54\x2d\x4f\x6e\xf8\x9e\x65\x62\x49\x9d\xed\x3c\x4f\x87\xd9\x45\x72\x23\x0b\x25\x92\x3a\x87\x0d\x43\x81\xe1\x5d\x27\x09\x67\x39\xf9\xcd\x61\xcc\xc0\xf5\x27\x32\x37\x18\xbe\xeb\x24\xe1\x1c\x3d\x1f\x63\x08\x81\x0b\x24\x92\x5b\x08\xe4\xfa\xe1\x20\x3c\xe4\xd1\xa7\x63\x1a\xdd\x38\xad\xd3\x87\x9a\x0e\x6a\xef\x62\xd9\xe7\xb1\x68\x9e\xa5\xc5\xc4\x4a\x40\xcb\x02\x41\x26\x4b\x6c\x4e\x19\xa6\x42\x10\x47\x4b\xf5\x68\x5b\x5e\x43\x6a\x65\xc6\x39\xbf\xc5\x39\x0f\x6c\xa3\x11\xae\x39\x03\xa5\xcd\x83\x19\x59\xf6\xe5\x88\xb8\xcd\x0c\x59\xed\x1d\x87\x76\x4f\xc8\x6a\x4c\x84\xbc\x11\x36\xdc\x2c\xec\x31\xd5\xc2\xfa\x45\xcc\xfe\x1b\x7d\x14\x9e\xe8\xc8\x3e\xe7\xa1\xd5\x3a\x0f\x4f\x45\x2f\xe0\x39\xe6\xd3\x0a\x99\x73\xe7\xc5\x8e\x91\x37\x1f\x66\xbd\x64\x5e\x1f\x09\xa1\x36\xb8\x65\x20\xfb\xcf\x9c\x87\x35\x98\xc8\x58\x48\xa5\x95\x99\x25\xb5\x1e\x46\x45\x0d\x03\xcb\x4f\x9b\xe0\xf0\xf6\x60\xd4\x4f\x34\x0b\xc6\xeb\x41\x28\xb4\xf0\xaa\x6a\xc3\x14\x3b\xaf\xd7\x04\xc4\x39\xe3\x1e\xc0\x1b\xcb\xcc\xd7\x12\xf3\x1e\xa3\xc1\x05\x17\x65\xac\xdf\x22\x2e\x7c\xac\x5f\xd4\x5a\xbc\x0a\xb8\xa8\x0d\x32\x2e\x80\x74\x10\xa2\xf5\x82\x90\x17\x0c\x21\x81\x91\xe7\x18\x93\xdc\x42\xf8\x9e\x6e\x01\x87\x7c\x6e\x5a\xd8\x94\x58\xa0\xca\x61\x5a\x48\x12\xe4\x78\x95\x4f\xd3\x0b\x5c\xcc\xea\x13\x2e\xd6\xd9\x0a\xb8\xd0\x82\x4f\x62\x78\xcb\x10\xd9\x72\x5e\xe4\xa1\x58\xdc\x8a\x8b\x3c\x06\x4b\xac\x54\x10\x49\x47\x96\xdd\xd2\xa6\xd4\xc2\x85\x16\xe0\xdb\x0c\xab\xcd\x1f\x59\x0c\xd3\xc4\x98\xd0\xda\x82\x56\xf6\x46\xeb\xb9\x02\x36\xb0\xd1\x6d\x83\x76\xab\x21\x9c\xc8\x59\x16\x4e\x24\xfb\xda\x0b\xda\x90\xc8\xad\x2c\x28\x65\x21\xb7\x00\x30\x4f\x2c\x40\xa4\x6e\x40\x21\x15\x66\x96\x81\x64\x16\x85\x1e\xd5\xb7\x9d\x24\x26\xf3\xe3\xc0\x6f\x80\x6a\x9e\xef\xc9\x23\xda\x14\xf9\x20\x61\xf9\xbc\x6e\x33\xda\x3c\x91\x1b\x74\x06\xf6\xcf\x93\x47\x9b\x2d\xda\x32\x94\xed\xda\x80\x6c\x75\x5b\xac\x41\xdb\xec\x47\xbb\x51\x1f\x0d\x0f\x34\x1a\x8d\x1f\xcc\xd6\x83\x50\x6d\xd8\x6c\x64\x39\x4c\x31\xd6\x10\xa9\x94\xad\xde\x52\xd7\x9e\xb8\xb6\xb4\xb5\x25\xfd\x4d\xe9\xf3\x39\xd8\x09\x98\x09\xb9\x87\xe1\xfb\x4e\xde\xe1\x6f\x67\x9e\x92\xbf\x45\x4b\x33\xfa\xac\x9c\xca\x5e\x3d\xe0\x59\x25\x72\xc3\x37\x24\x3d\xd0\x46\x78\x56\x29\x29\x92\xb4\xf9\x9e\x0d\x84\x62\xeb\xf5\x20\xc3\x5b\x3c\x03\x24\x3c\x17\x4f\xce\xe6\x10\x37\x3c\x57\xb5\xe2\x79\x57\x8e\xec\x08\x87\x4e\xa1\x53\x23\x39\x60\xe1\x44\xf2\xf1\xb5\x6d\x47\x0e\x36\x70\xa5\x41\x9c\x98\x64\x35\x03\x3a\x32\x4b\x48\x0c\x09\x9d\x45\x67\x83\x8e\x9e\x00\x48\x9c\x79\x16\x71\x29\x34\x77\x9d\x8b\x87\x71\x7c\xc7\x69\xa1\x3c\xd4\x74\x50\x7b\x17\xcb\x3e\x8f\x65\x25\x16\xdf\x16\x30\x29\x43\xf3\x69\xa5\xb4\x77\x66\x9d\xd1\x5a\xee\xe8\x00\x41\x03\x23\x84\x52\xf2\x25\x32\xa5\x3c\xde\xc7\x31\x1e\xb1\x8f\xba\xde\x29\x5c\x8d\x43\x4f\x37\x6e\xef\x23\xda\x17\x11\xa9\xc2\x41\x2e\xda\x5c\x54\xc6\x86\x99\x4d\x22\x17\x35\x39\xc5\xc2\xf5\xd7\x7e\x56\x5e\xf0\x71\x5d\x5f\xbe\xfe\xa3\xda\xf2\xf3\x2e\x5b\x9f\x58\xc4\x7d\x1b\x94\xcb\x90\x42\xc8\x86\x86\x8b\x01\x76\x75\x45\x17\xe3\x79\x8a\x99\x71\xa5\x68\x3b\x94\xd2\x60\x78\x8b\xae\x9b\x8a\x2e\x03\x19\xc7\xe8\x32\xd5\x2b\x47\x4d\x81\x59\xc6\xb0\xa0\x2b\x10\x9a\x24\x7f\xc6\x0b\x3a\xa9\x81\xac\xe0\x02\x14\x5a\xb3\x55\x61\x46\xb7\xa1\xdb\xf2\xa3\x34\xb6\x91\xe1\x2d\x7a\xf4\x0a\xbd\xd2\xe4\x32\x8b\x88\x5e\x9d\x41\x87\x82\xb4\x86\x7a\xb9\xb7\xf5\xf7\x17\xb7\x4d\x49\x8d\x70\xad\xbc\x0a\xb4\xd4\x79\x95\xcf\x2c\x6c\x60\x88\x6b\x65\x6c\x57\x58\x9e\x53\xd7\x41\xab\x94\x98\xc8\x6d\x2f\xb1\xb4\xd6\x21\x0b\xcd\x2d\x54\xb1\x18\xe4\x02\x8b\xe9\xb1\xbb\x8a\x46\x3b\x28\x33\xaf\xea\xf3\x20\xaf\x2a\xef\x72\x5d\xa1\x5d\x4c\x38\xf8\x98\xaf\x8d\x3b\x3b\x36\x16\x6f\xb1\xdb\x8e\xc9\x7c\x5f\xac\x5e\x98\xca\xd3\xe8\x55\xd5\x89\x86\xc4\xab\xca\xcf\x91\x57\xb5\xc7\xce\xf2\xba\xf7\xee\xa5\x6f\xb6\x97\x81\xd7\x60\xb9\x23\xa6\x3a\xd5\x6c\xcf\xe8\xb5\x26\x67\xd1\x9b\x37\x03\x7a\xf3\xc0\xc2\xc0\xb8\xce\xc4\x1e\x59\x1c\x6a\x21\xd7\x7b\xde\xd0\xe3\xe5\x4d\xe1\xcb\xa7\x99\x58\x7b\x51\x5c\xbc\x04\x97\x05\x92\xca\x06\xbd\xb9\x92\x39\xce\x30\xa1\x87\xc1\x00\xf9\x92\x91\x2b\x5b\x93\x07\x63\x59\x91\xfe\x68\xd7\xc2\x1e\x9e\x92\xca\xd4\x59\x34\x2c\x90\x67\x16\x80\x7e\x4a\xe8\xa7\x0b\x7a\xde\x34\xfd\x12\x0d\xd5\xcb\x86\x91\xdf\x49\x7a\x7b\x01\x43\xbb\x41\x27\x64\x6c\xa8\xec\xd1\x9f\xdb\xed\xb7\x3f\x93\x31\xe4\xcf\x5c\xcb\x73\x49\xbc\x2c\x79\x87\xde\x0d\xdf\x91\x50\xe6\xb7\x42\x38\x2e\xcb\xc2\x44\x0f\x86\x81\x76\x6c\x26\x32\x09\xdc\xa0\x43\x25\xe0\xee\x11\x32\x71\x4c\x78\x23\x72\x18\xa7\xb9\x34\xaa\xaf\x9a\x26\x1d\x73\x43\x2d\x20\x66\x19\x1e\x44\xde\x62\x3f\x70\xd9\x8d\xde\x12\x3e\x1c\x09\x1f\x45\xde\x85\x8d\xd3\xfc\xa6\x91\x7c\x10\xc9\x78\x5c\xde\x3c\x35\xb2\xb4\xa0\xa5\xc7\xc9\xad\x0a\xba\x13\x33\xa5\x37\x8d\xe4\x83\x48\x3e\xe6\x88\x23\xb5\x84\xae\xcf\x9d\xb8\xa9\xc1\xad\x29\xc4\x7b\x5b\xdc\x74\x57\x61\x37\x1d\xad\x71\x53\x4f\x2e\x69\x42\xcf\x2f\xe4\x56\x87\x6c\xd6\x1b\xb9\x65\x2e\x5a\xcf\xfe\xd0\x9e\x6e\xea\xad\x3c\x56\x7b\x89\xac\x84\x7c\x64\x74\x31\x1c\xe9\xd8\xb9\xbd\x1b\x66\x78\x0a\x3c\xc8\x73\x56\xe6\x4d\x23\x89\x4b\x5a\x7a\x91\x8b\x04\xf0\xdd\x88\x77\x83\x0d\xb6\x0a\x6e\x04\xb4\x6e\x7b\x37\xf0\x67\x16\x6e\xf0\x8e\xd7\x9f\x46\x86\x77\x4c\xa3\x01\x9e\x77\x61\xe4\x8c\x62\xe2\x18\x5c\x47\x5e\x1c\xbd\x6b\x56\xb4\x77\x43\x36\x73\xe6\x62\x32\xa4\xc8\x35\x2b\x03\xd7\xb4\xe8\x98\x85\x90\x0d\x47\xa4\x82\x5e\x82\x7d\x5a\xd9\xb7\xdd\xdd\x78\x07\x9b\xa2\xc2\xa6\x01\xbd\xf3\xaa\x8e\x6c\xef\x30\x15\xc2\xd5\xa5\x7d\xc6\xb7\x8f\x47\x64\x03\xb9\xeb\x94\xb6\xa1\x78\xc7\xe7\x02\xef\x24\xdd\x06\x9a\x49\x70\xb4\x82\x50\xd5\xb8\x3e\x71\x23\x07\xd8\x5f\x63\xdd\xbd\xb4\xba\xbd\x9f\xf2\x3c\x12\x0c\xb4\xf2\x6c\xed\xaa\xd2\x6f\xed\x96\xcd\xb3\x5d\xc5\xb2\x2d\x3b\x01\xe5\x14\x27\x67\x37\xfe\xe8\xa3\xdd\xbd\xf5\xd3\x9c\x60\xd9\x31\x40\x61\xe3\x31\x40\xc5\x00\x3b\x5c\x45\x0e\x6f\x1b\x26\xc2\x82\xc1\x61\x70\xe4\xe9\x86\x3f\xb2\xa0\x00\xd7\x04\xfb\x93\xf1\xc2\x92\x3d\xe1\x92\x1e\x1b\x70\x28\x11\xd5\xb1\xfb\x7c\xd3\x80\xf5\x39\xfa\x6f\x1a\x74\xfd\xdb\x06\xac\xf3\xc4\x09\x64\x97\x7c\xd3\x80\xbd\x5d\x9c\xbf\x6d\xc0\x7a\x9c\x87\x6c\x18\x39\x7a\x1b\x0d\x21\x74\xfc\x11\xc6\x2f\x2c\x02\xef\xde\x18\x22\x86\x28\xaf\xc1\x42\xb4\xe4\x0a\x0b\xa1\xd6\x35\xb8\x22\x0f\x30\x89\x22\x92\x37\x89\x90\x6a\x86\x60\x30\xac\x5e\xb6\x1c\x22\xb4\xd3\x44\x33\x6a\x8c\xce\x0c\x74\xea\x89\x2e\x92\x9b\x59\x58\x91\xd4\xfb\x51\xea\x19\x7b\x3d\x63\x7b\x4b\x13\x03\xc6\x00\xe4\x76\x16\x0a\x9b\x3d\x12\xd3\xa0\xa3\x0b\x5e\x88\x4f\x84\xc6\x4e\x13\x21\x3d\x52\x31\x0d\xa5\x66\x8c\x89\x5d\x64\x31\x8a\xe4\xf2\x78\x52\x35\xa0\xf2\xda\xbc\x6b\x48\x1e\xb5\x0c\x70\xd1\x6e\x2d\x76\x03\x94\xed\x3e\xe6\xba\x50\xdd\x73\x5d\xf8\xea\x29\xae\x48\xcf\x69\x5c\xeb\xc4\xc2\x8a\x74\x0d\x80\xb0\xb0\x58\x44\x42\x83\x03\x2b\xc6\x8d\xcd\x90\xa4\x34\xb9\xe1\x2d\x26\xc5\x1f\x57\xa0\x6c\x67\x2c\x07\x63\x4b\xb1\x1e\x13\xdf\x0c\x26\xad\xc8\x0d\xef\x58\xf6\xbb\xf1\x74\xbc\x3f\x4c\xfc\x02\xf1\x76\xa5\x49\x94\x3f\x36\x92\xb7\x7c\xa9\xbf\xe5\x4b\x7a\xb1\x2c\x98\xc7\x9c\x31\x69\x7e\xc3\x97\x20\x54\xbb\x7a\x4c\x20\x2f\x56\x1a\x52\x34\xc8\x9e\xce\x76\x0d\xa9\x0a\x90\x4b\x0c\xca\x61\x82\x1a\x07\x6a\xc8\xf9\x78\x4b\x95\xce\xf2\xb2\x24\x9d\xe1\x69\xb5\x1b\xe1\x45\x79\xda\x40\x0f\x46\x79\x9e\xcb\xa2\x12\xf9\xf1\x55\xb0\x00\xf9\x3b\x4c\x2e\x22\x2f\x6d\xc9\xad\xb3\x0d\x98\xf8\x02\x9f\x25\x45\x88\xb6\xcc\x71\x92\x8f\xa5\xe8\x99\x16\x52\xf6\xf6\xf9\xd4\x90\x5e\x7e\x58\xd5\x3b\x28\x16\x11\x72\xa7\x4a\x8c\x47\x8b\x08\xbf\x12\x48\x09\x72\xa6\x64\x19\x53\x56\xb6\x88\x1c\xa0\xe3\x63\x23\x09\xbb\xd9\xdb\x30\x38\x62\x05\xf2\x46\x71\x6d\xa0\x80\x88\x3c\xf5\x64\xc2\xb5\x69\xf6\xec\x15\xfd\xb1\xbe\x91\x81\x36\x54\xeb\x81\x59\xdc\x20\xf3\xc0\xe6\xa8\xf3\x5a\xe8\x69\xbb\xd1\x5b\xd2\xee\xc1\xc9\xf9\x63\x5d\x22\x33\x0b\xa1\x59\x35\xf0\xc8\x1f\xd7\x92\x88\x99\xdf\x0c\x27\xb1\xcc\x05\x2c\xa6\x5d\xa6\xc1\x6e\xf0\x09\x0b\x3e\x8d\x57\x72\x05\x9f\x68\xa6\x3c\xc9\x4c\x79\x6a\xc7\xb9\xa7\xe3\x76\xf1\x89\x47\xe5\xa9\x8d\xca\xd3\x13\x8f\x98\x00\xe9\xb4\xa8\x92\x18\xb4\x40\x12\x28\x3b\x3e\xad\xf8\xb4\x2a\xa3\x97\x33\xa1\xbc\x5d\xee\x84\x52\xae\xa4\xf2\x47\x6f\xb4\xab\xc9\x57\xb9\x74\x28\xa1\x0d\x24\xab\x6a\x23\x66\x99\xd2\xb9\x4f\xe9\xac\xe3\x84\x19\xf8\xa6\x3e\x83\xa6\xe3\xe3\xdd\x37\x70\xe4\xbe\x61\x31\x24\x02\xb3\x93\xe4\x0f\xe2\x32\x88\x1c\xd2\xa3\x90\xd2\x40\x62\xf2\x9b\xd4\x86\xad\xeb\x49\xb3\x1b\x07\x7b\x45\x32\x90\x53\x2c\x3c\x36\x5b\x3c\x43\x48\x93\xbd\x60\x86\x04\x9c\xa6\x7d\x2d\x07\x7c\x15\x96\x41\x66\x7e\x86\x52\x23\xd7\xa0\xf2\x77\x78\xf2\x31\xde\xf1\x49\x9e\xc7\xec\xc9\x08\xcd\x71\xdc\x14\x81\xe6\x05\xaf\x21\xb5\xba\xb1\x77\xc4\x26\x7a\x12\x08\x6d\x6d\x20\xfe\x33\xed\xeb\x39\xca\x3d\x7a\x43\x49\x5b\xd5\xd8\x80\x75\xb9\xf0\xc9\x6d\x45\xce\xc7\x92\x9c\x39\x5d\x55\x2c\x84\x56\x68\x40\xcb\x4b\xe6\x1e\x96\x11\xce\x2b\xe6\x35\x90\xe3\xf9\x95\xb7\x49\x8a\x15\xa4\x62\xb6\xd4\x7c\x52\xf3\x29\x0a\x8b\x9a\x80\xbf\x6d\x93\x33\x17\x41\xb1\x58\xd4\x86\x7c\xc8\x21\x61\x32\x94\xd5\xd5\xc2\x0a\xb5\xa8\x68\x2c\x5a\xf1\xe7\x7f\xf2\x0d\xe0\xf1\x25\xa0\x56\xfc\x89\x5a\xd1\x7e\xe0\x35\xa7\xe8\x48\x8e\x2f\x56\x18\x13\x03\x6f\x3f\x4c\x2a\x41\x46\xb1\x90\x58\x72\x15\x0f\x36\xf0\x11\xa2\x68\xda\x32\x59\xb6\xe0\xc6\x5a\xb0\xe1\x16\x0b\x58\x2c\x80\xed\xb2\xac\xd0\xc1\x82\x7a\xac\x40\x82\x46\x72\x1e\xf9\x9b\x45\x46\xea\x03\xc8\x05\x2a\x36\xd7\x5f\x94\x15\x2c\x53\x56\x41\x5b\x85\x65\x41\xda\x44\xca\x02\x8e\x05\xcb\x9d\x9f\x81\x4e\x28\x1b\x3b\x87\x8f\x3e\xc2\x20\x4f\x3e\xd1\x13\x91\x3a\x5a\xbf\x3a\x91\x9c\xc8\xaf\x7c\x0d\xd6\xc9\xf0\x0e\x8b\x5c\xbe\x14\x07\x90\xb0\xc8\x84\x10\x18\xcc\x63\x67\x09\x8b\x8f\xb1\x2e\x58\x82\x4a\x25\xa9\x80\x25\x62\xa1\x8e\xa4\x39\x5e\x12\xa8\x4c\xe7\xf1\x92\xec\xb9\xf5\x58\x67\x54\xaa\x70\xf2\xa4\x93\xd5\x70\x61\x52\x51\xbe\x9d\x29\x6d\xc1\x28\xf4\x64\x14\x7e\x34\x8a\x3c\x1b\xa5\x3d\x1c\x85\xc6\xbf\x62\xa9\x83\x66\xb9\x68\x91\xa6\xc1\x40\x3d\xc6\x6f\xe3\x59\x96\x2b\x13\x36\x60\x4a\x1d\x52\x8e\x3e\x12\xe1\x1e\xaf\x43\x59\xe2\xce\xe8\x93\x63\x5c\x47\x4b\x39\x29\x7d\x46\x7e\x6f\x3d\x5e\x3b\x52\xef\x54\xbe\xd9\x2c\x55\x5b\x16\xd4\x9c\xaa\xe3\x45\x64\x5b\x26\x84\x4f\xf9\x20\x74\xda\x14\x9e\x1a\xd2\xfc\x23\x72\xf6\x1d\x25\xa7\x9e\x7e\xcd\x5b\x03\xe8\xc8\x11\x0c\x50\x63\x80\x52\x41\xda\x2d\x57\x85\x2f\x85\x79\x3b\xa3\x52\x66\xfe\x1e\xd5\x52\xe1\xbf\x45\x4b\xdc\x53\xff\x78\xea\x93\xb4\xc8\x60\x34\xc2\x39\xa6\x45\xc6\xbb\x11\xf1\xe3\x0d\xa9\x54\x99\xb2\x0c\xec\x2f\x05\xb5\x95\x9c\x88\xf4\x21\x55\xa9\x70\x84\xa6\xcb\x70\xf2\xa9\xa1\xd4\x1a\xb5\x16\x20\xbf\x4d\x65\xea\xcf\x1d\xec\x88\x65\xc5\xb2\x72\xe1\x24\xa9\x77\x29\x01\x19\x04\x24\x94\xc8\xdc\xc0\x76\xfc\x70\x10\xc0\xb2\x86\xa9\x7d\x70\xbb\x72\xe5\xd6\xbc\x49\xdf\xad\x79\xe3\xdc\x68\xf5\x24\x41\x3d\xbf\xd1\x92\x55\xb6\x2b\x39\xb6\xa1\x84\x70\xc2\xed\x3a\x70\x4d\x04\xa9\x31\xc2\x24\xc5\x30\x43\xc3\x7e\x86\x20\x65\x01\x65\x0e\x42\x75\x60\xca\xd7\xf9\x47\x0c\xb9\xc2\x6f\xea\x71\x37\xcd\xca\x76\xe3\x77\xd7\x74\x5d\xad\x8d\xfb\x7b\xe5\xbe\xf4\x78\x1f\x10\x0f\x83\x82\xb4\x6e\xfa\x34\xed\x3e\xa8\x6f\x68\xa2\x95\x75\xec\xd8\x9a\x7c\x11\xd9\x35\x89\xc7\xb3\x8e\x81\x06\x69\xbb\xf2\x1c\xdb\xae\xed\x75\x59\xd9\xae\xfd\x25\x46\xa3\x6c\xfc\x94\xed\xda\xee\xe6\x0f\x26\xb9\xf2\x2d\x3c\x93\xad\x85\x3a\xcd\x32\xb6\xa6\xb5\x45\x67\xbb\xf6\x4b\xb9\x1b\x95\xf2\xf9\x66\x88\x90\x4e\x15\x0d\x25\xc5\x51\xa3\xd8\x82\xe2\x11\x14\x7b\xad\xba\xdd\xcf\xb4\x72\xcb\xa8\xc3\x3a\x4a\x25\xbb\x15\x49\xf4\x88\x4e\xac\x93\xd4\x51\xe2\x8b\x6d\x42\x44\xca\x3f\xc6\xa9\x5b\x12\x65\xbb\x16\x99\x44\xb4\xcc\xbf\xed\x84\xdb\x43\xbb\xb1\x80\x04\xd4\x36\x15\x6b\xac\xb4\xc5\xed\x58\x76\x8a\xb8\xcb\xb7\x63\x65\xe7\x05\x67\x97\xe7\x7e\xb7\xee\x8c\x65\xe7\x19\xd4\xb0\x62\xd9\xe3\x41\x52\xa6\x3a\xef\xd2\xc4\xbd\x37\x66\x97\xc5\x76\xaf\x4d\x95\x07\x52\x7e\xf3\x72\x65\x62\x49\xca\x7a\x21\x48\x75\xbb\x86\xaa\x2e\x58\xae\xe5\xb8\xc1\x24\x4e\xab\xcd\xb5\xd0\x39\xa5\x7c\xc8\x11\x68\x0b\xae\x0a\xa9\x55\x55\x8d\x0f\x24\x1e\x49\x0c\x91\xfc\x47\xc3\xc2\x8a\x2c\x0d\x12\x21\xfb\x39\x20\xc9\x77\x76\x0d\x87\xb7\xc4\xf8\x59\xac\x6a\x5c\x59\x38\x91\xaa\x41\xed\x08\xc8\xff\x3d\x7f\x78\xc8\x84\x8d\x32\x22\xb4\x14\xf0\x87\xf1\xd4\xbb\x24\x82\x63\xe0\xcb\x3f\x22\xa5\x1a\xac\x50\xb3\xd2\x4b\xcc\x56\x23\xad\x82\x83\xad\x8c\x19\x2b\xd5\x35\x8e\xe4\x2c\x4a\xb7\xf5\x37\x34\x82\x65\x47\x79\x1f\xcf\xd2\x36\xf8\xd0\x11\xb0\xc6\xf6\xcd\x94\x8c\x6b\xcd\x2a\x14\xa9\x72\x63\xd4\x3f\x44\xc9\xb8\xac\x19\x54\xa5\x8d\x83\x09\xad\x5f\x42\x60\x46\xfe\x9a\xbd\xe6\x30\x0e\xfc\x1d\x1f\x33\x7e\x24\xaa\xfc\x90\x82\x36\xea\x9a\xd7\xa0\x25\xf9\x1a\xb4\x24\x27\x42\xc9\x4b\xfb\x3c\x99\x97\xeb\x5a\x78\xe3\xa8\x85\x6f\x39\x05\x06\xb8\x60\x2d\xcd\x62\x25\xc2\x5d\x57\x72\x8b\x22\xc9\x9a\x05\x50\xcb\x1a\x68\xa0\xa5\x57\xc5\x02\xaa\x6b\xe5\x0f\x45\x08\x77\x45\x1d\xb5\xb6\xdf\x43\xf1\x4f\x0e\x54\x06\x3a\x35\xd6\x3d\x92\xa3\x93\xbd\xc0\x30\x4c\x89\x6c\xd7\x66\x12\x1d\x9e\xed\xc7\xb0\x03\x2d\x3b\xdd\xf3\x78\x91\xf9\xcc\xd7\xa6\x68\xc3\x47\x19\x88\x6f\x79\xe9\x7d\xbc\xeb\xba\xcf\xc1\x7d\xa2\x02\x74\xca\x99\xe1\x79\xf9\x49\xdb\x97\xd1\x9e\x3e\x91\xb4\x59\xa4\x1f\xc5\x3d\x36\xae\xfb\x4c\xcf\xc5\x1f\xf1\xae\x58\xaf\x09\xf9\xa5\x33\x89\x38\xe1\x8a\xdc\xd1\x24\xf8\xb7\xbe\x44\xb4\x37\xd8\xbe\x65\x5f\x0b\xae\xfc\x5b\x04\x90\xab\x18\x1a\x32\xda\xf7\xfc\x99\x3f\x0f\x0d\x74\xf4\x93\x7d\x70\x53\x79\x54\xc5\x6a\x22\xf2\x81\xd3\xa6\xe8\xb0\x1f\x66\xe0\x24\x36\x4f\x0d\x06\x65\x4c\xa7\x5a\x6e\x37\xbb\x26\xaf\x49\xbb\x26\x8f\x6d\xd3\x8e\xa5\xa1\xeb\x36\x1f\x94\xd6\xcd\xc6\xe5\xe3\xb8\xa6\x3c\xcb\x3c\x3e\xd3\xda\xb1\xaa\x69\xd4\x39\x8d\x1e\x85\xf2\x95\x13\xa1\x97\x36\xf3\xd9\x74\x53\xb9\x44\x6e\x63\x39\x22\x0a\x1b\xf6\x7b\xfe\x48\xca\x4e\xe1\x1a\xfa\xcf\x30\x86\x09\x36\xc3\xc4\x9f\xd3\x62\x99\x25\x91\x94\x18\xf4\x7d\x17\x80\x96\x72\x05\x25\x5c\x6a\x20\x28\x3e\x6c\x86\x6f\xa0\x7b\x65\x20\xdb\x40\xb5\x86\x5c\x58\x58\x91\x11\xfb\x2f\x96\x37\x0b\x3b\x8b\xf6\x39\xed\x66\x27\xdc\x76\x57\x70\xef\x1f\x74\xee\x30\x1e\x5d\xbd\xc3\x58\xe4\x67\x23\x23\xcd\x02\x5a\xcd\xf9\xb5\x32\x91\xc7\x4e\xee\xf0\x0d\x93\xfe\xa2\xf2\x8e\x93\xf1\x7c\xa7\xaa\x67\xca\xb3\xc0\x74\x50\x7b\x97\x85\x7d\x9e\x85\xbd\xcf\xc2\xbe\xc8\xc2\x4a\x16\x2b\xad\x9c\xf2\x83\x95\x21\xbd\xfc\xc5\xcb\xa0\x0f\x56\x3a\x5b\xa0\xe2\xbe\xe0\xce\x87\xaf\x7d\xb1\x28\x6f\xbe\xf6\xc5\x3a\x16\x80\xbb\x75\x9a\x96\x18\xc2\x78\x89\x01\x77\xcb\xce\xb0\x88\x22\x77\x02\xb8\x80\xc6\x9d\x0f\x47\x63\xc7\xe1\x6d\x63\x4f\x78\x91\xcb\x86\x4b\xbf\x6c\xb8\xf0\x65\x09\x4b\xd2\x2c\x5e\xec\xf0\x3d\x5e\xbc\xa3\x13\xab\x00\x10\xd2\x20\x5c\x52\x24\x59\x16\x72\x4c\xc0\x89\x74\x78\xa9\x83\xb5\x85\xa0\x32\x28\x32\x11\x09\x62\x30\x78\xa9\xa3\x0d\xac\xf3\x57\xef\x02\xcf\xd8\xf0\xee\x8e\x9b\xc7\x3b\x25\xa9\x23\x21\x5f\x07\x83\xa8\xa1\x0a\x72\xed\x2b\x7f\x87\x7d\xe1\xc3\xc4\xa5\xf2\xa7\x71\x1c\x7a\x7c\x24\x77\xa9\x33\x80\xc8\x01\xf8\x42\xa5\x71\xde\x83\x85\x7b\x75\x06\x4b\x8b\x8c\xa8\xa9\x63\x8f\xee\x8a\x48\x0e\x59\xd4\x5a\x1a\x90\x99\x78\xa9\x8b\x94\xb8\x54\x75\x75\x91\xf2\xa0\x51\xbb\x54\xdb\x6a\xd2\x0c\xc7\x4e\xb8\xb9\x8d\x72\x6b\x0f\x43\xfa\x52\xed\x96\x86\x87\x86\x1c\xb4\x49\x4a\xde\xab\x04\x68\x3b\xbb\x54\x31\x88\x1a\x72\x8e\xc7\xa9\xb6\xd3\x49\xda\xd1\x0c\x6b\x75\xa7\xb4\x7e\xe4\x57\x86\x1d\x8f\xee\x10\x8d\xc2\xc3\x38\x4c\x20\xe8\x26\x46\xa9\x4c\xb3\xdb\x55\x8b\x44\x4a\x86\x56\x5a\xd2\x34\x4b\x18\x44\x8f\x3c\x23\xba\x01\x7a\x30\xa9\xe8\x61\xda\xab\x23\x32\xa9\xb7\xdc\x32\x57\xb0\x99\x79\x9d\x70\x73\x1b\x95\x6c\x84\xb7\x66\xa5\x22\xd5\x4e\x45\xaa\x9d\x0a\xad\xba\x07\xe1\xd4\x99\xf7\x8e\x4b\xcd\x9a\x45\xe3\xcb\x42\xd0\x0b\x97\xc6\x52\xeb\x46\x68\x64\xea\xc4\xbb\x46\x5a\xcd\xa5\x0f\x84\xf0\x2c\xca\xd0\x6a\x43\x4b\xfc\xa5\x96\x69\xe0\xe7\x84\xb1\x5a\x62\xab\xc7\x4b\x25\xab\xf2\xc2\x76\xc6\x1b\xc2\xd6\xcc\x7a\xb4\xb2\xdb\x64\x97\xca\xa6\x14\x5e\x2f\x78\xbd\xd0\x3a\x3a\x0c\x23\x6d\x15\x67\x90\x6f\xdc\x9a\xa7\xca\xa0\x9e\x79\x8c\x2a\x3f\xd3\x4d\xac\xcf\xf5\x1c\xe5\xda\xe2\xde\xf3\x30\x51\xee\x3d\xad\xca\x39\xee\xcf\xbd\x78\x6f\x2e\xcf\xfc\xe4\xe3\x91\x67\x5e\x49\x7f\x9c\x34\xe9\xf1\x53\x9e\x5a\xa5\x72\xf5\x2f\x3c\x9b\xd5\xf1\xd2\x37\xbd\x6c\x7c\xfe\xa8\xf5\xf9\x65\xf3\xc9\xe3\x79\xf6\x59\xab\xf4\x91\xc7\xcb\x3a\x64\x1d\x43\x00\x5d\xc1\x3c\xf7\xfe\xa8\xe7\xf2\xa7\xea\x9a\x3f\xae\xea\x27\x7c\x0e\x13\x8a\x7d\x3f\xa8\x34\x14\xfc\x60\xc3\xc8\x62\x70\x6e\x12\x92\x98\x24\x72\xcd\x33\x0d\xa2\x71\x48\x1d\x74\x1d\xbe\x23\x5c\x74\x47\x23\xc4\x96\x8e\x8d\x94\x25\x36\xe2\x13\x93\x51\x15\x60\xa2\xe3\x85\x91\x8e\xc8\x84\x20\x1f\x90\x7e\xe0\x5b\x19\x26\x64\x40\x12\xda\xcc\xf0\x5b\xb4\xa2\x53\x7d\x69\xbd\x48\xf8\xa1\xb2\x63\x26\xb9\xd0\x01\x91\x31\x39\x2b\x64\xf5\x8c\x35\xb6\x4a\x6f\x2a\x5f\x99\xf0\xbe\xfe\xdd\xed\x47\x9b\x77\x7f\x71\x26\xac\x7e\x04\xf9\x63\x33\xe3\x2f\x7f\xf8\xf2\xd7\x9f\x3e\xff\xe5\xcd\x97\x7f\xfc\xf5\x0f\x9f\x9f\x4e\x5f\x09\xfb\xe2\x27\x3c\x38\xb1\x2f\x3e\xff\x05\xfe\xf9\x57\x8e\xdb\x23\xfc\x62\x7f\xfd\xe9\x2e\xf3\x72\xf5\x63\x74\x5f\x45\xbe\xd6\x8c\x94\xf9\x97\xf8\xe3\x8f\xf8\x8f\x3f\xe2\x3f\xfd\x88\xff\x88\xff\x84\xff\x09\xff\xee\xc7\xff\x75\xe4\xd3\xe9\xf7\x78\x3a\x51\x59\xff\x81\x5f\xe3\xdf\xe1\x5f\xf1\x47\xfc\xeb\xcb\xf8\x63\x56\xfa\x0c\xb5\xfc\xf0\xea\xf5\x2f\xa7\xd3\x9f\x4f\xa7\xbf\x9c\x4e\x9f\x9f\x4e\x5f\x9c\x4e\xbf\x9c\x4e\xbf\xfe\x7a\xfc\x19\xa1\xbb\x3f\x8e\xf3\xea\xf5\xff\xff\xe5\x4f\xa7\x93\xf9\xf3\xc3\x3f\x3c\xfe\x85\xda\xd7\xf9\x17\x3f\xfd\x32\x4f\xf0\xab\xfe\xe9\xf5\x27\x13\x7d\xfe\xf8\x70\xc1\x87\xef\xff\x05\x1f\xbe\xff\x37\x7c\xf7\x2f\xf8\xee\xdf\xbe\xf8\x74\xc4\x2f\x7f\xfa\xbc\xea\xfe\xbb\xeb\x9d\x7f\x6e\xfd\xc4\xbf\xbd\xbe\x62\x9d\xbf\xf8\xea\xcf\x6f\xfe\xe1\x9b\xc7\xbf\x7c\x3a\xe9\x2f\x5f\xfe\xf5\xd7\x56\xb7\x6f\xff\x52\x3e\x51\xfb\x17\x7f\x42\xe8\xcf\x0f\x9f\xce\xeb\xe5\xdf\x35\xfa\xc4\xdf\x33\xfa\xe8\xef\x18\xdd\xfe\x7e\xd1\x31\x39\xfc\xf3\xdf\xed\xf6\x5c\xbe\xfe\xfa\xeb\x9f\x5e\x66\xf4\xbb\xbf\xf1\x37\x97\x6a\x34\x54\xed\xcf\xff\xfb\xbf\xff\x97\x7f\xc7\x3f\xfd\xe9\x4f\xf8\xf3\xbf\xfe\xe9\xbf\xfd\xf3\x17\x3f\xfc\xf4\xfa\x6f\x17\x77\x3a\xfd\xfe\xa3\xbf\xf1\x74\xfa\xfd\xd7\xff\xf7\x4a\xfc\x8f\xd3\xa9\xfc\xfe\x13\xa5\xfe\x1f\x34\xf2\x7f\x06\x00\x00\xff\xff\x59\x2d\x62\xda\x1b\x4c\x00\x00") - -func runtimeSyntaxStataYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxStataYaml, - "runtime/syntax/stata.yaml", - ) -} - -func runtimeSyntaxStataYaml() (*asset, error) { - bytes, err := runtimeSyntaxStataYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/stata.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxSwiftYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x37\x79\x53\x1b\xcb\xf1\xff\xf3\x29\xd6\xf8\xf7\x4b\x00\xc7\xe2\x1d\x29\x57\xb2\x39\x1c\x10\x90\x52\x85\xc3\x65\xc0\x76\x85\xe5\xa9\x46\x33\xbd\x52\xdb\xb3\x33\xe3\x39\x10\x72\x3a\xdf\x3d\xd5\xb3\xbb\x20\x09\x30\xa9\xd4\x53\x95\x76\x76\x7a\xfa\x3e\xa6\x7b\x6b\xd4\x10\x17\x0e\xca\x22\xcc\xb1\x8e\x1b\x1b\x0a\x22\xc8\x58\x6e\x14\x45\x51\xf0\xa1\x11\x0d\x94\xc5\x66\x55\x0d\x32\xc2\xff\x6d\x6e\x6c\xf8\xa4\x21\x94\x1b\x45\xc6\x79\x59\xbc\x13\x31\x82\x37\x21\x6f\x5f\x17\x2d\xb7\x6a\xb2\x35\xde\xae\x26\x19\xd6\xe1\x9d\x39\xf0\x22\x5a\xdf\x23\x86\x45\x33\xb1\x7a\x60\x3b\x70\x59\x6c\x5d\x0d\xca\x3f\xfd\xee\xd5\x0e\xfd\xe5\xc5\xdb\xaa\xfa\xff\x6b\xfa\x33\xfd\x95\x76\xe9\x35\xfd\x66\x7b\x99\xcf\x01\x48\x2d\xbc\x88\x68\x4d\xf1\x0f\x58\xcc\xad\x57\x77\x2c\xa3\x88\xd0\x80\x89\x03\x75\x8f\x94\x95\x11\x21\x58\x89\x22\x82\x62\xfd\x48\x6a\x11\x02\x29\x40\x83\x91\xc0\xa4\x86\xe0\x36\x82\x09\x68\x0d\xb1\xd5\xce\xe3\x8d\x88\x40\x75\x32\x92\xb0\x71\xd6\x47\x62\xdc\xde\xa4\xef\x89\x42\x63\x13\x63\xb3\x53\x84\x26\x0d\x91\xac\x03\x43\xbd\xa1\xd4\x33\x77\xde\x46\x2b\xad\x26\x97\x26\x1a\x25\x31\xcb\xbc\xf8\x24\x23\x85\x34\x09\xd2\xa3\x8b\xc4\x1a\x0b\x8d\x22\xd0\x8d\xf0\x6b\x4e\x3d\xef\xd5\x08\x4f\xfa\x22\x2b\x35\xf1\x20\xbe\x90\x14\x01\x48\x5a\x13\xd1\x24\x20\x05\xb5\x48\x3a\xf2\x0a\x9e\x94\x25\xd0\x01\xa8\x16\x5a\xc7\x99\xb7\x69\x3a\xa3\xda\x7a\x9a\x26\xe1\xd5\x23\x76\xb7\xb6\xd6\xec\x96\x9a\x3c\x38\x10\x91\x3c\xc4\xe4\x0d\x85\x39\x46\x39\xa3\xf9\x0c\x3c\xd0\x7c\x86\x1a\xd6\xb4\xfe\xd2\xaa\x3a\xf0\x10\xc0\xdf\x80\x7a\xe0\xd3\xfe\x60\x25\x76\x78\x83\x71\xc1\xea\xdf\x80\x41\x30\x12\x48\x2d\x8c\x68\x50\x92\x42\x75\x0e\x91\x6a\x64\x87\x4f\x81\xbd\x5f\xe3\x2d\xa1\x51\xe8\x41\x46\xd2\xe2\xdb\x82\x34\xd4\x91\x9a\xc4\x4e\x36\xd3\xc7\x02\xb9\x22\xd4\x58\x03\x64\xac\xe9\x09\xc8\xde\x80\xf7\xa8\x80\x9c\x0d\x91\xb9\x3b\x0f\x12\x54\xd6\xc3\x79\x60\xc8\xbb\x3e\xa0\x1e\xbe\x26\xf4\xf0\x98\xdb\x56\xa5\x78\x9c\xce\x22\x05\x88\x74\xc1\x69\x99\x8c\x9d\x1b\x50\x34\xe7\x60\xcd\x51\xeb\x73\x88\x6b\xae\x3b\xbc\x75\x1e\x02\x27\x6a\x21\x8c\xca\xd5\xf6\xa0\xf2\x44\xa0\x3d\xb3\x20\x29\x38\x0a\x18\x38\x2c\x33\x6f\xe7\x81\x42\x72\xe0\x29\x80\xae\x29\x43\xa8\x83\x47\xbf\x58\x11\xb3\xac\xef\x24\xa1\x8e\x63\xec\xca\x68\x12\x48\xa8\x1b\xc1\x46\x0b\x8d\x53\x63\xeb\x7e\xfd\x20\x74\x02\x12\x66\xf1\x77\x30\x5d\xa2\x8b\x10\xc0\xc7\x6e\x41\x6b\x8e\x04\xea\xe4\x81\x26\x1e\xd5\x14\x8e\xbc\x6d\xce\x26\x9f\x41\x46\xbc\x81\xe1\x63\xae\x5a\x11\xfd\x18\xd1\xa5\x91\xd6\x28\x64\xde\x42\x77\x6c\x2f\xec\xfd\xf9\x23\xa0\x55\x12\xae\x05\x81\x26\x3c\x2b\x5d\xda\x64\x22\xe5\xe7\xa1\x6e\x0b\xae\xdd\x1d\x83\x50\x68\xa6\xff\x04\x6f\xf9\x42\x99\xa4\xe9\x3b\x8f\x26\x2e\xbd\x6a\x43\x0a\x43\xcc\x3e\x53\xde\xba\x23\xf4\x21\xe6\xb7\x63\xc1\x2f\xa9\x71\x04\x46\x5a\x05\xfb\x18\xc3\x5e\xf8\xc8\x45\xfc\xac\x42\x7c\x69\xb1\x9b\x81\xe0\x6b\x12\x9a\x6a\x11\x85\x3e\xf4\xde\x7a\xbe\xc0\x22\xf0\x62\x14\x17\xc3\x7e\xf6\x81\xba\x77\x41\x4e\xb5\x29\xc4\x0f\xe2\x18\x43\xcc\x55\x22\x21\x10\x9a\x2e\x4c\xe7\xd6\x3f\x7a\xd1\xad\xc8\xc7\xd0\xf1\x5d\xf1\xf7\x1d\xf4\x03\xf8\x89\x88\xd8\xac\x9d\x5e\x1a\xfc\x9a\x40\x2f\xde\xf3\x95\xc3\xa5\xa3\x1e\x05\x9e\x5a\x73\x36\xf9\xfc\x7c\x4e\x7c\xb6\x68\x48\xc3\x2d\x4a\x3b\xf5\xc2\xcd\x50\x0a\x3d\xb4\x8d\x13\x1e\xa8\x11\x8e\x1a\x71\xcb\xff\x2e\x62\xd4\xa0\xe1\x7f\xbf\xcd\x1e\x44\x39\xe4\x28\x70\x75\x6b\xe1\x02\x39\xe1\x63\xce\x0e\xae\x73\xbc\x7d\x56\x05\xbe\x05\xfa\x84\xa2\xe5\x4d\x9f\xec\x2e\xa7\x83\xeb\x32\xe1\x6b\x42\xf9\x85\x1d\x4c\x1e\x84\x3a\x46\x03\xe4\x41\x25\xc9\x4b\xad\x41\x3e\xef\x78\x0f\xb9\xb5\x38\x0f\x91\x35\x7f\xe1\xe1\x06\x7c\x00\xf2\x36\x19\x75\xe9\x2e\xec\x1e\xd7\x63\x36\x30\xe0\x37\xb0\x75\xb7\xb4\xf5\x19\x58\x74\x70\x1a\x23\xb7\x1b\x1f\xc3\x47\x8c\x33\x6e\x39\xa8\xe0\x59\xd1\x2d\x1a\x73\xec\x5e\x3a\x9e\x73\xe1\x28\xda\xf3\xe8\xf9\x9e\x8c\x5e\x98\xc0\xd9\x4c\xc9\x28\xf0\x10\x22\x36\x22\xc2\x30\x17\x50\x32\x41\xd4\xb0\xa7\x14\xdf\x61\x67\x75\xb7\xdf\xc7\x6c\xca\xb3\xf2\x5b\xec\x03\x3b\x37\x92\x63\xd6\x6e\x2f\xcd\xdc\x0b\xd7\x6d\xde\xb7\x4e\xa4\x39\xc6\xd9\x21\x77\x74\x05\xea\x18\x6b\x88\xd8\x40\x06\xb6\xd9\xb8\x17\xdf\xe9\x14\xb8\x66\x33\xf0\x32\xd3\xbe\xb3\xd9\xb1\xcf\x6a\xf1\x80\xa2\xcf\xf1\x25\x5e\x27\x29\x8a\x89\xee\x11\x9e\x3c\x08\xbf\x86\xf8\x96\x49\x57\xcc\xdf\xd0\x31\x87\xae\x59\x9c\x40\x14\x0f\xb8\x35\x10\x45\x59\x54\x7f\xe3\xeb\x3c\x45\x2b\xb5\x0d\x9c\xa7\xe2\x46\xa0\x66\xdd\xba\x0e\x9b\x13\x1a\x6e\x79\xf4\x01\x45\xa3\xfd\x3d\x99\x21\xa3\xfd\x03\x08\x38\x35\x19\x73\xb4\x7f\x96\x22\x0f\x38\xa3\xfd\x91\x09\x0e\x64\x36\xae\xed\xbe\x8f\x19\xb2\x24\x3a\xb7\x64\x63\xbb\x89\xc1\x58\x08\x52\xb8\xdc\x71\xed\xe4\xb3\xa4\xd3\xf3\x3d\xe7\x34\xca\x3c\x56\x9d\x08\x34\x74\x7a\x3e\xb4\x6e\xc1\x19\x76\x7a\x7e\x22\x8c\x98\x82\xa2\x8c\xda\x35\xdf\xae\x2d\x3f\x23\xb6\xef\xcc\x14\x21\xb4\xca\xce\x85\x37\xe3\x64\x52\x00\x35\xf6\x10\x78\x20\xba\x1c\xad\x09\x6f\x99\xb6\x4e\x75\x1e\x9c\xb7\x12\x42\xb0\xbe\x93\xd4\x81\xca\xe2\x97\xab\xab\x32\x38\x21\xa1\xbc\xbe\xde\x79\xb9\xbc\xd9\x52\x50\x73\xb1\xe7\x11\x8b\x1f\x58\x13\x18\xc5\xf3\x53\xcd\x0d\x19\x64\xb4\x4b\xb1\xef\x38\x0e\x0e\xb8\x8b\x8c\x14\x47\xa3\x46\xf0\xed\x5c\x3d\x1e\x9e\x1d\x5f\x9e\x9c\x8e\xc7\x34\x1e\x1f\x8d\x8e\x0f\xdb\x97\xcb\xd3\xe1\xc5\xe8\xac\x85\x1e\x8f\x4e\x0f\xc7\xe3\xff\x82\xdd\x77\x14\x96\x56\xa7\xa6\x9d\x86\xf3\x18\x9c\xa3\xaf\xd1\xc0\x52\x7e\x0d\xad\xe1\xc6\x16\x3b\x31\xb2\xdb\x66\x35\xa3\x4f\x79\x98\x0c\x40\x06\xf5\xf6\x1a\xca\xc0\xa4\x66\x02\x79\xe8\xff\xe1\xf5\x1f\xaf\x5f\x6d\xaf\x0e\xb5\xd6\x8b\x29\x14\x17\x6b\xc3\xcd\x20\xb4\x07\x99\xff\xd6\xe5\xf6\xdb\x91\x89\x5b\x7f\xa0\x1f\xdf\xd0\xcf\x3f\xd1\x9b\xdf\x6f\xdf\x1b\xfc\x00\x7b\x64\x38\xac\x26\x52\x77\x4b\xed\x63\xa4\x7d\x6b\x35\x0d\x67\xc2\x0b\xc9\x45\x7a\x60\x13\xe7\xc3\x99\xeb\x66\x83\x23\x6d\x45\xa4\xf7\xc2\x4c\xe1\x3b\x8c\xf7\xcc\xa2\xad\xfe\xb5\x39\x6d\x68\x35\x07\x15\xed\xca\x87\xd1\x40\xde\x83\x5b\x72\xef\xc5\x82\x0e\x30\x83\x84\x5f\x50\x37\xf1\xf5\x5c\xd6\xe7\xbb\x81\xcc\x90\x4c\x3b\x6c\x0d\x60\x0b\x68\x78\x69\xb8\x2a\x41\xb5\xbb\xf3\x19\xdf\xf3\x77\xc0\x6e\xcb\xf6\xdf\xc1\xf2\xe6\xd8\x9a\xe9\x3d\xa8\xdd\xf1\xf3\x21\xbc\x85\x7c\x44\x05\xad\x04\x7e\xfe\xf8\xa6\x5d\x7f\xfe\x89\x86\xad\xb7\x86\xad\x13\x97\x2c\x68\xfd\xbd\x1e\xfd\x90\xa1\xed\x57\x26\xff\x72\x2f\x2a\x8b\x6a\xf3\x0e\x02\x46\xad\xec\xc3\x17\x74\x65\x51\x55\x83\x3b\x48\xff\x19\xba\xf4\x5b\x96\xe0\x40\xa2\xd0\xac\x5e\x59\x6c\x55\xd5\x0f\x54\x55\x55\x45\x55\x15\xa9\xaa\x0c\x55\x95\xa7\xaa\xda\xa4\xaa\xfa\xed\xf6\x53\x2c\xda\x3e\x6b\x75\xff\x69\x57\x55\x5b\x57\x57\x65\x1e\x34\xb8\x42\xaa\x27\x09\x93\x41\x6e\x80\x4c\x92\xaa\x7f\x5d\x5d\x95\xb7\x0a\xa7\x18\xcb\xeb\xeb\x57\xff\xbe\xf3\xcb\x0c\x26\xc2\x4c\x0b\x1e\x01\xee\xbc\xd3\xe4\xeb\x2a\xb4\x47\x65\xf1\xcb\xd6\xcb\x17\xdb\x83\x9d\x9e\xe4\xc0\xca\x62\xd8\xe2\xac\x51\x28\xbe\x7c\xb6\x76\x77\x77\x19\x7b\x29\x09\x99\xf9\x13\x24\x5c\xc9\x65\xb1\xb9\xbb\x3b\xd8\xd9\x5c\x26\xd9\xd7\x56\x7e\x79\x82\x66\xc2\x67\x0f\x82\xb6\xb9\x5b\x55\x3b\x6b\x81\xdb\xac\xaa\x9d\xdd\xcd\xef\x87\x2a\x5a\x65\xcb\x62\x73\xeb\xe2\xec\xe0\x8c\x3e\x7d\xfa\x44\x47\xa3\x4f\x27\x87\xdb\xe5\xdb\x9e\x6e\xc9\xec\xff\x51\xab\x5f\x5d\xb1\x4e\xa5\x0b\xab\xec\xc6\xb3\xc8\xff\x09\x00\x00\xff\xff\x39\x00\x1b\xee\x5c\x11\x00\x00") - -func runtimeSyntaxSwiftYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxSwiftYaml, - "runtime/syntax/swift.yaml", - ) -} - -func runtimeSyntaxSwiftYaml() (*asset, error) { - bytes, err := runtimeSyntaxSwiftYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/swift.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxSyntax_checkerGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x91\x4f\x6b\xdc\x30\x10\xc5\xcf\xd2\xa7\x98\x15\x04\x64\x70\x65\xf6\x1a\xd8\x5e\x92\x96\x9e\x42\x68\xaf\x85\x45\xb5\x35\xf6\x10\xfd\x59\xf4\x07\x9a\x96\xfd\xee\x45\xf2\xd6\x64\xdb\x3d\x14\x0a\xc6\xd8\xe3\x37\xef\xfd\x9e\x75\xd2\xe3\x8b\x9e\x0d\x38\x4d\x9e\x73\x72\xa7\x10\x33\x48\xce\x04\xba\x2c\x38\x13\x14\x06\x0a\x25\x93\xad\x2f\x29\x47\xf2\x73\x12\x9c\x33\x31\x53\x5e\xca\x37\x35\x06\x37\xfc\x78\x35\x13\x4d\xa4\x07\x47\x63\x0c\xc3\xe8\xa6\xcb\xd3\x42\xf3\x62\x69\x5e\xb2\xe0\x1d\xe7\x58\xfc\xd8\x72\x64\x07\x3f\x39\x43\xb2\x26\xf5\x70\x84\xfb\x03\xac\x11\xea\xb3\xd1\xd3\x23\x45\x29\x94\xe8\x38\x67\x8b\x9e\x3e\xc4\x58\xbf\xa3\xb6\xc9\x70\x86\x21\xc2\xb1\x07\xac\xa3\xa8\xfd\x6c\xa0\x99\x54\x37\x46\x08\x17\x3c\xf5\x49\xa7\x2f\x05\x91\xbe\x4b\x54\x4f\xda\x19\xd9\xf5\x20\xd4\xab\x76\x56\xb4\x64\xc6\xc8\x9f\x4a\xfe\x3b\xfb\x23\x59\xb3\xed\x74\x55\x38\x0c\xe8\xb2\x7a\x8e\xe4\xb3\xf5\x52\x3c\x2c\x66\x7c\x21\x3f\xb7\x5c\x78\xf7\x1e\x44\x0f\x57\xfa\x3a\xef\xc1\xac\xd4\x5b\x7d\xf5\xac\x63\x32\xcd\xbd\x25\x37\x29\x61\xd3\xed\x0e\xe0\xc9\xae\x58\xbf\x1b\x1f\x20\xc7\x62\xda\x64\x8b\x47\x29\x1e\x42\xb1\x13\xf8\x90\xe1\x54\xfd\x36\x88\xbb\x74\xff\xd5\xff\x49\xc2\xde\x82\x9b\x18\xd7\xe1\x18\x7c\x26\xbf\x7a\x9f\xeb\xed\xd8\x68\xf7\x37\x70\x1f\x0d\xca\xb5\x8e\x27\xfb\x86\x78\xff\x3f\xc8\xad\xfe\x0a\x5e\x52\xfd\x91\x37\x42\xef\x52\xf7\x0f\x7d\xf6\xb7\x0b\x9d\x79\xbd\x08\x61\x77\x01\xab\x94\x57\x67\xf8\x14\x80\x52\x2a\x26\x01\x86\xe2\xa7\x9d\xe8\xea\xca\x99\xff\x0a\x00\x00\xff\xff\x81\x30\x89\xf2\x0a\x03\x00\x00") - -func runtimeSyntaxSyntax_checkerGoBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxSyntax_checkerGo, - "runtime/syntax/syntax_checker.go", - ) -} - -func runtimeSyntaxSyntax_checkerGo() (*asset, error) { - bytes, err := runtimeSyntaxSyntax_checkerGoBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/syntax_checker.go", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxSyntax_converterGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x58\x5d\x6f\xdb\xb8\x12\x7d\x96\x7e\xc5\x5c\x5e\x14\x90\x6a\x55\x46\x93\xf4\x25\xf7\x1a\xc1\xc5\xc5\x16\xed\x02\xdd\x2d\xe2\xdd\xa7\xc8\x68\x18\x8b\x96\xb9\x95\x28\x81\xa4\xd2\x04\xd9\xfc\xf7\xc5\x0c\x29\xc9\xdf\xb1\xbb\xc5\xbe\xd8\xe6\x90\x33\x3c\x73\x38\x87\x1f\x6e\xf8\xfc\x2b\x2f\x04\x54\x5c\xaa\x30\x94\x55\x53\x6b\x0b\x51\x18\xb0\x45\x65\x59\x18\x30\x59\x8f\x65\xdd\x5a\x59\x62\xa3\x36\xf8\xa9\x45\x21\x1e\x1a\xfc\x65\xac\x96\xaa\x30\x2c\x8c\xc3\xd0\x3e\x36\x02\xa6\x52\x15\xa5\xb8\x6e\x4b\x01\xc6\xea\x76\x6e\xe1\x29\x0c\xe6\x75\x59\x6b\x70\x63\xc3\x80\xbc\xbb\xd6\xb3\xf7\xfb\xd4\x96\x56\x1e\x74\x33\x96\x6b\xdb\xb7\x84\xca\x01\x56\x82\x8c\xc7\xf0\x73\x2d\x15\x45\xb0\xfc\xab\x30\xc0\xc1\x3c\x2a\xcb\x1f\x40\xa3\x2d\xfa\xb6\x94\xf3\x25\xcc\xb9\x82\x3b\x01\x15\xce\xd6\x94\x02\xb4\x28\xda\x92\x6b\x10\x0f\x8d\x16\xc6\xc8\x5a\x99\x18\x63\x71\x95\xc3\x1f\xb5\x54\x06\xa4\x05\xa9\x6c\x0d\xb5\xda\x35\x1a\xee\x1e\xe1\xd7\x6b\xa9\x0a\x10\xf7\x42\x3f\xda\x25\xfe\xb4\x75\x21\xec\x52\xe8\x70\xd1\xaa\x79\x0f\x2b\xd2\x3e\x3b\xa9\x8a\xd8\x7f\x63\x96\xa6\x29\xa5\x85\xcb\x89\x37\x99\x74\x8a\x06\x1a\x9d\xc0\x2d\x03\x76\x1b\x87\x01\x62\x11\xf9\xea\x28\x0c\x1b\x91\x6f\x02\xec\x4f\x16\x23\xaf\xb6\xd5\x0a\xdc\x50\xe4\x84\xa6\x6f\xb8\x36\xe2\xbd\x2c\x45\x64\xc5\x83\x4d\x60\x21\x4b\xa1\x78\x35\x20\x89\xd0\x82\x6b\x90\x78\xc2\x12\x58\x0a\x9e\x8b\x8e\xf9\x84\x08\x34\x70\x33\x93\xca\x0a\xbd\xe0\x73\xf1\xf4\x1c\x23\xf2\x52\x2a\x61\xb6\x91\xbb\x79\x58\xa6\x58\x1c\x86\xc1\x78\x0c\xd7\xb4\xe0\x8b\x5a\x13\x18\x4c\xdb\xaf\x8c\xb1\xdc\x8a\x4a\x28\x6b\xc2\xc0\x99\x3e\x23\x5a\x8d\x31\x5d\x8d\xa5\x9f\x5a\x63\xff\x5f\x57\x0d\x26\x70\xeb\xdd\x58\x94\xbe\xbe\x8a\x59\x66\x46\xf8\x2b\x66\x23\x64\x68\xe7\x3c\x7d\x22\xc3\x3c\xce\x74\x78\x1e\xef\xe6\xa2\xdf\xee\xcf\xc2\x72\x95\x73\x9d\xaf\x16\x9a\x09\x03\xfc\x3a\x1c\xdf\x15\x36\x65\x91\x99\x51\x74\x75\x99\x45\x51\x3a\xba\x8a\xaf\x32\x6c\xc7\x57\xfd\xc4\x07\xd9\x73\xcb\xf2\x4d\xda\x25\x90\x36\x26\x2c\x4d\x53\x06\x42\xe5\xee\x97\x43\x32\xc5\xae\x9f\x54\xfe\xf7\x10\xf9\x09\x08\x57\x66\x46\x34\xc7\xc0\x0e\x82\xc3\x62\xf8\xa5\xad\x12\xfa\x41\xd3\x70\x55\x08\x70\x35\xf2\x14\x06\x54\x2d\x30\xd4\xca\x6f\x5a\x56\xd3\x86\xcf\x45\x84\x1d\x71\x18\x04\x72\xe1\x7c\x27\x13\x60\x8c\x5c\x82\x79\xad\xac\x54\xad\x08\x83\xe0\xd9\x8d\xe8\xdc\x3f\x70\xf3\x59\x8b\x85\x7c\x20\xf7\x04\xd8\xbf\x59\x7c\xb2\x8f\x23\xb2\x73\x74\xad\x4f\xdc\xce\x97\xbe\xac\x57\x4a\x32\x7d\x2f\x55\x3e\x6d\xef\x2a\xec\x8e\x6e\x66\x77\x8f\xd6\x23\x47\xe8\x84\x5d\xa8\x68\x2d\x44\x8c\x99\x9c\xbb\xd8\x41\x27\xb2\x9e\x81\xf5\xb1\x37\x6f\x67\x14\xc7\x83\x80\xc9\xb0\x6d\xec\x1c\x7e\x36\x73\xf3\x3e\x83\x28\x8d\xe8\xe6\xa8\x6c\xfa\x59\x4b\x65\x4b\x15\x75\x32\x4f\x86\x85\x61\xd3\x0d\xd5\x81\x34\xa0\x6a\x0b\xf7\xbc\x94\xf9\x25\xb0\x51\xb7\x12\x6b\x24\x12\x8b\x2f\x31\xe9\x14\xd3\x31\x39\x1e\xc3\x87\x0d\xe5\xa1\xd9\x0d\x5a\x21\x78\x55\x8b\xc7\x11\xbc\x16\x82\x08\x3e\xf3\xc9\x7b\xcd\x6e\x13\xb7\xe6\x82\x3c\x9f\x4e\xdc\x66\x32\x27\x11\x17\x12\x1f\xd3\x41\xb3\x09\xdc\xb5\x16\xcf\x95\x79\xdd\x96\x39\x1e\x47\xfd\x46\x42\xc7\x1d\xd7\xf6\x8d\x50\xb9\x63\x7c\xd8\x4c\x52\x4a\x61\xea\x92\xa2\x09\x7b\xb2\xa7\x3b\x36\x22\xdf\x45\xbe\x60\x97\x4e\x89\x54\xe6\x9e\x63\xd2\xe8\x10\xfd\x30\xfd\xf7\x5c\xc3\xfa\x71\xec\x6c\xb4\x97\x4c\xed\xa6\x79\x51\xf2\xc2\xac\xd8\x3a\x79\xf8\xf8\xb4\x70\x17\x9e\xfc\xf1\x18\x3e\x52\x37\xb2\x7a\x81\x50\x15\xe1\x6d\x71\xbb\x32\x8d\x98\xcb\x85\x14\x39\x98\xba\x12\xc0\xf3\x5c\x5a\x59\x2b\x5e\xfa\x29\x6c\x8d\xe3\x3c\xf3\x08\x6f\x90\x97\x9f\xab\x57\x96\x73\xd8\xee\x3f\xf3\xfd\x72\xe1\x63\xfe\x6b\xd8\x7f\x82\xa0\x4f\x70\x02\x2c\xba\x62\x30\xf2\x83\x46\xc0\x62\x6c\x6d\xc9\xb4\x0b\x7b\xee\x0b\x6d\xbd\xd2\x56\xe3\x1d\xe1\xba\x52\xa9\xbb\x28\x3c\xdf\x45\xe1\x79\x02\xaa\xde\x66\xea\x9b\xd0\x02\x0a\x79\x2f\xd4\x51\x6c\x1d\x83\x73\xe7\x26\xb4\x86\x05\x45\x72\x8e\x55\x4d\xeb\xaa\x05\xda\x38\x34\xba\xbe\x2b\x45\x75\x94\xf4\x3e\x2a\x12\xd9\xa0\xbd\x43\x72\xc3\x4f\x77\x2a\x4e\x80\x37\x8d\x50\x39\x5d\xa3\x4c\xb2\x72\x2d\x7d\xa2\xcc\x93\xbe\x72\x9f\x31\xd0\xc0\xf1\xf6\x91\x79\x58\x77\x4e\xab\x9b\xc2\xdb\xd4\xd8\x46\xc4\xef\xd3\xda\xfa\x05\xd8\xd9\x68\xee\xde\x32\x1e\xc3\xef\x46\x40\x45\xd7\x57\xe3\x17\xfe\xee\x11\x72\xb1\xe0\x6d\x69\xf7\x29\xf1\xdd\xae\xa5\x7b\x37\x88\xb0\xd1\xf5\xbd\xcc\xf7\x69\xf0\xa8\x72\x72\xd8\xb7\xfb\xcf\x7d\x3f\xe6\xb1\xdd\x7b\x31\x8b\x5f\x50\xc0\xfe\x4d\xc4\x41\xcf\x65\x4e\x45\xe8\x53\xf8\xb1\xe0\xcf\x0e\x82\x3f\x9f\x1d\x21\x8e\x0b\x14\xc7\xbb\x7f\x4c\x1c\xe3\xb1\xbb\x35\xde\x50\xca\xb3\x7d\x9b\x1a\x8b\xf0\xd3\xa5\x8d\xb6\xf4\xf5\x15\x59\x30\x51\x1a\xb3\x5f\x68\xfd\x3b\xae\xd3\x19\x45\x49\xd0\xd5\x29\x2d\x24\x28\xee\xad\xd2\x3f\x52\x0a\xa1\x84\xe6\xd6\xbd\x53\xbe\xef\x3d\x32\x3c\xa8\xea\xd6\x36\x2d\xbd\xa8\x18\x0b\xfb\xe6\x68\x02\x48\xe7\xb4\x41\x3e\x17\x11\xeb\x66\xb9\x84\x57\x26\x53\x99\x62\xee\x69\x84\xa6\x78\xaf\x53\x2e\xac\x98\xdb\x4b\xc8\x14\x00\xf4\x4f\xa9\x4b\xc8\xd8\x2b\x93\x31\x0a\xd2\x5d\x91\xae\x45\x53\xe2\xed\x76\xab\xed\x73\x62\x59\xc6\xe8\x93\xbe\xdf\xbc\x8d\xb1\xc1\xbc\x89\x39\x13\xde\xad\xe5\xa2\x4b\x7f\x38\x97\xf6\xa0\x43\x4c\x6e\xec\x49\x88\x9c\xcb\xb1\x88\x68\xf9\x06\x00\x2c\x53\xb4\x1c\x97\x99\x62\xfe\x25\xf0\x25\x01\x3d\x3c\x00\xdc\x62\x3d\x0d\xb7\x99\x04\xea\xaf\xd4\x9d\x46\xc3\xae\x1c\xff\x07\xad\x24\x92\x03\xc9\xbd\x81\x57\x66\x2d\x35\x8c\x97\xf6\x85\x76\x38\x4d\x1a\x4b\xbb\xfe\xd1\xa9\x6e\x9c\x0b\x2b\xc8\xfb\x32\x3f\x01\xf8\x06\xe2\xf8\x05\x1f\xa0\xff\x37\xb8\xb6\x27\x2d\x26\xc5\xf7\x9a\x3b\x36\xcb\x97\x50\x08\x95\x9f\x8e\x41\xa8\xfc\xc7\x21\x70\x25\x06\x37\x33\x52\xea\xd6\x3e\x02\xce\xbd\xdf\x4e\x2a\x2e\x55\x44\xc7\xb4\x3f\x33\x6a\x93\xfe\x4f\x17\x26\x86\xff\xfa\xf7\xc2\xea\xce\xca\xf0\xba\xa4\x0b\x43\x71\xfd\xc6\x44\xc1\x73\x6e\x79\x02\x5f\x70\xc9\xdd\x3f\x60\xe9\xb5\xe0\x39\xed\x51\x3e\xa0\x3b\x22\xfa\x60\xd1\xda\x3e\x36\xfc\xf3\xe2\x8f\x06\x8c\x17\x27\xb0\xe2\x1b\xc7\xe1\x73\xf8\x57\x00\x00\x00\xff\xff\x09\x67\x45\x7d\x81\x13\x00\x00") - -func runtimeSyntaxSyntax_converterGoBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxSyntax_converterGo, - "runtime/syntax/syntax_converter.go", - ) -} - -func runtimeSyntaxSyntax_converterGo() (*asset, error) { - bytes, err := runtimeSyntaxSyntax_converterGoBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/syntax_converter.go", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxSystemdYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x58\x4d\x93\xe3\x28\x12\x3d\x4f\xff\x8a\x8a\xda\x3e\x74\x6f\xc7\xf4\x71\x0f\x15\xb1\xbb\x21\x4b\xb2\x8b\x29\xeb\x63\x84\x5c\x35\xb5\xed\x1e\x05\x96\xd2\x36\x6b\x0c\x1a\x40\xae\xf2\x2c\x3f\x7e\x03\xf4\xed\xe9\x8b\x9d\xef\x81\x00\x41\xe6\xcb\x14\x7b\xca\x40\x5f\x6b\x78\xb8\x53\x57\xa5\xe1\x5c\x7d\xf8\x50\x81\x86\x52\x3f\x7c\xb8\xbb\xbb\xbb\xb3\xcd\x9c\x9c\xe1\xe1\xee\x7e\xbb\xfd\xfa\x49\x81\xbc\xd0\x12\x8c\x12\xe5\x09\xb4\xd1\xf4\x0c\xf2\xf3\xc7\x7b\xd7\xf5\x08\xa4\x02\xf9\x70\x77\xff\xfb\x76\xfb\x6d\xc3\xa9\xde\x6e\xbf\x7f\xbc\xff\xf0\x41\x36\x0c\x54\x3b\xda\xcf\x77\x4a\x13\x0d\x67\xe0\xda\xf6\xfb\xe4\x95\x25\xd4\xda\x78\x7b\x0d\xd2\x78\x8c\x12\x65\x3c\xc6\xc4\x1b\x52\x82\x11\x0d\xc6\x63\x4a\x18\x2f\xc6\xa8\xf0\x93\x75\x92\x99\xc2\xdb\x04\x28\x2f\xd6\xc9\x0a\xc5\x1b\x14\xf4\x18\x87\x18\xa3\x24\x36\x0b\x52\x9e\x98\x38\x98\x05\xec\x85\x04\xb3\xa0\xbc\x42\xe9\xe5\x1f\x09\x67\x57\x07\x54\x2e\xdc\x7f\x2e\x02\x70\xaf\xb1\x60\xa2\x3c\xa1\x24\x03\x52\x2d\x08\xaf\xde\x68\xa5\x8f\x3d\xf9\x02\xf4\x70\xd4\x03\x92\x54\xc3\xd8\xa7\x58\x24\x49\x5e\xa0\xc0\x2c\xa4\x20\x55\x49\x94\x36\x8b\xcd\xaa\xc8\xc2\x34\xc9\xf2\x62\x93\xad\xcd\xa2\x51\x31\x39\x83\xf1\x49\x4d\x76\x94\x51\x4d\x41\x8d\xe0\xba\x10\x0d\xaf\x28\x3f\x60\xd0\xc6\x7f\xf4\x30\x46\xd8\x94\xb4\x3e\x82\x34\x25\x23\x4a\x99\xc2\x8f\x82\x35\x8a\x43\xe3\x27\x41\x58\x2c\xd1\xba\xb7\x36\xb1\xdf\x5a\xae\xb5\xf0\x93\x28\x32\xbe\x38\xd7\x12\x94\x32\xbe\xe0\x15\xd5\x54\x70\xcf\x4f\xc5\x1b\xc8\x91\x18\xa7\x1e\xb9\x80\x4a\x28\xb5\x90\xd7\x58\xe8\xf0\x5c\x4f\x9b\x96\x94\x01\x52\xe1\x3b\x94\x8d\x26\x3b\x06\xf3\x96\xbf\xf6\x7f\x14\x4a\x8f\xe8\x09\x24\x07\xe6\x8b\xf3\x99\xf0\x6a\x4d\xf9\xe4\xf1\xb8\x61\x6c\x44\x29\xd1\xc7\xf0\x9d\x2a\xad\x7e\xc4\xad\x98\xd8\xcd\x79\xa4\x86\x35\xdf\x36\x44\xa2\xe1\x3a\x15\x94\xeb\xdb\x16\x7b\xbc\xee\xfc\x6e\x1b\xf0\xf5\xbc\x13\x8c\x96\x6b\xca\x4f\x63\x1b\x86\xb2\x91\xb3\x7d\x7a\xa6\x52\x37\x84\xd1\x3f\x89\x45\x96\xdf\x33\x5a\xb6\x6b\xd6\x52\xb0\x95\x14\x4d\x3d\x03\x9e\xd6\x92\xee\x9a\x76\xca\x81\x8d\x44\x45\xf7\xd7\x19\x95\x82\x54\x54\x69\xe0\xda\x94\x2d\xcd\x40\x0e\x03\xb7\x76\x1a\x16\xb1\x17\x85\xc6\x4f\x37\xde\x7e\x4f\xb9\x5b\x5b\xba\xc1\xe5\x11\xaa\x86\x51\x7e\x48\xed\x4b\xdc\x72\x92\x0a\xf9\x97\x9e\x19\x28\xd0\x09\x5f\x0a\x79\x72\x0d\x47\x22\xad\x5b\x4a\xa2\x8e\xfe\xf1\x39\x6f\x2d\x7c\x04\xc6\x4c\x51\xf8\x9b\x0c\x27\x99\xa9\x60\xd7\x1c\x4c\x00\x7b\xd2\x30\x3d\x5d\x58\x47\x05\x50\x03\xaf\x80\x97\xd6\xc3\x3b\x6e\x4d\xcf\x54\x7b\x78\x06\xfd\x24\x0b\xe7\x44\xba\x99\xe1\xc0\xcb\xbd\x19\xb1\xc4\xe8\x3f\xf3\x47\xd6\x89\xff\x34\x1f\x35\x0a\x23\x4b\xce\x39\xbc\xfa\x75\x13\x6e\xe6\x8f\xc6\xc8\xbf\x21\x12\x17\x55\x33\x2a\xcd\x12\x7f\xc6\x64\x78\x3e\x5d\x96\xa7\x19\x4a\x6e\xa8\x1c\x45\xf3\x71\x30\x5a\xa5\x61\x1c\xa0\x78\x35\xa7\x73\x6f\x5c\x29\xd6\x84\x57\x44\x56\xa1\x94\x42\xde\x92\x49\xa3\xeb\x46\x9b\x00\x54\x29\x69\xed\xbc\xae\x95\x2c\x27\x8f\x9d\x1d\x00\xbf\x9a\x21\x1e\x22\x51\x81\xf9\x6b\x44\x07\xa2\x6c\xac\xde\xb6\xae\x1b\x34\xe7\xda\xb7\xda\x08\xf6\x18\xeb\xab\x09\xf9\x85\x4a\xc1\x6d\x8f\xa9\x6d\x83\xdc\x84\x59\x16\x27\x06\x2e\xc0\x75\x61\x95\x5e\x34\xda\x14\xe1\x6f\xa1\xb1\xb2\x90\x01\x13\xa4\x72\x26\xd6\x44\xea\xd1\x4a\xad\x14\x8c\x48\x42\x07\x44\x3d\x18\x93\x2e\xa2\xb6\x3d\xf6\x94\xd9\x14\xb0\x4c\xe2\xdc\xfd\x14\x91\x97\xb6\xc6\x26\x46\xce\x16\xf2\x8d\xc8\x2a\x17\xbe\xe0\x4a\x30\x18\x89\xa7\x48\x1d\x46\x84\xaf\xca\x66\x80\xa5\x04\xb0\x4a\x6f\xf6\x12\xfe\x30\x4b\x55\x9e\x52\xa2\x54\x2c\xcc\x5e\x69\xb2\x33\xc5\x0a\x05\xa6\x8d\xda\x55\x03\x4a\x45\x84\xf2\x14\x05\xe6\x91\xf0\x8a\xc1\x23\xdd\x81\xe4\x44\xc3\x13\x5c\x3b\x6a\x4d\x2b\xfc\x46\x75\x79\xec\xb0\x13\xd7\xb1\x19\x37\xca\xc6\x80\x25\x8e\x44\x1d\xcd\x74\x04\x74\xe0\x42\x02\xe2\x47\xba\xa3\x1a\x2a\xf3\x98\x44\xa1\xcb\x10\xc5\x63\x82\x73\x17\xd8\xc8\x4f\xe2\x36\xc4\x51\x60\x50\xc5\xc0\x2b\xdd\x69\x8d\x26\x86\xd2\xa0\xa0\x58\xa3\x27\xdb\xa7\x88\x92\x20\x5c\x0f\x46\xb1\xcc\x92\xa8\xb0\xd1\xb3\xf0\x70\x68\xda\x09\x13\xde\x27\xd1\x1e\x63\x4e\x6a\x75\x14\xba\x23\xac\x8f\xa2\x34\x34\x88\x93\xb2\x04\xa5\xe8\x8e\x41\xef\x3e\x36\x92\xbb\x15\x07\xc0\xc8\x35\x22\xef\x76\x05\x56\x7a\x0c\x4a\x46\x39\xf1\x5d\xaa\x9a\x32\x83\xec\xa0\x34\x4f\xb0\xfd\xcd\xd7\xe6\x17\xb1\xcb\x5b\xff\xb1\xa3\xfc\x22\x28\x9f\xca\xc8\x13\x40\xed\x31\x7a\x01\xf3\x14\xbe\xda\xb3\x6e\xff\x8a\x3c\x59\xad\xd6\xa1\x79\xa2\x8c\x85\xef\x25\x6b\x2a\xd8\x28\xd7\x9f\x32\xe6\x9c\xdd\x1a\x36\xb7\x8f\x34\xa6\x07\x4e\x98\x33\x2d\x99\x4a\x61\xdf\x0c\x94\x19\xce\xef\xf6\x34\x7a\xa1\x1a\x15\x6a\x90\xa6\x51\x93\x26\x62\x34\x51\xa1\x99\xfc\xcc\x75\x67\x14\x9c\xa9\xd2\x4c\x24\x66\xd0\x96\xa9\xa8\x4c\xd5\xe4\x56\x46\x26\xfa\xc1\x28\x3f\x15\x75\xbf\xcf\x17\xc2\x1a\x58\xbb\x14\x12\x10\x4d\x0e\x92\x9c\x4d\x0b\x97\x68\x99\x74\x66\x04\x4a\x91\x03\xfc\xda\x40\x03\x1d\x15\x83\xb6\x03\x75\x08\xc3\x1f\x0d\x70\x4d\x09\x4b\x89\xab\xec\x3a\xba\x86\x92\x12\xd6\x23\x2d\xc1\x8e\x2e\x0e\xbe\x60\x42\x5a\x63\x0d\x17\x60\xce\x10\x65\xab\x30\x6b\x71\xc8\x89\x3c\x80\x36\xac\x39\x29\x53\x44\x9e\xff\x88\xe2\xd0\xd6\x4a\x11\x39\xc1\x98\xbe\x23\x22\x4f\x26\x22\xef\xbe\xe0\x1c\x9c\x93\x2b\x0b\xad\xf2\x58\x2f\x89\xc8\xbb\x1b\xbc\x8f\xf7\x1e\xbb\x70\xef\x01\xd6\x56\xcb\x06\xd4\xc6\x7e\x44\xde\x33\xb0\x19\xb5\x8b\x9b\x08\xce\x42\x5e\xdd\x06\x76\x36\x16\x7b\xdd\xe1\x10\x63\x6f\x15\xf6\xff\x6e\x95\x93\xbd\x8a\xc8\x7b\x07\xd5\x9c\x6f\x6d\x4c\xff\x04\x53\x14\x51\x12\x27\x79\x12\x23\xbf\xb0\x47\x87\x73\x2f\x4a\x8d\xab\x46\x96\x8c\x1c\x94\x71\x81\x1d\x7b\x8d\x16\xcf\xb9\x32\xb1\xad\x3b\x63\xc1\x5d\x5d\x49\xf9\xc1\xc4\x22\x86\xb7\x54\xd2\x0b\x65\x60\xe7\x89\x85\xa6\xfb\xab\xe7\x62\xd2\x24\xdc\xc6\xff\xc5\xed\x48\xc2\x17\x42\xe8\xd6\xf2\x09\x03\x9b\x28\x4c\xc2\x97\x84\xb2\x46\xc2\x68\xf5\x71\x9f\x70\x27\xc0\x4d\xdd\x3e\x62\x2b\xf2\xe9\x60\x16\xdb\xd8\x1f\x98\x24\xc2\xa5\x90\xe0\x55\xff\x6d\x94\x36\x49\xdd\x1e\x89\x68\x33\x51\xea\x45\xae\x9c\x4d\x89\xd4\xc9\xde\x58\x35\xf5\x25\x54\xad\xcf\x28\x87\x87\xba\xc9\x16\x57\xfe\x91\xf0\x03\x54\x66\x52\xe0\xdd\xd4\x75\x16\xba\x82\x88\xda\x6e\x20\xcf\x54\x29\x3b\xa3\x5b\xb4\x2b\xd9\x0b\x2b\xc9\x29\x0a\x5c\x32\x4a\x69\xdd\xee\x77\x2f\xbd\xb7\x91\x9c\x66\x61\x9e\xbf\x8e\xa2\xda\xe1\xd6\xee\xa3\xc5\xc6\x59\x86\xf2\x57\xcb\x5c\x88\x86\x18\xf4\x9b\xad\x85\x3a\x98\x9f\x6b\x93\x4a\x51\x93\x03\xd1\xa0\xda\x14\x97\x0b\x53\x2b\x65\x32\xa2\xc1\xf9\xcc\xa2\x91\x4a\x8f\x10\x71\x0d\xf2\x42\x98\xb1\x55\xa6\x5d\xf6\x54\x43\x87\xca\x73\x4a\x16\x45\x16\x7a\x6b\xeb\x2a\x13\x7f\xc9\xa0\x04\x7a\x81\x45\xb3\xdf\x83\x34\x19\xec\x1b\x05\x11\xe1\x0d\x61\x6d\x76\x9d\x33\xa2\x36\x12\xec\x94\x76\x81\xc3\x82\xab\xa5\x14\x67\x93\xc1\x99\x50\xee\x3e\xa9\xc2\x77\x6a\x9f\xfc\xa3\xa1\x12\xaa\xc5\xb5\x37\xd5\x60\x38\x2f\x55\x4b\x21\x07\x26\xb9\x80\x94\xb4\x72\x25\xbf\xe3\x94\xad\x9b\x07\x6b\xde\x6c\xbf\x06\xe1\x39\x77\xd6\xac\x32\xcc\x40\x75\xab\x56\x5d\x0d\x60\x8b\x08\xbb\x1c\xac\x89\x6e\x86\x0e\xd6\xef\x32\x21\xf4\xa8\x0a\x33\x34\xba\x42\xd6\x70\x5b\x81\xd8\x54\x61\x53\x7b\x8f\x7b\xbd\xb0\x7e\x31\x52\x1b\x35\xa0\x17\xa2\xcb\x63\x25\x0e\x76\x22\x45\xce\x35\x03\x65\x54\x49\x18\x14\xef\xdd\xff\xd5\x60\x20\xcc\x38\xe7\x85\x05\xd5\xca\x14\x38\x5c\xa3\x78\xf3\x5b\xe1\x27\x71\x1e\xfe\x96\x1b\x0c\xbc\xea\x0e\xc6\x9a\x18\xad\x9e\xd0\x7a\x6d\x70\xf7\x2d\x8c\x8f\xe2\xad\x7b\x2d\x7c\x6c\x74\x25\xde\xf8\x6c\x5a\xbb\x38\x7c\x26\xe5\x69\x4d\x76\xc0\x26\x26\x4a\x11\x9f\xc1\xa4\xd1\x06\xbb\x2f\x6b\x97\xdf\x5a\x53\x19\x2c\x1a\x59\x82\x8d\x17\x53\xe0\x64\x93\xf9\xe1\x8f\x3c\x08\xd7\x8c\x76\xcf\xcd\x2a\xcb\x1e\x21\x6e\xe3\xf8\xa6\xc0\x74\x3b\xdc\xe6\xc0\xb6\xe4\x18\x89\xd6\xcf\x47\x3c\x38\xba\xfd\x84\xa7\x65\xc1\xdb\xa9\x44\xfd\x72\x04\xbe\xe1\x1c\xa0\x82\xca\x12\x92\x1c\xc0\x28\x2d\x29\x3f\x14\xa0\x4a\x52\x83\xe1\x82\x83\x91\x50\x33\x52\x02\x6e\x9c\xb4\x4d\x9c\x01\x37\x75\xcd\xdc\xa5\x00\x91\x57\x57\x95\x29\x83\x37\xe9\xf0\x29\x3d\x56\x57\xb7\x31\xdf\x2a\xfe\x92\x94\xed\x87\x2d\x7e\xc5\xeb\x64\x55\x2c\x3d\x1f\xad\x6d\x90\xb7\xcd\xc8\xa9\xd4\x9e\xda\xe3\x6b\x3b\xa0\x20\x8c\x73\xb4\x44\x61\xd6\x75\x69\xd3\xd8\xc4\x4e\x25\xec\xe9\x7b\xdf\xdf\xea\x10\x76\xb7\x23\x3e\x61\x6c\xd9\xd6\xaa\xf8\x15\xe7\x61\x14\x14\xde\x1a\x79\xd8\x14\x3d\xf4\x57\x59\xb2\x49\x47\x9c\xbc\xc4\x61\x56\x6c\xec\x08\x1d\x93\x85\x5e\xf0\x3a\x76\xe8\x2f\x2f\x06\x62\x13\xa3\x7c\x82\xb0\x7d\xdc\x52\x3d\xf3\xe2\xc5\x39\xee\xd6\x33\x04\x44\x0b\xa7\xf1\x30\x30\x36\x1c\xf0\x55\x3d\x77\xe5\x78\xa7\x84\xb9\x9f\xfa\x82\x1f\x40\xb9\x63\xcf\xfd\xf4\x45\x92\xda\x49\x7c\x5f\xea\x4f\x4a\xb6\xde\xec\x63\x76\xc0\xa2\xee\xa1\xc4\x8c\x94\xa7\xd8\x41\x49\xb8\xaa\x89\xb4\xdf\x14\x45\x9e\x79\x31\xb6\x47\x69\xb4\x53\xbf\x3c\x7f\x75\x9e\x9c\xe7\xaf\x4e\x36\xac\xf1\xfc\x48\xf8\xa1\xa9\x9d\x99\x07\x54\x11\xc6\x6c\x39\x01\x26\xbf\xd6\x60\xdc\xe6\x6d\x22\xa2\x4e\xc6\xe6\x2c\x63\x2b\x3b\xb3\xd1\xe7\x7a\x72\xb0\xcf\x61\xe6\x36\xb1\xfb\xb7\x79\xfc\x85\x70\xed\x54\xcf\x1a\xca\x4c\x43\xf2\xe5\x48\xb4\x79\x39\x82\x04\xf3\x22\xa4\xcd\xc2\x83\xe4\x7c\xfe\xe7\x7d\x77\x53\x55\x4b\xa8\xa5\x28\xdb\xfb\xac\xaf\x94\xbb\x0a\x74\xbb\xfd\x57\xdf\xae\xdc\xe5\xc1\xc3\xdd\xfd\xf0\x84\x6a\xab\xa5\xee\x06\xec\x93\x5b\x2c\xe2\x4a\x13\xc6\x46\xb1\x68\x2f\xce\xdc\x8e\x7d\xde\x6e\xbf\xf7\xcf\xd2\xe1\x5d\xbe\xba\xfb\x1f\x77\xdf\xf6\x31\xf2\x50\x9c\xa2\xa0\xef\x54\x0a\x3b\x1a\xd7\x5f\x77\xc2\xcd\xbc\xdd\xee\x3e\x69\xd9\x80\xd9\x13\xa6\xe0\xf3\x76\xbb\x1b\x7b\x9e\xbb\x4b\xb6\x4f\xbf\x9b\x6f\xdf\x1e\x54\x4d\x4a\x78\xf8\xfe\xfd\xf3\xdf\x3e\x7d\xfb\xfd\x7f\xdf\xbf\xfe\xfd\xf3\xbf\x3f\x0e\x53\xdb\x8f\x77\xfd\x73\x79\x24\xf2\xeb\xdb\x91\x6a\x68\x3b\xdf\xdd\x4f\x9e\xfb\xf2\xa3\xde\x0f\x77\xf7\x3f\x7d\xb9\xfb\x62\xee\xbe\xfc\xf4\xe5\xfe\xc3\xff\x03\x00\x00\xff\xff\xa4\x35\xde\xe0\x49\x14\x00\x00") - -func runtimeSyntaxSystemdYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxSystemdYaml, - "runtime/syntax/systemd.yaml", - ) -} - -func runtimeSyntaxSystemdYaml() (*asset, error) { - bytes, err := runtimeSyntaxSystemdYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/systemd.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxTclYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x55\x5d\x97\xdb\x34\x10\x7d\xdf\x5f\xe1\xa6\x7b\x68\xb2\x7b\x36\xf0\x4a\x0a\x2c\xbc\xf3\x0b\x58\x6d\x83\x2c\x8f\x6d\x91\xb1\x24\x46\xe3\x24\xa6\xd3\xff\xce\x19\xd9\xc9\xa6\xe7\x40\x1f\x6c\xdd\xd1\xc7\x48\xba\xba\xba\x6a\x3d\x02\x4f\x09\x76\x15\x3b\xbc\xbb\x6b\x80\xc1\xf1\xae\xba\xab\xaa\xaa\xd2\xb6\x60\x07\xd8\x55\x2b\x63\xb6\xec\xf0\x7e\x55\xea\x7b\xb0\x0d\xd0\xae\x5a\x7d\x7a\xff\x6e\xfb\xf0\xfd\x1a\xc2\xb1\x7a\xdc\x3c\xb3\xc3\xdc\xaf\x2b\xb9\xdf\xac\xee\xee\x68\x44\xc8\xbb\xd2\xfd\xa9\xca\x6c\x19\x06\x08\x5c\x32\xd5\x6b\xdb\x32\x90\xd8\x94\x20\x34\x62\x89\xec\x24\x76\xe4\xb8\x87\x33\xb8\x78\x98\xb1\x1f\x52\x24\x9e\x31\x46\xdb\xbc\xa1\xbd\x0f\x0d\x9c\xe7\xf8\xef\xd1\xa2\x6f\x27\xa9\x7d\xb0\x34\x49\x4d\x60\x0f\xe2\x6c\x06\x71\x96\x5d\x2f\xae\x11\x87\xd1\x1d\xf4\xaf\x95\x31\x38\xcb\x5a\xb0\x0f\x23\x08\x60\x06\x81\xe0\x62\xe3\x43\x27\x10\x5b\x01\xa2\x48\x02\x47\x8b\xa2\xab\x11\x38\x7b\x16\x38\x27\x92\xb6\xd6\x44\xd0\x48\xeb\x62\x68\x7d\x37\x12\x28\x4c\x93\x28\x4f\xe5\x07\x47\x08\x2c\x2d\x8e\xb9\x97\x36\x92\x7e\x60\x5d\xc1\x83\x65\xe9\x80\xb3\x74\x18\xeb\xf2\xb3\x28\xbd\xcf\x1c\x69\x12\xdf\x8a\x0f\x8e\xc4\x87\x36\x8a\x0f\x0c\x94\xe4\xaf\xe8\x83\xe0\xc2\x11\xce\x5b\x46\x1f\x32\x10\x0b\xfa\xcc\x82\x08\xa1\xe3\x5e\x0a\x39\x48\x36\x74\x20\x48\x90\xd0\x3a\x10\xcc\x60\xc9\xf5\x5a\xb2\x60\x56\x26\xf5\x24\x73\xd2\xc6\x98\x20\x48\xb2\xee\x60\x3b\x90\xe4\x1b\x49\x23\x67\x49\xa7\x46\x08\xac\xfe\x3a\x38\x27\x2d\xf2\x58\x0b\x15\x09\x08\x01\x8f\x14\x24\x3b\x1b\x24\x03\x1c\x44\x13\x67\x25\x44\x8b\x91\x1c\x48\x4e\xe8\x59\x32\x93\x72\x99\xc7\x3a\xb3\xe4\x93\xd7\x53\x60\x87\xbf\xc7\x4e\x18\x10\x85\xfd\x00\xc2\xa4\xeb\x18\xc3\x21\xc4\x53\x90\x31\x68\xb2\x31\x35\x96\x41\xc6\x84\x70\x04\x94\x31\x1d\x2d\xc9\xd1\x92\xb7\x35\x82\x1c\x4f\xd6\xb3\x9c\x7a\x8f\xb0\x31\xa6\x5e\xfd\x9f\xb2\x54\x4c\x95\x0d\xd3\x10\x09\x66\x69\x55\x4d\x0c\xb0\xd0\x31\x57\xc0\xd9\x67\xce\x4b\xd0\x01\x2f\xa8\x10\x74\xc1\x70\x66\xc0\x92\x79\xa9\xc9\xd7\x7e\xd9\xff\x73\x49\x9d\xd9\x12\x7f\x95\x5b\x17\xe4\x33\x7b\x77\xc9\x54\x36\xf7\xad\x25\xcf\x84\x55\xf5\xa4\x13\x96\x13\x5d\x6a\x5c\x1c\x92\x25\xb8\x84\xa0\x5a\xbf\x04\xad\xa7\x7c\xe1\xba\x9a\xc5\x71\x09\xf2\x05\xa1\x7d\xeb\xf2\x75\xe6\xc1\xa6\x37\xa8\x07\xb4\x04\xb3\x88\x2e\x01\x24\xb0\x7c\x13\x15\x61\x2d\x21\xc7\x37\x84\xf1\x04\xf4\x16\xb2\x67\xbc\xe9\x37\xa6\x74\xd3\x4a\x7e\xb8\xc5\x08\x2d\xdf\xc6\xe4\xbb\xfe\x5a\x71\xf2\x78\xdd\xef\x29\x52\xa3\x17\xe1\x26\x2c\xdc\x7f\x53\x0b\x68\x69\xb8\xb1\x8d\x74\xe8\xa4\x5e\x0e\x4b\xdd\x61\x76\x04\xcb\xe5\x5a\x3a\xcb\xe5\x5a\x38\x17\x11\x55\x87\xee\xe2\x15\x33\xef\xae\xef\x28\x89\xeb\x87\xd8\x88\xeb\x55\xb5\xae\xa7\x18\x59\xdc\xcc\xbe\x5b\x18\x76\x43\x33\x8b\xdb\xc5\x61\xb0\xa1\xc1\x18\x93\xb8\x99\x58\x57\x2e\x05\x89\xe3\x78\xd0\xa9\xd4\x77\xa5\x19\x93\x80\xeb\x63\xb1\x1b\x94\xd6\x05\x46\x69\x8b\x67\xb5\x91\x0e\xd2\xea\xb6\xa4\x65\x1a\x75\x39\x20\xed\x18\x4a\x63\x1f\x33\xef\x67\xc3\x68\x8a\x71\x9c\xe5\x00\x13\x36\x80\xa5\x54\x59\x6b\x79\x80\x29\x17\xa0\xfa\x3d\x28\xa3\x68\x73\xf6\x5d\x10\x54\x17\xb4\x6a\x32\x30\x24\x9e\x04\x0b\x0f\xe8\xc3\x41\x70\x56\x85\xb2\x86\xbe\x5e\xbc\x47\x37\x82\x47\x4b\x4a\x8a\x96\x69\x89\x93\xba\xdd\x60\xcf\x32\xf8\x20\xc1\x3b\xb5\x94\x04\x92\x28\x16\x5f\x24\x1b\x9a\x38\x14\x67\x69\x3c\x89\xea\xc8\x97\x8d\xa8\x95\xe8\x12\xe0\xcc\x05\x97\xde\x0a\x16\x49\x02\x82\x63\xc9\x40\x47\xa0\xbd\x75\x0e\xd2\x35\x72\x04\x25\x83\xef\x82\x5e\x09\x04\x48\x92\xa7\xe0\x24\x4f\x99\x61\x50\xbf\x39\xef\x5b\x1f\x1a\x1f\x3c\x2f\x91\x72\x59\x50\xd1\x02\x87\xe6\x9c\xe7\x78\x1e\x3e\xc3\x9b\xe1\xc5\x6f\xd4\xac\xb2\xba\x55\xc8\xea\x6d\x4c\xd3\xbe\x3c\x0d\xe3\x60\xf3\x41\xb4\xcb\xad\x00\x7d\x03\x81\x7d\xeb\x81\xb6\x4e\x59\xde\x55\xab\x44\xd1\xbd\xbc\xec\x8a\xef\xee\x5e\x5f\x65\x6d\xcc\x67\x31\xe6\xcb\xe6\x2a\xda\x69\xa8\x23\x6e\x63\x02\xb2\x1c\xf5\x51\x5d\x1b\xb3\x16\x63\x36\x62\xcc\x47\xf9\x53\x8c\x31\x46\x8c\xb9\x97\x9f\xe4\x17\x79\x27\x3f\xcb\x77\x62\x8c\x5c\xc7\xbb\x18\x32\xdb\xc0\xdb\x30\x0e\x75\x79\x94\x8d\xa9\x5f\x7e\x78\xfa\xf1\xf5\x71\x6d\xcc\x76\x46\x9b\xe7\x9b\x55\x5e\x47\xcc\x77\x49\x47\xe8\x9c\xc6\x6c\xe5\xe5\x93\x59\xbd\x6e\x1e\xcc\x4a\x3e\x5c\x6b\x3e\xbc\x6e\x1e\x3e\xfc\xc7\x0e\x8f\x76\x9e\xec\xde\x98\xcf\xcf\x3a\xcd\x6f\x4f\x7f\xec\xdf\xfd\xfa\xfe\xfe\xe1\xf9\xe9\xf5\xd1\x98\x2f\xcf\x6f\x13\x0e\xcb\xad\x5c\x7f\x92\x8f\x9b\x1b\x3a\x1e\xde\x6f\x1f\xae\xa9\x83\xe6\x7e\x72\xbd\xa5\xed\xa9\xf7\x3c\xbf\x55\xbb\x6a\x75\xd3\xff\xf1\x7e\x75\xf7\x6f\x00\x00\x00\xff\xff\x44\x7a\xd2\xf7\xb1\x08\x00\x00") - -func runtimeSyntaxTclYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxTclYaml, - "runtime/syntax/tcl.yaml", - ) -} - -func runtimeSyntaxTclYaml() (*asset, error) { - bytes, err := runtimeSyntaxTclYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/tcl.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxTexYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x51\xdb\xae\x9b\x30\x10\x7c\xe7\x2b\x56\x24\xad\x12\x1d\x81\xfa\x5a\x54\x35\xed\x6f\xd4\x8b\x2a\x5f\x96\xc4\x2a\x36\x08\x6f\xaa\x34\x38\xff\x5e\x71\x49\x48\x1b\x21\x1d\x5e\x80\xd9\xf1\x78\x76\xa6\xb2\x35\xf1\x9f\x96\x0a\x60\xba\x24\x89\x21\x26\xcd\x05\x24\x00\x00\xc3\xcc\x4b\x47\x05\xa4\x88\x39\xd3\x65\x1b\x11\x73\x65\xd5\xf8\xd6\x75\xd8\xa6\x49\xd2\x9d\x6b\x0a\xc5\xc8\xdf\x80\x6e\xea\xa6\xb3\x57\x02\x3e\x11\x58\x43\x9e\x6d\x65\xa9\x0b\xd0\x54\xd0\x7f\x59\x80\xaf\x37\x90\xde\x80\x78\x86\xca\x51\x23\x7b\x3a\x36\xa9\x0e\x4f\x60\xd9\xf1\x68\xa3\x4f\x1f\x20\x79\x33\x42\xb7\x05\x9a\xcc\x80\x78\x9f\x96\x78\xd5\x2a\xd7\xb4\x36\xe0\xcf\x4e\x51\x17\x66\x65\xdd\xf8\xc0\xd2\x73\x3e\xc1\xe3\x61\x25\x3e\x65\x9f\xcb\xb7\x1d\x62\x3e\x7d\xed\x0f\x3b\x21\x8a\xd0\x4a\x4d\x45\x59\xee\x5a\x8e\xce\x45\xed\xa2\xf5\x91\x2e\x91\x5c\x54\x6d\x6c\x75\x34\x26\x6a\x1d\xbd\x89\x5e\xc7\xd0\xee\xf7\x07\x44\x95\xce\xb7\xd6\xc4\xa0\x3a\xa9\x7f\x11\x07\x38\xc9\xdf\x53\xb4\x86\x2a\x79\xae\x79\xca\x1b\xe4\x51\x5a\x3f\xfb\x9a\x27\x05\xa4\xa2\xbf\x21\x0a\xc4\x72\xde\x29\x83\xd0\x92\xb6\xb2\x1e\x66\x1f\x11\x1f\xcb\x6e\xc0\x49\xdd\x35\xf7\xcd\x02\x4b\x26\x47\x7e\xca\x08\xf1\xdb\x41\xc8\xec\xfa\x3d\xfb\xf1\xb3\x7c\x4b\x1f\x3d\xbb\x81\xb1\x84\x31\xfe\xbe\x66\xfc\xe1\xff\x84\xb7\xeb\x5d\xad\x8a\x0c\x26\x14\x1d\xad\x47\xec\x67\xd2\x3f\xa5\xdf\xbb\x43\x24\x6f\x56\x38\xcb\x65\x7f\x03\x00\x00\xff\xff\xbd\xc5\x77\x79\xf1\x02\x00\x00") - -func runtimeSyntaxTexYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxTexYaml, - "runtime/syntax/tex.yaml", - ) -} - -func runtimeSyntaxTexYaml() (*asset, error) { - bytes, err := runtimeSyntaxTexYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/tex.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxTomlYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x92\x4f\x6b\xe3\x30\x10\xc5\xef\xfa\x14\x83\xb2\xe0\x38\x8b\x4d\xd8\x5d\xd8\x5d\x41\x28\xe9\x9f\x40\x0f\x6d\x2e\x2d\x18\x2c\x43\x14\x7b\x92\x98\xd8\xb2\xb1\x14\x48\x89\xfc\xdd\x8b\x9c\xb8\x31\x0e\xb4\x3d\x14\xea\x93\x35\x33\x4f\xef\xa7\xc7\xac\xd2\x0c\xf5\x4b\x89\x0c\x74\x91\x67\x84\x24\xa8\x31\xd6\x8c\x00\x00\xd8\x9e\x14\x39\x32\xa0\x9c\xfb\xb6\x4f\x09\xa9\x76\x19\xaa\x63\xdf\x03\xa5\x85\xc6\x1c\xa5\x66\x40\x87\xfe\xc8\x0d\x43\xa6\x4a\x11\x23\x8b\xa2\x09\x6d\x67\x4a\x8c\x53\x91\x31\xa0\x13\x4a\x9a\x1a\xc0\x00\xae\x2b\x11\x6f\x51\x83\xde\xa4\x72\x9d\xa2\xba\x18\x1e\x72\x1e\x1a\xce\x23\xb7\x23\x7a\xdc\xe5\x4b\xac\x14\x08\x99\x80\xd2\x55\x2a\xd7\xad\x2e\x2e\xa4\xd2\x42\x6a\x5f\x36\x23\x0d\xf1\x72\x18\x8e\xbd\xff\xd1\x4f\x33\xde\xdb\x1f\xe1\xad\xa6\xde\x2c\x1a\xb9\x9c\x2f\x8d\xe3\x3b\xf4\x1d\x29\xe7\x56\xfb\x37\x3a\xfc\xae\xcd\x3e\x9c\x7a\x33\xe1\xad\xec\x5d\x87\x5f\xb5\xd9\x75\xcf\x7f\x6a\xf3\xdc\x3d\xff\xab\x5b\xde\xce\xc5\x47\x54\x76\x7a\x06\xd8\xd4\x2a\x9b\x18\xa7\xf4\xad\x86\x32\xe9\x55\xd4\x36\x2d\x4f\x30\xfe\xb9\xda\x89\xbf\xfd\xba\x4e\xc7\xf8\x6e\x36\xa2\x3a\x4b\x3f\x8b\xe3\xf4\x69\x9c\x6f\x84\x59\xf4\x61\x16\x5f\x63\x9b\x37\xdb\x7a\x61\x37\xe8\xdb\xfd\xf8\xc0\x4e\x17\x49\x61\xb7\xf4\x69\x7e\x3b\x37\x41\x10\x98\xd9\x7d\xf0\x70\xe7\xb2\x2b\x4a\xc8\x6b\x00\x00\x00\xff\xff\xf6\x17\xf4\x94\x54\x03\x00\x00") - -func runtimeSyntaxTomlYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxTomlYaml, - "runtime/syntax/toml.yaml", - ) -} - -func runtimeSyntaxTomlYaml() (*asset, error) { - bytes, err := runtimeSyntaxTomlYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/toml.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxTwigYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x94\xdb\x6e\xf3\x36\x0c\xc7\xef\xf3\x14\x9e\xbb\x6e\xc9\xba\x64\xc5\xee\x96\x1d\x8a\x61\xc0\x5e\x22\x0a\x02\x5a\xa2\x1d\x35\x3a\x81\xa2\x93\x7a\x65\xdf\x7d\x70\x0e\x5f\x4f\x0e\xbe\xa2\xc0\x77\x17\xdd\x18\xd6\x9f\xa2\x7f\xa2\xc9\x7f\x6d\x1d\x72\x97\x70\x5e\xf0\xce\x36\xa3\x91\x41\x46\xcd\xf3\x51\x51\x14\x45\xaf\x05\xf0\x38\x2f\x4a\xa5\x66\xbd\xfe\x7d\x39\x1a\x51\xeb\x30\x1f\x02\xa6\x85\x0d\xda\xb5\xa6\x8f\x58\xb3\x77\xe5\x71\x37\x77\xbe\x8a\x6e\xc6\xd0\x1c\xe2\xfa\x95\x19\x88\xf7\x99\x1e\x95\x7a\x5c\x2c\xe6\x39\x81\xc6\xf9\x72\x59\x7e\x09\xc1\x60\xe6\x45\xf9\x42\x52\xea\x49\xa9\xa7\xe7\x80\x17\x9f\x3e\xad\x69\x61\x0d\x06\xb6\xb5\x45\xda\x67\xaf\xc6\x50\x65\xa9\x80\xf5\x5a\x34\x24\xcb\xe0\xec\x7f\x28\x3a\x86\x2d\x12\x0b\x06\x1d\x8d\x0d\x8d\x18\x60\x1c\xaf\x7c\x34\xb6\xee\x26\x77\x62\xb0\x86\xd6\xb1\x60\xd6\x90\x50\x6a\x4b\x99\xa5\x8e\xe4\x81\xe5\x3e\xda\x20\xf7\x39\x86\xd5\xfe\x34\xca\x06\xbb\x2c\x0e\x32\x8b\xc3\xd0\xf0\x5a\x5c\xdc\x21\x89\x47\x6a\x50\x82\xfb\xb5\x22\x09\xad\xaf\x90\x56\xc7\x0c\x04\x3b\x21\x4c\x0e\x34\x0a\xe1\x16\x29\xa3\x50\x6c\x83\x91\xec\xac\x46\xc9\x91\x58\x72\x72\x96\x25\x33\xd9\xc4\xd0\x64\x61\xcb\x0e\x85\xc9\x7a\x69\x53\x42\x92\x96\xdc\x91\x60\xa2\x54\x55\x9e\xad\xc3\x4c\x3b\xc8\xf9\x54\x0d\x66\xb2\x55\xcb\x28\x95\x8b\x7a\xd3\x17\x22\x33\x04\x16\xdd\x69\x87\xfb\x32\x88\x69\x7d\x92\xe3\xaf\x14\x0f\x0f\xe2\x6d\x90\x04\x84\xa1\x47\x0f\x26\xfa\xfe\xd1\xf4\x9c\x2d\x69\x14\x46\x9f\x1c\x30\xae\x6a\x8a\x7e\xd5\x13\x87\x66\x08\xa9\x6f\xac\xd9\x06\xbb\x5d\x24\x73\xc2\x09\x46\x20\x3f\x53\x18\xac\x6d\x40\x23\xc6\x6e\x6d\xb6\x95\xc3\xaa\x13\xf4\x89\x3b\xc1\x2d\x06\xa9\xc1\x65\x14\x1b\xc4\x66\xb1\x8c\x04\x95\x43\x09\x91\x25\xb4\xce\x49\x34\x46\x22\x49\x06\x8f\x63\xc8\x93\x3b\x61\x6a\x51\x76\x96\xd7\x43\x34\xc7\xae\x8c\x09\x09\x38\xf6\xdd\xb2\x98\xcd\x7f\xff\xf9\xe6\xa7\x3b\xf9\xf3\x3b\xa5\xae\x97\xf2\x87\xfc\x25\xbf\xc8\x54\x7e\x38\x73\xb4\x22\xd0\x1b\xe4\xbe\xb4\x8b\xf1\xe4\xf1\x69\x29\x4a\x2d\x44\xa9\xe5\xdb\xf8\xd3\xf5\x66\x87\x36\x38\xdc\x7d\x71\x3b\xfd\x6d\x79\xa3\x54\x25\x4a\x55\xb7\x0f\xfd\xeb\xdf\xd3\x7f\x61\x5a\xef\x37\xcf\xa6\x38\x94\xf7\x75\xd7\xbf\x1a\xa8\xb2\x7c\xa7\x1d\x26\x69\x48\xc9\x1b\x9b\xf6\x38\x4a\xbd\x17\x07\xe6\x6b\x08\x28\xa1\xb6\xe0\xfe\x59\x03\x1d\x33\xcd\x3e\x0d\xff\xe3\x39\xf6\x01\xe1\x5b\xa2\x7f\xd5\xb3\xae\x3f\xe6\x58\xd7\x17\xbf\xba\xf8\xd5\xc5\xaf\x2e\x7e\xf5\x79\xf4\x8f\xd9\x95\x8e\xde\x63\xe0\x41\xaf\xba\x7a\x6b\x50\x57\x03\xae\x54\x2c\x96\xa3\xff\x03\x00\x00\xff\xff\xea\x2f\x44\xaf\xfd\x09\x00\x00") - -func runtimeSyntaxTwigYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxTwigYaml, - "runtime/syntax/twig.yaml", - ) -} - -func runtimeSyntaxTwigYaml() (*asset, error) { - bytes, err := runtimeSyntaxTwigYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/twig.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxTypescriptYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x54\xc1\x6e\xe3\x36\x10\xbd\xfb\x2b\x54\x63\xdb\xd8\x32\x14\xa7\xa7\x22\x42\x5b\x21\xed\x26\xa7\x36\x29\xba\xed\xa5\x24\xb3\xa0\xa8\x91\xcd\x86\x22\x55\x72\x18\xc7\xc5\xa0\xdf\x5e\x50\x72\x36\x5e\x3b\x9b\xcd\x65\x7d\x18\x92\x23\xbe\xf7\xc6\x0f\xc3\x69\xb5\x01\xdc\xf6\x50\x66\x29\x06\xe5\x75\x8f\x93\x49\x03\x08\x0a\xcb\x49\x96\x65\x59\xba\x61\x65\x07\x65\x36\xe5\xfc\x14\xc3\x9b\xe9\x64\xe2\xa3\x81\x30\x7e\x2e\x32\xe5\x6c\x40\x69\xf1\xd4\xc6\xae\x06\x3f\xdc\xab\x59\xb1\x10\xd5\x8c\x7d\x5b\x9c\x0b\x76\x56\x9c\x8b\x9c\xce\xd8\x59\xf1\x5d\x5a\x1f\x52\x42\x16\xed\x45\x71\x25\x16\xf3\x19\x8b\x7f\x0a\x66\x7e\x11\x15\xa5\x98\x4e\xd5\xbc\xe2\xbc\x9e\xbe\x82\x3e\x31\x2f\x38\x3f\xdd\x49\x8c\xcb\xe3\x39\x71\x5f\xc2\x6f\xbd\x60\x8b\x42\x54\xbb\x54\xc5\xda\xab\x24\xf6\x6a\xf6\x63\x8a\x03\x06\xdd\x80\x45\xdd\xea\x01\xcc\x2e\x8a\xbf\x64\xf1\xef\x7b\xb1\xdb\x9c\x15\xe7\xef\x45\xce\x58\x19\x7a\xa9\xa0\x14\x22\x67\x33\xf1\x88\x0c\x28\x11\x3a\xb0\x38\xaa\xce\x64\x1d\xd0\x4b\x85\x24\x03\xc9\xb0\xb5\x8a\xe4\x46\x6a\xa4\xda\x83\xbc\x23\x25\x03\x90\x92\xa8\xd6\xa4\x8c\x0c\x81\x86\xd2\xc7\xe8\xa3\x42\xe7\xd3\x1e\xb5\x8d\x30\xdf\xb3\xef\x50\xa4\x81\x3a\xae\x56\xe0\xa9\x01\x65\xa4\x07\x6a\xa0\x95\xd1\x20\x35\x60\x00\x81\x1a\x47\x60\x02\x10\xd8\xd8\x11\x3c\xf4\xce\x23\xc1\x03\x82\x6d\x02\xb5\xda\x4a\x63\xb6\xd4\x3a\x4f\xad\x77\xdd\x4b\x3a\x6d\xb4\x0a\xb5\xb3\xb4\x02\x24\xdd\x92\xee\x7a\x33\x7c\x0f\x69\x9b\x58\xb5\x25\x3d\x98\xaf\xc0\xb5\xa4\x2d\x82\x6f\xa5\x02\xd2\x81\x0c\x20\x75\xae\x89\x06\x28\xb5\xde\x60\xde\x4b\x62\x16\x36\xe4\x5a\xea\xa5\xba\x93\x2b\xa0\xde\xeb\x7b\x89\x69\x75\xa9\x8f\xa1\xa1\x3e\xd6\x46\x2b\xf2\xf0\x4f\xd4\x1e\xc8\x03\x46\x6f\x29\x00\x52\xa2\xd2\x8a\x42\xec\xc1\x53\xd8\x68\x54\xeb\x97\x94\x70\xad\x03\xe1\xda\xbb\x0d\xa1\xdf\x52\x7a\x34\x43\x70\x2d\xdd\x4b\x4f\xf7\x4e\x37\xb4\x59\x6b\x03\xb4\xd1\xb8\xa6\xad\x06\xd3\xcc\x9f\xe9\xe6\x47\x97\x64\xf2\x1a\x7d\x04\xb2\xd1\x18\x8a\xb6\x81\x56\x5b\x68\xe8\x5a\x5e\xef\xe3\xc6\x37\x3a\x60\x2e\xbc\x97\x5b\xfa\xc9\x39\x03\xd2\xd2\xdb\xf4\x47\x2f\x6d\xec\xc0\xcb\xd4\x03\x97\xde\x3b\x4f\x57\x8f\xee\xff\x2a\x71\xfd\x09\x9e\xeb\xa1\xe3\xe9\xa6\xfe\x1b\x14\xd2\xef\xb0\xba\x7c\xe8\xe9\x1d\x7a\x6d\x57\xf4\x6e\xdb\xd5\xce\x7c\x02\x28\xed\x96\xea\x9d\xbc\x85\x7b\xf0\x34\x3e\x1e\x0a\x23\x38\x1c\x81\xf7\x5d\x64\xc5\x62\x99\xff\xf0\xfd\x8f\x5f\xfd\xf7\x75\x55\x7e\x43\xe2\x19\x67\x96\xec\x36\x17\x33\x76\xbb\x14\x34\xe3\x9c\xf3\xe5\x7c\x9e\xb3\xdb\xb4\x13\x4b\xb6\xd2\x9d\xc8\x9f\xb5\x93\xf3\x61\xc4\x0c\xa1\x1a\x23\xa5\xec\x47\x03\x67\xc8\xb0\xba\xb5\x1e\x4f\xf8\x94\xf3\x6a\xa0\x7d\xe2\xeb\x86\x32\x87\x63\xfa\x05\x94\x7e\x28\x69\x39\xfd\x90\x03\xdb\x94\xd9\xf4\xcd\x53\x62\x1c\x87\x19\x13\x9f\x65\xe1\x3c\x3f\xe4\xe1\x3c\x5f\x1e\x52\x7d\x38\xee\xbc\x77\x8d\x2b\xb3\xe9\x1f\x37\x6f\x6f\xca\xe3\xc9\x35\xba\x7e\x2c\xc6\xa7\x47\x52\x7b\x99\x70\xa7\xfb\x9d\x6b\xa7\x9f\x91\x7f\x52\xea\x41\x69\x69\x7e\x5e\x4b\xff\x31\xf4\x15\xd5\x9c\x1c\x16\x73\xf2\x85\x6a\x99\xfc\x1f\x00\x00\xff\xff\x53\xad\xdd\x6c\xd3\x06\x00\x00") - -func runtimeSyntaxTypescriptYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxTypescriptYaml, - "runtime/syntax/typescript.yaml", - ) -} - -func runtimeSyntaxTypescriptYaml() (*asset, error) { - bytes, err := runtimeSyntaxTypescriptYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/typescript.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxValaYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x53\x5d\x4f\xdb\x30\x14\x7d\x26\xbf\xc2\x8b\xd8\x68\x13\x25\x65\x1f\x42\x23\xda\x88\x26\xed\x9d\x97\x3d\x2d\x0e\xc8\x71\x6e\x1a\x0b\xd7\xae\xec\xeb\x76\xa0\xab\xfd\xf6\xc9\x6d\x0a\x85\x21\xfc\x94\xd8\xe7\x1c\x9f\x7b\x7d\xee\xa0\x34\xe0\xfd\x1a\x2a\xb6\x11\x5a\x24\x49\x0f\x08\x12\x2b\x96\x30\xc6\x58\x3c\x34\x62\x05\x15\x4b\x39\x2f\x23\xe0\x34\x4d\x12\x17\x34\xf8\x6a\x07\x28\xd8\x9e\x9b\x72\xde\xcd\x06\x6d\x05\x52\x6f\x43\xa7\x81\x3a\x6b\x35\x85\x5a\x8e\xc2\x51\xa8\x95\xc1\xd9\x57\xfa\x78\x41\x9f\x3f\xd1\xc5\x97\x79\x4d\xa1\xf6\xa3\x75\x48\xa1\xd6\xd6\x2c\x69\x63\x55\x4f\xbe\xf6\xea\x01\x6e\x91\x82\x51\x91\x37\xe7\xbc\x4b\xa7\x6b\x54\x0f\x06\xd5\xa0\xc0\x95\x52\x0b\xef\x2b\x96\x36\x3f\x8a\xdf\xa2\x78\xb8\x6d\xa7\x8f\xf3\xe2\xf2\xb6\xcd\x9a\xa6\xf2\x6b\x21\xa1\x6a\xdb\xac\x99\xcd\xdb\x83\x80\x47\x81\xb0\x02\x83\x07\xb3\xd6\x91\x1a\x68\x3b\x2a\x0d\xd4\x5b\x02\xed\x81\xa4\xf0\x40\x3d\x0c\x22\x68\x24\xbf\x55\x28\x47\x42\x77\x4f\x38\x3a\xbb\x25\x29\x50\x8e\xc7\xa6\x5e\x6a\x2a\xa3\x95\x01\x8a\x2d\xe9\x61\x20\x8f\x2e\x48\x24\x30\x61\x15\x4b\xb2\x86\xe0\x0f\x82\x33\x14\x79\x4a\x92\xb4\xc6\xe3\x5b\x7a\x76\x0d\x4e\xa0\x75\x64\x60\x4b\x3d\x68\x40\x20\x07\x18\x9c\x21\x13\xb4\x7e\x8b\xba\x6b\x12\xd9\x0d\x38\xa7\x7a\xa0\xb5\x53\x1b\x81\x40\xeb\xd0\x69\x25\xc9\xab\xa5\x11\x9a\x70\x54\x9e\xb6\x20\xee\x9e\x29\xad\x41\x2a\xa1\x27\x9d\xa5\x45\x4b\x9d\x03\x71\x17\xed\xa2\x32\x01\x8e\xc1\xbb\x12\x84\xc1\x32\x3e\xf7\x44\x41\x17\x80\x06\xa1\xfd\xeb\x48\x13\x56\x1d\xb8\x09\xdb\x9c\x17\x97\x6d\xfe\xec\xfa\xfb\x55\x67\x75\x79\x28\x3d\xbe\x33\xe7\x45\xbe\xc8\xbe\x7f\xbb\xaa\xab\x77\x7f\xdf\x7f\xa0\x96\x8a\xab\xff\x64\x3d\x3a\x65\x96\x51\x36\x9d\x71\xce\x79\x49\xcd\x0d\x4f\xdb\x79\xc6\x53\x3a\x7b\xdc\x39\x6b\xe7\xd9\xd9\x13\x77\x35\x75\x6c\x76\x43\x47\xb9\x99\x2f\x16\x65\xf6\x12\xb4\xfb\x8d\xcb\xa3\x70\x91\xb3\xe0\x7c\x02\xc5\x05\xa6\xdf\x95\x94\x2d\x9e\xf6\xf6\x73\xc2\x9a\x36\x39\xcc\x8a\xed\x6d\xc5\xd2\x5f\xd7\x3f\xaf\xab\xfa\x31\xd9\x26\x46\xbb\x88\x81\x2f\xb7\xa3\x42\xd8\xdb\x60\xe9\x91\xa3\xfc\xf4\x15\x74\xc5\xd2\x93\x9c\xe5\xc4\xf2\x93\x3c\x4d\xfe\x05\x00\x00\xff\xff\xa8\xac\xa2\x52\xc8\x03\x00\x00") - -func runtimeSyntaxValaYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxValaYaml, - "runtime/syntax/vala.yaml", - ) -} - -func runtimeSyntaxValaYaml() (*asset, error) { - bytes, err := runtimeSyntaxValaYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/vala.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxVhdlYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x56\xdd\x8e\xdb\x46\x0f\xbd\xf7\x53\x18\xc6\x87\x2f\x52\x16\x72\x93\xcb\x1a\x6d\x85\xdc\xf4\x21\x6a\xb9\x06\x25\x51\x12\x9b\x11\x47\xe0\x70\xfc\x13\xf0\xe1\x8b\x91\xd7\x86\x1d\x64\xd7\x6d\x6f\x76\x2d\x0c\x79\xf8\x77\xe6\x70\x3a\x72\xa8\xe7\x09\x37\xcb\xc3\xd0\xba\xc5\xa2\x45\xc5\x46\x37\xcb\xc5\x72\xb9\x5c\xa6\x43\x86\x11\x37\xcb\x55\x55\xad\x93\x41\xf9\xbf\xd5\x62\x21\xd1\x61\xd8\xcc\x16\xc5\xf2\xe2\xbc\xca\x28\xaf\xaa\x3a\x0b\x2a\xc4\xbd\x11\x2b\xf6\x28\xc6\xa0\x51\xc0\xd9\xe4\x03\x29\x1d\xd0\xb2\xc8\x79\x19\xa8\x67\x6c\x2d\x68\xbb\x8f\xa5\xf3\x3d\x35\xd9\xfe\x80\x8d\x7a\xc9\x4b\xab\x49\xef\xbf\xbc\x77\x08\x6c\xb1\x3c\x7d\xfa\xfc\xad\x34\x10\x81\xb3\x09\x70\x8f\x29\xde\xea\x35\x09\x6a\x91\x95\x3a\x42\x49\xa9\x94\x94\x3b\xaa\x05\xe4\xbc\xdd\x6e\xc2\x04\x0d\x6e\x76\xbb\x97\x2d\x14\xdf\xbe\x14\x7f\xec\x3f\x15\x3f\xef\x5e\xde\x74\x8c\x01\xdf\x70\xaa\xaa\xf5\x3b\x7e\x8d\x1f\x27\xcf\xc8\xfa\xef\x43\x66\x20\xcd\x40\xa9\xed\x51\xd0\x1a\xcf\x1d\xf5\x51\x40\xc9\x73\xfe\x26\xda\xfd\x81\xef\xfe\x43\xd0\xf4\xad\x67\x9b\xa0\xf9\x0a\x3d\xfe\xb3\x40\x14\xde\xc4\x43\x6e\xef\x2d\xb3\xc7\xa2\x5e\x83\xdd\x9a\x64\x93\xf8\x06\x43\xb8\x86\xb7\x1e\x19\x05\xf4\x31\x8f\xbc\xfc\x61\x2d\x41\x41\x71\x44\xd6\xd7\xd0\x89\x77\x50\x07\x83\x66\x86\x84\x4e\x51\x0c\x1c\x41\x30\x70\xce\x80\x5b\x7b\x48\x06\x42\x40\x51\x03\x55\xa1\x3a\xea\x03\x91\x7e\x84\x5d\x63\x4f\x6c\xb5\xf3\xcd\x57\xab\x7d\x7b\xb6\x3a\x76\x1d\x8a\xd5\x31\x58\x03\x01\xef\xca\x7a\x18\x5e\xfa\x0a\x0a\xac\xcf\x02\xb4\x14\x1a\xcf\x8c\x8d\x5a\xeb\x8f\xac\xde\xd0\x05\x4c\x7f\xa8\x33\xe4\xf6\xda\x3e\x3c\xd1\x53\xac\x74\x65\xad\xf3\x62\x5d\xe4\x66\xce\xe2\xda\xda\xcb\x0f\x6a\xac\x8f\x20\x2d\xb6\xcf\x90\xa8\x33\x1a\xa7\xd4\x30\x62\x23\x46\x51\x02\x67\xc4\x3e\xaa\x51\x78\xe6\xed\xa0\x46\x67\xaf\xd7\xd0\x1c\xf1\x3c\x66\x47\x8a\x49\x0f\x9c\xf7\x93\x8d\x30\xd9\xe8\x9f\xe6\xc1\x69\x80\x8c\x47\x63\x3c\xa9\xb1\x17\x63\xaf\xc6\xd1\x39\xf3\x9d\x79\x36\x3f\x21\x9b\x17\xf3\x3a\xa0\x04\xf3\xf1\x69\x93\xae\xac\x9b\xbc\x68\xd2\x26\x4d\xe3\x6b\x2f\xa4\x6c\x53\xc5\x37\x7a\x46\x79\x4a\x8f\x59\x8c\x4c\xb0\xf1\xd2\x9a\x60\x4f\x21\xf1\x4f\xf0\xaf\x34\x4f\xc1\xd1\x04\xe7\x38\x82\x1a\x85\x4d\xbc\x33\xf1\xf2\x0c\x35\xa0\x4b\xfe\x01\x0f\x28\x69\xf6\x61\x00\x49\x9a\x49\x3d\x83\xb3\xe0\xc0\x82\x73\x16\x04\x2c\x88\xb3\x10\xeb\xa4\xc3\xcf\x40\x75\x40\x36\xf5\xa6\x02\x1c\xe6\xa4\x92\x97\x45\x86\xae\xc3\x46\xb1\xb5\xc8\xa4\xc1\x22\x2b\x39\x8b\xe1\x29\xe0\x01\x84\xa0\x76\x68\x47\x20\xb5\x63\x82\x3f\x0e\x89\x81\x47\xd2\xc1\x4e\x69\x58\xa7\xf7\x6b\xfd\x90\xd5\xe9\x0a\x39\xec\xd4\x84\xfa\x41\x6d\xa0\x7e\x30\xe7\x8f\x69\x30\x76\x48\xc5\xc6\xa6\xb1\x29\x55\x9f\xac\x7c\x77\xb1\xf3\x89\x9e\x69\x88\x99\x83\xa0\xfb\xbc\x3c\x80\x8b\x98\xbf\x1d\x27\x93\xd4\xcb\x80\xfb\xbc\xbc\x8c\xcc\x21\xf7\x3a\x18\x84\x06\xb9\x4d\x5b\x0b\x0f\xe9\x0e\x07\x4d\x15\xbd\x03\x14\x68\x9c\x1c\xda\x04\x3a\x18\xcd\x37\xbc\xc1\x7c\x9f\xf6\xe4\xbb\x03\xd5\x76\x3f\x82\x36\x83\x65\x42\x21\x85\xeb\xc0\x39\xe2\x3e\xdf\x63\xdb\xa3\x51\xd8\x9f\x9e\xb4\x5b\xfd\x3e\x8b\x7c\xdd\x9e\x97\x7f\xd7\x4d\x7b\x5d\x90\x41\xdb\xeb\x4e\xbd\x2e\xd1\x07\xd4\xf3\x58\x7b\xb7\xf6\x53\x92\x04\x3f\x8b\x77\x55\xbd\x58\x61\x55\xf5\xd1\x7e\xb2\xff\xdb\x2f\xf6\x9b\xfd\x6a\x55\xb5\xb6\xcd\xad\x05\x57\x1d\x5b\x73\x1c\xeb\x9b\xe2\x7f\xc8\xb6\x9f\x8a\xcf\x3b\x8b\x76\xb2\x6f\x76\x34\x67\x83\x15\xf9\x07\xdb\xd6\xfe\xb4\x2b\xab\xd5\x7c\x0c\x45\xf7\xa5\xf8\xfd\x7b\xa3\x97\x6a\xf5\x3e\x76\x55\xd5\xdb\xcb\xca\xdd\xef\x5e\x32\xdc\x56\x55\xb1\x2b\xb7\xf3\x16\xc8\xcb\x6c\x59\x6e\xbb\x89\xe3\xb8\x2b\x43\x5e\xde\x15\x77\xc3\x4a\xaf\x86\x7b\xda\x4b\xc4\xd4\xed\x47\x3e\x5f\xad\xef\xa5\xc6\x6b\xa2\xb2\xf0\xcc\x06\x91\x24\xa3\x40\xee\x3b\x11\xb8\x85\xb9\x3c\x76\xd2\xe3\x68\xb5\xfd\xb3\x5a\xed\x3e\xde\x97\x35\xbe\xce\xae\x28\xd6\x1f\x57\x8b\xbf\x03\x00\x00\xff\xff\x82\x03\x0d\x07\x67\x09\x00\x00") - -func runtimeSyntaxVhdlYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxVhdlYaml, - "runtime/syntax/vhdl.yaml", - ) -} - -func runtimeSyntaxVhdlYaml() (*asset, error) { - bytes, err := runtimeSyntaxVhdlYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/vhdl.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxViYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x90\xc1\xaa\xdb\x30\x10\x45\xf7\xfe\x0a\xd5\x84\xc6\x4e\x71\x9a\x6d\x0c\xc5\x94\xfe\x45\x25\x35\xc8\xf2\xb8\x15\x95\x46\x46\x92\x8d\x5b\xe6\xe3\x1f\x71\xf2\x92\x60\x08\x64\xf5\x66\x25\x5d\xe9\xce\x9c\xb9\xbd\xb1\x90\xfe\x0d\x50\xb3\xc9\x64\x59\x07\x09\x74\xaa\x33\xc6\x18\x3b\xbf\xa0\x72\x50\xb3\xbc\xf8\x45\x5f\x49\x88\x7d\x59\xc0\x4c\x93\x71\x65\xd0\x9b\xf3\x7d\x32\x2e\xcf\xb2\x30\x5a\x88\x17\x4f\xc5\x4c\x07\x98\x4c\x6f\x20\xd4\x2c\xe7\xdf\xab\x9f\xaa\xfa\x7f\x92\xd7\xc3\xa1\x3a\x9e\xe4\x8e\xf3\x3a\x0e\x4a\x43\x2d\xe5\x8e\x17\xa5\xcc\xaf\xd6\x98\x54\x02\x07\x98\x6a\x96\x0b\xd1\x16\x1c\xa7\x39\x7a\x63\xb5\x6c\x0a\xf4\x01\x68\xc4\xb2\x71\x6a\x20\x8e\x93\x9d\x25\x12\x37\xda\xcb\x06\x3d\x71\x6d\xac\x9f\x66\xc9\x47\x27\x29\x36\x23\xba\x52\x88\xf6\x59\xdf\x88\x3e\x10\x8e\x48\xe8\x28\x42\x22\xd3\x13\x60\x67\x7a\xb2\x90\x68\x44\x0b\xe9\x99\x9b\x7f\xfa\xfc\xed\x86\xab\x3d\xc6\xa4\x30\xed\x71\x74\xed\xb2\xae\x10\x2d\x3f\x54\x47\xf9\x65\xb1\xaf\xbf\xc5\x14\x0c\xfe\xbe\xe4\x74\xae\x98\x54\x58\x90\xf2\xfc\xa6\x01\x76\x2b\x25\xfe\x35\xc3\xd2\x5a\x88\xfd\x5d\x7d\x88\xfc\xbd\x1e\x27\x0d\xa0\x8d\xb2\x3f\xfe\xa8\x70\xb7\xbe\x8a\xb3\x5d\xd3\x6c\x3f\x00\x46\x7b\xb7\x44\xfc\x42\x38\x9b\xf5\x60\xc6\xe5\x4d\xc9\xb2\xb7\x00\x00\x00\xff\xff\x87\xcc\xe5\x31\xd0\x02\x00\x00") - -func runtimeSyntaxViYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxViYaml, - "runtime/syntax/vi.yaml", - ) -} - -func runtimeSyntaxViYaml() (*asset, error) { - bytes, err := runtimeSyntaxViYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/vi.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxXmlYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\xcd\x31\x0b\xc2\x30\x10\x05\xe0\x3d\xbf\xe2\x3c\x44\xb4\x90\xba\xa7\x62\x07\x75\xd6\xc1\x45\xda\x0a\xa5\xbd\x96\x40\x12\x4b\x12\xa1\x42\x7f\xbc\x84\x56\x87\x22\xbe\xf5\xdd\xfb\xae\x91\x8a\xfc\xab\x23\x01\xbd\x56\x8c\xd5\xe4\xa9\xf2\x82\x01\x00\x84\xca\x94\x9a\x04\x60\x9e\xc7\xeb\x5e\xab\xc1\xb5\x5a\xa5\x83\x35\xed\xd0\x29\xe9\xfc\x66\x89\x8c\xd9\xa7\x22\x37\x2e\x38\xc8\x9a\x8c\x97\x8d\x24\x2b\x00\x77\x71\x94\xee\x71\x6a\xaa\x87\xd6\x64\x26\x3a\xc4\xf9\xd2\xfa\x70\xb5\x38\x9e\x0f\xd7\xdb\xe5\x84\xdf\x8a\x4c\x2d\x00\xb3\x6d\xf1\x99\x87\x8c\x7f\x20\x2b\x66\x20\xfc\x10\x39\x9f\x63\x9c\xff\xa1\x5c\x47\x95\x2c\x95\x00\x5c\x65\xf7\xa4\x88\x12\x64\xef\x00\x00\x00\xff\xff\x1f\x6d\x27\xb2\x18\x01\x00\x00") - -func runtimeSyntaxXmlYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxXmlYaml, - "runtime/syntax/xml.yaml", - ) -} - -func runtimeSyntaxXmlYaml() (*asset, error) { - bytes, err := runtimeSyntaxXmlYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/xml.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxXresourcesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\xcf\xdd\x4a\xc3\x30\x18\xc6\xf1\xe3\xe5\x2a\x5e\xc3\x0e\xda\x86\x15\x4f\x7d\x41\xbc\x0d\x21\xcd\x20\xcd\xde\xb2\x40\x3e\x4a\x3e\xd4\x61\x2f\x5e\x6a\xdd\x98\xe8\xf9\xef\xf9\xc3\x33\x59\x47\xe5\x32\x13\xc2\x47\xa2\x1c\x6b\x32\x94\x19\x3b\x51\x21\x53\x10\x18\x00\xc0\x4a\x82\xf6\x84\xc0\x5f\x9b\x13\x4d\xba\xba\x92\x97\x9b\x6e\xf7\x9c\xb1\x54\x1d\x65\xfc\xe6\x07\xc8\x33\x19\xab\x1d\x02\x3f\x4a\x89\xda\x85\xea\x51\x29\x31\x0c\x1d\xff\x11\xf6\x44\xa1\xd8\xc9\x52\xea\xdf\x74\x42\xe0\xc3\xd0\xfd\xa6\x78\xa5\x26\x86\x5c\x74\x28\x7d\xa8\x7e\xa4\xcd\x8e\xf2\xf1\xf0\xb4\xaa\xf1\xaa\xf2\xc5\x8f\xd1\xf5\x71\xa6\xa4\x4b\x5c\x95\xec\xf0\x59\xfd\x89\x8c\x31\xba\x2d\xd1\x94\x54\x69\x99\xb4\xcb\xd4\xde\x85\x4c\xf4\x9e\x42\x41\xe0\xcd\x71\x91\x12\xf3\xac\x0d\xa1\x52\xed\x43\x23\x8f\x9f\xaa\xef\xda\x97\xfd\xed\x45\x58\x6f\x1c\xcc\x59\xa7\xfe\xfd\x6c\x0b\x6d\x18\xf8\xdd\x4e\xfc\xa7\x11\xf8\x4e\x80\x58\x40\xec\x04\x67\x5f\x01\x00\x00\xff\xff\x03\xc7\xb0\x2d\x83\x01\x00\x00") - -func runtimeSyntaxXresourcesYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxXresourcesYaml, - "runtime/syntax/xresources.yaml", - ) -} - -func runtimeSyntaxXresourcesYaml() (*asset, error) { - bytes, err := runtimeSyntaxXresourcesYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/xresources.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxYamlYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x91\x41\x8f\xd3\x30\x10\x85\xef\xfe\x15\x5e\xb3\x4b\x93\xad\x1c\x71\xc5\x07\x50\x85\x5a\x2e\x4b\x2b\xb1\xe5\x50\x32\x89\xe4\xb6\x13\xd6\xc2\x71\x42\xec\x0a\x05\xcd\x8f\x47\x4e\x28\x0d\x5d\x2e\x48\x58\x95\x55\xbd\x89\xdf\x7c\x7a\xaf\x32\x16\x43\xdf\xa2\xe2\xbd\xae\x2d\x63\x47\x0c\x78\x08\x8a\x71\xce\x79\x9c\x39\x5d\xa3\xe2\x02\x20\xeb\xf5\xdb\xda\xde\x8a\x61\xf2\x84\xfa\x88\x9d\xe2\xe2\x6e\xb7\xf8\xf0\x20\x18\xeb\x4e\x16\xfd\xf8\x4a\xf2\xd1\x4f\x24\x25\xf1\xf4\xe6\x26\xd9\x1b\xa7\xbb\x9e\xf6\x4d\x63\xa9\xb2\x8d\x0e\x64\x5c\xa0\x5a\xb7\xe4\x4e\xd6\x52\x13\xff\x79\xfc\x46\x1e\x03\xf9\xd0\xa5\x5c\xfc\xf2\x39\x34\xce\x07\xed\x82\xe2\x11\x60\x9f\xec\x96\x8f\xd4\xa3\xa7\x1d\xf5\xb4\x59\x53\xe3\x68\xfb\xf1\xd3\x92\xb6\xdd\x09\x29\xc4\x6b\xbd\x21\xd7\xd0\x9a\x1c\x6d\x56\x2b\x6a\xaa\x8a\x56\x8b\x87\xc7\x25\xad\xb4\xf5\x48\x55\xbc\x53\x80\xfd\xd9\xdf\x07\x1d\xb0\xc6\xb8\x40\x24\x2a\xcf\x95\x6f\xf5\x01\x55\x51\x10\x40\x4e\x00\x05\x4d\xc5\x79\x4e\x6f\x0a\x2a\x27\xca\xbd\xe4\xe9\xd9\xcb\x1c\xd1\x05\x53\x99\x21\x95\xc9\x37\x39\xc0\xfd\xcb\x22\x5f\xc8\xcf\x5a\xfe\x78\x25\x5f\x17\x73\xf1\x67\x4a\xb9\xcc\x00\xbe\x17\x73\xf5\x37\xaa\x8b\xd8\xe2\xc1\x68\x1b\x93\x48\x4a\x29\x25\x95\x00\xd9\xf8\xa3\x72\x28\x81\xca\xbb\xed\xe2\x7d\x2a\xd8\x55\x78\x99\x0f\x9d\x71\x5f\xc6\x6e\xe2\xf1\x41\x77\xe1\x5c\x0f\x08\xf1\x7b\x80\xee\x18\x9b\x9e\x28\xfe\xab\x69\x87\xf2\x01\xb2\x8b\x3a\xe9\xfa\x7c\xa6\xeb\x46\xd2\x77\x4f\xba\xbb\x3c\xfd\x27\xa6\xd9\x35\xd2\xec\x19\x51\x32\xf8\xa6\x94\xcc\x66\xe9\xff\x01\xab\x87\xc4\x9f\x01\xbd\xb8\x66\xb9\xbd\x5e\xc7\xf3\x82\x31\xf6\x33\x00\x00\xff\xff\xd6\xcd\xd8\x11\x47\x03\x00\x00") - -func runtimeSyntaxYamlYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxYamlYaml, - "runtime/syntax/yaml.yaml", - ) -} - -func runtimeSyntaxYamlYaml() (*asset, error) { - bytes, err := runtimeSyntaxYamlYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/yaml.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxYumYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8f\x4d\x4b\xc4\x30\x10\x40\xcf\x9b\x5f\x31\xc4\x1e\xfa\x41\x83\x57\x03\x8b\x07\xcf\x1e\x3d\x48\x92\x42\x4c\xa7\x34\xd0\xa6\x25\x1f\x4a\x31\x3f\x5e\x5a\x57\x5d\x70\x6f\x03\xf3\x1e\x6f\x66\xb0\x13\xc6\x6d\x45\x0e\x5b\x9a\x09\xe9\x31\xa2\x89\x1c\x08\x00\xc0\xbe\x73\x7a\x46\x0e\x54\x4a\xe6\x71\x5d\x8a\xbc\xa5\x99\xd5\x52\x32\xb3\xb8\xa1\xa0\x84\xf8\x34\x61\xe0\x07\xde\x82\xed\xd1\x45\x3b\x58\xf4\x1c\x68\x27\x04\x0f\xab\x36\xc8\x95\xaa\x45\x77\x56\xf5\x99\x5e\x38\xb3\xb8\x10\xb5\x8b\x2c\xac\x68\xac\x9e\x9e\x46\xfd\xcf\x90\x52\xec\x21\x55\xfc\x48\x21\xea\x88\x33\xba\x78\x9c\x53\x94\x1e\x27\xd4\x01\xdf\xd1\x67\xed\xcd\x98\xdf\x74\xc0\x63\x48\xc9\xf6\xf9\xf5\xe5\x59\xdc\xb7\x0f\xaa\xfa\x6b\xce\x17\xb9\xec\xf2\x55\xa8\xba\x2b\x45\xf7\xa9\x58\x5d\x3d\xfe\xa6\xac\xdb\x1f\x69\xcd\xa8\x3d\xfb\x18\x6d\xc4\x6f\x18\xe8\x95\xd7\xdc\xa2\x39\xd0\x53\x03\x4d\x86\xe6\xd4\x50\xf2\x15\x00\x00\xff\xff\x86\x2c\x1d\xe7\x5c\x01\x00\x00") - -func runtimeSyntaxYumYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxYumYaml, - "runtime/syntax/yum.yaml", - ) -} - -func runtimeSyntaxYumYaml() (*asset, error) { - bytes, err := runtimeSyntaxYumYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/yum.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _runtimeSyntaxZshYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x55\x5d\x6f\x1b\xb7\x12\x7d\xf7\xaf\xd8\xc8\xc6\x8d\x36\xbe\xf2\x4d\x72\x93\xa0\x75\x3f\xd4\x36\x40\xd1\x87\xa2\x2f\x05\xfa\x10\xd3\x6d\x29\x72\x56\x64\x96\x4b\x6e\x38\x43\xcb\x52\x4e\xfe\x7b\xc1\x95\xbf\xaa\x24\x68\x05\xed\x72\xf9\x31\x67\x86\x87\x73\x86\x9d\x0f\x24\xdb\x91\xce\x9b\x1d\xbb\xa3\x23\x4b\x42\x46\xce\x8f\x9a\xa6\x69\xea\x54\xd4\x03\x9d\x37\xb3\xb9\x52\x67\x3b\x76\x27\x50\xea\x6c\x39\xdf\xb1\xa3\x78\x85\xdd\x98\x53\x5d\x83\x1d\xbb\x6c\xb0\x0b\x69\xed\xe3\xd4\xa4\x22\xed\x49\x3b\x9b\x50\x1c\x69\x4b\xf9\xbc\x99\xfd\x7e\xfc\xe8\xec\xc9\xff\xe6\x14\xaf\x9a\xd3\x76\xb9\x63\x37\x6f\x50\x17\x1d\xe5\x12\x88\xf7\x2e\x8f\x8f\x9b\x5f\xca\xb0\xa2\xcc\x53\x77\xd1\x98\x14\x59\x74\x94\xb3\x38\x0d\x9f\x37\x33\xa5\x56\x17\x4f\x17\x5f\x5e\x9e\x2a\xb5\x9a\x1d\x4d\xcb\x26\xbb\xd7\x29\x5a\x2f\x3e\x45\x1d\xb8\xd1\xd1\x56\x53\xc9\x29\x34\x5d\x48\x9b\x1b\x34\x16\x2d\x34\x50\x94\x3d\xce\x5c\x87\x8d\xde\x32\x56\x99\x74\x8f\xd5\x96\x60\x34\x13\xaa\xa1\x8f\x85\x60\x3d\xa7\x4d\x84\x4d\xb0\x29\x12\x28\xf8\x0e\x14\x98\x40\xac\x0d\xe8\xda\x0b\x3a\x8f\x2e\x65\x74\x25\x9a\xea\x1b\xbe\x83\x8f\x08\xc9\xe8\x80\x4c\xda\x22\x93\x94\x1c\xc1\x14\xc8\x08\xd8\xf9\x4e\x20\x8e\x22\xc4\x0f\x84\x12\xc5\x07\x6c\x9c\x0f\xd4\xde\xef\xe7\xef\x81\xce\x95\x7a\x0f\xa5\x3e\x40\xa9\x39\x94\x6a\xa1\xd4\x57\x50\xea\x12\x4a\x5d\xe0\x4f\x28\xa5\x14\x94\x3a\xc1\xd7\xf8\x16\x8f\xf0\x0d\xfe\x03\xa5\x70\x43\xfe\x21\x33\x4d\x17\xf4\xfa\x96\x5b\x1e\xc9\x78\x1d\xce\x9b\xd9\xe2\xe2\x67\x4b\xdd\x3a\x97\xcd\xf5\xe5\x14\xc6\x47\x0b\xe6\xf4\x0e\x91\xb0\x16\x04\xc1\x9a\x10\x08\x8c\x88\x5d\x7b\x70\x0a\x3f\x68\x76\x0b\x1f\x1d\x65\x2f\x64\x3f\x43\xfb\xbc\xc4\x76\xa9\x83\xd7\x8c\x95\x8f\xb6\xa7\x2d\x56\xc5\x07\xf1\x11\xc6\xc2\x92\x09\x3a\x13\xe8\x4a\x07\xd0\x35\x55\xa6\xc7\x94\x05\x6f\xd3\x8a\x11\x48\x30\xa6\xd1\x62\x2c\xec\x2c\x98\x04\x9c\x4a\x36\x84\x9a\xc5\xb5\x5b\x06\xcd\x3d\x4a\x64\x92\xf6\x6e\x33\x53\x70\x6f\x7e\xfd\x69\x31\xed\xa9\xf3\xe6\x26\xb4\x7d\xea\xef\x93\xc1\xda\xc5\x8e\xdd\xc2\xa5\xd4\x43\x17\x49\x21\x69\x0b\xe3\xac\xcf\x30\x69\x18\x7d\xf4\x02\xeb\x33\x63\x6e\x3d\x83\x62\xab\x57\x81\x40\xc6\x25\x31\xa0\xa1\x04\x2d\x84\x31\xfb\x28\x18\x73\x1a\x46\x99\x57\x93\x76\x89\x69\xbf\x4c\x92\x46\xc1\xae\xea\x65\x48\x76\x02\xdf\xb1\x6c\x03\x61\xe3\x28\x1a\x3a\xa4\xf2\x75\x1a\x86\x14\x9b\xe0\x63\xb9\x6e\x4c\x1a\x06\x1d\x2d\x7f\x8e\xd1\x35\xfc\xba\x5d\xea\x4d\x8f\xce\x47\x0b\xa5\x36\xef\x9f\xfe\xf7\xc5\x87\x75\xa6\x11\xbd\x0f\x61\x7a\xe9\x10\xee\x66\x02\x31\x63\xd0\x3d\x61\x9c\xe6\x99\x2c\x44\xe7\x8f\x83\xc8\x54\xc4\x07\xfe\xa7\x08\x56\x9a\xe9\xd5\x0b\xd4\xa6\xd6\x0c\x18\x2d\x30\xce\xa4\x08\xe3\xd6\x79\x84\x71\x43\xaa\x6c\x56\x41\x19\x97\x53\x12\x98\x9e\xcb\x50\xa9\x1d\x60\x46\x18\x1e\x83\x17\x98\x22\xb0\x95\x48\x6b\x61\xbb\xca\x77\x7d\x4c\x0a\x29\x73\xfd\x9a\xc0\x6d\x99\x68\x47\xad\x42\x74\x3d\xea\x68\x6b\x93\xd1\x69\x23\x55\x8d\xba\x8a\xb4\x1b\x04\x5d\x0a\x16\xb5\x02\xc1\x25\x16\x6f\x51\xff\xb5\xa2\x84\x80\xb7\xa9\x2a\xd5\xc7\x1e\xa1\x2a\x76\x3d\x21\x07\xc6\x60\x5f\xd6\xb8\x86\xbe\xfa\x1e\xfa\xce\x77\x09\x43\x1f\x93\xc5\xd0\x0b\x0d\x23\x86\x2b\x44\x6f\x08\x31\x20\x26\x57\x46\xc4\x31\x27\x83\x58\x86\xea\x32\x59\x8c\x9a\x6b\x26\x68\x71\xc6\xf5\x18\x7d\xec\xb7\x18\xf3\x3e\x35\x6a\xc8\xd3\x47\x87\x51\xae\x31\x6e\xec\x54\x27\xa6\x38\x32\xe9\x50\xad\x90\x07\xe4\xa1\xba\xcf\x25\x56\x0a\x99\xde\x61\xce\x4e\x3f\x03\x3b\xfd\xfc\xf9\x8b\xa9\x79\xf9\xaa\x36\xff\xff\x62\xea\xbd\x7c\xf6\xbc\xad\x51\xb3\xcb\x64\xc1\xae\x74\xe0\x40\x34\x82\xab\x72\xf6\xd4\xd6\x23\x03\x8b\x5d\xd5\x49\x91\x2d\x26\x83\x6d\x34\x10\x5d\x1f\x1f\x20\x44\x10\x62\x99\xaa\x53\x2a\x02\x49\xc5\x38\x48\x86\xe4\x42\xf5\x15\x4d\x3d\x1c\x99\x60\x2b\x46\x99\x68\x2b\xf1\xe6\x18\x4a\xf4\xef\x50\xe2\xb4\x9d\xc2\x94\x19\x57\x75\x1f\x1b\x83\x8d\x4b\xf5\xd1\x83\xc7\x96\xf8\x30\xcf\x7e\xbc\x29\xa0\x8d\xa5\xae\xaa\xc6\xa7\x78\x93\x68\xde\x52\x14\xdf\xf9\xfd\x1d\xa2\x14\x9f\xce\x6f\xab\x6d\xed\xb4\xf5\x32\xf8\x7e\xf1\xe6\x8f\x7a\x21\xf0\xa9\x52\x73\xa5\xda\x59\x73\xdc\xcc\x7d\xfb\x00\xff\x37\x9d\x7d\x95\x2b\x7f\x0a\x55\xa9\x13\xa5\xde\x2f\x6f\x91\x1e\x7d\x77\x7c\xf2\x64\xb9\xa8\x80\x1f\x96\xb3\xe6\xf8\x0e\xe9\xc1\x75\xc4\x92\x7d\x5c\x9f\xdf\x38\x68\xaa\x1c\xf2\x24\x85\xd9\xec\x6e\x8c\xa2\x3d\x18\xe1\xde\x8f\x93\x3f\xa5\xce\xee\x47\x1f\xdc\x7f\xb7\xbf\x87\x9e\xf6\x45\xf8\xb5\xd3\xf9\xde\xf4\xdf\x86\xf3\xf8\x30\x9a\xc7\x87\x6e\x9b\x8b\xcb\x7b\xb4\x61\x12\xf4\x47\x28\xc7\x87\x28\x27\x9f\x44\xf9\x2b\x00\x00\xff\xff\x63\xe6\xa7\x7e\x4b\x08\x00\x00") - -func runtimeSyntaxZshYamlBytes() ([]byte, error) { - return bindataRead( - _runtimeSyntaxZshYaml, - "runtime/syntax/zsh.yaml", - ) -} - -func runtimeSyntaxZshYaml() (*asset, error) { - bytes, err := runtimeSyntaxZshYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/syntax/zsh.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -// Asset loads and returns the asset for the given name. -// It returns an error if the asset could not be found or -// could not be loaded. -func Asset(name string) ([]byte, error) { - cannonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[cannonicalName]; ok { - a, err := f() - if err != nil { - return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) - } - return a.bytes, nil - } - return nil, fmt.Errorf("Asset %s not found", name) -} - -// MustAsset is like Asset but panics when Asset would return an error. -// It simplifies safe initialization of global variables. -func MustAsset(name string) []byte { - a, err := Asset(name) - if err != nil { - panic("asset: Asset(" + name + "): " + err.Error()) - } - - return a -} - -// AssetInfo loads and returns the asset info for the given name. -// It returns an error if the asset could not be found or -// could not be loaded. -func AssetInfo(name string) (os.FileInfo, error) { - cannonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[cannonicalName]; ok { - a, err := f() - if err != nil { - return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) - } - return a.info, nil - } - return nil, fmt.Errorf("AssetInfo %s not found", name) -} - -// AssetNames returns the names of the assets. -func AssetNames() []string { - names := make([]string, 0, len(_bindata)) - for name := range _bindata { - names = append(names, name) - } - return names -} - -// _bindata is a table, holding each asset generator, mapped to its name. -var _bindata = map[string]func() (*asset, error){ - "runtime/README.md": runtimeReadmeMd, - "runtime/colorschemes/atom-dark-tc.micro": runtimeColorschemesAtomDarkTcMicro, - "runtime/colorschemes/bubblegum.micro": runtimeColorschemesBubblegumMicro, - "runtime/colorschemes/cmc-16.micro": runtimeColorschemesCmc16Micro, - "runtime/colorschemes/cmc-paper.micro": runtimeColorschemesCmcPaperMicro, - "runtime/colorschemes/cmc-tc.micro": runtimeColorschemesCmcTcMicro, - "runtime/colorschemes/darcula.micro": runtimeColorschemesDarculaMicro, - "runtime/colorschemes/default.micro": runtimeColorschemesDefaultMicro, - "runtime/colorschemes/geany.micro": runtimeColorschemesGeanyMicro, - "runtime/colorschemes/github-tc.micro": runtimeColorschemesGithubTcMicro, - "runtime/colorschemes/gruvbox-tc.micro": runtimeColorschemesGruvboxTcMicro, - "runtime/colorschemes/gruvbox.micro": runtimeColorschemesGruvboxMicro, - "runtime/colorschemes/in_progress/codeblocks-paper.micro": runtimeColorschemesIn_progressCodeblocksPaperMicro, - "runtime/colorschemes/in_progress/codeblocks.micro": runtimeColorschemesIn_progressCodeblocksMicro, - "runtime/colorschemes/in_progress/funky-cactus.micro": runtimeColorschemesIn_progressFunkyCactusMicro, - "runtime/colorschemes/in_progress/gameboy-tc.micro": runtimeColorschemesIn_progressGameboyTcMicro, - "runtime/colorschemes/in_progress/geany-alt-tc.micro": runtimeColorschemesIn_progressGeanyAltTcMicro, - "runtime/colorschemes/in_progress/github.micro": runtimeColorschemesIn_progressGithubMicro, - "runtime/colorschemes/in_progress/mc.micro": runtimeColorschemesIn_progressMcMicro, - "runtime/colorschemes/in_progress/monochrome-paper.micro": runtimeColorschemesIn_progressMonochromePaperMicro, - "runtime/colorschemes/in_progress/monochrome.micro": runtimeColorschemesIn_progressMonochromeMicro, - "runtime/colorschemes/in_progress/nano.micro": runtimeColorschemesIn_progressNanoMicro, - "runtime/colorschemes/in_progress/paper-tc.micro": runtimeColorschemesIn_progressPaperTcMicro, - "runtime/colorschemes/in_progress/paper.micro": runtimeColorschemesIn_progressPaperMicro, - "runtime/colorschemes/in_progress/symbian-tc.micro": runtimeColorschemesIn_progressSymbianTcMicro, - "runtime/colorschemes/material-tc.micro": runtimeColorschemesMaterialTcMicro, - "runtime/colorschemes/monokai.micro": runtimeColorschemesMonokaiMicro, - "runtime/colorschemes/railscast.micro": runtimeColorschemesRailscastMicro, - "runtime/colorschemes/simple.micro": runtimeColorschemesSimpleMicro, - "runtime/colorschemes/solarized-tc.micro": runtimeColorschemesSolarizedTcMicro, - "runtime/colorschemes/solarized.micro": runtimeColorschemesSolarizedMicro, - "runtime/colorschemes/twilight.micro": runtimeColorschemesTwilightMicro, - "runtime/colorschemes/zenburn.micro": runtimeColorschemesZenburnMicro, - "runtime/help/colors.md": runtimeHelpColorsMd, - "runtime/help/commands.md": runtimeHelpCommandsMd, - "runtime/help/defaultkeys.md": runtimeHelpDefaultkeysMd, - "runtime/help/gimmickcolors.md": runtimeHelpGimmickcolorsMd, - "runtime/help/help.md": runtimeHelpHelpMd, - "runtime/help/keybindings.md": runtimeHelpKeybindingsMd, - "runtime/help/options.md": runtimeHelpOptionsMd, - "runtime/help/plugins.md": runtimeHelpPluginsMd, - "runtime/help/tutorial.md": runtimeHelpTutorialMd, - "runtime/plugins/autoclose/autoclose.lua": runtimePluginsAutocloseAutocloseLua, - "runtime/plugins/ftoptions/ftoptions.lua": runtimePluginsFtoptionsFtoptionsLua, - "runtime/plugins/linter/linter.lua": runtimePluginsLinterLinterLua, - "runtime/plugins/literate/README.md": runtimePluginsLiterateReadmeMd, - "runtime/plugins/literate/literate.lua": runtimePluginsLiterateLiterateLua, - "runtime/syntax/LICENSE": runtimeSyntaxLicense, - "runtime/syntax/PowerShell.yaml": runtimeSyntaxPowershellYaml, - "runtime/syntax/README.md": runtimeSyntaxReadmeMd, - "runtime/syntax/ada.yaml": runtimeSyntaxAdaYaml, - "runtime/syntax/apacheconf.yaml": runtimeSyntaxApacheconfYaml, - "runtime/syntax/arduino.yaml": runtimeSyntaxArduinoYaml, - "runtime/syntax/asciidoc.yaml": runtimeSyntaxAsciidocYaml, - "runtime/syntax/asm.yaml": runtimeSyntaxAsmYaml, - "runtime/syntax/ats.yaml": runtimeSyntaxAtsYaml, - "runtime/syntax/awk.yaml": runtimeSyntaxAwkYaml, - "runtime/syntax/c++.yaml": runtimeSyntaxCYaml, - "runtime/syntax/c.yaml": runtimeSyntaxCYaml2, - "runtime/syntax/caddyfile.yaml": runtimeSyntaxCaddyfileYaml, - "runtime/syntax/clojure.yaml": runtimeSyntaxClojureYaml, - "runtime/syntax/cmake.yaml": runtimeSyntaxCmakeYaml, - "runtime/syntax/coffeescript.yaml": runtimeSyntaxCoffeescriptYaml, - "runtime/syntax/colortest.yaml": runtimeSyntaxColortestYaml, - "runtime/syntax/conf.yaml": runtimeSyntaxConfYaml, - "runtime/syntax/conky.yaml": runtimeSyntaxConkyYaml, - "runtime/syntax/cpp.yaml": runtimeSyntaxCppYaml, - "runtime/syntax/crontab.yaml": runtimeSyntaxCrontabYaml, - "runtime/syntax/crystal.yaml": runtimeSyntaxCrystalYaml, - "runtime/syntax/csharp.yaml": runtimeSyntaxCsharpYaml, - "runtime/syntax/css.yaml": runtimeSyntaxCssYaml, - "runtime/syntax/cython.yaml": runtimeSyntaxCythonYaml, - "runtime/syntax/d.yaml": runtimeSyntaxDYaml, - "runtime/syntax/dart.yaml": runtimeSyntaxDartYaml, - "runtime/syntax/dockerfile.yaml": runtimeSyntaxDockerfileYaml, - "runtime/syntax/dot.yaml": runtimeSyntaxDotYaml, - "runtime/syntax/elixir.yaml": runtimeSyntaxElixirYaml, - "runtime/syntax/erb.yaml": runtimeSyntaxErbYaml, - "runtime/syntax/erlang.yaml": runtimeSyntaxErlangYaml, - "runtime/syntax/fish.yaml": runtimeSyntaxFishYaml, - "runtime/syntax/fortran.yaml": runtimeSyntaxFortranYaml, - "runtime/syntax/fsharp.yaml": runtimeSyntaxFsharpYaml, - "runtime/syntax/gdscript.yaml": runtimeSyntaxGdscriptYaml, - "runtime/syntax/gentoo-ebuild.yaml": runtimeSyntaxGentooEbuildYaml, - "runtime/syntax/gentoo-etc-portage.yaml": runtimeSyntaxGentooEtcPortageYaml, - "runtime/syntax/git-commit.yaml": runtimeSyntaxGitCommitYaml, - "runtime/syntax/git-config.yaml": runtimeSyntaxGitConfigYaml, - "runtime/syntax/git-rebase-todo.yaml": runtimeSyntaxGitRebaseTodoYaml, - "runtime/syntax/glsl.yaml": runtimeSyntaxGlslYaml, - "runtime/syntax/go.yaml": runtimeSyntaxGoYaml, - "runtime/syntax/golo.yaml": runtimeSyntaxGoloYaml, - "runtime/syntax/graphql.yaml": runtimeSyntaxGraphqlYaml, - "runtime/syntax/groff.yaml": runtimeSyntaxGroffYaml, - "runtime/syntax/haml.yaml": runtimeSyntaxHamlYaml, - "runtime/syntax/haskell.yaml": runtimeSyntaxHaskellYaml, - "runtime/syntax/html.yaml": runtimeSyntaxHtmlYaml, - "runtime/syntax/html4.yaml": runtimeSyntaxHtml4Yaml, - "runtime/syntax/html5.yaml": runtimeSyntaxHtml5Yaml, - "runtime/syntax/ini.yaml": runtimeSyntaxIniYaml, - "runtime/syntax/inputrc.yaml": runtimeSyntaxInputrcYaml, - "runtime/syntax/java.yaml": runtimeSyntaxJavaYaml, - "runtime/syntax/javascript.yaml": runtimeSyntaxJavascriptYaml, - "runtime/syntax/json.yaml": runtimeSyntaxJsonYaml, - "runtime/syntax/julia.yaml": runtimeSyntaxJuliaYaml, - "runtime/syntax/keymap.yaml": runtimeSyntaxKeymapYaml, - "runtime/syntax/kickstart.yaml": runtimeSyntaxKickstartYaml, - "runtime/syntax/kotlin.yaml": runtimeSyntaxKotlinYaml, - "runtime/syntax/ledger.yaml": runtimeSyntaxLedgerYaml, - "runtime/syntax/lfe.yaml": runtimeSyntaxLfeYaml, - "runtime/syntax/lilypond.yaml": runtimeSyntaxLilypondYaml, - "runtime/syntax/lisp.yaml": runtimeSyntaxLispYaml, - "runtime/syntax/lua.yaml": runtimeSyntaxLuaYaml, - "runtime/syntax/mail.yaml": runtimeSyntaxMailYaml, - "runtime/syntax/makefile.yaml": runtimeSyntaxMakefileYaml, - "runtime/syntax/man.yaml": runtimeSyntaxManYaml, - "runtime/syntax/markdown.yaml": runtimeSyntaxMarkdownYaml, - "runtime/syntax/micro.yaml": runtimeSyntaxMicroYaml, - "runtime/syntax/mpdconf.yaml": runtimeSyntaxMpdconfYaml, - "runtime/syntax/nanorc.yaml": runtimeSyntaxNanorcYaml, - "runtime/syntax/nginx.yaml": runtimeSyntaxNginxYaml, - "runtime/syntax/nim.yaml": runtimeSyntaxNimYaml, - "runtime/syntax/objc.yaml": runtimeSyntaxObjcYaml, - "runtime/syntax/ocaml.yaml": runtimeSyntaxOcamlYaml, - "runtime/syntax/octave.yaml": runtimeSyntaxOctaveYaml, - "runtime/syntax/pascal.yaml": runtimeSyntaxPascalYaml, - "runtime/syntax/patch.yaml": runtimeSyntaxPatchYaml, - "runtime/syntax/peg.yaml": runtimeSyntaxPegYaml, - "runtime/syntax/perl.yaml": runtimeSyntaxPerlYaml, - "runtime/syntax/perl6.yaml": runtimeSyntaxPerl6Yaml, - "runtime/syntax/php.yaml": runtimeSyntaxPhpYaml, - "runtime/syntax/pkg-config.yaml": runtimeSyntaxPkgConfigYaml, - "runtime/syntax/po.yaml": runtimeSyntaxPoYaml, - "runtime/syntax/pony.yaml": runtimeSyntaxPonyYaml, - "runtime/syntax/pov.yaml": runtimeSyntaxPovYaml, - "runtime/syntax/privoxy-action.yaml": runtimeSyntaxPrivoxyActionYaml, - "runtime/syntax/privoxy-config.yaml": runtimeSyntaxPrivoxyConfigYaml, - "runtime/syntax/privoxy-filter.yaml": runtimeSyntaxPrivoxyFilterYaml, - "runtime/syntax/puppet.yaml": runtimeSyntaxPuppetYaml, - "runtime/syntax/python2.yaml": runtimeSyntaxPython2Yaml, - "runtime/syntax/python3.yaml": runtimeSyntaxPython3Yaml, - "runtime/syntax/r.yaml": runtimeSyntaxRYaml, - "runtime/syntax/reST.yaml": runtimeSyntaxRestYaml, - "runtime/syntax/rpmspec.yaml": runtimeSyntaxRpmspecYaml, - "runtime/syntax/ruby.yaml": runtimeSyntaxRubyYaml, - "runtime/syntax/rust.yaml": runtimeSyntaxRustYaml, - "runtime/syntax/scala.yaml": runtimeSyntaxScalaYaml, - "runtime/syntax/sed.yaml": runtimeSyntaxSedYaml, - "runtime/syntax/sh.yaml": runtimeSyntaxShYaml, - "runtime/syntax/sls.yaml": runtimeSyntaxSlsYaml, - "runtime/syntax/solidity.yaml": runtimeSyntaxSolidityYaml, - "runtime/syntax/sql.yaml": runtimeSyntaxSqlYaml, - "runtime/syntax/stata.yaml": runtimeSyntaxStataYaml, - "runtime/syntax/swift.yaml": runtimeSyntaxSwiftYaml, - "runtime/syntax/syntax_checker.go": runtimeSyntaxSyntax_checkerGo, - "runtime/syntax/syntax_converter.go": runtimeSyntaxSyntax_converterGo, - "runtime/syntax/systemd.yaml": runtimeSyntaxSystemdYaml, - "runtime/syntax/tcl.yaml": runtimeSyntaxTclYaml, - "runtime/syntax/tex.yaml": runtimeSyntaxTexYaml, - "runtime/syntax/toml.yaml": runtimeSyntaxTomlYaml, - "runtime/syntax/twig.yaml": runtimeSyntaxTwigYaml, - "runtime/syntax/typescript.yaml": runtimeSyntaxTypescriptYaml, - "runtime/syntax/vala.yaml": runtimeSyntaxValaYaml, - "runtime/syntax/vhdl.yaml": runtimeSyntaxVhdlYaml, - "runtime/syntax/vi.yaml": runtimeSyntaxViYaml, - "runtime/syntax/xml.yaml": runtimeSyntaxXmlYaml, - "runtime/syntax/xresources.yaml": runtimeSyntaxXresourcesYaml, - "runtime/syntax/yaml.yaml": runtimeSyntaxYamlYaml, - "runtime/syntax/yum.yaml": runtimeSyntaxYumYaml, - "runtime/syntax/zsh.yaml": runtimeSyntaxZshYaml, -} - -// AssetDir returns the file names below a certain -// directory embedded in the file by go-bindata. -// For example if you run go-bindata on data/... and data contains the -// following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png -// then AssetDir("data") would return []string{"foo.txt", "img"} -// AssetDir("data/img") would return []string{"a.png", "b.png"} -// AssetDir("foo.txt") and AssetDir("notexist") would return an error -// AssetDir("") will return []string{"data"}. -func AssetDir(name string) ([]string, error) { - node := _bintree - if len(name) != 0 { - cannonicalName := strings.Replace(name, "\\", "/", -1) - pathList := strings.Split(cannonicalName, "/") - for _, p := range pathList { - node = node.Children[p] - if node == nil { - return nil, fmt.Errorf("Asset %s not found", name) - } - } - } - if node.Func != nil { - return nil, fmt.Errorf("Asset %s not found", name) - } - rv := make([]string, 0, len(node.Children)) - for childName := range node.Children { - rv = append(rv, childName) - } - return rv, nil -} - -type bintree struct { - Func func() (*asset, error) - Children map[string]*bintree -} - -var _bintree = &bintree{nil, map[string]*bintree{ - "runtime": &bintree{nil, map[string]*bintree{ - "README.md": &bintree{runtimeReadmeMd, map[string]*bintree{}}, - "colorschemes": &bintree{nil, map[string]*bintree{ - "atom-dark-tc.micro": &bintree{runtimeColorschemesAtomDarkTcMicro, map[string]*bintree{}}, - "bubblegum.micro": &bintree{runtimeColorschemesBubblegumMicro, map[string]*bintree{}}, - "cmc-16.micro": &bintree{runtimeColorschemesCmc16Micro, map[string]*bintree{}}, - "cmc-paper.micro": &bintree{runtimeColorschemesCmcPaperMicro, map[string]*bintree{}}, - "cmc-tc.micro": &bintree{runtimeColorschemesCmcTcMicro, map[string]*bintree{}}, - "darcula.micro": &bintree{runtimeColorschemesDarculaMicro, map[string]*bintree{}}, - "default.micro": &bintree{runtimeColorschemesDefaultMicro, map[string]*bintree{}}, - "geany.micro": &bintree{runtimeColorschemesGeanyMicro, map[string]*bintree{}}, - "github-tc.micro": &bintree{runtimeColorschemesGithubTcMicro, map[string]*bintree{}}, - "gruvbox-tc.micro": &bintree{runtimeColorschemesGruvboxTcMicro, map[string]*bintree{}}, - "gruvbox.micro": &bintree{runtimeColorschemesGruvboxMicro, map[string]*bintree{}}, - "in_progress": &bintree{nil, map[string]*bintree{ - "codeblocks-paper.micro": &bintree{runtimeColorschemesIn_progressCodeblocksPaperMicro, map[string]*bintree{}}, - "codeblocks.micro": &bintree{runtimeColorschemesIn_progressCodeblocksMicro, map[string]*bintree{}}, - "funky-cactus.micro": &bintree{runtimeColorschemesIn_progressFunkyCactusMicro, map[string]*bintree{}}, - "gameboy-tc.micro": &bintree{runtimeColorschemesIn_progressGameboyTcMicro, map[string]*bintree{}}, - "geany-alt-tc.micro": &bintree{runtimeColorschemesIn_progressGeanyAltTcMicro, map[string]*bintree{}}, - "github.micro": &bintree{runtimeColorschemesIn_progressGithubMicro, map[string]*bintree{}}, - "mc.micro": &bintree{runtimeColorschemesIn_progressMcMicro, map[string]*bintree{}}, - "monochrome-paper.micro": &bintree{runtimeColorschemesIn_progressMonochromePaperMicro, map[string]*bintree{}}, - "monochrome.micro": &bintree{runtimeColorschemesIn_progressMonochromeMicro, map[string]*bintree{}}, - "nano.micro": &bintree{runtimeColorschemesIn_progressNanoMicro, map[string]*bintree{}}, - "paper-tc.micro": &bintree{runtimeColorschemesIn_progressPaperTcMicro, map[string]*bintree{}}, - "paper.micro": &bintree{runtimeColorschemesIn_progressPaperMicro, map[string]*bintree{}}, - "symbian-tc.micro": &bintree{runtimeColorschemesIn_progressSymbianTcMicro, map[string]*bintree{}}, - }}, - "material-tc.micro": &bintree{runtimeColorschemesMaterialTcMicro, map[string]*bintree{}}, - "monokai.micro": &bintree{runtimeColorschemesMonokaiMicro, map[string]*bintree{}}, - "railscast.micro": &bintree{runtimeColorschemesRailscastMicro, map[string]*bintree{}}, - "simple.micro": &bintree{runtimeColorschemesSimpleMicro, map[string]*bintree{}}, - "solarized-tc.micro": &bintree{runtimeColorschemesSolarizedTcMicro, map[string]*bintree{}}, - "solarized.micro": &bintree{runtimeColorschemesSolarizedMicro, map[string]*bintree{}}, - "twilight.micro": &bintree{runtimeColorschemesTwilightMicro, map[string]*bintree{}}, - "zenburn.micro": &bintree{runtimeColorschemesZenburnMicro, map[string]*bintree{}}, - }}, - "help": &bintree{nil, map[string]*bintree{ - "colors.md": &bintree{runtimeHelpColorsMd, map[string]*bintree{}}, - "commands.md": &bintree{runtimeHelpCommandsMd, map[string]*bintree{}}, - "defaultkeys.md": &bintree{runtimeHelpDefaultkeysMd, map[string]*bintree{}}, - "gimmickcolors.md": &bintree{runtimeHelpGimmickcolorsMd, map[string]*bintree{}}, - "help.md": &bintree{runtimeHelpHelpMd, map[string]*bintree{}}, - "keybindings.md": &bintree{runtimeHelpKeybindingsMd, map[string]*bintree{}}, - "options.md": &bintree{runtimeHelpOptionsMd, map[string]*bintree{}}, - "plugins.md": &bintree{runtimeHelpPluginsMd, map[string]*bintree{}}, - "tutorial.md": &bintree{runtimeHelpTutorialMd, map[string]*bintree{}}, - }}, - "plugins": &bintree{nil, map[string]*bintree{ - "autoclose": &bintree{nil, map[string]*bintree{ - "autoclose.lua": &bintree{runtimePluginsAutocloseAutocloseLua, map[string]*bintree{}}, - }}, - "ftoptions": &bintree{nil, map[string]*bintree{ - "ftoptions.lua": &bintree{runtimePluginsFtoptionsFtoptionsLua, map[string]*bintree{}}, - }}, - "linter": &bintree{nil, map[string]*bintree{ - "linter.lua": &bintree{runtimePluginsLinterLinterLua, map[string]*bintree{}}, - }}, - "literate": &bintree{nil, map[string]*bintree{ - "README.md": &bintree{runtimePluginsLiterateReadmeMd, map[string]*bintree{}}, - "literate.lua": &bintree{runtimePluginsLiterateLiterateLua, map[string]*bintree{}}, - }}, - }}, - "syntax": &bintree{nil, map[string]*bintree{ - "LICENSE": &bintree{runtimeSyntaxLicense, map[string]*bintree{}}, - "PowerShell.yaml": &bintree{runtimeSyntaxPowershellYaml, map[string]*bintree{}}, - "README.md": &bintree{runtimeSyntaxReadmeMd, map[string]*bintree{}}, - "ada.yaml": &bintree{runtimeSyntaxAdaYaml, map[string]*bintree{}}, - "apacheconf.yaml": &bintree{runtimeSyntaxApacheconfYaml, map[string]*bintree{}}, - "arduino.yaml": &bintree{runtimeSyntaxArduinoYaml, map[string]*bintree{}}, - "asciidoc.yaml": &bintree{runtimeSyntaxAsciidocYaml, map[string]*bintree{}}, - "asm.yaml": &bintree{runtimeSyntaxAsmYaml, map[string]*bintree{}}, - "ats.yaml": &bintree{runtimeSyntaxAtsYaml, map[string]*bintree{}}, - "awk.yaml": &bintree{runtimeSyntaxAwkYaml, map[string]*bintree{}}, - "c++.yaml": &bintree{runtimeSyntaxCYaml, map[string]*bintree{}}, - "c.yaml": &bintree{runtimeSyntaxCYaml2, map[string]*bintree{}}, - "caddyfile.yaml": &bintree{runtimeSyntaxCaddyfileYaml, map[string]*bintree{}}, - "clojure.yaml": &bintree{runtimeSyntaxClojureYaml, map[string]*bintree{}}, - "cmake.yaml": &bintree{runtimeSyntaxCmakeYaml, map[string]*bintree{}}, - "coffeescript.yaml": &bintree{runtimeSyntaxCoffeescriptYaml, map[string]*bintree{}}, - "colortest.yaml": &bintree{runtimeSyntaxColortestYaml, map[string]*bintree{}}, - "conf.yaml": &bintree{runtimeSyntaxConfYaml, map[string]*bintree{}}, - "conky.yaml": &bintree{runtimeSyntaxConkyYaml, map[string]*bintree{}}, - "cpp.yaml": &bintree{runtimeSyntaxCppYaml, map[string]*bintree{}}, - "crontab.yaml": &bintree{runtimeSyntaxCrontabYaml, map[string]*bintree{}}, - "crystal.yaml": &bintree{runtimeSyntaxCrystalYaml, map[string]*bintree{}}, - "csharp.yaml": &bintree{runtimeSyntaxCsharpYaml, map[string]*bintree{}}, - "css.yaml": &bintree{runtimeSyntaxCssYaml, map[string]*bintree{}}, - "cython.yaml": &bintree{runtimeSyntaxCythonYaml, map[string]*bintree{}}, - "d.yaml": &bintree{runtimeSyntaxDYaml, map[string]*bintree{}}, - "dart.yaml": &bintree{runtimeSyntaxDartYaml, map[string]*bintree{}}, - "dockerfile.yaml": &bintree{runtimeSyntaxDockerfileYaml, map[string]*bintree{}}, - "dot.yaml": &bintree{runtimeSyntaxDotYaml, map[string]*bintree{}}, - "elixir.yaml": &bintree{runtimeSyntaxElixirYaml, map[string]*bintree{}}, - "erb.yaml": &bintree{runtimeSyntaxErbYaml, map[string]*bintree{}}, - "erlang.yaml": &bintree{runtimeSyntaxErlangYaml, map[string]*bintree{}}, - "fish.yaml": &bintree{runtimeSyntaxFishYaml, map[string]*bintree{}}, - "fortran.yaml": &bintree{runtimeSyntaxFortranYaml, map[string]*bintree{}}, - "fsharp.yaml": &bintree{runtimeSyntaxFsharpYaml, map[string]*bintree{}}, - "gdscript.yaml": &bintree{runtimeSyntaxGdscriptYaml, map[string]*bintree{}}, - "gentoo-ebuild.yaml": &bintree{runtimeSyntaxGentooEbuildYaml, map[string]*bintree{}}, - "gentoo-etc-portage.yaml": &bintree{runtimeSyntaxGentooEtcPortageYaml, map[string]*bintree{}}, - "git-commit.yaml": &bintree{runtimeSyntaxGitCommitYaml, map[string]*bintree{}}, - "git-config.yaml": &bintree{runtimeSyntaxGitConfigYaml, map[string]*bintree{}}, - "git-rebase-todo.yaml": &bintree{runtimeSyntaxGitRebaseTodoYaml, map[string]*bintree{}}, - "glsl.yaml": &bintree{runtimeSyntaxGlslYaml, map[string]*bintree{}}, - "go.yaml": &bintree{runtimeSyntaxGoYaml, map[string]*bintree{}}, - "golo.yaml": &bintree{runtimeSyntaxGoloYaml, map[string]*bintree{}}, - "graphql.yaml": &bintree{runtimeSyntaxGraphqlYaml, map[string]*bintree{}}, - "groff.yaml": &bintree{runtimeSyntaxGroffYaml, map[string]*bintree{}}, - "haml.yaml": &bintree{runtimeSyntaxHamlYaml, map[string]*bintree{}}, - "haskell.yaml": &bintree{runtimeSyntaxHaskellYaml, map[string]*bintree{}}, - "html.yaml": &bintree{runtimeSyntaxHtmlYaml, map[string]*bintree{}}, - "html4.yaml": &bintree{runtimeSyntaxHtml4Yaml, map[string]*bintree{}}, - "html5.yaml": &bintree{runtimeSyntaxHtml5Yaml, map[string]*bintree{}}, - "ini.yaml": &bintree{runtimeSyntaxIniYaml, map[string]*bintree{}}, - "inputrc.yaml": &bintree{runtimeSyntaxInputrcYaml, map[string]*bintree{}}, - "java.yaml": &bintree{runtimeSyntaxJavaYaml, map[string]*bintree{}}, - "javascript.yaml": &bintree{runtimeSyntaxJavascriptYaml, map[string]*bintree{}}, - "json.yaml": &bintree{runtimeSyntaxJsonYaml, map[string]*bintree{}}, - "julia.yaml": &bintree{runtimeSyntaxJuliaYaml, map[string]*bintree{}}, - "keymap.yaml": &bintree{runtimeSyntaxKeymapYaml, map[string]*bintree{}}, - "kickstart.yaml": &bintree{runtimeSyntaxKickstartYaml, map[string]*bintree{}}, - "kotlin.yaml": &bintree{runtimeSyntaxKotlinYaml, map[string]*bintree{}}, - "ledger.yaml": &bintree{runtimeSyntaxLedgerYaml, map[string]*bintree{}}, - "lfe.yaml": &bintree{runtimeSyntaxLfeYaml, map[string]*bintree{}}, - "lilypond.yaml": &bintree{runtimeSyntaxLilypondYaml, map[string]*bintree{}}, - "lisp.yaml": &bintree{runtimeSyntaxLispYaml, map[string]*bintree{}}, - "lua.yaml": &bintree{runtimeSyntaxLuaYaml, map[string]*bintree{}}, - "mail.yaml": &bintree{runtimeSyntaxMailYaml, map[string]*bintree{}}, - "makefile.yaml": &bintree{runtimeSyntaxMakefileYaml, map[string]*bintree{}}, - "man.yaml": &bintree{runtimeSyntaxManYaml, map[string]*bintree{}}, - "markdown.yaml": &bintree{runtimeSyntaxMarkdownYaml, map[string]*bintree{}}, - "micro.yaml": &bintree{runtimeSyntaxMicroYaml, map[string]*bintree{}}, - "mpdconf.yaml": &bintree{runtimeSyntaxMpdconfYaml, map[string]*bintree{}}, - "nanorc.yaml": &bintree{runtimeSyntaxNanorcYaml, map[string]*bintree{}}, - "nginx.yaml": &bintree{runtimeSyntaxNginxYaml, map[string]*bintree{}}, - "nim.yaml": &bintree{runtimeSyntaxNimYaml, map[string]*bintree{}}, - "objc.yaml": &bintree{runtimeSyntaxObjcYaml, map[string]*bintree{}}, - "ocaml.yaml": &bintree{runtimeSyntaxOcamlYaml, map[string]*bintree{}}, - "octave.yaml": &bintree{runtimeSyntaxOctaveYaml, map[string]*bintree{}}, - "pascal.yaml": &bintree{runtimeSyntaxPascalYaml, map[string]*bintree{}}, - "patch.yaml": &bintree{runtimeSyntaxPatchYaml, map[string]*bintree{}}, - "peg.yaml": &bintree{runtimeSyntaxPegYaml, map[string]*bintree{}}, - "perl.yaml": &bintree{runtimeSyntaxPerlYaml, map[string]*bintree{}}, - "perl6.yaml": &bintree{runtimeSyntaxPerl6Yaml, map[string]*bintree{}}, - "php.yaml": &bintree{runtimeSyntaxPhpYaml, map[string]*bintree{}}, - "pkg-config.yaml": &bintree{runtimeSyntaxPkgConfigYaml, map[string]*bintree{}}, - "po.yaml": &bintree{runtimeSyntaxPoYaml, map[string]*bintree{}}, - "pony.yaml": &bintree{runtimeSyntaxPonyYaml, map[string]*bintree{}}, - "pov.yaml": &bintree{runtimeSyntaxPovYaml, map[string]*bintree{}}, - "privoxy-action.yaml": &bintree{runtimeSyntaxPrivoxyActionYaml, map[string]*bintree{}}, - "privoxy-config.yaml": &bintree{runtimeSyntaxPrivoxyConfigYaml, map[string]*bintree{}}, - "privoxy-filter.yaml": &bintree{runtimeSyntaxPrivoxyFilterYaml, map[string]*bintree{}}, - "puppet.yaml": &bintree{runtimeSyntaxPuppetYaml, map[string]*bintree{}}, - "python2.yaml": &bintree{runtimeSyntaxPython2Yaml, map[string]*bintree{}}, - "python3.yaml": &bintree{runtimeSyntaxPython3Yaml, map[string]*bintree{}}, - "r.yaml": &bintree{runtimeSyntaxRYaml, map[string]*bintree{}}, - "reST.yaml": &bintree{runtimeSyntaxRestYaml, map[string]*bintree{}}, - "rpmspec.yaml": &bintree{runtimeSyntaxRpmspecYaml, map[string]*bintree{}}, - "ruby.yaml": &bintree{runtimeSyntaxRubyYaml, map[string]*bintree{}}, - "rust.yaml": &bintree{runtimeSyntaxRustYaml, map[string]*bintree{}}, - "scala.yaml": &bintree{runtimeSyntaxScalaYaml, map[string]*bintree{}}, - "sed.yaml": &bintree{runtimeSyntaxSedYaml, map[string]*bintree{}}, - "sh.yaml": &bintree{runtimeSyntaxShYaml, map[string]*bintree{}}, - "sls.yaml": &bintree{runtimeSyntaxSlsYaml, map[string]*bintree{}}, - "solidity.yaml": &bintree{runtimeSyntaxSolidityYaml, map[string]*bintree{}}, - "sql.yaml": &bintree{runtimeSyntaxSqlYaml, map[string]*bintree{}}, - "stata.yaml": &bintree{runtimeSyntaxStataYaml, map[string]*bintree{}}, - "swift.yaml": &bintree{runtimeSyntaxSwiftYaml, map[string]*bintree{}}, - "syntax_checker.go": &bintree{runtimeSyntaxSyntax_checkerGo, map[string]*bintree{}}, - "syntax_converter.go": &bintree{runtimeSyntaxSyntax_converterGo, map[string]*bintree{}}, - "systemd.yaml": &bintree{runtimeSyntaxSystemdYaml, map[string]*bintree{}}, - "tcl.yaml": &bintree{runtimeSyntaxTclYaml, map[string]*bintree{}}, - "tex.yaml": &bintree{runtimeSyntaxTexYaml, map[string]*bintree{}}, - "toml.yaml": &bintree{runtimeSyntaxTomlYaml, map[string]*bintree{}}, - "twig.yaml": &bintree{runtimeSyntaxTwigYaml, map[string]*bintree{}}, - "typescript.yaml": &bintree{runtimeSyntaxTypescriptYaml, map[string]*bintree{}}, - "vala.yaml": &bintree{runtimeSyntaxValaYaml, map[string]*bintree{}}, - "vhdl.yaml": &bintree{runtimeSyntaxVhdlYaml, map[string]*bintree{}}, - "vi.yaml": &bintree{runtimeSyntaxViYaml, map[string]*bintree{}}, - "xml.yaml": &bintree{runtimeSyntaxXmlYaml, map[string]*bintree{}}, - "xresources.yaml": &bintree{runtimeSyntaxXresourcesYaml, map[string]*bintree{}}, - "yaml.yaml": &bintree{runtimeSyntaxYamlYaml, map[string]*bintree{}}, - "yum.yaml": &bintree{runtimeSyntaxYumYaml, map[string]*bintree{}}, - "zsh.yaml": &bintree{runtimeSyntaxZshYaml, map[string]*bintree{}}, - }}, - }}, -}} - -// RestoreAsset restores an asset under the given directory -func RestoreAsset(dir, name string) error { - data, err := Asset(name) - if err != nil { - return err - } - info, err := AssetInfo(name) - if err != nil { - return err - } - err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755)) - if err != nil { - return err - } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) - if err != nil { - return err - } - err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) - if err != nil { - return err - } - return nil -} - -// RestoreAssets restores an asset under the given directory recursively -func RestoreAssets(dir, name string) error { - children, err := AssetDir(name) - // File - if err != nil { - return RestoreAsset(dir, name) - } - // Dir - for _, child := range children { - err = RestoreAssets(dir, filepath.Join(name, child)) - if err != nil { - return err - } - } - return nil -} - -func _filePath(dir, name string) string { - cannonicalName := strings.Replace(name, "\\", "/", -1) - return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) -} diff --git a/cmd/micro/screen/screen.go b/cmd/micro/screen/screen.go new file mode 100644 index 00000000..0266a0f9 --- /dev/null +++ b/cmd/micro/screen/screen.go @@ -0,0 +1,67 @@ +package screen + +import ( + "fmt" + "os" + + "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/cmd/micro/terminfo" + "github.com/zyedidia/tcell" +) + +var Screen tcell.Screen + +// Init creates and initializes the tcell screen +func Init() { + // Should we enable true color? + truecolor := os.Getenv("MICRO_TRUECOLOR") == "1" + + tcelldb := os.Getenv("TCELLDB") + os.Setenv("TCELLDB", config.ConfigDir+"/.tcelldb") + + // In order to enable true color, we have to set the TERM to `xterm-truecolor` when + // initializing tcell, but after that, we can set the TERM back to whatever it was + oldTerm := os.Getenv("TERM") + if truecolor { + os.Setenv("TERM", "xterm-truecolor") + } + + // Initilize tcell + var err error + Screen, err = tcell.NewScreen() + if err != nil { + if err == tcell.ErrTermNotFound { + err = terminfo.WriteDB(config.ConfigDir + "/.tcelldb") + if err != nil { + fmt.Println(err) + fmt.Println("Fatal: Micro could not create terminal database file", config.ConfigDir+"/.tcelldb") + os.Exit(1) + } + Screen, err = tcell.NewScreen() + if err != nil { + fmt.Println(err) + fmt.Println("Fatal: Micro could not initialize a screen.") + os.Exit(1) + } + } else { + fmt.Println(err) + fmt.Println("Fatal: Micro could not initialize a screen.") + os.Exit(1) + } + } + if err = Screen.Init(); err != nil { + fmt.Println(err) + os.Exit(1) + } + + // Now we can put the TERM back to what it was before + if truecolor { + os.Setenv("TERM", oldTerm) + } + + if config.GetGlobalOption("mouse").(bool) { + Screen.EnableMouse() + } + + os.Setenv("TCELLDB", tcelldb) +} diff --git a/cmd/micro/statusline.go b/cmd/micro/statusline.go index e9062985..03df5601 100644 --- a/cmd/micro/statusline.go +++ b/cmd/micro/statusline.go @@ -7,6 +7,10 @@ import ( "regexp" "strconv" "unicode/utf8" + + "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/cmd/micro/screen" ) // StatusLine represents the information line at the bottom @@ -16,7 +20,7 @@ import ( type StatusLine struct { FormatLeft string FormatRight string - Info map[string]func(*Buffer) string + Info map[string]func(*buffer.Buffer) string win *Window } @@ -29,20 +33,20 @@ func NewStatusLine(win *Window) *StatusLine { // s.FormatLeft = "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat)" s.FormatLeft = "$(filename) $(modified)(line,col) $(opt:filetype) $(opt:fileformat)" s.FormatRight = "$(bind:ToggleKeyMenu): show bindings, $(bind:ToggleHelp): open help" - s.Info = map[string]func(*Buffer) string{ - "filename": func(b *Buffer) string { + s.Info = map[string]func(*buffer.Buffer) string{ + "filename": func(b *buffer.Buffer) string { if b.Settings["basename"].(bool) { return path.Base(b.GetName()) } return b.GetName() }, - "line": func(b *Buffer) string { + "line": func(b *buffer.Buffer) string { return strconv.Itoa(b.GetActiveCursor().Y) }, - "col": func(b *Buffer) string { + "col": func(b *buffer.Buffer) string { return strconv.Itoa(b.GetActiveCursor().X) }, - "modified": func(b *Buffer) string { + "modified": func(b *buffer.Buffer) string { if b.Modified() { return "+ " } @@ -71,7 +75,7 @@ func (s *StatusLine) Display() { // } // We'll draw the line at the lowest line in the window - y := s.win.Height + s.win.Y + y := s.win.Height + s.win.Y - 1 formatter := func(match []byte) []byte { name := match[2 : len(match)-1] @@ -79,8 +83,13 @@ func (s *StatusLine) Display() { option := name[4:] return []byte(fmt.Sprint(s.FindOpt(string(option)))) } else if bytes.HasPrefix(name, []byte("bind")) { - // TODO: status line bindings - return []byte("TODO") + binding := string(name[5:]) + for k, v := range bindings { + if v == binding { + return []byte(k) + } + } + return []byte("null") } else { return []byte(s.Info[string(name)](s.win.Buf)) } @@ -91,8 +100,8 @@ func (s *StatusLine) Display() { rightText := []byte(s.FormatRight) rightText = formatParser.ReplaceAllFunc([]byte(s.FormatRight), formatter) - statusLineStyle := defStyle.Reverse(true) - if style, ok := colorscheme["statusline"]; ok { + statusLineStyle := config.DefStyle.Reverse(true) + if style, ok := config.Colorscheme["statusline"]; ok { statusLineStyle = style } @@ -104,13 +113,13 @@ func (s *StatusLine) Display() { if x < leftLen { r, size := utf8.DecodeRune(leftText) leftText = leftText[size:] - screen.SetContent(winX+x, y, r, nil, statusLineStyle) + screen.Screen.SetContent(winX+x, y, r, nil, statusLineStyle) } else if x >= s.win.Width-rightLen && x < rightLen+s.win.Width-rightLen { r, size := utf8.DecodeRune(rightText) rightText = rightText[size:] - screen.SetContent(winX+x, y, r, nil, statusLineStyle) + screen.Screen.SetContent(winX+x, y, r, nil, statusLineStyle) } else { - screen.SetContent(winX+x, y, ' ', nil, statusLineStyle) + screen.Screen.SetContent(winX+x, y, ' ', nil, statusLineStyle) } } } diff --git a/cmd/micro/message.go b/cmd/micro/util/message.go similarity index 77% rename from cmd/micro/message.go rename to cmd/micro/util/message.go index 1c660fca..589dbbcd 100644 --- a/cmd/micro/message.go +++ b/cmd/micro/util/message.go @@ -1,23 +1,25 @@ -package main +package util import ( "bufio" "fmt" "os" "strconv" + + "github.com/zyedidia/micro/cmd/micro/screen" ) // TermMessage sends a message to the user in the terminal. This usually occurs before // micro has been fully initialized -- ie if there is an error in the syntax highlighting // regular expressions -// The function must be called when the screen is not initialized +// The function must be called when the Screen is not initialized // This will write the message, and wait for the user // to press and key to continue func TermMessage(msg ...interface{}) { - screenWasNil := screen == nil + screenWasNil := screen.Screen == nil if !screenWasNil { - screen.Fini() - screen = nil + screen.Screen.Fini() + screen.Screen = nil } fmt.Println(msg...) @@ -27,7 +29,7 @@ func TermMessage(msg ...interface{}) { reader.ReadString('\n') if !screenWasNil { - InitScreen() + screen.Init() } } diff --git a/cmd/micro/profile.go b/cmd/micro/util/profile.go similarity index 61% rename from cmd/micro/profile.go rename to cmd/micro/util/profile.go index 86ac558f..dad8ad48 100644 --- a/cmd/micro/profile.go +++ b/cmd/micro/util/profile.go @@ -1,8 +1,10 @@ -package main +package util import ( "fmt" + "log" "runtime" + "time" humanize "github.com/dustin/go-humanize" ) @@ -12,3 +14,15 @@ func GetMemStats() string { runtime.ReadMemStats(&memstats) return fmt.Sprintf("Alloc: %s, Sys: %s, GC: %d, PauseTotalNs: %dns", humanize.Bytes(memstats.Alloc), humanize.Bytes(memstats.Sys), memstats.NumGC, memstats.PauseTotalNs) } + +var start time.Time + +func tic(s string) { + log.Println("START:", s) + start = time.Now() +} + +func toc() { + end := time.Now() + log.Println("END: ElapsedTime in seconds:", end.Sub(start)) +} diff --git a/cmd/micro/util.go b/cmd/micro/util/util.go similarity index 95% rename from cmd/micro/util.go rename to cmd/micro/util/util.go index b4315220..b4dda124 100644 --- a/cmd/micro/util.go +++ b/cmd/micro/util/util.go @@ -1,9 +1,10 @@ -package main +package util import ( "errors" "os" "os/user" + "path/filepath" "regexp" "strings" "time" @@ -213,3 +214,9 @@ func GetModTime(path string) (time.Time, error) { } return info.ModTime(), nil } + +// EscapePath replaces every path separator in a given path with a % +func EscapePath(path string) string { + path = filepath.ToSlash(path) + return strings.Replace(path, "/", "%", -1) +} diff --git a/cmd/micro/util_test.go b/cmd/micro/util/util_test.go similarity index 98% rename from cmd/micro/util_test.go rename to cmd/micro/util/util_test.go index 0f900db9..a1d59296 100644 --- a/cmd/micro/util_test.go +++ b/cmd/micro/util/util_test.go @@ -1,4 +1,4 @@ -package main +package util import ( "testing" diff --git a/cmd/micro/window.go b/cmd/micro/window.go index 4a14aed9..21489598 100644 --- a/cmd/micro/window.go +++ b/cmd/micro/window.go @@ -5,6 +5,10 @@ import ( "unicode/utf8" runewidth "github.com/mattn/go-runewidth" + "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/cmd/micro/util" "github.com/zyedidia/tcell" ) @@ -23,12 +27,12 @@ type Window struct { StartCol int // Buffer being shown in this window - Buf *Buffer + Buf *buffer.Buffer sline *StatusLine } -func NewWindow(x, y, width, height int, buf *Buffer) *Window { +func NewWindow(x, y, width, height int, buf *buffer.Buffer) *Window { w := new(Window) w.X, w.Y, w.Width, w.Height, w.Buf = x, y, width, height, buf @@ -37,40 +41,48 @@ func NewWindow(x, y, width, height int, buf *Buffer) *Window { return w } -func (w *Window) DrawLineNum(lineNumStyle tcell.Style, softwrapped bool, maxLineNumLength int, vloc *Loc, bloc *Loc) { +func (w *Window) Clear() { + for y := 0; y < w.Height; y++ { + for x := 0; x < w.Width; x++ { + screen.Screen.SetContent(w.X+x, w.Y+y, ' ', nil, config.DefStyle) + } + } +} + +func (w *Window) DrawLineNum(lineNumStyle tcell.Style, softwrapped bool, maxLineNumLength int, vloc *buffer.Loc, bloc *buffer.Loc) { lineNum := strconv.Itoa(bloc.Y + 1) // Write the spaces before the line number if necessary for i := 0; i < maxLineNumLength-len(lineNum); i++ { - screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ' ', nil, lineNumStyle) + screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ' ', nil, lineNumStyle) vloc.X++ } // Write the actual line number for _, ch := range lineNum { if softwrapped { - screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ' ', nil, lineNumStyle) + screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ' ', nil, lineNumStyle) } else { - screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ch, nil, lineNumStyle) + screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ch, nil, lineNumStyle) } vloc.X++ } // Write the extra space - screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ' ', nil, lineNumStyle) + screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ' ', nil, lineNumStyle) vloc.X++ } // GetStyle returns the highlight style for the given character position // If there is no change to the current highlight style it just returns that -func (w *Window) GetStyle(style tcell.Style, bloc Loc, r rune) tcell.Style { +func (w *Window) GetStyle(style tcell.Style, bloc buffer.Loc, r rune) tcell.Style { if group, ok := w.Buf.Match(bloc.Y)[bloc.X]; ok { - s := GetColor(group.String()) + s := config.GetColor(group.String()) return s } return style } -// DisplayBuffer draws the buffer being shown in this window on the screen +// DisplayBuffer draws the buffer being shown in this window on the screen.Screen func (w *Window) DisplayBuffer() { b := w.Buf @@ -81,7 +93,7 @@ func (w *Window) DisplayBuffer() { // TODO: Rehighlighting // start := w.StartLine - if b.Settings["syntax"].(bool) && b.syntaxDef != nil { + if b.Settings["syntax"].(bool) && b.SyntaxDef != nil { // if start > 0 && b.lines[start-1].rehighlight { // b.highlighter.ReHighlightLine(b, start-1) // b.lines[start-1].rehighlight = false @@ -89,29 +101,29 @@ func (w *Window) DisplayBuffer() { // // b.highlighter.ReHighlightStates(b, start) // - b.highlighter.HighlightMatches(b, w.StartLine, w.StartLine+bufHeight) + b.Highlighter.HighlightMatches(b, w.StartLine, w.StartLine+bufHeight) } - lineNumStyle := defStyle - if style, ok := colorscheme["line-number"]; ok { + lineNumStyle := config.DefStyle + if style, ok := config.Colorscheme["line-number"]; ok { lineNumStyle = style } // We need to know the string length of the largest line number // so we can pad appropriately when displaying line numbers - maxLineNumLength := len(strconv.Itoa(len(b.lines))) + maxLineNumLength := len(strconv.Itoa(b.LinesNum())) tabsize := int(b.Settings["tabsize"].(float64)) softwrap := b.Settings["softwrap"].(bool) // this represents the current draw position // within the current window - vloc := Loc{0, 0} + vloc := buffer.Loc{0, 0} // this represents the current draw position in the buffer (char positions) - bloc := Loc{w.StartCol, w.StartLine} + bloc := buffer.Loc{w.StartCol, w.StartLine} - curStyle := defStyle + curStyle := config.DefStyle for vloc.Y = 0; vloc.Y < bufHeight; vloc.Y++ { vloc.X = 0 if b.Settings["ruler"].(bool) { @@ -119,7 +131,7 @@ func (w *Window) DisplayBuffer() { } line := b.LineBytes(bloc.Y) - line, nColsBeforeStart := SliceVisualEnd(line, bloc.X, tabsize) + line, nColsBeforeStart := util.SliceVisualEnd(line, bloc.X, tabsize) totalwidth := bloc.X - nColsBeforeStart for len(line) > 0 { r, size := utf8.DecodeRune(line) @@ -127,7 +139,7 @@ func (w *Window) DisplayBuffer() { curStyle = w.GetStyle(curStyle, bloc, r) if nColsBeforeStart <= 0 { - screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, r, nil, curStyle) + screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, r, nil, curStyle) vloc.X++ } nColsBeforeStart-- @@ -151,7 +163,7 @@ func (w *Window) DisplayBuffer() { if width > 1 { for i := 1; i < width; i++ { if nColsBeforeStart <= 0 { - screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, char, nil, curStyle) + screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, char, nil, curStyle) vloc.X++ } nColsBeforeStart-- @@ -176,7 +188,7 @@ func (w *Window) DisplayBuffer() { } bloc.X = w.StartCol bloc.Y++ - if bloc.Y >= len(b.lines) { + if bloc.Y >= b.LinesNum() { break } } From c3e2085e3cc6d50e67427374a0ad51dc4a5c59dc Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 27 Aug 2018 17:55:28 -0400 Subject: [PATCH 019/231] Cursor improvements --- .gitignore | 1 + Makefile | 6 +++--- cmd/micro/actions.go | 8 ++++++++ cmd/micro/bufactionhandler.go | 1 + cmd/micro/buffer/cursor.go | 31 ++++++++++++++++++++++++++----- cmd/micro/micro.go | 2 +- cmd/micro/screen/screen.go | 6 ++++-- cmd/micro/statusline.go | 8 ++++---- cmd/micro/window.go | 16 ++++++++++++++++ 9 files changed, 64 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index acfa0730..910f4c58 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ packages/ todo.txt test.txt log.txt +*.old diff --git a/Makefile b/Makefile index 08a70768..db9441a6 100644 --- a/Makefile +++ b/Makefile @@ -40,9 +40,9 @@ update: # Builds the runtime runtime: go get -u github.com/jteeuwen/go-bindata/... - $(GOBIN)/go-bindata -nometadata -o runtime.go runtime/... - mv runtime.go cmd/micro - gofmt -w cmd/micro/runtime.go + $(GOBIN)/go-bindata -pkg config -nomemcopy -nometadata -o runtime.go runtime/... + mv runtime.go cmd/micro/config + gofmt -w cmd/micro/config/runtime.go test: go test ./cmd/micro diff --git a/cmd/micro/actions.go b/cmd/micro/actions.go index 1af5085c..2f39fe8c 100644 --- a/cmd/micro/actions.go +++ b/cmd/micro/actions.go @@ -30,21 +30,29 @@ func (a *BufActionHandler) Center() bool { // CursorUp moves the cursor up func (a *BufActionHandler) CursorUp() bool { + a.Cursor.Deselect(true) + a.Cursor.Up() return true } // CursorDown moves the cursor down func (a *BufActionHandler) CursorDown() bool { + a.Cursor.Deselect(true) + a.Cursor.Down() return true } // CursorLeft moves the cursor left func (a *BufActionHandler) CursorLeft() bool { + a.Cursor.Deselect(true) + a.Cursor.Left() return true } // CursorRight moves the cursor right func (a *BufActionHandler) CursorRight() bool { + a.Cursor.Deselect(true) + a.Cursor.Right() return true } diff --git a/cmd/micro/bufactionhandler.go b/cmd/micro/bufactionhandler.go index 87cfd211..839c39b7 100644 --- a/cmd/micro/bufactionhandler.go +++ b/cmd/micro/bufactionhandler.go @@ -74,6 +74,7 @@ func NewBufActionHandler(buf *buffer.Buffer, win *Window) *BufActionHandler { Buf: buf, Loc: buf.StartCursor, }} + a.Cursor = a.cursors[0] buf.SetCursors(a.cursors) return a diff --git a/cmd/micro/buffer/cursor.go b/cmd/micro/buffer/cursor.go index 34741ad3..78faf45b 100644 --- a/cmd/micro/buffer/cursor.go +++ b/cmd/micro/buffer/cursor.go @@ -48,7 +48,7 @@ func (c *Cursor) Goto(b Cursor) { // the current cursor its selection too func (c *Cursor) GotoLoc(l Loc) { c.X, c.Y = l.X, l.Y - c.LastVisualX = c.GetVisualX() + c.StoreVisualX() } // GetVisualX returns the x value of the cursor in visual spaces @@ -89,11 +89,13 @@ func (c *Cursor) GetCharPosInLine(b []byte, visualPos int) int { width += runewidth.RuneWidth(r) } - i++ - if width >= visualPos { + if width == visualPos { + i++ + } break } + i++ } return i @@ -155,6 +157,21 @@ func (c *Cursor) DeleteSelection() { } } +// Deselect closes the cursor's current selection +// Start indicates whether the cursor should be placed +// at the start or end of the selection +func (c *Cursor) Deselect(start bool) { + if c.HasSelection() { + if start { + c.Loc = c.CurSelection[0] + } else { + c.Loc = c.CurSelection[1] + } + c.ResetSelection() + c.StoreVisualX() + } +} + // GetSelection returns the cursor's selection func (c *Cursor) GetSelection() []byte { if InBounds(c.CurSelection[0], c.Buf) && InBounds(c.CurSelection[1], c.Buf) { @@ -244,7 +261,7 @@ func (c *Cursor) Left() { c.Up() c.End() } - c.LastVisualX = c.GetVisualX() + c.StoreVisualX() } // Right moves the cursor right one cell (if possible) or @@ -259,7 +276,7 @@ func (c *Cursor) Right() { c.Down() c.Start() } - c.LastVisualX = c.GetVisualX() + c.StoreVisualX() } // Relocate makes sure that the cursor is inside the bounds @@ -278,3 +295,7 @@ func (c *Cursor) Relocate() { c.X = utf8.RuneCount(c.Buf.LineBytes(c.Y)) } } + +func (c *Cursor) StoreVisualX() { + c.LastVisualX = c.GetVisualX() +} diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index c3746759..dca53a20 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -150,7 +150,7 @@ func main() { for { // Display everything - w.Clear() + screen.Screen.Fill(' ', config.DefStyle) w.DisplayBuffer() w.DisplayStatusLine() screen.Screen.Show() diff --git a/cmd/micro/screen/screen.go b/cmd/micro/screen/screen.go index 0266a0f9..3653da32 100644 --- a/cmd/micro/screen/screen.go +++ b/cmd/micro/screen/screen.go @@ -40,12 +40,12 @@ func Init() { Screen, err = tcell.NewScreen() if err != nil { fmt.Println(err) - fmt.Println("Fatal: Micro could not initialize a screen.") + fmt.Println("Fatal: Micro could not initialize a Screen.") os.Exit(1) } } else { fmt.Println(err) - fmt.Println("Fatal: Micro could not initialize a screen.") + fmt.Println("Fatal: Micro could not initialize a Screen.") os.Exit(1) } } @@ -64,4 +64,6 @@ func Init() { } os.Setenv("TCELLDB", tcelldb) + + // Screen.SetStyle(defStyle) } diff --git a/cmd/micro/statusline.go b/cmd/micro/statusline.go index 03df5601..5def796d 100644 --- a/cmd/micro/statusline.go +++ b/cmd/micro/statusline.go @@ -30,8 +30,8 @@ type StatusLine struct { // NewStatusLine returns a statusline bound to a window func NewStatusLine(win *Window) *StatusLine { s := new(StatusLine) - // s.FormatLeft = "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat)" - s.FormatLeft = "$(filename) $(modified)(line,col) $(opt:filetype) $(opt:fileformat)" + s.FormatLeft = "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat)" + // s.FormatLeft = "$(filename) $(modified)(line,col) $(opt:filetype) $(opt:fileformat)" s.FormatRight = "$(bind:ToggleKeyMenu): show bindings, $(bind:ToggleHelp): open help" s.Info = map[string]func(*buffer.Buffer) string{ "filename": func(b *buffer.Buffer) string { @@ -41,10 +41,10 @@ func NewStatusLine(win *Window) *StatusLine { return b.GetName() }, "line": func(b *buffer.Buffer) string { - return strconv.Itoa(b.GetActiveCursor().Y) + return strconv.Itoa(b.GetActiveCursor().Y + 1) }, "col": func(b *buffer.Buffer) string { - return strconv.Itoa(b.GetActiveCursor().X) + return strconv.Itoa(b.GetActiveCursor().X + 1) }, "modified": func(b *buffer.Buffer) string { if b.Modified() { diff --git a/cmd/micro/window.go b/cmd/micro/window.go index 21489598..b9cddaae 100644 --- a/cmd/micro/window.go +++ b/cmd/micro/window.go @@ -82,6 +82,15 @@ func (w *Window) GetStyle(style tcell.Style, bloc buffer.Loc, r rune) tcell.Styl return style } +func (w *Window) ShowCursor(x, y int, main bool) { + if main { + screen.Screen.ShowCursor(x, y) + } else { + r, _, _, _ := screen.Screen.GetContent(x, y) + screen.Screen.SetContent(x, y, r, nil, config.DefStyle.Reverse(true)) + } +} + // DisplayBuffer draws the buffer being shown in this window on the screen.Screen func (w *Window) DisplayBuffer() { b := w.Buf @@ -134,6 +143,10 @@ func (w *Window) DisplayBuffer() { line, nColsBeforeStart := util.SliceVisualEnd(line, bloc.X, tabsize) totalwidth := bloc.X - nColsBeforeStart for len(line) > 0 { + if w.Buf.GetActiveCursor().X == bloc.X && w.Buf.GetActiveCursor().Y == bloc.Y { + w.ShowCursor(vloc.X, vloc.Y, true) + } + r, size := utf8.DecodeRune(line) curStyle = w.GetStyle(curStyle, bloc, r) @@ -186,6 +199,9 @@ func (w *Window) DisplayBuffer() { } } } + if w.Buf.GetActiveCursor().X == bloc.X && w.Buf.GetActiveCursor().Y == bloc.Y { + w.ShowCursor(vloc.X, vloc.Y, true) + } bloc.X = w.StartCol bloc.Y++ if bloc.Y >= b.LinesNum() { From d7b3f961b43a400b4e87a564bd8202d4b1a97cad Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 27 Aug 2018 19:53:08 -0400 Subject: [PATCH 020/231] Action subpackage --- cmd/micro/{ => action}/actions.go | 192 ++++++++-------- cmd/micro/{ => action}/actions_other.go | 4 +- cmd/micro/{ => action}/actions_posix.go | 4 +- cmd/micro/{ => action}/bindings.go | 6 +- cmd/micro/action/bufhandler.go | 206 +++++++++++++++++ .../{actionhandler.go => action/handler.go} | 6 +- cmd/micro/bufactionhandler.go | 208 ------------------ cmd/micro/buffer/buffer.go | 202 ----------------- cmd/micro/buffer/save.go | 160 ++++++++++++++ cmd/micro/buffer/serialize.go | 61 +++++ cmd/micro/micro.go | 7 +- cmd/micro/statusline.go | 3 +- 12 files changed, 539 insertions(+), 520 deletions(-) rename cmd/micro/{ => action}/actions.go (61%) rename cmd/micro/{ => action}/actions_other.go (56%) rename cmd/micro/{ => action}/actions_posix.go (92%) rename cmd/micro/{ => action}/bindings.go (99%) create mode 100644 cmd/micro/action/bufhandler.go rename cmd/micro/{actionhandler.go => action/handler.go} (87%) delete mode 100644 cmd/micro/bufactionhandler.go create mode 100644 cmd/micro/buffer/save.go create mode 100644 cmd/micro/buffer/serialize.go diff --git a/cmd/micro/actions.go b/cmd/micro/action/actions.go similarity index 61% rename from cmd/micro/actions.go rename to cmd/micro/action/actions.go index 2f39fe8c..db56279a 100644 --- a/cmd/micro/actions.go +++ b/cmd/micro/action/actions.go @@ -1,4 +1,4 @@ -package main +package action import ( "os" @@ -9,450 +9,450 @@ import ( // MousePress is the event that should happen when a normal click happens // This is almost always bound to left click -func (a *BufActionHandler) MousePress(e *tcell.EventMouse) bool { +func (a *BufHandler) MousePress(e *tcell.EventMouse) bool { return false } // ScrollUpAction scrolls the view up -func (a *BufActionHandler) ScrollUpAction() bool { +func (a *BufHandler) ScrollUpAction() bool { return false } // ScrollDownAction scrolls the view up -func (a *BufActionHandler) ScrollDownAction() bool { +func (a *BufHandler) ScrollDownAction() bool { return false } // Center centers the view on the cursor -func (a *BufActionHandler) Center() bool { +func (a *BufHandler) Center() bool { return true } // CursorUp moves the cursor up -func (a *BufActionHandler) CursorUp() bool { +func (a *BufHandler) CursorUp() bool { a.Cursor.Deselect(true) a.Cursor.Up() return true } // CursorDown moves the cursor down -func (a *BufActionHandler) CursorDown() bool { +func (a *BufHandler) CursorDown() bool { a.Cursor.Deselect(true) a.Cursor.Down() return true } // CursorLeft moves the cursor left -func (a *BufActionHandler) CursorLeft() bool { +func (a *BufHandler) CursorLeft() bool { a.Cursor.Deselect(true) a.Cursor.Left() return true } // CursorRight moves the cursor right -func (a *BufActionHandler) CursorRight() bool { +func (a *BufHandler) CursorRight() bool { a.Cursor.Deselect(true) a.Cursor.Right() return true } // WordRight moves the cursor one word to the right -func (a *BufActionHandler) WordRight() bool { +func (a *BufHandler) WordRight() bool { return true } // WordLeft moves the cursor one word to the left -func (a *BufActionHandler) WordLeft() bool { +func (a *BufHandler) WordLeft() bool { return true } // SelectUp selects up one line -func (a *BufActionHandler) SelectUp() bool { +func (a *BufHandler) SelectUp() bool { return true } // SelectDown selects down one line -func (a *BufActionHandler) SelectDown() bool { +func (a *BufHandler) SelectDown() bool { return true } // SelectLeft selects the character to the left of the cursor -func (a *BufActionHandler) SelectLeft() bool { +func (a *BufHandler) SelectLeft() bool { return true } // SelectRight selects the character to the right of the cursor -func (a *BufActionHandler) SelectRight() bool { +func (a *BufHandler) SelectRight() bool { return true } // SelectWordRight selects the word to the right of the cursor -func (a *BufActionHandler) SelectWordRight() bool { +func (a *BufHandler) SelectWordRight() bool { return true } // SelectWordLeft selects the word to the left of the cursor -func (a *BufActionHandler) SelectWordLeft() bool { +func (a *BufHandler) SelectWordLeft() bool { return true } // StartOfLine moves the cursor to the start of the line -func (a *BufActionHandler) StartOfLine() bool { +func (a *BufHandler) StartOfLine() bool { return true } // EndOfLine moves the cursor to the end of the line -func (a *BufActionHandler) EndOfLine() bool { +func (a *BufHandler) EndOfLine() bool { return true } // SelectLine selects the entire current line -func (a *BufActionHandler) SelectLine() bool { +func (a *BufHandler) SelectLine() bool { return true } // SelectToStartOfLine selects to the start of the current line -func (a *BufActionHandler) SelectToStartOfLine() bool { +func (a *BufHandler) SelectToStartOfLine() bool { return true } // SelectToEndOfLine selects to the end of the current line -func (a *BufActionHandler) SelectToEndOfLine() bool { +func (a *BufHandler) SelectToEndOfLine() bool { return true } // ParagraphPrevious moves the cursor to the previous empty line, or beginning of the buffer if there's none -func (a *BufActionHandler) ParagraphPrevious() bool { +func (a *BufHandler) ParagraphPrevious() bool { return true } // ParagraphNext moves the cursor to the next empty line, or end of the buffer if there's none -func (a *BufActionHandler) ParagraphNext() bool { +func (a *BufHandler) ParagraphNext() bool { return true } // Retab changes all tabs to spaces or all spaces to tabs depending // on the user's settings -func (a *BufActionHandler) Retab() bool { +func (a *BufHandler) Retab() bool { return true } // CursorStart moves the cursor to the start of the buffer -func (a *BufActionHandler) CursorStart() bool { +func (a *BufHandler) CursorStart() bool { return true } // CursorEnd moves the cursor to the end of the buffer -func (a *BufActionHandler) CursorEnd() bool { +func (a *BufHandler) CursorEnd() bool { return true } // SelectToStart selects the text from the cursor to the start of the buffer -func (a *BufActionHandler) SelectToStart() bool { +func (a *BufHandler) SelectToStart() bool { return true } // SelectToEnd selects the text from the cursor to the end of the buffer -func (a *BufActionHandler) SelectToEnd() bool { +func (a *BufHandler) SelectToEnd() bool { return true } // InsertSpace inserts a space -func (a *BufActionHandler) InsertSpace() bool { +func (a *BufHandler) InsertSpace() bool { return true } // InsertNewline inserts a newline plus possible some whitespace if autoindent is on -func (a *BufActionHandler) InsertNewline() bool { +func (a *BufHandler) InsertNewline() bool { return true } // Backspace deletes the previous character -func (a *BufActionHandler) Backspace() bool { +func (a *BufHandler) Backspace() bool { return true } // DeleteWordRight deletes the word to the right of the cursor -func (a *BufActionHandler) DeleteWordRight() bool { +func (a *BufHandler) DeleteWordRight() bool { return true } // DeleteWordLeft deletes the word to the left of the cursor -func (a *BufActionHandler) DeleteWordLeft() bool { +func (a *BufHandler) DeleteWordLeft() bool { return true } // Delete deletes the next character -func (a *BufActionHandler) Delete() bool { +func (a *BufHandler) Delete() bool { return true } // IndentSelection indents the current selection -func (a *BufActionHandler) IndentSelection() bool { +func (a *BufHandler) IndentSelection() bool { return false } // OutdentLine moves the current line back one indentation -func (a *BufActionHandler) OutdentLine() bool { +func (a *BufHandler) OutdentLine() bool { return true } // OutdentSelection takes the current selection and moves it back one indent level -func (a *BufActionHandler) OutdentSelection() bool { +func (a *BufHandler) OutdentSelection() bool { return false } // InsertTab inserts a tab or spaces -func (a *BufActionHandler) InsertTab() bool { +func (a *BufHandler) InsertTab() bool { return true } // SaveAll saves all open buffers -func (a *BufActionHandler) SaveAll() bool { +func (a *BufHandler) SaveAll() bool { return false } // Save the buffer to disk -func (a *BufActionHandler) Save() bool { +func (a *BufHandler) Save() bool { return false } // SaveAs saves the buffer to disk with the given name -func (a *BufActionHandler) SaveAs() bool { +func (a *BufHandler) SaveAs() bool { return false } // Find opens a prompt and searches forward for the input -func (a *BufActionHandler) Find() bool { +func (a *BufHandler) Find() bool { return true } // FindNext searches forwards for the last used search term -func (a *BufActionHandler) FindNext() bool { +func (a *BufHandler) FindNext() bool { return true } // FindPrevious searches backwards for the last used search term -func (a *BufActionHandler) FindPrevious() bool { +func (a *BufHandler) FindPrevious() bool { return true } // Undo undoes the last action -func (a *BufActionHandler) Undo() bool { +func (a *BufHandler) Undo() bool { return true } // Redo redoes the last action -func (a *BufActionHandler) Redo() bool { +func (a *BufHandler) Redo() bool { return true } // Copy the selection to the system clipboard -func (a *BufActionHandler) Copy() bool { +func (a *BufHandler) Copy() bool { return true } // CutLine cuts the current line to the clipboard -func (a *BufActionHandler) CutLine() bool { +func (a *BufHandler) CutLine() bool { return true } // Cut the selection to the system clipboard -func (a *BufActionHandler) Cut() bool { +func (a *BufHandler) Cut() bool { return true } // DuplicateLine duplicates the current line or selection -func (a *BufActionHandler) DuplicateLine() bool { +func (a *BufHandler) DuplicateLine() bool { return true } // DeleteLine deletes the current line -func (a *BufActionHandler) DeleteLine() bool { +func (a *BufHandler) DeleteLine() bool { return true } // MoveLinesUp moves up the current line or selected lines if any -func (a *BufActionHandler) MoveLinesUp() bool { +func (a *BufHandler) MoveLinesUp() bool { return true } // MoveLinesDown moves down the current line or selected lines if any -func (a *BufActionHandler) MoveLinesDown() bool { +func (a *BufHandler) MoveLinesDown() bool { return true } // Paste whatever is in the system clipboard into the buffer // Delete and paste if the user has a selection -func (a *BufActionHandler) Paste() bool { +func (a *BufHandler) Paste() bool { return true } // PastePrimary pastes from the primary clipboard (only use on linux) -func (a *BufActionHandler) PastePrimary() bool { +func (a *BufHandler) PastePrimary() bool { return true } // JumpToMatchingBrace moves the cursor to the matching brace if it is // currently on a brace -func (a *BufActionHandler) JumpToMatchingBrace() bool { +func (a *BufHandler) JumpToMatchingBrace() bool { return true } // SelectAll selects the entire buffer -func (a *BufActionHandler) SelectAll() bool { +func (a *BufHandler) SelectAll() bool { return true } // OpenFile opens a new file in the buffer -func (a *BufActionHandler) OpenFile() bool { +func (a *BufHandler) OpenFile() bool { return false } // Start moves the viewport to the start of the buffer -func (a *BufActionHandler) Start() bool { +func (a *BufHandler) Start() bool { return false } // End moves the viewport to the end of the buffer -func (a *BufActionHandler) End() bool { +func (a *BufHandler) End() bool { return false } // PageUp scrolls the view up a page -func (a *BufActionHandler) PageUp() bool { +func (a *BufHandler) PageUp() bool { return false } // PageDown scrolls the view down a page -func (a *BufActionHandler) PageDown() bool { +func (a *BufHandler) PageDown() bool { return false } // SelectPageUp selects up one page -func (a *BufActionHandler) SelectPageUp() bool { +func (a *BufHandler) SelectPageUp() bool { return true } // SelectPageDown selects down one page -func (a *BufActionHandler) SelectPageDown() bool { +func (a *BufHandler) SelectPageDown() bool { return true } // CursorPageUp places the cursor a page up -func (a *BufActionHandler) CursorPageUp() bool { +func (a *BufHandler) CursorPageUp() bool { return true } // CursorPageDown places the cursor a page up -func (a *BufActionHandler) CursorPageDown() bool { +func (a *BufHandler) CursorPageDown() bool { return true } // HalfPageUp scrolls the view up half a page -func (a *BufActionHandler) HalfPageUp() bool { +func (a *BufHandler) HalfPageUp() bool { return false } // HalfPageDown scrolls the view down half a page -func (a *BufActionHandler) HalfPageDown() bool { +func (a *BufHandler) HalfPageDown() bool { return false } // ToggleRuler turns line numbers off and on -func (a *BufActionHandler) ToggleRuler() bool { +func (a *BufHandler) ToggleRuler() bool { return false } // JumpLine jumps to a line and moves the view accordingly. -func (a *BufActionHandler) JumpLine() bool { +func (a *BufHandler) JumpLine() bool { return false } // ClearStatus clears the messenger bar -func (a *BufActionHandler) ClearStatus() bool { +func (a *BufHandler) ClearStatus() bool { return false } // ToggleHelp toggles the help screen -func (a *BufActionHandler) ToggleHelp() bool { +func (a *BufHandler) ToggleHelp() bool { return true } // ToggleKeyMenu toggles the keymenu option and resizes all tabs -func (a *BufActionHandler) ToggleKeyMenu() bool { +func (a *BufHandler) ToggleKeyMenu() bool { return true } // ShellMode opens a terminal to run a shell command -func (a *BufActionHandler) ShellMode() bool { +func (a *BufHandler) ShellMode() bool { return false } // CommandMode lets the user enter a command -func (a *BufActionHandler) CommandMode() bool { +func (a *BufHandler) CommandMode() bool { return false } // ToggleOverwriteMode lets the user toggle the text overwrite mode -func (a *BufActionHandler) ToggleOverwriteMode() bool { +func (a *BufHandler) ToggleOverwriteMode() bool { return false } // Escape leaves current mode -func (a *BufActionHandler) Escape() bool { +func (a *BufHandler) Escape() bool { return false } // Quit this will close the current tab or view that is open -func (a *BufActionHandler) Quit() bool { +func (a *BufHandler) Quit() bool { screen.Screen.Fini() os.Exit(0) return false } // QuitAll quits the whole editor; all splits and tabs -func (a *BufActionHandler) QuitAll() bool { +func (a *BufHandler) QuitAll() bool { return false } // AddTab adds a new tab with an empty buffer -func (a *BufActionHandler) AddTab() bool { +func (a *BufHandler) AddTab() bool { return true } // PreviousTab switches to the previous tab in the tab list -func (a *BufActionHandler) PreviousTab() bool { +func (a *BufHandler) PreviousTab() bool { return false } // NextTab switches to the next tab in the tab list -func (a *BufActionHandler) NextTab() bool { +func (a *BufHandler) NextTab() bool { return false } // VSplitBinding opens an empty vertical split -func (a *BufActionHandler) VSplitBinding() bool { +func (a *BufHandler) VSplitBinding() bool { return false } // HSplitBinding opens an empty horizontal split -func (a *BufActionHandler) HSplitBinding() bool { +func (a *BufHandler) HSplitBinding() bool { return false } // Unsplit closes all splits in the current tab except the active one -func (a *BufActionHandler) Unsplit() bool { +func (a *BufHandler) Unsplit() bool { return false } // NextSplit changes the view to the next split -func (a *BufActionHandler) NextSplit() bool { +func (a *BufHandler) NextSplit() bool { return false } // PreviousSplit changes the view to the previous split -func (a *BufActionHandler) PreviousSplit() bool { +func (a *BufHandler) PreviousSplit() bool { return false } @@ -460,41 +460,41 @@ var curMacro []interface{} var recordingMacro bool // ToggleMacro toggles recording of a macro -func (a *BufActionHandler) ToggleMacro() bool { +func (a *BufHandler) ToggleMacro() bool { return true } // PlayMacro plays back the most recently recorded macro -func (a *BufActionHandler) PlayMacro() bool { +func (a *BufHandler) PlayMacro() bool { return true } // SpawnMultiCursor creates a new multiple cursor at the next occurrence of the current selection or current word -func (a *BufActionHandler) SpawnMultiCursor() bool { +func (a *BufHandler) SpawnMultiCursor() bool { return false } // SpawnMultiCursorSelect adds a cursor at the beginning of each line of a selection -func (a *BufActionHandler) SpawnMultiCursorSelect() bool { +func (a *BufHandler) SpawnMultiCursorSelect() bool { return false } // MouseMultiCursor is a mouse action which puts a new cursor at the mouse position -func (a *BufActionHandler) MouseMultiCursor(e *tcell.EventMouse) bool { +func (a *BufHandler) MouseMultiCursor(e *tcell.EventMouse) bool { return false } // SkipMultiCursor moves the current multiple cursor to the next available position -func (a *BufActionHandler) SkipMultiCursor() bool { +func (a *BufHandler) SkipMultiCursor() bool { return false } // RemoveMultiCursor removes the latest multiple cursor -func (a *BufActionHandler) RemoveMultiCursor() bool { +func (a *BufHandler) RemoveMultiCursor() bool { return false } // RemoveAllMultiCursors removes all cursors except the base cursor -func (a *BufActionHandler) RemoveAllMultiCursors() bool { +func (a *BufHandler) RemoveAllMultiCursors() bool { return false } diff --git a/cmd/micro/actions_other.go b/cmd/micro/action/actions_other.go similarity index 56% rename from cmd/micro/actions_other.go rename to cmd/micro/action/actions_other.go index 77c53ebf..15699895 100644 --- a/cmd/micro/actions_other.go +++ b/cmd/micro/action/actions_other.go @@ -1,8 +1,8 @@ // +build plan9 nacl windows -package main +package action -func (*BufActionHandler) Suspend() bool { +func (*BufHandler) Suspend() bool { // TODO: error message return false } diff --git a/cmd/micro/actions_posix.go b/cmd/micro/action/actions_posix.go similarity index 92% rename from cmd/micro/actions_posix.go rename to cmd/micro/action/actions_posix.go index b9070810..8981685f 100644 --- a/cmd/micro/actions_posix.go +++ b/cmd/micro/action/actions_posix.go @@ -1,6 +1,6 @@ // +build linux darwin dragonfly solaris openbsd netbsd freebsd -package main +package action import ( "syscall" @@ -12,7 +12,7 @@ import ( // Suspend sends micro to the background. This is the same as pressing CtrlZ in most unix programs. // This only works on linux and has no default binding. // This code was adapted from the suspend code in nsf/godit -func (*BufActionHandler) Suspend() bool { +func (*BufHandler) Suspend() bool { screenWasNil := screen.Screen == nil if !screenWasNil { diff --git a/cmd/micro/bindings.go b/cmd/micro/action/bindings.go similarity index 99% rename from cmd/micro/bindings.go rename to cmd/micro/action/bindings.go index 56989383..816b14ae 100644 --- a/cmd/micro/bindings.go +++ b/cmd/micro/action/bindings.go @@ -1,4 +1,4 @@ -package main +package action import ( "encoding/json" @@ -14,7 +14,7 @@ import ( "github.com/zyedidia/tcell" ) -var bindings = DefaultBindings() +var Bindings = DefaultBindings() func InitBindings() { var parsed map[string]string @@ -57,7 +57,7 @@ func BindKey(k, v string) { util.TermMessage("Raw events not supported yet") } - bindings[k] = v + Bindings[k] = v } // findKeyEvent will find binding Key 'b' using string 'k' diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go new file mode 100644 index 00000000..e6951a2f --- /dev/null +++ b/cmd/micro/action/bufhandler.go @@ -0,0 +1,206 @@ +package action + +import ( + "time" + + "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/tcell" +) + +type BufKeyAction func(*BufHandler) bool +type BufMouseAction func(*BufHandler, *tcell.EventMouse) bool + +var BufKeyBindings map[KeyEvent]BufKeyAction +var BufMouseBindings map[MouseEvent]BufMouseAction + +func init() { + BufKeyBindings = make(map[KeyEvent]BufKeyAction) + BufMouseBindings = make(map[MouseEvent]BufMouseAction) +} + +func BufMapKey(k KeyEvent, action string) { + BufKeyBindings[k] = BufKeyActions[action] +} +func BufMapMouse(k MouseEvent, action string) { + BufMouseBindings[k] = BufMouseActions[action] +} + +// The BufHandler connects the buffer and the window +// It provides a cursor (or multiple) and defines a set of actions +// that can be taken on the buffer +// The ActionHandler can access the window for necessary info about +// visual positions for mouse clicks and scrolling +type BufHandler struct { + Buf *buffer.Buffer + + cursors []*buffer.Cursor + Cursor *buffer.Cursor // the active cursor + + // Since tcell doesn't differentiate between a mouse release event + // and a mouse move event with no keys pressed, we need to keep + // track of whether or not the mouse was pressed (or not released) last event to determine + // mouse release events + mouseReleased bool + + // We need to keep track of insert key press toggle + isOverwriteMode bool + // This stores when the last click was + // This is useful for detecting double and triple clicks + lastClickTime time.Time + lastLoc buffer.Loc + + // lastCutTime stores when the last ctrl+k was issued. + // It is used for clearing the clipboard to replace it with fresh cut lines. + lastCutTime time.Time + + // freshClip returns true if the clipboard has never been pasted. + freshClip bool + + // Was the last mouse event actually a double click? + // Useful for detecting triple clicks -- if a double click is detected + // but the last mouse event was actually a double click, it's a triple click + doubleClick bool + // Same here, just to keep track for mouse move events + tripleClick bool +} + +func NewBufHandler(buf *buffer.Buffer) *BufHandler { + a := new(BufHandler) + a.Buf = buf + + a.cursors = []*buffer.Cursor{&buffer.Cursor{ + Buf: buf, + Loc: buf.StartCursor, + }} + a.Cursor = a.cursors[0] + + buf.SetCursors(a.cursors) + return a +} + +// HandleEvent executes the tcell event properly +// TODO: multiple actions bound to one key +func (a *BufHandler) HandleEvent(event tcell.Event) { + switch e := event.(type) { + case *tcell.EventKey: + ke := KeyEvent{ + code: e.Key(), + mod: e.Modifiers(), + r: e.Rune(), + } + if action, ok := BufKeyBindings[ke]; ok { + action(a) + } + case *tcell.EventMouse: + me := MouseEvent{ + btn: e.Buttons(), + mod: e.Modifiers(), + } + if action, ok := BufMouseBindings[me]; ok { + action(a, e) + } + } +} + +var BufKeyActions = map[string]BufKeyAction{ + "CursorUp": (*BufHandler).CursorUp, + "CursorDown": (*BufHandler).CursorDown, + "CursorPageUp": (*BufHandler).CursorPageUp, + "CursorPageDown": (*BufHandler).CursorPageDown, + "CursorLeft": (*BufHandler).CursorLeft, + "CursorRight": (*BufHandler).CursorRight, + "CursorStart": (*BufHandler).CursorStart, + "CursorEnd": (*BufHandler).CursorEnd, + "SelectToStart": (*BufHandler).SelectToStart, + "SelectToEnd": (*BufHandler).SelectToEnd, + "SelectUp": (*BufHandler).SelectUp, + "SelectDown": (*BufHandler).SelectDown, + "SelectLeft": (*BufHandler).SelectLeft, + "SelectRight": (*BufHandler).SelectRight, + "WordRight": (*BufHandler).WordRight, + "WordLeft": (*BufHandler).WordLeft, + "SelectWordRight": (*BufHandler).SelectWordRight, + "SelectWordLeft": (*BufHandler).SelectWordLeft, + "DeleteWordRight": (*BufHandler).DeleteWordRight, + "DeleteWordLeft": (*BufHandler).DeleteWordLeft, + "SelectLine": (*BufHandler).SelectLine, + "SelectToStartOfLine": (*BufHandler).SelectToStartOfLine, + "SelectToEndOfLine": (*BufHandler).SelectToEndOfLine, + "ParagraphPrevious": (*BufHandler).ParagraphPrevious, + "ParagraphNext": (*BufHandler).ParagraphNext, + "InsertNewline": (*BufHandler).InsertNewline, + "InsertSpace": (*BufHandler).InsertSpace, + "Backspace": (*BufHandler).Backspace, + "Delete": (*BufHandler).Delete, + "InsertTab": (*BufHandler).InsertTab, + "Save": (*BufHandler).Save, + "SaveAll": (*BufHandler).SaveAll, + "SaveAs": (*BufHandler).SaveAs, + "Find": (*BufHandler).Find, + "FindNext": (*BufHandler).FindNext, + "FindPrevious": (*BufHandler).FindPrevious, + "Center": (*BufHandler).Center, + "Undo": (*BufHandler).Undo, + "Redo": (*BufHandler).Redo, + "Copy": (*BufHandler).Copy, + "Cut": (*BufHandler).Cut, + "CutLine": (*BufHandler).CutLine, + "DuplicateLine": (*BufHandler).DuplicateLine, + "DeleteLine": (*BufHandler).DeleteLine, + "MoveLinesUp": (*BufHandler).MoveLinesUp, + "MoveLinesDown": (*BufHandler).MoveLinesDown, + "IndentSelection": (*BufHandler).IndentSelection, + "OutdentSelection": (*BufHandler).OutdentSelection, + "OutdentLine": (*BufHandler).OutdentLine, + "Paste": (*BufHandler).Paste, + "PastePrimary": (*BufHandler).PastePrimary, + "SelectAll": (*BufHandler).SelectAll, + "OpenFile": (*BufHandler).OpenFile, + "Start": (*BufHandler).Start, + "End": (*BufHandler).End, + "PageUp": (*BufHandler).PageUp, + "PageDown": (*BufHandler).PageDown, + "SelectPageUp": (*BufHandler).SelectPageUp, + "SelectPageDown": (*BufHandler).SelectPageDown, + "HalfPageUp": (*BufHandler).HalfPageUp, + "HalfPageDown": (*BufHandler).HalfPageDown, + "StartOfLine": (*BufHandler).StartOfLine, + "EndOfLine": (*BufHandler).EndOfLine, + "ToggleHelp": (*BufHandler).ToggleHelp, + "ToggleKeyMenu": (*BufHandler).ToggleKeyMenu, + "ToggleRuler": (*BufHandler).ToggleRuler, + "JumpLine": (*BufHandler).JumpLine, + "ClearStatus": (*BufHandler).ClearStatus, + "ShellMode": (*BufHandler).ShellMode, + "CommandMode": (*BufHandler).CommandMode, + "ToggleOverwriteMode": (*BufHandler).ToggleOverwriteMode, + "Escape": (*BufHandler).Escape, + "Quit": (*BufHandler).Quit, + "QuitAll": (*BufHandler).QuitAll, + "AddTab": (*BufHandler).AddTab, + "PreviousTab": (*BufHandler).PreviousTab, + "NextTab": (*BufHandler).NextTab, + "NextSplit": (*BufHandler).NextSplit, + "PreviousSplit": (*BufHandler).PreviousSplit, + "Unsplit": (*BufHandler).Unsplit, + "VSplit": (*BufHandler).VSplitBinding, + "HSplit": (*BufHandler).HSplitBinding, + "ToggleMacro": (*BufHandler).ToggleMacro, + "PlayMacro": (*BufHandler).PlayMacro, + "Suspend": (*BufHandler).Suspend, + "ScrollUp": (*BufHandler).ScrollUpAction, + "ScrollDown": (*BufHandler).ScrollDownAction, + "SpawnMultiCursor": (*BufHandler).SpawnMultiCursor, + "SpawnMultiCursorSelect": (*BufHandler).SpawnMultiCursorSelect, + "RemoveMultiCursor": (*BufHandler).RemoveMultiCursor, + "RemoveAllMultiCursors": (*BufHandler).RemoveAllMultiCursors, + "SkipMultiCursor": (*BufHandler).SkipMultiCursor, + "JumpToMatchingBrace": (*BufHandler).JumpToMatchingBrace, + + // This was changed to InsertNewline but I don't want to break backwards compatibility + "InsertEnter": (*BufHandler).InsertNewline, +} +var BufMouseActions = map[string]BufMouseAction{ + "MousePress": (*BufHandler).MousePress, + "MouseMultiCursor": (*BufHandler).MouseMultiCursor, +} diff --git a/cmd/micro/actionhandler.go b/cmd/micro/action/handler.go similarity index 87% rename from cmd/micro/actionhandler.go rename to cmd/micro/action/handler.go index 26bfe753..447fe79e 100644 --- a/cmd/micro/actionhandler.go +++ b/cmd/micro/action/handler.go @@ -1,4 +1,4 @@ -package main +package action import ( "github.com/zyedidia/tcell" @@ -31,8 +31,8 @@ type MouseEvent struct { mod tcell.ModMask } -// An ActionHandler will take a tcell event and execute it +// A Handler will take a tcell event and execute it // appropriately -type ActionHandler interface { +type Handler interface { HandleEvent(tcell.Event) } diff --git a/cmd/micro/bufactionhandler.go b/cmd/micro/bufactionhandler.go deleted file mode 100644 index 839c39b7..00000000 --- a/cmd/micro/bufactionhandler.go +++ /dev/null @@ -1,208 +0,0 @@ -package main - -import ( - "time" - - "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/tcell" -) - -type BufKeyAction func(*BufActionHandler) bool -type BufMouseAction func(*BufActionHandler, *tcell.EventMouse) bool - -var BufKeyBindings map[KeyEvent]BufKeyAction -var BufMouseBindings map[MouseEvent]BufMouseAction - -func init() { - BufKeyBindings = make(map[KeyEvent]BufKeyAction) - BufMouseBindings = make(map[MouseEvent]BufMouseAction) -} - -func BufMapKey(k KeyEvent, action string) { - BufKeyBindings[k] = BufKeyActions[action] -} -func BufMapMouse(k MouseEvent, action string) { - BufMouseBindings[k] = BufMouseActions[action] -} - -// The BufActionHandler connects the buffer and the window -// It provides a cursor (or multiple) and defines a set of actions -// that can be taken on the buffer -// The ActionHandler can access the window for necessary info about -// visual positions for mouse clicks and scrolling -type BufActionHandler struct { - Buf *buffer.Buffer - Win *Window - - cursors []*buffer.Cursor - Cursor *buffer.Cursor // the active cursor - - // Since tcell doesn't differentiate between a mouse release event - // and a mouse move event with no keys pressed, we need to keep - // track of whether or not the mouse was pressed (or not released) last event to determine - // mouse release events - mouseReleased bool - - // We need to keep track of insert key press toggle - isOverwriteMode bool - // This stores when the last click was - // This is useful for detecting double and triple clicks - lastClickTime time.Time - lastLoc buffer.Loc - - // lastCutTime stores when the last ctrl+k was issued. - // It is used for clearing the clipboard to replace it with fresh cut lines. - lastCutTime time.Time - - // freshClip returns true if the clipboard has never been pasted. - freshClip bool - - // Was the last mouse event actually a double click? - // Useful for detecting triple clicks -- if a double click is detected - // but the last mouse event was actually a double click, it's a triple click - doubleClick bool - // Same here, just to keep track for mouse move events - tripleClick bool -} - -func NewBufActionHandler(buf *buffer.Buffer, win *Window) *BufActionHandler { - a := new(BufActionHandler) - a.Buf = buf - a.Win = win - - a.cursors = []*buffer.Cursor{&buffer.Cursor{ - Buf: buf, - Loc: buf.StartCursor, - }} - a.Cursor = a.cursors[0] - - buf.SetCursors(a.cursors) - return a -} - -// HandleEvent executes the tcell event properly -// TODO: multiple actions bound to one key -func (a *BufActionHandler) HandleEvent(event tcell.Event) { - switch e := event.(type) { - case *tcell.EventKey: - ke := KeyEvent{ - code: e.Key(), - mod: e.Modifiers(), - r: e.Rune(), - } - if action, ok := BufKeyBindings[ke]; ok { - action(a) - } - case *tcell.EventMouse: - me := MouseEvent{ - btn: e.Buttons(), - mod: e.Modifiers(), - } - if action, ok := BufMouseBindings[me]; ok { - action(a, e) - } - } -} - -var BufKeyActions = map[string]BufKeyAction{ - "CursorUp": (*BufActionHandler).CursorUp, - "CursorDown": (*BufActionHandler).CursorDown, - "CursorPageUp": (*BufActionHandler).CursorPageUp, - "CursorPageDown": (*BufActionHandler).CursorPageDown, - "CursorLeft": (*BufActionHandler).CursorLeft, - "CursorRight": (*BufActionHandler).CursorRight, - "CursorStart": (*BufActionHandler).CursorStart, - "CursorEnd": (*BufActionHandler).CursorEnd, - "SelectToStart": (*BufActionHandler).SelectToStart, - "SelectToEnd": (*BufActionHandler).SelectToEnd, - "SelectUp": (*BufActionHandler).SelectUp, - "SelectDown": (*BufActionHandler).SelectDown, - "SelectLeft": (*BufActionHandler).SelectLeft, - "SelectRight": (*BufActionHandler).SelectRight, - "WordRight": (*BufActionHandler).WordRight, - "WordLeft": (*BufActionHandler).WordLeft, - "SelectWordRight": (*BufActionHandler).SelectWordRight, - "SelectWordLeft": (*BufActionHandler).SelectWordLeft, - "DeleteWordRight": (*BufActionHandler).DeleteWordRight, - "DeleteWordLeft": (*BufActionHandler).DeleteWordLeft, - "SelectLine": (*BufActionHandler).SelectLine, - "SelectToStartOfLine": (*BufActionHandler).SelectToStartOfLine, - "SelectToEndOfLine": (*BufActionHandler).SelectToEndOfLine, - "ParagraphPrevious": (*BufActionHandler).ParagraphPrevious, - "ParagraphNext": (*BufActionHandler).ParagraphNext, - "InsertNewline": (*BufActionHandler).InsertNewline, - "InsertSpace": (*BufActionHandler).InsertSpace, - "Backspace": (*BufActionHandler).Backspace, - "Delete": (*BufActionHandler).Delete, - "InsertTab": (*BufActionHandler).InsertTab, - "Save": (*BufActionHandler).Save, - "SaveAll": (*BufActionHandler).SaveAll, - "SaveAs": (*BufActionHandler).SaveAs, - "Find": (*BufActionHandler).Find, - "FindNext": (*BufActionHandler).FindNext, - "FindPrevious": (*BufActionHandler).FindPrevious, - "Center": (*BufActionHandler).Center, - "Undo": (*BufActionHandler).Undo, - "Redo": (*BufActionHandler).Redo, - "Copy": (*BufActionHandler).Copy, - "Cut": (*BufActionHandler).Cut, - "CutLine": (*BufActionHandler).CutLine, - "DuplicateLine": (*BufActionHandler).DuplicateLine, - "DeleteLine": (*BufActionHandler).DeleteLine, - "MoveLinesUp": (*BufActionHandler).MoveLinesUp, - "MoveLinesDown": (*BufActionHandler).MoveLinesDown, - "IndentSelection": (*BufActionHandler).IndentSelection, - "OutdentSelection": (*BufActionHandler).OutdentSelection, - "OutdentLine": (*BufActionHandler).OutdentLine, - "Paste": (*BufActionHandler).Paste, - "PastePrimary": (*BufActionHandler).PastePrimary, - "SelectAll": (*BufActionHandler).SelectAll, - "OpenFile": (*BufActionHandler).OpenFile, - "Start": (*BufActionHandler).Start, - "End": (*BufActionHandler).End, - "PageUp": (*BufActionHandler).PageUp, - "PageDown": (*BufActionHandler).PageDown, - "SelectPageUp": (*BufActionHandler).SelectPageUp, - "SelectPageDown": (*BufActionHandler).SelectPageDown, - "HalfPageUp": (*BufActionHandler).HalfPageUp, - "HalfPageDown": (*BufActionHandler).HalfPageDown, - "StartOfLine": (*BufActionHandler).StartOfLine, - "EndOfLine": (*BufActionHandler).EndOfLine, - "ToggleHelp": (*BufActionHandler).ToggleHelp, - "ToggleKeyMenu": (*BufActionHandler).ToggleKeyMenu, - "ToggleRuler": (*BufActionHandler).ToggleRuler, - "JumpLine": (*BufActionHandler).JumpLine, - "ClearStatus": (*BufActionHandler).ClearStatus, - "ShellMode": (*BufActionHandler).ShellMode, - "CommandMode": (*BufActionHandler).CommandMode, - "ToggleOverwriteMode": (*BufActionHandler).ToggleOverwriteMode, - "Escape": (*BufActionHandler).Escape, - "Quit": (*BufActionHandler).Quit, - "QuitAll": (*BufActionHandler).QuitAll, - "AddTab": (*BufActionHandler).AddTab, - "PreviousTab": (*BufActionHandler).PreviousTab, - "NextTab": (*BufActionHandler).NextTab, - "NextSplit": (*BufActionHandler).NextSplit, - "PreviousSplit": (*BufActionHandler).PreviousSplit, - "Unsplit": (*BufActionHandler).Unsplit, - "VSplit": (*BufActionHandler).VSplitBinding, - "HSplit": (*BufActionHandler).HSplitBinding, - "ToggleMacro": (*BufActionHandler).ToggleMacro, - "PlayMacro": (*BufActionHandler).PlayMacro, - "Suspend": (*BufActionHandler).Suspend, - "ScrollUp": (*BufActionHandler).ScrollUpAction, - "ScrollDown": (*BufActionHandler).ScrollDownAction, - "SpawnMultiCursor": (*BufActionHandler).SpawnMultiCursor, - "SpawnMultiCursorSelect": (*BufActionHandler).SpawnMultiCursorSelect, - "RemoveMultiCursor": (*BufActionHandler).RemoveMultiCursor, - "RemoveAllMultiCursors": (*BufActionHandler).RemoveAllMultiCursors, - "SkipMultiCursor": (*BufActionHandler).SkipMultiCursor, - "JumpToMatchingBrace": (*BufActionHandler).JumpToMatchingBrace, - - // This was changed to InsertNewline but I don't want to break backwards compatibility - "InsertEnter": (*BufActionHandler).InsertNewline, -} -var BufMouseActions = map[string]BufMouseAction{ - "MousePress": (*BufActionHandler).MousePress, - "MouseMultiCursor": (*BufActionHandler).MouseMultiCursor, -} diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index e3118eb9..8f256c2f 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -2,15 +2,11 @@ package buffer import ( "bufio" - "bytes" "crypto/md5" - "encoding/gob" "errors" "io" "io/ioutil" "os" - "os/exec" - "os/signal" "path/filepath" "strings" "time" @@ -236,154 +232,6 @@ func (b *Buffer) ReOpen() error { // b.Cursor.Relocate() } -// Saving - -// Save saves the buffer to its default path -func (b *Buffer) Save() error { - return b.SaveAs(b.Path) -} - -// SaveAs saves the buffer to a specified path (filename), creating the file if it does not exist -func (b *Buffer) SaveAs(filename string) error { - // TODO: rmtrailingws and updaterules - b.UpdateRules() - // if b.Settings["rmtrailingws"].(bool) { - // for i, l := range b.lines { - // pos := len(bytes.TrimRightFunc(l.data, unicode.IsSpace)) - // - // if pos < len(l.data) { - // b.deleteToEnd(Loc{pos, i}) - // } - // } - // - // b.Cursor.Relocate() - // } - - if b.Settings["eofnewline"].(bool) { - end := b.End() - if b.RuneAt(Loc{end.X - 1, end.Y}) != '\n' { - b.Insert(end, "\n") - } - } - - // Update the last time this file was updated after saving - defer func() { - b.ModTime, _ = GetModTime(filename) - }() - - // Removes any tilde and replaces with the absolute path to home - absFilename, _ := ReplaceHome(filename) - - // TODO: save creates parent dirs - // // Get the leading path to the file | "." is returned if there's no leading path provided - // if dirname := filepath.Dir(absFilename); dirname != "." { - // // Check if the parent dirs don't exist - // if _, statErr := os.Stat(dirname); os.IsNotExist(statErr) { - // // Prompt to make sure they want to create the dirs that are missing - // if yes, canceled := messenger.YesNoPrompt("Parent folders \"" + dirname + "\" do not exist. Create them? (y,n)"); yes && !canceled { - // // Create all leading dir(s) since they don't exist - // if mkdirallErr := os.MkdirAll(dirname, os.ModePerm); mkdirallErr != nil { - // // If there was an error creating the dirs - // return mkdirallErr - // } - // } else { - // // If they canceled the creation of leading dirs - // return errors.New("Save aborted") - // } - // } - // } - - var fileSize int - - err := overwriteFile(absFilename, func(file io.Writer) (e error) { - if len(b.lines) == 0 { - return - } - - // end of line - var eol []byte - if b.Settings["fileformat"] == "dos" { - eol = []byte{'\r', '\n'} - } else { - eol = []byte{'\n'} - } - - // write lines - if fileSize, e = file.Write(b.lines[0].data); e != nil { - return - } - - for _, l := range b.lines[1:] { - if _, e = file.Write(eol); e != nil { - return - } - if _, e = file.Write(l.data); e != nil { - return - } - fileSize += len(eol) + len(l.data) - } - return - }) - - if err != nil { - return err - } - - if !b.Settings["fastdirty"].(bool) { - if fileSize > LargeFileThreshold { - // For large files 'fastdirty' needs to be on - b.Settings["fastdirty"] = true - } else { - calcHash(b, &b.origHash) - } - } - - b.Path = filename - absPath, _ := filepath.Abs(filename) - b.AbsPath = absPath - b.isModified = false - return b.Serialize() -} - -// SaveWithSudo saves the buffer to the default path with sudo -func (b *Buffer) SaveWithSudo() error { - return b.SaveAsWithSudo(b.Path) -} - -// SaveAsWithSudo is the same as SaveAs except it uses a neat trick -// with tee to use sudo so the user doesn't have to reopen micro with sudo -func (b *Buffer) SaveAsWithSudo(filename string) error { - b.UpdateRules() - b.Path = filename - absPath, _ := filepath.Abs(filename) - b.AbsPath = absPath - - // Set up everything for the command - cmd := exec.Command(config.GlobalSettings["sucmd"].(string), "tee", filename) - cmd.Stdin = bytes.NewBuffer(b.Bytes()) - - // This is a trap for Ctrl-C so that it doesn't kill micro - // Instead we trap Ctrl-C to kill the program we're running - c := make(chan os.Signal, 1) - signal.Notify(c, os.Interrupt) - go func() { - for range c { - cmd.Process.Kill() - } - }() - - // Start the command - cmd.Start() - err := cmd.Wait() - - if err == nil { - b.isModified = false - b.ModTime, _ = GetModTime(filename) - return b.Serialize() - } - return err -} - func (b *Buffer) SetCursors(c []*Cursor) { b.cursors = c } @@ -472,56 +320,6 @@ func calcHash(b *Buffer, out *[md5.Size]byte) { h.Sum((*out)[:0]) } -func init() { - gob.Register(TextEvent{}) - gob.Register(SerializedBuffer{}) -} - -// Serialize serializes the buffer to config.ConfigDir/buffers -func (b *Buffer) Serialize() error { - if !b.Settings["savecursor"].(bool) && !b.Settings["saveundo"].(bool) { - return nil - } - - name := config.ConfigDir + "/buffers/" + EscapePath(b.AbsPath) - - return overwriteFile(name, func(file io.Writer) error { - return gob.NewEncoder(file).Encode(SerializedBuffer{ - b.EventHandler, - b.GetActiveCursor().Loc, - b.ModTime, - }) - }) -} - -func (b *Buffer) Unserialize() error { - // If either savecursor or saveundo is turned on, we need to load the serialized information - // from ~/.config/micro/buffers - file, err := os.Open(config.ConfigDir + "/buffers/" + EscapePath(b.AbsPath)) - defer file.Close() - if err == nil { - var buffer SerializedBuffer - decoder := gob.NewDecoder(file) - gob.Register(TextEvent{}) - err = decoder.Decode(&buffer) - if err != nil { - return errors.New(err.Error() + "\nYou may want to remove the files in ~/.config/micro/buffers (these files store the information for the 'saveundo' and 'savecursor' options) if this problem persists.") - } - if b.Settings["savecursor"].(bool) { - b.StartCursor = buffer.Cursor - } - - if b.Settings["saveundo"].(bool) { - // We should only use last time's eventhandler if the file wasn't modified by someone else in the meantime - if b.ModTime == buffer.ModTime { - b.EventHandler = buffer.EventHandler - b.EventHandler.buf = b - } - } - } - return err -} - // UpdateRules updates the syntax rules and filetype for this buffer // This is called when the colorscheme changes func (b *Buffer) UpdateRules() { diff --git a/cmd/micro/buffer/save.go b/cmd/micro/buffer/save.go new file mode 100644 index 00000000..a2270434 --- /dev/null +++ b/cmd/micro/buffer/save.go @@ -0,0 +1,160 @@ +package buffer + +import ( + "bytes" + "io" + "os" + "os/exec" + "os/signal" + "path/filepath" + + . "github.com/zyedidia/micro/cmd/micro/util" + + "github.com/zyedidia/micro/cmd/micro/config" +) + +// Save saves the buffer to its default path +func (b *Buffer) Save() error { + return b.SaveAs(b.Path) +} + +// SaveAs saves the buffer to a specified path (filename), creating the file if it does not exist +func (b *Buffer) SaveAs(filename string) error { + // TODO: rmtrailingws and updaterules + b.UpdateRules() + // if b.Settings["rmtrailingws"].(bool) { + // for i, l := range b.lines { + // pos := len(bytes.TrimRightFunc(l.data, unicode.IsSpace)) + // + // if pos < len(l.data) { + // b.deleteToEnd(Loc{pos, i}) + // } + // } + // + // b.Cursor.Relocate() + // } + + if b.Settings["eofnewline"].(bool) { + end := b.End() + if b.RuneAt(Loc{end.X - 1, end.Y}) != '\n' { + b.Insert(end, "\n") + } + } + + // Update the last time this file was updated after saving + defer func() { + b.ModTime, _ = GetModTime(filename) + }() + + // Removes any tilde and replaces with the absolute path to home + absFilename, _ := ReplaceHome(filename) + + // TODO: save creates parent dirs + // // Get the leading path to the file | "." is returned if there's no leading path provided + // if dirname := filepath.Dir(absFilename); dirname != "." { + // // Check if the parent dirs don't exist + // if _, statErr := os.Stat(dirname); os.IsNotExist(statErr) { + // // Prompt to make sure they want to create the dirs that are missing + // if yes, canceled := messenger.YesNoPrompt("Parent folders \"" + dirname + "\" do not exist. Create them? (y,n)"); yes && !canceled { + // // Create all leading dir(s) since they don't exist + // if mkdirallErr := os.MkdirAll(dirname, os.ModePerm); mkdirallErr != nil { + // // If there was an error creating the dirs + // return mkdirallErr + // } + // } else { + // // If they canceled the creation of leading dirs + // return errors.New("Save aborted") + // } + // } + // } + + var fileSize int + + err := overwriteFile(absFilename, func(file io.Writer) (e error) { + if len(b.lines) == 0 { + return + } + + // end of line + var eol []byte + if b.Settings["fileformat"] == "dos" { + eol = []byte{'\r', '\n'} + } else { + eol = []byte{'\n'} + } + + // write lines + if fileSize, e = file.Write(b.lines[0].data); e != nil { + return + } + + for _, l := range b.lines[1:] { + if _, e = file.Write(eol); e != nil { + return + } + if _, e = file.Write(l.data); e != nil { + return + } + fileSize += len(eol) + len(l.data) + } + return + }) + + if err != nil { + return err + } + + if !b.Settings["fastdirty"].(bool) { + if fileSize > LargeFileThreshold { + // For large files 'fastdirty' needs to be on + b.Settings["fastdirty"] = true + } else { + calcHash(b, &b.origHash) + } + } + + b.Path = filename + absPath, _ := filepath.Abs(filename) + b.AbsPath = absPath + b.isModified = false + return b.Serialize() +} + +// SaveWithSudo saves the buffer to the default path with sudo +func (b *Buffer) SaveWithSudo() error { + return b.SaveAsWithSudo(b.Path) +} + +// SaveAsWithSudo is the same as SaveAs except it uses a neat trick +// with tee to use sudo so the user doesn't have to reopen micro with sudo +func (b *Buffer) SaveAsWithSudo(filename string) error { + b.UpdateRules() + b.Path = filename + absPath, _ := filepath.Abs(filename) + b.AbsPath = absPath + + // Set up everything for the command + cmd := exec.Command(config.GlobalSettings["sucmd"].(string), "tee", filename) + cmd.Stdin = bytes.NewBuffer(b.Bytes()) + + // This is a trap for Ctrl-C so that it doesn't kill micro + // Instead we trap Ctrl-C to kill the program we're running + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt) + go func() { + for range c { + cmd.Process.Kill() + } + }() + + // Start the command + cmd.Start() + err := cmd.Wait() + + if err == nil { + b.isModified = false + b.ModTime, _ = GetModTime(filename) + return b.Serialize() + } + return err +} diff --git a/cmd/micro/buffer/serialize.go b/cmd/micro/buffer/serialize.go new file mode 100644 index 00000000..d8fc4120 --- /dev/null +++ b/cmd/micro/buffer/serialize.go @@ -0,0 +1,61 @@ +package buffer + +import ( + "encoding/gob" + "errors" + "io" + "os" + + "github.com/zyedidia/micro/cmd/micro/config" + . "github.com/zyedidia/micro/cmd/micro/util" +) + +func init() { + gob.Register(TextEvent{}) + gob.Register(SerializedBuffer{}) +} + +// Serialize serializes the buffer to config.ConfigDir/buffers +func (b *Buffer) Serialize() error { + if !b.Settings["savecursor"].(bool) && !b.Settings["saveundo"].(bool) { + return nil + } + + name := config.ConfigDir + "/buffers/" + EscapePath(b.AbsPath) + + return overwriteFile(name, func(file io.Writer) error { + return gob.NewEncoder(file).Encode(SerializedBuffer{ + b.EventHandler, + b.GetActiveCursor().Loc, + b.ModTime, + }) + }) +} + +func (b *Buffer) Unserialize() error { + // If either savecursor or saveundo is turned on, we need to load the serialized information + // from ~/.config/micro/buffers + file, err := os.Open(config.ConfigDir + "/buffers/" + EscapePath(b.AbsPath)) + defer file.Close() + if err == nil { + var buffer SerializedBuffer + decoder := gob.NewDecoder(file) + gob.Register(TextEvent{}) + err = decoder.Decode(&buffer) + if err != nil { + return errors.New(err.Error() + "\nYou may want to remove the files in ~/.config/micro/buffers (these files store the information for the 'saveundo' and 'savecursor' options) if this problem persists.") + } + if b.Settings["savecursor"].(bool) { + b.StartCursor = buffer.Cursor + } + + if b.Settings["saveundo"].(bool) { + // We should only use last time's eventhandler if the file wasn't modified by someone else in the meantime + if b.ModTime == buffer.ModTime { + b.EventHandler = buffer.EventHandler + b.EventHandler.buf = b + } + } + } + return err +} diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index dca53a20..070c860d 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -6,6 +6,7 @@ import ( "os" "github.com/go-errors/errors" + "github.com/zyedidia/micro/cmd/micro/action" "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/screen" @@ -105,7 +106,7 @@ func main() { util.TermMessage(err) } config.InitGlobalSettings() - InitBindings() + action.InitBindings() err = config.InitColorscheme() if err != nil { util.TermMessage(err) @@ -126,7 +127,7 @@ func main() { } }() - TryBindKey("Ctrl-z", "Undo", true) + action.TryBindKey("Ctrl-z", "Undo", true) b, err := buffer.NewBufferFromFile(os.Args[1]) @@ -137,7 +138,7 @@ func main() { width, height := screen.Screen.Size() w := NewWindow(0, 0, width, height-1, b) - a := NewBufActionHandler(b, w) + a := action.NewBufHandler(b) // Here is the event loop which runs in a separate thread go func() { diff --git a/cmd/micro/statusline.go b/cmd/micro/statusline.go index 5def796d..0b8f7cab 100644 --- a/cmd/micro/statusline.go +++ b/cmd/micro/statusline.go @@ -8,6 +8,7 @@ import ( "strconv" "unicode/utf8" + "github.com/zyedidia/micro/cmd/micro/action" "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/screen" @@ -84,7 +85,7 @@ func (s *StatusLine) Display() { return []byte(fmt.Sprint(s.FindOpt(string(option)))) } else if bytes.HasPrefix(name, []byte("bind")) { binding := string(name[5:]) - for k, v := range bindings { + for k, v := range action.Bindings { if v == binding { return []byte(k) } From 06d596e780031331302ac7b8b4a85a74f1e668f4 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 28 Aug 2018 14:24:59 -0400 Subject: [PATCH 021/231] Synchronize screen --- cmd/micro/action/actions_posix.go | 11 ++--------- cmd/micro/micro.go | 3 ++- cmd/micro/screen/screen.go | 31 +++++++++++++++++++++++++++++-- cmd/micro/util/message.go | 10 ++-------- 4 files changed, 35 insertions(+), 20 deletions(-) diff --git a/cmd/micro/action/actions_posix.go b/cmd/micro/action/actions_posix.go index 8981685f..46eac8af 100644 --- a/cmd/micro/action/actions_posix.go +++ b/cmd/micro/action/actions_posix.go @@ -13,12 +13,7 @@ import ( // This only works on linux and has no default binding. // This code was adapted from the suspend code in nsf/godit func (*BufHandler) Suspend() bool { - screenWasNil := screen.Screen == nil - - if !screenWasNil { - screen.Screen.Fini() - screen.Screen = nil - } + screen.TempFini() // suspend the process pid := syscall.Getpid() @@ -27,9 +22,7 @@ func (*BufHandler) Suspend() bool { util.TermMessage(err) } - if !screenWasNil { - screen.Init() - } + screen.TempStart() return false } diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 070c860d..05d720ce 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -144,8 +144,9 @@ func main() { go func() { events = make(chan tcell.Event) for { - // TODO: fix race condition with screen.Screen = nil + screen.Lock() events <- screen.Screen.PollEvent() + screen.Unlock() } }() diff --git a/cmd/micro/screen/screen.go b/cmd/micro/screen/screen.go index 3653da32..3cba43f5 100644 --- a/cmd/micro/screen/screen.go +++ b/cmd/micro/screen/screen.go @@ -3,6 +3,7 @@ package screen import ( "fmt" "os" + "sync" "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/terminfo" @@ -10,6 +11,34 @@ import ( ) var Screen tcell.Screen +var lock sync.Mutex + +func Lock() { + lock.Lock() +} + +func Unlock() { + lock.Unlock() +} + +var screenWasNil bool + +func TempFini() { + screenWasNil := Screen == nil + + if !screenWasNil { + Lock() + Screen.Fini() + Screen = nil + } +} + +func TempStart() { + if !screenWasNil { + Init() + Unlock() + } +} // Init creates and initializes the tcell screen func Init() { @@ -64,6 +93,4 @@ func Init() { } os.Setenv("TCELLDB", tcelldb) - - // Screen.SetStyle(defStyle) } diff --git a/cmd/micro/util/message.go b/cmd/micro/util/message.go index 589dbbcd..2a1ddce1 100644 --- a/cmd/micro/util/message.go +++ b/cmd/micro/util/message.go @@ -16,11 +16,7 @@ import ( // This will write the message, and wait for the user // to press and key to continue func TermMessage(msg ...interface{}) { - screenWasNil := screen.Screen == nil - if !screenWasNil { - screen.Screen.Fini() - screen.Screen = nil - } + screen.TempFini() fmt.Println(msg...) fmt.Print("\nPress enter to continue") @@ -28,9 +24,7 @@ func TermMessage(msg ...interface{}) { reader := bufio.NewReader(os.Stdin) reader.ReadString('\n') - if !screenWasNil { - screen.Init() - } + screen.TempStart() } // TermError sends an error to the user in the terminal. Like TermMessage except formatted From 7d87e6db9985fdbb4a144b49ca66b75cc27ed56a Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 28 Aug 2018 18:44:52 -0400 Subject: [PATCH 022/231] More actions and window organization --- cmd/micro/action/actions.go | 309 +++++++++++++++++--------- cmd/micro/action/bufhandler.go | 41 ++-- cmd/micro/action/handler.go | 5 + cmd/micro/buffer/cursor.go | 149 +++++++++++++ cmd/micro/{ => display}/infobar.go | 2 +- cmd/micro/{ => display}/statusline.go | 6 +- cmd/micro/{ => display}/window.go | 86 ++++--- cmd/micro/editpane.go | 20 ++ cmd/micro/lua/lua.go | 2 +- cmd/micro/micro.go | 87 ++++++-- cmd/micro/util/util.go | 9 +- 11 files changed, 539 insertions(+), 177 deletions(-) rename cmd/micro/{ => display}/infobar.go (99%) rename cmd/micro/{ => display}/statusline.go (97%) rename cmd/micro/{ => display}/window.go (71%) create mode 100644 cmd/micro/editpane.go diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index db56279a..ec6c07bc 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -9,450 +9,553 @@ import ( // MousePress is the event that should happen when a normal click happens // This is almost always bound to left click -func (a *BufHandler) MousePress(e *tcell.EventMouse) bool { +func (h *BufHandler) MousePress(e *tcell.EventMouse) bool { return false } // ScrollUpAction scrolls the view up -func (a *BufHandler) ScrollUpAction() bool { +func (h *BufHandler) ScrollUpAction() bool { return false } // ScrollDownAction scrolls the view up -func (a *BufHandler) ScrollDownAction() bool { +func (h *BufHandler) ScrollDownAction() bool { return false } // Center centers the view on the cursor -func (a *BufHandler) Center() bool { +func (h *BufHandler) Center() bool { return true } // CursorUp moves the cursor up -func (a *BufHandler) CursorUp() bool { - a.Cursor.Deselect(true) - a.Cursor.Up() +func (h *BufHandler) CursorUp() bool { + h.Cursor.Deselect(true) + h.Cursor.Up() return true } // CursorDown moves the cursor down -func (a *BufHandler) CursorDown() bool { - a.Cursor.Deselect(true) - a.Cursor.Down() +func (h *BufHandler) CursorDown() bool { + h.Cursor.Deselect(true) + h.Cursor.Down() return true } // CursorLeft moves the cursor left -func (a *BufHandler) CursorLeft() bool { - a.Cursor.Deselect(true) - a.Cursor.Left() +func (h *BufHandler) CursorLeft() bool { + h.Cursor.Deselect(true) + h.Cursor.Left() return true } // CursorRight moves the cursor right -func (a *BufHandler) CursorRight() bool { - a.Cursor.Deselect(true) - a.Cursor.Right() +func (h *BufHandler) CursorRight() bool { + h.Cursor.Deselect(true) + h.Cursor.Right() return true } // WordRight moves the cursor one word to the right -func (a *BufHandler) WordRight() bool { +func (h *BufHandler) WordRight() bool { + h.Cursor.Deselect(true) + h.Cursor.WordRight() return true } // WordLeft moves the cursor one word to the left -func (a *BufHandler) WordLeft() bool { +func (h *BufHandler) WordLeft() bool { + h.Cursor.Deselect(true) + h.Cursor.WordLeft() return true } // SelectUp selects up one line -func (a *BufHandler) SelectUp() bool { +func (h *BufHandler) SelectUp() bool { + if !h.Cursor.HasSelection() { + h.Cursor.OrigSelection[0] = h.Cursor.Loc + } + h.Cursor.Up() + h.Cursor.SelectTo(h.Cursor.Loc) return true } // SelectDown selects down one line -func (a *BufHandler) SelectDown() bool { +func (h *BufHandler) SelectDown() bool { + if !h.Cursor.HasSelection() { + h.Cursor.OrigSelection[0] = h.Cursor.Loc + } + h.Cursor.Down() + h.Cursor.SelectTo(h.Cursor.Loc) return true } // SelectLeft selects the character to the left of the cursor -func (a *BufHandler) SelectLeft() bool { +func (h *BufHandler) SelectLeft() bool { + loc := h.Cursor.Loc + count := h.Buf.End() + if loc.GreaterThan(count) { + loc = count + } + if !h.Cursor.HasSelection() { + h.Cursor.OrigSelection[0] = loc + } + h.Cursor.Left() + h.Cursor.SelectTo(h.Cursor.Loc) return true } // SelectRight selects the character to the right of the cursor -func (a *BufHandler) SelectRight() bool { +func (h *BufHandler) SelectRight() bool { + loc := h.Cursor.Loc + count := h.Buf.End() + if loc.GreaterThan(count) { + loc = count + } + if !h.Cursor.HasSelection() { + h.Cursor.OrigSelection[0] = loc + } + h.Cursor.Right() + h.Cursor.SelectTo(h.Cursor.Loc) return true } // SelectWordRight selects the word to the right of the cursor -func (a *BufHandler) SelectWordRight() bool { +func (h *BufHandler) SelectWordRight() bool { + if !h.Cursor.HasSelection() { + h.Cursor.OrigSelection[0] = h.Cursor.Loc + } + h.Cursor.WordRight() + h.Cursor.SelectTo(h.Cursor.Loc) return true } // SelectWordLeft selects the word to the left of the cursor -func (a *BufHandler) SelectWordLeft() bool { +func (h *BufHandler) SelectWordLeft() bool { + if !h.Cursor.HasSelection() { + h.Cursor.OrigSelection[0] = h.Cursor.Loc + } + h.Cursor.WordLeft() + h.Cursor.SelectTo(h.Cursor.Loc) return true } // StartOfLine moves the cursor to the start of the line -func (a *BufHandler) StartOfLine() bool { +func (h *BufHandler) StartOfLine() bool { + h.Cursor.Deselect(true) + if h.Cursor.X != 0 { + h.Cursor.Start() + } else { + h.Cursor.StartOfText() + } return true } // EndOfLine moves the cursor to the end of the line -func (a *BufHandler) EndOfLine() bool { +func (h *BufHandler) EndOfLine() bool { + h.Cursor.Deselect(true) + h.Cursor.End() return true } // SelectLine selects the entire current line -func (a *BufHandler) SelectLine() bool { +func (h *BufHandler) SelectLine() bool { + h.Cursor.SelectLine() return true } // SelectToStartOfLine selects to the start of the current line -func (a *BufHandler) SelectToStartOfLine() bool { +func (h *BufHandler) SelectToStartOfLine() bool { + if !h.Cursor.HasSelection() { + h.Cursor.OrigSelection[0] = h.Cursor.Loc + } + h.Cursor.Start() + h.Cursor.SelectTo(h.Cursor.Loc) return true } // SelectToEndOfLine selects to the end of the current line -func (a *BufHandler) SelectToEndOfLine() bool { +func (h *BufHandler) SelectToEndOfLine() bool { + if !h.Cursor.HasSelection() { + h.Cursor.OrigSelection[0] = h.Cursor.Loc + } + h.Cursor.End() + h.Cursor.SelectTo(h.Cursor.Loc) return true } // ParagraphPrevious moves the cursor to the previous empty line, or beginning of the buffer if there's none -func (a *BufHandler) ParagraphPrevious() bool { +func (h *BufHandler) ParagraphPrevious() bool { + var line int + for line = h.Cursor.Y; line > 0; line-- { + if len(h.Buf.LineBytes(line)) == 0 && line != h.Cursor.Y { + h.Cursor.X = 0 + h.Cursor.Y = line + break + } + } + // If no empty line found. move cursor to end of buffer + if line == 0 { + h.Cursor.Loc = h.Buf.Start() + } return true } // ParagraphNext moves the cursor to the next empty line, or end of the buffer if there's none -func (a *BufHandler) ParagraphNext() bool { +func (h *BufHandler) ParagraphNext() bool { + var line int + for line = h.Cursor.Y; line < h.Buf.LinesNum(); line++ { + if len(h.Buf.LineBytes(line)) == 0 && line != h.Cursor.Y { + h.Cursor.X = 0 + h.Cursor.Y = line + break + } + } + // If no empty line found. move cursor to end of buffer + if line == h.Buf.LinesNum() { + h.Cursor.Loc = h.Buf.End() + } return true } // Retab changes all tabs to spaces or all spaces to tabs depending // on the user's settings -func (a *BufHandler) Retab() bool { +func (h *BufHandler) Retab() bool { return true } // CursorStart moves the cursor to the start of the buffer -func (a *BufHandler) CursorStart() bool { +func (h *BufHandler) CursorStart() bool { + h.Cursor.Deselect(true) + h.Cursor.X = 0 + h.Cursor.Y = 0 return true } // CursorEnd moves the cursor to the end of the buffer -func (a *BufHandler) CursorEnd() bool { +func (h *BufHandler) CursorEnd() bool { + h.Cursor.Deselect(true) + h.Cursor.Loc = h.Buf.End() + h.Cursor.StoreVisualX() return true } // SelectToStart selects the text from the cursor to the start of the buffer -func (a *BufHandler) SelectToStart() bool { +func (h *BufHandler) SelectToStart() bool { + if !h.Cursor.HasSelection() { + h.Cursor.OrigSelection[0] = h.Cursor.Loc + } + h.CursorStart() + h.Cursor.SelectTo(h.Buf.Start()) return true } // SelectToEnd selects the text from the cursor to the end of the buffer -func (a *BufHandler) SelectToEnd() bool { +func (h *BufHandler) SelectToEnd() bool { + if !h.Cursor.HasSelection() { + h.Cursor.OrigSelection[0] = h.Cursor.Loc + } + h.CursorEnd() + h.Cursor.SelectTo(h.Buf.End()) return true } // InsertSpace inserts a space -func (a *BufHandler) InsertSpace() bool { +func (h *BufHandler) InsertSpace() bool { return true } // InsertNewline inserts a newline plus possible some whitespace if autoindent is on -func (a *BufHandler) InsertNewline() bool { +func (h *BufHandler) InsertNewline() bool { return true } // Backspace deletes the previous character -func (a *BufHandler) Backspace() bool { +func (h *BufHandler) Backspace() bool { return true } // DeleteWordRight deletes the word to the right of the cursor -func (a *BufHandler) DeleteWordRight() bool { +func (h *BufHandler) DeleteWordRight() bool { return true } // DeleteWordLeft deletes the word to the left of the cursor -func (a *BufHandler) DeleteWordLeft() bool { +func (h *BufHandler) DeleteWordLeft() bool { return true } // Delete deletes the next character -func (a *BufHandler) Delete() bool { +func (h *BufHandler) Delete() bool { return true } // IndentSelection indents the current selection -func (a *BufHandler) IndentSelection() bool { +func (h *BufHandler) IndentSelection() bool { return false } // OutdentLine moves the current line back one indentation -func (a *BufHandler) OutdentLine() bool { +func (h *BufHandler) OutdentLine() bool { return true } // OutdentSelection takes the current selection and moves it back one indent level -func (a *BufHandler) OutdentSelection() bool { +func (h *BufHandler) OutdentSelection() bool { return false } // InsertTab inserts a tab or spaces -func (a *BufHandler) InsertTab() bool { +func (h *BufHandler) InsertTab() bool { return true } // SaveAll saves all open buffers -func (a *BufHandler) SaveAll() bool { +func (h *BufHandler) SaveAll() bool { return false } // Save the buffer to disk -func (a *BufHandler) Save() bool { +func (h *BufHandler) Save() bool { return false } // SaveAs saves the buffer to disk with the given name -func (a *BufHandler) SaveAs() bool { +func (h *BufHandler) SaveAs() bool { return false } // Find opens a prompt and searches forward for the input -func (a *BufHandler) Find() bool { +func (h *BufHandler) Find() bool { return true } // FindNext searches forwards for the last used search term -func (a *BufHandler) FindNext() bool { +func (h *BufHandler) FindNext() bool { return true } // FindPrevious searches backwards for the last used search term -func (a *BufHandler) FindPrevious() bool { +func (h *BufHandler) FindPrevious() bool { return true } // Undo undoes the last action -func (a *BufHandler) Undo() bool { +func (h *BufHandler) Undo() bool { return true } // Redo redoes the last action -func (a *BufHandler) Redo() bool { +func (h *BufHandler) Redo() bool { return true } // Copy the selection to the system clipboard -func (a *BufHandler) Copy() bool { +func (h *BufHandler) Copy() bool { return true } // CutLine cuts the current line to the clipboard -func (a *BufHandler) CutLine() bool { +func (h *BufHandler) CutLine() bool { return true } // Cut the selection to the system clipboard -func (a *BufHandler) Cut() bool { +func (h *BufHandler) Cut() bool { return true } // DuplicateLine duplicates the current line or selection -func (a *BufHandler) DuplicateLine() bool { +func (h *BufHandler) DuplicateLine() bool { return true } // DeleteLine deletes the current line -func (a *BufHandler) DeleteLine() bool { +func (h *BufHandler) DeleteLine() bool { return true } // MoveLinesUp moves up the current line or selected lines if any -func (a *BufHandler) MoveLinesUp() bool { +func (h *BufHandler) MoveLinesUp() bool { return true } // MoveLinesDown moves down the current line or selected lines if any -func (a *BufHandler) MoveLinesDown() bool { +func (h *BufHandler) MoveLinesDown() bool { return true } // Paste whatever is in the system clipboard into the buffer // Delete and paste if the user has a selection -func (a *BufHandler) Paste() bool { +func (h *BufHandler) Paste() bool { return true } // PastePrimary pastes from the primary clipboard (only use on linux) -func (a *BufHandler) PastePrimary() bool { +func (h *BufHandler) PastePrimary() bool { return true } // JumpToMatchingBrace moves the cursor to the matching brace if it is // currently on a brace -func (a *BufHandler) JumpToMatchingBrace() bool { +func (h *BufHandler) JumpToMatchingBrace() bool { return true } // SelectAll selects the entire buffer -func (a *BufHandler) SelectAll() bool { +func (h *BufHandler) SelectAll() bool { return true } // OpenFile opens a new file in the buffer -func (a *BufHandler) OpenFile() bool { +func (h *BufHandler) OpenFile() bool { return false } // Start moves the viewport to the start of the buffer -func (a *BufHandler) Start() bool { +func (h *BufHandler) Start() bool { return false } // End moves the viewport to the end of the buffer -func (a *BufHandler) End() bool { +func (h *BufHandler) End() bool { return false } // PageUp scrolls the view up a page -func (a *BufHandler) PageUp() bool { +func (h *BufHandler) PageUp() bool { return false } // PageDown scrolls the view down a page -func (a *BufHandler) PageDown() bool { +func (h *BufHandler) PageDown() bool { return false } // SelectPageUp selects up one page -func (a *BufHandler) SelectPageUp() bool { +func (h *BufHandler) SelectPageUp() bool { return true } // SelectPageDown selects down one page -func (a *BufHandler) SelectPageDown() bool { +func (h *BufHandler) SelectPageDown() bool { return true } // CursorPageUp places the cursor a page up -func (a *BufHandler) CursorPageUp() bool { +func (h *BufHandler) CursorPageUp() bool { return true } // CursorPageDown places the cursor a page up -func (a *BufHandler) CursorPageDown() bool { +func (h *BufHandler) CursorPageDown() bool { return true } // HalfPageUp scrolls the view up half a page -func (a *BufHandler) HalfPageUp() bool { +func (h *BufHandler) HalfPageUp() bool { return false } // HalfPageDown scrolls the view down half a page -func (a *BufHandler) HalfPageDown() bool { +func (h *BufHandler) HalfPageDown() bool { return false } // ToggleRuler turns line numbers off and on -func (a *BufHandler) ToggleRuler() bool { +func (h *BufHandler) ToggleRuler() bool { return false } // JumpLine jumps to a line and moves the view accordingly. -func (a *BufHandler) JumpLine() bool { +func (h *BufHandler) JumpLine() bool { return false } // ClearStatus clears the messenger bar -func (a *BufHandler) ClearStatus() bool { +func (h *BufHandler) ClearStatus() bool { return false } // ToggleHelp toggles the help screen -func (a *BufHandler) ToggleHelp() bool { +func (h *BufHandler) ToggleHelp() bool { return true } // ToggleKeyMenu toggles the keymenu option and resizes all tabs -func (a *BufHandler) ToggleKeyMenu() bool { +func (h *BufHandler) ToggleKeyMenu() bool { return true } // ShellMode opens a terminal to run a shell command -func (a *BufHandler) ShellMode() bool { +func (h *BufHandler) ShellMode() bool { return false } // CommandMode lets the user enter a command -func (a *BufHandler) CommandMode() bool { +func (h *BufHandler) CommandMode() bool { return false } // ToggleOverwriteMode lets the user toggle the text overwrite mode -func (a *BufHandler) ToggleOverwriteMode() bool { +func (h *BufHandler) ToggleOverwriteMode() bool { return false } // Escape leaves current mode -func (a *BufHandler) Escape() bool { +func (h *BufHandler) Escape() bool { return false } // Quit this will close the current tab or view that is open -func (a *BufHandler) Quit() bool { +func (h *BufHandler) Quit() bool { screen.Screen.Fini() os.Exit(0) return false } // QuitAll quits the whole editor; all splits and tabs -func (a *BufHandler) QuitAll() bool { +func (h *BufHandler) QuitAll() bool { return false } // AddTab adds a new tab with an empty buffer -func (a *BufHandler) AddTab() bool { +func (h *BufHandler) AddTab() bool { return true } // PreviousTab switches to the previous tab in the tab list -func (a *BufHandler) PreviousTab() bool { +func (h *BufHandler) PreviousTab() bool { return false } // NextTab switches to the next tab in the tab list -func (a *BufHandler) NextTab() bool { +func (h *BufHandler) NextTab() bool { return false } // VSplitBinding opens an empty vertical split -func (a *BufHandler) VSplitBinding() bool { +func (h *BufHandler) VSplitBinding() bool { return false } // HSplitBinding opens an empty horizontal split -func (a *BufHandler) HSplitBinding() bool { +func (h *BufHandler) HSplitBinding() bool { return false } // Unsplit closes all splits in the current tab except the active one -func (a *BufHandler) Unsplit() bool { +func (h *BufHandler) Unsplit() bool { return false } // NextSplit changes the view to the next split -func (a *BufHandler) NextSplit() bool { +func (h *BufHandler) NextSplit() bool { return false } // PreviousSplit changes the view to the previous split -func (a *BufHandler) PreviousSplit() bool { +func (h *BufHandler) PreviousSplit() bool { return false } @@ -460,41 +563,41 @@ var curMacro []interface{} var recordingMacro bool // ToggleMacro toggles recording of a macro -func (a *BufHandler) ToggleMacro() bool { +func (h *BufHandler) ToggleMacro() bool { return true } // PlayMacro plays back the most recently recorded macro -func (a *BufHandler) PlayMacro() bool { +func (h *BufHandler) PlayMacro() bool { return true } // SpawnMultiCursor creates a new multiple cursor at the next occurrence of the current selection or current word -func (a *BufHandler) SpawnMultiCursor() bool { +func (h *BufHandler) SpawnMultiCursor() bool { return false } // SpawnMultiCursorSelect adds a cursor at the beginning of each line of a selection -func (a *BufHandler) SpawnMultiCursorSelect() bool { +func (h *BufHandler) SpawnMultiCursorSelect() bool { return false } // MouseMultiCursor is a mouse action which puts a new cursor at the mouse position -func (a *BufHandler) MouseMultiCursor(e *tcell.EventMouse) bool { +func (h *BufHandler) MouseMultiCursor(e *tcell.EventMouse) bool { return false } // SkipMultiCursor moves the current multiple cursor to the next available position -func (a *BufHandler) SkipMultiCursor() bool { +func (h *BufHandler) SkipMultiCursor() bool { return false } // RemoveMultiCursor removes the latest multiple cursor -func (a *BufHandler) RemoveMultiCursor() bool { +func (h *BufHandler) RemoveMultiCursor() bool { return false } // RemoveAllMultiCursors removes all cursors except the base cursor -func (a *BufHandler) RemoveAllMultiCursors() bool { +func (h *BufHandler) RemoveAllMultiCursors() bool { return false } diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index e6951a2f..4fea0e64 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -36,6 +36,9 @@ type BufHandler struct { cursors []*buffer.Cursor Cursor *buffer.Cursor // the active cursor + StartLine int // Vertical scrolling + StartCol int // Horizontal scrolling + // Since tcell doesn't differentiate between a mouse release event // and a mouse move event with no keys pressed, we need to keep // track of whether or not the mouse was pressed (or not released) last event to determine @@ -65,22 +68,22 @@ type BufHandler struct { } func NewBufHandler(buf *buffer.Buffer) *BufHandler { - a := new(BufHandler) - a.Buf = buf + h := new(BufHandler) + h.Buf = buf - a.cursors = []*buffer.Cursor{&buffer.Cursor{ + h.cursors = []*buffer.Cursor{&buffer.Cursor{ Buf: buf, Loc: buf.StartCursor, }} - a.Cursor = a.cursors[0] + h.Cursor = h.cursors[0] - buf.SetCursors(a.cursors) - return a + buf.SetCursors(h.cursors) + return h } // HandleEvent executes the tcell event properly // TODO: multiple actions bound to one key -func (a *BufHandler) HandleEvent(event tcell.Event) { +func (h *BufHandler) HandleEvent(event tcell.Event) { switch e := event.(type) { case *tcell.EventKey: ke := KeyEvent{ @@ -88,20 +91,32 @@ func (a *BufHandler) HandleEvent(event tcell.Event) { mod: e.Modifiers(), r: e.Rune(), } - if action, ok := BufKeyBindings[ke]; ok { - action(a) - } + h.DoKeyEvent(ke) case *tcell.EventMouse: me := MouseEvent{ btn: e.Buttons(), mod: e.Modifiers(), } - if action, ok := BufMouseBindings[me]; ok { - action(a, e) - } + h.DoMouseEvent(me, e) } } +func (h *BufHandler) DoKeyEvent(e KeyEvent) bool { + if action, ok := BufKeyBindings[e]; ok { + action(h) + return true + } + return false +} + +func (h *BufHandler) DoMouseEvent(e MouseEvent, te *tcell.EventMouse) bool { + if action, ok := BufMouseBindings[e]; ok { + action(h, te) + return true + } + return false +} + var BufKeyActions = map[string]BufKeyAction{ "CursorUp": (*BufHandler).CursorUp, "CursorDown": (*BufHandler).CursorDown, diff --git a/cmd/micro/action/handler.go b/cmd/micro/action/handler.go index 447fe79e..2a366c1d 100644 --- a/cmd/micro/action/handler.go +++ b/cmd/micro/action/handler.go @@ -31,8 +31,13 @@ type MouseEvent struct { mod tcell.ModMask } +type KeyAction func(Handler) bool +type MouseAction func(Handler, tcell.EventMouse) bool + // A Handler will take a tcell event and execute it // appropriately type Handler interface { + // DoKeyEvent(KeyEvent) bool + // DoMouseEvent(MouseEvent, *tcell.EventMouse) (MouseAction, bool) HandleEvent(tcell.Event) } diff --git a/cmd/micro/buffer/cursor.go b/cmd/micro/buffer/cursor.go index 78faf45b..ce257244 100644 --- a/cmd/micro/buffer/cursor.go +++ b/cmd/micro/buffer/cursor.go @@ -107,6 +107,18 @@ func (c *Cursor) Start() { c.LastVisualX = c.GetVisualX() } +// StartOfText moves the cursor to the first non-whitespace rune of +// the line it is on +func (c *Cursor) StartOfText() { + c.Start() + for util.IsWhitespace(c.RuneUnder(c.X)) { + if c.X == utf8.RuneCount(c.Buf.LineBytes(c.Y)) { + break + } + c.Right() + } +} + // End moves the cursor to the end of the line it is on func (c *Cursor) End() { c.X = utf8.RuneCount(c.Buf.LineBytes(c.Y)) @@ -296,6 +308,143 @@ func (c *Cursor) Relocate() { } } +// SelectWord selects the word the cursor is currently on +func (c *Cursor) SelectWord() { + if len(c.Buf.LineBytes(c.Y)) == 0 { + return + } + + if !util.IsWordChar(c.RuneUnder(c.X)) { + c.SetSelectionStart(c.Loc) + c.SetSelectionEnd(c.Loc.Move(1, c.Buf)) + c.OrigSelection = c.CurSelection + return + } + + forward, backward := c.X, c.X + + for backward > 0 && util.IsWordChar(c.RuneUnder(backward-1)) { + backward-- + } + + c.SetSelectionStart(Loc{backward, c.Y}) + c.OrigSelection[0] = c.CurSelection[0] + + lineLen := utf8.RuneCount(c.Buf.LineBytes(c.Y)) - 1 + for forward < lineLen && util.IsWordChar(c.RuneUnder(forward+1)) { + forward++ + } + + c.SetSelectionEnd(Loc{forward, c.Y}.Move(1, c.Buf)) + c.OrigSelection[1] = c.CurSelection[1] + c.Loc = c.CurSelection[1] +} + +// AddWordToSelection adds the word the cursor is currently on +// to the selection +func (c *Cursor) AddWordToSelection() { + if c.Loc.GreaterThan(c.OrigSelection[0]) && c.Loc.LessThan(c.OrigSelection[1]) { + c.CurSelection = c.OrigSelection + return + } + + if c.Loc.LessThan(c.OrigSelection[0]) { + backward := c.X + + for backward > 0 && util.IsWordChar(c.RuneUnder(backward-1)) { + backward-- + } + + c.SetSelectionStart(Loc{backward, c.Y}) + c.SetSelectionEnd(c.OrigSelection[1]) + } + + if c.Loc.GreaterThan(c.OrigSelection[1]) { + forward := c.X + + lineLen := utf8.RuneCount(c.Buf.LineBytes(c.Y)) - 1 + for forward < lineLen && util.IsWordChar(c.RuneUnder(forward+1)) { + forward++ + } + + c.SetSelectionEnd(Loc{forward, c.Y}.Move(1, c.Buf)) + c.SetSelectionStart(c.OrigSelection[0]) + } + + c.Loc = c.CurSelection[1] +} + +// SelectTo selects from the current cursor location to the given +// location +func (c *Cursor) SelectTo(loc Loc) { + if loc.GreaterThan(c.OrigSelection[0]) { + c.SetSelectionStart(c.OrigSelection[0]) + c.SetSelectionEnd(loc) + } else { + c.SetSelectionStart(loc) + c.SetSelectionEnd(c.OrigSelection[0]) + } +} + +// WordRight moves the cursor one word to the right +func (c *Cursor) WordRight() { + for util.IsWhitespace(c.RuneUnder(c.X)) { + if c.X == utf8.RuneCount(c.Buf.LineBytes(c.Y)) { + c.Right() + return + } + c.Right() + } + c.Right() + for util.IsWordChar(c.RuneUnder(c.X)) { + if c.X == utf8.RuneCount(c.Buf.LineBytes(c.Y)) { + return + } + c.Right() + } +} + +// WordLeft moves the cursor one word to the left +func (c *Cursor) WordLeft() { + c.Left() + for util.IsWhitespace(c.RuneUnder(c.X)) { + if c.X == 0 { + return + } + c.Left() + } + c.Left() + for util.IsWordChar(c.RuneUnder(c.X)) { + if c.X == 0 { + return + } + c.Left() + } + c.Right() +} + +// RuneUnder returns the rune under the given x position +func (c *Cursor) RuneUnder(x int) rune { + line := c.Buf.LineBytes(c.Y) + if len(line) == 0 || x >= utf8.RuneCount(line) { + return '\n' + } else if x < 0 { + x = 0 + } + i := 0 + for len(line) > 0 { + r, size := utf8.DecodeRune(line) + line = line[size:] + + if i == x { + return r + } + + i++ + } + return '\n' +} + func (c *Cursor) StoreVisualX() { c.LastVisualX = c.GetVisualX() } diff --git a/cmd/micro/infobar.go b/cmd/micro/display/infobar.go similarity index 99% rename from cmd/micro/infobar.go rename to cmd/micro/display/infobar.go index 4e231646..15049413 100644 --- a/cmd/micro/infobar.go +++ b/cmd/micro/display/infobar.go @@ -1,4 +1,4 @@ -package main +package display import ( "fmt" diff --git a/cmd/micro/statusline.go b/cmd/micro/display/statusline.go similarity index 97% rename from cmd/micro/statusline.go rename to cmd/micro/display/statusline.go index 0b8f7cab..c98950d1 100644 --- a/cmd/micro/statusline.go +++ b/cmd/micro/display/statusline.go @@ -1,4 +1,4 @@ -package main +package display import ( "bytes" @@ -23,13 +23,13 @@ type StatusLine struct { FormatRight string Info map[string]func(*buffer.Buffer) string - win *Window + win *BufWindow } // TODO: plugin modify status line formatter // NewStatusLine returns a statusline bound to a window -func NewStatusLine(win *Window) *StatusLine { +func NewStatusLine(win *BufWindow) *StatusLine { s := new(StatusLine) s.FormatLeft = "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat)" // s.FormatLeft = "$(filename) $(modified)(line,col) $(opt:filetype) $(opt:fileformat)" diff --git a/cmd/micro/window.go b/cmd/micro/display/window.go similarity index 71% rename from cmd/micro/window.go rename to cmd/micro/display/window.go index b9cddaae..404733f5 100644 --- a/cmd/micro/window.go +++ b/cmd/micro/display/window.go @@ -1,4 +1,4 @@ -package main +package display import ( "strconv" @@ -12,7 +12,12 @@ import ( "github.com/zyedidia/tcell" ) -type Window struct { +type Window interface { + Display() + Clear() +} + +type BufWindow struct { // X and Y coordinates for the top left of the window X int Y int @@ -32,8 +37,8 @@ type Window struct { sline *StatusLine } -func NewWindow(x, y, width, height int, buf *buffer.Buffer) *Window { - w := new(Window) +func NewBufWindow(x, y, width, height int, buf *buffer.Buffer) *BufWindow { + w := new(BufWindow) w.X, w.Y, w.Width, w.Height, w.Buf = x, y, width, height, buf w.sline = NewStatusLine(w) @@ -41,7 +46,7 @@ func NewWindow(x, y, width, height int, buf *buffer.Buffer) *Window { return w } -func (w *Window) Clear() { +func (w *BufWindow) Clear() { for y := 0; y < w.Height; y++ { for x := 0; x < w.Width; x++ { screen.Screen.SetContent(w.X+x, w.Y+y, ' ', nil, config.DefStyle) @@ -49,7 +54,7 @@ func (w *Window) Clear() { } } -func (w *Window) DrawLineNum(lineNumStyle tcell.Style, softwrapped bool, maxLineNumLength int, vloc *buffer.Loc, bloc *buffer.Loc) { +func (w *BufWindow) drawLineNum(lineNumStyle tcell.Style, softwrapped bool, maxLineNumLength int, vloc *buffer.Loc, bloc *buffer.Loc) { lineNum := strconv.Itoa(bloc.Y + 1) // Write the spaces before the line number if necessary @@ -72,9 +77,9 @@ func (w *Window) DrawLineNum(lineNumStyle tcell.Style, softwrapped bool, maxLine vloc.X++ } -// GetStyle returns the highlight style for the given character position +// getStyle returns the highlight style for the given character position // If there is no change to the current highlight style it just returns that -func (w *Window) GetStyle(style tcell.Style, bloc buffer.Loc, r rune) tcell.Style { +func (w *BufWindow) getStyle(style tcell.Style, bloc buffer.Loc, r rune) tcell.Style { if group, ok := w.Buf.Match(bloc.Y)[bloc.X]; ok { s := config.GetColor(group.String()) return s @@ -82,7 +87,7 @@ func (w *Window) GetStyle(style tcell.Style, bloc buffer.Loc, r rune) tcell.Styl return style } -func (w *Window) ShowCursor(x, y int, main bool) { +func (w *BufWindow) showCursor(x, y int, main bool) { if main { screen.Screen.ShowCursor(x, y) } else { @@ -91,8 +96,8 @@ func (w *Window) ShowCursor(x, y int, main bool) { } } -// DisplayBuffer draws the buffer being shown in this window on the screen.Screen -func (w *Window) DisplayBuffer() { +// displayBuffer draws the buffer being shown in this window on the screen.Screen +func (w *BufWindow) displayBuffer() { b := w.Buf bufHeight := w.Height @@ -132,30 +137,48 @@ func (w *Window) DisplayBuffer() { // this represents the current draw position in the buffer (char positions) bloc := buffer.Loc{w.StartCol, w.StartLine} + activeC := w.Buf.GetActiveCursor() + curStyle := config.DefStyle for vloc.Y = 0; vloc.Y < bufHeight; vloc.Y++ { vloc.X = 0 if b.Settings["ruler"].(bool) { - w.DrawLineNum(lineNumStyle, false, maxLineNumLength, &vloc, &bloc) + w.drawLineNum(lineNumStyle, false, maxLineNumLength, &vloc, &bloc) } line := b.LineBytes(bloc.Y) line, nColsBeforeStart := util.SliceVisualEnd(line, bloc.X, tabsize) - totalwidth := bloc.X - nColsBeforeStart - for len(line) > 0 { - if w.Buf.GetActiveCursor().X == bloc.X && w.Buf.GetActiveCursor().Y == bloc.Y { - w.ShowCursor(vloc.X, vloc.Y, true) - } - - r, size := utf8.DecodeRune(line) - - curStyle = w.GetStyle(curStyle, bloc, r) + draw := func(r rune, style tcell.Style) { if nColsBeforeStart <= 0 { - screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, r, nil, curStyle) + if activeC.HasSelection() && + (bloc.GreaterEqual(activeC.CurSelection[0]) && bloc.LessThan(activeC.CurSelection[1]) || + bloc.LessThan(activeC.CurSelection[0]) && bloc.GreaterEqual(activeC.CurSelection[1])) { + // The current character is selected + style = config.DefStyle.Reverse(true) + + if s, ok := config.Colorscheme["selection"]; ok { + style = s + } + + } + + screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, r, nil, style) vloc.X++ } nColsBeforeStart-- + } + + totalwidth := bloc.X - nColsBeforeStart + for len(line) > 0 { + if activeC.X == bloc.X && activeC.Y == bloc.Y { + w.showCursor(vloc.X, vloc.Y, true) + } + + r, size := utf8.DecodeRune(line) + curStyle = w.getStyle(curStyle, bloc, r) + + draw(r, curStyle) width := 0 @@ -175,11 +198,7 @@ func (w *Window) DisplayBuffer() { // Draw any extra characters either spaces for tabs or @ for incomplete wide runes if width > 1 { for i := 1; i < width; i++ { - if nColsBeforeStart <= 0 { - screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, char, nil, curStyle) - vloc.X++ - } - nColsBeforeStart-- + draw(char, curStyle) } } totalwidth += width @@ -195,12 +214,12 @@ func (w *Window) DisplayBuffer() { } vloc.X = 0 // This will draw an empty line number because the current line is wrapped - w.DrawLineNum(lineNumStyle, true, maxLineNumLength, &vloc, &bloc) + w.drawLineNum(lineNumStyle, true, maxLineNumLength, &vloc, &bloc) } } } - if w.Buf.GetActiveCursor().X == bloc.X && w.Buf.GetActiveCursor().Y == bloc.Y { - w.ShowCursor(vloc.X, vloc.Y, true) + if activeC.X == bloc.X && activeC.Y == bloc.Y { + w.showCursor(vloc.X, vloc.Y, true) } bloc.X = w.StartCol bloc.Y++ @@ -210,6 +229,11 @@ func (w *Window) DisplayBuffer() { } } -func (w *Window) DisplayStatusLine() { +func (w *BufWindow) displayStatusLine() { w.sline.Display() } + +func (w *BufWindow) Display() { + w.displayBuffer() + w.displayStatusLine() +} diff --git a/cmd/micro/editpane.go b/cmd/micro/editpane.go new file mode 100644 index 00000000..90739fba --- /dev/null +++ b/cmd/micro/editpane.go @@ -0,0 +1,20 @@ +package main + +import ( + "github.com/zyedidia/micro/cmd/micro/action" + "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/display" +) + +type EditPane struct { + display.Window + action.Handler +} + +func NewBufEditPane(x, y, width, height int, b *buffer.Buffer) *EditPane { + e := new(EditPane) + e.Window = display.NewBufWindow(x, y, width, height, b) + e.Handler = action.NewBufHandler(b) + + return e +} diff --git a/cmd/micro/lua/lua.go b/cmd/micro/lua/lua.go index a87f4880..7fa44a80 100644 --- a/cmd/micro/lua/lua.go +++ b/cmd/micro/lua/lua.go @@ -78,7 +78,7 @@ func Import(pkg string) *lua.LTable { func importFmt() *lua.LTable { pkg := L.NewTable() - L.SetField(pkg, "tErrorf", luar.New(L, fmt.Errorf)) + L.SetField(pkg, "Errorf", luar.New(L, fmt.Errorf)) L.SetField(pkg, "Fprint", luar.New(L, fmt.Fprint)) L.SetField(pkg, "Fprintf", luar.New(L, fmt.Fprintf)) L.SetField(pkg, "Fprintln", luar.New(L, fmt.Fprintln)) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 05d720ce..86374bac 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -3,9 +3,12 @@ package main import ( "flag" "fmt" + "io/ioutil" "os" + "strings" "github.com/go-errors/errors" + isatty "github.com/mattn/go-isatty" "github.com/zyedidia/micro/cmd/micro/action" "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/config" @@ -20,8 +23,9 @@ const ( ) var ( - // Version is the version number or commit hash // These variables should be set by the linker when compiling + + // Version is the version number or commit hash Version = "0.0.0-unknown" // CommitHash is the commit this version was built on CommitHash = "Unknown" @@ -34,9 +38,6 @@ var ( events chan tcell.Event autosave chan bool - // How many redraws have happened - numRedraw uint - // Command line flags flagVersion = flag.Bool("version", false, "Show the version number and information") flagStartPos = flag.String("startpos", "", "LINE,COL to start the cursor at when opening a buffer.") @@ -91,6 +92,66 @@ func InitFlags() { } } +// LoadInput determines which files should be loaded into buffers +// based on the input stored in flag.Args() +func LoadInput() []*buffer.Buffer { + // There are a number of ways micro should start given its input + + // 1. If it is given a files in flag.Args(), it should open those + + // 2. If there is no input file and the input is not a terminal, that means + // something is being piped in and the stdin should be opened in an + // empty buffer + + // 3. If there is no input file and the input is a terminal, an empty buffer + // should be opened + + var filename string + var input []byte + var err error + args := flag.Args() + buffers := make([]*buffer.Buffer, 0, len(args)) + + if len(args) > 0 { + // Option 1 + // We go through each file and load it + for i := 0; i < len(args); i++ { + if strings.HasPrefix(args[i], "+") { + if strings.Contains(args[i], ":") { + split := strings.Split(args[i], ":") + *flagStartPos = split[0][1:] + "," + split[1] + } else { + *flagStartPos = args[i][1:] + ",0" + } + continue + } + + buf, err := buffer.NewBufferFromFile(args[i]) + if err != nil { + util.TermMessage(err) + continue + } + // If the file didn't exist, input will be empty, and we'll open an empty buffer + buffers = append(buffers, buf) + } + } else if !isatty.IsTerminal(os.Stdin.Fd()) { + // Option 2 + // The input is not a terminal, so something is being piped in + // and we should read from stdin + input, err = ioutil.ReadAll(os.Stdin) + if err != nil { + util.TermMessage("Error reading from stdin: ", err) + input = []byte{} + } + buffers = append(buffers, buffer.NewBufferFromString(string(input), filename)) + } else { + // Option 3, just open an empty buffer + buffers = append(buffers, buffer.NewBufferFromString(string(input), filename)) + } + + return buffers +} + func main() { var err error @@ -127,18 +188,9 @@ func main() { } }() - action.TryBindKey("Ctrl-z", "Undo", true) - - b, err := buffer.NewBufferFromFile(os.Args[1]) - - if err != nil { - util.TermMessage(err) - } - + b := LoadInput()[0] width, height := screen.Screen.Size() - w := NewWindow(0, 0, width, height-1, b) - - a := action.NewBufHandler(b) + ep := NewBufEditPane(0, 0, width, height-1, b) // Here is the event loop which runs in a separate thread go func() { @@ -153,8 +205,7 @@ func main() { for { // Display everything screen.Screen.Fill(' ', config.DefStyle) - w.DisplayBuffer() - w.DisplayStatusLine() + ep.Display() screen.Screen.Show() var event tcell.Event @@ -165,7 +216,7 @@ func main() { } if event != nil { - a.HandleEvent(event) + ep.HandleEvent(event) } } diff --git a/cmd/micro/util/util.go b/cmd/micro/util/util.go index b4dda124..62a20908 100644 --- a/cmd/micro/util/util.go +++ b/cmd/micro/util/util.go @@ -135,13 +135,8 @@ func FSize(f *os.File) int64 { // IsWordChar returns whether or not the string is a 'word character' // If it is a unicode character, then it does not match // Word characters are defined as [A-Za-z0-9_] -func IsWordChar(str string) bool { - if len(str) > 1 { - // Unicode - return true - } - c := str[0] - return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c == '_') +func IsWordChar(r rune) bool { + return (r >= '0' && r <= '9') || (r >= 'A' && r <= 'Z') || (r >= 'a' && r <= 'z') || (r == '_') } // IsWhitespace returns true if the given rune is a space, tab, or newline From 31fb3f2df2ce7b038c9c2b9207ddbc7f9ed476c3 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 28 Aug 2018 23:30:39 -0400 Subject: [PATCH 023/231] More actions --- cmd/micro/action/actions.go | 31 +++++++++++++++++++++++++++ cmd/micro/action/bindings.go | 12 +++++++++-- cmd/micro/action/bufhandler.go | 39 +++++++++++++++++++++++++++++++--- cmd/micro/buffer/buffer.go | 14 ++++++++++++ cmd/micro/screen/screen.go | 2 +- cmd/micro/util/util.go | 11 ++++++++++ 6 files changed, 103 insertions(+), 6 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index ec6c07bc..f69211cc 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -2,8 +2,10 @@ package action import ( "os" + "unicode/utf8" "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/cmd/micro/util" "github.com/zyedidia/tcell" ) @@ -262,6 +264,11 @@ func (h *BufHandler) SelectToEnd() bool { // InsertSpace inserts a space func (h *BufHandler) InsertSpace() bool { + if h.Cursor.HasSelection() { + h.Cursor.DeleteSelection() + h.Cursor.ResetSelection() + } + h.Buf.Insert(h.Cursor.Loc, " ") return true } @@ -272,6 +279,30 @@ func (h *BufHandler) InsertNewline() bool { // Backspace deletes the previous character func (h *BufHandler) Backspace() bool { + if h.Cursor.HasSelection() { + h.Cursor.DeleteSelection() + h.Cursor.ResetSelection() + } else if h.Cursor.Loc.GreaterThan(h.Buf.Start()) { + // We have to do something a bit hacky here because we want to + // delete the line by first moving left and then deleting backwards + // but the undo redo would place the cursor in the wrong place + // So instead we move left, save the position, move back, delete + // and restore the position + + // If the user is using spaces instead of tabs and they are deleting + // whitespace at the start of the line, we should delete as if it's a + // tab (tabSize number of spaces) + lineStart := util.SliceStart(h.Buf.LineBytes(h.Cursor.Y), h.Cursor.X) + tabSize := int(h.Buf.Settings["tabsize"].(float64)) + if h.Buf.Settings["tabstospaces"].(bool) && util.IsSpaces(lineStart) && len(lineStart) != 0 && utf8.RuneCount(lineStart)%tabSize == 0 { + loc := h.Cursor.Loc + h.Buf.Remove(loc.Move(-tabSize, h.Buf), loc) + } else { + loc := h.Cursor.Loc + h.Buf.Remove(loc.Move(-1, h.Buf), loc) + } + } + h.Cursor.LastVisualX = h.Cursor.GetVisualX() return true } diff --git a/cmd/micro/action/bindings.go b/cmd/micro/action/bindings.go index 816b14ae..b1e2685b 100644 --- a/cmd/micro/action/bindings.go +++ b/cmd/micro/action/bindings.go @@ -102,21 +102,29 @@ modSearch: // see if the key is in bindingKeys with the Ctrl prefix. k = string(unicode.ToUpper(rune(k[0]))) + k[1:] if code, ok := keyEvents["Ctrl"+k]; ok { + var r tcell.Key + if code < 256 { + r = code + } // It is, we're done. return KeyEvent{ code: code, mod: modifiers, - r: rune(code), + r: rune(r), }, true } } // See if we can find the key in bindingKeys if code, ok := keyEvents[k]; ok { + var r tcell.Key + if code < 256 { + r = code + } return KeyEvent{ code: code, mod: modifiers, - r: 0, + r: rune(r), }, true } diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 4fea0e64..9e514277 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -4,6 +4,7 @@ import ( "time" "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/util" "github.com/zyedidia/tcell" ) @@ -19,10 +20,23 @@ func init() { } func BufMapKey(k KeyEvent, action string) { - BufKeyBindings[k] = BufKeyActions[action] + if f, ok := BufKeyActions[action]; ok { + BufKeyBindings[k] = f + } else { + util.TermMessage("Error:", action, "does not exist") + } } func BufMapMouse(k MouseEvent, action string) { - BufMouseBindings[k] = BufMouseActions[action] + if f, ok := BufMouseActions[action]; ok { + BufMouseBindings[k] = f + } else if f, ok := BufKeyActions[action]; ok { + // allowed to map mouse buttons to key actions + BufMouseBindings[k] = func(h *BufHandler, e *tcell.EventMouse) bool { + return f(h) + } + } else { + util.TermMessage("Error:", action, "does not exist") + } } // The BufHandler connects the buffer and the window @@ -91,7 +105,10 @@ func (h *BufHandler) HandleEvent(event tcell.Event) { mod: e.Modifiers(), r: e.Rune(), } - h.DoKeyEvent(ke) + done := h.DoKeyEvent(ke) + if !done && e.Key() == tcell.KeyRune { + h.DoRuneInsert(e.Rune()) + } case *tcell.EventMouse: me := MouseEvent{ btn: e.Buttons(), @@ -117,6 +134,22 @@ func (h *BufHandler) DoMouseEvent(e MouseEvent, te *tcell.EventMouse) bool { return false } +func (h *BufHandler) DoRuneInsert(r rune) { + // Insert a character + if h.Cursor.HasSelection() { + h.Cursor.DeleteSelection() + h.Cursor.ResetSelection() + } + + if h.isOverwriteMode { + next := h.Cursor.Loc + next.X++ + h.Buf.Replace(h.Cursor.Loc, next, string(r)) + } else { + h.Buf.Insert(h.Cursor.Loc, string(r)) + } +} + var BufKeyActions = map[string]BufKeyAction{ "CursorUp": (*BufHandler).CursorUp, "CursorDown": (*BufHandler).CursorDown, diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index 8f256c2f..bab1350a 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -320,6 +320,20 @@ func calcHash(b *Buffer, out *[md5.Size]byte) { h.Sum((*out)[:0]) } +func (b *Buffer) insert(pos Loc, value []byte) { + b.isModified = true + b.LineArray.insert(pos, value) +} +func (b *Buffer) remove(start, end Loc) []byte { + b.isModified = true + sub := b.LineArray.remove(start, end) + return sub +} +func (b *Buffer) deleteToEnd(start Loc) { + b.isModified = true + b.LineArray.deleteToEnd(start) +} + // UpdateRules updates the syntax rules and filetype for this buffer // This is called when the colorscheme changes func (b *Buffer) UpdateRules() { diff --git a/cmd/micro/screen/screen.go b/cmd/micro/screen/screen.go index 3cba43f5..58c45b77 100644 --- a/cmd/micro/screen/screen.go +++ b/cmd/micro/screen/screen.go @@ -24,7 +24,7 @@ func Unlock() { var screenWasNil bool func TempFini() { - screenWasNil := Screen == nil + screenWasNil = Screen == nil if !screenWasNil { Lock() diff --git a/cmd/micro/util/util.go b/cmd/micro/util/util.go index 62a20908..90f2c15e 100644 --- a/cmd/micro/util/util.go +++ b/cmd/micro/util/util.go @@ -139,6 +139,17 @@ func IsWordChar(r rune) bool { return (r >= '0' && r <= '9') || (r >= 'A' && r <= 'Z') || (r >= 'a' && r <= 'z') || (r == '_') } +// IsSpaces checks if a given string is only spaces +func IsSpaces(str []byte) bool { + for _, c := range str { + if c != ' ' { + return false + } + } + + return true +} + // IsWhitespace returns true if the given rune is a space, tab, or newline func IsWhitespace(c rune) bool { return c == ' ' || c == '\t' || c == '\n' From 31cf5a15ce132809c214cb0a54100773a3cf1980 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 29 Aug 2018 20:53:40 -0400 Subject: [PATCH 024/231] Fix serialization --- cmd/micro/action/actions.go | 1 + cmd/micro/action/bufhandler.go | 5 +- cmd/micro/buffer/buffer.go | 8 --- cmd/micro/buffer/cursor.go | 89 ++++++++++++++++++++-------------- cmd/micro/buffer/serialize.go | 14 +++++- cmd/micro/micro.go | 2 +- 6 files changed, 68 insertions(+), 51 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index f69211cc..f47bcd6a 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -348,6 +348,7 @@ func (h *BufHandler) SaveAll() bool { // Save the buffer to disk func (h *BufHandler) Save() bool { + h.Buf.Save() return false } diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 9e514277..0cb4ebb0 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -85,10 +85,7 @@ func NewBufHandler(buf *buffer.Buffer) *BufHandler { h := new(BufHandler) h.Buf = buf - h.cursors = []*buffer.Cursor{&buffer.Cursor{ - Buf: buf, - Loc: buf.StartCursor, - }} + h.cursors = []*buffer.Cursor{buffer.NewCursor(buf, buf.StartCursor)} h.Cursor = h.cursors[0] buf.SetCursors(h.cursors) diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index bab1350a..f68c5b58 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -96,14 +96,6 @@ type Buffer struct { Type BufType } -// The SerializedBuffer holds the types that get serialized when a buffer is saved -// These are used for the savecursor and saveundo options -type SerializedBuffer struct { - EventHandler *EventHandler - Cursor Loc - ModTime time.Time -} - // NewBufferFromFile opens a new buffer using the given path // It will also automatically handle `~`, and line/column with filename:l:c // It will return an empty buffer if the path does not exist diff --git a/cmd/micro/buffer/cursor.go b/cmd/micro/buffer/cursor.go index ce257244..0679b9be 100644 --- a/cmd/micro/buffer/cursor.go +++ b/cmd/micro/buffer/cursor.go @@ -20,7 +20,7 @@ func InBounds(pos Loc, buf *Buffer) bool { // The Cursor struct stores the location of the cursor in the buffer // as well as the selection type Cursor struct { - Buf *Buffer + buf *Buffer Loc // Last cursor x position @@ -37,6 +37,23 @@ type Cursor struct { Num int } +func NewCursor(b *Buffer, l Loc) *Cursor { + c := &Cursor{ + buf: b, + Loc: l, + } + c.StoreVisualX() + return c +} + +func (c *Cursor) SetBuf(b *Buffer) { + c.buf = b +} + +func (c *Cursor) Buf() *Buffer { + return c.buf +} + // Goto puts the cursor at the given cursor's location and gives // the current cursor its selection too func (c *Cursor) Goto(b Cursor) { @@ -58,8 +75,8 @@ func (c *Cursor) GetVisualX() int { return 0 } - bytes := c.Buf.LineBytes(c.Y) - tabsize := int(c.Buf.Settings["tabsize"].(float64)) + bytes := c.buf.LineBytes(c.Y) + tabsize := int(c.buf.Settings["tabsize"].(float64)) if c.X > utf8.RuneCount(bytes) { c.X = utf8.RuneCount(bytes) - 1 } @@ -71,7 +88,7 @@ func (c *Cursor) GetVisualX() int { // coordinate (this is necessary because tabs are 1 char but // 4 visual spaces) func (c *Cursor) GetCharPosInLine(b []byte, visualPos int) int { - tabsize := int(c.Buf.Settings["tabsize"].(float64)) + tabsize := int(c.buf.Settings["tabsize"].(float64)) // Scan rune by rune until we exceed the visual width that we are // looking for. Then we can return the character position we have found @@ -112,7 +129,7 @@ func (c *Cursor) Start() { func (c *Cursor) StartOfText() { c.Start() for util.IsWhitespace(c.RuneUnder(c.X)) { - if c.X == utf8.RuneCount(c.Buf.LineBytes(c.Y)) { + if c.X == utf8.RuneCount(c.buf.LineBytes(c.Y)) { break } c.Right() @@ -121,7 +138,7 @@ func (c *Cursor) StartOfText() { // End moves the cursor to the end of the line it is on func (c *Cursor) End() { - c.X = utf8.RuneCount(c.Buf.LineBytes(c.Y)) + c.X = utf8.RuneCount(c.buf.LineBytes(c.Y)) c.LastVisualX = c.GetVisualX() } @@ -129,7 +146,7 @@ func (c *Cursor) End() { // or "clipboard" func (c *Cursor) CopySelection(target string) { if c.HasSelection() { - if target != "primary" || c.Buf.Settings["useprimary"].(bool) { + if target != "primary" || c.buf.Settings["useprimary"].(bool) { clipboard.WriteAll(string(c.GetSelection()), target) } } @@ -137,8 +154,8 @@ func (c *Cursor) CopySelection(target string) { // ResetSelection resets the user's selection func (c *Cursor) ResetSelection() { - c.CurSelection[0] = c.Buf.Start() - c.CurSelection[1] = c.Buf.Start() + c.CurSelection[0] = c.buf.Start() + c.CurSelection[1] = c.buf.Start() } // SetSelectionStart sets the start of the selection @@ -159,12 +176,12 @@ func (c *Cursor) HasSelection() bool { // DeleteSelection deletes the currently selected text func (c *Cursor) DeleteSelection() { if c.CurSelection[0].GreaterThan(c.CurSelection[1]) { - c.Buf.Remove(c.CurSelection[1], c.CurSelection[0]) + c.buf.Remove(c.CurSelection[1], c.CurSelection[0]) c.Loc = c.CurSelection[1] } else if !c.HasSelection() { return } else { - c.Buf.Remove(c.CurSelection[0], c.CurSelection[1]) + c.buf.Remove(c.CurSelection[0], c.CurSelection[1]) c.Loc = c.CurSelection[0] } } @@ -186,11 +203,11 @@ func (c *Cursor) Deselect(start bool) { // GetSelection returns the cursor's selection func (c *Cursor) GetSelection() []byte { - if InBounds(c.CurSelection[0], c.Buf) && InBounds(c.CurSelection[1], c.Buf) { + if InBounds(c.CurSelection[0], c.buf) && InBounds(c.CurSelection[1], c.buf) { if c.CurSelection[0].GreaterThan(c.CurSelection[1]) { - return c.Buf.Substr(c.CurSelection[1], c.CurSelection[0]) + return c.buf.Substr(c.CurSelection[1], c.CurSelection[0]) } - return c.Buf.Substr(c.CurSelection[0], c.CurSelection[1]) + return c.buf.Substr(c.CurSelection[0], c.CurSelection[1]) } return []byte{} } @@ -200,8 +217,8 @@ func (c *Cursor) SelectLine() { c.Start() c.SetSelectionStart(c.Loc) c.End() - if len(c.Buf.lines)-1 > c.Y { - c.SetSelectionEnd(c.Loc.Move(1, c.Buf)) + if len(c.buf.lines)-1 > c.Y { + c.SetSelectionEnd(c.Loc.Move(1, c.buf)) } else { c.SetSelectionEnd(c.Loc) } @@ -218,7 +235,7 @@ func (c *Cursor) AddLineToSelection() { } if c.Loc.GreaterThan(c.OrigSelection[1]) { c.End() - c.SetSelectionEnd(c.Loc.Move(1, c.Buf)) + c.SetSelectionEnd(c.Loc.Move(1, c.buf)) c.SetSelectionStart(c.OrigSelection[0]) } @@ -232,11 +249,11 @@ func (c *Cursor) UpN(amount int) { proposedY := c.Y - amount if proposedY < 0 { proposedY = 0 - } else if proposedY >= len(c.Buf.lines) { - proposedY = len(c.Buf.lines) - 1 + } else if proposedY >= len(c.buf.lines) { + proposedY = len(c.buf.lines) - 1 } - bytes := c.Buf.LineBytes(proposedY) + bytes := c.buf.LineBytes(proposedY) c.X = c.GetCharPosInLine(bytes, c.LastVisualX) if c.X > utf8.RuneCount(bytes) || (amount < 0 && proposedY == c.Y) { @@ -264,7 +281,7 @@ func (c *Cursor) Down() { // Left moves the cursor left one cell (if possible) or to // the previous line if it is at the beginning func (c *Cursor) Left() { - if c.Loc == c.Buf.Start() { + if c.Loc == c.buf.Start() { return } if c.X > 0 { @@ -279,10 +296,10 @@ func (c *Cursor) Left() { // Right moves the cursor right one cell (if possible) or // to the next line if it is at the end func (c *Cursor) Right() { - if c.Loc == c.Buf.End() { + if c.Loc == c.buf.End() { return } - if c.X < utf8.RuneCount(c.Buf.LineBytes(c.Y)) { + if c.X < utf8.RuneCount(c.buf.LineBytes(c.Y)) { c.X++ } else { c.Down() @@ -297,26 +314,26 @@ func (c *Cursor) Right() { func (c *Cursor) Relocate() { if c.Y < 0 { c.Y = 0 - } else if c.Y >= len(c.Buf.lines) { - c.Y = len(c.Buf.lines) - 1 + } else if c.Y >= len(c.buf.lines) { + c.Y = len(c.buf.lines) - 1 } if c.X < 0 { c.X = 0 - } else if c.X > utf8.RuneCount(c.Buf.LineBytes(c.Y)) { - c.X = utf8.RuneCount(c.Buf.LineBytes(c.Y)) + } else if c.X > utf8.RuneCount(c.buf.LineBytes(c.Y)) { + c.X = utf8.RuneCount(c.buf.LineBytes(c.Y)) } } // SelectWord selects the word the cursor is currently on func (c *Cursor) SelectWord() { - if len(c.Buf.LineBytes(c.Y)) == 0 { + if len(c.buf.LineBytes(c.Y)) == 0 { return } if !util.IsWordChar(c.RuneUnder(c.X)) { c.SetSelectionStart(c.Loc) - c.SetSelectionEnd(c.Loc.Move(1, c.Buf)) + c.SetSelectionEnd(c.Loc.Move(1, c.buf)) c.OrigSelection = c.CurSelection return } @@ -330,12 +347,12 @@ func (c *Cursor) SelectWord() { c.SetSelectionStart(Loc{backward, c.Y}) c.OrigSelection[0] = c.CurSelection[0] - lineLen := utf8.RuneCount(c.Buf.LineBytes(c.Y)) - 1 + lineLen := utf8.RuneCount(c.buf.LineBytes(c.Y)) - 1 for forward < lineLen && util.IsWordChar(c.RuneUnder(forward+1)) { forward++ } - c.SetSelectionEnd(Loc{forward, c.Y}.Move(1, c.Buf)) + c.SetSelectionEnd(Loc{forward, c.Y}.Move(1, c.buf)) c.OrigSelection[1] = c.CurSelection[1] c.Loc = c.CurSelection[1] } @@ -362,12 +379,12 @@ func (c *Cursor) AddWordToSelection() { if c.Loc.GreaterThan(c.OrigSelection[1]) { forward := c.X - lineLen := utf8.RuneCount(c.Buf.LineBytes(c.Y)) - 1 + lineLen := utf8.RuneCount(c.buf.LineBytes(c.Y)) - 1 for forward < lineLen && util.IsWordChar(c.RuneUnder(forward+1)) { forward++ } - c.SetSelectionEnd(Loc{forward, c.Y}.Move(1, c.Buf)) + c.SetSelectionEnd(Loc{forward, c.Y}.Move(1, c.buf)) c.SetSelectionStart(c.OrigSelection[0]) } @@ -389,7 +406,7 @@ func (c *Cursor) SelectTo(loc Loc) { // WordRight moves the cursor one word to the right func (c *Cursor) WordRight() { for util.IsWhitespace(c.RuneUnder(c.X)) { - if c.X == utf8.RuneCount(c.Buf.LineBytes(c.Y)) { + if c.X == utf8.RuneCount(c.buf.LineBytes(c.Y)) { c.Right() return } @@ -397,7 +414,7 @@ func (c *Cursor) WordRight() { } c.Right() for util.IsWordChar(c.RuneUnder(c.X)) { - if c.X == utf8.RuneCount(c.Buf.LineBytes(c.Y)) { + if c.X == utf8.RuneCount(c.buf.LineBytes(c.Y)) { return } c.Right() @@ -425,7 +442,7 @@ func (c *Cursor) WordLeft() { // RuneUnder returns the rune under the given x position func (c *Cursor) RuneUnder(x int) rune { - line := c.Buf.LineBytes(c.Y) + line := c.buf.LineBytes(c.Y) if len(line) == 0 || x >= utf8.RuneCount(line) { return '\n' } else if x < 0 { diff --git a/cmd/micro/buffer/serialize.go b/cmd/micro/buffer/serialize.go index d8fc4120..a9d0c042 100644 --- a/cmd/micro/buffer/serialize.go +++ b/cmd/micro/buffer/serialize.go @@ -5,11 +5,20 @@ import ( "errors" "io" "os" + "time" "github.com/zyedidia/micro/cmd/micro/config" . "github.com/zyedidia/micro/cmd/micro/util" ) +// The SerializedBuffer holds the types that get serialized when a buffer is saved +// These are used for the savecursor and saveundo options +type SerializedBuffer struct { + EventHandler *EventHandler + Cursor Loc + ModTime time.Time +} + func init() { gob.Register(TextEvent{}) gob.Register(SerializedBuffer{}) @@ -24,11 +33,12 @@ func (b *Buffer) Serialize() error { name := config.ConfigDir + "/buffers/" + EscapePath(b.AbsPath) return overwriteFile(name, func(file io.Writer) error { - return gob.NewEncoder(file).Encode(SerializedBuffer{ + err := gob.NewEncoder(file).Encode(SerializedBuffer{ b.EventHandler, b.GetActiveCursor().Loc, b.ModTime, }) + return err }) } @@ -57,5 +67,5 @@ func (b *Buffer) Unserialize() error { } } } - return err + return nil } diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 86374bac..1c3ab4db 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -1,5 +1,5 @@ package main - +//asdf import ( "flag" "fmt" From 12d727fb9343a0344706f655010f795b5e766a55 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 3 Sep 2018 16:54:56 -0400 Subject: [PATCH 025/231] Add some more actions --- cmd/micro/action/actions.go | 50 ++++++++++++++++++++++++++++++++++++- cmd/micro/buffer/buffer.go | 7 ++++++ cmd/micro/micro.go | 2 +- cmd/micro/util/util.go | 5 ++++ 4 files changed, 62 insertions(+), 2 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index f47bcd6a..6bae6b50 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -4,6 +4,7 @@ import ( "os" "unicode/utf8" + "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/screen" "github.com/zyedidia/micro/cmd/micro/util" "github.com/zyedidia/tcell" @@ -308,21 +309,68 @@ func (h *BufHandler) Backspace() bool { // DeleteWordRight deletes the word to the right of the cursor func (h *BufHandler) DeleteWordRight() bool { + h.SelectWordRight() + if h.Cursor.HasSelection() { + h.Cursor.DeleteSelection() + h.Cursor.ResetSelection() + } return true } // DeleteWordLeft deletes the word to the left of the cursor func (h *BufHandler) DeleteWordLeft() bool { + h.SelectWordLeft() + if h.Cursor.HasSelection() { + h.Cursor.DeleteSelection() + h.Cursor.ResetSelection() + } return true } // Delete deletes the next character func (h *BufHandler) Delete() bool { + if h.Cursor.HasSelection() { + h.Cursor.DeleteSelection() + h.Cursor.ResetSelection() + } else { + loc := h.Cursor.Loc + if loc.LessThan(h.Buf.End()) { + h.Buf.Remove(loc, loc.Move(1, h.Buf)) + } + } return true } // IndentSelection indents the current selection func (h *BufHandler) IndentSelection() bool { + if h.Cursor.HasSelection() { + start := h.Cursor.CurSelection[0] + end := h.Cursor.CurSelection[1] + if end.Y < start.Y { + start, end = end, start + h.Cursor.SetSelectionStart(start) + h.Cursor.SetSelectionEnd(end) + } + + startY := start.Y + endY := end.Move(-1, h.Buf).Y + endX := end.Move(-1, h.Buf).X + tabsize := int(h.Buf.Settings["tabsize"].(float64)) + indentsize := len(h.Buf.IndentString(tabsize)) + for y := startY; y <= endY; y++ { + h.Buf.Insert(buffer.Loc{0, y}, h.Buf.IndentString(tabsize)) + if y == startY && start.X > 0 { + h.Cursor.SetSelectionStart(start.Move(indentsize, h.Buf)) + } + if y == endY { + h.Cursor.SetSelectionEnd(buffer.Loc{endX + indentsize + 1, endY}) + } + } + h.Cursor.Relocate() + + return true + } + return false return false } @@ -333,7 +381,7 @@ func (h *BufHandler) OutdentLine() bool { // OutdentSelection takes the current selection and moves it back one indent level func (h *BufHandler) OutdentSelection() bool { - return false + return true } // InsertTab inserts a tab or spaces diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index f68c5b58..38e9057f 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -391,3 +391,10 @@ func (b *Buffer) UpdateRules() { } } } + +func (b *Buffer) IndentString(tabsize int) string { + if b.Settings["tabstospaces"].(bool) { + return Spaces(tabsize) + } + return "\t" +} diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 1c3ab4db..86374bac 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -1,5 +1,5 @@ package main -//asdf + import ( "flag" "fmt" diff --git a/cmd/micro/util/util.go b/cmd/micro/util/util.go index 90f2c15e..874f3b48 100644 --- a/cmd/micro/util/util.go +++ b/cmd/micro/util/util.go @@ -139,6 +139,11 @@ func IsWordChar(r rune) bool { return (r >= '0' && r <= '9') || (r >= 'A' && r <= 'Z') || (r >= 'a' && r <= 'z') || (r == '_') } +// Spaces returns a string with n spaces +func Spaces(n int) string { + return strings.Repeat(" ", n) +} + // IsSpaces checks if a given string is only spaces func IsSpaces(str []byte) bool { for _, c := range str { From 9f066f2fbf7fb485e2cbedf2b2d1962182620892 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 8 Sep 2018 17:04:26 -0400 Subject: [PATCH 026/231] Rehighlighting --- cmd/micro/buffer/line_array.go | 8 ++++++++ cmd/micro/display/window.go | 16 ++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/cmd/micro/buffer/line_array.go b/cmd/micro/buffer/line_array.go index b5b4676e..b52d4da8 100644 --- a/cmd/micro/buffer/line_array.go +++ b/cmd/micro/buffer/line_array.go @@ -274,3 +274,11 @@ func (la *LineArray) SetMatch(lineN int, m highlight.LineMatch) { func (la *LineArray) Match(lineN int) highlight.LineMatch { return la.lines[lineN].match } + +func (la *LineArray) Rehighlight(lineN int) bool { + return la.lines[lineN].rehighlight +} + +func (la *LineArray) SetRehighlight(lineN int, on bool) { + la.lines[lineN].rehighlight = on +} diff --git a/cmd/micro/display/window.go b/cmd/micro/display/window.go index 404733f5..3ce58ee0 100644 --- a/cmd/micro/display/window.go +++ b/cmd/micro/display/window.go @@ -106,15 +106,15 @@ func (w *BufWindow) displayBuffer() { } // TODO: Rehighlighting - // start := w.StartLine + start := w.StartLine if b.Settings["syntax"].(bool) && b.SyntaxDef != nil { - // if start > 0 && b.lines[start-1].rehighlight { - // b.highlighter.ReHighlightLine(b, start-1) - // b.lines[start-1].rehighlight = false - // } - // - // b.highlighter.ReHighlightStates(b, start) - // + if start > 0 && b.Rehighlight(start-1) { + b.Highlighter.ReHighlightLine(b, start-1) + b.SetRehighlight(start-1, false) + } + + b.Highlighter.ReHighlightStates(b, start) + b.Highlighter.HighlightMatches(b, w.StartLine, w.StartLine+bufHeight) } From 02b71a514a712d1be3cfc29e5207e6926a883f58 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 31 Dec 2018 14:46:04 -0500 Subject: [PATCH 027/231] Add some comments --- cmd/micro/buffer/buffer.go | 17 +++++++++++++++++ cmd/micro/display/infobar.go | 2 ++ cmd/micro/display/window.go | 9 +++++++-- cmd/micro/screen/screen.go | 8 ++++++++ cmd/micro/util/profile.go | 1 + 5 files changed, 35 insertions(+), 2 deletions(-) diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index 38e9057f..e24bd18d 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -63,6 +63,13 @@ var ( BTRaw = BufType{4, true, true} ) +// Buffer stores the main information about a currently open file including +// the actual text (in a LineArray), the undo/redo stack (in an EventHandler) +// all the cursors, the syntax highlighting info, the settings for the buffer +// and some misc info about modification time and path location. +// The syntax highlighting info must be stored with the buffer because the syntax +// highlighter attaches information to each line of the buffer for optimization +// purposes so it doesn't have to rehighlight everything on every update. type Buffer struct { *LineArray *EventHandler @@ -224,26 +231,32 @@ func (b *Buffer) ReOpen() error { // b.Cursor.Relocate() } +// SetCursors resets this buffer's cursors to a new list func (b *Buffer) SetCursors(c []*Cursor) { b.cursors = c } +// GetActiveCursor returns the main cursor in this buffer func (b *Buffer) GetActiveCursor() *Cursor { return b.cursors[0] } +// GetCursor returns the nth cursor func (b *Buffer) GetCursor(n int) *Cursor { return b.cursors[n] } +// GetCursors returns the list of cursors in this buffer func (b *Buffer) GetCursors() []*Cursor { return b.cursors } +// NumCursors returns the number of cursors func (b *Buffer) NumCursors() int { return len(b.cursors) } +// LineBytes returns line n as an array of bytes func (b *Buffer) LineBytes(n int) []byte { if n >= len(b.lines) || n < 0 { return []byte{} @@ -251,10 +264,12 @@ func (b *Buffer) LineBytes(n int) []byte { return b.lines[n].data } +// LinesNum returns the number of lines in the buffer func (b *Buffer) LinesNum() int { return len(b.lines) } +// Start returns the start of the buffer func (b *Buffer) Start() Loc { return Loc{0, 0} } @@ -392,6 +407,8 @@ func (b *Buffer) UpdateRules() { } } +// IndentString returns this buffer's indent method (a tabstop or n spaces +// depending on the settings) func (b *Buffer) IndentString(tabsize int) string { if b.Settings["tabstospaces"].(bool) { return Spaces(tabsize) diff --git a/cmd/micro/display/infobar.go b/cmd/micro/display/infobar.go index 15049413..0c5be76e 100644 --- a/cmd/micro/display/infobar.go +++ b/cmd/micro/display/infobar.go @@ -11,6 +11,8 @@ import ( "github.com/zyedidia/tcell" ) +// The InfoBar displays messages and other info at the bottom of the screen. +// It is respresented as a buffer and a message with a style. type InfoBar struct { *buffer.Buffer diff --git a/cmd/micro/display/window.go b/cmd/micro/display/window.go index 3ce58ee0..14630a5d 100644 --- a/cmd/micro/display/window.go +++ b/cmd/micro/display/window.go @@ -17,6 +17,8 @@ type Window interface { Clear() } +// The BufWindow provides a way of displaying a certain section +// of a buffer type BufWindow struct { // X and Y coordinates for the top left of the window X int @@ -37,6 +39,7 @@ type BufWindow struct { sline *StatusLine } +// NewBufWindow creates a new window at a location in the screen with a width and height func NewBufWindow(x, y, width, height int, buf *buffer.Buffer) *BufWindow { w := new(BufWindow) w.X, w.Y, w.Width, w.Height, w.Buf = x, y, width, height, buf @@ -46,6 +49,7 @@ func NewBufWindow(x, y, width, height int, buf *buffer.Buffer) *BufWindow { return w } +// Clear resets all cells in this window to the default style func (w *BufWindow) Clear() { for y := 0; y < w.Height; y++ { for x := 0; x < w.Width; x++ { @@ -132,10 +136,10 @@ func (w *BufWindow) displayBuffer() { // this represents the current draw position // within the current window - vloc := buffer.Loc{0, 0} + vloc := buffer.Loc{X: 0, Y: 0} // this represents the current draw position in the buffer (char positions) - bloc := buffer.Loc{w.StartCol, w.StartLine} + bloc := buffer.Loc{X: w.StartCol, Y: w.StartLine} activeC := w.Buf.GetActiveCursor() @@ -233,6 +237,7 @@ func (w *BufWindow) displayStatusLine() { w.sline.Display() } +// Display displays the buffer and the statusline func (w *BufWindow) Display() { w.displayBuffer() w.displayStatusLine() diff --git a/cmd/micro/screen/screen.go b/cmd/micro/screen/screen.go index 58c45b77..72fc0d08 100644 --- a/cmd/micro/screen/screen.go +++ b/cmd/micro/screen/screen.go @@ -10,6 +10,12 @@ import ( "github.com/zyedidia/tcell" ) +// Screen is the tcell screen we use to draw to the terminal +// Synchronization is used because we poll the screen on a separate +// thread and sometimes the screen is shut down by the main thread +// (for example on TermMessage) so we don't want to poll a nil/shutdown +// screen. TODO: maybe we should worry about polling and drawing at the +// same time too. var Screen tcell.Screen var lock sync.Mutex @@ -23,6 +29,7 @@ func Unlock() { var screenWasNil bool +// TempFini shuts the screen down temporarily func TempFini() { screenWasNil = Screen == nil @@ -33,6 +40,7 @@ func TempFini() { } } +// TempStart restarts the screen after it was temporarily disabled func TempStart() { if !screenWasNil { Init() diff --git a/cmd/micro/util/profile.go b/cmd/micro/util/profile.go index dad8ad48..61726e5c 100644 --- a/cmd/micro/util/profile.go +++ b/cmd/micro/util/profile.go @@ -9,6 +9,7 @@ import ( humanize "github.com/dustin/go-humanize" ) +// GetMemStats returns a string describing the memory usage and gc time used so far func GetMemStats() string { var memstats runtime.MemStats runtime.ReadMemStats(&memstats) From e9a4238a3f8adeb75d1a766cb5e922d821080c71 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 31 Dec 2018 16:36:54 -0500 Subject: [PATCH 028/231] More actions and view relocation --- cmd/micro/action/actions.go | 133 ++++++++++++++++++++++++++++++-- cmd/micro/action/bufhandler.go | 13 +++- cmd/micro/display/statusline.go | 14 ++-- cmd/micro/display/window.go | 72 +++++++++++++++++ cmd/micro/editpane.go | 6 +- cmd/micro/util/util.go | 16 ++++ 6 files changed, 237 insertions(+), 17 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 6bae6b50..a9ea8e87 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -2,8 +2,10 @@ package action import ( "os" + "time" "unicode/utf8" + "github.com/zyedidia/clipboard" "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/screen" "github.com/zyedidia/micro/cmd/micro/util" @@ -18,11 +20,21 @@ func (h *BufHandler) MousePress(e *tcell.EventMouse) bool { // ScrollUpAction scrolls the view up func (h *BufHandler) ScrollUpAction() bool { + b := h.Buf + sspeed := b.Settings["scrollspeed"].(int) + if h.Win.StartLine >= sspeed { + h.Win.StartLine -= sspeed + } return false } // ScrollDownAction scrolls the view up func (h *BufHandler) ScrollDownAction() bool { + b := h.Buf + sspeed := b.Settings["scrollspeed"].(int) + if h.Win.StartLine <= h.Buf.LinesNum()-1-sspeed { + h.Win.StartLine += sspeed + } return false } @@ -358,12 +370,12 @@ func (h *BufHandler) IndentSelection() bool { tabsize := int(h.Buf.Settings["tabsize"].(float64)) indentsize := len(h.Buf.IndentString(tabsize)) for y := startY; y <= endY; y++ { - h.Buf.Insert(buffer.Loc{0, y}, h.Buf.IndentString(tabsize)) + h.Buf.Insert(buffer.Loc{X: 0, Y: y}, h.Buf.IndentString(tabsize)) if y == startY && start.X > 0 { h.Cursor.SetSelectionStart(start.Move(indentsize, h.Buf)) } if y == endY { - h.Cursor.SetSelectionEnd(buffer.Loc{endX + indentsize + 1, endY}) + h.Cursor.SetSelectionEnd(buffer.Loc{X: endX + indentsize + 1, Y: endY}) } } h.Cursor.Relocate() @@ -371,21 +383,58 @@ func (h *BufHandler) IndentSelection() bool { return true } return false - return false } // OutdentLine moves the current line back one indentation func (h *BufHandler) OutdentLine() bool { + if h.Cursor.HasSelection() { + return false + } + + for x := 0; x < len(h.Buf.IndentString(h.Buf.Settings["tabsize"].(int))); x++ { + if len(util.GetLeadingWhitespace(h.Buf.LineBytes(h.Cursor.Y))) == 0 { + break + } + h.Buf.Remove(buffer.Loc{X: 0, Y: h.Cursor.Y}, buffer.Loc{X: 1, Y: h.Cursor.Y}) + } + h.Cursor.Relocate() return true } // OutdentSelection takes the current selection and moves it back one indent level func (h *BufHandler) OutdentSelection() bool { - return true + if h.Cursor.HasSelection() { + start := h.Cursor.CurSelection[0] + end := h.Cursor.CurSelection[1] + if end.Y < start.Y { + start, end = end, start + h.Cursor.SetSelectionStart(start) + h.Cursor.SetSelectionEnd(end) + } + + startY := start.Y + endY := end.Move(-1, h.Buf).Y + for y := startY; y <= endY; y++ { + for x := 0; x < len(h.Buf.IndentString(h.Buf.Settings["tabsize"].(int))); x++ { + if len(util.GetLeadingWhitespace(h.Buf.LineBytes(y))) == 0 { + break + } + h.Buf.Remove(buffer.Loc{X: 0, Y: y}, buffer.Loc{X: 1, Y: y}) + } + } + h.Cursor.Relocate() + + return true + } + return false } // InsertTab inserts a tab or spaces func (h *BufHandler) InsertTab() bool { + indent := h.Buf.IndentString(h.Buf.Settings["tabsize"].(int)) + tabBytes := len(indent) + bytesUntilIndent := tabBytes - (h.Cursor.GetVisualX() % tabBytes) + h.Buf.Insert(h.Cursor.Loc, indent[:bytesUntilIndent]) return true } @@ -422,36 +471,91 @@ func (h *BufHandler) FindPrevious() bool { // Undo undoes the last action func (h *BufHandler) Undo() bool { + // TODO: clear cursors and message + h.Buf.Undo() return true } // Redo redoes the last action func (h *BufHandler) Redo() bool { + // TODO: clear cursors and message + h.Buf.Redo() return true } // Copy the selection to the system clipboard func (h *BufHandler) Copy() bool { + if h.Cursor.HasSelection() { + h.Cursor.CopySelection("clipboard") + h.freshClip = true + // TODO: message + } return true } // CutLine cuts the current line to the clipboard func (h *BufHandler) CutLine() bool { + h.Cursor.SelectLine() + if !h.Cursor.HasSelection() { + return false + } + if h.freshClip == true { + if h.Cursor.HasSelection() { + if clip, err := clipboard.ReadAll("clipboard"); err != nil { + // messenger.Error(err) + } else { + clipboard.WriteAll(clip+string(h.Cursor.GetSelection()), "clipboard") + } + } + } else if time.Since(h.lastCutTime)/time.Second > 10*time.Second || h.freshClip == false { + h.Copy() + } + h.freshClip = true + h.lastCutTime = time.Now() + h.Cursor.DeleteSelection() + h.Cursor.ResetSelection() + // messenger.Message("Cut line") return true } // Cut the selection to the system clipboard func (h *BufHandler) Cut() bool { - return true + if h.Cursor.HasSelection() { + h.Cursor.CopySelection("clipboard") + h.Cursor.DeleteSelection() + h.Cursor.ResetSelection() + h.freshClip = true + // messenger.Message("Cut selection") + + return true + } else { + return h.CutLine() + } } // DuplicateLine duplicates the current line or selection func (h *BufHandler) DuplicateLine() bool { + if h.Cursor.HasSelection() { + h.Buf.Insert(h.Cursor.CurSelection[1], string(h.Cursor.GetSelection())) + } else { + h.Cursor.End() + h.Buf.Insert(h.Cursor.Loc, "\n"+string(h.Buf.LineBytes(h.Cursor.Y))) + // h.Cursor.Right() + } + + // messenger.Message("Duplicated line") return true } // DeleteLine deletes the current line func (h *BufHandler) DeleteLine() bool { + h.Cursor.SelectLine() + if !h.Cursor.HasSelection() { + return false + } + h.Cursor.DeleteSelection() + h.Cursor.ResetSelection() + // messenger.Message("Deleted line") return true } @@ -484,6 +588,11 @@ func (h *BufHandler) JumpToMatchingBrace() bool { // SelectAll selects the entire buffer func (h *BufHandler) SelectAll() bool { + h.Cursor.SetSelectionStart(h.Buf.Start()) + h.Cursor.SetSelectionEnd(h.Buf.End()) + // Put the cursor at the beginning + h.Cursor.X = 0 + h.Cursor.Y = 0 return true } @@ -494,11 +603,18 @@ func (h *BufHandler) OpenFile() bool { // Start moves the viewport to the start of the buffer func (h *BufHandler) Start() bool { + h.Win.StartLine = 0 return false } // End moves the viewport to the end of the buffer func (h *BufHandler) End() bool { + // TODO: softwrap problems? + if h.Win.Height > h.Buf.LinesNum() { + h.Win.StartLine = 0 + } else { + h.StartLine = h.Buf.LinesNum() - h.Win.Height + } return false } @@ -544,6 +660,13 @@ func (h *BufHandler) HalfPageDown() bool { // ToggleRuler turns line numbers off and on func (h *BufHandler) ToggleRuler() bool { + if !h.Buf.Settings["ruler"].(bool) { + h.Buf.Settings["ruler"] = true + // messenger.Message("Enabled ruler") + } else { + h.Buf.Settings["ruler"] = false + // messenger.Message("Disabled ruler") + } return false } diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 0cb4ebb0..80d490fa 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -4,6 +4,7 @@ import ( "time" "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/display" "github.com/zyedidia/micro/cmd/micro/util" "github.com/zyedidia/tcell" ) @@ -46,6 +47,7 @@ func BufMapMouse(k MouseEvent, action string) { // visual positions for mouse clicks and scrolling type BufHandler struct { Buf *buffer.Buffer + Win *display.BufWindow cursors []*buffer.Cursor Cursor *buffer.Cursor // the active cursor @@ -81,9 +83,10 @@ type BufHandler struct { tripleClick bool } -func NewBufHandler(buf *buffer.Buffer) *BufHandler { +func NewBufHandler(buf *buffer.Buffer, win *display.BufWindow) *BufHandler { h := new(BufHandler) h.Buf = buf + h.Win = win h.cursors = []*buffer.Cursor{buffer.NewCursor(buf, buf.StartCursor)} h.Cursor = h.cursors[0] @@ -117,7 +120,9 @@ func (h *BufHandler) HandleEvent(event tcell.Event) { func (h *BufHandler) DoKeyEvent(e KeyEvent) bool { if action, ok := BufKeyBindings[e]; ok { - action(h) + if action(h) { + h.Win.Relocate() + } return true } return false @@ -125,7 +130,9 @@ func (h *BufHandler) DoKeyEvent(e KeyEvent) bool { func (h *BufHandler) DoMouseEvent(e MouseEvent, te *tcell.EventMouse) bool { if action, ok := BufMouseBindings[e]; ok { - action(h, te) + if action(h, te) { + h.Win.Relocate() + } return true } return false diff --git a/cmd/micro/display/statusline.go b/cmd/micro/display/statusline.go index c98950d1..b9343fa9 100644 --- a/cmd/micro/display/statusline.go +++ b/cmd/micro/display/statusline.go @@ -8,7 +8,6 @@ import ( "strconv" "unicode/utf8" - "github.com/zyedidia/micro/cmd/micro/action" "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/screen" @@ -84,12 +83,13 @@ func (s *StatusLine) Display() { option := name[4:] return []byte(fmt.Sprint(s.FindOpt(string(option)))) } else if bytes.HasPrefix(name, []byte("bind")) { - binding := string(name[5:]) - for k, v := range action.Bindings { - if v == binding { - return []byte(k) - } - } + // binding := string(name[5:]) + // TODO: search bindings + // for k, v := range action.Bindings { + // if v == binding { + // return []byte(k) + // } + // } return []byte("null") } else { return []byte(s.Info[string(name)](s.win.Buf)) diff --git a/cmd/micro/display/window.go b/cmd/micro/display/window.go index 14630a5d..d4967b5e 100644 --- a/cmd/micro/display/window.go +++ b/cmd/micro/display/window.go @@ -1,6 +1,7 @@ package display import ( + "log" "strconv" "unicode/utf8" @@ -37,12 +38,15 @@ type BufWindow struct { Buf *buffer.Buffer sline *StatusLine + + lineHeight []int } // NewBufWindow creates a new window at a location in the screen with a width and height func NewBufWindow(x, y, width, height int, buf *buffer.Buffer) *BufWindow { w := new(BufWindow) w.X, w.Y, w.Width, w.Height, w.Buf = x, y, width, height, buf + w.lineHeight = make([]int, height) w.sline = NewStatusLine(w) @@ -58,6 +62,71 @@ func (w *BufWindow) Clear() { } } +// Bottomline returns the line number of the lowest line in the view +// You might think that this is obviously just v.StartLine + v.Height +// but if softwrap is enabled things get complicated since one buffer +// line can take up multiple lines in the view +func (w *BufWindow) Bottomline() int { + // b := w.Buf + + // if !b.Settings["softwrap"].(bool) { + // return w.StartLine + w.Height + // } + + prev := 0 + for i, l := range w.lineHeight { + if l >= prev { + log.Println("lineHeight[", i, "] = ", l) + prev = l + } else { + break + } + } + return prev +} + +// Relocate moves the view window so that the cursor is in view +// This is useful if the user has scrolled far away, and then starts typing +// Returns true if the window location is moved +func (w *BufWindow) Relocate() bool { + b := w.Buf + height := w.Bottomline() + 1 - w.StartLine + log.Println("Height: ", height) + ret := false + activeC := w.Buf.GetActiveCursor() + cy := activeC.Y + scrollmargin := int(b.Settings["scrollmargin"].(float64)) + if cy < w.StartLine+scrollmargin && cy > scrollmargin-1 { + w.StartLine = cy - scrollmargin + ret = true + } else if cy < w.StartLine { + w.StartLine = cy + ret = true + } + if cy > w.StartLine+height-1-scrollmargin && cy < b.LinesNum()-scrollmargin { + w.StartLine = cy - height + 1 + scrollmargin + ret = true + } else if cy >= b.LinesNum()-scrollmargin && cy >= height { + w.StartLine = b.LinesNum() - height + log.Println(w.StartLine) + ret = true + } + + // TODO: horizontal scroll + // if !b.Settings["softwrap"].(bool) { + // cx := activeC.GetVisualX() + // if cx < w.StartCol { + // w.StartCol = cx + // ret = true + // } + // if cx+v.lineNumOffset+1 > v.leftCol+v.Width { + // v.leftCol = cx - v.Width + v.lineNumOffset + 1 + // ret = true + // } + // } + return ret +} + func (w *BufWindow) drawLineNum(lineNumStyle tcell.Style, softwrapped bool, maxLineNumLength int, vloc *buffer.Loc, bloc *buffer.Loc) { lineNum := strconv.Itoa(bloc.Y + 1) @@ -173,6 +242,8 @@ func (w *BufWindow) displayBuffer() { nColsBeforeStart-- } + w.lineHeight[vloc.Y] = bloc.Y + totalwidth := bloc.X - nColsBeforeStart for len(line) > 0 { if activeC.X == bloc.X && activeC.Y == bloc.Y { @@ -217,6 +288,7 @@ func (w *BufWindow) displayBuffer() { break } vloc.X = 0 + w.lineHeight[vloc.Y] = bloc.Y // This will draw an empty line number because the current line is wrapped w.drawLineNum(lineNumStyle, true, maxLineNumLength, &vloc, &bloc) } diff --git a/cmd/micro/editpane.go b/cmd/micro/editpane.go index 90739fba..a551a53e 100644 --- a/cmd/micro/editpane.go +++ b/cmd/micro/editpane.go @@ -13,8 +13,10 @@ type EditPane struct { func NewBufEditPane(x, y, width, height int, b *buffer.Buffer) *EditPane { e := new(EditPane) - e.Window = display.NewBufWindow(x, y, width, height, b) - e.Handler = action.NewBufHandler(b) + // TODO: can probably replace editpane with bufhandler entirely + w := display.NewBufWindow(x, y, width, height, b) + e.Window = w + e.Handler = action.NewBufHandler(b, w) return e } diff --git a/cmd/micro/util/util.go b/cmd/micro/util/util.go index 874f3b48..6d324434 100644 --- a/cmd/micro/util/util.go +++ b/cmd/micro/util/util.go @@ -231,3 +231,19 @@ func EscapePath(path string) string { path = filepath.ToSlash(path) return strings.Replace(path, "/", "%", -1) } + +// GetLeadingWhitespace returns the leading whitespace of the given byte array +func GetLeadingWhitespace(b []byte) []byte { + ws := []byte{} + for len(b) > 0 { + r, size := utf8.DecodeRune(b) + if r == ' ' || r == '\t' { + ws = append(ws, byte(r)) + } else { + break + } + + b = b[size:] + } + return ws +} From c50e0cb932d2f783c27865bf059a0eb985e16494 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 31 Dec 2018 22:07:01 -0500 Subject: [PATCH 029/231] Add infobar --- cmd/micro/action/actions.go | 55 +++++++++++++-------- cmd/micro/action/bufhandler.go | 4 +- cmd/micro/buffer/buffer.go | 27 ++++++----- cmd/micro/display/infobar.go | 84 --------------------------------- cmd/micro/display/infowindow.go | 74 +++++++++++++++++++++++++++++ cmd/micro/display/window.go | 31 +++++++----- cmd/micro/info/gutter.go | 18 +++++++ cmd/micro/info/history.go | 61 ++++++++++++++++++++++++ cmd/micro/info/infobar.go | 66 ++++++++++++++++++++++++++ cmd/micro/micro.go | 20 ++++++-- cmd/micro/util/profile.go | 4 +- 11 files changed, 309 insertions(+), 135 deletions(-) delete mode 100644 cmd/micro/display/infobar.go create mode 100644 cmd/micro/display/infowindow.go create mode 100644 cmd/micro/info/gutter.go create mode 100644 cmd/micro/info/history.go create mode 100644 cmd/micro/info/infobar.go diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index a9ea8e87..813831db 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -7,34 +7,45 @@ import ( "github.com/zyedidia/clipboard" "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/info" "github.com/zyedidia/micro/cmd/micro/screen" "github.com/zyedidia/micro/cmd/micro/util" "github.com/zyedidia/tcell" ) +// ScrollUp is not an action +func (h *BufHandler) ScrollUp(n int) { + v := h.Win.GetView() + if v.StartLine >= n { + v.StartLine -= n + h.Win.SetView(v) + } +} + +// ScrollDown is not an action +func (h *BufHandler) ScrollDown(n int) { + v := h.Win.GetView() + if v.StartLine <= h.Buf.LinesNum()-1-n { + v.StartLine += n + h.Win.SetView(v) + } +} + // MousePress is the event that should happen when a normal click happens // This is almost always bound to left click func (h *BufHandler) MousePress(e *tcell.EventMouse) bool { + h.ScrollUp(h.Buf.Settings["scrollspeed"].(int)) return false } // ScrollUpAction scrolls the view up func (h *BufHandler) ScrollUpAction() bool { - b := h.Buf - sspeed := b.Settings["scrollspeed"].(int) - if h.Win.StartLine >= sspeed { - h.Win.StartLine -= sspeed - } return false } // ScrollDownAction scrolls the view up func (h *BufHandler) ScrollDownAction() bool { - b := h.Buf - sspeed := b.Settings["scrollspeed"].(int) - if h.Win.StartLine <= h.Buf.LinesNum()-1-sspeed { - h.Win.StartLine += sspeed - } + h.ScrollDown(h.Buf.Settings["scrollspeed"].(int)) return false } @@ -514,7 +525,7 @@ func (h *BufHandler) CutLine() bool { h.lastCutTime = time.Now() h.Cursor.DeleteSelection() h.Cursor.ResetSelection() - // messenger.Message("Cut line") + info.MainBar.Message("Cut line") return true } @@ -525,7 +536,7 @@ func (h *BufHandler) Cut() bool { h.Cursor.DeleteSelection() h.Cursor.ResetSelection() h.freshClip = true - // messenger.Message("Cut selection") + info.MainBar.Message("Cut selection") return true } else { @@ -543,7 +554,7 @@ func (h *BufHandler) DuplicateLine() bool { // h.Cursor.Right() } - // messenger.Message("Duplicated line") + info.MainBar.Message("Duplicated line") return true } @@ -555,7 +566,7 @@ func (h *BufHandler) DeleteLine() bool { } h.Cursor.DeleteSelection() h.Cursor.ResetSelection() - // messenger.Message("Deleted line") + info.MainBar.Message("Deleted line") return true } @@ -603,17 +614,21 @@ func (h *BufHandler) OpenFile() bool { // Start moves the viewport to the start of the buffer func (h *BufHandler) Start() bool { - h.Win.StartLine = 0 + v := h.Win.GetView() + v.StartLine = 0 + h.Win.SetView(v) return false } // End moves the viewport to the end of the buffer func (h *BufHandler) End() bool { // TODO: softwrap problems? - if h.Win.Height > h.Buf.LinesNum() { - h.Win.StartLine = 0 + v := h.Win.GetView() + if v.Height > h.Buf.LinesNum() { + v.StartLine = 0 + h.Win.SetView(v) } else { - h.StartLine = h.Buf.LinesNum() - h.Win.Height + h.StartLine = h.Buf.LinesNum() - v.Height } return false } @@ -662,10 +677,10 @@ func (h *BufHandler) HalfPageDown() bool { func (h *BufHandler) ToggleRuler() bool { if !h.Buf.Settings["ruler"].(bool) { h.Buf.Settings["ruler"] = true - // messenger.Message("Enabled ruler") + info.MainBar.Message("Enabled ruler") } else { h.Buf.Settings["ruler"] = false - // messenger.Message("Disabled ruler") + info.MainBar.Message("Disabled ruler") } return false } diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 80d490fa..3f2909fa 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -47,7 +47,7 @@ func BufMapMouse(k MouseEvent, action string) { // visual positions for mouse clicks and scrolling type BufHandler struct { Buf *buffer.Buffer - Win *display.BufWindow + Win display.Window cursors []*buffer.Cursor Cursor *buffer.Cursor // the active cursor @@ -83,7 +83,7 @@ type BufHandler struct { tripleClick bool } -func NewBufHandler(buf *buffer.Buffer, win *display.BufWindow) *BufHandler { +func NewBufHandler(buf *buffer.Buffer, win display.Window) *BufHandler { h := new(BufHandler) h.Buf = buf h.Win = win diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index e24bd18d..f6214429 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -53,14 +53,15 @@ type BufType struct { Kind int Readonly bool // The file cannot be edited Scratch bool // The file cannot be saved + Syntax bool // Syntax highlighting is enabled } var ( - BTDefault = BufType{0, false, false} - BTHelp = BufType{1, true, true} - BTLog = BufType{2, true, true} - BTScratch = BufType{3, false, true} - BTRaw = BufType{4, true, true} + BTDefault = BufType{0, false, false, true} + BTHelp = BufType{1, true, true, true} + BTLog = BufType{2, true, true, false} + BTScratch = BufType{3, false, true, false} + BTRaw = BufType{4, true, true, false} ) // Buffer stores the main information about a currently open file including @@ -107,7 +108,7 @@ type Buffer struct { // It will also automatically handle `~`, and line/column with filename:l:c // It will return an empty buffer if the path does not exist // and an error if the file is a directory -func NewBufferFromFile(path string) (*Buffer, error) { +func NewBufferFromFile(path string, btype BufType) (*Buffer, error) { var err error filename, cursorPosition := GetPathAndCursorPosition(path) filename, err = ReplaceHome(filename) @@ -127,24 +128,25 @@ func NewBufferFromFile(path string) (*Buffer, error) { var buf *Buffer if err != nil { // File does not exist -- create an empty buffer with that name - buf = NewBufferFromString("", filename) + buf = NewBufferFromString("", filename, btype) } else { - buf = NewBuffer(file, FSize(file), filename, cursorPosition) + buf = NewBuffer(file, FSize(file), filename, cursorPosition, btype) } return buf, nil } // NewBufferFromString creates a new buffer containing the given string -func NewBufferFromString(text, path string) *Buffer { - return NewBuffer(strings.NewReader(text), int64(len(text)), path, nil) +func NewBufferFromString(text, path string, btype BufType) *Buffer { + return NewBuffer(strings.NewReader(text), int64(len(text)), path, nil, btype) } // NewBuffer creates a new buffer from a given reader with a given path // Ensure that ReadSettings and InitGlobalSettings have been called before creating // a new buffer -func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []string) *Buffer { +func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []string, btype BufType) *Buffer { b := new(Buffer) + b.Type = btype b.Settings = config.DefaultLocalSettings() for k, v := range config.GlobalSettings { @@ -344,6 +346,9 @@ func (b *Buffer) deleteToEnd(start Loc) { // UpdateRules updates the syntax rules and filetype for this buffer // This is called when the colorscheme changes func (b *Buffer) UpdateRules() { + if !b.Type.Syntax { + return + } rehighlight := false var files []*highlight.File for _, f := range config.ListRuntimeFiles(config.RTSyntax) { diff --git a/cmd/micro/display/infobar.go b/cmd/micro/display/infobar.go deleted file mode 100644 index 0c5be76e..00000000 --- a/cmd/micro/display/infobar.go +++ /dev/null @@ -1,84 +0,0 @@ -package display - -import ( - "fmt" - "strings" - - runewidth "github.com/mattn/go-runewidth" - "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/screen" - "github.com/zyedidia/tcell" -) - -// The InfoBar displays messages and other info at the bottom of the screen. -// It is respresented as a buffer and a message with a style. -type InfoBar struct { - *buffer.Buffer - - hasPrompt bool - hasMessage bool - - message string - // style to use when drawing the message - style tcell.Style - - width int - y int - - // This map stores the history for all the different kinds of uses Prompt has - // It's a map of history type -> history array - history map[string][]string - historyNum int - - // Is the current message a message from the gutter - gutterMessage bool -} - -func NewInfoBar() *InfoBar { - ib := new(InfoBar) - ib.style = config.DefStyle - ib.history = make(map[string][]string) - - ib.Buffer = buffer.NewBufferFromString("", "infobar") - ib.Type = buffer.BTScratch - - ib.width, ib.y = screen.Screen.Size() - - return ib -} - -func (i *InfoBar) Clear() { - for x := 0; x < i.width; x++ { - screen.Screen.SetContent(x, i.y, ' ', nil, config.DefStyle) - } -} - -func (i *InfoBar) Display() { - x := 0 - if i.hasPrompt || config.GlobalSettings["infobar"].(bool) { - display := i.message + strings.TrimSpace(string(i.Bytes())) - for _, c := range display { - screen.Screen.SetContent(x, i.y, c, nil, i.style) - x += runewidth.RuneWidth(c) - } - } -} - -// Message sends a message to the user -func (i *InfoBar) Message(msg ...interface{}) { - displayMessage := fmt.Sprint(msg...) - // only display a new message if there isn't an active prompt - // this is to prevent overwriting an existing prompt to the user - if i.hasPrompt == false { - // if there is no active prompt then style and display the message as normal - i.message = displayMessage - i.style = config.DefStyle - - if _, ok := config.Colorscheme["message"]; ok { - i.style = config.Colorscheme["message"] - } - - i.hasMessage = true - } -} diff --git a/cmd/micro/display/infowindow.go b/cmd/micro/display/infowindow.go new file mode 100644 index 00000000..278c5b74 --- /dev/null +++ b/cmd/micro/display/infowindow.go @@ -0,0 +1,74 @@ +package display + +import ( + "strings" + + runewidth "github.com/mattn/go-runewidth" + "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/cmd/micro/info" + "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/tcell" +) + +type InfoWindow struct { + *info.Bar + *View + + defStyle tcell.Style + errStyle tcell.Style + + width int + y int +} + +func NewInfoWindow(b *info.Bar) *InfoWindow { + iw := new(InfoWindow) + iw.Bar = b + iw.View = new(View) + + iw.defStyle = config.DefStyle + + if _, ok := config.Colorscheme["message"]; ok { + iw.defStyle = config.Colorscheme["message"] + } + + iw.errStyle = config.DefStyle. + Foreground(tcell.ColorBlack). + Background(tcell.ColorMaroon) + + if _, ok := config.Colorscheme["error-message"]; ok { + iw.errStyle = config.Colorscheme["error-message"] + } + + iw.width, iw.y = screen.Screen.Size() + iw.y-- + + return iw +} + +func (i *InfoWindow) Relocate() bool { return false } +func (i *InfoWindow) GetView() *View { return i.View } +func (i *InfoWindow) SetView(v *View) {} + +func (i *InfoWindow) Clear() { + for x := 0; x < i.width; x++ { + screen.Screen.SetContent(x, i.y, ' ', nil, config.DefStyle) + } +} + +func (i *InfoWindow) Display() { + x := 0 + if i.HasPrompt || config.GlobalSettings["infobar"].(bool) { + style := i.defStyle + + if i.HasError { + style = i.errStyle + } + + display := i.Msg + strings.TrimSpace(string(i.Bytes())) + for _, c := range display { + screen.Screen.SetContent(x, i.y, c, nil, style) + x += runewidth.RuneWidth(c) + } + } +} diff --git a/cmd/micro/display/window.go b/cmd/micro/display/window.go index d4967b5e..14aff6ad 100644 --- a/cmd/micro/display/window.go +++ b/cmd/micro/display/window.go @@ -13,26 +13,24 @@ import ( "github.com/zyedidia/tcell" ) +type View struct { + X, Y int // X,Y location of the view + Width, Height int // Width and height of the view + StartLine, StartCol int // Start line and start column of the view (vertical/horizontal scroll) +} + type Window interface { Display() Clear() + Relocate() bool + GetView() *View + SetView(v *View) } // The BufWindow provides a way of displaying a certain section // of a buffer type BufWindow struct { - // X and Y coordinates for the top left of the window - X int - Y int - - // Width and Height for the window - Width int - Height int - - // Which line in the buffer to start displaying at (vertical scroll) - StartLine int - // Which visual column in the to start displaying at (horizontal scroll) - StartCol int + *View // Buffer being shown in this window Buf *buffer.Buffer @@ -45,6 +43,7 @@ type BufWindow struct { // NewBufWindow creates a new window at a location in the screen with a width and height func NewBufWindow(x, y, width, height int, buf *buffer.Buffer) *BufWindow { w := new(BufWindow) + w.View = new(View) w.X, w.Y, w.Width, w.Height, w.Buf = x, y, width, height, buf w.lineHeight = make([]int, height) @@ -53,6 +52,14 @@ func NewBufWindow(x, y, width, height int, buf *buffer.Buffer) *BufWindow { return w } +func (v *View) GetView() *View { + return v +} + +func (v *View) SetView(view *View) { + v = view +} + // Clear resets all cells in this window to the default style func (w *BufWindow) Clear() { for y := 0; y < w.Height; y++ { diff --git a/cmd/micro/info/gutter.go b/cmd/micro/info/gutter.go new file mode 100644 index 00000000..5d95ccd0 --- /dev/null +++ b/cmd/micro/info/gutter.go @@ -0,0 +1,18 @@ +package info + +// A GutterMessage is a message displayed on the side of the editor +type GutterMessage struct { + lineNum int + msg string + kind int +} + +// These are the different types of messages +const ( + // GutterInfo represents a simple info message + GutterInfo = iota + // GutterWarning represents a compiler warning + GutterWarning + // GutterError represents a compiler error + GutterError +) diff --git a/cmd/micro/info/history.go b/cmd/micro/info/history.go new file mode 100644 index 00000000..663fd594 --- /dev/null +++ b/cmd/micro/info/history.go @@ -0,0 +1,61 @@ +package info + +import ( + "encoding/gob" + "os" + + "github.com/zyedidia/micro/cmd/micro/config" +) + +// LoadHistory attempts to load user history from configDir/buffers/history +// into the history map +// The savehistory option must be on +func (i *Bar) LoadHistory() { + if config.GetGlobalOption("savehistory").(bool) { + file, err := os.Open(config.ConfigDir + "/buffers/history") + defer file.Close() + var decodedMap map[string][]string + if err == nil { + decoder := gob.NewDecoder(file) + err = decoder.Decode(&decodedMap) + + if err != nil { + i.Error("Error loading history:", err) + return + } + } + + if decodedMap != nil { + i.History = decodedMap + } else { + i.History = make(map[string][]string) + } + } else { + i.History = make(map[string][]string) + } +} + +// SaveHistory saves the user's command history to configDir/buffers/history +// only if the savehistory option is on +func (i *Bar) SaveHistory() { + if config.GetGlobalOption("savehistory").(bool) { + // Don't save history past 100 + for k, v := range i.History { + if len(v) > 100 { + i.History[k] = v[len(i.History[k])-100:] + } + } + + file, err := os.Create(config.ConfigDir + "/buffers/history") + defer file.Close() + if err == nil { + encoder := gob.NewEncoder(file) + + err = encoder.Encode(i.History) + if err != nil { + i.Error("Error saving history:", err) + return + } + } + } +} diff --git a/cmd/micro/info/infobar.go b/cmd/micro/info/infobar.go new file mode 100644 index 00000000..099f4571 --- /dev/null +++ b/cmd/micro/info/infobar.go @@ -0,0 +1,66 @@ +package info + +import ( + "fmt" + + "github.com/zyedidia/micro/cmd/micro/buffer" +) + +var MainBar *Bar + +func InitInfoBar() { + MainBar = NewBar() +} + +// The Bar displays messages and other info at the bottom of the screen. +// It is respresented as a buffer and a message with a style. +type Bar struct { + *buffer.Buffer + + HasPrompt bool + HasMessage bool + HasError bool + + Msg string + + // This map stores the history for all the different kinds of uses Prompt has + // It's a map of history type -> history array + History map[string][]string + HistoryNum int + + // Is the current message a message from the gutter + GutterMessage bool +} + +func NewBar() *Bar { + ib := new(Bar) + ib.History = make(map[string][]string) + + ib.Buffer = buffer.NewBufferFromString("", "infobar", buffer.BTScratch) + + return ib +} + +// Message sends a message to the user +func (i *Bar) Message(msg ...interface{}) { + // only display a new message if there isn't an active prompt + // this is to prevent overwriting an existing prompt to the user + if i.HasPrompt == false { + displayMessage := fmt.Sprint(msg...) + // if there is no active prompt then style and display the message as normal + i.Msg = displayMessage + i.HasMessage = true + } +} + +// Error sends an error message to the user +func (i *Bar) Error(msg ...interface{}) { + // only display a new message if there isn't an active prompt + // this is to prevent overwriting an existing prompt to the user + if i.HasPrompt == false { + // if there is no active prompt then style and display the message as normal + i.Msg = fmt.Sprint(msg...) + i.HasError = true + } + // TODO: add to log? +} diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 86374bac..c56b7506 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -12,6 +12,8 @@ import ( "github.com/zyedidia/micro/cmd/micro/action" "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/cmd/micro/display" + "github.com/zyedidia/micro/cmd/micro/info" "github.com/zyedidia/micro/cmd/micro/screen" "github.com/zyedidia/micro/cmd/micro/util" "github.com/zyedidia/tcell" @@ -126,7 +128,7 @@ func LoadInput() []*buffer.Buffer { continue } - buf, err := buffer.NewBufferFromFile(args[i]) + buf, err := buffer.NewBufferFromFile(args[i], buffer.BTDefault) if err != nil { util.TermMessage(err) continue @@ -143,10 +145,10 @@ func LoadInput() []*buffer.Buffer { util.TermMessage("Error reading from stdin: ", err) input = []byte{} } - buffers = append(buffers, buffer.NewBufferFromString(string(input), filename)) + buffers = append(buffers, buffer.NewBufferFromString(string(input), filename, buffer.BTDefault)) } else { // Option 3, just open an empty buffer - buffers = append(buffers, buffer.NewBufferFromString(string(input), filename)) + buffers = append(buffers, buffer.NewBufferFromString(string(input), filename, buffer.BTDefault)) } return buffers @@ -168,6 +170,7 @@ func main() { } config.InitGlobalSettings() action.InitBindings() + err = config.InitColorscheme() if err != nil { util.TermMessage(err) @@ -192,6 +195,10 @@ func main() { width, height := screen.Screen.Size() ep := NewBufEditPane(0, 0, width, height-1, b) + info.InitInfoBar() + infowindow := display.NewInfoWindow(info.MainBar) + infobar := action.NewBufHandler(info.MainBar.Buffer, infowindow) + // Here is the event loop which runs in a separate thread go func() { events = make(chan tcell.Event) @@ -206,6 +213,7 @@ func main() { // Display everything screen.Screen.Fill(' ', config.DefStyle) ep.Display() + infowindow.Display() screen.Screen.Show() var event tcell.Event @@ -216,7 +224,11 @@ func main() { } if event != nil { - ep.HandleEvent(event) + if info.MainBar.HasPrompt { + infobar.HandleEvent(event) + } else { + ep.HandleEvent(event) + } } } diff --git a/cmd/micro/util/profile.go b/cmd/micro/util/profile.go index 61726e5c..d15655dd 100644 --- a/cmd/micro/util/profile.go +++ b/cmd/micro/util/profile.go @@ -18,12 +18,12 @@ func GetMemStats() string { var start time.Time -func tic(s string) { +func Tic(s string) { log.Println("START:", s) start = time.Now() } -func toc() { +func Toc() { end := time.Now() log.Println("END: ElapsedTime in seconds:", end.Sub(start)) } From afe24698eaee42470d855f325071892601727832 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 31 Dec 2018 23:47:24 -0500 Subject: [PATCH 030/231] Infobar prompts --- cmd/micro/action/actions.go | 50 +++++++++++++++++-- cmd/micro/buffer/buffer.go | 1 + cmd/micro/display/infowindow.go | 86 ++++++++++++++++++++++++++++++++- cmd/micro/display/window.go | 8 +-- cmd/micro/info/infobar.go | 23 ++++++++- cmd/micro/micro.go | 1 + cmd/micro/util/util.go | 16 ++++++ 7 files changed, 170 insertions(+), 15 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 813831db..0422fed1 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -34,18 +34,18 @@ func (h *BufHandler) ScrollDown(n int) { // MousePress is the event that should happen when a normal click happens // This is almost always bound to left click func (h *BufHandler) MousePress(e *tcell.EventMouse) bool { - h.ScrollUp(h.Buf.Settings["scrollspeed"].(int)) return false } // ScrollUpAction scrolls the view up func (h *BufHandler) ScrollUpAction() bool { + h.ScrollUp(util.IntOpt(h.Buf.Settings["scrollspeed"])) return false } // ScrollDownAction scrolls the view up func (h *BufHandler) ScrollDownAction() bool { - h.ScrollDown(h.Buf.Settings["scrollspeed"].(int)) + h.ScrollDown(util.IntOpt(h.Buf.Settings["scrollspeed"])) return false } @@ -298,6 +298,38 @@ func (h *BufHandler) InsertSpace() bool { // InsertNewline inserts a newline plus possible some whitespace if autoindent is on func (h *BufHandler) InsertNewline() bool { + if h.Buf.Type == buffer.BTInfo { + info.MainBar.DonePrompt(false) + return false + } + + // Insert a newline + if h.Cursor.HasSelection() { + h.Cursor.DeleteSelection() + h.Cursor.ResetSelection() + } + + ws := util.GetLeadingWhitespace(h.Buf.LineBytes(h.Cursor.Y)) + cx := h.Cursor.X + h.Buf.Insert(h.Cursor.Loc, "\n") + // h.Cursor.Right() + + if h.Buf.Settings["autoindent"].(bool) { + if cx < len(ws) { + ws = ws[0:cx] + } + h.Buf.Insert(h.Cursor.Loc, string(ws)) + // for i := 0; i < len(ws); i++ { + // h.Cursor.Right() + // } + + // Remove the whitespaces if keepautoindent setting is off + if util.IsSpacesOrTabs(h.Buf.LineBytes(h.Cursor.Y-1)) && !h.Buf.Settings["keepautoindent"].(bool) { + line := h.Buf.LineBytes(h.Cursor.Y - 1) + h.Buf.Remove(buffer.Loc{X: 0, Y: h.Cursor.Y - 1}, buffer.Loc{X: utf8.RuneCount(line), Y: h.Cursor.Y - 1}) + } + } + h.Cursor.LastVisualX = h.Cursor.GetVisualX() return true } @@ -402,7 +434,7 @@ func (h *BufHandler) OutdentLine() bool { return false } - for x := 0; x < len(h.Buf.IndentString(h.Buf.Settings["tabsize"].(int))); x++ { + for x := 0; x < len(h.Buf.IndentString(util.IntOpt(h.Buf.Settings["tabsize"]))); x++ { if len(util.GetLeadingWhitespace(h.Buf.LineBytes(h.Cursor.Y))) == 0 { break } @@ -426,7 +458,7 @@ func (h *BufHandler) OutdentSelection() bool { startY := start.Y endY := end.Move(-1, h.Buf).Y for y := startY; y <= endY; y++ { - for x := 0; x < len(h.Buf.IndentString(h.Buf.Settings["tabsize"].(int))); x++ { + for x := 0; x < len(h.Buf.IndentString(util.IntOpt(h.Buf.Settings["tabsize"]))); x++ { if len(util.GetLeadingWhitespace(h.Buf.LineBytes(y))) == 0 { break } @@ -442,7 +474,7 @@ func (h *BufHandler) OutdentSelection() bool { // InsertTab inserts a tab or spaces func (h *BufHandler) InsertTab() bool { - indent := h.Buf.IndentString(h.Buf.Settings["tabsize"].(int)) + indent := h.Buf.IndentString(util.IntOpt(h.Buf.Settings["tabsize"])) tabBytes := len(indent) bytesUntilIndent := tabBytes - (h.Cursor.GetVisualX() % tabBytes) h.Buf.Insert(h.Cursor.Loc, indent[:bytesUntilIndent]) @@ -609,6 +641,14 @@ func (h *BufHandler) SelectAll() bool { // OpenFile opens a new file in the buffer func (h *BufHandler) OpenFile() bool { + cb := func(resp string, canceled bool) { + if !canceled { + info.MainBar.Message("Opening", resp) + } else { + info.MainBar.Error("Canceled") + } + } + info.MainBar.Prompt("Open file: ", cb) return false } diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index f6214429..5dbe637c 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -62,6 +62,7 @@ var ( BTLog = BufType{2, true, true, false} BTScratch = BufType{3, false, true, false} BTRaw = BufType{4, true, true, false} + BTInfo = BufType{5, false, true, false} ) // Buffer stores the main information about a currently open file including diff --git a/cmd/micro/display/infowindow.go b/cmd/micro/display/infowindow.go index 278c5b74..3fbd0ef4 100644 --- a/cmd/micro/display/infowindow.go +++ b/cmd/micro/display/infowindow.go @@ -1,12 +1,14 @@ package display import ( - "strings" + "unicode/utf8" runewidth "github.com/mattn/go-runewidth" + "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/info" "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/cmd/micro/util" "github.com/zyedidia/tcell" ) @@ -56,19 +58,99 @@ func (i *InfoWindow) Clear() { } } +func (i *InfoWindow) displayBuffer() { + b := i.Buffer + line := b.LineBytes(0) + activeC := b.GetActiveCursor() + + blocX := 0 + vlocX := utf8.RuneCountInString(i.Msg) + + tabsize := 4 + line, nColsBeforeStart := util.SliceVisualEnd(line, blocX, tabsize) + + draw := func(r rune, style tcell.Style) { + if nColsBeforeStart <= 0 { + bloc := buffer.Loc{X: blocX, Y: 0} + if activeC.HasSelection() && + (bloc.GreaterEqual(activeC.CurSelection[0]) && bloc.LessThan(activeC.CurSelection[1]) || + bloc.LessThan(activeC.CurSelection[0]) && bloc.GreaterEqual(activeC.CurSelection[1])) { + // The current character is selected + style = config.DefStyle.Reverse(true) + + if s, ok := config.Colorscheme["selection"]; ok { + style = s + } + + } + + screen.Screen.SetContent(vlocX, i.y, r, nil, style) + vlocX++ + } + nColsBeforeStart-- + } + + totalwidth := blocX - nColsBeforeStart + for len(line) > 0 { + if activeC.X == blocX { + screen.Screen.ShowCursor(vlocX, i.y) + } + + r, size := utf8.DecodeRune(line) + + draw(r, i.defStyle) + + width := 0 + + char := ' ' + switch r { + case '\t': + ts := tabsize - (totalwidth % tabsize) + width = ts + default: + width = runewidth.RuneWidth(r) + char = '@' + } + + blocX++ + line = line[size:] + + // Draw any extra characters either spaces for tabs or @ for incomplete wide runes + if width > 1 { + for j := 1; j < width; j++ { + draw(char, i.defStyle) + } + } + totalwidth += width + if vlocX >= i.width { + break + } + } + if activeC.X == blocX { + screen.Screen.ShowCursor(vlocX, i.y) + } +} + func (i *InfoWindow) Display() { x := 0 if i.HasPrompt || config.GlobalSettings["infobar"].(bool) { + if !i.HasPrompt && !i.HasMessage && !i.HasError { + return + } style := i.defStyle if i.HasError { style = i.errStyle } - display := i.Msg + strings.TrimSpace(string(i.Bytes())) + display := i.Msg for _, c := range display { screen.Screen.SetContent(x, i.y, c, nil, style) x += runewidth.RuneWidth(c) } + + if i.HasPrompt { + i.displayBuffer() + } } } diff --git a/cmd/micro/display/window.go b/cmd/micro/display/window.go index 14aff6ad..0cbd2e7d 100644 --- a/cmd/micro/display/window.go +++ b/cmd/micro/display/window.go @@ -1,7 +1,6 @@ package display import ( - "log" "strconv" "unicode/utf8" @@ -81,9 +80,8 @@ func (w *BufWindow) Bottomline() int { // } prev := 0 - for i, l := range w.lineHeight { + for _, l := range w.lineHeight { if l >= prev { - log.Println("lineHeight[", i, "] = ", l) prev = l } else { break @@ -98,7 +96,6 @@ func (w *BufWindow) Bottomline() int { func (w *BufWindow) Relocate() bool { b := w.Buf height := w.Bottomline() + 1 - w.StartLine - log.Println("Height: ", height) ret := false activeC := w.Buf.GetActiveCursor() cy := activeC.Y @@ -115,7 +112,6 @@ func (w *BufWindow) Relocate() bool { ret = true } else if cy >= b.LinesNum()-scrollmargin && cy >= height { w.StartLine = b.LinesNum() - height - log.Println(w.StartLine) ret = true } @@ -217,7 +213,7 @@ func (w *BufWindow) displayBuffer() { // this represents the current draw position in the buffer (char positions) bloc := buffer.Loc{X: w.StartCol, Y: w.StartLine} - activeC := w.Buf.GetActiveCursor() + activeC := b.GetActiveCursor() curStyle := config.DefStyle for vloc.Y = 0; vloc.Y < bufHeight; vloc.Y++ { diff --git a/cmd/micro/info/infobar.go b/cmd/micro/info/infobar.go index 099f4571..6a068efe 100644 --- a/cmd/micro/info/infobar.go +++ b/cmd/micro/info/infobar.go @@ -2,6 +2,7 @@ package info import ( "fmt" + "strings" "github.com/zyedidia/micro/cmd/micro/buffer" ) @@ -30,13 +31,15 @@ type Bar struct { // Is the current message a message from the gutter GutterMessage bool + + PromptCallback func(resp string, canceled bool) } func NewBar() *Bar { ib := new(Bar) ib.History = make(map[string][]string) - ib.Buffer = buffer.NewBufferFromString("", "infobar", buffer.BTScratch) + ib.Buffer = buffer.NewBufferFromString("", "infobar", buffer.BTInfo) return ib } @@ -60,7 +63,23 @@ func (i *Bar) Error(msg ...interface{}) { if i.HasPrompt == false { // if there is no active prompt then style and display the message as normal i.Msg = fmt.Sprint(msg...) - i.HasError = true + i.HasMessage, i.HasError = false, true } // TODO: add to log? } + +func (i *Bar) Prompt(msg string, callback func(string, bool)) { + i.Msg = msg + i.HasPrompt = true + i.HasMessage, i.HasError = false, false + i.PromptCallback = callback +} + +func (i *Bar) DonePrompt(canceled bool) { + i.HasPrompt = false + if canceled { + i.PromptCallback("", true) + } else { + i.PromptCallback(strings.TrimSpace(string(i.LineBytes(0))), false) + } +} diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index c56b7506..27d1ed29 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -212,6 +212,7 @@ func main() { for { // Display everything screen.Screen.Fill(' ', config.DefStyle) + screen.Screen.HideCursor() ep.Display() infowindow.Display() screen.Screen.Show() diff --git a/cmd/micro/util/util.go b/cmd/micro/util/util.go index 6d324434..02b5ffd9 100644 --- a/cmd/micro/util/util.go +++ b/cmd/micro/util/util.go @@ -155,6 +155,17 @@ func IsSpaces(str []byte) bool { return true } +// IsSpacesOrTabs checks if a given string contains only spaces and tabs +func IsSpacesOrTabs(str []byte) bool { + for _, c := range str { + if c != ' ' && c != '\t' { + return false + } + } + + return true +} + // IsWhitespace returns true if the given rune is a space, tab, or newline func IsWhitespace(c rune) bool { return c == ' ' || c == '\t' || c == '\n' @@ -247,3 +258,8 @@ func GetLeadingWhitespace(b []byte) []byte { } return ws } + +// IntOpt turns a float64 setting to an int +func IntOpt(opt interface{}) int { + return int(opt.(float64)) +} From 78ce7a5f0f397c6723c162e6bccfd79e1bd79235 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 1 Jan 2019 17:54:29 -0500 Subject: [PATCH 031/231] Minor infobar improvements --- cmd/micro/display/infowindow.go | 29 +++++++++++++++++++++++++++++ cmd/micro/info/infobar.go | 12 ++++++++++++ 2 files changed, 41 insertions(+) diff --git a/cmd/micro/display/infowindow.go b/cmd/micro/display/infowindow.go index 3fbd0ef4..a03fdc9e 100644 --- a/cmd/micro/display/infowindow.go +++ b/cmd/micro/display/infowindow.go @@ -48,6 +48,35 @@ func NewInfoWindow(b *info.Bar) *InfoWindow { return iw } +// func (i *InfoWindow) YesNoPrompt() (bool, bool) { +// for { +// i.Clear() +// i.Display() +// screen.Screen.ShowCursor(utf8.RuneCountInString(i.Msg), i.y) +// screen.Show() +// event := <-events +// +// switch e := event.(type) { +// case *tcell.EventKey: +// switch e.Key() { +// case tcell.KeyRune: +// if e.Rune() == 'y' || e.Rune() == 'Y' { +// i.HasPrompt = false +// return true, false +// } else if e.Rune() == 'n' || e.Rune() == 'N' { +// i.HasPrompt = false +// return false, false +// } +// case tcell.KeyCtrlC, tcell.KeyCtrlQ, tcell.KeyEscape: +// i.Clear() +// i.Reset() +// i.HasPrompt = false +// return false, true +// } +// } +// } +// } + func (i *InfoWindow) Relocate() bool { return false } func (i *InfoWindow) GetView() *View { return i.View } func (i *InfoWindow) SetView(v *View) {} diff --git a/cmd/micro/info/infobar.go b/cmd/micro/info/infobar.go index 6a068efe..fb46ea6a 100644 --- a/cmd/micro/info/infobar.go +++ b/cmd/micro/info/infobar.go @@ -69,6 +69,11 @@ func (i *Bar) Error(msg ...interface{}) { } func (i *Bar) Prompt(msg string, callback func(string, bool)) { + // If we get another prompt mid-prompt we cancel the one getting overwritten + if i.HasPrompt { + i.DonePrompt(true) + } + i.Msg = msg i.HasPrompt = true i.HasMessage, i.HasError = false, false @@ -82,4 +87,11 @@ func (i *Bar) DonePrompt(canceled bool) { } else { i.PromptCallback(strings.TrimSpace(string(i.LineBytes(0))), false) } + i.Replace(i.Start(), i.End(), "") +} + +// Reset resets the messenger's cursor, message and response +func (i *Bar) Reset() { + i.Msg = "" + i.HasPrompt, i.HasMessage, i.HasError = false, false, false } From c01995c1b61e2705d14ffa8e0b0679dd4c9f4912 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 1 Jan 2019 22:36:12 -0500 Subject: [PATCH 032/231] Reorganize info bar --- cmd/micro/action/actions.go | 21 ++++++++-------- cmd/micro/{ => action}/editpane.go | 25 ++++++++++++++++---- cmd/micro/action/{handler.go => events.go} | 0 cmd/micro/action/globals.go | 7 ++++++ cmd/micro/display/infowindow.go | 6 ++--- cmd/micro/info/history.go | 4 ++-- cmd/micro/info/{infobar.go => infobuffer.go} | 24 +++++++------------ cmd/micro/micro.go | 14 ++++------- 8 files changed, 57 insertions(+), 44 deletions(-) rename cmd/micro/{ => action}/editpane.go (51%) rename cmd/micro/action/{handler.go => events.go} (100%) create mode 100644 cmd/micro/action/globals.go rename cmd/micro/info/{infobar.go => infobuffer.go} (82%) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 0422fed1..2921d4bf 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -7,7 +7,6 @@ import ( "github.com/zyedidia/clipboard" "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/micro/cmd/micro/info" "github.com/zyedidia/micro/cmd/micro/screen" "github.com/zyedidia/micro/cmd/micro/util" "github.com/zyedidia/tcell" @@ -299,7 +298,7 @@ func (h *BufHandler) InsertSpace() bool { // InsertNewline inserts a newline plus possible some whitespace if autoindent is on func (h *BufHandler) InsertNewline() bool { if h.Buf.Type == buffer.BTInfo { - info.MainBar.DonePrompt(false) + InfoBar.DonePrompt(false) return false } @@ -557,7 +556,7 @@ func (h *BufHandler) CutLine() bool { h.lastCutTime = time.Now() h.Cursor.DeleteSelection() h.Cursor.ResetSelection() - info.MainBar.Message("Cut line") + InfoBar.Message("Cut line") return true } @@ -568,7 +567,7 @@ func (h *BufHandler) Cut() bool { h.Cursor.DeleteSelection() h.Cursor.ResetSelection() h.freshClip = true - info.MainBar.Message("Cut selection") + InfoBar.Message("Cut selection") return true } else { @@ -586,7 +585,7 @@ func (h *BufHandler) DuplicateLine() bool { // h.Cursor.Right() } - info.MainBar.Message("Duplicated line") + InfoBar.Message("Duplicated line") return true } @@ -598,7 +597,7 @@ func (h *BufHandler) DeleteLine() bool { } h.Cursor.DeleteSelection() h.Cursor.ResetSelection() - info.MainBar.Message("Deleted line") + InfoBar.Message("Deleted line") return true } @@ -643,12 +642,12 @@ func (h *BufHandler) SelectAll() bool { func (h *BufHandler) OpenFile() bool { cb := func(resp string, canceled bool) { if !canceled { - info.MainBar.Message("Opening", resp) + InfoBar.Message("Opening", resp) } else { - info.MainBar.Error("Canceled") + InfoBar.Error("Canceled") } } - info.MainBar.Prompt("Open file: ", cb) + InfoBar.Prompt("Open file: ", cb) return false } @@ -717,10 +716,10 @@ func (h *BufHandler) HalfPageDown() bool { func (h *BufHandler) ToggleRuler() bool { if !h.Buf.Settings["ruler"].(bool) { h.Buf.Settings["ruler"] = true - info.MainBar.Message("Enabled ruler") + InfoBar.Message("Enabled ruler") } else { h.Buf.Settings["ruler"] = false - info.MainBar.Message("Disabled ruler") + InfoBar.Message("Disabled ruler") } return false } diff --git a/cmd/micro/editpane.go b/cmd/micro/action/editpane.go similarity index 51% rename from cmd/micro/editpane.go rename to cmd/micro/action/editpane.go index a551a53e..60eab596 100644 --- a/cmd/micro/editpane.go +++ b/cmd/micro/action/editpane.go @@ -1,14 +1,20 @@ -package main +package action import ( - "github.com/zyedidia/micro/cmd/micro/action" "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/display" + "github.com/zyedidia/micro/cmd/micro/info" ) type EditPane struct { display.Window - action.Handler + Handler +} + +type InfoPane struct { + display.Window + Handler + *info.InfoBuf } func NewBufEditPane(x, y, width, height int, b *buffer.Buffer) *EditPane { @@ -16,7 +22,18 @@ func NewBufEditPane(x, y, width, height int, b *buffer.Buffer) *EditPane { // TODO: can probably replace editpane with bufhandler entirely w := display.NewBufWindow(x, y, width, height, b) e.Window = w - e.Handler = action.NewBufHandler(b, w) + e.Handler = NewBufHandler(b, w) + + return e +} + +func NewInfoBar() *InfoPane { + e := new(InfoPane) + ib := info.NewBuffer() + w := display.NewInfoWindow(ib) + e.Window = w + e.Handler = NewBufHandler(ib.Buffer, w) + e.InfoBuf = ib return e } diff --git a/cmd/micro/action/handler.go b/cmd/micro/action/events.go similarity index 100% rename from cmd/micro/action/handler.go rename to cmd/micro/action/events.go diff --git a/cmd/micro/action/globals.go b/cmd/micro/action/globals.go new file mode 100644 index 00000000..edc4f476 --- /dev/null +++ b/cmd/micro/action/globals.go @@ -0,0 +1,7 @@ +package action + +var InfoBar *InfoPane + +func InitGlobals() { + InfoBar = NewInfoBar() +} diff --git a/cmd/micro/display/infowindow.go b/cmd/micro/display/infowindow.go index a03fdc9e..d8f2fffe 100644 --- a/cmd/micro/display/infowindow.go +++ b/cmd/micro/display/infowindow.go @@ -13,7 +13,7 @@ import ( ) type InfoWindow struct { - *info.Bar + *info.InfoBuf *View defStyle tcell.Style @@ -23,9 +23,9 @@ type InfoWindow struct { y int } -func NewInfoWindow(b *info.Bar) *InfoWindow { +func NewInfoWindow(b *info.InfoBuf) *InfoWindow { iw := new(InfoWindow) - iw.Bar = b + iw.InfoBuf = b iw.View = new(View) iw.defStyle = config.DefStyle diff --git a/cmd/micro/info/history.go b/cmd/micro/info/history.go index 663fd594..aaa006db 100644 --- a/cmd/micro/info/history.go +++ b/cmd/micro/info/history.go @@ -10,7 +10,7 @@ import ( // LoadHistory attempts to load user history from configDir/buffers/history // into the history map // The savehistory option must be on -func (i *Bar) LoadHistory() { +func (i *InfoBuf) LoadHistory() { if config.GetGlobalOption("savehistory").(bool) { file, err := os.Open(config.ConfigDir + "/buffers/history") defer file.Close() @@ -37,7 +37,7 @@ func (i *Bar) LoadHistory() { // SaveHistory saves the user's command history to configDir/buffers/history // only if the savehistory option is on -func (i *Bar) SaveHistory() { +func (i *InfoBuf) SaveHistory() { if config.GetGlobalOption("savehistory").(bool) { // Don't save history past 100 for k, v := range i.History { diff --git a/cmd/micro/info/infobar.go b/cmd/micro/info/infobuffer.go similarity index 82% rename from cmd/micro/info/infobar.go rename to cmd/micro/info/infobuffer.go index fb46ea6a..c7360711 100644 --- a/cmd/micro/info/infobar.go +++ b/cmd/micro/info/infobuffer.go @@ -7,15 +7,9 @@ import ( "github.com/zyedidia/micro/cmd/micro/buffer" ) -var MainBar *Bar - -func InitInfoBar() { - MainBar = NewBar() -} - -// The Bar displays messages and other info at the bottom of the screen. +// The InfoBuf displays messages and other info at the bottom of the screen. // It is respresented as a buffer and a message with a style. -type Bar struct { +type InfoBuf struct { *buffer.Buffer HasPrompt bool @@ -35,8 +29,8 @@ type Bar struct { PromptCallback func(resp string, canceled bool) } -func NewBar() *Bar { - ib := new(Bar) +func NewBuffer() *InfoBuf { + ib := new(InfoBuf) ib.History = make(map[string][]string) ib.Buffer = buffer.NewBufferFromString("", "infobar", buffer.BTInfo) @@ -45,7 +39,7 @@ func NewBar() *Bar { } // Message sends a message to the user -func (i *Bar) Message(msg ...interface{}) { +func (i *InfoBuf) Message(msg ...interface{}) { // only display a new message if there isn't an active prompt // this is to prevent overwriting an existing prompt to the user if i.HasPrompt == false { @@ -57,7 +51,7 @@ func (i *Bar) Message(msg ...interface{}) { } // Error sends an error message to the user -func (i *Bar) Error(msg ...interface{}) { +func (i *InfoBuf) Error(msg ...interface{}) { // only display a new message if there isn't an active prompt // this is to prevent overwriting an existing prompt to the user if i.HasPrompt == false { @@ -68,7 +62,7 @@ func (i *Bar) Error(msg ...interface{}) { // TODO: add to log? } -func (i *Bar) Prompt(msg string, callback func(string, bool)) { +func (i *InfoBuf) Prompt(msg string, callback func(string, bool)) { // If we get another prompt mid-prompt we cancel the one getting overwritten if i.HasPrompt { i.DonePrompt(true) @@ -80,7 +74,7 @@ func (i *Bar) Prompt(msg string, callback func(string, bool)) { i.PromptCallback = callback } -func (i *Bar) DonePrompt(canceled bool) { +func (i *InfoBuf) DonePrompt(canceled bool) { i.HasPrompt = false if canceled { i.PromptCallback("", true) @@ -91,7 +85,7 @@ func (i *Bar) DonePrompt(canceled bool) { } // Reset resets the messenger's cursor, message and response -func (i *Bar) Reset() { +func (i *InfoBuf) Reset() { i.Msg = "" i.HasPrompt, i.HasMessage, i.HasError = false, false, false } diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 27d1ed29..37c8218d 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -12,8 +12,6 @@ import ( "github.com/zyedidia/micro/cmd/micro/action" "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/display" - "github.com/zyedidia/micro/cmd/micro/info" "github.com/zyedidia/micro/cmd/micro/screen" "github.com/zyedidia/micro/cmd/micro/util" "github.com/zyedidia/tcell" @@ -193,11 +191,9 @@ func main() { b := LoadInput()[0] width, height := screen.Screen.Size() - ep := NewBufEditPane(0, 0, width, height-1, b) + ep := action.NewBufEditPane(0, 0, width, height-1, b) - info.InitInfoBar() - infowindow := display.NewInfoWindow(info.MainBar) - infobar := action.NewBufHandler(info.MainBar.Buffer, infowindow) + action.InitGlobals() // Here is the event loop which runs in a separate thread go func() { @@ -214,7 +210,7 @@ func main() { screen.Screen.Fill(' ', config.DefStyle) screen.Screen.HideCursor() ep.Display() - infowindow.Display() + action.InfoBar.Display() screen.Screen.Show() var event tcell.Event @@ -225,8 +221,8 @@ func main() { } if event != nil { - if info.MainBar.HasPrompt { - infobar.HandleEvent(event) + if action.InfoBar.HasPrompt { + action.InfoBar.HandleEvent(event) } else { ep.HandleEvent(event) } From 6562e3b48d12166b0457c68ea325e81a7d675ee9 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 1 Jan 2019 23:29:25 -0500 Subject: [PATCH 033/231] Start implementing commands --- cmd/micro/action/actions.go | 5 + cmd/micro/action/command.go | 275 +++++++++++++++++++++++++++++++++ cmd/micro/display/window.go | 30 +++- cmd/micro/info/autocomplete.go | 266 +++++++++++++++++++++++++++++++ cmd/micro/micro.go | 3 +- 5 files changed, 576 insertions(+), 3 deletions(-) create mode 100644 cmd/micro/action/command.go create mode 100644 cmd/micro/info/autocomplete.go diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 2921d4bf..85f87f86 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -751,6 +751,11 @@ func (h *BufHandler) ShellMode() bool { // CommandMode lets the user enter a command func (h *BufHandler) CommandMode() bool { + InfoBar.Prompt("> ", func(resp string, canceled bool) { + if !canceled { + HandleCommand(resp) + } + }) return false } diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go new file mode 100644 index 00000000..a36ec66a --- /dev/null +++ b/cmd/micro/action/command.go @@ -0,0 +1,275 @@ +package action + +import ( + "os" + + "github.com/zyedidia/micro/cmd/micro/shellwords" + "github.com/zyedidia/micro/cmd/micro/util" +) + +// A Command contains an action (a function to call) as well as information about how to autocomplete the command +type Command struct { + action func([]string) + completions []Completion +} + +// A StrCommand is similar to a command but keeps the name of the action +type StrCommand struct { + action string + completions []Completion +} + +var commands map[string]Command + +var commandActions map[string]func([]string) + +func init() { + commandActions = map[string]func([]string){ + "Set": Set, + "SetLocal": SetLocal, + "Show": Show, + "ShowKey": ShowKey, + "Run": Run, + "Bind": Bind, + "Quit": Quit, + "Save": Save, + "Replace": Replace, + "ReplaceAll": ReplaceAll, + "VSplit": VSplit, + "HSplit": HSplit, + "Tab": NewTab, + "Help": Help, + "Eval": Eval, + "ToggleLog": ToggleLog, + "Plugin": PluginCmd, + "Reload": Reload, + "Cd": Cd, + "Pwd": Pwd, + "Open": Open, + "TabSwitch": TabSwitch, + "Term": Term, + "MemUsage": MemUsage, + "Retab": Retab, + "Raw": Raw, + } +} + +// InitCommands initializes the default commands +func InitCommands() { + commands = make(map[string]Command) + + defaults := DefaultCommands() + parseCommands(defaults) +} + +func parseCommands(userCommands map[string]StrCommand) { + for k, v := range userCommands { + MakeCommand(k, v.action, v.completions...) + } +} + +// MakeCommand is a function to easily create new commands +// This can be called by plugins in Lua so that plugins can define their own commands +func MakeCommand(name, function string, completions ...Completion) { + action := commandActions[function] + // if _, ok := commandActions[function]; !ok { + // If the user seems to be binding a function that doesn't exist + // We hope that it's a lua function that exists and bind it to that + // action = LuaFunctionCommand(function) + // } + + commands[name] = Command{action, completions} +} + +// DefaultCommands returns a map containing micro's default commands +func DefaultCommands() map[string]StrCommand { + return map[string]StrCommand{ + "set": {"Set", []Completion{OptionCompletion, OptionValueCompletion}}, + "setlocal": {"SetLocal", []Completion{OptionCompletion, OptionValueCompletion}}, + "show": {"Show", []Completion{OptionCompletion, NoCompletion}}, + "showkey": {"ShowKey", []Completion{NoCompletion}}, + "bind": {"Bind", []Completion{NoCompletion}}, + "run": {"Run", []Completion{NoCompletion}}, + "quit": {"Quit", []Completion{NoCompletion}}, + "save": {"Save", []Completion{NoCompletion}}, + "replace": {"Replace", []Completion{NoCompletion}}, + "replaceall": {"ReplaceAll", []Completion{NoCompletion}}, + "vsplit": {"VSplit", []Completion{FileCompletion, NoCompletion}}, + "hsplit": {"HSplit", []Completion{FileCompletion, NoCompletion}}, + "tab": {"Tab", []Completion{FileCompletion, NoCompletion}}, + "help": {"Help", []Completion{HelpCompletion, NoCompletion}}, + "eval": {"Eval", []Completion{NoCompletion}}, + "log": {"ToggleLog", []Completion{NoCompletion}}, + "plugin": {"Plugin", []Completion{PluginCmdCompletion, PluginNameCompletion}}, + "reload": {"Reload", []Completion{NoCompletion}}, + "cd": {"Cd", []Completion{FileCompletion}}, + "pwd": {"Pwd", []Completion{NoCompletion}}, + "open": {"Open", []Completion{FileCompletion}}, + "tabswitch": {"TabSwitch", []Completion{NoCompletion}}, + "term": {"Term", []Completion{NoCompletion}}, + "memusage": {"MemUsage", []Completion{NoCompletion}}, + "retab": {"Retab", []Completion{NoCompletion}}, + "raw": {"Raw", []Completion{NoCompletion}}, + } +} + +// CommandEditAction returns a bindable function that opens a prompt with +// the given string and executes the command when the user presses +// enter +func CommandEditAction(prompt string) BufKeyAction { + return func(h *BufHandler) bool { + InfoBar.Prompt("> "+prompt, func(resp string, canceled bool) { + if !canceled { + HandleCommand(resp) + } + }) + return false + } +} + +// CommandAction returns a bindable function which executes the +// given command +func CommandAction(cmd string) BufKeyAction { + return func(h *BufHandler) bool { + HandleCommand(cmd) + return false + } +} + +// PluginCmd installs, removes, updates, lists, or searches for given plugins +func PluginCmd(args []string) { +} + +// Retab changes all spaces to tabs or all tabs to spaces +// depending on the user's settings +func Retab(args []string) { +} + +// Raw opens a new raw view which displays the escape sequences micro +// is receiving in real-time +func Raw(args []string) { +} + +// TabSwitch switches to a given tab either by name or by number +func TabSwitch(args []string) { +} + +// Cd changes the current working directory +func Cd(args []string) { +} + +// MemUsage prints micro's memory usage +// Alloc shows how many bytes are currently in use +// Sys shows how many bytes have been requested from the operating system +// NumGC shows how many times the GC has been run +// Note that Go commonly reserves more memory from the OS than is currently in-use/required +// Additionally, even if Go returns memory to the OS, the OS does not always claim it because +// there may be plenty of memory to spare +func MemUsage(args []string) { + InfoBar.Message(util.GetMemStats()) +} + +// Pwd prints the current working directory +func Pwd(args []string) { + wd, err := os.Getwd() + if err != nil { + InfoBar.Message(err.Error()) + } else { + InfoBar.Message(wd) + } +} + +// Open opens a new buffer with a given filename +func Open(args []string) { +} + +// ToggleLog toggles the log view +func ToggleLog(args []string) { +} + +// Reload reloads all files (syntax files, colorschemes...) +func Reload(args []string) { +} + +// Help tries to open the given help page in a horizontal split +func Help(args []string) { +} + +// VSplit opens a vertical split with file given in the first argument +// If no file is given, it opens an empty buffer in a new split +func VSplit(args []string) { +} + +// HSplit opens a horizontal split with file given in the first argument +// If no file is given, it opens an empty buffer in a new split +func HSplit(args []string) { +} + +// Eval evaluates a lua expression +func Eval(args []string) { +} + +// NewTab opens the given file in a new tab +func NewTab(args []string) { +} + +// Set sets an option +func Set(args []string) { +} + +// SetLocal sets an option local to the buffer +func SetLocal(args []string) { +} + +// Show shows the value of the given option +func Show(args []string) { +} + +// ShowKey displays the action that a key is bound to +func ShowKey(args []string) { +} + +// Bind creates a new keybinding +func Bind(args []string) { +} + +// Run runs a shell command in the background +func Run(args []string) { +} + +// Quit closes the main view +func Quit(args []string) { +} + +// Save saves the buffer in the main view +func Save(args []string) { +} + +// Replace runs search and replace +func Replace(args []string) { +} + +// ReplaceAll replaces search term all at once +func ReplaceAll(args []string) { +} + +// Term opens a terminal in the current view +func Term(args []string) { +} + +// HandleCommand handles input from the user +func HandleCommand(input string) { + args, err := shellwords.Split(input) + if err != nil { + InfoBar.Error("Error parsing args ", err) + return + } + + inputCmd := args[0] + + if _, ok := commands[inputCmd]; !ok { + InfoBar.Error("Unknown command ", inputCmd) + } else { + commands[inputCmd].action(args[1:]) + } +} diff --git a/cmd/micro/display/window.go b/cmd/micro/display/window.go index 0cbd2e7d..0e14c348 100644 --- a/cmd/micro/display/window.go +++ b/cmd/micro/display/window.go @@ -198,6 +198,10 @@ func (w *BufWindow) displayBuffer() { if style, ok := config.Colorscheme["line-number"]; ok { lineNumStyle = style } + curNumStyle := config.DefStyle + if style, ok := config.Colorscheme["current-line-number"]; ok { + curNumStyle = style + } // We need to know the string length of the largest line number // so we can pad appropriately when displaying line numbers @@ -219,7 +223,11 @@ func (w *BufWindow) displayBuffer() { for vloc.Y = 0; vloc.Y < bufHeight; vloc.Y++ { vloc.X = 0 if b.Settings["ruler"].(bool) { - w.drawLineNum(lineNumStyle, false, maxLineNumLength, &vloc, &bloc) + s := lineNumStyle + if bloc.Y == activeC.Y { + s = curNumStyle + } + w.drawLineNum(s, false, maxLineNumLength, &vloc, &bloc) } line := b.LineBytes(bloc.Y) @@ -236,7 +244,14 @@ func (w *BufWindow) displayBuffer() { if s, ok := config.Colorscheme["selection"]; ok { style = s } + } + if b.Settings["cursorline"].(bool) && + !activeC.HasSelection() && activeC.Y == bloc.Y { + if s, ok := config.Colorscheme["cursor-line"]; ok { + fg, _, _ := s.Decompose() + style = style.Background(fg) + } } screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, r, nil, style) @@ -300,6 +315,19 @@ func (w *BufWindow) displayBuffer() { if activeC.X == bloc.X && activeC.Y == bloc.Y { w.showCursor(vloc.X, vloc.Y, true) } + + if b.Settings["cursorline"].(bool) && + !activeC.HasSelection() && activeC.Y == bloc.Y { + style := config.DefStyle + if s, ok := config.Colorscheme["cursor-line"]; ok { + fg, _, _ := s.Decompose() + style = style.Background(fg) + } + for i := vloc.X; i < w.Width; i++ { + screen.Screen.SetContent(i, vloc.Y, ' ', nil, style) + } + } + bloc.X = w.StartCol bloc.Y++ if bloc.Y >= b.LinesNum() { diff --git a/cmd/micro/info/autocomplete.go b/cmd/micro/info/autocomplete.go new file mode 100644 index 00000000..59d5056e --- /dev/null +++ b/cmd/micro/info/autocomplete.go @@ -0,0 +1,266 @@ +package info + +import ( + "io/ioutil" + "os" + "strings" + + "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/cmd/micro/util" +) + +// Completion represents a type of completion +type Completion int + +const ( + NoCompletion Completion = iota + FileCompletion + CommandCompletion + HelpCompletion + OptionCompletion + PluginCmdCompletion + PluginNameCompletion + OptionValueCompletion +) + +var pluginCompletions []func(string) []string + +// This file is meant (for now) for autocompletion in command mode, not +// while coding. This helps micro autocomplete commands and then filenames +// for example with `vsplit filename`. + +// FileComplete autocompletes filenames +func FileComplete(input string) (string, []string) { + var sep string = string(os.PathSeparator) + dirs := strings.Split(input, sep) + + var files []os.FileInfo + var err error + if len(dirs) > 1 { + directories := strings.Join(dirs[:len(dirs)-1], sep) + sep + + directories, _ = util.ReplaceHome(directories) + files, err = ioutil.ReadDir(directories) + } else { + files, err = ioutil.ReadDir(".") + } + + var suggestions []string + if err != nil { + return "", suggestions + } + for _, f := range files { + name := f.Name() + if f.IsDir() { + name += sep + } + if strings.HasPrefix(name, dirs[len(dirs)-1]) { + suggestions = append(suggestions, name) + } + } + + var chosen string + if len(suggestions) == 1 { + if len(dirs) > 1 { + chosen = strings.Join(dirs[:len(dirs)-1], sep) + sep + suggestions[0] + } else { + chosen = suggestions[0] + } + } else { + if len(dirs) > 1 { + chosen = strings.Join(dirs[:len(dirs)-1], sep) + sep + } + } + + return chosen, suggestions +} + +// CommandComplete autocompletes commands +// func CommandComplete(input string) (string, []string) { +// var suggestions []string +// for cmd := range commands { +// if strings.HasPrefix(cmd, input) { +// suggestions = append(suggestions, cmd) +// } +// } +// +// var chosen string +// if len(suggestions) == 1 { +// chosen = suggestions[0] +// } +// return chosen, suggestions +// } + +// HelpComplete autocompletes help topics +func HelpComplete(input string) (string, []string) { + var suggestions []string + + for _, file := range config.ListRuntimeFiles(config.RTHelp) { + topic := file.Name() + if strings.HasPrefix(topic, input) { + suggestions = append(suggestions, topic) + } + } + + var chosen string + if len(suggestions) == 1 { + chosen = suggestions[0] + } + return chosen, suggestions +} + +// ColorschemeComplete tab-completes names of colorschemes. +func ColorschemeComplete(input string) (string, []string) { + var suggestions []string + files := config.ListRuntimeFiles(config.RTColorscheme) + + for _, f := range files { + if strings.HasPrefix(f.Name(), input) { + suggestions = append(suggestions, f.Name()) + } + } + + var chosen string + if len(suggestions) == 1 { + chosen = suggestions[0] + } + + return chosen, suggestions +} + +func contains(s []string, e string) bool { + for _, a := range s { + if a == e { + return true + } + } + return false +} + +// OptionComplete autocompletes options +func OptionComplete(input string) (string, []string) { + var suggestions []string + localSettings := config.DefaultLocalSettings() + for option := range config.GlobalSettings { + if strings.HasPrefix(option, input) { + suggestions = append(suggestions, option) + } + } + for option := range localSettings { + if strings.HasPrefix(option, input) && !contains(suggestions, option) { + suggestions = append(suggestions, option) + } + } + + var chosen string + if len(suggestions) == 1 { + chosen = suggestions[0] + } + return chosen, suggestions +} + +// OptionValueComplete completes values for various options +func OptionValueComplete(inputOpt, input string) (string, []string) { + inputOpt = strings.TrimSpace(inputOpt) + var suggestions []string + localSettings := config.DefaultLocalSettings() + var optionVal interface{} + for k, option := range config.GlobalSettings { + if k == inputOpt { + optionVal = option + } + } + for k, option := range localSettings { + if k == inputOpt { + optionVal = option + } + } + + switch optionVal.(type) { + case bool: + if strings.HasPrefix("on", input) { + suggestions = append(suggestions, "on") + } else if strings.HasPrefix("true", input) { + suggestions = append(suggestions, "true") + } + if strings.HasPrefix("off", input) { + suggestions = append(suggestions, "off") + } else if strings.HasPrefix("false", input) { + suggestions = append(suggestions, "false") + } + case string: + switch inputOpt { + case "colorscheme": + _, suggestions = ColorschemeComplete(input) + case "fileformat": + if strings.HasPrefix("unix", input) { + suggestions = append(suggestions, "unix") + } + if strings.HasPrefix("dos", input) { + suggestions = append(suggestions, "dos") + } + case "sucmd": + if strings.HasPrefix("sudo", input) { + suggestions = append(suggestions, "sudo") + } + if strings.HasPrefix("doas", input) { + suggestions = append(suggestions, "doas") + } + } + } + + var chosen string + if len(suggestions) == 1 { + chosen = suggestions[0] + } + return chosen, suggestions +} + +// // MakeCompletion registers a function from a plugin for autocomplete commands +// func MakeCompletion(function string) Completion { +// pluginCompletions = append(pluginCompletions, LuaFunctionComplete(function)) +// return Completion(-len(pluginCompletions)) +// } +// +// // PluginComplete autocompletes from plugin function +// func PluginComplete(complete Completion, input string) (chosen string, suggestions []string) { +// idx := int(-complete) - 1 +// +// if len(pluginCompletions) <= idx { +// return "", nil +// } +// suggestions = pluginCompletions[idx](input) +// +// if len(suggestions) == 1 { +// chosen = suggestions[0] +// } +// return +// } +// +// // PluginCmdComplete completes with possible choices for the `> plugin` command +// func PluginCmdComplete(input string) (chosen string, suggestions []string) { +// for _, cmd := range []string{"install", "remove", "search", "update", "list"} { +// if strings.HasPrefix(cmd, input) { +// suggestions = append(suggestions, cmd) +// } +// } +// +// if len(suggestions) == 1 { +// chosen = suggestions[0] +// } +// return chosen, suggestions +// } +// +// // PluginnameComplete completes with the names of loaded plugins +// func PluginNameComplete(input string) (chosen string, suggestions []string) { +// for _, pp := range GetAllPluginPackages() { +// if strings.HasPrefix(pp.Name, input) { +// suggestions = append(suggestions, pp.Name) +// } +// } +// +// if len(suggestions) == 1 { +// chosen = suggestions[0] +// } +// return chosen, suggestions +// } diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 37c8218d..ecee6847 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -168,6 +168,7 @@ func main() { } config.InitGlobalSettings() action.InitBindings() + action.InitCommands() err = config.InitColorscheme() if err != nil { @@ -228,6 +229,4 @@ func main() { } } } - - screen.Screen.Fini() } From a89ddea619eedf4dec3028bac8386ae3f051acc2 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 2 Jan 2019 16:04:41 -0500 Subject: [PATCH 034/231] Fix error --- cmd/micro/action/command.go | 59 +++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index a36ec66a..a4c28c2c 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -3,6 +3,7 @@ package action import ( "os" + "github.com/zyedidia/micro/cmd/micro/info" "github.com/zyedidia/micro/cmd/micro/shellwords" "github.com/zyedidia/micro/cmd/micro/util" ) @@ -10,13 +11,13 @@ import ( // A Command contains an action (a function to call) as well as information about how to autocomplete the command type Command struct { action func([]string) - completions []Completion + completions []info.Completion } // A StrCommand is similar to a command but keeps the name of the action type StrCommand struct { action string - completions []Completion + completions []info.Completion } var commands map[string]Command @@ -70,7 +71,7 @@ func parseCommands(userCommands map[string]StrCommand) { // MakeCommand is a function to easily create new commands // This can be called by plugins in Lua so that plugins can define their own commands -func MakeCommand(name, function string, completions ...Completion) { +func MakeCommand(name, function string, completions ...info.Completion) { action := commandActions[function] // if _, ok := commandActions[function]; !ok { // If the user seems to be binding a function that doesn't exist @@ -84,32 +85,32 @@ func MakeCommand(name, function string, completions ...Completion) { // DefaultCommands returns a map containing micro's default commands func DefaultCommands() map[string]StrCommand { return map[string]StrCommand{ - "set": {"Set", []Completion{OptionCompletion, OptionValueCompletion}}, - "setlocal": {"SetLocal", []Completion{OptionCompletion, OptionValueCompletion}}, - "show": {"Show", []Completion{OptionCompletion, NoCompletion}}, - "showkey": {"ShowKey", []Completion{NoCompletion}}, - "bind": {"Bind", []Completion{NoCompletion}}, - "run": {"Run", []Completion{NoCompletion}}, - "quit": {"Quit", []Completion{NoCompletion}}, - "save": {"Save", []Completion{NoCompletion}}, - "replace": {"Replace", []Completion{NoCompletion}}, - "replaceall": {"ReplaceAll", []Completion{NoCompletion}}, - "vsplit": {"VSplit", []Completion{FileCompletion, NoCompletion}}, - "hsplit": {"HSplit", []Completion{FileCompletion, NoCompletion}}, - "tab": {"Tab", []Completion{FileCompletion, NoCompletion}}, - "help": {"Help", []Completion{HelpCompletion, NoCompletion}}, - "eval": {"Eval", []Completion{NoCompletion}}, - "log": {"ToggleLog", []Completion{NoCompletion}}, - "plugin": {"Plugin", []Completion{PluginCmdCompletion, PluginNameCompletion}}, - "reload": {"Reload", []Completion{NoCompletion}}, - "cd": {"Cd", []Completion{FileCompletion}}, - "pwd": {"Pwd", []Completion{NoCompletion}}, - "open": {"Open", []Completion{FileCompletion}}, - "tabswitch": {"TabSwitch", []Completion{NoCompletion}}, - "term": {"Term", []Completion{NoCompletion}}, - "memusage": {"MemUsage", []Completion{NoCompletion}}, - "retab": {"Retab", []Completion{NoCompletion}}, - "raw": {"Raw", []Completion{NoCompletion}}, + "set": {"Set", []info.Completion{info.OptionCompletion, info.OptionValueCompletion}}, + "setlocal": {"SetLocal", []info.Completion{info.OptionCompletion, info.OptionValueCompletion}}, + "show": {"Show", []info.Completion{info.OptionCompletion, info.NoCompletion}}, + "showkey": {"ShowKey", []info.Completion{info.NoCompletion}}, + "bind": {"Bind", []info.Completion{info.NoCompletion}}, + "run": {"Run", []info.Completion{info.NoCompletion}}, + "quit": {"Quit", []info.Completion{info.NoCompletion}}, + "save": {"Save", []info.Completion{info.NoCompletion}}, + "replace": {"Replace", []info.Completion{info.NoCompletion}}, + "replaceall": {"ReplaceAll", []info.Completion{info.NoCompletion}}, + "vsplit": {"VSplit", []info.Completion{info.FileCompletion, info.NoCompletion}}, + "hsplit": {"HSplit", []info.Completion{info.FileCompletion, info.NoCompletion}}, + "tab": {"Tab", []info.Completion{info.FileCompletion, info.NoCompletion}}, + "help": {"Help", []info.Completion{info.HelpCompletion, info.NoCompletion}}, + "eval": {"Eval", []info.Completion{info.NoCompletion}}, + "log": {"ToggleLog", []info.Completion{info.NoCompletion}}, + "plugin": {"Plugin", []info.Completion{info.PluginCmdCompletion, info.PluginNameCompletion}}, + "reload": {"Reload", []info.Completion{info.NoCompletion}}, + "cd": {"Cd", []info.Completion{info.FileCompletion}}, + "pwd": {"Pwd", []info.Completion{info.NoCompletion}}, + "open": {"Open", []info.Completion{info.FileCompletion}}, + "tabswitch": {"TabSwitch", []info.Completion{info.NoCompletion}}, + "term": {"Term", []info.Completion{info.NoCompletion}}, + "memusage": {"MemUsage", []info.Completion{info.NoCompletion}}, + "retab": {"Retab", []info.Completion{info.NoCompletion}}, + "raw": {"Raw", []info.Completion{info.NoCompletion}}, } } From 3d2cc3298e79ac95b4e2d972d20c52b2b755a1a9 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 2 Jan 2019 16:27:27 -0500 Subject: [PATCH 035/231] Finish non global actions --- cmd/micro/action/actions.go | 101 +++++++++++++++++++++++++++++++++--- 1 file changed, 94 insertions(+), 7 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 85f87f86..ef6f59d7 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -2,6 +2,7 @@ package action import ( "os" + "strings" "time" "unicode/utf8" @@ -50,6 +51,15 @@ func (h *BufHandler) ScrollDownAction() bool { // Center centers the view on the cursor func (h *BufHandler) Center() bool { + v := h.Win.GetView() + v.StartLine = h.Cursor.Y - v.Height/2 + if v.StartLine+v.Height > h.Buf.LinesNum() { + v.StartLine = h.Buf.LinesNum() - v.Height + } + if v.StartLine < 0 { + v.StartLine = 0 + } + h.Win.SetView(v) return true } @@ -530,7 +540,7 @@ func (h *BufHandler) Copy() bool { if h.Cursor.HasSelection() { h.Cursor.CopySelection("clipboard") h.freshClip = true - // TODO: message + InfoBar.Message("Copied selection") } return true } @@ -614,14 +624,37 @@ func (h *BufHandler) MoveLinesDown() bool { // Paste whatever is in the system clipboard into the buffer // Delete and paste if the user has a selection func (h *BufHandler) Paste() bool { + clip, _ := clipboard.ReadAll("clipboard") + h.paste(clip) return true } // PastePrimary pastes from the primary clipboard (only use on linux) func (h *BufHandler) PastePrimary() bool { + clip, _ := clipboard.ReadAll("primary") + h.paste(clip) return true } +func (h *BufHandler) paste(clip string) { + if h.Buf.Settings["smartpaste"].(bool) { + if h.Cursor.X > 0 && len(util.GetLeadingWhitespace([]byte(strings.TrimLeft(clip, "\r\n")))) == 0 { + leadingWS := util.GetLeadingWhitespace(h.Buf.LineBytes(h.Cursor.Y)) + clip = strings.Replace(clip, "\n", "\n"+string(leadingWS), -1) + } + } + + if h.Cursor.HasSelection() { + h.Cursor.DeleteSelection() + h.Cursor.ResetSelection() + } + + h.Buf.Insert(h.Cursor.Loc, clip) + // h.Cursor.Loc = h.Cursor.Loc.Move(Count(clip), h.Buf) + h.freshClip = false + InfoBar.Message("Pasted clipboard") +} + // JumpToMatchingBrace moves the cursor to the matching brace if it is // currently on a brace func (h *BufHandler) JumpToMatchingBrace() bool { @@ -640,14 +673,11 @@ func (h *BufHandler) SelectAll() bool { // OpenFile opens a new file in the buffer func (h *BufHandler) OpenFile() bool { - cb := func(resp string, canceled bool) { + InfoBar.Prompt("> open ", func(resp string, canceled bool) { if !canceled { - InfoBar.Message("Opening", resp) - } else { - InfoBar.Error("Canceled") + HandleCommand(resp) } - } - InfoBar.Prompt("Open file: ", cb) + }) return false } @@ -674,41 +704,96 @@ func (h *BufHandler) End() bool { // PageUp scrolls the view up a page func (h *BufHandler) PageUp() bool { + v := h.Win.GetView() + if v.StartLine > v.Height { + h.ScrollUp(v.Height) + } else { + v.StartLine = 0 + } + h.Win.SetView(v) return false } // PageDown scrolls the view down a page func (h *BufHandler) PageDown() bool { + v := h.Win.GetView() + if h.Buf.LinesNum()-(v.StartLine+v.Height) > v.Height { + h.ScrollDown(v.Height) + } else if h.Buf.LinesNum() >= v.Height { + v.StartLine = h.Buf.LinesNum() - v.Height + } return false } // SelectPageUp selects up one page func (h *BufHandler) SelectPageUp() bool { + if !h.Cursor.HasSelection() { + h.Cursor.OrigSelection[0] = h.Cursor.Loc + } + h.Cursor.UpN(h.Win.GetView().Height) + h.Cursor.SelectTo(h.Cursor.Loc) return true } // SelectPageDown selects down one page func (h *BufHandler) SelectPageDown() bool { + if !h.Cursor.HasSelection() { + h.Cursor.OrigSelection[0] = h.Cursor.Loc + } + h.Cursor.DownN(h.Win.GetView().Height) + h.Cursor.SelectTo(h.Cursor.Loc) return true } // CursorPageUp places the cursor a page up func (h *BufHandler) CursorPageUp() bool { + h.Cursor.Deselect(true) + + if h.Cursor.HasSelection() { + h.Cursor.Loc = h.Cursor.CurSelection[0] + h.Cursor.ResetSelection() + h.Cursor.StoreVisualX() + } + h.Cursor.UpN(h.Win.GetView().Height) return true } // CursorPageDown places the cursor a page up func (h *BufHandler) CursorPageDown() bool { + h.Cursor.Deselect(false) + + if h.Cursor.HasSelection() { + h.Cursor.Loc = h.Cursor.CurSelection[1] + h.Cursor.ResetSelection() + h.Cursor.StoreVisualX() + } + h.Cursor.DownN(h.Win.GetView().Height) return true } // HalfPageUp scrolls the view up half a page func (h *BufHandler) HalfPageUp() bool { + v := h.Win.GetView() + if v.StartLine > v.Height/2 { + h.ScrollUp(v.Height / 2) + } else { + v.StartLine = 0 + } + h.Win.SetView(v) return false } // HalfPageDown scrolls the view down half a page func (h *BufHandler) HalfPageDown() bool { + v := h.Win.GetView() + if h.Buf.LinesNum()-(v.StartLine+v.Height) > v.Height/2 { + h.ScrollDown(v.Height / 2) + } else { + if h.Buf.LinesNum() >= v.Height { + v.StartLine = h.Buf.LinesNum() - v.Height + } + } + h.Win.SetView(v) return false } @@ -731,6 +816,7 @@ func (h *BufHandler) JumpLine() bool { // ClearStatus clears the messenger bar func (h *BufHandler) ClearStatus() bool { + InfoBar.Message("") return false } @@ -761,6 +847,7 @@ func (h *BufHandler) CommandMode() bool { // ToggleOverwriteMode lets the user toggle the text overwrite mode func (h *BufHandler) ToggleOverwriteMode() bool { + h.isOverwriteMode = !h.isOverwriteMode return false } From b8b245f305516bd9abb3f8a50b177eea79b98390 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 2 Jan 2019 17:39:50 -0500 Subject: [PATCH 036/231] Add mouse support --- cmd/micro/action/actions.go | 52 +++++++++++++++ cmd/micro/action/bufhandler.go | 44 ++++++++++-- cmd/micro/buffer/buffer.go | 59 ++++++++++++++++- cmd/micro/config/globals.go | 6 ++ cmd/micro/display/infowindow.go | 7 ++ cmd/micro/display/window.go | 114 ++++++++++++++++++++++++++++++++ cmd/micro/micro.go | 5 -- 7 files changed, 275 insertions(+), 12 deletions(-) create mode 100644 cmd/micro/config/globals.go diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index ef6f59d7..425142dd 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -8,6 +8,7 @@ import ( "github.com/zyedidia/clipboard" "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/screen" "github.com/zyedidia/micro/cmd/micro/util" "github.com/zyedidia/tcell" @@ -34,6 +35,57 @@ func (h *BufHandler) ScrollDown(n int) { // MousePress is the event that should happen when a normal click happens // This is almost always bound to left click func (h *BufHandler) MousePress(e *tcell.EventMouse) bool { + b := h.Buf + mx, my := e.Position() + mouseLoc := h.Win.GetMouseLoc(buffer.Loc{mx, my}) + h.Cursor.Loc = mouseLoc + if h.mouseReleased { + if b.NumCursors() > 1 { + b.ClearCursors() + h.Win.Relocate() + } + if time.Since(h.lastClickTime)/time.Millisecond < config.DoubleClickThreshold && (mouseLoc.X == h.lastLoc.X && mouseLoc.Y == h.lastLoc.Y) { + if h.doubleClick { + // Triple click + h.lastClickTime = time.Now() + + h.tripleClick = true + h.doubleClick = false + + h.Cursor.SelectLine() + h.Cursor.CopySelection("primary") + } else { + // Double click + h.lastClickTime = time.Now() + + h.doubleClick = true + h.tripleClick = false + + h.Cursor.SelectWord() + h.Cursor.CopySelection("primary") + } + } else { + h.doubleClick = false + h.tripleClick = false + h.lastClickTime = time.Now() + + h.Cursor.OrigSelection[0] = h.Cursor.Loc + h.Cursor.CurSelection[0] = h.Cursor.Loc + h.Cursor.CurSelection[1] = h.Cursor.Loc + } + h.mouseReleased = false + } else if !h.mouseReleased { + if h.tripleClick { + h.Cursor.AddLineToSelection() + } else if h.doubleClick { + h.Cursor.AddWordToSelection() + } else { + h.Cursor.SetSelectionEnd(h.Cursor.Loc) + h.Cursor.CopySelection("primary") + } + } + + h.lastLoc = mouseLoc return false } diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 3f2909fa..aa49a9e1 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -90,6 +90,7 @@ func NewBufHandler(buf *buffer.Buffer, win display.Window) *BufHandler { h.cursors = []*buffer.Cursor{buffer.NewCursor(buf, buf.StartCursor)} h.Cursor = h.cursors[0] + h.mouseReleased = true buf.SetCursors(h.cursors) return h @@ -105,16 +106,51 @@ func (h *BufHandler) HandleEvent(event tcell.Event) { mod: e.Modifiers(), r: e.Rune(), } - done := h.DoKeyEvent(ke) - if !done && e.Key() == tcell.KeyRune { - h.DoRuneInsert(e.Rune()) + cursors := h.Buf.GetCursors() + for _, c := range cursors { + h.Buf.SetCurCursor(c.Num) + h.Cursor = c + done := h.DoKeyEvent(ke) + if !done && e.Key() == tcell.KeyRune { + h.DoRuneInsert(e.Rune()) + } } + // TODO: maybe reset curcursor to 0 case *tcell.EventMouse: + switch e.Buttons() { + case tcell.ButtonNone: + // Mouse event with no click + if !h.mouseReleased { + // Mouse was just released + + mx, my := e.Position() + mouseLoc := h.Win.GetMouseLoc(buffer.Loc{X: mx, Y: my}) + + // Relocating here isn't really necessary because the cursor will + // be in the right place from the last mouse event + // However, if we are running in a terminal that doesn't support mouse motion + // events, this still allows the user to make selections, except only after they + // release the mouse + + if !h.doubleClick && !h.tripleClick { + h.Cursor.Loc = mouseLoc + h.Cursor.SetSelectionEnd(h.Cursor.Loc) + h.Cursor.CopySelection("primary") + } + h.mouseReleased = true + } + } + me := MouseEvent{ btn: e.Buttons(), mod: e.Modifiers(), } - h.DoMouseEvent(me, e) + cursors := h.Buf.GetCursors() + for _, c := range cursors { + h.Buf.SetCurCursor(c.Num) + h.Cursor = c + h.DoMouseEvent(me, e) + } } } diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index 5dbe637c..91373ba0 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -77,6 +77,7 @@ type Buffer struct { *EventHandler cursors []*Cursor + curCursor int StartCursor Loc // Path to the file on disk @@ -229,9 +230,10 @@ func (b *Buffer) ReOpen() error { b.ModTime, err = GetModTime(b.Path) b.isModified = false + for _, c := range b.cursors { + c.Relocate() + } return err - // TODO: buffer cursor - // b.Cursor.Relocate() } // SetCursors resets this buffer's cursors to a new list @@ -239,9 +241,14 @@ func (b *Buffer) SetCursors(c []*Cursor) { b.cursors = c } +// SetCurCursor sets the current cursor +func (b *Buffer) SetCurCursor(n int) { + b.curCursor = n +} + // GetActiveCursor returns the main cursor in this buffer func (b *Buffer) GetActiveCursor() *Cursor { - return b.cursors[0] + return b.cursors[b.curCursor] } // GetCursor returns the nth cursor @@ -421,3 +428,49 @@ func (b *Buffer) IndentString(tabsize int) string { } return "\t" } + +// MergeCursors merges any cursors that are at the same position +// into one cursor +func (b *Buffer) MergeCursors() { + var cursors []*Cursor + for i := 0; i < len(b.cursors); i++ { + c1 := b.cursors[i] + if c1 != nil { + for j := 0; j < len(b.cursors); j++ { + c2 := b.cursors[j] + if c2 != nil && i != j && c1.Loc == c2.Loc { + b.cursors[j] = nil + } + } + cursors = append(cursors, c1) + } + } + + b.cursors = cursors + + for i := range b.cursors { + b.cursors[i].Num = i + } + + if b.curCursor >= len(b.cursors) { + b.curCursor = len(b.cursors) - 1 + } +} + +// UpdateCursors updates all the cursors indicies +func (b *Buffer) UpdateCursors() { + for i, c := range b.cursors { + c.Num = i + } +} + +// ClearCursors removes all extra cursors +func (b *Buffer) ClearCursors() { + for i := 1; i < len(b.cursors); i++ { + b.cursors[i] = nil + } + b.cursors = b.cursors[:1] + b.UpdateCursors() + b.curCursor = 0 + b.GetActiveCursor().ResetSelection() +} diff --git a/cmd/micro/config/globals.go b/cmd/micro/config/globals.go new file mode 100644 index 00000000..841ff68f --- /dev/null +++ b/cmd/micro/config/globals.go @@ -0,0 +1,6 @@ +package config + +const ( + DoubleClickThreshold = 400 // How many milliseconds to wait before a second click is not a double click + AutosaveTime = 8 // Number of seconds to wait before autosaving +) diff --git a/cmd/micro/display/infowindow.go b/cmd/micro/display/infowindow.go index d8f2fffe..cc696f62 100644 --- a/cmd/micro/display/infowindow.go +++ b/cmd/micro/display/infowindow.go @@ -81,6 +81,13 @@ func (i *InfoWindow) Relocate() bool { return false } func (i *InfoWindow) GetView() *View { return i.View } func (i *InfoWindow) SetView(v *View) {} +func (i *InfoWindow) GetMouseLoc(vloc buffer.Loc) buffer.Loc { + c := i.Buffer.GetActiveCursor() + l := i.Buffer.LineBytes(0) + n := utf8.RuneCountInString(i.Msg) + return buffer.Loc{c.GetCharPosInLine(l, vloc.X-n), 0} +} + func (i *InfoWindow) Clear() { for x := 0; x < i.width; x++ { screen.Screen.SetContent(x, i.y, ' ', nil, config.DefStyle) diff --git a/cmd/micro/display/window.go b/cmd/micro/display/window.go index 0e14c348..3bcf6bd2 100644 --- a/cmd/micro/display/window.go +++ b/cmd/micro/display/window.go @@ -24,6 +24,7 @@ type Window interface { Relocate() bool GetView() *View SetView(v *View) + GetMouseLoc(vloc buffer.Loc) buffer.Loc } // The BufWindow provides a way of displaying a certain section @@ -75,6 +76,7 @@ func (w *BufWindow) Clear() { func (w *BufWindow) Bottomline() int { // b := w.Buf + // TODO: possible non-softwrap optimization // if !b.Settings["softwrap"].(bool) { // return w.StartLine + w.Height // } @@ -130,6 +132,118 @@ func (w *BufWindow) Relocate() bool { return ret } +func (w *BufWindow) GetMouseLoc(svloc buffer.Loc) buffer.Loc { + b := w.Buf + + // TODO: possible non-softwrap optimization + // if !b.Settings["softwrap"].(bool) { + // l := b.LineBytes(svloc.Y) + // return buffer.Loc{b.GetActiveCursor().GetCharPosInLine(l, svloc.X), svloc.Y} + // } + + bufHeight := w.Height + if b.Settings["statusline"].(bool) { + bufHeight-- + } + + // We need to know the string length of the largest line number + // so we can pad appropriately when displaying line numbers + maxLineNumLength := len(strconv.Itoa(b.LinesNum())) + + tabsize := int(b.Settings["tabsize"].(float64)) + softwrap := b.Settings["softwrap"].(bool) + + // this represents the current draw position + // within the current window + vloc := buffer.Loc{X: 0, Y: 0} + + // this represents the current draw position in the buffer (char positions) + bloc := buffer.Loc{X: w.StartCol, Y: w.StartLine} + + for vloc.Y = 0; vloc.Y < bufHeight; vloc.Y++ { + vloc.X = 0 + if b.Settings["ruler"].(bool) { + vloc.X += maxLineNumLength + 1 + } + + if svloc.X <= vloc.X && vloc.Y == svloc.Y { + return bloc + } + + line := b.LineBytes(bloc.Y) + line, nColsBeforeStart := util.SliceVisualEnd(line, bloc.X, tabsize) + + draw := func() { + if nColsBeforeStart <= 0 { + vloc.X++ + } + nColsBeforeStart-- + } + + w.lineHeight[vloc.Y] = bloc.Y + + totalwidth := bloc.X - nColsBeforeStart + for len(line) > 0 { + if vloc.X == svloc.X && vloc.Y == svloc.Y { + return bloc + } + + r, size := utf8.DecodeRune(line) + draw() + width := 0 + + switch r { + case '\t': + ts := tabsize - (totalwidth % tabsize) + width = ts + default: + width = runewidth.RuneWidth(r) + } + + // Draw any extra characters either spaces for tabs or @ for incomplete wide runes + if width > 1 { + for i := 1; i < width; i++ { + if vloc.X == svloc.X && vloc.Y == svloc.Y { + return bloc + } + draw() + } + } + bloc.X++ + line = line[size:] + + totalwidth += width + + // If we reach the end of the window then we either stop or we wrap for softwrap + if vloc.X >= w.Width { + if !softwrap { + break + } else { + vloc.Y++ + if vloc.Y >= bufHeight { + break + } + vloc.X = 0 + w.lineHeight[vloc.Y] = bloc.Y + // This will draw an empty line number because the current line is wrapped + vloc.X += maxLineNumLength + 1 + } + } + } + if vloc.Y == svloc.Y { + return bloc + } + + bloc.X = w.StartCol + bloc.Y++ + if bloc.Y >= b.LinesNum() { + break + } + } + + return buffer.Loc{X: -1, Y: -1} +} + func (w *BufWindow) drawLineNum(lineNumStyle tcell.Style, softwrapped bool, maxLineNumLength int, vloc *buffer.Loc, bloc *buffer.Loc) { lineNum := strconv.Itoa(bloc.Y + 1) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index ecee6847..468b63d9 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -17,11 +17,6 @@ import ( "github.com/zyedidia/tcell" ) -const ( - doubleClickThreshold = 400 // How many milliseconds to wait before a second click is not a double click - autosaveTime = 8 // Number of seconds to wait before autosaving -) - var ( // These variables should be set by the linker when compiling From 5335c60d6c975dd6f6b8be016397e024d25303ed Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 2 Jan 2019 17:48:50 -0500 Subject: [PATCH 037/231] Fix sub bug --- cmd/micro/buffer/line_array.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cmd/micro/buffer/line_array.go b/cmd/micro/buffer/line_array.go index b52d4da8..3a421076 100644 --- a/cmd/micro/buffer/line_array.go +++ b/cmd/micro/buffer/line_array.go @@ -242,7 +242,10 @@ func (la *LineArray) Substr(start, end Loc) []byte { startX := runeToByteIndex(start.X, la.lines[start.Y].data) endX := runeToByteIndex(end.X, la.lines[end.Y].data) if start.Y == end.Y { - return la.lines[start.Y].data[startX:endX] + src := la.lines[start.Y].data[startX:endX] + dest := make([]byte, len(src)) + copy(dest, src) + return dest } str := make([]byte, 0, len(la.lines[start.Y+1].data)*(end.Y-start.Y)) str = append(str, la.lines[start.Y].data[startX:]...) From e97005f05d064dca04f5a3c121f3e567a9dcca1d Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 2 Jan 2019 20:07:48 -0500 Subject: [PATCH 038/231] Working horizontal scrolling --- cmd/micro/action/bindings.go | 4 +- cmd/micro/buffer/cursor.go | 29 +-------- cmd/micro/display/infowindow.go | 3 +- cmd/micro/display/window.go | 106 ++++++++++++++++++++++---------- cmd/micro/util/util.go | 45 +++++++++++++- 5 files changed, 122 insertions(+), 65 deletions(-) diff --git a/cmd/micro/action/bindings.go b/cmd/micro/action/bindings.go index b1e2685b..3ed86dc0 100644 --- a/cmd/micro/action/bindings.go +++ b/cmd/micro/action/bindings.go @@ -376,8 +376,8 @@ func DefaultBindings() map[string]string { "Backspace": "Backspace", "Alt-CtrlH": "DeleteWordLeft", "Alt-Backspace": "DeleteWordLeft", - "Tab": "IndentSelection,InsertTab", - "Backtab": "OutdentSelection,OutdentLine", + "Tab": "InsertTab", + "Backtab": "OutdentLine", "CtrlO": "OpenFile", "CtrlS": "Save", "CtrlF": "Find", diff --git a/cmd/micro/buffer/cursor.go b/cmd/micro/buffer/cursor.go index 0679b9be..aded3ba2 100644 --- a/cmd/micro/buffer/cursor.go +++ b/cmd/micro/buffer/cursor.go @@ -3,7 +3,6 @@ package buffer import ( "unicode/utf8" - runewidth "github.com/mattn/go-runewidth" "github.com/zyedidia/clipboard" "github.com/zyedidia/micro/cmd/micro/util" ) @@ -89,33 +88,7 @@ func (c *Cursor) GetVisualX() int { // 4 visual spaces) func (c *Cursor) GetCharPosInLine(b []byte, visualPos int) int { tabsize := int(c.buf.Settings["tabsize"].(float64)) - - // Scan rune by rune until we exceed the visual width that we are - // looking for. Then we can return the character position we have found - i := 0 // char pos - width := 0 // string visual width - for len(b) > 0 { - r, size := utf8.DecodeRune(b) - b = b[size:] - - switch r { - case '\t': - ts := tabsize - (width % tabsize) - width += ts - default: - width += runewidth.RuneWidth(r) - } - - if width >= visualPos { - if width == visualPos { - i++ - } - break - } - i++ - } - - return i + return util.GetCharPosInLine(b, visualPos, tabsize) } // Start moves the cursor to the start of the line it is on diff --git a/cmd/micro/display/infowindow.go b/cmd/micro/display/infowindow.go index cc696f62..499b4401 100644 --- a/cmd/micro/display/infowindow.go +++ b/cmd/micro/display/infowindow.go @@ -103,7 +103,8 @@ func (i *InfoWindow) displayBuffer() { vlocX := utf8.RuneCountInString(i.Msg) tabsize := 4 - line, nColsBeforeStart := util.SliceVisualEnd(line, blocX, tabsize) + line, nColsBeforeStart, bslice := util.SliceVisualEnd(line, blocX, tabsize) + blocX = bslice draw := func(r rune, style tcell.Style) { if nColsBeforeStart <= 0 { diff --git a/cmd/micro/display/window.go b/cmd/micro/display/window.go index 3bcf6bd2..4243a97f 100644 --- a/cmd/micro/display/window.go +++ b/cmd/micro/display/window.go @@ -13,9 +13,13 @@ import ( ) type View struct { - X, Y int // X,Y location of the view - Width, Height int // Width and height of the view - StartLine, StartCol int // Start line and start column of the view (vertical/horizontal scroll) + X, Y int // X,Y location of the view + Width, Height int // Width and height of the view + + // Start line and start column of the view (vertical/horizontal scroll) + // note that since the starting column of every line is different if the view + // is scrolled, StartCol is a visual index (will be the same for every line) + StartLine, StartCol int } type Window interface { @@ -37,7 +41,8 @@ type BufWindow struct { sline *StatusLine - lineHeight []int + lineHeight []int + gutterOffset int } // NewBufWindow creates a new window at a location in the screen with a width and height @@ -60,6 +65,39 @@ func (v *View) SetView(view *View) { v = view } +func (w *BufWindow) getStartInfo(n, lineN int) ([]byte, int, int, *tcell.Style) { + tabsize := util.IntOpt(w.Buf.Settings["tabsize"]) + width := 0 + bloc := buffer.Loc{0, lineN} + b := w.Buf.LineBytes(lineN) + curStyle := config.DefStyle + var s *tcell.Style + for len(b) > 0 { + r, size := utf8.DecodeRune(b) + + curStyle, found := w.getStyle(curStyle, bloc, r) + if found { + s = &curStyle + } + + w := 0 + switch r { + case '\t': + ts := tabsize - (width % tabsize) + w = ts + default: + w = runewidth.RuneWidth(r) + } + if width+w > n { + return b, n - width, bloc.X, s + } + width += w + b = b[size:] + bloc.X++ + } + return b, n - width, bloc.X, s +} + // Clear resets all cells in this window to the default style func (w *BufWindow) Clear() { for y := 0; y < w.Height; y++ { @@ -117,18 +155,18 @@ func (w *BufWindow) Relocate() bool { ret = true } - // TODO: horizontal scroll - // if !b.Settings["softwrap"].(bool) { - // cx := activeC.GetVisualX() - // if cx < w.StartCol { - // w.StartCol = cx - // ret = true - // } - // if cx+v.lineNumOffset+1 > v.leftCol+v.Width { - // v.leftCol = cx - v.Width + v.lineNumOffset + 1 - // ret = true - // } - // } + // horizontal relocation (scrolling) + if !b.Settings["softwrap"].(bool) { + cx := activeC.GetVisualX() + if cx < w.StartCol { + w.StartCol = cx + ret = true + } + if cx+w.gutterOffset+1 > w.StartCol+w.Width { + w.StartCol = cx - w.Width + w.gutterOffset + 1 + ret = true + } + } return ret } @@ -158,7 +196,7 @@ func (w *BufWindow) GetMouseLoc(svloc buffer.Loc) buffer.Loc { vloc := buffer.Loc{X: 0, Y: 0} // this represents the current draw position in the buffer (char positions) - bloc := buffer.Loc{X: w.StartCol, Y: w.StartLine} + bloc := buffer.Loc{X: -1, Y: w.StartLine} for vloc.Y = 0; vloc.Y < bufHeight; vloc.Y++ { vloc.X = 0 @@ -166,12 +204,9 @@ func (w *BufWindow) GetMouseLoc(svloc buffer.Loc) buffer.Loc { vloc.X += maxLineNumLength + 1 } - if svloc.X <= vloc.X && vloc.Y == svloc.Y { - return bloc - } - line := b.LineBytes(bloc.Y) - line, nColsBeforeStart := util.SliceVisualEnd(line, bloc.X, tabsize) + line, nColsBeforeStart, bslice := util.SliceVisualEnd(line, w.StartCol, tabsize) + bloc.X = bslice draw := func() { if nColsBeforeStart <= 0 { @@ -182,7 +217,11 @@ func (w *BufWindow) GetMouseLoc(svloc buffer.Loc) buffer.Loc { w.lineHeight[vloc.Y] = bloc.Y - totalwidth := bloc.X - nColsBeforeStart + totalwidth := w.StartCol - nColsBeforeStart + + if svloc.X <= vloc.X && vloc.Y == svloc.Y { + return bloc + } for len(line) > 0 { if vloc.X == svloc.X && vloc.Y == svloc.Y { return bloc @@ -269,12 +308,12 @@ func (w *BufWindow) drawLineNum(lineNumStyle tcell.Style, softwrapped bool, maxL // getStyle returns the highlight style for the given character position // If there is no change to the current highlight style it just returns that -func (w *BufWindow) getStyle(style tcell.Style, bloc buffer.Loc, r rune) tcell.Style { +func (w *BufWindow) getStyle(style tcell.Style, bloc buffer.Loc, r rune) (tcell.Style, bool) { if group, ok := w.Buf.Match(bloc.Y)[bloc.X]; ok { s := config.GetColor(group.String()) - return s + return s, true } - return style + return style, false } func (w *BufWindow) showCursor(x, y int, main bool) { @@ -329,7 +368,7 @@ func (w *BufWindow) displayBuffer() { vloc := buffer.Loc{X: 0, Y: 0} // this represents the current draw position in the buffer (char positions) - bloc := buffer.Loc{X: w.StartCol, Y: w.StartLine} + bloc := buffer.Loc{X: -1, Y: w.StartLine} activeC := b.GetActiveCursor() @@ -344,8 +383,13 @@ func (w *BufWindow) displayBuffer() { w.drawLineNum(s, false, maxLineNumLength, &vloc, &bloc) } - line := b.LineBytes(bloc.Y) - line, nColsBeforeStart := util.SliceVisualEnd(line, bloc.X, tabsize) + w.gutterOffset = vloc.X + + line, nColsBeforeStart, bslice, startStyle := w.getStartInfo(w.StartCol, bloc.Y) + if startStyle != nil { + curStyle = *startStyle + } + bloc.X = bslice draw := func(r rune, style tcell.Style) { if nColsBeforeStart <= 0 { @@ -376,14 +420,14 @@ func (w *BufWindow) displayBuffer() { w.lineHeight[vloc.Y] = bloc.Y - totalwidth := bloc.X - nColsBeforeStart + totalwidth := w.StartCol - nColsBeforeStart for len(line) > 0 { if activeC.X == bloc.X && activeC.Y == bloc.Y { w.showCursor(vloc.X, vloc.Y, true) } r, size := utf8.DecodeRune(line) - curStyle = w.getStyle(curStyle, bloc, r) + curStyle, _ = w.getStyle(curStyle, bloc, r) draw(r, curStyle) diff --git a/cmd/micro/util/util.go b/cmd/micro/util/util.go index 02b5ffd9..4d4d97ab 100644 --- a/cmd/micro/util/util.go +++ b/cmd/micro/util/util.go @@ -54,8 +54,10 @@ func SliceStart(slc []byte, index int) []byte { // SliceVisualEnd will take a byte slice and slice off the start // up to a given visual index. If the index is in the middle of a // rune the number of visual columns into the rune will be returned -func SliceVisualEnd(b []byte, n, tabsize int) ([]byte, int) { +// It will also return the char pos of the first character of the slice +func SliceVisualEnd(b []byte, n, tabsize int) ([]byte, int, int) { width := 0 + i := 0 for len(b) > 0 { r, size := utf8.DecodeRune(b) @@ -68,12 +70,13 @@ func SliceVisualEnd(b []byte, n, tabsize int) ([]byte, int) { w = runewidth.RuneWidth(r) } if width+w > n { - return b, n - width + return b, n - width, i } width += w b = b[size:] + i++ } - return b, width + return b, n - width, i } // Abs is a simple absolute value function for ints @@ -87,6 +90,9 @@ func Abs(n int) int { // StringWidth returns the visual width of a byte array indexed from 0 to n (rune index) // with a given tabsize func StringWidth(b []byte, n, tabsize int) int { + if n <= 0 { + return 0 + } i := 0 width := 0 for len(b) > 0 { @@ -263,3 +269,36 @@ func GetLeadingWhitespace(b []byte) []byte { func IntOpt(opt interface{}) int { return int(opt.(float64)) } + +// GetCharPosInLine gets the char position of a visual x y +// coordinate (this is necessary because tabs are 1 char but +// 4 visual spaces) +func GetCharPosInLine(b []byte, visualPos int, tabsize int) int { + + // Scan rune by rune until we exceed the visual width that we are + // looking for. Then we can return the character position we have found + i := 0 // char pos + width := 0 // string visual width + for len(b) > 0 { + r, size := utf8.DecodeRune(b) + b = b[size:] + + switch r { + case '\t': + ts := tabsize - (width % tabsize) + width += ts + default: + width += runewidth.RuneWidth(r) + } + + if width >= visualPos { + if width == visualPos { + i++ + } + break + } + i++ + } + + return i +} From 80fe992957c42293f30a721220bd04362aa26267 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 2 Jan 2019 20:57:27 -0500 Subject: [PATCH 039/231] Fix infobar prompt --- cmd/micro/action/actions.go | 4 ++-- cmd/micro/action/command.go | 2 +- cmd/micro/info/infobuffer.go | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 425142dd..60722813 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -725,7 +725,7 @@ func (h *BufHandler) SelectAll() bool { // OpenFile opens a new file in the buffer func (h *BufHandler) OpenFile() bool { - InfoBar.Prompt("> open ", func(resp string, canceled bool) { + InfoBar.Prompt("> ", "open ", func(resp string, canceled bool) { if !canceled { HandleCommand(resp) } @@ -889,7 +889,7 @@ func (h *BufHandler) ShellMode() bool { // CommandMode lets the user enter a command func (h *BufHandler) CommandMode() bool { - InfoBar.Prompt("> ", func(resp string, canceled bool) { + InfoBar.Prompt("> ", "", func(resp string, canceled bool) { if !canceled { HandleCommand(resp) } diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index a4c28c2c..62a1a73b 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -119,7 +119,7 @@ func DefaultCommands() map[string]StrCommand { // enter func CommandEditAction(prompt string) BufKeyAction { return func(h *BufHandler) bool { - InfoBar.Prompt("> "+prompt, func(resp string, canceled bool) { + InfoBar.Prompt("> ", prompt, func(resp string, canceled bool) { if !canceled { HandleCommand(resp) } diff --git a/cmd/micro/info/infobuffer.go b/cmd/micro/info/infobuffer.go index c7360711..6e670305 100644 --- a/cmd/micro/info/infobuffer.go +++ b/cmd/micro/info/infobuffer.go @@ -62,16 +62,17 @@ func (i *InfoBuf) Error(msg ...interface{}) { // TODO: add to log? } -func (i *InfoBuf) Prompt(msg string, callback func(string, bool)) { +func (i *InfoBuf) Prompt(prompt string, msg string, callback func(string, bool)) { // If we get another prompt mid-prompt we cancel the one getting overwritten if i.HasPrompt { i.DonePrompt(true) } - i.Msg = msg + i.Msg = prompt i.HasPrompt = true i.HasMessage, i.HasError = false, false i.PromptCallback = callback + i.Buffer.Insert(i.Buffer.Start(), msg) } func (i *InfoBuf) DonePrompt(canceled bool) { From 0f37c0b0bf79575361e395e6ea2a111d7116b782 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 2 Jan 2019 23:26:40 -0500 Subject: [PATCH 040/231] Add multi cursor support --- cmd/micro/action/actions.go | 14 +++- cmd/micro/action/bufhandler.go | 118 +++++++++++++++++++++++++-------- cmd/micro/buffer/buffer.go | 72 +++++++++++--------- cmd/micro/display/window.go | 90 ++++++++++++++----------- 4 files changed, 199 insertions(+), 95 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 60722813..eaf5a8e2 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -985,6 +985,13 @@ func (h *BufHandler) SpawnMultiCursorSelect() bool { // MouseMultiCursor is a mouse action which puts a new cursor at the mouse position func (h *BufHandler) MouseMultiCursor(e *tcell.EventMouse) bool { + b := h.Buf + mx, my := e.Position() + mouseLoc := h.Win.GetMouseLoc(buffer.Loc{mx, my}) + c := buffer.NewCursor(b, mouseLoc) + b.AddCursor(c) + b.MergeCursors() + return false } @@ -995,10 +1002,15 @@ func (h *BufHandler) SkipMultiCursor() bool { // RemoveMultiCursor removes the latest multiple cursor func (h *BufHandler) RemoveMultiCursor() bool { + if h.Buf.NumCursors() > 1 { + h.Buf.RemoveCursor(h.Buf.NumCursors() - 1) + h.Buf.UpdateCursors() + } return false } // RemoveAllMultiCursors removes all cursors except the base cursor func (h *BufHandler) RemoveAllMultiCursors() bool { - return false + h.Buf.ClearCursors() + return true } diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index aa49a9e1..7469a609 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -13,15 +13,18 @@ type BufKeyAction func(*BufHandler) bool type BufMouseAction func(*BufHandler, *tcell.EventMouse) bool var BufKeyBindings map[KeyEvent]BufKeyAction +var BufKeyStrings map[KeyEvent]string var BufMouseBindings map[MouseEvent]BufMouseAction func init() { BufKeyBindings = make(map[KeyEvent]BufKeyAction) + BufKeyStrings = make(map[KeyEvent]string) BufMouseBindings = make(map[MouseEvent]BufMouseAction) } func BufMapKey(k KeyEvent, action string) { if f, ok := BufKeyActions[action]; ok { + BufKeyStrings[k] = action BufKeyBindings[k] = f } else { util.TermMessage("Error:", action, "does not exist") @@ -106,16 +109,11 @@ func (h *BufHandler) HandleEvent(event tcell.Event) { mod: e.Modifiers(), r: e.Rune(), } - cursors := h.Buf.GetCursors() - for _, c := range cursors { - h.Buf.SetCurCursor(c.Num) - h.Cursor = c - done := h.DoKeyEvent(ke) - if !done && e.Key() == tcell.KeyRune { - h.DoRuneInsert(e.Rune()) - } + + done := h.DoKeyEvent(ke) + if !done && e.Key() == tcell.KeyRune { + h.DoRuneInsert(e.Rune()) } - // TODO: maybe reset curcursor to 0 case *tcell.EventMouse: switch e.Buttons() { case tcell.ButtonNone: @@ -145,17 +143,25 @@ func (h *BufHandler) HandleEvent(event tcell.Event) { btn: e.Buttons(), mod: e.Modifiers(), } - cursors := h.Buf.GetCursors() - for _, c := range cursors { - h.Buf.SetCurCursor(c.Num) - h.Cursor = c - h.DoMouseEvent(me, e) - } + h.DoMouseEvent(me, e) } } func (h *BufHandler) DoKeyEvent(e KeyEvent) bool { if action, ok := BufKeyBindings[e]; ok { + for _, a := range MultiActions { + if a == BufKeyStrings[e] { + cursors := h.Buf.GetCursors() + for _, c := range cursors { + h.Buf.SetCurCursor(c.Num) + h.Cursor = c + if action(h) { + h.Win.Relocate() + } + } + return true + } + } if action(h) { h.Win.Relocate() } @@ -175,18 +181,21 @@ func (h *BufHandler) DoMouseEvent(e MouseEvent, te *tcell.EventMouse) bool { } func (h *BufHandler) DoRuneInsert(r rune) { - // Insert a character - if h.Cursor.HasSelection() { - h.Cursor.DeleteSelection() - h.Cursor.ResetSelection() - } + cursors := h.Buf.GetCursors() + for _, c := range cursors { + // Insert a character + if c.HasSelection() { + c.DeleteSelection() + c.ResetSelection() + } - if h.isOverwriteMode { - next := h.Cursor.Loc - next.X++ - h.Buf.Replace(h.Cursor.Loc, next, string(r)) - } else { - h.Buf.Insert(h.Cursor.Loc, string(r)) + if h.isOverwriteMode { + next := c.Loc + next.X++ + h.Buf.Replace(c.Loc, next, string(r)) + } else { + h.Buf.Insert(c.Loc, string(r)) + } } } @@ -292,3 +301,60 @@ var BufMouseActions = map[string]BufMouseAction{ "MousePress": (*BufHandler).MousePress, "MouseMultiCursor": (*BufHandler).MouseMultiCursor, } + +const funcPrefixLen = 21 // length of "action.(*BufHandler)." + +// MultiActions is a list of actions that should be executed multiple +// times if there are multiple cursors (one per cursor) +// Generally actions that modify global editor state like quitting or +// saving should not be included in this list +var MultiActions = []string{ + "CursorUp", + "CursorDown", + "CursorPageUp", + "CursorPageDown", + "CursorLeft", + "CursorRight", + "CursorStart", + "CursorEnd", + "SelectToStart", + "SelectToEnd", + "SelectUp", + "SelectDown", + "SelectLeft", + "SelectRight", + "WordRight", + "WordLeft", + "SelectWordRight", + "SelectWordLeft", + "DeleteWordRight", + "DeleteWordLeft", + "SelectLine", + "SelectToStartOfLine", + "SelectToEndOfLine", + "ParagraphPrevious", + "ParagraphNext", + "InsertNewline", + "InsertSpace", + "Backspace", + "Delete", + "InsertTab", + "FindNext", + "FindPrevious", + "Cut", + "CutLine", + "DuplicateLine", + "DeleteLine", + "MoveLinesUp", + "MoveLinesDown", + "IndentSelection", + "OutdentSelection", + "OutdentLine", + "Paste", + "PastePrimary", + "SelectPageUp", + "SelectPageDown", + "StartOfLine", + "EndOfLine", + "JumpToMatchingBrace", +} diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index 91373ba0..ffacc16b 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -236,36 +236,6 @@ func (b *Buffer) ReOpen() error { return err } -// SetCursors resets this buffer's cursors to a new list -func (b *Buffer) SetCursors(c []*Cursor) { - b.cursors = c -} - -// SetCurCursor sets the current cursor -func (b *Buffer) SetCurCursor(n int) { - b.curCursor = n -} - -// GetActiveCursor returns the main cursor in this buffer -func (b *Buffer) GetActiveCursor() *Cursor { - return b.cursors[b.curCursor] -} - -// GetCursor returns the nth cursor -func (b *Buffer) GetCursor(n int) *Cursor { - return b.cursors[n] -} - -// GetCursors returns the list of cursors in this buffer -func (b *Buffer) GetCursors() []*Cursor { - return b.cursors -} - -// NumCursors returns the number of cursors -func (b *Buffer) NumCursors() int { - return len(b.cursors) -} - // LineBytes returns line n as an array of bytes func (b *Buffer) LineBytes(n int) []byte { if n >= len(b.lines) || n < 0 { @@ -429,6 +399,42 @@ func (b *Buffer) IndentString(tabsize int) string { return "\t" } +// SetCursors resets this buffer's cursors to a new list +func (b *Buffer) SetCursors(c []*Cursor) { + b.cursors = c +} + +// AddCursor adds a new cursor to the list +func (b *Buffer) AddCursor(c *Cursor) { + b.cursors = append(b.cursors, c) + b.UpdateCursors() +} + +// SetCurCursor sets the current cursor +func (b *Buffer) SetCurCursor(n int) { + b.curCursor = n +} + +// GetActiveCursor returns the main cursor in this buffer +func (b *Buffer) GetActiveCursor() *Cursor { + return b.cursors[b.curCursor] +} + +// GetCursor returns the nth cursor +func (b *Buffer) GetCursor(n int) *Cursor { + return b.cursors[n] +} + +// GetCursors returns the list of cursors in this buffer +func (b *Buffer) GetCursors() []*Cursor { + return b.cursors +} + +// NumCursors returns the number of cursors +func (b *Buffer) NumCursors() int { + return len(b.cursors) +} + // MergeCursors merges any cursors that are at the same position // into one cursor func (b *Buffer) MergeCursors() { @@ -464,6 +470,12 @@ func (b *Buffer) UpdateCursors() { } } +func (b *Buffer) RemoveCursor(i int) { + copy(b.cursors[i:], b.cursors[i+1:]) + b.cursors[len(b.cursors)-1] = nil + b.cursors = b.cursors[:len(b.cursors)-1] +} + // ClearCursors removes all extra cursors func (b *Buffer) ClearCursors() { for i := 1; i < len(b.cursors); i++ { diff --git a/cmd/micro/display/window.go b/cmd/micro/display/window.go index 4243a97f..a188b203 100644 --- a/cmd/micro/display/window.go +++ b/cmd/micro/display/window.go @@ -317,7 +317,7 @@ func (w *BufWindow) getStyle(style tcell.Style, bloc buffer.Loc, r rune) (tcell. } func (w *BufWindow) showCursor(x, y int, main bool) { - if main { + if !main { screen.Screen.ShowCursor(x, y) } else { r, _, _, _ := screen.Screen.GetContent(x, y) @@ -370,15 +370,18 @@ func (w *BufWindow) displayBuffer() { // this represents the current draw position in the buffer (char positions) bloc := buffer.Loc{X: -1, Y: w.StartLine} - activeC := b.GetActiveCursor() + cursors := b.GetCursors() curStyle := config.DefStyle for vloc.Y = 0; vloc.Y < bufHeight; vloc.Y++ { vloc.X = 0 if b.Settings["ruler"].(bool) { s := lineNumStyle - if bloc.Y == activeC.Y { - s = curNumStyle + for _, c := range cursors { + if bloc.Y == c.Y { + s = curNumStyle + break + } } w.drawLineNum(s, false, maxLineNumLength, &vloc, &bloc) } @@ -391,28 +394,38 @@ func (w *BufWindow) displayBuffer() { } bloc.X = bslice - draw := func(r rune, style tcell.Style) { + draw := func(r rune, style tcell.Style, showcursor bool) { if nColsBeforeStart <= 0 { - if activeC.HasSelection() && - (bloc.GreaterEqual(activeC.CurSelection[0]) && bloc.LessThan(activeC.CurSelection[1]) || - bloc.LessThan(activeC.CurSelection[0]) && bloc.GreaterEqual(activeC.CurSelection[1])) { - // The current character is selected - style = config.DefStyle.Reverse(true) + for _, c := range cursors { + if c.HasSelection() && + (bloc.GreaterEqual(c.CurSelection[0]) && bloc.LessThan(c.CurSelection[1]) || + bloc.LessThan(c.CurSelection[0]) && bloc.GreaterEqual(c.CurSelection[1])) { + // The current character is selected + style = config.DefStyle.Reverse(true) - if s, ok := config.Colorscheme["selection"]; ok { - style = s + if s, ok := config.Colorscheme["selection"]; ok { + style = s + } } - } - if b.Settings["cursorline"].(bool) && - !activeC.HasSelection() && activeC.Y == bloc.Y { - if s, ok := config.Colorscheme["cursor-line"]; ok { - fg, _, _ := s.Decompose() - style = style.Background(fg) + if b.Settings["cursorline"].(bool) && + !c.HasSelection() && c.Y == bloc.Y { + if s, ok := config.Colorscheme["cursor-line"]; ok { + fg, _, _ := s.Decompose() + style = style.Background(fg) + } } } screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, r, nil, style) + + if showcursor { + for _, c := range cursors { + if c.X == bloc.X && c.Y == bloc.Y { + w.showCursor(w.X+vloc.X, w.Y+vloc.Y, true) + } + } + } vloc.X++ } nColsBeforeStart-- @@ -422,14 +435,10 @@ func (w *BufWindow) displayBuffer() { totalwidth := w.StartCol - nColsBeforeStart for len(line) > 0 { - if activeC.X == bloc.X && activeC.Y == bloc.Y { - w.showCursor(vloc.X, vloc.Y, true) - } - r, size := utf8.DecodeRune(line) curStyle, _ = w.getStyle(curStyle, bloc, r) - draw(r, curStyle) + draw(r, curStyle, true) width := 0 @@ -443,15 +452,15 @@ func (w *BufWindow) displayBuffer() { char = '@' } - bloc.X++ - line = line[size:] - // Draw any extra characters either spaces for tabs or @ for incomplete wide runes if width > 1 { for i := 1; i < width; i++ { - draw(char, curStyle) + draw(char, curStyle, false) } } + bloc.X++ + line = line[size:] + totalwidth += width // If we reach the end of the window then we either stop or we wrap for softwrap @@ -470,19 +479,24 @@ func (w *BufWindow) displayBuffer() { } } } - if activeC.X == bloc.X && activeC.Y == bloc.Y { - w.showCursor(vloc.X, vloc.Y, true) + + for _, c := range cursors { + if b.Settings["cursorline"].(bool) && + !c.HasSelection() && c.Y == bloc.Y { + style := config.DefStyle + if s, ok := config.Colorscheme["cursor-line"]; ok { + fg, _, _ := s.Decompose() + style = style.Background(fg) + } + for i := vloc.X; i < w.Width; i++ { + screen.Screen.SetContent(i, vloc.Y, ' ', nil, style) + } + } } - if b.Settings["cursorline"].(bool) && - !activeC.HasSelection() && activeC.Y == bloc.Y { - style := config.DefStyle - if s, ok := config.Colorscheme["cursor-line"]; ok { - fg, _, _ := s.Decompose() - style = style.Background(fg) - } - for i := vloc.X; i < w.Width; i++ { - screen.Screen.SetContent(i, vloc.Y, ' ', nil, style) + for _, c := range cursors { + if c.X == bloc.X && c.Y == bloc.Y { + w.showCursor(w.X+vloc.X, w.Y+vloc.Y, true) } } From 37a4cbfd983b4c7cca0a75e47cd83af41859034a Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 3 Jan 2019 15:27:43 -0500 Subject: [PATCH 041/231] Implement searching --- cmd/micro/action/actions.go | 36 +++++++- cmd/micro/action/bindings.go | 6 +- cmd/micro/action/bufhandler.go | 19 +++- cmd/micro/action/command.go | 2 +- cmd/micro/action/editpane.go | 8 +- cmd/micro/action/infohandler.go | 158 ++++++++++++++++++++++++++++++++ cmd/micro/buffer/search.go | 93 +++++++++++++++++++ cmd/micro/display/window.go | 10 +- cmd/micro/info/infobuffer.go | 26 ++++-- cmd/micro/util/util.go | 15 +++ 10 files changed, 348 insertions(+), 25 deletions(-) create mode 100644 cmd/micro/action/infohandler.go create mode 100644 cmd/micro/buffer/search.go diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index eaf5a8e2..6afa78ac 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -1,6 +1,7 @@ package action import ( + "log" "os" "strings" "time" @@ -560,6 +561,37 @@ func (h *BufHandler) SaveAs() bool { // Find opens a prompt and searches forward for the input func (h *BufHandler) Find() bool { + InfoBar.Prompt("Find: ", "", func(resp string) { + match, found, _ := h.Buf.FindNext(resp, h.Cursor.Loc, true) + if found { + h.Cursor.SetSelectionStart(match[0]) + h.Cursor.SetSelectionEnd(match[1]) + h.Cursor.OrigSelection[0] = h.Cursor.CurSelection[0] + h.Cursor.OrigSelection[1] = h.Cursor.CurSelection[1] + } else { + log.Println("RESET") + h.Cursor.ResetSelection() + } + }, func(resp string, canceled bool) { + if !canceled { + match, found, err := h.Buf.FindNext(resp, h.Cursor.Loc, true) + if err != nil { + InfoBar.Error(err) + } + if found { + h.Cursor.SetSelectionStart(match[0]) + h.Cursor.SetSelectionEnd(match[1]) + h.Cursor.OrigSelection[0] = h.Cursor.CurSelection[0] + h.Cursor.OrigSelection[1] = h.Cursor.CurSelection[1] + h.Cursor.Loc = h.Cursor.CurSelection[1] + } else { + h.Cursor.ResetSelection() + } + } else { + h.Cursor.ResetSelection() + } + }) + return true } @@ -725,7 +757,7 @@ func (h *BufHandler) SelectAll() bool { // OpenFile opens a new file in the buffer func (h *BufHandler) OpenFile() bool { - InfoBar.Prompt("> ", "open ", func(resp string, canceled bool) { + InfoBar.Prompt("> ", "open ", nil, func(resp string, canceled bool) { if !canceled { HandleCommand(resp) } @@ -889,7 +921,7 @@ func (h *BufHandler) ShellMode() bool { // CommandMode lets the user enter a command func (h *BufHandler) CommandMode() bool { - InfoBar.Prompt("> ", "", func(resp string, canceled bool) { + InfoBar.Prompt("> ", "", nil, func(resp string, canceled bool) { if !canceled { HandleCommand(resp) } diff --git a/cmd/micro/action/bindings.go b/cmd/micro/action/bindings.go index 3ed86dc0..2b5173a3 100644 --- a/cmd/micro/action/bindings.go +++ b/cmd/micro/action/bindings.go @@ -103,7 +103,8 @@ modSearch: k = string(unicode.ToUpper(rune(k[0]))) + k[1:] if code, ok := keyEvents["Ctrl"+k]; ok { var r tcell.Key - if code < 256 { + // Special case for escape, for some reason tcell doesn't send it with the esc character + if code < 256 && code != 27 { r = code } // It is, we're done. @@ -118,7 +119,8 @@ modSearch: // See if we can find the key in bindingKeys if code, ok := keyEvents[k]; ok { var r tcell.Key - if code < 256 { + // Special case for escape, for some reason tcell doesn't send it with the esc character + if code < 256 && code != 27 { r = code } return KeyEvent{ diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 7469a609..b602ab78 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -22,6 +22,7 @@ func init() { BufMouseBindings = make(map[MouseEvent]BufMouseAction) } +// BufMapKey maps a key event to an action func BufMapKey(k KeyEvent, action string) { if f, ok := BufKeyActions[action]; ok { BufKeyStrings[k] = action @@ -30,6 +31,8 @@ func BufMapKey(k KeyEvent, action string) { util.TermMessage("Error:", action, "does not exist") } } + +// BufMapMouse maps a mouse event to an action func BufMapMouse(k MouseEvent, action string) { if f, ok := BufMouseActions[action]; ok { BufMouseBindings[k] = f @@ -147,10 +150,13 @@ func (h *BufHandler) HandleEvent(event tcell.Event) { } } +// DoKeyEvent executes a key event by finding the action it is bound +// to and executing it (possibly multiple times for multiple cursors) func (h *BufHandler) DoKeyEvent(e KeyEvent) bool { if action, ok := BufKeyBindings[e]; ok { - for _, a := range MultiActions { - if a == BufKeyStrings[e] { + estr := BufKeyStrings[e] + for _, s := range MultiActions { + if s == estr { cursors := h.Buf.GetCursors() for _, c := range cursors { h.Buf.SetCurCursor(c.Num) @@ -170,6 +176,8 @@ func (h *BufHandler) DoKeyEvent(e KeyEvent) bool { return false } +// DoMouseEvent executes a mouse event by finding the action it is bound +// to and executing it func (h *BufHandler) DoMouseEvent(e MouseEvent, te *tcell.EventMouse) bool { if action, ok := BufMouseBindings[e]; ok { if action(h, te) { @@ -180,6 +188,8 @@ func (h *BufHandler) DoMouseEvent(e MouseEvent, te *tcell.EventMouse) bool { return false } +// DoRuneInsert inserts a given rune into the current buffer +// (possibly multiple times for multiple cursors) func (h *BufHandler) DoRuneInsert(r rune) { cursors := h.Buf.GetCursors() for _, c := range cursors { @@ -199,6 +209,7 @@ func (h *BufHandler) DoRuneInsert(r rune) { } } +// BufKeyActions contains the list of all possible key actions the bufhandler could execute var BufKeyActions = map[string]BufKeyAction{ "CursorUp": (*BufHandler).CursorUp, "CursorDown": (*BufHandler).CursorDown, @@ -297,13 +308,13 @@ var BufKeyActions = map[string]BufKeyAction{ // This was changed to InsertNewline but I don't want to break backwards compatibility "InsertEnter": (*BufHandler).InsertNewline, } + +// BufMouseActions contains the list of all possible mouse actions the bufhandler could execute var BufMouseActions = map[string]BufMouseAction{ "MousePress": (*BufHandler).MousePress, "MouseMultiCursor": (*BufHandler).MouseMultiCursor, } -const funcPrefixLen = 21 // length of "action.(*BufHandler)." - // MultiActions is a list of actions that should be executed multiple // times if there are multiple cursors (one per cursor) // Generally actions that modify global editor state like quitting or diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 62a1a73b..644fe675 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -119,7 +119,7 @@ func DefaultCommands() map[string]StrCommand { // enter func CommandEditAction(prompt string) BufKeyAction { return func(h *BufHandler) bool { - InfoBar.Prompt("> ", prompt, func(resp string, canceled bool) { + InfoBar.Prompt("> ", prompt, nil, func(resp string, canceled bool) { if !canceled { HandleCommand(resp) } diff --git a/cmd/micro/action/editpane.go b/cmd/micro/action/editpane.go index 60eab596..92cc929c 100644 --- a/cmd/micro/action/editpane.go +++ b/cmd/micro/action/editpane.go @@ -8,12 +8,12 @@ import ( type EditPane struct { display.Window - Handler + *BufHandler } type InfoPane struct { display.Window - Handler + *InfoHandler *info.InfoBuf } @@ -22,7 +22,7 @@ func NewBufEditPane(x, y, width, height int, b *buffer.Buffer) *EditPane { // TODO: can probably replace editpane with bufhandler entirely w := display.NewBufWindow(x, y, width, height, b) e.Window = w - e.Handler = NewBufHandler(b, w) + e.BufHandler = NewBufHandler(b, w) return e } @@ -32,7 +32,7 @@ func NewInfoBar() *InfoPane { ib := info.NewBuffer() w := display.NewInfoWindow(ib) e.Window = w - e.Handler = NewBufHandler(ib.Buffer, w) + e.InfoHandler = NewInfoHandler(ib, w) e.InfoBuf = ib return e diff --git a/cmd/micro/action/infohandler.go b/cmd/micro/action/infohandler.go new file mode 100644 index 00000000..c50247de --- /dev/null +++ b/cmd/micro/action/infohandler.go @@ -0,0 +1,158 @@ +package action + +import ( + "strings" + + "github.com/zyedidia/micro/cmd/micro/display" + "github.com/zyedidia/micro/cmd/micro/info" + "github.com/zyedidia/tcell" +) + +type InfoKeyAction func(*InfoHandler) + +type InfoHandler struct { + *BufHandler + *info.InfoBuf +} + +func NewInfoHandler(ib *info.InfoBuf, w display.Window) *InfoHandler { + ih := new(InfoHandler) + ih.InfoBuf = ib + ih.BufHandler = NewBufHandler(ib.Buffer, w) + + return ih +} + +func (h *InfoHandler) HandleEvent(event tcell.Event) { + switch e := event.(type) { + case *tcell.EventKey: + ke := KeyEvent{ + code: e.Key(), + mod: e.Modifiers(), + r: e.Rune(), + } + + done := h.DoKeyEvent(ke) + if !done && e.Key() == tcell.KeyRune { + h.DoRuneInsert(e.Rune()) + } + case *tcell.EventMouse: + h.BufHandler.HandleEvent(event) + } +} + +func (h *InfoHandler) DoKeyEvent(e KeyEvent) bool { + done := false + if action, ok := BufKeyBindings[e]; ok { + estr := BufKeyStrings[e] + for _, s := range InfoNones { + if s == estr { + return false + } + } + for s, a := range InfoOverrides { + if s == estr { + done = true + a(h) + break + } + } + if !done { + done = action(h.BufHandler) + } + } + if done && h.EventCallback != nil { + h.EventCallback(strings.TrimSpace(string(h.LineBytes(0)))) + } + return done +} + +func (h *InfoHandler) DoRuneInsert(r rune) { + h.BufHandler.DoRuneInsert(r) + if h.EventCallback != nil { + h.EventCallback(strings.TrimSpace(string(h.LineBytes(0)))) + } +} + +// InfoNones is a list of actions that should have no effect when executed +// by an infohandler +var InfoNones = []string{ + "Save", + "SaveAll", + "SaveAs", + "Find", + "FindNext", + "FindPrevious", + "Center", + "DuplicateLine", + "MoveLinesUp", + "MoveLinesDown", + "OpenFile", + "Start", + "End", + "PageUp", + "PageDown", + "SelectPageUp", + "SelectPageDown", + "HalfPageUp", + "HalfPageDown", + "ToggleHelp", + "ToggleKeyMenu", + "ToggleRuler", + "JumpLine", + "ClearStatus", + "ShellMode", + "CommandMode", + "AddTab", + "PreviousTab", + "NextTab", + "NextSplit", + "PreviousSplit", + "Unsplit", + "VSplit", + "HSplit", + "ToggleMacro", + "PlayMacro", + "Suspend", + "ScrollUp", + "ScrollDown", + "SpawnMultiCursor", + "SpawnMultiCursorSelect", + "RemoveMultiCursor", + "RemoveAllMultiCursors", + "SkipMultiCursor", +} + +// InfoOverrides is the list of actions which have been overriden +// by the infohandler +var InfoOverrides = map[string]InfoKeyAction{ + "CursorUp": (*InfoHandler).CursorUp, + "CursorDown": (*InfoHandler).CursorDown, + "InsertNewline": (*InfoHandler).InsertNewline, + "InsertTab": (*InfoHandler).InsertTab, + "Escape": (*InfoHandler).Escape, + "Quit": (*InfoHandler).Quit, + "QuitAll": (*InfoHandler).QuitAll, +} + +func (h *InfoHandler) CursorUp() { + // TODO: history +} +func (h *InfoHandler) CursorDown() { + // TODO: history +} +func (h *InfoHandler) InsertTab() { + // TODO: autocomplete +} +func (h *InfoHandler) InsertNewline() { + h.DonePrompt(false) +} +func (h *InfoHandler) Quit() { + h.DonePrompt(true) +} +func (h *InfoHandler) QuitAll() { + h.DonePrompt(true) +} +func (h *InfoHandler) Escape() { + h.DonePrompt(true) +} diff --git a/cmd/micro/buffer/search.go b/cmd/micro/buffer/search.go new file mode 100644 index 00000000..a44b91ff --- /dev/null +++ b/cmd/micro/buffer/search.go @@ -0,0 +1,93 @@ +package buffer + +import ( + "regexp" + "unicode/utf8" + + "github.com/zyedidia/micro/cmd/micro/util" +) + +func (b *Buffer) findDown(r *regexp.Regexp, start, end Loc) ([2]Loc, bool) { + start.Y = util.Clamp(start.Y, 0, b.LinesNum()-1) + + for i := start.Y; i <= end.Y; i++ { + l := b.LineBytes(i) + charpos := 0 + + if i == start.Y { + nchars := utf8.RuneCount(l) + start.X = util.Clamp(start.X, 0, nchars-1) + l = util.SliceEnd(l, start.X) + charpos = start.X + } + + match := r.FindIndex(l) + + if match != nil { + start := Loc{charpos + util.RunePos(l, match[0]), i} + end := Loc{charpos + util.RunePos(l, match[1]), i} + return [2]Loc{start, end}, true + } + } + return [2]Loc{}, false +} + +func (b *Buffer) findUp(r *regexp.Regexp, start, end Loc) ([2]Loc, bool) { + start.Y = util.Clamp(start.Y, 0, b.LinesNum()-1) + + for i := start.Y; i >= end.Y; i-- { + l := b.LineBytes(i) + + if i == start.Y { + nchars := utf8.RuneCount(l) + start.X = util.Clamp(start.X, 0, nchars-1) + l = util.SliceStart(l, start.X) + } + + match := r.FindIndex(l) + + if match != nil { + start := Loc{util.RunePos(l, match[0]), i} + end := Loc{util.RunePos(l, match[1]), i} + return [2]Loc{start, end}, true + } + } + return [2]Loc{}, false +} + +// FindNext finds the next occurrence of a given string in the buffer +// It returns the start and end location of the match (if found) and +// a boolean indicating if it was found +// May also return an error if the search regex is invalid +func (b *Buffer) FindNext(s string, from Loc, down bool) ([2]Loc, bool, error) { + if s == "" { + return [2]Loc{}, false, nil + } + + var r *regexp.Regexp + var err error + if b.Settings["ignorecase"].(bool) { + r, err = regexp.Compile("(?i)" + s) + } else { + r, err = regexp.Compile(s) + } + + if err != nil { + return [2]Loc{}, false, err + } + + found := false + var l [2]Loc + if down { + l, found = b.findDown(r, from, b.End()) + if !found { + l, found = b.findDown(r, b.Start(), from) + } + } else { + l, found = b.findUp(r, from, b.Start()) + if !found { + l, found = b.findUp(r, b.End(), from) + } + } + return l, found, nil +} diff --git a/cmd/micro/display/window.go b/cmd/micro/display/window.go index a188b203..5aec83b9 100644 --- a/cmd/micro/display/window.go +++ b/cmd/micro/display/window.go @@ -317,7 +317,7 @@ func (w *BufWindow) getStyle(style tcell.Style, bloc buffer.Loc, r rune) (tcell. } func (w *BufWindow) showCursor(x, y int, main bool) { - if !main { + if main { screen.Screen.ShowCursor(x, y) } else { r, _, _, _ := screen.Screen.GetContent(x, y) @@ -421,8 +421,8 @@ func (w *BufWindow) displayBuffer() { if showcursor { for _, c := range cursors { - if c.X == bloc.X && c.Y == bloc.Y { - w.showCursor(w.X+vloc.X, w.Y+vloc.Y, true) + if c.X == bloc.X && c.Y == bloc.Y && !c.HasSelection() { + w.showCursor(w.X+vloc.X, w.Y+vloc.Y, c.Num == 0) } } } @@ -495,8 +495,8 @@ func (w *BufWindow) displayBuffer() { } for _, c := range cursors { - if c.X == bloc.X && c.Y == bloc.Y { - w.showCursor(w.X+vloc.X, w.Y+vloc.Y, true) + if c.X == bloc.X && c.Y == bloc.Y && !c.HasSelection() { + w.showCursor(w.X+vloc.X, w.Y+vloc.Y, c.Num == 0) } } diff --git a/cmd/micro/info/infobuffer.go b/cmd/micro/info/infobuffer.go index 6e670305..21b1aee5 100644 --- a/cmd/micro/info/infobuffer.go +++ b/cmd/micro/info/infobuffer.go @@ -27,8 +27,10 @@ type InfoBuf struct { GutterMessage bool PromptCallback func(resp string, canceled bool) + EventCallback func(resp string) } +// NewBuffer returns a new infobuffer func NewBuffer() *InfoBuf { ib := new(InfoBuf) ib.History = make(map[string][]string) @@ -62,7 +64,11 @@ func (i *InfoBuf) Error(msg ...interface{}) { // TODO: add to log? } -func (i *InfoBuf) Prompt(prompt string, msg string, callback func(string, bool)) { +// Prompt starts a prompt for the user, it takes a prompt, a possibly partially filled in msg +// and callbacks executed when the user executes an event and when the user finishes the prompt +// The eventcb passes the current user response as the argument and donecb passes the user's message +// and a boolean indicating if the prompt was canceled +func (i *InfoBuf) Prompt(prompt string, msg string, eventcb func(string), donecb func(string, bool)) { // If we get another prompt mid-prompt we cancel the one getting overwritten if i.HasPrompt { i.DonePrompt(true) @@ -71,21 +77,27 @@ func (i *InfoBuf) Prompt(prompt string, msg string, callback func(string, bool)) i.Msg = prompt i.HasPrompt = true i.HasMessage, i.HasError = false, false - i.PromptCallback = callback + i.PromptCallback = donecb + i.EventCallback = eventcb i.Buffer.Insert(i.Buffer.Start(), msg) } +// DonePrompt finishes the current prompt and indicates whether or not it was canceled func (i *InfoBuf) DonePrompt(canceled bool) { i.HasPrompt = false - if canceled { - i.PromptCallback("", true) - } else { - i.PromptCallback(strings.TrimSpace(string(i.LineBytes(0))), false) + if i.PromptCallback != nil { + if canceled { + i.PromptCallback("", true) + } else { + i.PromptCallback(strings.TrimSpace(string(i.LineBytes(0))), false) + } } + i.PromptCallback = nil + i.EventCallback = nil i.Replace(i.Start(), i.End(), "") } -// Reset resets the messenger's cursor, message and response +// Reset resets the infobuffer's msg and info func (i *InfoBuf) Reset() { i.Msg = "" i.HasPrompt, i.HasMessage, i.HasError = false, false, false diff --git a/cmd/micro/util/util.go b/cmd/micro/util/util.go index 4d4d97ab..f64305a9 100644 --- a/cmd/micro/util/util.go +++ b/cmd/micro/util/util.go @@ -188,6 +188,12 @@ func IsStrWhitespace(str string) bool { return true } +// RunePos returns the rune index of a given byte index +// Make sure the byte index is not between code points +func RunePos(b []byte, i int) int { + return utf8.RuneCount(b[:i]) +} + // TODO: consider changing because of snap segfault // ReplaceHome takes a path as input and replaces ~ at the start of the path with the user's // home directory. Does nothing if the path does not start with '~'. @@ -302,3 +308,12 @@ func GetCharPosInLine(b []byte, visualPos int, tabsize int) int { return i } + +func Clamp(val, min, max int) int { + if val < min { + val = min + } else if val > max { + val = max + } + return val +} From 6cf09f9843670241980828059dc71ce3e4473be2 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 3 Jan 2019 15:35:24 -0500 Subject: [PATCH 042/231] Find next and prev --- cmd/micro/action/actions.go | 48 ++++++++++++++++++++++++++++++++-- cmd/micro/action/bufhandler.go | 3 +++ 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 6afa78ac..c8a5f9b1 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -1,7 +1,6 @@ package action import ( - "log" "os" "strings" "time" @@ -562,6 +561,7 @@ func (h *BufHandler) SaveAs() bool { // Find opens a prompt and searches forward for the input func (h *BufHandler) Find() bool { InfoBar.Prompt("Find: ", "", func(resp string) { + // Event callback match, found, _ := h.Buf.FindNext(resp, h.Cursor.Loc, true) if found { h.Cursor.SetSelectionStart(match[0]) @@ -569,10 +569,10 @@ func (h *BufHandler) Find() bool { h.Cursor.OrigSelection[0] = h.Cursor.CurSelection[0] h.Cursor.OrigSelection[1] = h.Cursor.CurSelection[1] } else { - log.Println("RESET") h.Cursor.ResetSelection() } }, func(resp string, canceled bool) { + // Finished callback if !canceled { match, found, err := h.Buf.FindNext(resp, h.Cursor.Loc, true) if err != nil { @@ -584,8 +584,10 @@ func (h *BufHandler) Find() bool { h.Cursor.OrigSelection[0] = h.Cursor.CurSelection[0] h.Cursor.OrigSelection[1] = h.Cursor.CurSelection[1] h.Cursor.Loc = h.Cursor.CurSelection[1] + h.lastSearch = resp } else { h.Cursor.ResetSelection() + InfoBar.Message("No matches found") } } else { h.Cursor.ResetSelection() @@ -597,11 +599,53 @@ func (h *BufHandler) Find() bool { // FindNext searches forwards for the last used search term func (h *BufHandler) FindNext() bool { + // If the cursor is at the start of a selection and we search we want + // to search from the end of the selection in the case that + // the selection is a search result in which case we wouldn't move at + // at all which would be bad + searchLoc := h.Cursor.Loc + if h.Cursor.HasSelection() { + searchLoc = h.Cursor.CurSelection[1] + } + match, found, err := h.Buf.FindNext(h.lastSearch, searchLoc, true) + if err != nil { + InfoBar.Error(err) + } + if found { + h.Cursor.SetSelectionStart(match[0]) + h.Cursor.SetSelectionEnd(match[1]) + h.Cursor.OrigSelection[0] = h.Cursor.CurSelection[0] + h.Cursor.OrigSelection[1] = h.Cursor.CurSelection[1] + h.Cursor.Loc = h.Cursor.CurSelection[1] + } else { + h.Cursor.ResetSelection() + } return true } // FindPrevious searches backwards for the last used search term func (h *BufHandler) FindPrevious() bool { + // If the cursor is at the end of a selection and we search we want + // to search from the beginning of the selection in the case that + // the selection is a search result in which case we wouldn't move at + // at all which would be bad + searchLoc := h.Cursor.Loc + if h.Cursor.HasSelection() { + searchLoc = h.Cursor.CurSelection[0] + } + match, found, err := h.Buf.FindNext(h.lastSearch, searchLoc, false) + if err != nil { + InfoBar.Error(err) + } + if found { + h.Cursor.SetSelectionStart(match[0]) + h.Cursor.SetSelectionEnd(match[1]) + h.Cursor.OrigSelection[0] = h.Cursor.CurSelection[0] + h.Cursor.OrigSelection[1] = h.Cursor.CurSelection[1] + h.Cursor.Loc = h.Cursor.CurSelection[1] + } else { + h.Cursor.ResetSelection() + } return true } diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index b602ab78..8fadd20b 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -87,6 +87,9 @@ type BufHandler struct { doubleClick bool // Same here, just to keep track for mouse move events tripleClick bool + + // Last search stores the last successful search for FindNext and FindPrev + lastSearch string } func NewBufHandler(buf *buffer.Buffer, win display.Window) *BufHandler { From 4b5059941126fbdb7ddd9a17d8fc721ab4b728db Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 3 Jan 2019 15:59:26 -0500 Subject: [PATCH 043/231] Complete multicursor support --- cmd/micro/action/actions.go | 81 ++++++++++++++++++++++++++++++++++++- 1 file changed, 79 insertions(+), 2 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index c8a5f9b1..a1b40191 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -651,8 +651,8 @@ func (h *BufHandler) FindPrevious() bool { // Undo undoes the last action func (h *BufHandler) Undo() bool { - // TODO: clear cursors and message h.Buf.Undo() + InfoBar.Message("Undid action") return true } @@ -660,6 +660,7 @@ func (h *BufHandler) Undo() bool { func (h *BufHandler) Redo() bool { // TODO: clear cursors and message h.Buf.Redo() + InfoBar.Message("Redid action") return true } @@ -1051,11 +1052,67 @@ func (h *BufHandler) PlayMacro() bool { // SpawnMultiCursor creates a new multiple cursor at the next occurrence of the current selection or current word func (h *BufHandler) SpawnMultiCursor() bool { + spawner := h.Buf.GetCursor(h.Buf.NumCursors() - 1) + if !spawner.HasSelection() { + spawner.SelectWord() + } else { + sel := spawner.GetSelection() + searchStart := spawner.CurSelection[1] + + match, found, err := h.Buf.FindNext(string(sel), searchStart, true) + if err != nil { + InfoBar.Error(err) + } + if found { + c := buffer.NewCursor(h.Buf, buffer.Loc{}) + c.SetSelectionStart(match[0]) + c.SetSelectionEnd(match[1]) + c.OrigSelection[0] = c.CurSelection[0] + c.OrigSelection[1] = c.CurSelection[1] + c.Loc = c.CurSelection[1] + + h.Buf.AddCursor(c) + h.Buf.MergeCursors() + h.Win.Relocate() + } else { + InfoBar.Message("No matches found") + } + } + return false } // SpawnMultiCursorSelect adds a cursor at the beginning of each line of a selection func (h *BufHandler) SpawnMultiCursorSelect() bool { + // Avoid cases where multiple cursors already exist, that would create problems + if h.Buf.NumCursors() > 1 { + return false + } + + var startLine int + var endLine int + + a, b := h.Cursor.CurSelection[0].Y, h.Cursor.CurSelection[1].Y + if a > b { + startLine, endLine = b, a + } else { + startLine, endLine = a, b + } + + if h.Cursor.HasSelection() { + h.Cursor.ResetSelection() + h.Cursor.GotoLoc(buffer.Loc{0, startLine}) + + for i := startLine; i <= endLine; i++ { + c := buffer.NewCursor(h.Buf, buffer.Loc{0, i}) + c.StoreVisualX() + h.Buf.AddCursor(c) + } + h.Buf.MergeCursors() + } else { + return false + } + InfoBar.Message("Added cursors from selection") return false } @@ -1063,7 +1120,7 @@ func (h *BufHandler) SpawnMultiCursorSelect() bool { func (h *BufHandler) MouseMultiCursor(e *tcell.EventMouse) bool { b := h.Buf mx, my := e.Position() - mouseLoc := h.Win.GetMouseLoc(buffer.Loc{mx, my}) + mouseLoc := h.Win.GetMouseLoc(buffer.Loc{X: mx, Y: my}) c := buffer.NewCursor(b, mouseLoc) b.AddCursor(c) b.MergeCursors() @@ -1073,6 +1130,26 @@ func (h *BufHandler) MouseMultiCursor(e *tcell.EventMouse) bool { // SkipMultiCursor moves the current multiple cursor to the next available position func (h *BufHandler) SkipMultiCursor() bool { + lastC := h.Buf.GetCursor(h.Buf.NumCursors() - 1) + sel := lastC.GetSelection() + searchStart := lastC.CurSelection[1] + + match, found, err := h.Buf.FindNext(string(sel), searchStart, true) + if err != nil { + InfoBar.Error(err) + } + if found { + lastC.SetSelectionStart(match[0]) + lastC.SetSelectionEnd(match[1]) + lastC.OrigSelection[0] = lastC.CurSelection[0] + lastC.OrigSelection[1] = lastC.CurSelection[1] + lastC.Loc = lastC.CurSelection[1] + + h.Buf.MergeCursors() + h.Win.Relocate() + } else { + InfoBar.Message("No matches found") + } return false } From d4c410f3dcbcf0b5842622b5784ba15c58d2bb7c Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 3 Jan 2019 17:07:28 -0500 Subject: [PATCH 044/231] Infobar history --- cmd/micro/action/actions.go | 6 +- cmd/micro/action/command.go | 61 +++++++++---------- .../infocomplete.go} | 30 ++++----- cmd/micro/action/infohandler.go | 23 ++++--- cmd/micro/info/history.go | 18 ++++++ cmd/micro/info/infobuffer.go | 25 +++++++- 6 files changed, 100 insertions(+), 63 deletions(-) rename cmd/micro/{info/autocomplete.go => action/infocomplete.go} (94%) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index a1b40191..4aed393f 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -560,7 +560,7 @@ func (h *BufHandler) SaveAs() bool { // Find opens a prompt and searches forward for the input func (h *BufHandler) Find() bool { - InfoBar.Prompt("Find: ", "", func(resp string) { + InfoBar.Prompt("Find: ", "", "Find", func(resp string) { // Event callback match, found, _ := h.Buf.FindNext(resp, h.Cursor.Loc, true) if found { @@ -802,7 +802,7 @@ func (h *BufHandler) SelectAll() bool { // OpenFile opens a new file in the buffer func (h *BufHandler) OpenFile() bool { - InfoBar.Prompt("> ", "open ", nil, func(resp string, canceled bool) { + InfoBar.Prompt("> ", "open ", "Open", nil, func(resp string, canceled bool) { if !canceled { HandleCommand(resp) } @@ -966,7 +966,7 @@ func (h *BufHandler) ShellMode() bool { // CommandMode lets the user enter a command func (h *BufHandler) CommandMode() bool { - InfoBar.Prompt("> ", "", nil, func(resp string, canceled bool) { + InfoBar.Prompt("> ", "", "Command", nil, func(resp string, canceled bool) { if !canceled { HandleCommand(resp) } diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 644fe675..6ca60156 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -3,7 +3,6 @@ package action import ( "os" - "github.com/zyedidia/micro/cmd/micro/info" "github.com/zyedidia/micro/cmd/micro/shellwords" "github.com/zyedidia/micro/cmd/micro/util" ) @@ -11,13 +10,13 @@ import ( // A Command contains an action (a function to call) as well as information about how to autocomplete the command type Command struct { action func([]string) - completions []info.Completion + completions []Completion } // A StrCommand is similar to a command but keeps the name of the action type StrCommand struct { action string - completions []info.Completion + completions []Completion } var commands map[string]Command @@ -71,7 +70,7 @@ func parseCommands(userCommands map[string]StrCommand) { // MakeCommand is a function to easily create new commands // This can be called by plugins in Lua so that plugins can define their own commands -func MakeCommand(name, function string, completions ...info.Completion) { +func MakeCommand(name, function string, completions ...Completion) { action := commandActions[function] // if _, ok := commandActions[function]; !ok { // If the user seems to be binding a function that doesn't exist @@ -85,32 +84,32 @@ func MakeCommand(name, function string, completions ...info.Completion) { // DefaultCommands returns a map containing micro's default commands func DefaultCommands() map[string]StrCommand { return map[string]StrCommand{ - "set": {"Set", []info.Completion{info.OptionCompletion, info.OptionValueCompletion}}, - "setlocal": {"SetLocal", []info.Completion{info.OptionCompletion, info.OptionValueCompletion}}, - "show": {"Show", []info.Completion{info.OptionCompletion, info.NoCompletion}}, - "showkey": {"ShowKey", []info.Completion{info.NoCompletion}}, - "bind": {"Bind", []info.Completion{info.NoCompletion}}, - "run": {"Run", []info.Completion{info.NoCompletion}}, - "quit": {"Quit", []info.Completion{info.NoCompletion}}, - "save": {"Save", []info.Completion{info.NoCompletion}}, - "replace": {"Replace", []info.Completion{info.NoCompletion}}, - "replaceall": {"ReplaceAll", []info.Completion{info.NoCompletion}}, - "vsplit": {"VSplit", []info.Completion{info.FileCompletion, info.NoCompletion}}, - "hsplit": {"HSplit", []info.Completion{info.FileCompletion, info.NoCompletion}}, - "tab": {"Tab", []info.Completion{info.FileCompletion, info.NoCompletion}}, - "help": {"Help", []info.Completion{info.HelpCompletion, info.NoCompletion}}, - "eval": {"Eval", []info.Completion{info.NoCompletion}}, - "log": {"ToggleLog", []info.Completion{info.NoCompletion}}, - "plugin": {"Plugin", []info.Completion{info.PluginCmdCompletion, info.PluginNameCompletion}}, - "reload": {"Reload", []info.Completion{info.NoCompletion}}, - "cd": {"Cd", []info.Completion{info.FileCompletion}}, - "pwd": {"Pwd", []info.Completion{info.NoCompletion}}, - "open": {"Open", []info.Completion{info.FileCompletion}}, - "tabswitch": {"TabSwitch", []info.Completion{info.NoCompletion}}, - "term": {"Term", []info.Completion{info.NoCompletion}}, - "memusage": {"MemUsage", []info.Completion{info.NoCompletion}}, - "retab": {"Retab", []info.Completion{info.NoCompletion}}, - "raw": {"Raw", []info.Completion{info.NoCompletion}}, + "set": {"Set", []Completion{OptionCompletion, OptionValueCompletion}}, + "setlocal": {"SetLocal", []Completion{OptionCompletion, OptionValueCompletion}}, + "show": {"Show", []Completion{OptionCompletion, NoCompletion}}, + "showkey": {"ShowKey", []Completion{NoCompletion}}, + "bind": {"Bind", []Completion{NoCompletion}}, + "run": {"Run", []Completion{NoCompletion}}, + "quit": {"Quit", []Completion{NoCompletion}}, + "save": {"Save", []Completion{NoCompletion}}, + "replace": {"Replace", []Completion{NoCompletion}}, + "replaceall": {"ReplaceAll", []Completion{NoCompletion}}, + "vsplit": {"VSplit", []Completion{FileCompletion, NoCompletion}}, + "hsplit": {"HSplit", []Completion{FileCompletion, NoCompletion}}, + "tab": {"Tab", []Completion{FileCompletion, NoCompletion}}, + "help": {"Help", []Completion{HelpCompletion, NoCompletion}}, + "eval": {"Eval", []Completion{NoCompletion}}, + "log": {"ToggleLog", []Completion{NoCompletion}}, + "plugin": {"Plugin", []Completion{PluginCmdCompletion, PluginNameCompletion}}, + "reload": {"Reload", []Completion{NoCompletion}}, + "cd": {"Cd", []Completion{FileCompletion}}, + "pwd": {"Pwd", []Completion{NoCompletion}}, + "open": {"Open", []Completion{FileCompletion}}, + "tabswitch": {"TabSwitch", []Completion{NoCompletion}}, + "term": {"Term", []Completion{NoCompletion}}, + "memusage": {"MemUsage", []Completion{NoCompletion}}, + "retab": {"Retab", []Completion{NoCompletion}}, + "raw": {"Raw", []Completion{NoCompletion}}, } } @@ -119,7 +118,7 @@ func DefaultCommands() map[string]StrCommand { // enter func CommandEditAction(prompt string) BufKeyAction { return func(h *BufHandler) bool { - InfoBar.Prompt("> ", prompt, nil, func(resp string, canceled bool) { + InfoBar.Prompt("> ", prompt, "Command", nil, func(resp string, canceled bool) { if !canceled { HandleCommand(resp) } diff --git a/cmd/micro/info/autocomplete.go b/cmd/micro/action/infocomplete.go similarity index 94% rename from cmd/micro/info/autocomplete.go rename to cmd/micro/action/infocomplete.go index 59d5056e..f25a3a9b 100644 --- a/cmd/micro/info/autocomplete.go +++ b/cmd/micro/action/infocomplete.go @@ -1,4 +1,4 @@ -package info +package action import ( "io/ioutil" @@ -76,20 +76,20 @@ func FileComplete(input string) (string, []string) { } // CommandComplete autocompletes commands -// func CommandComplete(input string) (string, []string) { -// var suggestions []string -// for cmd := range commands { -// if strings.HasPrefix(cmd, input) { -// suggestions = append(suggestions, cmd) -// } -// } -// -// var chosen string -// if len(suggestions) == 1 { -// chosen = suggestions[0] -// } -// return chosen, suggestions -// } +func CommandComplete(input string) (string, []string) { + var suggestions []string + for cmd := range commands { + if strings.HasPrefix(cmd, input) { + suggestions = append(suggestions, cmd) + } + } + + var chosen string + if len(suggestions) == 1 { + chosen = suggestions[0] + } + return chosen, suggestions +} // HelpComplete autocompletes help topics func HelpComplete(input string) (string, []string) { diff --git a/cmd/micro/action/infohandler.go b/cmd/micro/action/infohandler.go index c50247de..b2941ec7 100644 --- a/cmd/micro/action/infohandler.go +++ b/cmd/micro/action/infohandler.go @@ -35,6 +35,15 @@ func (h *InfoHandler) HandleEvent(event tcell.Event) { done := h.DoKeyEvent(ke) if !done && e.Key() == tcell.KeyRune { h.DoRuneInsert(e.Rune()) + done = true + } + if done && h.HasPrompt { + resp := strings.TrimSpace(string(h.LineBytes(0))) + hist := h.History[h.PromptType] + hist[h.HistoryNum] = resp + if h.EventCallback != nil { + h.EventCallback(resp) + } } case *tcell.EventMouse: h.BufHandler.HandleEvent(event) @@ -61,19 +70,9 @@ func (h *InfoHandler) DoKeyEvent(e KeyEvent) bool { done = action(h.BufHandler) } } - if done && h.EventCallback != nil { - h.EventCallback(strings.TrimSpace(string(h.LineBytes(0)))) - } return done } -func (h *InfoHandler) DoRuneInsert(r rune) { - h.BufHandler.DoRuneInsert(r) - if h.EventCallback != nil { - h.EventCallback(strings.TrimSpace(string(h.LineBytes(0)))) - } -} - // InfoNones is a list of actions that should have no effect when executed // by an infohandler var InfoNones = []string{ @@ -136,10 +135,10 @@ var InfoOverrides = map[string]InfoKeyAction{ } func (h *InfoHandler) CursorUp() { - // TODO: history + h.UpHistory(h.History[h.PromptType]) } func (h *InfoHandler) CursorDown() { - // TODO: history + h.DownHistory(h.History[h.PromptType]) } func (h *InfoHandler) InsertTab() { // TODO: autocomplete diff --git a/cmd/micro/info/history.go b/cmd/micro/info/history.go index aaa006db..18e6bbba 100644 --- a/cmd/micro/info/history.go +++ b/cmd/micro/info/history.go @@ -59,3 +59,21 @@ func (i *InfoBuf) SaveHistory() { } } } + +// UpHistory fetches the previous item in the history +func (i *InfoBuf) UpHistory(history []string) { + if i.HistoryNum > 0 { + i.HistoryNum-- + i.Replace(i.Start(), i.End(), history[i.HistoryNum]) + i.Buffer.GetActiveCursor().GotoLoc(i.End()) + } +} + +// DownHistory fetches the next item in the history +func (i *InfoBuf) DownHistory(history []string) { + if i.HistoryNum < len(history)-1 { + i.HistoryNum++ + i.Replace(i.Start(), i.End(), history[i.HistoryNum]) + i.Buffer.GetActiveCursor().GotoLoc(i.End()) + } +} diff --git a/cmd/micro/info/infobuffer.go b/cmd/micro/info/infobuffer.go index 21b1aee5..91604e43 100644 --- a/cmd/micro/info/infobuffer.go +++ b/cmd/micro/info/infobuffer.go @@ -16,6 +16,8 @@ type InfoBuf struct { HasMessage bool HasError bool + PromptType string + Msg string // This map stores the history for all the different kinds of uses Prompt has @@ -36,10 +38,16 @@ func NewBuffer() *InfoBuf { ib.History = make(map[string][]string) ib.Buffer = buffer.NewBufferFromString("", "infobar", buffer.BTInfo) + ib.LoadHistory() return ib } +// Close performs any cleanup necessary when shutting down the infobuffer +func (i *InfoBuf) Close() { + i.SaveHistory() +} + // Message sends a message to the user func (i *InfoBuf) Message(msg ...interface{}) { // only display a new message if there isn't an active prompt @@ -68,12 +76,20 @@ func (i *InfoBuf) Error(msg ...interface{}) { // and callbacks executed when the user executes an event and when the user finishes the prompt // The eventcb passes the current user response as the argument and donecb passes the user's message // and a boolean indicating if the prompt was canceled -func (i *InfoBuf) Prompt(prompt string, msg string, eventcb func(string), donecb func(string, bool)) { +func (i *InfoBuf) Prompt(prompt string, msg string, ptype string, eventcb func(string), donecb func(string, bool)) { // If we get another prompt mid-prompt we cancel the one getting overwritten if i.HasPrompt { i.DonePrompt(true) } + if _, ok := i.History[ptype]; !ok { + i.History[ptype] = []string{""} + } else { + i.History[ptype] = append(i.History[ptype], "") + } + i.HistoryNum = len(i.History[ptype]) - 1 + + i.PromptType = ptype i.Msg = prompt i.HasPrompt = true i.HasMessage, i.HasError = false, false @@ -88,8 +104,13 @@ func (i *InfoBuf) DonePrompt(canceled bool) { if i.PromptCallback != nil { if canceled { i.PromptCallback("", true) + h := i.History[i.PromptType] + i.History[i.PromptType] = h[:len(h)-1] } else { - i.PromptCallback(strings.TrimSpace(string(i.LineBytes(0))), false) + resp := strings.TrimSpace(string(i.LineBytes(0))) + i.PromptCallback(resp, false) + h := i.History[i.PromptType] + h[len(h)-1] = resp } } i.PromptCallback = nil From 541daf212eca480b0ea82504d0e9343ae1847617 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 4 Jan 2019 17:40:56 -0500 Subject: [PATCH 045/231] Start working on splits --- cmd/micro/action/bufhandler.go | 15 ++ cmd/micro/action/command.go | 15 ++ cmd/micro/action/editpane.go | 12 ++ cmd/micro/action/tab.go | 35 ++++ cmd/micro/display/infowindow.go | 4 + cmd/micro/display/window.go | 8 + cmd/micro/micro.go | 9 +- cmd/micro/views/splits.go | 354 ++++++++++++++++++++++++++++++++ cmd/micro/views/splits_test.go | 16 ++ 9 files changed, 465 insertions(+), 3 deletions(-) create mode 100644 cmd/micro/action/tab.go create mode 100644 cmd/micro/views/splits.go create mode 100644 cmd/micro/views/splits_test.go diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 8fadd20b..11b1884f 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -90,6 +90,8 @@ type BufHandler struct { // Last search stores the last successful search for FindNext and FindPrev lastSearch string + + splitID uint64 } func NewBufHandler(buf *buffer.Buffer, win display.Window) *BufHandler { @@ -212,6 +214,19 @@ func (h *BufHandler) DoRuneInsert(r rune) { } } +func (h *BufHandler) vsplit(buf *buffer.Buffer) { + e := NewBufEditPane(0, 0, 0, 0, buf) + e.splitID = MainTab.GetNode(h.splitID).VSplit(h.Buf.Settings["splitright"].(bool)) + MainTab.Panes = append(MainTab.Panes, e) + MainTab.Resize() +} +func (h *BufHandler) hsplit(buf *buffer.Buffer) { + e := NewBufEditPane(0, 0, 0, 0, buf) + e.splitID = MainTab.GetNode(h.splitID).HSplit(h.Buf.Settings["splitbottom"].(bool)) + MainTab.Panes = append(MainTab.Panes, e) + MainTab.Resize() +} + // BufKeyActions contains the list of all possible key actions the bufhandler could execute var BufKeyActions = map[string]BufKeyAction{ "CursorUp": (*BufHandler).CursorUp, diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 6ca60156..96ea957e 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -3,6 +3,7 @@ package action import ( "os" + "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/shellwords" "github.com/zyedidia/micro/cmd/micro/util" ) @@ -198,11 +199,25 @@ func Help(args []string) { // VSplit opens a vertical split with file given in the first argument // If no file is given, it opens an empty buffer in a new split func VSplit(args []string) { + buf, err := buffer.NewBufferFromFile(args[0], buffer.BTDefault) + if err != nil { + InfoBar.Error(err) + return + } + + MainTab.CurPane().vsplit(buf) } // HSplit opens a horizontal split with file given in the first argument // If no file is given, it opens an empty buffer in a new split func HSplit(args []string) { + buf, err := buffer.NewBufferFromFile(args[0], buffer.BTDefault) + if err != nil { + InfoBar.Error(err) + return + } + + MainTab.CurPane().hsplit(buf) } // Eval evaluates a lua expression diff --git a/cmd/micro/action/editpane.go b/cmd/micro/action/editpane.go index 92cc929c..a017ec2d 100644 --- a/cmd/micro/action/editpane.go +++ b/cmd/micro/action/editpane.go @@ -4,6 +4,7 @@ import ( "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/display" "github.com/zyedidia/micro/cmd/micro/info" + "github.com/zyedidia/micro/cmd/micro/views" ) type EditPane struct { @@ -27,6 +28,17 @@ func NewBufEditPane(x, y, width, height int, b *buffer.Buffer) *EditPane { return e } +func NewTabPane(width, height int, b *buffer.Buffer) *TabPane { + t := new(TabPane) + t.Node = views.NewRoot(0, 0, width, height) + + e := NewBufEditPane(0, 0, width, height, b) + e.splitID = t.ID() + + t.Panes = append(t.Panes, e) + return t +} + func NewInfoBar() *InfoPane { e := new(InfoPane) ib := info.NewBuffer() diff --git a/cmd/micro/action/tab.go b/cmd/micro/action/tab.go new file mode 100644 index 00000000..4a8c4724 --- /dev/null +++ b/cmd/micro/action/tab.go @@ -0,0 +1,35 @@ +package action + +import ( + "log" + + "github.com/zyedidia/micro/cmd/micro/views" + "github.com/zyedidia/tcell" +) + +var MainTab *TabPane + +type TabPane struct { + *views.Node + Panes []*EditPane + active int +} + +func (t *TabPane) HandleEvent(event tcell.Event) { + t.Panes[t.active].HandleEvent(event) +} + +func (t *TabPane) Resize() { + for _, p := range t.Panes { + log.Println(p.splitID) + v := t.GetNode(p.splitID).GetView() + pv := p.GetView() + pv.X, pv.Y = v.X, v.Y + p.SetView(pv) + p.Resize(v.W, v.H) + } +} + +func (t *TabPane) CurPane() *EditPane { + return t.Panes[t.active] +} diff --git a/cmd/micro/display/infowindow.go b/cmd/micro/display/infowindow.go index 499b4401..73f334d2 100644 --- a/cmd/micro/display/infowindow.go +++ b/cmd/micro/display/infowindow.go @@ -48,6 +48,10 @@ func NewInfoWindow(b *info.InfoBuf) *InfoWindow { return iw } +func (i *InfoWindow) Resize(w, h int) { + i.width = w +} + // func (i *InfoWindow) YesNoPrompt() (bool, bool) { // for { // i.Clear() diff --git a/cmd/micro/display/window.go b/cmd/micro/display/window.go index 5aec83b9..4b0ed338 100644 --- a/cmd/micro/display/window.go +++ b/cmd/micro/display/window.go @@ -1,6 +1,7 @@ package display import ( + "log" "strconv" "unicode/utf8" @@ -29,6 +30,7 @@ type Window interface { GetView() *View SetView(v *View) GetMouseLoc(vloc buffer.Loc) buffer.Loc + Resize(w, h int) } // The BufWindow provides a way of displaying a certain section @@ -65,6 +67,11 @@ func (v *View) SetView(view *View) { v = view } +func (w *BufWindow) Resize(width, height int) { + w.Width, w.Height = width, height + w.lineHeight = make([]int, height) +} + func (w *BufWindow) getStartInfo(n, lineN int) ([]byte, int, int, *tcell.Style) { tabsize := util.IntOpt(w.Buf.Settings["tabsize"]) width := 0 @@ -431,6 +438,7 @@ func (w *BufWindow) displayBuffer() { nColsBeforeStart-- } + log.Println(len(w.lineHeight), vloc.Y) w.lineHeight[vloc.Y] = bloc.Y totalwidth := w.StartCol - nColsBeforeStart diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 468b63d9..8fe6923d 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -187,7 +187,8 @@ func main() { b := LoadInput()[0] width, height := screen.Screen.Size() - ep := action.NewBufEditPane(0, 0, width, height-1, b) + + action.MainTab = action.NewTabPane(width, height-1, b) action.InitGlobals() @@ -205,7 +206,9 @@ func main() { // Display everything screen.Screen.Fill(' ', config.DefStyle) screen.Screen.HideCursor() - ep.Display() + for _, ep := range action.MainTab.Panes { + ep.Display() + } action.InfoBar.Display() screen.Screen.Show() @@ -220,7 +223,7 @@ func main() { if action.InfoBar.HasPrompt { action.InfoBar.HandleEvent(event) } else { - ep.HandleEvent(event) + action.MainTab.Panes[0].HandleEvent(event) } } } diff --git a/cmd/micro/views/splits.go b/cmd/micro/views/splits.go new file mode 100644 index 00000000..5ba50434 --- /dev/null +++ b/cmd/micro/views/splits.go @@ -0,0 +1,354 @@ +package views + +import ( + "fmt" + "strings" +) + +type SplitType uint8 + +const ( + STVert = 0 + STHoriz = 1 + STUndef = 2 +) + +var idcounter uint64 + +func NewID() uint64 { + idcounter++ + return idcounter +} + +type View struct { + X, Y int + W, H int +} + +type Node struct { + View + + kind SplitType + + parent *Node + children []*Node + + // Nodes can be marked as non resizable if they shouldn't be rescaled + // when the terminal window is resized or when a new split is added + // Only the splits on the edges of the screen can be marked as non resizable + canResize bool + // A node may also be marked with proportional scaling. This means that when + // the window is resized the split maintains its proportions + propScale bool + + id uint64 +} + +func (n *Node) ID() uint64 { + if n.IsLeaf() { + return n.id + } + return 0 +} +func (n *Node) CanResize() bool { + return n.canResize +} +func (n *Node) PropScale() bool { + return n.propScale +} +func (n *Node) SetResize(b bool) { + n.canResize = b +} +func (n *Node) SetPropScale(b bool) { + n.propScale = b +} +func (n *Node) GetView() View { + return n.View +} +func (n *Node) SetView(v View) { + n.X, n.Y, n.W, n.H = v.X, v.Y, v.W, v.H +} + +func (n *Node) GetNode(id uint64) *Node { + if n.id == id && n.IsLeaf() { + return n + } + for _, c := range n.children { + if c.id == id && c.IsLeaf() { + return c + } + gc := c.GetNode(id) + if gc != nil { + return gc + } + } + return nil +} + +func NewNode(kind SplitType, x, y, w, h int, parent *Node, id uint64) *Node { + n := new(Node) + n.kind = kind + n.canResize = true + n.propScale = true + n.X, n.Y, n.W, n.H = x, y, w, h + n.children = make([]*Node, 0) + n.parent = parent + n.id = id + + return n +} + +func NewRoot(x, y, w, h int) *Node { + n1 := NewNode(STUndef, x, y, w, h, nil, NewID()) + + return n1 +} + +func (n *Node) IsLeaf() bool { + return len(n.children) == 0 +} + +func (n *Node) vResizeSplit(i int, size int) bool { + if i < 0 || i >= len(n.children)-1 { + return false + } + v1, v2 := n.children[i].GetView(), n.children[i+1].GetView() + toth := v1.H + v2.H + if size >= toth { + return false + } + v1.H, v2.H = size, toth-size + v2.Y = size + n.children[i].SetView(v1) + n.children[i+1].SetView(v2) + return true +} +func (n *Node) hResizeSplit(i int, size int) bool { + if i < 0 || i >= len(n.children)-1 { + return false + } + v1, v2 := n.children[i].GetView(), n.children[i+1].GetView() + totw := v1.W + v2.W + if size >= totw { + return false + } + v1.W, v2.W = size, totw-size + v2.X = size + n.children[i].SetView(v1) + n.children[i+1].SetView(v2) + return true +} + +func (n *Node) ResizeSplit(size int) bool { + ind := 0 + for i, c := range n.parent.children { + if c.id == n.id { + ind = i + } + } + if n.parent.kind == STVert { + return n.parent.vResizeSplit(ind, size) + } + return n.parent.hResizeSplit(ind, size) +} + +func (n *Node) vVSplit(right bool) uint64 { + ind := 0 + for i, c := range n.parent.children { + if c.id == n.id { + ind = i + } + } + return n.parent.hVSplit(ind, right) +} +func (n *Node) hHSplit(bottom bool) uint64 { + ind := 0 + for i, c := range n.parent.children { + if c.id == n.id { + ind = i + } + } + return n.parent.vHSplit(ind, bottom) +} +func (n *Node) vHSplit(i int, right bool) uint64 { + if n.IsLeaf() { + newid := NewID() + hn1 := NewNode(STHoriz, n.X, n.Y, n.W, n.H/2, n, n.id) + hn2 := NewNode(STHoriz, n.X, n.Y+hn1.H, n.W, n.H/2, n, newid) + if !right { + hn1.id, hn2.id = hn2.id, hn1.id + } + + n.children = append(n.children, hn1, hn2) + return newid + } else { + numr := 0 + numnr := 0 + nonrh := 0 + for _, c := range n.children { + view := c.GetView() + if !c.CanResize() { + nonrh += view.H + numnr++ + } else { + numr++ + } + } + + // if there are no resizable splits make them all resizable + if numr == 0 { + numr = numnr + } + + height := (n.H - nonrh) / (numr + 1) + + newid := NewID() + hn := NewNode(STHoriz, n.X, 0, n.W, height, n, newid) + n.children = append(n.children, nil) + inspos := i + if right { + inspos++ + } + copy(n.children[inspos+1:], n.children[inspos:]) + n.children[inspos] = hn + + y := 0 + for _, c := range n.children { + view := c.GetView() + if c.CanResize() { + view.H = height + view.Y = y + } else { + view.Y = y + } + y += view.H + c.SetView(view) + } + return newid + } +} +func (n *Node) hVSplit(i int, right bool) uint64 { + if n.IsLeaf() { + newid := NewID() + vn1 := NewNode(STVert, n.X, n.Y, n.W/2, n.H, n, n.id) + vn2 := NewNode(STVert, n.X+vn1.W, n.Y, n.W/2, n.H, n, newid) + if !right { + vn1.id, vn2.id = vn2.id, vn1.id + } + + n.children = append(n.children, vn1, vn2) + return newid + } else { + numr := 0 + numnr := 0 + nonrw := 0 + for _, c := range n.children { + view := c.GetView() + if !c.CanResize() { + nonrw += view.W + numnr++ + } else { + numr++ + } + } + + // if there are no resizable splits make them all resizable + if numr == 0 { + numr = numnr + } + + width := (n.W - nonrw) / (numr + 1) + + newid := NewID() + vn := NewNode(STVert, 0, n.Y, width, n.H, n, newid) + n.children = append(n.children, nil) + inspos := i + if right { + inspos++ + } + copy(n.children[inspos+1:], n.children[inspos:]) + n.children[inspos] = vn + + x := 0 + for _, c := range n.children { + view := c.GetView() + if c.CanResize() { + view.W = width + view.X = x + } else { + view.X = x + } + x += view.W + c.SetView(view) + } + return newid + } +} + +func (n *Node) HSplit(bottom bool) uint64 { + if !n.IsLeaf() { + return 0 + } + if n.kind == STUndef { + n.kind = STVert + } + if n.kind == STVert { + return n.vHSplit(0, bottom) + } + return n.hHSplit(bottom) +} + +func (n *Node) VSplit(right bool) uint64 { + if !n.IsLeaf() { + return 0 + } + if n.kind == STUndef { + n.kind = STHoriz + } + if n.kind == STVert { + return n.vVSplit(right) + } + return n.hVSplit(0, right) +} + +func (n *Node) Resize(w, h int) { + propW, propH := float64(w)/float64(n.W), float64(h)/float64(n.H) + x, y := n.X, n.Y + for _, c := range n.children { + cW := int(float64(c.W) * propW) + cH := int(float64(c.H) * propH) + c.Resize(cW, cH) + c.X = x + c.Y = y + if n.kind == STHoriz { + x += cW + } else { + y += cH + } + } + n.W, n.H = w, h +} + +func (n *Node) Unsplit() { + +} + +func (n *Node) String() string { + var strf func(n *Node, ident int) string + strf = func(n *Node, ident int) string { + marker := "|" + if n.kind == STHoriz { + marker = "-" + } + str := fmt.Sprint(strings.Repeat("\t", ident), marker, n.View, n.id) + if n.IsLeaf() { + str += "🍁" + } + str += "\n" + for _, c := range n.children { + str += strf(c, ident+1) + } + return str + } + return strf(n, 0) +} diff --git a/cmd/micro/views/splits_test.go b/cmd/micro/views/splits_test.go new file mode 100644 index 00000000..94f8a2b9 --- /dev/null +++ b/cmd/micro/views/splits_test.go @@ -0,0 +1,16 @@ +package views + +import ( + "fmt" + "testing" +) + +func TestHSplit(t *testing.T) { + root := NewRoot(0, 0, 80, 80) + n1 := root.VSplit(true) + root.GetNode(n1).VSplit(true) + root.GetNode(root.id).ResizeSplit(7) + root.Resize(120, 120) + + fmt.Println(root.String()) +} From 1ac4a8e7d3584c7d39e4962021bdc19df5ad9ddd Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 4 Jan 2019 18:08:11 -0500 Subject: [PATCH 046/231] Split improvements --- cmd/micro/action/bufhandler.go | 2 ++ cmd/micro/action/tab.go | 32 +++++++++++++++++++++++--- cmd/micro/display/infowindow.go | 7 +++--- cmd/micro/display/window.go | 40 ++++++++++++++++++++------------- cmd/micro/micro.go | 2 +- 5 files changed, 60 insertions(+), 23 deletions(-) diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 11b1884f..2c925fde 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -219,12 +219,14 @@ func (h *BufHandler) vsplit(buf *buffer.Buffer) { e.splitID = MainTab.GetNode(h.splitID).VSplit(h.Buf.Settings["splitright"].(bool)) MainTab.Panes = append(MainTab.Panes, e) MainTab.Resize() + MainTab.SetActive(len(MainTab.Panes) - 1) } func (h *BufHandler) hsplit(buf *buffer.Buffer) { e := NewBufEditPane(0, 0, 0, 0, buf) e.splitID = MainTab.GetNode(h.splitID).HSplit(h.Buf.Settings["splitbottom"].(bool)) MainTab.Panes = append(MainTab.Panes, e) MainTab.Resize() + MainTab.SetActive(len(MainTab.Panes) - 1) } // BufKeyActions contains the list of all possible key actions the bufhandler could execute diff --git a/cmd/micro/action/tab.go b/cmd/micro/action/tab.go index 4a8c4724..bb9e997f 100644 --- a/cmd/micro/action/tab.go +++ b/cmd/micro/action/tab.go @@ -1,8 +1,6 @@ package action import ( - "log" - "github.com/zyedidia/micro/cmd/micro/views" "github.com/zyedidia/tcell" ) @@ -16,12 +14,40 @@ type TabPane struct { } func (t *TabPane) HandleEvent(event tcell.Event) { + switch e := event.(type) { + case *tcell.EventMouse: + switch e.Buttons() { + case tcell.Button1: + mx, my := e.Position() + + for i, p := range t.Panes { + v := p.GetView() + inpane := mx >= v.X && mx < v.X+v.Width && my >= v.Y && my < v.Y+v.Height + if inpane { + t.active = i + p.SetActive(true) + } else { + p.SetActive(false) + } + } + } + } t.Panes[t.active].HandleEvent(event) } +func (t *TabPane) SetActive(i int) { + t.active = i + for j, p := range t.Panes { + if j == i { + p.SetActive(true) + } else { + p.SetActive(false) + } + } +} + func (t *TabPane) Resize() { for _, p := range t.Panes { - log.Println(p.splitID) v := t.GetNode(p.splitID).GetView() pv := p.GetView() pv.X, pv.Y = v.X, v.Y diff --git a/cmd/micro/display/infowindow.go b/cmd/micro/display/infowindow.go index 73f334d2..603c56c3 100644 --- a/cmd/micro/display/infowindow.go +++ b/cmd/micro/display/infowindow.go @@ -81,9 +81,10 @@ func (i *InfoWindow) Resize(w, h int) { // } // } -func (i *InfoWindow) Relocate() bool { return false } -func (i *InfoWindow) GetView() *View { return i.View } -func (i *InfoWindow) SetView(v *View) {} +func (i *InfoWindow) Relocate() bool { return false } +func (i *InfoWindow) GetView() *View { return i.View } +func (i *InfoWindow) SetView(v *View) {} +func (i *InfoWindow) SetActive(b bool) {} func (i *InfoWindow) GetMouseLoc(vloc buffer.Loc) buffer.Loc { c := i.Buffer.GetActiveCursor() diff --git a/cmd/micro/display/window.go b/cmd/micro/display/window.go index 4b0ed338..5bba2153 100644 --- a/cmd/micro/display/window.go +++ b/cmd/micro/display/window.go @@ -1,7 +1,6 @@ package display import ( - "log" "strconv" "unicode/utf8" @@ -31,6 +30,7 @@ type Window interface { SetView(v *View) GetMouseLoc(vloc buffer.Loc) buffer.Loc Resize(w, h int) + SetActive(b bool) } // The BufWindow provides a way of displaying a certain section @@ -41,6 +41,8 @@ type BufWindow struct { // Buffer being shown in this window Buf *buffer.Buffer + active bool + sline *StatusLine lineHeight []int @@ -53,6 +55,7 @@ func NewBufWindow(x, y, width, height int, buf *buffer.Buffer) *BufWindow { w.View = new(View) w.X, w.Y, w.Width, w.Height, w.Buf = x, y, width, height, buf w.lineHeight = make([]int, height) + w.active = true w.sline = NewStatusLine(w) @@ -72,6 +75,10 @@ func (w *BufWindow) Resize(width, height int) { w.lineHeight = make([]int, height) } +func (w *BufWindow) SetActive(b bool) { + w.active = b +} + func (w *BufWindow) getStartInfo(n, lineN int) ([]byte, int, int, *tcell.Style) { tabsize := util.IntOpt(w.Buf.Settings["tabsize"]) width := 0 @@ -226,11 +233,11 @@ func (w *BufWindow) GetMouseLoc(svloc buffer.Loc) buffer.Loc { totalwidth := w.StartCol - nColsBeforeStart - if svloc.X <= vloc.X && vloc.Y == svloc.Y { + if svloc.X <= vloc.X+w.X && vloc.Y+w.Y == svloc.Y { return bloc } for len(line) > 0 { - if vloc.X == svloc.X && vloc.Y == svloc.Y { + if vloc.X+w.X == svloc.X && vloc.Y+w.Y == svloc.Y { return bloc } @@ -249,7 +256,7 @@ func (w *BufWindow) GetMouseLoc(svloc buffer.Loc) buffer.Loc { // Draw any extra characters either spaces for tabs or @ for incomplete wide runes if width > 1 { for i := 1; i < width; i++ { - if vloc.X == svloc.X && vloc.Y == svloc.Y { + if vloc.X+w.X == svloc.X && vloc.Y+w.Y == svloc.Y { return bloc } draw() @@ -276,7 +283,7 @@ func (w *BufWindow) GetMouseLoc(svloc buffer.Loc) buffer.Loc { } } } - if vloc.Y == svloc.Y { + if vloc.Y+w.Y == svloc.Y { return bloc } @@ -287,7 +294,7 @@ func (w *BufWindow) GetMouseLoc(svloc buffer.Loc) buffer.Loc { } } - return buffer.Loc{X: -1, Y: -1} + return buffer.Loc{} } func (w *BufWindow) drawLineNum(lineNumStyle tcell.Style, softwrapped bool, maxLineNumLength int, vloc *buffer.Loc, bloc *buffer.Loc) { @@ -324,11 +331,13 @@ func (w *BufWindow) getStyle(style tcell.Style, bloc buffer.Loc, r rune) (tcell. } func (w *BufWindow) showCursor(x, y int, main bool) { - if main { - screen.Screen.ShowCursor(x, y) - } else { - r, _, _, _ := screen.Screen.GetContent(x, y) - screen.Screen.SetContent(x, y, r, nil, config.DefStyle.Reverse(true)) + if w.active { + if main { + screen.Screen.ShowCursor(x, y) + } else { + r, _, _, _ := screen.Screen.GetContent(x, y) + screen.Screen.SetContent(x, y, r, nil, config.DefStyle.Reverse(true)) + } } } @@ -385,7 +394,7 @@ func (w *BufWindow) displayBuffer() { if b.Settings["ruler"].(bool) { s := lineNumStyle for _, c := range cursors { - if bloc.Y == c.Y { + if bloc.Y == c.Y && w.active { s = curNumStyle break } @@ -415,7 +424,7 @@ func (w *BufWindow) displayBuffer() { } } - if b.Settings["cursorline"].(bool) && + if b.Settings["cursorline"].(bool) && w.active && !c.HasSelection() && c.Y == bloc.Y { if s, ok := config.Colorscheme["cursor-line"]; ok { fg, _, _ := s.Decompose() @@ -438,7 +447,6 @@ func (w *BufWindow) displayBuffer() { nColsBeforeStart-- } - log.Println(len(w.lineHeight), vloc.Y) w.lineHeight[vloc.Y] = bloc.Y totalwidth := w.StartCol - nColsBeforeStart @@ -489,7 +497,7 @@ func (w *BufWindow) displayBuffer() { } for _, c := range cursors { - if b.Settings["cursorline"].(bool) && + if b.Settings["cursorline"].(bool) && w.active && !c.HasSelection() && c.Y == bloc.Y { style := config.DefStyle if s, ok := config.Colorscheme["cursor-line"]; ok { @@ -497,7 +505,7 @@ func (w *BufWindow) displayBuffer() { style = style.Background(fg) } for i := vloc.X; i < w.Width; i++ { - screen.Screen.SetContent(i, vloc.Y, ' ', nil, style) + screen.Screen.SetContent(i+w.X, vloc.Y+w.Y, ' ', nil, style) } } } diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 8fe6923d..cdece46d 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -223,7 +223,7 @@ func main() { if action.InfoBar.HasPrompt { action.InfoBar.HandleEvent(event) } else { - action.MainTab.Panes[0].HandleEvent(event) + action.MainTab.HandleEvent(event) } } } From 16e5f55323d61f75922c34b6bb2cd1ceedd91eec Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 4 Jan 2019 21:48:19 -0500 Subject: [PATCH 047/231] YN callbacks and better multi cursor --- cmd/micro/action/actions.go | 71 ++++++++++++++++++++------------- cmd/micro/action/bufhandler.go | 3 ++ cmd/micro/action/infohandler.go | 18 +++++++-- cmd/micro/buffer/cursor.go | 2 +- cmd/micro/info/infobuffer.go | 28 +++++++++++-- 5 files changed, 86 insertions(+), 36 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 4aed393f..768d0090 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -138,14 +138,14 @@ func (h *BufHandler) CursorLeft() bool { // CursorRight moves the cursor right func (h *BufHandler) CursorRight() bool { - h.Cursor.Deselect(true) + h.Cursor.Deselect(false) h.Cursor.Right() return true } // WordRight moves the cursor one word to the right func (h *BufHandler) WordRight() bool { - h.Cursor.Deselect(true) + h.Cursor.Deselect(false) h.Cursor.WordRight() return true } @@ -987,8 +987,17 @@ func (h *BufHandler) Escape() bool { // Quit this will close the current tab or view that is open func (h *BufHandler) Quit() bool { - screen.Screen.Fini() - os.Exit(0) + if h.Buf.Modified() { + InfoBar.YNPrompt("Save changes to "+h.Buf.GetName()+" before closing? (y,n,esc)", func(yes, canceled bool) { + if !canceled && !yes { + screen.Screen.Fini() + os.Exit(0) + } + }) + } else { + screen.Screen.Fini() + os.Exit(0) + } return false } @@ -1055,31 +1064,36 @@ func (h *BufHandler) SpawnMultiCursor() bool { spawner := h.Buf.GetCursor(h.Buf.NumCursors() - 1) if !spawner.HasSelection() { spawner.SelectWord() - } else { - sel := spawner.GetSelection() - searchStart := spawner.CurSelection[1] - - match, found, err := h.Buf.FindNext(string(sel), searchStart, true) - if err != nil { - InfoBar.Error(err) - } - if found { - c := buffer.NewCursor(h.Buf, buffer.Loc{}) - c.SetSelectionStart(match[0]) - c.SetSelectionEnd(match[1]) - c.OrigSelection[0] = c.CurSelection[0] - c.OrigSelection[1] = c.CurSelection[1] - c.Loc = c.CurSelection[1] - - h.Buf.AddCursor(c) - h.Buf.MergeCursors() - h.Win.Relocate() - } else { - InfoBar.Message("No matches found") - } + h.multiWord = true + return true } - return false + sel := spawner.GetSelection() + searchStart := spawner.CurSelection[1] + + search := string(sel) + if h.multiWord { + search = "\\b" + search + "\\b" + } + match, found, err := h.Buf.FindNext(search, searchStart, true) + if err != nil { + InfoBar.Error(err) + } + if found { + c := buffer.NewCursor(h.Buf, buffer.Loc{}) + c.SetSelectionStart(match[0]) + c.SetSelectionEnd(match[1]) + c.OrigSelection[0] = c.CurSelection[0] + c.OrigSelection[1] = c.CurSelection[1] + c.Loc = c.CurSelection[1] + + h.Buf.AddCursor(c) + h.Buf.MergeCursors() + } else { + InfoBar.Message("No matches found") + } + + return true } // SpawnMultiCursorSelect adds a cursor at the beginning of each line of a selection @@ -1158,6 +1172,8 @@ func (h *BufHandler) RemoveMultiCursor() bool { if h.Buf.NumCursors() > 1 { h.Buf.RemoveCursor(h.Buf.NumCursors() - 1) h.Buf.UpdateCursors() + } else { + h.multiWord = false } return false } @@ -1165,5 +1181,6 @@ func (h *BufHandler) RemoveMultiCursor() bool { // RemoveAllMultiCursors removes all cursors except the base cursor func (h *BufHandler) RemoveAllMultiCursors() bool { h.Buf.ClearCursors() + h.multiWord = false return true } diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 2c925fde..74436312 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -90,6 +90,9 @@ type BufHandler struct { // Last search stores the last successful search for FindNext and FindPrev lastSearch string + // Should the current multiple cursor selection search based on word or + // based on selection (false for selection, true for word) + multiWord bool splitID uint64 } diff --git a/cmd/micro/action/infohandler.go b/cmd/micro/action/infohandler.go index b2941ec7..bc0a5ad1 100644 --- a/cmd/micro/action/infohandler.go +++ b/cmd/micro/action/infohandler.go @@ -34,10 +34,18 @@ func (h *InfoHandler) HandleEvent(event tcell.Event) { done := h.DoKeyEvent(ke) if !done && e.Key() == tcell.KeyRune { - h.DoRuneInsert(e.Rune()) - done = true + if e.Rune() == 'y' && h.HasYN { + h.YNResp = true + h.DonePrompt(false) + } else if e.Rune() == 'n' && h.HasYN { + h.YNResp = false + h.DonePrompt(false) + } else if !h.HasYN { + h.DoRuneInsert(e.Rune()) + done = true + } } - if done && h.HasPrompt { + if done && h.HasPrompt && !h.HasYN { resp := strings.TrimSpace(string(h.LineBytes(0))) hist := h.History[h.PromptType] hist[h.HistoryNum] = resp @@ -144,7 +152,9 @@ func (h *InfoHandler) InsertTab() { // TODO: autocomplete } func (h *InfoHandler) InsertNewline() { - h.DonePrompt(false) + if !h.HasYN { + h.DonePrompt(false) + } } func (h *InfoHandler) Quit() { h.DonePrompt(true) diff --git a/cmd/micro/buffer/cursor.go b/cmd/micro/buffer/cursor.go index aded3ba2..3bb94c2c 100644 --- a/cmd/micro/buffer/cursor.go +++ b/cmd/micro/buffer/cursor.go @@ -167,7 +167,7 @@ func (c *Cursor) Deselect(start bool) { if start { c.Loc = c.CurSelection[0] } else { - c.Loc = c.CurSelection[1] + c.Loc = c.CurSelection[1].Move(-1, c.buf) } c.ResetSelection() c.StoreVisualX() diff --git a/cmd/micro/info/infobuffer.go b/cmd/micro/info/infobuffer.go index 91604e43..1a29cfc1 100644 --- a/cmd/micro/info/infobuffer.go +++ b/cmd/micro/info/infobuffer.go @@ -15,10 +15,12 @@ type InfoBuf struct { HasPrompt bool HasMessage bool HasError bool + HasYN bool PromptType string - Msg string + Msg string + YNResp bool // This map stores the history for all the different kinds of uses Prompt has // It's a map of history type -> history array @@ -30,6 +32,7 @@ type InfoBuf struct { PromptCallback func(resp string, canceled bool) EventCallback func(resp string) + YNCallback func(yes bool, canceled bool) } // NewBuffer returns a new infobuffer @@ -92,16 +95,27 @@ func (i *InfoBuf) Prompt(prompt string, msg string, ptype string, eventcb func(s i.PromptType = ptype i.Msg = prompt i.HasPrompt = true - i.HasMessage, i.HasError = false, false + i.HasMessage, i.HasError, i.HasYN = false, false, false i.PromptCallback = donecb i.EventCallback = eventcb i.Buffer.Insert(i.Buffer.Start(), msg) } +func (i *InfoBuf) YNPrompt(prompt string, donecb func(bool, bool)) { + if i.HasPrompt { + i.DonePrompt(true) + } + + i.Msg = prompt + i.HasPrompt = true + i.HasYN = true + i.HasMessage, i.HasError = false, false + i.YNCallback = donecb +} + // DonePrompt finishes the current prompt and indicates whether or not it was canceled func (i *InfoBuf) DonePrompt(canceled bool) { - i.HasPrompt = false - if i.PromptCallback != nil { + if i.PromptCallback != nil && !i.HasYN { if canceled { i.PromptCallback("", true) h := i.History[i.PromptType] @@ -113,8 +127,14 @@ func (i *InfoBuf) DonePrompt(canceled bool) { h[len(h)-1] = resp } } + if i.YNCallback != nil && i.HasYN { + i.YNCallback(i.YNResp, canceled) + } + i.HasPrompt = false + i.HasYN = false i.PromptCallback = nil i.EventCallback = nil + i.YNCallback = nil i.Replace(i.Start(), i.End(), "") } From 778bfd5cd3cebc16dd5327a837fcd165413f8210 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 4 Jan 2019 21:50:11 -0500 Subject: [PATCH 048/231] Merge cursors after any event --- cmd/micro/action/bufhandler.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 74436312..1eecf143 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -156,6 +156,7 @@ func (h *BufHandler) HandleEvent(event tcell.Event) { } h.DoMouseEvent(me, e) } + h.Buf.MergeCursors() } // DoKeyEvent executes a key event by finding the action it is bound From 93aed1ab9ffa363cff051a0012e8f46301520bf6 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 5 Jan 2019 14:09:02 -0500 Subject: [PATCH 049/231] Fix some split bugs --- cmd/micro/views/splits.go | 82 ++++++++++++++++++++++++--------------- 1 file changed, 50 insertions(+), 32 deletions(-) diff --git a/cmd/micro/views/splits.go b/cmd/micro/views/splits.go index 5ba50434..6b28f3e3 100644 --- a/cmd/micro/views/splits.go +++ b/cmd/micro/views/splits.go @@ -2,6 +2,7 @@ package views import ( "fmt" + "log" "strings" ) @@ -112,30 +113,28 @@ func (n *Node) vResizeSplit(i int, size int) bool { if i < 0 || i >= len(n.children)-1 { return false } - v1, v2 := n.children[i].GetView(), n.children[i+1].GetView() - toth := v1.H + v2.H + c1, c2 := n.children[i], n.children[i+1] + toth := c1.H + c2.H if size >= toth { return false } - v1.H, v2.H = size, toth-size - v2.Y = size - n.children[i].SetView(v1) - n.children[i+1].SetView(v2) + c2.Y = size + c1.Resize(c1.W, size) + c2.Resize(c2.W, toth-size) return true } func (n *Node) hResizeSplit(i int, size int) bool { if i < 0 || i >= len(n.children)-1 { return false } - v1, v2 := n.children[i].GetView(), n.children[i+1].GetView() - totw := v1.W + v2.W + c1, c2 := n.children[i], n.children[i+1] + totw := c1.W + c2.W if size >= totw { return false } - v1.W, v2.W = size, totw-size - v2.X = size - n.children[i].SetView(v1) - n.children[i+1].SetView(v2) + c2.X = size + c1.Resize(size, c1.H) + c2.Resize(totw-size, c2.H) return true } @@ -180,15 +179,15 @@ func (n *Node) vHSplit(i int, right bool) uint64 { } n.children = append(n.children, hn1, hn2) + n.alignSize() return newid } else { numr := 0 numnr := 0 nonrh := 0 for _, c := range n.children { - view := c.GetView() if !c.CanResize() { - nonrh += view.H + nonrh += c.H numnr++ } else { numr++ @@ -212,18 +211,15 @@ func (n *Node) vHSplit(i int, right bool) uint64 { copy(n.children[inspos+1:], n.children[inspos:]) n.children[inspos] = hn - y := 0 + y := n.Y for _, c := range n.children { - view := c.GetView() + c.Y = y if c.CanResize() { - view.H = height - view.Y = y - } else { - view.Y = y + c.Resize(c.W, height) } - y += view.H - c.SetView(view) + y += c.H } + n.alignSize() return newid } } @@ -237,15 +233,15 @@ func (n *Node) hVSplit(i int, right bool) uint64 { } n.children = append(n.children, vn1, vn2) + n.alignSize() return newid } else { numr := 0 numnr := 0 nonrw := 0 for _, c := range n.children { - view := c.GetView() if !c.CanResize() { - nonrw += view.W + nonrw += c.W numnr++ } else { numr++ @@ -269,18 +265,15 @@ func (n *Node) hVSplit(i int, right bool) uint64 { copy(n.children[inspos+1:], n.children[inspos:]) n.children[inspos] = vn - x := 0 + x := n.X for _, c := range n.children { - view := c.GetView() + c.X = x if c.CanResize() { - view.W = width - view.X = x - } else { - view.X = x + c.Resize(width, c.H) } - x += view.W - c.SetView(view) + x += c.W } + n.alignSize() return newid } } @@ -326,9 +319,34 @@ func (n *Node) Resize(w, h int) { y += cH } } + n.alignSize() n.W, n.H = w, h } +func (n *Node) alignSize() { + if len(n.children) == 0 { + return + } + + totw, toth := 0, 0 + for _, c := range n.children { + if n.kind == STHoriz { + totw += c.W + } else { + toth += c.H + } + } + if n.kind == STVert && toth != n.H { + last := n.children[len(n.children)-1] + last.Resize(last.W, last.H+n.H-toth) + log.Println("bad height") + } else if n.kind == STHoriz && totw != n.W { + last := n.children[len(n.children)-1] + last.Resize(last.W+n.W-totw, last.H) + log.Println("bad width") + } +} + func (n *Node) Unsplit() { } From 305f4debffa922cddc093389d552b4ac2592bfb7 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 5 Jan 2019 16:27:04 -0500 Subject: [PATCH 050/231] Split improvements --- cmd/micro/action/editpane.go | 1 + cmd/micro/action/tab.go | 10 +++++ cmd/micro/display/infowindow.go | 1 + cmd/micro/display/uiwindow.go | 63 +++++++++++++++++++++++++++ cmd/micro/info/infobuffer.go | 9 ++-- cmd/micro/micro.go | 1 + cmd/micro/views/splits.go | 75 +++++++++++++++++++-------------- 7 files changed, 125 insertions(+), 35 deletions(-) create mode 100644 cmd/micro/display/uiwindow.go diff --git a/cmd/micro/action/editpane.go b/cmd/micro/action/editpane.go index a017ec2d..cf9ad392 100644 --- a/cmd/micro/action/editpane.go +++ b/cmd/micro/action/editpane.go @@ -31,6 +31,7 @@ func NewBufEditPane(x, y, width, height int, b *buffer.Buffer) *EditPane { func NewTabPane(width, height int, b *buffer.Buffer) *TabPane { t := new(TabPane) t.Node = views.NewRoot(0, 0, width, height) + t.Window = display.NewUIWindow(t.Node) e := NewBufEditPane(0, 0, width, height, b) e.splitID = t.ID() diff --git a/cmd/micro/action/tab.go b/cmd/micro/action/tab.go index bb9e997f..5bb1008b 100644 --- a/cmd/micro/action/tab.go +++ b/cmd/micro/action/tab.go @@ -1,6 +1,8 @@ package action import ( + "github.com/zyedidia/micro/cmd/micro/display" + "github.com/zyedidia/micro/cmd/micro/screen" "github.com/zyedidia/micro/cmd/micro/views" "github.com/zyedidia/tcell" ) @@ -9,12 +11,20 @@ var MainTab *TabPane type TabPane struct { *views.Node + display.Window Panes []*EditPane active int + + resizing bool } func (t *TabPane) HandleEvent(event tcell.Event) { switch e := event.(type) { + case *tcell.EventResize: + w, h := screen.Screen.Size() + InfoBar.Resize(w, h-1) + t.Node.Resize(w, h-1) + t.Resize() case *tcell.EventMouse: switch e.Buttons() { case tcell.Button1: diff --git a/cmd/micro/display/infowindow.go b/cmd/micro/display/infowindow.go index 603c56c3..44a5b48d 100644 --- a/cmd/micro/display/infowindow.go +++ b/cmd/micro/display/infowindow.go @@ -50,6 +50,7 @@ func NewInfoWindow(b *info.InfoBuf) *InfoWindow { func (i *InfoWindow) Resize(w, h int) { i.width = w + i.y = h } // func (i *InfoWindow) YesNoPrompt() (bool, bool) { diff --git a/cmd/micro/display/uiwindow.go b/cmd/micro/display/uiwindow.go new file mode 100644 index 00000000..6d866aef --- /dev/null +++ b/cmd/micro/display/uiwindow.go @@ -0,0 +1,63 @@ +package display + +import ( + "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/cmd/micro/views" +) + +type UIWindow struct { + root *views.Node +} + +func NewUIWindow(n *views.Node) *UIWindow { + uw := new(UIWindow) + uw.root = n + return uw +} + +func (w *UIWindow) drawNode(n *views.Node) { + cs := n.Children() + for i, c := range cs { + if c.IsLeaf() && c.Kind == views.STVert { + if i != len(cs)-1 { + for h := 0; h < c.H; h++ { + screen.Screen.SetContent(c.X+c.W, c.Y+h, '|', nil, config.DefStyle.Reverse(true)) + } + } + } else { + w.drawNode(c) + } + } +} + +func (w *UIWindow) Display() { + w.drawNode(w.root) +} + +func (w *UIWindow) Clear() {} +func (w *UIWindow) Relocate() bool { return false } +func (w *UIWindow) GetView() *View { return nil } +func (w *UIWindow) SetView(*View) {} +func (w *UIWindow) GetMouseLoc(vloc buffer.Loc) buffer.Loc { + var mouseLoc func(*views.Node) buffer.Loc + mouseLoc = func(n *views.Node) buffer.Loc { + cs := n.Children() + for i, c := range cs { + if c.IsLeaf() && c.Kind == views.STVert { + if i != len(cs)-1 { + if vloc.X == c.X+c.W { + return vloc + } + } + } else { + return mouseLoc(c) + } + } + return buffer.Loc{} + } + return mouseLoc(w.root) +} +func (w *UIWindow) Resize(width, height int) {} +func (w *UIWindow) SetActive(b bool) {} diff --git a/cmd/micro/info/infobuffer.go b/cmd/micro/info/infobuffer.go index 1a29cfc1..4e22d2f6 100644 --- a/cmd/micro/info/infobuffer.go +++ b/cmd/micro/info/infobuffer.go @@ -115,7 +115,10 @@ func (i *InfoBuf) YNPrompt(prompt string, donecb func(bool, bool)) { // DonePrompt finishes the current prompt and indicates whether or not it was canceled func (i *InfoBuf) DonePrompt(canceled bool) { - if i.PromptCallback != nil && !i.HasYN { + hadYN := i.HasYN + i.HasPrompt = false + i.HasYN = false + if i.PromptCallback != nil && !hadYN { if canceled { i.PromptCallback("", true) h := i.History[i.PromptType] @@ -127,11 +130,9 @@ func (i *InfoBuf) DonePrompt(canceled bool) { h[len(h)-1] = resp } } - if i.YNCallback != nil && i.HasYN { + if i.YNCallback != nil && hadYN { i.YNCallback(i.YNResp, canceled) } - i.HasPrompt = false - i.HasYN = false i.PromptCallback = nil i.EventCallback = nil i.YNCallback = nil diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index cdece46d..51349922 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -209,6 +209,7 @@ func main() { for _, ep := range action.MainTab.Panes { ep.Display() } + action.MainTab.Display() action.InfoBar.Display() screen.Screen.Show() diff --git a/cmd/micro/views/splits.go b/cmd/micro/views/splits.go index 6b28f3e3..144437ba 100644 --- a/cmd/micro/views/splits.go +++ b/cmd/micro/views/splits.go @@ -29,7 +29,7 @@ type View struct { type Node struct { View - kind SplitType + Kind SplitType parent *Node children []*Node @@ -69,6 +69,9 @@ func (n *Node) GetView() View { func (n *Node) SetView(v View) { n.X, n.Y, n.W, n.H = v.X, v.Y, v.W, v.H } +func (n *Node) Children() []*Node { + return n.children +} func (n *Node) GetNode(id uint64) *Node { if n.id == id && n.IsLeaf() { @@ -86,9 +89,9 @@ func (n *Node) GetNode(id uint64) *Node { return nil } -func NewNode(kind SplitType, x, y, w, h int, parent *Node, id uint64) *Node { +func NewNode(Kind SplitType, x, y, w, h int, parent *Node, id uint64) *Node { n := new(Node) - n.kind = kind + n.Kind = Kind n.canResize = true n.propScale = true n.X, n.Y, n.W, n.H = x, y, w, h @@ -145,7 +148,7 @@ func (n *Node) ResizeSplit(size int) bool { ind = i } } - if n.parent.kind == STVert { + if n.parent.Kind == STVert { return n.parent.vResizeSplit(ind, size) } return n.parent.hResizeSplit(ind, size) @@ -282,10 +285,10 @@ func (n *Node) HSplit(bottom bool) uint64 { if !n.IsLeaf() { return 0 } - if n.kind == STUndef { - n.kind = STVert + if n.Kind == STUndef { + n.Kind = STVert } - if n.kind == STVert { + if n.Kind == STVert { return n.vHSplit(0, bottom) } return n.hHSplit(bottom) @@ -295,32 +298,41 @@ func (n *Node) VSplit(right bool) uint64 { if !n.IsLeaf() { return 0 } - if n.kind == STUndef { - n.kind = STHoriz + if n.Kind == STUndef { + n.Kind = STHoriz } - if n.kind == STVert { + if n.Kind == STVert { return n.vVSplit(right) } return n.hVSplit(0, right) } func (n *Node) Resize(w, h int) { - propW, propH := float64(w)/float64(n.W), float64(h)/float64(n.H) - x, y := n.X, n.Y - for _, c := range n.children { - cW := int(float64(c.W) * propW) - cH := int(float64(c.H) * propH) - c.Resize(cW, cH) - c.X = x - c.Y = y - if n.kind == STHoriz { - x += cW - } else { - y += cH + if n.IsLeaf() { + n.W, n.H = w, h + } else { + propW, propH := float64(w)/float64(n.W), float64(h)/float64(n.H) + log.Println(w, h, n.W, n.H, propW, propH) + x, y := n.X, n.Y + for i, c := range n.children { + cW := int(float64(c.W) * propW) + // if c.IsLeaf() && i != len(n.children)-1 { + // cW++ + // } + log.Println("WIDTH:", cW, c.W) + cH := int(float64(c.H) * propH) + c.Resize(cW, cH) + c.X = x + c.Y = y + if n.Kind == STHoriz { + x += cW + } else { + y += cH + } } + n.alignSize() + n.W, n.H = w, h } - n.alignSize() - n.W, n.H = w, h } func (n *Node) alignSize() { @@ -329,21 +341,22 @@ func (n *Node) alignSize() { } totw, toth := 0, 0 - for _, c := range n.children { - if n.kind == STHoriz { + for i, c := range n.children { + if n.Kind == STHoriz { + if i != len(n.children)-1 { + c.Resize(c.W-1, c.H) + } totw += c.W } else { toth += c.H } } - if n.kind == STVert && toth != n.H { + if n.Kind == STVert && toth != n.H { last := n.children[len(n.children)-1] last.Resize(last.W, last.H+n.H-toth) - log.Println("bad height") - } else if n.kind == STHoriz && totw != n.W { + } else if n.Kind == STHoriz && totw != n.W { last := n.children[len(n.children)-1] last.Resize(last.W+n.W-totw, last.H) - log.Println("bad width") } } @@ -355,7 +368,7 @@ func (n *Node) String() string { var strf func(n *Node, ident int) string strf = func(n *Node, ident int) string { marker := "|" - if n.kind == STHoriz { + if n.Kind == STHoriz { marker = "-" } str := fmt.Sprint(strings.Repeat("\t", ident), marker, n.View, n.id) From 9cf283e3123aa3f43196bfd1250a1c0d879f2673 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 5 Jan 2019 19:41:40 -0500 Subject: [PATCH 051/231] Resizing work --- cmd/micro/action/command.go | 2 ++ cmd/micro/micro.go | 25 ++++++++++++++----------- cmd/micro/util/message.go | 3 +++ cmd/micro/views/splits.go | 24 +++++++++++++++--------- 4 files changed, 34 insertions(+), 20 deletions(-) diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 96ea957e..664a9cee 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -1,6 +1,7 @@ package action import ( + "log" "os" "github.com/zyedidia/micro/cmd/micro/buffer" @@ -205,6 +206,7 @@ func VSplit(args []string) { return } + log.Println("loaded") MainTab.CurPane().vsplit(buf) } diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 51349922..e711bec7 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -193,14 +193,14 @@ func main() { action.InitGlobals() // Here is the event loop which runs in a separate thread - go func() { - events = make(chan tcell.Event) - for { - screen.Lock() - events <- screen.Screen.PollEvent() - screen.Unlock() - } - }() + // go func() { + // events = make(chan tcell.Event) + // for { + // screen.Lock() + // events <- screen.Screen.PollEvent() + // screen.Unlock() + // } + // }() for { // Display everything @@ -216,9 +216,12 @@ func main() { var event tcell.Event // Check for new events - select { - case event = <-events: - } + screen.Lock() + event = screen.Screen.PollEvent() + screen.Unlock() + // select { + // case event = <-events: + // } if event != nil { if action.InfoBar.HasPrompt { diff --git a/cmd/micro/util/message.go b/cmd/micro/util/message.go index 2a1ddce1..3b31cd17 100644 --- a/cmd/micro/util/message.go +++ b/cmd/micro/util/message.go @@ -3,6 +3,7 @@ package util import ( "bufio" "fmt" + "log" "os" "strconv" @@ -16,7 +17,9 @@ import ( // This will write the message, and wait for the user // to press and key to continue func TermMessage(msg ...interface{}) { + log.Println(msg) screen.TempFini() + log.Println("fini") fmt.Println(msg...) fmt.Print("\nPress enter to continue") diff --git a/cmd/micro/views/splits.go b/cmd/micro/views/splits.go index 144437ba..3c1521a3 100644 --- a/cmd/micro/views/splits.go +++ b/cmd/micro/views/splits.go @@ -42,7 +42,8 @@ type Node struct { // the window is resized the split maintains its proportions propScale bool - id uint64 + propW, propH float64 + id uint64 } func (n *Node) ID() uint64 { @@ -98,6 +99,11 @@ func NewNode(Kind SplitType, x, y, w, h int, parent *Node, id uint64) *Node { n.children = make([]*Node, 0) n.parent = parent n.id = id + if parent != nil { + n.propW, n.propH = float64(w)/float64(parent.W), float64(h)/float64(parent.H) + } else { + n.propW, n.propH = 1, 1 + } return n } @@ -124,6 +130,7 @@ func (n *Node) vResizeSplit(i int, size int) bool { c2.Y = size c1.Resize(c1.W, size) c2.Resize(c2.W, toth-size) + n.propW = float64(size) / float64(n.parent.W) return true } func (n *Node) hResizeSplit(i int, size int) bool { @@ -138,6 +145,7 @@ func (n *Node) hResizeSplit(i int, size int) bool { c2.X = size c1.Resize(size, c1.H) c2.Resize(totw-size, c2.H) + n.propH = float64(size) / float64(n.parent.H) return true } @@ -311,16 +319,14 @@ func (n *Node) Resize(w, h int) { if n.IsLeaf() { n.W, n.H = w, h } else { - propW, propH := float64(w)/float64(n.W), float64(h)/float64(n.H) - log.Println(w, h, n.W, n.H, propW, propH) x, y := n.X, n.Y for i, c := range n.children { - cW := int(float64(c.W) * propW) - // if c.IsLeaf() && i != len(n.children)-1 { - // cW++ - // } - log.Println("WIDTH:", cW, c.W) - cH := int(float64(c.H) * propH) + cW := int(float64(w) * c.propW) + if c.IsLeaf() && i != len(n.children)-1 { + cW++ + } + cH := int(float64(h) * c.propH) + log.Println(c.id, c.propW, c.propH, cW, cH, w, h) c.Resize(cW, cH) c.X = x c.Y = y From 4412b44b471a856381d06eead30903511baa706c Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 9 Jan 2019 15:17:51 -0500 Subject: [PATCH 052/231] Add showkey --- cmd/micro/action/command.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 664a9cee..aee63e71 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -244,6 +244,16 @@ func Show(args []string) { // ShowKey displays the action that a key is bound to func ShowKey(args []string) { + if len(args) < 1 { + InfoBar.Error("Please provide a key to show") + return + } + + if action, ok := Bindings[args[0]]; ok { + InfoBar.Message(action) + } else { + InfoBar.Message(args[0], " has no binding") + } } // Bind creates a new keybinding From f2cb7d2fc15fe52a210039edf58fb8f0c2ac89f9 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 9 Jan 2019 16:55:00 -0500 Subject: [PATCH 053/231] Implement unsplitting --- cmd/micro/action/actions.go | 20 +- cmd/micro/action/tab.go | 21 +- cmd/micro/views/splits.go | 386 ++++++++++++++++++++++-------------- 3 files changed, 271 insertions(+), 156 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 768d0090..b9813723 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -987,16 +987,22 @@ func (h *BufHandler) Escape() bool { // Quit this will close the current tab or view that is open func (h *BufHandler) Quit() bool { + quit := func() { + if len(MainTab.Panes) > 1 { + h.Unsplit() + } else { + screen.Screen.Fini() + os.Exit(0) + } + } if h.Buf.Modified() { InfoBar.YNPrompt("Save changes to "+h.Buf.GetName()+" before closing? (y,n,esc)", func(yes, canceled bool) { if !canceled && !yes { - screen.Screen.Fini() - os.Exit(0) + quit() } }) } else { - screen.Screen.Fini() - os.Exit(0) + quit() } return false } @@ -1033,6 +1039,12 @@ func (h *BufHandler) HSplitBinding() bool { // Unsplit closes all splits in the current tab except the active one func (h *BufHandler) Unsplit() bool { + n := MainTab.GetNode(h.splitID) + n.Unsplit() + + MainTab.RemovePane(MainTab.GetPane(h.splitID)) + MainTab.Resize() + MainTab.SetActive(len(MainTab.Panes) - 1) return false } diff --git a/cmd/micro/action/tab.go b/cmd/micro/action/tab.go index 5bb1008b..8b820263 100644 --- a/cmd/micro/action/tab.go +++ b/cmd/micro/action/tab.go @@ -56,13 +56,28 @@ func (t *TabPane) SetActive(i int) { } } +func (t *TabPane) GetPane(splitid uint64) int { + for i, p := range t.Panes { + if p.splitID == splitid { + return i + } + } + return 0 +} + +func (t *TabPane) RemovePane(i int) { + copy(t.Panes[i:], t.Panes[i+1:]) + t.Panes[len(t.Panes)-1] = nil // or the zero value of T + t.Panes = t.Panes[:len(t.Panes)-1] +} + func (t *TabPane) Resize() { for _, p := range t.Panes { - v := t.GetNode(p.splitID).GetView() + n := t.GetNode(p.splitID) pv := p.GetView() - pv.X, pv.Y = v.X, v.Y + pv.X, pv.Y = n.X, n.Y p.SetView(pv) - p.Resize(v.W, v.H) + p.Resize(n.W, n.H) } } diff --git a/cmd/micro/views/splits.go b/cmd/micro/views/splits.go index 3c1521a3..170ec680 100644 --- a/cmd/micro/views/splits.go +++ b/cmd/micro/views/splits.go @@ -2,7 +2,6 @@ package views import ( "fmt" - "log" "strings" ) @@ -16,16 +15,22 @@ const ( var idcounter uint64 +// NewID returns a new unique id func NewID() uint64 { idcounter++ return idcounter } +// A View is a size and location of a split type View struct { X, Y int W, H int } +// A Node describes a split in the tree +// If a node is a leaf node then it corresponds to a buffer that is being +// displayed otherwise it has a number of children of the opposite type +// (vertical splits have horizontal children and vice versa) type Node struct { View @@ -42,54 +47,15 @@ type Node struct { // the window is resized the split maintains its proportions propScale bool + // Defines the proportion of the screen this node should take up if propScale is + // on propW, propH float64 - id uint64 -} - -func (n *Node) ID() uint64 { - if n.IsLeaf() { - return n.id - } - return 0 -} -func (n *Node) CanResize() bool { - return n.canResize -} -func (n *Node) PropScale() bool { - return n.propScale -} -func (n *Node) SetResize(b bool) { - n.canResize = b -} -func (n *Node) SetPropScale(b bool) { - n.propScale = b -} -func (n *Node) GetView() View { - return n.View -} -func (n *Node) SetView(v View) { - n.X, n.Y, n.W, n.H = v.X, v.Y, v.W, v.H -} -func (n *Node) Children() []*Node { - return n.children -} - -func (n *Node) GetNode(id uint64) *Node { - if n.id == id && n.IsLeaf() { - return n - } - for _, c := range n.children { - if c.id == id && c.IsLeaf() { - return c - } - gc := c.GetNode(id) - if gc != nil { - return gc - } - } - return nil + // The id is unique for each leaf node and provides a way to keep track of a split + // The id cannot be 0 + id uint64 } +// NewNode returns a new node with the given specifications func NewNode(Kind SplitType, x, y, w, h int, parent *Node, id uint64) *Node { n := new(Node) n.Kind = Kind @@ -108,21 +74,82 @@ func NewNode(Kind SplitType, x, y, w, h int, parent *Node, id uint64) *Node { return n } +// NewRoot returns an empty Node with a size and location +// The type of the node will be determined by the first action on the node +// In other words, a lone split is neither horizontal nor vertical, it only +// becomes one or the other after a vsplit or hsplit is made func NewRoot(x, y, w, h int) *Node { n1 := NewNode(STUndef, x, y, w, h, nil, NewID()) return n1 } +// IsLeaf returns if this node is a leaf node func (n *Node) IsLeaf() bool { return len(n.children) == 0 } +// ID returns this node's id or 0 if it is not viewable +func (n *Node) ID() uint64 { + if n.IsLeaf() { + return n.id + } + return 0 +} + +// CanResize returns if this node can be resized +func (n *Node) CanResize() bool { + return n.canResize +} + +// PropScale returns if this node is proportionally scaled +func (n *Node) PropScale() bool { + return n.propScale +} + +// SetResize sets the resize flag +func (n *Node) SetResize(b bool) { + n.canResize = b +} + +// SetPropScale sets the propScale flag +func (n *Node) SetPropScale(b bool) { + n.propScale = b +} + +// Children returns this node's children +func (n *Node) Children() []*Node { + return n.children +} + +// GetNode returns the node with the given id in the tree of children +// that this node has access to or nil if the node with that id cannot be found +func (n *Node) GetNode(id uint64) *Node { + if n.id == id && n.IsLeaf() { + return n + } + for _, c := range n.children { + if c.id == id && c.IsLeaf() { + return c + } + gc := c.GetNode(id) + if gc != nil { + return gc + } + } + return nil +} + func (n *Node) vResizeSplit(i int, size int) bool { - if i < 0 || i >= len(n.children)-1 { + if i < 0 || i >= len(n.children) { return false } - c1, c2 := n.children[i], n.children[i+1] + var c1, c2 *Node + if i == len(n.children)-1 { + c1, c2 = n.children[i-1], n.children[i] + } else { + c1, c2 = n.children[i], n.children[i+1] + } toth := c1.H + c2.H if size >= toth { return false @@ -130,14 +157,19 @@ func (n *Node) vResizeSplit(i int, size int) bool { c2.Y = size c1.Resize(c1.W, size) c2.Resize(c2.W, toth-size) - n.propW = float64(size) / float64(n.parent.W) + n.markSizes() return true } func (n *Node) hResizeSplit(i int, size int) bool { - if i < 0 || i >= len(n.children)-1 { + if i < 0 || i >= len(n.children) { return false } - c1, c2 := n.children[i], n.children[i+1] + var c1, c2 *Node + if i == len(n.children)-1 { + c1, c2 = n.children[i-1], n.children[i] + } else { + c1, c2 = n.children[i], n.children[i+1] + } totw := c1.W + c2.W if size >= totw { return false @@ -145,11 +177,16 @@ func (n *Node) hResizeSplit(i int, size int) bool { c2.X = size c1.Resize(size, c1.H) c2.Resize(totw-size, c2.H) - n.propH = float64(size) / float64(n.parent.H) + n.markSizes() return true } +// ResizeSplit resizes a certain split to a given size func (n *Node) ResizeSplit(size int) bool { + if !n.IsLeaf() || len(n.parent.children) <= 1 { + // cannot resize a non leaf or a lone node + return false + } ind := 0 for i, c := range n.parent.children { if c.id == n.id { @@ -162,6 +199,53 @@ func (n *Node) ResizeSplit(size int) bool { return n.parent.hResizeSplit(ind, size) } +// Resize sets this node's size and resizes all children accordlingly +func (n *Node) Resize(w, h int) { + n.W, n.H = w, h + + if n.IsLeaf() { + return + } + + x, y := n.X, n.Y + totw, toth := 0, 0 + for _, c := range n.children { + cW := int(float64(w) * c.propW) + cH := int(float64(h) * c.propH) + + c.X, c.Y = x, y + c.Resize(cW, cH) + if n.Kind == STHoriz { + x += cW + totw += cW + } else { + y += cH + toth += cH + } + } + + // Make sure that there are no off-by-one problems with the rounding + // of the sizes by making the final split fill the screen + if n.Kind == STVert && toth != n.H { + last := n.children[len(n.children)-1] + last.Resize(last.W, last.H+n.H-toth) + } else if n.Kind == STHoriz && totw != n.W { + last := n.children[len(n.children)-1] + last.Resize(last.W+n.W-totw, last.H) + } +} + +// Resets all proportions for children +func (n *Node) markSizes() { + for _, c := range n.children { + c.propW = float64(c.W) / float64(n.W) + c.propH = float64(c.H) / float64(n.H) + c.markSizes() + } + n.Resize(n.W, n.H) +} + +// vsplits a vertical split and returns the id of the new split func (n *Node) vVSplit(right bool) uint64 { ind := 0 for i, c := range n.parent.children { @@ -171,6 +255,8 @@ func (n *Node) vVSplit(right bool) uint64 { } return n.parent.hVSplit(ind, right) } + +// hsplits a horizontal split func (n *Node) hHSplit(bottom bool) uint64 { ind := 0 for i, c := range n.parent.children { @@ -180,6 +266,62 @@ func (n *Node) hHSplit(bottom bool) uint64 { } return n.parent.vHSplit(ind, bottom) } + +// Returns the size of the non-resizable area and the number of resizable +// splits +func (n *Node) getResizeInfo(h bool) (int, int) { + numr := 0 + numnr := 0 + nonr := 0 + for _, c := range n.children { + if !c.CanResize() { + if h { + nonr += c.H + } else { + nonr += c.W + } + numnr++ + } else { + numr++ + } + } + + // if there are no resizable splits make them all resizable + if numr == 0 { + numr = numnr + } + + return nonr, numr +} + +func (n *Node) applyNewSize(size int, h bool) { + a := n.X + if h { + a = n.Y + } + for _, c := range n.children { + if h { + c.Y = a + } else { + c.X = a + } + if c.CanResize() { + if h { + c.Resize(c.W, size) + } else { + c.Resize(size, c.H) + } + } + if h { + a += c.H + } else { + a += c.H + } + } + n.markSizes() +} + +// hsplits a vertical split func (n *Node) vHSplit(i int, right bool) uint64 { if n.IsLeaf() { newid := NewID() @@ -190,30 +332,18 @@ func (n *Node) vHSplit(i int, right bool) uint64 { } n.children = append(n.children, hn1, hn2) - n.alignSize() + n.markSizes() return newid } else { - numr := 0 - numnr := 0 - nonrh := 0 - for _, c := range n.children { - if !c.CanResize() { - nonrh += c.H - numnr++ - } else { - numr++ - } - } - - // if there are no resizable splits make them all resizable - if numr == 0 { - numr = numnr - } + nonrh, numr := n.getResizeInfo(true) + // size of resizable area height := (n.H - nonrh) / (numr + 1) newid := NewID() hn := NewNode(STHoriz, n.X, 0, n.W, height, n, newid) + + // insert the node into the correct slot n.children = append(n.children, nil) inspos := i if right { @@ -222,18 +352,12 @@ func (n *Node) vHSplit(i int, right bool) uint64 { copy(n.children[inspos+1:], n.children[inspos:]) n.children[inspos] = hn - y := n.Y - for _, c := range n.children { - c.Y = y - if c.CanResize() { - c.Resize(c.W, height) - } - y += c.H - } - n.alignSize() + n.applyNewSize(height, true) return newid } } + +// vsplits a horizontal split func (n *Node) hVSplit(i int, right bool) uint64 { if n.IsLeaf() { newid := NewID() @@ -244,30 +368,17 @@ func (n *Node) hVSplit(i int, right bool) uint64 { } n.children = append(n.children, vn1, vn2) - n.alignSize() + n.markSizes() return newid } else { - numr := 0 - numnr := 0 - nonrw := 0 - for _, c := range n.children { - if !c.CanResize() { - nonrw += c.W - numnr++ - } else { - numr++ - } - } - - // if there are no resizable splits make them all resizable - if numr == 0 { - numr = numnr - } + nonrw, numr := n.getResizeInfo(false) width := (n.W - nonrw) / (numr + 1) newid := NewID() vn := NewNode(STVert, 0, n.Y, width, n.H, n, newid) + + // Inser the node into the correct slot n.children = append(n.children, nil) inspos := i if right { @@ -276,19 +387,14 @@ func (n *Node) hVSplit(i int, right bool) uint64 { copy(n.children[inspos+1:], n.children[inspos:]) n.children[inspos] = vn - x := n.X - for _, c := range n.children { - c.X = x - if c.CanResize() { - c.Resize(width, c.H) - } - x += c.W - } - n.alignSize() + n.applyNewSize(width, false) return newid } } +// HSplit creates a horizontal split and returns the id of the new split +// bottom specifies if the new split should be created on the top or bottom +// of the current split func (n *Node) HSplit(bottom bool) uint64 { if !n.IsLeaf() { return 0 @@ -302,6 +408,9 @@ func (n *Node) HSplit(bottom bool) uint64 { return n.hHSplit(bottom) } +// VSplit creates a vertical split and returns the id of the new split +// right specifies if the new split should be created on the right or left +// of the current split func (n *Node) VSplit(right bool) uint64 { if !n.IsLeaf() { return 0 @@ -315,61 +424,40 @@ func (n *Node) VSplit(right bool) uint64 { return n.hVSplit(0, right) } -func (n *Node) Resize(w, h int) { - if n.IsLeaf() { - n.W, n.H = w, h - } else { - x, y := n.X, n.Y - for i, c := range n.children { - cW := int(float64(w) * c.propW) - if c.IsLeaf() && i != len(n.children)-1 { - cW++ - } - cH := int(float64(h) * c.propH) - log.Println(c.id, c.propW, c.propH, cW, cH, w, h) - c.Resize(cW, cH) - c.X = x - c.Y = y - if n.Kind == STHoriz { - x += cW - } else { - y += cH - } - } - n.alignSize() - n.W, n.H = w, h +// unsplits the child of a split +func (n *Node) unsplit(i int, h bool) { + copy(n.children[i:], n.children[i+1:]) + n.children[len(n.children)-1] = nil + n.children = n.children[:len(n.children)-1] + + nonrs, numr := n.getResizeInfo(h) + size := (n.W - nonrs) / numr + if h { + size = (n.H - nonrs) / numr } + n.applyNewSize(size, h) } -func (n *Node) alignSize() { - if len(n.children) == 0 { +// Unsplit deletes this split and resizes everything +// else accordingly +func (n *Node) Unsplit() { + if !n.IsLeaf() || len(n.parent.children) <= 1 { return } - - totw, toth := 0, 0 - for i, c := range n.children { - if n.Kind == STHoriz { - if i != len(n.children)-1 { - c.Resize(c.W-1, c.H) - } - totw += c.W - } else { - toth += c.H + ind := 0 + for i, c := range n.parent.children { + if c.id == n.id { + ind = i } } - if n.Kind == STVert && toth != n.H { - last := n.children[len(n.children)-1] - last.Resize(last.W, last.H+n.H-toth) - } else if n.Kind == STHoriz && totw != n.W { - last := n.children[len(n.children)-1] - last.Resize(last.W+n.W-totw, last.H) + if n.parent.Kind == STVert { + n.parent.unsplit(ind, true) + return } + n.parent.unsplit(ind, false) } -func (n *Node) Unsplit() { - -} - +// String returns the string form of the node and all children (used for debugging) func (n *Node) String() string { var strf func(n *Node, ident int) string strf = func(n *Node, ident int) string { From fe773c00d26c5e7cdaed85855d295d903cc83531 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 9 Jan 2019 18:06:31 -0500 Subject: [PATCH 054/231] Implement split resizing --- cmd/micro/action/tab.go | 34 +++++++++++++++++++++++---- cmd/micro/display/uiwindow.go | 22 +++++++++++++----- cmd/micro/views/splits.go | 43 +++++++++++++++++++++++++++-------- 3 files changed, 79 insertions(+), 20 deletions(-) diff --git a/cmd/micro/action/tab.go b/cmd/micro/action/tab.go index 8b820263..b4c23d22 100644 --- a/cmd/micro/action/tab.go +++ b/cmd/micro/action/tab.go @@ -1,6 +1,7 @@ package action import ( + "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/display" "github.com/zyedidia/micro/cmd/micro/screen" "github.com/zyedidia/micro/cmd/micro/views" @@ -15,7 +16,7 @@ type TabPane struct { Panes []*EditPane active int - resizing bool + resizing *views.Node // node currently being resized } func (t *TabPane) HandleEvent(event tcell.Event) { @@ -30,6 +31,24 @@ func (t *TabPane) HandleEvent(event tcell.Event) { case tcell.Button1: mx, my := e.Position() + resizeID := t.GetMouseLoc(buffer.Loc{mx, my}).X + if t.resizing != nil { + var size int + if t.resizing.Kind == views.STVert { + size = mx - t.resizing.X + } else { + size = my - t.resizing.Y + 1 + } + t.resizing.ResizeSplit(size) + t.Resize() + return + } + + if resizeID != -1 { + t.resizing = t.GetNode(uint64(resizeID)) + return + } + for i, p := range t.Panes { v := p.GetView() inpane := mx >= v.X && mx < v.X+v.Width && my >= v.Y && my < v.Y+v.Height @@ -40,7 +59,10 @@ func (t *TabPane) HandleEvent(event tcell.Event) { p.SetActive(false) } } + case tcell.ButtonNone: + t.resizing = nil } + } t.Panes[t.active].HandleEvent(event) } @@ -72,12 +94,16 @@ func (t *TabPane) RemovePane(i int) { } func (t *TabPane) Resize() { - for _, p := range t.Panes { + for i, p := range t.Panes { n := t.GetNode(p.splitID) pv := p.GetView() - pv.X, pv.Y = n.X, n.Y + offset := 0 + if i != 0 { + offset = 1 + } + pv.X, pv.Y = n.X+offset, n.Y p.SetView(pv) - p.Resize(n.W, n.H) + p.Resize(n.W-offset, n.H) } } diff --git a/cmd/micro/display/uiwindow.go b/cmd/micro/display/uiwindow.go index 6d866aef..1c9210eb 100644 --- a/cmd/micro/display/uiwindow.go +++ b/cmd/micro/display/uiwindow.go @@ -45,17 +45,27 @@ func (w *UIWindow) GetMouseLoc(vloc buffer.Loc) buffer.Loc { mouseLoc = func(n *views.Node) buffer.Loc { cs := n.Children() for i, c := range cs { - if c.IsLeaf() && c.Kind == views.STVert { + if c.Kind == views.STVert { if i != len(cs)-1 { - if vloc.X == c.X+c.W { - return vloc + if vloc.X == c.X+c.W && vloc.Y >= c.Y && vloc.Y < c.Y+c.H { + return buffer.Loc{int(c.ID()), 0} + } + } + } else if c.Kind == views.STHoriz { + if i != len(cs)-1 { + if vloc.Y == c.Y+c.H-1 && vloc.X >= c.X && vloc.X < c.X+c.W { + return buffer.Loc{int(c.ID()), 0} } } - } else { - return mouseLoc(c) } } - return buffer.Loc{} + for _, c := range cs { + m := mouseLoc(c) + if m.X != -1 { + return m + } + } + return buffer.Loc{-1, 0} } return mouseLoc(w.root) } diff --git a/cmd/micro/views/splits.go b/cmd/micro/views/splits.go index 170ec680..6c1a6c01 100644 --- a/cmd/micro/views/splits.go +++ b/cmd/micro/views/splits.go @@ -2,6 +2,7 @@ package views import ( "fmt" + "log" "strings" ) @@ -154,10 +155,11 @@ func (n *Node) vResizeSplit(i int, size int) bool { if size >= toth { return false } - c2.Y = size + c2.Y = c1.Y + size c1.Resize(c1.W, size) c2.Resize(c2.W, toth-size) n.markSizes() + n.alignSizes(n.W, n.H) return true } func (n *Node) hResizeSplit(i int, size int) bool { @@ -174,17 +176,18 @@ func (n *Node) hResizeSplit(i int, size int) bool { if size >= totw { return false } - c2.X = size + c2.X = c1.X + size c1.Resize(size, c1.H) c2.Resize(totw-size, c2.H) n.markSizes() + n.alignSizes(n.W, n.H) return true } // ResizeSplit resizes a certain split to a given size func (n *Node) ResizeSplit(size int) bool { - if !n.IsLeaf() || len(n.parent.children) <= 1 { - // cannot resize a non leaf or a lone node + if len(n.parent.children) <= 1 { + // cannot resize a lone node return false } ind := 0 @@ -224,6 +227,10 @@ func (n *Node) Resize(w, h int) { } } + n.alignSizes(totw, toth) +} + +func (n *Node) alignSizes(totw, toth int) { // Make sure that there are no off-by-one problems with the rounding // of the sizes by making the final split fill the screen if n.Kind == STVert && toth != n.H { @@ -242,6 +249,10 @@ func (n *Node) markSizes() { c.propH = float64(c.H) / float64(n.H) c.markSizes() } +} + +func (n *Node) markResize() { + n.markSizes() n.Resize(n.W, n.H) } @@ -318,7 +329,7 @@ func (n *Node) applyNewSize(size int, h bool) { a += c.H } } - n.markSizes() + n.markResize() } // hsplits a vertical split @@ -332,7 +343,7 @@ func (n *Node) vHSplit(i int, right bool) uint64 { } n.children = append(n.children, hn1, hn2) - n.markSizes() + n.markResize() return newid } else { nonrh, numr := n.getResizeInfo(true) @@ -368,7 +379,7 @@ func (n *Node) hVSplit(i int, right bool) uint64 { } n.children = append(n.children, vn1, vn2) - n.markSizes() + n.markResize() return newid } else { nonrw, numr := n.getResizeInfo(false) @@ -429,8 +440,15 @@ func (n *Node) unsplit(i int, h bool) { copy(n.children[i:], n.children[i+1:]) n.children[len(n.children)-1] = nil n.children = n.children[:len(n.children)-1] + log.Println(len(n.children)) nonrs, numr := n.getResizeInfo(h) + if numr == 0 { + // This means that this was the last child + // The parent will get cleaned up in the next iteration and + // will resolve all sizing issues with its parent + return + } size := (n.W - nonrs) / numr if h { size = (n.H - nonrs) / numr @@ -441,7 +459,7 @@ func (n *Node) unsplit(i int, h bool) { // Unsplit deletes this split and resizes everything // else accordingly func (n *Node) Unsplit() { - if !n.IsLeaf() || len(n.parent.children) <= 1 { + if !n.IsLeaf() { return } ind := 0 @@ -452,9 +470,14 @@ func (n *Node) Unsplit() { } if n.parent.Kind == STVert { n.parent.unsplit(ind, true) - return + } else { + n.parent.unsplit(ind, false) + } + + if n.parent.IsLeaf() { + log.Println("destroy parent") + n.parent.Unsplit() } - n.parent.unsplit(ind, false) } // String returns the string form of the node and all children (used for debugging) From 8aa05cf4096cb31aa10d664729e41ce35708d139 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 9 Jan 2019 20:07:18 -0500 Subject: [PATCH 055/231] Begin tab implementation --- cmd/micro/action/actions.go | 10 ++-- cmd/micro/action/bufhandler.go | 16 +++--- cmd/micro/action/command.go | 4 +- cmd/micro/action/editpane.go | 8 +-- cmd/micro/action/tab.go | 95 ++++++++++++++++++++++++++++++---- cmd/micro/display/tabbar.go | 57 ++++++++++++++++++++ cmd/micro/display/uiwindow.go | 18 +++---- cmd/micro/micro.go | 14 +++-- 8 files changed, 175 insertions(+), 47 deletions(-) create mode 100644 cmd/micro/display/tabbar.go diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index b9813723..e913ef0a 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -988,7 +988,7 @@ func (h *BufHandler) Escape() bool { // Quit this will close the current tab or view that is open func (h *BufHandler) Quit() bool { quit := func() { - if len(MainTab.Panes) > 1 { + if len(MainTab().Panes) > 1 { h.Unsplit() } else { screen.Screen.Fini() @@ -1039,12 +1039,12 @@ func (h *BufHandler) HSplitBinding() bool { // Unsplit closes all splits in the current tab except the active one func (h *BufHandler) Unsplit() bool { - n := MainTab.GetNode(h.splitID) + n := MainTab().GetNode(h.splitID) n.Unsplit() - MainTab.RemovePane(MainTab.GetPane(h.splitID)) - MainTab.Resize() - MainTab.SetActive(len(MainTab.Panes) - 1) + MainTab().RemovePane(MainTab().GetPane(h.splitID)) + MainTab().Resize() + MainTab().SetActive(len(MainTab().Panes) - 1) return false } diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 1eecf143..3beab69c 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -220,17 +220,17 @@ func (h *BufHandler) DoRuneInsert(r rune) { func (h *BufHandler) vsplit(buf *buffer.Buffer) { e := NewBufEditPane(0, 0, 0, 0, buf) - e.splitID = MainTab.GetNode(h.splitID).VSplit(h.Buf.Settings["splitright"].(bool)) - MainTab.Panes = append(MainTab.Panes, e) - MainTab.Resize() - MainTab.SetActive(len(MainTab.Panes) - 1) + e.splitID = MainTab().GetNode(h.splitID).VSplit(h.Buf.Settings["splitright"].(bool)) + MainTab().Panes = append(MainTab().Panes, e) + MainTab().Resize() + MainTab().SetActive(len(MainTab().Panes) - 1) } func (h *BufHandler) hsplit(buf *buffer.Buffer) { e := NewBufEditPane(0, 0, 0, 0, buf) - e.splitID = MainTab.GetNode(h.splitID).HSplit(h.Buf.Settings["splitbottom"].(bool)) - MainTab.Panes = append(MainTab.Panes, e) - MainTab.Resize() - MainTab.SetActive(len(MainTab.Panes) - 1) + e.splitID = MainTab().GetNode(h.splitID).HSplit(h.Buf.Settings["splitbottom"].(bool)) + MainTab().Panes = append(MainTab().Panes, e) + MainTab().Resize() + MainTab().SetActive(len(MainTab().Panes) - 1) } // BufKeyActions contains the list of all possible key actions the bufhandler could execute diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index aee63e71..6a89a98d 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -207,7 +207,7 @@ func VSplit(args []string) { } log.Println("loaded") - MainTab.CurPane().vsplit(buf) + MainTab().CurPane().vsplit(buf) } // HSplit opens a horizontal split with file given in the first argument @@ -219,7 +219,7 @@ func HSplit(args []string) { return } - MainTab.CurPane().hsplit(buf) + MainTab().CurPane().hsplit(buf) } // Eval evaluates a lua expression diff --git a/cmd/micro/action/editpane.go b/cmd/micro/action/editpane.go index cf9ad392..54218893 100644 --- a/cmd/micro/action/editpane.go +++ b/cmd/micro/action/editpane.go @@ -28,12 +28,12 @@ func NewBufEditPane(x, y, width, height int, b *buffer.Buffer) *EditPane { return e } -func NewTabPane(width, height int, b *buffer.Buffer) *TabPane { +func NewTabPane(x, y, width, height int, b *buffer.Buffer) *TabPane { t := new(TabPane) - t.Node = views.NewRoot(0, 0, width, height) - t.Window = display.NewUIWindow(t.Node) + t.Node = views.NewRoot(x, y, width, height) + t.UIWindow = display.NewUIWindow(t.Node) - e := NewBufEditPane(0, 0, width, height, b) + e := NewBufEditPane(x, y, width, height, b) e.splitID = t.ID() t.Panes = append(t.Panes, e) diff --git a/cmd/micro/action/tab.go b/cmd/micro/action/tab.go index b4c23d22..91794be9 100644 --- a/cmd/micro/action/tab.go +++ b/cmd/micro/action/tab.go @@ -8,30 +8,102 @@ import ( "github.com/zyedidia/tcell" ) -var MainTab *TabPane +type TabList struct { + *display.TabWindow + List []*TabPane + Active int +} +func NewTabList(bufs []*buffer.Buffer) *TabList { + w, h := screen.Screen.Size() + tl := new(TabList) + tl.List = make([]*TabPane, len(bufs)) + if len(bufs) > 1 { + for i, b := range bufs { + tl.List[i] = NewTabPane(0, 1, w, h-2, b) + } + } else { + tl.List[0] = NewTabPane(0, 0, w, h-1, bufs[0]) + } + tl.TabWindow = display.NewTabWindow(w, 0) + tl.Names = make([]string, len(bufs)) + tl.UpdateNames() + + return tl +} + +func (t *TabList) UpdateNames() { + t.Names = t.Names[:0] + for _, p := range t.List { + t.Names = append(t.Names, p.Panes[p.active].Buf.GetName()) + } +} + +func (t *TabList) HandleEvent(event tcell.Event) { + switch e := event.(type) { + case *tcell.EventResize: + w, h := screen.Screen.Size() + InfoBar.Resize(w, h-1) + if len(t.List) > 1 { + for _, p := range t.List { + p.Node.Resize(w, h-2) + p.Resize() + } + } else { + t.List[0].Node.Resize(w, h-2) + t.List[0].Resize() + } + case *tcell.EventMouse: + switch e.Buttons() { + case tcell.Button1: + } + + } + t.List[t.Active].HandleEvent(event) +} + +func (t *TabList) Display() { + if len(t.List) > 1 { + t.TabWindow.Display() + } +} + +var Tabs *TabList + +func InitTabs(bufs []*buffer.Buffer) { + Tabs = NewTabList(bufs) +} + +func MainTab() *TabPane { + return Tabs.List[Tabs.Active] +} + +// A TabPane represents a single tab +// It consists of a list of edit panes (the open buffers), +// a split tree (stored as just the root node), and a uiwindow +// to display the UI elements like the borders between splits type TabPane struct { *views.Node - display.Window + *display.UIWindow Panes []*EditPane active int resizing *views.Node // node currently being resized } +// HandleEvent takes a tcell event and usually dispatches it to the current +// active pane. However if the event is a resize or a mouse event where the user +// is interacting with the UI (resizing splits) then the event is consumed here +// If the event is a mouse event in a pane, that pane will become active and get +// the event func (t *TabPane) HandleEvent(event tcell.Event) { switch e := event.(type) { - case *tcell.EventResize: - w, h := screen.Screen.Size() - InfoBar.Resize(w, h-1) - t.Node.Resize(w, h-1) - t.Resize() case *tcell.EventMouse: switch e.Buttons() { case tcell.Button1: mx, my := e.Position() - resizeID := t.GetMouseLoc(buffer.Loc{mx, my}).X + resizeID := t.GetMouseSplitID(buffer.Loc{mx, my}) if t.resizing != nil { var size int if t.resizing.Kind == views.STVert { @@ -44,7 +116,7 @@ func (t *TabPane) HandleEvent(event tcell.Event) { return } - if resizeID != -1 { + if resizeID != 0 { t.resizing = t.GetNode(uint64(resizeID)) return } @@ -67,6 +139,7 @@ func (t *TabPane) HandleEvent(event tcell.Event) { t.Panes[t.active].HandleEvent(event) } +// SetActive changes the currently active pane to the specified index func (t *TabPane) SetActive(i int) { t.active = i for j, p := range t.Panes { @@ -78,6 +151,7 @@ func (t *TabPane) SetActive(i int) { } } +// GetPane returns the pane with the given split index func (t *TabPane) GetPane(splitid uint64) int { for i, p := range t.Panes { if p.splitID == splitid { @@ -87,12 +161,14 @@ func (t *TabPane) GetPane(splitid uint64) int { return 0 } +// Remove pane removes the pane with the given index func (t *TabPane) RemovePane(i int) { copy(t.Panes[i:], t.Panes[i+1:]) t.Panes[len(t.Panes)-1] = nil // or the zero value of T t.Panes = t.Panes[:len(t.Panes)-1] } +// Resize resizes all panes according to their corresponding split nodes func (t *TabPane) Resize() { for i, p := range t.Panes { n := t.GetNode(p.splitID) @@ -107,6 +183,7 @@ func (t *TabPane) Resize() { } } +// CurPane returns the currently active pane func (t *TabPane) CurPane() *EditPane { return t.Panes[t.active] } diff --git a/cmd/micro/display/tabbar.go b/cmd/micro/display/tabbar.go new file mode 100644 index 00000000..4527aa0f --- /dev/null +++ b/cmd/micro/display/tabbar.go @@ -0,0 +1,57 @@ +package display + +import ( + "log" + + "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/cmd/micro/screen" +) + +type TabWindow struct { + Names []string + Active int + width int + hscroll int + y int +} + +func NewTabWindow(w int, y int) *TabWindow { + tw := new(TabWindow) + tw.width = w + tw.y = y + return tw +} + +func (w *TabWindow) Display() { + x := -w.hscroll + + draw := func(r rune, n int) { + for i := 0; i < n; i++ { + screen.Screen.SetContent(x, w.y, r, nil, config.DefStyle.Reverse(true)) + x++ + log.Println(x) + } + } + + for i, n := range w.Names { + if i == w.Active { + draw('[', 1) + } + for _, c := range n { + draw(c, 1) + } + if i == w.Active { + draw(']', 1) + draw(' ', 3) + } else { + draw(' ', 4) + } + if x >= w.width { + break + } + } + + if x < w.width { + draw(' ', w.width-x) + } +} diff --git a/cmd/micro/display/uiwindow.go b/cmd/micro/display/uiwindow.go index 1c9210eb..50f94a3c 100644 --- a/cmd/micro/display/uiwindow.go +++ b/cmd/micro/display/uiwindow.go @@ -36,36 +36,32 @@ func (w *UIWindow) Display() { w.drawNode(w.root) } -func (w *UIWindow) Clear() {} -func (w *UIWindow) Relocate() bool { return false } -func (w *UIWindow) GetView() *View { return nil } -func (w *UIWindow) SetView(*View) {} -func (w *UIWindow) GetMouseLoc(vloc buffer.Loc) buffer.Loc { - var mouseLoc func(*views.Node) buffer.Loc - mouseLoc = func(n *views.Node) buffer.Loc { +func (w *UIWindow) GetMouseSplitID(vloc buffer.Loc) uint64 { + var mouseLoc func(*views.Node) uint64 + mouseLoc = func(n *views.Node) uint64 { cs := n.Children() for i, c := range cs { if c.Kind == views.STVert { if i != len(cs)-1 { if vloc.X == c.X+c.W && vloc.Y >= c.Y && vloc.Y < c.Y+c.H { - return buffer.Loc{int(c.ID()), 0} + return c.ID() } } } else if c.Kind == views.STHoriz { if i != len(cs)-1 { if vloc.Y == c.Y+c.H-1 && vloc.X >= c.X && vloc.X < c.X+c.W { - return buffer.Loc{int(c.ID()), 0} + return c.ID() } } } } for _, c := range cs { m := mouseLoc(c) - if m.X != -1 { + if m != 0 { return m } } - return buffer.Loc{-1, 0} + return 0 } return mouseLoc(w.root) } diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index e711bec7..50e36d86 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -185,11 +185,8 @@ func main() { } }() - b := LoadInput()[0] - width, height := screen.Screen.Size() - - action.MainTab = action.NewTabPane(width, height-1, b) - + b := LoadInput() + action.InitTabs(b) action.InitGlobals() // Here is the event loop which runs in a separate thread @@ -206,10 +203,11 @@ func main() { // Display everything screen.Screen.Fill(' ', config.DefStyle) screen.Screen.HideCursor() - for _, ep := range action.MainTab.Panes { + action.Tabs.Display() + for _, ep := range action.MainTab().Panes { ep.Display() } - action.MainTab.Display() + action.MainTab().Display() action.InfoBar.Display() screen.Screen.Show() @@ -227,7 +225,7 @@ func main() { if action.InfoBar.HasPrompt { action.InfoBar.HandleEvent(event) } else { - action.MainTab.HandleEvent(event) + action.MainTab().HandleEvent(event) } } } From eec4e535b4ff50bc8a294a27ba85c3c8de77e4d3 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 9 Jan 2019 22:13:50 -0500 Subject: [PATCH 056/231] Add tabbar and tab mouse support --- cmd/micro/action/command.go | 2 - cmd/micro/action/tab.go | 37 +++++++++--- cmd/micro/display/tabbar.go | 57 ------------------ cmd/micro/display/tabwindow.go | 105 +++++++++++++++++++++++++++++++++ cmd/micro/micro.go | 2 +- cmd/micro/util/message.go | 3 - 6 files changed, 135 insertions(+), 71 deletions(-) delete mode 100644 cmd/micro/display/tabbar.go create mode 100644 cmd/micro/display/tabwindow.go diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 6a89a98d..dc2dcf72 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -1,7 +1,6 @@ package action import ( - "log" "os" "github.com/zyedidia/micro/cmd/micro/buffer" @@ -206,7 +205,6 @@ func VSplit(args []string) { return } - log.Println("loaded") MainTab().CurPane().vsplit(buf) } diff --git a/cmd/micro/action/tab.go b/cmd/micro/action/tab.go index 91794be9..0dd8e662 100644 --- a/cmd/micro/action/tab.go +++ b/cmd/micro/action/tab.go @@ -10,8 +10,7 @@ import ( type TabList struct { *display.TabWindow - List []*TabPane - Active int + List []*TabPane } func NewTabList(bufs []*buffer.Buffer) *TabList { @@ -50,14 +49,28 @@ func (t *TabList) HandleEvent(event tcell.Event) { p.Resize() } } else { - t.List[0].Node.Resize(w, h-2) + t.List[0].Node.Resize(w, h-1) t.List[0].Resize() } case *tcell.EventMouse: + mx, my := e.Position() switch e.Buttons() { case tcell.Button1: + ind := t.GetMouseLoc(buffer.Loc{mx, my}) + if ind != -1 { + t.Active = ind + } + case tcell.WheelUp: + if my == t.Y { + t.Scroll(4) + return + } + case tcell.WheelDown: + if my == t.Y { + t.Scroll(-4) + return + } } - } t.List[t.Active].HandleEvent(event) } @@ -99,10 +112,9 @@ type TabPane struct { func (t *TabPane) HandleEvent(event tcell.Event) { switch e := event.(type) { case *tcell.EventMouse: + mx, my := e.Position() switch e.Buttons() { case tcell.Button1: - mx, my := e.Position() - resizeID := t.GetMouseSplitID(buffer.Loc{mx, my}) if t.resizing != nil { var size int @@ -133,6 +145,15 @@ func (t *TabPane) HandleEvent(event tcell.Event) { } case tcell.ButtonNone: t.resizing = nil + default: + for _, p := range t.Panes { + v := p.GetView() + inpane := mx >= v.X && mx < v.X+v.Width && my >= v.Y && my < v.Y+v.Height + if inpane { + p.HandleEvent(event) + return + } + } } } @@ -170,11 +191,11 @@ func (t *TabPane) RemovePane(i int) { // Resize resizes all panes according to their corresponding split nodes func (t *TabPane) Resize() { - for i, p := range t.Panes { + for _, p := range t.Panes { n := t.GetNode(p.splitID) pv := p.GetView() offset := 0 - if i != 0 { + if n.X != 0 { offset = 1 } pv.X, pv.Y = n.X+offset, n.Y diff --git a/cmd/micro/display/tabbar.go b/cmd/micro/display/tabbar.go deleted file mode 100644 index 4527aa0f..00000000 --- a/cmd/micro/display/tabbar.go +++ /dev/null @@ -1,57 +0,0 @@ -package display - -import ( - "log" - - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/screen" -) - -type TabWindow struct { - Names []string - Active int - width int - hscroll int - y int -} - -func NewTabWindow(w int, y int) *TabWindow { - tw := new(TabWindow) - tw.width = w - tw.y = y - return tw -} - -func (w *TabWindow) Display() { - x := -w.hscroll - - draw := func(r rune, n int) { - for i := 0; i < n; i++ { - screen.Screen.SetContent(x, w.y, r, nil, config.DefStyle.Reverse(true)) - x++ - log.Println(x) - } - } - - for i, n := range w.Names { - if i == w.Active { - draw('[', 1) - } - for _, c := range n { - draw(c, 1) - } - if i == w.Active { - draw(']', 1) - draw(' ', 3) - } else { - draw(' ', 4) - } - if x >= w.width { - break - } - } - - if x < w.width { - draw(' ', w.width-x) - } -} diff --git a/cmd/micro/display/tabwindow.go b/cmd/micro/display/tabwindow.go new file mode 100644 index 00000000..6c1e9946 --- /dev/null +++ b/cmd/micro/display/tabwindow.go @@ -0,0 +1,105 @@ +package display + +import ( + "unicode/utf8" + + "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/cmd/micro/util" +) + +type TabWindow struct { + Names []string + Active int + Y int + width int + hscroll int +} + +func NewTabWindow(w int, y int) *TabWindow { + tw := new(TabWindow) + tw.width = w + tw.Y = y + return tw +} + +func (w *TabWindow) GetMouseLoc(vloc buffer.Loc) int { + x := -w.hscroll + + for i, n := range w.Names { + x++ + s := utf8.RuneCountInString(n) + if vloc.Y == w.Y && vloc.X < x+s { + return i + } + x += s + x += 3 + if x >= w.width { + break + } + } + return -1 +} + +func (w *TabWindow) Scroll(amt int) { + w.hscroll += amt + w.hscroll = util.Clamp(w.hscroll, 0, w.TotalSize()-w.width) +} + +func (w *TabWindow) TotalSize() int { + sum := 2 + for _, n := range w.Names { + sum += utf8.RuneCountInString(n) + 4 + } + return sum - 4 +} + +// TODO: handle files with character width >=2 + +func (w *TabWindow) Display() { + x := -w.hscroll + done := false + + draw := func(r rune, n int) { + for i := 0; i < n; i++ { + if x == w.width-1 && !done { + screen.Screen.SetContent(w.width-1, w.Y, '>', nil, config.DefStyle.Reverse(true)) + x++ + break + } else if x == 0 && w.hscroll > 0 { + screen.Screen.SetContent(0, w.Y, '<', nil, config.DefStyle.Reverse(true)) + } else if x >= 0 && x < w.width { + screen.Screen.SetContent(x, w.Y, r, nil, config.DefStyle.Reverse(true)) + } + x++ + } + } + + for i, n := range w.Names { + if i == w.Active { + draw('[', 1) + } else { + draw(' ', 1) + } + for _, c := range n { + draw(c, 1) + } + if i == len(w.Names)-1 { + done = true + } + if i == w.Active { + draw(']', 1) + draw(' ', 2) + } else { + draw(' ', 3) + } + if x >= w.width { + break + } + } + + if x < w.width { + draw(' ', w.width-x) + } +} diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 50e36d86..1870911b 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -225,7 +225,7 @@ func main() { if action.InfoBar.HasPrompt { action.InfoBar.HandleEvent(event) } else { - action.MainTab().HandleEvent(event) + action.Tabs.HandleEvent(event) } } } diff --git a/cmd/micro/util/message.go b/cmd/micro/util/message.go index 3b31cd17..2a1ddce1 100644 --- a/cmd/micro/util/message.go +++ b/cmd/micro/util/message.go @@ -3,7 +3,6 @@ package util import ( "bufio" "fmt" - "log" "os" "strconv" @@ -17,9 +16,7 @@ import ( // This will write the message, and wait for the user // to press and key to continue func TermMessage(msg ...interface{}) { - log.Println(msg) screen.TempFini() - log.Println("fini") fmt.Println(msg...) fmt.Print("\nPress enter to continue") From 0febfd2c80cb6e00186958f0933c92eaa14e1fc9 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 9 Jan 2019 23:44:53 -0500 Subject: [PATCH 057/231] Better tab mUI --- cmd/micro/action/actions.go | 49 ++++++++++++++++++++++++++ cmd/micro/action/tab.go | 63 +++++++++++++++++++++++++--------- cmd/micro/display/tabwindow.go | 28 +++++++++++++-- 3 files changed, 121 insertions(+), 19 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index e913ef0a..dcb47695 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -308,6 +308,29 @@ func (h *BufHandler) ParagraphNext() bool { // Retab changes all tabs to spaces or all spaces to tabs depending // on the user's settings func (h *BufHandler) Retab() bool { + // b := h.Buf + // toSpaces := b.Settings["tabstospaces"].(bool) + // tabsize := util.IntOpt(b.Settings["tabsize"]) + // dirty := false + // + // for i := 0; i < b.LinesNum(); i++ { + // l := b.LineBytes(i) + // + // ws := util.GetLeadingWhitespace(l) + // if len(ws) != 0 { + // if toSpaces { + // ws = bytes.Replace(ws, []byte("\t"), []byte(util.Spaces(tabsize)), -1) + // } else { + // ws = bytes.Replace(ws, []byte(util.Spaces(tabsize)), []byte("\t"), -1) + // } + // } + // + // l = bytes.TrimLeft(l, " \t") + // b.lines[i].data = append(ws, l...) + // dirty = true + // } + // + // b.IsModified = dirty return true } @@ -990,8 +1013,11 @@ func (h *BufHandler) Quit() bool { quit := func() { if len(MainTab().Panes) > 1 { h.Unsplit() + } else if len(Tabs.List) > 1 { + Tabs.RemoveTab(h.splitID) } else { screen.Screen.Fini() + InfoBar.Close() os.Exit(0) } } @@ -1014,26 +1040,41 @@ func (h *BufHandler) QuitAll() bool { // AddTab adds a new tab with an empty buffer func (h *BufHandler) AddTab() bool { + width, height := screen.Screen.Size() + b := buffer.NewBufferFromString("", "", buffer.BTDefault) + tp := NewTabPane(0, 0, width, height-1, b) + Tabs.AddTab(tp) + Tabs.SetActive(len(Tabs.List) - 1) + return true } // PreviousTab switches to the previous tab in the tab list func (h *BufHandler) PreviousTab() bool { + a := Tabs.Active() + Tabs.SetActive(util.Clamp(a-1, 0, len(Tabs.List)-1)) + return false } // NextTab switches to the next tab in the tab list func (h *BufHandler) NextTab() bool { + a := Tabs.Active() + Tabs.SetActive(util.Clamp(a+1, 0, len(Tabs.List)-1)) return false } // VSplitBinding opens an empty vertical split func (h *BufHandler) VSplitBinding() bool { + h.vsplit(buffer.NewBufferFromString("", "", buffer.BTDefault)) + return false } // HSplitBinding opens an empty horizontal split func (h *BufHandler) HSplitBinding() bool { + h.hsplit(buffer.NewBufferFromString("", "", buffer.BTDefault)) + return false } @@ -1050,11 +1091,19 @@ func (h *BufHandler) Unsplit() bool { // NextSplit changes the view to the next split func (h *BufHandler) NextSplit() bool { + a := MainTab().active + a = util.Clamp(a+1, 0, len(MainTab().Panes)) + MainTab().SetActive(a) + return false } // PreviousSplit changes the view to the previous split func (h *BufHandler) PreviousSplit() bool { + a := MainTab().active + a = util.Clamp(a-1, 0, len(MainTab().Panes)) + MainTab().SetActive(a) + return false } diff --git a/cmd/micro/action/tab.go b/cmd/micro/action/tab.go index 0dd8e662..90f58a35 100644 --- a/cmd/micro/action/tab.go +++ b/cmd/micro/action/tab.go @@ -26,7 +26,6 @@ func NewTabList(bufs []*buffer.Buffer) *TabList { } tl.TabWindow = display.NewTabWindow(w, 0) tl.Names = make([]string, len(bufs)) - tl.UpdateNames() return tl } @@ -38,27 +37,58 @@ func (t *TabList) UpdateNames() { } } +func (t *TabList) AddTab(p *TabPane) { + t.List = append(t.List, p) + t.Resize() + t.UpdateNames() +} + +func (t *TabList) RemoveTab(id uint64) { + for i, p := range t.List { + if len(p.Panes) == 0 { + continue + } + if p.Panes[0].splitID == id { + copy(t.List[i:], t.List[i+1:]) + t.List[len(t.List)-1] = nil + t.List = t.List[:len(t.List)-1] + if t.Active() >= len(t.List) { + t.SetActive(len(t.List) - 1) + } + t.Resize() + t.UpdateNames() + return + } + } +} + +func (t *TabList) Resize() { + w, h := screen.Screen.Size() + InfoBar.Resize(w, h-1) + if len(t.List) > 1 { + for _, p := range t.List { + p.Y = 1 + p.Node.Resize(w, h-2) + p.Resize() + } + } else if len(t.List) == 1 { + t.List[0].Y = 0 + t.List[0].Node.Resize(w, h-1) + t.List[0].Resize() + } +} + func (t *TabList) HandleEvent(event tcell.Event) { switch e := event.(type) { case *tcell.EventResize: - w, h := screen.Screen.Size() - InfoBar.Resize(w, h-1) - if len(t.List) > 1 { - for _, p := range t.List { - p.Node.Resize(w, h-2) - p.Resize() - } - } else { - t.List[0].Node.Resize(w, h-1) - t.List[0].Resize() - } + t.Resize() case *tcell.EventMouse: mx, my := e.Position() switch e.Buttons() { case tcell.Button1: ind := t.GetMouseLoc(buffer.Loc{mx, my}) if ind != -1 { - t.Active = ind + t.SetActive(ind) } case tcell.WheelUp: if my == t.Y { @@ -72,10 +102,11 @@ func (t *TabList) HandleEvent(event tcell.Event) { } } } - t.List[t.Active].HandleEvent(event) + t.List[t.Active()].HandleEvent(event) } func (t *TabList) Display() { + t.UpdateNames() if len(t.List) > 1 { t.TabWindow.Display() } @@ -88,7 +119,7 @@ func InitTabs(bufs []*buffer.Buffer) { } func MainTab() *TabPane { - return Tabs.List[Tabs.Active] + return Tabs.List[Tabs.Active()] } // A TabPane represents a single tab @@ -185,7 +216,7 @@ func (t *TabPane) GetPane(splitid uint64) int { // Remove pane removes the pane with the given index func (t *TabPane) RemovePane(i int) { copy(t.Panes[i:], t.Panes[i+1:]) - t.Panes[len(t.Panes)-1] = nil // or the zero value of T + t.Panes[len(t.Panes)-1] = nil t.Panes = t.Panes[:len(t.Panes)-1] } diff --git a/cmd/micro/display/tabwindow.go b/cmd/micro/display/tabwindow.go index 6c1e9946..48c4c8b0 100644 --- a/cmd/micro/display/tabwindow.go +++ b/cmd/micro/display/tabwindow.go @@ -11,7 +11,7 @@ import ( type TabWindow struct { Names []string - Active int + active int Y int width int hscroll int @@ -55,6 +55,28 @@ func (w *TabWindow) TotalSize() int { return sum - 4 } +func (w *TabWindow) Active() int { + return w.active +} + +func (w *TabWindow) SetActive(a int) { + w.active = a + x := 2 + s := w.TotalSize() + for i, n := range w.Names { + c := utf8.RuneCountInString(n) + if i == a { + if x+c >= w.hscroll+w.width { + w.hscroll = util.Clamp(x+c+1-w.width, 0, s-w.width) + } else if x < w.hscroll { + w.hscroll = util.Clamp(x-4, 0, s-w.width) + } + break + } + x += c + 4 + } +} + // TODO: handle files with character width >=2 func (w *TabWindow) Display() { @@ -77,7 +99,7 @@ func (w *TabWindow) Display() { } for i, n := range w.Names { - if i == w.Active { + if i == w.active { draw('[', 1) } else { draw(' ', 1) @@ -88,7 +110,7 @@ func (w *TabWindow) Display() { if i == len(w.Names)-1 { done = true } - if i == w.Active { + if i == w.active { draw(']', 1) draw(' ', 2) } else { From c479c9d91a60d5065ba89493d9f8c96de5f9f43f Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 10 Jan 2019 16:37:05 -0500 Subject: [PATCH 058/231] Add shell command support --- cmd/micro/action/actions.go | 18 ++-- cmd/micro/action/actions_posix.go | 4 +- cmd/micro/action/bufhandler.go | 2 - cmd/micro/action/command.go | 11 +++ cmd/micro/display/uiwindow.go | 7 +- cmd/micro/micro.go | 29 +++---- cmd/micro/screen/screen.go | 16 ++-- cmd/micro/shell/shell.go | 131 ++++++++++++++++++++++++++++++ cmd/micro/util/message.go | 4 +- 9 files changed, 186 insertions(+), 36 deletions(-) create mode 100644 cmd/micro/shell/shell.go diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index dcb47695..3a6e74da 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -10,6 +10,7 @@ import ( "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/cmd/micro/shell" "github.com/zyedidia/micro/cmd/micro/util" "github.com/zyedidia/tcell" ) @@ -370,16 +371,6 @@ func (h *BufHandler) SelectToEnd() bool { return true } -// InsertSpace inserts a space -func (h *BufHandler) InsertSpace() bool { - if h.Cursor.HasSelection() { - h.Cursor.DeleteSelection() - h.Cursor.ResetSelection() - } - h.Buf.Insert(h.Cursor.Loc, " ") - return true -} - // InsertNewline inserts a newline plus possible some whitespace if autoindent is on func (h *BufHandler) InsertNewline() bool { if h.Buf.Type == buffer.BTInfo { @@ -984,6 +975,13 @@ func (h *BufHandler) ToggleKeyMenu() bool { // ShellMode opens a terminal to run a shell command func (h *BufHandler) ShellMode() bool { + InfoBar.Prompt("$ ", "", "Shell", nil, func(resp string, canceled bool) { + if !canceled { + // The true here is for openTerm to make the command interactive + shell.RunInteractiveShell(resp, true, false) + } + }) + return false } diff --git a/cmd/micro/action/actions_posix.go b/cmd/micro/action/actions_posix.go index 46eac8af..e91ea256 100644 --- a/cmd/micro/action/actions_posix.go +++ b/cmd/micro/action/actions_posix.go @@ -13,7 +13,7 @@ import ( // This only works on linux and has no default binding. // This code was adapted from the suspend code in nsf/godit func (*BufHandler) Suspend() bool { - screen.TempFini() + screenb := screen.TempFini() // suspend the process pid := syscall.Getpid() @@ -22,7 +22,7 @@ func (*BufHandler) Suspend() bool { util.TermMessage(err) } - screen.TempStart() + screen.TempStart(screenb) return false } diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 3beab69c..4af5be99 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -261,7 +261,6 @@ var BufKeyActions = map[string]BufKeyAction{ "ParagraphPrevious": (*BufHandler).ParagraphPrevious, "ParagraphNext": (*BufHandler).ParagraphNext, "InsertNewline": (*BufHandler).InsertNewline, - "InsertSpace": (*BufHandler).InsertSpace, "Backspace": (*BufHandler).Backspace, "Delete": (*BufHandler).Delete, "InsertTab": (*BufHandler).InsertTab, @@ -370,7 +369,6 @@ var MultiActions = []string{ "ParagraphPrevious", "ParagraphNext", "InsertNewline", - "InsertSpace", "Backspace", "Delete", "InsertTab", diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index dc2dcf72..27b16729 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -4,6 +4,8 @@ import ( "os" "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/cmd/micro/shell" "github.com/zyedidia/micro/cmd/micro/shellwords" "github.com/zyedidia/micro/cmd/micro/util" ) @@ -260,6 +262,15 @@ func Bind(args []string) { // Run runs a shell command in the background func Run(args []string) { + runf, err := shell.RunBackgroundShell(shellwords.Join(args...)) + if err != nil { + InfoBar.Error(err) + } else { + go func() { + InfoBar.Message(runf()) + screen.Redraw() + }() + } } // Quit closes the main view diff --git a/cmd/micro/display/uiwindow.go b/cmd/micro/display/uiwindow.go index 50f94a3c..493bd5c9 100644 --- a/cmd/micro/display/uiwindow.go +++ b/cmd/micro/display/uiwindow.go @@ -19,11 +19,16 @@ func NewUIWindow(n *views.Node) *UIWindow { func (w *UIWindow) drawNode(n *views.Node) { cs := n.Children() + dividerStyle := config.DefStyle + if style, ok := config.Colorscheme["divider"]; ok { + dividerStyle = style + } + for i, c := range cs { if c.IsLeaf() && c.Kind == views.STVert { if i != len(cs)-1 { for h := 0; h < c.H; h++ { - screen.Screen.SetContent(c.X+c.W, c.Y+h, '|', nil, config.DefStyle.Reverse(true)) + screen.Screen.SetContent(c.X+c.W, c.Y+h, '|', nil, dividerStyle.Reverse(true)) } } } else { diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 1870911b..52507427 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -190,14 +190,17 @@ func main() { action.InitGlobals() // Here is the event loop which runs in a separate thread - // go func() { - // events = make(chan tcell.Event) - // for { - // screen.Lock() - // events <- screen.Screen.PollEvent() - // screen.Unlock() - // } - // }() + go func() { + events = make(chan tcell.Event) + for { + screen.Lock() + e := screen.Screen.PollEvent() + screen.Unlock() + if e != nil { + events <- e + } + } + }() for { // Display everything @@ -214,12 +217,10 @@ func main() { var event tcell.Event // Check for new events - screen.Lock() - event = screen.Screen.PollEvent() - screen.Unlock() - // select { - // case event = <-events: - // } + select { + case event = <-events: + case <-screen.DrawChan: + } if event != nil { if action.InfoBar.HasPrompt { diff --git a/cmd/micro/screen/screen.go b/cmd/micro/screen/screen.go index 72fc0d08..54ffe90d 100644 --- a/cmd/micro/screen/screen.go +++ b/cmd/micro/screen/screen.go @@ -18,6 +18,7 @@ import ( // same time too. var Screen tcell.Screen var lock sync.Mutex +var DrawChan chan bool func Lock() { lock.Lock() @@ -27,21 +28,24 @@ func Unlock() { lock.Unlock() } -var screenWasNil bool +func Redraw() { + DrawChan <- true +} // TempFini shuts the screen down temporarily -func TempFini() { - screenWasNil = Screen == nil +func TempFini() bool { + screenWasNil := Screen == nil if !screenWasNil { - Lock() Screen.Fini() + Lock() Screen = nil } + return screenWasNil } // TempStart restarts the screen after it was temporarily disabled -func TempStart() { +func TempStart(screenWasNil bool) { if !screenWasNil { Init() Unlock() @@ -50,6 +54,8 @@ func TempStart() { // Init creates and initializes the tcell screen func Init() { + DrawChan = make(chan bool) + // Should we enable true color? truecolor := os.Getenv("MICRO_TRUECOLOR") == "1" diff --git a/cmd/micro/shell/shell.go b/cmd/micro/shell/shell.go new file mode 100644 index 00000000..9c57d616 --- /dev/null +++ b/cmd/micro/shell/shell.go @@ -0,0 +1,131 @@ +package shell + +import ( + "bytes" + "fmt" + "io" + "os" + "os/exec" + "os/signal" + "strings" + + "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/cmd/micro/shellwords" + "github.com/zyedidia/micro/cmd/micro/util" +) + +// ExecCommand executes a command using exec +// It returns any output/errors +func ExecCommand(name string, arg ...string) (string, error) { + var err error + cmd := exec.Command(name, arg...) + outputBytes := &bytes.Buffer{} + cmd.Stdout = outputBytes + cmd.Stderr = outputBytes + err = cmd.Start() + if err != nil { + return "", err + } + err = cmd.Wait() // wait for command to finish + outstring := outputBytes.String() + return outstring, err +} + +// RunCommand executes a shell command and returns the output/error +func RunCommand(input string) (string, error) { + args, err := shellwords.Split(input) + if err != nil { + return "", err + } + inputCmd := args[0] + + return ExecCommand(inputCmd, args[1:]...) +} + +// RunBackgroundShell runs a shell command in the background +// It returns a function which will run the command and returns a string +// message result +func RunBackgroundShell(input string) (func() string, error) { + args, err := shellwords.Split(input) + if err != nil { + return nil, err + } + inputCmd := args[0] + return func() string { + output, err := RunCommand(input) + totalLines := strings.Split(output, "\n") + + str := output + if len(totalLines) < 3 { + if err == nil { + str = fmt.Sprint(inputCmd, " exited without error") + } else { + str = fmt.Sprint(inputCmd, " exited with error: ", err, ": ", output) + } + } + return str + }, nil +} + +// RunInteractiveShell runs a shellcommand interactively +func RunInteractiveShell(input string, wait bool, getOutput bool) (string, error) { + args, err := shellwords.Split(input) + if err != nil { + return "", err + } + inputCmd := args[0] + + // Shut down the screen because we're going to interact directly with the shell + screenb := screen.TempFini() + + args = args[1:] + + // Set up everything for the command + outputBytes := &bytes.Buffer{} + cmd := exec.Command(inputCmd, args...) + cmd.Stdin = os.Stdin + if getOutput { + cmd.Stdout = io.MultiWriter(os.Stdout, outputBytes) + } else { + cmd.Stdout = os.Stdout + } + cmd.Stderr = os.Stderr + + // This is a trap for Ctrl-C so that it doesn't kill micro + // Instead we trap Ctrl-C to kill the program we're running + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt) + go func() { + for range c { + cmd.Process.Kill() + } + }() + + cmd.Start() + err = cmd.Wait() + + output := outputBytes.String() + + if wait { + // This is just so we don't return right away and let the user press enter to return + util.TermMessage("") + } + + // Start the screen back up + screen.TempStart(screenb) + + return output, err +} + +// UserCommand runs the shell command +// The openTerm argument specifies whether a terminal should be opened (for viewing output +// or interacting with stdin) +// func UserCommand(input string, openTerm bool, waitToFinish bool) string { +// if !openTerm { +// RunBackgroundShell(input) +// return "" +// } else { +// output, _ := RunInteractiveShell(input, waitToFinish, false) +// return output +// } +// } diff --git a/cmd/micro/util/message.go b/cmd/micro/util/message.go index 2a1ddce1..efaf059d 100644 --- a/cmd/micro/util/message.go +++ b/cmd/micro/util/message.go @@ -16,7 +16,7 @@ import ( // This will write the message, and wait for the user // to press and key to continue func TermMessage(msg ...interface{}) { - screen.TempFini() + screenb := screen.TempFini() fmt.Println(msg...) fmt.Print("\nPress enter to continue") @@ -24,7 +24,7 @@ func TermMessage(msg ...interface{}) { reader := bufio.NewReader(os.Stdin) reader.ReadString('\n') - screen.TempStart() + screen.TempStart(screenb) } // TermError sends an error to the user in the terminal. Like TermMessage except formatted From 4146730aafdaaf7f70a0261b3f3679c2b98acae9 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 10 Jan 2019 21:26:58 -0500 Subject: [PATCH 059/231] Start terminal emulator --- cmd/micro/action/actions.go | 50 ++++++------- cmd/micro/action/bufhandler.go | 13 ++-- cmd/micro/action/editpane.go | 6 ++ cmd/micro/action/events.go | 2 - cmd/micro/action/termhandler.go | 66 +++++++++++++++++ cmd/micro/display/termwindow.go | 87 ++++++++++++++++++++++ cmd/micro/shell/terminal.go | 127 ++++++++++++++++++++++++++++++++ 7 files changed, 318 insertions(+), 33 deletions(-) create mode 100644 cmd/micro/action/termhandler.go create mode 100644 cmd/micro/display/termwindow.go create mode 100644 cmd/micro/shell/terminal.go diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 3a6e74da..14dded21 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -17,19 +17,19 @@ import ( // ScrollUp is not an action func (h *BufHandler) ScrollUp(n int) { - v := h.Win.GetView() + v := h.GetView() if v.StartLine >= n { v.StartLine -= n - h.Win.SetView(v) + h.SetView(v) } } // ScrollDown is not an action func (h *BufHandler) ScrollDown(n int) { - v := h.Win.GetView() + v := h.GetView() if v.StartLine <= h.Buf.LinesNum()-1-n { v.StartLine += n - h.Win.SetView(v) + h.SetView(v) } } @@ -38,12 +38,12 @@ func (h *BufHandler) ScrollDown(n int) { func (h *BufHandler) MousePress(e *tcell.EventMouse) bool { b := h.Buf mx, my := e.Position() - mouseLoc := h.Win.GetMouseLoc(buffer.Loc{mx, my}) + mouseLoc := h.GetMouseLoc(buffer.Loc{mx, my}) h.Cursor.Loc = mouseLoc if h.mouseReleased { if b.NumCursors() > 1 { b.ClearCursors() - h.Win.Relocate() + h.Relocate() } if time.Since(h.lastClickTime)/time.Millisecond < config.DoubleClickThreshold && (mouseLoc.X == h.lastLoc.X && mouseLoc.Y == h.lastLoc.Y) { if h.doubleClick { @@ -104,7 +104,7 @@ func (h *BufHandler) ScrollDownAction() bool { // Center centers the view on the cursor func (h *BufHandler) Center() bool { - v := h.Win.GetView() + v := h.GetView() v.StartLine = h.Cursor.Y - v.Height/2 if v.StartLine+v.Height > h.Buf.LinesNum() { v.StartLine = h.Buf.LinesNum() - v.Height @@ -112,7 +112,7 @@ func (h *BufHandler) Center() bool { if v.StartLine < 0 { v.StartLine = 0 } - h.Win.SetView(v) + h.SetView(v) return true } @@ -826,19 +826,19 @@ func (h *BufHandler) OpenFile() bool { // Start moves the viewport to the start of the buffer func (h *BufHandler) Start() bool { - v := h.Win.GetView() + v := h.GetView() v.StartLine = 0 - h.Win.SetView(v) + h.SetView(v) return false } // End moves the viewport to the end of the buffer func (h *BufHandler) End() bool { // TODO: softwrap problems? - v := h.Win.GetView() + v := h.GetView() if v.Height > h.Buf.LinesNum() { v.StartLine = 0 - h.Win.SetView(v) + h.SetView(v) } else { h.StartLine = h.Buf.LinesNum() - v.Height } @@ -847,19 +847,19 @@ func (h *BufHandler) End() bool { // PageUp scrolls the view up a page func (h *BufHandler) PageUp() bool { - v := h.Win.GetView() + v := h.GetView() if v.StartLine > v.Height { h.ScrollUp(v.Height) } else { v.StartLine = 0 } - h.Win.SetView(v) + h.SetView(v) return false } // PageDown scrolls the view down a page func (h *BufHandler) PageDown() bool { - v := h.Win.GetView() + v := h.GetView() if h.Buf.LinesNum()-(v.StartLine+v.Height) > v.Height { h.ScrollDown(v.Height) } else if h.Buf.LinesNum() >= v.Height { @@ -873,7 +873,7 @@ func (h *BufHandler) SelectPageUp() bool { if !h.Cursor.HasSelection() { h.Cursor.OrigSelection[0] = h.Cursor.Loc } - h.Cursor.UpN(h.Win.GetView().Height) + h.Cursor.UpN(h.GetView().Height) h.Cursor.SelectTo(h.Cursor.Loc) return true } @@ -883,7 +883,7 @@ func (h *BufHandler) SelectPageDown() bool { if !h.Cursor.HasSelection() { h.Cursor.OrigSelection[0] = h.Cursor.Loc } - h.Cursor.DownN(h.Win.GetView().Height) + h.Cursor.DownN(h.GetView().Height) h.Cursor.SelectTo(h.Cursor.Loc) return true } @@ -897,7 +897,7 @@ func (h *BufHandler) CursorPageUp() bool { h.Cursor.ResetSelection() h.Cursor.StoreVisualX() } - h.Cursor.UpN(h.Win.GetView().Height) + h.Cursor.UpN(h.GetView().Height) return true } @@ -910,25 +910,25 @@ func (h *BufHandler) CursorPageDown() bool { h.Cursor.ResetSelection() h.Cursor.StoreVisualX() } - h.Cursor.DownN(h.Win.GetView().Height) + h.Cursor.DownN(h.GetView().Height) return true } // HalfPageUp scrolls the view up half a page func (h *BufHandler) HalfPageUp() bool { - v := h.Win.GetView() + v := h.GetView() if v.StartLine > v.Height/2 { h.ScrollUp(v.Height / 2) } else { v.StartLine = 0 } - h.Win.SetView(v) + h.SetView(v) return false } // HalfPageDown scrolls the view down half a page func (h *BufHandler) HalfPageDown() bool { - v := h.Win.GetView() + v := h.GetView() if h.Buf.LinesNum()-(v.StartLine+v.Height) > v.Height/2 { h.ScrollDown(v.Height / 2) } else { @@ -936,7 +936,7 @@ func (h *BufHandler) HalfPageDown() bool { v.StartLine = h.Buf.LinesNum() - v.Height } } - h.Win.SetView(v) + h.SetView(v) return false } @@ -1193,7 +1193,7 @@ func (h *BufHandler) SpawnMultiCursorSelect() bool { func (h *BufHandler) MouseMultiCursor(e *tcell.EventMouse) bool { b := h.Buf mx, my := e.Position() - mouseLoc := h.Win.GetMouseLoc(buffer.Loc{X: mx, Y: my}) + mouseLoc := h.GetMouseLoc(buffer.Loc{X: mx, Y: my}) c := buffer.NewCursor(b, mouseLoc) b.AddCursor(c) b.MergeCursors() @@ -1219,7 +1219,7 @@ func (h *BufHandler) SkipMultiCursor() bool { lastC.Loc = lastC.CurSelection[1] h.Buf.MergeCursors() - h.Win.Relocate() + h.Relocate() } else { InfoBar.Message("No matches found") } diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 4af5be99..153cb166 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -52,8 +52,9 @@ func BufMapMouse(k MouseEvent, action string) { // The ActionHandler can access the window for necessary info about // visual positions for mouse clicks and scrolling type BufHandler struct { + display.Window + Buf *buffer.Buffer - Win display.Window cursors []*buffer.Cursor Cursor *buffer.Cursor // the active cursor @@ -100,7 +101,7 @@ type BufHandler struct { func NewBufHandler(buf *buffer.Buffer, win display.Window) *BufHandler { h := new(BufHandler) h.Buf = buf - h.Win = win + h.Window = win h.cursors = []*buffer.Cursor{buffer.NewCursor(buf, buf.StartCursor)} h.Cursor = h.cursors[0] @@ -133,7 +134,7 @@ func (h *BufHandler) HandleEvent(event tcell.Event) { // Mouse was just released mx, my := e.Position() - mouseLoc := h.Win.GetMouseLoc(buffer.Loc{X: mx, Y: my}) + mouseLoc := h.GetMouseLoc(buffer.Loc{X: mx, Y: my}) // Relocating here isn't really necessary because the cursor will // be in the right place from the last mouse event @@ -171,14 +172,14 @@ func (h *BufHandler) DoKeyEvent(e KeyEvent) bool { h.Buf.SetCurCursor(c.Num) h.Cursor = c if action(h) { - h.Win.Relocate() + h.Relocate() } } return true } } if action(h) { - h.Win.Relocate() + h.Relocate() } return true } @@ -190,7 +191,7 @@ func (h *BufHandler) DoKeyEvent(e KeyEvent) bool { func (h *BufHandler) DoMouseEvent(e MouseEvent, te *tcell.EventMouse) bool { if action, ok := BufMouseBindings[e]; ok { if action(h, te) { - h.Win.Relocate() + h.Relocate() } return true } diff --git a/cmd/micro/action/editpane.go b/cmd/micro/action/editpane.go index 54218893..b0bab86c 100644 --- a/cmd/micro/action/editpane.go +++ b/cmd/micro/action/editpane.go @@ -7,6 +7,12 @@ import ( "github.com/zyedidia/micro/cmd/micro/views" ) +type Pane interface { + Handler + display.Window + ID() uint64 +} + type EditPane struct { display.Window *BufHandler diff --git a/cmd/micro/action/events.go b/cmd/micro/action/events.go index 2a366c1d..437a6789 100644 --- a/cmd/micro/action/events.go +++ b/cmd/micro/action/events.go @@ -37,7 +37,5 @@ type MouseAction func(Handler, tcell.EventMouse) bool // A Handler will take a tcell event and execute it // appropriately type Handler interface { - // DoKeyEvent(KeyEvent) bool - // DoMouseEvent(MouseEvent, *tcell.EventMouse) (MouseAction, bool) HandleEvent(tcell.Event) } diff --git a/cmd/micro/action/termhandler.go b/cmd/micro/action/termhandler.go new file mode 100644 index 00000000..34338a81 --- /dev/null +++ b/cmd/micro/action/termhandler.go @@ -0,0 +1,66 @@ +package action + +import ( + "github.com/zyedidia/clipboard" + "github.com/zyedidia/micro/cmd/micro/display" + "github.com/zyedidia/micro/cmd/micro/shell" + "github.com/zyedidia/tcell" + "github.com/zyedidia/terminal" +) + +type TermHandler struct { + *shell.Terminal + display.Window + + mouseReleased bool +} + +// HandleEvent handles a tcell event by forwarding it to the terminal emulator +// If the event is a mouse event and the program running in the emulator +// does not have mouse support, the emulator will support selections and +// copy-paste +func (t *TermHandler) HandleEvent(event tcell.Event) { + if e, ok := event.(*tcell.EventKey); ok { + if t.Status == shell.TTDone { + switch e.Key() { + case tcell.KeyEscape, tcell.KeyCtrlQ, tcell.KeyEnter: + t.Close() + default: + } + } + if e.Key() == tcell.KeyCtrlC && t.HasSelection() { + clipboard.WriteAll(t.GetSelection(t.GetView().Width), "clipboard") + InfoBar.Message("Copied selection to clipboard") + } else if t.Status != shell.TTDone { + t.WriteString(event.EscSeq()) + } + } else if e, ok := event.(*tcell.EventMouse); !ok || t.State.Mode(terminal.ModeMouseMask) { + t.WriteString(event.EscSeq()) + } else { + x, y := e.Position() + v := t.GetView() + x -= v.X + y += v.Y + + if e.Buttons() == tcell.Button1 { + if !t.mouseReleased { + // drag + t.Selection[1].X = x + t.Selection[1].Y = y + } else { + t.Selection[0].X = x + t.Selection[0].Y = y + t.Selection[1].X = x + t.Selection[1].Y = y + } + + t.mouseReleased = false + } else if e.Buttons() == tcell.ButtonNone { + if !t.mouseReleased { + t.Selection[1].X = x + t.Selection[1].Y = y + } + t.mouseReleased = true + } + } +} diff --git a/cmd/micro/display/termwindow.go b/cmd/micro/display/termwindow.go new file mode 100644 index 00000000..e456c45b --- /dev/null +++ b/cmd/micro/display/termwindow.go @@ -0,0 +1,87 @@ +package display + +import ( + "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/cmd/micro/shell" + "github.com/zyedidia/tcell" + "github.com/zyedidia/terminal" +) + +type TermWindow struct { + *View + *shell.Terminal + + active bool +} + +func NewTermWindow(x, y, w, h int, term *shell.Terminal) *TermWindow { + tw := new(TermWindow) + tw.Terminal = term + tw.X, tw.Y = x, y + tw.Width, tw.Height = w, h + return tw +} + +// Resize informs the terminal of a resize event +func (w *TermWindow) Resize(width, height int) { + w.Term.Resize(width, height) +} + +func (w *TermWindow) SetActive(b bool) { + w.active = b +} + +func (w *TermWindow) GetMouseLoc(vloc buffer.Loc) buffer.Loc { + return vloc +} + +func (w *TermWindow) Clear() { + for y := 0; y < w.Height; y++ { + for x := 0; x < w.Width; x++ { + screen.Screen.SetContent(w.X+x, w.Y+y, ' ', nil, config.DefStyle) + } + } +} + +func (w *TermWindow) Relocate() bool { return true } +func (w *TermWindow) GetView() *View { + return w.View +} +func (w *TermWindow) SetView(v *View) { + w.View = v +} + +// Display displays this terminal in a view +func (w *TermWindow) Display() { + w.State.Lock() + defer w.State.Unlock() + + var l buffer.Loc + for y := 0; y < w.Height; y++ { + for x := 0; x < w.Width; x++ { + l.X, l.Y = x, y + c, f, b := w.State.Cell(x, y) + + fg, bg := int(f), int(b) + if f == terminal.DefaultFG { + fg = int(tcell.ColorDefault) + } + if b == terminal.DefaultBG { + bg = int(tcell.ColorDefault) + } + st := tcell.StyleDefault.Foreground(config.GetColor256(int(fg))).Background(config.GetColor256(int(bg))) + + if l.LessThan(w.Selection[1]) && l.GreaterEqual(w.Selection[0]) || l.LessThan(w.Selection[0]) && l.GreaterEqual(w.Selection[1]) { + st = st.Reverse(true) + } + + screen.Screen.SetContent(w.X+x, w.Y+y, c, nil, st) + } + } + if w.State.CursorVisible() && w.active { + curx, cury := w.State.Cursor() + screen.Screen.ShowCursor(curx+w.X, cury+w.Y) + } +} diff --git a/cmd/micro/shell/terminal.go b/cmd/micro/shell/terminal.go new file mode 100644 index 00000000..b4e5da31 --- /dev/null +++ b/cmd/micro/shell/terminal.go @@ -0,0 +1,127 @@ +package shell + +import ( + "bytes" + "fmt" + "os" + "os/exec" + "strconv" + + "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/terminal" +) + +type TermType int + +const ( + TTIdle = iota // Waiting for a new command + TTRunning // Currently running a command + TTDone // Finished running a command +) + +// A Terminal holds information for the terminal emulator +type Terminal struct { + State terminal.State + Term *terminal.VT + title string + Status TermType + Selection [2]buffer.Loc + wait bool + getOutput bool + output *bytes.Buffer + callback string +} + +// HasSelection returns whether this terminal has a valid selection +func (t *Terminal) HasSelection() bool { + return t.Selection[0] != t.Selection[1] +} + +// GetSelection returns the selected text +func (t *Terminal) GetSelection(width int) string { + start := t.Selection[0] + end := t.Selection[1] + if start.GreaterThan(end) { + start, end = end, start + } + var ret string + var l buffer.Loc + for y := start.Y; y <= end.Y; y++ { + for x := 0; x < width; x++ { + l.X, l.Y = x, y + if l.GreaterEqual(start) && l.LessThan(end) { + c, _, _ := t.State.Cell(x, y) + ret += string(c) + } + } + } + return ret +} + +// Start begins a new command in this terminal with a given view +func (t *Terminal) Start(execCmd []string, getOutput bool) error { + if len(execCmd) <= 0 { + return nil + } + + cmd := exec.Command(execCmd[0], execCmd[1:]...) + t.output = nil + if getOutput { + t.output = bytes.NewBuffer([]byte{}) + } + Term, _, err := terminal.Start(&t.State, cmd, t.output) + if err != nil { + return err + } + t.Term = Term + t.getOutput = getOutput + t.Status = TTRunning + t.title = execCmd[0] + ":" + strconv.Itoa(cmd.Process.Pid) + + go func() { + for { + err := Term.Parse() + if err != nil { + fmt.Fprintln(os.Stderr, "[Press enter to close]") + break + } + screen.Redraw() + } + // TODO: close Term + // closeterm <- view.Num + }() + + return nil +} + +// Stop stops execution of the terminal and sets the Status +// to TTDone +func (t *Terminal) Stop() { + t.Term.File().Close() + t.Term.Close() + if t.wait { + t.Status = TTDone + } else { + t.Close() + } +} + +// Close sets the Status to TTIdle indicating that the terminal +// is ready for a new command to execute +func (t *Terminal) Close() { + t.Status = TTIdle + // call the lua function that the user has given as a callback + if t.getOutput { + // TODO: plugin callback on Term emulator + // _, err := Call(t.callback, t.output.String()) + // if err != nil && !strings.HasPrefix(err.Error(), "function does not exist") { + // TermMessage(err) + // } + } +} + +// WriteString writes a given string to this terminal's pty +func (t *Terminal) WriteString(str string) { + t.Term.File().WriteString(str) +} From 0f1483dc8cdcede1eb5d823269f7536345279c42 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 11 Jan 2019 14:49:22 -0500 Subject: [PATCH 060/231] Almost done terminal emulator --- cmd/micro/action/actions.go | 9 +- cmd/micro/action/bufhandler.go | 8 ++ cmd/micro/action/command.go | 218 +++++++++++++++++++------------- cmd/micro/action/editpane.go | 14 +- cmd/micro/action/events.go | 1 + cmd/micro/action/tab.go | 50 +++++--- cmd/micro/action/termhandler.go | 42 ++++++ cmd/micro/display/termwindow.go | 2 + cmd/micro/shell/terminal.go | 16 ++- cmd/micro/views/splits.go | 3 - 10 files changed, 231 insertions(+), 132 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 14dded21..7bbf8ca3 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -818,7 +818,7 @@ func (h *BufHandler) SelectAll() bool { func (h *BufHandler) OpenFile() bool { InfoBar.Prompt("> ", "open ", "Open", nil, func(resp string, canceled bool) { if !canceled { - HandleCommand(resp) + h.HandleCommand(resp) } }) return false @@ -989,7 +989,7 @@ func (h *BufHandler) ShellMode() bool { func (h *BufHandler) CommandMode() bool { InfoBar.Prompt("> ", "", "Command", nil, func(resp string, canceled bool) { if !canceled { - HandleCommand(resp) + h.HandleCommand(resp) } }) return false @@ -1023,6 +1023,9 @@ func (h *BufHandler) Quit() bool { InfoBar.YNPrompt("Save changes to "+h.Buf.GetName()+" before closing? (y,n,esc)", func(yes, canceled bool) { if !canceled && !yes { quit() + } else if !canceled && yes { + h.Save() + quit() } }) } else { @@ -1040,7 +1043,7 @@ func (h *BufHandler) QuitAll() bool { func (h *BufHandler) AddTab() bool { width, height := screen.Screen.Size() b := buffer.NewBufferFromString("", "", buffer.BTDefault) - tp := NewTabPane(0, 0, width, height-1, b) + tp := NewTabFromBuffer(0, 0, width, height-1, b) Tabs.AddTab(tp) Tabs.SetActive(len(Tabs.List) - 1) diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 153cb166..566bcb96 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -111,6 +111,14 @@ func NewBufHandler(buf *buffer.Buffer, win display.Window) *BufHandler { return h } +func (h *BufHandler) ID() uint64 { + return h.splitID +} + +func (h *BufHandler) Name() string { + return h.Buf.GetName() +} + // HandleEvent executes the tcell event properly // TODO: multiple actions bound to one key func (h *BufHandler) HandleEvent(event tcell.Event) { diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 27b16729..ca4f275b 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -12,7 +12,7 @@ import ( // A Command contains an action (a function to call) as well as information about how to autocomplete the command type Command struct { - action func([]string) + action func(*BufHandler, []string) completions []Completion } @@ -24,37 +24,33 @@ type StrCommand struct { var commands map[string]Command -var commandActions map[string]func([]string) - -func init() { - commandActions = map[string]func([]string){ - "Set": Set, - "SetLocal": SetLocal, - "Show": Show, - "ShowKey": ShowKey, - "Run": Run, - "Bind": Bind, - "Quit": Quit, - "Save": Save, - "Replace": Replace, - "ReplaceAll": ReplaceAll, - "VSplit": VSplit, - "HSplit": HSplit, - "Tab": NewTab, - "Help": Help, - "Eval": Eval, - "ToggleLog": ToggleLog, - "Plugin": PluginCmd, - "Reload": Reload, - "Cd": Cd, - "Pwd": Pwd, - "Open": Open, - "TabSwitch": TabSwitch, - "Term": Term, - "MemUsage": MemUsage, - "Retab": Retab, - "Raw": Raw, - } +var commandActions = map[string]func(*BufHandler, []string){ + "Set": (*BufHandler).SetCmd, + "SetLocal": (*BufHandler).SetLocalCmd, + "Show": (*BufHandler).ShowCmd, + "ShowKey": (*BufHandler).ShowKeyCmd, + "Run": (*BufHandler).RunCmd, + "Bind": (*BufHandler).BindCmd, + "Quit": (*BufHandler).QuitCmd, + "Save": (*BufHandler).SaveCmd, + "Replace": (*BufHandler).ReplaceCmd, + "ReplaceAll": (*BufHandler).ReplaceAllCmd, + "VSplit": (*BufHandler).VSplitCmd, + "HSplit": (*BufHandler).HSplitCmd, + "Tab": (*BufHandler).NewTabCmd, + "Help": (*BufHandler).HelpCmd, + "Eval": (*BufHandler).EvalCmd, + "ToggleLog": (*BufHandler).ToggleLogCmd, + "Plugin": (*BufHandler).PluginCmd, + "Reload": (*BufHandler).ReloadCmd, + "Cd": (*BufHandler).CdCmd, + "Pwd": (*BufHandler).PwdCmd, + "Open": (*BufHandler).OpenCmd, + "TabSwitch": (*BufHandler).TabSwitchCmd, + "Term": (*BufHandler).TermCmd, + "MemUsage": (*BufHandler).MemUsageCmd, + "Retab": (*BufHandler).RetabCmd, + "Raw": (*BufHandler).RawCmd, } // InitCommands initializes the default commands @@ -123,7 +119,7 @@ func CommandEditAction(prompt string) BufKeyAction { return func(h *BufHandler) bool { InfoBar.Prompt("> ", prompt, "Command", nil, func(resp string, canceled bool) { if !canceled { - HandleCommand(resp) + MainTab().CurPane().HandleCommand(resp) } }) return false @@ -134,46 +130,46 @@ func CommandEditAction(prompt string) BufKeyAction { // given command func CommandAction(cmd string) BufKeyAction { return func(h *BufHandler) bool { - HandleCommand(cmd) + MainTab().CurPane().HandleCommand(cmd) return false } } // PluginCmd installs, removes, updates, lists, or searches for given plugins -func PluginCmd(args []string) { +func (h *BufHandler) PluginCmd(args []string) { } -// Retab changes all spaces to tabs or all tabs to spaces +// RetabCmd changes all spaces to tabs or all tabs to spaces // depending on the user's settings -func Retab(args []string) { +func (h *BufHandler) RetabCmd(args []string) { } -// Raw opens a new raw view which displays the escape sequences micro +// RawCmd opens a new raw view which displays the escape sequences micro // is receiving in real-time -func Raw(args []string) { +func (h *BufHandler) RawCmd(args []string) { } -// TabSwitch switches to a given tab either by name or by number -func TabSwitch(args []string) { +// TabSwitchCmd switches to a given tab either by name or by number +func (h *BufHandler) TabSwitchCmd(args []string) { } -// Cd changes the current working directory -func Cd(args []string) { +// CdCmd changes the current working directory +func (h *BufHandler) CdCmd(args []string) { } -// MemUsage prints micro's memory usage +// MemUsageCmd prints micro's memory usage // Alloc shows how many bytes are currently in use // Sys shows how many bytes have been requested from the operating system // NumGC shows how many times the GC has been run // Note that Go commonly reserves more memory from the OS than is currently in-use/required // Additionally, even if Go returns memory to the OS, the OS does not always claim it because // there may be plenty of memory to spare -func MemUsage(args []string) { +func (h *BufHandler) MemUsageCmd(args []string) { InfoBar.Message(util.GetMemStats()) } -// Pwd prints the current working directory -func Pwd(args []string) { +// PwdCmd prints the current working directory +func (h *BufHandler) PwdCmd(args []string) { wd, err := os.Getwd() if err != nil { InfoBar.Message(err.Error()) @@ -182,68 +178,86 @@ func Pwd(args []string) { } } -// Open opens a new buffer with a given filename -func Open(args []string) { +// OpenCmd opens a new buffer with a given filename +func (h *BufHandler) OpenCmd(args []string) { } -// ToggleLog toggles the log view -func ToggleLog(args []string) { +// ToggleLogCmd toggles the log view +func (h *BufHandler) ToggleLogCmd(args []string) { } -// Reload reloads all files (syntax files, colorschemes...) -func Reload(args []string) { +// ReloadCmd reloads all files (syntax files, colorschemes...) +func (h *BufHandler) ReloadCmd(args []string) { } -// Help tries to open the given help page in a horizontal split -func Help(args []string) { +// HelpCmd tries to open the given help page in a horizontal split +func (h *BufHandler) HelpCmd(args []string) { } -// VSplit opens a vertical split with file given in the first argument +// VSplitCmd opens a vertical split with file given in the first argument // If no file is given, it opens an empty buffer in a new split -func VSplit(args []string) { +func (h *BufHandler) VSplitCmd(args []string) { buf, err := buffer.NewBufferFromFile(args[0], buffer.BTDefault) if err != nil { InfoBar.Error(err) return } - MainTab().CurPane().vsplit(buf) + h.vsplit(buf) } -// HSplit opens a horizontal split with file given in the first argument +// HSplitCmd opens a horizontal split with file given in the first argument // If no file is given, it opens an empty buffer in a new split -func HSplit(args []string) { +func (h *BufHandler) HSplitCmd(args []string) { buf, err := buffer.NewBufferFromFile(args[0], buffer.BTDefault) if err != nil { InfoBar.Error(err) return } - MainTab().CurPane().hsplit(buf) + h.hsplit(buf) } -// Eval evaluates a lua expression -func Eval(args []string) { +// EvalCmd evaluates a lua expression +func (h *BufHandler) EvalCmd(args []string) { } -// NewTab opens the given file in a new tab -func NewTab(args []string) { +// NewTabCmd opens the given file in a new tab +func (h *BufHandler) NewTabCmd(args []string) { + width, height := screen.Screen.Size() + if len(args) > 0 { + for _, a := range args { + b, err := buffer.NewBufferFromFile(a, buffer.BTDefault) + if err != nil { + InfoBar.Error(err) + return + } + tp := NewTabFromBuffer(0, 0, width, height-1, b) + Tabs.AddTab(tp) + Tabs.SetActive(len(Tabs.List) - 1) + } + } else { + b := buffer.NewBufferFromString("", "", buffer.BTDefault) + tp := NewTabFromBuffer(0, 0, width, height-1, b) + Tabs.AddTab(tp) + Tabs.SetActive(len(Tabs.List) - 1) + } } -// Set sets an option -func Set(args []string) { +// SetCmd sets an option +func (h *BufHandler) SetCmd(args []string) { } -// SetLocal sets an option local to the buffer -func SetLocal(args []string) { +// SetLocalCmd sets an option local to the buffer +func (h *BufHandler) SetLocalCmd(args []string) { } -// Show shows the value of the given option -func Show(args []string) { +// ShowCmd shows the value of the given option +func (h *BufHandler) ShowCmd(args []string) { } -// ShowKey displays the action that a key is bound to -func ShowKey(args []string) { +// ShowKeyCmd displays the action that a key is bound to +func (h *BufHandler) ShowKeyCmd(args []string) { if len(args) < 1 { InfoBar.Error("Please provide a key to show") return @@ -256,12 +270,12 @@ func ShowKey(args []string) { } } -// Bind creates a new keybinding -func Bind(args []string) { +// BindCmd creates a new keybinding +func (h *BufHandler) BindCmd(args []string) { } -// Run runs a shell command in the background -func Run(args []string) { +// RunCmd runs a shell command in the background +func (h *BufHandler) RunCmd(args []string) { runf, err := shell.RunBackgroundShell(shellwords.Join(args...)) if err != nil { InfoBar.Error(err) @@ -273,28 +287,54 @@ func Run(args []string) { } } -// Quit closes the main view -func Quit(args []string) { +// QuitCmd closes the main view +func (h *BufHandler) QuitCmd(args []string) { } -// Save saves the buffer in the main view -func Save(args []string) { +// SaveCmd saves the buffer in the main view +func (h *BufHandler) SaveCmd(args []string) { } -// Replace runs search and replace -func Replace(args []string) { +// ReplaceCmd runs search and replace +func (h *BufHandler) ReplaceCmd(args []string) { } -// ReplaceAll replaces search term all at once -func ReplaceAll(args []string) { +// ReplaceAllCmd replaces search term all at once +func (h *BufHandler) ReplaceAllCmd(args []string) { } -// Term opens a terminal in the current view -func Term(args []string) { +// TermCmd opens a terminal in the current view +func (h *BufHandler) TermCmd(args []string) { + ps := MainTab().Panes + + term := func(i int) { + v := h.GetView() + t := new(shell.Terminal) + t.Start(args, false, true) + MainTab().Panes[i] = NewTermHandler(v.X, v.Y, v.Width, v.Height, t, h.ID()) + MainTab().SetActive(i) + } + + for i, p := range ps { + if p.ID() == h.ID() { + if h.Buf.Modified() { + InfoBar.YNPrompt("Save changes to "+h.Buf.GetName()+" before closing? (y,n,esc)", func(yes, canceled bool) { + if !canceled && !yes { + term(i) + } else if !canceled && yes { + h.Save() + term(i) + } + }) + } else { + term(i) + } + } + } } // HandleCommand handles input from the user -func HandleCommand(input string) { +func (h *BufHandler) HandleCommand(input string) { args, err := shellwords.Split(input) if err != nil { InfoBar.Error("Error parsing args ", err) @@ -306,6 +346,6 @@ func HandleCommand(input string) { if _, ok := commands[inputCmd]; !ok { InfoBar.Error("Unknown command ", inputCmd) } else { - commands[inputCmd].action(args[1:]) + commands[inputCmd].action(h, args[1:]) } } diff --git a/cmd/micro/action/editpane.go b/cmd/micro/action/editpane.go index b0bab86c..dfc2d78f 100644 --- a/cmd/micro/action/editpane.go +++ b/cmd/micro/action/editpane.go @@ -4,13 +4,13 @@ import ( "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/display" "github.com/zyedidia/micro/cmd/micro/info" - "github.com/zyedidia/micro/cmd/micro/views" ) type Pane interface { Handler display.Window ID() uint64 + Name() string } type EditPane struct { @@ -34,18 +34,6 @@ func NewBufEditPane(x, y, width, height int, b *buffer.Buffer) *EditPane { return e } -func NewTabPane(x, y, width, height int, b *buffer.Buffer) *TabPane { - t := new(TabPane) - t.Node = views.NewRoot(x, y, width, height) - t.UIWindow = display.NewUIWindow(t.Node) - - e := NewBufEditPane(x, y, width, height, b) - e.splitID = t.ID() - - t.Panes = append(t.Panes, e) - return t -} - func NewInfoBar() *InfoPane { e := new(InfoPane) ib := info.NewBuffer() diff --git a/cmd/micro/action/events.go b/cmd/micro/action/events.go index 437a6789..5bf6c58e 100644 --- a/cmd/micro/action/events.go +++ b/cmd/micro/action/events.go @@ -38,4 +38,5 @@ type MouseAction func(Handler, tcell.EventMouse) bool // appropriately type Handler interface { HandleEvent(tcell.Event) + HandleCommand(string) } diff --git a/cmd/micro/action/tab.go b/cmd/micro/action/tab.go index 90f58a35..4b271fe9 100644 --- a/cmd/micro/action/tab.go +++ b/cmd/micro/action/tab.go @@ -10,19 +10,19 @@ import ( type TabList struct { *display.TabWindow - List []*TabPane + List []*Tab } func NewTabList(bufs []*buffer.Buffer) *TabList { w, h := screen.Screen.Size() tl := new(TabList) - tl.List = make([]*TabPane, len(bufs)) + tl.List = make([]*Tab, len(bufs)) if len(bufs) > 1 { for i, b := range bufs { - tl.List[i] = NewTabPane(0, 1, w, h-2, b) + tl.List[i] = NewTabFromBuffer(0, 1, w, h-2, b) } } else { - tl.List[0] = NewTabPane(0, 0, w, h-1, bufs[0]) + tl.List[0] = NewTabFromBuffer(0, 0, w, h-1, bufs[0]) } tl.TabWindow = display.NewTabWindow(w, 0) tl.Names = make([]string, len(bufs)) @@ -33,11 +33,11 @@ func NewTabList(bufs []*buffer.Buffer) *TabList { func (t *TabList) UpdateNames() { t.Names = t.Names[:0] for _, p := range t.List { - t.Names = append(t.Names, p.Panes[p.active].Buf.GetName()) + t.Names = append(t.Names, p.Panes[p.active].Name()) } } -func (t *TabList) AddTab(p *TabPane) { +func (t *TabList) AddTab(p *Tab) { t.List = append(t.List, p) t.Resize() t.UpdateNames() @@ -48,7 +48,7 @@ func (t *TabList) RemoveTab(id uint64) { if len(p.Panes) == 0 { continue } - if p.Panes[0].splitID == id { + if p.Panes[0].ID() == id { copy(t.List[i:], t.List[i+1:]) t.List[len(t.List)-1] = nil t.List = t.List[:len(t.List)-1] @@ -118,29 +118,41 @@ func InitTabs(bufs []*buffer.Buffer) { Tabs = NewTabList(bufs) } -func MainTab() *TabPane { +func MainTab() *Tab { return Tabs.List[Tabs.Active()] } -// A TabPane represents a single tab +// A Tab represents a single tab // It consists of a list of edit panes (the open buffers), // a split tree (stored as just the root node), and a uiwindow // to display the UI elements like the borders between splits -type TabPane struct { +type Tab struct { *views.Node *display.UIWindow - Panes []*EditPane + Panes []Pane active int resizing *views.Node // node currently being resized } +func NewTabFromBuffer(x, y, width, height int, b *buffer.Buffer) *Tab { + t := new(Tab) + t.Node = views.NewRoot(x, y, width, height) + t.UIWindow = display.NewUIWindow(t.Node) + + e := NewBufEditPane(x, y, width, height, b) + e.splitID = t.ID() + + t.Panes = append(t.Panes, e) + return t +} + // HandleEvent takes a tcell event and usually dispatches it to the current // active pane. However if the event is a resize or a mouse event where the user // is interacting with the UI (resizing splits) then the event is consumed here // If the event is a mouse event in a pane, that pane will become active and get // the event -func (t *TabPane) HandleEvent(event tcell.Event) { +func (t *Tab) HandleEvent(event tcell.Event) { switch e := event.(type) { case *tcell.EventMouse: mx, my := e.Position() @@ -192,7 +204,7 @@ func (t *TabPane) HandleEvent(event tcell.Event) { } // SetActive changes the currently active pane to the specified index -func (t *TabPane) SetActive(i int) { +func (t *Tab) SetActive(i int) { t.active = i for j, p := range t.Panes { if j == i { @@ -204,9 +216,9 @@ func (t *TabPane) SetActive(i int) { } // GetPane returns the pane with the given split index -func (t *TabPane) GetPane(splitid uint64) int { +func (t *Tab) GetPane(splitid uint64) int { for i, p := range t.Panes { - if p.splitID == splitid { + if p.ID() == splitid { return i } } @@ -214,16 +226,16 @@ func (t *TabPane) GetPane(splitid uint64) int { } // Remove pane removes the pane with the given index -func (t *TabPane) RemovePane(i int) { +func (t *Tab) RemovePane(i int) { copy(t.Panes[i:], t.Panes[i+1:]) t.Panes[len(t.Panes)-1] = nil t.Panes = t.Panes[:len(t.Panes)-1] } // Resize resizes all panes according to their corresponding split nodes -func (t *TabPane) Resize() { +func (t *Tab) Resize() { for _, p := range t.Panes { - n := t.GetNode(p.splitID) + n := t.GetNode(p.ID()) pv := p.GetView() offset := 0 if n.X != 0 { @@ -236,6 +248,6 @@ func (t *TabPane) Resize() { } // CurPane returns the currently active pane -func (t *TabPane) CurPane() *EditPane { +func (t *Tab) CurPane() Pane { return t.Panes[t.active] } diff --git a/cmd/micro/action/termhandler.go b/cmd/micro/action/termhandler.go index 34338a81..184daf76 100644 --- a/cmd/micro/action/termhandler.go +++ b/cmd/micro/action/termhandler.go @@ -1,8 +1,11 @@ package action import ( + "os" + "github.com/zyedidia/clipboard" "github.com/zyedidia/micro/cmd/micro/display" + "github.com/zyedidia/micro/cmd/micro/screen" "github.com/zyedidia/micro/cmd/micro/shell" "github.com/zyedidia/tcell" "github.com/zyedidia/terminal" @@ -13,6 +16,40 @@ type TermHandler struct { display.Window mouseReleased bool + id uint64 +} + +func NewTermHandler(x, y, w, h int, t *shell.Terminal, id uint64) *TermHandler { + th := new(TermHandler) + th.Terminal = t + th.id = id + th.Window = display.NewTermWindow(x, y, w, h, t) + return th +} + +func (t *TermHandler) ID() uint64 { + return t.id +} + +func (t *TermHandler) Quit() { + if len(MainTab().Panes) > 1 { + t.Unsplit() + } else if len(Tabs.List) > 1 { + Tabs.RemoveTab(t.id) + } else { + screen.Screen.Fini() + InfoBar.Close() + os.Exit(0) + } +} + +func (t *TermHandler) Unsplit() { + n := MainTab().GetNode(t.id) + n.Unsplit() + + MainTab().RemovePane(MainTab().GetPane(t.id)) + MainTab().Resize() + MainTab().SetActive(len(MainTab().Panes) - 1) } // HandleEvent handles a tcell event by forwarding it to the terminal emulator @@ -25,6 +62,7 @@ func (t *TermHandler) HandleEvent(event tcell.Event) { switch e.Key() { case tcell.KeyEscape, tcell.KeyCtrlQ, tcell.KeyEnter: t.Close() + t.Quit() default: } } @@ -64,3 +102,7 @@ func (t *TermHandler) HandleEvent(event tcell.Event) { } } } + +func (t *TermHandler) HandleCommand(input string) { + InfoBar.Error("Commands are unsupported in term for now") +} diff --git a/cmd/micro/display/termwindow.go b/cmd/micro/display/termwindow.go index e456c45b..1741ad6b 100644 --- a/cmd/micro/display/termwindow.go +++ b/cmd/micro/display/termwindow.go @@ -18,9 +18,11 @@ type TermWindow struct { func NewTermWindow(x, y, w, h int, term *shell.Terminal) *TermWindow { tw := new(TermWindow) + tw.View = new(View) tw.Terminal = term tw.X, tw.Y = x, y tw.Width, tw.Height = w, h + tw.Resize(w, h) return tw } diff --git a/cmd/micro/shell/terminal.go b/cmd/micro/shell/terminal.go index b4e5da31..ea098221 100644 --- a/cmd/micro/shell/terminal.go +++ b/cmd/micro/shell/terminal.go @@ -15,7 +15,7 @@ import ( type TermType int const ( - TTIdle = iota // Waiting for a new command + TTClose = iota // Should be closed TTRunning // Currently running a command TTDone // Finished running a command ) @@ -38,6 +38,10 @@ func (t *Terminal) HasSelection() bool { return t.Selection[0] != t.Selection[1] } +func (t *Terminal) Name() string { + return t.title +} + // GetSelection returns the selected text func (t *Terminal) GetSelection(width int) string { start := t.Selection[0] @@ -60,7 +64,7 @@ func (t *Terminal) GetSelection(width int) string { } // Start begins a new command in this terminal with a given view -func (t *Terminal) Start(execCmd []string, getOutput bool) error { +func (t *Terminal) Start(execCmd []string, getOutput bool, wait bool) error { if len(execCmd) <= 0 { return nil } @@ -78,6 +82,7 @@ func (t *Terminal) Start(execCmd []string, getOutput bool) error { t.getOutput = getOutput t.Status = TTRunning t.title = execCmd[0] + ":" + strconv.Itoa(cmd.Process.Pid) + t.wait = wait go func() { for { @@ -88,6 +93,7 @@ func (t *Terminal) Start(execCmd []string, getOutput bool) error { } screen.Redraw() } + t.Stop() // TODO: close Term // closeterm <- view.Num }() @@ -107,10 +113,10 @@ func (t *Terminal) Stop() { } } -// Close sets the Status to TTIdle indicating that the terminal -// is ready for a new command to execute +// Close sets the Status to TTClose indicating that the terminal +// is done and should be closed func (t *Terminal) Close() { - t.Status = TTIdle + t.Status = TTClose // call the lua function that the user has given as a callback if t.getOutput { // TODO: plugin callback on Term emulator diff --git a/cmd/micro/views/splits.go b/cmd/micro/views/splits.go index 6c1a6c01..55d9d751 100644 --- a/cmd/micro/views/splits.go +++ b/cmd/micro/views/splits.go @@ -2,7 +2,6 @@ package views import ( "fmt" - "log" "strings" ) @@ -440,7 +439,6 @@ func (n *Node) unsplit(i int, h bool) { copy(n.children[i:], n.children[i+1:]) n.children[len(n.children)-1] = nil n.children = n.children[:len(n.children)-1] - log.Println(len(n.children)) nonrs, numr := n.getResizeInfo(h) if numr == 0 { @@ -475,7 +473,6 @@ func (n *Node) Unsplit() { } if n.parent.IsLeaf() { - log.Println("destroy parent") n.parent.Unsplit() } } From 149b3ae89f22dcbd545eb789de3194419f07fc45 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 11 Jan 2019 15:04:55 -0500 Subject: [PATCH 061/231] Fix small tab problem --- cmd/micro/action/actions.go | 2 +- cmd/micro/action/tab.go | 23 +++++++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 7bbf8ca3..4179af32 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -1047,7 +1047,7 @@ func (h *BufHandler) AddTab() bool { Tabs.AddTab(tp) Tabs.SetActive(len(Tabs.List) - 1) - return true + return false } // PreviousTab switches to the previous tab in the tab list diff --git a/cmd/micro/action/tab.go b/cmd/micro/action/tab.go index 4b271fe9..d2643771 100644 --- a/cmd/micro/action/tab.go +++ b/cmd/micro/action/tab.go @@ -8,11 +8,15 @@ import ( "github.com/zyedidia/tcell" ) +// The TabList is a list of tabs and a window to display the tab bar +// at the top of the screen type TabList struct { *display.TabWindow List []*Tab } +// NewTabList creates a TabList from a list of buffers by creating a Tab +// for each buffer func NewTabList(bufs []*buffer.Buffer) *TabList { w, h := screen.Screen.Size() tl := new(TabList) @@ -30,6 +34,8 @@ func NewTabList(bufs []*buffer.Buffer) *TabList { return tl } +// UpdateNames makes sure that the list of names the tab window has access to is +// correct func (t *TabList) UpdateNames() { t.Names = t.Names[:0] for _, p := range t.List { @@ -37,12 +43,14 @@ func (t *TabList) UpdateNames() { } } +// AddTab adds a new tab to this TabList func (t *TabList) AddTab(p *Tab) { t.List = append(t.List, p) t.Resize() t.UpdateNames() } +// RemoveTab removes a tab with the given id from the TabList func (t *TabList) RemoveTab(id uint64) { for i, p := range t.List { if len(p.Panes) == 0 { @@ -62,6 +70,10 @@ func (t *TabList) RemoveTab(id uint64) { } } +// Resize resizes all elements within the tab list +// One thing to note is that when there is only 1 tab +// the tab bar should not be drawn so resizing must take +// that into account func (t *TabList) Resize() { w, h := screen.Screen.Size() InfoBar.Resize(w, h-1) @@ -78,6 +90,8 @@ func (t *TabList) Resize() { } } +// HandleEvent checks for a resize event or a mouse event on the tab bar +// otherwise it will forward the event to the currently active tab func (t *TabList) HandleEvent(event tcell.Event) { switch e := event.(type) { case *tcell.EventResize: @@ -105,6 +119,7 @@ func (t *TabList) HandleEvent(event tcell.Event) { t.List[t.Active()].HandleEvent(event) } +// Display updates the names and then displays the tab bar func (t *TabList) Display() { t.UpdateNames() if len(t.List) > 1 { @@ -112,6 +127,7 @@ func (t *TabList) Display() { } } +// Tabs is the global tab list var Tabs *TabList func InitTabs(bufs []*buffer.Buffer) { @@ -135,6 +151,7 @@ type Tab struct { resizing *views.Node // node currently being resized } +// NewTabFromBuffer creates a new tab from the given buffer func NewTabFromBuffer(x, y, width, height int, b *buffer.Buffer) *Tab { t := new(Tab) t.Node = views.NewRoot(x, y, width, height) @@ -180,10 +197,8 @@ func (t *Tab) HandleEvent(event tcell.Event) { v := p.GetView() inpane := mx >= v.X && mx < v.X+v.Width && my >= v.Y && my < v.Y+v.Height if inpane { - t.active = i - p.SetActive(true) - } else { - p.SetActive(false) + t.SetActive(i) + return } } case tcell.ButtonNone: From 354c9efc8f40e76ddbef75d124faafe60eeb5188 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 11 Jan 2019 15:33:16 -0500 Subject: [PATCH 062/231] Move bindings location in code --- cmd/micro/action/bindings.go | 6 +++--- cmd/micro/action/command.go | 3 ++- cmd/micro/config/globals.go | 2 ++ cmd/micro/display/statusline.go | 12 ++++++------ 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/cmd/micro/action/bindings.go b/cmd/micro/action/bindings.go index 2b5173a3..105f8ca2 100644 --- a/cmd/micro/action/bindings.go +++ b/cmd/micro/action/bindings.go @@ -14,9 +14,9 @@ import ( "github.com/zyedidia/tcell" ) -var Bindings = DefaultBindings() - func InitBindings() { + config.Bindings = DefaultBindings() + var parsed map[string]string defaults := DefaultBindings() @@ -57,7 +57,7 @@ func BindKey(k, v string) { util.TermMessage("Raw events not supported yet") } - Bindings[k] = v + config.Bindings[k] = v } // findKeyEvent will find binding Key 'b' using string 'k' diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index ca4f275b..3fec2c9c 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -4,6 +4,7 @@ import ( "os" "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/screen" "github.com/zyedidia/micro/cmd/micro/shell" "github.com/zyedidia/micro/cmd/micro/shellwords" @@ -263,7 +264,7 @@ func (h *BufHandler) ShowKeyCmd(args []string) { return } - if action, ok := Bindings[args[0]]; ok { + if action, ok := config.Bindings[args[0]]; ok { InfoBar.Message(action) } else { InfoBar.Message(args[0], " has no binding") diff --git a/cmd/micro/config/globals.go b/cmd/micro/config/globals.go index 841ff68f..cd5bd3cd 100644 --- a/cmd/micro/config/globals.go +++ b/cmd/micro/config/globals.go @@ -4,3 +4,5 @@ const ( DoubleClickThreshold = 400 // How many milliseconds to wait before a second click is not a double click AutosaveTime = 8 // Number of seconds to wait before autosaving ) + +var Bindings map[string]string diff --git a/cmd/micro/display/statusline.go b/cmd/micro/display/statusline.go index b9343fa9..e6b06033 100644 --- a/cmd/micro/display/statusline.go +++ b/cmd/micro/display/statusline.go @@ -83,13 +83,13 @@ func (s *StatusLine) Display() { option := name[4:] return []byte(fmt.Sprint(s.FindOpt(string(option)))) } else if bytes.HasPrefix(name, []byte("bind")) { - // binding := string(name[5:]) + binding := string(name[5:]) // TODO: search bindings - // for k, v := range action.Bindings { - // if v == binding { - // return []byte(k) - // } - // } + for k, v := range config.Bindings { + if v == binding { + return []byte(k) + } + } return []byte("null") } else { return []byte(s.Info[string(name)](s.win.Buf)) From fb3923f344a0cb4df17df3df71277c82689f7979 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 12 Jan 2019 22:58:16 -0500 Subject: [PATCH 063/231] Open default shell if no term args --- cmd/micro/action/command.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 3fec2c9c..8ae80064 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -308,6 +308,15 @@ func (h *BufHandler) ReplaceAllCmd(args []string) { func (h *BufHandler) TermCmd(args []string) { ps := MainTab().Panes + if len(args) == 0 { + sh := os.Getenv("SHELL") + if sh == "" { + InfoBar.Error("Shell environment not found") + return + } + args = []string{sh} + } + term := func(i int) { v := h.GetView() t := new(shell.Terminal) From 94ab77e2e0f61a9a371fa0037afbb91dd2a65a08 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 13 Jan 2019 15:04:14 -0500 Subject: [PATCH 064/231] Fix mouse bug --- cmd/micro/action/tab.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/micro/action/tab.go b/cmd/micro/action/tab.go index d2643771..0dab39f6 100644 --- a/cmd/micro/action/tab.go +++ b/cmd/micro/action/tab.go @@ -198,7 +198,7 @@ func (t *Tab) HandleEvent(event tcell.Event) { inpane := mx >= v.X && mx < v.X+v.Width && my >= v.Y && my < v.Y+v.Height if inpane { t.SetActive(i) - return + break } } case tcell.ButtonNone: From 2f7858ce2577b57f7b3fc43e0ce23cf6db4983da Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 13 Jan 2019 17:22:11 -0500 Subject: [PATCH 065/231] Gutter message support --- cmd/micro/action/bufhandler.go | 14 + cmd/micro/buffer/buffer.go | 2 + cmd/micro/buffer/message.go | 80 +++++ cmd/micro/display/bufwindow.go | 540 +++++++++++++++++++++++++++++++++ cmd/micro/display/window.go | 509 ------------------------------- cmd/micro/info/infobuffer.go | 18 +- 6 files changed, 653 insertions(+), 510 deletions(-) create mode 100644 cmd/micro/buffer/message.go create mode 100644 cmd/micro/display/bufwindow.go diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 566bcb96..e8ace8ba 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -166,6 +166,20 @@ func (h *BufHandler) HandleEvent(event tcell.Event) { h.DoMouseEvent(me, e) } h.Buf.MergeCursors() + + // Display any gutter messages for this line + c := h.Buf.GetActiveCursor() + none := true + for _, m := range h.Buf.Messages { + if c.Y == m.Start.Y || c.Y == m.End.Y { + InfoBar.GutterMessage(m.Msg) + none = false + break + } + } + if none && InfoBar.HasGutter { + InfoBar.ClearGutter() + } } // DoKeyEvent executes a key event by finding the action it is bound diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index ffacc16b..96b76dd1 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -104,6 +104,8 @@ type Buffer struct { // Type of the buffer (e.g. help, raw, scratch etc..) Type BufType + + Messages []*Message } // NewBufferFromFile opens a new buffer using the given path diff --git a/cmd/micro/buffer/message.go b/cmd/micro/buffer/message.go new file mode 100644 index 00000000..b1049971 --- /dev/null +++ b/cmd/micro/buffer/message.go @@ -0,0 +1,80 @@ +package buffer + +import ( + "log" + + "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/tcell" +) + +type MsgType int + +const ( + MTInfo = iota + MTWarning + MTError +) + +type Message struct { + Msg string + Start, End Loc + Kind MsgType + Owner int +} + +func NewMessage(owner int, msg string, start, end Loc, kind MsgType) *Message { + return &Message{ + Msg: msg, + Start: start, + End: end, + Kind: kind, + Owner: owner, + } +} + +func NewMessageAtLine(owner int, msg string, line int, kind MsgType) *Message { + start := Loc{-1, line} + end := start + return NewMessage(owner, msg, start, end, kind) +} + +func (m *Message) Style() tcell.Style { + switch m.Kind { + case MTInfo: + if style, ok := config.Colorscheme["gutter-info"]; ok { + return style + } + case MTWarning: + if style, ok := config.Colorscheme["gutter-warning"]; ok { + return style + } + case MTError: + if style, ok := config.Colorscheme["gutter-error"]; ok { + log.Println("Return error") + return style + } + } + return config.DefStyle +} + +func (b *Buffer) AddMessage(m *Message) { + b.Messages = append(b.Messages, m) +} + +func (b *Buffer) removeMsg(i int) { + copy(b.Messages[i:], b.Messages[i+1:]) + b.Messages[len(b.Messages)-1] = nil + b.Messages = b.Messages[:len(b.Messages)-1] +} + +func (b *Buffer) ClearMessages(owner int) { + for i := len(b.Messages) - 1; i >= 0; i-- { + if b.Messages[i].Owner == owner { + b.removeMsg(i) + } + } +} + +func (b *Buffer) ClearAllMessages() { + b.Messages = make([]*Message, 0) +} diff --git a/cmd/micro/display/bufwindow.go b/cmd/micro/display/bufwindow.go new file mode 100644 index 00000000..10b50237 --- /dev/null +++ b/cmd/micro/display/bufwindow.go @@ -0,0 +1,540 @@ +package display + +import ( + "strconv" + "unicode/utf8" + + runewidth "github.com/mattn/go-runewidth" + "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/tcell" +) + +// The BufWindow provides a way of displaying a certain section +// of a buffer +type BufWindow struct { + *View + + // Buffer being shown in this window + Buf *buffer.Buffer + + active bool + + sline *StatusLine + + lineHeight []int + gutterOffset int +} + +// NewBufWindow creates a new window at a location in the screen with a width and height +func NewBufWindow(x, y, width, height int, buf *buffer.Buffer) *BufWindow { + w := new(BufWindow) + w.View = new(View) + w.X, w.Y, w.Width, w.Height, w.Buf = x, y, width, height, buf + w.lineHeight = make([]int, height) + w.active = true + + w.sline = NewStatusLine(w) + + return w +} + +func (v *View) GetView() *View { + return v +} + +func (v *View) SetView(view *View) { + v = view +} + +func (w *BufWindow) Resize(width, height int) { + w.Width, w.Height = width, height + w.lineHeight = make([]int, height) +} + +func (w *BufWindow) SetActive(b bool) { + w.active = b +} + +func (w *BufWindow) getStartInfo(n, lineN int) ([]byte, int, int, *tcell.Style) { + tabsize := util.IntOpt(w.Buf.Settings["tabsize"]) + width := 0 + bloc := buffer.Loc{0, lineN} + b := w.Buf.LineBytes(lineN) + curStyle := config.DefStyle + var s *tcell.Style + for len(b) > 0 { + r, size := utf8.DecodeRune(b) + + curStyle, found := w.getStyle(curStyle, bloc, r) + if found { + s = &curStyle + } + + w := 0 + switch r { + case '\t': + ts := tabsize - (width % tabsize) + w = ts + default: + w = runewidth.RuneWidth(r) + } + if width+w > n { + return b, n - width, bloc.X, s + } + width += w + b = b[size:] + bloc.X++ + } + return b, n - width, bloc.X, s +} + +// Clear resets all cells in this window to the default style +func (w *BufWindow) Clear() { + for y := 0; y < w.Height; y++ { + for x := 0; x < w.Width; x++ { + screen.Screen.SetContent(w.X+x, w.Y+y, ' ', nil, config.DefStyle) + } + } +} + +// Bottomline returns the line number of the lowest line in the view +// You might think that this is obviously just v.StartLine + v.Height +// but if softwrap is enabled things get complicated since one buffer +// line can take up multiple lines in the view +func (w *BufWindow) Bottomline() int { + // b := w.Buf + + // TODO: possible non-softwrap optimization + // if !b.Settings["softwrap"].(bool) { + // return w.StartLine + w.Height + // } + + prev := 0 + for _, l := range w.lineHeight { + if l >= prev { + prev = l + } else { + break + } + } + return prev +} + +// Relocate moves the view window so that the cursor is in view +// This is useful if the user has scrolled far away, and then starts typing +// Returns true if the window location is moved +func (w *BufWindow) Relocate() bool { + b := w.Buf + height := w.Bottomline() + 1 - w.StartLine + ret := false + activeC := w.Buf.GetActiveCursor() + cy := activeC.Y + scrollmargin := int(b.Settings["scrollmargin"].(float64)) + if cy < w.StartLine+scrollmargin && cy > scrollmargin-1 { + w.StartLine = cy - scrollmargin + ret = true + } else if cy < w.StartLine { + w.StartLine = cy + ret = true + } + if cy > w.StartLine+height-1-scrollmargin && cy < b.LinesNum()-scrollmargin { + w.StartLine = cy - height + 1 + scrollmargin + ret = true + } else if cy >= b.LinesNum()-scrollmargin && cy >= height { + w.StartLine = b.LinesNum() - height + ret = true + } + + // horizontal relocation (scrolling) + if !b.Settings["softwrap"].(bool) { + cx := activeC.GetVisualX() + if cx < w.StartCol { + w.StartCol = cx + ret = true + } + if cx+w.gutterOffset+1 > w.StartCol+w.Width { + w.StartCol = cx - w.Width + w.gutterOffset + 1 + ret = true + } + } + return ret +} + +func (w *BufWindow) GetMouseLoc(svloc buffer.Loc) buffer.Loc { + b := w.Buf + + // TODO: possible non-softwrap optimization + // if !b.Settings["softwrap"].(bool) { + // l := b.LineBytes(svloc.Y) + // return buffer.Loc{b.GetActiveCursor().GetCharPosInLine(l, svloc.X), svloc.Y} + // } + + hasMessage := len(b.Messages) > 0 + bufHeight := w.Height + if b.Settings["statusline"].(bool) { + bufHeight-- + } + + // We need to know the string length of the largest line number + // so we can pad appropriately when displaying line numbers + maxLineNumLength := len(strconv.Itoa(b.LinesNum())) + + tabsize := int(b.Settings["tabsize"].(float64)) + softwrap := b.Settings["softwrap"].(bool) + + // this represents the current draw position + // within the current window + vloc := buffer.Loc{X: 0, Y: 0} + + // this represents the current draw position in the buffer (char positions) + bloc := buffer.Loc{X: -1, Y: w.StartLine} + + for vloc.Y = 0; vloc.Y < bufHeight; vloc.Y++ { + vloc.X = 0 + if hasMessage { + vloc.X += 2 + } + if b.Settings["ruler"].(bool) { + vloc.X += maxLineNumLength + 1 + } + + line := b.LineBytes(bloc.Y) + line, nColsBeforeStart, bslice := util.SliceVisualEnd(line, w.StartCol, tabsize) + bloc.X = bslice + + draw := func() { + if nColsBeforeStart <= 0 { + vloc.X++ + } + nColsBeforeStart-- + } + + w.lineHeight[vloc.Y] = bloc.Y + + totalwidth := w.StartCol - nColsBeforeStart + + if svloc.X <= vloc.X+w.X && vloc.Y+w.Y == svloc.Y { + return bloc + } + for len(line) > 0 { + if vloc.X+w.X == svloc.X && vloc.Y+w.Y == svloc.Y { + return bloc + } + + r, size := utf8.DecodeRune(line) + draw() + width := 0 + + switch r { + case '\t': + ts := tabsize - (totalwidth % tabsize) + width = ts + default: + width = runewidth.RuneWidth(r) + } + + // Draw any extra characters either spaces for tabs or @ for incomplete wide runes + if width > 1 { + for i := 1; i < width; i++ { + if vloc.X+w.X == svloc.X && vloc.Y+w.Y == svloc.Y { + return bloc + } + draw() + } + } + bloc.X++ + line = line[size:] + + totalwidth += width + + // If we reach the end of the window then we either stop or we wrap for softwrap + if vloc.X >= w.Width { + if !softwrap { + break + } else { + vloc.Y++ + if vloc.Y >= bufHeight { + break + } + vloc.X = 0 + w.lineHeight[vloc.Y] = bloc.Y + // This will draw an empty line number because the current line is wrapped + vloc.X += maxLineNumLength + 1 + } + } + } + if vloc.Y+w.Y == svloc.Y { + return bloc + } + + bloc.X = w.StartCol + bloc.Y++ + if bloc.Y >= b.LinesNum() { + break + } + } + + return buffer.Loc{} +} + +func (w *BufWindow) drawGutter(vloc *buffer.Loc, bloc *buffer.Loc) { + char := ' ' + s := config.DefStyle + for _, m := range w.Buf.Messages { + if m.Start.Y == bloc.Y || m.End.Y == bloc.Y { + s = m.Style() + char = '>' + break + } + } + screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, char, nil, s) + vloc.X++ + screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, char, nil, s) + vloc.X++ +} + +func (w *BufWindow) drawLineNum(lineNumStyle tcell.Style, softwrapped bool, maxLineNumLength int, vloc *buffer.Loc, bloc *buffer.Loc) { + lineNum := strconv.Itoa(bloc.Y + 1) + + // Write the spaces before the line number if necessary + for i := 0; i < maxLineNumLength-len(lineNum); i++ { + screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ' ', nil, lineNumStyle) + vloc.X++ + } + // Write the actual line number + for _, ch := range lineNum { + if softwrapped { + screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ' ', nil, lineNumStyle) + } else { + screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ch, nil, lineNumStyle) + } + vloc.X++ + } + + // Write the extra space + screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ' ', nil, lineNumStyle) + vloc.X++ +} + +// getStyle returns the highlight style for the given character position +// If there is no change to the current highlight style it just returns that +func (w *BufWindow) getStyle(style tcell.Style, bloc buffer.Loc, r rune) (tcell.Style, bool) { + if group, ok := w.Buf.Match(bloc.Y)[bloc.X]; ok { + s := config.GetColor(group.String()) + return s, true + } + return style, false +} + +func (w *BufWindow) showCursor(x, y int, main bool) { + if w.active { + if main { + screen.Screen.ShowCursor(x, y) + } else { + r, _, _, _ := screen.Screen.GetContent(x, y) + screen.Screen.SetContent(x, y, r, nil, config.DefStyle.Reverse(true)) + } + } +} + +// displayBuffer draws the buffer being shown in this window on the screen.Screen +func (w *BufWindow) displayBuffer() { + b := w.Buf + + hasMessage := len(b.Messages) > 0 + bufHeight := w.Height + if b.Settings["statusline"].(bool) { + bufHeight-- + } + + // TODO: Rehighlighting + start := w.StartLine + if b.Settings["syntax"].(bool) && b.SyntaxDef != nil { + if start > 0 && b.Rehighlight(start-1) { + b.Highlighter.ReHighlightLine(b, start-1) + b.SetRehighlight(start-1, false) + } + + b.Highlighter.ReHighlightStates(b, start) + + b.Highlighter.HighlightMatches(b, w.StartLine, w.StartLine+bufHeight) + } + + lineNumStyle := config.DefStyle + if style, ok := config.Colorscheme["line-number"]; ok { + lineNumStyle = style + } + curNumStyle := config.DefStyle + if style, ok := config.Colorscheme["current-line-number"]; ok { + curNumStyle = style + } + + // We need to know the string length of the largest line number + // so we can pad appropriately when displaying line numbers + maxLineNumLength := len(strconv.Itoa(b.LinesNum())) + + tabsize := int(b.Settings["tabsize"].(float64)) + softwrap := b.Settings["softwrap"].(bool) + + // this represents the current draw position + // within the current window + vloc := buffer.Loc{X: 0, Y: 0} + + // this represents the current draw position in the buffer (char positions) + bloc := buffer.Loc{X: -1, Y: w.StartLine} + + cursors := b.GetCursors() + + curStyle := config.DefStyle + for vloc.Y = 0; vloc.Y < bufHeight; vloc.Y++ { + vloc.X = 0 + + if hasMessage { + w.drawGutter(&vloc, &bloc) + } + + if b.Settings["ruler"].(bool) { + s := lineNumStyle + for _, c := range cursors { + if bloc.Y == c.Y && w.active { + s = curNumStyle + break + } + } + w.drawLineNum(s, false, maxLineNumLength, &vloc, &bloc) + } + + w.gutterOffset = vloc.X + + line, nColsBeforeStart, bslice, startStyle := w.getStartInfo(w.StartCol, bloc.Y) + if startStyle != nil { + curStyle = *startStyle + } + bloc.X = bslice + + draw := func(r rune, style tcell.Style, showcursor bool) { + if nColsBeforeStart <= 0 { + for _, c := range cursors { + if c.HasSelection() && + (bloc.GreaterEqual(c.CurSelection[0]) && bloc.LessThan(c.CurSelection[1]) || + bloc.LessThan(c.CurSelection[0]) && bloc.GreaterEqual(c.CurSelection[1])) { + // The current character is selected + style = config.DefStyle.Reverse(true) + + if s, ok := config.Colorscheme["selection"]; ok { + style = s + } + } + + if b.Settings["cursorline"].(bool) && w.active && + !c.HasSelection() && c.Y == bloc.Y { + if s, ok := config.Colorscheme["cursor-line"]; ok { + fg, _, _ := s.Decompose() + style = style.Background(fg) + } + } + } + + screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, r, nil, style) + + if showcursor { + for _, c := range cursors { + if c.X == bloc.X && c.Y == bloc.Y && !c.HasSelection() { + w.showCursor(w.X+vloc.X, w.Y+vloc.Y, c.Num == 0) + } + } + } + vloc.X++ + } + nColsBeforeStart-- + } + + w.lineHeight[vloc.Y] = bloc.Y + + totalwidth := w.StartCol - nColsBeforeStart + for len(line) > 0 { + r, size := utf8.DecodeRune(line) + curStyle, _ = w.getStyle(curStyle, bloc, r) + + draw(r, curStyle, true) + + width := 0 + + char := ' ' + switch r { + case '\t': + ts := tabsize - (totalwidth % tabsize) + width = ts + default: + width = runewidth.RuneWidth(r) + char = '@' + } + + // Draw any extra characters either spaces for tabs or @ for incomplete wide runes + if width > 1 { + for i := 1; i < width; i++ { + draw(char, curStyle, false) + } + } + bloc.X++ + line = line[size:] + + totalwidth += width + + // If we reach the end of the window then we either stop or we wrap for softwrap + if vloc.X >= w.Width { + if !softwrap { + break + } else { + vloc.Y++ + if vloc.Y >= bufHeight { + break + } + vloc.X = 0 + w.lineHeight[vloc.Y] = bloc.Y + // This will draw an empty line number because the current line is wrapped + w.drawLineNum(lineNumStyle, true, maxLineNumLength, &vloc, &bloc) + } + } + } + + for _, c := range cursors { + if b.Settings["cursorline"].(bool) && w.active && + !c.HasSelection() && c.Y == bloc.Y { + style := config.DefStyle + if s, ok := config.Colorscheme["cursor-line"]; ok { + fg, _, _ := s.Decompose() + style = style.Background(fg) + } + for i := vloc.X; i < w.Width; i++ { + screen.Screen.SetContent(i+w.X, vloc.Y+w.Y, ' ', nil, style) + } + } + } + + for _, c := range cursors { + if c.X == bloc.X && c.Y == bloc.Y && !c.HasSelection() { + w.showCursor(w.X+vloc.X, w.Y+vloc.Y, c.Num == 0) + } + } + + bloc.X = w.StartCol + bloc.Y++ + if bloc.Y >= b.LinesNum() { + break + } + } +} + +func (w *BufWindow) displayStatusLine() { + w.sline.Display() +} + +// Display displays the buffer and the statusline +func (w *BufWindow) Display() { + w.displayBuffer() + w.displayStatusLine() +} diff --git a/cmd/micro/display/window.go b/cmd/micro/display/window.go index 5bba2153..c83a453a 100644 --- a/cmd/micro/display/window.go +++ b/cmd/micro/display/window.go @@ -1,15 +1,7 @@ package display import ( - "strconv" - "unicode/utf8" - - runewidth "github.com/mattn/go-runewidth" "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/screen" - "github.com/zyedidia/micro/cmd/micro/util" - "github.com/zyedidia/tcell" ) type View struct { @@ -32,504 +24,3 @@ type Window interface { Resize(w, h int) SetActive(b bool) } - -// The BufWindow provides a way of displaying a certain section -// of a buffer -type BufWindow struct { - *View - - // Buffer being shown in this window - Buf *buffer.Buffer - - active bool - - sline *StatusLine - - lineHeight []int - gutterOffset int -} - -// NewBufWindow creates a new window at a location in the screen with a width and height -func NewBufWindow(x, y, width, height int, buf *buffer.Buffer) *BufWindow { - w := new(BufWindow) - w.View = new(View) - w.X, w.Y, w.Width, w.Height, w.Buf = x, y, width, height, buf - w.lineHeight = make([]int, height) - w.active = true - - w.sline = NewStatusLine(w) - - return w -} - -func (v *View) GetView() *View { - return v -} - -func (v *View) SetView(view *View) { - v = view -} - -func (w *BufWindow) Resize(width, height int) { - w.Width, w.Height = width, height - w.lineHeight = make([]int, height) -} - -func (w *BufWindow) SetActive(b bool) { - w.active = b -} - -func (w *BufWindow) getStartInfo(n, lineN int) ([]byte, int, int, *tcell.Style) { - tabsize := util.IntOpt(w.Buf.Settings["tabsize"]) - width := 0 - bloc := buffer.Loc{0, lineN} - b := w.Buf.LineBytes(lineN) - curStyle := config.DefStyle - var s *tcell.Style - for len(b) > 0 { - r, size := utf8.DecodeRune(b) - - curStyle, found := w.getStyle(curStyle, bloc, r) - if found { - s = &curStyle - } - - w := 0 - switch r { - case '\t': - ts := tabsize - (width % tabsize) - w = ts - default: - w = runewidth.RuneWidth(r) - } - if width+w > n { - return b, n - width, bloc.X, s - } - width += w - b = b[size:] - bloc.X++ - } - return b, n - width, bloc.X, s -} - -// Clear resets all cells in this window to the default style -func (w *BufWindow) Clear() { - for y := 0; y < w.Height; y++ { - for x := 0; x < w.Width; x++ { - screen.Screen.SetContent(w.X+x, w.Y+y, ' ', nil, config.DefStyle) - } - } -} - -// Bottomline returns the line number of the lowest line in the view -// You might think that this is obviously just v.StartLine + v.Height -// but if softwrap is enabled things get complicated since one buffer -// line can take up multiple lines in the view -func (w *BufWindow) Bottomline() int { - // b := w.Buf - - // TODO: possible non-softwrap optimization - // if !b.Settings["softwrap"].(bool) { - // return w.StartLine + w.Height - // } - - prev := 0 - for _, l := range w.lineHeight { - if l >= prev { - prev = l - } else { - break - } - } - return prev -} - -// Relocate moves the view window so that the cursor is in view -// This is useful if the user has scrolled far away, and then starts typing -// Returns true if the window location is moved -func (w *BufWindow) Relocate() bool { - b := w.Buf - height := w.Bottomline() + 1 - w.StartLine - ret := false - activeC := w.Buf.GetActiveCursor() - cy := activeC.Y - scrollmargin := int(b.Settings["scrollmargin"].(float64)) - if cy < w.StartLine+scrollmargin && cy > scrollmargin-1 { - w.StartLine = cy - scrollmargin - ret = true - } else if cy < w.StartLine { - w.StartLine = cy - ret = true - } - if cy > w.StartLine+height-1-scrollmargin && cy < b.LinesNum()-scrollmargin { - w.StartLine = cy - height + 1 + scrollmargin - ret = true - } else if cy >= b.LinesNum()-scrollmargin && cy >= height { - w.StartLine = b.LinesNum() - height - ret = true - } - - // horizontal relocation (scrolling) - if !b.Settings["softwrap"].(bool) { - cx := activeC.GetVisualX() - if cx < w.StartCol { - w.StartCol = cx - ret = true - } - if cx+w.gutterOffset+1 > w.StartCol+w.Width { - w.StartCol = cx - w.Width + w.gutterOffset + 1 - ret = true - } - } - return ret -} - -func (w *BufWindow) GetMouseLoc(svloc buffer.Loc) buffer.Loc { - b := w.Buf - - // TODO: possible non-softwrap optimization - // if !b.Settings["softwrap"].(bool) { - // l := b.LineBytes(svloc.Y) - // return buffer.Loc{b.GetActiveCursor().GetCharPosInLine(l, svloc.X), svloc.Y} - // } - - bufHeight := w.Height - if b.Settings["statusline"].(bool) { - bufHeight-- - } - - // We need to know the string length of the largest line number - // so we can pad appropriately when displaying line numbers - maxLineNumLength := len(strconv.Itoa(b.LinesNum())) - - tabsize := int(b.Settings["tabsize"].(float64)) - softwrap := b.Settings["softwrap"].(bool) - - // this represents the current draw position - // within the current window - vloc := buffer.Loc{X: 0, Y: 0} - - // this represents the current draw position in the buffer (char positions) - bloc := buffer.Loc{X: -1, Y: w.StartLine} - - for vloc.Y = 0; vloc.Y < bufHeight; vloc.Y++ { - vloc.X = 0 - if b.Settings["ruler"].(bool) { - vloc.X += maxLineNumLength + 1 - } - - line := b.LineBytes(bloc.Y) - line, nColsBeforeStart, bslice := util.SliceVisualEnd(line, w.StartCol, tabsize) - bloc.X = bslice - - draw := func() { - if nColsBeforeStart <= 0 { - vloc.X++ - } - nColsBeforeStart-- - } - - w.lineHeight[vloc.Y] = bloc.Y - - totalwidth := w.StartCol - nColsBeforeStart - - if svloc.X <= vloc.X+w.X && vloc.Y+w.Y == svloc.Y { - return bloc - } - for len(line) > 0 { - if vloc.X+w.X == svloc.X && vloc.Y+w.Y == svloc.Y { - return bloc - } - - r, size := utf8.DecodeRune(line) - draw() - width := 0 - - switch r { - case '\t': - ts := tabsize - (totalwidth % tabsize) - width = ts - default: - width = runewidth.RuneWidth(r) - } - - // Draw any extra characters either spaces for tabs or @ for incomplete wide runes - if width > 1 { - for i := 1; i < width; i++ { - if vloc.X+w.X == svloc.X && vloc.Y+w.Y == svloc.Y { - return bloc - } - draw() - } - } - bloc.X++ - line = line[size:] - - totalwidth += width - - // If we reach the end of the window then we either stop or we wrap for softwrap - if vloc.X >= w.Width { - if !softwrap { - break - } else { - vloc.Y++ - if vloc.Y >= bufHeight { - break - } - vloc.X = 0 - w.lineHeight[vloc.Y] = bloc.Y - // This will draw an empty line number because the current line is wrapped - vloc.X += maxLineNumLength + 1 - } - } - } - if vloc.Y+w.Y == svloc.Y { - return bloc - } - - bloc.X = w.StartCol - bloc.Y++ - if bloc.Y >= b.LinesNum() { - break - } - } - - return buffer.Loc{} -} - -func (w *BufWindow) drawLineNum(lineNumStyle tcell.Style, softwrapped bool, maxLineNumLength int, vloc *buffer.Loc, bloc *buffer.Loc) { - lineNum := strconv.Itoa(bloc.Y + 1) - - // Write the spaces before the line number if necessary - for i := 0; i < maxLineNumLength-len(lineNum); i++ { - screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ' ', nil, lineNumStyle) - vloc.X++ - } - // Write the actual line number - for _, ch := range lineNum { - if softwrapped { - screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ' ', nil, lineNumStyle) - } else { - screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ch, nil, lineNumStyle) - } - vloc.X++ - } - - // Write the extra space - screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, ' ', nil, lineNumStyle) - vloc.X++ -} - -// getStyle returns the highlight style for the given character position -// If there is no change to the current highlight style it just returns that -func (w *BufWindow) getStyle(style tcell.Style, bloc buffer.Loc, r rune) (tcell.Style, bool) { - if group, ok := w.Buf.Match(bloc.Y)[bloc.X]; ok { - s := config.GetColor(group.String()) - return s, true - } - return style, false -} - -func (w *BufWindow) showCursor(x, y int, main bool) { - if w.active { - if main { - screen.Screen.ShowCursor(x, y) - } else { - r, _, _, _ := screen.Screen.GetContent(x, y) - screen.Screen.SetContent(x, y, r, nil, config.DefStyle.Reverse(true)) - } - } -} - -// displayBuffer draws the buffer being shown in this window on the screen.Screen -func (w *BufWindow) displayBuffer() { - b := w.Buf - - bufHeight := w.Height - if b.Settings["statusline"].(bool) { - bufHeight-- - } - - // TODO: Rehighlighting - start := w.StartLine - if b.Settings["syntax"].(bool) && b.SyntaxDef != nil { - if start > 0 && b.Rehighlight(start-1) { - b.Highlighter.ReHighlightLine(b, start-1) - b.SetRehighlight(start-1, false) - } - - b.Highlighter.ReHighlightStates(b, start) - - b.Highlighter.HighlightMatches(b, w.StartLine, w.StartLine+bufHeight) - } - - lineNumStyle := config.DefStyle - if style, ok := config.Colorscheme["line-number"]; ok { - lineNumStyle = style - } - curNumStyle := config.DefStyle - if style, ok := config.Colorscheme["current-line-number"]; ok { - curNumStyle = style - } - - // We need to know the string length of the largest line number - // so we can pad appropriately when displaying line numbers - maxLineNumLength := len(strconv.Itoa(b.LinesNum())) - - tabsize := int(b.Settings["tabsize"].(float64)) - softwrap := b.Settings["softwrap"].(bool) - - // this represents the current draw position - // within the current window - vloc := buffer.Loc{X: 0, Y: 0} - - // this represents the current draw position in the buffer (char positions) - bloc := buffer.Loc{X: -1, Y: w.StartLine} - - cursors := b.GetCursors() - - curStyle := config.DefStyle - for vloc.Y = 0; vloc.Y < bufHeight; vloc.Y++ { - vloc.X = 0 - if b.Settings["ruler"].(bool) { - s := lineNumStyle - for _, c := range cursors { - if bloc.Y == c.Y && w.active { - s = curNumStyle - break - } - } - w.drawLineNum(s, false, maxLineNumLength, &vloc, &bloc) - } - - w.gutterOffset = vloc.X - - line, nColsBeforeStart, bslice, startStyle := w.getStartInfo(w.StartCol, bloc.Y) - if startStyle != nil { - curStyle = *startStyle - } - bloc.X = bslice - - draw := func(r rune, style tcell.Style, showcursor bool) { - if nColsBeforeStart <= 0 { - for _, c := range cursors { - if c.HasSelection() && - (bloc.GreaterEqual(c.CurSelection[0]) && bloc.LessThan(c.CurSelection[1]) || - bloc.LessThan(c.CurSelection[0]) && bloc.GreaterEqual(c.CurSelection[1])) { - // The current character is selected - style = config.DefStyle.Reverse(true) - - if s, ok := config.Colorscheme["selection"]; ok { - style = s - } - } - - if b.Settings["cursorline"].(bool) && w.active && - !c.HasSelection() && c.Y == bloc.Y { - if s, ok := config.Colorscheme["cursor-line"]; ok { - fg, _, _ := s.Decompose() - style = style.Background(fg) - } - } - } - - screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, r, nil, style) - - if showcursor { - for _, c := range cursors { - if c.X == bloc.X && c.Y == bloc.Y && !c.HasSelection() { - w.showCursor(w.X+vloc.X, w.Y+vloc.Y, c.Num == 0) - } - } - } - vloc.X++ - } - nColsBeforeStart-- - } - - w.lineHeight[vloc.Y] = bloc.Y - - totalwidth := w.StartCol - nColsBeforeStart - for len(line) > 0 { - r, size := utf8.DecodeRune(line) - curStyle, _ = w.getStyle(curStyle, bloc, r) - - draw(r, curStyle, true) - - width := 0 - - char := ' ' - switch r { - case '\t': - ts := tabsize - (totalwidth % tabsize) - width = ts - default: - width = runewidth.RuneWidth(r) - char = '@' - } - - // Draw any extra characters either spaces for tabs or @ for incomplete wide runes - if width > 1 { - for i := 1; i < width; i++ { - draw(char, curStyle, false) - } - } - bloc.X++ - line = line[size:] - - totalwidth += width - - // If we reach the end of the window then we either stop or we wrap for softwrap - if vloc.X >= w.Width { - if !softwrap { - break - } else { - vloc.Y++ - if vloc.Y >= bufHeight { - break - } - vloc.X = 0 - w.lineHeight[vloc.Y] = bloc.Y - // This will draw an empty line number because the current line is wrapped - w.drawLineNum(lineNumStyle, true, maxLineNumLength, &vloc, &bloc) - } - } - } - - for _, c := range cursors { - if b.Settings["cursorline"].(bool) && w.active && - !c.HasSelection() && c.Y == bloc.Y { - style := config.DefStyle - if s, ok := config.Colorscheme["cursor-line"]; ok { - fg, _, _ := s.Decompose() - style = style.Background(fg) - } - for i := vloc.X; i < w.Width; i++ { - screen.Screen.SetContent(i+w.X, vloc.Y+w.Y, ' ', nil, style) - } - } - } - - for _, c := range cursors { - if c.X == bloc.X && c.Y == bloc.Y && !c.HasSelection() { - w.showCursor(w.X+vloc.X, w.Y+vloc.Y, c.Num == 0) - } - } - - bloc.X = w.StartCol - bloc.Y++ - if bloc.Y >= b.LinesNum() { - break - } - } -} - -func (w *BufWindow) displayStatusLine() { - w.sline.Display() -} - -// Display displays the buffer and the statusline -func (w *BufWindow) Display() { - w.displayBuffer() - w.displayStatusLine() -} diff --git a/cmd/micro/info/infobuffer.go b/cmd/micro/info/infobuffer.go index 4e22d2f6..438e3b52 100644 --- a/cmd/micro/info/infobuffer.go +++ b/cmd/micro/info/infobuffer.go @@ -28,7 +28,7 @@ type InfoBuf struct { HistoryNum int // Is the current message a message from the gutter - GutterMessage bool + HasGutter bool PromptCallback func(resp string, canceled bool) EventCallback func(resp string) @@ -63,6 +63,18 @@ func (i *InfoBuf) Message(msg ...interface{}) { } } +// GutterMessage displays a message and marks it as a gutter message +func (i *InfoBuf) GutterMessage(msg ...interface{}) { + i.Message(msg...) + i.HasGutter = true +} + +// ClearGutter clears the info bar and unmarks the message +func (i *InfoBuf) ClearGutter() { + i.HasGutter = false + i.Message("") +} + // Error sends an error message to the user func (i *InfoBuf) Error(msg ...interface{}) { // only display a new message if there isn't an active prompt @@ -96,6 +108,7 @@ func (i *InfoBuf) Prompt(prompt string, msg string, ptype string, eventcb func(s i.Msg = prompt i.HasPrompt = true i.HasMessage, i.HasError, i.HasYN = false, false, false + i.HasGutter = false i.PromptCallback = donecb i.EventCallback = eventcb i.Buffer.Insert(i.Buffer.Start(), msg) @@ -110,6 +123,7 @@ func (i *InfoBuf) YNPrompt(prompt string, donecb func(bool, bool)) { i.HasPrompt = true i.HasYN = true i.HasMessage, i.HasError = false, false + i.HasGutter = false i.YNCallback = donecb } @@ -118,6 +132,7 @@ func (i *InfoBuf) DonePrompt(canceled bool) { hadYN := i.HasYN i.HasPrompt = false i.HasYN = false + i.HasGutter = false if i.PromptCallback != nil && !hadYN { if canceled { i.PromptCallback("", true) @@ -143,4 +158,5 @@ func (i *InfoBuf) DonePrompt(canceled bool) { func (i *InfoBuf) Reset() { i.Msg = "" i.HasPrompt, i.HasMessage, i.HasError = false, false, false + i.HasGutter = false } From 8858c03b3bff18cfec9b49c83d96cb15ed509634 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 13 Jan 2019 17:58:08 -0500 Subject: [PATCH 066/231] Add raw event support --- cmd/micro/action/bindings.go | 2 +- cmd/micro/action/bufhandler.go | 31 ++++++++++++++++++++++--------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/cmd/micro/action/bindings.go b/cmd/micro/action/bindings.go index 105f8ca2..ea097f81 100644 --- a/cmd/micro/action/bindings.go +++ b/cmd/micro/action/bindings.go @@ -54,7 +54,7 @@ func BindKey(k, v string) { case MouseEvent: BufMapMouse(e, v) case RawEvent: - util.TermMessage("Raw events not supported yet") + BufMapKey(e, v) } config.Bindings[k] = v diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index e8ace8ba..571748d3 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -12,18 +12,18 @@ import ( type BufKeyAction func(*BufHandler) bool type BufMouseAction func(*BufHandler, *tcell.EventMouse) bool -var BufKeyBindings map[KeyEvent]BufKeyAction -var BufKeyStrings map[KeyEvent]string +var BufKeyBindings map[Event]BufKeyAction +var BufKeyStrings map[Event]string var BufMouseBindings map[MouseEvent]BufMouseAction func init() { - BufKeyBindings = make(map[KeyEvent]BufKeyAction) - BufKeyStrings = make(map[KeyEvent]string) + BufKeyBindings = make(map[Event]BufKeyAction) + BufKeyStrings = make(map[Event]string) BufMouseBindings = make(map[MouseEvent]BufMouseAction) } // BufMapKey maps a key event to an action -func BufMapKey(k KeyEvent, action string) { +func BufMapKey(k Event, action string) { if f, ok := BufKeyActions[action]; ok { BufKeyStrings[k] = action BufKeyBindings[k] = f @@ -38,9 +38,10 @@ func BufMapMouse(k MouseEvent, action string) { BufMouseBindings[k] = f } else if f, ok := BufKeyActions[action]; ok { // allowed to map mouse buttons to key actions - BufMouseBindings[k] = func(h *BufHandler, e *tcell.EventMouse) bool { - return f(h) - } + BufKeyStrings[k] = action + BufKeyBindings[k] = f + // ensure we don't double bind a key + delete(BufMouseBindings, k) } else { util.TermMessage("Error:", action, "does not exist") } @@ -123,6 +124,11 @@ func (h *BufHandler) Name() string { // TODO: multiple actions bound to one key func (h *BufHandler) HandleEvent(event tcell.Event) { switch e := event.(type) { + case *tcell.EventRaw: + re := RawEvent{ + esc: e.EscSeq(), + } + h.DoKeyEvent(re) case *tcell.EventKey: ke := KeyEvent{ code: e.Key(), @@ -184,7 +190,7 @@ func (h *BufHandler) HandleEvent(event tcell.Event) { // DoKeyEvent executes a key event by finding the action it is bound // to and executing it (possibly multiple times for multiple cursors) -func (h *BufHandler) DoKeyEvent(e KeyEvent) bool { +func (h *BufHandler) DoKeyEvent(e Event) bool { if action, ok := BufKeyBindings[e]; ok { estr := BufKeyStrings[e] for _, s := range MultiActions { @@ -208,6 +214,11 @@ func (h *BufHandler) DoKeyEvent(e KeyEvent) bool { return false } +func (h *BufHandler) HasKeyEvent(e Event) bool { + _, ok := BufKeyBindings[e] + return ok +} + // DoMouseEvent executes a mouse event by finding the action it is bound // to and executing it func (h *BufHandler) DoMouseEvent(e MouseEvent, te *tcell.EventMouse) bool { @@ -216,6 +227,8 @@ func (h *BufHandler) DoMouseEvent(e MouseEvent, te *tcell.EventMouse) bool { h.Relocate() } return true + } else if h.HasKeyEvent(e) { + return h.DoKeyEvent(e) } return false } From 5701ed211add9e9409915e36a4b571e8fdef1dad Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 13 Jan 2019 18:18:23 -0500 Subject: [PATCH 067/231] Fix empty splits and single terms --- cmd/micro/action/actions.go | 12 ++++++------ cmd/micro/action/actions_other.go | 2 +- cmd/micro/action/bufhandler.go | 8 ++++---- cmd/micro/action/command.go | 31 +++++++++++++++++++++++++++---- cmd/micro/display/statusline.go | 7 +++---- cmd/micro/shell/terminal.go | 2 -- 6 files changed, 41 insertions(+), 21 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 4179af32..d280c333 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -1065,16 +1065,16 @@ func (h *BufHandler) NextTab() bool { return false } -// VSplitBinding opens an empty vertical split -func (h *BufHandler) VSplitBinding() bool { - h.vsplit(buffer.NewBufferFromString("", "", buffer.BTDefault)) +// VSplitAction opens an empty vertical split +func (h *BufHandler) VSplitAction() bool { + h.VSplitBuf(buffer.NewBufferFromString("", "", buffer.BTDefault)) return false } -// HSplitBinding opens an empty horizontal split -func (h *BufHandler) HSplitBinding() bool { - h.hsplit(buffer.NewBufferFromString("", "", buffer.BTDefault)) +// HSplitAction opens an empty horizontal split +func (h *BufHandler) HSplitAction() bool { + h.HSplitBuf(buffer.NewBufferFromString("", "", buffer.BTDefault)) return false } diff --git a/cmd/micro/action/actions_other.go b/cmd/micro/action/actions_other.go index 15699895..52e94376 100644 --- a/cmd/micro/action/actions_other.go +++ b/cmd/micro/action/actions_other.go @@ -3,6 +3,6 @@ package action func (*BufHandler) Suspend() bool { - // TODO: error message + InfoBar.Error("Suspend is only supported on BSD/Linux") return false } diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 571748d3..0ffa514f 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -254,14 +254,14 @@ func (h *BufHandler) DoRuneInsert(r rune) { } } -func (h *BufHandler) vsplit(buf *buffer.Buffer) { +func (h *BufHandler) VSplitBuf(buf *buffer.Buffer) { e := NewBufEditPane(0, 0, 0, 0, buf) e.splitID = MainTab().GetNode(h.splitID).VSplit(h.Buf.Settings["splitright"].(bool)) MainTab().Panes = append(MainTab().Panes, e) MainTab().Resize() MainTab().SetActive(len(MainTab().Panes) - 1) } -func (h *BufHandler) hsplit(buf *buffer.Buffer) { +func (h *BufHandler) HSplitBuf(buf *buffer.Buffer) { e := NewBufEditPane(0, 0, 0, 0, buf) e.splitID = MainTab().GetNode(h.splitID).HSplit(h.Buf.Settings["splitbottom"].(bool)) MainTab().Panes = append(MainTab().Panes, e) @@ -350,8 +350,8 @@ var BufKeyActions = map[string]BufKeyAction{ "NextSplit": (*BufHandler).NextSplit, "PreviousSplit": (*BufHandler).PreviousSplit, "Unsplit": (*BufHandler).Unsplit, - "VSplit": (*BufHandler).VSplitBinding, - "HSplit": (*BufHandler).HSplitBinding, + "VSplit": (*BufHandler).VSplitAction, + "HSplit": (*BufHandler).HSplitAction, "ToggleMacro": (*BufHandler).ToggleMacro, "PlayMacro": (*BufHandler).PlayMacro, "Suspend": (*BufHandler).Suspend, diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 8ae80064..814c99cb 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -198,25 +198,37 @@ func (h *BufHandler) HelpCmd(args []string) { // VSplitCmd opens a vertical split with file given in the first argument // If no file is given, it opens an empty buffer in a new split func (h *BufHandler) VSplitCmd(args []string) { + if len(args) == 0 { + // Open an empty vertical split + h.VSplitAction() + return + } + buf, err := buffer.NewBufferFromFile(args[0], buffer.BTDefault) if err != nil { InfoBar.Error(err) return } - h.vsplit(buf) + h.VSplitBuf(buf) } // HSplitCmd opens a horizontal split with file given in the first argument // If no file is given, it opens an empty buffer in a new split func (h *BufHandler) HSplitCmd(args []string) { + if len(args) == 0 { + // Open an empty horizontal split + h.HSplitAction() + return + } + buf, err := buffer.NewBufferFromFile(args[0], buffer.BTDefault) if err != nil { InfoBar.Error(err) return } - h.hsplit(buf) + h.HSplitBuf(buf) } // EvalCmd evaluates a lua expression @@ -318,10 +330,21 @@ func (h *BufHandler) TermCmd(args []string) { } term := func(i int) { - v := h.GetView() + // If there is only one open file we make a new tab instead of overwriting it + newtab := len(MainTab().Panes) == 1 && len(Tabs.List) == 1 + t := new(shell.Terminal) t.Start(args, false, true) - MainTab().Panes[i] = NewTermHandler(v.X, v.Y, v.Width, v.Height, t, h.ID()) + + id := h.ID() + if newtab { + h.AddTab() + i = 0 + id = MainTab().Panes[0].ID() + } + + v := h.GetView() + MainTab().Panes[i] = NewTermHandler(v.X, v.Y, v.Width, v.Height, t, id) MainTab().SetActive(i) } diff --git a/cmd/micro/display/statusline.go b/cmd/micro/display/statusline.go index e6b06033..c1e72a41 100644 --- a/cmd/micro/display/statusline.go +++ b/cmd/micro/display/statusline.go @@ -70,9 +70,9 @@ var formatParser = regexp.MustCompile(`\$\(.+?\)`) // Display draws the statusline to the screen func (s *StatusLine) Display() { // TODO: don't display if infobar off and has message - // if !GetGlobalOption("infobar").(bool) { - // return - // } + if !config.GetGlobalOption("infobar").(bool) { + return + } // We'll draw the line at the lowest line in the window y := s.win.Height + s.win.Y - 1 @@ -84,7 +84,6 @@ func (s *StatusLine) Display() { return []byte(fmt.Sprint(s.FindOpt(string(option)))) } else if bytes.HasPrefix(name, []byte("bind")) { binding := string(name[5:]) - // TODO: search bindings for k, v := range config.Bindings { if v == binding { return []byte(k) diff --git a/cmd/micro/shell/terminal.go b/cmd/micro/shell/terminal.go index ea098221..bfb7fa87 100644 --- a/cmd/micro/shell/terminal.go +++ b/cmd/micro/shell/terminal.go @@ -94,8 +94,6 @@ func (t *Terminal) Start(execCmd []string, getOutput bool, wait bool) error { screen.Redraw() } t.Stop() - // TODO: close Term - // closeterm <- view.Num }() return nil From b9f793901824a25d5bb4dc64d843ef4afead6ce9 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 13 Jan 2019 18:28:24 -0500 Subject: [PATCH 068/231] Add term statusline --- cmd/micro/display/termwindow.go | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/cmd/micro/display/termwindow.go b/cmd/micro/display/termwindow.go index 1741ad6b..e5b72a22 100644 --- a/cmd/micro/display/termwindow.go +++ b/cmd/micro/display/termwindow.go @@ -1,6 +1,8 @@ package display import ( + "unicode/utf8" + "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/screen" @@ -21,8 +23,8 @@ func NewTermWindow(x, y, w, h int, term *shell.Terminal) *TermWindow { tw.View = new(View) tw.Terminal = term tw.X, tw.Y = x, y - tw.Width, tw.Height = w, h - tw.Resize(w, h) + tw.Width, tw.Height = w, h-1 + tw.Resize(tw.Width, tw.Height) return tw } @@ -82,6 +84,24 @@ func (w *TermWindow) Display() { screen.Screen.SetContent(w.X+x, w.Y+y, c, nil, st) } } + if config.GetGlobalOption("statusline").(bool) { + statusLineStyle := config.DefStyle.Reverse(true) + if style, ok := config.Colorscheme["statusline"]; ok { + statusLineStyle = style + } + + text := []byte(w.Name()) + textLen := utf8.RuneCount(text) + for x := 0; x < w.Width; x++ { + if x < textLen { + r, size := utf8.DecodeRune(text) + text = text[size:] + screen.Screen.SetContent(w.X+x, w.Y+w.Height, r, nil, statusLineStyle) + } else { + screen.Screen.SetContent(w.X+x, w.Y+w.Height, ' ', nil, statusLineStyle) + } + } + } if w.State.CursorVisible() && w.active { curx, cury := w.State.Cursor() screen.Screen.ShowCursor(curx+w.X, cury+w.Y) From 6c1db53b652820a37425306edf448ad23910e5b1 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 13 Jan 2019 18:34:12 -0500 Subject: [PATCH 069/231] Fix scroll problem --- cmd/micro/display/bufwindow.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmd/micro/display/bufwindow.go b/cmd/micro/display/bufwindow.go index 10b50237..e22703cb 100644 --- a/cmd/micro/display/bufwindow.go +++ b/cmd/micro/display/bufwindow.go @@ -129,6 +129,9 @@ func (w *BufWindow) Bottomline() int { func (w *BufWindow) Relocate() bool { b := w.Buf height := w.Bottomline() + 1 - w.StartLine + if b.LinesNum() < w.Height { + height = w.Height - 1 + } ret := false activeC := w.Buf.GetActiveCursor() cy := activeC.Y From a5e7122b306bd8c71a9ede13dd35e329507564d5 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 13 Jan 2019 21:06:58 -0500 Subject: [PATCH 070/231] Add almost full option support --- cmd/micro/action/actions.go | 1 + cmd/micro/action/actions_posix.go | 3 +- cmd/micro/action/bindings.go | 8 +- cmd/micro/action/bufhandler.go | 9 +- cmd/micro/action/command.go | 76 +++++++ cmd/micro/action/{editpane.go => pane.go} | 1 + cmd/micro/action/termhandler.go | 3 + cmd/micro/buffer/buffer.go | 99 +++++---- cmd/micro/buffer/eventhandler.go | 2 +- cmd/micro/buffer/save.go | 34 ++- cmd/micro/buffer/settings.go | 43 ++++ cmd/micro/config/settings.go | 249 ++++------------------ cmd/micro/micro.go | 11 +- cmd/micro/{util => screen}/message.go | 8 +- cmd/micro/shell/shell.go | 3 +- cmd/micro/util/util.go | 14 ++ 16 files changed, 285 insertions(+), 279 deletions(-) rename cmd/micro/action/{editpane.go => pane.go} (98%) create mode 100644 cmd/micro/buffer/settings.go rename cmd/micro/{util => screen}/message.go (87%) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index d280c333..bf803f40 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -1009,6 +1009,7 @@ func (h *BufHandler) Escape() bool { // Quit this will close the current tab or view that is open func (h *BufHandler) Quit() bool { quit := func() { + h.Buf.Close() if len(MainTab().Panes) > 1 { h.Unsplit() } else if len(Tabs.List) > 1 { diff --git a/cmd/micro/action/actions_posix.go b/cmd/micro/action/actions_posix.go index e91ea256..c6ac2b0d 100644 --- a/cmd/micro/action/actions_posix.go +++ b/cmd/micro/action/actions_posix.go @@ -6,7 +6,6 @@ import ( "syscall" "github.com/zyedidia/micro/cmd/micro/screen" - "github.com/zyedidia/micro/cmd/micro/util" ) // Suspend sends micro to the background. This is the same as pressing CtrlZ in most unix programs. @@ -19,7 +18,7 @@ func (*BufHandler) Suspend() bool { pid := syscall.Getpid() err := syscall.Kill(pid, syscall.SIGSTOP) if err != nil { - util.TermMessage(err) + screen.TermMessage(err) } screen.TempStart(screenb) diff --git a/cmd/micro/action/bindings.go b/cmd/micro/action/bindings.go index ea097f81..b2aa26f0 100644 --- a/cmd/micro/action/bindings.go +++ b/cmd/micro/action/bindings.go @@ -10,7 +10,7 @@ import ( "github.com/flynn/json5" "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/micro/cmd/micro/screen" "github.com/zyedidia/tcell" ) @@ -24,13 +24,13 @@ func InitBindings() { if _, e := os.Stat(filename); e == nil { input, err := ioutil.ReadFile(filename) if err != nil { - util.TermMessage("Error reading bindings.json file: " + err.Error()) + screen.TermMessage("Error reading bindings.json file: " + err.Error()) return } err = json5.Unmarshal(input, &parsed) if err != nil { - util.TermMessage("Error reading bindings.json:", err.Error()) + screen.TermMessage("Error reading bindings.json:", err.Error()) } } @@ -45,7 +45,7 @@ func InitBindings() { func BindKey(k, v string) { event, ok := findEvent(k) if !ok { - util.TermMessage(k, "is not a bindable event") + screen.TermMessage(k, "is not a bindable event") } switch e := event.(type) { diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 0ffa514f..54d65374 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -5,7 +5,7 @@ import ( "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/display" - "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/micro/cmd/micro/screen" "github.com/zyedidia/tcell" ) @@ -28,7 +28,7 @@ func BufMapKey(k Event, action string) { BufKeyStrings[k] = action BufKeyBindings[k] = f } else { - util.TermMessage("Error:", action, "does not exist") + screen.TermMessage("Error:", action, "does not exist") } } @@ -43,7 +43,7 @@ func BufMapMouse(k MouseEvent, action string) { // ensure we don't double bind a key delete(BufMouseBindings, k) } else { - util.TermMessage("Error:", action, "does not exist") + screen.TermMessage("Error:", action, "does not exist") } } @@ -268,6 +268,9 @@ func (h *BufHandler) HSplitBuf(buf *buffer.Buffer) { MainTab().Resize() MainTab().SetActive(len(MainTab().Panes) - 1) } +func (h *BufHandler) Close() { + h.Buf.Close() +} // BufKeyActions contains the list of all possible key actions the bufhandler could execute var BufKeyActions = map[string]BufKeyAction{ diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 814c99cb..e4525ab0 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -257,12 +257,86 @@ func (h *BufHandler) NewTabCmd(args []string) { } } +func SetGlobalOption(option, value string) error { + if _, ok := config.GlobalSettings[option]; !ok { + return config.ErrInvalidOption + } + + nativeValue, err := config.GetNativeValue(option, config.GlobalSettings[option], value) + if err != nil { + return err + } + + config.GlobalSettings[option] = nativeValue + + if option == "colorscheme" { + // LoadSyntaxFiles() + config.InitColorscheme() + for _, b := range buffer.OpenBuffers { + b.UpdateRules() + } + } + + // TODO: info and keymenu option change + // if option == "infobar" || option == "keymenu" { + // for _, tab := range tabs { + // tab.Resize() + // } + // } + + if option == "mouse" { + if !nativeValue.(bool) { + screen.Screen.DisableMouse() + } else { + screen.Screen.EnableMouse() + } + } + + for _, b := range buffer.OpenBuffers { + b.SetOption(option, value) + } + + config.WriteSettings(config.ConfigDir + "/settings.json") + + return nil +} + // SetCmd sets an option func (h *BufHandler) SetCmd(args []string) { + if len(args) < 2 { + InfoBar.Error("Not enough arguments") + return + } + + option := args[0] + value := args[1] + + err := SetGlobalOption(option, value) + if err == config.ErrInvalidOption { + err := h.Buf.SetOption(option, value) + if err != nil { + InfoBar.Error(err) + } + } else if err != nil { + InfoBar.Error(err) + } } // SetLocalCmd sets an option local to the buffer func (h *BufHandler) SetLocalCmd(args []string) { + if len(args) < 2 { + InfoBar.Error("Not enough arguments") + return + } + + option := args[0] + value := args[1] + + err := h.Buf.SetOption(option, value) + if err != nil { + InfoBar.Error(err) + } + } // ShowCmd shows the value of the given option @@ -341,6 +415,8 @@ func (h *BufHandler) TermCmd(args []string) { h.AddTab() i = 0 id = MainTab().Panes[0].ID() + } else { + MainTab().Panes[i].Close() } v := h.GetView() diff --git a/cmd/micro/action/editpane.go b/cmd/micro/action/pane.go similarity index 98% rename from cmd/micro/action/editpane.go rename to cmd/micro/action/pane.go index dfc2d78f..f7db4b68 100644 --- a/cmd/micro/action/editpane.go +++ b/cmd/micro/action/pane.go @@ -11,6 +11,7 @@ type Pane interface { display.Window ID() uint64 Name() string + Close() } type EditPane struct { diff --git a/cmd/micro/action/termhandler.go b/cmd/micro/action/termhandler.go index 184daf76..0d19c551 100644 --- a/cmd/micro/action/termhandler.go +++ b/cmd/micro/action/termhandler.go @@ -31,7 +31,10 @@ func (t *TermHandler) ID() uint64 { return t.id } +func (t *TermHandler) Close() {} + func (t *TermHandler) Quit() { + t.Close() if len(MainTab().Panes) > 1 { t.Unsplit() } else if len(Tabs.List) > 1 { diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index 96b76dd1..8ee1a6bb 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -1,7 +1,6 @@ package buffer import ( - "bufio" "crypto/md5" "errors" "io" @@ -14,39 +13,11 @@ import ( "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/highlight" - + "github.com/zyedidia/micro/cmd/micro/screen" . "github.com/zyedidia/micro/cmd/micro/util" ) -// LargeFileThreshold is the number of bytes when fastdirty is forced -// because hashing is too slow -const LargeFileThreshold = 50000 - -// overwriteFile opens the given file for writing, truncating if one exists, and then calls -// the supplied function with the file as io.Writer object, also making sure the file is -// closed afterwards. -func overwriteFile(name string, fn func(io.Writer) error) (err error) { - var file *os.File - - if file, err = os.OpenFile(name, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644); err != nil { - return - } - - defer func() { - if e := file.Close(); e != nil && err == nil { - err = e - } - }() - - w := bufio.NewWriter(file) - - if err = fn(w); err != nil { - return - } - - err = w.Flush() - return -} +var OpenBuffers []*Buffer // The BufType defines what kind of buffer this is type BufType struct { @@ -63,6 +34,8 @@ var ( BTScratch = BufType{3, false, true, false} BTRaw = BufType{4, true, true, false} BTInfo = BufType{5, false, true, false} + + ErrFileTooLarge = errors.New("File is too large to hash") ) // Buffer stores the main information about a currently open file including @@ -149,6 +122,8 @@ func NewBufferFromString(text, path string, btype BufType) *Buffer { // Ensure that ReadSettings and InitGlobalSettings have been called before creating // a new buffer func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []string, btype BufType) *Buffer { + absPath, _ := filepath.Abs(path) + b := new(Buffer) b.Type = btype @@ -162,8 +137,6 @@ func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []strin b.LineArray = NewLineArray(uint64(size), FFAuto, reader) - absPath, _ := filepath.Abs(path) - b.Path = path b.AbsPath = absPath @@ -187,7 +160,7 @@ func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []strin if b.Settings["savecursor"].(bool) || b.Settings["saveundo"].(bool) { err := b.Unserialize() if err != nil { - TermMessage(err) + screen.TermMessage(err) } } @@ -200,9 +173,23 @@ func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []strin } } + OpenBuffers = append(OpenBuffers, b) + return b } +// Close removes this buffer from the list of open buffers +func (b *Buffer) Close() { + for i, buf := range OpenBuffers { + if b == buf { + copy(OpenBuffers[i:], OpenBuffers[i+1:]) + OpenBuffers[len(OpenBuffers)-1] = nil + OpenBuffers = OpenBuffers[:len(OpenBuffers)-1] + return + } + } +} + // GetName returns the name that should be displayed in the statusline // for this buffer func (b *Buffer) GetName() string { @@ -294,19 +281,37 @@ func (b *Buffer) Modified() bool { } // calcHash calculates md5 hash of all lines in the buffer -func calcHash(b *Buffer, out *[md5.Size]byte) { +func calcHash(b *Buffer, out *[md5.Size]byte) error { h := md5.New() + size := 0 if len(b.lines) > 0 { - h.Write(b.lines[0].data) + n, e := h.Write(b.lines[0].data) + if e != nil { + return e + } + size += n for _, l := range b.lines[1:] { - h.Write([]byte{'\n'}) - h.Write(l.data) + n, e = h.Write([]byte{'\n'}) + if e != nil { + return e + } + size += n + n, e = h.Write(l.data) + if e != nil { + return e + } + size += n } } + if size > LargeFileThreshold { + return ErrFileTooLarge + } + h.Sum((*out)[:0]) + return nil } func (b *Buffer) insert(pos Loc, value []byte) { @@ -334,16 +339,16 @@ func (b *Buffer) UpdateRules() { for _, f := range config.ListRuntimeFiles(config.RTSyntax) { data, err := f.Data() if err != nil { - TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) + screen.TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) } else { file, err := highlight.ParseFile(data) if err != nil { - TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) + screen.TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) continue } ftdetect, err := highlight.ParseFtDetect(file) if err != nil { - TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) + screen.TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) continue } @@ -355,7 +360,7 @@ func (b *Buffer) UpdateRules() { header.FtDetect = ftdetect b.SyntaxDef, err = highlight.ParseDef(file, header) if err != nil { - TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) + screen.TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) continue } rehighlight = true @@ -367,7 +372,7 @@ func (b *Buffer) UpdateRules() { header.FtDetect = ftdetect b.SyntaxDef, err = highlight.ParseDef(file, header) if err != nil { - TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) + screen.TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) continue } rehighlight = true @@ -392,6 +397,14 @@ func (b *Buffer) UpdateRules() { } } +// ClearMatches clears all of the syntax highlighting for the buffer +func (b *Buffer) ClearMatches() { + for i := range b.lines { + b.SetMatch(i, nil) + b.SetState(i, nil) + } +} + // IndentString returns this buffer's indent method (a tabstop or n spaces // depending on the settings) func (b *Buffer) IndentString(tabsize int) string { diff --git a/cmd/micro/buffer/eventhandler.go b/cmd/micro/buffer/eventhandler.go index 00d2c865..e6bd37a1 100644 --- a/cmd/micro/buffer/eventhandler.go +++ b/cmd/micro/buffer/eventhandler.go @@ -188,7 +188,7 @@ func (eh *EventHandler) Execute(t *TextEvent) { // for pl := range loadedPlugins { // ret, err := Call(pl+".onBeforeTextEvent", t) // if err != nil && !strings.HasPrefix(err.Error(), "function does not exist") { - // util.TermMessage(err) + // screen.TermMessage(err) // } // if val, ok := ret.(lua.LBool); ok && val == lua.LFalse { // return diff --git a/cmd/micro/buffer/save.go b/cmd/micro/buffer/save.go index a2270434..fe82a8e0 100644 --- a/cmd/micro/buffer/save.go +++ b/cmd/micro/buffer/save.go @@ -1,6 +1,7 @@ package buffer import ( + "bufio" "bytes" "io" "os" @@ -8,11 +9,40 @@ import ( "os/signal" "path/filepath" - . "github.com/zyedidia/micro/cmd/micro/util" - "github.com/zyedidia/micro/cmd/micro/config" + . "github.com/zyedidia/micro/cmd/micro/util" ) +// LargeFileThreshold is the number of bytes when fastdirty is forced +// because hashing is too slow +const LargeFileThreshold = 50000 + +// overwriteFile opens the given file for writing, truncating if one exists, and then calls +// the supplied function with the file as io.Writer object, also making sure the file is +// closed afterwards. +func overwriteFile(name string, fn func(io.Writer) error) (err error) { + var file *os.File + + if file, err = os.OpenFile(name, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644); err != nil { + return + } + + defer func() { + if e := file.Close(); e != nil && err == nil { + err = e + } + }() + + w := bufio.NewWriter(file) + + if err = fn(w); err != nil { + return + } + + err = w.Flush() + return +} + // Save saves the buffer to its default path func (b *Buffer) Save() error { return b.SaveAs(b.Path) diff --git a/cmd/micro/buffer/settings.go b/cmd/micro/buffer/settings.go new file mode 100644 index 00000000..fb3b5486 --- /dev/null +++ b/cmd/micro/buffer/settings.go @@ -0,0 +1,43 @@ +package buffer + +import ( + "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/cmd/micro/screen" +) + +// SetOption sets a given option to a value just for this buffer +func (b *Buffer) SetOption(option, value string) error { + if _, ok := b.Settings[option]; !ok { + return config.ErrInvalidOption + } + + nativeValue, err := config.GetNativeValue(option, b.Settings[option], value) + if err != nil { + return err + } + + b.Settings[option] = nativeValue + + if option == "fastdirty" { + if !nativeValue.(bool) { + e := calcHash(b, &b.origHash) + if e == ErrFileTooLarge { + b.Settings["fastdirty"] = false + } + } + } else if option == "statusline" { + screen.Redraw() + } else if option == "filetype" { + b.UpdateRules() + } else if option == "fileformat" { + b.isModified = true + } else if option == "syntax" { + if !nativeValue.(bool) { + b.ClearMatches() + } else { + b.UpdateRules() + } + } + + return nil +} diff --git a/cmd/micro/config/settings.go b/cmd/micro/config/settings.go index 2536b857..b82bd78f 100644 --- a/cmd/micro/config/settings.go +++ b/cmd/micro/config/settings.go @@ -6,19 +6,26 @@ import ( "io/ioutil" "os" "reflect" + "strconv" "strings" "github.com/flynn/json5" "github.com/zyedidia/glob" + "github.com/zyedidia/micro/cmd/micro/util" ) type optionValidator func(string, interface{}) error -// The options that the user can set -var GlobalSettings map[string]interface{} +var ( + ErrInvalidOption = errors.New("Invalid option") + ErrInvalidValue = errors.New("Invalid value") -// This is the raw parsed json -var parsedSettings map[string]interface{} + // The options that the user can set + GlobalSettings map[string]interface{} + + // This is the raw parsed json + parsedSettings map[string]interface{} +) // Options with validators var optionValidators = map[string]optionValidator{ @@ -120,22 +127,6 @@ func GetGlobalOption(name string) interface{} { return GlobalSettings[name] } -// GetLocalOption returns the local value of the given option -// func GetLocalOption(name string, buf *Buffer) interface{} { -// return buf.Settings[name] -// } - -// TODO: get option for current buffer -// GetOption returns the value of the given option -// If there is a local version of the option, it returns that -// otherwise it will return the global version -// func GetOption(name string) interface{} { -// if GetLocalOption(name, CurView().Buf) != nil { -// return GetLocalOption(name, CurView().Buf) -// } -// return GetGlobalOption(name) -// } - func DefaultCommonSettings() map[string]interface{} { return map[string]interface{}{ "autoindent": true, @@ -196,199 +187,35 @@ func DefaultLocalSettings() map[string]interface{} { return common } -// TODO: everything else +func GetNativeValue(option string, realValue interface{}, value string) (interface{}, error) { + var native interface{} + kind := reflect.TypeOf(realValue).Kind() + if kind == reflect.Bool { + b, err := util.ParseBool(value) + if err != nil { + return nil, ErrInvalidValue + } + native = b + } else if kind == reflect.String { + native = value + } else if kind == reflect.Float64 { + i, err := strconv.Atoi(value) + if err != nil { + return nil, ErrInvalidValue + } + native = float64(i) + } else { + return nil, ErrInvalidValue + } -// SetOption attempts to set the given option to the value -// By default it will set the option as global, but if the option -// is local only it will set the local version -// Use setlocal to force an option to be set locally -// func SetOption(option, value string) error { -// if _, ok := GlobalSettings[option]; !ok { -// if _, ok := CurView().Buf.Settings[option]; !ok { -// return errors.New("Invalid option") -// } -// SetLocalOption(option, value, CurView()) -// return nil -// } -// -// var nativeValue interface{} -// -// kind := reflect.TypeOf(GlobalSettings[option]).Kind() -// if kind == reflect.Bool { -// b, err := ParseBool(value) -// if err != nil { -// return errors.New("Invalid value") -// } -// nativeValue = b -// } else if kind == reflect.String { -// nativeValue = value -// } else if kind == reflect.Float64 { -// i, err := strconv.Atoi(value) -// if err != nil { -// return errors.New("Invalid value") -// } -// nativeValue = float64(i) -// } else { -// return errors.New("Option has unsupported value type") -// } -// -// if err := optionIsValid(option, nativeValue); err != nil { -// return err -// } -// -// GlobalSettings[option] = nativeValue -// -// if option == "colorscheme" { -// // LoadSyntaxFiles() -// InitColorscheme() -// for _, tab := range tabs { -// for _, view := range tab.Views { -// view.Buf.UpdateRules() -// } -// } -// } -// -// if option == "infobar" || option == "keymenu" { -// for _, tab := range tabs { -// tab.Resize() -// } -// } -// -// if option == "mouse" { -// if !nativeValue.(bool) { -// screen.DisableMouse() -// } else { -// screen.EnableMouse() -// } -// } -// -// if len(tabs) != 0 { -// if _, ok := CurView().Buf.Settings[option]; ok { -// for _, tab := range tabs { -// for _, view := range tab.Views { -// SetLocalOption(option, value, view) -// } -// } -// } -// } -// -// return nil -// } -// -// // SetLocalOption sets the local version of this option -// func SetLocalOption(option, value string, view *View) error { -// buf := view.Buf -// if _, ok := buf.Settings[option]; !ok { -// return errors.New("Invalid option") -// } -// -// var nativeValue interface{} -// -// kind := reflect.TypeOf(buf.Settings[option]).Kind() -// if kind == reflect.Bool { -// b, err := ParseBool(value) -// if err != nil { -// return errors.New("Invalid value") -// } -// nativeValue = b -// } else if kind == reflect.String { -// nativeValue = value -// } else if kind == reflect.Float64 { -// i, err := strconv.Atoi(value) -// if err != nil { -// return errors.New("Invalid value") -// } -// nativeValue = float64(i) -// } else { -// return errors.New("Option has unsupported value type") -// } -// -// if err := optionIsValid(option, nativeValue); err != nil { -// return err -// } -// -// if option == "fastdirty" { -// // If it is being turned off, we have to hash every open buffer -// var empty [md5.Size]byte -// var wg sync.WaitGroup -// -// for _, tab := range tabs { -// for _, v := range tab.Views { -// if !nativeValue.(bool) { -// if v.Buf.origHash == empty { -// wg.Add(1) -// -// go func(b *Buffer) { // calculate md5 hash of the file -// defer wg.Done() -// -// if file, e := os.Open(b.AbsPath); e == nil { -// defer file.Close() -// -// h := md5.New() -// -// if _, e = io.Copy(h, file); e == nil { -// h.Sum(b.origHash[:0]) -// } -// } -// }(v.Buf) -// } -// } else { -// v.Buf.IsModified = v.Buf.Modified() -// } -// } -// } -// -// wg.Wait() -// } -// -// buf.Settings[option] = nativeValue -// -// if option == "statusline" { -// view.ToggleStatusLine() -// } -// -// if option == "filetype" { -// // LoadSyntaxFiles() -// InitColorscheme() -// buf.UpdateRules() -// } -// -// if option == "fileformat" { -// buf.IsModified = true -// } -// -// if option == "syntax" { -// if !nativeValue.(bool) { -// buf.ClearMatches() -// } else { -// if buf.highlighter != nil { -// buf.highlighter.HighlightStates(buf) -// } -// } -// } -// -// return nil -// } -// -// // SetOptionAndSettings sets the given option and saves the option setting to the settings config file -// func SetOptionAndSettings(option, value string) { -// filename := ConfigDir + "/settings.json" -// -// err := SetOption(option, value) -// -// if err != nil { -// messenger.Error(err.Error()) -// return -// } -// -// err = WriteSettings(filename) -// if err != nil { -// messenger.Error("Error writing to settings.json: " + err.Error()) -// return -// } -// } + if err := OptionIsValid(option, native); err != nil { + return nil, err + } + return native, nil +} -func optionIsValid(option string, value interface{}) error { +// OptionIsValid checks if a value is valid for a certain option +func OptionIsValid(option string, value interface{}) error { if validator, ok := optionValidators[option]; ok { return validator(option, value) } diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 52507427..a0c1d860 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -13,7 +13,6 @@ import ( "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/screen" - "github.com/zyedidia/micro/cmd/micro/util" "github.com/zyedidia/tcell" ) @@ -123,7 +122,7 @@ func LoadInput() []*buffer.Buffer { buf, err := buffer.NewBufferFromFile(args[i], buffer.BTDefault) if err != nil { - util.TermMessage(err) + screen.TermMessage(err) continue } // If the file didn't exist, input will be empty, and we'll open an empty buffer @@ -135,7 +134,7 @@ func LoadInput() []*buffer.Buffer { // and we should read from stdin input, err = ioutil.ReadAll(os.Stdin) if err != nil { - util.TermMessage("Error reading from stdin: ", err) + screen.TermMessage("Error reading from stdin: ", err) input = []byte{} } buffers = append(buffers, buffer.NewBufferFromString(string(input), filename, buffer.BTDefault)) @@ -154,12 +153,12 @@ func main() { InitFlags() err = config.InitConfigDir(*flagConfigDir) if err != nil { - util.TermMessage(err) + screen.TermMessage(err) } config.InitRuntimeFiles() err = config.ReadSettings() if err != nil { - util.TermMessage(err) + screen.TermMessage(err) } config.InitGlobalSettings() action.InitBindings() @@ -167,7 +166,7 @@ func main() { err = config.InitColorscheme() if err != nil { - util.TermMessage(err) + screen.TermMessage(err) } screen.Init() diff --git a/cmd/micro/util/message.go b/cmd/micro/screen/message.go similarity index 87% rename from cmd/micro/util/message.go rename to cmd/micro/screen/message.go index efaf059d..cd4abce9 100644 --- a/cmd/micro/util/message.go +++ b/cmd/micro/screen/message.go @@ -1,12 +1,10 @@ -package util +package screen import ( "bufio" "fmt" "os" "strconv" - - "github.com/zyedidia/micro/cmd/micro/screen" ) // TermMessage sends a message to the user in the terminal. This usually occurs before @@ -16,7 +14,7 @@ import ( // This will write the message, and wait for the user // to press and key to continue func TermMessage(msg ...interface{}) { - screenb := screen.TempFini() + screenb := TempFini() fmt.Println(msg...) fmt.Print("\nPress enter to continue") @@ -24,7 +22,7 @@ func TermMessage(msg ...interface{}) { reader := bufio.NewReader(os.Stdin) reader.ReadString('\n') - screen.TempStart(screenb) + TempStart(screenb) } // TermError sends an error to the user in the terminal. Like TermMessage except formatted diff --git a/cmd/micro/shell/shell.go b/cmd/micro/shell/shell.go index 9c57d616..7087cfe4 100644 --- a/cmd/micro/shell/shell.go +++ b/cmd/micro/shell/shell.go @@ -11,7 +11,6 @@ import ( "github.com/zyedidia/micro/cmd/micro/screen" "github.com/zyedidia/micro/cmd/micro/shellwords" - "github.com/zyedidia/micro/cmd/micro/util" ) // ExecCommand executes a command using exec @@ -108,7 +107,7 @@ func RunInteractiveShell(input string, wait bool, getOutput bool) (string, error if wait { // This is just so we don't return right away and let the user press enter to return - util.TermMessage("") + screen.TermMessage("") } // Start the screen back up diff --git a/cmd/micro/util/util.go b/cmd/micro/util/util.go index f64305a9..bec680f1 100644 --- a/cmd/micro/util/util.go +++ b/cmd/micro/util/util.go @@ -6,6 +6,7 @@ import ( "os/user" "path/filepath" "regexp" + "strconv" "strings" "time" "unicode/utf8" @@ -309,6 +310,19 @@ func GetCharPosInLine(b []byte, visualPos int, tabsize int) int { return i } +// ParseBool is almost exactly like strconv.ParseBool, except it also accepts 'on' and 'off' +// as 'true' and 'false' respectively +func ParseBool(str string) (bool, error) { + if str == "on" { + return true, nil + } + if str == "off" { + return false, nil + } + return strconv.ParseBool(str) +} + +// Clamp clamps a value between min and max func Clamp(val, min, max int) int { if val < min { val = min From 8fa34f23d80f6e21bcd64aa51c1500202381cc34 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 14 Jan 2019 00:18:49 -0500 Subject: [PATCH 071/231] Handle same file open in multiple buffers --- cmd/micro/action/actions.go | 13 +++++- cmd/micro/action/bufhandler.go | 7 +-- cmd/micro/buffer/buffer.go | 76 ++++++++++++-------------------- cmd/micro/buffer/eventhandler.go | 44 +++++++++--------- cmd/micro/buffer/line_array.go | 34 ++++++++++++-- cmd/micro/buffer/loc.go | 15 +++++-- cmd/micro/buffer/message.go | 3 -- cmd/micro/buffer/save.go | 8 ++-- cmd/micro/buffer/serialize.go | 7 +-- cmd/micro/buffer/settings.go | 2 +- 10 files changed, 114 insertions(+), 95 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index bf803f40..3e57a9ab 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -1094,7 +1094,12 @@ func (h *BufHandler) Unsplit() bool { // NextSplit changes the view to the next split func (h *BufHandler) NextSplit() bool { a := MainTab().active - a = util.Clamp(a+1, 0, len(MainTab().Panes)) + if a < len(MainTab().Panes)-1 { + a++ + } else { + a = 0 + } + MainTab().SetActive(a) return false @@ -1103,7 +1108,11 @@ func (h *BufHandler) NextSplit() bool { // PreviousSplit changes the view to the previous split func (h *BufHandler) PreviousSplit() bool { a := MainTab().active - a = util.Clamp(a-1, 0, len(MainTab().Panes)) + if a > 0 { + a-- + } else { + a = len(MainTab().Panes) - 1 + } MainTab().SetActive(a) return false diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 54d65374..d23a40b6 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -57,8 +57,7 @@ type BufHandler struct { Buf *buffer.Buffer - cursors []*buffer.Cursor - Cursor *buffer.Cursor // the active cursor + Cursor *buffer.Cursor // the active cursor StartLine int // Vertical scrolling StartCol int // Horizontal scrolling @@ -104,11 +103,9 @@ func NewBufHandler(buf *buffer.Buffer, win display.Window) *BufHandler { h.Buf = buf h.Window = win - h.cursors = []*buffer.Cursor{buffer.NewCursor(buf, buf.StartCursor)} - h.Cursor = h.cursors[0] + h.Cursor = h.Buf.GetActiveCursor() h.mouseReleased = true - buf.SetCursors(h.cursors) return h } diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index 8ee1a6bb..9fd6a5f3 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -60,11 +60,8 @@ type Buffer struct { // Name of the buffer on the status line name string - // Whether or not the buffer has been modified since it was opened - isModified bool - // Stores the last modification time of the file the buffer is pointing to - ModTime time.Time + ModTime *time.Time SyntaxDef *highlight.Def Highlighter *highlight.Highlighter @@ -135,15 +132,31 @@ func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []strin } config.InitLocalSettings(b.Settings, b.Path) - b.LineArray = NewLineArray(uint64(size), FFAuto, reader) + found := false + for _, buf := range OpenBuffers { + if buf.AbsPath == absPath { + found = true + b.LineArray = buf.LineArray + b.EventHandler = buf.EventHandler + b.ModTime = buf.ModTime + b.isModified = buf.isModified + } + } + + if !found { + b.LineArray = NewLineArray(uint64(size), FFAuto, reader) + b.EventHandler = NewEventHandler(b.LineArray, b.cursors) + b.ModTime = new(time.Time) + b.isModified = new(bool) + *b.isModified = false + *b.ModTime = time.Time{} + } b.Path = path b.AbsPath = absPath // The last time this file was modified - b.ModTime, _ = GetModTime(b.Path) - - b.EventHandler = NewEventHandler(b) + *b.ModTime, _ = GetModTime(b.Path) b.UpdateRules() @@ -164,6 +177,8 @@ func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []strin } } + b.AddCursor(NewCursor(b, b.StartCursor)) + if !b.Settings["fastdirty"].(bool) { if size > LargeFileThreshold { // If the file is larger than LargeFileThreshold fastdirty needs to be on @@ -217,38 +232,14 @@ func (b *Buffer) ReOpen() error { } b.EventHandler.ApplyDiff(txt) - b.ModTime, err = GetModTime(b.Path) - b.isModified = false + *b.ModTime, err = GetModTime(b.Path) + *b.isModified = false for _, c := range b.cursors { c.Relocate() } return err } -// LineBytes returns line n as an array of bytes -func (b *Buffer) LineBytes(n int) []byte { - if n >= len(b.lines) || n < 0 { - return []byte{} - } - return b.lines[n].data -} - -// LinesNum returns the number of lines in the buffer -func (b *Buffer) LinesNum() int { - return len(b.lines) -} - -// Start returns the start of the buffer -func (b *Buffer) Start() Loc { - return Loc{0, 0} -} - -// End returns the location of the last character in the buffer -func (b *Buffer) End() Loc { - numlines := len(b.lines) - return Loc{utf8.RuneCount(b.lines[numlines-1].data), numlines - 1} -} - // RuneAt returns the rune at a given location in the buffer func (b *Buffer) RuneAt(loc Loc) rune { line := b.LineBytes(loc.Y) @@ -271,7 +262,7 @@ func (b *Buffer) RuneAt(loc Loc) rune { // being opened func (b *Buffer) Modified() bool { if b.Settings["fastdirty"].(bool) { - return b.isModified + return *b.isModified } var buff [md5.Size]byte @@ -314,20 +305,6 @@ func calcHash(b *Buffer, out *[md5.Size]byte) error { return nil } -func (b *Buffer) insert(pos Loc, value []byte) { - b.isModified = true - b.LineArray.insert(pos, value) -} -func (b *Buffer) remove(start, end Loc) []byte { - b.isModified = true - sub := b.LineArray.remove(start, end) - return sub -} -func (b *Buffer) deleteToEnd(start Loc) { - b.isModified = true - b.LineArray.deleteToEnd(start) -} - // UpdateRules updates the syntax rules and filetype for this buffer // This is called when the colorscheme changes func (b *Buffer) UpdateRules() { @@ -422,6 +399,7 @@ func (b *Buffer) SetCursors(c []*Cursor) { // AddCursor adds a new cursor to the list func (b *Buffer) AddCursor(c *Cursor) { b.cursors = append(b.cursors, c) + b.EventHandler.cursors = b.cursors b.UpdateCursors() } diff --git a/cmd/micro/buffer/eventhandler.go b/cmd/micro/buffer/eventhandler.go index e6bd37a1..8d88f182 100644 --- a/cmd/micro/buffer/eventhandler.go +++ b/cmd/micro/buffer/eventhandler.go @@ -37,7 +37,7 @@ type Delta struct { } // ExecuteTextEvent runs a text event -func ExecuteTextEvent(t *TextEvent, buf *Buffer) { +func ExecuteTextEvent(t *TextEvent, buf *LineArray) { if t.EventType == TextEventInsert { for _, d := range t.Deltas { buf.insert(d.Start, d.Text) @@ -60,24 +60,26 @@ func ExecuteTextEvent(t *TextEvent, buf *Buffer) { } // UndoTextEvent undoes a text event -func UndoTextEvent(t *TextEvent, buf *Buffer) { +func UndoTextEvent(t *TextEvent, buf *LineArray) { t.EventType = -t.EventType ExecuteTextEvent(t, buf) } // EventHandler executes text manipulations and allows undoing and redoing type EventHandler struct { - buf *Buffer + buf *LineArray + cursors []*Cursor UndoStack *TEStack RedoStack *TEStack } // NewEventHandler returns a new EventHandler -func NewEventHandler(buf *Buffer) *EventHandler { +func NewEventHandler(la *LineArray, cursors []*Cursor) *EventHandler { eh := new(EventHandler) eh.UndoStack = new(TEStack) eh.RedoStack = new(TEStack) - eh.buf = buf + eh.buf = la + eh.cursors = cursors return eh } @@ -91,12 +93,12 @@ func (eh *EventHandler) ApplyDiff(new string) { loc := eh.buf.Start() for _, d := range diff { if d.Type == dmp.DiffDelete { - eh.Remove(loc, loc.Move(utf8.RuneCountInString(d.Text), eh.buf)) + eh.Remove(loc, loc.MoveLA(utf8.RuneCountInString(d.Text), eh.buf)) } else { if d.Type == dmp.DiffInsert { eh.Insert(loc, d.Text) } - loc = loc.Move(utf8.RuneCountInString(d.Text), eh.buf) + loc = loc.MoveLA(utf8.RuneCountInString(d.Text), eh.buf) } } } @@ -105,21 +107,21 @@ func (eh *EventHandler) ApplyDiff(new string) { func (eh *EventHandler) Insert(start Loc, textStr string) { text := []byte(textStr) e := &TextEvent{ - C: *eh.buf.GetActiveCursor(), + C: *eh.cursors[0], EventType: TextEventInsert, Deltas: []Delta{{text, start, Loc{0, 0}}}, Time: time.Now(), } eh.Execute(e) - e.Deltas[0].End = start.Move(utf8.RuneCount(text), eh.buf) + e.Deltas[0].End = start.MoveLA(utf8.RuneCount(text), eh.buf) end := e.Deltas[0].End - for _, c := range eh.buf.GetCursors() { + for _, c := range eh.cursors { move := func(loc Loc) Loc { if start.Y != end.Y && loc.GreaterThan(start) { loc.Y += end.Y - start.Y } else if loc.Y == start.Y && loc.GreaterEqual(start) { - loc = loc.Move(utf8.RuneCount(text), eh.buf) + loc = loc.MoveLA(utf8.RuneCount(text), eh.buf) } return loc } @@ -135,19 +137,19 @@ func (eh *EventHandler) Insert(start Loc, textStr string) { // Remove creates a remove text event and executes it func (eh *EventHandler) Remove(start, end Loc) { e := &TextEvent{ - C: *eh.buf.GetActiveCursor(), + C: *eh.cursors[0], EventType: TextEventRemove, Deltas: []Delta{{[]byte{}, start, end}}, Time: time.Now(), } eh.Execute(e) - for _, c := range eh.buf.GetCursors() { + for _, c := range eh.cursors { move := func(loc Loc) Loc { if start.Y != end.Y && loc.GreaterThan(end) { loc.Y -= end.Y - start.Y } else if loc.Y == end.Y && loc.GreaterEqual(end) { - loc = loc.Move(-Diff(start, end, eh.buf), eh.buf) + loc = loc.MoveLA(-DiffLA(start, end, eh.buf), eh.buf) } return loc } @@ -163,7 +165,7 @@ func (eh *EventHandler) Remove(start, end Loc) { // MultipleReplace creates an multiple insertions executes them func (eh *EventHandler) MultipleReplace(deltas []Delta) { e := &TextEvent{ - C: *eh.buf.GetActiveCursor(), + C: *eh.cursors[0], EventType: TextEventReplace, Deltas: deltas, Time: time.Now(), @@ -239,9 +241,9 @@ func (eh *EventHandler) UndoOneEvent() { // Set the cursor in the right place teCursor := t.C - if teCursor.Num >= 0 && teCursor.Num < eh.buf.NumCursors() { - t.C = *eh.buf.GetCursor(teCursor.Num) - eh.buf.GetCursor(teCursor.Num).Goto(teCursor) + if teCursor.Num >= 0 && teCursor.Num < len(eh.cursors) { + t.C = *eh.cursors[teCursor.Num] + eh.cursors[teCursor.Num].Goto(teCursor) } else { teCursor.Num = -1 } @@ -286,9 +288,9 @@ func (eh *EventHandler) RedoOneEvent() { UndoTextEvent(t, eh.buf) teCursor := t.C - if teCursor.Num >= 0 && teCursor.Num < eh.buf.NumCursors() { - t.C = *eh.buf.GetCursor(teCursor.Num) - eh.buf.GetCursor(teCursor.Num).Goto(teCursor) + if teCursor.Num >= 0 && teCursor.Num < len(eh.cursors) { + t.C = *eh.cursors[teCursor.Num] + eh.cursors[teCursor.Num].Goto(teCursor) } else { teCursor.Num = -1 } diff --git a/cmd/micro/buffer/line_array.go b/cmd/micro/buffer/line_array.go index 3a421076..e7e86896 100644 --- a/cmd/micro/buffer/line_array.go +++ b/cmd/micro/buffer/line_array.go @@ -52,9 +52,10 @@ type FileFormat byte // A LineArray simply stores and array of lines and makes it easy to insert // and delete in it type LineArray struct { - lines []Line - endings FileFormat - initsize uint64 + lines []Line + endings FileFormat + initsize uint64 + isModified *bool } // Append efficiently appends lines together @@ -161,6 +162,7 @@ func (la *LineArray) newlineBelow(y int) { // Inserts a byte array at a given location func (la *LineArray) insert(pos Loc, value []byte) { + *la.isModified = true x, y := runeToByteIndex(pos.X, la.lines[pos.Y].data), pos.Y for i := 0; i < len(value); i++ { if value[i] == '\n' { @@ -201,6 +203,7 @@ func (la *LineArray) split(pos Loc) { // removes from start to end func (la *LineArray) remove(start, end Loc) []byte { + *la.isModified = true sub := la.Substr(start, end) startX := runeToByteIndex(start.X, la.lines[start.Y].data) endX := runeToByteIndex(end.X, la.lines[end.Y].data) @@ -219,6 +222,7 @@ func (la *LineArray) remove(start, end Loc) []byte { // deleteToEnd deletes from the end of a line to the position func (la *LineArray) deleteToEnd(pos Loc) { + *la.isModified = true la.lines[pos.Y].data = la.lines[pos.Y].data[:pos.X] } @@ -258,6 +262,30 @@ func (la *LineArray) Substr(start, end Loc) []byte { return str } +// LinesNum returns the number of lines in the buffer +func (la *LineArray) LinesNum() int { + return len(la.lines) +} + +// Start returns the start of the buffer +func (la *LineArray) Start() Loc { + return Loc{0, 0} +} + +// End returns the location of the last character in the buffer +func (la *LineArray) End() Loc { + numlines := len(la.lines) + return Loc{utf8.RuneCount(la.lines[numlines-1].data), numlines - 1} +} + +// LineBytes returns line n as an array of bytes +func (la *LineArray) LineBytes(n int) []byte { + if n >= len(la.lines) || n < 0 { + return []byte{} + } + return la.lines[n].data +} + // State gets the highlight state for the given line number func (la *LineArray) State(lineN int) highlight.State { return la.lines[lineN].state diff --git a/cmd/micro/buffer/loc.go b/cmd/micro/buffer/loc.go index ac2d7705..be99610d 100644 --- a/cmd/micro/buffer/loc.go +++ b/cmd/micro/buffer/loc.go @@ -52,7 +52,7 @@ func (l Loc) LessEqual(b Loc) bool { // The following functions require a buffer to know where newlines are // Diff returns the distance between two locations -func Diff(a, b Loc, buf *Buffer) int { +func DiffLA(a, b Loc, buf *LineArray) int { if a.Y == b.Y { if a.X > b.X { return a.X - b.X @@ -75,7 +75,7 @@ func Diff(a, b Loc, buf *Buffer) int { } // This moves the location one character to the right -func (l Loc) right(buf *Buffer) Loc { +func (l Loc) right(buf *LineArray) Loc { if l == buf.End() { return Loc{l.X + 1, l.Y} } @@ -89,7 +89,7 @@ func (l Loc) right(buf *Buffer) Loc { } // This moves the given location one character to the left -func (l Loc) left(buf *Buffer) Loc { +func (l Loc) left(buf *LineArray) Loc { if l == buf.Start() { return Loc{l.X - 1, l.Y} } @@ -104,7 +104,7 @@ func (l Loc) left(buf *Buffer) Loc { // Move moves the cursor n characters to the left or right // It moves the cursor left if n is negative -func (l Loc) Move(n int, buf *Buffer) Loc { +func (l Loc) MoveLA(n int, buf *LineArray) Loc { if n > 0 { for i := 0; i < n; i++ { l = l.right(buf) @@ -116,3 +116,10 @@ func (l Loc) Move(n int, buf *Buffer) Loc { } return l } + +func (l Loc) Diff(a, b Loc, buf *Buffer) int { + return DiffLA(a, b, buf.LineArray) +} +func (l Loc) Move(n int, buf *Buffer) Loc { + return l.MoveLA(n, buf.LineArray) +} diff --git a/cmd/micro/buffer/message.go b/cmd/micro/buffer/message.go index b1049971..3b9e3ad4 100644 --- a/cmd/micro/buffer/message.go +++ b/cmd/micro/buffer/message.go @@ -1,8 +1,6 @@ package buffer import ( - "log" - "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/tcell" ) @@ -50,7 +48,6 @@ func (m *Message) Style() tcell.Style { } case MTError: if style, ok := config.Colorscheme["gutter-error"]; ok { - log.Println("Return error") return style } } diff --git a/cmd/micro/buffer/save.go b/cmd/micro/buffer/save.go index fe82a8e0..44872151 100644 --- a/cmd/micro/buffer/save.go +++ b/cmd/micro/buffer/save.go @@ -73,7 +73,7 @@ func (b *Buffer) SaveAs(filename string) error { // Update the last time this file was updated after saving defer func() { - b.ModTime, _ = GetModTime(filename) + *b.ModTime, _ = GetModTime(filename) }() // Removes any tilde and replaces with the absolute path to home @@ -146,7 +146,7 @@ func (b *Buffer) SaveAs(filename string) error { b.Path = filename absPath, _ := filepath.Abs(filename) b.AbsPath = absPath - b.isModified = false + *b.isModified = false return b.Serialize() } @@ -182,8 +182,8 @@ func (b *Buffer) SaveAsWithSudo(filename string) error { err := cmd.Wait() if err == nil { - b.isModified = false - b.ModTime, _ = GetModTime(filename) + *b.isModified = false + *b.ModTime, _ = GetModTime(filename) return b.Serialize() } return err diff --git a/cmd/micro/buffer/serialize.go b/cmd/micro/buffer/serialize.go index a9d0c042..6edd24b5 100644 --- a/cmd/micro/buffer/serialize.go +++ b/cmd/micro/buffer/serialize.go @@ -36,7 +36,7 @@ func (b *Buffer) Serialize() error { err := gob.NewEncoder(file).Encode(SerializedBuffer{ b.EventHandler, b.GetActiveCursor().Loc, - b.ModTime, + *b.ModTime, }) return err }) @@ -61,9 +61,10 @@ func (b *Buffer) Unserialize() error { if b.Settings["saveundo"].(bool) { // We should only use last time's eventhandler if the file wasn't modified by someone else in the meantime - if b.ModTime == buffer.ModTime { + if *b.ModTime == buffer.ModTime { b.EventHandler = buffer.EventHandler - b.EventHandler.buf = b + b.EventHandler.cursors = b.cursors + b.EventHandler.buf = b.LineArray } } } diff --git a/cmd/micro/buffer/settings.go b/cmd/micro/buffer/settings.go index fb3b5486..2894a5b5 100644 --- a/cmd/micro/buffer/settings.go +++ b/cmd/micro/buffer/settings.go @@ -30,7 +30,7 @@ func (b *Buffer) SetOption(option, value string) error { } else if option == "filetype" { b.UpdateRules() } else if option == "fileformat" { - b.isModified = true + *b.isModified = true } else if option == "syntax" { if !nativeValue.(bool) { b.ClearMatches() From 5825353f64b8d8927c2b4a0198882f17985e5c1c Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 14 Jan 2019 00:57:39 -0500 Subject: [PATCH 072/231] Add some commands --- cmd/micro/action/bufhandler.go | 23 +++++++- cmd/micro/action/command.go | 101 ++++++++++++++++++++++++++++++++ cmd/micro/action/infohandler.go | 2 +- cmd/micro/action/pane.go | 8 +-- cmd/micro/buffer/buffer.go | 16 ++--- cmd/micro/display/bufwindow.go | 4 ++ cmd/micro/display/infowindow.go | 4 ++ cmd/micro/display/window.go | 5 ++ cmd/micro/util/util.go | 12 ++++ 9 files changed, 160 insertions(+), 15 deletions(-) diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index d23a40b6..23362eb0 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -53,7 +53,7 @@ func BufMapMouse(k MouseEvent, action string) { // The ActionHandler can access the window for necessary info about // visual positions for mouse clicks and scrolling type BufHandler struct { - display.Window + display.BWindow Buf *buffer.Buffer @@ -98,10 +98,10 @@ type BufHandler struct { splitID uint64 } -func NewBufHandler(buf *buffer.Buffer, win display.Window) *BufHandler { +func NewBufHandler(buf *buffer.Buffer, win display.BWindow) *BufHandler { h := new(BufHandler) h.Buf = buf - h.Window = win + h.BWindow = win h.Cursor = h.Buf.GetActiveCursor() h.mouseReleased = true @@ -109,6 +109,23 @@ func NewBufHandler(buf *buffer.Buffer, win display.Window) *BufHandler { return h } +func (h *BufHandler) OpenBuffer(b *buffer.Buffer) { + h.Buf.Close() + h.Buf = b + h.BWindow.SetBuffer(b) + h.Cursor = b.GetActiveCursor() + v := new(display.View) + h.SetView(v) + h.Relocate() + // Set mouseReleased to true because we assume the mouse is not being pressed when + // the editor is opened + h.mouseReleased = true + // Set isOverwriteMode to false, because we assume we are in the default mode when editor + // is opened + h.isOverwriteMode = false + h.lastClickTime = time.Time{} +} + func (h *BufHandler) ID() uint64 { return h.splitID } diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index e4525ab0..9240b088 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -2,6 +2,9 @@ package action import ( "os" + "path/filepath" + "strconv" + "strings" "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/config" @@ -152,10 +155,55 @@ func (h *BufHandler) RawCmd(args []string) { // TabSwitchCmd switches to a given tab either by name or by number func (h *BufHandler) TabSwitchCmd(args []string) { + if len(args) > 0 { + num, err := strconv.Atoi(args[0]) + if err != nil { + // Check for tab with this name + + found := false + for i, t := range Tabs.List { + if t.Panes[t.active].Name() == args[0] { + Tabs.SetActive(i) + found = true + } + } + if !found { + InfoBar.Error("Could not find tab: ", err) + } + } else { + num-- + if num >= 0 && num < len(Tabs.List) { + Tabs.SetActive(num) + } else { + InfoBar.Error("Invalid tab index") + } + } + } } // CdCmd changes the current working directory func (h *BufHandler) CdCmd(args []string) { + if len(args) > 0 { + path, err := util.ReplaceHome(args[0]) + if err != nil { + InfoBar.Error(err) + return + } + err = os.Chdir(path) + if err != nil { + InfoBar.Error(err) + return + } + wd, _ := os.Getwd() + for _, b := range buffer.OpenBuffers { + if len(b.Path) > 0 { + b.Path, _ = util.MakeRelative(b.AbsPath, wd) + if p, _ := filepath.Abs(b.Path); !strings.Contains(p, wd) { + b.Path = b.AbsPath + } + } + } + } } // MemUsageCmd prints micro's memory usage @@ -181,6 +229,39 @@ func (h *BufHandler) PwdCmd(args []string) { // OpenCmd opens a new buffer with a given filename func (h *BufHandler) OpenCmd(args []string) { + if len(args) > 0 { + filename := args[0] + // the filename might or might not be quoted, so unquote first then join the strings. + args, err := shellwords.Split(filename) + if err != nil { + InfoBar.Error("Error parsing args ", err) + return + } + filename = strings.Join(args, " ") + + open := func() { + b, err := buffer.NewBufferFromFile(filename, buffer.BTDefault) + if err != nil { + InfoBar.Error(err) + return + } + h.OpenBuffer(b) + } + if h.Buf.Modified() { + InfoBar.YNPrompt("Save changes to "+h.Buf.GetName()+" before closing? (y,n,esc)", func(yes, canceled bool) { + if !canceled && !yes { + open() + } else if !canceled && yes { + h.Save() + open() + } + }) + } else { + open() + } + } else { + InfoBar.Error("No filename") + } } // ToggleLogCmd toggles the log view @@ -341,6 +422,24 @@ func (h *BufHandler) SetLocalCmd(args []string) { // ShowCmd shows the value of the given option func (h *BufHandler) ShowCmd(args []string) { + if len(args) < 1 { + InfoBar.Error("Please provide an option to show") + return + } + + var option interface{} + if opt, ok := h.Buf.Settings[args[0]]; ok { + option = opt + } else if opt, ok := config.GlobalSettings[args[0]]; ok { + option = opt + } + + if option == nil { + InfoBar.Error(args[0], " is not a valid option") + return + } + + InfoBar.Message(option) } // ShowKeyCmd displays the action that a key is bound to @@ -376,10 +475,12 @@ func (h *BufHandler) RunCmd(args []string) { // QuitCmd closes the main view func (h *BufHandler) QuitCmd(args []string) { + h.Quit() } // SaveCmd saves the buffer in the main view func (h *BufHandler) SaveCmd(args []string) { + h.Save() } // ReplaceCmd runs search and replace diff --git a/cmd/micro/action/infohandler.go b/cmd/micro/action/infohandler.go index bc0a5ad1..337393bf 100644 --- a/cmd/micro/action/infohandler.go +++ b/cmd/micro/action/infohandler.go @@ -15,7 +15,7 @@ type InfoHandler struct { *info.InfoBuf } -func NewInfoHandler(ib *info.InfoBuf, w display.Window) *InfoHandler { +func NewInfoHandler(ib *info.InfoBuf, w display.BWindow) *InfoHandler { ih := new(InfoHandler) ih.InfoBuf = ib ih.BufHandler = NewBufHandler(ib.Buffer, w) diff --git a/cmd/micro/action/pane.go b/cmd/micro/action/pane.go index f7db4b68..8da64e5e 100644 --- a/cmd/micro/action/pane.go +++ b/cmd/micro/action/pane.go @@ -15,12 +15,12 @@ type Pane interface { } type EditPane struct { - display.Window + display.BWindow *BufHandler } type InfoPane struct { - display.Window + display.BWindow *InfoHandler *info.InfoBuf } @@ -29,7 +29,7 @@ func NewBufEditPane(x, y, width, height int, b *buffer.Buffer) *EditPane { e := new(EditPane) // TODO: can probably replace editpane with bufhandler entirely w := display.NewBufWindow(x, y, width, height, b) - e.Window = w + e.BWindow = w e.BufHandler = NewBufHandler(b, w) return e @@ -39,7 +39,7 @@ func NewInfoBar() *InfoPane { e := new(InfoPane) ib := info.NewBuffer() w := display.NewInfoWindow(ib) - e.Window = w + e.BWindow = w e.InfoHandler = NewInfoHandler(ib, w) e.InfoBuf = ib diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index 9fd6a5f3..f5c83ea0 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -133,13 +133,15 @@ func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []strin config.InitLocalSettings(b.Settings, b.Path) found := false - for _, buf := range OpenBuffers { - if buf.AbsPath == absPath { - found = true - b.LineArray = buf.LineArray - b.EventHandler = buf.EventHandler - b.ModTime = buf.ModTime - b.isModified = buf.isModified + if len(path) > 0 { + for _, buf := range OpenBuffers { + if buf.AbsPath == absPath { + found = true + b.LineArray = buf.LineArray + b.EventHandler = buf.EventHandler + b.ModTime = buf.ModTime + b.isModified = buf.isModified + } } } diff --git a/cmd/micro/display/bufwindow.go b/cmd/micro/display/bufwindow.go index e22703cb..cee7164d 100644 --- a/cmd/micro/display/bufwindow.go +++ b/cmd/micro/display/bufwindow.go @@ -41,6 +41,10 @@ func NewBufWindow(x, y, width, height int, buf *buffer.Buffer) *BufWindow { return w } +func (w *BufWindow) SetBuffer(b *buffer.Buffer) { + w.Buf = b +} + func (v *View) GetView() *View { return v } diff --git a/cmd/micro/display/infowindow.go b/cmd/micro/display/infowindow.go index 44a5b48d..d559693c 100644 --- a/cmd/micro/display/infowindow.go +++ b/cmd/micro/display/infowindow.go @@ -53,6 +53,10 @@ func (i *InfoWindow) Resize(w, h int) { i.y = h } +func (i *InfoWindow) SetBuffer(b *buffer.Buffer) { + i.InfoBuf.Buffer = b +} + // func (i *InfoWindow) YesNoPrompt() (bool, bool) { // for { // i.Clear() diff --git a/cmd/micro/display/window.go b/cmd/micro/display/window.go index c83a453a..5983de70 100644 --- a/cmd/micro/display/window.go +++ b/cmd/micro/display/window.go @@ -24,3 +24,8 @@ type Window interface { Resize(w, h int) SetActive(b bool) } + +type BWindow interface { + Window + SetBuffer(b *buffer.Buffer) +} diff --git a/cmd/micro/util/util.go b/cmd/micro/util/util.go index bec680f1..53cac87a 100644 --- a/cmd/micro/util/util.go +++ b/cmd/micro/util/util.go @@ -195,6 +195,18 @@ func RunePos(b []byte, i int) int { return utf8.RuneCount(b[:i]) } +// MakeRelative will attempt to make a relative path between path and base +func MakeRelative(path, base string) (string, error) { + if len(path) > 0 { + rel, err := filepath.Rel(base, path) + if err != nil { + return path, err + } + return rel, nil + } + return path, nil +} + // TODO: consider changing because of snap segfault // ReplaceHome takes a path as input and replaces ~ at the start of the path with the user's // home directory. Does nothing if the path does not start with '~'. From eb49052a48d8aef6c56305872c3ba6beab0f0c97 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 14 Jan 2019 16:09:46 -0500 Subject: [PATCH 073/231] Add bind and unbind commands --- cmd/micro/action/actions.go | 4 +++- cmd/micro/action/bindings.go | 44 ++++++++++++++++++++++++++++++++++++ cmd/micro/action/command.go | 24 ++++++++++++++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 3e57a9ab..7d0814ec 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -558,6 +558,9 @@ func (h *BufHandler) InsertTab() bool { // SaveAll saves all open buffers func (h *BufHandler) SaveAll() bool { + for _, b := range buffer.OpenBuffers { + b.Save() + } return false } @@ -672,7 +675,6 @@ func (h *BufHandler) Undo() bool { // Redo redoes the last action func (h *BufHandler) Redo() bool { - // TODO: clear cursors and message h.Buf.Redo() InfoBar.Message("Redid action") return true diff --git a/cmd/micro/action/bindings.go b/cmd/micro/action/bindings.go index b2aa26f0..fb908cdb 100644 --- a/cmd/micro/action/bindings.go +++ b/cmd/micro/action/bindings.go @@ -201,6 +201,50 @@ func TryBindKey(k, v string, overwrite bool) (bool, error) { return false, e } +// UnbindKey removes the binding for a key from the bindings.json file +func UnbindKey(k string) error { + var e error + var parsed map[string]string + + filename := config.ConfigDir + "/bindings.json" + if _, e = os.Stat(filename); e == nil { + input, err := ioutil.ReadFile(filename) + if err != nil { + return errors.New("Error reading bindings.json file: " + err.Error()) + } + + err = json5.Unmarshal(input, &parsed) + if err != nil { + return errors.New("Error reading bindings.json: " + err.Error()) + } + + key, ok := findEvent(k) + if !ok { + return errors.New("Invalid event " + k) + } + + for ev := range parsed { + if e, ok := findEvent(ev); ok { + if e == key { + delete(parsed, ev) + break + } + } + } + + defaults := DefaultBindings() + if a, ok := defaults[k]; ok { + BindKey(k, a) + } else if _, ok := config.Bindings[k]; ok { + delete(config.Bindings, k) + } + + txt, _ := json.MarshalIndent(parsed, "", " ") + return ioutil.WriteFile(filename, append(txt, '\n'), 0644) + } + return e +} + var mouseEvents = map[string]tcell.ButtonMask{ "MouseLeft": tcell.Button1, "MouseMiddle": tcell.Button2, diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 9240b088..19405fb5 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -35,6 +35,7 @@ var commandActions = map[string]func(*BufHandler, []string){ "ShowKey": (*BufHandler).ShowKeyCmd, "Run": (*BufHandler).RunCmd, "Bind": (*BufHandler).BindCmd, + "Unbind": (*BufHandler).UnbindCmd, "Quit": (*BufHandler).QuitCmd, "Save": (*BufHandler).SaveCmd, "Replace": (*BufHandler).ReplaceCmd, @@ -92,6 +93,7 @@ func DefaultCommands() map[string]StrCommand { "show": {"Show", []Completion{OptionCompletion, NoCompletion}}, "showkey": {"ShowKey", []Completion{NoCompletion}}, "bind": {"Bind", []Completion{NoCompletion}}, + "unbind": {"Unbind", []Completion{NoCompletion}}, "run": {"Run", []Completion{NoCompletion}}, "quit": {"Quit", []Completion{NoCompletion}}, "save": {"Save", []Completion{NoCompletion}}, @@ -458,6 +460,28 @@ func (h *BufHandler) ShowKeyCmd(args []string) { // BindCmd creates a new keybinding func (h *BufHandler) BindCmd(args []string) { + if len(args) < 2 { + InfoBar.Error("Not enough arguments") + return + } + + _, err := TryBindKey(args[0], args[1], true) + if err != nil { + InfoBar.Error(err) + } +} + +// UnbindCmd binds a key to its default action +func (h *BufHandler) UnbindCmd(args []string) { + if len(args) < 1 { + InfoBar.Error("Not enough arguements") + return + } + + err := UnbindKey(args[0]) + if err != nil { + InfoBar.Error(err) + } } // RunCmd runs a shell command in the background From 224cbe5093a59d6bb170d0a169e9764d62c5ec77 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 14 Jan 2019 16:52:25 -0500 Subject: [PATCH 074/231] Add help --- cmd/micro/action/actions.go | 1 + cmd/micro/action/command.go | 31 ++++++++++++++++++ cmd/micro/buffer/buffer.go | 55 ++++++++++++++++++++------------ cmd/micro/buffer/eventhandler.go | 22 +++++++------ cmd/micro/buffer/line_array.go | 10 ++---- cmd/micro/buffer/save.go | 8 ++--- cmd/micro/buffer/serialize.go | 6 ++-- cmd/micro/buffer/settings.go | 2 +- 8 files changed, 90 insertions(+), 45 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 7d0814ec..e7278f8b 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -967,6 +967,7 @@ func (h *BufHandler) ClearStatus() bool { // ToggleHelp toggles the help screen func (h *BufHandler) ToggleHelp() bool { + h.openHelp("help") return true } diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 19405fb5..58170f72 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -1,6 +1,8 @@ package action import ( + "errors" + "fmt" "os" "path/filepath" "strconv" @@ -274,8 +276,37 @@ func (h *BufHandler) ToggleLogCmd(args []string) { func (h *BufHandler) ReloadCmd(args []string) { } +func (h *BufHandler) openHelp(page string) error { + if data, err := config.FindRuntimeFile(config.RTHelp, page).Data(); err != nil { + return errors.New(fmt.Sprint("Unable to load help text", page, "\n", err)) + } else { + helpBuffer := buffer.NewBufferFromString(string(data), page+".md", buffer.BTHelp) + helpBuffer.SetName("Help " + page) + + if h.Buf.Type == buffer.BTHelp { + h.OpenBuffer(helpBuffer) + } else { + h.HSplitBuf(helpBuffer) + } + } + return nil +} + // HelpCmd tries to open the given help page in a horizontal split func (h *BufHandler) HelpCmd(args []string) { + if len(args) < 1 { + // Open the default help if the user just typed "> help" + h.openHelp("help") + } else { + if config.FindRuntimeFile(config.RTHelp, args[0]) != nil { + err := h.openHelp(args[0]) + if err != nil { + InfoBar.Error(err) + } + } else { + InfoBar.Error("Sorry, no help for ", args[0]) + } + } } // VSplitCmd opens a vertical split with file given in the first argument diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index f5c83ea0..7189b298 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -5,6 +5,7 @@ import ( "errors" "io" "io/ioutil" + "log" "os" "path/filepath" "strings" @@ -38,6 +39,25 @@ var ( ErrFileTooLarge = errors.New("File is too large to hash") ) +type SharedBuffer struct { + *LineArray + // Stores the last modification time of the file the buffer is pointing to + ModTime time.Time + // Type of the buffer (e.g. help, raw, scratch etc..) + Type BufType + + isModified bool +} + +func (b *SharedBuffer) insert(pos Loc, value []byte) { + b.isModified = true + b.LineArray.insert(pos, value) +} +func (b *SharedBuffer) remove(start, end Loc) []byte { + b.isModified = true + return b.LineArray.remove(start, end) +} + // Buffer stores the main information about a currently open file including // the actual text (in a LineArray), the undo/redo stack (in an EventHandler) // all the cursors, the syntax highlighting info, the settings for the buffer @@ -46,8 +66,8 @@ var ( // highlighter attaches information to each line of the buffer for optimization // purposes so it doesn't have to rehighlight everything on every update. type Buffer struct { - *LineArray *EventHandler + *SharedBuffer cursors []*Cursor curCursor int @@ -60,9 +80,6 @@ type Buffer struct { // Name of the buffer on the status line name string - // Stores the last modification time of the file the buffer is pointing to - ModTime *time.Time - SyntaxDef *highlight.Def Highlighter *highlight.Highlighter @@ -72,9 +89,6 @@ type Buffer struct { // Settings customized by the user Settings map[string]interface{} - // Type of the buffer (e.g. help, raw, scratch etc..) - Type BufType - Messages []*Message } @@ -122,7 +136,6 @@ func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []strin absPath, _ := filepath.Abs(path) b := new(Buffer) - b.Type = btype b.Settings = config.DefaultLocalSettings() for k, v := range config.GlobalSettings { @@ -137,28 +150,24 @@ func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []strin for _, buf := range OpenBuffers { if buf.AbsPath == absPath { found = true - b.LineArray = buf.LineArray + b.SharedBuffer = buf.SharedBuffer b.EventHandler = buf.EventHandler - b.ModTime = buf.ModTime - b.isModified = buf.isModified } } } if !found { + b.SharedBuffer = new(SharedBuffer) + b.Type = btype b.LineArray = NewLineArray(uint64(size), FFAuto, reader) - b.EventHandler = NewEventHandler(b.LineArray, b.cursors) - b.ModTime = new(time.Time) - b.isModified = new(bool) - *b.isModified = false - *b.ModTime = time.Time{} + b.EventHandler = NewEventHandler(b.SharedBuffer, b.cursors) } b.Path = path b.AbsPath = absPath // The last time this file was modified - *b.ModTime, _ = GetModTime(b.Path) + b.ModTime, _ = GetModTime(b.Path) b.UpdateRules() @@ -219,6 +228,11 @@ func (b *Buffer) GetName() string { return b.name } +//SetName changes the name for this buffer +func (b *Buffer) SetName(s string) { + b.name = s +} + // FileType returns the buffer's filetype func (b *Buffer) FileType() string { return b.Settings["filetype"].(string) @@ -234,8 +248,8 @@ func (b *Buffer) ReOpen() error { } b.EventHandler.ApplyDiff(txt) - *b.ModTime, err = GetModTime(b.Path) - *b.isModified = false + b.ModTime, err = GetModTime(b.Path) + b.isModified = false for _, c := range b.cursors { c.Relocate() } @@ -264,7 +278,7 @@ func (b *Buffer) RuneAt(loc Loc) rune { // being opened func (b *Buffer) Modified() bool { if b.Settings["fastdirty"].(bool) { - return *b.isModified + return b.isModified } var buff [md5.Size]byte @@ -402,6 +416,7 @@ func (b *Buffer) SetCursors(c []*Cursor) { func (b *Buffer) AddCursor(c *Cursor) { b.cursors = append(b.cursors, c) b.EventHandler.cursors = b.cursors + log.Println(b.cursors) b.UpdateCursors() } diff --git a/cmd/micro/buffer/eventhandler.go b/cmd/micro/buffer/eventhandler.go index 8d88f182..ac6294a1 100644 --- a/cmd/micro/buffer/eventhandler.go +++ b/cmd/micro/buffer/eventhandler.go @@ -1,6 +1,7 @@ package buffer import ( + "log" "time" "unicode/utf8" @@ -37,7 +38,7 @@ type Delta struct { } // ExecuteTextEvent runs a text event -func ExecuteTextEvent(t *TextEvent, buf *LineArray) { +func ExecuteTextEvent(t *TextEvent, buf *SharedBuffer) { if t.EventType == TextEventInsert { for _, d := range t.Deltas { buf.insert(d.Start, d.Text) @@ -60,25 +61,25 @@ func ExecuteTextEvent(t *TextEvent, buf *LineArray) { } // UndoTextEvent undoes a text event -func UndoTextEvent(t *TextEvent, buf *LineArray) { +func UndoTextEvent(t *TextEvent, buf *SharedBuffer) { t.EventType = -t.EventType ExecuteTextEvent(t, buf) } // EventHandler executes text manipulations and allows undoing and redoing type EventHandler struct { - buf *LineArray + buf *SharedBuffer cursors []*Cursor UndoStack *TEStack RedoStack *TEStack } // NewEventHandler returns a new EventHandler -func NewEventHandler(la *LineArray, cursors []*Cursor) *EventHandler { +func NewEventHandler(buf *SharedBuffer, cursors []*Cursor) *EventHandler { eh := new(EventHandler) eh.UndoStack = new(TEStack) eh.RedoStack = new(TEStack) - eh.buf = la + eh.buf = buf eh.cursors = cursors return eh } @@ -93,12 +94,12 @@ func (eh *EventHandler) ApplyDiff(new string) { loc := eh.buf.Start() for _, d := range diff { if d.Type == dmp.DiffDelete { - eh.Remove(loc, loc.MoveLA(utf8.RuneCountInString(d.Text), eh.buf)) + eh.Remove(loc, loc.MoveLA(utf8.RuneCountInString(d.Text), eh.buf.LineArray)) } else { if d.Type == dmp.DiffInsert { eh.Insert(loc, d.Text) } - loc = loc.MoveLA(utf8.RuneCountInString(d.Text), eh.buf) + loc = loc.MoveLA(utf8.RuneCountInString(d.Text), eh.buf.LineArray) } } } @@ -113,15 +114,16 @@ func (eh *EventHandler) Insert(start Loc, textStr string) { Time: time.Now(), } eh.Execute(e) - e.Deltas[0].End = start.MoveLA(utf8.RuneCount(text), eh.buf) + e.Deltas[0].End = start.MoveLA(utf8.RuneCount(text), eh.buf.LineArray) end := e.Deltas[0].End + log.Println(eh.cursors) for _, c := range eh.cursors { move := func(loc Loc) Loc { if start.Y != end.Y && loc.GreaterThan(start) { loc.Y += end.Y - start.Y } else if loc.Y == start.Y && loc.GreaterEqual(start) { - loc = loc.MoveLA(utf8.RuneCount(text), eh.buf) + loc = loc.MoveLA(utf8.RuneCount(text), eh.buf.LineArray) } return loc } @@ -149,7 +151,7 @@ func (eh *EventHandler) Remove(start, end Loc) { if start.Y != end.Y && loc.GreaterThan(end) { loc.Y -= end.Y - start.Y } else if loc.Y == end.Y && loc.GreaterEqual(end) { - loc = loc.MoveLA(-DiffLA(start, end, eh.buf), eh.buf) + loc = loc.MoveLA(-DiffLA(start, end, eh.buf.LineArray), eh.buf.LineArray) } return loc } diff --git a/cmd/micro/buffer/line_array.go b/cmd/micro/buffer/line_array.go index e7e86896..43d86100 100644 --- a/cmd/micro/buffer/line_array.go +++ b/cmd/micro/buffer/line_array.go @@ -52,10 +52,9 @@ type FileFormat byte // A LineArray simply stores and array of lines and makes it easy to insert // and delete in it type LineArray struct { - lines []Line - endings FileFormat - initsize uint64 - isModified *bool + lines []Line + endings FileFormat + initsize uint64 } // Append efficiently appends lines together @@ -162,7 +161,6 @@ func (la *LineArray) newlineBelow(y int) { // Inserts a byte array at a given location func (la *LineArray) insert(pos Loc, value []byte) { - *la.isModified = true x, y := runeToByteIndex(pos.X, la.lines[pos.Y].data), pos.Y for i := 0; i < len(value); i++ { if value[i] == '\n' { @@ -203,7 +201,6 @@ func (la *LineArray) split(pos Loc) { // removes from start to end func (la *LineArray) remove(start, end Loc) []byte { - *la.isModified = true sub := la.Substr(start, end) startX := runeToByteIndex(start.X, la.lines[start.Y].data) endX := runeToByteIndex(end.X, la.lines[end.Y].data) @@ -222,7 +219,6 @@ func (la *LineArray) remove(start, end Loc) []byte { // deleteToEnd deletes from the end of a line to the position func (la *LineArray) deleteToEnd(pos Loc) { - *la.isModified = true la.lines[pos.Y].data = la.lines[pos.Y].data[:pos.X] } diff --git a/cmd/micro/buffer/save.go b/cmd/micro/buffer/save.go index 44872151..fe82a8e0 100644 --- a/cmd/micro/buffer/save.go +++ b/cmd/micro/buffer/save.go @@ -73,7 +73,7 @@ func (b *Buffer) SaveAs(filename string) error { // Update the last time this file was updated after saving defer func() { - *b.ModTime, _ = GetModTime(filename) + b.ModTime, _ = GetModTime(filename) }() // Removes any tilde and replaces with the absolute path to home @@ -146,7 +146,7 @@ func (b *Buffer) SaveAs(filename string) error { b.Path = filename absPath, _ := filepath.Abs(filename) b.AbsPath = absPath - *b.isModified = false + b.isModified = false return b.Serialize() } @@ -182,8 +182,8 @@ func (b *Buffer) SaveAsWithSudo(filename string) error { err := cmd.Wait() if err == nil { - *b.isModified = false - *b.ModTime, _ = GetModTime(filename) + b.isModified = false + b.ModTime, _ = GetModTime(filename) return b.Serialize() } return err diff --git a/cmd/micro/buffer/serialize.go b/cmd/micro/buffer/serialize.go index 6edd24b5..ccafd1a6 100644 --- a/cmd/micro/buffer/serialize.go +++ b/cmd/micro/buffer/serialize.go @@ -36,7 +36,7 @@ func (b *Buffer) Serialize() error { err := gob.NewEncoder(file).Encode(SerializedBuffer{ b.EventHandler, b.GetActiveCursor().Loc, - *b.ModTime, + b.ModTime, }) return err }) @@ -61,10 +61,10 @@ func (b *Buffer) Unserialize() error { if b.Settings["saveundo"].(bool) { // We should only use last time's eventhandler if the file wasn't modified by someone else in the meantime - if *b.ModTime == buffer.ModTime { + if b.ModTime == buffer.ModTime { b.EventHandler = buffer.EventHandler b.EventHandler.cursors = b.cursors - b.EventHandler.buf = b.LineArray + b.EventHandler.buf = b.SharedBuffer } } } diff --git a/cmd/micro/buffer/settings.go b/cmd/micro/buffer/settings.go index 2894a5b5..fb3b5486 100644 --- a/cmd/micro/buffer/settings.go +++ b/cmd/micro/buffer/settings.go @@ -30,7 +30,7 @@ func (b *Buffer) SetOption(option, value string) error { } else if option == "filetype" { b.UpdateRules() } else if option == "fileformat" { - *b.isModified = true + b.isModified = true } else if option == "syntax" { if !nativeValue.(bool) { b.ClearMatches() From 5671e039b9b96fffa4856fe33453c8f8dd03bb43 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 14 Jan 2019 16:56:10 -0500 Subject: [PATCH 075/231] Fix multi buffer same file cursors --- cmd/micro/buffer/buffer.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index 7189b298..f56f627b 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -5,7 +5,6 @@ import ( "errors" "io" "io/ioutil" - "log" "os" "path/filepath" "strings" @@ -233,6 +232,16 @@ func (b *Buffer) SetName(s string) { b.name = s } +func (b *Buffer) Insert(start Loc, text string) { + b.EventHandler.cursors = b.cursors + b.EventHandler.Insert(start, text) +} + +func (b *Buffer) Remove(start, end Loc) { + b.EventHandler.cursors = b.cursors + b.EventHandler.Remove(start, end) +} + // FileType returns the buffer's filetype func (b *Buffer) FileType() string { return b.Settings["filetype"].(string) @@ -415,8 +424,6 @@ func (b *Buffer) SetCursors(c []*Cursor) { // AddCursor adds a new cursor to the list func (b *Buffer) AddCursor(c *Cursor) { b.cursors = append(b.cursors, c) - b.EventHandler.cursors = b.cursors - log.Println(b.cursors) b.UpdateCursors() } From 055fff2b08a38b18bfc61a7123cd2b2dcdb28568 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 14 Jan 2019 19:57:19 -0500 Subject: [PATCH 076/231] Fix redraw --- cmd/micro/buffer/eventhandler.go | 2 -- cmd/micro/screen/screen.go | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/cmd/micro/buffer/eventhandler.go b/cmd/micro/buffer/eventhandler.go index ac6294a1..f04b78f9 100644 --- a/cmd/micro/buffer/eventhandler.go +++ b/cmd/micro/buffer/eventhandler.go @@ -1,7 +1,6 @@ package buffer import ( - "log" "time" "unicode/utf8" @@ -117,7 +116,6 @@ func (eh *EventHandler) Insert(start Loc, textStr string) { e.Deltas[0].End = start.MoveLA(utf8.RuneCount(text), eh.buf.LineArray) end := e.Deltas[0].End - log.Println(eh.cursors) for _, c := range eh.cursors { move := func(loc Loc) Loc { if start.Y != end.Y && loc.GreaterThan(start) { diff --git a/cmd/micro/screen/screen.go b/cmd/micro/screen/screen.go index 54ffe90d..11c8177f 100644 --- a/cmd/micro/screen/screen.go +++ b/cmd/micro/screen/screen.go @@ -54,7 +54,7 @@ func TempStart(screenWasNil bool) { // Init creates and initializes the tcell screen func Init() { - DrawChan = make(chan bool) + DrawChan = make(chan bool, 8) // Should we enable true color? truecolor := os.Getenv("MICRO_TRUECOLOR") == "1" From 812c7761dc58ebd34f024074decfd7bd49585518 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 14 Jan 2019 22:16:44 -0500 Subject: [PATCH 077/231] Correct infobar and statusline options --- cmd/micro/action/actions.go | 3 ++- cmd/micro/action/command.go | 13 ++++++------- cmd/micro/action/tab.go | 11 +++++++---- cmd/micro/config/settings.go | 7 +++++++ cmd/micro/display/bufwindow.go | 33 +++++++++++++++++++++++++++------ cmd/micro/display/infowindow.go | 30 +----------------------------- cmd/micro/display/statusline.go | 5 ----- cmd/micro/display/termwindow.go | 7 +++++-- 8 files changed, 55 insertions(+), 54 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index e7278f8b..32a22288 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -1046,8 +1046,9 @@ func (h *BufHandler) QuitAll() bool { // AddTab adds a new tab with an empty buffer func (h *BufHandler) AddTab() bool { width, height := screen.Screen.Size() + iOffset := config.GetInfoBarOffset() b := buffer.NewBufferFromString("", "", buffer.BTDefault) - tp := NewTabFromBuffer(0, 0, width, height-1, b) + tp := NewTabFromBuffer(0, 0, width, height-iOffset, b) Tabs.AddTab(tp) Tabs.SetActive(len(Tabs.List) - 1) diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 58170f72..7d40baec 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -352,6 +352,7 @@ func (h *BufHandler) EvalCmd(args []string) { // NewTabCmd opens the given file in a new tab func (h *BufHandler) NewTabCmd(args []string) { width, height := screen.Screen.Size() + iOffset := config.GetInfoBarOffset() if len(args) > 0 { for _, a := range args { b, err := buffer.NewBufferFromFile(a, buffer.BTDefault) @@ -359,13 +360,13 @@ func (h *BufHandler) NewTabCmd(args []string) { InfoBar.Error(err) return } - tp := NewTabFromBuffer(0, 0, width, height-1, b) + tp := NewTabFromBuffer(0, 0, width, height-1-iOffset, b) Tabs.AddTab(tp) Tabs.SetActive(len(Tabs.List) - 1) } } else { b := buffer.NewBufferFromString("", "", buffer.BTDefault) - tp := NewTabFromBuffer(0, 0, width, height-1, b) + tp := NewTabFromBuffer(0, 0, width, height-iOffset, b) Tabs.AddTab(tp) Tabs.SetActive(len(Tabs.List) - 1) } @@ -392,11 +393,9 @@ func SetGlobalOption(option, value string) error { } // TODO: info and keymenu option change - // if option == "infobar" || option == "keymenu" { - // for _, tab := range tabs { - // tab.Resize() - // } - // } + if option == "infobar" || option == "keymenu" { + Tabs.Resize() + } if option == "mouse" { if !nativeValue.(bool) { diff --git a/cmd/micro/action/tab.go b/cmd/micro/action/tab.go index 0dab39f6..6b8773e4 100644 --- a/cmd/micro/action/tab.go +++ b/cmd/micro/action/tab.go @@ -2,6 +2,7 @@ package action import ( "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/display" "github.com/zyedidia/micro/cmd/micro/screen" "github.com/zyedidia/micro/cmd/micro/views" @@ -19,14 +20,15 @@ type TabList struct { // for each buffer func NewTabList(bufs []*buffer.Buffer) *TabList { w, h := screen.Screen.Size() + iOffset := config.GetInfoBarOffset() tl := new(TabList) tl.List = make([]*Tab, len(bufs)) if len(bufs) > 1 { for i, b := range bufs { - tl.List[i] = NewTabFromBuffer(0, 1, w, h-2, b) + tl.List[i] = NewTabFromBuffer(0, 1, w, h-1-iOffset, b) } } else { - tl.List[0] = NewTabFromBuffer(0, 0, w, h-1, bufs[0]) + tl.List[0] = NewTabFromBuffer(0, 0, w, h-iOffset, bufs[0]) } tl.TabWindow = display.NewTabWindow(w, 0) tl.Names = make([]string, len(bufs)) @@ -76,16 +78,17 @@ func (t *TabList) RemoveTab(id uint64) { // that into account func (t *TabList) Resize() { w, h := screen.Screen.Size() + iOffset := config.GetInfoBarOffset() InfoBar.Resize(w, h-1) if len(t.List) > 1 { for _, p := range t.List { p.Y = 1 - p.Node.Resize(w, h-2) + p.Node.Resize(w, h-1-iOffset) p.Resize() } } else if len(t.List) == 1 { t.List[0].Y = 0 - t.List[0].Node.Resize(w, h-1) + t.List[0].Node.Resize(w, h-iOffset) t.List[0].Resize() } } diff --git a/cmd/micro/config/settings.go b/cmd/micro/config/settings.go index b82bd78f..c9f7f215 100644 --- a/cmd/micro/config/settings.go +++ b/cmd/micro/config/settings.go @@ -163,6 +163,13 @@ func DefaultCommonSettings() map[string]interface{} { } } +func GetInfoBarOffset() int { + if GetGlobalOption("infobar").(bool) { + return 1 + } + return 0 +} + // DefaultGlobalSettings returns the default global settings for micro // Note that colorscheme is a global only option func DefaultGlobalSettings() map[string]interface{} { diff --git a/cmd/micro/display/bufwindow.go b/cmd/micro/display/bufwindow.go index cee7164d..a5a677db 100644 --- a/cmd/micro/display/bufwindow.go +++ b/cmd/micro/display/bufwindow.go @@ -26,6 +26,7 @@ type BufWindow struct { lineHeight []int gutterOffset int + drawStatus bool } // NewBufWindow creates a new window at a location in the screen with a width and height @@ -133,8 +134,12 @@ func (w *BufWindow) Bottomline() int { func (w *BufWindow) Relocate() bool { b := w.Buf height := w.Bottomline() + 1 - w.StartLine - if b.LinesNum() < w.Height { - height = w.Height - 1 + h := w.Height + if w.drawStatus { + h-- + } + if b.LinesNum() <= h { + height = w.Height } ret := false activeC := w.Buf.GetActiveCursor() @@ -181,7 +186,7 @@ func (w *BufWindow) GetMouseLoc(svloc buffer.Loc) buffer.Loc { hasMessage := len(b.Messages) > 0 bufHeight := w.Height - if b.Settings["statusline"].(bool) { + if w.drawStatus { bufHeight-- } @@ -353,7 +358,7 @@ func (w *BufWindow) displayBuffer() { hasMessage := len(b.Messages) > 0 bufHeight := w.Height - if b.Settings["statusline"].(bool) { + if w.drawStatus { bufHeight-- } @@ -537,11 +542,27 @@ func (w *BufWindow) displayBuffer() { } func (w *BufWindow) displayStatusLine() { - w.sline.Display() + _, h := screen.Screen.Size() + infoY := h + if config.GetGlobalOption("infobar").(bool) { + infoY-- + } + + if w.Buf.Settings["statusline"].(bool) { + w.drawStatus = true + w.sline.Display() + } else if w.Y+w.Height != infoY { + w.drawStatus = true + for x := w.X; x < w.X+w.Width; x++ { + screen.Screen.SetContent(x, w.Y+w.Height-1, '-', nil, config.DefStyle.Reverse(true)) + } + } else { + w.drawStatus = false + } } // Display displays the buffer and the statusline func (w *BufWindow) Display() { - w.displayBuffer() w.displayStatusLine() + w.displayBuffer() } diff --git a/cmd/micro/display/infowindow.go b/cmd/micro/display/infowindow.go index d559693c..fe7b1ea4 100644 --- a/cmd/micro/display/infowindow.go +++ b/cmd/micro/display/infowindow.go @@ -57,35 +57,6 @@ func (i *InfoWindow) SetBuffer(b *buffer.Buffer) { i.InfoBuf.Buffer = b } -// func (i *InfoWindow) YesNoPrompt() (bool, bool) { -// for { -// i.Clear() -// i.Display() -// screen.Screen.ShowCursor(utf8.RuneCountInString(i.Msg), i.y) -// screen.Show() -// event := <-events -// -// switch e := event.(type) { -// case *tcell.EventKey: -// switch e.Key() { -// case tcell.KeyRune: -// if e.Rune() == 'y' || e.Rune() == 'Y' { -// i.HasPrompt = false -// return true, false -// } else if e.Rune() == 'n' || e.Rune() == 'N' { -// i.HasPrompt = false -// return false, false -// } -// case tcell.KeyCtrlC, tcell.KeyCtrlQ, tcell.KeyEscape: -// i.Clear() -// i.Reset() -// i.HasPrompt = false -// return false, true -// } -// } -// } -// } - func (i *InfoWindow) Relocate() bool { return false } func (i *InfoWindow) GetView() *View { return i.View } func (i *InfoWindow) SetView(v *View) {} @@ -184,6 +155,7 @@ func (i *InfoWindow) Display() { if !i.HasPrompt && !i.HasMessage && !i.HasError { return } + i.Clear() style := i.defStyle if i.HasError { diff --git a/cmd/micro/display/statusline.go b/cmd/micro/display/statusline.go index c1e72a41..435b9968 100644 --- a/cmd/micro/display/statusline.go +++ b/cmd/micro/display/statusline.go @@ -69,11 +69,6 @@ var formatParser = regexp.MustCompile(`\$\(.+?\)`) // Display draws the statusline to the screen func (s *StatusLine) Display() { - // TODO: don't display if infobar off and has message - if !config.GetGlobalOption("infobar").(bool) { - return - } - // We'll draw the line at the lowest line in the window y := s.win.Height + s.win.Y - 1 diff --git a/cmd/micro/display/termwindow.go b/cmd/micro/display/termwindow.go index e5b72a22..a8c6bf01 100644 --- a/cmd/micro/display/termwindow.go +++ b/cmd/micro/display/termwindow.go @@ -23,14 +23,17 @@ func NewTermWindow(x, y, w, h int, term *shell.Terminal) *TermWindow { tw.View = new(View) tw.Terminal = term tw.X, tw.Y = x, y - tw.Width, tw.Height = w, h-1 - tw.Resize(tw.Width, tw.Height) + tw.Resize(w, h) return tw } // Resize informs the terminal of a resize event func (w *TermWindow) Resize(width, height int) { + if config.GetGlobalOption("statusline").(bool) { + height-- + } w.Term.Resize(width, height) + w.Width, w.Height = width, height } func (w *TermWindow) SetActive(b bool) { From 1563ab93dd29c3c3760254e6fecf9d274985e35d Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 14 Jan 2019 22:29:24 -0500 Subject: [PATCH 078/231] Use byte slice for insert --- cmd/micro/action/actions.go | 10 +++++----- cmd/micro/action/bufhandler.go | 4 ++-- cmd/micro/buffer/buffer.go | 9 +++++---- cmd/micro/buffer/eventhandler.go | 11 +++++------ cmd/micro/buffer/save.go | 2 +- cmd/micro/info/history.go | 4 ++-- cmd/micro/info/infobuffer.go | 4 ++-- 7 files changed, 22 insertions(+), 22 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 32a22288..cd9e944b 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -386,14 +386,14 @@ func (h *BufHandler) InsertNewline() bool { ws := util.GetLeadingWhitespace(h.Buf.LineBytes(h.Cursor.Y)) cx := h.Cursor.X - h.Buf.Insert(h.Cursor.Loc, "\n") + h.Buf.Insert(h.Cursor.Loc, []byte{'\n'}) // h.Cursor.Right() if h.Buf.Settings["autoindent"].(bool) { if cx < len(ws) { ws = ws[0:cx] } - h.Buf.Insert(h.Cursor.Loc, string(ws)) + h.Buf.Insert(h.Cursor.Loc, ws) // for i := 0; i < len(ws); i++ { // h.Cursor.Right() // } @@ -733,10 +733,10 @@ func (h *BufHandler) Cut() bool { // DuplicateLine duplicates the current line or selection func (h *BufHandler) DuplicateLine() bool { if h.Cursor.HasSelection() { - h.Buf.Insert(h.Cursor.CurSelection[1], string(h.Cursor.GetSelection())) + h.Buf.Insert(h.Cursor.CurSelection[1], h.Cursor.GetSelection()) } else { h.Cursor.End() - h.Buf.Insert(h.Cursor.Loc, "\n"+string(h.Buf.LineBytes(h.Cursor.Y))) + h.Buf.Insert(h.Cursor.Loc, append([]byte{'\n'}, h.Buf.LineBytes(h.Cursor.Y)...)) // h.Cursor.Right() } @@ -794,7 +794,7 @@ func (h *BufHandler) paste(clip string) { h.Cursor.ResetSelection() } - h.Buf.Insert(h.Cursor.Loc, clip) + h.Buf.Insert(h.Cursor.Loc, []byte(clip)) // h.Cursor.Loc = h.Cursor.Loc.Move(Count(clip), h.Buf) h.freshClip = false InfoBar.Message("Pasted clipboard") diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index 23362eb0..e763b460 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -261,9 +261,9 @@ func (h *BufHandler) DoRuneInsert(r rune) { if h.isOverwriteMode { next := c.Loc next.X++ - h.Buf.Replace(c.Loc, next, string(r)) + h.Buf.Replace(c.Loc, next, []byte{byte(r)}) } else { - h.Buf.Insert(c.Loc, string(r)) + h.Buf.Insert(c.Loc, []byte{byte(r)}) } } } diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index f56f627b..c5c0f4bb 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -1,6 +1,7 @@ package buffer import ( + "bytes" "crypto/md5" "errors" "io" @@ -232,7 +233,7 @@ func (b *Buffer) SetName(s string) { b.name = s } -func (b *Buffer) Insert(start Loc, text string) { +func (b *Buffer) Insert(start Loc, text []byte) { b.EventHandler.cursors = b.cursors b.EventHandler.Insert(start, text) } @@ -409,11 +410,11 @@ func (b *Buffer) ClearMatches() { // IndentString returns this buffer's indent method (a tabstop or n spaces // depending on the settings) -func (b *Buffer) IndentString(tabsize int) string { +func (b *Buffer) IndentString(tabsize int) []byte { if b.Settings["tabstospaces"].(bool) { - return Spaces(tabsize) + return bytes.Repeat([]byte{' '}, tabsize) } - return "\t" + return []byte{'\t'} } // SetCursors resets this buffer's cursors to a new list diff --git a/cmd/micro/buffer/eventhandler.go b/cmd/micro/buffer/eventhandler.go index f04b78f9..81f1b67d 100644 --- a/cmd/micro/buffer/eventhandler.go +++ b/cmd/micro/buffer/eventhandler.go @@ -87,16 +87,16 @@ func NewEventHandler(buf *SharedBuffer, cursors []*Cursor) *EventHandler { // the buffer equal to that string // This means that we can transform the buffer into any string and still preserve undo/redo // through insert and delete events -func (eh *EventHandler) ApplyDiff(new string) { +func (eh *EventHandler) ApplyDiff(str string) { differ := dmp.New() - diff := differ.DiffMain(string(eh.buf.Bytes()), new, false) + diff := differ.DiffMain(string(eh.buf.Bytes()), str, false) loc := eh.buf.Start() for _, d := range diff { if d.Type == dmp.DiffDelete { eh.Remove(loc, loc.MoveLA(utf8.RuneCountInString(d.Text), eh.buf.LineArray)) } else { if d.Type == dmp.DiffInsert { - eh.Insert(loc, d.Text) + eh.Insert(loc, []byte(d.Text)) } loc = loc.MoveLA(utf8.RuneCountInString(d.Text), eh.buf.LineArray) } @@ -104,8 +104,7 @@ func (eh *EventHandler) ApplyDiff(new string) { } // Insert creates an insert text event and executes it -func (eh *EventHandler) Insert(start Loc, textStr string) { - text := []byte(textStr) +func (eh *EventHandler) Insert(start Loc, text []byte) { e := &TextEvent{ C: *eh.cursors[0], EventType: TextEventInsert, @@ -174,7 +173,7 @@ func (eh *EventHandler) MultipleReplace(deltas []Delta) { } // Replace deletes from start to end and replaces it with the given string -func (eh *EventHandler) Replace(start, end Loc, replace string) { +func (eh *EventHandler) Replace(start, end Loc, replace []byte) { eh.Remove(start, end) eh.Insert(start, replace) } diff --git a/cmd/micro/buffer/save.go b/cmd/micro/buffer/save.go index fe82a8e0..b8672dd7 100644 --- a/cmd/micro/buffer/save.go +++ b/cmd/micro/buffer/save.go @@ -67,7 +67,7 @@ func (b *Buffer) SaveAs(filename string) error { if b.Settings["eofnewline"].(bool) { end := b.End() if b.RuneAt(Loc{end.X - 1, end.Y}) != '\n' { - b.Insert(end, "\n") + b.Insert(end, []byte{'\n'}) } } diff --git a/cmd/micro/info/history.go b/cmd/micro/info/history.go index 18e6bbba..84a81e53 100644 --- a/cmd/micro/info/history.go +++ b/cmd/micro/info/history.go @@ -64,7 +64,7 @@ func (i *InfoBuf) SaveHistory() { func (i *InfoBuf) UpHistory(history []string) { if i.HistoryNum > 0 { i.HistoryNum-- - i.Replace(i.Start(), i.End(), history[i.HistoryNum]) + i.Replace(i.Start(), i.End(), []byte(history[i.HistoryNum])) i.Buffer.GetActiveCursor().GotoLoc(i.End()) } } @@ -73,7 +73,7 @@ func (i *InfoBuf) UpHistory(history []string) { func (i *InfoBuf) DownHistory(history []string) { if i.HistoryNum < len(history)-1 { i.HistoryNum++ - i.Replace(i.Start(), i.End(), history[i.HistoryNum]) + i.Replace(i.Start(), i.End(), []byte(history[i.HistoryNum])) i.Buffer.GetActiveCursor().GotoLoc(i.End()) } } diff --git a/cmd/micro/info/infobuffer.go b/cmd/micro/info/infobuffer.go index 438e3b52..58c8e428 100644 --- a/cmd/micro/info/infobuffer.go +++ b/cmd/micro/info/infobuffer.go @@ -111,7 +111,7 @@ func (i *InfoBuf) Prompt(prompt string, msg string, ptype string, eventcb func(s i.HasGutter = false i.PromptCallback = donecb i.EventCallback = eventcb - i.Buffer.Insert(i.Buffer.Start(), msg) + i.Buffer.Insert(i.Buffer.Start(), []byte(msg)) } func (i *InfoBuf) YNPrompt(prompt string, donecb func(bool, bool)) { @@ -151,7 +151,7 @@ func (i *InfoBuf) DonePrompt(canceled bool) { i.PromptCallback = nil i.EventCallback = nil i.YNCallback = nil - i.Replace(i.Start(), i.End(), "") + i.Replace(i.Start(), i.End(), []byte{}) } // Reset resets the infobuffer's msg and info From 467d3847892135c80190c2e29448d06bdabd8e81 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 14 Jan 2019 22:38:59 -0500 Subject: [PATCH 079/231] Add more actions --- cmd/micro/action/actions.go | 61 +++++++++++++++++++++++ cmd/micro/buffer/buffer.go | 97 +++++++++++++++++++++++++++++++++++++ 2 files changed, 158 insertions(+) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index cd9e944b..76ec9ecc 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -758,11 +758,64 @@ func (h *BufHandler) DeleteLine() bool { // MoveLinesUp moves up the current line or selected lines if any func (h *BufHandler) MoveLinesUp() bool { + if h.Cursor.HasSelection() { + if h.Cursor.CurSelection[0].Y == 0 { + InfoBar.Message("Can not move further up") + return true + } + start := h.Cursor.CurSelection[0].Y + end := h.Cursor.CurSelection[1].Y + if start > end { + end, start = start, end + } + + h.Buf.MoveLinesUp( + start, + end, + ) + h.Cursor.CurSelection[1].Y -= 1 + } else { + if h.Cursor.Loc.Y == 0 { + InfoBar.Message("Can not move further up") + return true + } + h.Buf.MoveLinesUp( + h.Cursor.Loc.Y, + h.Cursor.Loc.Y+1, + ) + } + return true } // MoveLinesDown moves down the current line or selected lines if any func (h *BufHandler) MoveLinesDown() bool { + if h.Cursor.HasSelection() { + if h.Cursor.CurSelection[1].Y >= h.Buf.LinesNum() { + InfoBar.Message("Can not move further down") + return true + } + start := h.Cursor.CurSelection[0].Y + end := h.Cursor.CurSelection[1].Y + if start > end { + end, start = start, end + } + + h.Buf.MoveLinesDown( + start, + end, + ) + } else { + if h.Cursor.Loc.Y >= h.Buf.LinesNum()-1 { + InfoBar.Message("Can not move further down") + return true + } + h.Buf.MoveLinesDown( + h.Cursor.Loc.Y, + h.Cursor.Loc.Y+1, + ) + } + return true } @@ -803,6 +856,14 @@ func (h *BufHandler) paste(clip string) { // JumpToMatchingBrace moves the cursor to the matching brace if it is // currently on a brace func (h *BufHandler) JumpToMatchingBrace() bool { + for _, bp := range buffer.BracePairs { + r := h.Cursor.RuneUnder(h.Cursor.X) + if r == bp[0] || r == bp[1] { + matchingBrace := h.Buf.FindMatchingBrace(bp, h.Cursor.Loc) + h.Cursor.GotoLoc(matchingBrace) + } + } + return true } diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index c5c0f4bb..cc5658ad 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -504,3 +504,100 @@ func (b *Buffer) ClearCursors() { b.curCursor = 0 b.GetActiveCursor().ResetSelection() } + +// MoveLinesUp moves the range of lines up one row +func (b *Buffer) MoveLinesUp(start int, end int) { + if start < 1 || start >= end || end > len(b.lines) { + return + } + if end == len(b.lines) { + b.Insert( + Loc{ + utf8.RuneCount(b.lines[end-1].data), + end - 1, + }, + append([]byte{'\n'}, b.LineBytes(start-1)...), + ) + } else { + b.Insert( + Loc{0, end}, + append(b.LineBytes(start-1), '\n'), + ) + } + b.Remove( + Loc{0, start - 1}, + Loc{0, start}, + ) +} + +// MoveLinesDown moves the range of lines down one row +func (b *Buffer) MoveLinesDown(start int, end int) { + if start < 0 || start >= end || end >= len(b.lines)-1 { + return + } + b.Insert( + Loc{0, start}, + append(b.LineBytes(end), '\n'), + ) + end++ + b.Remove( + Loc{0, end}, + Loc{0, end + 1}, + ) +} + +var BracePairs = [][2]rune{ + {'(', ')'}, + {'{', '}'}, + {'[', ']'}, +} + +// FindMatchingBrace returns the location in the buffer of the matching bracket +// It is given a brace type containing the open and closing character, (for example +// '{' and '}') as well as the location to match from +// TODO: maybe can be more efficient with utf8 package +func (b *Buffer) FindMatchingBrace(braceType [2]rune, start Loc) Loc { + curLine := []rune(string(b.LineBytes(start.Y))) + startChar := curLine[start.X] + var i int + if startChar == braceType[0] { + for y := start.Y; y < b.LinesNum(); y++ { + l := []rune(string(b.LineBytes(y))) + xInit := 0 + if y == start.Y { + xInit = start.X + } + for x := xInit; x < len(l); x++ { + r := l[x] + if r == braceType[0] { + i++ + } else if r == braceType[1] { + i-- + if i == 0 { + return Loc{x, y} + } + } + } + } + } else if startChar == braceType[1] { + for y := start.Y; y >= 0; y-- { + l := []rune(string(b.lines[y].data)) + xInit := len(l) - 1 + if y == start.Y { + xInit = start.X + } + for x := xInit; x >= 0; x-- { + r := l[x] + if r == braceType[0] { + i-- + if i == 0 { + return Loc{x, y} + } + } else if r == braceType[1] { + i++ + } + } + } + } + return start +} From 3380170af8a54ebafcf74450d524e9ea2f962584 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 14 Jan 2019 22:44:06 -0500 Subject: [PATCH 080/231] Add retab --- cmd/micro/action/actions.go | 24 +----------------------- cmd/micro/action/command.go | 1 + cmd/micro/buffer/buffer.go | 26 ++++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 76ec9ecc..a4e6e250 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -309,29 +309,7 @@ func (h *BufHandler) ParagraphNext() bool { // Retab changes all tabs to spaces or all spaces to tabs depending // on the user's settings func (h *BufHandler) Retab() bool { - // b := h.Buf - // toSpaces := b.Settings["tabstospaces"].(bool) - // tabsize := util.IntOpt(b.Settings["tabsize"]) - // dirty := false - // - // for i := 0; i < b.LinesNum(); i++ { - // l := b.LineBytes(i) - // - // ws := util.GetLeadingWhitespace(l) - // if len(ws) != 0 { - // if toSpaces { - // ws = bytes.Replace(ws, []byte("\t"), []byte(util.Spaces(tabsize)), -1) - // } else { - // ws = bytes.Replace(ws, []byte(util.Spaces(tabsize)), []byte("\t"), -1) - // } - // } - // - // l = bytes.TrimLeft(l, " \t") - // b.lines[i].data = append(ws, l...) - // dirty = true - // } - // - // b.IsModified = dirty + h.Buf.Retab() return true } diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 7d40baec..e72c4687 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -150,6 +150,7 @@ func (h *BufHandler) PluginCmd(args []string) { // RetabCmd changes all spaces to tabs or all tabs to spaces // depending on the user's settings func (h *BufHandler) RetabCmd(args []string) { + h.Buf.Retab() } // RawCmd opens a new raw view which displays the escape sequences micro diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index cc5658ad..b585e688 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -601,3 +601,29 @@ func (b *Buffer) FindMatchingBrace(braceType [2]rune, start Loc) Loc { } return start } + +// Retab changes all tabs to spaces or vice versa +func (b *Buffer) Retab() { + toSpaces := b.Settings["tabstospaces"].(bool) + tabsize := IntOpt(b.Settings["tabsize"]) + dirty := false + + for i := 0; i < b.LinesNum(); i++ { + l := b.LineBytes(i) + + ws := GetLeadingWhitespace(l) + if len(ws) != 0 { + if toSpaces { + ws = bytes.Replace(ws, []byte{'\t'}, bytes.Repeat([]byte{' '}, tabsize), -1) + } else { + ws = bytes.Replace(ws, bytes.Repeat([]byte{' '}, tabsize), []byte{'\t'}, -1) + } + } + + l = bytes.TrimLeft(l, " \t") + b.lines[i].data = append(ws, l...) + dirty = true + } + + b.isModified = dirty +} From 4a5b759f168c8c7c70d8a4508db3cd9954e87460 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 14 Jan 2019 23:24:49 -0500 Subject: [PATCH 081/231] Fix fileformat --- cmd/micro/buffer/buffer.go | 7 +++++++ cmd/micro/buffer/line_array.go | 9 +++++---- cmd/micro/buffer/save.go | 2 +- cmd/micro/buffer/settings.go | 6 ++++++ 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index b585e688..e9faf019 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -163,6 +163,13 @@ func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []strin b.EventHandler = NewEventHandler(b.SharedBuffer, b.cursors) } + switch b.Endings { + case FFUnix: + b.Settings["fileformat"] = "unix" + case FFDos: + b.Settings["fileformat"] = "dos" + } + b.Path = path b.AbsPath = absPath diff --git a/cmd/micro/buffer/line_array.go b/cmd/micro/buffer/line_array.go index 43d86100..64352c11 100644 --- a/cmd/micro/buffer/line_array.go +++ b/cmd/micro/buffer/line_array.go @@ -53,7 +53,7 @@ type FileFormat byte // and delete in it type LineArray struct { lines []Line - endings FileFormat + Endings FileFormat initsize uint64 } @@ -95,11 +95,12 @@ func NewLineArray(size uint64, endings FileFormat, reader io.Reader) *LineArray if dlen > 1 && data[dlen-2] == '\r' { data = append(data[:dlen-2], '\n') if endings == FFAuto { - la.endings = FFDos + la.Endings = FFDos } + dlen = len(data) } else if dlen > 0 { if endings == FFAuto { - la.endings = FFUnix + la.Endings = FFUnix } } @@ -143,7 +144,7 @@ func (la *LineArray) Bytes() []byte { for i, l := range la.lines { str = append(str, l.data...) if i != len(la.lines)-1 { - if la.endings == FFDos { + if la.Endings == FFDos { str = append(str, '\r') } str = append(str, '\n') diff --git a/cmd/micro/buffer/save.go b/cmd/micro/buffer/save.go index b8672dd7..d8318499 100644 --- a/cmd/micro/buffer/save.go +++ b/cmd/micro/buffer/save.go @@ -107,7 +107,7 @@ func (b *Buffer) SaveAs(filename string) error { // end of line var eol []byte - if b.Settings["fileformat"] == "dos" { + if b.Endings == FFDos { eol = []byte{'\r', '\n'} } else { eol = []byte{'\n'} diff --git a/cmd/micro/buffer/settings.go b/cmd/micro/buffer/settings.go index fb3b5486..d7144ca9 100644 --- a/cmd/micro/buffer/settings.go +++ b/cmd/micro/buffer/settings.go @@ -30,6 +30,12 @@ func (b *Buffer) SetOption(option, value string) error { } else if option == "filetype" { b.UpdateRules() } else if option == "fileformat" { + switch b.Settings["fileformat"].(string) { + case "unix": + b.Endings = FFUnix + case "dos": + b.Endings = FFDos + } b.isModified = true } else if option == "syntax" { if !nativeValue.(bool) { From 538f0117bcc1014b08b48eebcd8b7878c9421cb4 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 15 Jan 2019 00:24:53 -0500 Subject: [PATCH 082/231] Fix yn callback bug --- cmd/micro/action/actions.go | 5 ----- cmd/micro/action/command.go | 18 ++++++++++++------ cmd/micro/action/infohandler.go | 9 +++++---- cmd/micro/action/termhandler.go | 3 ++- cmd/micro/buffer/buffer.go | 3 +++ cmd/micro/info/infobuffer.go | 33 +++++++++++++++++++-------------- 6 files changed, 41 insertions(+), 30 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index a4e6e250..e41ad051 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -351,11 +351,6 @@ func (h *BufHandler) SelectToEnd() bool { // InsertNewline inserts a newline plus possible some whitespace if autoindent is on func (h *BufHandler) InsertNewline() bool { - if h.Buf.Type == buffer.BTInfo { - InfoBar.DonePrompt(false) - return false - } - // Insert a newline if h.Cursor.HasSelection() { h.Cursor.DeleteSelection() diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index e72c4687..ef4762df 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -559,9 +559,7 @@ func (h *BufHandler) TermCmd(args []string) { args = []string{sh} } - term := func(i int) { - // If there is only one open file we make a new tab instead of overwriting it - newtab := len(MainTab().Panes) == 1 && len(Tabs.List) == 1 + term := func(i int, newtab bool) { t := new(shell.Terminal) t.Start(args, false, true) @@ -580,19 +578,27 @@ func (h *BufHandler) TermCmd(args []string) { MainTab().SetActive(i) } + // If there is only one open file we make a new tab instead of overwriting it + newtab := len(MainTab().Panes) == 1 && len(Tabs.List) == 1 + + if newtab { + term(0, true) + return + } + for i, p := range ps { if p.ID() == h.ID() { if h.Buf.Modified() { InfoBar.YNPrompt("Save changes to "+h.Buf.GetName()+" before closing? (y,n,esc)", func(yes, canceled bool) { if !canceled && !yes { - term(i) + term(i, false) } else if !canceled && yes { h.Save() - term(i) + term(i, false) } }) } else { - term(i) + term(i, false) } } } diff --git a/cmd/micro/action/infohandler.go b/cmd/micro/action/infohandler.go index 337393bf..2840e22c 100644 --- a/cmd/micro/action/infohandler.go +++ b/cmd/micro/action/infohandler.go @@ -33,18 +33,19 @@ func (h *InfoHandler) HandleEvent(event tcell.Event) { } done := h.DoKeyEvent(ke) - if !done && e.Key() == tcell.KeyRune { + if e.Key() == tcell.KeyRune && h.HasYN { if e.Rune() == 'y' && h.HasYN { h.YNResp = true h.DonePrompt(false) } else if e.Rune() == 'n' && h.HasYN { h.YNResp = false h.DonePrompt(false) - } else if !h.HasYN { - h.DoRuneInsert(e.Rune()) - done = true } } + if e.Key() == tcell.KeyRune && !done && !h.HasYN { + h.DoRuneInsert(e.Rune()) + done = true + } if done && h.HasPrompt && !h.HasYN { resp := strings.TrimSpace(string(h.LineBytes(0))) hist := h.History[h.PromptType] diff --git a/cmd/micro/action/termhandler.go b/cmd/micro/action/termhandler.go index 0d19c551..388377ab 100644 --- a/cmd/micro/action/termhandler.go +++ b/cmd/micro/action/termhandler.go @@ -23,6 +23,7 @@ func NewTermHandler(x, y, w, h int, t *shell.Terminal, id uint64) *TermHandler { th := new(TermHandler) th.Terminal = t th.id = id + th.mouseReleased = true th.Window = display.NewTermWindow(x, y, w, h, t) return th } @@ -81,7 +82,7 @@ func (t *TermHandler) HandleEvent(event tcell.Event) { x, y := e.Position() v := t.GetView() x -= v.X - y += v.Y + y -= v.Y if e.Buttons() == tcell.Button1 { if !t.mouseReleased { diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index e9faf019..e87e5e49 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -427,11 +427,13 @@ func (b *Buffer) IndentString(tabsize int) []byte { // SetCursors resets this buffer's cursors to a new list func (b *Buffer) SetCursors(c []*Cursor) { b.cursors = c + b.EventHandler.cursors = b.cursors } // AddCursor adds a new cursor to the list func (b *Buffer) AddCursor(c *Cursor) { b.cursors = append(b.cursors, c) + b.EventHandler.cursors = b.cursors b.UpdateCursors() } @@ -486,6 +488,7 @@ func (b *Buffer) MergeCursors() { if b.curCursor >= len(b.cursors) { b.curCursor = len(b.cursors) - 1 } + b.EventHandler.cursors = b.cursors } // UpdateCursors updates all the cursors indicies diff --git a/cmd/micro/info/infobuffer.go b/cmd/micro/info/infobuffer.go index 58c8e428..b22c8a52 100644 --- a/cmd/micro/info/infobuffer.go +++ b/cmd/micro/info/infobuffer.go @@ -133,25 +133,30 @@ func (i *InfoBuf) DonePrompt(canceled bool) { i.HasPrompt = false i.HasYN = false i.HasGutter = false - if i.PromptCallback != nil && !hadYN { - if canceled { - i.PromptCallback("", true) - h := i.History[i.PromptType] - i.History[i.PromptType] = h[:len(h)-1] - } else { - resp := strings.TrimSpace(string(i.LineBytes(0))) - i.PromptCallback(resp, false) - h := i.History[i.PromptType] - h[len(h)-1] = resp + if !hadYN { + if i.PromptCallback != nil { + if canceled { + i.PromptCallback("", true) + h := i.History[i.PromptType] + i.History[i.PromptType] = h[:len(h)-1] + } else { + resp := strings.TrimSpace(string(i.LineBytes(0))) + i.PromptCallback(resp, false) + h := i.History[i.PromptType] + h[len(h)-1] = resp + } + i.PromptCallback = nil + i.EventCallback = nil } + if i.EventCallback != nil { + i.EventCallback = nil + } + i.Replace(i.Start(), i.End(), []byte{}) } if i.YNCallback != nil && hadYN { i.YNCallback(i.YNResp, canceled) + i.YNCallback = nil } - i.PromptCallback = nil - i.EventCallback = nil - i.YNCallback = nil - i.Replace(i.Start(), i.End(), []byte{}) } // Reset resets the infobuffer's msg and info From df968db5a3f8efd789584c241e25c39c5ce57e56 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 15 Jan 2019 17:10:13 -0500 Subject: [PATCH 083/231] Proper help toggle --- cmd/micro/action/actions.go | 10 +++++++--- cmd/micro/display/bufwindow.go | 2 ++ cmd/micro/display/statusline.go | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index e41ad051..ade2f0d5 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -1001,13 +1001,17 @@ func (h *BufHandler) ClearStatus() bool { // ToggleHelp toggles the help screen func (h *BufHandler) ToggleHelp() bool { - h.openHelp("help") - return true + if h.Buf.Type == buffer.BTHelp { + h.Quit() + } else { + h.openHelp("help") + } + return false } // ToggleKeyMenu toggles the keymenu option and resizes all tabs func (h *BufHandler) ToggleKeyMenu() bool { - return true + return false } // ShellMode opens a terminal to run a shell command diff --git a/cmd/micro/display/bufwindow.go b/cmd/micro/display/bufwindow.go index a5a677db..ef532c56 100644 --- a/cmd/micro/display/bufwindow.go +++ b/cmd/micro/display/bufwindow.go @@ -57,6 +57,8 @@ func (v *View) SetView(view *View) { func (w *BufWindow) Resize(width, height int) { w.Width, w.Height = width, height w.lineHeight = make([]int, height) + // This recalculates lineHeight + w.GetMouseLoc(buffer.Loc{width, height}) } func (w *BufWindow) SetActive(b bool) { diff --git a/cmd/micro/display/statusline.go b/cmd/micro/display/statusline.go index 435b9968..e4a26913 100644 --- a/cmd/micro/display/statusline.go +++ b/cmd/micro/display/statusline.go @@ -32,7 +32,7 @@ func NewStatusLine(win *BufWindow) *StatusLine { s := new(StatusLine) s.FormatLeft = "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat)" // s.FormatLeft = "$(filename) $(modified)(line,col) $(opt:filetype) $(opt:fileformat)" - s.FormatRight = "$(bind:ToggleKeyMenu): show bindings, $(bind:ToggleHelp): open help" + s.FormatRight = "$(bind:ToggleKeyMenu): show bindings, $(bind:ToggleHelp): toggle help" s.Info = map[string]func(*buffer.Buffer) string{ "filename": func(b *buffer.Buffer) string { if b.Settings["basename"].(bool) { From a3885bfb1237597ce1ae97a9c013c864cdbb5ce8 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 15 Jan 2019 22:45:28 -0500 Subject: [PATCH 084/231] Add search and replace --- cmd/micro/action/actions.go | 12 ++-- cmd/micro/action/command.go | 111 ++++++++++++++++++++++++++++++++ cmd/micro/action/infohandler.go | 11 ++-- cmd/micro/buffer/search.go | 100 ++++++++++++++++++++++++---- cmd/micro/info/infobuffer.go | 5 -- 5 files changed, 212 insertions(+), 27 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index ade2f0d5..588437fb 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -552,7 +552,7 @@ func (h *BufHandler) SaveAs() bool { func (h *BufHandler) Find() bool { InfoBar.Prompt("Find: ", "", "Find", func(resp string) { // Event callback - match, found, _ := h.Buf.FindNext(resp, h.Cursor.Loc, true) + match, found, _ := h.Buf.FindNext(resp, h.Buf.Start(), h.Buf.End(), h.Cursor.Loc, true, true) if found { h.Cursor.SetSelectionStart(match[0]) h.Cursor.SetSelectionEnd(match[1]) @@ -564,7 +564,7 @@ func (h *BufHandler) Find() bool { }, func(resp string, canceled bool) { // Finished callback if !canceled { - match, found, err := h.Buf.FindNext(resp, h.Cursor.Loc, true) + match, found, err := h.Buf.FindNext(resp, h.Buf.Start(), h.Buf.End(), h.Cursor.Loc, true, true) if err != nil { InfoBar.Error(err) } @@ -597,7 +597,7 @@ func (h *BufHandler) FindNext() bool { if h.Cursor.HasSelection() { searchLoc = h.Cursor.CurSelection[1] } - match, found, err := h.Buf.FindNext(h.lastSearch, searchLoc, true) + match, found, err := h.Buf.FindNext(h.lastSearch, h.Buf.Start(), h.Buf.End(), searchLoc, true, true) if err != nil { InfoBar.Error(err) } @@ -623,7 +623,7 @@ func (h *BufHandler) FindPrevious() bool { if h.Cursor.HasSelection() { searchLoc = h.Cursor.CurSelection[0] } - match, found, err := h.Buf.FindNext(h.lastSearch, searchLoc, false) + match, found, err := h.Buf.FindNext(h.lastSearch, h.Buf.Start(), h.Buf.End(), searchLoc, false, true) if err != nil { InfoBar.Error(err) } @@ -1189,7 +1189,7 @@ func (h *BufHandler) SpawnMultiCursor() bool { if h.multiWord { search = "\\b" + search + "\\b" } - match, found, err := h.Buf.FindNext(search, searchStart, true) + match, found, err := h.Buf.FindNext(search, h.Buf.Start(), h.Buf.End(), searchStart, true, false) if err != nil { InfoBar.Error(err) } @@ -1262,7 +1262,7 @@ func (h *BufHandler) SkipMultiCursor() bool { sel := lastC.GetSelection() searchStart := lastC.CurSelection[1] - match, found, err := h.Buf.FindNext(string(sel), searchStart, true) + match, found, err := h.Buf.FindNext(string(sel), h.Buf.Start(), h.Buf.End(), searchStart, true, false) if err != nil { InfoBar.Error(err) } diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index ef4762df..196cdf08 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -5,8 +5,10 @@ import ( "fmt" "os" "path/filepath" + "regexp" "strconv" "strings" + "unicode/utf8" "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/config" @@ -540,6 +542,115 @@ func (h *BufHandler) SaveCmd(args []string) { // ReplaceCmd runs search and replace func (h *BufHandler) ReplaceCmd(args []string) { + if len(args) < 2 || len(args) > 4 { + // We need to find both a search and replace expression + InfoBar.Error("Invalid replace statement: " + strings.Join(args, " ")) + return + } + + all := false + noRegex := false + + if len(args) > 2 { + for _, arg := range args[2:] { + switch arg { + case "-a": + all = true + case "-l": + noRegex = true + default: + InfoBar.Error("Invalid flag: " + arg) + return + } + } + } + + search := args[0] + + if noRegex { + search = regexp.QuoteMeta(search) + } + + replace := []byte(args[1]) + + var regex *regexp.Regexp + var err error + if h.Buf.Settings["ignorecase"].(bool) { + regex, err = regexp.Compile("(?im)" + search) + } else { + regex, err = regexp.Compile("(?m)" + search) + } + if err != nil { + // There was an error with the user's regex + InfoBar.Error(err) + return + } + + nreplaced := 0 + start := h.Buf.Start() + end := h.Buf.End() + if h.Cursor.HasSelection() { + start = h.Cursor.CurSelection[0] + end = h.Cursor.CurSelection[1] + } + if all { + nreplaced = h.Buf.ReplaceRegex(start, end, regex, replace) + } else { + inRange := func(l buffer.Loc) bool { + return l.GreaterEqual(start) && l.LessThan(end) + } + + searchLoc := start + searching := true + var doReplacement func() + doReplacement = func() { + locs, found, err := h.Buf.FindNext(search, start, end, searchLoc, true, !noRegex) + if err != nil { + InfoBar.Error(err) + return + } + if !found || !inRange(locs[0]) || !inRange(locs[1]) { + h.Cursor.ResetSelection() + h.Cursor.Relocate() + return + } + + h.Cursor.SetSelectionStart(locs[0]) + h.Cursor.SetSelectionEnd(locs[1]) + + InfoBar.YNPrompt("Perform replacement (y,n,esc)", func(yes, canceled bool) { + if !canceled && yes { + h.Buf.Replace(locs[0], locs[1], replace) + searchLoc = locs[0] + searchLoc.X += utf8.RuneCount(replace) + h.Cursor.Loc = searchLoc + nreplaced++ + } else if !canceled && !yes { + searchLoc = locs[0] + searchLoc.X += utf8.RuneCount(replace) + } else if canceled { + h.Cursor.ResetSelection() + h.Cursor.Relocate() + return + } + if searching { + doReplacement() + } + }) + } + doReplacement() + } + + // TODO: relocate all cursors? + h.Cursor.Relocate() + + if nreplaced > 1 { + InfoBar.Message("Replaced ", nreplaced, " occurrences of ", search) + } else if nreplaced == 1 { + InfoBar.Message("Replaced ", nreplaced, " occurrence of ", search) + } else { + InfoBar.Message("Nothing matched ", search) + } } // ReplaceAllCmd replaces search term all at once diff --git a/cmd/micro/action/infohandler.go b/cmd/micro/action/infohandler.go index 2840e22c..11347960 100644 --- a/cmd/micro/action/infohandler.go +++ b/cmd/micro/action/infohandler.go @@ -33,20 +33,21 @@ func (h *InfoHandler) HandleEvent(event tcell.Event) { } done := h.DoKeyEvent(ke) - if e.Key() == tcell.KeyRune && h.HasYN { - if e.Rune() == 'y' && h.HasYN { + hasYN := h.HasYN + if e.Key() == tcell.KeyRune && hasYN { + if e.Rune() == 'y' && hasYN { h.YNResp = true h.DonePrompt(false) - } else if e.Rune() == 'n' && h.HasYN { + } else if e.Rune() == 'n' && hasYN { h.YNResp = false h.DonePrompt(false) } } - if e.Key() == tcell.KeyRune && !done && !h.HasYN { + if e.Key() == tcell.KeyRune && !done && !hasYN { h.DoRuneInsert(e.Rune()) done = true } - if done && h.HasPrompt && !h.HasYN { + if done && h.HasPrompt && !hasYN { resp := strings.TrimSpace(string(h.LineBytes(0))) hist := h.History[h.PromptType] hist[h.HistoryNum] = resp diff --git a/cmd/micro/buffer/search.go b/cmd/micro/buffer/search.go index a44b91ff..03932fc3 100644 --- a/cmd/micro/buffer/search.go +++ b/cmd/micro/buffer/search.go @@ -9,16 +9,32 @@ import ( func (b *Buffer) findDown(r *regexp.Regexp, start, end Loc) ([2]Loc, bool) { start.Y = util.Clamp(start.Y, 0, b.LinesNum()-1) + end.Y = util.Clamp(end.Y, 0, b.LinesNum()-1) + + if start.GreaterThan(end) { + start, end = end, start + } for i := start.Y; i <= end.Y; i++ { l := b.LineBytes(i) charpos := 0 - if i == start.Y { + if i == start.Y && start.Y == end.Y { + nchars := utf8.RuneCount(l) + start.X = util.Clamp(start.X, 0, nchars-1) + end.X = util.Clamp(end.X, 0, nchars-1) + l = util.SliceStart(l, end.X) + l = util.SliceEnd(l, start.X) + charpos = start.X + } else if i == start.Y { nchars := utf8.RuneCount(l) start.X = util.Clamp(start.X, 0, nchars-1) l = util.SliceEnd(l, start.X) charpos = start.X + } else if i == end.Y { + nchars := utf8.RuneCount(l) + end.X = util.Clamp(end.X, 0, nchars-1) + l = util.SliceStart(l, end.X) } match := r.FindIndex(l) @@ -34,21 +50,39 @@ func (b *Buffer) findDown(r *regexp.Regexp, start, end Loc) ([2]Loc, bool) { func (b *Buffer) findUp(r *regexp.Regexp, start, end Loc) ([2]Loc, bool) { start.Y = util.Clamp(start.Y, 0, b.LinesNum()-1) + end.Y = util.Clamp(end.Y, 0, b.LinesNum()-1) - for i := start.Y; i >= end.Y; i-- { + if start.GreaterThan(end) { + start, end = end, start + } + + for i := end.Y; i >= start.Y; i-- { l := b.LineBytes(i) + charpos := 0 - if i == start.Y { + if i == start.Y && start.Y == end.Y { nchars := utf8.RuneCount(l) start.X = util.Clamp(start.X, 0, nchars-1) - l = util.SliceStart(l, start.X) + end.X = util.Clamp(end.X, 0, nchars-1) + l = util.SliceStart(l, end.X) + l = util.SliceEnd(l, start.X) + charpos = start.X + } else if i == start.Y { + nchars := utf8.RuneCount(l) + start.X = util.Clamp(start.X, 0, nchars-1) + l = util.SliceEnd(l, start.X) + charpos = start.X + } else if i == end.Y { + nchars := utf8.RuneCount(l) + end.X = util.Clamp(end.X, 0, nchars-1) + l = util.SliceStart(l, end.X) } match := r.FindIndex(l) if match != nil { - start := Loc{util.RunePos(l, match[0]), i} - end := Loc{util.RunePos(l, match[1]), i} + start := Loc{charpos + util.RunePos(l, match[0]), i} + end := Loc{charpos + util.RunePos(l, match[1]), i} return [2]Loc{start, end}, true } } @@ -59,13 +93,18 @@ func (b *Buffer) findUp(r *regexp.Regexp, start, end Loc) ([2]Loc, bool) { // It returns the start and end location of the match (if found) and // a boolean indicating if it was found // May also return an error if the search regex is invalid -func (b *Buffer) FindNext(s string, from Loc, down bool) ([2]Loc, bool, error) { +func (b *Buffer) FindNext(s string, start, end, from Loc, down bool, useRegex bool) ([2]Loc, bool, error) { if s == "" { return [2]Loc{}, false, nil } var r *regexp.Regexp var err error + + if !useRegex { + s = regexp.QuoteMeta(s) + } + if b.Settings["ignorecase"].(bool) { r, err = regexp.Compile("(?i)" + s) } else { @@ -79,15 +118,54 @@ func (b *Buffer) FindNext(s string, from Loc, down bool) ([2]Loc, bool, error) { found := false var l [2]Loc if down { - l, found = b.findDown(r, from, b.End()) + l, found = b.findDown(r, from, end) if !found { - l, found = b.findDown(r, b.Start(), from) + l, found = b.findDown(r, start, from) } } else { - l, found = b.findUp(r, from, b.Start()) + l, found = b.findUp(r, from, start) if !found { - l, found = b.findUp(r, b.End(), from) + l, found = b.findUp(r, end, from) } } return l, found, nil } + +// ReplaceRegex replaces all occurrences of 'search' with 'replace' in the given area +// and returns the number of replacements made +func (b *Buffer) ReplaceRegex(start, end Loc, search *regexp.Regexp, replace []byte) int { + if start.GreaterThan(end) { + start, end = end, start + } + + found := 0 + var deltas []Delta + for i := start.Y; i <= end.Y; i++ { + l := b.lines[i].data + charpos := 0 + + // TODO: replace within X coords of selection + if start.Y == end.Y && i == start.Y { + l = util.SliceStart(l, end.X) + l = util.SliceEnd(l, start.X) + charpos = start.X + } else if i == start.Y { + l = util.SliceEnd(l, start.X) + charpos = start.X + } else if i == end.Y { + l = util.SliceStart(l, end.X) + } + newText := search.ReplaceAllFunc(l, func(in []byte) []byte { + found++ + return replace + }) + + from := Loc{charpos, i} + to := Loc{charpos + utf8.RuneCount(l), i} + + deltas = append(deltas, Delta{newText, from, to}) + } + b.MultipleReplace(deltas) + + return found +} diff --git a/cmd/micro/info/infobuffer.go b/cmd/micro/info/infobuffer.go index b22c8a52..cd6d4d4c 100644 --- a/cmd/micro/info/infobuffer.go +++ b/cmd/micro/info/infobuffer.go @@ -146,16 +146,11 @@ func (i *InfoBuf) DonePrompt(canceled bool) { h[len(h)-1] = resp } i.PromptCallback = nil - i.EventCallback = nil - } - if i.EventCallback != nil { - i.EventCallback = nil } i.Replace(i.Start(), i.End(), []byte{}) } if i.YNCallback != nil && hadYN { i.YNCallback(i.YNResp, canceled) - i.YNCallback = nil } } From 1a710272f85c89fc05fee3e3ebdf14ceda7a8f3e Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 15 Jan 2019 23:11:03 -0500 Subject: [PATCH 085/231] Prompt trim fix --- cmd/micro/action/infohandler.go | 4 +--- cmd/micro/info/infobuffer.go | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/cmd/micro/action/infohandler.go b/cmd/micro/action/infohandler.go index 11347960..5c432295 100644 --- a/cmd/micro/action/infohandler.go +++ b/cmd/micro/action/infohandler.go @@ -1,8 +1,6 @@ package action import ( - "strings" - "github.com/zyedidia/micro/cmd/micro/display" "github.com/zyedidia/micro/cmd/micro/info" "github.com/zyedidia/tcell" @@ -48,7 +46,7 @@ func (h *InfoHandler) HandleEvent(event tcell.Event) { done = true } if done && h.HasPrompt && !hasYN { - resp := strings.TrimSpace(string(h.LineBytes(0))) + resp := string(h.LineBytes(0)) hist := h.History[h.PromptType] hist[h.HistoryNum] = resp if h.EventCallback != nil { diff --git a/cmd/micro/info/infobuffer.go b/cmd/micro/info/infobuffer.go index cd6d4d4c..26cada21 100644 --- a/cmd/micro/info/infobuffer.go +++ b/cmd/micro/info/infobuffer.go @@ -2,7 +2,6 @@ package info import ( "fmt" - "strings" "github.com/zyedidia/micro/cmd/micro/buffer" ) @@ -140,7 +139,7 @@ func (i *InfoBuf) DonePrompt(canceled bool) { h := i.History[i.PromptType] i.History[i.PromptType] = h[:len(h)-1] } else { - resp := strings.TrimSpace(string(i.LineBytes(0))) + resp := string(i.LineBytes(0)) i.PromptCallback(resp, false) h := i.History[i.PromptType] h[len(h)-1] = resp From 254b892a3bf4a39c1cbc6c4d76bd6d2d9082cd8d Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 16 Jan 2019 17:52:30 -0500 Subject: [PATCH 086/231] Fix multi cursor relocate --- cmd/micro/action/actions.go | 20 +++++++++++++++----- cmd/micro/action/bufhandler.go | 1 + cmd/micro/buffer/buffer.go | 9 +++++++++ cmd/micro/buffer/eventhandler.go | 7 ++++--- cmd/micro/buffer/search.go | 1 - cmd/micro/display/bufwindow.go | 1 - 6 files changed, 29 insertions(+), 10 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 588437fb..1c68d17e 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -2,6 +2,7 @@ package action import ( "os" + "regexp" "strings" "time" "unicode/utf8" @@ -1186,10 +1187,11 @@ func (h *BufHandler) SpawnMultiCursor() bool { searchStart := spawner.CurSelection[1] search := string(sel) + search = regexp.QuoteMeta(search) if h.multiWord { search = "\\b" + search + "\\b" } - match, found, err := h.Buf.FindNext(search, h.Buf.Start(), h.Buf.End(), searchStart, true, false) + match, found, err := h.Buf.FindNext(search, h.Buf.Start(), h.Buf.End(), searchStart, true, true) if err != nil { InfoBar.Error(err) } @@ -1202,6 +1204,7 @@ func (h *BufHandler) SpawnMultiCursor() bool { c.Loc = c.CurSelection[1] h.Buf.AddCursor(c) + h.Buf.SetCurCursor(h.Buf.NumCursors() - 1) h.Buf.MergeCursors() } else { InfoBar.Message("No matches found") @@ -1262,7 +1265,13 @@ func (h *BufHandler) SkipMultiCursor() bool { sel := lastC.GetSelection() searchStart := lastC.CurSelection[1] - match, found, err := h.Buf.FindNext(string(sel), h.Buf.Start(), h.Buf.End(), searchStart, true, false) + search := string(sel) + search = regexp.QuoteMeta(search) + if h.multiWord { + search = "\\b" + search + "\\b" + } + + match, found, err := h.Buf.FindNext(search, h.Buf.Start(), h.Buf.End(), searchStart, true, true) if err != nil { InfoBar.Error(err) } @@ -1274,22 +1283,23 @@ func (h *BufHandler) SkipMultiCursor() bool { lastC.Loc = lastC.CurSelection[1] h.Buf.MergeCursors() - h.Relocate() + h.Buf.SetCurCursor(h.Buf.NumCursors() - 1) } else { InfoBar.Message("No matches found") } - return false + return true } // RemoveMultiCursor removes the latest multiple cursor func (h *BufHandler) RemoveMultiCursor() bool { if h.Buf.NumCursors() > 1 { h.Buf.RemoveCursor(h.Buf.NumCursors() - 1) + h.Buf.SetCurCursor(h.Buf.NumCursors() - 1) h.Buf.UpdateCursors() } else { h.multiWord = false } - return false + return true } // RemoveAllMultiCursors removes all cursors except the base cursor diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index e763b460..ede74b5f 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -253,6 +253,7 @@ func (h *BufHandler) DoRuneInsert(r rune) { cursors := h.Buf.GetCursors() for _, c := range cursors { // Insert a character + h.Buf.SetCurCursor(c.Num) if c.HasSelection() { c.DeleteSelection() c.ResetSelection() diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index e87e5e49..f6d91a89 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -242,11 +242,13 @@ func (b *Buffer) SetName(s string) { func (b *Buffer) Insert(start Loc, text []byte) { b.EventHandler.cursors = b.cursors + b.EventHandler.active = b.curCursor b.EventHandler.Insert(start, text) } func (b *Buffer) Remove(start, end Loc) { b.EventHandler.cursors = b.cursors + b.EventHandler.active = b.curCursor b.EventHandler.Remove(start, end) } @@ -428,12 +430,14 @@ func (b *Buffer) IndentString(tabsize int) []byte { func (b *Buffer) SetCursors(c []*Cursor) { b.cursors = c b.EventHandler.cursors = b.cursors + b.EventHandler.active = b.curCursor } // AddCursor adds a new cursor to the list func (b *Buffer) AddCursor(c *Cursor) { b.cursors = append(b.cursors, c) b.EventHandler.cursors = b.cursors + b.EventHandler.active = b.curCursor b.UpdateCursors() } @@ -489,10 +493,13 @@ func (b *Buffer) MergeCursors() { b.curCursor = len(b.cursors) - 1 } b.EventHandler.cursors = b.cursors + b.EventHandler.active = b.curCursor } // UpdateCursors updates all the cursors indicies func (b *Buffer) UpdateCursors() { + b.EventHandler.cursors = b.cursors + b.EventHandler.active = b.curCursor for i, c := range b.cursors { c.Num = i } @@ -502,6 +509,8 @@ func (b *Buffer) RemoveCursor(i int) { copy(b.cursors[i:], b.cursors[i+1:]) b.cursors[len(b.cursors)-1] = nil b.cursors = b.cursors[:len(b.cursors)-1] + b.curCursor = Clamp(b.curCursor, 0, len(b.cursors)-1) + b.UpdateCursors() } // ClearCursors removes all extra cursors diff --git a/cmd/micro/buffer/eventhandler.go b/cmd/micro/buffer/eventhandler.go index 81f1b67d..22a4806c 100644 --- a/cmd/micro/buffer/eventhandler.go +++ b/cmd/micro/buffer/eventhandler.go @@ -69,6 +69,7 @@ func UndoTextEvent(t *TextEvent, buf *SharedBuffer) { type EventHandler struct { buf *SharedBuffer cursors []*Cursor + active int UndoStack *TEStack RedoStack *TEStack } @@ -106,7 +107,7 @@ func (eh *EventHandler) ApplyDiff(str string) { // Insert creates an insert text event and executes it func (eh *EventHandler) Insert(start Loc, text []byte) { e := &TextEvent{ - C: *eh.cursors[0], + C: *eh.cursors[eh.active], EventType: TextEventInsert, Deltas: []Delta{{text, start, Loc{0, 0}}}, Time: time.Now(), @@ -136,7 +137,7 @@ func (eh *EventHandler) Insert(start Loc, text []byte) { // Remove creates a remove text event and executes it func (eh *EventHandler) Remove(start, end Loc) { e := &TextEvent{ - C: *eh.cursors[0], + C: *eh.cursors[eh.active], EventType: TextEventRemove, Deltas: []Delta{{[]byte{}, start, end}}, Time: time.Now(), @@ -164,7 +165,7 @@ func (eh *EventHandler) Remove(start, end Loc) { // MultipleReplace creates an multiple insertions executes them func (eh *EventHandler) MultipleReplace(deltas []Delta) { e := &TextEvent{ - C: *eh.cursors[0], + C: *eh.cursors[eh.active], EventType: TextEventReplace, Deltas: deltas, Time: time.Now(), diff --git a/cmd/micro/buffer/search.go b/cmd/micro/buffer/search.go index 03932fc3..5157a0bc 100644 --- a/cmd/micro/buffer/search.go +++ b/cmd/micro/buffer/search.go @@ -144,7 +144,6 @@ func (b *Buffer) ReplaceRegex(start, end Loc, search *regexp.Regexp, replace []b l := b.lines[i].data charpos := 0 - // TODO: replace within X coords of selection if start.Y == end.Y && i == start.Y { l = util.SliceStart(l, end.X) l = util.SliceEnd(l, start.X) diff --git a/cmd/micro/display/bufwindow.go b/cmd/micro/display/bufwindow.go index ef532c56..8d11ed5f 100644 --- a/cmd/micro/display/bufwindow.go +++ b/cmd/micro/display/bufwindow.go @@ -364,7 +364,6 @@ func (w *BufWindow) displayBuffer() { bufHeight-- } - // TODO: Rehighlighting start := w.StartLine if b.Settings["syntax"].(bool) && b.SyntaxDef != nil { if start > 0 && b.Rehighlight(start-1) { From 212b0f8c71edd37a8ca7ed76958b195c46186f84 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 16 Jan 2019 18:37:45 -0500 Subject: [PATCH 087/231] Add keymenu --- cmd/micro/action/actions.go | 2 ++ cmd/micro/action/command.go | 1 - cmd/micro/config/settings.go | 8 ++++-- cmd/micro/display/infowindow.go | 47 +++++++++++++++++++++++---------- 4 files changed, 41 insertions(+), 17 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 1c68d17e..9be172c4 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -1012,6 +1012,8 @@ func (h *BufHandler) ToggleHelp() bool { // ToggleKeyMenu toggles the keymenu option and resizes all tabs func (h *BufHandler) ToggleKeyMenu() bool { + config.GlobalSettings["keymenu"] = !config.GetGlobalOption("keymenu").(bool) + Tabs.Resize() return false } diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 196cdf08..6f85c70c 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -395,7 +395,6 @@ func SetGlobalOption(option, value string) error { } } - // TODO: info and keymenu option change if option == "infobar" || option == "keymenu" { Tabs.Resize() } diff --git a/cmd/micro/config/settings.go b/cmd/micro/config/settings.go index c9f7f215..01126d17 100644 --- a/cmd/micro/config/settings.go +++ b/cmd/micro/config/settings.go @@ -164,10 +164,14 @@ func DefaultCommonSettings() map[string]interface{} { } func GetInfoBarOffset() int { + offset := 0 if GetGlobalOption("infobar").(bool) { - return 1 + offset++ } - return 0 + if GetGlobalOption("keymenu").(bool) { + offset += 2 + } + return offset } // DefaultGlobalSettings returns the default global settings for micro diff --git a/cmd/micro/display/infowindow.go b/cmd/micro/display/infowindow.go index fe7b1ea4..8b74f5f1 100644 --- a/cmd/micro/display/infowindow.go +++ b/cmd/micro/display/infowindow.go @@ -1,6 +1,7 @@ package display import ( + "log" "unicode/utf8" runewidth "github.com/mattn/go-runewidth" @@ -18,9 +19,6 @@ type InfoWindow struct { defStyle tcell.Style errStyle tcell.Style - - width int - y int } func NewInfoWindow(b *info.InfoBuf) *InfoWindow { @@ -42,15 +40,15 @@ func NewInfoWindow(b *info.InfoBuf) *InfoWindow { iw.errStyle = config.Colorscheme["error-message"] } - iw.width, iw.y = screen.Screen.Size() - iw.y-- + iw.Width, iw.Y = screen.Screen.Size() + iw.Y-- return iw } func (i *InfoWindow) Resize(w, h int) { - i.width = w - i.y = h + i.Width = w + i.Y = h } func (i *InfoWindow) SetBuffer(b *buffer.Buffer) { @@ -70,8 +68,8 @@ func (i *InfoWindow) GetMouseLoc(vloc buffer.Loc) buffer.Loc { } func (i *InfoWindow) Clear() { - for x := 0; x < i.width; x++ { - screen.Screen.SetContent(x, i.y, ' ', nil, config.DefStyle) + for x := 0; x < i.Width; x++ { + screen.Screen.SetContent(x, i.Y, ' ', nil, config.DefStyle) } } @@ -102,7 +100,7 @@ func (i *InfoWindow) displayBuffer() { } - screen.Screen.SetContent(vlocX, i.y, r, nil, style) + screen.Screen.SetContent(vlocX, i.Y, r, nil, style) vlocX++ } nColsBeforeStart-- @@ -111,7 +109,7 @@ func (i *InfoWindow) displayBuffer() { totalwidth := blocX - nColsBeforeStart for len(line) > 0 { if activeC.X == blocX { - screen.Screen.ShowCursor(vlocX, i.y) + screen.Screen.ShowCursor(vlocX, i.Y) } r, size := utf8.DecodeRune(line) @@ -140,17 +138,38 @@ func (i *InfoWindow) displayBuffer() { } } totalwidth += width - if vlocX >= i.width { + if vlocX >= i.Width { break } } if activeC.X == blocX { - screen.Screen.ShowCursor(vlocX, i.y) + screen.Screen.ShowCursor(vlocX, i.Y) + } +} + +func (i *InfoWindow) displayKeyMenu() { + // TODO: maybe make this based on the actual keybindings + display := []string{"^Q Quit, ^S Save, ^O Open, ^G Help, ^E Command Bar, ^K Cut Line", "^F Find, ^Z Undo, ^Y Redo, ^A Select All, ^D Duplicate Line, ^T New Tab"} + + log.Println("hi", len(display), i.Width) + for y := 0; y < len(display); y++ { + for x := 0; x < i.Width; x++ { + log.Println(x, i.Y-len(display)+y) + if x < len(display[y]) { + screen.Screen.SetContent(x, i.Y-len(display)+y, rune(display[y][x]), nil, config.DefStyle) + } else { + screen.Screen.SetContent(x, i.Y-len(display)+y, ' ', nil, config.DefStyle) + } + } } } func (i *InfoWindow) Display() { x := 0 + if config.GetGlobalOption("keymenu").(bool) { + i.displayKeyMenu() + } + if i.HasPrompt || config.GlobalSettings["infobar"].(bool) { if !i.HasPrompt && !i.HasMessage && !i.HasError { return @@ -164,7 +183,7 @@ func (i *InfoWindow) Display() { display := i.Msg for _, c := range display { - screen.Screen.SetContent(x, i.y, c, nil, style) + screen.Screen.SetContent(x, i.Y, c, nil, style) x += runewidth.RuneWidth(c) } From 069f7d20bc2b39e0acda00a85cf5a5d1d9da7484 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 16 Jan 2019 22:15:11 -0500 Subject: [PATCH 088/231] Add save and save as --- cmd/micro/action/actions.go | 50 ++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 9be172c4..dc7d32d7 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -12,6 +12,7 @@ import ( "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/screen" "github.com/zyedidia/micro/cmd/micro/shell" + "github.com/zyedidia/micro/cmd/micro/shellwords" "github.com/zyedidia/micro/cmd/micro/util" "github.com/zyedidia/tcell" ) @@ -540,15 +541,62 @@ func (h *BufHandler) SaveAll() bool { // Save the buffer to disk func (h *BufHandler) Save() bool { - h.Buf.Save() + // If this is an empty buffer, ask for a filename + if h.Buf.Path == "" { + h.SaveAs() + } else { + h.saveBufToFile(h.Buf.Path) + } + return false } // SaveAs saves the buffer to disk with the given name func (h *BufHandler) SaveAs() bool { + InfoBar.Prompt("Filename: ", "", "Save", nil, func(resp string, canceled bool) { + if !canceled { + // the filename might or might not be quoted, so unquote first then join the strings. + args, err := shellwords.Split(resp) + filename := strings.Join(args, " ") + if err != nil { + InfoBar.Error("Error parsing arguments: ", err) + return + } + h.saveBufToFile(filename) + + } + }) return false } +// This function saves the buffer to `filename` and changes the buffer's path and name +// to `filename` if the save is successful +func (h *BufHandler) saveBufToFile(filename string) { + err := h.Buf.SaveAs(filename) + if err != nil { + if strings.HasSuffix(err.Error(), "permission denied") { + InfoBar.YNPrompt("Permission denied. Do you want to save this file using sudo? (y,n)", func(yes, canceled bool) { + if yes && !canceled { + err = h.Buf.SaveAsWithSudo(filename) + if err != nil { + InfoBar.Error(err) + } else { + h.Buf.Path = filename + h.Buf.SetName(filename) + InfoBar.Message("Saved " + filename) + } + } + }) + } else { + InfoBar.Error(err) + } + } else { + h.Buf.Path = filename + h.Buf.SetName(filename) + InfoBar.Message("Saved " + filename) + } +} + // Find opens a prompt and searches forward for the input func (h *BufHandler) Find() bool { InfoBar.Prompt("Find: ", "", "Find", func(resp string) { From 9336e095325bf85d74b182b57c450e9105716edd Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 16 Jan 2019 22:32:33 -0500 Subject: [PATCH 089/231] Revert "Use byte slice for insert" This reverts commit 0c844c2f5b83fda87711cbdefcad47f810d673b3. --- cmd/micro/action/actions.go | 10 +++++----- cmd/micro/action/bufhandler.go | 4 ++-- cmd/micro/action/command.go | 3 ++- cmd/micro/buffer/buffer.go | 16 +++++++++------- cmd/micro/buffer/eventhandler.go | 11 ++++++----- cmd/micro/buffer/save.go | 2 +- cmd/micro/info/history.go | 4 ++-- cmd/micro/info/infobuffer.go | 4 ++-- 8 files changed, 29 insertions(+), 25 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index dc7d32d7..782962c3 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -361,14 +361,14 @@ func (h *BufHandler) InsertNewline() bool { ws := util.GetLeadingWhitespace(h.Buf.LineBytes(h.Cursor.Y)) cx := h.Cursor.X - h.Buf.Insert(h.Cursor.Loc, []byte{'\n'}) + h.Buf.Insert(h.Cursor.Loc, "\n") // h.Cursor.Right() if h.Buf.Settings["autoindent"].(bool) { if cx < len(ws) { ws = ws[0:cx] } - h.Buf.Insert(h.Cursor.Loc, ws) + h.Buf.Insert(h.Cursor.Loc, string(ws)) // for i := 0; i < len(ws); i++ { // h.Cursor.Right() // } @@ -755,10 +755,10 @@ func (h *BufHandler) Cut() bool { // DuplicateLine duplicates the current line or selection func (h *BufHandler) DuplicateLine() bool { if h.Cursor.HasSelection() { - h.Buf.Insert(h.Cursor.CurSelection[1], h.Cursor.GetSelection()) + h.Buf.Insert(h.Cursor.CurSelection[1], string(h.Cursor.GetSelection())) } else { h.Cursor.End() - h.Buf.Insert(h.Cursor.Loc, append([]byte{'\n'}, h.Buf.LineBytes(h.Cursor.Y)...)) + h.Buf.Insert(h.Cursor.Loc, "\n"+string(h.Buf.LineBytes(h.Cursor.Y))) // h.Cursor.Right() } @@ -869,7 +869,7 @@ func (h *BufHandler) paste(clip string) { h.Cursor.ResetSelection() } - h.Buf.Insert(h.Cursor.Loc, []byte(clip)) + h.Buf.Insert(h.Cursor.Loc, clip) // h.Cursor.Loc = h.Cursor.Loc.Move(Count(clip), h.Buf) h.freshClip = false InfoBar.Message("Pasted clipboard") diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufhandler.go index ede74b5f..c072a522 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufhandler.go @@ -262,9 +262,9 @@ func (h *BufHandler) DoRuneInsert(r rune) { if h.isOverwriteMode { next := c.Loc next.X++ - h.Buf.Replace(c.Loc, next, []byte{byte(r)}) + h.Buf.Replace(c.Loc, next, string(r)) } else { - h.Buf.Insert(c.Loc, []byte{byte(r)}) + h.Buf.Insert(c.Loc, string(r)) } } } diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 6f85c70c..f0503e90 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -571,6 +571,7 @@ func (h *BufHandler) ReplaceCmd(args []string) { } replace := []byte(args[1]) + replaceStr := args[1] var regex *regexp.Regexp var err error @@ -619,7 +620,7 @@ func (h *BufHandler) ReplaceCmd(args []string) { InfoBar.YNPrompt("Perform replacement (y,n,esc)", func(yes, canceled bool) { if !canceled && yes { - h.Buf.Replace(locs[0], locs[1], replace) + h.Buf.Replace(locs[0], locs[1], replaceStr) searchLoc = locs[0] searchLoc.X += utf8.RuneCount(replace) h.Cursor.Loc = searchLoc diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index f6d91a89..d02a6191 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -240,7 +240,7 @@ func (b *Buffer) SetName(s string) { b.name = s } -func (b *Buffer) Insert(start Loc, text []byte) { +func (b *Buffer) Insert(start Loc, text string) { b.EventHandler.cursors = b.cursors b.EventHandler.active = b.curCursor b.EventHandler.Insert(start, text) @@ -419,11 +419,11 @@ func (b *Buffer) ClearMatches() { // IndentString returns this buffer's indent method (a tabstop or n spaces // depending on the settings) -func (b *Buffer) IndentString(tabsize int) []byte { +func (b *Buffer) IndentString(tabsize int) string { if b.Settings["tabstospaces"].(bool) { - return bytes.Repeat([]byte{' '}, tabsize) + return Spaces(tabsize) } - return []byte{'\t'} + return "\t" } // SetCursors resets this buffer's cursors to a new list @@ -529,18 +529,19 @@ func (b *Buffer) MoveLinesUp(start int, end int) { if start < 1 || start >= end || end > len(b.lines) { return } + l := string(b.LineBytes(start - 1)) if end == len(b.lines) { b.Insert( Loc{ utf8.RuneCount(b.lines[end-1].data), end - 1, }, - append([]byte{'\n'}, b.LineBytes(start-1)...), + "\n"+l, ) } else { b.Insert( Loc{0, end}, - append(b.LineBytes(start-1), '\n'), + l+"\n", ) } b.Remove( @@ -554,9 +555,10 @@ func (b *Buffer) MoveLinesDown(start int, end int) { if start < 0 || start >= end || end >= len(b.lines)-1 { return } + l := string(b.LineBytes(end)) b.Insert( Loc{0, start}, - append(b.LineBytes(end), '\n'), + l+"\n", ) end++ b.Remove( diff --git a/cmd/micro/buffer/eventhandler.go b/cmd/micro/buffer/eventhandler.go index 22a4806c..eeb7b812 100644 --- a/cmd/micro/buffer/eventhandler.go +++ b/cmd/micro/buffer/eventhandler.go @@ -88,16 +88,16 @@ func NewEventHandler(buf *SharedBuffer, cursors []*Cursor) *EventHandler { // the buffer equal to that string // This means that we can transform the buffer into any string and still preserve undo/redo // through insert and delete events -func (eh *EventHandler) ApplyDiff(str string) { +func (eh *EventHandler) ApplyDiff(new string) { differ := dmp.New() - diff := differ.DiffMain(string(eh.buf.Bytes()), str, false) + diff := differ.DiffMain(string(eh.buf.Bytes()), new, false) loc := eh.buf.Start() for _, d := range diff { if d.Type == dmp.DiffDelete { eh.Remove(loc, loc.MoveLA(utf8.RuneCountInString(d.Text), eh.buf.LineArray)) } else { if d.Type == dmp.DiffInsert { - eh.Insert(loc, []byte(d.Text)) + eh.Insert(loc, d.Text) } loc = loc.MoveLA(utf8.RuneCountInString(d.Text), eh.buf.LineArray) } @@ -105,7 +105,8 @@ func (eh *EventHandler) ApplyDiff(str string) { } // Insert creates an insert text event and executes it -func (eh *EventHandler) Insert(start Loc, text []byte) { +func (eh *EventHandler) Insert(start Loc, textStr string) { + text := []byte(textStr) e := &TextEvent{ C: *eh.cursors[eh.active], EventType: TextEventInsert, @@ -174,7 +175,7 @@ func (eh *EventHandler) MultipleReplace(deltas []Delta) { } // Replace deletes from start to end and replaces it with the given string -func (eh *EventHandler) Replace(start, end Loc, replace []byte) { +func (eh *EventHandler) Replace(start, end Loc, replace string) { eh.Remove(start, end) eh.Insert(start, replace) } diff --git a/cmd/micro/buffer/save.go b/cmd/micro/buffer/save.go index d8318499..4acf484e 100644 --- a/cmd/micro/buffer/save.go +++ b/cmd/micro/buffer/save.go @@ -67,7 +67,7 @@ func (b *Buffer) SaveAs(filename string) error { if b.Settings["eofnewline"].(bool) { end := b.End() if b.RuneAt(Loc{end.X - 1, end.Y}) != '\n' { - b.Insert(end, []byte{'\n'}) + b.Insert(end, "\n") } } diff --git a/cmd/micro/info/history.go b/cmd/micro/info/history.go index 84a81e53..18e6bbba 100644 --- a/cmd/micro/info/history.go +++ b/cmd/micro/info/history.go @@ -64,7 +64,7 @@ func (i *InfoBuf) SaveHistory() { func (i *InfoBuf) UpHistory(history []string) { if i.HistoryNum > 0 { i.HistoryNum-- - i.Replace(i.Start(), i.End(), []byte(history[i.HistoryNum])) + i.Replace(i.Start(), i.End(), history[i.HistoryNum]) i.Buffer.GetActiveCursor().GotoLoc(i.End()) } } @@ -73,7 +73,7 @@ func (i *InfoBuf) UpHistory(history []string) { func (i *InfoBuf) DownHistory(history []string) { if i.HistoryNum < len(history)-1 { i.HistoryNum++ - i.Replace(i.Start(), i.End(), []byte(history[i.HistoryNum])) + i.Replace(i.Start(), i.End(), history[i.HistoryNum]) i.Buffer.GetActiveCursor().GotoLoc(i.End()) } } diff --git a/cmd/micro/info/infobuffer.go b/cmd/micro/info/infobuffer.go index 26cada21..aebdd347 100644 --- a/cmd/micro/info/infobuffer.go +++ b/cmd/micro/info/infobuffer.go @@ -110,7 +110,7 @@ func (i *InfoBuf) Prompt(prompt string, msg string, ptype string, eventcb func(s i.HasGutter = false i.PromptCallback = donecb i.EventCallback = eventcb - i.Buffer.Insert(i.Buffer.Start(), []byte(msg)) + i.Buffer.Insert(i.Buffer.Start(), msg) } func (i *InfoBuf) YNPrompt(prompt string, donecb func(bool, bool)) { @@ -146,7 +146,7 @@ func (i *InfoBuf) DonePrompt(canceled bool) { } i.PromptCallback = nil } - i.Replace(i.Start(), i.End(), []byte{}) + i.Replace(i.Start(), i.End(), "") } if i.YNCallback != nil && hadYN { i.YNCallback(i.YNResp, canceled) From 8c687e8279b9c9576013174d738475dfdb8f519f Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 19 Jan 2019 15:37:59 -0500 Subject: [PATCH 090/231] Support raw pane --- cmd/micro/action/actions.go | 196 +++++++-------- cmd/micro/action/actions_other.go | 2 +- cmd/micro/action/actions_posix.go | 2 +- .../action/{bufhandler.go => bufpane.go} | 237 +++++++++--------- cmd/micro/action/command.go | 127 +++++----- .../action/{infohandler.go => infopane.go} | 63 +++-- cmd/micro/action/pane.go | 35 +-- cmd/micro/action/rawpane.go | 40 +++ cmd/micro/action/tab.go | 15 +- .../action/{termhandler.go => termpane.go} | 22 +- cmd/micro/buffer/buffer.go | 26 +- cmd/micro/buffer/save.go | 9 + 12 files changed, 419 insertions(+), 355 deletions(-) rename cmd/micro/action/{bufhandler.go => bufpane.go} (58%) rename cmd/micro/action/{infohandler.go => infopane.go} (68%) create mode 100644 cmd/micro/action/rawpane.go rename cmd/micro/action/{termhandler.go => termpane.go} (84%) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index 782962c3..d66991e4 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -18,7 +18,7 @@ import ( ) // ScrollUp is not an action -func (h *BufHandler) ScrollUp(n int) { +func (h *BufPane) ScrollUp(n int) { v := h.GetView() if v.StartLine >= n { v.StartLine -= n @@ -27,7 +27,7 @@ func (h *BufHandler) ScrollUp(n int) { } // ScrollDown is not an action -func (h *BufHandler) ScrollDown(n int) { +func (h *BufPane) ScrollDown(n int) { v := h.GetView() if v.StartLine <= h.Buf.LinesNum()-1-n { v.StartLine += n @@ -37,7 +37,7 @@ func (h *BufHandler) ScrollDown(n int) { // MousePress is the event that should happen when a normal click happens // This is almost always bound to left click -func (h *BufHandler) MousePress(e *tcell.EventMouse) bool { +func (h *BufPane) MousePress(e *tcell.EventMouse) bool { b := h.Buf mx, my := e.Position() mouseLoc := h.GetMouseLoc(buffer.Loc{mx, my}) @@ -93,19 +93,19 @@ func (h *BufHandler) MousePress(e *tcell.EventMouse) bool { } // ScrollUpAction scrolls the view up -func (h *BufHandler) ScrollUpAction() bool { +func (h *BufPane) ScrollUpAction() bool { h.ScrollUp(util.IntOpt(h.Buf.Settings["scrollspeed"])) return false } // ScrollDownAction scrolls the view up -func (h *BufHandler) ScrollDownAction() bool { +func (h *BufPane) ScrollDownAction() bool { h.ScrollDown(util.IntOpt(h.Buf.Settings["scrollspeed"])) return false } // Center centers the view on the cursor -func (h *BufHandler) Center() bool { +func (h *BufPane) Center() bool { v := h.GetView() v.StartLine = h.Cursor.Y - v.Height/2 if v.StartLine+v.Height > h.Buf.LinesNum() { @@ -119,49 +119,49 @@ func (h *BufHandler) Center() bool { } // CursorUp moves the cursor up -func (h *BufHandler) CursorUp() bool { +func (h *BufPane) CursorUp() bool { h.Cursor.Deselect(true) h.Cursor.Up() return true } // CursorDown moves the cursor down -func (h *BufHandler) CursorDown() bool { +func (h *BufPane) CursorDown() bool { h.Cursor.Deselect(true) h.Cursor.Down() return true } // CursorLeft moves the cursor left -func (h *BufHandler) CursorLeft() bool { +func (h *BufPane) CursorLeft() bool { h.Cursor.Deselect(true) h.Cursor.Left() return true } // CursorRight moves the cursor right -func (h *BufHandler) CursorRight() bool { +func (h *BufPane) CursorRight() bool { h.Cursor.Deselect(false) h.Cursor.Right() return true } // WordRight moves the cursor one word to the right -func (h *BufHandler) WordRight() bool { +func (h *BufPane) WordRight() bool { h.Cursor.Deselect(false) h.Cursor.WordRight() return true } // WordLeft moves the cursor one word to the left -func (h *BufHandler) WordLeft() bool { +func (h *BufPane) WordLeft() bool { h.Cursor.Deselect(true) h.Cursor.WordLeft() return true } // SelectUp selects up one line -func (h *BufHandler) SelectUp() bool { +func (h *BufPane) SelectUp() bool { if !h.Cursor.HasSelection() { h.Cursor.OrigSelection[0] = h.Cursor.Loc } @@ -171,7 +171,7 @@ func (h *BufHandler) SelectUp() bool { } // SelectDown selects down one line -func (h *BufHandler) SelectDown() bool { +func (h *BufPane) SelectDown() bool { if !h.Cursor.HasSelection() { h.Cursor.OrigSelection[0] = h.Cursor.Loc } @@ -181,7 +181,7 @@ func (h *BufHandler) SelectDown() bool { } // SelectLeft selects the character to the left of the cursor -func (h *BufHandler) SelectLeft() bool { +func (h *BufPane) SelectLeft() bool { loc := h.Cursor.Loc count := h.Buf.End() if loc.GreaterThan(count) { @@ -196,7 +196,7 @@ func (h *BufHandler) SelectLeft() bool { } // SelectRight selects the character to the right of the cursor -func (h *BufHandler) SelectRight() bool { +func (h *BufPane) SelectRight() bool { loc := h.Cursor.Loc count := h.Buf.End() if loc.GreaterThan(count) { @@ -211,7 +211,7 @@ func (h *BufHandler) SelectRight() bool { } // SelectWordRight selects the word to the right of the cursor -func (h *BufHandler) SelectWordRight() bool { +func (h *BufPane) SelectWordRight() bool { if !h.Cursor.HasSelection() { h.Cursor.OrigSelection[0] = h.Cursor.Loc } @@ -221,7 +221,7 @@ func (h *BufHandler) SelectWordRight() bool { } // SelectWordLeft selects the word to the left of the cursor -func (h *BufHandler) SelectWordLeft() bool { +func (h *BufPane) SelectWordLeft() bool { if !h.Cursor.HasSelection() { h.Cursor.OrigSelection[0] = h.Cursor.Loc } @@ -231,7 +231,7 @@ func (h *BufHandler) SelectWordLeft() bool { } // StartOfLine moves the cursor to the start of the line -func (h *BufHandler) StartOfLine() bool { +func (h *BufPane) StartOfLine() bool { h.Cursor.Deselect(true) if h.Cursor.X != 0 { h.Cursor.Start() @@ -242,20 +242,20 @@ func (h *BufHandler) StartOfLine() bool { } // EndOfLine moves the cursor to the end of the line -func (h *BufHandler) EndOfLine() bool { +func (h *BufPane) EndOfLine() bool { h.Cursor.Deselect(true) h.Cursor.End() return true } // SelectLine selects the entire current line -func (h *BufHandler) SelectLine() bool { +func (h *BufPane) SelectLine() bool { h.Cursor.SelectLine() return true } // SelectToStartOfLine selects to the start of the current line -func (h *BufHandler) SelectToStartOfLine() bool { +func (h *BufPane) SelectToStartOfLine() bool { if !h.Cursor.HasSelection() { h.Cursor.OrigSelection[0] = h.Cursor.Loc } @@ -265,7 +265,7 @@ func (h *BufHandler) SelectToStartOfLine() bool { } // SelectToEndOfLine selects to the end of the current line -func (h *BufHandler) SelectToEndOfLine() bool { +func (h *BufPane) SelectToEndOfLine() bool { if !h.Cursor.HasSelection() { h.Cursor.OrigSelection[0] = h.Cursor.Loc } @@ -275,7 +275,7 @@ func (h *BufHandler) SelectToEndOfLine() bool { } // ParagraphPrevious moves the cursor to the previous empty line, or beginning of the buffer if there's none -func (h *BufHandler) ParagraphPrevious() bool { +func (h *BufPane) ParagraphPrevious() bool { var line int for line = h.Cursor.Y; line > 0; line-- { if len(h.Buf.LineBytes(line)) == 0 && line != h.Cursor.Y { @@ -292,7 +292,7 @@ func (h *BufHandler) ParagraphPrevious() bool { } // ParagraphNext moves the cursor to the next empty line, or end of the buffer if there's none -func (h *BufHandler) ParagraphNext() bool { +func (h *BufPane) ParagraphNext() bool { var line int for line = h.Cursor.Y; line < h.Buf.LinesNum(); line++ { if len(h.Buf.LineBytes(line)) == 0 && line != h.Cursor.Y { @@ -310,13 +310,13 @@ func (h *BufHandler) ParagraphNext() bool { // Retab changes all tabs to spaces or all spaces to tabs depending // on the user's settings -func (h *BufHandler) Retab() bool { +func (h *BufPane) Retab() bool { h.Buf.Retab() return true } // CursorStart moves the cursor to the start of the buffer -func (h *BufHandler) CursorStart() bool { +func (h *BufPane) CursorStart() bool { h.Cursor.Deselect(true) h.Cursor.X = 0 h.Cursor.Y = 0 @@ -324,7 +324,7 @@ func (h *BufHandler) CursorStart() bool { } // CursorEnd moves the cursor to the end of the buffer -func (h *BufHandler) CursorEnd() bool { +func (h *BufPane) CursorEnd() bool { h.Cursor.Deselect(true) h.Cursor.Loc = h.Buf.End() h.Cursor.StoreVisualX() @@ -332,7 +332,7 @@ func (h *BufHandler) CursorEnd() bool { } // SelectToStart selects the text from the cursor to the start of the buffer -func (h *BufHandler) SelectToStart() bool { +func (h *BufPane) SelectToStart() bool { if !h.Cursor.HasSelection() { h.Cursor.OrigSelection[0] = h.Cursor.Loc } @@ -342,7 +342,7 @@ func (h *BufHandler) SelectToStart() bool { } // SelectToEnd selects the text from the cursor to the end of the buffer -func (h *BufHandler) SelectToEnd() bool { +func (h *BufPane) SelectToEnd() bool { if !h.Cursor.HasSelection() { h.Cursor.OrigSelection[0] = h.Cursor.Loc } @@ -352,7 +352,7 @@ func (h *BufHandler) SelectToEnd() bool { } // InsertNewline inserts a newline plus possible some whitespace if autoindent is on -func (h *BufHandler) InsertNewline() bool { +func (h *BufPane) InsertNewline() bool { // Insert a newline if h.Cursor.HasSelection() { h.Cursor.DeleteSelection() @@ -384,7 +384,7 @@ func (h *BufHandler) InsertNewline() bool { } // Backspace deletes the previous character -func (h *BufHandler) Backspace() bool { +func (h *BufPane) Backspace() bool { if h.Cursor.HasSelection() { h.Cursor.DeleteSelection() h.Cursor.ResetSelection() @@ -413,7 +413,7 @@ func (h *BufHandler) Backspace() bool { } // DeleteWordRight deletes the word to the right of the cursor -func (h *BufHandler) DeleteWordRight() bool { +func (h *BufPane) DeleteWordRight() bool { h.SelectWordRight() if h.Cursor.HasSelection() { h.Cursor.DeleteSelection() @@ -423,7 +423,7 @@ func (h *BufHandler) DeleteWordRight() bool { } // DeleteWordLeft deletes the word to the left of the cursor -func (h *BufHandler) DeleteWordLeft() bool { +func (h *BufPane) DeleteWordLeft() bool { h.SelectWordLeft() if h.Cursor.HasSelection() { h.Cursor.DeleteSelection() @@ -433,7 +433,7 @@ func (h *BufHandler) DeleteWordLeft() bool { } // Delete deletes the next character -func (h *BufHandler) Delete() bool { +func (h *BufPane) Delete() bool { if h.Cursor.HasSelection() { h.Cursor.DeleteSelection() h.Cursor.ResetSelection() @@ -447,7 +447,7 @@ func (h *BufHandler) Delete() bool { } // IndentSelection indents the current selection -func (h *BufHandler) IndentSelection() bool { +func (h *BufPane) IndentSelection() bool { if h.Cursor.HasSelection() { start := h.Cursor.CurSelection[0] end := h.Cursor.CurSelection[1] @@ -479,7 +479,7 @@ func (h *BufHandler) IndentSelection() bool { } // OutdentLine moves the current line back one indentation -func (h *BufHandler) OutdentLine() bool { +func (h *BufPane) OutdentLine() bool { if h.Cursor.HasSelection() { return false } @@ -495,7 +495,7 @@ func (h *BufHandler) OutdentLine() bool { } // OutdentSelection takes the current selection and moves it back one indent level -func (h *BufHandler) OutdentSelection() bool { +func (h *BufPane) OutdentSelection() bool { if h.Cursor.HasSelection() { start := h.Cursor.CurSelection[0] end := h.Cursor.CurSelection[1] @@ -523,7 +523,7 @@ func (h *BufHandler) OutdentSelection() bool { } // InsertTab inserts a tab or spaces -func (h *BufHandler) InsertTab() bool { +func (h *BufPane) InsertTab() bool { indent := h.Buf.IndentString(util.IntOpt(h.Buf.Settings["tabsize"])) tabBytes := len(indent) bytesUntilIndent := tabBytes - (h.Cursor.GetVisualX() % tabBytes) @@ -532,7 +532,7 @@ func (h *BufHandler) InsertTab() bool { } // SaveAll saves all open buffers -func (h *BufHandler) SaveAll() bool { +func (h *BufPane) SaveAll() bool { for _, b := range buffer.OpenBuffers { b.Save() } @@ -540,7 +540,7 @@ func (h *BufHandler) SaveAll() bool { } // Save the buffer to disk -func (h *BufHandler) Save() bool { +func (h *BufPane) Save() bool { // If this is an empty buffer, ask for a filename if h.Buf.Path == "" { h.SaveAs() @@ -552,7 +552,7 @@ func (h *BufHandler) Save() bool { } // SaveAs saves the buffer to disk with the given name -func (h *BufHandler) SaveAs() bool { +func (h *BufPane) SaveAs() bool { InfoBar.Prompt("Filename: ", "", "Save", nil, func(resp string, canceled bool) { if !canceled { // the filename might or might not be quoted, so unquote first then join the strings. @@ -571,7 +571,7 @@ func (h *BufHandler) SaveAs() bool { // This function saves the buffer to `filename` and changes the buffer's path and name // to `filename` if the save is successful -func (h *BufHandler) saveBufToFile(filename string) { +func (h *BufPane) saveBufToFile(filename string) { err := h.Buf.SaveAs(filename) if err != nil { if strings.HasSuffix(err.Error(), "permission denied") { @@ -598,7 +598,7 @@ func (h *BufHandler) saveBufToFile(filename string) { } // Find opens a prompt and searches forward for the input -func (h *BufHandler) Find() bool { +func (h *BufPane) Find() bool { InfoBar.Prompt("Find: ", "", "Find", func(resp string) { // Event callback match, found, _ := h.Buf.FindNext(resp, h.Buf.Start(), h.Buf.End(), h.Cursor.Loc, true, true) @@ -637,7 +637,7 @@ func (h *BufHandler) Find() bool { } // FindNext searches forwards for the last used search term -func (h *BufHandler) FindNext() bool { +func (h *BufPane) FindNext() bool { // If the cursor is at the start of a selection and we search we want // to search from the end of the selection in the case that // the selection is a search result in which case we wouldn't move at @@ -663,7 +663,7 @@ func (h *BufHandler) FindNext() bool { } // FindPrevious searches backwards for the last used search term -func (h *BufHandler) FindPrevious() bool { +func (h *BufPane) FindPrevious() bool { // If the cursor is at the end of a selection and we search we want // to search from the beginning of the selection in the case that // the selection is a search result in which case we wouldn't move at @@ -689,21 +689,21 @@ func (h *BufHandler) FindPrevious() bool { } // Undo undoes the last action -func (h *BufHandler) Undo() bool { +func (h *BufPane) Undo() bool { h.Buf.Undo() InfoBar.Message("Undid action") return true } // Redo redoes the last action -func (h *BufHandler) Redo() bool { +func (h *BufPane) Redo() bool { h.Buf.Redo() InfoBar.Message("Redid action") return true } // Copy the selection to the system clipboard -func (h *BufHandler) Copy() bool { +func (h *BufPane) Copy() bool { if h.Cursor.HasSelection() { h.Cursor.CopySelection("clipboard") h.freshClip = true @@ -713,7 +713,7 @@ func (h *BufHandler) Copy() bool { } // CutLine cuts the current line to the clipboard -func (h *BufHandler) CutLine() bool { +func (h *BufPane) CutLine() bool { h.Cursor.SelectLine() if !h.Cursor.HasSelection() { return false @@ -738,7 +738,7 @@ func (h *BufHandler) CutLine() bool { } // Cut the selection to the system clipboard -func (h *BufHandler) Cut() bool { +func (h *BufPane) Cut() bool { if h.Cursor.HasSelection() { h.Cursor.CopySelection("clipboard") h.Cursor.DeleteSelection() @@ -753,7 +753,7 @@ func (h *BufHandler) Cut() bool { } // DuplicateLine duplicates the current line or selection -func (h *BufHandler) DuplicateLine() bool { +func (h *BufPane) DuplicateLine() bool { if h.Cursor.HasSelection() { h.Buf.Insert(h.Cursor.CurSelection[1], string(h.Cursor.GetSelection())) } else { @@ -767,7 +767,7 @@ func (h *BufHandler) DuplicateLine() bool { } // DeleteLine deletes the current line -func (h *BufHandler) DeleteLine() bool { +func (h *BufPane) DeleteLine() bool { h.Cursor.SelectLine() if !h.Cursor.HasSelection() { return false @@ -779,7 +779,7 @@ func (h *BufHandler) DeleteLine() bool { } // MoveLinesUp moves up the current line or selected lines if any -func (h *BufHandler) MoveLinesUp() bool { +func (h *BufPane) MoveLinesUp() bool { if h.Cursor.HasSelection() { if h.Cursor.CurSelection[0].Y == 0 { InfoBar.Message("Can not move further up") @@ -811,7 +811,7 @@ func (h *BufHandler) MoveLinesUp() bool { } // MoveLinesDown moves down the current line or selected lines if any -func (h *BufHandler) MoveLinesDown() bool { +func (h *BufPane) MoveLinesDown() bool { if h.Cursor.HasSelection() { if h.Cursor.CurSelection[1].Y >= h.Buf.LinesNum() { InfoBar.Message("Can not move further down") @@ -843,20 +843,20 @@ func (h *BufHandler) MoveLinesDown() bool { // Paste whatever is in the system clipboard into the buffer // Delete and paste if the user has a selection -func (h *BufHandler) Paste() bool { +func (h *BufPane) Paste() bool { clip, _ := clipboard.ReadAll("clipboard") h.paste(clip) return true } // PastePrimary pastes from the primary clipboard (only use on linux) -func (h *BufHandler) PastePrimary() bool { +func (h *BufPane) PastePrimary() bool { clip, _ := clipboard.ReadAll("primary") h.paste(clip) return true } -func (h *BufHandler) paste(clip string) { +func (h *BufPane) paste(clip string) { if h.Buf.Settings["smartpaste"].(bool) { if h.Cursor.X > 0 && len(util.GetLeadingWhitespace([]byte(strings.TrimLeft(clip, "\r\n")))) == 0 { leadingWS := util.GetLeadingWhitespace(h.Buf.LineBytes(h.Cursor.Y)) @@ -877,7 +877,7 @@ func (h *BufHandler) paste(clip string) { // JumpToMatchingBrace moves the cursor to the matching brace if it is // currently on a brace -func (h *BufHandler) JumpToMatchingBrace() bool { +func (h *BufPane) JumpToMatchingBrace() bool { for _, bp := range buffer.BracePairs { r := h.Cursor.RuneUnder(h.Cursor.X) if r == bp[0] || r == bp[1] { @@ -890,7 +890,7 @@ func (h *BufHandler) JumpToMatchingBrace() bool { } // SelectAll selects the entire buffer -func (h *BufHandler) SelectAll() bool { +func (h *BufPane) SelectAll() bool { h.Cursor.SetSelectionStart(h.Buf.Start()) h.Cursor.SetSelectionEnd(h.Buf.End()) // Put the cursor at the beginning @@ -900,7 +900,7 @@ func (h *BufHandler) SelectAll() bool { } // OpenFile opens a new file in the buffer -func (h *BufHandler) OpenFile() bool { +func (h *BufPane) OpenFile() bool { InfoBar.Prompt("> ", "open ", "Open", nil, func(resp string, canceled bool) { if !canceled { h.HandleCommand(resp) @@ -910,7 +910,7 @@ func (h *BufHandler) OpenFile() bool { } // Start moves the viewport to the start of the buffer -func (h *BufHandler) Start() bool { +func (h *BufPane) Start() bool { v := h.GetView() v.StartLine = 0 h.SetView(v) @@ -918,7 +918,7 @@ func (h *BufHandler) Start() bool { } // End moves the viewport to the end of the buffer -func (h *BufHandler) End() bool { +func (h *BufPane) End() bool { // TODO: softwrap problems? v := h.GetView() if v.Height > h.Buf.LinesNum() { @@ -931,7 +931,7 @@ func (h *BufHandler) End() bool { } // PageUp scrolls the view up a page -func (h *BufHandler) PageUp() bool { +func (h *BufPane) PageUp() bool { v := h.GetView() if v.StartLine > v.Height { h.ScrollUp(v.Height) @@ -943,7 +943,7 @@ func (h *BufHandler) PageUp() bool { } // PageDown scrolls the view down a page -func (h *BufHandler) PageDown() bool { +func (h *BufPane) PageDown() bool { v := h.GetView() if h.Buf.LinesNum()-(v.StartLine+v.Height) > v.Height { h.ScrollDown(v.Height) @@ -954,7 +954,7 @@ func (h *BufHandler) PageDown() bool { } // SelectPageUp selects up one page -func (h *BufHandler) SelectPageUp() bool { +func (h *BufPane) SelectPageUp() bool { if !h.Cursor.HasSelection() { h.Cursor.OrigSelection[0] = h.Cursor.Loc } @@ -964,7 +964,7 @@ func (h *BufHandler) SelectPageUp() bool { } // SelectPageDown selects down one page -func (h *BufHandler) SelectPageDown() bool { +func (h *BufPane) SelectPageDown() bool { if !h.Cursor.HasSelection() { h.Cursor.OrigSelection[0] = h.Cursor.Loc } @@ -974,7 +974,7 @@ func (h *BufHandler) SelectPageDown() bool { } // CursorPageUp places the cursor a page up -func (h *BufHandler) CursorPageUp() bool { +func (h *BufPane) CursorPageUp() bool { h.Cursor.Deselect(true) if h.Cursor.HasSelection() { @@ -987,7 +987,7 @@ func (h *BufHandler) CursorPageUp() bool { } // CursorPageDown places the cursor a page up -func (h *BufHandler) CursorPageDown() bool { +func (h *BufPane) CursorPageDown() bool { h.Cursor.Deselect(false) if h.Cursor.HasSelection() { @@ -1000,7 +1000,7 @@ func (h *BufHandler) CursorPageDown() bool { } // HalfPageUp scrolls the view up half a page -func (h *BufHandler) HalfPageUp() bool { +func (h *BufPane) HalfPageUp() bool { v := h.GetView() if v.StartLine > v.Height/2 { h.ScrollUp(v.Height / 2) @@ -1012,7 +1012,7 @@ func (h *BufHandler) HalfPageUp() bool { } // HalfPageDown scrolls the view down half a page -func (h *BufHandler) HalfPageDown() bool { +func (h *BufPane) HalfPageDown() bool { v := h.GetView() if h.Buf.LinesNum()-(v.StartLine+v.Height) > v.Height/2 { h.ScrollDown(v.Height / 2) @@ -1026,7 +1026,7 @@ func (h *BufHandler) HalfPageDown() bool { } // ToggleRuler turns line numbers off and on -func (h *BufHandler) ToggleRuler() bool { +func (h *BufPane) ToggleRuler() bool { if !h.Buf.Settings["ruler"].(bool) { h.Buf.Settings["ruler"] = true InfoBar.Message("Enabled ruler") @@ -1038,18 +1038,18 @@ func (h *BufHandler) ToggleRuler() bool { } // JumpLine jumps to a line and moves the view accordingly. -func (h *BufHandler) JumpLine() bool { +func (h *BufPane) JumpLine() bool { return false } // ClearStatus clears the messenger bar -func (h *BufHandler) ClearStatus() bool { +func (h *BufPane) ClearStatus() bool { InfoBar.Message("") return false } // ToggleHelp toggles the help screen -func (h *BufHandler) ToggleHelp() bool { +func (h *BufPane) ToggleHelp() bool { if h.Buf.Type == buffer.BTHelp { h.Quit() } else { @@ -1059,14 +1059,14 @@ func (h *BufHandler) ToggleHelp() bool { } // ToggleKeyMenu toggles the keymenu option and resizes all tabs -func (h *BufHandler) ToggleKeyMenu() bool { +func (h *BufPane) ToggleKeyMenu() bool { config.GlobalSettings["keymenu"] = !config.GetGlobalOption("keymenu").(bool) Tabs.Resize() return false } // ShellMode opens a terminal to run a shell command -func (h *BufHandler) ShellMode() bool { +func (h *BufPane) ShellMode() bool { InfoBar.Prompt("$ ", "", "Shell", nil, func(resp string, canceled bool) { if !canceled { // The true here is for openTerm to make the command interactive @@ -1078,7 +1078,7 @@ func (h *BufHandler) ShellMode() bool { } // CommandMode lets the user enter a command -func (h *BufHandler) CommandMode() bool { +func (h *BufPane) CommandMode() bool { InfoBar.Prompt("> ", "", "Command", nil, func(resp string, canceled bool) { if !canceled { h.HandleCommand(resp) @@ -1088,18 +1088,18 @@ func (h *BufHandler) CommandMode() bool { } // ToggleOverwriteMode lets the user toggle the text overwrite mode -func (h *BufHandler) ToggleOverwriteMode() bool { +func (h *BufPane) ToggleOverwriteMode() bool { h.isOverwriteMode = !h.isOverwriteMode return false } // Escape leaves current mode -func (h *BufHandler) Escape() bool { +func (h *BufPane) Escape() bool { return false } // Quit this will close the current tab or view that is open -func (h *BufHandler) Quit() bool { +func (h *BufPane) Quit() bool { quit := func() { h.Buf.Close() if len(MainTab().Panes) > 1 { @@ -1128,12 +1128,12 @@ func (h *BufHandler) Quit() bool { } // QuitAll quits the whole editor; all splits and tabs -func (h *BufHandler) QuitAll() bool { +func (h *BufPane) QuitAll() bool { return false } // AddTab adds a new tab with an empty buffer -func (h *BufHandler) AddTab() bool { +func (h *BufPane) AddTab() bool { width, height := screen.Screen.Size() iOffset := config.GetInfoBarOffset() b := buffer.NewBufferFromString("", "", buffer.BTDefault) @@ -1145,7 +1145,7 @@ func (h *BufHandler) AddTab() bool { } // PreviousTab switches to the previous tab in the tab list -func (h *BufHandler) PreviousTab() bool { +func (h *BufPane) PreviousTab() bool { a := Tabs.Active() Tabs.SetActive(util.Clamp(a-1, 0, len(Tabs.List)-1)) @@ -1153,28 +1153,28 @@ func (h *BufHandler) PreviousTab() bool { } // NextTab switches to the next tab in the tab list -func (h *BufHandler) NextTab() bool { +func (h *BufPane) NextTab() bool { a := Tabs.Active() Tabs.SetActive(util.Clamp(a+1, 0, len(Tabs.List)-1)) return false } // VSplitAction opens an empty vertical split -func (h *BufHandler) VSplitAction() bool { +func (h *BufPane) VSplitAction() bool { h.VSplitBuf(buffer.NewBufferFromString("", "", buffer.BTDefault)) return false } // HSplitAction opens an empty horizontal split -func (h *BufHandler) HSplitAction() bool { +func (h *BufPane) HSplitAction() bool { h.HSplitBuf(buffer.NewBufferFromString("", "", buffer.BTDefault)) return false } // Unsplit closes all splits in the current tab except the active one -func (h *BufHandler) Unsplit() bool { +func (h *BufPane) Unsplit() bool { n := MainTab().GetNode(h.splitID) n.Unsplit() @@ -1185,7 +1185,7 @@ func (h *BufHandler) Unsplit() bool { } // NextSplit changes the view to the next split -func (h *BufHandler) NextSplit() bool { +func (h *BufPane) NextSplit() bool { a := MainTab().active if a < len(MainTab().Panes)-1 { a++ @@ -1199,7 +1199,7 @@ func (h *BufHandler) NextSplit() bool { } // PreviousSplit changes the view to the previous split -func (h *BufHandler) PreviousSplit() bool { +func (h *BufPane) PreviousSplit() bool { a := MainTab().active if a > 0 { a-- @@ -1215,17 +1215,17 @@ var curMacro []interface{} var recordingMacro bool // ToggleMacro toggles recording of a macro -func (h *BufHandler) ToggleMacro() bool { +func (h *BufPane) ToggleMacro() bool { return true } // PlayMacro plays back the most recently recorded macro -func (h *BufHandler) PlayMacro() bool { +func (h *BufPane) PlayMacro() bool { return true } // SpawnMultiCursor creates a new multiple cursor at the next occurrence of the current selection or current word -func (h *BufHandler) SpawnMultiCursor() bool { +func (h *BufPane) SpawnMultiCursor() bool { spawner := h.Buf.GetCursor(h.Buf.NumCursors() - 1) if !spawner.HasSelection() { spawner.SelectWord() @@ -1264,7 +1264,7 @@ func (h *BufHandler) SpawnMultiCursor() bool { } // SpawnMultiCursorSelect adds a cursor at the beginning of each line of a selection -func (h *BufHandler) SpawnMultiCursorSelect() bool { +func (h *BufPane) SpawnMultiCursorSelect() bool { // Avoid cases where multiple cursors already exist, that would create problems if h.Buf.NumCursors() > 1 { return false @@ -1298,7 +1298,7 @@ func (h *BufHandler) SpawnMultiCursorSelect() bool { } // MouseMultiCursor is a mouse action which puts a new cursor at the mouse position -func (h *BufHandler) MouseMultiCursor(e *tcell.EventMouse) bool { +func (h *BufPane) MouseMultiCursor(e *tcell.EventMouse) bool { b := h.Buf mx, my := e.Position() mouseLoc := h.GetMouseLoc(buffer.Loc{X: mx, Y: my}) @@ -1310,7 +1310,7 @@ func (h *BufHandler) MouseMultiCursor(e *tcell.EventMouse) bool { } // SkipMultiCursor moves the current multiple cursor to the next available position -func (h *BufHandler) SkipMultiCursor() bool { +func (h *BufPane) SkipMultiCursor() bool { lastC := h.Buf.GetCursor(h.Buf.NumCursors() - 1) sel := lastC.GetSelection() searchStart := lastC.CurSelection[1] @@ -1341,7 +1341,7 @@ func (h *BufHandler) SkipMultiCursor() bool { } // RemoveMultiCursor removes the latest multiple cursor -func (h *BufHandler) RemoveMultiCursor() bool { +func (h *BufPane) RemoveMultiCursor() bool { if h.Buf.NumCursors() > 1 { h.Buf.RemoveCursor(h.Buf.NumCursors() - 1) h.Buf.SetCurCursor(h.Buf.NumCursors() - 1) @@ -1353,7 +1353,7 @@ func (h *BufHandler) RemoveMultiCursor() bool { } // RemoveAllMultiCursors removes all cursors except the base cursor -func (h *BufHandler) RemoveAllMultiCursors() bool { +func (h *BufPane) RemoveAllMultiCursors() bool { h.Buf.ClearCursors() h.multiWord = false return true diff --git a/cmd/micro/action/actions_other.go b/cmd/micro/action/actions_other.go index 52e94376..6d62581b 100644 --- a/cmd/micro/action/actions_other.go +++ b/cmd/micro/action/actions_other.go @@ -2,7 +2,7 @@ package action -func (*BufHandler) Suspend() bool { +func (*BufPane) Suspend() bool { InfoBar.Error("Suspend is only supported on BSD/Linux") return false } diff --git a/cmd/micro/action/actions_posix.go b/cmd/micro/action/actions_posix.go index c6ac2b0d..98609bbe 100644 --- a/cmd/micro/action/actions_posix.go +++ b/cmd/micro/action/actions_posix.go @@ -11,7 +11,7 @@ import ( // Suspend sends micro to the background. This is the same as pressing CtrlZ in most unix programs. // This only works on linux and has no default binding. // This code was adapted from the suspend code in nsf/godit -func (*BufHandler) Suspend() bool { +func (*BufPane) Suspend() bool { screenb := screen.TempFini() // suspend the process diff --git a/cmd/micro/action/bufhandler.go b/cmd/micro/action/bufpane.go similarity index 58% rename from cmd/micro/action/bufhandler.go rename to cmd/micro/action/bufpane.go index c072a522..71baf6b5 100644 --- a/cmd/micro/action/bufhandler.go +++ b/cmd/micro/action/bufpane.go @@ -9,8 +9,8 @@ import ( "github.com/zyedidia/tcell" ) -type BufKeyAction func(*BufHandler) bool -type BufMouseAction func(*BufHandler, *tcell.EventMouse) bool +type BufKeyAction func(*BufPane) bool +type BufMouseAction func(*BufPane, *tcell.EventMouse) bool var BufKeyBindings map[Event]BufKeyAction var BufKeyStrings map[Event]string @@ -47,12 +47,12 @@ func BufMapMouse(k MouseEvent, action string) { } } -// The BufHandler connects the buffer and the window +// The BufPane connects the buffer and the window // It provides a cursor (or multiple) and defines a set of actions // that can be taken on the buffer // The ActionHandler can access the window for necessary info about // visual positions for mouse clicks and scrolling -type BufHandler struct { +type BufPane struct { display.BWindow Buf *buffer.Buffer @@ -98,8 +98,8 @@ type BufHandler struct { splitID uint64 } -func NewBufHandler(buf *buffer.Buffer, win display.BWindow) *BufHandler { - h := new(BufHandler) +func NewBufPane(buf *buffer.Buffer, win display.BWindow) *BufPane { + h := new(BufPane) h.Buf = buf h.BWindow = win @@ -109,7 +109,12 @@ func NewBufHandler(buf *buffer.Buffer, win display.BWindow) *BufHandler { return h } -func (h *BufHandler) OpenBuffer(b *buffer.Buffer) { +func NewBufPaneFromBuf(buf *buffer.Buffer) *BufPane { + w := display.NewBufWindow(0, 0, 0, 0, buf) + return NewBufPane(buf, w) +} + +func (h *BufPane) OpenBuffer(b *buffer.Buffer) { h.Buf.Close() h.Buf = b h.BWindow.SetBuffer(b) @@ -126,17 +131,21 @@ func (h *BufHandler) OpenBuffer(b *buffer.Buffer) { h.lastClickTime = time.Time{} } -func (h *BufHandler) ID() uint64 { +func (h *BufPane) ID() uint64 { return h.splitID } -func (h *BufHandler) Name() string { +func (h *BufPane) SetID(i uint64) { + h.splitID = i +} + +func (h *BufPane) Name() string { return h.Buf.GetName() } // HandleEvent executes the tcell event properly // TODO: multiple actions bound to one key -func (h *BufHandler) HandleEvent(event tcell.Event) { +func (h *BufPane) HandleEvent(event tcell.Event) { switch e := event.(type) { case *tcell.EventRaw: re := RawEvent{ @@ -204,7 +213,7 @@ func (h *BufHandler) HandleEvent(event tcell.Event) { // DoKeyEvent executes a key event by finding the action it is bound // to and executing it (possibly multiple times for multiple cursors) -func (h *BufHandler) DoKeyEvent(e Event) bool { +func (h *BufPane) DoKeyEvent(e Event) bool { if action, ok := BufKeyBindings[e]; ok { estr := BufKeyStrings[e] for _, s := range MultiActions { @@ -228,14 +237,14 @@ func (h *BufHandler) DoKeyEvent(e Event) bool { return false } -func (h *BufHandler) HasKeyEvent(e Event) bool { +func (h *BufPane) HasKeyEvent(e Event) bool { _, ok := BufKeyBindings[e] return ok } // DoMouseEvent executes a mouse event by finding the action it is bound // to and executing it -func (h *BufHandler) DoMouseEvent(e MouseEvent, te *tcell.EventMouse) bool { +func (h *BufPane) DoMouseEvent(e MouseEvent, te *tcell.EventMouse) bool { if action, ok := BufMouseBindings[e]; ok { if action(h, te) { h.Relocate() @@ -249,7 +258,7 @@ func (h *BufHandler) DoMouseEvent(e MouseEvent, te *tcell.EventMouse) bool { // DoRuneInsert inserts a given rune into the current buffer // (possibly multiple times for multiple cursors) -func (h *BufHandler) DoRuneInsert(r rune) { +func (h *BufPane) DoRuneInsert(r rune) { cursors := h.Buf.GetCursors() for _, c := range cursors { // Insert a character @@ -269,127 +278,127 @@ func (h *BufHandler) DoRuneInsert(r rune) { } } -func (h *BufHandler) VSplitBuf(buf *buffer.Buffer) { - e := NewBufEditPane(0, 0, 0, 0, buf) +func (h *BufPane) VSplitBuf(buf *buffer.Buffer) { + e := NewBufPaneFromBuf(buf) e.splitID = MainTab().GetNode(h.splitID).VSplit(h.Buf.Settings["splitright"].(bool)) MainTab().Panes = append(MainTab().Panes, e) MainTab().Resize() MainTab().SetActive(len(MainTab().Panes) - 1) } -func (h *BufHandler) HSplitBuf(buf *buffer.Buffer) { - e := NewBufEditPane(0, 0, 0, 0, buf) +func (h *BufPane) HSplitBuf(buf *buffer.Buffer) { + e := NewBufPaneFromBuf(buf) e.splitID = MainTab().GetNode(h.splitID).HSplit(h.Buf.Settings["splitbottom"].(bool)) MainTab().Panes = append(MainTab().Panes, e) MainTab().Resize() MainTab().SetActive(len(MainTab().Panes) - 1) } -func (h *BufHandler) Close() { +func (h *BufPane) Close() { h.Buf.Close() } // BufKeyActions contains the list of all possible key actions the bufhandler could execute var BufKeyActions = map[string]BufKeyAction{ - "CursorUp": (*BufHandler).CursorUp, - "CursorDown": (*BufHandler).CursorDown, - "CursorPageUp": (*BufHandler).CursorPageUp, - "CursorPageDown": (*BufHandler).CursorPageDown, - "CursorLeft": (*BufHandler).CursorLeft, - "CursorRight": (*BufHandler).CursorRight, - "CursorStart": (*BufHandler).CursorStart, - "CursorEnd": (*BufHandler).CursorEnd, - "SelectToStart": (*BufHandler).SelectToStart, - "SelectToEnd": (*BufHandler).SelectToEnd, - "SelectUp": (*BufHandler).SelectUp, - "SelectDown": (*BufHandler).SelectDown, - "SelectLeft": (*BufHandler).SelectLeft, - "SelectRight": (*BufHandler).SelectRight, - "WordRight": (*BufHandler).WordRight, - "WordLeft": (*BufHandler).WordLeft, - "SelectWordRight": (*BufHandler).SelectWordRight, - "SelectWordLeft": (*BufHandler).SelectWordLeft, - "DeleteWordRight": (*BufHandler).DeleteWordRight, - "DeleteWordLeft": (*BufHandler).DeleteWordLeft, - "SelectLine": (*BufHandler).SelectLine, - "SelectToStartOfLine": (*BufHandler).SelectToStartOfLine, - "SelectToEndOfLine": (*BufHandler).SelectToEndOfLine, - "ParagraphPrevious": (*BufHandler).ParagraphPrevious, - "ParagraphNext": (*BufHandler).ParagraphNext, - "InsertNewline": (*BufHandler).InsertNewline, - "Backspace": (*BufHandler).Backspace, - "Delete": (*BufHandler).Delete, - "InsertTab": (*BufHandler).InsertTab, - "Save": (*BufHandler).Save, - "SaveAll": (*BufHandler).SaveAll, - "SaveAs": (*BufHandler).SaveAs, - "Find": (*BufHandler).Find, - "FindNext": (*BufHandler).FindNext, - "FindPrevious": (*BufHandler).FindPrevious, - "Center": (*BufHandler).Center, - "Undo": (*BufHandler).Undo, - "Redo": (*BufHandler).Redo, - "Copy": (*BufHandler).Copy, - "Cut": (*BufHandler).Cut, - "CutLine": (*BufHandler).CutLine, - "DuplicateLine": (*BufHandler).DuplicateLine, - "DeleteLine": (*BufHandler).DeleteLine, - "MoveLinesUp": (*BufHandler).MoveLinesUp, - "MoveLinesDown": (*BufHandler).MoveLinesDown, - "IndentSelection": (*BufHandler).IndentSelection, - "OutdentSelection": (*BufHandler).OutdentSelection, - "OutdentLine": (*BufHandler).OutdentLine, - "Paste": (*BufHandler).Paste, - "PastePrimary": (*BufHandler).PastePrimary, - "SelectAll": (*BufHandler).SelectAll, - "OpenFile": (*BufHandler).OpenFile, - "Start": (*BufHandler).Start, - "End": (*BufHandler).End, - "PageUp": (*BufHandler).PageUp, - "PageDown": (*BufHandler).PageDown, - "SelectPageUp": (*BufHandler).SelectPageUp, - "SelectPageDown": (*BufHandler).SelectPageDown, - "HalfPageUp": (*BufHandler).HalfPageUp, - "HalfPageDown": (*BufHandler).HalfPageDown, - "StartOfLine": (*BufHandler).StartOfLine, - "EndOfLine": (*BufHandler).EndOfLine, - "ToggleHelp": (*BufHandler).ToggleHelp, - "ToggleKeyMenu": (*BufHandler).ToggleKeyMenu, - "ToggleRuler": (*BufHandler).ToggleRuler, - "JumpLine": (*BufHandler).JumpLine, - "ClearStatus": (*BufHandler).ClearStatus, - "ShellMode": (*BufHandler).ShellMode, - "CommandMode": (*BufHandler).CommandMode, - "ToggleOverwriteMode": (*BufHandler).ToggleOverwriteMode, - "Escape": (*BufHandler).Escape, - "Quit": (*BufHandler).Quit, - "QuitAll": (*BufHandler).QuitAll, - "AddTab": (*BufHandler).AddTab, - "PreviousTab": (*BufHandler).PreviousTab, - "NextTab": (*BufHandler).NextTab, - "NextSplit": (*BufHandler).NextSplit, - "PreviousSplit": (*BufHandler).PreviousSplit, - "Unsplit": (*BufHandler).Unsplit, - "VSplit": (*BufHandler).VSplitAction, - "HSplit": (*BufHandler).HSplitAction, - "ToggleMacro": (*BufHandler).ToggleMacro, - "PlayMacro": (*BufHandler).PlayMacro, - "Suspend": (*BufHandler).Suspend, - "ScrollUp": (*BufHandler).ScrollUpAction, - "ScrollDown": (*BufHandler).ScrollDownAction, - "SpawnMultiCursor": (*BufHandler).SpawnMultiCursor, - "SpawnMultiCursorSelect": (*BufHandler).SpawnMultiCursorSelect, - "RemoveMultiCursor": (*BufHandler).RemoveMultiCursor, - "RemoveAllMultiCursors": (*BufHandler).RemoveAllMultiCursors, - "SkipMultiCursor": (*BufHandler).SkipMultiCursor, - "JumpToMatchingBrace": (*BufHandler).JumpToMatchingBrace, + "CursorUp": (*BufPane).CursorUp, + "CursorDown": (*BufPane).CursorDown, + "CursorPageUp": (*BufPane).CursorPageUp, + "CursorPageDown": (*BufPane).CursorPageDown, + "CursorLeft": (*BufPane).CursorLeft, + "CursorRight": (*BufPane).CursorRight, + "CursorStart": (*BufPane).CursorStart, + "CursorEnd": (*BufPane).CursorEnd, + "SelectToStart": (*BufPane).SelectToStart, + "SelectToEnd": (*BufPane).SelectToEnd, + "SelectUp": (*BufPane).SelectUp, + "SelectDown": (*BufPane).SelectDown, + "SelectLeft": (*BufPane).SelectLeft, + "SelectRight": (*BufPane).SelectRight, + "WordRight": (*BufPane).WordRight, + "WordLeft": (*BufPane).WordLeft, + "SelectWordRight": (*BufPane).SelectWordRight, + "SelectWordLeft": (*BufPane).SelectWordLeft, + "DeleteWordRight": (*BufPane).DeleteWordRight, + "DeleteWordLeft": (*BufPane).DeleteWordLeft, + "SelectLine": (*BufPane).SelectLine, + "SelectToStartOfLine": (*BufPane).SelectToStartOfLine, + "SelectToEndOfLine": (*BufPane).SelectToEndOfLine, + "ParagraphPrevious": (*BufPane).ParagraphPrevious, + "ParagraphNext": (*BufPane).ParagraphNext, + "InsertNewline": (*BufPane).InsertNewline, + "Backspace": (*BufPane).Backspace, + "Delete": (*BufPane).Delete, + "InsertTab": (*BufPane).InsertTab, + "Save": (*BufPane).Save, + "SaveAll": (*BufPane).SaveAll, + "SaveAs": (*BufPane).SaveAs, + "Find": (*BufPane).Find, + "FindNext": (*BufPane).FindNext, + "FindPrevious": (*BufPane).FindPrevious, + "Center": (*BufPane).Center, + "Undo": (*BufPane).Undo, + "Redo": (*BufPane).Redo, + "Copy": (*BufPane).Copy, + "Cut": (*BufPane).Cut, + "CutLine": (*BufPane).CutLine, + "DuplicateLine": (*BufPane).DuplicateLine, + "DeleteLine": (*BufPane).DeleteLine, + "MoveLinesUp": (*BufPane).MoveLinesUp, + "MoveLinesDown": (*BufPane).MoveLinesDown, + "IndentSelection": (*BufPane).IndentSelection, + "OutdentSelection": (*BufPane).OutdentSelection, + "OutdentLine": (*BufPane).OutdentLine, + "Paste": (*BufPane).Paste, + "PastePrimary": (*BufPane).PastePrimary, + "SelectAll": (*BufPane).SelectAll, + "OpenFile": (*BufPane).OpenFile, + "Start": (*BufPane).Start, + "End": (*BufPane).End, + "PageUp": (*BufPane).PageUp, + "PageDown": (*BufPane).PageDown, + "SelectPageUp": (*BufPane).SelectPageUp, + "SelectPageDown": (*BufPane).SelectPageDown, + "HalfPageUp": (*BufPane).HalfPageUp, + "HalfPageDown": (*BufPane).HalfPageDown, + "StartOfLine": (*BufPane).StartOfLine, + "EndOfLine": (*BufPane).EndOfLine, + "ToggleHelp": (*BufPane).ToggleHelp, + "ToggleKeyMenu": (*BufPane).ToggleKeyMenu, + "ToggleRuler": (*BufPane).ToggleRuler, + "JumpLine": (*BufPane).JumpLine, + "ClearStatus": (*BufPane).ClearStatus, + "ShellMode": (*BufPane).ShellMode, + "CommandMode": (*BufPane).CommandMode, + "ToggleOverwriteMode": (*BufPane).ToggleOverwriteMode, + "Escape": (*BufPane).Escape, + "Quit": (*BufPane).Quit, + "QuitAll": (*BufPane).QuitAll, + "AddTab": (*BufPane).AddTab, + "PreviousTab": (*BufPane).PreviousTab, + "NextTab": (*BufPane).NextTab, + "NextSplit": (*BufPane).NextSplit, + "PreviousSplit": (*BufPane).PreviousSplit, + "Unsplit": (*BufPane).Unsplit, + "VSplit": (*BufPane).VSplitAction, + "HSplit": (*BufPane).HSplitAction, + "ToggleMacro": (*BufPane).ToggleMacro, + "PlayMacro": (*BufPane).PlayMacro, + "Suspend": (*BufPane).Suspend, + "ScrollUp": (*BufPane).ScrollUpAction, + "ScrollDown": (*BufPane).ScrollDownAction, + "SpawnMultiCursor": (*BufPane).SpawnMultiCursor, + "SpawnMultiCursorSelect": (*BufPane).SpawnMultiCursorSelect, + "RemoveMultiCursor": (*BufPane).RemoveMultiCursor, + "RemoveAllMultiCursors": (*BufPane).RemoveAllMultiCursors, + "SkipMultiCursor": (*BufPane).SkipMultiCursor, + "JumpToMatchingBrace": (*BufPane).JumpToMatchingBrace, // This was changed to InsertNewline but I don't want to break backwards compatibility - "InsertEnter": (*BufHandler).InsertNewline, + "InsertEnter": (*BufPane).InsertNewline, } // BufMouseActions contains the list of all possible mouse actions the bufhandler could execute var BufMouseActions = map[string]BufMouseAction{ - "MousePress": (*BufHandler).MousePress, - "MouseMultiCursor": (*BufHandler).MouseMultiCursor, + "MousePress": (*BufPane).MousePress, + "MouseMultiCursor": (*BufPane).MouseMultiCursor, } // MultiActions is a list of actions that should be executed multiple diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index f0503e90..9330b2de 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -20,7 +20,7 @@ import ( // A Command contains an action (a function to call) as well as information about how to autocomplete the command type Command struct { - action func(*BufHandler, []string) + action func(*BufPane, []string) completions []Completion } @@ -32,34 +32,34 @@ type StrCommand struct { var commands map[string]Command -var commandActions = map[string]func(*BufHandler, []string){ - "Set": (*BufHandler).SetCmd, - "SetLocal": (*BufHandler).SetLocalCmd, - "Show": (*BufHandler).ShowCmd, - "ShowKey": (*BufHandler).ShowKeyCmd, - "Run": (*BufHandler).RunCmd, - "Bind": (*BufHandler).BindCmd, - "Unbind": (*BufHandler).UnbindCmd, - "Quit": (*BufHandler).QuitCmd, - "Save": (*BufHandler).SaveCmd, - "Replace": (*BufHandler).ReplaceCmd, - "ReplaceAll": (*BufHandler).ReplaceAllCmd, - "VSplit": (*BufHandler).VSplitCmd, - "HSplit": (*BufHandler).HSplitCmd, - "Tab": (*BufHandler).NewTabCmd, - "Help": (*BufHandler).HelpCmd, - "Eval": (*BufHandler).EvalCmd, - "ToggleLog": (*BufHandler).ToggleLogCmd, - "Plugin": (*BufHandler).PluginCmd, - "Reload": (*BufHandler).ReloadCmd, - "Cd": (*BufHandler).CdCmd, - "Pwd": (*BufHandler).PwdCmd, - "Open": (*BufHandler).OpenCmd, - "TabSwitch": (*BufHandler).TabSwitchCmd, - "Term": (*BufHandler).TermCmd, - "MemUsage": (*BufHandler).MemUsageCmd, - "Retab": (*BufHandler).RetabCmd, - "Raw": (*BufHandler).RawCmd, +var commandActions = map[string]func(*BufPane, []string){ + "Set": (*BufPane).SetCmd, + "SetLocal": (*BufPane).SetLocalCmd, + "Show": (*BufPane).ShowCmd, + "ShowKey": (*BufPane).ShowKeyCmd, + "Run": (*BufPane).RunCmd, + "Bind": (*BufPane).BindCmd, + "Unbind": (*BufPane).UnbindCmd, + "Quit": (*BufPane).QuitCmd, + "Save": (*BufPane).SaveCmd, + "Replace": (*BufPane).ReplaceCmd, + "ReplaceAll": (*BufPane).ReplaceAllCmd, + "VSplit": (*BufPane).VSplitCmd, + "HSplit": (*BufPane).HSplitCmd, + "Tab": (*BufPane).NewTabCmd, + "Help": (*BufPane).HelpCmd, + "Eval": (*BufPane).EvalCmd, + "ToggleLog": (*BufPane).ToggleLogCmd, + "Plugin": (*BufPane).PluginCmd, + "Reload": (*BufPane).ReloadCmd, + "Cd": (*BufPane).CdCmd, + "Pwd": (*BufPane).PwdCmd, + "Open": (*BufPane).OpenCmd, + "TabSwitch": (*BufPane).TabSwitchCmd, + "Term": (*BufPane).TermCmd, + "MemUsage": (*BufPane).MemUsageCmd, + "Retab": (*BufPane).RetabCmd, + "Raw": (*BufPane).RawCmd, } // InitCommands initializes the default commands @@ -126,7 +126,7 @@ func DefaultCommands() map[string]StrCommand { // the given string and executes the command when the user presses // enter func CommandEditAction(prompt string) BufKeyAction { - return func(h *BufHandler) bool { + return func(h *BufPane) bool { InfoBar.Prompt("> ", prompt, "Command", nil, func(resp string, canceled bool) { if !canceled { MainTab().CurPane().HandleCommand(resp) @@ -139,29 +139,34 @@ func CommandEditAction(prompt string) BufKeyAction { // CommandAction returns a bindable function which executes the // given command func CommandAction(cmd string) BufKeyAction { - return func(h *BufHandler) bool { + return func(h *BufPane) bool { MainTab().CurPane().HandleCommand(cmd) return false } } // PluginCmd installs, removes, updates, lists, or searches for given plugins -func (h *BufHandler) PluginCmd(args []string) { +func (h *BufPane) PluginCmd(args []string) { } // RetabCmd changes all spaces to tabs or all tabs to spaces // depending on the user's settings -func (h *BufHandler) RetabCmd(args []string) { +func (h *BufPane) RetabCmd(args []string) { h.Buf.Retab() } // RawCmd opens a new raw view which displays the escape sequences micro // is receiving in real-time -func (h *BufHandler) RawCmd(args []string) { +func (h *BufPane) RawCmd(args []string) { + width, height := screen.Screen.Size() + iOffset := config.GetInfoBarOffset() + tp := NewTabFromPane(0, 0, width, height-iOffset, NewRawPane()) + Tabs.AddTab(tp) + Tabs.SetActive(len(Tabs.List) - 1) } // TabSwitchCmd switches to a given tab either by name or by number -func (h *BufHandler) TabSwitchCmd(args []string) { +func (h *BufPane) TabSwitchCmd(args []string) { if len(args) > 0 { num, err := strconv.Atoi(args[0]) if err != nil { @@ -189,7 +194,7 @@ func (h *BufHandler) TabSwitchCmd(args []string) { } // CdCmd changes the current working directory -func (h *BufHandler) CdCmd(args []string) { +func (h *BufPane) CdCmd(args []string) { if len(args) > 0 { path, err := util.ReplaceHome(args[0]) if err != nil { @@ -220,12 +225,12 @@ func (h *BufHandler) CdCmd(args []string) { // Note that Go commonly reserves more memory from the OS than is currently in-use/required // Additionally, even if Go returns memory to the OS, the OS does not always claim it because // there may be plenty of memory to spare -func (h *BufHandler) MemUsageCmd(args []string) { +func (h *BufPane) MemUsageCmd(args []string) { InfoBar.Message(util.GetMemStats()) } // PwdCmd prints the current working directory -func (h *BufHandler) PwdCmd(args []string) { +func (h *BufPane) PwdCmd(args []string) { wd, err := os.Getwd() if err != nil { InfoBar.Message(err.Error()) @@ -235,7 +240,7 @@ func (h *BufHandler) PwdCmd(args []string) { } // OpenCmd opens a new buffer with a given filename -func (h *BufHandler) OpenCmd(args []string) { +func (h *BufPane) OpenCmd(args []string) { if len(args) > 0 { filename := args[0] // the filename might or might not be quoted, so unquote first then join the strings. @@ -272,14 +277,14 @@ func (h *BufHandler) OpenCmd(args []string) { } // ToggleLogCmd toggles the log view -func (h *BufHandler) ToggleLogCmd(args []string) { +func (h *BufPane) ToggleLogCmd(args []string) { } // ReloadCmd reloads all files (syntax files, colorschemes...) -func (h *BufHandler) ReloadCmd(args []string) { +func (h *BufPane) ReloadCmd(args []string) { } -func (h *BufHandler) openHelp(page string) error { +func (h *BufPane) openHelp(page string) error { if data, err := config.FindRuntimeFile(config.RTHelp, page).Data(); err != nil { return errors.New(fmt.Sprint("Unable to load help text", page, "\n", err)) } else { @@ -296,7 +301,7 @@ func (h *BufHandler) openHelp(page string) error { } // HelpCmd tries to open the given help page in a horizontal split -func (h *BufHandler) HelpCmd(args []string) { +func (h *BufPane) HelpCmd(args []string) { if len(args) < 1 { // Open the default help if the user just typed "> help" h.openHelp("help") @@ -314,7 +319,7 @@ func (h *BufHandler) HelpCmd(args []string) { // VSplitCmd opens a vertical split with file given in the first argument // If no file is given, it opens an empty buffer in a new split -func (h *BufHandler) VSplitCmd(args []string) { +func (h *BufPane) VSplitCmd(args []string) { if len(args) == 0 { // Open an empty vertical split h.VSplitAction() @@ -332,7 +337,7 @@ func (h *BufHandler) VSplitCmd(args []string) { // HSplitCmd opens a horizontal split with file given in the first argument // If no file is given, it opens an empty buffer in a new split -func (h *BufHandler) HSplitCmd(args []string) { +func (h *BufPane) HSplitCmd(args []string) { if len(args) == 0 { // Open an empty horizontal split h.HSplitAction() @@ -349,11 +354,11 @@ func (h *BufHandler) HSplitCmd(args []string) { } // EvalCmd evaluates a lua expression -func (h *BufHandler) EvalCmd(args []string) { +func (h *BufPane) EvalCmd(args []string) { } // NewTabCmd opens the given file in a new tab -func (h *BufHandler) NewTabCmd(args []string) { +func (h *BufPane) NewTabCmd(args []string) { width, height := screen.Screen.Size() iOffset := config.GetInfoBarOffset() if len(args) > 0 { @@ -417,7 +422,7 @@ func SetGlobalOption(option, value string) error { } // SetCmd sets an option -func (h *BufHandler) SetCmd(args []string) { +func (h *BufPane) SetCmd(args []string) { if len(args) < 2 { InfoBar.Error("Not enough arguments") return @@ -438,7 +443,7 @@ func (h *BufHandler) SetCmd(args []string) { } // SetLocalCmd sets an option local to the buffer -func (h *BufHandler) SetLocalCmd(args []string) { +func (h *BufPane) SetLocalCmd(args []string) { if len(args) < 2 { InfoBar.Error("Not enough arguments") return @@ -455,7 +460,7 @@ func (h *BufHandler) SetLocalCmd(args []string) { } // ShowCmd shows the value of the given option -func (h *BufHandler) ShowCmd(args []string) { +func (h *BufPane) ShowCmd(args []string) { if len(args) < 1 { InfoBar.Error("Please provide an option to show") return @@ -477,7 +482,7 @@ func (h *BufHandler) ShowCmd(args []string) { } // ShowKeyCmd displays the action that a key is bound to -func (h *BufHandler) ShowKeyCmd(args []string) { +func (h *BufPane) ShowKeyCmd(args []string) { if len(args) < 1 { InfoBar.Error("Please provide a key to show") return @@ -491,7 +496,7 @@ func (h *BufHandler) ShowKeyCmd(args []string) { } // BindCmd creates a new keybinding -func (h *BufHandler) BindCmd(args []string) { +func (h *BufPane) BindCmd(args []string) { if len(args) < 2 { InfoBar.Error("Not enough arguments") return @@ -504,7 +509,7 @@ func (h *BufHandler) BindCmd(args []string) { } // UnbindCmd binds a key to its default action -func (h *BufHandler) UnbindCmd(args []string) { +func (h *BufPane) UnbindCmd(args []string) { if len(args) < 1 { InfoBar.Error("Not enough arguements") return @@ -517,7 +522,7 @@ func (h *BufHandler) UnbindCmd(args []string) { } // RunCmd runs a shell command in the background -func (h *BufHandler) RunCmd(args []string) { +func (h *BufPane) RunCmd(args []string) { runf, err := shell.RunBackgroundShell(shellwords.Join(args...)) if err != nil { InfoBar.Error(err) @@ -530,17 +535,17 @@ func (h *BufHandler) RunCmd(args []string) { } // QuitCmd closes the main view -func (h *BufHandler) QuitCmd(args []string) { +func (h *BufPane) QuitCmd(args []string) { h.Quit() } // SaveCmd saves the buffer in the main view -func (h *BufHandler) SaveCmd(args []string) { +func (h *BufPane) SaveCmd(args []string) { h.Save() } // ReplaceCmd runs search and replace -func (h *BufHandler) ReplaceCmd(args []string) { +func (h *BufPane) ReplaceCmd(args []string) { if len(args) < 2 || len(args) > 4 { // We need to find both a search and replace expression InfoBar.Error("Invalid replace statement: " + strings.Join(args, " ")) @@ -654,11 +659,11 @@ func (h *BufHandler) ReplaceCmd(args []string) { } // ReplaceAllCmd replaces search term all at once -func (h *BufHandler) ReplaceAllCmd(args []string) { +func (h *BufPane) ReplaceAllCmd(args []string) { } // TermCmd opens a terminal in the current view -func (h *BufHandler) TermCmd(args []string) { +func (h *BufPane) TermCmd(args []string) { ps := MainTab().Panes if len(args) == 0 { @@ -685,7 +690,7 @@ func (h *BufHandler) TermCmd(args []string) { } v := h.GetView() - MainTab().Panes[i] = NewTermHandler(v.X, v.Y, v.Width, v.Height, t, id) + MainTab().Panes[i] = NewTermPane(v.X, v.Y, v.Width, v.Height, t, id) MainTab().SetActive(i) } @@ -716,7 +721,7 @@ func (h *BufHandler) TermCmd(args []string) { } // HandleCommand handles input from the user -func (h *BufHandler) HandleCommand(input string) { +func (h *BufPane) HandleCommand(input string) { args, err := shellwords.Split(input) if err != nil { InfoBar.Error("Error parsing args ", err) diff --git a/cmd/micro/action/infohandler.go b/cmd/micro/action/infopane.go similarity index 68% rename from cmd/micro/action/infohandler.go rename to cmd/micro/action/infopane.go index 5c432295..d71371c3 100644 --- a/cmd/micro/action/infohandler.go +++ b/cmd/micro/action/infopane.go @@ -6,22 +6,33 @@ import ( "github.com/zyedidia/tcell" ) -type InfoKeyAction func(*InfoHandler) +type InfoKeyAction func(*InfoPane) -type InfoHandler struct { - *BufHandler +type InfoPane struct { + *BufPane *info.InfoBuf } -func NewInfoHandler(ib *info.InfoBuf, w display.BWindow) *InfoHandler { - ih := new(InfoHandler) - ih.InfoBuf = ib - ih.BufHandler = NewBufHandler(ib.Buffer, w) +func NewInfoPane(ib *info.InfoBuf, w display.BWindow) *InfoPane { + ip := new(InfoPane) + ip.InfoBuf = ib + ip.BufPane = NewBufPane(ib.Buffer, w) - return ih + return ip } -func (h *InfoHandler) HandleEvent(event tcell.Event) { +func NewInfoBar() *InfoPane { + ib := info.NewBuffer() + w := display.NewInfoWindow(ib) + return NewInfoPane(ib, w) +} + +func (h *InfoPane) Close() { + h.InfoBuf.Close() + h.BufPane.Close() +} + +func (h *InfoPane) HandleEvent(event tcell.Event) { switch e := event.(type) { case *tcell.EventKey: ke := KeyEvent{ @@ -54,11 +65,11 @@ func (h *InfoHandler) HandleEvent(event tcell.Event) { } } case *tcell.EventMouse: - h.BufHandler.HandleEvent(event) + h.BufPane.HandleEvent(event) } } -func (h *InfoHandler) DoKeyEvent(e KeyEvent) bool { +func (h *InfoPane) DoKeyEvent(e KeyEvent) bool { done := false if action, ok := BufKeyBindings[e]; ok { estr := BufKeyStrings[e] @@ -75,7 +86,7 @@ func (h *InfoHandler) DoKeyEvent(e KeyEvent) bool { } } if !done { - done = action(h.BufHandler) + done = action(h.BufPane) } } return done @@ -133,35 +144,35 @@ var InfoNones = []string{ // InfoOverrides is the list of actions which have been overriden // by the infohandler var InfoOverrides = map[string]InfoKeyAction{ - "CursorUp": (*InfoHandler).CursorUp, - "CursorDown": (*InfoHandler).CursorDown, - "InsertNewline": (*InfoHandler).InsertNewline, - "InsertTab": (*InfoHandler).InsertTab, - "Escape": (*InfoHandler).Escape, - "Quit": (*InfoHandler).Quit, - "QuitAll": (*InfoHandler).QuitAll, + "CursorUp": (*InfoPane).CursorUp, + "CursorDown": (*InfoPane).CursorDown, + "InsertNewline": (*InfoPane).InsertNewline, + "InsertTab": (*InfoPane).InsertTab, + "Escape": (*InfoPane).Escape, + "Quit": (*InfoPane).Quit, + "QuitAll": (*InfoPane).QuitAll, } -func (h *InfoHandler) CursorUp() { +func (h *InfoPane) CursorUp() { h.UpHistory(h.History[h.PromptType]) } -func (h *InfoHandler) CursorDown() { +func (h *InfoPane) CursorDown() { h.DownHistory(h.History[h.PromptType]) } -func (h *InfoHandler) InsertTab() { +func (h *InfoPane) InsertTab() { // TODO: autocomplete } -func (h *InfoHandler) InsertNewline() { +func (h *InfoPane) InsertNewline() { if !h.HasYN { h.DonePrompt(false) } } -func (h *InfoHandler) Quit() { +func (h *InfoPane) Quit() { h.DonePrompt(true) } -func (h *InfoHandler) QuitAll() { +func (h *InfoPane) QuitAll() { h.DonePrompt(true) } -func (h *InfoHandler) Escape() { +func (h *InfoPane) Escape() { h.DonePrompt(true) } diff --git a/cmd/micro/action/pane.go b/cmd/micro/action/pane.go index 8da64e5e..0a4f2f6e 100644 --- a/cmd/micro/action/pane.go +++ b/cmd/micro/action/pane.go @@ -1,47 +1,14 @@ package action import ( - "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/display" - "github.com/zyedidia/micro/cmd/micro/info" ) type Pane interface { Handler display.Window ID() uint64 + SetID(i uint64) Name() string Close() } - -type EditPane struct { - display.BWindow - *BufHandler -} - -type InfoPane struct { - display.BWindow - *InfoHandler - *info.InfoBuf -} - -func NewBufEditPane(x, y, width, height int, b *buffer.Buffer) *EditPane { - e := new(EditPane) - // TODO: can probably replace editpane with bufhandler entirely - w := display.NewBufWindow(x, y, width, height, b) - e.BWindow = w - e.BufHandler = NewBufHandler(b, w) - - return e -} - -func NewInfoBar() *InfoPane { - e := new(InfoPane) - ib := info.NewBuffer() - w := display.NewInfoWindow(ib) - e.BWindow = w - e.InfoHandler = NewInfoHandler(ib, w) - e.InfoBuf = ib - - return e -} diff --git a/cmd/micro/action/rawpane.go b/cmd/micro/action/rawpane.go new file mode 100644 index 00000000..113c938c --- /dev/null +++ b/cmd/micro/action/rawpane.go @@ -0,0 +1,40 @@ +package action + +import ( + "fmt" + "reflect" + + "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/cmd/micro/display" + "github.com/zyedidia/tcell" +) + +type RawPane struct { + *BufPane +} + +func NewRawPaneFromWin(b *buffer.Buffer, win display.BWindow) *RawPane { + rh := new(RawPane) + rh.BufPane = NewBufPane(b, win) + + return rh +} + +func NewRawPane() *RawPane { + b := buffer.NewBufferFromString("", "", buffer.BTRaw) + w := display.NewBufWindow(0, 0, 0, 0, b) + return NewRawPaneFromWin(b, w) +} + +func (h *RawPane) HandleEvent(event tcell.Event) { + switch e := event.(type) { + case *tcell.EventKey: + if e.Key() == tcell.KeyCtrlQ { + h.Quit() + } + } + + h.Buf.Insert(h.Cursor.Loc, reflect.TypeOf(event).String()[7:]) + h.Buf.Insert(h.Cursor.Loc, fmt.Sprintf(": %q\n", event.EscSeq())) + h.Relocate() +} diff --git a/cmd/micro/action/tab.go b/cmd/micro/action/tab.go index 6b8773e4..2c6ce8ac 100644 --- a/cmd/micro/action/tab.go +++ b/cmd/micro/action/tab.go @@ -160,13 +160,24 @@ func NewTabFromBuffer(x, y, width, height int, b *buffer.Buffer) *Tab { t.Node = views.NewRoot(x, y, width, height) t.UIWindow = display.NewUIWindow(t.Node) - e := NewBufEditPane(x, y, width, height, b) - e.splitID = t.ID() + e := NewBufPaneFromBuf(b) + e.SetID(t.ID()) t.Panes = append(t.Panes, e) return t } +func NewTabFromPane(x, y, width, height int, pane Pane) *Tab { + t := new(Tab) + t.Node = views.NewRoot(x, y, width, height) + t.UIWindow = display.NewUIWindow(t.Node) + + pane.SetID(t.ID()) + + t.Panes = append(t.Panes, pane) + return t +} + // HandleEvent takes a tcell event and usually dispatches it to the current // active pane. However if the event is a resize or a mouse event where the user // is interacting with the UI (resizing splits) then the event is consumed here diff --git a/cmd/micro/action/termhandler.go b/cmd/micro/action/termpane.go similarity index 84% rename from cmd/micro/action/termhandler.go rename to cmd/micro/action/termpane.go index 388377ab..2340b3ae 100644 --- a/cmd/micro/action/termhandler.go +++ b/cmd/micro/action/termpane.go @@ -11,7 +11,7 @@ import ( "github.com/zyedidia/terminal" ) -type TermHandler struct { +type TermPane struct { *shell.Terminal display.Window @@ -19,8 +19,8 @@ type TermHandler struct { id uint64 } -func NewTermHandler(x, y, w, h int, t *shell.Terminal, id uint64) *TermHandler { - th := new(TermHandler) +func NewTermPane(x, y, w, h int, t *shell.Terminal, id uint64) *TermPane { + th := new(TermPane) th.Terminal = t th.id = id th.mouseReleased = true @@ -28,13 +28,17 @@ func NewTermHandler(x, y, w, h int, t *shell.Terminal, id uint64) *TermHandler { return th } -func (t *TermHandler) ID() uint64 { +func (t *TermPane) ID() uint64 { return t.id } -func (t *TermHandler) Close() {} +func (t *TermPane) SetID(i uint64) { + t.id = i +} -func (t *TermHandler) Quit() { +func (t *TermPane) Close() {} + +func (t *TermPane) Quit() { t.Close() if len(MainTab().Panes) > 1 { t.Unsplit() @@ -47,7 +51,7 @@ func (t *TermHandler) Quit() { } } -func (t *TermHandler) Unsplit() { +func (t *TermPane) Unsplit() { n := MainTab().GetNode(t.id) n.Unsplit() @@ -60,7 +64,7 @@ func (t *TermHandler) Unsplit() { // If the event is a mouse event and the program running in the emulator // does not have mouse support, the emulator will support selections and // copy-paste -func (t *TermHandler) HandleEvent(event tcell.Event) { +func (t *TermPane) HandleEvent(event tcell.Event) { if e, ok := event.(*tcell.EventKey); ok { if t.Status == shell.TTDone { switch e.Key() { @@ -107,6 +111,6 @@ func (t *TermHandler) HandleEvent(event tcell.Event) { } } -func (t *TermHandler) HandleCommand(input string) { +func (t *TermPane) HandleCommand(input string) { InfoBar.Error("Commands are unsupported in term for now") } diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index d02a6191..3c8672dc 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -23,8 +23,8 @@ var OpenBuffers []*Buffer // The BufType defines what kind of buffer this is type BufType struct { Kind int - Readonly bool // The file cannot be edited - Scratch bool // The file cannot be saved + Readonly bool // The buffer cannot be edited + Scratch bool // The buffer cannot be saved Syntax bool // Syntax highlighting is enabled } @@ -33,7 +33,7 @@ var ( BTHelp = BufType{1, true, true, true} BTLog = BufType{2, true, true, false} BTScratch = BufType{3, false, true, false} - BTRaw = BufType{4, true, true, false} + BTRaw = BufType{4, false, true, false} BTInfo = BufType{5, false, true, false} ErrFileTooLarge = errors.New("File is too large to hash") @@ -241,15 +241,19 @@ func (b *Buffer) SetName(s string) { } func (b *Buffer) Insert(start Loc, text string) { - b.EventHandler.cursors = b.cursors - b.EventHandler.active = b.curCursor - b.EventHandler.Insert(start, text) + if !b.Type.Readonly { + b.EventHandler.cursors = b.cursors + b.EventHandler.active = b.curCursor + b.EventHandler.Insert(start, text) + } } func (b *Buffer) Remove(start, end Loc) { - b.EventHandler.cursors = b.cursors - b.EventHandler.active = b.curCursor - b.EventHandler.Remove(start, end) + if !b.Type.Readonly { + b.EventHandler.cursors = b.cursors + b.EventHandler.active = b.curCursor + b.EventHandler.Remove(start, end) + } } // FileType returns the buffer's filetype @@ -296,6 +300,10 @@ func (b *Buffer) RuneAt(loc Loc) rune { // Modified returns if this buffer has been modified since // being opened func (b *Buffer) Modified() bool { + if b.Type.Scratch { + return false + } + if b.Settings["fastdirty"].(bool) { return b.isModified } diff --git a/cmd/micro/buffer/save.go b/cmd/micro/buffer/save.go index 4acf484e..1d62818e 100644 --- a/cmd/micro/buffer/save.go +++ b/cmd/micro/buffer/save.go @@ -3,6 +3,7 @@ package buffer import ( "bufio" "bytes" + "errors" "io" "os" "os/exec" @@ -50,6 +51,10 @@ func (b *Buffer) Save() error { // SaveAs saves the buffer to a specified path (filename), creating the file if it does not exist func (b *Buffer) SaveAs(filename string) error { + if b.Type.Scratch { + return errors.New("Cannot save scratch buffer") + } + // TODO: rmtrailingws and updaterules b.UpdateRules() // if b.Settings["rmtrailingws"].(bool) { @@ -158,6 +163,10 @@ func (b *Buffer) SaveWithSudo() error { // SaveAsWithSudo is the same as SaveAs except it uses a neat trick // with tee to use sudo so the user doesn't have to reopen micro with sudo func (b *Buffer) SaveAsWithSudo(filename string) error { + if b.Type.Scratch { + return errors.New("Cannot save scratch buffer") + } + b.UpdateRules() b.Path = filename absPath, _ := filepath.Abs(filename) From 4bdf7880914edb70e080dc51dcf6f12de931e5e3 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 19 Jan 2019 15:53:02 -0500 Subject: [PATCH 091/231] Add replace all alias --- cmd/micro/action/command.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 9330b2de..7fbacbc0 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -660,6 +660,8 @@ func (h *BufPane) ReplaceCmd(args []string) { // ReplaceAllCmd replaces search term all at once func (h *BufPane) ReplaceAllCmd(args []string) { + // aliased to Replace command + h.ReplaceCmd(append(args, "-a")) } // TermCmd opens a terminal in the current view From ab37e6ad6ca499d97fe81ea33e1ae29bba2fa270 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 19 Jan 2019 17:14:51 -0500 Subject: [PATCH 092/231] Add support for binding command and command-edit --- cmd/micro/action/bufpane.go | 20 ++++++++++++-------- cmd/micro/action/command.go | 8 ++++++-- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/cmd/micro/action/bufpane.go b/cmd/micro/action/bufpane.go index 71baf6b5..9aac7b09 100644 --- a/cmd/micro/action/bufpane.go +++ b/cmd/micro/action/bufpane.go @@ -1,6 +1,7 @@ package action import ( + "strings" "time" "github.com/zyedidia/micro/cmd/micro/buffer" @@ -24,7 +25,15 @@ func init() { // BufMapKey maps a key event to an action func BufMapKey(k Event, action string) { - if f, ok := BufKeyActions[action]; ok { + if strings.HasPrefix(action, "command:") { + action = strings.SplitN(action, ":", 2)[1] + BufKeyStrings[k] = action + BufKeyBindings[k] = CommandAction(action) + } else if strings.HasPrefix(action, "command-edit:") { + action = strings.SplitN(action, ":", 2)[1] + BufKeyStrings[k] = action + BufKeyBindings[k] = CommandEditAction(action) + } else if f, ok := BufKeyActions[action]; ok { BufKeyStrings[k] = action BufKeyBindings[k] = f } else { @@ -36,14 +45,9 @@ func BufMapKey(k Event, action string) { func BufMapMouse(k MouseEvent, action string) { if f, ok := BufMouseActions[action]; ok { BufMouseBindings[k] = f - } else if f, ok := BufKeyActions[action]; ok { - // allowed to map mouse buttons to key actions - BufKeyStrings[k] = action - BufKeyBindings[k] = f - // ensure we don't double bind a key - delete(BufMouseBindings, k) } else { - screen.TermMessage("Error:", action, "does not exist") + delete(BufMouseBindings, k) + BufMapKey(k, action) } } diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 7fbacbc0..30b4a4d8 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -539,9 +539,13 @@ func (h *BufPane) QuitCmd(args []string) { h.Quit() } -// SaveCmd saves the buffer in the main view +// SaveCmd saves the buffer optionally with an argument file name func (h *BufPane) SaveCmd(args []string) { - h.Save() + if len(args) == 0 { + h.Save() + } else { + h.Buf.SaveAs(args[0]) + } } // ReplaceCmd runs search and replace From fc7058d47c4799dc23bfc41e0d6d73ec64e385b6 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 20 Jan 2019 17:49:20 -0500 Subject: [PATCH 093/231] Add infobar autocomplete --- cmd/micro/action/command.go | 134 ++++++++++--------------------- cmd/micro/action/infocomplete.go | 69 +++++----------- cmd/micro/action/infopane.go | 30 +++++++ cmd/micro/buffer/autocomplete.go | 82 +++++++++++++++++++ cmd/micro/display/infowindow.go | 47 +++++++++-- cmd/micro/info/infobuffer.go | 8 ++ cmd/micro/util/util.go | 36 +++++++++ 7 files changed, 257 insertions(+), 149 deletions(-) create mode 100644 cmd/micro/buffer/autocomplete.go diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 30b4a4d8..e2db143d 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -18,109 +18,59 @@ import ( "github.com/zyedidia/micro/cmd/micro/util" ) -// A Command contains an action (a function to call) as well as information about how to autocomplete the command +// A Command contains information about how to execute a command +// It has the action for that command as well as a completer function type Command struct { - action func(*BufPane, []string) - completions []Completion -} - -// A StrCommand is similar to a command but keeps the name of the action -type StrCommand struct { - action string - completions []Completion + action func(*BufPane, []string) + completer buffer.Completer } var commands map[string]Command -var commandActions = map[string]func(*BufPane, []string){ - "Set": (*BufPane).SetCmd, - "SetLocal": (*BufPane).SetLocalCmd, - "Show": (*BufPane).ShowCmd, - "ShowKey": (*BufPane).ShowKeyCmd, - "Run": (*BufPane).RunCmd, - "Bind": (*BufPane).BindCmd, - "Unbind": (*BufPane).UnbindCmd, - "Quit": (*BufPane).QuitCmd, - "Save": (*BufPane).SaveCmd, - "Replace": (*BufPane).ReplaceCmd, - "ReplaceAll": (*BufPane).ReplaceAllCmd, - "VSplit": (*BufPane).VSplitCmd, - "HSplit": (*BufPane).HSplitCmd, - "Tab": (*BufPane).NewTabCmd, - "Help": (*BufPane).HelpCmd, - "Eval": (*BufPane).EvalCmd, - "ToggleLog": (*BufPane).ToggleLogCmd, - "Plugin": (*BufPane).PluginCmd, - "Reload": (*BufPane).ReloadCmd, - "Cd": (*BufPane).CdCmd, - "Pwd": (*BufPane).PwdCmd, - "Open": (*BufPane).OpenCmd, - "TabSwitch": (*BufPane).TabSwitchCmd, - "Term": (*BufPane).TermCmd, - "MemUsage": (*BufPane).MemUsageCmd, - "Retab": (*BufPane).RetabCmd, - "Raw": (*BufPane).RawCmd, -} - -// InitCommands initializes the default commands func InitCommands() { - commands = make(map[string]Command) - - defaults := DefaultCommands() - parseCommands(defaults) -} - -func parseCommands(userCommands map[string]StrCommand) { - for k, v := range userCommands { - MakeCommand(k, v.action, v.completions...) + commands = map[string]Command{ + "set": Command{(*BufPane).SetCmd, nil}, + "setlocal": Command{(*BufPane).SetLocalCmd, nil}, + "show": Command{(*BufPane).ShowCmd, nil}, + "showkey": Command{(*BufPane).ShowKeyCmd, nil}, + "run": Command{(*BufPane).RunCmd, nil}, + "bind": Command{(*BufPane).BindCmd, nil}, + "unbind": Command{(*BufPane).UnbindCmd, nil}, + "quit": Command{(*BufPane).QuitCmd, nil}, + "save": Command{(*BufPane).SaveCmd, nil}, + "replace": Command{(*BufPane).ReplaceCmd, nil}, + "replaceall": Command{(*BufPane).ReplaceAllCmd, nil}, + "vsplit": Command{(*BufPane).VSplitCmd, buffer.FileComplete}, + "hsplit": Command{(*BufPane).HSplitCmd, buffer.FileComplete}, + "tab": Command{(*BufPane).NewTabCmd, buffer.FileComplete}, + "help": Command{(*BufPane).HelpCmd, nil}, + "eval": Command{(*BufPane).EvalCmd, nil}, + "togglelog": Command{(*BufPane).ToggleLogCmd, nil}, + "plugin": Command{(*BufPane).PluginCmd, nil}, + "reload": Command{(*BufPane).ReloadCmd, nil}, + "cd": Command{(*BufPane).CdCmd, buffer.FileComplete}, + "pwd": Command{(*BufPane).PwdCmd, nil}, + "open": Command{(*BufPane).OpenCmd, buffer.FileComplete}, + "tabswitch": Command{(*BufPane).TabSwitchCmd, nil}, + "term": Command{(*BufPane).TermCmd, nil}, + "memusage": Command{(*BufPane).MemUsageCmd, nil}, + "retab": Command{(*BufPane).RetabCmd, nil}, + "raw": Command{(*BufPane).RawCmd, nil}, } } // MakeCommand is a function to easily create new commands // This can be called by plugins in Lua so that plugins can define their own commands -func MakeCommand(name, function string, completions ...Completion) { - action := commandActions[function] - // if _, ok := commandActions[function]; !ok { - // If the user seems to be binding a function that doesn't exist - // We hope that it's a lua function that exists and bind it to that - // action = LuaFunctionCommand(function) - // } - - commands[name] = Command{action, completions} -} - -// DefaultCommands returns a map containing micro's default commands -func DefaultCommands() map[string]StrCommand { - return map[string]StrCommand{ - "set": {"Set", []Completion{OptionCompletion, OptionValueCompletion}}, - "setlocal": {"SetLocal", []Completion{OptionCompletion, OptionValueCompletion}}, - "show": {"Show", []Completion{OptionCompletion, NoCompletion}}, - "showkey": {"ShowKey", []Completion{NoCompletion}}, - "bind": {"Bind", []Completion{NoCompletion}}, - "unbind": {"Unbind", []Completion{NoCompletion}}, - "run": {"Run", []Completion{NoCompletion}}, - "quit": {"Quit", []Completion{NoCompletion}}, - "save": {"Save", []Completion{NoCompletion}}, - "replace": {"Replace", []Completion{NoCompletion}}, - "replaceall": {"ReplaceAll", []Completion{NoCompletion}}, - "vsplit": {"VSplit", []Completion{FileCompletion, NoCompletion}}, - "hsplit": {"HSplit", []Completion{FileCompletion, NoCompletion}}, - "tab": {"Tab", []Completion{FileCompletion, NoCompletion}}, - "help": {"Help", []Completion{HelpCompletion, NoCompletion}}, - "eval": {"Eval", []Completion{NoCompletion}}, - "log": {"ToggleLog", []Completion{NoCompletion}}, - "plugin": {"Plugin", []Completion{PluginCmdCompletion, PluginNameCompletion}}, - "reload": {"Reload", []Completion{NoCompletion}}, - "cd": {"Cd", []Completion{FileCompletion}}, - "pwd": {"Pwd", []Completion{NoCompletion}}, - "open": {"Open", []Completion{FileCompletion}}, - "tabswitch": {"TabSwitch", []Completion{NoCompletion}}, - "term": {"Term", []Completion{NoCompletion}}, - "memusage": {"MemUsage", []Completion{NoCompletion}}, - "retab": {"Retab", []Completion{NoCompletion}}, - "raw": {"Raw", []Completion{NoCompletion}}, - } -} +// func MakeCommand(name, function string, completions ...Completion) { +// action := commandActions[function] +// // if _, ok := commandActions[function]; !ok { +// // If the user seems to be binding a function that doesn't exist +// // We hope that it's a lua function that exists and bind it to that +// // action = LuaFunctionCommand(function) +// // } +// +// commands[name] = Command{action, completions} +// } // CommandEditAction returns a bindable function that opens a prompt with // the given string and executes the command when the user presses diff --git a/cmd/micro/action/infocomplete.go b/cmd/micro/action/infocomplete.go index f25a3a9b..46acf21f 100644 --- a/cmd/micro/action/infocomplete.go +++ b/cmd/micro/action/infocomplete.go @@ -1,10 +1,11 @@ package action import ( - "io/ioutil" - "os" + "bytes" "strings" + "unicode/utf8" + "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/util" ) @@ -29,54 +30,22 @@ var pluginCompletions []func(string) []string // while coding. This helps micro autocomplete commands and then filenames // for example with `vsplit filename`. -// FileComplete autocompletes filenames -func FileComplete(input string) (string, []string) { - var sep string = string(os.PathSeparator) - dirs := strings.Split(input, sep) - - var files []os.FileInfo - var err error - if len(dirs) > 1 { - directories := strings.Join(dirs[:len(dirs)-1], sep) + sep - - directories, _ = util.ReplaceHome(directories) - files, err = ioutil.ReadDir(directories) - } else { - files, err = ioutil.ReadDir(".") - } - - var suggestions []string - if err != nil { - return "", suggestions - } - for _, f := range files { - name := f.Name() - if f.IsDir() { - name += sep - } - if strings.HasPrefix(name, dirs[len(dirs)-1]) { - suggestions = append(suggestions, name) - } - } - - var chosen string - if len(suggestions) == 1 { - if len(dirs) > 1 { - chosen = strings.Join(dirs[:len(dirs)-1], sep) + sep + suggestions[0] - } else { - chosen = suggestions[0] - } - } else { - if len(dirs) > 1 { - chosen = strings.Join(dirs[:len(dirs)-1], sep) + sep - } - } - - return chosen, suggestions -} - // CommandComplete autocompletes commands -func CommandComplete(input string) (string, []string) { +func CommandComplete(b *buffer.Buffer) (string, []string) { + c := b.GetActiveCursor() + l := b.LineBytes(c.Y) + l = util.SliceStart(l, c.X) + + args := bytes.Split(l, []byte{' '}) + input := string(args[len(args)-1]) + argstart := 0 + for i, a := range args { + if i == len(args)-1 { + break + } + argstart += utf8.RuneCount(a) + 1 + } + var suggestions []string for cmd := range commands { if strings.HasPrefix(cmd, input) { @@ -86,7 +55,7 @@ func CommandComplete(input string) (string, []string) { var chosen string if len(suggestions) == 1 { - chosen = suggestions[0] + chosen = util.SliceEndStr(suggestions[0], c.X-argstart) } return chosen, suggestions } diff --git a/cmd/micro/action/infopane.go b/cmd/micro/action/infopane.go index d71371c3..c42bed30 100644 --- a/cmd/micro/action/infopane.go +++ b/cmd/micro/action/infopane.go @@ -1,8 +1,12 @@ package action import ( + "bytes" + "log" + "github.com/zyedidia/micro/cmd/micro/display" "github.com/zyedidia/micro/cmd/micro/info" + "github.com/zyedidia/micro/cmd/micro/util" "github.com/zyedidia/tcell" ) @@ -161,6 +165,32 @@ func (h *InfoPane) CursorDown() { } func (h *InfoPane) InsertTab() { // TODO: autocomplete + b := h.Buf + c := b.GetActiveCursor() + l := b.LineBytes(0) + l = util.SliceStart(l, c.X) + + args := bytes.Split(l, []byte{' '}) + cmd := string(args[0]) + + var ins string + var suggestions []string + if len(args) == 1 { + ins, suggestions = CommandComplete(b) + } else { + if action, ok := commands[cmd]; ok { + if action.completer != nil { + ins, suggestions = action.completer(b) + } + } + } + log.Println(ins, suggestions) + + if len(suggestions) == 1 { + b.Insert(c.Loc, ins) + } else if len(suggestions) > 1 { + h.MakeSuggestions(suggestions) + } } func (h *InfoPane) InsertNewline() { if !h.HasYN { diff --git a/cmd/micro/buffer/autocomplete.go b/cmd/micro/buffer/autocomplete.go new file mode 100644 index 00000000..34c3fd07 --- /dev/null +++ b/cmd/micro/buffer/autocomplete.go @@ -0,0 +1,82 @@ +package buffer + +import ( + "bytes" + "io/ioutil" + "os" + "strings" + "unicode/utf8" + + "github.com/zyedidia/micro/cmd/micro/util" +) + +type Completer func(*Buffer) (string, []string) + +func (b *Buffer) GetSuggestions() { + +} + +func (b *Buffer) Autocomplete(c Completer) { + +} + +// FileComplete autocompletes filenames +func FileComplete(b *Buffer) (string, []string) { + c := b.GetActiveCursor() + l := b.LineBytes(c.Y) + l = util.SliceStart(l, c.X) + + args := bytes.Split(l, []byte{' '}) + input := string(args[len(args)-1]) + argstart := 0 + for i, a := range args { + if i == len(args)-1 { + break + } + argstart += utf8.RuneCount(a) + 1 + } + + sep := string(os.PathSeparator) + dirs := strings.Split(input, sep) + + var files []os.FileInfo + var err error + if len(dirs) > 1 { + directories := strings.Join(dirs[:len(dirs)-1], sep) + sep + + directories, _ = util.ReplaceHome(directories) + files, err = ioutil.ReadDir(directories) + } else { + files, err = ioutil.ReadDir(".") + } + + var suggestions []string + if err != nil { + return "", suggestions + } + for _, f := range files { + name := f.Name() + if f.IsDir() { + name += sep + } + if strings.HasPrefix(name, dirs[len(dirs)-1]) { + suggestions = append(suggestions, name) + } + } + + var chosen string + if len(suggestions) == 1 { + if len(dirs) > 1 { + chosen = strings.Join(dirs[:len(dirs)-1], sep) + sep + suggestions[0] + } else { + chosen = suggestions[0] + } + } else { + if len(dirs) > 1 { + chosen = strings.Join(dirs[:len(dirs)-1], sep) + sep + } + } + chosen = util.SliceEndStr(chosen, c.X-argstart) + + return chosen, suggestions +} diff --git a/cmd/micro/display/infowindow.go b/cmd/micro/display/infowindow.go index 8b74f5f1..111bfcd0 100644 --- a/cmd/micro/display/infowindow.go +++ b/cmd/micro/display/infowindow.go @@ -147,18 +147,19 @@ func (i *InfoWindow) displayBuffer() { } } +var keydisplay = []string{"^Q Quit, ^S Save, ^O Open, ^G Help, ^E Command Bar, ^K Cut Line", "^F Find, ^Z Undo, ^Y Redo, ^A Select All, ^D Duplicate Line, ^T New Tab"} + func (i *InfoWindow) displayKeyMenu() { // TODO: maybe make this based on the actual keybindings - display := []string{"^Q Quit, ^S Save, ^O Open, ^G Help, ^E Command Bar, ^K Cut Line", "^F Find, ^Z Undo, ^Y Redo, ^A Select All, ^D Duplicate Line, ^T New Tab"} - log.Println("hi", len(display), i.Width) - for y := 0; y < len(display); y++ { + log.Println("hi", len(keydisplay), i.Width) + for y := 0; y < len(keydisplay); y++ { for x := 0; x < i.Width; x++ { - log.Println(x, i.Y-len(display)+y) - if x < len(display[y]) { - screen.Screen.SetContent(x, i.Y-len(display)+y, rune(display[y][x]), nil, config.DefStyle) + log.Println(x, i.Y-len(keydisplay)+y) + if x < len(keydisplay[y]) { + screen.Screen.SetContent(x, i.Y-len(keydisplay)+y, rune(keydisplay[y][x]), nil, config.DefStyle) } else { - screen.Screen.SetContent(x, i.Y-len(display)+y, ' ', nil, config.DefStyle) + screen.Screen.SetContent(x, i.Y-len(keydisplay)+y, ' ', nil, config.DefStyle) } } } @@ -191,4 +192,36 @@ func (i *InfoWindow) Display() { i.displayBuffer() } } + + if i.HasSuggestions { + i.HasSuggestions = false + statusLineStyle := config.DefStyle.Reverse(true) + if style, ok := config.Colorscheme["statusline"]; ok { + statusLineStyle = style + } + keymenuOffset := 0 + if config.GetGlobalOption("keymenu").(bool) { + keymenuOffset = len(keydisplay) + } + x := 0 + for _, s := range i.Suggestions { + for _, r := range s { + screen.Screen.SetContent(x, i.Y-keymenuOffset-1, r, nil, statusLineStyle) + x++ + if x >= i.Width { + return + } + } + screen.Screen.SetContent(x, i.Y-keymenuOffset-1, ' ', nil, statusLineStyle) + x++ + if x >= i.Width { + return + } + } + + for x < i.Width { + screen.Screen.SetContent(x, i.Y-keymenuOffset-1, ' ', nil, statusLineStyle) + x++ + } + } } diff --git a/cmd/micro/info/infobuffer.go b/cmd/micro/info/infobuffer.go index aebdd347..3ea3c8b0 100644 --- a/cmd/micro/info/infobuffer.go +++ b/cmd/micro/info/infobuffer.go @@ -16,6 +16,9 @@ type InfoBuf struct { HasError bool HasYN bool + HasSuggestions bool + Suggestions []string + PromptType string Msg string @@ -159,3 +162,8 @@ func (i *InfoBuf) Reset() { i.HasPrompt, i.HasMessage, i.HasError = false, false, false i.HasGutter = false } + +func (i *InfoBuf) MakeSuggestions(s []string) { + i.HasSuggestions = true + i.Suggestions = s +} diff --git a/cmd/micro/util/util.go b/cmd/micro/util/util.go index 53cac87a..0d23028e 100644 --- a/cmd/micro/util/util.go +++ b/cmd/micro/util/util.go @@ -33,6 +33,24 @@ func SliceEnd(slc []byte, index int) []byte { return slc[totalSize:] } +// SliceEndStr is the same as SliceEnd but for strings +func SliceEndStr(str string, index int) string { + len := len(str) + i := 0 + totalSize := 0 + for totalSize < len { + if i >= index { + return str[totalSize:] + } + + _, size := utf8.DecodeRuneInString(str[totalSize:]) + totalSize += size + i++ + } + + return str[totalSize:] +} + // SliceStart returns a byte slice where the index is a rune index // Slices off the end of the slice func SliceStart(slc []byte, index int) []byte { @@ -52,6 +70,24 @@ func SliceStart(slc []byte, index int) []byte { return slc[:totalSize] } +// SliceStartStr is the same as SliceStart but for strings +func SliceStartStr(str string, index int) string { + len := len(str) + i := 0 + totalSize := 0 + for totalSize < len { + if i >= index { + return str[:totalSize] + } + + _, size := utf8.DecodeRuneInString(str[totalSize:]) + totalSize += size + i++ + } + + return str[:totalSize] +} + // SliceVisualEnd will take a byte slice and slice off the start // up to a given visual index. If the index is in the middle of a // rune the number of visual columns into the rune will be returned From bc1d6b6f94f997ff65e346ed1470c4905226822b Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 20 Jan 2019 19:38:23 -0500 Subject: [PATCH 094/231] Add more infobar autocomplete --- cmd/micro/action/command.go | 8 ++-- cmd/micro/action/infocomplete.go | 77 +++++++++++++++++--------------- cmd/micro/buffer/autocomplete.go | 11 ++++- 3 files changed, 55 insertions(+), 41 deletions(-) diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index e2db143d..3e755951 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -29,9 +29,9 @@ var commands map[string]Command func InitCommands() { commands = map[string]Command{ - "set": Command{(*BufPane).SetCmd, nil}, - "setlocal": Command{(*BufPane).SetLocalCmd, nil}, - "show": Command{(*BufPane).ShowCmd, nil}, + "set": Command{(*BufPane).SetCmd, OptionValueComplete}, + "setlocal": Command{(*BufPane).SetLocalCmd, OptionValueComplete}, + "show": Command{(*BufPane).ShowCmd, OptionComplete}, "showkey": Command{(*BufPane).ShowKeyCmd, nil}, "run": Command{(*BufPane).RunCmd, nil}, "bind": Command{(*BufPane).BindCmd, nil}, @@ -43,7 +43,7 @@ func InitCommands() { "vsplit": Command{(*BufPane).VSplitCmd, buffer.FileComplete}, "hsplit": Command{(*BufPane).HSplitCmd, buffer.FileComplete}, "tab": Command{(*BufPane).NewTabCmd, buffer.FileComplete}, - "help": Command{(*BufPane).HelpCmd, nil}, + "help": Command{(*BufPane).HelpCmd, HelpComplete}, "eval": Command{(*BufPane).EvalCmd, nil}, "togglelog": Command{(*BufPane).ToggleLogCmd, nil}, "plugin": Command{(*BufPane).PluginCmd, nil}, diff --git a/cmd/micro/action/infocomplete.go b/cmd/micro/action/infocomplete.go index 46acf21f..e4ab2f2c 100644 --- a/cmd/micro/action/infocomplete.go +++ b/cmd/micro/action/infocomplete.go @@ -3,29 +3,12 @@ package action import ( "bytes" "strings" - "unicode/utf8" "github.com/zyedidia/micro/cmd/micro/buffer" "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/util" ) -// Completion represents a type of completion -type Completion int - -const ( - NoCompletion Completion = iota - FileCompletion - CommandCompletion - HelpCompletion - OptionCompletion - PluginCmdCompletion - PluginNameCompletion - OptionValueCompletion -) - -var pluginCompletions []func(string) []string - // This file is meant (for now) for autocompletion in command mode, not // while coding. This helps micro autocomplete commands and then filenames // for example with `vsplit filename`. @@ -33,18 +16,7 @@ var pluginCompletions []func(string) []string // CommandComplete autocompletes commands func CommandComplete(b *buffer.Buffer) (string, []string) { c := b.GetActiveCursor() - l := b.LineBytes(c.Y) - l = util.SliceStart(l, c.X) - - args := bytes.Split(l, []byte{' '}) - input := string(args[len(args)-1]) - argstart := 0 - for i, a := range args { - if i == len(args)-1 { - break - } - argstart += utf8.RuneCount(a) + 1 - } + input, argstart := buffer.GetArg(b) var suggestions []string for cmd := range commands { @@ -61,7 +33,10 @@ func CommandComplete(b *buffer.Buffer) (string, []string) { } // HelpComplete autocompletes help topics -func HelpComplete(input string) (string, []string) { +func HelpComplete(b *buffer.Buffer) (string, []string) { + c := b.GetActiveCursor() + input, argstart := buffer.GetArg(b) + var suggestions []string for _, file := range config.ListRuntimeFiles(config.RTHelp) { @@ -73,12 +48,13 @@ func HelpComplete(input string) (string, []string) { var chosen string if len(suggestions) == 1 { - chosen = suggestions[0] + chosen = util.SliceEndStr(suggestions[0], c.X-argstart) } return chosen, suggestions } // ColorschemeComplete tab-completes names of colorschemes. +// This is just a heper value for OptionValueComplete func ColorschemeComplete(input string) (string, []string) { var suggestions []string files := config.ListRuntimeFiles(config.RTColorscheme) @@ -107,7 +83,10 @@ func contains(s []string, e string) bool { } // OptionComplete autocompletes options -func OptionComplete(input string) (string, []string) { +func OptionComplete(b *buffer.Buffer) (string, []string) { + c := b.GetActiveCursor() + input, argstart := buffer.GetArg(b) + var suggestions []string localSettings := config.DefaultLocalSettings() for option := range config.GlobalSettings { @@ -123,13 +102,41 @@ func OptionComplete(input string) (string, []string) { var chosen string if len(suggestions) == 1 { - chosen = suggestions[0] + chosen = util.SliceEndStr(suggestions[0], c.X-argstart) } return chosen, suggestions } // OptionValueComplete completes values for various options -func OptionValueComplete(inputOpt, input string) (string, []string) { +func OptionValueComplete(b *buffer.Buffer) (string, []string) { + c := b.GetActiveCursor() + l := b.LineBytes(c.Y) + l = util.SliceStart(l, c.X) + input, argstart := buffer.GetArg(b) + + completeValue := false + args := bytes.Split(l, []byte{' '}) + if len(args) >= 2 { + localSettings := config.DefaultLocalSettings() + for option := range config.GlobalSettings { + if option == string(args[len(args)-2]) { + completeValue = true + break + } + } + for option := range localSettings { + if option == string(args[len(args)-2]) { + completeValue = true + break + } + } + } + if !completeValue { + return OptionComplete(b) + } + + inputOpt := string(args[len(args)-2]) + inputOpt = strings.TrimSpace(inputOpt) var suggestions []string localSettings := config.DefaultLocalSettings() @@ -180,7 +187,7 @@ func OptionValueComplete(inputOpt, input string) (string, []string) { var chosen string if len(suggestions) == 1 { - chosen = suggestions[0] + chosen = util.SliceEndStr(suggestions[0], c.X-argstart) } return chosen, suggestions } diff --git a/cmd/micro/buffer/autocomplete.go b/cmd/micro/buffer/autocomplete.go index 34c3fd07..e03f07dd 100644 --- a/cmd/micro/buffer/autocomplete.go +++ b/cmd/micro/buffer/autocomplete.go @@ -20,8 +20,7 @@ func (b *Buffer) Autocomplete(c Completer) { } -// FileComplete autocompletes filenames -func FileComplete(b *Buffer) (string, []string) { +func GetArg(b *Buffer) (string, int) { c := b.GetActiveCursor() l := b.LineBytes(c.Y) l = util.SliceStart(l, c.X) @@ -36,6 +35,14 @@ func FileComplete(b *Buffer) (string, []string) { argstart += utf8.RuneCount(a) + 1 } + return input, argstart +} + +// FileComplete autocompletes filenames +func FileComplete(b *Buffer) (string, []string) { + c := b.GetActiveCursor() + input, argstart := GetArg(b) + sep := string(os.PathSeparator) dirs := strings.Split(input, sep) From ef3f081347ac063737f3e6a055bde231f19f6259 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 20 Jan 2019 23:45:42 -0500 Subject: [PATCH 095/231] Add colorcolumn --- cmd/micro/display/bufwindow.go | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/cmd/micro/display/bufwindow.go b/cmd/micro/display/bufwindow.go index 8d11ed5f..9e4e7659 100644 --- a/cmd/micro/display/bufwindow.go +++ b/cmd/micro/display/bufwindow.go @@ -1,6 +1,7 @@ package display import ( + "log" "strconv" "unicode/utf8" @@ -389,8 +390,9 @@ func (w *BufWindow) displayBuffer() { // so we can pad appropriately when displaying line numbers maxLineNumLength := len(strconv.Itoa(b.LinesNum())) - tabsize := int(b.Settings["tabsize"].(float64)) softwrap := b.Settings["softwrap"].(bool) + tabsize := util.IntOpt(b.Settings["tabsize"]) + colorcolumn := util.IntOpt(b.Settings["colorcolumn"]) // this represents the current draw position // within the current window @@ -451,6 +453,15 @@ func (w *BufWindow) displayBuffer() { } } + if s, ok := config.Colorscheme["color-column"]; ok { + log.Println(vloc.X - w.gutterOffset) + if colorcolumn != 0 && vloc.X-w.gutterOffset == colorcolumn { + log.Println("display colorcolumn") + fg, _, _ := s.Decompose() + style = style.Background(fg) + } + } + screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, r, nil, style) if showcursor { @@ -514,18 +525,25 @@ func (w *BufWindow) displayBuffer() { } } + style := config.DefStyle for _, c := range cursors { if b.Settings["cursorline"].(bool) && w.active && !c.HasSelection() && c.Y == bloc.Y { - style := config.DefStyle if s, ok := config.Colorscheme["cursor-line"]; ok { fg, _, _ := s.Decompose() style = style.Background(fg) } - for i := vloc.X; i < w.Width; i++ { - screen.Screen.SetContent(i+w.X, vloc.Y+w.Y, ' ', nil, style) + } + } + for i := vloc.X; i < w.Width; i++ { + curStyle := style + if s, ok := config.Colorscheme["color-column"]; ok { + if colorcolumn != 0 && i-w.gutterOffset == colorcolumn { + fg, _, _ := s.Decompose() + curStyle = style.Background(fg) } } + screen.Screen.SetContent(i+w.X, vloc.Y+w.Y, ' ', nil, curStyle) } for _, c := range cursors { From ad50d7aa565f4747d2778aa7072b59773f3d2c35 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 23 Jan 2019 19:06:20 -0500 Subject: [PATCH 096/231] Add reopen cmd and other encodings support --- cmd/micro/action/command.go | 17 +++++++++++++++ cmd/micro/action/infopane.go | 2 -- cmd/micro/buffer/buffer.go | 38 ++++++++++++++++++++++++++++++--- cmd/micro/buffer/save.go | 18 +++++++++++----- cmd/micro/buffer/serialize.go | 3 ++- cmd/micro/buffer/settings.go | 2 ++ cmd/micro/config/settings.go | 8 +++++++ cmd/micro/display/bufwindow.go | 3 --- cmd/micro/display/infowindow.go | 3 --- cmd/micro/display/statusline.go | 2 +- cmd/micro/info/infobuffer.go | 1 - 11 files changed, 78 insertions(+), 19 deletions(-) diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 3e755951..7a34c6de 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -48,6 +48,7 @@ func InitCommands() { "togglelog": Command{(*BufPane).ToggleLogCmd, nil}, "plugin": Command{(*BufPane).PluginCmd, nil}, "reload": Command{(*BufPane).ReloadCmd, nil}, + "reopen": Command{(*BufPane).ReopenCmd, nil}, "cd": Command{(*BufPane).CdCmd, buffer.FileComplete}, "pwd": Command{(*BufPane).PwdCmd, nil}, "open": Command{(*BufPane).OpenCmd, buffer.FileComplete}, @@ -234,6 +235,22 @@ func (h *BufPane) ToggleLogCmd(args []string) { func (h *BufPane) ReloadCmd(args []string) { } +// ReopenCmd reopens the buffer (reload from disk) +func (h *BufPane) ReopenCmd(args []string) { + if h.Buf.Modified() { + InfoBar.YNPrompt("Save file before reopen?", func(yes, canceled bool) { + if !canceled && yes { + h.Save() + h.Buf.ReOpen() + } else if !canceled { + h.Buf.ReOpen() + } + }) + } else { + h.Buf.ReOpen() + } +} + func (h *BufPane) openHelp(page string) error { if data, err := config.FindRuntimeFile(config.RTHelp, page).Data(); err != nil { return errors.New(fmt.Sprint("Unable to load help text", page, "\n", err)) diff --git a/cmd/micro/action/infopane.go b/cmd/micro/action/infopane.go index c42bed30..c83f77d2 100644 --- a/cmd/micro/action/infopane.go +++ b/cmd/micro/action/infopane.go @@ -2,7 +2,6 @@ package action import ( "bytes" - "log" "github.com/zyedidia/micro/cmd/micro/display" "github.com/zyedidia/micro/cmd/micro/info" @@ -184,7 +183,6 @@ func (h *InfoPane) InsertTab() { } } } - log.Println(ins, suggestions) if len(suggestions) == 1 { b.Insert(c.Loc, ins) diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index 3c8672dc..b6e7e253 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -12,13 +12,24 @@ import ( "time" "unicode/utf8" + "github.com/saintfish/chardet" "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/highlight" "github.com/zyedidia/micro/cmd/micro/screen" . "github.com/zyedidia/micro/cmd/micro/util" + "golang.org/x/text/encoding/htmlindex" + "golang.org/x/text/encoding/unicode" + "golang.org/x/text/transform" ) -var OpenBuffers []*Buffer +var ( + OpenBuffers []*Buffer + detector *chardet.Detector // encoding detector +) + +func init() { + detector = chardet.NewTextDetector() +} // The BufType defines what kind of buffer this is type BufType struct { @@ -89,6 +100,8 @@ type Buffer struct { // Settings customized by the user Settings map[string]interface{} + Suggestions []string + Messages []*Message } @@ -132,7 +145,7 @@ func NewBufferFromString(text, path string, btype BufType) *Buffer { // NewBuffer creates a new buffer from a given reader with a given path // Ensure that ReadSettings and InitGlobalSettings have been called before creating // a new buffer -func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []string, btype BufType) *Buffer { +func NewBuffer(r io.Reader, size int64, path string, cursorPosition []string, btype BufType) *Buffer { absPath, _ := filepath.Abs(path) b := new(Buffer) @@ -145,6 +158,14 @@ func NewBuffer(reader io.Reader, size int64, path string, cursorPosition []strin } config.InitLocalSettings(b.Settings, b.Path) + enc, err := htmlindex.Get(b.Settings["encoding"].(string)) + if err != nil { + enc = unicode.UTF8 + b.Settings["encoding"] = "utf-8" + } + + reader := transform.NewReader(r, enc.NewDecoder()) + found := false if len(path) > 0 { for _, buf := range OpenBuffers { @@ -263,7 +284,18 @@ func (b *Buffer) FileType() string { // ReOpen reloads the current buffer from disk func (b *Buffer) ReOpen() error { - data, err := ioutil.ReadFile(b.Path) + file, err := os.Open(b.Path) + if err != nil { + return err + } + + enc, err := htmlindex.Get(b.Settings["encoding"].(string)) + if err != nil { + return err + } + + reader := transform.NewReader(file, enc.NewDecoder()) + data, err := ioutil.ReadAll(reader) txt := string(data) if err != nil { diff --git a/cmd/micro/buffer/save.go b/cmd/micro/buffer/save.go index 1d62818e..7337baad 100644 --- a/cmd/micro/buffer/save.go +++ b/cmd/micro/buffer/save.go @@ -1,7 +1,6 @@ package buffer import ( - "bufio" "bytes" "errors" "io" @@ -12,6 +11,9 @@ import ( "github.com/zyedidia/micro/cmd/micro/config" . "github.com/zyedidia/micro/cmd/micro/util" + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/htmlindex" + "golang.org/x/text/transform" ) // LargeFileThreshold is the number of bytes when fastdirty is forced @@ -21,7 +23,7 @@ const LargeFileThreshold = 50000 // overwriteFile opens the given file for writing, truncating if one exists, and then calls // the supplied function with the file as io.Writer object, also making sure the file is // closed afterwards. -func overwriteFile(name string, fn func(io.Writer) error) (err error) { +func overwriteFile(name string, enc encoding.Encoding, fn func(io.Writer) error) (err error) { var file *os.File if file, err = os.OpenFile(name, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644); err != nil { @@ -34,13 +36,14 @@ func overwriteFile(name string, fn func(io.Writer) error) (err error) { } }() - w := bufio.NewWriter(file) + w := transform.NewWriter(file, enc.NewEncoder()) + // w := bufio.NewWriter(file) if err = fn(w); err != nil { return } - err = w.Flush() + // err = w.Flush() return } @@ -105,7 +108,12 @@ func (b *Buffer) SaveAs(filename string) error { var fileSize int - err := overwriteFile(absFilename, func(file io.Writer) (e error) { + enc, err := htmlindex.Get(b.Settings["encoding"].(string)) + if err != nil { + return err + } + + err = overwriteFile(absFilename, enc, func(file io.Writer) (e error) { if len(b.lines) == 0 { return } diff --git a/cmd/micro/buffer/serialize.go b/cmd/micro/buffer/serialize.go index ccafd1a6..821f0c7a 100644 --- a/cmd/micro/buffer/serialize.go +++ b/cmd/micro/buffer/serialize.go @@ -9,6 +9,7 @@ import ( "github.com/zyedidia/micro/cmd/micro/config" . "github.com/zyedidia/micro/cmd/micro/util" + "golang.org/x/text/encoding/unicode" ) // The SerializedBuffer holds the types that get serialized when a buffer is saved @@ -32,7 +33,7 @@ func (b *Buffer) Serialize() error { name := config.ConfigDir + "/buffers/" + EscapePath(b.AbsPath) - return overwriteFile(name, func(file io.Writer) error { + return overwriteFile(name, unicode.UTF8, func(file io.Writer) error { err := gob.NewEncoder(file).Encode(SerializedBuffer{ b.EventHandler, b.GetActiveCursor().Loc, diff --git a/cmd/micro/buffer/settings.go b/cmd/micro/buffer/settings.go index d7144ca9..fb66d5d9 100644 --- a/cmd/micro/buffer/settings.go +++ b/cmd/micro/buffer/settings.go @@ -43,6 +43,8 @@ func (b *Buffer) SetOption(option, value string) error { } else { b.UpdateRules() } + } else if option == "encoding" { + b.isModified = true } return nil diff --git a/cmd/micro/config/settings.go b/cmd/micro/config/settings.go index 01126d17..8bf7f3fe 100644 --- a/cmd/micro/config/settings.go +++ b/cmd/micro/config/settings.go @@ -12,6 +12,7 @@ import ( "github.com/flynn/json5" "github.com/zyedidia/glob" "github.com/zyedidia/micro/cmd/micro/util" + "golang.org/x/text/encoding/htmlindex" ) type optionValidator func(string, interface{}) error @@ -35,6 +36,7 @@ var optionValidators = map[string]optionValidator{ "colorscheme": validateColorscheme, "colorcolumn": validateNonNegativeValue, "fileformat": validateLineEnding, + "encoding": validateEncoding, } func ReadSettings() error { @@ -134,6 +136,7 @@ func DefaultCommonSettings() map[string]interface{} { "basename": false, "colorcolumn": float64(0), "cursorline": true, + "encoding": "utf-8", "eofnewline": false, "fastdirty": true, "fileformat": "unix", @@ -291,3 +294,8 @@ func validateLineEnding(option string, value interface{}) error { return nil } + +func validateEncoding(option string, value interface{}) error { + _, err := htmlindex.Get(value.(string)) + return err +} diff --git a/cmd/micro/display/bufwindow.go b/cmd/micro/display/bufwindow.go index 9e4e7659..003e6e7a 100644 --- a/cmd/micro/display/bufwindow.go +++ b/cmd/micro/display/bufwindow.go @@ -1,7 +1,6 @@ package display import ( - "log" "strconv" "unicode/utf8" @@ -454,9 +453,7 @@ func (w *BufWindow) displayBuffer() { } if s, ok := config.Colorscheme["color-column"]; ok { - log.Println(vloc.X - w.gutterOffset) if colorcolumn != 0 && vloc.X-w.gutterOffset == colorcolumn { - log.Println("display colorcolumn") fg, _, _ := s.Decompose() style = style.Background(fg) } diff --git a/cmd/micro/display/infowindow.go b/cmd/micro/display/infowindow.go index 111bfcd0..4474781d 100644 --- a/cmd/micro/display/infowindow.go +++ b/cmd/micro/display/infowindow.go @@ -1,7 +1,6 @@ package display import ( - "log" "unicode/utf8" runewidth "github.com/mattn/go-runewidth" @@ -152,10 +151,8 @@ var keydisplay = []string{"^Q Quit, ^S Save, ^O Open, ^G Help, ^E Command Bar, ^ func (i *InfoWindow) displayKeyMenu() { // TODO: maybe make this based on the actual keybindings - log.Println("hi", len(keydisplay), i.Width) for y := 0; y < len(keydisplay); y++ { for x := 0; x < i.Width; x++ { - log.Println(x, i.Y-len(keydisplay)+y) if x < len(keydisplay[y]) { screen.Screen.SetContent(x, i.Y-len(keydisplay)+y, rune(keydisplay[y][x]), nil, config.DefStyle) } else { diff --git a/cmd/micro/display/statusline.go b/cmd/micro/display/statusline.go index e4a26913..f03345f0 100644 --- a/cmd/micro/display/statusline.go +++ b/cmd/micro/display/statusline.go @@ -30,7 +30,7 @@ type StatusLine struct { // NewStatusLine returns a statusline bound to a window func NewStatusLine(win *BufWindow) *StatusLine { s := new(StatusLine) - s.FormatLeft = "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat)" + s.FormatLeft = "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat) $(opt:encoding)" // s.FormatLeft = "$(filename) $(modified)(line,col) $(opt:filetype) $(opt:fileformat)" s.FormatRight = "$(bind:ToggleKeyMenu): show bindings, $(bind:ToggleHelp): toggle help" s.Info = map[string]func(*buffer.Buffer) string{ diff --git a/cmd/micro/info/infobuffer.go b/cmd/micro/info/infobuffer.go index 3ea3c8b0..d1d299c4 100644 --- a/cmd/micro/info/infobuffer.go +++ b/cmd/micro/info/infobuffer.go @@ -17,7 +17,6 @@ type InfoBuf struct { HasYN bool HasSuggestions bool - Suggestions []string PromptType string From ad487807a5a1efef61f82caaefdd320d664353a1 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 23 Jan 2019 19:22:41 -0500 Subject: [PATCH 097/231] Remove chardet dependency --- cmd/micro/buffer/buffer.go | 6 ------ 1 file changed, 6 deletions(-) diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index b6e7e253..6c81a636 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -12,7 +12,6 @@ import ( "time" "unicode/utf8" - "github.com/saintfish/chardet" "github.com/zyedidia/micro/cmd/micro/config" "github.com/zyedidia/micro/cmd/micro/highlight" "github.com/zyedidia/micro/cmd/micro/screen" @@ -24,13 +23,8 @@ import ( var ( OpenBuffers []*Buffer - detector *chardet.Detector // encoding detector ) -func init() { - detector = chardet.NewTextDetector() -} - // The BufType defines what kind of buffer this is type BufType struct { Kind int From 0e4faf108d0549cf6498268ca852a14c8cf17cee Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 24 Jan 2019 18:09:57 -0500 Subject: [PATCH 098/231] Finish autocomplete --- cmd/micro/action/infocomplete.go | 47 ++++++++++++------------- cmd/micro/action/infopane.go | 18 ++++------ cmd/micro/buffer/autocomplete.go | 59 ++++++++++++++++++++++++-------- cmd/micro/buffer/buffer.go | 9 ++++- cmd/micro/display/infowindow.go | 11 +++--- cmd/micro/info/infobuffer.go | 7 ---- 6 files changed, 91 insertions(+), 60 deletions(-) diff --git a/cmd/micro/action/infocomplete.go b/cmd/micro/action/infocomplete.go index e4ab2f2c..99a3844a 100644 --- a/cmd/micro/action/infocomplete.go +++ b/cmd/micro/action/infocomplete.go @@ -14,7 +14,7 @@ import ( // for example with `vsplit filename`. // CommandComplete autocompletes commands -func CommandComplete(b *buffer.Buffer) (string, []string) { +func CommandComplete(b *buffer.Buffer) ([]string, []string) { c := b.GetActiveCursor() input, argstart := buffer.GetArg(b) @@ -25,15 +25,16 @@ func CommandComplete(b *buffer.Buffer) (string, []string) { } } - var chosen string - if len(suggestions) == 1 { - chosen = util.SliceEndStr(suggestions[0], c.X-argstart) + completions := make([]string, len(suggestions)) + for i := range suggestions { + completions[i] = util.SliceEndStr(suggestions[i], c.X-argstart) } - return chosen, suggestions + + return completions, suggestions } // HelpComplete autocompletes help topics -func HelpComplete(b *buffer.Buffer) (string, []string) { +func HelpComplete(b *buffer.Buffer) ([]string, []string) { c := b.GetActiveCursor() input, argstart := buffer.GetArg(b) @@ -46,16 +47,16 @@ func HelpComplete(b *buffer.Buffer) (string, []string) { } } - var chosen string - if len(suggestions) == 1 { - chosen = util.SliceEndStr(suggestions[0], c.X-argstart) + completions := make([]string, len(suggestions)) + for i := range suggestions { + completions[i] = util.SliceEndStr(suggestions[i], c.X-argstart) } - return chosen, suggestions + return completions, suggestions } -// ColorschemeComplete tab-completes names of colorschemes. +// colorschemeComplete tab-completes names of colorschemes. // This is just a heper value for OptionValueComplete -func ColorschemeComplete(input string) (string, []string) { +func colorschemeComplete(input string) (string, []string) { var suggestions []string files := config.ListRuntimeFiles(config.RTColorscheme) @@ -83,7 +84,7 @@ func contains(s []string, e string) bool { } // OptionComplete autocompletes options -func OptionComplete(b *buffer.Buffer) (string, []string) { +func OptionComplete(b *buffer.Buffer) ([]string, []string) { c := b.GetActiveCursor() input, argstart := buffer.GetArg(b) @@ -100,15 +101,15 @@ func OptionComplete(b *buffer.Buffer) (string, []string) { } } - var chosen string - if len(suggestions) == 1 { - chosen = util.SliceEndStr(suggestions[0], c.X-argstart) + completions := make([]string, len(suggestions)) + for i := range suggestions { + completions[i] = util.SliceEndStr(suggestions[i], c.X-argstart) } - return chosen, suggestions + return completions, suggestions } // OptionValueComplete completes values for various options -func OptionValueComplete(b *buffer.Buffer) (string, []string) { +func OptionValueComplete(b *buffer.Buffer) ([]string, []string) { c := b.GetActiveCursor() l := b.LineBytes(c.Y) l = util.SliceStart(l, c.X) @@ -167,7 +168,7 @@ func OptionValueComplete(b *buffer.Buffer) (string, []string) { case string: switch inputOpt { case "colorscheme": - _, suggestions = ColorschemeComplete(input) + _, suggestions = colorschemeComplete(input) case "fileformat": if strings.HasPrefix("unix", input) { suggestions = append(suggestions, "unix") @@ -185,11 +186,11 @@ func OptionValueComplete(b *buffer.Buffer) (string, []string) { } } - var chosen string - if len(suggestions) == 1 { - chosen = util.SliceEndStr(suggestions[0], c.X-argstart) + completions := make([]string, len(suggestions)) + for i := range suggestions { + completions[i] = util.SliceEndStr(suggestions[i], c.X-argstart) } - return chosen, suggestions + return completions, suggestions } // // MakeCompletion registers a function from a plugin for autocomplete commands diff --git a/cmd/micro/action/infopane.go b/cmd/micro/action/infopane.go index c83f77d2..406476bc 100644 --- a/cmd/micro/action/infopane.go +++ b/cmd/micro/action/infopane.go @@ -163,8 +163,12 @@ func (h *InfoPane) CursorDown() { h.DownHistory(h.History[h.PromptType]) } func (h *InfoPane) InsertTab() { - // TODO: autocomplete b := h.Buf + if b.HasSuggestions { + b.CycleAutocomplete() + return + } + c := b.GetActiveCursor() l := b.LineBytes(0) l = util.SliceStart(l, c.X) @@ -172,23 +176,15 @@ func (h *InfoPane) InsertTab() { args := bytes.Split(l, []byte{' '}) cmd := string(args[0]) - var ins string - var suggestions []string if len(args) == 1 { - ins, suggestions = CommandComplete(b) + b.Autocomplete(CommandComplete) } else { if action, ok := commands[cmd]; ok { if action.completer != nil { - ins, suggestions = action.completer(b) + b.Autocomplete(action.completer) } } } - - if len(suggestions) == 1 { - b.Insert(c.Loc, ins) - } else if len(suggestions) > 1 { - h.MakeSuggestions(suggestions) - } } func (h *InfoPane) InsertNewline() { if !h.HasYN { diff --git a/cmd/micro/buffer/autocomplete.go b/cmd/micro/buffer/autocomplete.go index e03f07dd..12dbc0b5 100644 --- a/cmd/micro/buffer/autocomplete.go +++ b/cmd/micro/buffer/autocomplete.go @@ -10,14 +10,47 @@ import ( "github.com/zyedidia/micro/cmd/micro/util" ) -type Completer func(*Buffer) (string, []string) +// A Completer is a function that takes a buffer and returns info +// describing what autocompletions should be inserted at the current +// cursor location +// It returns a list of string suggestions which will be inserted at +// the current cursor location if selected as well as a list of +// suggestion names which can be displayed in a autocomplete box or +// other UI element +type Completer func(*Buffer) ([]string, []string) func (b *Buffer) GetSuggestions() { } func (b *Buffer) Autocomplete(c Completer) { + b.Completions, b.Suggestions = c(b) + if len(b.Completions) != len(b.Suggestions) || len(b.Completions) == 0 { + return + } + b.CurSuggestion = -1 + b.CycleAutocomplete() +} +func (b *Buffer) CycleAutocomplete() { + prevSuggestion := b.CurSuggestion + + b.CurSuggestion++ + if b.CurSuggestion >= len(b.Suggestions) || b.CurSuggestion < 0 { + b.CurSuggestion = 0 + } + + c := b.GetActiveCursor() + start := c.Loc + end := c.Loc + if prevSuggestion < len(b.Suggestions) && prevSuggestion >= 0 { + start = end.Move(-utf8.RuneCountInString(b.Completions[prevSuggestion]), b) + } else { + end = start.Move(1, b) + } + + b.Replace(start, end, b.Completions[b.CurSuggestion]) + b.HasSuggestions = true } func GetArg(b *Buffer) (string, int) { @@ -39,7 +72,7 @@ func GetArg(b *Buffer) (string, int) { } // FileComplete autocompletes filenames -func FileComplete(b *Buffer) (string, []string) { +func FileComplete(b *Buffer) ([]string, []string) { c := b.GetActiveCursor() input, argstart := GetArg(b) @@ -57,10 +90,11 @@ func FileComplete(b *Buffer) (string, []string) { files, err = ioutil.ReadDir(".") } - var suggestions []string if err != nil { - return "", suggestions + return nil, nil } + + var suggestions []string for _, f := range files { name := f.Name() if f.IsDir() { @@ -71,19 +105,16 @@ func FileComplete(b *Buffer) (string, []string) { } } - var chosen string - if len(suggestions) == 1 { + completions := make([]string, len(suggestions)) + for i := range suggestions { + var complete string if len(dirs) > 1 { - chosen = strings.Join(dirs[:len(dirs)-1], sep) + sep + suggestions[0] + complete = strings.Join(dirs[:len(dirs)-1], sep) + sep + suggestions[i] } else { - chosen = suggestions[0] - } - } else { - if len(dirs) > 1 { - chosen = strings.Join(dirs[:len(dirs)-1], sep) + sep + complete = suggestions[i] } + completions[i] = util.SliceEndStr(complete, c.X-argstart) } - chosen = util.SliceEndStr(chosen, c.X-argstart) - return chosen, suggestions + return completions, suggestions } diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index 6c81a636..83b22549 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -52,14 +52,19 @@ type SharedBuffer struct { Type BufType isModified bool + // Whether or not suggestions can be autocompleted must be shared because + // it changes based on how the buffer has changed + HasSuggestions bool } func (b *SharedBuffer) insert(pos Loc, value []byte) { b.isModified = true + b.HasSuggestions = false b.LineArray.insert(pos, value) } func (b *SharedBuffer) remove(start, end Loc) []byte { b.isModified = true + b.HasSuggestions = false return b.LineArray.remove(start, end) } @@ -94,7 +99,9 @@ type Buffer struct { // Settings customized by the user Settings map[string]interface{} - Suggestions []string + Suggestions []string + Completions []string + CurSuggestion int Messages []*Message } diff --git a/cmd/micro/display/infowindow.go b/cmd/micro/display/infowindow.go index 4474781d..5fa5c41b 100644 --- a/cmd/micro/display/infowindow.go +++ b/cmd/micro/display/infowindow.go @@ -190,8 +190,7 @@ func (i *InfoWindow) Display() { } } - if i.HasSuggestions { - i.HasSuggestions = false + if i.HasSuggestions && len(i.Suggestions) > 1 { statusLineStyle := config.DefStyle.Reverse(true) if style, ok := config.Colorscheme["statusline"]; ok { statusLineStyle = style @@ -201,9 +200,13 @@ func (i *InfoWindow) Display() { keymenuOffset = len(keydisplay) } x := 0 - for _, s := range i.Suggestions { + for j, s := range i.Suggestions { + style := statusLineStyle + if i.CurSuggestion == j { + style = style.Reverse(true) + } for _, r := range s { - screen.Screen.SetContent(x, i.Y-keymenuOffset-1, r, nil, statusLineStyle) + screen.Screen.SetContent(x, i.Y-keymenuOffset-1, r, nil, style) x++ if x >= i.Width { return diff --git a/cmd/micro/info/infobuffer.go b/cmd/micro/info/infobuffer.go index d1d299c4..aebdd347 100644 --- a/cmd/micro/info/infobuffer.go +++ b/cmd/micro/info/infobuffer.go @@ -16,8 +16,6 @@ type InfoBuf struct { HasError bool HasYN bool - HasSuggestions bool - PromptType string Msg string @@ -161,8 +159,3 @@ func (i *InfoBuf) Reset() { i.HasPrompt, i.HasMessage, i.HasError = false, false, false i.HasGutter = false } - -func (i *InfoBuf) MakeSuggestions(s []string) { - i.HasSuggestions = true - i.Suggestions = s -} From ef18fc572c55f4323fa6472e40e41cd7f180f383 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 24 Jan 2019 18:25:59 -0500 Subject: [PATCH 099/231] Add more option support --- cmd/micro/action/actions.go | 6 +++--- cmd/micro/action/command.go | 7 +++---- cmd/micro/buffer/buffer.go | 6 +++++- cmd/micro/buffer/save.go | 24 ++++++++++++------------ 4 files changed, 23 insertions(+), 20 deletions(-) diff --git a/cmd/micro/action/actions.go b/cmd/micro/action/actions.go index d66991e4..f567cb24 100644 --- a/cmd/micro/action/actions.go +++ b/cmd/micro/action/actions.go @@ -471,7 +471,7 @@ func (h *BufPane) IndentSelection() bool { h.Cursor.SetSelectionEnd(buffer.Loc{X: endX + indentsize + 1, Y: endY}) } } - h.Cursor.Relocate() + h.Buf.RelocateCursors() return true } @@ -490,7 +490,7 @@ func (h *BufPane) OutdentLine() bool { } h.Buf.Remove(buffer.Loc{X: 0, Y: h.Cursor.Y}, buffer.Loc{X: 1, Y: h.Cursor.Y}) } - h.Cursor.Relocate() + h.Buf.RelocateCursors() return true } @@ -515,7 +515,7 @@ func (h *BufPane) OutdentSelection() bool { h.Buf.Remove(buffer.Loc{X: 0, Y: y}, buffer.Loc{X: 1, Y: y}) } } - h.Cursor.Relocate() + h.Buf.RelocateCursors() return true } diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 7a34c6de..bcec0ee8 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -587,7 +587,7 @@ func (h *BufPane) ReplaceCmd(args []string) { } if !found || !inRange(locs[0]) || !inRange(locs[1]) { h.Cursor.ResetSelection() - h.Cursor.Relocate() + h.Buf.RelocateCursors() return } @@ -606,7 +606,7 @@ func (h *BufPane) ReplaceCmd(args []string) { searchLoc.X += utf8.RuneCount(replace) } else if canceled { h.Cursor.ResetSelection() - h.Cursor.Relocate() + h.Buf.RelocateCursors() return } if searching { @@ -617,8 +617,7 @@ func (h *BufPane) ReplaceCmd(args []string) { doReplacement() } - // TODO: relocate all cursors? - h.Cursor.Relocate() + h.Buf.RelocateCursors() if nreplaced > 1 { InfoBar.Message("Replaced ", nreplaced, " occurrences of ", search) diff --git a/cmd/micro/buffer/buffer.go b/cmd/micro/buffer/buffer.go index 83b22549..9de2b967 100644 --- a/cmd/micro/buffer/buffer.go +++ b/cmd/micro/buffer/buffer.go @@ -306,10 +306,14 @@ func (b *Buffer) ReOpen() error { b.ModTime, err = GetModTime(b.Path) b.isModified = false + b.RelocateCursors() + return err +} + +func (b *Buffer) RelocateCursors() { for _, c := range b.cursors { c.Relocate() } - return err } // RuneAt returns the rune at a given location in the buffer diff --git a/cmd/micro/buffer/save.go b/cmd/micro/buffer/save.go index 7337baad..a6e34f6e 100644 --- a/cmd/micro/buffer/save.go +++ b/cmd/micro/buffer/save.go @@ -8,6 +8,8 @@ import ( "os/exec" "os/signal" "path/filepath" + "unicode" + "unicode/utf8" "github.com/zyedidia/micro/cmd/micro/config" . "github.com/zyedidia/micro/cmd/micro/util" @@ -58,19 +60,17 @@ func (b *Buffer) SaveAs(filename string) error { return errors.New("Cannot save scratch buffer") } - // TODO: rmtrailingws and updaterules b.UpdateRules() - // if b.Settings["rmtrailingws"].(bool) { - // for i, l := range b.lines { - // pos := len(bytes.TrimRightFunc(l.data, unicode.IsSpace)) - // - // if pos < len(l.data) { - // b.deleteToEnd(Loc{pos, i}) - // } - // } - // - // b.Cursor.Relocate() - // } + if b.Settings["rmtrailingws"].(bool) { + for i, l := range b.lines { + leftover := utf8.RuneCount(bytes.TrimRightFunc(l.data, unicode.IsSpace)) + + linelen := utf8.RuneCount(l.data) + b.Remove(Loc{leftover, i}, Loc{linelen, i}) + } + + b.RelocateCursors() + } if b.Settings["eofnewline"].(bool) { end := b.End() From 253790de9961ae6dc8d329b8d891cd80d24beeaa Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 24 Jan 2019 22:10:57 -0500 Subject: [PATCH 100/231] Sort suggestions and cycle back --- cmd/micro/action/infocomplete.go | 5 +++++ cmd/micro/action/infopane.go | 8 +++++++- cmd/micro/buffer/autocomplete.go | 16 ++++++++++++---- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/cmd/micro/action/infocomplete.go b/cmd/micro/action/infocomplete.go index 99a3844a..28d701e6 100644 --- a/cmd/micro/action/infocomplete.go +++ b/cmd/micro/action/infocomplete.go @@ -2,6 +2,7 @@ package action import ( "bytes" + "sort" "strings" "github.com/zyedidia/micro/cmd/micro/buffer" @@ -25,6 +26,7 @@ func CommandComplete(b *buffer.Buffer) ([]string, []string) { } } + sort.Strings(suggestions) completions := make([]string, len(suggestions)) for i := range suggestions { completions[i] = util.SliceEndStr(suggestions[i], c.X-argstart) @@ -47,6 +49,7 @@ func HelpComplete(b *buffer.Buffer) ([]string, []string) { } } + sort.Strings(suggestions) completions := make([]string, len(suggestions)) for i := range suggestions { completions[i] = util.SliceEndStr(suggestions[i], c.X-argstart) @@ -101,6 +104,7 @@ func OptionComplete(b *buffer.Buffer) ([]string, []string) { } } + sort.Strings(suggestions) completions := make([]string, len(suggestions)) for i := range suggestions { completions[i] = util.SliceEndStr(suggestions[i], c.X-argstart) @@ -185,6 +189,7 @@ func OptionValueComplete(b *buffer.Buffer) ([]string, []string) { } } } + sort.Strings(suggestions) completions := make([]string, len(suggestions)) for i := range suggestions { diff --git a/cmd/micro/action/infopane.go b/cmd/micro/action/infopane.go index 406476bc..975d9f6e 100644 --- a/cmd/micro/action/infopane.go +++ b/cmd/micro/action/infopane.go @@ -151,6 +151,7 @@ var InfoOverrides = map[string]InfoKeyAction{ "CursorDown": (*InfoPane).CursorDown, "InsertNewline": (*InfoPane).InsertNewline, "InsertTab": (*InfoPane).InsertTab, + "OutdentLine": (*InfoPane).CycleBack, "Escape": (*InfoPane).Escape, "Quit": (*InfoPane).Quit, "QuitAll": (*InfoPane).QuitAll, @@ -165,7 +166,7 @@ func (h *InfoPane) CursorDown() { func (h *InfoPane) InsertTab() { b := h.Buf if b.HasSuggestions { - b.CycleAutocomplete() + b.CycleAutocomplete(true) return } @@ -186,6 +187,11 @@ func (h *InfoPane) InsertTab() { } } } +func (h *InfoPane) CycleBack() { + if h.Buf.HasSuggestions { + h.Buf.CycleAutocomplete(false) + } +} func (h *InfoPane) InsertNewline() { if !h.HasYN { h.DonePrompt(false) diff --git a/cmd/micro/buffer/autocomplete.go b/cmd/micro/buffer/autocomplete.go index 12dbc0b5..7ac0d983 100644 --- a/cmd/micro/buffer/autocomplete.go +++ b/cmd/micro/buffer/autocomplete.go @@ -4,6 +4,7 @@ import ( "bytes" "io/ioutil" "os" + "sort" "strings" "unicode/utf8" @@ -29,15 +30,21 @@ func (b *Buffer) Autocomplete(c Completer) { return } b.CurSuggestion = -1 - b.CycleAutocomplete() + b.CycleAutocomplete(true) } -func (b *Buffer) CycleAutocomplete() { +func (b *Buffer) CycleAutocomplete(forward bool) { prevSuggestion := b.CurSuggestion - b.CurSuggestion++ - if b.CurSuggestion >= len(b.Suggestions) || b.CurSuggestion < 0 { + if forward { + b.CurSuggestion++ + } else { + b.CurSuggestion-- + } + if b.CurSuggestion >= len(b.Suggestions) { b.CurSuggestion = 0 + } else if b.CurSuggestion < 0 { + b.CurSuggestion = len(b.Suggestions) - 1 } c := b.GetActiveCursor() @@ -105,6 +112,7 @@ func FileComplete(b *Buffer) ([]string, []string) { } } + sort.Strings(suggestions) completions := make([]string, len(suggestions)) for i := range suggestions { var complete string From b97ded90583ee800e0156c81634449c0943edcf6 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 24 Jan 2019 22:28:03 -0500 Subject: [PATCH 101/231] Fix view relocate bug --- cmd/micro/display/bufwindow.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/cmd/micro/display/bufwindow.go b/cmd/micro/display/bufwindow.go index 003e6e7a..2675ba82 100644 --- a/cmd/micro/display/bufwindow.go +++ b/cmd/micro/display/bufwindow.go @@ -24,9 +24,10 @@ type BufWindow struct { sline *StatusLine - lineHeight []int - gutterOffset int - drawStatus bool + lineHeight []int + hasCalcHeight bool + gutterOffset int + drawStatus bool } // NewBufWindow creates a new window at a location in the screen with a width and height @@ -57,6 +58,7 @@ func (v *View) SetView(view *View) { func (w *BufWindow) Resize(width, height int) { w.Width, w.Height = width, height w.lineHeight = make([]int, height) + w.hasCalcHeight = false // This recalculates lineHeight w.GetMouseLoc(buffer.Loc{width, height}) } @@ -135,12 +137,13 @@ func (w *BufWindow) Bottomline() int { // Returns true if the window location is moved func (w *BufWindow) Relocate() bool { b := w.Buf + // how many buffer lines are in the view height := w.Bottomline() + 1 - w.StartLine h := w.Height if w.drawStatus { h-- } - if b.LinesNum() <= h { + if b.LinesNum() <= h || !w.hasCalcHeight { height = w.Height } ret := false @@ -226,8 +229,6 @@ func (w *BufWindow) GetMouseLoc(svloc buffer.Loc) buffer.Loc { nColsBeforeStart-- } - w.lineHeight[vloc.Y] = bloc.Y - totalwidth := w.StartCol - nColsBeforeStart if svloc.X <= vloc.X+w.X && vloc.Y+w.Y == svloc.Y { @@ -274,7 +275,6 @@ func (w *BufWindow) GetMouseLoc(svloc buffer.Loc) buffer.Loc { break } vloc.X = 0 - w.lineHeight[vloc.Y] = bloc.Y // This will draw an empty line number because the current line is wrapped vloc.X += maxLineNumLength + 1 } @@ -364,6 +364,7 @@ func (w *BufWindow) displayBuffer() { bufHeight-- } + w.hasCalcHeight = true start := w.StartLine if b.Settings["syntax"].(bool) && b.SyntaxDef != nil { if start > 0 && b.Rehighlight(start-1) { From 453e96358a610435e1e80ca075556532c71d99c0 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 24 Jan 2019 22:46:07 -0500 Subject: [PATCH 102/231] Fix option flags --- cmd/micro/micro.go | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index a0c1d860..4032178f 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -84,6 +84,16 @@ func InitFlags() { } os.Exit(0) } + for k, v := range optionFlags { + if *v != "" { + nativeValue, err := config.GetNativeValue(k, config.GlobalSettings[k], *v) + if err != nil { + screen.TermMessage(err) + continue + } + config.GlobalSettings[k] = nativeValue + } + } } // LoadInput determines which files should be loaded into buffers @@ -150,17 +160,21 @@ func main() { var err error InitLog() - InitFlags() - err = config.InitConfigDir(*flagConfigDir) - if err != nil { - screen.TermMessage(err) - } + config.InitRuntimeFiles() err = config.ReadSettings() if err != nil { screen.TermMessage(err) } config.InitGlobalSettings() + + InitFlags() + + err = config.InitConfigDir(*flagConfigDir) + if err != nil { + screen.TermMessage(err) + } + action.InitBindings() action.InitCommands() From f4a3465a0877300f33825b2ddd64266a3a9a99c6 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 25 Jan 2019 22:33:45 -0500 Subject: [PATCH 103/231] Start plugin support and plugin manager --- cmd/micro/lua/lua.go | 7 +- cmd/micro/lua/plugin.go | 67 ++++++++++++++ cmd/micro/manager/fetch.go | 46 +++++++++ cmd/micro/manager/manager_test.go | 72 +++++++++++++++ cmd/micro/manager/parser.go | 149 ++++++++++++++++++++++++++++++ 5 files changed, 338 insertions(+), 3 deletions(-) create mode 100644 cmd/micro/lua/plugin.go create mode 100644 cmd/micro/manager/fetch.go create mode 100644 cmd/micro/manager/manager_test.go create mode 100644 cmd/micro/manager/parser.go diff --git a/cmd/micro/lua/lua.go b/cmd/micro/lua/lua.go index 7fa44a80..853f10fa 100644 --- a/cmd/micro/lua/lua.go +++ b/cmd/micro/lua/lua.go @@ -1,6 +1,7 @@ package lua import ( + "bytes" "errors" "fmt" "io" @@ -28,10 +29,10 @@ func init() { } // LoadFile loads a lua file -func LoadFile(module string, file string, data string) error { - pluginDef := "local P = {};" + module + " = P;setmetatable(" + module + ", {__index = _G});setfenv(1, P);" +func LoadFile(module string, file string, data []byte) error { + pluginDef := []byte("module(\"" + module + "\", package.seeall)") - if fn, err := L.Load(strings.NewReader(pluginDef+data), file); err != nil { + if fn, err := L.Load(bytes.NewReader(append(pluginDef, data...)), file); err != nil { return err } else { L.Push(fn) diff --git a/cmd/micro/lua/plugin.go b/cmd/micro/lua/plugin.go new file mode 100644 index 00000000..d68003c4 --- /dev/null +++ b/cmd/micro/lua/plugin.go @@ -0,0 +1,67 @@ +package lua + +import ( + "errors" + "io/ioutil" + "strings" + + lua "github.com/yuin/gopher-lua" +) + +var ErrNoSuchFunction = errors.New("No such function exists") + +type Plugin struct { + name string + files []string +} + +func NewPluginFromDir(name string, dir string) (*Plugin, error) { + files, err := ioutil.ReadDir(dir) + if err != nil { + return nil, err + } + + p := new(Plugin) + p.name = name + + for _, f := range files { + if strings.HasSuffix(f.Name(), ".lua") { + p.files = append(p.files, dir+f.Name()) + } + } + + return p, nil +} + +func (p *Plugin) Load() error { + for _, f := range p.files { + dat, err := ioutil.ReadFile(f) + if err != nil { + return err + } + err = LoadFile(p.name, f, dat) + if err != nil { + return err + } + } + return nil +} + +func (p *Plugin) Call(fn string, args ...lua.LValue) (lua.LValue, error) { + plug := L.GetGlobal(p.name) + luafn := L.GetField(plug, fn) + if luafn == lua.LNil { + return nil, ErrNoSuchFunction + } + err := L.CallByParam(lua.P{ + Fn: luafn, + NRet: 1, + Protect: true, + }, args...) + if err != nil { + return nil, err + } + ret := L.Get(-1) + L.Pop(1) + return ret, nil +} diff --git a/cmd/micro/manager/fetch.go b/cmd/micro/manager/fetch.go new file mode 100644 index 00000000..97245676 --- /dev/null +++ b/cmd/micro/manager/fetch.go @@ -0,0 +1,46 @@ +package manager + +import ( + "io/ioutil" + "net/http" + "path" + + "github.com/zyedidia/micro/cmd/micro/config" + git "gopkg.in/src-d/go-git.v4" +) + +// NewPluginInfoFromUrl creates a new PluginInfo from a URL by fetching +// the data at that URL and parsing the JSON (running a GET request at +// the URL should return the JSON for a plugin info) +func NewPluginInfoFromUrl(url string) (*PluginInfo, error) { + resp, err := http.Get(url) + if err != nil { + return nil, err + } + + defer resp.Body.Close() + dat, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + return NewPluginInfo(dat) +} + +// FetchRepo downloads this plugin's git repository +func (i *PluginInfo) FetchRepo() error { + _, err := git.PlainClone(path.Join(config.ConfigDir, "plugin", i.Name), false, &git.CloneOptions{ + URL: i.Repo, + Progress: nil, + }) + + return err +} + +func (i *PluginInfo) FetchDeps() error { + return nil +} + +func (i *PluginInfo) PostInstallHooks() error { + return nil +} diff --git a/cmd/micro/manager/manager_test.go b/cmd/micro/manager/manager_test.go new file mode 100644 index 00000000..d39e1f12 --- /dev/null +++ b/cmd/micro/manager/manager_test.go @@ -0,0 +1,72 @@ +package manager + +import ( + "fmt" + "testing" + + "github.com/zyedidia/micro/cmd/micro/config" +) + +func init() { + config.InitConfigDir("./") +} + +var sampleJson = []byte(`{ + "name": "comment", + "description": "Plugin to auto comment or uncomment lines", + "website": "https://github.com/micro-editor/comment-plugin", + "repository": "https://github.com/micro-editor/comment-plugin", + "versions": [ + { + "version": "1.0.6", + "tag": "v1.0.6", + "require": { + "micro": ">=1.1.0" + } + }, + { + "version": "1.0.5", + "tag": "v1.0.5", + "require": { + "micro": ">=1.0.0" + } + }, + { + "version": "1.0.6-dev", + "tag": "nightly", + "require": { + "micro": ">=1.3.1" + } + } + ] +}`) + +func TestParse(t *testing.T) { + _, err := NewPluginInfo(sampleJson) + if err != nil { + t.Error(err) + } +} + +// func TestFetch(t *testing.T) { +// i, err := NewPluginInfoFromUrl("http://zbyedidia.webfactional.com/micro/test.json") +// if err != nil { +// t.Error(err) +// } +// +// err = i.FetchRepo() +// if err != nil { +// t.Error(err) +// } +// } + +func TestList(t *testing.T) { + is, err := ListInstalledPlugins() + if err != nil { + t.Error(err) + } + + for _, i := range is { + fmt.Println(i.Name) + } +} diff --git a/cmd/micro/manager/parser.go b/cmd/micro/manager/parser.go new file mode 100644 index 00000000..d4eb63b0 --- /dev/null +++ b/cmd/micro/manager/parser.go @@ -0,0 +1,149 @@ +package manager + +import ( + "bytes" + "encoding/json" + "errors" + "io/ioutil" + "path" + + "github.com/blang/semver" + "github.com/zyedidia/micro/cmd/micro/config" + git "gopkg.in/src-d/go-git.v4" +) + +var ( + ErrMissingName = errors.New("Missing or empty name field") + ErrMissingDesc = errors.New("Missing or empty description field") + ErrMissingSite = errors.New("Missing or empty website field") + ErrMissingRepo = errors.New("Missing or empty repository field") + ErrMissingVersions = errors.New("Missing or empty versions field") + ErrMissingTag = errors.New("Missing or empty tag field") + ErrMissingRequire = errors.New("Missing or empty require field") +) + +type Plugin struct { + info *PluginInfo + dir string + repo *git.Repository + // Index into info.Versions showing the current version of this plugin + Version int +} + +// PluginVersion describes a version for a plugin as well as any dependencies that +// version might have +// This marks a tag that corresponds to the version in the git repo +type PluginVersion struct { + Vers semver.Version + Vstr string `json:"version"` + Tag string `json:"tag"` + Require map[string]string `json:"require"` +} + +// PluginInfo contains all the needed info about a plugin +type PluginInfo struct { + Name string `json:"name"` + Desc string `json:"description"` + Site string `json:"website"` + Repo string `json:"repository"` + Versions []PluginVersion `json:"versions"` +} + +// NewPluginInfo parses a JSON input into a valid PluginInfo struct +// Returns an error if there are any missing fields or any invalid fields +// There are no optional fields in a plugin info json file +func NewPluginInfo(data []byte) (*PluginInfo, error) { + var info PluginInfo + + dec := json.NewDecoder(bytes.NewReader(data)) + dec.DisallowUnknownFields() // Force errors + + if err := dec.Decode(&info); err != nil { + return nil, err + } + + if len(info.Name) == 0 { + return nil, ErrMissingName + } else if len(info.Desc) == 0 { + return nil, ErrMissingDesc + } else if len(info.Site) == 0 { + return nil, ErrMissingSite + } else if len(info.Repo) == 0 { + return nil, ErrMissingRepo + } else if err := info.makeVersions(); err != nil { + return nil, err + } + + return &info, nil +} + +func (i *PluginInfo) makeVersions() error { + if len(i.Versions) == 0 { + return ErrMissingVersions + } + + for _, v := range i.Versions { + sv, err := semver.Make(v.Vstr) + if err != nil { + return err + } + v.Vers = sv + if len(v.Tag) == 0 { + return ErrMissingTag + } else if v.Require == nil { + return ErrMissingRequire + } + } + + return nil +} + +// InstalledPlugins searches the config directory for all installed plugins +// and returns the list of plugin infos corresponding to them +func ListInstalledPlugins() ([]*Plugin, error) { + pdir := path.Join(config.ConfigDir, "plugin") + + files, err := ioutil.ReadDir(pdir) + if err != nil { + return nil, err + } + + var plugins []*Plugin + + for _, dir := range files { + if dir.IsDir() { + files, err := ioutil.ReadDir(path.Join(pdir, dir.Name())) + if err != nil { + return nil, err + } + + for _, f := range files { + if f.Name() == "repo.json" { + dat, err := ioutil.ReadFile(path.Join(pdir, dir.Name(), "repo.json")) + if err != nil { + return nil, err + } + info, err := NewPluginInfo(dat) + if err != nil { + return nil, err + } + + dirname := path.Join(pdir, dir.Name()) + r, err := git.PlainOpen(dirname) + if err != nil { + return nil, err + } + + p := &Plugin{ + info: info, + dir: dirname, + repo: r, + } + + plugins = append(plugins, p) + } + } + } + } + return plugins, nil +} From c7f2c9c704711b0d2da16cc42fa1a51f7dd09454 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 26 Jan 2019 01:09:50 -0500 Subject: [PATCH 104/231] More plugin manager work --- cmd/micro/manager/fetch.go | 37 ++++++++++++++++-- cmd/micro/manager/{parser.go => plugin.go} | 45 ++++++++++++++++------ 2 files changed, 68 insertions(+), 14 deletions(-) rename cmd/micro/manager/{parser.go => plugin.go} (79%) diff --git a/cmd/micro/manager/fetch.go b/cmd/micro/manager/fetch.go index 97245676..4e68b5a1 100644 --- a/cmd/micro/manager/fetch.go +++ b/cmd/micro/manager/fetch.go @@ -3,6 +3,7 @@ package manager import ( "io/ioutil" "net/http" + "os" "path" "github.com/zyedidia/micro/cmd/micro/config" @@ -29,18 +30,48 @@ func NewPluginInfoFromUrl(url string) (*PluginInfo, error) { // FetchRepo downloads this plugin's git repository func (i *PluginInfo) FetchRepo() error { - _, err := git.PlainClone(path.Join(config.ConfigDir, "plugin", i.Name), false, &git.CloneOptions{ + dir := path.Join(config.ConfigDir, "plugin", i.Name) + r, err := git.PlainClone(dir, false, &git.CloneOptions{ URL: i.Repo, Progress: nil, }) + if err != nil { + return err + } + + p := &Plugin{ + info: i, + dir: dir, + repo: r, + } + + err = p.ResolveVersion() + if err != nil { + return err + } + err = p.WriteVersion() + return err } -func (i *PluginInfo) FetchDeps() error { +func (p *Plugin) ResolveVersion() error { return nil } -func (i *PluginInfo) PostInstallHooks() error { +func (p *Plugin) WriteVersion() error { + return ioutil.WriteFile(path.Join(p.dir, versionfile), []byte(p.version.String()), os.ModePerm) +} + +func (p *Plugin) FetchDeps() error { + _, err := ListInstalledPlugins() + if err != nil { + return err + } + + return nil +} + +func (p *Plugin) PostInstallHooks() error { return nil } diff --git a/cmd/micro/manager/parser.go b/cmd/micro/manager/plugin.go similarity index 79% rename from cmd/micro/manager/parser.go rename to cmd/micro/manager/plugin.go index d4eb63b0..4b54f268 100644 --- a/cmd/micro/manager/parser.go +++ b/cmd/micro/manager/plugin.go @@ -22,12 +22,25 @@ var ( ErrMissingRequire = errors.New("Missing or empty require field") ) +const ( + infojson = "plugin.json" + versionfile = "version.lock" +) + type Plugin struct { - info *PluginInfo - dir string - repo *git.Repository - // Index into info.Versions showing the current version of this plugin - Version int + info *PluginInfo + dir string + repo *git.Repository + version semver.Version // currently installed version +} + +func (p *Plugin) GetRequires() *PluginVersion { + for _, v := range p.info.Versions { + if p.version.Equals(v.Vers) { + return &v + } + } + return nil } // PluginVersion describes a version for a plugin as well as any dependencies that @@ -98,7 +111,7 @@ func (i *PluginInfo) makeVersions() error { return nil } -// InstalledPlugins searches the config directory for all installed plugins +// ListInstalledPlugins searches the config directory for all installed plugins // and returns the list of plugin infos corresponding to them func ListInstalledPlugins() ([]*Plugin, error) { pdir := path.Join(config.ConfigDir, "plugin") @@ -118,8 +131,8 @@ func ListInstalledPlugins() ([]*Plugin, error) { } for _, f := range files { - if f.Name() == "repo.json" { - dat, err := ioutil.ReadFile(path.Join(pdir, dir.Name(), "repo.json")) + if f.Name() == infojson { + dat, err := ioutil.ReadFile(path.Join(pdir, dir.Name(), infojson)) if err != nil { return nil, err } @@ -128,6 +141,15 @@ func ListInstalledPlugins() ([]*Plugin, error) { return nil, err } + versiondat, err := ioutil.ReadFile(path.Join(pdir, dir.Name(), versionfile)) + if err != nil { + return nil, err + } + sv, err := semver.Make(string(versiondat)) + if err != nil { + return nil, err + } + dirname := path.Join(pdir, dir.Name()) r, err := git.PlainOpen(dirname) if err != nil { @@ -135,9 +157,10 @@ func ListInstalledPlugins() ([]*Plugin, error) { } p := &Plugin{ - info: info, - dir: dirname, - repo: r, + info: info, + dir: dirname, + repo: r, + version: sv, } plugins = append(plugins, p) From 0612af15904c5a3449c888debbeaff70657d882a Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 3 Feb 2019 23:17:24 -0500 Subject: [PATCH 105/231] Change project layout and use go.mod --- .gitmodules | 72 ------------------- Makefile | 8 +-- cmd/micro/micro.go | 8 +-- cmd/micro/vendor/github.com/blang/semver | 1 - .../vendor/github.com/dustin/go-humanize | 1 - cmd/micro/vendor/github.com/flynn/json5 | 1 - cmd/micro/vendor/github.com/gdamore/encoding | 1 - cmd/micro/vendor/github.com/go-errors/errors | 1 - cmd/micro/vendor/github.com/jtolds/gls | 1 - .../vendor/github.com/lucasb-eyer/go-colorful | 1 - cmd/micro/vendor/github.com/mattn/go-isatty | 1 - .../vendor/github.com/mattn/go-runewidth | 1 - .../vendor/github.com/mitchellh/go-homedir | 1 - cmd/micro/vendor/github.com/sergi/go-diff | 1 - .../github.com/smartystreets/assertions | 1 - .../vendor/github.com/smartystreets/goconvey | 1 - cmd/micro/vendor/github.com/yuin/gopher-lua | 1 - .../vendor/github.com/zyedidia/clipboard | 1 - cmd/micro/vendor/github.com/zyedidia/glob | 1 - cmd/micro/vendor/github.com/zyedidia/poller | 1 - cmd/micro/vendor/github.com/zyedidia/pty | 1 - cmd/micro/vendor/github.com/zyedidia/tcell | 1 - cmd/micro/vendor/github.com/zyedidia/terminal | 1 - cmd/micro/vendor/golang.org/x/net | 1 - cmd/micro/vendor/golang.org/x/text | 1 - cmd/micro/vendor/gopkg.in/yaml.v2 | 1 - cmd/micro/vendor/layeh.com/gopher-luar | 1 - go.mod | 21 ++++++ go.sum | 39 ++++++++++ {cmd/micro => internal}/action/actions.go | 12 ++-- .../action/actions_other.go | 0 .../action/actions_posix.go | 2 +- {cmd/micro => internal}/action/bindings.go | 4 +- {cmd/micro => internal}/action/bufpane.go | 6 +- {cmd/micro => internal}/action/command.go | 12 ++-- {cmd/micro => internal}/action/events.go | 0 {cmd/micro => internal}/action/globals.go | 0 .../micro => internal}/action/infocomplete.go | 6 +- {cmd/micro => internal}/action/infopane.go | 6 +- {cmd/micro => internal}/action/pane.go | 2 +- {cmd/micro => internal}/action/rawpane.go | 4 +- {cmd/micro => internal}/action/tab.go | 10 +-- {cmd/micro => internal}/action/termpane.go | 6 +- .../micro => internal}/buffer/autocomplete.go | 2 +- {cmd/micro => internal}/buffer/buffer.go | 8 +-- {cmd/micro => internal}/buffer/cursor.go | 2 +- .../micro => internal}/buffer/eventhandler.go | 0 {cmd/micro => internal}/buffer/line_array.go | 2 +- .../buffer/line_array_test.go | 0 {cmd/micro => internal}/buffer/loc.go | 2 +- {cmd/micro => internal}/buffer/message.go | 2 +- {cmd/micro => internal}/buffer/save.go | 4 +- {cmd/micro => internal}/buffer/search.go | 2 +- {cmd/micro => internal}/buffer/serialize.go | 4 +- {cmd/micro => internal}/buffer/settings.go | 4 +- {cmd/micro => internal}/buffer/stack.go | 0 {cmd/micro => internal}/buffer/stack_test.go | 0 {cmd/micro => internal}/config/colorscheme.go | 0 .../config/colorscheme_test.go | 0 {cmd/micro => internal}/config/config.go | 0 {cmd/micro => internal}/config/globals.go | 0 {cmd/micro => internal}/config/rtfiles.go | 0 .../micro => internal}/config/rtfiles_test.go | 0 {cmd/micro => internal}/config/runtime.go | 0 {cmd/micro => internal}/config/settings.go | 2 +- {cmd/micro => internal}/display/bufwindow.go | 8 +-- {cmd/micro => internal}/display/infowindow.go | 10 +-- {cmd/micro => internal}/display/statusline.go | 6 +- {cmd/micro => internal}/display/tabwindow.go | 8 +-- {cmd/micro => internal}/display/termwindow.go | 8 +-- {cmd/micro => internal}/display/uiwindow.go | 8 +-- {cmd/micro => internal}/display/window.go | 2 +- {cmd/micro => internal}/info/gutter.go | 0 {cmd/micro => internal}/info/history.go | 2 +- {cmd/micro => internal}/info/infobuffer.go | 2 +- {cmd/micro => internal}/lua/lua.go | 0 {cmd/micro => internal}/lua/plugin.go | 0 {cmd/micro => internal}/manager/fetch.go | 2 +- .../manager/manager_test.go | 2 +- {cmd/micro => internal}/manager/plugin.go | 2 +- {cmd/micro => internal}/screen/message.go | 0 {cmd/micro => internal}/screen/screen.go | 4 +- {cmd/micro => internal}/shell/shell.go | 4 +- {cmd/micro => internal}/shell/terminal.go | 4 +- {cmd/micro => internal}/util/profile.go | 0 {cmd/micro => internal}/util/util.go | 0 {cmd/micro => internal}/util/util_test.go | 0 {cmd/micro => internal}/views/splits.go | 0 {cmd/micro => internal}/views/splits_test.go | 0 {cmd/micro => pkg}/highlight/ftdetect.go | 0 {cmd/micro => pkg}/highlight/highlighter.go | 0 {cmd/micro => pkg}/highlight/parser.go | 0 {cmd/micro => pkg}/shellwords/LICENSE | 0 {cmd/micro => pkg}/shellwords/README.md | 0 {cmd/micro => pkg}/shellwords/shellwords.go | 0 .../shellwords/shellwords_test.go | 0 {cmd/micro => pkg}/shellwords/util_posix.go | 0 {cmd/micro => pkg}/shellwords/util_windows.go | 0 {cmd/micro => pkg}/terminfo/LICENSE.md | 0 {cmd/micro => pkg}/terminfo/README.md | 0 {cmd/micro => pkg}/terminfo/mkinfo.go | 0 {cmd/micro => pkg}/terminfo/terminfo.go | 0 {cmd/micro => pkg}/terminfo/terminfo_test.go | 0 103 files changed, 154 insertions(+), 194 deletions(-) delete mode 100644 .gitmodules delete mode 160000 cmd/micro/vendor/github.com/blang/semver delete mode 160000 cmd/micro/vendor/github.com/dustin/go-humanize delete mode 160000 cmd/micro/vendor/github.com/flynn/json5 delete mode 160000 cmd/micro/vendor/github.com/gdamore/encoding delete mode 160000 cmd/micro/vendor/github.com/go-errors/errors delete mode 160000 cmd/micro/vendor/github.com/jtolds/gls delete mode 160000 cmd/micro/vendor/github.com/lucasb-eyer/go-colorful delete mode 160000 cmd/micro/vendor/github.com/mattn/go-isatty delete mode 160000 cmd/micro/vendor/github.com/mattn/go-runewidth delete mode 160000 cmd/micro/vendor/github.com/mitchellh/go-homedir delete mode 160000 cmd/micro/vendor/github.com/sergi/go-diff delete mode 160000 cmd/micro/vendor/github.com/smartystreets/assertions delete mode 160000 cmd/micro/vendor/github.com/smartystreets/goconvey delete mode 160000 cmd/micro/vendor/github.com/yuin/gopher-lua delete mode 160000 cmd/micro/vendor/github.com/zyedidia/clipboard delete mode 160000 cmd/micro/vendor/github.com/zyedidia/glob delete mode 160000 cmd/micro/vendor/github.com/zyedidia/poller delete mode 160000 cmd/micro/vendor/github.com/zyedidia/pty delete mode 160000 cmd/micro/vendor/github.com/zyedidia/tcell delete mode 160000 cmd/micro/vendor/github.com/zyedidia/terminal delete mode 160000 cmd/micro/vendor/golang.org/x/net delete mode 160000 cmd/micro/vendor/golang.org/x/text delete mode 160000 cmd/micro/vendor/gopkg.in/yaml.v2 delete mode 160000 cmd/micro/vendor/layeh.com/gopher-luar create mode 100644 go.mod create mode 100644 go.sum rename {cmd/micro => internal}/action/actions.go (99%) rename {cmd/micro => internal}/action/actions_other.go (100%) rename {cmd/micro => internal}/action/actions_posix.go (92%) rename {cmd/micro => internal}/action/bindings.go (99%) rename {cmd/micro => internal}/action/bufpane.go (99%) rename {cmd/micro => internal}/action/command.go (98%) rename {cmd/micro => internal}/action/events.go (100%) rename {cmd/micro => internal}/action/globals.go (100%) rename {cmd/micro => internal}/action/infocomplete.go (97%) rename {cmd/micro => internal}/action/infopane.go (96%) rename {cmd/micro => internal}/action/pane.go (73%) rename {cmd/micro => internal}/action/rawpane.go (88%) rename {cmd/micro => internal}/action/tab.go (96%) rename {cmd/micro => internal}/action/termpane.go (94%) rename {cmd/micro => internal}/buffer/autocomplete.go (98%) rename {cmd/micro => internal}/buffer/buffer.go (98%) rename {cmd/micro => internal}/buffer/cursor.go (99%) rename {cmd/micro => internal}/buffer/eventhandler.go (100%) rename {cmd/micro => internal}/buffer/line_array.go (99%) rename {cmd/micro => internal}/buffer/line_array_test.go (100%) rename {cmd/micro => internal}/buffer/loc.go (98%) rename {cmd/micro => internal}/buffer/message.go (96%) rename {cmd/micro => internal}/buffer/save.go (98%) rename {cmd/micro => internal}/buffer/search.go (98%) rename {cmd/micro => internal}/buffer/serialize.go (95%) rename {cmd/micro => internal}/buffer/settings.go (91%) rename {cmd/micro => internal}/buffer/stack.go (100%) rename {cmd/micro => internal}/buffer/stack_test.go (100%) rename {cmd/micro => internal}/config/colorscheme.go (100%) rename {cmd/micro => internal}/config/colorscheme_test.go (100%) rename {cmd/micro => internal}/config/config.go (100%) rename {cmd/micro => internal}/config/globals.go (100%) rename {cmd/micro => internal}/config/rtfiles.go (100%) rename {cmd/micro => internal}/config/rtfiles_test.go (100%) rename {cmd/micro => internal}/config/runtime.go (100%) rename {cmd/micro => internal}/config/settings.go (99%) rename {cmd/micro => internal}/display/bufwindow.go (98%) rename {cmd/micro => internal}/display/infowindow.go (95%) rename {cmd/micro => internal}/display/statusline.go (95%) rename {cmd/micro => internal}/display/tabwindow.go (91%) rename {cmd/micro => internal}/display/termwindow.go (93%) rename {cmd/micro => internal}/display/uiwindow.go (88%) rename {cmd/micro => internal}/display/window.go (93%) rename {cmd/micro => internal}/info/gutter.go (100%) rename {cmd/micro => internal}/info/history.go (97%) rename {cmd/micro => internal}/info/infobuffer.go (98%) rename {cmd/micro => internal}/lua/lua.go (100%) rename {cmd/micro => internal}/lua/plugin.go (100%) rename {cmd/micro => internal}/manager/fetch.go (96%) rename {cmd/micro => internal}/manager/manager_test.go (96%) rename {cmd/micro => internal}/manager/plugin.go (98%) rename {cmd/micro => internal}/screen/message.go (100%) rename {cmd/micro => internal}/screen/screen.go (96%) rename {cmd/micro => internal}/shell/shell.go (96%) rename {cmd/micro => internal}/shell/terminal.go (96%) rename {cmd/micro => internal}/util/profile.go (100%) rename {cmd/micro => internal}/util/util.go (100%) rename {cmd/micro => internal}/util/util_test.go (100%) rename {cmd/micro => internal}/views/splits.go (100%) rename {cmd/micro => internal}/views/splits_test.go (100%) rename {cmd/micro => pkg}/highlight/ftdetect.go (100%) rename {cmd/micro => pkg}/highlight/highlighter.go (100%) rename {cmd/micro => pkg}/highlight/parser.go (100%) rename {cmd/micro => pkg}/shellwords/LICENSE (100%) rename {cmd/micro => pkg}/shellwords/README.md (100%) rename {cmd/micro => pkg}/shellwords/shellwords.go (100%) rename {cmd/micro => pkg}/shellwords/shellwords_test.go (100%) rename {cmd/micro => pkg}/shellwords/util_posix.go (100%) rename {cmd/micro => pkg}/shellwords/util_windows.go (100%) rename {cmd/micro => pkg}/terminfo/LICENSE.md (100%) rename {cmd/micro => pkg}/terminfo/README.md (100%) rename {cmd/micro => pkg}/terminfo/mkinfo.go (100%) rename {cmd/micro => pkg}/terminfo/terminfo.go (100%) rename {cmd/micro => pkg}/terminfo/terminfo_test.go (100%) diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 107a9482..00000000 --- a/.gitmodules +++ /dev/null @@ -1,72 +0,0 @@ -[submodule "cmd/micro/vendor/github.com/blang/semver"] - path = cmd/micro/vendor/github.com/blang/semver - url = https://github.com/blang/semver -[submodule "cmd/micro/vendor/github.com/dustin/go-humanize"] - path = cmd/micro/vendor/github.com/dustin/go-humanize - url = https://github.com/dustin/go-humanize -[submodule "cmd/micro/vendor/github.com/go-errors/errors"] - path = cmd/micro/vendor/github.com/go-errors/errors - url = https://github.com/go-errors/errors -[submodule "cmd/micro/vendor/github.com/mattn/go-isatty"] - path = cmd/micro/vendor/github.com/mattn/go-isatty - url = https://github.com/mattn/go-isatty -[submodule "cmd/micro/vendor/github.com/mattn/go-runewidth"] - path = cmd/micro/vendor/github.com/mattn/go-runewidth - url = https://github.com/mattn/go-runewidth -[submodule "cmd/micro/vendor/github.com/mitchellh/go-homedir"] - path = cmd/micro/vendor/github.com/mitchellh/go-homedir - url = https://github.com/mitchellh/go-homedir -[submodule "cmd/micro/vendor/github.com/sergi/go-diff"] - path = cmd/micro/vendor/github.com/sergi/go-diff - url = https://github.com/sergi/go-diff -[submodule "cmd/micro/vendor/github.com/yuin/gopher-lua"] - path = cmd/micro/vendor/github.com/yuin/gopher-lua - url = https://github.com/yuin/gopher-lua -[submodule "cmd/micro/vendor/golang.org/x/net"] - path = cmd/micro/vendor/golang.org/x/net - url = https://go.googlesource.com/net -[submodule "cmd/micro/vendor/github.com/zyedidia/clipboard"] - path = cmd/micro/vendor/github.com/zyedidia/clipboard - url = https://github.com/zyedidia/clipboard -[submodule "cmd/micro/vendor/github.com/zyedidia/glob"] - path = cmd/micro/vendor/github.com/zyedidia/glob - url = https://github.com/zyedidia/glob -[submodule "cmd/micro/vendor/github.com/zyedidia/tcell"] - path = cmd/micro/vendor/github.com/zyedidia/tcell - url = https://github.com/zyedidia/tcell -[submodule "cmd/micro/vendor/github.com/gdamore/encoding"] - path = cmd/micro/vendor/github.com/gdamore/encoding - url = https://github.com/gdamore/encoding -[submodule "cmd/micro/vendor/golang.org/x/text"] - path = cmd/micro/vendor/golang.org/x/text - url = https://go.googlesource.com/text -[submodule "cmd/micro/vendor/github.com/lucasb-eyer/go-colorful"] - path = cmd/micro/vendor/github.com/lucasb-eyer/go-colorful - url = https://github.com/lucasb-eyer/go-colorful -[submodule "cmd/micro/vendor/layeh.com/gopher-luar"] - path = cmd/micro/vendor/layeh.com/gopher-luar - url = https://github.com/layeh/gopher-luar -[submodule "cmd/micro/vendor/gopkg.in/yaml.v2"] - path = cmd/micro/vendor/gopkg.in/yaml.v2 - url = https://gopkg.in/yaml.v2 -[submodule "cmd/micro/vendor/github.com/zyedidia/poller"] - path = cmd/micro/vendor/github.com/zyedidia/poller - url = https://github.com/zyedidia/poller -[submodule "cmd/micro/vendor/github.com/flynn/json5"] - path = cmd/micro/vendor/github.com/flynn/json5 - url = https://github.com/flynn/json5 -[submodule "cmd/micro/vendor/github.com/zyedidia/terminal"] - path = cmd/micro/vendor/github.com/zyedidia/terminal - url = https://github.com/zyedidia/terminal -[submodule "cmd/micro/vendor/github.com/zyedidia/pty"] - path = cmd/micro/vendor/github.com/zyedidia/pty - url = https://github.com/zyedidia/pty -[submodule "cmd/micro/vendor/github.com/smartystreets/goconvey"] - path = cmd/micro/vendor/github.com/smartystreets/goconvey - url = https://github.com/smartystreets/goconvey -[submodule "cmd/micro/vendor/github.com/jtolds/gls"] - path = cmd/micro/vendor/github.com/jtolds/gls - url = https://github.com/jtolds/gls -[submodule "cmd/micro/vendor/github.com/smartystreets/assertions"] - path = cmd/micro/vendor/github.com/smartystreets/assertions - url = https://github.com/smartystreets/assertions diff --git a/Makefile b/Makefile index db9441a6..e4f274e4 100644 --- a/Makefile +++ b/Makefile @@ -35,17 +35,13 @@ install-quick: update: git pull - git submodule update --init # Builds the runtime runtime: go get -u github.com/jteeuwen/go-bindata/... $(GOBIN)/go-bindata -pkg config -nomemcopy -nometadata -o runtime.go runtime/... - mv runtime.go cmd/micro/config - gofmt -w cmd/micro/config/runtime.go - -test: - go test ./cmd/micro + mv runtime.go internal/config + gofmt -w internal/config/runtime.go clean: rm -f micro diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 4032178f..ef83f9ae 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -9,10 +9,10 @@ import ( "github.com/go-errors/errors" isatty "github.com/mattn/go-isatty" - "github.com/zyedidia/micro/cmd/micro/action" - "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/internal/action" + "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/screen" "github.com/zyedidia/tcell" ) diff --git a/cmd/micro/vendor/github.com/blang/semver b/cmd/micro/vendor/github.com/blang/semver deleted file mode 160000 index 4a1e882c..00000000 --- a/cmd/micro/vendor/github.com/blang/semver +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4a1e882c79dcf4ec00d2e29fac74b9c8938d5052 diff --git a/cmd/micro/vendor/github.com/dustin/go-humanize b/cmd/micro/vendor/github.com/dustin/go-humanize deleted file mode 160000 index 259d2a10..00000000 --- a/cmd/micro/vendor/github.com/dustin/go-humanize +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 259d2a102b871d17f30e3cd9881a642961a1e486 diff --git a/cmd/micro/vendor/github.com/flynn/json5 b/cmd/micro/vendor/github.com/flynn/json5 deleted file mode 160000 index 7620272e..00000000 --- a/cmd/micro/vendor/github.com/flynn/json5 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7620272ed63390e979cf5882d2fa0506fe2a8db5 diff --git a/cmd/micro/vendor/github.com/gdamore/encoding b/cmd/micro/vendor/github.com/gdamore/encoding deleted file mode 160000 index b23993cb..00000000 --- a/cmd/micro/vendor/github.com/gdamore/encoding +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b23993cbb6353f0e6aa98d0ee318a34728f628b9 diff --git a/cmd/micro/vendor/github.com/go-errors/errors b/cmd/micro/vendor/github.com/go-errors/errors deleted file mode 160000 index 8fa88b06..00000000 --- a/cmd/micro/vendor/github.com/go-errors/errors +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8fa88b06e5974e97fbf9899a7f86a344bfd1f105 diff --git a/cmd/micro/vendor/github.com/jtolds/gls b/cmd/micro/vendor/github.com/jtolds/gls deleted file mode 160000 index 77f18212..00000000 --- a/cmd/micro/vendor/github.com/jtolds/gls +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 77f18212c9c7edc9bd6a33d383a7b545ce62f064 diff --git a/cmd/micro/vendor/github.com/lucasb-eyer/go-colorful b/cmd/micro/vendor/github.com/lucasb-eyer/go-colorful deleted file mode 160000 index c900de9d..00000000 --- a/cmd/micro/vendor/github.com/lucasb-eyer/go-colorful +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c900de9dbbc73129068f5af6a823068fc5f2308c diff --git a/cmd/micro/vendor/github.com/mattn/go-isatty b/cmd/micro/vendor/github.com/mattn/go-isatty deleted file mode 160000 index fc9e8d8e..00000000 --- a/cmd/micro/vendor/github.com/mattn/go-isatty +++ /dev/null @@ -1 +0,0 @@ -Subproject commit fc9e8d8ef48496124e79ae0df75490096eccf6fe diff --git a/cmd/micro/vendor/github.com/mattn/go-runewidth b/cmd/micro/vendor/github.com/mattn/go-runewidth deleted file mode 160000 index 97311d9f..00000000 --- a/cmd/micro/vendor/github.com/mattn/go-runewidth +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 97311d9f7767e3d6f422ea06661bc2c7a19e8a5d diff --git a/cmd/micro/vendor/github.com/mitchellh/go-homedir b/cmd/micro/vendor/github.com/mitchellh/go-homedir deleted file mode 160000 index b8bc1bf7..00000000 --- a/cmd/micro/vendor/github.com/mitchellh/go-homedir +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b8bc1bf767474819792c23f32d8286a45736f1c6 diff --git a/cmd/micro/vendor/github.com/sergi/go-diff b/cmd/micro/vendor/github.com/sergi/go-diff deleted file mode 160000 index feef008d..00000000 --- a/cmd/micro/vendor/github.com/sergi/go-diff +++ /dev/null @@ -1 +0,0 @@ -Subproject commit feef008d51ad2b3778f85d387ccf91735543008d diff --git a/cmd/micro/vendor/github.com/smartystreets/assertions b/cmd/micro/vendor/github.com/smartystreets/assertions deleted file mode 160000 index 0b37b35e..00000000 --- a/cmd/micro/vendor/github.com/smartystreets/assertions +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0b37b35ec7434b77e77a4bb29b79677cced992ea diff --git a/cmd/micro/vendor/github.com/smartystreets/goconvey b/cmd/micro/vendor/github.com/smartystreets/goconvey deleted file mode 160000 index e5b2b7c9..00000000 --- a/cmd/micro/vendor/github.com/smartystreets/goconvey +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e5b2b7c9111590d019a696c7800593f666e1a7f4 diff --git a/cmd/micro/vendor/github.com/yuin/gopher-lua b/cmd/micro/vendor/github.com/yuin/gopher-lua deleted file mode 160000 index b402f311..00000000 --- a/cmd/micro/vendor/github.com/yuin/gopher-lua +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b402f3114ec730d8bddb074a6c137309f561aa78 diff --git a/cmd/micro/vendor/github.com/zyedidia/clipboard b/cmd/micro/vendor/github.com/zyedidia/clipboard deleted file mode 160000 index 4611e809..00000000 --- a/cmd/micro/vendor/github.com/zyedidia/clipboard +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4611e809d8b1a3051c11d11f4b610c44df73fa38 diff --git a/cmd/micro/vendor/github.com/zyedidia/glob b/cmd/micro/vendor/github.com/zyedidia/glob deleted file mode 160000 index dd4023a6..00000000 --- a/cmd/micro/vendor/github.com/zyedidia/glob +++ /dev/null @@ -1 +0,0 @@ -Subproject commit dd4023a66dc351ae26e592d21cd133b5b143f3d8 diff --git a/cmd/micro/vendor/github.com/zyedidia/poller b/cmd/micro/vendor/github.com/zyedidia/poller deleted file mode 160000 index ab096829..00000000 --- a/cmd/micro/vendor/github.com/zyedidia/poller +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ab09682913b79f402713d1df1977dedc19eb25ac diff --git a/cmd/micro/vendor/github.com/zyedidia/pty b/cmd/micro/vendor/github.com/zyedidia/pty deleted file mode 160000 index 30364665..00000000 --- a/cmd/micro/vendor/github.com/zyedidia/pty +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 30364665a2445782b12bcb2db75f16ce684da907 diff --git a/cmd/micro/vendor/github.com/zyedidia/tcell b/cmd/micro/vendor/github.com/zyedidia/tcell deleted file mode 160000 index 208b6e8f..00000000 --- a/cmd/micro/vendor/github.com/zyedidia/tcell +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 208b6e8f2f8d763a4accac33f3bdbd7dc9c71c01 diff --git a/cmd/micro/vendor/github.com/zyedidia/terminal b/cmd/micro/vendor/github.com/zyedidia/terminal deleted file mode 160000 index 1760577d..00000000 --- a/cmd/micro/vendor/github.com/zyedidia/terminal +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1760577dbc0058809dd115a6bfe5999b6b24ab53 diff --git a/cmd/micro/vendor/golang.org/x/net b/cmd/micro/vendor/golang.org/x/net deleted file mode 160000 index 1a68b131..00000000 --- a/cmd/micro/vendor/golang.org/x/net +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1a68b1313cf4ad7778376e82641197b60c02f65c diff --git a/cmd/micro/vendor/golang.org/x/text b/cmd/micro/vendor/golang.org/x/text deleted file mode 160000 index 210eee5c..00000000 --- a/cmd/micro/vendor/golang.org/x/text +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 210eee5cf7323015d097341bcf7166130d001cd8 diff --git a/cmd/micro/vendor/gopkg.in/yaml.v2 b/cmd/micro/vendor/gopkg.in/yaml.v2 deleted file mode 160000 index cd8b52f8..00000000 --- a/cmd/micro/vendor/gopkg.in/yaml.v2 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit cd8b52f8269e0feb286dfeef29f8fe4d5b397e0b diff --git a/cmd/micro/vendor/layeh.com/gopher-luar b/cmd/micro/vendor/layeh.com/gopher-luar deleted file mode 160000 index 16281577..00000000 --- a/cmd/micro/vendor/layeh.com/gopher-luar +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 16281577dff29557258daa8ca9bc9b2e05f451f2 diff --git a/go.mod b/go.mod new file mode 100644 index 00000000..2ce1f48f --- /dev/null +++ b/go.mod @@ -0,0 +1,21 @@ +module github.com/zyedidia/micro + +require ( + github.com/dustin/go-humanize v1.0.0 + github.com/flynn/json5 v0.0.0-20160717195620-7620272ed633 + github.com/gdamore/encoding v1.0.0 // indirect + github.com/go-errors/errors v1.0.1 + github.com/lucasb-eyer/go-colorful v0.0.0-20181028223441-12d3b2882a08 // indirect + github.com/mattn/go-isatty v0.0.4 + github.com/mattn/go-runewidth v0.0.4 + github.com/mitchellh/go-homedir v1.1.0 + github.com/sergi/go-diff v1.0.0 + github.com/zyedidia/clipboard v0.0.0-20180718195219-bd31d747117d + github.com/zyedidia/glob v0.0.0-20170209203856-dd4023a66dc3 + github.com/zyedidia/poller v2.0.0+incompatible // indirect + github.com/zyedidia/pty v1.1.2-0.20180126010845-30364665a244 + github.com/zyedidia/tcell v0.0.0-20190204041104-518c15c24302 + github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415 + golang.org/x/text v0.3.0 + gopkg.in/yaml.v2 v2.2.2 +) diff --git a/go.sum b/go.sum new file mode 100644 index 00000000..894c39cf --- /dev/null +++ b/go.sum @@ -0,0 +1,39 @@ +github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/flynn/json5 v0.0.0-20160717195620-7620272ed633 h1:xJMmr4GMYIbALX5edyoDIOQpc2bOQTeJiWMeCl9lX/8= +github.com/flynn/json5 v0.0.0-20160717195620-7620272ed633/go.mod h1:NJDK3/o7abx6PP54EOe0G0n0RLmhCo9xv61gUYpI0EY= +github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko= +github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= +github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/lucasb-eyer/go-colorful v0.0.0-20181028223441-12d3b2882a08 h1:5MnxBC15uMxFv5FY/J/8vzyaBiArCOkMdFT9Jsw78iY= +github.com/lucasb-eyer/go-colorful v0.0.0-20181028223441-12d3b2882a08/go.mod h1:NXg0ArsFk0Y01623LgUqoqcouGDB+PwCCQlrwrG6xJ4= +github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/zyedidia/clipboard v0.0.0-20180718195219-bd31d747117d h1:Lhqt2eo+rgM8aswvM7nTtAMVm8ARPWzkE9n6eZDOccY= +github.com/zyedidia/clipboard v0.0.0-20180718195219-bd31d747117d/go.mod h1:WDk3p8GiZV9+xFWlSo8qreeoLhW6Ik692rqXk+cNeRY= +github.com/zyedidia/glob v0.0.0-20170209203856-dd4023a66dc3 h1:oMHjjTLfGXVuyOQBYj5/td9WC0mw4g1xDBPovIqmHew= +github.com/zyedidia/glob v0.0.0-20170209203856-dd4023a66dc3/go.mod h1:YKbIYP//Eln8eDgAJGI3IDvR3s4Tv9Z9TGIOumiyQ5c= +github.com/zyedidia/poller v2.0.0+incompatible h1:DMOvB0EXz2JTokqOKfxPWN/8xXFJbO+m4vNhMkOY7Lo= +github.com/zyedidia/poller v2.0.0+incompatible/go.mod h1:vZXJOHGDcuK08GXhF6IAY0ZFd2WcgOR5DOTp84Uk5eE= +github.com/zyedidia/pty v1.1.1 h1:SGOF3egDZGCGbpB5DPlg+yabbAuVkUtXVeNTDFeEytM= +github.com/zyedidia/pty v1.1.1/go.mod h1:4y9l9yJZNxRa7GB/fB+mmDmGkG3CqmzLf4vUxGGotEA= +github.com/zyedidia/pty v1.1.2-0.20180126010845-30364665a244 h1:DZ7mZvUV5+oXeXV1E1t6ZIXRihHYyqYVIOSA+RGo88A= +github.com/zyedidia/pty v1.1.2-0.20180126010845-30364665a244/go.mod h1:4y9l9yJZNxRa7GB/fB+mmDmGkG3CqmzLf4vUxGGotEA= +github.com/zyedidia/tcell v0.0.0-20171006165952-a221f2faf4f9 h1:RpdSFmZxJJy2rMbQi2LcejNPEquLmB4sCVIq7F4Ha+g= +github.com/zyedidia/tcell v0.0.0-20171006165952-a221f2faf4f9/go.mod h1:yXgdp23+aW8OMENYVBvpKoeiBtjaVWJ9HhpPDu6LBfM= +github.com/zyedidia/tcell v0.0.0-20190204041104-518c15c24302 h1:ruNSURcO81y+J+XnqrLLt+zxcdFtq8QNoZfWXSsybYQ= +github.com/zyedidia/tcell v0.0.0-20190204041104-518c15c24302/go.mod h1:yXgdp23+aW8OMENYVBvpKoeiBtjaVWJ9HhpPDu6LBfM= +github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415 h1:752dTQ5OatJ9M5ULK2+9lor+nzyZz+LYDo3WGngg3Rc= +github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415/go.mod h1:8leT8G0Cm8NoJHdrrKHyR9MirWoF4YW7pZh06B6H+1E= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/cmd/micro/action/actions.go b/internal/action/actions.go similarity index 99% rename from cmd/micro/action/actions.go rename to internal/action/actions.go index f567cb24..3ecce1aa 100644 --- a/cmd/micro/action/actions.go +++ b/internal/action/actions.go @@ -8,12 +8,12 @@ import ( "unicode/utf8" "github.com/zyedidia/clipboard" - "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/screen" - "github.com/zyedidia/micro/cmd/micro/shell" - "github.com/zyedidia/micro/cmd/micro/shellwords" - "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/screen" + "github.com/zyedidia/micro/internal/shell" + "github.com/zyedidia/micro/internal/util" + "github.com/zyedidia/micro/pkg/shellwords" "github.com/zyedidia/tcell" ) diff --git a/cmd/micro/action/actions_other.go b/internal/action/actions_other.go similarity index 100% rename from cmd/micro/action/actions_other.go rename to internal/action/actions_other.go diff --git a/cmd/micro/action/actions_posix.go b/internal/action/actions_posix.go similarity index 92% rename from cmd/micro/action/actions_posix.go rename to internal/action/actions_posix.go index 98609bbe..1b69d943 100644 --- a/cmd/micro/action/actions_posix.go +++ b/internal/action/actions_posix.go @@ -5,7 +5,7 @@ package action import ( "syscall" - "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/internal/screen" ) // Suspend sends micro to the background. This is the same as pressing CtrlZ in most unix programs. diff --git a/cmd/micro/action/bindings.go b/internal/action/bindings.go similarity index 99% rename from cmd/micro/action/bindings.go rename to internal/action/bindings.go index fb908cdb..a1b1e7d5 100644 --- a/cmd/micro/action/bindings.go +++ b/internal/action/bindings.go @@ -9,8 +9,8 @@ import ( "unicode" "github.com/flynn/json5" - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/screen" "github.com/zyedidia/tcell" ) diff --git a/cmd/micro/action/bufpane.go b/internal/action/bufpane.go similarity index 99% rename from cmd/micro/action/bufpane.go rename to internal/action/bufpane.go index 9aac7b09..ac6c674f 100644 --- a/cmd/micro/action/bufpane.go +++ b/internal/action/bufpane.go @@ -4,9 +4,9 @@ import ( "strings" "time" - "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/micro/cmd/micro/display" - "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/internal/display" + "github.com/zyedidia/micro/internal/screen" "github.com/zyedidia/tcell" ) diff --git a/cmd/micro/action/command.go b/internal/action/command.go similarity index 98% rename from cmd/micro/action/command.go rename to internal/action/command.go index bcec0ee8..4db56207 100644 --- a/cmd/micro/action/command.go +++ b/internal/action/command.go @@ -10,12 +10,12 @@ import ( "strings" "unicode/utf8" - "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/screen" - "github.com/zyedidia/micro/cmd/micro/shell" - "github.com/zyedidia/micro/cmd/micro/shellwords" - "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/screen" + "github.com/zyedidia/micro/internal/shell" + "github.com/zyedidia/micro/internal/util" + "github.com/zyedidia/micro/pkg/shellwords" ) // A Command contains information about how to execute a command diff --git a/cmd/micro/action/events.go b/internal/action/events.go similarity index 100% rename from cmd/micro/action/events.go rename to internal/action/events.go diff --git a/cmd/micro/action/globals.go b/internal/action/globals.go similarity index 100% rename from cmd/micro/action/globals.go rename to internal/action/globals.go diff --git a/cmd/micro/action/infocomplete.go b/internal/action/infocomplete.go similarity index 97% rename from cmd/micro/action/infocomplete.go rename to internal/action/infocomplete.go index 28d701e6..9179b63b 100644 --- a/cmd/micro/action/infocomplete.go +++ b/internal/action/infocomplete.go @@ -5,9 +5,9 @@ import ( "sort" "strings" - "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/util" ) // This file is meant (for now) for autocompletion in command mode, not diff --git a/cmd/micro/action/infopane.go b/internal/action/infopane.go similarity index 96% rename from cmd/micro/action/infopane.go rename to internal/action/infopane.go index 975d9f6e..1ab7c281 100644 --- a/cmd/micro/action/infopane.go +++ b/internal/action/infopane.go @@ -3,9 +3,9 @@ package action import ( "bytes" - "github.com/zyedidia/micro/cmd/micro/display" - "github.com/zyedidia/micro/cmd/micro/info" - "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/micro/internal/display" + "github.com/zyedidia/micro/internal/info" + "github.com/zyedidia/micro/internal/util" "github.com/zyedidia/tcell" ) diff --git a/cmd/micro/action/pane.go b/internal/action/pane.go similarity index 73% rename from cmd/micro/action/pane.go rename to internal/action/pane.go index 0a4f2f6e..f6f68d3e 100644 --- a/cmd/micro/action/pane.go +++ b/internal/action/pane.go @@ -1,7 +1,7 @@ package action import ( - "github.com/zyedidia/micro/cmd/micro/display" + "github.com/zyedidia/micro/internal/display" ) type Pane interface { diff --git a/cmd/micro/action/rawpane.go b/internal/action/rawpane.go similarity index 88% rename from cmd/micro/action/rawpane.go rename to internal/action/rawpane.go index 113c938c..cdeade47 100644 --- a/cmd/micro/action/rawpane.go +++ b/internal/action/rawpane.go @@ -4,8 +4,8 @@ import ( "fmt" "reflect" - "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/micro/cmd/micro/display" + "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/internal/display" "github.com/zyedidia/tcell" ) diff --git a/cmd/micro/action/tab.go b/internal/action/tab.go similarity index 96% rename from cmd/micro/action/tab.go rename to internal/action/tab.go index 2c6ce8ac..45a9f3db 100644 --- a/cmd/micro/action/tab.go +++ b/internal/action/tab.go @@ -1,11 +1,11 @@ package action import ( - "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/display" - "github.com/zyedidia/micro/cmd/micro/screen" - "github.com/zyedidia/micro/cmd/micro/views" + "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/display" + "github.com/zyedidia/micro/internal/screen" + "github.com/zyedidia/micro/internal/views" "github.com/zyedidia/tcell" ) diff --git a/cmd/micro/action/termpane.go b/internal/action/termpane.go similarity index 94% rename from cmd/micro/action/termpane.go rename to internal/action/termpane.go index 2340b3ae..5a934567 100644 --- a/cmd/micro/action/termpane.go +++ b/internal/action/termpane.go @@ -4,9 +4,9 @@ import ( "os" "github.com/zyedidia/clipboard" - "github.com/zyedidia/micro/cmd/micro/display" - "github.com/zyedidia/micro/cmd/micro/screen" - "github.com/zyedidia/micro/cmd/micro/shell" + "github.com/zyedidia/micro/internal/display" + "github.com/zyedidia/micro/internal/screen" + "github.com/zyedidia/micro/internal/shell" "github.com/zyedidia/tcell" "github.com/zyedidia/terminal" ) diff --git a/cmd/micro/buffer/autocomplete.go b/internal/buffer/autocomplete.go similarity index 98% rename from cmd/micro/buffer/autocomplete.go rename to internal/buffer/autocomplete.go index 7ac0d983..c5577b6f 100644 --- a/cmd/micro/buffer/autocomplete.go +++ b/internal/buffer/autocomplete.go @@ -8,7 +8,7 @@ import ( "strings" "unicode/utf8" - "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/micro/internal/util" ) // A Completer is a function that takes a buffer and returns info diff --git a/cmd/micro/buffer/buffer.go b/internal/buffer/buffer.go similarity index 98% rename from cmd/micro/buffer/buffer.go rename to internal/buffer/buffer.go index 9de2b967..7496db93 100644 --- a/cmd/micro/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -12,10 +12,10 @@ import ( "time" "unicode/utf8" - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/highlight" - "github.com/zyedidia/micro/cmd/micro/screen" - . "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/pkg/highlight" + "github.com/zyedidia/micro/internal/screen" + . "github.com/zyedidia/micro/internal/util" "golang.org/x/text/encoding/htmlindex" "golang.org/x/text/encoding/unicode" "golang.org/x/text/transform" diff --git a/cmd/micro/buffer/cursor.go b/internal/buffer/cursor.go similarity index 99% rename from cmd/micro/buffer/cursor.go rename to internal/buffer/cursor.go index 3bb94c2c..f3d6d059 100644 --- a/cmd/micro/buffer/cursor.go +++ b/internal/buffer/cursor.go @@ -4,7 +4,7 @@ import ( "unicode/utf8" "github.com/zyedidia/clipboard" - "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/micro/internal/util" ) // InBounds returns whether the given location is a valid character position in the given buffer diff --git a/cmd/micro/buffer/eventhandler.go b/internal/buffer/eventhandler.go similarity index 100% rename from cmd/micro/buffer/eventhandler.go rename to internal/buffer/eventhandler.go diff --git a/cmd/micro/buffer/line_array.go b/internal/buffer/line_array.go similarity index 99% rename from cmd/micro/buffer/line_array.go rename to internal/buffer/line_array.go index 64352c11..dcbf2e43 100644 --- a/cmd/micro/buffer/line_array.go +++ b/internal/buffer/line_array.go @@ -5,7 +5,7 @@ import ( "io" "unicode/utf8" - "github.com/zyedidia/micro/cmd/micro/highlight" + "github.com/zyedidia/micro/pkg/highlight" ) // Finds the byte index of the nth rune in a byte slice diff --git a/cmd/micro/buffer/line_array_test.go b/internal/buffer/line_array_test.go similarity index 100% rename from cmd/micro/buffer/line_array_test.go rename to internal/buffer/line_array_test.go diff --git a/cmd/micro/buffer/loc.go b/internal/buffer/loc.go similarity index 98% rename from cmd/micro/buffer/loc.go rename to internal/buffer/loc.go index be99610d..0fa682b1 100644 --- a/cmd/micro/buffer/loc.go +++ b/internal/buffer/loc.go @@ -3,7 +3,7 @@ package buffer import ( "unicode/utf8" - "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/micro/internal/util" ) // Loc stores a location diff --git a/cmd/micro/buffer/message.go b/internal/buffer/message.go similarity index 96% rename from cmd/micro/buffer/message.go rename to internal/buffer/message.go index 3b9e3ad4..8f072333 100644 --- a/cmd/micro/buffer/message.go +++ b/internal/buffer/message.go @@ -1,7 +1,7 @@ package buffer import ( - "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/internal/config" "github.com/zyedidia/tcell" ) diff --git a/cmd/micro/buffer/save.go b/internal/buffer/save.go similarity index 98% rename from cmd/micro/buffer/save.go rename to internal/buffer/save.go index a6e34f6e..8597810d 100644 --- a/cmd/micro/buffer/save.go +++ b/internal/buffer/save.go @@ -11,8 +11,8 @@ import ( "unicode" "unicode/utf8" - "github.com/zyedidia/micro/cmd/micro/config" - . "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/micro/internal/config" + . "github.com/zyedidia/micro/internal/util" "golang.org/x/text/encoding" "golang.org/x/text/encoding/htmlindex" "golang.org/x/text/transform" diff --git a/cmd/micro/buffer/search.go b/internal/buffer/search.go similarity index 98% rename from cmd/micro/buffer/search.go rename to internal/buffer/search.go index 5157a0bc..587ca5e9 100644 --- a/cmd/micro/buffer/search.go +++ b/internal/buffer/search.go @@ -4,7 +4,7 @@ import ( "regexp" "unicode/utf8" - "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/micro/internal/util" ) func (b *Buffer) findDown(r *regexp.Regexp, start, end Loc) ([2]Loc, bool) { diff --git a/cmd/micro/buffer/serialize.go b/internal/buffer/serialize.go similarity index 95% rename from cmd/micro/buffer/serialize.go rename to internal/buffer/serialize.go index 821f0c7a..b559e764 100644 --- a/cmd/micro/buffer/serialize.go +++ b/internal/buffer/serialize.go @@ -7,8 +7,8 @@ import ( "os" "time" - "github.com/zyedidia/micro/cmd/micro/config" - . "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/micro/internal/config" + . "github.com/zyedidia/micro/internal/util" "golang.org/x/text/encoding/unicode" ) diff --git a/cmd/micro/buffer/settings.go b/internal/buffer/settings.go similarity index 91% rename from cmd/micro/buffer/settings.go rename to internal/buffer/settings.go index fb66d5d9..b56608be 100644 --- a/cmd/micro/buffer/settings.go +++ b/internal/buffer/settings.go @@ -1,8 +1,8 @@ package buffer import ( - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/screen" ) // SetOption sets a given option to a value just for this buffer diff --git a/cmd/micro/buffer/stack.go b/internal/buffer/stack.go similarity index 100% rename from cmd/micro/buffer/stack.go rename to internal/buffer/stack.go diff --git a/cmd/micro/buffer/stack_test.go b/internal/buffer/stack_test.go similarity index 100% rename from cmd/micro/buffer/stack_test.go rename to internal/buffer/stack_test.go diff --git a/cmd/micro/config/colorscheme.go b/internal/config/colorscheme.go similarity index 100% rename from cmd/micro/config/colorscheme.go rename to internal/config/colorscheme.go diff --git a/cmd/micro/config/colorscheme_test.go b/internal/config/colorscheme_test.go similarity index 100% rename from cmd/micro/config/colorscheme_test.go rename to internal/config/colorscheme_test.go diff --git a/cmd/micro/config/config.go b/internal/config/config.go similarity index 100% rename from cmd/micro/config/config.go rename to internal/config/config.go diff --git a/cmd/micro/config/globals.go b/internal/config/globals.go similarity index 100% rename from cmd/micro/config/globals.go rename to internal/config/globals.go diff --git a/cmd/micro/config/rtfiles.go b/internal/config/rtfiles.go similarity index 100% rename from cmd/micro/config/rtfiles.go rename to internal/config/rtfiles.go diff --git a/cmd/micro/config/rtfiles_test.go b/internal/config/rtfiles_test.go similarity index 100% rename from cmd/micro/config/rtfiles_test.go rename to internal/config/rtfiles_test.go diff --git a/cmd/micro/config/runtime.go b/internal/config/runtime.go similarity index 100% rename from cmd/micro/config/runtime.go rename to internal/config/runtime.go diff --git a/cmd/micro/config/settings.go b/internal/config/settings.go similarity index 99% rename from cmd/micro/config/settings.go rename to internal/config/settings.go index 8bf7f3fe..2740d957 100644 --- a/cmd/micro/config/settings.go +++ b/internal/config/settings.go @@ -11,7 +11,7 @@ import ( "github.com/flynn/json5" "github.com/zyedidia/glob" - "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/micro/internal/util" "golang.org/x/text/encoding/htmlindex" ) diff --git a/cmd/micro/display/bufwindow.go b/internal/display/bufwindow.go similarity index 98% rename from cmd/micro/display/bufwindow.go rename to internal/display/bufwindow.go index 2675ba82..80e0f668 100644 --- a/cmd/micro/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -5,10 +5,10 @@ import ( "unicode/utf8" runewidth "github.com/mattn/go-runewidth" - "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/screen" - "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/screen" + "github.com/zyedidia/micro/internal/util" "github.com/zyedidia/tcell" ) diff --git a/cmd/micro/display/infowindow.go b/internal/display/infowindow.go similarity index 95% rename from cmd/micro/display/infowindow.go rename to internal/display/infowindow.go index 5fa5c41b..40519433 100644 --- a/cmd/micro/display/infowindow.go +++ b/internal/display/infowindow.go @@ -4,11 +4,11 @@ import ( "unicode/utf8" runewidth "github.com/mattn/go-runewidth" - "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/info" - "github.com/zyedidia/micro/cmd/micro/screen" - "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/info" + "github.com/zyedidia/micro/internal/screen" + "github.com/zyedidia/micro/internal/util" "github.com/zyedidia/tcell" ) diff --git a/cmd/micro/display/statusline.go b/internal/display/statusline.go similarity index 95% rename from cmd/micro/display/statusline.go rename to internal/display/statusline.go index f03345f0..ec7d382a 100644 --- a/cmd/micro/display/statusline.go +++ b/internal/display/statusline.go @@ -8,9 +8,9 @@ import ( "strconv" "unicode/utf8" - "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/screen" ) // StatusLine represents the information line at the bottom diff --git a/cmd/micro/display/tabwindow.go b/internal/display/tabwindow.go similarity index 91% rename from cmd/micro/display/tabwindow.go rename to internal/display/tabwindow.go index 48c4c8b0..698dbf84 100644 --- a/cmd/micro/display/tabwindow.go +++ b/internal/display/tabwindow.go @@ -3,10 +3,10 @@ package display import ( "unicode/utf8" - "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/screen" - "github.com/zyedidia/micro/cmd/micro/util" + "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/screen" + "github.com/zyedidia/micro/internal/util" ) type TabWindow struct { diff --git a/cmd/micro/display/termwindow.go b/internal/display/termwindow.go similarity index 93% rename from cmd/micro/display/termwindow.go rename to internal/display/termwindow.go index a8c6bf01..45150948 100644 --- a/cmd/micro/display/termwindow.go +++ b/internal/display/termwindow.go @@ -3,10 +3,10 @@ package display import ( "unicode/utf8" - "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/screen" - "github.com/zyedidia/micro/cmd/micro/shell" + "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/screen" + "github.com/zyedidia/micro/internal/shell" "github.com/zyedidia/tcell" "github.com/zyedidia/terminal" ) diff --git a/cmd/micro/display/uiwindow.go b/internal/display/uiwindow.go similarity index 88% rename from cmd/micro/display/uiwindow.go rename to internal/display/uiwindow.go index 493bd5c9..bb273ecc 100644 --- a/cmd/micro/display/uiwindow.go +++ b/internal/display/uiwindow.go @@ -1,10 +1,10 @@ package display import ( - "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/screen" - "github.com/zyedidia/micro/cmd/micro/views" + "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/screen" + "github.com/zyedidia/micro/internal/views" ) type UIWindow struct { diff --git a/cmd/micro/display/window.go b/internal/display/window.go similarity index 93% rename from cmd/micro/display/window.go rename to internal/display/window.go index 5983de70..d2d4742a 100644 --- a/cmd/micro/display/window.go +++ b/internal/display/window.go @@ -1,7 +1,7 @@ package display import ( - "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/internal/buffer" ) type View struct { diff --git a/cmd/micro/info/gutter.go b/internal/info/gutter.go similarity index 100% rename from cmd/micro/info/gutter.go rename to internal/info/gutter.go diff --git a/cmd/micro/info/history.go b/internal/info/history.go similarity index 97% rename from cmd/micro/info/history.go rename to internal/info/history.go index 18e6bbba..9b98357a 100644 --- a/cmd/micro/info/history.go +++ b/internal/info/history.go @@ -4,7 +4,7 @@ import ( "encoding/gob" "os" - "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/internal/config" ) // LoadHistory attempts to load user history from configDir/buffers/history diff --git a/cmd/micro/info/infobuffer.go b/internal/info/infobuffer.go similarity index 98% rename from cmd/micro/info/infobuffer.go rename to internal/info/infobuffer.go index aebdd347..75ed43ec 100644 --- a/cmd/micro/info/infobuffer.go +++ b/internal/info/infobuffer.go @@ -3,7 +3,7 @@ package info import ( "fmt" - "github.com/zyedidia/micro/cmd/micro/buffer" + "github.com/zyedidia/micro/internal/buffer" ) // The InfoBuf displays messages and other info at the bottom of the screen. diff --git a/cmd/micro/lua/lua.go b/internal/lua/lua.go similarity index 100% rename from cmd/micro/lua/lua.go rename to internal/lua/lua.go diff --git a/cmd/micro/lua/plugin.go b/internal/lua/plugin.go similarity index 100% rename from cmd/micro/lua/plugin.go rename to internal/lua/plugin.go diff --git a/cmd/micro/manager/fetch.go b/internal/manager/fetch.go similarity index 96% rename from cmd/micro/manager/fetch.go rename to internal/manager/fetch.go index 4e68b5a1..529c64dc 100644 --- a/cmd/micro/manager/fetch.go +++ b/internal/manager/fetch.go @@ -6,7 +6,7 @@ import ( "os" "path" - "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/internal/config" git "gopkg.in/src-d/go-git.v4" ) diff --git a/cmd/micro/manager/manager_test.go b/internal/manager/manager_test.go similarity index 96% rename from cmd/micro/manager/manager_test.go rename to internal/manager/manager_test.go index d39e1f12..9db9817c 100644 --- a/cmd/micro/manager/manager_test.go +++ b/internal/manager/manager_test.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/internal/config" ) func init() { diff --git a/cmd/micro/manager/plugin.go b/internal/manager/plugin.go similarity index 98% rename from cmd/micro/manager/plugin.go rename to internal/manager/plugin.go index 4b54f268..5913e378 100644 --- a/cmd/micro/manager/plugin.go +++ b/internal/manager/plugin.go @@ -8,7 +8,7 @@ import ( "path" "github.com/blang/semver" - "github.com/zyedidia/micro/cmd/micro/config" + "github.com/zyedidia/micro/internal/config" git "gopkg.in/src-d/go-git.v4" ) diff --git a/cmd/micro/screen/message.go b/internal/screen/message.go similarity index 100% rename from cmd/micro/screen/message.go rename to internal/screen/message.go diff --git a/cmd/micro/screen/screen.go b/internal/screen/screen.go similarity index 96% rename from cmd/micro/screen/screen.go rename to internal/screen/screen.go index 11c8177f..1e149be7 100644 --- a/cmd/micro/screen/screen.go +++ b/internal/screen/screen.go @@ -5,8 +5,8 @@ import ( "os" "sync" - "github.com/zyedidia/micro/cmd/micro/config" - "github.com/zyedidia/micro/cmd/micro/terminfo" + "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/pkg/terminfo" "github.com/zyedidia/tcell" ) diff --git a/cmd/micro/shell/shell.go b/internal/shell/shell.go similarity index 96% rename from cmd/micro/shell/shell.go rename to internal/shell/shell.go index 7087cfe4..3a00a30f 100644 --- a/cmd/micro/shell/shell.go +++ b/internal/shell/shell.go @@ -9,8 +9,8 @@ import ( "os/signal" "strings" - "github.com/zyedidia/micro/cmd/micro/screen" - "github.com/zyedidia/micro/cmd/micro/shellwords" + "github.com/zyedidia/micro/internal/screen" + "github.com/zyedidia/micro/pkg/shellwords" ) // ExecCommand executes a command using exec diff --git a/cmd/micro/shell/terminal.go b/internal/shell/terminal.go similarity index 96% rename from cmd/micro/shell/terminal.go rename to internal/shell/terminal.go index bfb7fa87..9732e5cb 100644 --- a/cmd/micro/shell/terminal.go +++ b/internal/shell/terminal.go @@ -7,8 +7,8 @@ import ( "os/exec" "strconv" - "github.com/zyedidia/micro/cmd/micro/buffer" - "github.com/zyedidia/micro/cmd/micro/screen" + "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/internal/screen" "github.com/zyedidia/terminal" ) diff --git a/cmd/micro/util/profile.go b/internal/util/profile.go similarity index 100% rename from cmd/micro/util/profile.go rename to internal/util/profile.go diff --git a/cmd/micro/util/util.go b/internal/util/util.go similarity index 100% rename from cmd/micro/util/util.go rename to internal/util/util.go diff --git a/cmd/micro/util/util_test.go b/internal/util/util_test.go similarity index 100% rename from cmd/micro/util/util_test.go rename to internal/util/util_test.go diff --git a/cmd/micro/views/splits.go b/internal/views/splits.go similarity index 100% rename from cmd/micro/views/splits.go rename to internal/views/splits.go diff --git a/cmd/micro/views/splits_test.go b/internal/views/splits_test.go similarity index 100% rename from cmd/micro/views/splits_test.go rename to internal/views/splits_test.go diff --git a/cmd/micro/highlight/ftdetect.go b/pkg/highlight/ftdetect.go similarity index 100% rename from cmd/micro/highlight/ftdetect.go rename to pkg/highlight/ftdetect.go diff --git a/cmd/micro/highlight/highlighter.go b/pkg/highlight/highlighter.go similarity index 100% rename from cmd/micro/highlight/highlighter.go rename to pkg/highlight/highlighter.go diff --git a/cmd/micro/highlight/parser.go b/pkg/highlight/parser.go similarity index 100% rename from cmd/micro/highlight/parser.go rename to pkg/highlight/parser.go diff --git a/cmd/micro/shellwords/LICENSE b/pkg/shellwords/LICENSE similarity index 100% rename from cmd/micro/shellwords/LICENSE rename to pkg/shellwords/LICENSE diff --git a/cmd/micro/shellwords/README.md b/pkg/shellwords/README.md similarity index 100% rename from cmd/micro/shellwords/README.md rename to pkg/shellwords/README.md diff --git a/cmd/micro/shellwords/shellwords.go b/pkg/shellwords/shellwords.go similarity index 100% rename from cmd/micro/shellwords/shellwords.go rename to pkg/shellwords/shellwords.go diff --git a/cmd/micro/shellwords/shellwords_test.go b/pkg/shellwords/shellwords_test.go similarity index 100% rename from cmd/micro/shellwords/shellwords_test.go rename to pkg/shellwords/shellwords_test.go diff --git a/cmd/micro/shellwords/util_posix.go b/pkg/shellwords/util_posix.go similarity index 100% rename from cmd/micro/shellwords/util_posix.go rename to pkg/shellwords/util_posix.go diff --git a/cmd/micro/shellwords/util_windows.go b/pkg/shellwords/util_windows.go similarity index 100% rename from cmd/micro/shellwords/util_windows.go rename to pkg/shellwords/util_windows.go diff --git a/cmd/micro/terminfo/LICENSE.md b/pkg/terminfo/LICENSE.md similarity index 100% rename from cmd/micro/terminfo/LICENSE.md rename to pkg/terminfo/LICENSE.md diff --git a/cmd/micro/terminfo/README.md b/pkg/terminfo/README.md similarity index 100% rename from cmd/micro/terminfo/README.md rename to pkg/terminfo/README.md diff --git a/cmd/micro/terminfo/mkinfo.go b/pkg/terminfo/mkinfo.go similarity index 100% rename from cmd/micro/terminfo/mkinfo.go rename to pkg/terminfo/mkinfo.go diff --git a/cmd/micro/terminfo/terminfo.go b/pkg/terminfo/terminfo.go similarity index 100% rename from cmd/micro/terminfo/terminfo.go rename to pkg/terminfo/terminfo.go diff --git a/cmd/micro/terminfo/terminfo_test.go b/pkg/terminfo/terminfo_test.go similarity index 100% rename from cmd/micro/terminfo/terminfo_test.go rename to pkg/terminfo/terminfo_test.go From 7cd83b436125e6759aa52302dfd1484f0ee76808 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 3 Feb 2019 23:41:39 -0500 Subject: [PATCH 106/231] Fix tooling dependencies --- .gitignore | 3 + .gitmodules | 3 + Makefile | 12 +- go.mod | 2 + go.sum | 4 + tools/build-version.go | 2 +- tools/go-bindata | 1 + tools/semver/json.go | 23 --- tools/semver/semver.go | 418 ----------------------------------------- tools/semver/sort.go | 28 --- tools/semver/sql.go | 30 --- 11 files changed, 19 insertions(+), 507 deletions(-) create mode 100644 .gitmodules create mode 160000 tools/go-bindata delete mode 100644 tools/semver/json.go delete mode 100644 tools/semver/semver.go delete mode 100644 tools/semver/sort.go delete mode 100644 tools/semver/sql.go diff --git a/.gitignore b/.gitignore index 910f4c58..ded313bd 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,6 @@ todo.txt test.txt log.txt *.old +tools/build-version +tools/build-date +tools/info-plist diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..dbbdf7b7 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "tools/go-bindata"] + path = tools/go-bindata + url = https://github.com/zyedidia/go-bindata diff --git a/Makefile b/Makefile index e4f274e4..4135756f 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ GOBIN ?= $(shell go env GOPATH)/bin GOVARS := -X main.Version=$(VERSION) -X main.CommitHash=$(HASH) -X 'main.CompileDate=$(DATE)' -X main.Debug=OFF # Builds micro after checking dependencies but without updating the runtime -build: update +build: go build -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro # Builds micro after building the runtime and checking dependencies @@ -23,7 +23,7 @@ build-quick: go build -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro # Same as 'build' but installs to $GOBIN afterward -install: update +install: go install -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro # Same as 'build-all' but installs to $GOBIN afterward @@ -33,13 +33,11 @@ install-all: runtime install install-quick: go install -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro -update: - git pull - # Builds the runtime runtime: - go get -u github.com/jteeuwen/go-bindata/... - $(GOBIN)/go-bindata -pkg config -nomemcopy -nometadata -o runtime.go runtime/... + git submodule update --init + go build -o tools/ ./tools/go-bindata + tools/go-bindata -pkg config -nomemcopy -nometadata -o runtime.go runtime/... mv runtime.go internal/config gofmt -w internal/config/runtime.go diff --git a/go.mod b/go.mod index 2ce1f48f..4749634a 100644 --- a/go.mod +++ b/go.mod @@ -1,10 +1,12 @@ module github.com/zyedidia/micro require ( + github.com/blang/semver v3.5.1+incompatible // indirect github.com/dustin/go-humanize v1.0.0 github.com/flynn/json5 v0.0.0-20160717195620-7620272ed633 github.com/gdamore/encoding v1.0.0 // indirect github.com/go-errors/errors v1.0.1 + github.com/jteeuwen/go-bindata v3.0.7+incompatible github.com/lucasb-eyer/go-colorful v0.0.0-20181028223441-12d3b2882a08 // indirect github.com/mattn/go-isatty v0.0.4 github.com/mattn/go-runewidth v0.0.4 diff --git a/go.sum b/go.sum index 894c39cf..7714e214 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= +github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/flynn/json5 v0.0.0-20160717195620-7620272ed633 h1:xJMmr4GMYIbALX5edyoDIOQpc2bOQTeJiWMeCl9lX/8= @@ -6,6 +8,8 @@ github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdk github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/jteeuwen/go-bindata v3.0.7+incompatible h1:91Uy4d9SYVr1kyTJ15wJsog+esAZZl7JmEfTkwmhJts= +github.com/jteeuwen/go-bindata v3.0.7+incompatible/go.mod h1:JVvhzYOiGBnFSYRyV00iY8q7/0PThjIYav1p9h5dmKs= github.com/lucasb-eyer/go-colorful v0.0.0-20181028223441-12d3b2882a08 h1:5MnxBC15uMxFv5FY/J/8vzyaBiArCOkMdFT9Jsw78iY= github.com/lucasb-eyer/go-colorful v0.0.0-20181028223441-12d3b2882a08/go.mod h1:NXg0ArsFk0Y01623LgUqoqcouGDB+PwCCQlrwrG6xJ4= github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= diff --git a/tools/build-version.go b/tools/build-version.go index 7a60307c..8e7e9b86 100644 --- a/tools/build-version.go +++ b/tools/build-version.go @@ -5,7 +5,7 @@ import ( "os/exec" "strings" - "github.com/zyedidia/micro/tools/semver" + "github.com/blang/semver" ) func getTag(match ...string) (string, *semver.PRVersion) { diff --git a/tools/go-bindata b/tools/go-bindata new file mode 160000 index 00000000..9453701a --- /dev/null +++ b/tools/go-bindata @@ -0,0 +1 @@ +Subproject commit 9453701aa0dbd20f88145dbd77c6f50937f17a19 diff --git a/tools/semver/json.go b/tools/semver/json.go deleted file mode 100644 index a74bf7c4..00000000 --- a/tools/semver/json.go +++ /dev/null @@ -1,23 +0,0 @@ -package semver - -import ( - "encoding/json" -) - -// MarshalJSON implements the encoding/json.Marshaler interface. -func (v Version) MarshalJSON() ([]byte, error) { - return json.Marshal(v.String()) -} - -// UnmarshalJSON implements the encoding/json.Unmarshaler interface. -func (v *Version) UnmarshalJSON(data []byte) (err error) { - var versionString string - - if err = json.Unmarshal(data, &versionString); err != nil { - return - } - - *v, err = Parse(versionString) - - return -} diff --git a/tools/semver/semver.go b/tools/semver/semver.go deleted file mode 100644 index ec26aa03..00000000 --- a/tools/semver/semver.go +++ /dev/null @@ -1,418 +0,0 @@ -package semver - -import ( - "errors" - "fmt" - "strconv" - "strings" -) - -const ( - numbers string = "0123456789" - alphas = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-" - alphanum = alphas + numbers -) - -// SpecVersion is the latest fully supported spec version of semver -var SpecVersion = Version{ - Major: 2, - Minor: 0, - Patch: 0, -} - -// Version represents a semver compatible version -type Version struct { - Major uint64 - Minor uint64 - Patch uint64 - Pre []PRVersion - Build []string //No Precedence -} - -// Version to string -func (v Version) String() string { - b := make([]byte, 0, 5) - b = strconv.AppendUint(b, v.Major, 10) - b = append(b, '.') - b = strconv.AppendUint(b, v.Minor, 10) - b = append(b, '.') - b = strconv.AppendUint(b, v.Patch, 10) - - if len(v.Pre) > 0 { - b = append(b, '-') - b = append(b, v.Pre[0].String()...) - - for _, pre := range v.Pre[1:] { - b = append(b, '.') - b = append(b, pre.String()...) - } - } - - if len(v.Build) > 0 { - b = append(b, '+') - b = append(b, v.Build[0]...) - - for _, build := range v.Build[1:] { - b = append(b, '.') - b = append(b, build...) - } - } - - return string(b) -} - -// Equals checks if v is equal to o. -func (v Version) Equals(o Version) bool { - return (v.Compare(o) == 0) -} - -// EQ checks if v is equal to o. -func (v Version) EQ(o Version) bool { - return (v.Compare(o) == 0) -} - -// NE checks if v is not equal to o. -func (v Version) NE(o Version) bool { - return (v.Compare(o) != 0) -} - -// GT checks if v is greater than o. -func (v Version) GT(o Version) bool { - return (v.Compare(o) == 1) -} - -// GTE checks if v is greater than or equal to o. -func (v Version) GTE(o Version) bool { - return (v.Compare(o) >= 0) -} - -// GE checks if v is greater than or equal to o. -func (v Version) GE(o Version) bool { - return (v.Compare(o) >= 0) -} - -// LT checks if v is less than o. -func (v Version) LT(o Version) bool { - return (v.Compare(o) == -1) -} - -// LTE checks if v is less than or equal to o. -func (v Version) LTE(o Version) bool { - return (v.Compare(o) <= 0) -} - -// LE checks if v is less than or equal to o. -func (v Version) LE(o Version) bool { - return (v.Compare(o) <= 0) -} - -// Compare compares Versions v to o: -// -1 == v is less than o -// 0 == v is equal to o -// 1 == v is greater than o -func (v Version) Compare(o Version) int { - if v.Major != o.Major { - if v.Major > o.Major { - return 1 - } - return -1 - } - if v.Minor != o.Minor { - if v.Minor > o.Minor { - return 1 - } - return -1 - } - if v.Patch != o.Patch { - if v.Patch > o.Patch { - return 1 - } - return -1 - } - - // Quick comparison if a version has no prerelease versions - if len(v.Pre) == 0 && len(o.Pre) == 0 { - return 0 - } else if len(v.Pre) == 0 && len(o.Pre) > 0 { - return 1 - } else if len(v.Pre) > 0 && len(o.Pre) == 0 { - return -1 - } - - i := 0 - for ; i < len(v.Pre) && i < len(o.Pre); i++ { - if comp := v.Pre[i].Compare(o.Pre[i]); comp == 0 { - continue - } else if comp == 1 { - return 1 - } else { - return -1 - } - } - - // If all pr versions are the equal but one has further prversion, this one greater - if i == len(v.Pre) && i == len(o.Pre) { - return 0 - } else if i == len(v.Pre) && i < len(o.Pre) { - return -1 - } else { - return 1 - } - -} - -// Validate validates v and returns error in case -func (v Version) Validate() error { - // Major, Minor, Patch already validated using uint64 - - for _, pre := range v.Pre { - if !pre.IsNum { //Numeric prerelease versions already uint64 - if len(pre.VersionStr) == 0 { - return fmt.Errorf("Prerelease can not be empty %q", pre.VersionStr) - } - if !containsOnly(pre.VersionStr, alphanum) { - return fmt.Errorf("Invalid character(s) found in prerelease %q", pre.VersionStr) - } - } - } - - for _, build := range v.Build { - if len(build) == 0 { - return fmt.Errorf("Build meta data can not be empty %q", build) - } - if !containsOnly(build, alphanum) { - return fmt.Errorf("Invalid character(s) found in build meta data %q", build) - } - } - - return nil -} - -// New is an alias for Parse and returns a pointer, parses version string and returns a validated Version or error -func New(s string) (vp *Version, err error) { - v, err := Parse(s) - vp = &v - return -} - -// Make is an alias for Parse, parses version string and returns a validated Version or error -func Make(s string) (Version, error) { - return Parse(s) -} - -// ParseTolerant allows for certain version specifications that do not strictly adhere to semver -// specs to be parsed by this library. It does so by normalizing versions before passing them to -// Parse(). It currently trims spaces, removes a "v" prefix, and adds a 0 patch number to versions -// with only major and minor components specified -func ParseTolerant(s string) (Version, error) { - s = strings.TrimSpace(s) - s = strings.TrimPrefix(s, "v") - - // Split into major.minor.(patch+pr+meta) - parts := strings.SplitN(s, ".", 3) - if len(parts) < 3 { - if strings.ContainsAny(parts[len(parts)-1], "+-") { - return Version{}, errors.New("Short version cannot contain PreRelease/Build meta data") - } - for len(parts) < 3 { - parts = append(parts, "0") - } - s = strings.Join(parts, ".") - } - - return Parse(s) -} - -// Parse parses version string and returns a validated Version or error -func Parse(s string) (Version, error) { - if len(s) == 0 { - return Version{}, errors.New("Version string empty") - } - - // Split into major.minor.(patch+pr+meta) - parts := strings.SplitN(s, ".", 3) - if len(parts) != 3 { - return Version{}, errors.New("No Major.Minor.Patch elements found") - } - - // Major - if !containsOnly(parts[0], numbers) { - return Version{}, fmt.Errorf("Invalid character(s) found in major number %q", parts[0]) - } - if hasLeadingZeroes(parts[0]) { - return Version{}, fmt.Errorf("Major number must not contain leading zeroes %q", parts[0]) - } - major, err := strconv.ParseUint(parts[0], 10, 64) - if err != nil { - return Version{}, err - } - - // Minor - if !containsOnly(parts[1], numbers) { - return Version{}, fmt.Errorf("Invalid character(s) found in minor number %q", parts[1]) - } - if hasLeadingZeroes(parts[1]) { - return Version{}, fmt.Errorf("Minor number must not contain leading zeroes %q", parts[1]) - } - minor, err := strconv.ParseUint(parts[1], 10, 64) - if err != nil { - return Version{}, err - } - - v := Version{} - v.Major = major - v.Minor = minor - - var build, prerelease []string - patchStr := parts[2] - - if buildIndex := strings.IndexRune(patchStr, '+'); buildIndex != -1 { - build = strings.Split(patchStr[buildIndex+1:], ".") - patchStr = patchStr[:buildIndex] - } - - if preIndex := strings.IndexRune(patchStr, '-'); preIndex != -1 { - prerelease = strings.Split(patchStr[preIndex+1:], ".") - patchStr = patchStr[:preIndex] - } - - if !containsOnly(patchStr, numbers) { - return Version{}, fmt.Errorf("Invalid character(s) found in patch number %q", patchStr) - } - if hasLeadingZeroes(patchStr) { - return Version{}, fmt.Errorf("Patch number must not contain leading zeroes %q", patchStr) - } - patch, err := strconv.ParseUint(patchStr, 10, 64) - if err != nil { - return Version{}, err - } - - v.Patch = patch - - // Prerelease - for _, prstr := range prerelease { - parsedPR, err := NewPRVersion(prstr) - if err != nil { - return Version{}, err - } - v.Pre = append(v.Pre, parsedPR) - } - - // Build meta data - for _, str := range build { - if len(str) == 0 { - return Version{}, errors.New("Build meta data is empty") - } - if !containsOnly(str, alphanum) { - return Version{}, fmt.Errorf("Invalid character(s) found in build meta data %q", str) - } - v.Build = append(v.Build, str) - } - - return v, nil -} - -// MustParse is like Parse but panics if the version cannot be parsed. -func MustParse(s string) Version { - v, err := Parse(s) - if err != nil { - panic(`semver: Parse(` + s + `): ` + err.Error()) - } - return v -} - -// PRVersion represents a PreRelease Version -type PRVersion struct { - VersionStr string - VersionNum uint64 - IsNum bool -} - -// NewPRVersion creates a new valid prerelease version -func NewPRVersion(s string) (PRVersion, error) { - if len(s) == 0 { - return PRVersion{}, errors.New("Prerelease is empty") - } - v := PRVersion{} - if containsOnly(s, numbers) { - if hasLeadingZeroes(s) { - return PRVersion{}, fmt.Errorf("Numeric PreRelease version must not contain leading zeroes %q", s) - } - num, err := strconv.ParseUint(s, 10, 64) - - // Might never be hit, but just in case - if err != nil { - return PRVersion{}, err - } - v.VersionNum = num - v.IsNum = true - } else if containsOnly(s, alphanum) { - v.VersionStr = s - v.IsNum = false - } else { - return PRVersion{}, fmt.Errorf("Invalid character(s) found in prerelease %q", s) - } - return v, nil -} - -// IsNumeric checks if prerelease-version is numeric -func (v PRVersion) IsNumeric() bool { - return v.IsNum -} - -// Compare compares two PreRelease Versions v and o: -// -1 == v is less than o -// 0 == v is equal to o -// 1 == v is greater than o -func (v PRVersion) Compare(o PRVersion) int { - if v.IsNum && !o.IsNum { - return -1 - } else if !v.IsNum && o.IsNum { - return 1 - } else if v.IsNum && o.IsNum { - if v.VersionNum == o.VersionNum { - return 0 - } else if v.VersionNum > o.VersionNum { - return 1 - } else { - return -1 - } - } else { // both are Alphas - if v.VersionStr == o.VersionStr { - return 0 - } else if v.VersionStr > o.VersionStr { - return 1 - } else { - return -1 - } - } -} - -// PreRelease version to string -func (v PRVersion) String() string { - if v.IsNum { - return strconv.FormatUint(v.VersionNum, 10) - } - return v.VersionStr -} - -func containsOnly(s string, set string) bool { - return strings.IndexFunc(s, func(r rune) bool { - return !strings.ContainsRune(set, r) - }) == -1 -} - -func hasLeadingZeroes(s string) bool { - return len(s) > 1 && s[0] == '0' -} - -// NewBuildVersion creates a new valid build version -func NewBuildVersion(s string) (string, error) { - if len(s) == 0 { - return "", errors.New("Buildversion is empty") - } - if !containsOnly(s, alphanum) { - return "", fmt.Errorf("Invalid character(s) found in build meta data %q", s) - } - return s, nil -} diff --git a/tools/semver/sort.go b/tools/semver/sort.go deleted file mode 100644 index e18f8808..00000000 --- a/tools/semver/sort.go +++ /dev/null @@ -1,28 +0,0 @@ -package semver - -import ( - "sort" -) - -// Versions represents multiple versions. -type Versions []Version - -// Len returns length of version collection -func (s Versions) Len() int { - return len(s) -} - -// Swap swaps two versions inside the collection by its indices -func (s Versions) Swap(i, j int) { - s[i], s[j] = s[j], s[i] -} - -// Less checks if version at index i is less than version at index j -func (s Versions) Less(i, j int) bool { - return s[i].LT(s[j]) -} - -// Sort sorts a slice of versions -func Sort(versions []Version) { - sort.Sort(Versions(versions)) -} diff --git a/tools/semver/sql.go b/tools/semver/sql.go deleted file mode 100644 index eb4d8026..00000000 --- a/tools/semver/sql.go +++ /dev/null @@ -1,30 +0,0 @@ -package semver - -import ( - "database/sql/driver" - "fmt" -) - -// Scan implements the database/sql.Scanner interface. -func (v *Version) Scan(src interface{}) (err error) { - var str string - switch src := src.(type) { - case string: - str = src - case []byte: - str = string(src) - default: - return fmt.Errorf("Version.Scan: cannot convert %T to string.", src) - } - - if t, err := Parse(str); err == nil { - *v = t - } - - return -} - -// Value implements the database/sql/driver.Valuer interface. -func (v Version) Value() (driver.Value, error) { - return v.String(), nil -} From 39446df749ad8cb0073628fa20c22749ed48d060 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 3 Feb 2019 23:42:42 -0500 Subject: [PATCH 107/231] update makefile --- .gitignore | 1 + Makefile | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index ded313bd..cf96d12a 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ log.txt tools/build-version tools/build-date tools/info-plist +tools/bindata diff --git a/Makefile b/Makefile index 4135756f..021d87b7 100644 --- a/Makefile +++ b/Makefile @@ -36,8 +36,8 @@ install-quick: # Builds the runtime runtime: git submodule update --init - go build -o tools/ ./tools/go-bindata - tools/go-bindata -pkg config -nomemcopy -nometadata -o runtime.go runtime/... + go build -o tools/bindata ./tools/go-bindata + tools/bindata -pkg config -nomemcopy -nometadata -o runtime.go runtime/... mv runtime.go internal/config gofmt -w internal/config/runtime.go From 739dd28652548f69adf37bc6f0d75dc9529c37cb Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 4 Feb 2019 00:24:55 -0500 Subject: [PATCH 108/231] Fix test dependencies and travis build --- .travis.yml | 7 +- Makefile | 3 + go.mod | 18 ++- go.sum | 85 ++++++++++- internal/manager/manager_test.go | 21 ++- internal/util/util_test.go | 8 +- pkg/shellwords/shellwords_test.go | 229 ------------------------------ pkg/terminfo/terminfo_test.go | 194 ------------------------- 8 files changed, 117 insertions(+), 448 deletions(-) delete mode 100644 pkg/shellwords/shellwords_test.go delete mode 100644 pkg/terminfo/terminfo_test.go diff --git a/.travis.yml b/.travis.yml index 7ccc544a..e076863e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,2 +1,7 @@ language: go -script: make test +os: + - linux + - osx +script: + - env GO111MODULE=on make build + - env GO111MODULE=on make test diff --git a/Makefile b/Makefile index 021d87b7..6c550747 100644 --- a/Makefile +++ b/Makefile @@ -41,5 +41,8 @@ runtime: mv runtime.go internal/config gofmt -w internal/config/runtime.go +test: + go test ./internal/... + clean: rm -f micro diff --git a/go.mod b/go.mod index 4749634a..a7165a9c 100644 --- a/go.mod +++ b/go.mod @@ -1,23 +1,35 @@ module github.com/zyedidia/micro require ( - github.com/blang/semver v3.5.1+incompatible // indirect + github.com/blang/semver v3.5.1+incompatible github.com/dustin/go-humanize v1.0.0 github.com/flynn/json5 v0.0.0-20160717195620-7620272ed633 github.com/gdamore/encoding v1.0.0 // indirect github.com/go-errors/errors v1.0.1 - github.com/jteeuwen/go-bindata v3.0.7+incompatible + github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e // indirect + github.com/jtolds/gls v4.2.1+incompatible // indirect + github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 // indirect github.com/lucasb-eyer/go-colorful v0.0.0-20181028223441-12d3b2882a08 // indirect github.com/mattn/go-isatty v0.0.4 github.com/mattn/go-runewidth v0.0.4 github.com/mitchellh/go-homedir v1.1.0 + github.com/npat-efault/poller v2.0.0+incompatible // indirect + github.com/robertkrimen/otto v0.0.0-20180617131154-15f95af6e78d // indirect github.com/sergi/go-diff v1.0.0 + github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304 // indirect + github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c // indirect + github.com/stretchr/testify v1.3.0 + github.com/yuin/gopher-lua v0.0.0-20190125051437-7b9317363aa9 github.com/zyedidia/clipboard v0.0.0-20180718195219-bd31d747117d github.com/zyedidia/glob v0.0.0-20170209203856-dd4023a66dc3 github.com/zyedidia/poller v2.0.0+incompatible // indirect - github.com/zyedidia/pty v1.1.2-0.20180126010845-30364665a244 + github.com/zyedidia/pty v1.1.2-0.20180126010845-30364665a244 // indirect github.com/zyedidia/tcell v0.0.0-20190204041104-518c15c24302 github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415 golang.org/x/text v0.3.0 + gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0 // indirect + gopkg.in/sourcemap.v1 v1.0.5 // indirect + gopkg.in/src-d/go-git.v4 v4.9.1 gopkg.in/yaml.v2 v2.2.2 + layeh.com/gopher-luar v1.0.4 ) diff --git a/go.sum b/go.sum index 7714e214..7063866b 100644 --- a/go.sum +++ b/go.sum @@ -1,43 +1,116 @@ +github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs= +github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/emirpasic/gods v1.9.0 h1:rUF4PuzEjMChMiNsVjdI+SyLu7rEqpQ5reNFnhC7oFo= +github.com/emirpasic/gods v1.9.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/flynn/json5 v0.0.0-20160717195620-7620272ed633 h1:xJMmr4GMYIbALX5edyoDIOQpc2bOQTeJiWMeCl9lX/8= github.com/flynn/json5 v0.0.0-20160717195620-7620272ed633/go.mod h1:NJDK3/o7abx6PP54EOe0G0n0RLmhCo9xv61gUYpI0EY= github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko= github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= +github.com/gliderlabs/ssh v0.1.1 h1:j3L6gSLQalDETeEg/Jg0mGY0/y/N6zI2xX1978P0Uqw= +github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= -github.com/jteeuwen/go-bindata v3.0.7+incompatible h1:91Uy4d9SYVr1kyTJ15wJsog+esAZZl7JmEfTkwmhJts= -github.com/jteeuwen/go-bindata v3.0.7+incompatible/go.mod h1:JVvhzYOiGBnFSYRyV00iY8q7/0PThjIYav1p9h5dmKs= +github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg= +github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jtolds/gls v4.2.1+incompatible h1:fSuqC+Gmlu6l/ZYAoZzx2pyucC8Xza35fpRVWLVmUEE= +github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e h1:RgQk53JHp/Cjunrr1WlsXSZpqXn+uREuHvUVcK82CV8= +github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/lucasb-eyer/go-colorful v0.0.0-20181028223441-12d3b2882a08 h1:5MnxBC15uMxFv5FY/J/8vzyaBiArCOkMdFT9Jsw78iY= github.com/lucasb-eyer/go-colorful v0.0.0-20181028223441-12d3b2882a08/go.mod h1:NXg0ArsFk0Y01623LgUqoqcouGDB+PwCCQlrwrG6xJ4= github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/npat-efault/poller v2.0.0+incompatible h1:jtTdXWKgN5kDK41ts8hoY1rvTEi0K08MTB8/bRO9MqE= +github.com/npat-efault/poller v2.0.0+incompatible/go.mod h1:lni01B89P8PtVpwlAhdhK1niN5rPkDGGpGGgBJzpSgo= +github.com/pelletier/go-buffruneio v0.2.0 h1:U4t4R6YkofJ5xHm3dJzuRpPZ0mr5MMCoAWooScCR7aA= +github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= +github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/robertkrimen/otto v0.0.0-20180617131154-15f95af6e78d h1:1VUlQbCfkoSGv7qP7Y+ro3ap1P1pPZxgdGVqiTVy5C4= +github.com/robertkrimen/otto v0.0.0-20180617131154-15f95af6e78d/go.mod h1:xvqspoSXJTIpemEonrMDFq6XzwHYYgToXWj5eRX1OtY= github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304 h1:Jpy1PXuP99tXNrhbq2BaPz9B+jNAvH1JPQQpG/9GCXY= +github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c h1:Ho+uVpkel/udgjbwB5Lktg9BtvJSh2DT0Hi6LPSyI2w= +github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= +github.com/src-d/gcfg v1.4.0 h1:xXbNR5AlLSA315x2UO+fTSSAXCDf+Ar38/6oyGbDKQ4= +github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/xanzy/ssh-agent v0.2.0 h1:Adglfbi5p9Z0BmK2oKU9nTG+zKfniSfnaMYB+ULd+Ro= +github.com/xanzy/ssh-agent v0.2.0/go.mod h1:0NyE30eGUDliuLEHJgYte/zncp2zdTStcOnWhgSqHD8= +github.com/yuin/gopher-lua v0.0.0-20190125051437-7b9317363aa9 h1:Wy3fAQLBPP0JSWdq3kBnmbFgXDHcyhtPpd+8kENV7mU= +github.com/yuin/gopher-lua v0.0.0-20190125051437-7b9317363aa9/go.mod h1:fFiAh+CowNFr0NK5VASokuwKwkbacRmHsVA7Yb1Tqac= github.com/zyedidia/clipboard v0.0.0-20180718195219-bd31d747117d h1:Lhqt2eo+rgM8aswvM7nTtAMVm8ARPWzkE9n6eZDOccY= github.com/zyedidia/clipboard v0.0.0-20180718195219-bd31d747117d/go.mod h1:WDk3p8GiZV9+xFWlSo8qreeoLhW6Ik692rqXk+cNeRY= github.com/zyedidia/glob v0.0.0-20170209203856-dd4023a66dc3 h1:oMHjjTLfGXVuyOQBYj5/td9WC0mw4g1xDBPovIqmHew= github.com/zyedidia/glob v0.0.0-20170209203856-dd4023a66dc3/go.mod h1:YKbIYP//Eln8eDgAJGI3IDvR3s4Tv9Z9TGIOumiyQ5c= github.com/zyedidia/poller v2.0.0+incompatible h1:DMOvB0EXz2JTokqOKfxPWN/8xXFJbO+m4vNhMkOY7Lo= github.com/zyedidia/poller v2.0.0+incompatible/go.mod h1:vZXJOHGDcuK08GXhF6IAY0ZFd2WcgOR5DOTp84Uk5eE= -github.com/zyedidia/pty v1.1.1 h1:SGOF3egDZGCGbpB5DPlg+yabbAuVkUtXVeNTDFeEytM= -github.com/zyedidia/pty v1.1.1/go.mod h1:4y9l9yJZNxRa7GB/fB+mmDmGkG3CqmzLf4vUxGGotEA= github.com/zyedidia/pty v1.1.2-0.20180126010845-30364665a244 h1:DZ7mZvUV5+oXeXV1E1t6ZIXRihHYyqYVIOSA+RGo88A= github.com/zyedidia/pty v1.1.2-0.20180126010845-30364665a244/go.mod h1:4y9l9yJZNxRa7GB/fB+mmDmGkG3CqmzLf4vUxGGotEA= -github.com/zyedidia/tcell v0.0.0-20171006165952-a221f2faf4f9 h1:RpdSFmZxJJy2rMbQi2LcejNPEquLmB4sCVIq7F4Ha+g= -github.com/zyedidia/tcell v0.0.0-20171006165952-a221f2faf4f9/go.mod h1:yXgdp23+aW8OMENYVBvpKoeiBtjaVWJ9HhpPDu6LBfM= github.com/zyedidia/tcell v0.0.0-20190204041104-518c15c24302 h1:ruNSURcO81y+J+XnqrLLt+zxcdFtq8QNoZfWXSsybYQ= github.com/zyedidia/tcell v0.0.0-20190204041104-518c15c24302/go.mod h1:yXgdp23+aW8OMENYVBvpKoeiBtjaVWJ9HhpPDu6LBfM= github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415 h1:752dTQ5OatJ9M5ULK2+9lor+nzyZz+LYDo3WGngg3Rc= github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415/go.mod h1:8leT8G0Cm8NoJHdrrKHyR9MirWoF4YW7pZh06B6H+1E= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793 h1:u+LnwYTOOW7Ukr/fppxEb1Nwz0AtPflrblfvUudpo+I= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd h1:nTDtHvHSdCn1m6ITfMRqtOd/9+7a3s8RBNOZ3eYZzJA= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9 h1:lkiLiLBHGoH3XnqSLUIaBsilGMUjI+Uy2Xu2JLUtTas= +golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0 h1:FVCohIoYO7IJoDDVpV2pdq7SgrMH6wHnuTyrdrxJNoY= +gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0/go.mod h1:OdE7CF6DbADk7lN8LIKRzRJTTZXIjtWgA5THM5lhBAw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/sourcemap.v1 v1.0.5 h1:inv58fC9f9J3TK2Y2R1NPntXEn3/wjWHkonhIUODNTI= +gopkg.in/sourcemap.v1 v1.0.5/go.mod h1:2RlvNNSMglmRrcvhfuzp4hQHwOtjxlbjX7UPY/GXb78= +gopkg.in/src-d/go-billy.v4 v4.2.1 h1:omN5CrMrMcQ+4I8bJ0wEhOBPanIRWzFC953IiXKdYzo= +gopkg.in/src-d/go-billy.v4 v4.2.1/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk= +gopkg.in/src-d/go-git-fixtures.v3 v3.1.1 h1:XWW/s5W18RaJpmo1l0IYGqXKuJITWRFuA45iOf1dKJs= +gopkg.in/src-d/go-git-fixtures.v3 v3.1.1/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= +gopkg.in/src-d/go-git.v4 v4.9.1 h1:0oKHJZY8tM7B71378cfTg2c5jmWyNlXvestTT6WfY+4= +gopkg.in/src-d/go-git.v4 v4.9.1/go.mod h1:Vtut8izDyrM8BUVQnzJ+YvmNcem2J89EmfZYCkLokZk= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +layeh.com/gopher-luar v1.0.4 h1:BFgt94J/CXh4HkDcE2b7A7pBaVeQKEVfHEBRKL/K/Tc= +layeh.com/gopher-luar v1.0.4/go.mod h1:N3rev/ttQd8yVluXaYsa0M/eknzRYWe+pxZ35ZFmaaI= diff --git a/internal/manager/manager_test.go b/internal/manager/manager_test.go index 9db9817c..ddd644cd 100644 --- a/internal/manager/manager_test.go +++ b/internal/manager/manager_test.go @@ -1,7 +1,6 @@ package manager import ( - "fmt" "testing" "github.com/zyedidia/micro/internal/config" @@ -60,13 +59,13 @@ func TestParse(t *testing.T) { // } // } -func TestList(t *testing.T) { - is, err := ListInstalledPlugins() - if err != nil { - t.Error(err) - } - - for _, i := range is { - fmt.Println(i.Name) - } -} +// func TestList(t *testing.T) { +// is, err := ListInstalledPlugins() +// if err != nil { +// t.Error(err) +// } +// +// for _, i := range is { +// fmt.Println(i.dir) +// } +// } diff --git a/internal/util/util_test.go b/internal/util/util_test.go index a1d59296..454b5c79 100644 --- a/internal/util/util_test.go +++ b/internal/util/util_test.go @@ -15,19 +15,19 @@ func TestStringWidth(t *testing.T) { func TestSliceVisualEnd(t *testing.T) { s := []byte("\thello") - slc, n := SliceVisualEnd(s, 2, 4) + slc, n, _ := SliceVisualEnd(s, 2, 4) assert.Equal(t, []byte("\thello"), slc) assert.Equal(t, 2, n) - slc, n = SliceVisualEnd(s, 1, 4) + slc, n, _ = SliceVisualEnd(s, 1, 4) assert.Equal(t, []byte("\thello"), slc) assert.Equal(t, 1, n) - slc, n = SliceVisualEnd(s, 4, 4) + slc, n, _ = SliceVisualEnd(s, 4, 4) assert.Equal(t, []byte("hello"), slc) assert.Equal(t, 0, n) - slc, n = SliceVisualEnd(s, 5, 4) + slc, n, _ = SliceVisualEnd(s, 5, 4) assert.Equal(t, []byte("ello"), slc) assert.Equal(t, 0, n) } diff --git a/pkg/shellwords/shellwords_test.go b/pkg/shellwords/shellwords_test.go deleted file mode 100644 index 594f9ef7..00000000 --- a/pkg/shellwords/shellwords_test.go +++ /dev/null @@ -1,229 +0,0 @@ -package shellwords - -import ( - "os" - "reflect" - "testing" -) - -var testcases = []struct { - line string - expected []string -}{ - {`var --bar=baz`, []string{`var`, `--bar=baz`}}, - {`var --bar="baz"`, []string{`var`, `--bar=baz`}}, - {`var "--bar=baz"`, []string{`var`, `--bar=baz`}}, - {`var "--bar='baz'"`, []string{`var`, `--bar='baz'`}}, - {"var --bar=`baz`", []string{`var`, "--bar=`baz`"}}, - {`var "--bar=\"baz'"`, []string{`var`, `--bar="baz'`}}, - {`var "--bar=\'baz\'"`, []string{`var`, `--bar='baz'`}}, - {`var --bar='\'`, []string{`var`, `--bar=\`}}, - {`var "--bar baz"`, []string{`var`, `--bar baz`}}, - {`var --"bar baz"`, []string{`var`, `--bar baz`}}, - {`var --"bar baz"`, []string{`var`, `--bar baz`}}, -} - -func TestSimple(t *testing.T) { - for _, testcase := range testcases { - args, err := Parse(testcase.line) - if err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(args, testcase.expected) { - t.Fatalf("Expected %#v, but %#v:", testcase.expected, args) - } - } -} - -func TestError(t *testing.T) { - _, err := Parse("foo '") - if err == nil { - t.Fatal("Should be an error") - } - _, err = Parse(`foo "`) - if err == nil { - t.Fatal("Should be an error") - } - - _, err = Parse("foo `") - if err == nil { - t.Fatal("Should be an error") - } -} - -func TestLastSpace(t *testing.T) { - args, err := Parse("foo bar\\ ") - if err != nil { - t.Fatal(err) - } - if len(args) != 2 { - t.Fatal("Should have two elements") - } - if args[0] != "foo" { - t.Fatal("1st element should be `foo`") - } - if args[1] != "bar " { - t.Fatal("1st element should be `bar `") - } -} - -func TestBacktick(t *testing.T) { - goversion, err := shellRun("go version") - if err != nil { - t.Fatal(err) - } - - parser := NewParser() - parser.ParseBacktick = true - args, err := parser.Parse("echo `go version`") - if err != nil { - t.Fatal(err) - } - expected := []string{"echo", goversion} - if !reflect.DeepEqual(args, expected) { - t.Fatalf("Expected %#v, but %#v:", expected, args) - } - - args, err = parser.Parse(`echo $(echo foo)`) - if err != nil { - t.Fatal(err) - } - expected = []string{"echo", "foo"} - if !reflect.DeepEqual(args, expected) { - t.Fatalf("Expected %#v, but %#v:", expected, args) - } - - parser.ParseBacktick = false - args, err = parser.Parse(`echo $(echo "foo")`) - expected = []string{"echo", `$(echo "foo")`} - if !reflect.DeepEqual(args, expected) { - t.Fatalf("Expected %#v, but %#v:", expected, args) - } - args, err = parser.Parse("echo $(`echo1)") - if err != nil { - t.Fatal(err) - } - expected = []string{"echo", "$(`echo1)"} - if !reflect.DeepEqual(args, expected) { - t.Fatalf("Expected %#v, but %#v:", expected, args) - } -} - -func TestBacktickError(t *testing.T) { - parser := NewParser() - parser.ParseBacktick = true - _, err := parser.Parse("echo `go Version`") - if err == nil { - t.Fatal("Should be an error") - } - expected := "exit status 2:go: unknown subcommand \"Version\"\nRun 'go help' for usage.\n" - if expected != err.Error() { - t.Fatalf("Expected %q, but %q", expected, err.Error()) - } - _, err = parser.Parse(`echo $(echo1)`) - if err == nil { - t.Fatal("Should be an error") - } - _, err = parser.Parse(`echo $(echo1`) - if err == nil { - t.Fatal("Should be an error") - } - _, err = parser.Parse(`echo $ (echo1`) - if err == nil { - t.Fatal("Should be an error") - } - _, err = parser.Parse(`echo (echo1`) - if err == nil { - t.Fatal("Should be an error") - } - _, err = parser.Parse(`echo )echo1`) - if err == nil { - t.Fatal("Should be an error") - } -} - -func TestEnv(t *testing.T) { - os.Setenv("FOO", "bar") - - parser := NewParser() - parser.ParseEnv = true - args, err := parser.Parse("echo $FOO") - if err != nil { - t.Fatal(err) - } - expected := []string{"echo", "bar"} - if !reflect.DeepEqual(args, expected) { - t.Fatalf("Expected %#v, but %#v:", expected, args) - } -} - -func TestNoEnv(t *testing.T) { - parser := NewParser() - parser.ParseEnv = true - args, err := parser.Parse("echo $BAR") - if err != nil { - t.Fatal(err) - } - expected := []string{"echo", ""} - if !reflect.DeepEqual(args, expected) { - t.Fatalf("Expected %#v, but %#v:", expected, args) - } -} - -func TestDupEnv(t *testing.T) { - os.Setenv("FOO", "bar") - os.Setenv("FOO_BAR", "baz") - - parser := NewParser() - parser.ParseEnv = true - args, err := parser.Parse("echo $$FOO$") - if err != nil { - t.Fatal(err) - } - expected := []string{"echo", "$bar$"} - if !reflect.DeepEqual(args, expected) { - t.Fatalf("Expected %#v, but %#v:", expected, args) - } - - args, err = parser.Parse("echo $${FOO_BAR}$") - if err != nil { - t.Fatal(err) - } - expected = []string{"echo", "$baz$"} - if !reflect.DeepEqual(args, expected) { - t.Fatalf("Expected %#v, but %#v:", expected, args) - } -} - -func TestHaveMore(t *testing.T) { - parser := NewParser() - parser.ParseEnv = true - - line := "echo foo; seq 1 10" - args, err := parser.Parse(line) - if err != nil { - t.Fatalf(err.Error()) - } - expected := []string{"echo", "foo"} - if !reflect.DeepEqual(args, expected) { - t.Fatalf("Expected %#v, but %#v:", expected, args) - } - - if parser.Position == 0 { - t.Fatalf("Commands should be remaining") - } - - line = string([]rune(line)[parser.Position+1:]) - args, err = parser.Parse(line) - if err != nil { - t.Fatalf(err.Error()) - } - expected = []string{"seq", "1", "10"} - if !reflect.DeepEqual(args, expected) { - t.Fatalf("Expected %#v, but %#v:", expected, args) - } - - if parser.Position > 0 { - t.Fatalf("Commands should not be remaining") - } -} diff --git a/pkg/terminfo/terminfo_test.go b/pkg/terminfo/terminfo_test.go deleted file mode 100644 index 44664794..00000000 --- a/pkg/terminfo/terminfo_test.go +++ /dev/null @@ -1,194 +0,0 @@ -// Copyright 2016 The TCell Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use file except in compliance with the License. -// You may obtain a copy of the license at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package terminfo - -import ( - "bytes" - "os" - "testing" - - . "github.com/smartystreets/goconvey/convey" -) - -// This terminfo entry is a stripped down version from -// xterm-256color, but I've added some of my own entries. -var testTerminfo = &Terminfo{ - Name: "simulation_test", - Columns: 80, - Lines: 24, - Colors: 256, - Bell: "\a", - Blink: "\x1b2ms$<2>", - Reverse: "\x1b[7m", - SetFg: "\x1b[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m", - SetBg: "\x1b[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m", - AltChars: "``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~", - Mouse: "\x1b[M", - MouseMode: "%?%p1%{1}%=%t%'h'%Pa%e%'l'%Pa%;\x1b[?1000%ga%c\x1b[?1003%ga%c\x1b[?1006%ga%c", - SetCursor: "\x1b[%i%p1%d;%p2%dH", - PadChar: "\x00", -} - -func TestTerminfo(t *testing.T) { - - ti := testTerminfo - - Convey("Terminfo parameter processing", t, func() { - // This tests %i, and basic parameter strings too - Convey("TGoto works", func() { - s := ti.TGoto(7, 9) - So(s, ShouldEqual, "\x1b[10;8H") - }) - - // This tests some conditionals - Convey("TParm extended formats work", func() { - s := ti.TParm("A[%p1%2.2X]B", 47) - So(s, ShouldEqual, "A[2F]B") - }) - - // This tests some conditionals - Convey("TParm colors work", func() { - s := ti.TParm(ti.SetFg, 7) - So(s, ShouldEqual, "\x1b[37m") - - s = ti.TParm(ti.SetFg, 15) - So(s, ShouldEqual, "\x1b[97m") - - s = ti.TParm(ti.SetFg, 200) - So(s, ShouldEqual, "\x1b[38;5;200m") - }) - - // This tests variables - Convey("TParm mouse mode works", func() { - s := ti.TParm(ti.MouseMode, 1) - So(s, ShouldEqual, "\x1b[?1000h\x1b[?1003h\x1b[?1006h") - s = ti.TParm(ti.MouseMode, 0) - So(s, ShouldEqual, "\x1b[?1000l\x1b[?1003l\x1b[?1006l") - }) - - }) - - Convey("Terminfo delay handling", t, func() { - - Convey("19200 baud", func() { - buf := bytes.NewBuffer(nil) - ti.TPuts(buf, ti.Blink, 19200) - s := string(buf.Bytes()) - So(s, ShouldEqual, "\x1b2ms\x00\x00\x00\x00") - }) - - Convey("50 baud", func() { - buf := bytes.NewBuffer(nil) - ti.TPuts(buf, ti.Blink, 50) - s := string(buf.Bytes()) - So(s, ShouldEqual, "\x1b2ms") - }) - }) -} - -func TestTerminfoDatabase(t *testing.T) { - - Convey("Database Lookups work", t, func() { - Convey("Basic lookup works", func() { - os.Setenv("TCELLDB", "testdata/test1") - ti, err := LookupTerminfo("test1") - So(err, ShouldBeNil) - So(ti, ShouldNotBeNil) - So(ti.Columns, ShouldEqual, 80) - - ti, err = LookupTerminfo("alias1") - So(err, ShouldBeNil) - So(ti, ShouldNotBeNil) - So(ti.Columns, ShouldEqual, 80) - - os.Setenv("TCELLDB", "testdata") - ti, err = LookupTerminfo("test2") - So(err, ShouldBeNil) - So(ti, ShouldNotBeNil) - So(ti.Columns, ShouldEqual, 80) - So(len(ti.Aliases), ShouldEqual, 1) - So(ti.Aliases[0], ShouldEqual, "alias2") - }) - - Convey("Incorrect primary name works", func() { - os.Setenv("TCELLDB", "testdata") - ti, err := LookupTerminfo("test3") - So(err, ShouldNotBeNil) - So(ti, ShouldBeNil) - }) - - Convey("Loops fail", func() { - os.Setenv("TCELLDB", "testdata") - ti, err := LookupTerminfo("loop1") - So(ti, ShouldBeNil) - So(err, ShouldNotBeNil) - }) - - Convey("Gzip database works", func() { - os.Setenv("TCELLDB", "testdata") - ti, err := LookupTerminfo("test-gzip") - So(err, ShouldBeNil) - So(ti, ShouldNotBeNil) - So(ti.Columns, ShouldEqual, 80) - }) - - Convey("Gzip alias lookup works", func() { - os.Setenv("TCELLDB", "testdata") - ti, err := LookupTerminfo("alias-gzip") - So(err, ShouldBeNil) - So(ti, ShouldNotBeNil) - So(ti.Columns, ShouldEqual, 80) - }) - - Convey("Broken alias works", func() { - os.Setenv("TCELLDB", "testdata") - ti, err := LookupTerminfo("alias-none") - So(err, ShouldNotBeNil) - So(ti, ShouldBeNil) - }) - - Convey("Combined database works", func() { - os.Setenv("TCELLDB", "testdata/combined") - ti, err := LookupTerminfo("combined2") - So(err, ShouldBeNil) - So(ti, ShouldNotBeNil) - So(ti.Lines, ShouldEqual, 102) - - ti, err = LookupTerminfo("alias-comb1") - So(err, ShouldBeNil) - So(ti, ShouldNotBeNil) - So(ti.Lines, ShouldEqual, 101) - - ti, err = LookupTerminfo("combined3") - So(err, ShouldBeNil) - So(ti, ShouldNotBeNil) - So(ti.Lines, ShouldEqual, 103) - - ti, err = LookupTerminfo("combined1") - So(err, ShouldBeNil) - So(ti, ShouldNotBeNil) - So(ti.Lines, ShouldEqual, 101) - }) - }) -} - -func BenchmarkSetFgBg(b *testing.B) { - ti := testTerminfo - - for i := 0; i < b.N; i++ { - ti.TParm(ti.SetFg, 100, 200) - ti.TParm(ti.SetBg, 100, 200) - } -} From cf2d5dbfe265ed0983b84747285568e7df3909ed Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 4 Feb 2019 00:27:54 -0500 Subject: [PATCH 109/231] update travis --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index e076863e..615bc037 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,6 @@ language: go +go: + - "1.11.x" os: - linux - osx From 4497daaef1ddc05189187b12b9a79e46f2371782 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 4 Feb 2019 22:26:06 -0500 Subject: [PATCH 110/231] Resolve versions in plugin manager --- Makefile | 2 +- cmd/micro/debug.go | 4 +++- cmd/micro/micro.go | 18 ++++-------------- internal/manager/fetch.go | 23 ++++++++++++++++++++--- internal/manager/manager_test.go | 26 +++++++++++++++----------- internal/manager/plugin.go | 5 +++-- internal/util/util.go | 25 +++++++++++++++++++++++++ 7 files changed, 71 insertions(+), 32 deletions(-) diff --git a/Makefile b/Makefile index 6c550747..72547cd0 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ ADDITIONAL_GO_LINKER_FLAGS := $(shell GOOS=$(shell go env GOHOSTOS) \ GOARCH=$(shell go env GOHOSTARCH) \ go run tools/info-plist.go "$(VERSION)") GOBIN ?= $(shell go env GOPATH)/bin -GOVARS := -X main.Version=$(VERSION) -X main.CommitHash=$(HASH) -X 'main.CompileDate=$(DATE)' -X main.Debug=OFF +GOVARS := -X github.com/zyedidia/micro/internal/util.Version=$(VERSION) -X github.com/zyedidia/micro/internal/util.CommitHash=$(HASH) -X 'github.com/zyedidia/micro/internal/util.CompileDate=$(DATE)' -X github.com/zyedidia/micro/internal/util.Debug=OFF # Builds micro after checking dependencies but without updating the runtime build: diff --git a/cmd/micro/debug.go b/cmd/micro/debug.go index 1751de13..7c13d9ce 100644 --- a/cmd/micro/debug.go +++ b/cmd/micro/debug.go @@ -3,6 +3,8 @@ package main import ( "log" "os" + + "github.com/zyedidia/micro/internal/util" ) // NullWriter simply sends writes into the void @@ -15,7 +17,7 @@ func (NullWriter) Write(data []byte) (n int, err error) { // InitLog sets up the debug log system for micro if it has been enabled by compile-time variables func InitLog() { - if Debug == "ON" { + if util.Debug == "ON" { f, err := os.OpenFile("log.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666) if err != nil { log.Fatalf("error opening file: %v", err) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index ef83f9ae..e2a961f7 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -13,21 +13,11 @@ import ( "github.com/zyedidia/micro/internal/buffer" "github.com/zyedidia/micro/internal/config" "github.com/zyedidia/micro/internal/screen" + "github.com/zyedidia/micro/internal/util" "github.com/zyedidia/tcell" ) var ( - // These variables should be set by the linker when compiling - - // Version is the version number or commit hash - Version = "0.0.0-unknown" - // CommitHash is the commit this version was built on - CommitHash = "Unknown" - // CompileDate is the date this binary was compiled on - CompileDate = "Unknown" - // Debug logging - Debug = "ON" - // Event channel events chan tcell.Event autosave chan bool @@ -70,9 +60,9 @@ func InitFlags() { if *flagVersion { // If -version was passed - fmt.Println("Version:", Version) - fmt.Println("Commit hash:", CommitHash) - fmt.Println("Compiled on", CompileDate) + fmt.Println("Version:", util.Version) + fmt.Println("Commit hash:", util.CommitHash) + fmt.Println("Compiled on", util.CompileDate) os.Exit(0) } diff --git a/internal/manager/fetch.go b/internal/manager/fetch.go index 529c64dc..6dc4b934 100644 --- a/internal/manager/fetch.go +++ b/internal/manager/fetch.go @@ -1,12 +1,14 @@ package manager import ( + "fmt" "io/ioutil" "net/http" - "os" "path" + "github.com/blang/semver" "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/util" git "gopkg.in/src-d/go-git.v4" ) @@ -56,11 +58,26 @@ func (i *PluginInfo) FetchRepo() error { } func (p *Plugin) ResolveVersion() error { - return nil + i := p.info + vs := i.Versions + + for _, v := range vs { + microrange, err := semver.ParseRange(v.Require["micro"]) + if err != nil { + return err + } + if microrange(util.SemVersion) { + p.version = v.Vers + fmt.Println("resolve version to ", v.Vstr) + return nil + } + } + + return ErrRequireUnsat } func (p *Plugin) WriteVersion() error { - return ioutil.WriteFile(path.Join(p.dir, versionfile), []byte(p.version.String()), os.ModePerm) + return ioutil.WriteFile(path.Join(p.dir, versionfile), []byte(p.version.String()), 0644) } func (p *Plugin) FetchDeps() error { diff --git a/internal/manager/manager_test.go b/internal/manager/manager_test.go index ddd644cd..96e9003d 100644 --- a/internal/manager/manager_test.go +++ b/internal/manager/manager_test.go @@ -3,11 +3,15 @@ package manager import ( "testing" + "github.com/blang/semver" "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/util" ) func init() { config.InitConfigDir("./") + util.Version = "1.3.1" + util.SemVersion, _ = semver.Make(util.Version) } var sampleJson = []byte(`{ @@ -47,17 +51,17 @@ func TestParse(t *testing.T) { } } -// func TestFetch(t *testing.T) { -// i, err := NewPluginInfoFromUrl("http://zbyedidia.webfactional.com/micro/test.json") -// if err != nil { -// t.Error(err) -// } -// -// err = i.FetchRepo() -// if err != nil { -// t.Error(err) -// } -// } +func TestFetch(t *testing.T) { + i, err := NewPluginInfoFromUrl("http://zbyedidia.webfactional.com/micro/test.json") + if err != nil { + t.Error(err) + } + + err = i.FetchRepo() + if err != nil { + t.Error(err) + } +} // func TestList(t *testing.T) { // is, err := ListInstalledPlugins() diff --git a/internal/manager/plugin.go b/internal/manager/plugin.go index 5913e378..db307815 100644 --- a/internal/manager/plugin.go +++ b/internal/manager/plugin.go @@ -20,6 +20,7 @@ var ( ErrMissingVersions = errors.New("Missing or empty versions field") ErrMissingTag = errors.New("Missing or empty tag field") ErrMissingRequire = errors.New("Missing or empty require field") + ErrRequireUnsat = errors.New("Version require could not be satisfied") ) const ( @@ -95,12 +96,12 @@ func (i *PluginInfo) makeVersions() error { return ErrMissingVersions } - for _, v := range i.Versions { + for j, v := range i.Versions { sv, err := semver.Make(v.Vstr) if err != nil { return err } - v.Vers = sv + i.Versions[j].Vers = sv if len(v.Tag) == 0 { return ErrMissingTag } else if v.Require == nil { diff --git a/internal/util/util.go b/internal/util/util.go index 0d23028e..dbaf9087 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -2,6 +2,7 @@ package util import ( "errors" + "fmt" "os" "os/user" "path/filepath" @@ -11,9 +12,33 @@ import ( "time" "unicode/utf8" + "github.com/blang/semver" runewidth "github.com/mattn/go-runewidth" ) +var ( + // These variables should be set by the linker when compiling + + // Version is the version number or commit hash + Version = "0.0.0-unknown" + // Semantic version + SemVersion semver.Version + // CommitHash is the commit this version was built on + CommitHash = "Unknown" + // CompileDate is the date this binary was compiled on + CompileDate = "Unknown" + // Debug logging + Debug = "ON" +) + +func init() { + var err error + SemVersion, err = semver.Make(Version) + if err != nil { + fmt.Println("Invalid version: ", Version, err) + } +} + // SliceEnd returns a byte slice where the index is a rune index // Slices off the start of the slice func SliceEnd(slc []byte, index int) []byte { From a2b9acd1532d8a7ee798ffd4d84269fe75ce5dea Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 17 Mar 2019 19:01:33 -0400 Subject: [PATCH 111/231] Some plugin manager improvements --- cmd/micro/micro.go | 32 +++++++++++++++++++++++++++----- internal/manager/fetch.go | 21 ++++++--------------- internal/manager/plugin.go | 22 +++++++++++----------- 3 files changed, 44 insertions(+), 31 deletions(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index e2a961f7..a076bd5b 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -12,6 +12,7 @@ import ( "github.com/zyedidia/micro/internal/action" "github.com/zyedidia/micro/internal/buffer" "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/manager" "github.com/zyedidia/micro/internal/screen" "github.com/zyedidia/micro/internal/util" "github.com/zyedidia/tcell" @@ -27,6 +28,7 @@ var ( flagStartPos = flag.String("startpos", "", "LINE,COL to start the cursor at when opening a buffer.") flagConfigDir = flag.String("config-dir", "", "Specify a custom location for the configuration directory") flagOptions = flag.Bool("options", false, "Show all option help") + flagPlugin = flag.String("plugin", "", "Run a plugin manager action") ) func InitFlags() { @@ -38,6 +40,9 @@ func InitFlags() { fmt.Println("+LINE:COL") fmt.Println(" \tSpecify a line and column to start the cursor at when opening a buffer") fmt.Println(" \tThis can also be done by opening file:LINE:COL") + fmt.Println("-plugin ACTION") + fmt.Println(" \tRun a plugin manager action") + fmt.Println(" \tActions include: list, add, remove") fmt.Println("-options") fmt.Println(" \tShow all option help") fmt.Println("-version") @@ -58,6 +63,11 @@ func InitFlags() { flag.Parse() + err := config.InitConfigDir(*flagConfigDir) + if err != nil { + screen.TermMessage(err) + } + if *flagVersion { // If -version was passed fmt.Println("Version:", util.Version) @@ -66,6 +76,22 @@ func InitFlags() { os.Exit(0) } + if len(*flagPlugin) != 0 { + action := *flagPlugin + // args := flag.Args() + if action == "list" { + plugins, err := manager.ListInstalledPlugins() + if err != nil { + fmt.Println(err) + } else { + for _, p := range plugins { + fmt.Println(p.Info.Name, p.Version) + } + } + } + os.Exit(0) + } + if *flagOptions { // If -options was passed for k, v := range config.DefaultGlobalSettings() { @@ -158,13 +184,9 @@ func main() { } config.InitGlobalSettings() + // InitConfigDir happens in InitFlags InitFlags() - err = config.InitConfigDir(*flagConfigDir) - if err != nil { - screen.TermMessage(err) - } - action.InitBindings() action.InitCommands() diff --git a/internal/manager/fetch.go b/internal/manager/fetch.go index 6dc4b934..26ae3592 100644 --- a/internal/manager/fetch.go +++ b/internal/manager/fetch.go @@ -43,9 +43,9 @@ func (i *PluginInfo) FetchRepo() error { } p := &Plugin{ - info: i, - dir: dir, - repo: r, + Info: i, + Dir: dir, + Repo: r, } err = p.ResolveVersion() @@ -58,7 +58,7 @@ func (i *PluginInfo) FetchRepo() error { } func (p *Plugin) ResolveVersion() error { - i := p.info + i := p.Info vs := i.Versions for _, v := range vs { @@ -67,7 +67,7 @@ func (p *Plugin) ResolveVersion() error { return err } if microrange(util.SemVersion) { - p.version = v.Vers + p.Version = v.Vers fmt.Println("resolve version to ", v.Vstr) return nil } @@ -77,16 +77,7 @@ func (p *Plugin) ResolveVersion() error { } func (p *Plugin) WriteVersion() error { - return ioutil.WriteFile(path.Join(p.dir, versionfile), []byte(p.version.String()), 0644) -} - -func (p *Plugin) FetchDeps() error { - _, err := ListInstalledPlugins() - if err != nil { - return err - } - - return nil + return ioutil.WriteFile(path.Join(p.Dir, versionfile), []byte(p.Version.String()), 0644) } func (p *Plugin) PostInstallHooks() error { diff --git a/internal/manager/plugin.go b/internal/manager/plugin.go index db307815..c5285f3a 100644 --- a/internal/manager/plugin.go +++ b/internal/manager/plugin.go @@ -29,15 +29,15 @@ const ( ) type Plugin struct { - info *PluginInfo - dir string - repo *git.Repository - version semver.Version // currently installed version + Info *PluginInfo + Dir string + Repo *git.Repository + Version semver.Version // currently installed version } func (p *Plugin) GetRequires() *PluginVersion { - for _, v := range p.info.Versions { - if p.version.Equals(v.Vers) { + for _, v := range p.Info.Versions { + if p.Version.Equals(v.Vers) { return &v } } @@ -146,7 +146,7 @@ func ListInstalledPlugins() ([]*Plugin, error) { if err != nil { return nil, err } - sv, err := semver.Make(string(versiondat)) + sv, err := semver.Make(string(bytes.TrimSpace(versiondat))) if err != nil { return nil, err } @@ -158,10 +158,10 @@ func ListInstalledPlugins() ([]*Plugin, error) { } p := &Plugin{ - info: info, - dir: dirname, - repo: r, - version: sv, + Info: info, + Dir: dirname, + Repo: r, + Version: sv, } plugins = append(plugins, p) From 15dff722b0383c57f3c547a84e98f82557f7c05c Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 17 Mar 2019 19:03:37 -0400 Subject: [PATCH 112/231] Remove plugin manager --- cmd/micro/micro.go | 32 +----- go.mod | 5 +- go.sum | 39 ------- internal/manager/fetch.go | 85 --------------- internal/manager/manager_test.go | 75 -------------- internal/manager/plugin.go | 173 ------------------------------- 6 files changed, 9 insertions(+), 400 deletions(-) delete mode 100644 internal/manager/fetch.go delete mode 100644 internal/manager/manager_test.go delete mode 100644 internal/manager/plugin.go diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index a076bd5b..e2a961f7 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -12,7 +12,6 @@ import ( "github.com/zyedidia/micro/internal/action" "github.com/zyedidia/micro/internal/buffer" "github.com/zyedidia/micro/internal/config" - "github.com/zyedidia/micro/internal/manager" "github.com/zyedidia/micro/internal/screen" "github.com/zyedidia/micro/internal/util" "github.com/zyedidia/tcell" @@ -28,7 +27,6 @@ var ( flagStartPos = flag.String("startpos", "", "LINE,COL to start the cursor at when opening a buffer.") flagConfigDir = flag.String("config-dir", "", "Specify a custom location for the configuration directory") flagOptions = flag.Bool("options", false, "Show all option help") - flagPlugin = flag.String("plugin", "", "Run a plugin manager action") ) func InitFlags() { @@ -40,9 +38,6 @@ func InitFlags() { fmt.Println("+LINE:COL") fmt.Println(" \tSpecify a line and column to start the cursor at when opening a buffer") fmt.Println(" \tThis can also be done by opening file:LINE:COL") - fmt.Println("-plugin ACTION") - fmt.Println(" \tRun a plugin manager action") - fmt.Println(" \tActions include: list, add, remove") fmt.Println("-options") fmt.Println(" \tShow all option help") fmt.Println("-version") @@ -63,11 +58,6 @@ func InitFlags() { flag.Parse() - err := config.InitConfigDir(*flagConfigDir) - if err != nil { - screen.TermMessage(err) - } - if *flagVersion { // If -version was passed fmt.Println("Version:", util.Version) @@ -76,22 +66,6 @@ func InitFlags() { os.Exit(0) } - if len(*flagPlugin) != 0 { - action := *flagPlugin - // args := flag.Args() - if action == "list" { - plugins, err := manager.ListInstalledPlugins() - if err != nil { - fmt.Println(err) - } else { - for _, p := range plugins { - fmt.Println(p.Info.Name, p.Version) - } - } - } - os.Exit(0) - } - if *flagOptions { // If -options was passed for k, v := range config.DefaultGlobalSettings() { @@ -184,9 +158,13 @@ func main() { } config.InitGlobalSettings() - // InitConfigDir happens in InitFlags InitFlags() + err = config.InitConfigDir(*flagConfigDir) + if err != nil { + screen.TermMessage(err) + } + action.InitBindings() action.InitCommands() diff --git a/go.mod b/go.mod index a7165a9c..13c51a04 100644 --- a/go.mod +++ b/go.mod @@ -2,12 +2,14 @@ module github.com/zyedidia/micro require ( github.com/blang/semver v3.5.1+incompatible + github.com/davecgh/go-spew v1.1.1 // indirect github.com/dustin/go-humanize v1.0.0 github.com/flynn/json5 v0.0.0-20160717195620-7620272ed633 github.com/gdamore/encoding v1.0.0 // indirect github.com/go-errors/errors v1.0.1 github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e // indirect github.com/jtolds/gls v4.2.1+incompatible // indirect + github.com/kr/pretty v0.1.0 // indirect github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 // indirect github.com/lucasb-eyer/go-colorful v0.0.0-20181028223441-12d3b2882a08 // indirect github.com/mattn/go-isatty v0.0.4 @@ -26,10 +28,11 @@ require ( github.com/zyedidia/pty v1.1.2-0.20180126010845-30364665a244 // indirect github.com/zyedidia/tcell v0.0.0-20190204041104-518c15c24302 github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415 + golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9 // indirect golang.org/x/text v0.3.0 gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0 // indirect + gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect gopkg.in/sourcemap.v1 v1.0.5 // indirect - gopkg.in/src-d/go-git.v4 v4.9.1 gopkg.in/yaml.v2 v2.2.2 layeh.com/gopher-luar v1.0.4 ) diff --git a/go.sum b/go.sum index 7063866b..234d7bc4 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,3 @@ -github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs= -github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= @@ -10,29 +6,16 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/emirpasic/gods v1.9.0 h1:rUF4PuzEjMChMiNsVjdI+SyLu7rEqpQ5reNFnhC7oFo= -github.com/emirpasic/gods v1.9.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/flynn/json5 v0.0.0-20160717195620-7620272ed633 h1:xJMmr4GMYIbALX5edyoDIOQpc2bOQTeJiWMeCl9lX/8= github.com/flynn/json5 v0.0.0-20160717195620-7620272ed633/go.mod h1:NJDK3/o7abx6PP54EOe0G0n0RLmhCo9xv61gUYpI0EY= github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko= github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= -github.com/gliderlabs/ssh v0.1.1 h1:j3L6gSLQalDETeEg/Jg0mGY0/y/N6zI2xX1978P0Uqw= -github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= -github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jtolds/gls v4.2.1+incompatible h1:fSuqC+Gmlu6l/ZYAoZzx2pyucC8Xza35fpRVWLVmUEE= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e h1:RgQk53JHp/Cjunrr1WlsXSZpqXn+uREuHvUVcK82CV8= -github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -46,15 +29,10 @@ github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/npat-efault/poller v2.0.0+incompatible h1:jtTdXWKgN5kDK41ts8hoY1rvTEi0K08MTB8/bRO9MqE= github.com/npat-efault/poller v2.0.0+incompatible/go.mod h1:lni01B89P8PtVpwlAhdhK1niN5rPkDGGpGGgBJzpSgo= -github.com/pelletier/go-buffruneio v0.2.0 h1:U4t4R6YkofJ5xHm3dJzuRpPZ0mr5MMCoAWooScCR7aA= -github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= -github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/robertkrimen/otto v0.0.0-20180617131154-15f95af6e78d h1:1VUlQbCfkoSGv7qP7Y+ro3ap1P1pPZxgdGVqiTVy5C4= @@ -65,14 +43,9 @@ github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304 h1:Jpy1PX github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c h1:Ho+uVpkel/udgjbwB5Lktg9BtvJSh2DT0Hi6LPSyI2w= github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= -github.com/src-d/gcfg v1.4.0 h1:xXbNR5AlLSA315x2UO+fTSSAXCDf+Ar38/6oyGbDKQ4= -github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/xanzy/ssh-agent v0.2.0 h1:Adglfbi5p9Z0BmK2oKU9nTG+zKfniSfnaMYB+ULd+Ro= -github.com/xanzy/ssh-agent v0.2.0/go.mod h1:0NyE30eGUDliuLEHJgYte/zncp2zdTStcOnWhgSqHD8= github.com/yuin/gopher-lua v0.0.0-20190125051437-7b9317363aa9 h1:Wy3fAQLBPP0JSWdq3kBnmbFgXDHcyhtPpd+8kENV7mU= github.com/yuin/gopher-lua v0.0.0-20190125051437-7b9317363aa9/go.mod h1:fFiAh+CowNFr0NK5VASokuwKwkbacRmHsVA7Yb1Tqac= github.com/zyedidia/clipboard v0.0.0-20180718195219-bd31d747117d h1:Lhqt2eo+rgM8aswvM7nTtAMVm8ARPWzkE9n6eZDOccY= @@ -87,10 +60,6 @@ github.com/zyedidia/tcell v0.0.0-20190204041104-518c15c24302 h1:ruNSURcO81y+J+Xn github.com/zyedidia/tcell v0.0.0-20190204041104-518c15c24302/go.mod h1:yXgdp23+aW8OMENYVBvpKoeiBtjaVWJ9HhpPDu6LBfM= github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415 h1:752dTQ5OatJ9M5ULK2+9lor+nzyZz+LYDo3WGngg3Rc= github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415/go.mod h1:8leT8G0Cm8NoJHdrrKHyR9MirWoF4YW7pZh06B6H+1E= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793 h1:u+LnwYTOOW7Ukr/fppxEb1Nwz0AtPflrblfvUudpo+I= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd h1:nTDtHvHSdCn1m6ITfMRqtOd/9+7a3s8RBNOZ3eYZzJA= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9 h1:lkiLiLBHGoH3XnqSLUIaBsilGMUjI+Uy2Xu2JLUtTas= golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= @@ -102,14 +71,6 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/sourcemap.v1 v1.0.5 h1:inv58fC9f9J3TK2Y2R1NPntXEn3/wjWHkonhIUODNTI= gopkg.in/sourcemap.v1 v1.0.5/go.mod h1:2RlvNNSMglmRrcvhfuzp4hQHwOtjxlbjX7UPY/GXb78= -gopkg.in/src-d/go-billy.v4 v4.2.1 h1:omN5CrMrMcQ+4I8bJ0wEhOBPanIRWzFC953IiXKdYzo= -gopkg.in/src-d/go-billy.v4 v4.2.1/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk= -gopkg.in/src-d/go-git-fixtures.v3 v3.1.1 h1:XWW/s5W18RaJpmo1l0IYGqXKuJITWRFuA45iOf1dKJs= -gopkg.in/src-d/go-git-fixtures.v3 v3.1.1/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= -gopkg.in/src-d/go-git.v4 v4.9.1 h1:0oKHJZY8tM7B71378cfTg2c5jmWyNlXvestTT6WfY+4= -gopkg.in/src-d/go-git.v4 v4.9.1/go.mod h1:Vtut8izDyrM8BUVQnzJ+YvmNcem2J89EmfZYCkLokZk= -gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= layeh.com/gopher-luar v1.0.4 h1:BFgt94J/CXh4HkDcE2b7A7pBaVeQKEVfHEBRKL/K/Tc= diff --git a/internal/manager/fetch.go b/internal/manager/fetch.go deleted file mode 100644 index 26ae3592..00000000 --- a/internal/manager/fetch.go +++ /dev/null @@ -1,85 +0,0 @@ -package manager - -import ( - "fmt" - "io/ioutil" - "net/http" - "path" - - "github.com/blang/semver" - "github.com/zyedidia/micro/internal/config" - "github.com/zyedidia/micro/internal/util" - git "gopkg.in/src-d/go-git.v4" -) - -// NewPluginInfoFromUrl creates a new PluginInfo from a URL by fetching -// the data at that URL and parsing the JSON (running a GET request at -// the URL should return the JSON for a plugin info) -func NewPluginInfoFromUrl(url string) (*PluginInfo, error) { - resp, err := http.Get(url) - if err != nil { - return nil, err - } - - defer resp.Body.Close() - dat, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil, err - } - - return NewPluginInfo(dat) -} - -// FetchRepo downloads this plugin's git repository -func (i *PluginInfo) FetchRepo() error { - dir := path.Join(config.ConfigDir, "plugin", i.Name) - r, err := git.PlainClone(dir, false, &git.CloneOptions{ - URL: i.Repo, - Progress: nil, - }) - - if err != nil { - return err - } - - p := &Plugin{ - Info: i, - Dir: dir, - Repo: r, - } - - err = p.ResolveVersion() - if err != nil { - return err - } - err = p.WriteVersion() - - return err -} - -func (p *Plugin) ResolveVersion() error { - i := p.Info - vs := i.Versions - - for _, v := range vs { - microrange, err := semver.ParseRange(v.Require["micro"]) - if err != nil { - return err - } - if microrange(util.SemVersion) { - p.Version = v.Vers - fmt.Println("resolve version to ", v.Vstr) - return nil - } - } - - return ErrRequireUnsat -} - -func (p *Plugin) WriteVersion() error { - return ioutil.WriteFile(path.Join(p.Dir, versionfile), []byte(p.Version.String()), 0644) -} - -func (p *Plugin) PostInstallHooks() error { - return nil -} diff --git a/internal/manager/manager_test.go b/internal/manager/manager_test.go deleted file mode 100644 index 96e9003d..00000000 --- a/internal/manager/manager_test.go +++ /dev/null @@ -1,75 +0,0 @@ -package manager - -import ( - "testing" - - "github.com/blang/semver" - "github.com/zyedidia/micro/internal/config" - "github.com/zyedidia/micro/internal/util" -) - -func init() { - config.InitConfigDir("./") - util.Version = "1.3.1" - util.SemVersion, _ = semver.Make(util.Version) -} - -var sampleJson = []byte(`{ - "name": "comment", - "description": "Plugin to auto comment or uncomment lines", - "website": "https://github.com/micro-editor/comment-plugin", - "repository": "https://github.com/micro-editor/comment-plugin", - "versions": [ - { - "version": "1.0.6", - "tag": "v1.0.6", - "require": { - "micro": ">=1.1.0" - } - }, - { - "version": "1.0.5", - "tag": "v1.0.5", - "require": { - "micro": ">=1.0.0" - } - }, - { - "version": "1.0.6-dev", - "tag": "nightly", - "require": { - "micro": ">=1.3.1" - } - } - ] -}`) - -func TestParse(t *testing.T) { - _, err := NewPluginInfo(sampleJson) - if err != nil { - t.Error(err) - } -} - -func TestFetch(t *testing.T) { - i, err := NewPluginInfoFromUrl("http://zbyedidia.webfactional.com/micro/test.json") - if err != nil { - t.Error(err) - } - - err = i.FetchRepo() - if err != nil { - t.Error(err) - } -} - -// func TestList(t *testing.T) { -// is, err := ListInstalledPlugins() -// if err != nil { -// t.Error(err) -// } -// -// for _, i := range is { -// fmt.Println(i.dir) -// } -// } diff --git a/internal/manager/plugin.go b/internal/manager/plugin.go deleted file mode 100644 index c5285f3a..00000000 --- a/internal/manager/plugin.go +++ /dev/null @@ -1,173 +0,0 @@ -package manager - -import ( - "bytes" - "encoding/json" - "errors" - "io/ioutil" - "path" - - "github.com/blang/semver" - "github.com/zyedidia/micro/internal/config" - git "gopkg.in/src-d/go-git.v4" -) - -var ( - ErrMissingName = errors.New("Missing or empty name field") - ErrMissingDesc = errors.New("Missing or empty description field") - ErrMissingSite = errors.New("Missing or empty website field") - ErrMissingRepo = errors.New("Missing or empty repository field") - ErrMissingVersions = errors.New("Missing or empty versions field") - ErrMissingTag = errors.New("Missing or empty tag field") - ErrMissingRequire = errors.New("Missing or empty require field") - ErrRequireUnsat = errors.New("Version require could not be satisfied") -) - -const ( - infojson = "plugin.json" - versionfile = "version.lock" -) - -type Plugin struct { - Info *PluginInfo - Dir string - Repo *git.Repository - Version semver.Version // currently installed version -} - -func (p *Plugin) GetRequires() *PluginVersion { - for _, v := range p.Info.Versions { - if p.Version.Equals(v.Vers) { - return &v - } - } - return nil -} - -// PluginVersion describes a version for a plugin as well as any dependencies that -// version might have -// This marks a tag that corresponds to the version in the git repo -type PluginVersion struct { - Vers semver.Version - Vstr string `json:"version"` - Tag string `json:"tag"` - Require map[string]string `json:"require"` -} - -// PluginInfo contains all the needed info about a plugin -type PluginInfo struct { - Name string `json:"name"` - Desc string `json:"description"` - Site string `json:"website"` - Repo string `json:"repository"` - Versions []PluginVersion `json:"versions"` -} - -// NewPluginInfo parses a JSON input into a valid PluginInfo struct -// Returns an error if there are any missing fields or any invalid fields -// There are no optional fields in a plugin info json file -func NewPluginInfo(data []byte) (*PluginInfo, error) { - var info PluginInfo - - dec := json.NewDecoder(bytes.NewReader(data)) - dec.DisallowUnknownFields() // Force errors - - if err := dec.Decode(&info); err != nil { - return nil, err - } - - if len(info.Name) == 0 { - return nil, ErrMissingName - } else if len(info.Desc) == 0 { - return nil, ErrMissingDesc - } else if len(info.Site) == 0 { - return nil, ErrMissingSite - } else if len(info.Repo) == 0 { - return nil, ErrMissingRepo - } else if err := info.makeVersions(); err != nil { - return nil, err - } - - return &info, nil -} - -func (i *PluginInfo) makeVersions() error { - if len(i.Versions) == 0 { - return ErrMissingVersions - } - - for j, v := range i.Versions { - sv, err := semver.Make(v.Vstr) - if err != nil { - return err - } - i.Versions[j].Vers = sv - if len(v.Tag) == 0 { - return ErrMissingTag - } else if v.Require == nil { - return ErrMissingRequire - } - } - - return nil -} - -// ListInstalledPlugins searches the config directory for all installed plugins -// and returns the list of plugin infos corresponding to them -func ListInstalledPlugins() ([]*Plugin, error) { - pdir := path.Join(config.ConfigDir, "plugin") - - files, err := ioutil.ReadDir(pdir) - if err != nil { - return nil, err - } - - var plugins []*Plugin - - for _, dir := range files { - if dir.IsDir() { - files, err := ioutil.ReadDir(path.Join(pdir, dir.Name())) - if err != nil { - return nil, err - } - - for _, f := range files { - if f.Name() == infojson { - dat, err := ioutil.ReadFile(path.Join(pdir, dir.Name(), infojson)) - if err != nil { - return nil, err - } - info, err := NewPluginInfo(dat) - if err != nil { - return nil, err - } - - versiondat, err := ioutil.ReadFile(path.Join(pdir, dir.Name(), versionfile)) - if err != nil { - return nil, err - } - sv, err := semver.Make(string(bytes.TrimSpace(versiondat))) - if err != nil { - return nil, err - } - - dirname := path.Join(pdir, dir.Name()) - r, err := git.PlainOpen(dirname) - if err != nil { - return nil, err - } - - p := &Plugin{ - Info: info, - Dir: dirname, - Repo: r, - Version: sv, - } - - plugins = append(plugins, p) - } - } - } - } - return plugins, nil -} From 5ab6c9795fb004fa25d6ffd5a26b6f19c17e74cf Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 18 Mar 2019 18:40:53 -0400 Subject: [PATCH 113/231] Load plugins --- Makefile | 3 ++ cmd/micro/micro.go | 2 ++ internal/config/plugin.go | 57 ++++++++++++++++++++++++++++++++ internal/config/rtfiles.go | 42 ++++++++++++++++-------- internal/lua/plugin.go | 67 -------------------------------------- 5 files changed, 91 insertions(+), 80 deletions(-) create mode 100644 internal/config/plugin.go delete mode 100644 internal/lua/plugin.go diff --git a/Makefile b/Makefile index 72547cd0..c423ac01 100644 --- a/Makefile +++ b/Makefile @@ -15,6 +15,9 @@ GOVARS := -X github.com/zyedidia/micro/internal/util.Version=$(VERSION) -X githu build: go build -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro +build-dbg: + go build -ldflags "-s -w $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro + # Builds micro after building the runtime and checking dependencies build-all: runtime build diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index e2a961f7..fc89f3bc 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -173,6 +173,8 @@ func main() { screen.TermMessage(err) } + config.LoadAllPlugins() + screen.Init() // If we have an error, we can exit cleanly and not completely diff --git a/internal/config/plugin.go b/internal/config/plugin.go new file mode 100644 index 00000000..ffb24e94 --- /dev/null +++ b/internal/config/plugin.go @@ -0,0 +1,57 @@ +package config + +import ( + "errors" + + lua "github.com/yuin/gopher-lua" + ulua "github.com/zyedidia/micro/internal/lua" +) + +var ErrNoSuchFunction = errors.New("No such function exists") + +func LoadAllPlugins() { + for _, p := range Plugins { + p.Load() + } +} + +type Plugin struct { + Name string // name of plugin + Info RuntimeFile // json file containing info + Srcs []RuntimeFile // lua files +} + +var Plugins []*Plugin + +func (p *Plugin) Load() error { + for _, f := range p.Srcs { + dat, err := f.Data() + if err != nil { + return err + } + err = ulua.LoadFile(p.Name, f.Name(), dat) + if err != nil { + return err + } + } + return nil +} + +func (p *Plugin) Call(fn string, args ...lua.LValue) (lua.LValue, error) { + plug := ulua.L.GetGlobal(p.Name) + luafn := ulua.L.GetField(plug, fn) + if luafn == lua.LNil { + return nil, ErrNoSuchFunction + } + err := ulua.L.CallByParam(lua.P{ + Fn: luafn, + NRet: 1, + Protect: true, + }, args...) + if err != nil { + return nil, err + } + ret := ulua.L.Get(-1) + ulua.L.Pop(1) + return ret, nil +} diff --git a/internal/config/rtfiles.go b/internal/config/rtfiles.go index 5db052ee..d31b4123 100644 --- a/internal/config/rtfiles.go +++ b/internal/config/rtfiles.go @@ -5,6 +5,7 @@ import ( "os" "path" "path/filepath" + "strings" ) const ( @@ -134,23 +135,38 @@ func InitRuntimeFiles() { add(RTHelp, "help", "*.md") // Search ConfigDir for plugin-scripts - files, _ := ioutil.ReadDir(filepath.Join(ConfigDir, "plugins")) - for _, f := range files { - realpath, _ := filepath.EvalSymlinks(filepath.Join(ConfigDir, "plugins", f.Name())) - realpathStat, _ := os.Stat(realpath) - if realpathStat.IsDir() { - scriptPath := filepath.Join(ConfigDir, "plugins", f.Name(), f.Name()+".lua") - if _, err := os.Stat(scriptPath); err == nil { - AddRuntimeFile(RTPlugin, realFile(scriptPath)) + plugdir := filepath.Join(ConfigDir, "plugins") + files, _ := ioutil.ReadDir(plugdir) + for _, d := range files { + if d.IsDir() { + srcs, _ := ioutil.ReadDir(filepath.Join(plugdir, d.Name())) + p := new(Plugin) + p.Name = d.Name() + for _, f := range srcs { + if strings.HasSuffix(f.Name(), ".lua") { + p.Srcs = append(p.Srcs, realFile(filepath.Join(plugdir, d.Name(), f.Name()))) + } else if f.Name() == "info.json" { + p.Info = realFile(filepath.Join(plugdir, d.Name(), "info.json")) + } } + Plugins = append(Plugins, p) } } - if files, err := AssetDir("runtime/plugins"); err == nil { - for _, f := range files { - scriptPath := path.Join("runtime/plugins", f, f+".lua") - if _, err := AssetInfo(scriptPath); err == nil { - AddRuntimeFile(RTPlugin, assetFile(scriptPath)) + plugdir = filepath.Join("runtime", "plugins") + if files, err := AssetDir(plugdir); err == nil { + for _, d := range files { + if srcs, err := AssetDir(filepath.Join(plugdir, d)); err == nil { + p := new(Plugin) + p.Name = d + for _, f := range srcs { + if strings.HasSuffix(f, ".lua") { + p.Srcs = append(p.Srcs, assetFile(filepath.Join(plugdir, d, f))) + } else if f == "info.json" { + p.Info = assetFile(filepath.Join(plugdir, d, "info.json")) + } + } + Plugins = append(Plugins, p) } } } diff --git a/internal/lua/plugin.go b/internal/lua/plugin.go deleted file mode 100644 index d68003c4..00000000 --- a/internal/lua/plugin.go +++ /dev/null @@ -1,67 +0,0 @@ -package lua - -import ( - "errors" - "io/ioutil" - "strings" - - lua "github.com/yuin/gopher-lua" -) - -var ErrNoSuchFunction = errors.New("No such function exists") - -type Plugin struct { - name string - files []string -} - -func NewPluginFromDir(name string, dir string) (*Plugin, error) { - files, err := ioutil.ReadDir(dir) - if err != nil { - return nil, err - } - - p := new(Plugin) - p.name = name - - for _, f := range files { - if strings.HasSuffix(f.Name(), ".lua") { - p.files = append(p.files, dir+f.Name()) - } - } - - return p, nil -} - -func (p *Plugin) Load() error { - for _, f := range p.files { - dat, err := ioutil.ReadFile(f) - if err != nil { - return err - } - err = LoadFile(p.name, f, dat) - if err != nil { - return err - } - } - return nil -} - -func (p *Plugin) Call(fn string, args ...lua.LValue) (lua.LValue, error) { - plug := L.GetGlobal(p.name) - luafn := L.GetField(plug, fn) - if luafn == lua.LNil { - return nil, ErrNoSuchFunction - } - err := L.CallByParam(lua.P{ - Fn: luafn, - NRet: 1, - Protect: true, - }, args...) - if err != nil { - return nil, err - } - ret := L.Get(-1) - L.Pop(1) - return ret, nil -} From 3335f377a9ccaae39a0a1d677e1690334c388b08 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 19 Mar 2019 18:28:51 -0400 Subject: [PATCH 114/231] Some plugin callbacks --- cmd/micro/initlua.go | 37 ++++++++++++++++++++++++++++++++++++ cmd/micro/micro.go | 39 ++++++++++++++++++++++---------------- internal/action/bufpane.go | 6 ++++++ internal/action/globals.go | 4 ++++ internal/buffer/buffer.go | 10 +++++++++- internal/config/plugin.go | 15 +++++++++++++++ internal/config/rtfiles.go | 2 ++ internal/lua/lua.go | 5 ----- 8 files changed, 96 insertions(+), 22 deletions(-) create mode 100644 cmd/micro/initlua.go diff --git a/cmd/micro/initlua.go b/cmd/micro/initlua.go new file mode 100644 index 00000000..d68e9077 --- /dev/null +++ b/cmd/micro/initlua.go @@ -0,0 +1,37 @@ +package main + +import ( + "log" + + lua "github.com/yuin/gopher-lua" + luar "layeh.com/gopher-luar" + + "github.com/zyedidia/micro/internal/action" + ulua "github.com/zyedidia/micro/internal/lua" + "github.com/zyedidia/micro/internal/screen" +) + +func init() { + ulua.L = lua.NewState() + ulua.L.SetGlobal("import", luar.New(ulua.L, LuaImport)) +} + +func LuaImport(pkg string) *lua.LTable { + if pkg == "micro" { + return luaImportMicro() + } else { + return ulua.Import(pkg) + } +} + +func luaImportMicro() *lua.LTable { + pkg := ulua.L.NewTable() + + ulua.L.SetField(pkg, "TermMessage", luar.New(ulua.L, screen.TermMessage)) + ulua.L.SetField(pkg, "TermError", luar.New(ulua.L, screen.TermError)) + ulua.L.SetField(pkg, "InfoBar", luar.New(ulua.L, action.GetInfoBar)) + ulua.L.SetField(pkg, "Log", luar.New(ulua.L, log.Println)) + ulua.L.SetField(pkg, "TryBindKey", luar.New(ulua.L, action.TryBindKey)) + + return pkg +} diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index fc89f3bc..9799ef70 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -27,6 +27,7 @@ var ( flagStartPos = flag.String("startpos", "", "LINE,COL to start the cursor at when opening a buffer.") flagConfigDir = flag.String("config-dir", "", "Specify a custom location for the configuration directory") flagOptions = flag.Bool("options", false, "Show all option help") + optionFlags map[string]*string ) func InitFlags() { @@ -50,7 +51,7 @@ func InitFlags() { fmt.Println("\nUse `micro -options` to see the full list of configuration options") } - optionFlags := make(map[string]*string) + optionFlags = make(map[string]*string) for k, v := range config.DefaultGlobalSettings() { optionFlags[k] = flag.String(k, "", fmt.Sprintf("The %s option. Default value: '%v'", k, v)) @@ -74,16 +75,6 @@ func InitFlags() { } os.Exit(0) } - for k, v := range optionFlags { - if *v != "" { - nativeValue, err := config.GetNativeValue(k, config.GlobalSettings[k], *v) - if err != nil { - screen.TermMessage(err) - continue - } - config.GlobalSettings[k] = nativeValue - } - } } // LoadInput determines which files should be loaded into buffers @@ -151,6 +142,13 @@ func main() { InitLog() + InitFlags() + + err = config.InitConfigDir(*flagConfigDir) + if err != nil { + screen.TermMessage(err) + } + config.InitRuntimeFiles() err = config.ReadSettings() if err != nil { @@ -158,11 +156,16 @@ func main() { } config.InitGlobalSettings() - InitFlags() - - err = config.InitConfigDir(*flagConfigDir) - if err != nil { - screen.TermMessage(err) + // flag options + for k, v := range optionFlags { + if *v != "" { + nativeValue, err := config.GetNativeValue(k, config.GlobalSettings[k], *v) + if err != nil { + screen.TermMessage(err) + continue + } + config.GlobalSettings[k] = nativeValue + } } action.InitBindings() @@ -174,6 +177,10 @@ func main() { } config.LoadAllPlugins() + err = config.RunPluginFn("init") + if err != nil { + screen.TermMessage(err) + } screen.Init() diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index ac6c674f..87f06d5c 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -4,8 +4,12 @@ import ( "strings" "time" + luar "layeh.com/gopher-luar" + "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/internal/config" "github.com/zyedidia/micro/internal/display" + ulua "github.com/zyedidia/micro/internal/lua" "github.com/zyedidia/micro/internal/screen" "github.com/zyedidia/tcell" ) @@ -110,6 +114,8 @@ func NewBufPane(buf *buffer.Buffer, win display.BWindow) *BufPane { h.Cursor = h.Buf.GetActiveCursor() h.mouseReleased = true + config.RunPluginFn("onBufPaneOpen", luar.New(ulua.L, h)) + return h } diff --git a/internal/action/globals.go b/internal/action/globals.go index edc4f476..301545c8 100644 --- a/internal/action/globals.go +++ b/internal/action/globals.go @@ -5,3 +5,7 @@ var InfoBar *InfoPane func InitGlobals() { InfoBar = NewInfoBar() } + +func GetInfoBar() *InfoPane { + return InfoBar +} diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index 7496db93..c1a2f72f 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -12,10 +12,13 @@ import ( "time" "unicode/utf8" + luar "layeh.com/gopher-luar" + "github.com/zyedidia/micro/internal/config" - "github.com/zyedidia/micro/pkg/highlight" + ulua "github.com/zyedidia/micro/internal/lua" "github.com/zyedidia/micro/internal/screen" . "github.com/zyedidia/micro/internal/util" + "github.com/zyedidia/micro/pkg/highlight" "golang.org/x/text/encoding/htmlindex" "golang.org/x/text/encoding/unicode" "golang.org/x/text/transform" @@ -228,6 +231,11 @@ func NewBuffer(r io.Reader, size int64, path string, cursorPosition []string, bt } } + err = config.RunPluginFn("onBufferOpen", luar.New(ulua.L, b)) + if err != nil { + screen.TermMessage(err) + } + OpenBuffers = append(OpenBuffers, b) return b diff --git a/internal/config/plugin.go b/internal/config/plugin.go index ffb24e94..1ffa9ce7 100644 --- a/internal/config/plugin.go +++ b/internal/config/plugin.go @@ -2,6 +2,7 @@ package config import ( "errors" + "log" lua "github.com/yuin/gopher-lua" ulua "github.com/zyedidia/micro/internal/lua" @@ -9,12 +10,26 @@ import ( var ErrNoSuchFunction = errors.New("No such function exists") +// LoadAllPlugins loads all detected plugins (in runtime/plugins and ConfigDir/plugins) func LoadAllPlugins() { for _, p := range Plugins { p.Load() } } +// RunPluginFn runs a given function in all plugins +func RunPluginFn(fn string, args ...lua.LValue) error { + var reterr error + for _, p := range Plugins { + log.Println(p.Name, fn) + _, err := p.Call(fn, args...) + if err != nil && err != ErrNoSuchFunction { + reterr = errors.New("Plugin " + p.Name + ": " + err.Error()) + } + } + return reterr +} + type Plugin struct { Name string // name of plugin Info RuntimeFile // json file containing info diff --git a/internal/config/rtfiles.go b/internal/config/rtfiles.go index d31b4123..520c74b3 100644 --- a/internal/config/rtfiles.go +++ b/internal/config/rtfiles.go @@ -2,6 +2,7 @@ package config import ( "io/ioutil" + "log" "os" "path" "path/filepath" @@ -137,6 +138,7 @@ func InitRuntimeFiles() { // Search ConfigDir for plugin-scripts plugdir := filepath.Join(ConfigDir, "plugins") files, _ := ioutil.ReadDir(plugdir) + log.Println("reading", plugdir) for _, d := range files { if d.IsDir() { srcs, _ := ioutil.ReadDir(filepath.Join(plugdir, d.Name())) diff --git a/internal/lua/lua.go b/internal/lua/lua.go index 853f10fa..e0392e95 100644 --- a/internal/lua/lua.go +++ b/internal/lua/lua.go @@ -23,11 +23,6 @@ import ( var L *lua.LState -func init() { - L = lua.NewState() - L.SetGlobal("import", luar.New(L, Import)) -} - // LoadFile loads a lua file func LoadFile(module string, file string, data []byte) error { pluginDef := []byte("module(\"" + module + "\", package.seeall)") From d45f8b4d23f96872b7f90ab12c08a3864e6d2b75 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 15 Jun 2019 13:54:26 -0400 Subject: [PATCH 115/231] Some plugin helpers --- internal/lua/lua.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/internal/lua/lua.go b/internal/lua/lua.go index e0392e95..4e1ab7b4 100644 --- a/internal/lua/lua.go +++ b/internal/lua/lua.go @@ -66,11 +66,22 @@ func Import(pkg string) *lua.LTable { return importErrors() case "time": return importTime() + case "micro/plugin": + return importMicroPlugin() default: return nil } } +func importMicroPlugin() *lua.LTable { + pkg := L.NewTable() + + L.SetField(pkg, "RegisterCallback", luar.New(L, (*Plugin).RegisterCallback)) + L.SetField(pkg, "GetPlugin", luar.New(L, GetPlugin)) + + return pkg +} + func importFmt() *lua.LTable { pkg := L.NewTable() From 74ee256260fe3471d386691986c1d5882f5b1141 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 15 Jun 2019 14:04:53 -0400 Subject: [PATCH 116/231] Revert "Some plugin helpers" This reverts commit 75f9d7d9122f5b475c4ff323cca7cc068ea4e411. --- internal/lua/lua.go | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/internal/lua/lua.go b/internal/lua/lua.go index 4e1ab7b4..e0392e95 100644 --- a/internal/lua/lua.go +++ b/internal/lua/lua.go @@ -66,22 +66,11 @@ func Import(pkg string) *lua.LTable { return importErrors() case "time": return importTime() - case "micro/plugin": - return importMicroPlugin() default: return nil } } -func importMicroPlugin() *lua.LTable { - pkg := L.NewTable() - - L.SetField(pkg, "RegisterCallback", luar.New(L, (*Plugin).RegisterCallback)) - L.SetField(pkg, "GetPlugin", luar.New(L, GetPlugin)) - - return pkg -} - func importFmt() *lua.LTable { pkg := L.NewTable() From f5f4154d4c6e5288086092c45e42bff1043b855a Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 15 Jun 2019 14:44:03 -0400 Subject: [PATCH 117/231] Fix some search bugs --- cmd/micro/micro.go | 10 +++++++++- internal/action/actions.go | 13 +++++++++---- internal/action/bufpane.go | 3 +++ internal/buffer/search.go | 16 ++++++++-------- 4 files changed, 29 insertions(+), 13 deletions(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 9799ef70..230c62c0 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -5,6 +5,7 @@ import ( "fmt" "io/ioutil" "os" + "sort" "strings" "github.com/go-errors/errors" @@ -69,7 +70,14 @@ func InitFlags() { if *flagOptions { // If -options was passed - for k, v := range config.DefaultGlobalSettings() { + var keys []string + m := config.DefaultGlobalSettings() + for k, _ := range m { + keys = append(keys, k) + } + sort.Strings(keys) + for _, k := range keys { + v := m[k] fmt.Printf("-%s value\n", k) fmt.Printf(" \tDefault value: '%v'\n", v) } diff --git a/internal/action/actions.go b/internal/action/actions.go index 3ecce1aa..846489d4 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -599,21 +599,25 @@ func (h *BufPane) saveBufToFile(filename string) { // Find opens a prompt and searches forward for the input func (h *BufPane) Find() bool { + h.searchOrig = h.Cursor.Loc InfoBar.Prompt("Find: ", "", "Find", func(resp string) { // Event callback - match, found, _ := h.Buf.FindNext(resp, h.Buf.Start(), h.Buf.End(), h.Cursor.Loc, true, true) + match, found, _ := h.Buf.FindNext(resp, h.Buf.Start(), h.Buf.End(), h.searchOrig, true, true) if found { h.Cursor.SetSelectionStart(match[0]) h.Cursor.SetSelectionEnd(match[1]) h.Cursor.OrigSelection[0] = h.Cursor.CurSelection[0] h.Cursor.OrigSelection[1] = h.Cursor.CurSelection[1] + h.Cursor.GotoLoc(match[1]) } else { + h.Cursor.GotoLoc(h.searchOrig) h.Cursor.ResetSelection() } + h.Relocate() }, func(resp string, canceled bool) { // Finished callback if !canceled { - match, found, err := h.Buf.FindNext(resp, h.Buf.Start(), h.Buf.End(), h.Cursor.Loc, true, true) + match, found, err := h.Buf.FindNext(resp, h.Buf.Start(), h.Buf.End(), h.searchOrig, true, true) if err != nil { InfoBar.Error(err) } @@ -622,7 +626,7 @@ func (h *BufPane) Find() bool { h.Cursor.SetSelectionEnd(match[1]) h.Cursor.OrigSelection[0] = h.Cursor.CurSelection[0] h.Cursor.OrigSelection[1] = h.Cursor.CurSelection[1] - h.Cursor.Loc = h.Cursor.CurSelection[1] + h.Cursor.GotoLoc(h.Cursor.CurSelection[1]) h.lastSearch = resp } else { h.Cursor.ResetSelection() @@ -631,9 +635,10 @@ func (h *BufPane) Find() bool { } else { h.Cursor.ResetSelection() } + h.Relocate() }) - return true + return false } // FindNext searches forwards for the last used search term diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 87f06d5c..ae6d56ce 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -104,6 +104,9 @@ type BufPane struct { multiWord bool splitID uint64 + + // remember original location of a search in case the search is canceled + searchOrig buffer.Loc } func NewBufPane(buf *buffer.Buffer, win display.BWindow) *BufPane { diff --git a/internal/buffer/search.go b/internal/buffer/search.go index 587ca5e9..4382971d 100644 --- a/internal/buffer/search.go +++ b/internal/buffer/search.go @@ -21,19 +21,19 @@ func (b *Buffer) findDown(r *regexp.Regexp, start, end Loc) ([2]Loc, bool) { if i == start.Y && start.Y == end.Y { nchars := utf8.RuneCount(l) - start.X = util.Clamp(start.X, 0, nchars-1) - end.X = util.Clamp(end.X, 0, nchars-1) + start.X = util.Clamp(start.X, 0, nchars) + end.X = util.Clamp(end.X, 0, nchars) l = util.SliceStart(l, end.X) l = util.SliceEnd(l, start.X) charpos = start.X } else if i == start.Y { nchars := utf8.RuneCount(l) - start.X = util.Clamp(start.X, 0, nchars-1) + start.X = util.Clamp(start.X, 0, nchars) l = util.SliceEnd(l, start.X) charpos = start.X } else if i == end.Y { nchars := utf8.RuneCount(l) - end.X = util.Clamp(end.X, 0, nchars-1) + end.X = util.Clamp(end.X, 0, nchars) l = util.SliceStart(l, end.X) } @@ -62,19 +62,19 @@ func (b *Buffer) findUp(r *regexp.Regexp, start, end Loc) ([2]Loc, bool) { if i == start.Y && start.Y == end.Y { nchars := utf8.RuneCount(l) - start.X = util.Clamp(start.X, 0, nchars-1) - end.X = util.Clamp(end.X, 0, nchars-1) + start.X = util.Clamp(start.X, 0, nchars) + end.X = util.Clamp(end.X, 0, nchars) l = util.SliceStart(l, end.X) l = util.SliceEnd(l, start.X) charpos = start.X } else if i == start.Y { nchars := utf8.RuneCount(l) - start.X = util.Clamp(start.X, 0, nchars-1) + start.X = util.Clamp(start.X, 0, nchars) l = util.SliceEnd(l, start.X) charpos = start.X } else if i == end.Y { nchars := utf8.RuneCount(l) - end.X = util.Clamp(end.X, 0, nchars-1) + end.X = util.Clamp(end.X, 0, nchars) l = util.SliceStart(l, end.X) } From adfeaf52ba11469e5506b06b25b0c230d443e540 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 15 Jun 2019 15:50:37 -0400 Subject: [PATCH 118/231] Fix serialization --- internal/buffer/buffer.go | 11 ++++++++++- internal/buffer/save.go | 5 +++-- internal/buffer/serialize.go | 22 ++++++++++++++-------- internal/info/infobuffer.go | 2 +- 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index c1a2f72f..543c5109 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -173,7 +173,7 @@ func NewBuffer(r io.Reader, size int64, path string, cursorPosition []string, bt found := false if len(path) > 0 { for _, buf := range OpenBuffers { - if buf.AbsPath == absPath { + if buf.AbsPath == absPath && buf.Type != BTInfo { found = true b.SharedBuffer = buf.SharedBuffer b.EventHandler = buf.EventHandler @@ -245,6 +245,7 @@ func NewBuffer(r io.Reader, size int64, path string, cursorPosition []string, bt func (b *Buffer) Close() { for i, buf := range OpenBuffers { if b == buf { + b.Fini() copy(OpenBuffers[i:], OpenBuffers[i+1:]) OpenBuffers[len(OpenBuffers)-1] = nil OpenBuffers = OpenBuffers[:len(OpenBuffers)-1] @@ -253,6 +254,14 @@ func (b *Buffer) Close() { } } +// Fini should be called when a buffer is closed and performs +// some cleanup +func (b *Buffer) Fini() { + if !b.Modified() { + b.Serialize() + } +} + // GetName returns the name that should be displayed in the statusline // for this buffer func (b *Buffer) GetName() string { diff --git a/internal/buffer/save.go b/internal/buffer/save.go index 8597810d..d876b338 100644 --- a/internal/buffer/save.go +++ b/internal/buffer/save.go @@ -55,7 +55,7 @@ func (b *Buffer) Save() error { } // SaveAs saves the buffer to a specified path (filename), creating the file if it does not exist -func (b *Buffer) SaveAs(filename string) error { +func (b *Buffer) SaveAs(filename string) (err error) { if b.Type.Scratch { return errors.New("Cannot save scratch buffer") } @@ -82,6 +82,7 @@ func (b *Buffer) SaveAs(filename string) error { // Update the last time this file was updated after saving defer func() { b.ModTime, _ = GetModTime(filename) + err = b.Serialize() }() // Removes any tilde and replaces with the absolute path to home @@ -160,7 +161,7 @@ func (b *Buffer) SaveAs(filename string) error { absPath, _ := filepath.Abs(filename) b.AbsPath = absPath b.isModified = false - return b.Serialize() + return } // SaveWithSudo saves the buffer to the default path with sudo diff --git a/internal/buffer/serialize.go b/internal/buffer/serialize.go index b559e764..ffd554b6 100644 --- a/internal/buffer/serialize.go +++ b/internal/buffer/serialize.go @@ -4,12 +4,14 @@ import ( "encoding/gob" "errors" "io" + "log" "os" "time" + "golang.org/x/text/encoding" + "github.com/zyedidia/micro/internal/config" . "github.com/zyedidia/micro/internal/util" - "golang.org/x/text/encoding/unicode" ) // The SerializedBuffer holds the types that get serialized when a buffer is saved @@ -20,25 +22,24 @@ type SerializedBuffer struct { ModTime time.Time } -func init() { - gob.Register(TextEvent{}) - gob.Register(SerializedBuffer{}) -} - // Serialize serializes the buffer to config.ConfigDir/buffers func (b *Buffer) Serialize() error { if !b.Settings["savecursor"].(bool) && !b.Settings["saveundo"].(bool) { return nil } + if b.Path == "" { + return nil + } name := config.ConfigDir + "/buffers/" + EscapePath(b.AbsPath) - return overwriteFile(name, unicode.UTF8, func(file io.Writer) error { + return overwriteFile(name, encoding.Nop, func(file io.Writer) error { err := gob.NewEncoder(file).Encode(SerializedBuffer{ b.EventHandler, b.GetActiveCursor().Loc, b.ModTime, }) + log.Println("save mod time", b.ModTime) return err }) } @@ -46,12 +47,14 @@ func (b *Buffer) Serialize() error { func (b *Buffer) Unserialize() error { // If either savecursor or saveundo is turned on, we need to load the serialized information // from ~/.config/micro/buffers + if b.Path == "" { + return nil + } file, err := os.Open(config.ConfigDir + "/buffers/" + EscapePath(b.AbsPath)) defer file.Close() if err == nil { var buffer SerializedBuffer decoder := gob.NewDecoder(file) - gob.Register(TextEvent{}) err = decoder.Decode(&buffer) if err != nil { return errors.New(err.Error() + "\nYou may want to remove the files in ~/.config/micro/buffers (these files store the information for the 'saveundo' and 'savecursor' options) if this problem persists.") @@ -63,9 +66,12 @@ func (b *Buffer) Unserialize() error { if b.Settings["saveundo"].(bool) { // We should only use last time's eventhandler if the file wasn't modified by someone else in the meantime if b.ModTime == buffer.ModTime { + log.Println("good mod time") b.EventHandler = buffer.EventHandler b.EventHandler.cursors = b.cursors b.EventHandler.buf = b.SharedBuffer + } else { + log.Println("bad mod time", b.ModTime, buffer.ModTime) } } } diff --git a/internal/info/infobuffer.go b/internal/info/infobuffer.go index 75ed43ec..3e8de958 100644 --- a/internal/info/infobuffer.go +++ b/internal/info/infobuffer.go @@ -39,7 +39,7 @@ func NewBuffer() *InfoBuf { ib := new(InfoBuf) ib.History = make(map[string][]string) - ib.Buffer = buffer.NewBufferFromString("", "infobar", buffer.BTInfo) + ib.Buffer = buffer.NewBufferFromString("", "", buffer.BTInfo) ib.LoadHistory() return ib From 995e1dc7048f572634dac0054fa82ee39b489487 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 15 Jun 2019 16:03:02 -0400 Subject: [PATCH 119/231] Add tabmovement support --- internal/action/actions.go | 44 ++++++++++++++++++++++++++++++++++---- internal/util/util.go | 9 ++++---- 2 files changed, 44 insertions(+), 9 deletions(-) diff --git a/internal/action/actions.go b/internal/action/actions.go index 846489d4..e6c4998d 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -134,15 +134,51 @@ func (h *BufPane) CursorDown() bool { // CursorLeft moves the cursor left func (h *BufPane) CursorLeft() bool { - h.Cursor.Deselect(true) - h.Cursor.Left() + if h.Cursor.HasSelection() { + h.Cursor.Deselect(true) + } else { + tabstospaces := h.Buf.Settings["tabstospaces"].(bool) + tabmovement := h.Buf.Settings["tabmovement"].(bool) + if tabstospaces && tabmovement { + tabsize := int(h.Buf.Settings["tabsize"].(float64)) + line := h.Buf.LineBytes(h.Cursor.Y) + if h.Cursor.X-tabsize >= 0 && util.IsSpaces(line[h.Cursor.X-tabsize:h.Cursor.X]) && util.IsBytesWhitespace(line[0:h.Cursor.X-tabsize]) { + for i := 0; i < tabsize; i++ { + h.Cursor.Left() + } + } else { + h.Cursor.Left() + } + } else { + h.Cursor.Left() + } + } return true } // CursorRight moves the cursor right func (h *BufPane) CursorRight() bool { - h.Cursor.Deselect(false) - h.Cursor.Right() + if h.Cursor.HasSelection() { + h.Cursor.Deselect(false) + h.Cursor.Loc = h.Cursor.Loc.Move(1, h.Buf) + } else { + tabstospaces := h.Buf.Settings["tabstospaces"].(bool) + tabmovement := h.Buf.Settings["tabmovement"].(bool) + if tabstospaces && tabmovement { + tabsize := int(h.Buf.Settings["tabsize"].(float64)) + line := h.Buf.LineBytes(h.Cursor.Y) + if h.Cursor.X+tabsize < utf8.RuneCount(line) && util.IsSpaces(line[h.Cursor.X:h.Cursor.X+tabsize]) && util.IsBytesWhitespace(line[0:h.Cursor.X]) { + for i := 0; i < tabsize; i++ { + h.Cursor.Right() + } + } else { + h.Cursor.Right() + } + } else { + h.Cursor.Right() + } + } + return true } diff --git a/internal/util/util.go b/internal/util/util.go index dbaf9087..b7a7bb31 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -239,11 +239,10 @@ func IsWhitespace(c rune) bool { return c == ' ' || c == '\t' || c == '\n' } -// IsStrWhitespace returns true if the given string is all whitespace -func IsStrWhitespace(str string) bool { - // Range loop for unicode correctness - for _, c := range str { - if !IsWhitespace(c) { +// IsBytesWhitespace returns true if the given bytes are all whitespace +func IsBytesWhitespace(b []byte) bool { + for _, c := range b { + if !IsWhitespace(rune(c)) { return false } } From c93d7a1b35c56712c3cff797e2fd7b7b9eefecf7 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 15 Jun 2019 16:13:04 -0400 Subject: [PATCH 120/231] Add hidehelp support --- internal/action/command.go | 8 ++------ internal/buffer/buffer.go | 17 +++++++++++++++++ internal/buffer/settings.go | 2 ++ internal/display/statusline.go | 15 +++++---------- 4 files changed, 26 insertions(+), 16 deletions(-) diff --git a/internal/action/command.go b/internal/action/command.go index 4db56207..9b96de09 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -365,13 +365,9 @@ func SetGlobalOption(option, value string) error { for _, b := range buffer.OpenBuffers { b.UpdateRules() } - } - - if option == "infobar" || option == "keymenu" { + } else if option == "infobar" || option == "keymenu" { Tabs.Resize() - } - - if option == "mouse" { + } else if option == "mouse" { if !nativeValue.(bool) { screen.Screen.DisableMouse() } else { diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index 543c5109..36bb6cff 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -107,6 +107,9 @@ type Buffer struct { CurSuggestion int Messages []*Message + + StatusFormatLeft string + StatusFormatRight string } // NewBufferFromFile opens a new buffer using the given path @@ -236,11 +239,25 @@ func NewBuffer(r io.Reader, size int64, path string, cursorPosition []string, bt screen.TermMessage(err) } + b.SetStatusFormat() + OpenBuffers = append(OpenBuffers, b) return b } +// SetStatusFormat will correctly set the format string for the +// status line +func (b *Buffer) SetStatusFormat() { + if b.Settings["hidehelp"].(bool) { + b.StatusFormatLeft = "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat) $(opt:encoding)" + b.StatusFormatRight = "" + } else { + b.StatusFormatLeft = "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat) $(opt:encoding)" + b.StatusFormatRight = "$(bind:ToggleKeyMenu): show bindings, $(bind:ToggleHelp): toggle help" + } +} + // Close removes this buffer from the list of open buffers func (b *Buffer) Close() { for i, buf := range OpenBuffers { diff --git a/internal/buffer/settings.go b/internal/buffer/settings.go index b56608be..e85672a6 100644 --- a/internal/buffer/settings.go +++ b/internal/buffer/settings.go @@ -45,6 +45,8 @@ func (b *Buffer) SetOption(option, value string) error { } } else if option == "encoding" { b.isModified = true + } else if option == "hidehelp" { + b.SetStatusFormat() } return nil diff --git a/internal/display/statusline.go b/internal/display/statusline.go index ec7d382a..b48406cd 100644 --- a/internal/display/statusline.go +++ b/internal/display/statusline.go @@ -18,9 +18,7 @@ import ( // It gives information such as filename, whether the file has been // modified, filetype, cursor location type StatusLine struct { - FormatLeft string - FormatRight string - Info map[string]func(*buffer.Buffer) string + Info map[string]func(*buffer.Buffer) string win *BufWindow } @@ -30,9 +28,6 @@ type StatusLine struct { // NewStatusLine returns a statusline bound to a window func NewStatusLine(win *BufWindow) *StatusLine { s := new(StatusLine) - s.FormatLeft = "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat) $(opt:encoding)" - // s.FormatLeft = "$(filename) $(modified)(line,col) $(opt:filetype) $(opt:fileformat)" - s.FormatRight = "$(bind:ToggleKeyMenu): show bindings, $(bind:ToggleHelp): toggle help" s.Info = map[string]func(*buffer.Buffer) string{ "filename": func(b *buffer.Buffer) string { if b.Settings["basename"].(bool) { @@ -90,10 +85,10 @@ func (s *StatusLine) Display() { } } - leftText := []byte(s.FormatLeft) - leftText = formatParser.ReplaceAllFunc([]byte(s.FormatLeft), formatter) - rightText := []byte(s.FormatRight) - rightText = formatParser.ReplaceAllFunc([]byte(s.FormatRight), formatter) + leftText := []byte(s.win.Buf.StatusFormatLeft) + leftText = formatParser.ReplaceAllFunc(leftText, formatter) + rightText := []byte(s.win.Buf.StatusFormatRight) + rightText = formatParser.ReplaceAllFunc(rightText, formatter) statusLineStyle := config.DefStyle.Reverse(true) if style, ok := config.Colorscheme["statusline"]; ok { From 47a129b70f620802a4a21137a56146da927a230e Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 15 Jun 2019 16:54:53 -0400 Subject: [PATCH 121/231] Unicode support improvement --- internal/display/infowindow.go | 9 ++++++++- internal/display/statusline.go | 28 ++++++++++++++++++++++++---- internal/display/tabwindow.go | 26 ++++++++++++++++---------- 3 files changed, 48 insertions(+), 15 deletions(-) diff --git a/internal/display/infowindow.go b/internal/display/infowindow.go index 40519433..3c1c5151 100644 --- a/internal/display/infowindow.go +++ b/internal/display/infowindow.go @@ -99,7 +99,14 @@ func (i *InfoWindow) displayBuffer() { } - screen.Screen.SetContent(vlocX, i.Y, r, nil, style) + rw := runewidth.RuneWidth(r) + for j := 0; j < rw; j++ { + c := r + if j > 0 { + c = ' ' + } + screen.Screen.SetContent(vlocX, i.Y, c, nil, style) + } vlocX++ } nColsBeforeStart-- diff --git a/internal/display/statusline.go b/internal/display/statusline.go index b48406cd..79e090f2 100644 --- a/internal/display/statusline.go +++ b/internal/display/statusline.go @@ -3,14 +3,17 @@ package display import ( "bytes" "fmt" + "log" "path" "regexp" "strconv" "unicode/utf8" + runewidth "github.com/mattn/go-runewidth" "github.com/zyedidia/micro/internal/buffer" "github.com/zyedidia/micro/internal/config" "github.com/zyedidia/micro/internal/screen" + "github.com/zyedidia/micro/internal/util" ) // StatusLine represents the information line at the bottom @@ -95,19 +98,36 @@ func (s *StatusLine) Display() { statusLineStyle = style } - leftLen := utf8.RuneCount(leftText) - rightLen := utf8.RuneCount(rightText) + leftLen := util.StringWidth(leftText, utf8.RuneCount(leftText), 1) + rightLen := util.StringWidth(rightText, utf8.RuneCount(rightText), 1) winX := s.win.X for x := 0; x < s.win.Width; x++ { if x < leftLen { r, size := utf8.DecodeRune(leftText) leftText = leftText[size:] - screen.Screen.SetContent(winX+x, y, r, nil, statusLineStyle) + rw := runewidth.RuneWidth(r) + for j := 0; j < rw; j++ { + c := r + if j > 0 { + c = ' ' + x++ + } + log.Println(x, string(c)) + screen.Screen.SetContent(winX+x, y, c, nil, statusLineStyle) + } } else if x >= s.win.Width-rightLen && x < rightLen+s.win.Width-rightLen { r, size := utf8.DecodeRune(rightText) rightText = rightText[size:] - screen.Screen.SetContent(winX+x, y, r, nil, statusLineStyle) + rw := runewidth.RuneWidth(r) + for j := 0; j < rw; j++ { + c := r + if j > 0 { + c = ' ' + x++ + } + screen.Screen.SetContent(winX+x, y, c, nil, statusLineStyle) + } } else { screen.Screen.SetContent(winX+x, y, ' ', nil, statusLineStyle) } diff --git a/internal/display/tabwindow.go b/internal/display/tabwindow.go index 698dbf84..d3e9553b 100644 --- a/internal/display/tabwindow.go +++ b/internal/display/tabwindow.go @@ -3,6 +3,7 @@ package display import ( "unicode/utf8" + runewidth "github.com/mattn/go-runewidth" "github.com/zyedidia/micro/internal/buffer" "github.com/zyedidia/micro/internal/config" "github.com/zyedidia/micro/internal/screen" @@ -77,24 +78,29 @@ func (w *TabWindow) SetActive(a int) { } } -// TODO: handle files with character width >=2 - func (w *TabWindow) Display() { x := -w.hscroll done := false draw := func(r rune, n int) { for i := 0; i < n; i++ { - if x == w.width-1 && !done { - screen.Screen.SetContent(w.width-1, w.Y, '>', nil, config.DefStyle.Reverse(true)) + rw := runewidth.RuneWidth(r) + for j := 0; j < rw; j++ { + c := r + if j > 0 { + c = ' ' + } + if x == w.width-1 && !done { + screen.Screen.SetContent(w.width-1, w.Y, '>', nil, config.DefStyle.Reverse(true)) + x++ + break + } else if x == 0 && w.hscroll > 0 { + screen.Screen.SetContent(0, w.Y, '<', nil, config.DefStyle.Reverse(true)) + } else if x >= 0 && x < w.width { + screen.Screen.SetContent(x, w.Y, c, nil, config.DefStyle.Reverse(true)) + } x++ - break - } else if x == 0 && w.hscroll > 0 { - screen.Screen.SetContent(0, w.Y, '<', nil, config.DefStyle.Reverse(true)) - } else if x >= 0 && x < w.width { - screen.Screen.SetContent(x, w.Y, r, nil, config.DefStyle.Reverse(true)) } - x++ } } From aa774164a7871144376ce436c31c4aa1db7ad3af Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 15 Jun 2019 18:00:24 -0400 Subject: [PATCH 122/231] Fix relocate bug --- internal/action/actions.go | 3 ++- internal/action/bufpane.go | 4 +--- internal/buffer/serialize.go | 5 ----- internal/display/bufwindow.go | 8 ++++++++ internal/display/statusline.go | 2 -- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/internal/action/actions.go b/internal/action/actions.go index e6c4998d..72081718 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -966,7 +966,8 @@ func (h *BufPane) End() bool { v.StartLine = 0 h.SetView(v) } else { - h.StartLine = h.Buf.LinesNum() - v.Height + v.StartLine = h.Buf.LinesNum() - v.Height + h.SetView(v) } return false } diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index ae6d56ce..39b6c145 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -67,9 +67,6 @@ type BufPane struct { Cursor *buffer.Cursor // the active cursor - StartLine int // Vertical scrolling - StartCol int // Horizontal scrolling - // Since tcell doesn't differentiate between a mouse release event // and a mouse move event with no keys pressed, we need to keep // track of whether or not the mouse was pressed (or not released) last event to determine @@ -132,6 +129,7 @@ func (h *BufPane) OpenBuffer(b *buffer.Buffer) { h.Buf = b h.BWindow.SetBuffer(b) h.Cursor = b.GetActiveCursor() + h.Resize(h.GetView().Width, h.GetView().Height) v := new(display.View) h.SetView(v) h.Relocate() diff --git a/internal/buffer/serialize.go b/internal/buffer/serialize.go index ffd554b6..2cadcc77 100644 --- a/internal/buffer/serialize.go +++ b/internal/buffer/serialize.go @@ -4,7 +4,6 @@ import ( "encoding/gob" "errors" "io" - "log" "os" "time" @@ -39,7 +38,6 @@ func (b *Buffer) Serialize() error { b.GetActiveCursor().Loc, b.ModTime, }) - log.Println("save mod time", b.ModTime) return err }) } @@ -66,12 +64,9 @@ func (b *Buffer) Unserialize() error { if b.Settings["saveundo"].(bool) { // We should only use last time's eventhandler if the file wasn't modified by someone else in the meantime if b.ModTime == buffer.ModTime { - log.Println("good mod time") b.EventHandler = buffer.EventHandler b.EventHandler.cursors = b.cursors b.EventHandler.buf = b.SharedBuffer - } else { - log.Println("bad mod time", b.ModTime, buffer.ModTime) } } } diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index 80e0f668..ff779a10 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -1,6 +1,7 @@ package display import ( + "log" "strconv" "unicode/utf8" @@ -149,21 +150,27 @@ func (w *BufWindow) Relocate() bool { ret := false activeC := w.Buf.GetActiveCursor() cy := activeC.Y + log.Println("RELOCATE", w.StartLine, cy, height) scrollmargin := int(b.Settings["scrollmargin"].(float64)) if cy < w.StartLine+scrollmargin && cy > scrollmargin-1 { + log.Println("a") w.StartLine = cy - scrollmargin ret = true } else if cy < w.StartLine { + log.Println("b") w.StartLine = cy ret = true } if cy > w.StartLine+height-1-scrollmargin && cy < b.LinesNum()-scrollmargin { + log.Println("c") w.StartLine = cy - height + 1 + scrollmargin ret = true } else if cy >= b.LinesNum()-scrollmargin && cy >= height { + log.Println("d") w.StartLine = b.LinesNum() - height ret = true } + log.Println("RELOCATE DONE", w.StartLine) // horizontal relocation (scrolling) if !b.Settings["softwrap"].(bool) { @@ -356,6 +363,7 @@ func (w *BufWindow) showCursor(x, y int, main bool) { // displayBuffer draws the buffer being shown in this window on the screen.Screen func (w *BufWindow) displayBuffer() { + log.Println("STARTLINE", w.StartLine) b := w.Buf hasMessage := len(b.Messages) > 0 diff --git a/internal/display/statusline.go b/internal/display/statusline.go index 79e090f2..beede173 100644 --- a/internal/display/statusline.go +++ b/internal/display/statusline.go @@ -3,7 +3,6 @@ package display import ( "bytes" "fmt" - "log" "path" "regexp" "strconv" @@ -113,7 +112,6 @@ func (s *StatusLine) Display() { c = ' ' x++ } - log.Println(x, string(c)) screen.Screen.SetContent(winX+x, y, c, nil, statusLineStyle) } } else if x >= s.win.Width-rightLen && x < rightLen+s.win.Width-rightLen { From aa305c2676b9f4c11b1a208517fc84c9267144fe Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 15 Jun 2019 18:22:36 -0400 Subject: [PATCH 123/231] Implement buffer opening at a location --- cmd/micro/micro.go | 15 +--------- internal/buffer/buffer.go | 58 +++++++++++++++++++++++++++++---------- 2 files changed, 45 insertions(+), 28 deletions(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 230c62c0..1e554c51 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -6,7 +6,6 @@ import ( "io/ioutil" "os" "sort" - "strings" "github.com/go-errors/errors" isatty "github.com/mattn/go-isatty" @@ -25,7 +24,6 @@ var ( // Command line flags flagVersion = flag.Bool("version", false, "Show the version number and information") - flagStartPos = flag.String("startpos", "", "LINE,COL to start the cursor at when opening a buffer.") flagConfigDir = flag.String("config-dir", "", "Specify a custom location for the configuration directory") flagOptions = flag.Bool("options", false, "Show all option help") optionFlags map[string]*string @@ -36,8 +34,7 @@ func InitFlags() { fmt.Println("Usage: micro [OPTIONS] [FILE]...") fmt.Println("-config-dir dir") fmt.Println(" \tSpecify a custom location for the configuration directory") - fmt.Println("-startpos LINE,COL") - fmt.Println("+LINE:COL") + fmt.Println("[FILE]:LINE:COL") fmt.Println(" \tSpecify a line and column to start the cursor at when opening a buffer") fmt.Println(" \tThis can also be done by opening file:LINE:COL") fmt.Println("-options") @@ -109,16 +106,6 @@ func LoadInput() []*buffer.Buffer { // Option 1 // We go through each file and load it for i := 0; i < len(args); i++ { - if strings.HasPrefix(args[i], "+") { - if strings.Contains(args[i], ":") { - split := strings.Split(args[i], ":") - *flagStartPos = split[0][1:] + "," + split[1] - } else { - *flagStartPos = args[i][1:] + ",0" - } - continue - } - buf, err := buffer.NewBufferFromFile(args[i], buffer.BTDefault) if err != nil { screen.TermMessage(err) diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index 36bb6cff..ba595cee 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -8,6 +8,7 @@ import ( "io/ioutil" "os" "path/filepath" + "strconv" "strings" "time" "unicode/utf8" @@ -118,7 +119,7 @@ type Buffer struct { // and an error if the file is a directory func NewBufferFromFile(path string, btype BufType) (*Buffer, error) { var err error - filename, cursorPosition := GetPathAndCursorPosition(path) + filename, cursorPos := GetPathAndCursorPosition(path) filename, err = ReplaceHome(filename) if err != nil { return nil, err @@ -133,12 +134,17 @@ func NewBufferFromFile(path string, btype BufType) (*Buffer, error) { defer file.Close() + cursorLoc, err := ParseCursorLocation(cursorPos) + if err != nil { + cursorLoc = Loc{-1, -1} + } + var buf *Buffer if err != nil { // File does not exist -- create an empty buffer with that name buf = NewBufferFromString("", filename, btype) } else { - buf = NewBuffer(file, FSize(file), filename, cursorPosition, btype) + buf = NewBuffer(file, FSize(file), filename, cursorLoc, btype) } return buf, nil @@ -146,13 +152,13 @@ func NewBufferFromFile(path string, btype BufType) (*Buffer, error) { // NewBufferFromString creates a new buffer containing the given string func NewBufferFromString(text, path string, btype BufType) *Buffer { - return NewBuffer(strings.NewReader(text), int64(len(text)), path, nil, btype) + return NewBuffer(strings.NewReader(text), int64(len(text)), path, Loc{-1, -1}, btype) } // NewBuffer creates a new buffer from a given reader with a given path // Ensure that ReadSettings and InitGlobalSettings have been called before creating // a new buffer -func NewBuffer(r io.Reader, size int64, path string, cursorPosition []string, btype BufType) *Buffer { +func NewBuffer(r io.Reader, size int64, path string, startcursor Loc, btype BufType) *Buffer { absPath, _ := filepath.Abs(path) b := new(Buffer) @@ -210,20 +216,19 @@ func NewBuffer(r io.Reader, size int64, path string, cursorPosition []string, bt os.Mkdir(config.ConfigDir+"/buffers/", os.ModePerm) } - // cursorLocation, err := GetBufferCursorLocation(cursorPosition, b) - // b.startcursor = Cursor{ - // Loc: cursorLocation, - // buf: b, - // } - // TODO flagstartpos - if b.Settings["savecursor"].(bool) || b.Settings["saveundo"].(bool) { - err := b.Unserialize() - if err != nil { - screen.TermMessage(err) + if startcursor.X != -1 && startcursor.Y != -1 { + b.StartCursor = startcursor + } else { + if b.Settings["savecursor"].(bool) || b.Settings["saveundo"].(bool) { + err := b.Unserialize() + if err != nil { + screen.TermMessage(err) + } } } b.AddCursor(NewCursor(b, b.StartCursor)) + b.GetActiveCursor().Relocate() if !b.Settings["fastdirty"].(bool) { if size > LargeFileThreshold { @@ -727,3 +732,28 @@ func (b *Buffer) Retab() { b.isModified = dirty } + +// ParseCursorLocation turns a cursor location like 10:5 (LINE:COL) +// into a loc +func ParseCursorLocation(cursorPositions []string) (Loc, error) { + startpos := Loc{0, 0} + var err error + + // if no positions are available exit early + if cursorPositions == nil { + return startpos, errors.New("No cursor positions were provided.") + } + + startpos.Y, err = strconv.Atoi(cursorPositions[0]) + startpos.Y -= 1 + if err == nil { + if len(cursorPositions) > 1 { + startpos.X, err = strconv.Atoi(cursorPositions[1]) + if startpos.X > 0 { + startpos.X -= 1 + } + } + } + + return startpos, err +} From 0f4f60c018a396e42f00f45b1279fcb06fa046e1 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 15 Jun 2019 22:08:10 -0400 Subject: [PATCH 124/231] Update docs --- runtime/help/gimmickcolors.md | 14 -------------- runtime/help/keybindings.md | 3 ++- runtime/help/options.md | 36 +++++++++++++++++++---------------- 3 files changed, 22 insertions(+), 31 deletions(-) delete mode 100644 runtime/help/gimmickcolors.md diff --git a/runtime/help/gimmickcolors.md b/runtime/help/gimmickcolors.md deleted file mode 100644 index b13a6456..00000000 --- a/runtime/help/gimmickcolors.md +++ /dev/null @@ -1,14 +0,0 @@ -# Gimmick colors - -We have included a few colorschemes that are for fun: - -* funky-cactus: I don't know why I made this. (Written by CaptainMcClellan) -* gameboy-tc: Colorscheme based on the olive green original Gameboy! -* nes-tc: A colorscheme and syntax highlighting using only colors in the - Nintendo Entertainment System color palette. -* symbian-tc: Colorscheme based on SymbOS's GUI. -* matrix: Pretend it's 1981 with a colorscheme based on a monochrome - IBM 5151. (Does not include the ghosting and trailing) - -Check the plugin repo periodically for gimmick-color extension packs and genuine -additional themes. \ No newline at end of file diff --git a/runtime/help/keybindings.md b/runtime/help/keybindings.md index eee3e2fa..661c02fa 100644 --- a/runtime/help/keybindings.md +++ b/runtime/help/keybindings.md @@ -8,7 +8,8 @@ command or you can also be added in the file `~/.config/micro/bindings.json` as discussed below. For a list of the default keybindings in the json format used by micro, please see the end of this file. For a more user-friendly list with explanations of what the default hotkeys are and what they do, please see -`>help defaultkeys` +`> help defaultkeys` (a json formatted list of default keys is included +at the end of this document). If `~/.config/micro/bindings.json` does not exist, you can simply create it. Micro will know what to do with it. diff --git a/runtime/help/options.md b/runtime/help/options.md index 0a85d4ae..d9a44aec 100644 --- a/runtime/help/options.md +++ b/runtime/help/options.md @@ -51,8 +51,12 @@ Here are the options that you can set: default value: `true` -* `eofnewline`: micro will automatically add a newline to the end of the file - when saving. +* `encoding`: the encoding to open and save files with. Supported encodings + are listed at https://www.w3.org/TR/encoding/. + + default value: `utf-8` + +* `eofnewline`: micro will automatically add a newline to the file. default value: `false` @@ -109,6 +113,16 @@ Here are the options that you can set: default value: `false` +* `matchbrace`: highlight matching braces for '()', '{}', '[]' + + default value: `false` + +* `matchbraceleft`: when matching a closing brace, should matching match the + brace directly under the cursor, or the character to the left? only matters + if `matchbrace` is true + + default value: `false` + * `mouse`: whether to enable mouse support. When mouse support is disabled, usually the terminal will be able to access mouse events which can be useful if you want to copy from the terminal instead of from micro (if over ssh for @@ -190,26 +204,16 @@ Here are the options that you can set: default value: `true` -* `matchbrace`: highlight matching braces for '()', '{}', '[]' - - default value: `false` - -* `matchbraceleft`: when matching a closing brace, should matching match the - brace directly under the cursor, or the character to the left? only matters - if `matchbrace` is true - - default value: `false` - -* `syntax`: turns syntax highlighting on or off. - - default value: `true` - * `sucmd`: specifies the super user command. On most systems this is "sudo" but on BSD it can be "doas." This option can be customized and is only used when saving with su. default value: `sudo` +* `syntax`: turns syntax on or off. + + default value: `true` + * `tabmovement`: navigate spaces at the beginning of lines as if they are tabs (e.g. move over 4 spaces at once). This option only does anything if `tabstospaces` is on. From 7cd5024e34e99a5d53e7d6beaec7810d9948df6b Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 15 Jun 2019 22:23:19 -0400 Subject: [PATCH 125/231] Small fixes --- internal/buffer/autocomplete.go | 4 +++- internal/buffer/buffer.go | 6 +++--- internal/config/settings.go | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/internal/buffer/autocomplete.go b/internal/buffer/autocomplete.go index c5577b6f..d143f329 100644 --- a/internal/buffer/autocomplete.go +++ b/internal/buffer/autocomplete.go @@ -57,7 +57,9 @@ func (b *Buffer) CycleAutocomplete(forward bool) { } b.Replace(start, end, b.Completions[b.CurSuggestion]) - b.HasSuggestions = true + if len(b.Suggestions) > 1 { + b.HasSuggestions = true + } } func GetArg(b *Buffer) (string, int) { diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index ba595cee..e9523b14 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -134,8 +134,8 @@ func NewBufferFromFile(path string, btype BufType) (*Buffer, error) { defer file.Close() - cursorLoc, err := ParseCursorLocation(cursorPos) - if err != nil { + cursorLoc, cursorerr := ParseCursorLocation(cursorPos) + if cursorerr != nil { cursorLoc = Loc{-1, -1} } @@ -449,7 +449,7 @@ func (b *Buffer) UpdateRules() { } ft := b.Settings["filetype"].(string) - if (ft == "Unknown" || ft == "") && !rehighlight { + if (ft == "unknown" || ft == "") && !rehighlight { if highlight.MatchFiletype(ftdetect, b.Path, b.lines[0].data) { header := new(highlight.Header) header.FileType = file.FileType diff --git a/internal/config/settings.go b/internal/config/settings.go index 2740d957..2d0787a9 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -197,7 +197,7 @@ func DefaultGlobalSettings() map[string]interface{} { // Note that filetype is a local only option func DefaultLocalSettings() map[string]interface{} { common := DefaultCommonSettings() - common["filetype"] = "Unknown" + common["filetype"] = "unknown" return common } From a5cf06026a9b5fbe473bbf62432b38e7bf7bc997 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 16 Jun 2019 12:45:39 -0400 Subject: [PATCH 126/231] Fix infobar style --- internal/display/infowindow.go | 53 +++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/internal/display/infowindow.go b/internal/display/infowindow.go index 3c1c5151..a2b72945 100644 --- a/internal/display/infowindow.go +++ b/internal/display/infowindow.go @@ -15,9 +15,28 @@ import ( type InfoWindow struct { *info.InfoBuf *View +} - defStyle tcell.Style - errStyle tcell.Style +func (i *InfoWindow) errStyle() tcell.Style { + errStyle := config.DefStyle. + Foreground(tcell.ColorBlack). + Background(tcell.ColorMaroon) + + if _, ok := config.Colorscheme["error-message"]; ok { + errStyle = config.Colorscheme["error-message"] + } + + return errStyle +} + +func (i *InfoWindow) defStyle() tcell.Style { + defStyle := config.DefStyle + + if _, ok := config.Colorscheme["message"]; ok { + defStyle = config.Colorscheme["message"] + } + + return defStyle } func NewInfoWindow(b *info.InfoBuf) *InfoWindow { @@ -25,20 +44,6 @@ func NewInfoWindow(b *info.InfoBuf) *InfoWindow { iw.InfoBuf = b iw.View = new(View) - iw.defStyle = config.DefStyle - - if _, ok := config.Colorscheme["message"]; ok { - iw.defStyle = config.Colorscheme["message"] - } - - iw.errStyle = config.DefStyle. - Foreground(tcell.ColorBlack). - Background(tcell.ColorMaroon) - - if _, ok := config.Colorscheme["error-message"]; ok { - iw.errStyle = config.Colorscheme["error-message"] - } - iw.Width, iw.Y = screen.Screen.Size() iw.Y-- @@ -68,7 +73,7 @@ func (i *InfoWindow) GetMouseLoc(vloc buffer.Loc) buffer.Loc { func (i *InfoWindow) Clear() { for x := 0; x < i.Width; x++ { - screen.Screen.SetContent(x, i.Y, ' ', nil, config.DefStyle) + screen.Screen.SetContent(x, i.Y, ' ', nil, i.defStyle()) } } @@ -91,7 +96,7 @@ func (i *InfoWindow) displayBuffer() { (bloc.GreaterEqual(activeC.CurSelection[0]) && bloc.LessThan(activeC.CurSelection[1]) || bloc.LessThan(activeC.CurSelection[0]) && bloc.GreaterEqual(activeC.CurSelection[1])) { // The current character is selected - style = config.DefStyle.Reverse(true) + style = i.defStyle().Reverse(true) if s, ok := config.Colorscheme["selection"]; ok { style = s @@ -120,7 +125,7 @@ func (i *InfoWindow) displayBuffer() { r, size := utf8.DecodeRune(line) - draw(r, i.defStyle) + draw(r, i.defStyle()) width := 0 @@ -140,7 +145,7 @@ func (i *InfoWindow) displayBuffer() { // Draw any extra characters either spaces for tabs or @ for incomplete wide runes if width > 1 { for j := 1; j < width; j++ { - draw(char, i.defStyle) + draw(char, i.defStyle()) } } totalwidth += width @@ -161,9 +166,9 @@ func (i *InfoWindow) displayKeyMenu() { for y := 0; y < len(keydisplay); y++ { for x := 0; x < i.Width; x++ { if x < len(keydisplay[y]) { - screen.Screen.SetContent(x, i.Y-len(keydisplay)+y, rune(keydisplay[y][x]), nil, config.DefStyle) + screen.Screen.SetContent(x, i.Y-len(keydisplay)+y, rune(keydisplay[y][x]), nil, i.defStyle()) } else { - screen.Screen.SetContent(x, i.Y-len(keydisplay)+y, ' ', nil, config.DefStyle) + screen.Screen.SetContent(x, i.Y-len(keydisplay)+y, ' ', nil, i.defStyle()) } } } @@ -180,10 +185,10 @@ func (i *InfoWindow) Display() { return } i.Clear() - style := i.defStyle + style := i.defStyle() if i.HasError { - style = i.errStyle + style = i.errStyle() } display := i.Msg From 8d85cae4c0d65b610d226e9c75c8a5c28bd31039 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 16 Jun 2019 15:56:39 -0400 Subject: [PATCH 127/231] Add autocomplete --- internal/action/actions.go | 20 ++++++-- internal/action/bufpane.go | 3 ++ internal/action/infopane.go | 15 ++++++ internal/buffer/autocomplete.go | 84 +++++++++++++++++++++++++++++++-- internal/display/statusline.go | 37 +++++++++++++++ internal/util/util.go | 5 ++ 6 files changed, 156 insertions(+), 8 deletions(-) diff --git a/internal/action/actions.go b/internal/action/actions.go index 72081718..bacb04ad 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -560,10 +560,22 @@ func (h *BufPane) OutdentSelection() bool { // InsertTab inserts a tab or spaces func (h *BufPane) InsertTab() bool { - indent := h.Buf.IndentString(util.IntOpt(h.Buf.Settings["tabsize"])) - tabBytes := len(indent) - bytesUntilIndent := tabBytes - (h.Cursor.GetVisualX() % tabBytes) - h.Buf.Insert(h.Cursor.Loc, indent[:bytesUntilIndent]) + b := h.Buf + if b.HasSuggestions { + b.CycleAutocomplete(true) + return true + } + + l := b.LineBytes(h.Cursor.Y) + l = util.SliceStart(l, h.Cursor.X) + hasComplete := b.Autocomplete(buffer.BufferComplete) + if !hasComplete { + indent := b.IndentString(util.IntOpt(b.Settings["tabsize"])) + tabBytes := len(indent) + bytesUntilIndent := tabBytes - (h.Cursor.GetVisualX() % tabBytes) + b.Insert(h.Cursor.Loc, indent[:bytesUntilIndent]) + return true + } return true } diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 39b6c145..669e2de4 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -227,6 +227,9 @@ func (h *BufPane) HandleEvent(event tcell.Event) { func (h *BufPane) DoKeyEvent(e Event) bool { if action, ok := BufKeyBindings[e]; ok { estr := BufKeyStrings[e] + if estr != "InsertTab" { + h.Buf.HasSuggestions = false + } for _, s := range MultiActions { if s == estr { cursors := h.Buf.GetCursors() diff --git a/internal/action/infopane.go b/internal/action/infopane.go index 1ab7c281..cc0ef609 100644 --- a/internal/action/infopane.go +++ b/internal/action/infopane.go @@ -157,12 +157,17 @@ var InfoOverrides = map[string]InfoKeyAction{ "QuitAll": (*InfoPane).QuitAll, } +// CursorUp cycles history up func (h *InfoPane) CursorUp() { h.UpHistory(h.History[h.PromptType]) } + +// CursorDown cycles history down func (h *InfoPane) CursorDown() { h.DownHistory(h.History[h.PromptType]) } + +// InsertTab begins autocompletion func (h *InfoPane) InsertTab() { b := h.Buf if b.HasSuggestions { @@ -187,22 +192,32 @@ func (h *InfoPane) InsertTab() { } } } + +// CycleBack cycles back in the autocomplete suggestion list func (h *InfoPane) CycleBack() { if h.Buf.HasSuggestions { h.Buf.CycleAutocomplete(false) } } + +// InsertNewline completes the prompt func (h *InfoPane) InsertNewline() { if !h.HasYN { h.DonePrompt(false) } } + +// Quit cancels the prompt func (h *InfoPane) Quit() { h.DonePrompt(true) } + +// QuitAll cancels the prompt func (h *InfoPane) QuitAll() { h.DonePrompt(true) } + +// Escape cancels the prompt func (h *InfoPane) Escape() { h.DonePrompt(true) } diff --git a/internal/buffer/autocomplete.go b/internal/buffer/autocomplete.go index d143f329..1e5a7fc3 100644 --- a/internal/buffer/autocomplete.go +++ b/internal/buffer/autocomplete.go @@ -16,7 +16,7 @@ import ( // cursor location // It returns a list of string suggestions which will be inserted at // the current cursor location if selected as well as a list of -// suggestion names which can be displayed in a autocomplete box or +// suggestion names which can be displayed in an autocomplete box or // other UI element type Completer func(*Buffer) ([]string, []string) @@ -24,15 +24,18 @@ func (b *Buffer) GetSuggestions() { } -func (b *Buffer) Autocomplete(c Completer) { +// Autocomplete starts the autocomplete process +func (b *Buffer) Autocomplete(c Completer) bool { b.Completions, b.Suggestions = c(b) if len(b.Completions) != len(b.Suggestions) || len(b.Completions) == 0 { - return + return false } b.CurSuggestion = -1 b.CycleAutocomplete(true) + return true } +// CycleAutocomplete moves to the next suggestion func (b *Buffer) CycleAutocomplete(forward bool) { prevSuggestion := b.CurSuggestion @@ -53,7 +56,7 @@ func (b *Buffer) CycleAutocomplete(forward bool) { if prevSuggestion < len(b.Suggestions) && prevSuggestion >= 0 { start = end.Move(-utf8.RuneCountInString(b.Completions[prevSuggestion]), b) } else { - end = start.Move(1, b) + // end = start.Move(1, b) } b.Replace(start, end, b.Completions[b.CurSuggestion]) @@ -62,6 +65,27 @@ func (b *Buffer) CycleAutocomplete(forward bool) { } } +// GetWord gets the most recent word separated by any separator +// (whitespace, punctuation, any non alphanumeric character) +func GetWord(b *Buffer) ([]byte, int) { + c := b.GetActiveCursor() + l := b.LineBytes(c.Y) + l = util.SliceStart(l, c.X) + + if c.X == 0 || util.IsWhitespace(b.RuneAt(c.Loc)) { + return []byte{}, -1 + } + + if util.IsNonAlphaNumeric(b.RuneAt(c.Loc)) { + return []byte{}, c.X + } + + args := bytes.FieldsFunc(l, util.IsNonAlphaNumeric) + input := args[len(args)-1] + return input, c.X - utf8.RuneCount(input) +} + +// GetArg gets the most recent word (separated by ' ' only) func GetArg(b *Buffer) (string, int) { c := b.GetActiveCursor() l := b.LineBytes(c.Y) @@ -128,3 +152,55 @@ func FileComplete(b *Buffer) ([]string, []string) { return completions, suggestions } + +// BufferComplete autocompletes based on previous words in the buffer +func BufferComplete(b *Buffer) ([]string, []string) { + c := b.GetActiveCursor() + input, argstart := GetWord(b) + + if argstart == -1 { + return []string{}, []string{} + } + + inputLen := utf8.RuneCount(input) + + suggestionsSet := make(map[string]struct{}) + + var suggestions []string + for i := c.Y; i >= 0; i-- { + l := b.LineBytes(i) + words := bytes.FieldsFunc(l, util.IsNonAlphaNumeric) + for _, w := range words { + if bytes.HasPrefix(w, input) && utf8.RuneCount(w) > inputLen { + strw := string(w) + if _, ok := suggestionsSet[strw]; !ok { + suggestionsSet[strw] = struct{}{} + suggestions = append(suggestions, strw) + } + } + } + } + for i := c.Y + 1; i < b.LinesNum(); i++ { + l := b.LineBytes(i) + words := bytes.FieldsFunc(l, util.IsNonAlphaNumeric) + for _, w := range words { + if bytes.HasPrefix(w, input) && utf8.RuneCount(w) > inputLen { + strw := string(w) + if _, ok := suggestionsSet[strw]; !ok { + suggestionsSet[strw] = struct{}{} + suggestions = append(suggestions, strw) + } + } + } + } + if len(suggestions) > 1 { + suggestions = append(suggestions, string(input)) + } + + completions := make([]string, len(suggestions)) + for i := range suggestions { + completions[i] = util.SliceEndStr(suggestions[i], c.X-argstart) + } + + return completions, suggestions +} diff --git a/internal/display/statusline.go b/internal/display/statusline.go index beede173..6731c2c8 100644 --- a/internal/display/statusline.go +++ b/internal/display/statusline.go @@ -69,6 +69,43 @@ func (s *StatusLine) Display() { // We'll draw the line at the lowest line in the window y := s.win.Height + s.win.Y - 1 + b := s.win.Buf + if b.HasSuggestions && len(b.Suggestions) > 1 { + statusLineStyle := config.DefStyle.Reverse(true) + if style, ok := config.Colorscheme["statusline"]; ok { + statusLineStyle = style + } + keymenuOffset := 0 + if config.GetGlobalOption("keymenu").(bool) { + keymenuOffset = len(keydisplay) + } + x := 0 + for j, sug := range b.Suggestions { + style := statusLineStyle + if b.CurSuggestion == j { + style = style.Reverse(true) + } + for _, r := range sug { + screen.Screen.SetContent(x, y-keymenuOffset, r, nil, style) + x++ + if x >= s.win.Width { + return + } + } + screen.Screen.SetContent(x, y-keymenuOffset, ' ', nil, statusLineStyle) + x++ + if x >= s.win.Width { + return + } + } + + for x < s.win.Width { + screen.Screen.SetContent(x, y-keymenuOffset, ' ', nil, statusLineStyle) + x++ + } + return + } + formatter := func(match []byte) []byte { name := match[2 : len(match)-1] if bytes.HasPrefix(name, []byte("opt")) { diff --git a/internal/util/util.go b/internal/util/util.go index b7a7bb31..bdcf11ee 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -10,6 +10,7 @@ import ( "strconv" "strings" "time" + "unicode" "unicode/utf8" "github.com/blang/semver" @@ -403,3 +404,7 @@ func Clamp(val, min, max int) int { } return val } + +func IsNonAlphaNumeric(c rune) bool { + return !unicode.IsLetter(c) && !unicode.IsNumber(c) +} From 809b95d2903973ec191eb0ce2852e669fc6670b3 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 16 Jun 2019 17:35:00 -0400 Subject: [PATCH 128/231] Add reset command and statusline format string options --- internal/action/command.go | 52 +++++++++++++++++++++++++--------- internal/buffer/buffer.go | 17 ----------- internal/buffer/settings.go | 28 +++++++++--------- internal/config/runtime.go | 45 +++++++---------------------- internal/config/settings.go | 5 ++-- internal/display/statusline.go | 5 ++-- runtime/help/commands.md | 2 ++ runtime/help/options.md | 15 ++++++++++ 8 files changed, 88 insertions(+), 81 deletions(-) diff --git a/internal/action/command.go b/internal/action/command.go index 9b96de09..672a761f 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -30,6 +30,7 @@ var commands map[string]Command func InitCommands() { commands = map[string]Command{ "set": Command{(*BufPane).SetCmd, OptionValueComplete}, + "reset": Command{(*BufPane).ResetCmd, OptionValueComplete}, "setlocal": Command{(*BufPane).SetLocalCmd, OptionValueComplete}, "show": Command{(*BufPane).ShowCmd, OptionComplete}, "showkey": Command{(*BufPane).ShowKeyCmd, nil}, @@ -347,16 +348,7 @@ func (h *BufPane) NewTabCmd(args []string) { } } -func SetGlobalOption(option, value string) error { - if _, ok := config.GlobalSettings[option]; !ok { - return config.ErrInvalidOption - } - - nativeValue, err := config.GetNativeValue(option, config.GlobalSettings[option], value) - if err != nil { - return err - } - +func SetGlobalOptionNative(option string, nativeValue interface{}) error { config.GlobalSettings[option] = nativeValue if option == "colorscheme" { @@ -376,12 +368,46 @@ func SetGlobalOption(option, value string) error { } for _, b := range buffer.OpenBuffers { - b.SetOption(option, value) + b.SetOptionNative(option, nativeValue) } - config.WriteSettings(config.ConfigDir + "/settings.json") + return config.WriteSettings(config.ConfigDir + "/settings.json") +} - return nil +func SetGlobalOption(option, value string) error { + if _, ok := config.GlobalSettings[option]; !ok { + return config.ErrInvalidOption + } + + nativeValue, err := config.GetNativeValue(option, config.GlobalSettings[option], value) + if err != nil { + return err + } + + return SetGlobalOptionNative(option, nativeValue) +} + +// ResetCmd resets a setting to its default value +func (h *BufPane) ResetCmd(args []string) { + if len(args) < 1 { + InfoBar.Error("Not enough arguments") + return + } + + option := args[0] + + defaultGlobals := config.DefaultGlobalSettings() + defaultLocals := config.DefaultLocalSettings() + + if _, ok := defaultGlobals[option]; ok { + SetGlobalOptionNative(option, defaultGlobals[option]) + return + } + if _, ok := defaultLocals[option]; ok { + h.Buf.SetOptionNative(option, defaultLocals[option]) + return + } + InfoBar.Error(config.ErrInvalidOption) } // SetCmd sets an option diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index e9523b14..1a7bf301 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -108,9 +108,6 @@ type Buffer struct { CurSuggestion int Messages []*Message - - StatusFormatLeft string - StatusFormatRight string } // NewBufferFromFile opens a new buffer using the given path @@ -244,25 +241,11 @@ func NewBuffer(r io.Reader, size int64, path string, startcursor Loc, btype BufT screen.TermMessage(err) } - b.SetStatusFormat() - OpenBuffers = append(OpenBuffers, b) return b } -// SetStatusFormat will correctly set the format string for the -// status line -func (b *Buffer) SetStatusFormat() { - if b.Settings["hidehelp"].(bool) { - b.StatusFormatLeft = "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat) $(opt:encoding)" - b.StatusFormatRight = "" - } else { - b.StatusFormatLeft = "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat) $(opt:encoding)" - b.StatusFormatRight = "$(bind:ToggleKeyMenu): show bindings, $(bind:ToggleHelp): toggle help" - } -} - // Close removes this buffer from the list of open buffers func (b *Buffer) Close() { for i, buf := range OpenBuffers { diff --git a/internal/buffer/settings.go b/internal/buffer/settings.go index e85672a6..1d9801ad 100644 --- a/internal/buffer/settings.go +++ b/internal/buffer/settings.go @@ -5,17 +5,7 @@ import ( "github.com/zyedidia/micro/internal/screen" ) -// SetOption sets a given option to a value just for this buffer -func (b *Buffer) SetOption(option, value string) error { - if _, ok := b.Settings[option]; !ok { - return config.ErrInvalidOption - } - - nativeValue, err := config.GetNativeValue(option, b.Settings[option], value) - if err != nil { - return err - } - +func (b *Buffer) SetOptionNative(option string, nativeValue interface{}) error { b.Settings[option] = nativeValue if option == "fastdirty" { @@ -45,9 +35,21 @@ func (b *Buffer) SetOption(option, value string) error { } } else if option == "encoding" { b.isModified = true - } else if option == "hidehelp" { - b.SetStatusFormat() } return nil } + +// SetOption sets a given option to a value just for this buffer +func (b *Buffer) SetOption(option, value string) error { + if _, ok := b.Settings[option]; !ok { + return config.ErrInvalidOption + } + + nativeValue, err := config.GetNativeValue(option, b.Settings[option], value) + if err != nil { + return err + } + + return b.SetOptionNative(option, nativeValue) +} diff --git a/internal/config/runtime.go b/internal/config/runtime.go index 62465a0b..576c2ed0 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -35,7 +35,6 @@ // runtime/help/colors.md // runtime/help/commands.md // runtime/help/defaultkeys.md -// runtime/help/gimmickcolors.md // runtime/help/help.md // runtime/help/keybindings.md // runtime/help/options.md @@ -892,7 +891,7 @@ func runtimeHelpColorsMd() (*asset, error) { return a, nil } -var _runtimeHelpCommandsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x57\x4f\x6f\xdc\xba\x11\x3f\x3f\x7d\x8a\x81\xdf\x21\x76\x10\xeb\xdd\xf7\xd0\x02\x75\x1b\xb4\x40\xd2\xba\x4d\xda\xa2\xa7\x6a\x56\x9a\x5d\xb1\xa6\x48\x85\x43\xee\x5a\xfd\xf4\xc5\xcc\x50\xda\xdd\xb8\xc0\x4b\x0e\xf1\x8a\x9c\xff\x7f\x7e\x33\xfc\x19\x9e\x23\xb3\xdb\x7b\x82\x3e\x4e\x13\x86\x81\x9b\xe6\x5f\xb1\x40\x8f\x01\xe8\x95\xfa\x92\x09\xe4\xe7\xe0\x72\x4c\x2b\x0d\xec\x17\x98\x13\x31\xbb\x70\x84\xee\x29\x27\xff\x48\x1d\x1c\xa2\xf7\xf1\x4c\x7a\x9b\xc7\x4d\x60\xdb\xfc\x91\x12\x01\x26\xd2\xd3\xf9\x7b\x7d\x90\x47\xcc\xb0\x54\x9d\x85\xa9\x6d\x9a\xf7\xd0\x7d\x2b\x2e\x77\x3b\xf8\x6b\x71\x99\x61\x72\x7d\x8a\x76\xce\x78\x22\x38\x38\x4f\x01\x27\xfa\x6d\xb7\x83\x2f\x78\x22\x36\x85\x25\x25\x0a\x19\xf6\xe5\x70\xa0\xd4\xc2\x9f\x0e\x7a\xbc\x12\x83\x63\x98\x53\x3c\xb9\x81\x06\x70\xb9\x01\x38\x3b\xef\xe1\x9d\x4a\x44\x7e\x77\x43\x6c\xca\x12\xcd\x1e\x7b\x82\x3b\x26\x4c\xfd\x78\x07\x77\x27\xf4\x85\xee\xe0\xe0\xf1\xc8\xdd\x0e\xbe\x8e\x8e\x4d\xcc\x4a\xda\x19\x69\x07\x67\x97\x47\xe8\x94\xbe\x6b\xa1\x01\x80\xaf\x23\x41\x67\x9c\x1a\x8e\x38\x67\x17\x03\xfa\xf6\x92\x04\xbd\x95\xcb\x9d\x30\xbc\x87\xee\x11\xbb\x1d\xfc\xad\xca\x46\xef\x21\xf6\xe6\x66\x4f\x0c\x98\x21\x86\x9e\x56\x52\xdf\xed\xe0\xf7\x11\x10\xbc\xcb\x94\xd0\x83\x99\x02\x2e\x70\x26\x1c\x20\x1e\x00\x21\xd1\x91\x5e\xeb\x4d\x23\x9c\x7f\x8e\x99\x2c\x07\x9b\xe9\x53\xe1\x0c\x7b\x02\x84\x13\x7a\x37\x54\x9e\xfb\x12\x3c\x31\xab\x22\x8d\x25\x32\xd3\xf0\xa0\x71\x8e\x81\xd4\xc5\x68\x21\xc7\x74\x2c\x13\x85\xcc\x30\x44\x62\x08\x31\xc3\xa8\x51\x0e\x0b\xf0\x8c\x62\xbb\x0b\xe0\xf2\x07\xcd\xfb\x84\x0b\xc4\xc9\x65\x65\xfd\x56\x62\x26\xbe\x09\xbf\xb8\xfd\x7d\x06\x7e\x3c\xf6\xfa\x11\x8b\xe4\x5b\xaa\x4b\x8a\x38\x1c\x5c\x9a\x50\x82\xdf\x36\xcd\x4f\x5f\x88\x36\x55\xdd\x56\xe2\x87\x98\x60\x8a\x89\xc0\x85\x43\xbc\x50\x4b\x05\x52\xae\xa9\x03\xd3\xb0\x03\xa6\x6c\x25\x58\xcf\x73\xb4\xab\x16\x44\xb8\x5c\x74\x76\xc3\x1d\x8c\xe4\x67\xc8\x71\x76\xbd\xe8\x10\xab\x24\x61\x9c\x25\x76\x95\x68\xeb\x06\xa6\xbc\xe9\xf4\xb1\x47\xff\xa3\x8a\x41\xa9\xfd\x02\xf7\x31\xf8\x45\x82\x7d\xd5\x20\xa2\xd3\x7a\xe4\xa1\x4a\x1f\xe3\xb9\x4a\x10\x99\x63\x3c\xdf\x36\x94\x89\xac\xb9\x3d\xba\x13\x85\x4a\x6d\xec\x74\x42\x0f\x77\xf4\x6a\x90\x10\x83\x24\xe7\x0f\xc2\x83\x59\x8a\x14\x3e\x15\x84\xcb\x6d\x7b\x55\x71\xda\xd7\x96\xc3\x10\xd5\xae\x39\xb9\x90\xa5\x4e\xf2\x28\xe0\xc2\x51\x63\xc1\x63\x2c\x7e\x90\xf4\x41\x37\x11\x33\x85\x23\xa5\xdd\x67\x62\xc6\x23\xdd\xb7\x6d\xfb\xd0\x89\xeb\x83\xe3\xd9\xe3\x62\x75\x5b\xd6\x1e\x2e\x01\x78\x7c\xac\x79\xed\x76\x90\x4a\xe0\x2b\x4f\x78\x24\xef\xb7\xb4\xd7\x48\xed\xb1\x7f\x39\xa6\x58\xc2\xd0\x6a\xdb\x8a\x69\x95\xe4\x1d\x43\x2c\x79\x2e\xd9\xec\xde\xd3\xaa\x96\x94\x5b\x3a\xc1\xbb\x40\x70\x1e\x49\x4a\x1c\x0e\x2e\x38\x1e\x89\x45\x6f\x70\xe1\x68\x56\xed\x5d\x18\xe0\x85\x16\xc0\xbe\x86\xbd\x4f\x54\xe3\xf5\x42\x8b\x5c\x8b\xff\x87\x14\x27\x25\xcb\xb1\x52\x5e\x4a\x8a\x49\x0f\x58\xfb\x2e\x5c\x71\x31\xe0\x3e\x0a\x4a\x5e\x97\xb0\x9c\x89\xcd\x12\xf6\x17\x5a\x18\xc4\x5b\x13\xa9\x80\x03\x78\x42\xe7\x71\xef\x6b\xd8\x4e\x3c\x7b\xb5\xde\xf0\xb0\xdb\x41\x9c\x49\x48\xe1\x44\x29\x3b\xa9\x45\xa3\xb0\x5e\xdb\xe8\x14\x0e\x42\xbc\x46\x5d\xcb\xab\x01\xef\x87\xb7\x02\x1c\xab\x68\x1a\x4c\x94\x4c\x9b\x69\xce\xcb\x0a\xe3\x6a\xcd\xf8\xc6\x1a\x16\xd9\xc8\xab\xa1\x1d\xec\x4b\xde\x4c\x1c\x63\x72\xff\x8d\x21\x5f\x74\x5c\x41\xa0\x98\x73\x6b\x82\xe9\xc8\xb8\x7f\xeb\xee\xa5\x4e\xe4\x4a\x12\x8c\x10\xe8\x0c\x19\xf7\x1b\x17\x9f\x5d\xee\x47\x39\x5a\x51\x69\xad\x26\xad\x90\xf5\x3a\x5a\xd6\x66\xea\xdd\xc1\xd1\xa0\x22\x6c\x26\x08\xa7\xf4\xbb\x58\x46\x2e\x8f\x94\x0c\x7d\xc5\xa2\x50\xa6\x3d\xa5\x0f\x10\x93\x68\x16\xa7\x15\xc6\x55\xff\x4f\xf2\x0f\xc4\x0a\x1f\x8f\x57\x19\xf2\xf1\xa8\x54\xde\xc3\x64\x3d\x62\xe9\x1e\x68\x5f\x8e\xc0\x19\x33\x29\x3a\x9b\x07\xb3\x2f\x47\x41\xe3\xc0\x59\x38\xec\xf3\xdf\x35\x0a\xf5\xf4\x3a\x10\x46\x70\xc3\x9b\x68\x92\x82\xbb\x65\xb5\xc3\x5f\xe1\x14\xe4\xeb\x76\xfa\x87\xd5\xe0\xaa\x90\x86\x4a\x7d\x6b\x64\x99\x07\xcc\x22\xdc\x7e\xfc\x08\x4b\x1d\x82\xb7\xb6\xd9\x21\xb1\xf6\xc8\x1b\x03\xaf\x10\xaa\x22\xb1\x64\xe6\x20\x2d\x7b\xc1\x6a\xd1\xbc\xf5\xcc\xaa\x19\x50\x51\xec\xe8\xf2\x58\xf6\x6d\x1f\xa7\x5f\x14\xe2\x1e\x6d\x7f\xfa\xc5\xa8\x1e\xfb\x11\x43\x20\xdf\xea\xfc\x5d\xb7\x2d\xf4\x1c\x81\x89\xde\x4c\x9d\xda\xb9\xba\x3c\x99\x4b\x13\x06\x3c\x52\xaa\x60\x25\x42\xba\x67\xbb\xf9\x6c\x37\xdd\x0a\x0e\x2b\x68\xd7\x60\xdc\x8c\x9f\x9b\x28\x6d\x9e\xd4\x64\x5c\x1c\xda\x5c\x94\x50\x0d\xf1\x1c\x7c\xc4\x01\xee\xb3\xd4\xb9\x0b\xbd\x2f\x83\x56\xd7\xa2\x5d\x5e\x99\x0c\xdc\x71\xd1\x32\xf6\x89\x70\x58\x2e\x59\x7a\x58\x87\xbb\x08\xd2\x3a\x91\x1f\x96\xca\x54\x42\x76\x93\xad\x61\x35\x8d\xfd\x00\x33\xe6\xb1\xdb\xc1\xd3\x88\xe1\x68\xd8\x77\x8e\xe9\x45\xf0\x71\x70\x89\xfa\x1c\xd3\xb2\xb6\x97\xe5\xb1\x53\x8e\xea\xe0\x59\x94\x3c\xeb\x5c\xb9\x1e\x6a\x6f\x44\x18\xb9\xf4\xd0\x35\x0c\xfc\x45\xbe\x71\xeb\xfe\xff\xb3\x67\x56\x6f\xac\xfd\xeb\xaa\x66\xde\x78\x42\x45\x71\xc1\x08\x03\xb7\xba\xfc\xc4\xb4\xdd\xd5\x13\xbd\x15\x3a\x09\xe3\x40\x33\x19\xfe\x47\xd3\xb8\x0d\x60\x85\x9b\x1c\x8d\xa9\x3a\x98\xf0\xdc\xed\xe0\xf3\x65\x94\x46\x33\xb9\xc2\x94\x76\xbe\x4e\x78\x91\x44\xdc\xe3\x2c\xb3\xe3\x5b\x91\x1d\x52\x93\x4a\x27\x4a\x8b\xfc\x6f\xab\x81\xcb\x90\xa8\x27\x27\xbd\xab\xf3\x47\xf8\x32\xa5\xc9\xe9\xae\xaa\x00\x67\x3b\x82\x34\xc7\xf9\x32\xc7\xb1\xcf\x45\x97\x0e\xa6\xca\x2a\xe2\xae\xb9\xd5\x16\xa9\x40\xe3\x95\x6a\x3f\x8f\xae\x1f\xe1\x32\xb9\x12\x85\x77\xf9\xf2\x4a\x50\x14\x1d\x17\x53\xab\xd6\x31\x4c\x91\xb3\xec\x02\x87\xe2\xad\x28\x05\xd6\x8e\x12\xae\xab\x19\x78\xd9\x6c\x5e\x68\x91\x67\xc2\x1a\x01\x9b\x79\xf7\xfc\x00\x7b\x99\xef\x3a\x59\x6b\xd9\xbc\xd0\xd2\xc2\x47\x89\xc8\x2b\x4e\xb3\xd7\xce\xaa\x53\x1b\xba\xdf\x40\x15\x06\xf2\xe0\x79\xea\x2c\xd6\xeb\xca\xd1\x4d\xe8\x42\x7b\xff\xfe\x1f\x8e\xce\x0f\xed\x53\x9c\x97\xae\x85\xbf\x4b\x13\x67\x59\x83\xbc\xb6\xc7\x2a\x60\x5b\x8a\xa5\x06\xe1\x2c\xfb\x87\xf8\xa1\x63\x79\x33\x6a\x6d\x4c\x1b\xd1\x66\x57\x1e\x23\x53\xcd\xd1\x7f\x64\x49\xb7\x3c\xdc\x7d\x2a\xf8\xb1\x04\xa5\xfc\x9d\xf9\xdf\xde\x35\xcd\xe3\xe3\x63\xd3\xc8\x80\xb1\x97\x99\x78\xb1\x3d\xba\x64\xe2\x6f\x8f\xa1\xfa\x60\x1b\xe8\x80\xc5\x6f\xad\xbf\xd3\x08\x7a\x17\x04\xa0\x3f\x7d\xdf\x3e\xda\x10\x5a\x3d\x29\xc5\x24\xe1\xfe\x19\x9e\xea\xd8\x7b\xc6\x24\x4f\xc3\xa6\xf9\xa7\xec\x40\x6b\x04\x71\xd5\xfe\xe1\xfa\xb5\x07\xf4\x9a\x13\x02\x2f\x21\xe3\xeb\x9b\xad\x90\x5e\x67\x7d\x6f\xd2\x21\x26\x6a\x56\x49\xd7\xaf\x4b\xf8\x1a\x55\x8c\x20\x68\x7d\x75\xd4\x3d\xc2\x5a\x6b\x7d\x68\xb0\x9b\x66\xbf\x80\xec\x6d\xba\x0f\x34\xf5\xa1\x71\x8b\xbf\x6a\x50\x38\xb9\x14\xc3\x64\x9b\x6f\x72\x02\x7e\xbc\xf5\xfe\xfa\x02\xc6\xa4\xb5\x99\x47\x5a\x9a\x75\x11\x34\x6b\x69\xa8\x60\xe4\xd2\xfa\x0a\xf8\x28\xc5\xef\x97\x8b\xe3\x62\x86\xbe\xb0\xd7\xad\x58\xe4\xcb\xd2\x99\x5d\xff\xc2\x8d\x6e\xa2\x97\x05\x93\xea\x32\xbd\x65\xca\x76\x56\x8b\xca\xa8\x6f\xec\xff\x05\x00\x00\xff\xff\x05\x5d\x9b\x73\xc9\x0f\x00\x00" +var _runtimeHelpCommandsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x57\x4b\x8f\xdd\x4a\x11\x5e\x5f\xff\x8a\xd2\xdc\x45\x66\xa2\x8c\xef\xfe\x2c\x40\x62\x20\x02\x29\x81\x81\x04\x10\x2b\x5c\xc7\x2e\xdb\xcd\xb4\xbb\x9d\x7e\x9c\x33\xe6\xd7\xa3\xaa\x6a\x3f\x4e\x06\xe9\x26\x8b\xcc\x71\x77\xbd\x1f\x5f\x55\xff\x0c\xcf\x3e\x46\x73\xb6\x04\xad\x9f\x26\x74\x5d\xac\xaa\x7f\xf9\x0c\x2d\x3a\xa0\x57\x6a\x73\x22\xe0\x9f\x9d\x49\x3e\xac\x34\x70\x5e\x60\x0e\x14\xa3\x71\x03\x34\x4f\x29\xd8\x47\x6a\xa0\xf7\xd6\xfa\x2b\xc9\x6d\x1a\x37\x81\x75\xf5\x47\x0a\x04\x18\x48\x4e\xe7\xef\xf5\x41\x1a\x31\xc1\x52\x74\xe6\x48\x75\x55\xbd\x87\xe6\x5b\x36\xa9\x39\xc1\x5f\xb3\x49\x11\x26\xd3\x06\xaf\xe7\x11\x2f\x04\xbd\xb1\xe4\x70\xa2\xdf\x36\x27\xf8\x82\x17\x8a\xaa\x30\x87\x40\x2e\xc1\x39\xf7\x3d\x85\x1a\xfe\xd4\xcb\xf1\x4a\x0c\x26\xc2\x1c\xfc\xc5\x74\xd4\x81\x49\x15\xc0\xd5\x58\x0b\xef\x44\x22\xc6\x77\x37\xc4\xaa\x2c\xd0\x6c\xb1\x25\xb8\x8b\x84\xa1\x1d\xef\xe0\xee\x82\x36\xd3\x1d\xf4\x16\x87\xd8\x9c\xe0\xeb\x68\xa2\x8a\x59\x49\x1b\x25\x6d\xe0\x6a\xd2\x08\x8d\xd0\x37\x35\x54\x00\xf0\x75\x24\x68\x94\x53\xc2\xe1\xe7\x64\xbc\x43\x5b\xef\x49\x90\x5b\xbe\x3c\x31\xc3\x7b\x68\x1e\xb1\x39\xc1\xdf\x8a\x6c\xb4\x16\x7c\xab\x6e\xb6\x14\x01\x13\x78\xd7\xd2\x4a\x6a\x9b\x13\xfc\xde\x03\x82\x35\x89\x02\x5a\x50\x53\xc0\xb8\x98\x08\x3b\xf0\x3d\x20\x04\x1a\xe8\xb5\xdc\x54\xcc\xf9\x67\x9f\x48\x73\xb0\x99\x3e\xe5\x98\xe0\x4c\x80\x70\x41\x6b\xba\xc2\x73\x9f\x9d\xa5\x18\x45\x91\xc4\x12\x63\xa4\xee\x41\xe2\xec\x1d\x89\x8b\x5e\x43\x8e\x61\xc8\x13\xb9\x14\xa1\xf3\x14\xc1\xf9\x04\xa3\x44\xd9\x2d\x10\x67\x64\xdb\x8d\x03\x93\x3e\x48\xde\x27\x5c\xc0\x4f\x26\x09\xeb\xb7\xec\x13\xc5\x9b\xf0\xb3\xdb\xdf\x67\xe0\xc7\x63\x2f\x1f\x3e\x73\xbe\xb9\xba\xb8\x88\x5d\x6f\xc2\x84\x1c\xfc\xba\xaa\x7e\xfa\x42\xb4\xa9\x6a\xb6\x12\xef\x7d\x80\xc9\x07\x02\xe3\x7a\xbf\x53\x73\x05\x52\x2a\xa9\x03\xd5\x70\x82\x48\x49\x4b\xb0\x9c\x27\xaf\x57\x35\xb0\x70\xbe\x68\xf4\x26\x36\x30\x92\x9d\x21\xf9\xd9\xb4\xac\x83\xad\xe2\x84\xc5\xc4\xb1\x2b\x44\x5b\x37\x44\x4a\x9b\x4e\xeb\x5b\xb4\x3f\xaa\x18\x84\xda\x2e\x70\xef\x9d\x5d\x38\xd8\x87\x06\x61\x9d\xda\x23\x0f\x45\xfa\xe8\xaf\x45\x02\xcb\x1c\xfd\xf5\xb6\xa1\x54\x64\xc9\xed\x60\x2e\xe4\x0a\xb5\xb2\xd3\x05\x2d\xdc\xd1\xab\x42\x82\x77\x9c\x9c\x3f\x30\x0f\x26\x2e\x52\xf8\x94\x11\xf6\xdb\xfa\x50\x71\xd2\xd7\x9a\x43\xe7\xc5\xae\x39\x18\x97\xb8\x4e\xd2\xc8\xe0\x12\xbd\xc4\x22\x8e\x3e\xdb\x8e\xd3\x07\xcd\x44\x31\x92\x1b\x28\x9c\x3e\x53\x8c\x38\xd0\x7d\x5d\xd7\x0f\x0d\xbb\xde\x99\x38\x5b\x5c\xb4\x6e\xf3\xda\xc3\xd9\x41\x1c\x1f\x4b\x5e\x9b\x13\x84\xec\xe2\xc1\x93\x38\x92\xb5\x5b\xda\x4b\xa4\xce\xd8\xbe\x0c\xc1\x67\xd7\xd5\xd2\xb6\x6c\x5a\x21\x79\x17\xc1\xe7\x34\xe7\xa4\x76\x9f\x69\x55\x4b\xc2\xcd\x9d\x60\x8d\x23\xb8\x8e\xc4\x25\x0e\xbd\x71\x26\x8e\x14\x59\xaf\x33\x6e\x50\xab\xce\xc6\x75\xf0\x42\x0b\x60\x5b\xc2\xde\x06\x2a\xf1\x7a\xa1\x85\xaf\xd9\xff\x3e\xf8\x49\xc8\x92\x2f\x94\x7b\x49\x45\x92\x83\x28\x7d\xe7\x0e\x5c\x11\xf0\xec\x19\x25\x8f\x25\xcc\x67\x6c\x33\x87\xfd\x85\x96\x08\xec\xad\x8a\x14\xc0\x01\xbc\xa0\xb1\x78\xb6\x25\x6c\x97\x38\x5b\xb1\x5e\xf1\xb0\x39\x81\x9f\x89\x49\xe1\x42\x21\x19\xae\x45\xa5\xd0\x5e\xdb\xe8\x04\x0e\x9c\x3f\xa2\xae\xe6\x55\x81\xf7\xc3\x5b\x01\x26\x8a\x68\xea\x54\x14\x4f\x9b\x69\x4e\xcb\x0a\xe3\x62\xcd\xf8\xc6\x9a\xc8\xb2\x31\xae\x86\x36\x70\xce\x69\x33\x71\xf4\xc1\xfc\xd7\xbb\xb4\xeb\x38\x40\x20\x9b\x73\x6b\x82\xea\x48\x78\x7e\xeb\xee\x5e\x27\x7c\xc5\x09\x46\x70\x74\x85\x84\xe7\x8d\x2b\x5e\x4d\x6a\x47\x3e\x5a\x51\x69\xad\x26\xa9\x90\xf5\xda\x6b\xd6\x66\x6a\x4d\x6f\xa8\x13\x11\x3a\x13\x98\x93\xfb\x9d\x2d\x23\x93\x46\x0a\x8a\xbe\x6c\x91\xcb\xd3\x99\xc2\x07\xf0\x81\x35\xb3\xd3\x02\xe3\xa2\xff\x27\xfe\x07\x6c\x85\xf5\xc3\x21\x43\xd6\x0f\x42\x65\x2d\x4c\xda\x23\x9a\xee\x8e\xce\x79\x80\x98\x30\x91\xa0\xb3\x7a\x30\xdb\x3c\x30\x1a\xbb\x98\x98\x43\x3f\xff\x5d\xa2\x50\x4e\x8f\x81\x50\x82\x1b\xde\x40\x13\x17\xdc\x2d\xab\x1e\xfe\x0a\x27\x23\x5f\x73\x92\x3f\x51\x0c\x2e\x0a\xa9\x2b\xd4\xb7\x46\xe6\xb9\xc3\xc4\xc2\xf5\xc7\x8f\xb0\x94\x21\x78\x6b\x9b\x1e\x52\x94\x1e\x79\x63\xe0\x01\xa1\x0a\x12\x73\x66\x7a\x6e\xd9\x1d\xab\x59\xf3\xd6\x33\xab\x66\x40\x41\xb1\xc1\xa4\x31\x9f\xeb\xd6\x4f\xbf\x08\xc4\x3d\xea\xfe\xf4\x8b\x52\x3d\xb6\x23\x3a\x47\xb6\x96\xf9\xbb\x6e\x5b\x68\xa3\x87\x48\xf4\x66\xea\x94\xce\x95\xe5\x49\x5d\x9a\xd0\xe1\x40\xa1\x80\x15\x0b\x69\x9e\xf5\xe6\xb3\xde\x34\x2b\x38\xac\xa0\x5d\x82\x71\x33\x7e\x6e\xa2\xb4\x79\x52\x92\xb1\x3b\xb4\xb9\xc8\xa1\xea\xfc\xd5\x59\x8f\x1d\xdc\x27\xae\x73\xe3\x5a\x9b\x3b\xa9\xae\x45\xba\xbc\x30\x29\xb8\xe3\x22\x65\x6c\x03\x61\xb7\xec\x59\x7a\x58\x87\x3b\x0b\x92\x3a\xe1\x1f\x9a\xca\x90\x5d\x32\x93\xae\x61\x25\x8d\x6d\x07\x33\xa6\xb1\x39\xc1\xd3\x88\x6e\x50\xec\xbb\xfa\xf0\xc2\xf8\xd8\x99\x40\x6d\xf2\x61\x59\xdb\x4b\xf3\xd8\x08\x47\x71\xf0\xca\x4a\x9e\x65\xae\x1c\x87\xda\x1b\x11\x4a\xce\x3d\x74\x84\x81\xbf\xf0\x37\x6e\xdd\xff\x7f\xf6\xcc\xe2\xcd\xbe\x16\x88\x4f\xdb\x64\x3e\xce\x4b\xb6\x92\xf7\xd9\x8e\x7a\xcc\xb6\x0c\xd6\xc2\xaf\xf0\x51\x56\x3d\x8d\x86\x25\x94\x29\xc0\x18\xa3\xe0\x58\x96\x27\x1f\xb6\xbb\x72\x22\xb7\x4c\xc7\x69\xe8\x68\x26\x9d\x1f\x5e\x2d\xde\x06\xb8\xc0\x55\xf2\xca\x54\x02\x14\xf0\xda\x9c\xe0\xf3\x3e\x8a\xbd\xba\x5c\x60\x4e\x90\x43\x36\x04\x96\x44\xb1\xc5\x99\x67\xcf\xb7\xcc\x3b\xa8\x14\x05\x5d\x28\x2c\xfc\xbf\xae\x16\x26\x41\xa0\x96\x0c\xf7\xbe\xcc\x2f\xe6\x4b\x14\x26\x23\xbb\xae\x00\xa4\xee\x18\xdc\x5c\xd7\x7d\x0f\xc0\x36\x65\x59\x5a\x22\x15\x56\x16\x77\xe4\x16\x5b\xb8\x82\x95\x97\xbb\xe5\x3a\x9a\x76\x84\x7d\xf2\x05\x72\xef\xd2\xfe\xca\x10\x14\x1e\x17\x55\x2b\xd6\x45\x98\x7c\x4c\xbc\x4b\xf4\xd9\x6a\x51\x33\x2c\x0e\x1c\xae\xc3\x0c\xdd\x37\xa3\x17\x5a\xf8\x99\xb1\x46\x40\x67\xe6\x7d\x7c\x80\x33\xef\x07\x32\x99\x4b\x92\x5f\x68\xa9\xe1\x23\x47\xe4\x15\xa7\xd9\x4a\x67\x96\xa9\x0f\xcd\x6f\xa0\x08\x03\x7e\x30\x3d\x35\x1a\xeb\x75\x65\x69\x26\x34\xae\xbe\x7f\xff\x0f\x43\xd7\x87\xfa\xc9\xcf\x4b\x53\xc3\xdf\x19\x04\x12\xaf\x51\x56\xda\x6b\x15\xb0\x2d\xd5\x5c\xc3\x70\xe5\xfd\x85\xfd\x90\xb1\xbe\x19\xb5\x36\xb6\x8e\x78\xb5\x2b\x8d\x3e\x52\xc9\xd1\x7f\x78\xc9\xd7\x3c\xdc\x7d\xca\xf8\x31\x3b\xa1\xfc\x9d\xfa\x5f\xdf\x55\xd5\xe3\xe3\x63\x55\xf1\x80\xd2\x97\x1d\x7b\xb1\x3d\xda\x78\x63\xd8\x1e\x53\xe5\xc1\xb7\x56\x75\x41\x81\x93\x44\xd0\x1a\xc7\x00\xff\xe9\xfb\xf6\x93\x86\x92\xea\x09\xc1\x07\x0e\xf7\xcf\xf0\x54\xc6\xe6\x33\x06\x7e\x5a\x56\xd5\x3f\x79\x87\x5a\x23\x88\xab\xf6\x0f\xc7\xd7\x22\xd0\x6b\x0a\x08\x71\x71\x09\x5f\xdf\x6c\x95\xf4\x3a\xcb\x7b\x95\x7a\x1f\xa8\x5a\x25\x1d\x5f\xa7\xf0\xd5\x8b\x18\x46\xe0\xf2\x6a\x29\x7b\x88\xb6\xd6\xfa\x50\x89\x66\x9a\xed\x02\xbc\xf7\xc9\x3e\x51\x95\x87\xca\x2d\x7e\x8b\x41\xee\x62\x82\x77\x93\x6e\xce\xc1\x30\x78\xc6\x0d\x3b\xd6\x17\x34\x06\xa9\xcd\x34\xd2\x52\xad\x8b\xa4\x5a\x4b\x5d\x01\x33\x13\xd6\x57\xc4\x47\x2e\x7e\xbb\xec\x8e\xb3\x19\xf2\x42\x5f\xb7\x6a\x96\xcf\x4b\x6b\x32\xed\x4b\xac\x64\x93\xdd\x17\x54\x2a\xcb\xf8\x96\x29\xdd\x79\x35\x2a\xa3\xbc\xd1\xff\x17\x00\x00\xff\xff\x4f\x5c\xa5\xa1\x09\x10\x00\x00" func runtimeHelpCommandsMdBytes() ([]byte, error) { return bindataRead( @@ -932,26 +931,6 @@ func runtimeHelpDefaultkeysMd() (*asset, error) { return a, nil } -var _runtimeHelpGimmickcolorsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x52\xcd\x8e\x1a\x3d\x10\xbc\xfb\x29\xea\xd3\x77\x60\x17\x09\x24\x0e\x2b\x25\xdc\x12\x12\x21\x0e\x9b\x44\x42\xd1\x9e\x1b\x4f\x63\xb7\xb0\xdb\x23\xbb\x67\x61\xde\x3e\x9a\x61\xf3\x77\xc8\xc5\x3e\xb8\xba\x7e\x5c\xfd\x3f\xf6\x92\xb3\xf8\x0b\x7c\x49\xa5\x36\xe7\x5e\x18\x91\x5e\x19\xa2\x3e\x0d\x1d\x77\x20\x9c\xf9\xfa\xf6\xec\x23\x67\x6e\xb0\x48\x06\xaa\x8c\x73\xa9\x38\x0f\xba\x75\x6e\x39\xdd\x97\x71\xe5\xc9\xdb\xd0\xb6\x38\xa0\x2b\xba\x30\x5c\xb4\x5c\x71\x8d\x23\x0e\xc8\xd4\x31\x2c\x4a\x5b\xe3\xe1\xa5\x8a\x19\x2b\x4e\x23\x76\xd4\x1b\x89\x3e\xfb\x5d\xe2\x94\x48\x1f\xdd\x12\x81\x32\x9f\xca\xb8\x32\xbf\xc5\xee\xb7\x32\x4e\xd4\xb8\x43\x51\x58\x64\x94\x24\xaf\x8c\x50\x99\x15\xa5\x4a\x10\xa5\x84\xfd\x7d\xf2\x3f\xb7\x84\x72\x9b\x09\x3e\xfc\x69\x1e\xa4\x1d\xda\xa8\x46\x37\x44\x09\x31\x49\x88\x26\x1a\x30\xb4\xe9\x2c\x9a\xc6\x37\x38\xe4\x2e\xe3\x80\x2f\xa2\xc6\xda\x15\x7c\x56\xe3\x3a\xb9\xcd\xac\x86\xe3\xd8\x8c\xf3\x1d\x8e\x9e\x12\x9b\xf1\xda\x2d\xd1\xc6\x7c\x12\xd2\x7f\xbb\x3f\x8e\xf9\xf4\xf5\xb8\x68\xd8\x7f\x3f\x4c\x03\x99\xac\xca\x6d\x8b\x6f\x95\x27\x1d\x88\x2d\x1a\x36\xef\xdf\x6d\x70\x15\x8b\xa0\xbf\x02\xfc\x62\x21\xe4\xa2\xc5\xc7\x5a\x32\x3b\xe0\xf0\xf1\x19\x4f\x9b\xa7\xcd\x1a\x0f\x9f\x0a\x37\x68\xb1\x9f\x25\xce\x39\x42\x2c\x6d\x4e\x3a\xfd\x80\x55\x92\x24\x1a\x1e\x9d\xdb\x45\xf6\x97\x19\xd1\xa7\x21\x88\xa2\x72\x5f\xd0\x73\x95\xd2\x89\xa7\x94\xc6\xb9\xe6\x70\xdf\x93\xd5\x3d\x2d\xdf\x8c\xb5\x49\x51\xf4\xe4\x2f\x6d\xe6\x0c\xac\x83\x28\x3b\xea\x3a\x31\x29\x53\x1b\x36\xef\xcb\xfa\x47\x00\x00\x00\xff\xff\xcb\xc7\xfc\x0b\x66\x02\x00\x00" - -func runtimeHelpGimmickcolorsMdBytes() ([]byte, error) { - return bindataRead( - _runtimeHelpGimmickcolorsMd, - "runtime/help/gimmickcolors.md", - ) -} - -func runtimeHelpGimmickcolorsMd() (*asset, error) { - bytes, err := runtimeHelpGimmickcolorsMdBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "runtime/help/gimmickcolors.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - var _runtimeHelpHelpMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x56\xcd\x8e\xdc\x36\x0c\xbe\xeb\x29\x08\xec\x21\xed\x62\xd6\x0f\x90\x43\x80\xa0\x48\x9b\x1c\x02\x24\x48\xd0\xa0\xb7\xa1\x6d\x8e\x45\x8c\x2c\xba\x12\x6d\xef\xf4\xe9\x0b\x4a\xf6\xee\xcc\x66\xd1\x9e\x66\x40\x89\x1f\xff\xbe\x8f\xf2\x1d\x7c\xe6\x2e\x09\x78\x0a\x13\x28\x3d\xaa\x73\xdf\x3d\xc6\x33\x5c\x64\x86\x93\x24\xe8\x65\x8d\x41\xb0\xe7\x38\x00\xc6\x1e\xe6\x6c\xff\x46\x73\x6a\x9c\xab\xce\x9c\x01\x41\x29\x8d\x1c\x31\x3c\xb4\x98\xa9\x2f\x58\x40\x3d\xab\x24\x50\x8f\x0a\xc8\x63\x06\x15\x68\x09\x08\xf3\xc5\xfe\xce\x99\x0a\x26\x47\x9d\x59\x79\xa1\x03\xb8\xd5\x73\x20\xc0\x90\x05\x14\xcf\x25\x6a\xbf\x60\x54\x1c\x08\xe4\x04\xea\x09\x4e\x73\x08\xd0\xe1\x84\x2d\x07\x56\xa6\x6c\x07\xa3\xf4\x94\xe2\x53\x16\xb9\x71\xce\xb9\xdf\x25\x01\x42\xe0\xac\xbb\x6f\x4f\x27\x9c\x83\xc2\x99\x2e\x2d\x47\xab\x2a\xc3\x94\x28\x67\xf8\x4d\x53\xf8\x50\xd2\xd1\xcb\x44\x70\x2c\x1d\xd9\xae\x9f\xe9\x92\x8f\x4d\x81\x1b\x25\x11\x70\x3c\x49\x1a\x51\x59\x22\x48\xbc\x01\xcb\x44\x70\x7c\x57\xfb\x79\x65\x3f\x36\xce\x7d\x23\x2a\x39\x44\x6b\x4d\xa6\xae\xb8\x9f\x5e\xc3\xc4\x56\x66\x85\x5e\xba\x79\xa4\xa8\x9b\x2d\xf6\x05\xb5\x71\xee\xee\x0e\xbe\xce\xdc\x9d\x1f\xb2\x62\x52\xe7\xbe\x3c\x15\xf0\xd5\xda\xfa\xf7\xcc\x7a\x28\xf7\xcd\xf4\xcd\x4c\x19\x17\x6a\xe0\xcb\x55\xa1\x66\x34\x6f\xab\xd6\xba\xdc\xc9\x38\x62\xec\xb3\xf9\x39\x1b\x7e\x87\xb1\x14\xb3\x7a\xee\xfc\xd5\x71\x22\xc0\x05\x39\x60\x1b\x08\xda\x4b\xed\x9e\x21\x28\xb6\x07\x90\x64\xb6\x85\x69\x2d\x26\x4f\x25\x67\xa7\x32\x71\xf7\xd4\x97\x1d\xec\xd8\xc0\x0f\x4f\x11\x3e\xc1\x9a\x58\x4b\xdf\x9a\xa6\x39\xc2\x27\x18\x09\xe3\xcf\x73\xb1\xbb\x36\x1c\xb7\x7a\x54\x5a\x28\x19\xf3\xd4\x53\xa2\x06\x9c\xfb\x2c\x4b\xed\x6f\x37\xa7\x6c\x83\x4f\x32\xc7\x1e\x56\x56\x5f\xcc\xa3\x18\xdf\x0a\x1d\x09\x30\x25\x59\x6d\x40\xb9\x81\xef\x06\xb9\xe7\x76\x3d\x71\x6b\x12\x0c\xa4\x80\xd6\xd3\xee\x7c\xa8\xcc\x95\x85\x92\x55\xf8\x92\x53\x5e\x8a\x5b\xe9\xa0\x65\x68\x87\x17\xe8\xa5\x81\x1b\xe2\x18\x63\x12\x6d\xc4\x28\x29\x1c\x4a\xa3\x2b\xed\x5e\xa7\xce\xa7\x1a\xa9\x93\x20\x29\x77\x9e\x46\x82\x5e\x28\xc7\x37\x0a\x41\xe4\x0c\x83\x48\x7f\x80\x7d\x6c\x9d\xc7\x38\x10\xb0\x96\xe2\xad\xb4\x4c\x7a\xe3\x6c\x6d\x6e\xe0\xaf\xed\x7e\x6d\xb4\x62\x5b\x58\xb1\xb1\xf4\x79\xc8\x57\x8e\xd9\x26\xec\xec\xca\x4f\x9c\x2d\x7d\x7e\x9e\xb0\xb9\x58\xe6\xcf\x9c\xfb\x61\xe8\xa3\x0d\xa9\x25\x5d\x89\x22\xe4\x29\xb0\xe6\xc3\x95\xe8\xde\xc1\x52\x8c\x70\xe2\x40\x11\x47\x3a\x5a\x3c\x43\x7d\x69\x56\x01\x99\x28\x02\x42\xa4\xb5\x22\x99\xe4\xef\xee\xe0\x7d\xd7\x6d\x8c\x2c\x39\x16\xfe\x6d\x8b\xca\xa3\x6d\xaa\x76\xe6\xa0\x0f\x1c\x6b\xaa\xf9\x92\x95\x46\x18\xe7\xce\x43\xe0\x33\xc1\x9f\x3c\xbe\xc9\xf0\x0b\x06\xf5\x32\x0f\x1e\x82\x15\x40\x8f\x4a\x31\xf3\x42\xbf\x36\xce\x7d\xaf\xab\xcb\x54\x36\xdd\x4a\x0a\x4b\xec\x9d\xe0\x65\x29\x3d\x57\xc7\xb1\x6e\x95\x23\x9c\x24\x04\x59\xa9\x37\xad\x60\x15\x47\xa1\xa1\x25\xfd\xca\x95\x28\xea\xed\x68\xe5\x10\x6a\xd5\xea\x39\xc3\x84\x03\x35\xce\x7d\x24\x93\x64\xaa\x53\x9b\x24\x67\xb6\xa1\xd5\x85\x6e\xc8\xb9\xee\xdf\x9d\x1c\x89\xb0\x7f\xeb\xdc\x3d\xe8\xac\x92\x18\xc3\x5b\x78\x0f\x6d\x62\x3a\x3d\x59\x36\xcd\x0f\xbc\x90\xb1\xf9\x86\xf0\x18\x42\x09\x24\xa6\xbb\xda\x5c\xd8\xe2\xb8\xfb\x6b\xda\xbe\x85\x3f\xaa\x7f\xdd\xd7\xff\xb7\x84\x31\xc3\x4a\x21\xd8\xaf\x97\x15\x54\x1c\x6c\x2a\x31\x97\xd1\xdd\x5f\x2b\xf3\x19\xbb\x8c\x38\x6b\x42\x1e\xbc\x3e\x9c\x24\xad\x98\xfa\x9b\x60\x55\x95\x37\xfb\x0d\x4c\x9d\x96\xf6\xa6\x4f\x77\xff\x74\xfc\x8c\xbc\x63\xec\x05\xff\x04\xb0\xbb\xbb\x7b\x90\xc9\x24\xf0\x1f\xce\xdb\x85\x67\x85\xce\x59\x65\xe4\x7f\xc8\xdd\xc3\x14\xe6\x81\xcd\xf9\xc3\xe3\x14\x90\x63\x6d\x40\x79\x61\xdf\xe4\xed\x74\x67\xe9\x2a\xe9\x5c\x33\xa8\x4d\x82\x2e\x11\x2a\x19\x6e\x02\x59\xa3\x83\x1d\xae\xd4\x64\x22\xbc\xc2\xdd\x31\xaf\x37\x81\x61\xe5\x4b\x54\x7c\x04\xcf\x83\x0f\xd6\x47\xe3\x1a\xc5\x81\x23\x5d\x85\x72\xf0\x32\xd8\xcd\x62\xb0\xc5\x8a\x7d\x5f\xd4\x18\x30\x0e\x33\x0e\x54\xde\x7b\x2b\xbf\x82\xd5\xf7\x98\x1e\x71\x9c\x02\x1d\x9e\x14\xbc\x3f\x12\x85\xcf\xb6\x1c\xb7\x0a\x4a\xb3\x56\x99\x43\xff\xea\x0b\xed\xea\x0b\xbd\x5d\x2e\x4b\x12\x12\xd9\x94\x28\xf6\x65\x2b\x96\x8f\x87\x32\x26\x38\xee\xd4\x3e\xd6\x50\xb6\x47\xa0\xa5\x0e\xab\x8e\xed\x1d\xc9\x5e\x92\x96\xe7\x98\xb0\xf3\x6e\x7f\x9f\x2d\x5c\x15\x42\x27\xb1\x4b\xa4\xb4\x57\x50\x3e\x3b\xb6\x31\x18\x8c\xc5\x59\x30\xb1\xcc\xe5\xee\x89\x87\x39\x95\xd5\xe8\xf6\xe9\x73\xdc\x3e\x9c\xe0\xa3\xac\xf6\x7e\x1d\x2c\xb6\x2d\x72\x93\x78\x09\x53\x50\x38\x3e\xf4\x34\xa9\x7f\xf1\x05\xa0\x1b\xe9\x5c\xd5\xde\x26\xee\x29\xc9\xc2\x3d\x35\xee\xdf\x00\x00\x00\xff\xff\x94\x3d\xb0\x96\xcb\x09\x00\x00" func runtimeHelpHelpMdBytes() ([]byte, error) { @@ -972,7 +951,7 @@ func runtimeHelpHelpMd() (*asset, error) { return a, nil } -var _runtimeHelpKeybindingsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x5a\x5f\x77\xdb\x38\xae\x7f\xbe\xf8\x14\xbc\xee\xc3\xb6\x67\x1d\x37\xce\xbf\xfe\xb9\x7b\x7a\x4e\x9a\x46\x9b\x4e\x27\x6d\xa6\x49\xa6\xdb\xbd\xf3\x20\x5a\xa2\x63\x6e\x28\x52\x43\x52\x71\xbc\x7b\xf6\x7e\xf6\x7b\x00\x52\x12\x69\xa7\x3b\x79\x60\x28\x12\x04\x01\x10\x00\x7f\x90\xfc\x8c\x7d\x12\x9b\x85\xd4\xb5\xd4\x77\x0e\xe0\x52\x56\xd6\xb0\x15\x77\x8c\xb3\x56\x09\xbf\x32\x96\x33\xb3\x64\x2b\xe3\xef\xc5\xc6\x31\xbf\xe2\x9e\x35\xfc\x5e\x30\xe9\x99\xe0\x6e\xc3\xb8\xae\x59\x6b\xd6\xc2\x2e\x3b\xc5\xbc\x61\x9d\x13\x34\xc6\x95\x82\x7e\x15\xb7\x82\x2d\x3b\xa5\x36\xac\xea\x9c\x37\x8d\xfc\x27\x5f\x28\x81\xd4\x1b\xd3\x59\xa6\xe4\xbd\xd4\x77\x33\x80\x33\x9a\x65\xf7\xa3\x44\xb4\xd4\x79\x63\x45\xcd\xa4\xf6\xc2\x6a\x8e\x6c\xa4\x66\x0d\x49\x2a\x97\xac\x5a\x71\x7d\x27\x6a\xb6\x96\x7e\xc5\xfc\x4a\xb0\xf2\x1d\xc3\xe5\x25\x54\xa6\x69\x50\x14\x63\x71\x1f\x56\x71\xcd\xb8\x72\x86\x2d\x04\xe3\x75\x4d\x1c\x69\xc1\x52\x2a\xc1\xca\xff\x7b\x39\xab\x8c\x5e\xca\xbb\x97\xc4\xfa\x65\x2f\xc2\xec\x1f\xce\xe8\x92\x71\x07\xb5\x74\x55\xe7\x9c\xa8\xd9\x42\x28\xb3\x9e\x31\x56\x18\xcb\x38\x53\xd2\x79\x34\x12\xf2\xaa\xc5\x92\x77\xca\x67\x3a\xc4\x6d\x90\x0f\x5b\x1a\xdb\x70\x8f\x56\xaa\x61\xb1\x09\x5a\x4c\xd1\xd4\xdc\x09\xe6\x84\x20\x4a\x81\x42\x23\x3f\xe9\x48\xb8\x59\xdc\xa8\x31\x56\xe0\x52\xbb\xb7\xb4\x52\xe8\x5a\x6d\xc2\xde\xa8\x3a\x88\xc7\x56\x71\xcd\xbd\x34\xda\xe1\xea\x35\x1e\x55\x2a\x52\x7a\x1a\x68\x96\x9e\x60\xc3\xea\x4c\x04\x28\xdf\xad\x84\x6a\xfb\x75\xb8\xa6\x04\xf8\xb8\xfc\x43\x13\xd5\x46\x38\xa6\x8d\x67\xe2\x51\x3a\x3f\x1d\x8c\xee\x64\xd3\xe2\xd9\x5b\xc1\x3d\x3a\xce\x2c\xba\xd9\x5a\x2a\xc5\xee\xb5\x59\x47\x51\x0c\xab\x4d\x38\x46\xa4\x81\xef\x71\x39\x7a\x14\xea\xc1\x83\x59\x1d\xfb\x33\xe3\xd6\x9a\xb5\xc3\x15\x8d\x79\x10\x6c\x6d\x6c\xcd\x16\x1b\xfa\x3f\x63\x67\xde\x2a\xa6\xc4\xd2\x93\x96\x56\xde\xad\x3c\x91\x01\x32\xa9\x3a\xeb\x8c\xc5\x95\xf8\xe4\x3c\xb7\x81\x6c\x30\xb9\x60\x4a\x6a\x31\xa5\xc1\x0a\x39\x75\x2d\xf5\x6b\xb3\xd6\x61\x37\xbf\x12\xd0\xb3\xf9\x11\x8f\x45\xb7\x5c\x0a\x9b\x28\xb1\x32\xaa\x66\x6e\x25\x97\xe1\xb4\x30\x3c\x22\xad\x13\xc4\xb6\x11\xda\x33\x5e\x85\xe3\xf3\x86\x39\xa1\x44\xe5\xd9\x7a\x85\xce\xd9\x98\x87\x10\x21\xf0\xec\x19\xfb\x2a\xa2\xdd\xc9\x1a\x00\x37\xb8\x5f\xef\x6b\x0d\xdf\xa0\x7f\x5b\xb1\x30\x9d\xae\x59\xe7\x90\x8e\xa2\xe2\x0f\x0e\x2f\xf8\xd9\x39\xaf\x56\x70\x2f\x36\x4c\x3a\x16\x38\x78\xc3\x30\x6e\x48\xb0\x19\x00\x3a\xa2\x78\xe4\x4d\xab\xc4\x14\xe7\x90\x0b\x2b\xd1\xe4\x7b\x9b\x92\xe2\x5f\xd7\x86\xac\x11\x06\xff\x49\x83\x56\xa0\x8b\x91\x3f\x98\x4e\xd5\xac\xed\xc8\xf3\x60\x69\x94\x32\x6b\x14\x31\xc6\x48\xf9\x94\x54\x00\x65\x59\xe2\x33\xfc\x0b\xfe\x6b\x82\x6c\xbf\x4f\xde\xb2\xc9\xad\xae\xcd\x64\x1a\x47\xfe\x8e\x23\x5f\x45\x6d\x26\xf0\x6f\x24\x07\xf8\xa8\x31\xca\x25\xca\x8d\x22\x08\xec\xea\xbb\x90\x71\xfe\xc0\x18\xa3\xeb\xda\x4e\x43\xf9\x8e\x94\xfc\xcb\xbd\xd8\x54\xa6\x59\x98\x77\xec\x2f\xc1\x1c\xef\xca\xad\x04\x80\x74\x94\xd9\xe2\x39\x4e\x29\xa2\x43\xb2\x18\x5d\x81\x72\x50\xb5\xe2\x52\xb3\x98\xa1\x1c\x5b\xaf\x84\xc6\x43\x0b\x62\x84\x78\x1f\xcc\x2c\x97\x24\xcf\x9a\x6b\xcf\x4e\x95\xdf\x43\xff\x00\xc7\x1f\x42\x18\xff\xde\x49\x3f\xc8\x4b\x92\x4a\x8f\x29\x55\x30\x67\xde\xa6\xa6\x63\x8c\xb1\x09\xad\x47\x5b\x5d\xf3\x07\x31\xfd\xa5\x93\x7e\x30\xd8\xb3\x67\xec\x7d\x74\xac\x5e\xae\x2d\xa1\x89\x3b\x47\xb7\x23\x8b\x3e\x8a\xaa\xf3\x82\xf1\x9e\x9c\x8d\x1a\xb1\xc6\xd4\x82\x3d\x47\xf5\xa1\xa4\x6c\xd2\xb3\x2c\x5f\xcc\xd8\x75\x48\x08\xad\x15\x2d\xc6\x8c\x1f\x1d\x38\x04\x47\x19\x89\xdf\x96\x99\x25\x9e\xd6\xa6\x45\x6d\xfa\x05\xed\xba\x1e\xf4\xf9\x4c\x89\x45\x68\x32\x4e\x6b\x85\x73\xac\xa4\x05\x65\x70\xb5\x76\x5d\x97\x83\xbc\x94\x8b\x16\xa2\x57\x0a\xb3\xa3\xac\x56\x61\xd8\xad\xcc\x1a\xc8\x6f\xd6\xc6\xe2\x55\xc5\x6a\x69\x45\xe5\x8d\xdd\xf4\x7e\x2b\xf5\xd2\x2c\xb8\xdd\x3e\xe5\x60\x30\xcd\x26\xe8\x7d\xe8\x19\x93\x64\xc3\x44\xd1\x3d\x9c\x47\x6d\x6f\x30\xe5\x37\x82\xeb\x78\xd5\x42\xb8\xe6\xd6\x46\xff\xc9\x33\xd9\x34\xa2\x96\xdc\x0b\xb5\x19\x8c\x4f\x39\xad\x67\x99\x2b\x9b\x98\x75\xca\x16\x9d\x07\xa9\x9d\x17\xbc\x66\xff\xe8\x9c\x67\xad\xe2\x95\x88\x09\xcc\x26\x11\x18\x35\xd9\x3e\xcb\x2d\x97\x84\x31\x96\x83\xd7\x86\x70\xff\x2b\x45\x7b\xf9\x8e\xe1\x91\x97\xbb\xe7\x45\x34\xc9\x79\x05\xbd\xc9\x3f\xfe\xe3\xb1\x05\xde\x53\x46\xae\x54\x86\x53\xe1\x6d\x2b\x82\x9c\xa9\x0d\x50\x74\xfc\x4f\xc7\x15\xb3\x34\x92\xc3\x42\x04\x95\x6b\xc6\x97\x5e\x58\x0c\x92\xe7\xda\x44\x0b\xba\x16\x8d\x91\xde\xd3\x64\xfd\xca\x68\x6f\x8d\x0a\xa6\x8c\xcc\x88\x09\x26\xeb\x17\xb3\x2c\x64\x2c\x5f\x33\xe1\x2a\xde\xe2\x1d\xfa\x7b\x27\x74\x25\x1c\xc0\x17\xad\x36\xcc\xa2\xd1\xe9\x32\x77\x82\x12\x43\x1f\xd1\x78\x13\x13\xaa\x11\xce\x07\x38\x92\x66\xf6\x20\x03\xb7\x02\xcf\xde\x04\xd9\xa0\x4f\x35\xae\x6b\x5b\x63\x71\x15\x91\x2e\x8d\xed\xd7\xce\x70\x57\x31\xe0\x11\xcb\xd7\x0b\x5e\xdd\x13\x24\x08\xb7\x01\x67\x5e\xd8\x46\x6a\xae\xf6\x16\x1c\xd1\x0c\x1e\x82\xb1\x98\xf2\x7d\x8f\x19\xe2\x50\xd3\x39\x0f\x77\xc2\xf7\xd7\x95\xf4\x8e\x1c\x04\x31\x0c\xea\xc1\x17\xa6\xa3\x4b\x99\x89\x07\xa1\x3d\x32\xb0\xa6\xbb\x0b\x38\xac\xdf\x05\xbd\x7a\x7c\x02\x27\x30\xe1\x85\x8b\x2f\xae\xea\x71\x98\xb1\x0d\xee\xb2\x6d\x46\x66\x96\x5e\x68\xf6\x7c\xd1\x79\x82\x17\x5c\xad\xf9\xc6\xbd\x00\xba\x79\xc7\xa4\xb1\xff\x38\x5f\x94\x33\xb6\x75\x47\xc9\x65\x84\x8a\x78\x0a\x8e\x95\xbf\x3d\xce\x17\xff\x3b\xff\x9f\xe3\x0f\xe5\x14\x8d\xda\x18\xe7\x07\xd9\x5c\x38\x25\x72\x2f\x0c\x42\xba\xa3\x10\x6f\x05\x3f\x14\x35\x61\x8b\x9f\xc5\xd2\xc7\x9b\xb0\xe1\x7a\x43\xea\x57\x2b\x63\x49\x2b\xd4\x7e\x9a\xa9\x1f\x83\x17\xd5\x66\x48\x1e\xb5\xab\x30\x41\x46\xe7\xa4\x49\xe0\x3a\x9b\xe3\x0a\x25\xa6\x0c\xd3\xb9\x3c\xfe\xe8\xb8\x29\x28\xde\xe3\xd1\xa2\xf3\x96\x53\xd6\x6c\xb6\x8d\x5c\xfe\xd6\xed\xef\xbf\x5a\x96\x83\xa7\x4b\x47\x20\x8d\xe4\x21\xd8\x92\x58\xee\xc5\x34\xe6\x3c\xe9\x43\xf2\x0a\x3c\x96\xc6\x42\x39\x6e\x43\x76\x41\x9b\x07\xa3\x56\x1c\x79\x8d\x09\x60\x24\x9c\x01\x5c\x98\xb5\x78\x10\x76\xca\x9c\x69\x44\x62\x64\x04\x08\x78\xef\x53\x0c\xf4\x18\x22\x78\x7c\xd8\x95\xb9\x56\x54\x72\x29\xab\x68\x10\x18\x5d\x01\x97\xd4\x62\x29\xb5\x20\xb7\xd2\x6c\x69\x4d\x13\x85\xe9\x2f\xc1\x90\x9d\xd5\x26\x30\xf6\x2b\x83\x9e\xb6\xcd\x08\x71\x4d\xb8\xa5\xb7\x52\x5b\x06\x6a\x12\xc5\x7b\xee\x98\x45\x6d\x57\xd1\x9d\x6b\x61\x38\xe5\x5e\x74\x72\x30\x04\x8e\x18\x75\x25\xe5\x22\x8f\x72\xf6\x37\xb3\xd4\xdb\x20\x67\x37\x4d\xe2\xb1\x8d\x4c\x30\x5f\x7e\x10\x4a\x78\xf1\xcd\xd8\x1a\xbd\x6f\xc8\x95\x17\x02\xb1\x3c\x96\x48\x68\xe1\x5e\x32\x82\x90\xe8\x22\x28\x50\x9e\x9b\x28\xd6\x6a\x89\xe0\x14\xf1\xe6\x70\x26\x98\xca\x9e\x31\x79\x23\x6c\x73\x40\xd0\x29\x74\x47\x20\x54\x9b\xe0\x3e\x52\x33\x56\x5e\x59\x41\x0c\x2a\xe1\xf6\xde\x5d\x59\x83\x28\xcd\xed\xbd\xfb\x84\x95\x42\xd0\xb6\x52\xb2\xba\x0f\xd7\xec\x9f\xcb\x29\x48\x8d\x88\x8f\x72\xf2\x58\x18\x05\x8c\xbd\x8c\x30\xba\x3c\x25\xc1\xcb\x1e\xf8\x96\xd7\x68\xcd\xf3\x10\x10\xd7\xf1\xd8\x02\x1e\x20\x20\xcf\x17\x88\xc5\xfb\x80\x88\xb7\x33\xde\x47\x7e\xd3\x0a\x56\x8e\x27\x20\x75\x04\xfb\x0b\xf3\xc8\x9e\xd3\x56\xbf\x91\xbf\x33\xe9\x80\x77\xde\x60\x2e\xab\xa8\xac\x74\x68\x93\xc5\x26\x2a\x3f\x0b\x46\xf9\x59\xea\xee\x31\xa6\x4e\x65\x78\x1d\x40\xf7\xf7\x5d\xbb\xa8\x84\x90\xea\x88\x48\xcc\x5a\x6b\xee\x2c\x6f\xb0\xc0\x35\x0d\xce\x3a\x63\xf4\x7f\x07\x30\x7f\xab\x73\x30\xff\xd1\x63\x1e\xa6\xf8\x6b\x8d\x73\x32\xd6\xc9\xb5\x74\x01\x58\xea\xcd\x13\x95\xe6\x08\xff\x17\x1b\x2a\x97\x22\x09\x94\x81\xfd\x27\xb1\x29\xa3\xb7\xf7\xb9\x16\xb3\xda\x9f\xdc\x8f\xf0\x76\x7f\xb1\xa5\x60\x96\x4e\x6b\x40\xb8\x63\xe9\xd1\xdf\x48\x4f\x55\xbe\x78\x81\x72\xa9\x5d\x48\xb3\x51\xaa\x41\xaf\x94\x31\xf1\x0b\xf9\x67\x33\xd6\x7d\x84\x5b\x62\xce\xef\xeb\xa5\x66\xc6\xc8\xed\xd1\x4c\xf4\x56\x61\x84\xdf\xc6\xaf\x30\x31\xa7\x63\xdb\x9b\x85\x60\x83\x33\xba\xcc\x6f\xdb\xd8\xf9\x60\xd6\x3a\x76\xaf\xf8\x9d\x18\xc6\xf1\x21\x99\xc3\xd8\x8b\xdd\xaf\x58\x56\xc6\xfe\x35\xa6\xd2\xd8\x3f\xd7\x35\x5c\x93\x07\xdf\x98\x30\xde\x3f\x8d\x33\xb7\x6d\xec\x10\xeb\xd0\x25\xd6\xa1\x1b\x58\x63\xac\x8f\xbd\x64\x7a\x9c\x18\x9f\x69\xfa\xd2\x3c\x88\x9f\xa5\x16\xee\xb6\x1d\xfb\xb4\xc5\x98\x3d\xc2\xc2\x3c\x9b\xf4\x12\x48\x2d\x72\xd1\xbf\x2c\xb3\xb1\x73\x5d\xc7\x91\x8f\xda\x09\xeb\x3f\x8b\xb5\x1a\x9f\xae\x31\x4b\xc2\x90\x2f\xe3\x1e\x70\x26\x10\xdf\x44\x9a\x1b\xbe\x00\xac\x3b\xa8\x39\x55\x2a\xfc\x77\x50\x48\x5d\x53\xf3\x59\x3c\x7a\xea\x5c\x59\xf1\x20\x4d\xe7\x00\x8b\x3c\xc0\xba\x0e\xce\x4c\xbb\x81\xb3\x0e\x0d\x1d\x64\xfd\xd0\xb5\x4a\x56\xdc\x8b\xf0\x44\xfb\x45\xf1\x6a\xa1\x7d\x10\x5b\x1a\x0d\x5f\x3a\x9f\x0f\x5c\x71\xe7\x7b\xbd\x50\x8c\x2f\xad\xd0\x85\x54\x02\xc2\x89\xe1\x49\x45\x37\x18\x1c\x20\x10\xc7\xd1\xf1\x81\xe6\x2e\xb8\x5a\xc6\x99\xbe\x1b\xd6\x24\x46\x1c\x8d\x77\xc5\x2d\xbf\xb3\xbc\x5d\x0d\x3a\x0e\x23\xa4\xfe\x8d\xb9\xbb\x53\xe2\x42\xa8\x36\x76\xbf\x76\x4a\x58\xf8\xa9\x6b\x5a\x5a\x7f\xa6\x04\x47\x97\xf3\x9d\x83\xeb\x95\x50\xea\xd2\xd4\x02\x33\x0b\xe2\x5f\xea\x63\x55\x47\x0d\xea\x76\x5a\xd7\x68\xf6\x7e\x33\xec\xe3\x36\xfd\xff\xeb\x56\x49\x0f\xb7\xda\xd1\xff\x5f\xc3\xe3\x45\xf8\xd7\xaf\x09\x4f\x41\x98\x4b\x5e\x59\x03\x57\x8a\x6f\x42\xef\xba\x73\x54\xc3\x3d\xbf\xd5\xf2\x91\x19\xad\x36\x2f\xe0\xba\xb2\x46\x29\xb4\x13\x75\x82\x2d\x5a\xbe\xd6\x97\x9d\xf2\x32\xc4\xc9\xce\x40\xb0\x29\x7c\x15\x8d\x79\x10\x29\x61\x18\x39\x55\x2a\x19\x74\x70\x7d\x2f\xdb\x94\x6a\x48\x74\x64\xa8\x1b\x73\xc9\x7d\xb5\x92\xfa\xee\xbd\x45\x67\xa4\xcb\x72\xb7\x32\xa3\x5b\xb3\x31\xf4\xca\x32\xe6\xa2\xe7\xf1\x8d\x0c\x96\x48\x0b\x31\xbe\x03\x09\x54\x8b\xce\x7b\xa3\xdd\x8b\x90\x44\x2e\x71\xec\x0a\x91\x61\xe8\xa6\xf2\x8c\xd7\xb3\x74\xf1\xad\x52\x48\x48\x98\xc8\x86\xa4\x44\xd7\x43\x5a\xbb\xc7\xf4\x74\xdb\x02\x59\x2d\x84\x2b\x05\xe9\x6d\x1b\xff\xc5\x10\x36\x6b\x4d\x03\xd8\x89\xc9\x28\x84\xda\xb6\xe7\x5e\x98\x86\xdc\x2f\xc6\x60\x1f\x98\xe4\x60\xe7\x8f\xd2\x07\x87\x82\x33\xae\x2b\xa1\xe0\xca\x4a\xed\xe1\x8a\x77\x2e\x04\xb3\xe7\x0b\x28\xe6\x50\x1c\x40\x71\x08\xc5\x11\x14\xc7\x50\x9c\x40\xf1\x0a\x8a\xd7\x50\xbc\x81\x62\xbe\x0f\xc5\x7c\x0e\xc5\xfc\x00\x8a\xf9\x21\x14\xf3\x23\x28\xe6\xc7\x50\xcc\x4f\xa0\x98\xbf\x82\x62\xfe\x1a\x8a\xf9\x1b\x28\x0e\xf6\xa1\x38\x40\x3e\x07\x50\x1c\x1c\x42\x71\x70\x04\xc5\xc1\x31\x14\x07\x27\x50\x1c\xbc\x82\xe2\xe0\x35\x14\x07\x6f\xa0\x38\xdc\x87\xe2\x70\x0e\xc5\x21\x6e\x78\x08\xc5\xe1\x11\x14\x87\xc7\x50\x1c\x9e\x40\x71\xf8\x0a\x8a\xc3\xd7\x50\x1c\xbe\x81\xe2\x68\x1f\x8a\xa3\x39\x14\x47\x07\x50\x1c\xa1\x64\x47\x50\x1c\x1d\x43\x71\x74\x02\xc5\xd1\x2b\x28\x8e\x5e\x43\x71\xf4\x06\x8a\xe3\x7d\x28\x8e\xe7\x50\x1c\x1f\x40\x71\x7c\x08\xc5\x31\xaa\x70\x0c\xc5\xf1\x09\x14\xc7\xaf\xa0\x38\x7e\x0d\xc5\xf1\x1b\x28\x4e\xf6\xa1\x38\x99\x43\x71\x72\x00\xc5\xc9\x21\x14\x27\x47\x80\xf8\x2f\x64\x35\xec\x9d\x52\xfb\x9e\xda\x33\x6a\x3f\x50\x7b\x4e\x6d\x41\xed\x5f\xa9\xbd\xa0\xf6\x23\xb5\x3f\x51\xfb\x89\xda\x9f\xa9\xbd\xa4\xf6\x33\xb5\x5f\xa8\xbd\xa2\xf6\x17\x6a\xbf\x86\x5d\xa9\xbd\xa1\xf6\x96\xda\x5f\xa9\xfd\x46\xed\xdf\xa8\xfd\x4e\xed\xdf\xa1\xaf\x48\xae\x7f\x87\x01\xb0\x2a\xee\x56\x81\x1d\x3a\x46\x9c\x39\xe3\x96\xfb\xc0\x52\xd7\xc2\xba\xca\xd8\x34\x5f\x7f\x51\xf5\xf8\x80\xd9\xe1\xdc\x55\x10\xe0\x17\x9c\x93\x63\xfd\x71\x10\xc5\xf0\xa0\x20\xda\xf4\xaf\x22\x87\x10\xd2\x58\x36\xaa\x21\xd2\x8c\x85\x2c\xf4\xd2\xa0\x8a\xf7\x19\xc6\x94\xac\x6b\x25\x42\x3f\xb8\x39\x75\xbf\xad\x84\x50\x74\xcf\xf5\x0f\xe4\xeb\xe3\xe3\xc8\x81\x1e\xc3\xd2\xf0\x9a\x8b\x7d\xd8\x41\x2a\x2c\xbc\x0c\xec\x2c\x8f\xaf\x39\xb7\x00\xf9\x6d\x3b\x79\xcb\xd2\xbf\x49\x0f\x20\x26\xd3\x40\x81\xdb\x67\x34\x93\x11\x59\xf4\x34\x24\x44\x4a\x34\x49\xb0\x44\x4f\x44\xf8\xfe\x09\x46\x34\x1e\x69\xae\x57\x72\xe9\x53\x99\x26\x3d\xb0\xc8\x28\x52\x99\x26\x23\xe2\xc8\x68\xd2\xed\x26\x23\x14\xc9\x68\x52\xb9\x27\x09\x46\xe9\x89\x4e\x95\xcf\xa5\x9e\x0c\x85\xca\x48\x91\x2b\x3f\x19\xc0\x48\x42\x92\x5b\x79\x92\xe0\x99\x84\x28\x37\xf4\x24\x03\x3a\x09\x59\x2e\xf8\x64\x0b\x3a\x6d\x13\x0e\xe2\x4f\x72\x4c\xd5\xd3\xf5\x41\x36\xca\x9f\xdc\xed\x29\x51\xa6\xe5\x64\xb8\xf4\x53\x92\x6c\xc3\xc9\x13\x80\x2b\xb3\x3d\x66\xef\xad\xf3\x79\x92\x78\xe0\xdc\x4b\x30\xd9\x81\x6d\x19\xdf\x73\x5d\x27\xca\xfc\x88\x94\xb2\x45\x7a\x2a\x93\x04\xf1\xa6\x44\xd9\xa9\x4c\x06\x28\xbc\x23\x5d\xcf\x2c\x57\x65\x87\xac\x67\x97\x4a\x96\x9c\xd9\xde\xbf\x32\x47\xd9\x41\x54\x29\xe9\xbf\x9f\x26\x45\xec\xd3\x93\x51\x7a\xcb\xc8\x32\x80\x9b\x4a\x77\x91\x91\x0d\x09\xb3\x27\x19\x07\xde\xfe\x88\x04\x65\xca\x38\x6d\xd7\xf6\x09\x5d\xc6\xee\x07\x74\x37\x7c\x91\xe7\xa6\xc9\x16\xfc\x9d\x0e\xd8\x3b\x95\xd2\xa7\xcb\x26\xdb\x08\x79\x1a\x07\xb6\x7d\xe1\x4b\xa6\x7e\x0f\x9b\xb3\xe3\xcb\x28\x10\xdf\xa7\xb3\x45\x36\x8b\x40\x3f\x9d\xfd\xbc\x33\x9b\x9e\x12\x5d\x95\x3b\x14\xdb\x47\xde\x7f\x0b\x1a\xa9\xe2\x67\xa2\x61\xf6\x7b\x36\x4b\x9f\x8c\x92\xd9\xb3\x3c\x3f\x9b\x76\x93\xce\xfe\x6d\x2b\x7b\x67\xc2\x7d\xda\x9e\xdc\xb6\xde\x87\x8c\x20\x2b\x5f\x52\xb2\x5f\xb7\x3c\xd6\xf9\x6c\xfa\x34\xb7\x70\x5f\xc4\xa4\x24\x37\x19\x49\xa8\x00\x12\xbf\x9a\xe6\xf7\x4b\x52\x1a\x24\x44\xb3\x9c\x28\xd6\x0c\x3d\x41\x9a\x96\xa2\x20\xbb\x39\x29\xcd\x31\x8c\xfd\x30\x21\x66\xbc\x7e\x94\x60\x32\x5e\xbb\x09\x26\x80\xde\xdd\x44\x15\xc7\x13\xaa\xa7\x32\xd5\x30\x3e\xcd\x3f\x53\x8c\xdc\xc6\xa2\x2c\xcb\xf6\x4f\xd0\x50\xb5\x96\xdd\x1b\x19\x51\x5f\xc6\x0d\xb8\x81\x82\x3a\x15\x3c\x8e\x24\x1c\xde\xe7\x27\xde\xd7\x7c\x29\xc9\x2f\x19\x09\x7d\xd6\x4b\x8d\xb7\xe5\xd4\x43\xa9\x98\x12\x7d\xcb\x88\x86\xda\x30\xbb\x0a\x9e\xd0\x97\xca\xc0\x94\xe8\xa7\xdc\x7d\xfb\x4a\x71\x32\x05\xa2\x79\xf9\x92\x9d\x37\xbc\x72\x7b\xce\x6f\x42\x05\x34\xfc\xfa\x84\xf5\x79\x6f\x89\xf7\xd7\x53\x97\xf5\xde\xa2\x9f\xd9\x4e\x95\x9c\xae\xbc\x5d\x1f\xc4\x39\x34\x6f\xe6\x7a\xbd\x20\x1f\xb5\x17\x77\x01\xf3\x85\x37\xe1\xf4\x4b\x90\x86\x6b\x7e\x27\x6c\x94\xa7\x98\x53\xf2\xdd\x75\x80\xe2\x20\xdc\x50\x49\x8a\x2b\x0e\x69\x28\xcd\x6b\xc5\x11\x0d\xa5\x27\x52\xbc\xda\xa5\x9a\xef\xa3\x8c\x29\xd5\xb9\xab\x48\x6c\x42\xe0\x89\xcc\x97\x01\x69\x67\x36\x4b\x21\x71\x84\x31\xb1\x04\xef\xb9\xe5\x38\x99\x6c\x35\xd4\xe6\x19\x4d\x86\x07\xc7\x02\x37\xa3\x09\x98\x3c\x5e\xe4\x94\x9f\xae\xac\x6c\xb8\xcd\x52\xe5\x5e\xca\x6e\xb2\x5d\x1f\xa7\x0a\xe1\x68\xab\xfa\x0f\x6c\x8e\xed\xfa\x43\x10\x78\xeb\x85\x41\x7a\xc2\xcd\x53\x04\x21\x35\xa6\x64\x6d\xf8\x91\xc0\xd6\x1b\x86\x94\xa2\x1a\x29\xb6\xde\x38\xa4\x54\x8f\xb4\x5d\xfe\x06\x62\x32\x4d\xbe\xa3\x17\xf4\x49\x40\x1b\x2f\x1c\xc0\x67\xe3\xc5\x5b\xf6\x45\x87\x4a\xc9\xa8\x7a\xfc\x34\x24\x9a\x4e\x71\x8f\x4a\xd3\xef\x94\x34\xfb\x26\x75\x6d\xd6\x8e\x35\xbc\x5a\x21\xaa\x9d\x86\xcf\x10\x17\x25\x73\x2b\x7a\xbb\xbd\xa0\x0f\x52\xe1\xb5\xf9\xa2\x87\x07\x33\x80\xd3\xf8\x53\x07\xae\xd4\x66\x3a\xfe\x54\x86\xde\x2b\xf4\x35\x18\xbd\x1c\xc6\x6a\x87\x3e\x83\xdf\x8b\x4d\xfe\x79\x3d\x0c\xf3\x12\x2b\x33\xea\xde\xb6\xe5\x8c\x85\x9f\xea\xc4\xcf\x8d\x28\x27\x33\x6d\xd8\x88\x95\x7b\x25\x5b\x08\xbf\x16\x42\xb3\xc6\xd4\x72\x29\x85\x75\xe1\xa7\x07\xb8\x3e\x7c\xfc\x00\x52\xa0\x64\xce\x0c\xfc\xab\xa8\x09\xb3\x62\x6d\xa5\xf7\x42\x33\x1e\xbe\xcd\xf3\x92\x3d\xaf\xb8\xc3\x18\xf4\x1e\x99\xa1\x9a\xa8\x4c\xef\x13\x2f\x66\x40\x9f\xc8\xa5\x63\xeb\xd5\xf0\xf5\xfd\xa9\x57\xcf\xc3\x8f\x8f\x44\x90\x66\x80\xdd\x25\xeb\xbf\x83\x9b\x65\xd0\x33\x99\x0a\x95\x2b\xb7\x82\x89\xdf\x3b\xf9\xc0\x55\xf8\xd0\xfb\xff\x01\x00\x00\xff\xff\xa4\x09\x1c\xfe\x26\x27\x00\x00" +var _runtimeHelpKeybindingsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x5a\x5f\x77\xdb\x38\xae\x7f\xbe\xf8\x14\xbc\xee\xc3\xb6\x67\x1d\x37\xce\xbf\xfe\xb9\x7b\x7a\x4e\x9a\x46\x9b\x4e\x27\x6d\xa6\x49\xa6\xdb\xbd\xf3\x20\x5a\xa2\x63\x6e\x28\x52\x43\x52\x71\xbc\x7b\xf6\x7e\xf6\x7b\x00\x52\x12\x69\xa7\x3b\x79\x60\x28\x12\x04\x01\x10\x00\x7f\x90\xfc\x8c\x7d\x12\x9b\x85\xd4\xb5\xd4\x77\x0e\xe0\x52\x56\xd6\xb0\x15\x77\x8c\xb3\x56\x09\xbf\x32\x96\x33\xb3\x64\x2b\xe3\xef\xc5\xc6\x31\xbf\xe2\x9e\x35\xfc\x5e\x30\xe9\x99\xe0\x6e\xc3\xb8\xae\x59\x6b\xd6\xc2\x2e\x3b\xc5\xbc\x61\x9d\x13\x34\xc6\x95\x82\x7e\x15\xb7\x82\x2d\x3b\xa5\x36\xac\xea\x9c\x37\x8d\xfc\x27\x5f\x28\x81\xd4\x1b\xd3\x59\xa6\xe4\xbd\xd4\x77\x33\x80\x33\x9a\x65\xf7\xa3\x44\xb4\xd4\x79\x63\x45\xcd\xa4\xf6\xc2\x6a\x8e\x6c\xa4\x66\x0d\x49\x2a\x97\xac\x5a\x71\x7d\x27\x6a\xb6\x96\x7e\xc5\xfc\x4a\xb0\xf2\x1d\xc3\xe5\x25\x54\xa6\x69\x50\x14\x63\x71\x1f\x56\x71\xcd\xb8\x72\x86\x2d\x04\xe3\x75\x4d\x1c\x69\xc1\x52\x2a\xc1\xca\xff\x7b\x39\xab\x8c\x5e\xca\xbb\x97\xc4\xfa\x65\x2f\xc2\xec\x1f\xce\xe8\x92\x71\x07\xb5\x74\x55\xe7\x9c\xa8\xd9\x42\x28\xb3\x9e\x31\x56\x18\xcb\x38\x53\xd2\x79\x34\x12\xf2\xaa\xc5\x92\x77\xca\x67\x3a\xc4\x6d\x90\x0f\x5b\x1a\xdb\x70\x8f\x56\xaa\x61\xb1\x09\x5a\x4c\xd1\xd4\xdc\x09\xe6\x84\x20\x4a\x81\x42\x23\x3f\xe9\x48\xb8\x59\xdc\xa8\x31\x56\xe0\x52\xbb\xb7\xb4\x52\xe8\x5a\x6d\xc2\xde\xa8\x3a\x88\xc7\x56\x71\xcd\xbd\x34\xda\xe1\xea\x35\x1e\x55\x2a\x52\x7a\x1a\x68\x96\x9e\x60\xc3\xea\x4c\x04\x28\xdf\xb1\x95\x50\x6d\xbf\x10\x17\x95\xec\x39\x4f\x15\xf0\xa2\x1e\xd4\x4e\x54\x76\x4c\xa2\xba\x95\xea\x6a\x51\x43\xdc\x3f\xd5\xa6\x36\x55\xd7\x08\xed\x5f\xcc\x00\x3e\x2e\xff\xd0\xe8\xb5\x11\x8e\x69\xe3\x99\x78\x94\xce\x4f\x87\x63\x74\xb2\x69\xd1\x9b\xac\xe0\x1e\x5d\x71\x16\x1d\x77\x2d\x95\x62\xf7\xda\xac\xa3\x72\x86\xd5\x26\x38\x06\xd2\xc0\xf7\xb8\x1c\x7d\x14\x25\xe3\xbd\xd4\x7f\x66\xdc\x5a\xb3\x76\xb8\xa2\x31\x0f\x82\xad\x8d\xad\xd9\x62\x43\xff\x67\xec\xcc\x5b\xc5\x94\x58\x7a\xb2\x9b\x95\x77\x2b\x4f\x64\x80\x4c\xaa\xce\x3a\x63\x71\x25\x3e\x39\xcf\x6d\x20\x1b\xd4\x16\x4c\x49\x2d\xa6\x34\x58\x21\xa7\xae\xa5\x7e\x6d\xd6\x3a\xec\xe6\x57\x02\x7a\x36\x3f\xe2\xb1\xe8\x96\x4b\x61\x13\x25\x56\x46\xd5\xcc\xad\xe4\x32\x9c\x3f\x06\x5c\xa4\x75\x82\xd8\xa2\x9d\x19\xaf\x82\x43\x78\xc3\x9c\x50\xa2\xf2\x6c\xbd\x42\x77\x6f\xcc\x43\x88\x39\x78\xf6\x8c\x7d\x15\xd1\xee\x64\x0d\x80\x1b\xdc\xaf\xf7\xde\x86\x6f\x30\x62\xac\x58\x98\x4e\xd7\xac\x73\x48\x47\x71\xf6\x07\x87\x17\x3c\xf7\x9c\x57\x2b\xb8\x17\x1b\xf4\x8c\xc0\xc1\x1b\x86\x91\x48\x82\xcd\x00\xd0\xb5\xc5\x23\x6f\x5a\x25\xa6\x38\x87\x5c\x58\x89\x26\xdf\xdb\x94\x94\x51\x74\x6d\xc8\x1a\x61\xf0\x9f\x34\x68\x05\x3a\x2d\xf9\x83\xe9\x54\xcd\xda\x8e\x9c\x0d\x96\x46\x29\xb3\x46\x11\x63\xd4\x95\x4f\x49\x05\x50\x96\x25\x3e\xc3\xbf\xe0\xbf\x26\xc8\xf6\xfb\xe4\x2d\x9b\xdc\xea\xda\x4c\xa6\x71\xe4\xef\x38\xf2\x55\xd4\x66\x02\xff\x46\x72\x80\x8f\x1a\xf3\x86\x44\xb9\x51\x04\x81\x5d\x7d\x17\x72\xd8\x1f\x18\x63\x74\x5d\xdb\x69\x28\xdf\x91\x92\x7f\xb9\x17\x9b\xca\x34\x0b\xf3\x8e\xfd\x25\x98\xe3\x5d\xb9\x95\x52\x90\x8e\x72\x65\x3c\xc7\x29\xe5\x88\x90\x7e\x46\x57\xa0\xac\x56\xad\xb8\xd4\x2c\xe6\x3c\xc7\xd6\x2b\xa1\xf1\xd0\x82\x18\x21\x83\x0c\x66\x96\x4b\x92\x67\xcd\xb5\x67\xa7\xca\xef\xa1\x7f\x80\xe3\x0f\x21\x31\xfc\xde\x49\x3f\xc8\x4b\x92\x4a\x8f\x49\x5a\x30\x67\xde\xa6\xa6\x63\x8c\xb1\x09\xad\x47\x5b\x5d\xf3\x07\x31\xfd\xa5\x93\x7e\x30\xd8\xb3\x67\xec\x7d\x74\xac\x5e\xae\x2d\xa1\x89\x3b\x47\xb7\x23\x8b\x3e\x8a\xaa\xf3\x82\xf1\x9e\x9c\x8d\x1a\xb1\xc6\xd4\x82\x3d\x47\xf5\xa1\xa4\xf4\xd4\xb3\x2c\x5f\xcc\xd8\x75\x48\x08\xad\x15\x2d\xc6\x8c\x1f\x1d\x38\x04\x47\x19\x89\xdf\x96\x99\x25\x9e\xd6\xa6\x45\x6d\xfa\x05\xed\xba\x1e\xf4\xf9\x4c\x89\x45\x68\x32\x4e\x6b\x85\x73\xac\xa4\x05\x65\x70\xb5\x76\x5d\x97\x83\xbc\x94\x8b\x16\xa2\x57\x0a\xf3\xad\xac\x56\x61\xd8\xad\xcc\x1a\xc8\x6f\xd6\xc6\xe2\xe5\xc7\x6a\x69\x45\xe5\x8d\xdd\xf4\x7e\x2b\xf5\xd2\x2c\xb8\xdd\x3e\xe5\x60\x30\xcd\x26\xe8\x7d\xe8\x19\x93\x64\xc3\x44\xd1\x3d\x9c\x47\x6d\x6f\x30\xed\x36\x82\xeb\x78\x79\x43\xb8\x38\xd7\x46\xff\xc9\x33\xd9\x34\xa2\x96\xdc\x0b\xb5\x19\x8c\x4f\x39\xad\x67\x99\x2b\x9b\x98\x75\xca\x16\x9d\x07\xa9\x9d\x17\xbc\x66\xff\xe8\x9c\x67\xad\xe2\x95\x88\x09\xcc\x26\x11\x18\x35\xd9\x3e\xcb\x2d\x97\x84\x31\x96\x83\xd7\x86\x70\xff\x2b\x45\x7b\xbc\x91\xca\xdd\xf3\x22\x9a\xe4\xbc\x82\xde\xe4\x1f\xff\xf1\xd8\x02\xef\x29\x23\x57\x2a\xc3\xa9\xf0\xb6\x15\x41\xce\xd4\x06\x28\x3a\xfe\xa7\xe3\x8a\x59\x1a\xc9\x61\x21\x82\xca\x35\xe3\x4b\x2f\x2c\x06\xc9\x73\x6d\xa2\x05\x5d\x8b\xc6\x48\x6f\x7e\xb2\x7e\x65\xb4\xb7\x46\x05\x53\x46\x66\xc4\xa4\xbf\x14\x93\x90\xb1\x7c\xcd\x84\xab\x78\x8b\xb7\xf2\xef\x9d\xd0\x95\x70\x00\x5f\xb4\xda\x30\x8b\x46\xa7\x0b\xd5\x09\x4a\x0c\x7d\x44\xe3\xdd\x4e\x38\x49\x38\x1f\x00\x4e\x9a\xd9\x83\x0c\xdc\x0a\x3c\x7b\x13\x64\x83\x3e\xd5\xb8\xae\x6d\x8d\xc5\x55\x44\xba\x34\xb6\x5f\x3b\xc3\x5d\xc5\x80\x70\x2c\x5f\x2f\x78\x75\x4f\x20\x23\xdc\x06\x9c\x79\x61\x1b\xa9\xb9\xda\x5b\x70\xc4\x47\x78\x08\xc6\x62\xca\xf7\x3d\x0a\x89\x43\x4d\xe7\x3c\xdc\x09\xdf\x5f\x57\xd2\x3b\x72\x10\x04\x15\xa8\x07\x5f\x98\x8e\x2e\x65\x26\x1e\x84\xf6\xc8\xc0\x9a\xee\x2e\x20\xbb\x7e\x17\xf4\xea\xf1\x09\x9c\xc0\x84\x17\x2e\xbe\xb8\xaa\x47\x76\xc6\x36\xb8\xcb\xb6\x19\x99\x59\x7a\xa1\xd9\xf3\x45\xe7\x09\x5e\x70\xb5\xe6\x1b\xf7\x02\xe8\xe6\x1d\x93\xc6\xfe\xe3\x7c\x51\xce\xd8\xd6\x1d\x25\x97\x11\x7c\xe2\x29\x38\x56\xfe\xf6\x38\x5f\xfc\xef\xfc\x7f\x8e\x3f\x94\x53\x34\x6a\x63\x9c\x1f\x64\x73\xe1\x94\xc8\xbd\x30\x08\xe9\x8e\x42\x04\x17\xfc\x50\xd4\x84\x2d\x7e\x16\x4b\x1f\x6f\xc2\x86\xeb\x0d\xa9\x5f\xad\x8c\x25\xad\x50\xfb\x69\xa6\x7e\x0c\x5e\x54\x9b\x21\x79\xd4\xae\xc2\x04\x19\x9d\x93\x26\x81\xeb\x6c\x8e\x2b\x94\x98\x32\x4c\xe7\xf2\xf8\xa3\xe3\xa6\xa0\x78\x8f\x47\x8b\xce\x5b\x4e\x59\xb3\xd9\x36\x72\xf9\x5b\xb7\xbf\xff\x6a\x59\x0e\x9e\x4e\x98\x4e\x38\x92\x87\x60\x4b\x62\xb9\x17\xd3\x98\xf3\xa4\x0f\xc9\x2b\xf0\x58\x1a\x0b\xe5\xb8\x0d\xd9\x05\x6d\x1e\x8c\x5a\x71\xe4\x35\x26\x80\x91\x70\x06\x70\x61\xd6\xe2\x41\xd8\x29\x73\xa6\x11\x89\x91\x11\x20\xe0\xbd\x4f\x31\xd0\x63\x88\xe0\xf1\x61\x57\xe6\x5a\x51\xc9\xa5\xac\xa2\x41\x60\x74\x05\x5c\x52\x8b\xa5\xd4\x82\xdc\x4a\xb3\xa5\x35\x4d\x14\xa6\xbf\x04\x43\x76\x56\x9b\xc0\xd8\xaf\x0c\x7a\xda\x36\x23\xc4\x35\xe1\x96\xde\x4a\x6d\x19\xa8\x49\x14\xef\xb9\x63\x16\xb5\x5d\x45\x77\xae\x85\xe1\x94\x7b\xd1\xc9\xc1\x10\x38\x62\xd4\x95\x94\x8b\x3c\xca\xd9\xdf\xcc\x52\x6f\x83\x9c\xdd\x34\x89\xc7\x36\x32\xc1\x7c\xf9\x41\x28\xe1\xc5\x37\x63\x6b\xf4\xbe\x21\x57\x5e\x08\xac\x0e\xb0\xe8\x42\x0b\xf7\x92\x11\x84\x44\x17\x41\x81\xf2\xdc\x44\xb1\x56\x4b\x04\xa7\x88\x37\x87\x33\xc1\x54\xf6\x8c\xc9\x1b\x61\x9b\x03\x82\x4e\xa1\x3b\x02\xa1\xda\x04\xf7\x91\x9a\xb1\xf2\xca\x0a\x62\x50\x09\xb7\xf7\xee\xca\x1a\x44\x69\x6e\xef\xdd\x27\x2a\x3d\x48\xdb\x4a\xc9\xea\x3e\x5c\xb3\x7f\x2e\xa7\x20\x35\x22\x3e\xca\xc9\x63\xa9\x15\x30\xf6\x32\xc2\xe8\xf2\x94\x04\x2f\x7b\xe0\x5b\x5e\xa3\x35\xcf\x43\x40\x5c\xc7\x63\x0b\x78\x80\x80\x3c\x5f\x20\x16\xef\x03\x22\xde\xce\x78\x1f\xf9\x4d\x2b\x58\x39\x9e\x80\xd4\x11\xec\x2f\xcc\x23\x7b\x4e\x5b\xfd\x46\xfe\xce\xa4\x03\xde\x79\x83\xb9\xac\xa2\x42\xd5\xa1\x4d\x16\x9b\xa8\xfc\x2c\x18\xe5\x67\xa9\xbb\xc7\x98\x3a\x95\xe1\x75\x00\xdd\xdf\x77\xed\xa2\x12\x42\xaa\x23\x22\x31\x6b\xad\xb9\xb3\xbc\xc1\x92\xd9\x34\x38\xeb\x8c\xd1\xff\x1d\xc0\xfc\xad\xce\xc1\xfc\x47\x8f\x79\x98\xe2\xaf\x35\xce\xc9\x58\x79\xd7\xd2\x05\x60\xa9\x37\x4f\xd4\xae\x23\xfc\x5f\x6c\xa8\x5c\x8a\x24\x50\x06\xf6\x9f\xc4\xa6\x8c\xde\xde\xe7\x5a\xcc\x6a\x7f\x72\x3f\xc2\xdb\xfd\xc5\x96\x82\x59\x3a\xad\x01\xe1\x8e\xa5\xc7\x13\x85\xe5\x20\x0e\x5e\xa0\x5c\x6a\x17\xd2\x6c\x94\x6a\xd0\x2b\x65\x4c\xfc\x42\xfe\xd9\x8c\x75\x1f\xe1\x96\x98\xf3\xfb\x7a\xa9\x99\x31\x72\x7b\x34\x13\xbd\xa7\x18\xe1\xb7\xf1\x2b\x4c\xcc\xe9\xd8\xf6\x66\x21\xd8\xe0\x8c\x2e\xf3\xdb\x36\x76\x3e\x98\xb5\x8e\xdd\x2b\x7e\x27\x86\x71\x7c\x48\xe6\x30\xf6\x62\xf7\x2b\x96\x95\xb1\x7f\x8d\xa9\x34\xf6\xcf\x75\x0d\xd7\xe4\xc1\x37\x26\x8c\xf7\x4f\xe3\xcc\x6d\x1b\x3b\xc4\x3a\x74\x89\x75\xe8\x06\xd6\x18\xeb\x63\x2f\x99\x1e\x27\xc6\x67\x9a\xbe\x34\x0f\xe2\x67\xa9\x85\xbb\x6d\xc7\x3e\x6d\x31\x66\x8f\xb0\x30\xcf\x26\xbd\x04\x52\x8b\x5c\xf4\x2f\xcb\x6c\xec\x5c\xd7\x71\xe4\xa3\x76\xc2\xfa\xcf\x62\xad\xc6\xa7\x6b\xcc\x92\x30\xe4\xcb\xb8\x07\x9c\x09\xc4\x37\x91\xe6\x86\x2f\x00\xeb\x0e\x6a\x4e\x95\x0a\xff\x1d\x14\x52\xd7\xd4\x7c\x16\x8f\x9e\x3a\x57\x56\x3c\x48\xd3\x39\xc0\x22\x0f\xb0\xae\x83\x33\xd3\x6e\xe0\xac\x43\x43\x07\x59\x3f\x74\xad\x92\x15\xf7\x22\x3c\xd1\x7e\x51\xbc\x5a\x68\x1f\xc4\x96\x46\xc3\x97\xce\xe7\x03\x57\xdc\xf9\x5e\x2f\x14\xe3\x4b\x2b\x74\x21\x95\x80\x70\x62\x78\x52\xd1\x0d\x06\x07\x08\xc4\x71\x74\x7c\xa0\xb9\x0b\xae\x96\x71\xa6\xef\x86\x35\x89\x11\x47\xe3\x5d\x71\xcb\xef\x2c\x6f\x57\x83\x8e\xc3\x08\xa9\x7f\x63\xee\xee\x94\xb8\x10\xaa\x8d\xdd\xaf\x9d\x12\x16\x7e\xea\x9a\x96\xd6\x9f\x29\xc1\xd1\xe5\x7c\xe7\xe0\x7a\x25\x94\xba\x34\xb5\xc0\xcc\x82\xf8\x97\xfa\x58\xd5\x51\x83\xba\x9d\xd6\x35\x9a\xbd\xdf\x0c\xfb\xb8\x4d\xff\xff\xba\x55\xd2\xc3\xad\x76\xf4\xff\xd7\xf0\x78\x11\xfe\xf5\x6b\xc2\x53\x10\xe6\x92\x57\xd6\xc0\x95\xe2\x9b\xd0\xbb\xee\x1c\xd5\x70\xcf\x6f\xb5\x7c\x64\x46\xab\xcd\x0b\xb8\xae\xac\x51\x0a\xed\x44\x9d\x60\x8b\x96\xaf\xf5\x65\xa7\xbc\x0c\x71\xb2\x33\x10\x6c\x0a\x5f\x45\x63\x1e\x44\x4a\x18\x46\x4e\x95\x4a\x06\x1d\x5c\xdf\xcb\x36\xa5\x1a\x12\x1d\x19\xea\xc6\x5c\x72\x5f\xad\xa4\xbe\x7b\x6f\xd1\x19\xe9\xb2\xdc\xad\xcc\xe8\xd6\x6c\x0c\xbd\x04\x8d\xb9\xe8\x79\x7c\x23\x83\x25\xd2\x42\x8c\xef\x40\x02\xd5\xa2\xf3\xde\x68\xf7\x22\x24\x91\x4b\x1c\xbb\x42\x64\x18\xba\xa9\x3c\xe3\xf5\x2c\x5d\x7c\xab\x14\x12\x12\x26\xb2\x21\x29\xd1\xf5\x90\xd6\xee\x31\x3d\xdd\xb6\x40\x56\x0b\xe1\x4a\x41\x7a\xdb\xc6\x7f\x31\x84\xcd\x5a\xd3\x00\x76\x62\x32\x0a\xa1\xb6\xed\xb9\x17\xa6\x21\xf7\x8b\x31\xd8\x07\x26\x39\xd8\xf9\xa3\xf4\xc1\xa1\xe0\x8c\xeb\x4a\x28\xb8\xb2\x52\x7b\xb8\xe2\x9d\x0b\xc1\xec\xf9\x02\x8a\x39\x14\x07\x50\x1c\x42\x71\x04\xc5\x31\x14\x27\x50\xbc\x82\xe2\x35\x14\x6f\xa0\x98\xef\x43\x31\x9f\x43\x31\x3f\x80\x62\x7e\x08\xc5\xfc\x08\x8a\xf9\x31\x14\xf3\x13\x28\xe6\xaf\xa0\x98\xbf\x86\x62\xfe\x06\x8a\x83\x7d\x28\x0e\x90\xcf\x01\x14\x07\x87\x50\x1c\x1c\x41\x71\x70\x0c\xc5\xc1\x09\x14\x07\xaf\xa0\x38\x78\x0d\xc5\xc1\x1b\x28\x0e\xf7\xa1\x38\x9c\x43\x71\x88\x1b\x1e\x42\x71\x78\x04\xc5\xe1\x31\x14\x87\x27\x50\x1c\xbe\x82\xe2\xf0\x35\x14\x87\x6f\xa0\x38\xda\x87\xe2\x68\x0e\xc5\xd1\x01\x14\x47\x28\xd9\x11\x14\x47\xc7\x50\x1c\x9d\x40\x71\xf4\x0a\x8a\xa3\xd7\x50\x1c\xbd\x81\xe2\x78\x1f\x8a\xe3\x39\x14\xc7\x07\x50\x1c\x1f\x42\x71\x8c\x2a\x1c\x43\x71\x7c\x02\xc5\xf1\x2b\x28\x8e\x5f\x43\x71\xfc\x06\x8a\x93\x7d\x28\x4e\xe6\x50\x9c\x1c\x40\x71\x72\x08\xc5\xc9\x11\x20\xfe\x0b\x59\x0d\x7b\xa7\xd4\xbe\xa7\xf6\x8c\xda\x0f\xd4\x9e\x53\x5b\x50\xfb\x57\x6a\x2f\xa8\xfd\x48\xed\x4f\xd4\x7e\xa2\xf6\x67\x6a\x2f\xa9\xfd\x4c\xed\x17\x6a\xaf\xa8\xfd\x85\xda\xaf\x61\x57\x6a\x6f\xa8\xbd\xa5\xf6\x57\x6a\xbf\x51\xfb\x37\x6a\xbf\x53\xfb\x77\xe8\x2b\x92\xeb\xdf\x61\x00\xac\x8a\xbb\x55\x60\x87\x8e\x11\x67\xce\xb8\xe5\x3e\xb0\xd4\xb5\xb0\xae\x32\x36\xcd\xd7\x5f\x54\x3d\x3e\x60\x76\x38\x77\x15\x04\xf8\x05\xe7\xe4\x58\x7f\x1c\x44\x31\x3c\x28\x88\x36\xfd\xab\xc8\x21\x84\x34\x96\x8d\x6a\x88\x34\x63\x21\x0b\xbd\x34\xa8\xe2\x7d\x86\x31\x25\xeb\x5a\x89\xd0\x0f\x6e\x4e\xdd\x6f\x2b\x21\x14\xdd\x73\xfd\x03\xf9\xfa\xf8\x38\x72\xa0\xc7\xb0\x34\xbc\xe6\x62\x1f\x76\x90\x0a\x0b\x2f\x03\x3b\xcb\xe3\x6b\xce\x2d\x40\x7e\xdb\x4e\xde\xb2\xf4\x6f\xd2\x03\x88\xc9\x34\x50\xe0\xf6\x19\xcd\x64\x44\x16\x3d\x0d\x09\x91\x12\x4d\x12\x2c\xd1\x13\x11\xbe\x7f\x82\x11\x8d\x47\x9a\xeb\x95\x5c\xfa\x54\xa6\x49\x0f\x2c\x32\x8a\x54\xa6\xc9\x88\x38\x32\x9a\x74\xbb\xc9\x08\x45\x32\x9a\x54\xee\x49\x82\x51\x7a\xa2\x53\xe5\x73\xa9\x27\x43\xa1\x32\x52\xe4\xca\x4f\x06\x30\x92\x90\xe4\x56\x9e\x24\x78\x26\x21\xca\x0d\x3d\xc9\x80\x4e\x42\x96\x0b\x3e\xd9\x82\x4e\xdb\x84\x83\xf8\x93\x1c\x53\xf5\x74\x7d\x90\x8d\xf2\x27\x77\x7b\x4a\x94\x69\x39\x19\x2e\xfd\x94\x24\xdb\x70\xf2\x04\xe0\xca\x6c\x8f\xd9\x7b\xeb\x7c\x9e\x24\x1e\x38\xf7\x12\x4c\x76\x60\x5b\xc6\xf7\x5c\xd7\x89\x32\x3f\x22\xa5\x6c\x91\x9e\xca\x24\x41\xbc\x29\x51\x76\x2a\x93\x01\x0a\xef\x48\xd7\x33\xcb\x55\xd9\x21\xeb\xd9\xa5\x92\x25\x67\xb6\xf7\xaf\xcc\x51\x76\x10\x55\x4a\xfa\xef\xa7\x49\x11\xfb\xf4\x64\x94\xde\x32\xb2\x0c\xe0\xa6\xd2\x5d\x64\x64\x43\xc2\xec\x49\xc6\x81\xb7\x3f\x22\x41\x99\x32\x4e\xdb\xb5\x7d\x42\x97\xb1\xfb\x01\xdd\x0d\x5f\xe4\xb9\x69\xb2\x05\x7f\xa7\x03\xf6\x4e\xa5\xf4\xe9\xb2\xc9\x36\x42\x9e\xc6\x81\x6d\x5f\xf8\x92\xa9\xdf\xc3\xe6\xec\xf8\x32\x0a\xc4\xf7\xe9\x6c\x91\xcd\x22\xd0\x4f\x67\x3f\xef\xcc\xa6\xa7\x44\x57\xe5\x0e\xc5\xf6\x91\xf7\xdf\x82\x46\xaa\xf8\x99\x68\x98\xfd\x9e\xcd\xd2\x27\xa3\x64\xf6\x2c\xcf\xcf\xa6\xdd\xa4\xb3\x7f\xdb\xca\xde\x99\x70\x9f\xb6\x27\xb7\xad\xf7\x21\x23\xc8\xca\x97\x94\xec\xd7\x2d\x8f\x75\x3e\x9b\x3e\xcd\x2d\xdc\x17\x31\x29\xc9\x4d\x46\x12\x2a\x80\xc4\xaf\xa6\xf9\xfd\x92\x94\x06\x09\xd1\x2c\x27\x8a\x35\x43\x4f\x90\xa6\xa5\x28\xc8\x6e\x4e\x4a\x73\x0c\x63\x3f\x4c\x88\x19\xaf\x1f\x25\x98\x8c\xd7\x6e\x82\x09\xa0\x77\x37\x51\xc5\xf1\x84\xea\xa9\x4c\x35\x8c\x4f\xf3\xcf\x14\x23\xb7\xb1\x28\xcb\xb2\xfd\x13\x34\x54\xad\x65\xf7\x46\x46\xd4\x97\x71\x03\x6e\xa0\xa0\x4e\x05\x8f\x23\x09\x87\xf7\xf9\x89\xf7\x35\x5f\x4a\xf2\x4b\x46\x42\x9f\xf5\x52\xe3\x6d\x39\xf5\x50\x2a\xa6\x44\xdf\x32\xa2\xa1\x36\xcc\xae\x82\x27\xf4\xa5\x32\x30\x25\xfa\x29\x77\xdf\xbe\x52\x9c\x4c\x81\x68\x5e\xbe\x64\xe7\x0d\xaf\xdc\x9e\xf3\x9b\x50\x01\x0d\xbf\x67\x61\x7d\xde\x5b\xe2\xfd\xf5\xd4\x65\xbd\xb7\xe8\x67\xb6\x53\x25\xa7\x2b\x6f\xd7\x07\x71\x0e\xcd\x9b\xb9\x5e\x2f\xc8\x47\xed\xc5\x5d\xc0\x7c\xe1\x4d\x38\xfd\xb6\xa4\xe1\x9a\xdf\x09\x1b\xe5\x29\xe6\x94\x7c\x77\x1d\xa0\x38\x08\x37\x54\x92\xe2\x8a\x43\x1a\x4a\xf3\x5a\x71\x44\x43\xe9\x89\x14\xaf\x76\xa9\xe6\xfb\x28\x63\x4a\x75\xee\x2a\x12\x9b\x10\x78\x22\xf3\x65\x40\xda\x99\xcd\x52\x48\x1c\x61\x4c\x2c\xc1\x7b\x6e\x39\x4e\x26\x5b\x0d\xb5\x79\x46\x93\xe1\xc1\xb1\xc0\xcd\x68\x02\x26\x8f\x17\x39\xe5\xa7\x2b\x2b\x1b\x6e\xb3\x54\xb9\x97\xb2\x9b\x6c\xd7\xc7\xa9\x42\x38\xda\xaa\xfe\x03\x9b\x63\xbb\xfe\x10\x04\xde\x7a\x61\x90\x9e\x70\xf3\x14\x41\x48\x8d\x29\x59\x1b\x7e\x24\xb0\xf5\x86\x21\xa5\xa8\x46\x8a\xad\x37\x0e\x29\xd5\x23\x6d\x97\xbf\x81\x98\x4c\x93\xef\xe8\x05\x7d\x12\xd0\xc6\x0b\x07\xf0\xd9\x78\xf1\x96\x7d\xd1\xa1\x52\x32\xaa\x1e\x3f\x0d\x89\xa6\x53\xdc\xa3\xd2\xf4\xcb\x27\xcd\xbe\x49\x5d\x9b\xb5\x63\x0d\xaf\x56\x88\x6a\xa7\xe1\x33\xc4\x45\xc9\xdc\x8a\xde\x6e\x2f\xe8\x83\x54\x78\x6d\xbe\xe8\xe1\xc1\x0c\xe0\x34\xfe\xd4\x81\x2b\xb5\x99\x8e\x3f\x95\xa1\xf7\x0a\x7d\x0d\x46\x2f\x87\xb1\xda\xa1\xcf\xe0\xf7\x62\x93\x7f\x5e\x0f\xc3\xbc\xc4\xca\x8c\xba\xb7\x6d\x39\x63\xe1\xa7\x3a\xf1\x73\x23\xca\xc9\x4c\x1b\x36\x62\xe5\x5e\xc9\x16\xc2\xaf\x85\xd0\xac\x31\xb5\x5c\x4a\x61\x5d\xf8\xe9\x01\xae\x0f\x1f\x3f\x80\x14\x28\x99\x33\x03\xff\x2a\x6a\xc2\xac\x58\x5b\xe9\xbd\xd0\x8c\x87\x6f\xf3\xbc\x64\xcf\x2b\xee\x30\x06\xbd\x47\x66\xa8\x26\x2a\xd3\xfb\xc4\x8b\x19\xd0\x27\x72\xe9\xd8\x7a\x35\x7c\x7d\x7f\xea\xd5\xf3\xf0\xe3\x23\x11\xa4\x19\x60\x77\xc9\xfa\xef\xe0\x66\x19\xf4\x4c\xa6\x42\xe5\xca\xad\x60\xe2\xf7\x4e\x3e\x70\x15\x3e\xf4\xfe\x7f\x00\x00\x00\xff\xff\x22\x16\xe5\x81\x78\x27\x00\x00" func runtimeHelpKeybindingsMdBytes() ([]byte, error) { return bindataRead( @@ -992,7 +971,7 @@ func runtimeHelpKeybindingsMd() (*asset, error) { return a, nil } -var _runtimeHelpOptionsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x5a\x51\x8f\xe4\xb6\x91\x7e\x1e\xfd\x8a\xc2\x38\xc0\xcc\x18\x3d\xbd\x46\xce\x0f\x41\xbf\x18\x6b\xef\xdd\xc6\xc8\xd9\x1b\x9c\x37\x77\x0e\x92\x20\xa2\xa4\x52\x8b\x19\x8a\xd4\x91\x54\xf7\x6a\x0d\xdf\x6f\x3f\x54\x15\x29\xa9\x7b\x7a\xa6\x73\xc0\xbd\x2c\xb6\x25\xb2\x58\x55\xac\xfa\xea\xab\xd2\x7c\x01\x1f\x86\xa8\x9d\x0d\x45\xf1\x83\xae\xbd\x83\x10\x9d\xc7\x00\xca\x18\x70\x2d\xc4\x0e\x61\x0c\xe8\xa1\x76\xb6\xd5\xfb\xd1\x2b\x5a\x0c\xda\x82\x8e\xe1\xec\x61\xa3\x3d\xd6\xd1\xf9\x69\x9b\x65\x8d\x01\x03\x8b\x28\x7f\xf3\xf3\xbb\xf7\x7f\xff\xee\xc3\x8f\xff\xf6\xfd\xfb\xbf\xff\xfe\xc3\x0f\xff\xfa\xa6\xa7\x05\x25\x28\x79\xff\x92\x20\x78\x1b\x60\x40\x5f\xd0\x9a\x9f\xdf\xbd\x87\x30\x60\xbd\x01\xdd\x3e\x17\x58\x82\x0e\x60\x5d\x84\x80\x71\x03\xe5\xff\xbc\xd9\x8a\xcc\x7c\x90\x0e\xa4\x4d\x43\x07\x16\xcb\x89\x27\x3a\xff\x1e\x3d\x82\xf2\xc8\x1a\x39\xf1\x0a\xc4\x4e\x45\x98\xdc\x08\xb5\xb2\x24\x7b\x57\x14\x5f\x42\xa9\xc6\xe8\xb4\x6d\xd0\xc6\x72\x07\xc7\x0e\x2d\xd4\x1e\x55\xd4\x76\x0f\x0a\x2c\x1e\xc1\x68\xcb\x8e\x63\x59\x41\xf5\x08\xb2\x5c\x0c\x4c\x56\x17\x00\x30\x78\x3c\x68\x37\x06\xde\xb1\x2d\x8a\x9b\x06\x5b\x35\x9a\x08\x07\x65\x46\xdc\x41\x19\xfd\x88\xe5\x7c\x68\x50\x07\x2c\x77\xc0\x46\xc1\x51\x1b\x03\xf4\x84\xa5\x55\x63\xdb\xa2\x07\x3c\xa0\x9f\xe0\x77\x10\xb0\x76\xb6\x09\x40\xbb\x7a\x15\x75\xad\x8c\x99\xb6\xc0\x17\x43\x07\x2b\x13\x92\x84\x93\x15\x22\x4f\xd9\x06\xfe\x7b\xd4\x51\x6c\x23\xf3\xf1\x13\xfd\xd2\xb1\x73\x63\x04\x15\x9e\xb4\xdd\x6f\xe1\x5b\x24\x49\xb5\xf2\xd8\x8e\x46\xd6\x8e\x81\x9c\x10\x3b\x1d\xa0\x45\x15\x47\x8f\x1b\xa8\xb0\x56\xe4\x0b\x92\xd3\xeb\x7d\x17\x41\xd5\xb5\x66\x77\x2c\x27\x42\xab\x0d\x6e\x48\x9e\x3b\xa0\x3f\x7a\xcd\xde\x3c\x92\xfb\x8f\xe2\x2f\x8f\x50\x61\xeb\xfc\x45\x37\xb5\xca\x84\xe4\xa7\x4a\x05\xb4\xaa\x27\x3f\x69\xcb\xae\xd1\xb6\x75\x95\xf2\x1b\x08\x9d\x3b\x82\xb3\x66\x12\x8f\xa5\x85\x39\xd0\x49\x03\xa8\x90\xce\xc5\x46\x47\x6c\x48\x1b\xaf\xe8\x68\x8a\x03\x91\xd5\x8e\xc6\xc0\xa0\x62\xb7\x2d\xe8\x35\xbc\xa2\x48\xed\x8c\xf3\xb5\x33\x63\x6f\x49\x97\x56\xdc\xb2\xc4\x29\x44\x07\x5f\x6d\x80\x1d\x6b\x0c\x34\x3a\x0c\x46\x4d\xa0\x40\xf6\x80\x8a\x74\x62\x01\x1c\xf6\xba\xd5\xd8\xa4\x37\x5b\xf8\x98\x24\x8d\x81\x5d\xaf\x5b\x76\xee\x51\xd9\x98\x37\xff\xee\x2b\x12\x5f\x21\x74\x7a\xdf\x19\xf2\x3a\xdb\xc3\xa2\x94\x81\xd6\x79\xc0\x4f\xaa\x1f\xcc\x45\x77\x7e\xb5\xb2\x20\xd4\x1d\xb2\x37\x8d\x53\x4d\xce\xd7\xf9\xb9\x00\x46\x43\xae\x26\x7f\xfc\xe6\x5e\x32\xeb\x9d\xf6\x0f\x6f\x56\xcb\xc2\x9b\x52\x52\xaa\xdc\x72\xf0\x6e\xc4\x84\x80\x91\xef\x59\x07\x28\xf7\xc6\x55\xca\xf0\xf5\x94\x97\x74\x4a\xbf\xcb\xa2\xb8\xf9\xd1\x45\x94\xd4\x24\x6d\xf2\xc2\xf5\x71\x70\x9f\x9e\x6e\x20\x38\xa3\xbc\xfe\x8c\xcd\x86\xe3\x7a\xfe\xf9\x18\xeb\x87\xe2\x86\x12\x9e\xee\xc3\xb8\x5a\x45\xb1\x63\xb6\x60\x09\xdd\xd8\xe1\xc4\xd8\x80\x7d\x85\x4d\x23\xeb\xe8\x6c\xc9\xc4\x4a\x5b\xc5\x18\x72\xf3\xf1\xcc\x3b\x04\x1b\x15\x42\x40\x83\x35\x89\x6f\xbd\xeb\x19\x5c\x73\xc0\x85\x2c\xa9\xb8\x39\x03\xad\x53\xf7\xad\x51\x51\xd0\xb5\x76\x64\x67\x35\xcd\xf6\x53\x7a\x42\xec\x3c\x62\x71\xb3\xde\xbb\x2b\x8a\x9b\x3f\x27\x08\xf3\xa8\x1a\xe8\x1d\x21\x5d\x45\xa9\xcc\x27\xdd\x85\x53\xdf\x25\x8d\xd2\xf5\x97\xd0\xa1\x19\x20\xba\x41\xd7\xc5\xcd\x7d\xc9\xbf\xd2\xab\x87\xad\xc4\xc9\xe8\x83\xf3\x04\x61\xe5\x6e\x09\x38\x16\xc2\x48\x38\x5f\x95\x2c\xa4\xeb\x96\x2a\xa2\xa0\xd1\x04\x5b\x68\xd3\xf5\x51\x0c\xdd\xcf\x21\x46\x0b\x1b\x6c\xb5\xc5\x86\x0c\x3d\x0f\x3d\x8a\x79\xba\x14\x06\x9d\x87\xd7\xd1\x13\x5d\x6b\xf1\x98\x54\x5c\xe1\xe7\x29\xfa\xa9\xa6\x11\x04\x17\xb5\xdd\x7c\x4d\x57\x30\xa7\x55\x21\x36\xda\xc7\xa9\xdc\x49\x96\x37\x18\xd1\xf7\xda\x62\x10\x0c\x7b\xd2\xb6\x21\x9c\x51\x66\xef\xbc\x8e\x5d\x9f\x74\x90\x12\xe9\x96\xf5\xa0\x5b\x86\xe7\x8c\xe7\x3a\x40\xef\x1a\xc9\x7e\xe7\x29\x54\xb7\xf0\x5f\x84\xb4\xab\x33\xc5\x9f\x9b\x24\xf2\x1f\x63\x88\x22\x57\x91\xa4\xca\x39\x83\xca\x42\x99\xc5\x94\x72\x1d\x92\x7d\x74\xb6\x78\x89\xaa\x52\x70\x4b\x75\xe2\xb2\xdf\xab\x27\x92\x63\x19\x10\xb7\x24\x2e\x23\x0f\x9d\xbe\x81\x6a\x8c\x39\xc4\xb5\x55\x75\x4d\x25\x1c\xb7\xf0\x7d\xfb\x4c\xbd\xb6\xdd\x90\x58\xbb\xf2\x3d\x89\xeb\x54\xe8\x72\x64\x70\x14\x24\xb3\xd5\x5e\x69\x1b\x22\x28\x59\x91\x10\xda\x79\xbd\xd7\x96\xe0\x8b\xa0\xfa\x9e\x8b\x2e\x36\x52\x79\x04\x2a\xf3\x7e\xaa\x19\x84\x57\xd8\x3c\x2c\x68\x29\x71\x9f\xb4\x64\xdd\x5d\xc5\xd5\xd7\x4c\xf2\xce\x63\x70\xa3\xaf\x59\x90\xb6\x11\x6d\xd0\x07\x4c\xfb\x05\xbe\xc4\xd5\x66\x62\x00\x1d\xd0\x0d\x06\xe1\xd8\x39\xca\x2b\x8a\x1f\xaa\x85\x29\xb3\x3a\x75\xd0\x76\xcf\x77\x99\x4f\x9c\x2f\x32\x44\x15\xc7\xf0\x7a\xc0\x92\x89\xad\xf3\xbd\x8a\xd7\x62\x8a\x63\x15\x6d\xa3\xed\x3e\xac\x43\x9b\x80\x8b\xd4\x4c\x9e\xe1\x30\x86\x3f\xfd\xf8\xfd\xcf\xa7\x3b\x48\x65\x8e\x99\xf2\xaf\xb6\x84\x7b\xd3\x3e\x90\x43\x3d\xaa\x00\x8d\x0b\xcf\xd6\x92\xa8\xf2\xaf\x9e\xd7\xd6\xde\xb4\xec\x5f\x84\x78\x74\x30\xb8\x10\x74\x65\x50\xac\x09\xe9\xf0\xc5\x77\x74\x52\x39\x5a\xfd\xa9\x64\x24\x2e\x1b\x17\xca\x14\x54\x92\x65\x62\xaf\x68\x5f\xe1\x59\x6e\x92\xf9\x8c\xa1\xb4\x37\x15\x4b\x4a\x0a\x01\x2b\x71\x29\x29\x2b\x51\x10\x4f\x4e\x7e\x5e\x2a\xdd\x68\x1a\x30\xfa\x89\xb3\xbc\xee\x94\xdd\xe3\x82\x57\xd9\x5c\x42\x20\x4e\xc7\x8c\x34\x21\x2a\xbf\xa2\x79\x2f\x21\x03\xdb\x38\xdf\x62\x9c\x06\x02\x9d\x80\x31\xcc\x78\x42\xcf\xf2\xe5\x9c\xc5\xfe\xf6\xbc\x34\xb2\xc7\xa9\x3e\xbd\x5c\x1c\xd9\xd6\xcb\x6e\xa3\x24\x6f\x70\x10\x93\xb2\xb7\x38\x7f\xc8\xa8\x4e\x1d\xb0\xb8\x71\x03\x5a\x56\x57\xef\xad\xf3\x58\xab\x40\x0a\x0f\xe8\xe9\x42\x80\x7e\x3e\x6a\x1b\x28\x1d\xa2\x3e\x50\x35\x53\xbe\xee\xf0\x62\x00\xaf\x40\x51\x28\x6f\xdd\x29\xbf\xb6\x7e\x4d\x84\xe9\x9d\xaa\x23\xfa\x4b\x92\x20\x4b\x61\xf2\x56\xee\x00\xad\xaa\x4c\xea\x28\xf8\x9a\x52\x51\xa9\x5c\x8c\xae\xcf\x18\x41\x48\xe5\xbc\x84\x30\xf4\x18\x82\xda\xe3\x1c\xb8\x83\xa7\xb4\x6e\x9e\xa5\xf4\x55\xf2\xb1\xe4\xe5\x13\xe2\xf0\x9c\xff\x0b\xef\x5d\x9e\x6f\xe0\xd8\xe9\x88\x61\x50\x35\xd2\x01\x8a\x49\x03\x5d\xf8\xe4\x46\x39\x9e\xb9\xae\x68\xb0\xca\x6c\xdd\x2e\xa4\xbb\x77\x87\xb9\x08\x59\xfc\x14\xc5\xea\x99\x85\xdb\x09\xe8\x56\xbc\xf4\x6f\x00\xbc\x6e\x75\x6c\xcc\xe4\x59\x0e\x0f\x1d\xc7\x7c\x45\x84\xc9\x20\x7b\xe1\xdb\x85\x3c\xd0\xde\x45\x7d\x92\x76\x6a\x40\xda\x23\x34\x36\xf9\x9f\x41\x16\xdb\x08\xd8\x0f\x71\xba\x12\x0d\x4f\x38\xf5\x68\xc7\x72\x37\x13\x5d\x36\x4b\x59\xf7\x18\xe2\x64\x10\x9e\x70\x02\x5a\x71\xf9\x5a\x43\xed\x11\xed\x16\x88\xfa\x89\xad\x2a\xc2\x47\xb7\xdf\x1b\xfc\x03\x4e\x3f\xd0\x3e\x1d\xa0\x72\xa3\x6d\xb8\xa6\xbd\x35\xf1\x71\x5f\xae\xe9\x11\xc1\x46\x66\xe0\x0b\x7c\x68\x9b\x3d\xb7\x20\xc8\x16\x3e\x3a\x5a\x42\xe1\xc6\x5b\x36\x10\x74\x3f\x98\x89\xc4\x65\xc9\x74\xc8\x9f\x6c\xa5\x6d\xf3\x07\xbc\x1c\x33\x2b\xe3\x7b\x37\x72\x4a\x1d\x3b\x94\x76\xc2\xa5\x68\x06\x7e\x03\x61\x1c\x06\xe7\x73\x69\x3f\x79\x96\xd4\xa5\xc5\x0d\xf7\x47\x63\x18\x39\xb1\x49\x67\x09\x1b\x65\x96\xdc\x67\x95\x1d\xd5\x1c\x0c\x21\x49\xc2\x03\xda\x48\x45\x43\xd7\x5d\x2e\xd7\x02\x87\x5c\xe8\x56\xcd\x03\x61\xa1\x1b\x26\xa1\xa9\x27\x07\x50\x35\x26\xee\xe8\x5a\x79\x29\x75\xe6\x5e\xb7\xdc\xaf\x41\x08\x1d\x45\x37\xc9\x4b\x6d\xc5\x09\x79\x5e\xe4\x74\x14\x8f\xa2\x5c\x8a\x6c\x41\xb6\xda\xe8\xa1\x72\xca\x0b\xbc\xf7\xb9\x4d\x6d\x1c\x72\xbf\x74\x85\xdd\x0d\x66\xdc\x6b\x4b\x30\x6e\xd1\x84\x72\x47\x1c\x3e\x12\x83\x98\xb9\x76\x7e\x37\x33\x5e\xd9\x02\xbd\xb2\x6a\x4f\x84\x81\x9b\x69\x06\x36\x2e\x96\x54\xde\x79\x05\xd1\xe1\x2d\xbc\xcd\x02\x98\x37\x49\x30\x28\x30\x3a\x44\xf2\xc8\x9d\xc7\xc1\x05\xc2\x9d\xe9\x0e\xfe\x11\x9c\x4d\xd4\x9e\x3d\xce\x3d\xb2\xa8\x03\x3d\x46\xd5\xa8\xa8\x12\x47\x20\xc5\xf6\xfa\x80\x36\x9d\xb5\x85\x9f\x50\xfc\x55\xfe\x51\xd4\xfb\x41\xd4\x2b\xa9\x9f\x67\xa8\x70\x6d\x8e\xd7\x64\xf4\x09\x3f\x67\xbd\x99\xca\x10\x6c\x52\x31\xd5\xce\x5e\x72\x5d\x17\xe3\x10\x76\x6f\xde\xec\x75\xec\xc6\x6a\x5b\xbb\x5e\x9a\x8e\x47\x81\xcf\x37\x22\xfb\x31\x19\xbd\x76\x32\x9b\x7a\xc9\xc3\x8b\x13\x34\x86\xbb\xd7\xfc\x4c\x16\x88\xab\x2f\xf8\x79\x71\x25\x1d\x11\x74\x88\x81\x89\x33\x94\xf4\x66\x4b\xde\x2d\xa5\x7e\x9d\x7b\x37\x2c\xee\x25\xb1\x0a\x08\x93\x0d\x66\xdf\xbe\x5c\x62\x7c\x1f\xbd\xd2\x46\xdb\xfd\x31\xbc\xd6\x1d\x44\xaf\x7b\xc8\x4b\x57\xf8\x18\x08\xb2\xd0\x99\x2b\x20\xe0\x47\x83\x7e\x85\x7f\x8c\xa1\x76\xec\x2b\xf4\x57\xb8\x60\x50\x07\x94\xd6\xa9\xdc\x81\xc7\x9e\xba\xd0\x5c\xe2\x56\x6d\x15\xe3\xb1\x0a\x11\xa2\xee\x71\xa9\xf3\xf4\x98\x2a\xbc\x50\x27\x2e\x83\x63\x04\x1d\xd3\x50\x65\x2e\x37\xb4\x66\xd9\xc5\x0c\xfc\x8a\x45\xa4\x57\xa7\x03\x5d\xd6\x5a\xb1\xda\xf5\x3d\x65\x71\x7a\x05\x15\xc6\x23\xa2\x85\xda\x38\x29\x93\xb6\x01\x8f\x8f\x74\x5e\xa2\xc8\xec\xf2\x17\x26\x2a\xa7\x6e\x18\x6d\xe3\x72\xd1\x8d\xe7\xbc\x7c\x03\xf4\x9a\x53\x54\x1d\xb0\x61\xe0\x03\xd5\x46\xf4\x32\xc3\x33\x2e\xe4\x51\x13\xc7\xa0\xcb\xe0\x97\xde\xb0\x5e\xec\x86\x34\x8f\x9a\x47\x7f\x54\xf5\x59\xb8\xb6\xfb\x6b\x4e\xa9\xbd\x33\x46\x28\xcb\x32\xd3\x91\xa7\x50\x29\x7f\x75\x6e\x24\x4b\x7b\xe5\xf7\xda\x96\x3b\x50\xbd\x1b\x6d\xcc\x44\x3f\x5c\xa0\xaf\x01\xb9\xe9\x48\x83\xbb\x0a\x8d\x3b\x66\xd2\x2f\x91\x71\x49\xe3\x7f\x59\x1f\x16\x06\xc4\xe6\xc2\x59\x24\x5c\x14\xa7\x8c\x72\x16\xf3\x4f\x2e\x29\x97\xc4\xfe\x36\x89\xed\x95\x8f\x83\x0a\x91\x99\xaf\x30\x0f\xc9\x2b\x6a\xb1\x0d\xaa\xe6\x34\x85\xe4\x42\x69\x03\x3d\xef\x47\x13\x35\xb5\x56\xac\xc5\x37\x73\xdf\x29\x39\x19\x23\xf1\x0d\xd2\x6d\xf0\x18\xd0\x1f\xf0\x84\x45\xaf\x09\xa6\xc1\x03\x9a\x53\xd9\x8a\x0b\xfe\x68\x65\x19\x36\x50\x19\x57\x3f\x5d\xc9\x3f\xd7\xc6\xa3\x57\xc3\xb9\x2d\xf4\x2c\x7b\x8a\xf8\x08\x4f\x8f\x9d\x03\xe3\xec\x9e\xf4\x6b\x75\x9c\xfb\x13\xe1\x2f\x57\x42\x67\x30\x3a\x0a\xef\xc9\x31\xae\xa0\x73\x5e\x7f\x26\x84\x33\xc0\xef\x29\xbc\x53\xe7\xbb\xc9\xea\xe8\x48\x35\x3d\xf7\xc3\x1c\x01\xb9\x4c\x64\xb7\xf0\xde\x6f\x5e\x37\x93\x96\x78\xbd\xef\xe2\x72\xfa\x81\xf8\x65\xfd\xcf\x9f\x2d\x45\x9d\x27\xa7\x3c\x03\x4a\xf4\xed\xff\xa2\xc5\xcc\xc3\xce\xb8\xa2\xbc\x78\x85\xfa\xbf\xec\xe3\x45\x7a\xaf\x62\xdd\x55\x5e\xd5\xa7\xa3\x2a\x7e\x4c\xe1\xc1\xaf\xa4\x75\xbd\xbb\x7f\xb8\xdb\xc0\xdd\x2f\xbf\xd2\xbf\x7f\xf9\xdb\xdd\xd5\xc4\x5d\x64\x13\x2b\xce\x3e\x9c\x45\xab\x19\x00\x79\xcd\xec\xc0\x79\x01\xff\x67\x1e\x64\xd0\x9a\x34\xf5\x33\x13\x61\x0f\xfa\x15\xd8\x6f\x20\x37\x8f\xb9\x87\x9a\xf9\x14\xb6\xf1\x1b\x19\x52\xf4\x94\x2b\x3e\x24\x96\xb7\xb6\x9d\x2e\x92\x9c\x72\x1d\x8c\x26\x1b\xd5\xa7\x72\x07\x71\xf4\x36\x80\xfc\xa4\xa0\x26\x3c\x68\xdb\x2b\x79\x33\xd6\x3d\xc1\x4a\x1e\x60\x4b\xef\x16\xc6\x01\x7d\xfe\xac\xc4\x95\x62\x0b\x1f\x88\xf5\x86\x08\x61\x0a\x11\xfb\x30\x13\xf5\xdb\x30\x36\xee\x96\xfa\x79\x6e\x97\x2c\x7c\xfb\xd3\x3b\x8a\xb8\xc4\x62\x6f\x1b\xa7\xc2\xf6\xf6\xa4\x9d\x4b\xaf\xea\x31\x44\xd7\xeb\xcf\x69\x60\x90\xe7\x36\xfc\x15\x88\xee\x85\x0b\x00\xcf\x68\x64\x70\x1a\xc6\x4b\xb6\xd0\xf1\x62\x4b\x54\x15\xf5\x63\xbd\x34\x7d\x56\x1d\xf4\x5e\x45\x84\x85\x00\x70\x3c\xe2\x5e\x5b\xcb\x8d\x76\x86\x50\x15\x52\xcf\x24\x03\xe4\xa8\x2a\xbe\x8f\x7b\xdc\xee\xb7\xd2\xe1\x31\x81\xfe\x7a\x25\xc9\xd9\x1a\x1f\x4e\x7b\x54\xd6\x9d\xc9\xb0\xb2\x53\xe4\x68\x91\xc9\x04\xe9\x15\xa2\x93\xcd\x69\x12\x78\x05\x65\x68\x87\xfe\x7c\x32\x92\x88\xaa\x02\x7a\xc6\x5d\x4d\x1a\xd4\x5f\x10\xf2\xf5\x22\x60\x3e\x72\xc7\x73\xa6\xa4\xfc\xaa\x4b\x60\x43\x5f\xd7\x03\x7d\x1f\x75\x34\x9c\xe7\x3c\xe5\x0d\x73\x83\x24\xa3\x4e\xaa\x75\x7e\xee\x1d\xee\x02\xf0\xf2\xb9\xd9\x09\x18\xa9\x23\x9b\x9b\x05\x4e\x37\x61\x3a\x57\x5c\x30\x06\x1c\xbc\xee\x95\x9f\x4a\xb8\xcf\x71\xd1\x8e\x86\x22\xec\x4b\xab\x3f\x3d\xbc\xa8\xd1\xd9\x7c\x2d\x25\x6b\x12\xb6\xea\x62\x72\x27\x25\x93\x7f\xfe\x96\x98\xc6\xea\x95\xaa\x9f\xf6\x9e\x1a\xd5\x74\xc5\xb9\xc7\x01\xd5\xb6\x58\xc7\x0c\xdc\x96\xf8\xfb\xba\x31\x92\x19\xc3\x77\xd1\x9b\xc7\xef\x38\xa6\xf9\xbf\xff\xf9\x4a\x0a\x3e\x3e\x3e\x16\xc5\xbb\xf4\x2e\x11\xf1\xf4\x65\x73\xf9\x90\xc9\xdc\x87\x6a\xff\x09\xd7\x15\x46\x54\xfe\xf2\x6b\x09\xe5\xfd\x43\x09\xe5\x5f\xfe\x56\x42\x79\x7b\x5b\x42\x79\x77\x57\x6e\xe1\x8f\xde\x1d\x74\x33\xcf\xe5\x39\x14\x17\x69\xe9\xb0\xd7\x07\x9c\x31\xa9\x52\xee\x56\x6d\xfa\xe6\xe4\xe3\x26\x46\x08\xae\x5f\x3e\xc7\x56\x2a\x2c\x23\xbf\x3c\x47\xdb\xc2\xdb\xd9\x69\xbd\xeb\x79\xfa\x72\x7e\x4d\xaa\x12\x4c\xef\xd5\x13\x4a\x6f\xc6\xdf\x82\x86\x19\xec\x87\x29\x76\xce\xf2\xd3\x49\xf5\x26\x0f\x4c\x03\x78\xdc\x2b\xdf\x18\x6a\x58\x5d\x2b\x01\x99\x46\x73\x81\x07\xdd\xcf\xe9\xd8\x7a\x72\x00\x15\x76\xea\xa0\xa5\x33\x26\x08\x3d\x21\xad\x57\x01\xd4\x68\x1b\xb9\x67\x78\x7b\x72\x39\xf4\x78\x9e\x7a\x0b\x5d\xcf\x9c\xf7\xd9\xcd\xcc\x42\x38\x4e\x5f\x6c\x85\xd2\x99\x6f\xed\x94\x95\x23\xc3\xe8\x02\x52\xd8\xe6\xb9\x5a\xce\x3d\x26\xd8\xab\x2f\x24\x50\x9c\x7f\xbf\x9a\xdd\xc4\x1d\x71\x70\x1b\x12\x85\x1c\xe3\x1b\x71\xe4\xe9\x77\x7f\x69\x56\x92\xfc\x22\x13\x8a\x79\x66\x26\xbe\xbe\x5b\xfc\x1c\xd5\x13\x5e\x92\xc3\x70\x4e\xda\x47\x07\xca\x3a\xca\xde\xa2\x57\x54\x62\x71\x1e\xe4\x70\x6e\x72\x31\x3a\x51\x32\xd9\xc3\x7b\x20\xed\xd9\x16\x45\xf1\xc5\x17\xf0\x5e\x26\x84\x14\x20\x32\xb1\xc8\x3b\x8b\xe2\xcf\xcb\xdf\x07\xd0\xf6\xb0\x48\x05\xd4\x2c\x4a\xc6\x8b\x66\x22\x14\xe1\xdd\x66\xda\xc2\xbf\xcb\x7f\xa0\x47\x95\xff\xd2\x80\x32\x29\x0f\x7e\x8f\xce\xde\xc5\x13\x57\x9f\xff\x59\xc3\xa9\x87\xcb\x34\xe1\x52\x71\xfe\xa4\x4c\xc8\x56\x24\xa0\x4c\xd7\x78\x3e\x6b\xfe\x29\x9d\xa6\x32\x32\x2c\xba\xea\xb0\xfe\xbc\xca\x5f\x4f\x8b\x39\x2d\x97\x3f\x92\xe0\xef\x78\x74\x69\x2c\x91\x3a\xd9\x8f\xcb\xc7\x43\xf9\x76\xbc\x6a\xd2\x56\x83\xd6\x4d\x52\x18\x57\x63\xf2\xd5\x4a\xf6\x53\x41\x0b\x79\x1e\x47\x87\x2e\x4a\x26\x27\x6e\x38\xbb\xcb\x80\x91\x1f\x94\xeb\x02\x44\x4f\xcb\x6d\x51\x7c\x9f\xbe\x66\x9e\x39\x6b\x1e\x81\xd3\xcd\xf1\x5f\x43\x50\x57\x4c\xa7\x64\xb0\x49\x67\x50\x1e\x09\x81\x99\xf8\x4f\x03\xf8\x46\x0b\xc5\x96\x00\xcf\x19\x16\x20\xe2\xbf\x21\xd1\xf2\xc5\x4c\xc6\x60\x69\xea\xd6\xa9\x70\x5e\xaa\x29\xe2\x69\xbb\x31\x09\x69\xf0\x53\x8d\x43\x84\xf7\xae\xe0\xdf\xe2\x9e\xb9\x5a\xc3\xd7\x97\x97\xff\xc7\x58\x4d\xf2\x64\x57\x14\x65\x59\x92\x75\xc5\x2f\xc5\xcd\x6d\x1b\x77\x7b\x77\xbb\x83\x5f\x8a\x9b\x9b\xdb\xf5\xd1\xb7\x3b\xe0\x52\x58\xdc\xfc\xba\x91\x75\x7e\xac\xa6\xf5\x4a\xfd\x19\x6f\x77\xf0\xdb\xb4\xe0\x6c\x2f\x21\x45\x7e\x2c\x0b\xbf\x2e\x7e\xa5\x93\x8b\xe2\x83\xa7\xfc\xd2\x46\x79\x33\xcd\xbe\x15\x56\xcb\x49\x49\x2e\x3b\x57\xf3\xcb\xed\x3f\xa5\xe5\x97\x5b\x5f\xfd\x3f\xa8\xf8\xbf\x01\x00\x00\xff\xff\xe0\x03\x35\xb9\xf0\x24\x00\x00" +var _runtimeHelpOptionsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x7a\xdf\x8f\xe4\xb6\x91\xff\xf3\xe8\xaf\x28\x8c\x17\x98\x19\xa3\xa7\xc7\x48\xfc\x60\xf4\x8b\xb1\xf6\x7e\xbf\x6b\x23\x67\x6f\x90\xdd\xdc\x39\x48\x82\x88\x92\x4a\x2d\x66\x28\x52\x47\x52\xdd\xab\x35\x7c\x7f\xfb\xa1\xaa\x48\x49\xdd\xdb\x33\x93\x03\xee\xfc\xe0\x9d\x96\xc8\xfa\xc5\xaa\x4f\xfd\xa0\xbe\x80\x77\x43\xd4\xce\x86\xa2\xf8\x49\xd7\xde\x41\x88\xce\x63\x00\x65\x0c\xb8\x16\x62\x87\x30\x06\xf4\x50\x3b\xdb\xea\xfd\xe8\x15\x2d\x06\x6d\x41\xc7\x70\xf6\xb0\xd1\x1e\xeb\xe8\xfc\xb4\xcd\xb4\xc6\x80\x81\x49\x94\xaf\x7e\x79\xf3\xf6\x1f\xdf\xbf\xfb\xf9\xff\xff\xf8\xf6\x1f\x3f\xbc\xfb\xe9\xff\x3d\xf4\xb4\xa0\x04\x25\xef\x9f\x22\x04\xaf\x03\x0c\xe8\x0b\x5a\xf3\xcb\x9b\xb7\x10\x06\xac\x37\xa0\xdb\xcf\x09\x96\xa0\x03\x58\x17\x21\x60\xdc\x40\xf9\x5f\x0f\x5b\xa1\x99\x19\xe9\x40\xd2\x34\xc4\xb0\x58\x38\x9e\xc8\xfc\x03\x7a\x04\xe5\x91\x25\x72\x62\x15\x88\x9d\x8a\x30\xb9\x11\x6a\x65\x89\xf6\xae\x28\xbe\x84\x52\x8d\xd1\x69\xdb\xa0\x8d\xe5\x0e\x8e\x1d\x5a\xa8\x3d\xaa\xa8\xed\x1e\x14\x58\x3c\x82\xd1\x96\x0d\xc7\xb4\x82\xea\x11\x64\xb9\x28\x98\xb4\x2e\x00\x60\xf0\x78\xd0\x6e\x0c\xbc\x63\x5b\x14\x57\x0d\xb6\x6a\x34\x11\x0e\xca\x8c\xb8\x83\x32\xfa\x11\xcb\x99\x69\x50\x07\x2c\x77\xc0\x4a\xc1\x51\x1b\x03\xf4\x84\xa9\x55\x63\xdb\xa2\x07\x3c\xa0\x9f\xe0\x1b\x08\x58\x3b\xdb\x04\xa0\x5d\xbd\x8a\xba\x56\xc6\x4c\x5b\xe0\x83\x21\xc6\xca\x84\x44\xe1\x64\x85\xd0\x53\xb6\x81\xff\x1c\x75\x14\xdd\x48\x7d\xfc\x48\xbf\x74\xec\xdc\x18\x41\x85\x47\x6d\xf7\x5b\xf8\x0e\x89\x52\xad\x3c\xb6\xa3\x91\xb5\x63\x20\x23\xc4\x4e\x07\x68\x51\xc5\xd1\xe3\x06\x2a\xac\x15\xd9\x82\xe8\xf4\x7a\xdf\x45\x50\x75\xad\xd9\x1c\x0b\x47\x68\xb5\xc1\x0d\xd1\x73\x07\xf4\x47\xaf\xd9\x9a\x47\x32\xff\x51\xec\xe5\x11\x2a\x6c\x9d\xbf\x68\xa6\x56\x99\x90\xec\x54\xa9\x80\x56\xf5\x64\x27\x6d\xd9\x34\xda\xb6\xae\x52\x7e\x03\xa1\x73\x47\x70\xd6\x4c\x62\xb1\xb4\x30\x3b\x3a\x49\x00\x15\x12\x5f\x6c\x74\xc4\x86\xa4\xf1\x8a\x58\x93\x1f\x08\xad\x76\x34\x06\x06\x15\xbb\x6d\x41\xaf\xe1\x19\x41\x6a\x67\x9c\xaf\x9d\x19\x7b\x4b\xb2\xb4\x62\x96\xc5\x4f\x21\x3a\xf8\x6a\x03\x6c\x58\x63\xa0\xd1\x61\x30\x6a\x02\x05\xb2\x07\x54\x24\x8e\x05\xb0\xdb\xeb\x56\x63\x93\xde\x6c\xe1\x43\xa2\x34\x06\x36\xbd\x6e\xd9\xb8\x47\x65\x63\xde\xfc\xcd\x57\x44\xbe\x42\xe8\xf4\xbe\x33\x64\x75\xd6\x87\x49\x29\x03\xad\xf3\x80\x1f\x55\x3f\x98\x8b\xe6\xfc\x6a\xa5\x41\xa8\x3b\x64\x6b\x1a\xa7\x9a\x1c\xaf\xf3\x73\x01\x8c\x86\x4c\x4d\xf6\x78\x75\x2b\x91\xf5\x46\xfb\xbb\x87\xd5\xb2\xf0\x50\x4a\x48\x95\x5b\x76\xde\x8d\xa8\x10\x30\xf2\x39\xeb\x00\xe5\xde\xb8\x4a\x19\x3e\x9e\xf2\x92\x4c\xe9\x77\x59\x14\x57\x3f\xbb\x88\x12\x9a\x24\x4d\x5e\xb8\x66\x07\xb7\xe9\xe9\x06\x82\x33\xca\xeb\x4f\xd8\x6c\xd8\xaf\xe7\x9f\xf7\xb1\xbe\x2b\xae\x28\xe0\xe9\x3c\x8c\xab\x55\x14\x3d\x66\x0d\x16\xd7\x8d\x1d\x4e\x8c\x0d\xd8\x57\xd8\x34\xb2\x8e\x78\x4b\x24\x56\xda\x2a\xc6\x90\xab\x0f\x67\xd6\x21\xd8\xa8\x10\x02\x1a\xac\x89\x7c\xeb\x5d\xcf\xe0\x9a\x1d\x2e\x64\x4a\xc5\xd5\x19\x68\x9d\x9a\x6f\x8d\x8a\x82\xae\xb5\x23\x3d\xab\x69\xd6\x9f\xc2\x13\x62\xe7\x11\x8b\xab\xf5\xde\x5d\x51\x5c\xfd\x25\x41\x98\x47\xd5\x40\xef\x08\xe9\x2a\x0a\x65\xe6\x74\x13\x4e\x6d\x97\x24\x4a\xc7\x5f\x42\x87\x66\x80\xe8\x06\x5d\x17\x57\xb7\x25\xff\x4a\xaf\xee\xb6\xe2\x27\xa3\x0f\xce\x13\x84\x95\xbb\xc5\xe1\x98\x08\x23\xe1\x7c\x54\xb2\x90\x8e\x5b\xb2\x88\x82\x46\x13\x6c\xa1\x4d\xc7\x47\x3e\x74\x3b\xbb\x18\x2d\x6c\xb0\xd5\x16\x1b\x52\xf4\xdc\xf5\xc8\xe7\xe9\x50\x18\x74\xee\x9e\x47\x4f\xb4\xb5\x6b\xb4\xdd\x97\x3b\x26\x93\x7f\x52\x90\xb8\x01\xad\xb8\x06\x21\x91\x1c\x0a\xd9\x72\x0b\xef\xc7\x61\x70\x9e\xce\x2d\xaf\x0f\x8c\x9d\x9e\xf4\x0a\xf4\x5c\x45\xe8\x62\x1c\xc2\xee\xe1\xe1\x78\x3c\x6e\x8f\xbf\xdf\x3a\xbf\x7f\xf8\xf0\xa7\x87\xbc\xe1\xe1\x09\x9c\x18\x63\x7b\xff\x4d\x12\xcd\xb5\x16\x8f\xc9\x7a\x2b\x68\x3f\x05\x66\xd5\x34\x92\x5c\xc4\xa2\x6e\xf6\xa0\x17\xe0\xb0\x55\x21\x36\xda\xc7\x89\x35\x67\x83\x46\xf4\xbd\xb6\xa4\x25\x9d\xcb\xa3\xb6\x0d\x41\xa0\x32\x7b\xe7\x75\xec\xfa\x24\x83\x64\x6f\xb7\xac\x07\xdd\xb2\xf6\x39\xd5\xe8\x00\xbd\x6b\x04\x98\x9c\xa7\x28\xda\xc2\x7f\x50\x12\x58\xf1\x94\xa3\xde\x24\x92\xff\x1c\x43\x14\xba\x8a\x28\x55\xce\x19\x54\x16\xca\x4c\xa6\x14\x4f\x11\x60\x20\xde\x72\x80\x94\x30\x83\x5b\x12\x27\x57\x24\xbd\x7a\x24\x3a\x96\xb1\x7a\x4b\xe4\x32\x28\x12\xf7\x0d\x54\x63\xcc\xd1\xa7\xad\xaa\x6b\xaa\x2e\x70\x0b\x3f\xb6\x9f\x89\xd7\xb6\x1b\x22\x6b\x57\xb6\x27\x72\x9d\x0a\x5d\x76\x5a\x76\xd0\xa4\xb6\xda\x2b\x6d\x43\x04\x25\x2b\x52\xf2\x70\x5e\xef\xb5\x25\x64\xa5\x2c\x72\xcb\xf5\x00\x36\x92\x14\x05\xc5\xf3\x7e\x4a\x67\x04\xa5\xd8\xdc\x2d\x40\x2e\x21\x99\xa4\x64\xd9\x5d\xc5\x85\x81\x99\xe4\x9d\xc7\xe0\x46\x5f\x33\x21\x6d\x23\xda\xa0\x0f\x98\xf6\x0b\xb2\x8a\xa9\xcd\xc4\xd8\x3e\xa0\x1b\x0c\xc2\xb1\x73\x14\xf2\xe4\x3f\x94\xa6\x53\xd0\x77\xea\xa0\xed\x9e\xcf\x32\x73\x9c\x0f\x32\x44\x15\xc7\xf0\x7c\x2c\x91\x8a\xad\xf3\xbd\x8a\x2f\xf9\x14\xfb\x2a\x5a\x8e\x9c\xb5\x6b\x13\xa6\x92\x98\xc9\x32\xec\xc6\xf0\xe7\x9f\x7f\xfc\xe5\x74\x07\x89\xcc\x3e\x53\xfe\xcd\x96\x70\x6b\xda\x3b\x32\xa8\x47\x15\xa0\x71\xe1\xb3\xb5\x44\xaa\xfc\x9b\xe7\xb5\xb5\x37\x2d\xdb\x17\x21\x1e\x1d\x0c\x2e\x04\x5d\x19\x14\x6d\x42\x62\xbe\xd8\x8e\x38\x95\xa3\xd5\x1f\x4b\x46\x82\xb2\x71\xa1\x4c\x4e\x25\x51\x26\xfa\x8a\xf4\x15\x9e\xc5\x26\xa9\xcf\xf0\x4e\x7b\x53\x1e\xa7\xa0\x10\x1c\x15\x93\x92\xb0\xe2\x05\xf1\x84\xf3\xe7\x59\xdc\x8d\xa6\x01\xa3\x1f\x39\xca\xeb\x4e\xd9\x3d\x2e\x50\x9a\xd5\x25\x70\xe4\x70\xcc\x20\x18\xa2\xf2\xab\x0a\xf4\x29\x64\x60\x1d\xe7\x53\x8c\xd3\x40\xa0\x13\x30\x86\x19\x4f\xe8\x59\x3e\x9c\x33\xdf\xdf\x9e\x67\x6d\xb6\x38\xa5\xce\xa7\xf3\x36\xeb\x7a\xd9\x6c\x14\xe4\x0d\x0e\xa2\x52\xb6\x16\xc7\x0f\x29\xd5\xa9\x03\x16\x57\x04\xce\x2c\xae\xde\x5b\xe7\xb1\x56\x81\x04\x1e\xd0\xd3\x81\x00\xfd\xbc\xd7\x36\x50\x38\x44\x7d\xa0\x44\xab\x7c\xdd\xe1\x45\x07\x5e\x81\xa2\x54\xe3\x75\xa7\xfc\x5a\xfb\x75\x8d\x4e\xef\x54\x1d\xd1\x5f\xa2\x04\x99\x0a\xd7\x95\xe5\x0e\xd0\xaa\xca\xa4\x66\x87\x8f\x29\xe5\xbb\xca\xc5\xe8\xfa\x8c\x11\x84\x54\xce\x8b\x0b\x43\x8f\x21\xa8\x3d\xce\x8e\x3b\x78\x0a\xeb\xe6\xb3\x90\x7e\xb1\x2e\x5a\xe2\xf2\x11\x71\xf8\xbc\x35\x91\x92\x7c\x79\xbe\x81\x63\xa7\x23\x86\x41\xd5\x48\x0c\x14\xd7\x33\x74\xe0\x93\x1b\x85\x3d\x97\xe1\x22\xc1\x2a\xb2\x75\xbb\xf4\x03\xbd\x3b\xcc\x49\xc8\xe2\xc7\x28\x5a\xcf\x0d\x82\x9d\x80\x4e\xc5\x4b\x6b\x09\xc0\xeb\x56\x6c\x63\xae\xeb\x85\x79\xe8\xd8\xe7\x2b\xaa\xe5\x0c\xb2\x15\xbe\x5b\xea\x1a\xda\xbb\x88\x4f\xd4\x4e\x15\x48\x7b\xa4\xc2\x4e\xf6\x67\x90\xc5\x36\x02\xf6\x43\x9c\x5e\xf0\x86\x47\x9c\x7a\xb4\x63\xb9\x9b\x6b\x70\x56\x4b\x59\x77\x1f\xe2\x64\x10\x1e\x71\x02\x5a\x71\xf9\x58\x43\xed\x11\xed\x16\xa8\x2a\x15\x5d\x55\x84\x0f\x6e\xbf\x37\xf8\x07\x9c\x7e\xa2\x7d\x3a\x40\xe5\x46\xdb\x70\x4e\x7b\x6d\xe2\xfd\xbe\x5c\x57\x6e\x04\x1b\xb9\x39\x58\xe0\x43\xdb\x6c\xb9\x05\x41\xb6\xf0\xc1\xd1\x12\x72\x37\xde\xb2\x81\xa0\xfb\xc1\x4c\x44\x2e\x53\x26\x26\x7f\xb6\x95\xb6\xcd\x1f\xf0\xb2\xcf\xac\x94\xef\x55\xac\xbb\xca\xab\xfa\xb4\x76\xe3\xc7\xe4\x38\xfc\x4a\x00\xf3\xe6\xf6\xee\x66\x03\x37\xbf\xfe\x46\xff\xff\xeb\xdf\x6f\x5e\xec\x80\x16\xda\x74\x16\xd9\x21\x67\xd2\x0a\x6a\xe3\xc2\xcc\x64\x93\xfd\x60\x5e\xc0\x7f\xcc\xe9\x93\xd6\xa4\x32\xd8\x4c\x30\xda\x06\xfd\xaa\xa8\xdc\x40\x86\xac\x1c\xb9\xd9\x3f\x89\xf7\xb7\x92\x1a\x7b\x15\x23\x7a\xf6\x48\xdd\x9e\xe8\x4e\xa6\xa7\x48\x7a\x59\x27\x37\x32\x04\x1d\x3b\x94\xce\xd0\xa5\xe8\x07\x7e\x03\x41\x6a\xc6\x54\x0a\x9d\x3c\x4b\xc7\x4b\x8b\x1b\x6e\x75\xc7\x30\x32\x10\x92\x94\x12\x66\xca\x2c\x58\xc9\x47\xec\x28\x47\x63\x08\x89\x12\x1e\xd0\x46\x4a\xb2\xba\xee\x72\x79\x23\xe9\x23\xe9\x34\xf7\x81\x94\x3b\xdc\x30\x49\xc7\x71\xc2\x80\xaa\x17\x6a\x03\x5c\x2b\x2f\x25\x2f\xdf\xea\x96\x5b\x6f\x08\xa1\xa3\xd3\x26\x7a\xa9\x43\x3c\xe9\x83\x16\x3a\x1d\xc5\xaf\x08\x97\x2d\xcd\x99\xa0\x36\x7a\xa8\x9c\xf2\x92\x0e\xfb\x3c\x71\x68\x1c\x72\xeb\xfb\x42\xa1\x3e\x98\x71\xaf\x2d\xa5\x3d\x8b\x26\x94\x3b\x6a\xc7\x22\x55\x5c\x73\xdb\x94\xdf\xcd\xcd\x8b\x6c\x81\x5e\x59\xb5\xa7\x02\x8b\xe7\x22\x9c\x08\xb8\xb8\xa0\x72\x88\x57\x50\x67\xb3\x85\xd7\x99\x00\xd7\x99\x12\x3c\x8a\xeb\x79\xb2\xc8\x8d\xc7\xc1\x05\xc2\xe9\xe9\x06\xfe\x19\x9c\xcd\x0d\x01\x59\x9c\xc7\x1d\x22\x0e\xf4\x18\x55\xa3\xa2\x4a\x35\x15\x09\xb6\xd7\x07\xb4\x89\xd7\x16\xde\xa3\xd8\xab\xfc\xa3\x88\xf7\x93\x88\x57\x42\xc0\x9a\xa1\xd5\xb5\x39\xbe\x93\xd2\x27\xad\x16\xcb\xcd\xa5\x1f\xa5\x19\x2a\x3e\xb4\xb3\x97\x4c\x97\xfb\x8f\xbd\x8e\xdd\x58\x6d\x6b\xd7\x4b\xff\x78\x2f\xe9\xe6\x41\x68\xdf\x27\xa5\xd7\x46\x66\x55\x2f\x59\x78\x31\x82\xc6\x70\xf3\x9c\x9d\x49\x03\x31\xf5\x05\x3b\x2f\xa6\x24\x16\x41\x87\x18\xb8\xd1\x80\x92\xde\x6c\xc9\xba\xa5\xe4\xfb\x73\xeb\x86\xc5\xbc\x44\x56\x01\xa1\x84\xc1\x6c\xdb\xa7\x53\xb2\xef\xa3\x57\xda\x68\xbb\x3f\x86\xe7\xba\xa9\xe8\x75\x0f\x79\xe9\x2a\x9f\x04\x82\x78\x74\xe6\x05\xd0\xf4\xa3\x41\xbf\xca\x17\x9c\x73\xec\xd8\x57\xe8\x5f\xa8\x9d\xa9\xc7\x14\xc0\x2a\x77\xe0\xb1\x47\xda\x93\x4a\x82\x55\x87\xcc\xf9\x4b\x85\x08\x51\xf7\xb8\xd4\x45\xf4\x98\x2a\x22\x29\x35\xb9\x6c\x18\x23\xe8\x98\xe6\x63\x73\x7a\xe6\x96\x76\xde\xc5\x1d\xcb\x0b\x1a\x91\x5c\x9d\x0e\x74\x58\x6b\xc1\x6a\xd7\xf7\x14\xc5\xe9\x15\x54\x18\x8f\x88\x76\x06\x6e\x7a\xe7\xf1\x9e\xf8\xa5\x96\x82\x4d\xfe\x44\xd3\x7b\x6a\x86\xd1\x36\x2e\xe7\x84\x78\xde\xc7\x6c\x08\xe0\x1d\x87\xa8\x3a\x50\x03\x4e\xa1\xa5\x5a\x82\x75\x1e\xc7\x1a\x17\xf2\xd4\x90\x7d\xd0\x65\xf0\x4b\x6f\x58\x2e\xe9\xec\x65\xb4\x38\x4f\x71\xa9\x4a\x62\xe2\xda\xee\x5f\x32\x4a\xed\x9d\x31\x52\xe2\x2d\xe3\x39\x79\x0a\x95\xf2\x2f\x26\x0b\x59\xda\x2b\xbf\xd7\xb6\xdc\x81\xea\xdd\x68\x63\x6e\x8c\xc2\x85\x72\x3f\x20\x37\x69\x69\x06\x5b\xa1\x71\xc7\x9c\xff\xc4\x33\x2e\x49\xfc\xfb\x35\xb3\x30\x20\x36\x17\x78\x11\x71\x11\x9c\x22\xca\x59\xcc\x3f\x39\xa5\x5c\x22\xfb\xbb\x44\xb6\x57\x3e\x0e\x2a\x44\xee\x14\x52\x86\xe6\xb8\x52\x4d\x03\x06\x55\x73\x1a\x42\x72\xa0\xb4\x81\x53\xf8\x68\xa2\xa6\x56\x94\xa5\xf8\x76\xee\xd3\x25\x26\x63\xa4\xfa\x8c\x64\x1b\x3c\x06\xf4\x07\x3c\xe9\x3a\xd6\x05\xb9\xc1\x03\x9a\x53\xda\x8a\x0b\xa4\xd1\xca\x32\x6c\xa0\x32\xae\x7e\x7c\x21\xfe\x5c\x1b\x8f\x5e\x0d\xe7\xba\xd0\xb3\x6c\x29\xaa\xdf\xf8\x22\xc0\x39\x30\x4e\x86\x44\xad\x8e\x73\x3f\x27\xf5\xde\x0b\xae\x33\x18\x1d\xa5\x4e\xcc\x3e\xae\xa0\x73\x5e\x7f\x22\x84\x33\xc0\xef\xc9\xbd\xd3\xa4\x60\x2e\x7e\x74\xa4\x9c\x9e\xe7\x07\xec\x01\x39\x4d\x64\xb3\xf0\xde\x6f\x9f\x57\x93\x96\x78\xaa\xe4\x16\xee\x07\xaa\xc7\xeb\x7f\x9d\xb7\x24\x75\x1e\x82\x73\x49\x98\xca\xdd\xff\x89\x14\x5c\xb7\x4a\xf6\x32\xe5\x0e\x52\x13\x1d\xa2\xa7\xe3\xe3\xc9\x9e\xe6\xc3\xcd\xed\x26\x95\x6a\xf7\xd4\xf1\xcb\x30\x62\x50\x3e\xb3\xe5\x20\x5f\x95\xc1\xef\xd3\x20\x5b\xea\x41\x7d\xc0\xb0\xea\x22\x06\xa3\x6a\x2e\xa0\x83\x6e\x10\xca\x57\xb7\x77\xe5\xbc\x83\x4b\x91\x65\x93\xb6\xb5\x19\x1b\x3e\x3c\x6d\xe4\xde\x60\xb3\x1a\x48\x6d\xa0\xe4\xc1\xdc\x86\xa7\xa1\xf4\x8f\x1b\x22\xfd\x43\xd5\xf5\x32\x21\xe0\xa7\x32\x39\xe0\x17\x6b\x0e\x51\x3d\x22\xa0\xe6\x62\x51\xd9\x0c\x72\x8e\x7f\x28\xa9\x04\x18\xd7\x8e\xca\x33\xa2\x13\x95\x96\xa2\x23\x8d\x61\xd9\xac\xf3\x98\x69\xde\x4d\xbf\xa8\x2f\x99\xfb\x0a\x6e\x93\xea\x54\x25\x5c\xc2\xa5\x57\xb7\x59\xc5\x3b\x78\x75\x9b\x55\xbc\xbb\x7d\x75\x4b\x2a\xde\x6d\x5e\xdd\xd6\xce\xdc\xd1\x3b\x37\xc4\x5d\x1e\x05\xdc\x31\xad\xf3\xff\x96\x35\x72\xa6\x79\x57\x1e\x7b\xde\xfd\x5f\x3b\xc0\x53\x2a\x92\xf9\x77\x27\xcd\xd7\xdd\x4e\xee\x7d\xe8\x8d\xb6\xfb\xb0\x81\x93\x55\x3f\xa0\x19\xee\x76\x17\x95\x8c\xbc\x80\x6b\xb2\xb5\x3a\x69\x52\xbb\xee\x15\xe5\xc5\x33\xad\xff\xd3\x98\xb1\x8a\x96\xb1\xee\x09\xb9\xf3\x75\x8f\x8c\x13\xc2\x38\xa0\xcf\x97\xb0\x9c\x8c\xb7\xf0\x8e\x1a\x8b\x10\x21\x4c\x21\x62\x1f\xe6\xde\xf1\x3a\x8c\x8d\xbb\x86\x6a\xe4\x2e\xd9\x59\xf8\xee\xfd\x1b\x0a\xea\xd4\x28\x5c\x37\x4e\x85\xed\xf5\xc9\x84\x21\xbd\xaa\xc7\x10\x5d\xaf\x3f\xa5\x19\x56\x1e\x25\xf2\x9d\x29\xc1\x07\x5b\x9f\xc7\x86\x72\xcd\x10\xc6\x4b\xba\x10\xfb\xa4\xcb\x64\xa3\xfa\x58\xee\x20\x8e\xde\x06\x90\x9f\x20\x9e\xeb\xda\xf6\x79\x43\x44\x55\xf5\xee\x80\xbd\x0c\x31\xac\x3a\xe8\xbd\x8a\x08\x4b\x81\xc6\xf6\xc5\xbd\xb6\x96\x07\x47\x39\xc5\xa9\x90\x66\x00\x72\x57\x13\x55\xc5\x9d\xde\x2d\x6e\xf7\x5b\x99\x58\x70\x83\xf3\xf5\x8a\x92\xb3\x35\xde\x9d\xce\x5c\x58\x71\x6e\x56\x94\x9d\x22\xf7\xa1\x32\x69\x23\xb9\x42\x74\xb2\x39\x4d\xb6\x5f\xc8\x02\xb4\x43\x7f\x3a\x19\xb1\x45\x55\x01\x3d\xe3\x2e\x3d\xdd\x89\x5d\x20\xf2\xf5\x42\x60\x66\xb9\xe3\xb9\x69\x12\x7e\xd5\xc5\xb1\xa2\xcf\xcb\x81\xbe\x8f\x3a\x1a\xf6\x5b\xbe\x50\x09\x73\x03\x2b\xa3\x7b\xaa\x45\xfc\xdc\xdb\xdd\x04\xe0\xe5\x73\x33\x1a\x30\x42\x35\x2d\xcd\x1c\xa7\x14\xa9\x44\x5f\x30\xc1\x18\x70\xf0\xba\x57\x7e\x2a\xe1\x36\x3b\x55\x3b\x1a\x72\x86\x2f\xad\xfe\x78\xf7\xa4\x44\x67\xf3\xe2\x84\x01\x89\xd8\xaa\xcb\xcc\x9d\xae\x5c\xb2\xf1\xb5\x7d\x82\xce\x4a\xd5\x8f\x7b\x4f\x00\x99\x8e\x38\xf7\xa0\xa0\xda\x16\xeb\x98\x13\xab\x25\x58\x5a\x37\xae\x32\x33\xfb\x3e\x7a\x73\xff\x3d\x07\x04\xff\xf9\xef\xcf\xb8\xed\xfd\xfd\x7d\x51\xbc\x49\xef\x52\xa3\x94\x3e\x22\x58\xbe\x19\xe0\xda\x94\x6a\xb3\x93\x5e\x44\x2a\xd6\xf2\xd7\xdf\x4a\x28\x6f\xef\x4a\x28\xff\xfa\xf7\x12\xca\xeb\xeb\x12\xca\x9b\x9b\x72\x0b\x7f\xf4\xee\xa0\x9b\xf9\x0a\x8c\x5d\x71\xa1\x96\x98\x3d\x3f\xb0\x8f\x49\x94\x72\xb7\x1a\x3b\x6d\x4e\xbe\x23\xc0\x08\xc1\xf5\xcb\x97\x0f\x95\x0a\xcb\x08\x3b\x27\x83\x2d\xbc\x9e\x8d\xd6\xbb\x9e\xa7\x89\xe7\xc7\xa4\x2a\x99\x16\xf5\xea\x11\xa5\x77\xe6\xbb\xb5\x61\x1e\x23\x0d\x53\xec\x9c\xdc\xb8\x4d\xaa\x37\xf9\x02\x20\x80\xc7\xbd\xf2\x8d\xc1\xc0\x6d\x22\x3b\x64\x1a\x35\x07\xbe\xb8\xf9\xbc\x5c\x5e\x4f\xc2\xa0\xc2\x4e\x1d\xb4\x4c\x2e\x08\x76\x4e\x9a\x8a\x17\x41\xc7\x68\x1b\xb9\xa7\x7b\x7d\x72\x38\xf4\x78\xbe\xc5\x91\x76\x2a\xf7\x24\x9f\x9d\xcc\x4c\x84\xfd\xf4\xc9\x56\x35\xf1\x7c\x6d\xa7\x2c\x1c\x29\x46\x07\x90\xdc\x36\xcf\x89\x73\xec\x71\x03\xb4\xba\xf1\x83\xe2\xfc\xaa\x78\x36\x13\x4f\x2c\x82\xdb\x10\x29\x64\x1f\xdf\x88\x21\x4f\x3f\xb1\x91\x66\x32\xd1\x2f\x72\xc1\x37\xcf\x80\xc5\xd6\x37\x8b\x9d\xb9\x86\xb9\x40\x87\x73\x01\x49\x1f\x1d\x28\xeb\x28\x7a\x8b\x5e\xd5\x9d\xb6\x38\x0f\x26\x39\x36\x39\x93\x9d\x08\x99\xf4\xe1\x3d\x90\xf6\x6c\x8b\xa2\xf8\xe2\x0b\x78\x2b\x13\x6f\x72\x10\x99\x28\xe5\x9d\x45\xf1\x97\xe5\x53\x1c\xda\x1e\x16\xaa\xb9\xc4\x92\x71\xb9\x99\x08\x45\x78\xb7\x99\xb6\xf0\x6f\xf2\x07\xf4\xa8\xf2\x47\x3d\x14\x49\xf9\x22\xe3\xe8\xec\x4d\x3c\x31\xf5\xf9\x17\x44\xa7\x16\x2e\xd3\xc4\x56\xc5\xf9\xeb\x0d\x42\xb6\x22\x01\x65\x3a\xc6\xf3\xbb\x93\xf7\x89\xdb\x52\x04\xce\xb2\xea\xb0\xfe\x92\x81\x3f\x54\x28\xe6\xb0\x5c\xd5\x7d\xda\xf2\x8c\x46\x28\x86\x6d\x51\x7c\x58\xee\xe9\xe5\x33\x8d\x55\x13\xbd\xba\x38\xd8\x24\x81\x71\x75\xed\xb3\x5a\xc9\x76\x2a\x68\x21\xcf\x97\x89\xe9\x22\x64\x32\xe2\x86\xa3\xbb\x0c\x18\xf9\x41\xb9\x4e\x40\xf4\xb4\xdc\x16\xc5\x8f\xe9\xc3\x81\x33\x63\xcd\x57\x3a\x74\x72\xfc\xe1\xd1\x30\xca\x17\x30\x19\x6c\x12\x0f\x8a\x23\xa9\x7e\x26\xfe\x0a\x87\x4f\xb4\x50\xac\x09\x57\xcc\x2b\x20\xe2\xcf\xb5\xb4\xdc\x00\xcb\x98\x32\x4d\x45\x3b\x15\xce\x53\x75\x2a\x30\xc9\x74\x82\x34\xf8\xb1\xc6\x21\xc2\x5b\x57\xf0\x6f\x31\xcf\x9c\xad\xe1\xeb\xcb\xcb\xff\x34\x56\x93\x3c\xd9\x15\x45\x59\x96\xa4\x5d\xf1\x6b\x71\x75\xdd\xc6\xdd\xde\x5d\xef\xe0\xd7\xe2\xea\xea\x7a\xcd\xfa\x7a\x07\x9c\x0a\x8b\xab\xdf\x36\xb2\xce\x8f\xd5\xb4\x5e\xa9\x3f\xe1\xf5\x0e\x7e\x97\x16\x9c\xed\x25\xa4\xc8\x8f\x65\xe1\xd7\xc5\x6f\xc4\xb9\x28\xde\x79\x8a\x2f\x6d\x94\x37\xd3\x6c\x5b\x99\x97\x73\x50\x92\xc9\xce\xc5\xfc\x72\xfb\x2f\x49\xf9\xe5\xd6\x57\xff\x0b\x22\xfe\x77\x00\x00\x00\xff\xff\xe0\xf7\xe9\xe1\x5b\x28\x00\x00" func runtimeHelpOptionsMdBytes() ([]byte, error) { return bindataRead( @@ -3619,7 +3598,6 @@ var _bindata = map[string]func() (*asset, error){ "runtime/help/colors.md": runtimeHelpColorsMd, "runtime/help/commands.md": runtimeHelpCommandsMd, "runtime/help/defaultkeys.md": runtimeHelpDefaultkeysMd, - "runtime/help/gimmickcolors.md": runtimeHelpGimmickcolorsMd, "runtime/help/help.md": runtimeHelpHelpMd, "runtime/help/keybindings.md": runtimeHelpKeybindingsMd, "runtime/help/options.md": runtimeHelpOptionsMd, @@ -3830,15 +3808,14 @@ var _bintree = &bintree{nil, map[string]*bintree{ "zenburn.micro": &bintree{runtimeColorschemesZenburnMicro, map[string]*bintree{}}, }}, "help": &bintree{nil, map[string]*bintree{ - "colors.md": &bintree{runtimeHelpColorsMd, map[string]*bintree{}}, - "commands.md": &bintree{runtimeHelpCommandsMd, map[string]*bintree{}}, - "defaultkeys.md": &bintree{runtimeHelpDefaultkeysMd, map[string]*bintree{}}, - "gimmickcolors.md": &bintree{runtimeHelpGimmickcolorsMd, map[string]*bintree{}}, - "help.md": &bintree{runtimeHelpHelpMd, map[string]*bintree{}}, - "keybindings.md": &bintree{runtimeHelpKeybindingsMd, map[string]*bintree{}}, - "options.md": &bintree{runtimeHelpOptionsMd, map[string]*bintree{}}, - "plugins.md": &bintree{runtimeHelpPluginsMd, map[string]*bintree{}}, - "tutorial.md": &bintree{runtimeHelpTutorialMd, map[string]*bintree{}}, + "colors.md": &bintree{runtimeHelpColorsMd, map[string]*bintree{}}, + "commands.md": &bintree{runtimeHelpCommandsMd, map[string]*bintree{}}, + "defaultkeys.md": &bintree{runtimeHelpDefaultkeysMd, map[string]*bintree{}}, + "help.md": &bintree{runtimeHelpHelpMd, map[string]*bintree{}}, + "keybindings.md": &bintree{runtimeHelpKeybindingsMd, map[string]*bintree{}}, + "options.md": &bintree{runtimeHelpOptionsMd, map[string]*bintree{}}, + "plugins.md": &bintree{runtimeHelpPluginsMd, map[string]*bintree{}}, + "tutorial.md": &bintree{runtimeHelpTutorialMd, map[string]*bintree{}}, }}, "plugins": &bintree{nil, map[string]*bintree{ "autoclose": &bintree{nil, map[string]*bintree{ diff --git a/internal/config/settings.go b/internal/config/settings.go index 2d0787a9..45c39634 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -140,7 +140,6 @@ func DefaultCommonSettings() map[string]interface{} { "eofnewline": false, "fastdirty": true, "fileformat": "unix", - "hidehelp": false, "ignorecase": false, "indentchar": " ", "keepautoindent": false, @@ -153,10 +152,12 @@ func DefaultCommonSettings() map[string]interface{} { "scrollbar": false, "scrollmargin": float64(3), "scrollspeed": float64(2), - "softwrap": false, "smartpaste": true, + "softwrap": false, "splitbottom": true, "splitright": true, + "statusformatl": "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat) $(opt:encoding)", + "statusformatr": "$(bind:ToggleKeyMenu): show bindings, $(bind:ToggleHelp): toggle help", "statusline": true, "syntax": true, "tabmovement": false, diff --git a/internal/display/statusline.go b/internal/display/statusline.go index 6731c2c8..9a92d3cf 100644 --- a/internal/display/statusline.go +++ b/internal/display/statusline.go @@ -70,6 +70,7 @@ func (s *StatusLine) Display() { y := s.win.Height + s.win.Y - 1 b := s.win.Buf + // autocomplete suggestions (for the buffer, not for the infowindow) if b.HasSuggestions && len(b.Suggestions) > 1 { statusLineStyle := config.DefStyle.Reverse(true) if style, ok := config.Colorscheme["statusline"]; ok { @@ -124,9 +125,9 @@ func (s *StatusLine) Display() { } } - leftText := []byte(s.win.Buf.StatusFormatLeft) + leftText := []byte(s.win.Buf.Settings["statusformatl"].(string)) leftText = formatParser.ReplaceAllFunc(leftText, formatter) - rightText := []byte(s.win.Buf.StatusFormatRight) + rightText := []byte(s.win.Buf.Settings["statusformatr"].(string)) rightText = formatParser.ReplaceAllFunc(rightText, formatter) statusLineStyle := config.DefStyle.Reverse(true) diff --git a/runtime/help/commands.md b/runtime/help/commands.md index a1e64cbc..e282d992 100644 --- a/runtime/help/commands.md +++ b/runtime/help/commands.md @@ -77,6 +77,8 @@ Here are the possible commands that you can use. * `open filename`: Open a file in the current buffer. +* `reset option`: resets the given option to its default value + * `retab`: Replaces all leading tabs with spaces or leading spaces with tabs depending on the value of `tabstospaces`. diff --git a/runtime/help/options.md b/runtime/help/options.md index d9a44aec..ef1d068b 100644 --- a/runtime/help/options.md +++ b/runtime/help/options.md @@ -200,6 +200,21 @@ Here are the options that you can set: default value: `true` +* `statusformatl`: format string definition for the left-justified part of the + statusline. Special directives should be placed inside `$()`. Special + directives include: `filename`, `modified`, `line`, `col`, `opt`, `bind`. + The `opt` and `bind` directives take either an option or an action afterward + and fill in the value of the option or the key bound to the action. + + default value: `$(filename) $(modified)($(line),$(col)) $(opt:filetype) + $(opt:fileformat) $(opt:encoding)` + +* `statusformatl`: format string definition for the left-justified part of the + statusline. + + default value: `$(bind:ToggleKeyMenu): show bindings, $(bind:ToggleHelp): + toggle help` + * `statusline`: display the status line at the bottom of the screen. default value: `true` From bf15f5c585565eb510b95a33ef2b8689d03ca51f Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 17 Jun 2019 11:26:37 -0400 Subject: [PATCH 129/231] Support filetype option as command line option --- cmd/micro/micro.go | 11 +++++++++-- internal/buffer/buffer.go | 17 ++++++++++------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 1e554c51..396c414a 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -52,8 +52,9 @@ func InitFlags() { optionFlags = make(map[string]*string) for k, v := range config.DefaultGlobalSettings() { - optionFlags[k] = flag.String(k, "", fmt.Sprintf("The %s option. Default value: '%v'", k, v)) + optionFlags[k] = flag.String(k, "", fmt.Sprintf("The %s option. Default value: '%v'.", k, v)) } + optionFlags["filetype"] = flag.String("filetype", "", fmt.Sprintf("The filetype option. Autodetected by default.")) flag.Parse() @@ -153,13 +154,15 @@ func main() { // flag options for k, v := range optionFlags { - if *v != "" { + if *v != "" && k != "filetype" { nativeValue, err := config.GetNativeValue(k, config.GlobalSettings[k], *v) if err != nil { screen.TermMessage(err) continue } config.GlobalSettings[k] = nativeValue + } else if k == "filetype" && *v != "" { + config.GlobalSettings[k] = *v } } @@ -196,6 +199,10 @@ func main() { action.InitTabs(b) action.InitGlobals() + if _, ok := config.GlobalSettings["filetype"]; ok { + delete(config.GlobalSettings, "filetype") + } + // Here is the event loop which runs in a separate thread go func() { events = make(chan tcell.Event) diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index 1a7bf301..5e74ac5f 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -155,6 +155,8 @@ func NewBufferFromString(text, path string, btype BufType) *Buffer { // NewBuffer creates a new buffer from a given reader with a given path // Ensure that ReadSettings and InitGlobalSettings have been called before creating // a new buffer +// Places the cursor at startcursor. If startcursor is -1, -1 places the +// cursor at an autodetected location (based on savecursor or :LINE:COL) func NewBuffer(r io.Reader, size int64, path string, startcursor Loc, btype BufType) *Buffer { absPath, _ := filepath.Abs(path) @@ -166,7 +168,7 @@ func NewBuffer(r io.Reader, size int64, path string, startcursor Loc, btype BufT b.Settings[k] = v } } - config.InitLocalSettings(b.Settings, b.Path) + config.InitLocalSettings(b.Settings, path) enc, err := htmlindex.Get(b.Settings["encoding"].(string)) if err != nil { @@ -194,6 +196,12 @@ func NewBuffer(r io.Reader, size int64, path string, startcursor Loc, btype BufT b.EventHandler = NewEventHandler(b.SharedBuffer, b.cursors) } + b.Path = path + b.AbsPath = absPath + + // The last time this file was modified + b.ModTime, _ = GetModTime(b.Path) + switch b.Endings { case FFUnix: b.Settings["fileformat"] = "unix" @@ -201,13 +209,8 @@ func NewBuffer(r io.Reader, size int64, path string, startcursor Loc, btype BufT b.Settings["fileformat"] = "dos" } - b.Path = path - b.AbsPath = absPath - - // The last time this file was modified - b.ModTime, _ = GetModTime(b.Path) - b.UpdateRules() + config.InitLocalSettings(b.Settings, b.Path) if _, err := os.Stat(config.ConfigDir + "/buffers/"); os.IsNotExist(err) { os.Mkdir(config.ConfigDir+"/buffers/", os.ModePerm) From 5bd54747b386a774c9fa943e495c55c86527a9b7 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 17 Jun 2019 11:58:39 -0400 Subject: [PATCH 130/231] Fix history for YN prompt --- internal/info/history.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/info/history.go b/internal/info/history.go index 9b98357a..e6d03fee 100644 --- a/internal/info/history.go +++ b/internal/info/history.go @@ -62,7 +62,7 @@ func (i *InfoBuf) SaveHistory() { // UpHistory fetches the previous item in the history func (i *InfoBuf) UpHistory(history []string) { - if i.HistoryNum > 0 { + if i.HistoryNum > 0 && i.HasPrompt && !i.HasYN { i.HistoryNum-- i.Replace(i.Start(), i.End(), history[i.HistoryNum]) i.Buffer.GetActiveCursor().GotoLoc(i.End()) @@ -71,7 +71,7 @@ func (i *InfoBuf) UpHistory(history []string) { // DownHistory fetches the next item in the history func (i *InfoBuf) DownHistory(history []string) { - if i.HistoryNum < len(history)-1 { + if i.HistoryNum < len(history)-1 && i.HasPrompt && !i.HasYN { i.HistoryNum++ i.Replace(i.Start(), i.End(), history[i.HistoryNum]) i.Buffer.GetActiveCursor().GotoLoc(i.End()) From 55e33badd04e51f6f642c7ae0ae262213a6d0454 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 17 Jun 2019 17:45:38 -0400 Subject: [PATCH 131/231] Add readonly option --- cmd/micro/micro.go | 17 ++++++++--------- internal/buffer/buffer.go | 4 ++++ internal/buffer/settings.go | 2 ++ internal/config/settings.go | 13 +++++++++++++ 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 396c414a..52f69518 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -51,10 +51,9 @@ func InitFlags() { optionFlags = make(map[string]*string) - for k, v := range config.DefaultGlobalSettings() { + for k, v := range config.DefaultAllSettings() { optionFlags[k] = flag.String(k, "", fmt.Sprintf("The %s option. Default value: '%v'.", k, v)) } - optionFlags["filetype"] = flag.String("filetype", "", fmt.Sprintf("The filetype option. Autodetected by default.")) flag.Parse() @@ -69,7 +68,7 @@ func InitFlags() { if *flagOptions { // If -options was passed var keys []string - m := config.DefaultGlobalSettings() + m := config.DefaultAllSettings() for k, _ := range m { keys = append(keys, k) } @@ -154,15 +153,13 @@ func main() { // flag options for k, v := range optionFlags { - if *v != "" && k != "filetype" { - nativeValue, err := config.GetNativeValue(k, config.GlobalSettings[k], *v) + if *v != "" { + nativeValue, err := config.GetNativeValue(k, config.DefaultAllSettings()[k], *v) if err != nil { screen.TermMessage(err) continue } config.GlobalSettings[k] = nativeValue - } else if k == "filetype" && *v != "" { - config.GlobalSettings[k] = *v } } @@ -199,8 +196,10 @@ func main() { action.InitTabs(b) action.InitGlobals() - if _, ok := config.GlobalSettings["filetype"]; ok { - delete(config.GlobalSettings, "filetype") + for _, s := range config.LocalSettings { + if _, ok := config.GlobalSettings[s]; ok { + delete(config.GlobalSettings, s) + } } // Here is the event loop which runs in a separate thread diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index 5e74ac5f..b7583799 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -196,6 +196,10 @@ func NewBuffer(r io.Reader, size int64, path string, startcursor Loc, btype BufT b.EventHandler = NewEventHandler(b.SharedBuffer, b.cursors) } + if b.Settings["readonly"].(bool) { + b.Type.Readonly = true + } + b.Path = path b.AbsPath = absPath diff --git a/internal/buffer/settings.go b/internal/buffer/settings.go index 1d9801ad..6b43bbb7 100644 --- a/internal/buffer/settings.go +++ b/internal/buffer/settings.go @@ -35,6 +35,8 @@ func (b *Buffer) SetOptionNative(option string, nativeValue interface{}) error { } } else if option == "encoding" { b.isModified = true + } else if option == "readonly" { + b.Type.Readonly = nativeValue.(bool) } return nil diff --git a/internal/config/settings.go b/internal/config/settings.go index 45c39634..a775a1c0 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -194,14 +194,27 @@ func DefaultGlobalSettings() map[string]interface{} { return common } +// LocalSettings is a list of the local only settings +var LocalSettings = []string{"filetype", "readonly"} + // DefaultLocalSettings returns the default local settings // Note that filetype is a local only option func DefaultLocalSettings() map[string]interface{} { common := DefaultCommonSettings() common["filetype"] = "unknown" + common["readonly"] = false return common } +func DefaultAllSettings() map[string]interface{} { + global := DefaultGlobalSettings() + local := DefaultLocalSettings() + for k, v := range global { + local[k] = v + } + return local +} + func GetNativeValue(option string, realValue interface{}, value string) (interface{}, error) { var native interface{} kind := reflect.TypeOf(realValue).Kind() From 23a76e1381b8ec12fb49477003e4ed9d3cefb868 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 14 Jul 2019 06:55:15 -0700 Subject: [PATCH 132/231] Add indentchar option --- internal/display/bufwindow.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index ff779a10..685c1a16 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -461,6 +461,19 @@ func (w *BufWindow) displayBuffer() { } } + if r == '\t' { + if s, ok := config.Colorscheme["indent-char"]; ok { + style = s + + indentrunes := []rune(b.Settings["indentchar"].(string)) + // if empty indentchar settings, use space + if indentrunes == nil || len(indentrunes) == 0 { + indentrunes = []rune{' '} + } + r = indentrunes[0] + } + } + if s, ok := config.Colorscheme["color-column"]; ok { if colorcolumn != 0 && vloc.X-w.gutterOffset == colorcolumn { fg, _, _ := s.Decompose() From 576036f251ea1b70975514abb216c0c59b595aca Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 28 Jul 2019 16:28:04 -0700 Subject: [PATCH 133/231] Update ftoptions and statusline plugin configuration options --- cmd/micro/initlua.go | 23 +++++++- internal/config/runtime.go | 2 +- internal/display/statusline.go | 78 ++++++++++++++++++------- runtime/plugins/ftoptions/ftoptions.lua | 16 ++--- 4 files changed, 82 insertions(+), 37 deletions(-) diff --git a/cmd/micro/initlua.go b/cmd/micro/initlua.go index d68e9077..91e56e68 100644 --- a/cmd/micro/initlua.go +++ b/cmd/micro/initlua.go @@ -7,8 +7,10 @@ import ( luar "layeh.com/gopher-luar" "github.com/zyedidia/micro/internal/action" + "github.com/zyedidia/micro/internal/display" ulua "github.com/zyedidia/micro/internal/lua" "github.com/zyedidia/micro/internal/screen" + "github.com/zyedidia/micro/internal/shell" ) func init() { @@ -17,9 +19,12 @@ func init() { } func LuaImport(pkg string) *lua.LTable { - if pkg == "micro" { + switch pkg { + case "micro": return luaImportMicro() - } else { + case "micro/shell": + return luaImportMicroShell() + default: return ulua.Import(pkg) } } @@ -31,7 +36,19 @@ func luaImportMicro() *lua.LTable { ulua.L.SetField(pkg, "TermError", luar.New(ulua.L, screen.TermError)) ulua.L.SetField(pkg, "InfoBar", luar.New(ulua.L, action.GetInfoBar)) ulua.L.SetField(pkg, "Log", luar.New(ulua.L, log.Println)) - ulua.L.SetField(pkg, "TryBindKey", luar.New(ulua.L, action.TryBindKey)) + ulua.L.SetField(pkg, "SetStatusInfoFn", luar.New(ulua.L, display.SetStatusInfoFnLua)) + // ulua.L.SetField(pkg, "TryBindKey", luar.New(ulua.L, action.TryBindKey)) + + return pkg +} + +func luaImportMicroShell() *lua.LTable { + pkg := ulua.L.NewTable() + + ulua.L.SetField(pkg, "ExecCommand", luar.New(ulua.L, shell.ExecCommand)) + ulua.L.SetField(pkg, "RunCommand", luar.New(ulua.L, shell.RunCommand)) + ulua.L.SetField(pkg, "RunBackgroundShell", luar.New(ulua.L, shell.RunBackgroundShell)) + ulua.L.SetField(pkg, "RunInteractiveShell", luar.New(ulua.L, shell.RunInteractiveShell)) return pkg } diff --git a/internal/config/runtime.go b/internal/config/runtime.go index 576c2ed0..236f7758 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -1051,7 +1051,7 @@ func runtimePluginsAutocloseAutocloseLua() (*asset, error) { return a, nil } -var _runtimePluginsFtoptionsFtoptionsLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x51\xb1\x6a\xc3\x30\x10\xdd\xf5\x15\x87\xa6\x04\x4a\x86\x76\xf6\xd0\x2e\x1d\x33\x04\xba\x94\x0e\xaa\x7d\x17\x1f\x95\xef\x84\x75\x6e\xf0\xdf\x17\x29\x4e\x42\x29\x0e\xf4\xa6\xd3\x7b\x4f\xef\xe9\x21\x26\x78\x45\xdb\x27\x63\x95\x8d\x27\xd3\xba\x65\xbf\x85\xa6\x01\xe1\x08\xd6\xa3\x38\x00\x80\xe7\xae\xfb\x2b\x7b\x00\x1b\x27\xdc\x3a\x94\xce\x39\x9a\xa4\x2d\x30\xa8\xbc\x31\x9e\xf6\x09\x65\xf3\xcd\x78\xda\xd6\xfb\x4c\x20\x6a\x6b\x69\xd7\x98\x32\x23\xda\x34\x9e\x8f\xd5\xb8\x2c\x51\xdb\x10\x81\x0c\x1a\x28\x9e\xbb\x97\x89\x76\x07\x34\x63\x39\xe6\x77\x4f\x1c\xd1\xe6\x84\xfe\xc3\x5d\xc2\x8a\xb4\x01\x7f\x54\x0f\x3a\x56\x70\x41\x86\xf0\x85\x45\xef\x7f\x87\x1e\x6e\x0f\xb3\xf0\x99\x4d\x73\x0a\x2d\x96\x8a\x5e\x89\xfc\xb9\x04\xc6\x8c\x37\x6f\xe2\xdc\x5f\xdd\x97\x59\xa8\x34\x5b\xaf\x72\x97\x7c\xbc\xcb\x3e\xad\xb0\x73\x18\xe2\x0a\x25\x3c\xfc\xa3\x93\x5c\x2a\x49\x57\xbf\xef\x27\x00\x00\xff\xff\xe7\xc7\xa0\xb2\x0a\x02\x00\x00" +var _runtimePluginsFtoptionsFtoptionsLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\xcf\xb1\x0e\x82\x40\x0c\x06\xe0\x9d\xa7\x68\x6e\x82\xc4\x49\x37\x12\x16\x07\x57\x06\x7d\x81\x3b\x6c\xe5\xe2\xd1\x5e\xb8\x32\xf0\xf6\x86\x13\x75\x82\xc4\x26\x5d\xfa\x25\xfd\xf3\xd3\xc4\x9d\x7a\x61\x10\x3e\x4f\x44\x38\xb6\x11\xb9\x74\x55\x01\x00\x10\xa4\xb3\x01\x48\xa1\x01\x57\x5f\x7c\xc0\xdb\x1c\xb1\xac\x8a\x8c\x9e\xb2\x34\x60\x1e\x62\x40\xc6\x7c\x5c\x2f\x83\x7d\x22\xf9\x80\x06\xb4\x47\xce\xb2\x8c\xab\xaf\xa8\x6d\x5c\xf2\x4a\xa3\xd6\x25\x95\x14\x6d\x87\xc9\x1c\xc0\x08\x91\x79\xc7\x62\x48\xf8\xfb\x4e\x3e\xf5\xdf\xff\xeb\xac\x14\x67\xed\x85\x77\xf1\xb8\xab\xa7\x0d\x9d\xed\x10\x36\x88\xfd\xf0\x57\x2b\xfe\x94\xe2\x7b\xb1\xec\x2b\x00\x00\xff\xff\x55\x1f\xb6\x5b\x71\x01\x00\x00" func runtimePluginsFtoptionsFtoptionsLuaBytes() ([]byte, error) { return bindataRead( diff --git a/internal/display/statusline.go b/internal/display/statusline.go index 9a92d3cf..98642bf8 100644 --- a/internal/display/statusline.go +++ b/internal/display/statusline.go @@ -6,11 +6,16 @@ import ( "path" "regexp" "strconv" + "strings" "unicode/utf8" + luar "layeh.com/gopher-luar" + runewidth "github.com/mattn/go-runewidth" + lua "github.com/yuin/gopher-lua" "github.com/zyedidia/micro/internal/buffer" "github.com/zyedidia/micro/internal/config" + ulua "github.com/zyedidia/micro/internal/lua" "github.com/zyedidia/micro/internal/screen" "github.com/zyedidia/micro/internal/util" ) @@ -25,31 +30,59 @@ type StatusLine struct { win *BufWindow } +var statusInfo = map[string]func(*buffer.Buffer) string{ + "filename": func(b *buffer.Buffer) string { + if b.Settings["basename"].(bool) { + return path.Base(b.GetName()) + } + return b.GetName() + }, + "line": func(b *buffer.Buffer) string { + return strconv.Itoa(b.GetActiveCursor().Y + 1) + }, + "col": func(b *buffer.Buffer) string { + return strconv.Itoa(b.GetActiveCursor().X + 1) + }, + "modified": func(b *buffer.Buffer) string { + if b.Modified() { + return "+ " + } + return "" + }, +} + +func SetStatusInfoFnLua(s string, fn string) { + luaFn := strings.Split(fn, ".") + plName, plFn := luaFn[0], luaFn[1] + var pl *config.Plugin + for _, p := range config.Plugins { + if p.Name == plName { + pl = p + break + } + } + statusInfo[s] = func(b *buffer.Buffer) string { + if pl == nil { + return "" + } + val, err := pl.Call(plFn, luar.New(ulua.L, b)) + if err == nil { + if v, ok := val.(lua.LString); !ok { + screen.TermMessage(plFn, "should return a string") + return "" + } else { + return string(v) + } + } + return "" + } +} + // TODO: plugin modify status line formatter // NewStatusLine returns a statusline bound to a window func NewStatusLine(win *BufWindow) *StatusLine { s := new(StatusLine) - s.Info = map[string]func(*buffer.Buffer) string{ - "filename": func(b *buffer.Buffer) string { - if b.Settings["basename"].(bool) { - return path.Base(b.GetName()) - } - return b.GetName() - }, - "line": func(b *buffer.Buffer) string { - return strconv.Itoa(b.GetActiveCursor().Y + 1) - }, - "col": func(b *buffer.Buffer) string { - return strconv.Itoa(b.GetActiveCursor().X + 1) - }, - "modified": func(b *buffer.Buffer) string { - if b.Modified() { - return "+ " - } - return "" - }, - } s.win = win return s } @@ -121,7 +154,10 @@ func (s *StatusLine) Display() { } return []byte("null") } else { - return []byte(s.Info[string(name)](s.win.Buf)) + if fn, ok := statusInfo[string(name)]; ok { + return []byte(fn(s.win.Buf)) + } + return []byte{} } } diff --git a/runtime/plugins/ftoptions/ftoptions.lua b/runtime/plugins/ftoptions/ftoptions.lua index 1ffe99cb..7c2d519d 100644 --- a/runtime/plugins/ftoptions/ftoptions.lua +++ b/runtime/plugins/ftoptions/ftoptions.lua @@ -1,23 +1,15 @@ -if GetOption("ftoptions") == nil then - AddOption("ftoptions", true) -end - -function onViewOpen(view) - if not GetOption("ftoptions") then - return - end - - local ft = view.Buf.Settings["filetype"] +function onBufferOpen(b) + local ft = b:FileType() if ft == "go" or ft == "makefile" then - SetOption("tabstospaces", "off") + b:SetOption("tabstospaces", "off") elseif ft == "fish" or ft == "python" or ft == "python2" or ft == "python3" or ft == "yaml" or ft == "nim" then - SetOption("tabstospaces", "on") + b:SetOption("tabstospaces", "on") end end From a47e1f0ca5c4f79e374676ce2973f2af74330080 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 2 Aug 2019 13:32:44 -0700 Subject: [PATCH 134/231] Allow any plugin to be enabled or disabled via settings --- internal/action/command.go | 6 ++++++ internal/config/plugin.go | 26 +++++++++++++++++++++----- internal/display/statusline.go | 2 +- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/internal/action/command.go b/internal/action/command.go index 672a761f..4e9f9d38 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -365,6 +365,12 @@ func SetGlobalOptionNative(option string, nativeValue interface{}) error { } else { screen.Screen.EnableMouse() } + } else { + for _, pl := range config.Plugins { + if option == pl.Name && nativeValue.(bool) && !pl.Loaded { + pl.Load() + } + } } for _, b := range buffer.OpenBuffers { diff --git a/internal/config/plugin.go b/internal/config/plugin.go index 1ffa9ce7..e7976c6a 100644 --- a/internal/config/plugin.go +++ b/internal/config/plugin.go @@ -2,7 +2,6 @@ package config import ( "errors" - "log" lua "github.com/yuin/gopher-lua" ulua "github.com/zyedidia/micro/internal/lua" @@ -21,7 +20,9 @@ func LoadAllPlugins() { func RunPluginFn(fn string, args ...lua.LValue) error { var reterr error for _, p := range Plugins { - log.Println(p.Name, fn) + if !p.IsEnabled() { + continue + } _, err := p.Call(fn, args...) if err != nil && err != ErrNoSuchFunction { reterr = errors.New("Plugin " + p.Name + ": " + err.Error()) @@ -31,15 +32,26 @@ func RunPluginFn(fn string, args ...lua.LValue) error { } type Plugin struct { - Name string // name of plugin - Info RuntimeFile // json file containing info - Srcs []RuntimeFile // lua files + Name string // name of plugin + Info RuntimeFile // json file containing info + Srcs []RuntimeFile // lua files + Loaded bool +} + +func (p *Plugin) IsEnabled() bool { + if v, ok := GlobalSettings[p.Name]; ok { + return v.(bool) + } + return true } var Plugins []*Plugin func (p *Plugin) Load() error { for _, f := range p.Srcs { + if !p.IsEnabled() { + return nil + } dat, err := f.Data() if err != nil { return err @@ -48,6 +60,10 @@ func (p *Plugin) Load() error { if err != nil { return err } + p.Loaded = true + if _, ok := GlobalSettings[p.Name]; !ok { + AddOption(p.Name, true) + } } return nil } diff --git a/internal/display/statusline.go b/internal/display/statusline.go index 98642bf8..e4a6a1de 100644 --- a/internal/display/statusline.go +++ b/internal/display/statusline.go @@ -62,7 +62,7 @@ func SetStatusInfoFnLua(s string, fn string) { } } statusInfo[s] = func(b *buffer.Buffer) string { - if pl == nil { + if pl == nil || !pl.IsEnabled() { return "" } val, err := pl.Call(plFn, luar.New(ulua.L, b)) From e3ae38e54a71d7cb3ae663ac9ca9339c981b6dff Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 2 Aug 2019 14:48:59 -0700 Subject: [PATCH 135/231] Autoclose plugin support --- cmd/micro/initlua.go | 13 + internal/action/bufpane.go | 36 +- internal/buffer/buffer.go | 6 + internal/config/plugin.go | 28 + internal/config/runtime.go | 2 +- internal/lua/lua.go | 24 + internal/util/lua.go | 41 + runtime/plugins/autoclose/autoclose.lua | 1125 +---------------------- 8 files changed, 179 insertions(+), 1096 deletions(-) create mode 100644 internal/util/lua.go diff --git a/cmd/micro/initlua.go b/cmd/micro/initlua.go index 91e56e68..269fbe9d 100644 --- a/cmd/micro/initlua.go +++ b/cmd/micro/initlua.go @@ -11,6 +11,7 @@ import ( ulua "github.com/zyedidia/micro/internal/lua" "github.com/zyedidia/micro/internal/screen" "github.com/zyedidia/micro/internal/shell" + "github.com/zyedidia/micro/internal/util" ) func init() { @@ -24,6 +25,8 @@ func LuaImport(pkg string) *lua.LTable { return luaImportMicro() case "micro/shell": return luaImportMicroShell() + case "micro/util": + return luaImportMicroUtil() default: return ulua.Import(pkg) } @@ -52,3 +55,13 @@ func luaImportMicroShell() *lua.LTable { return pkg } + +func luaImportMicroUtil() *lua.LTable { + pkg := ulua.L.NewTable() + + ulua.L.SetField(pkg, "RuneAt", luar.New(ulua.L, util.LuaRuneAt)) + ulua.L.SetField(pkg, "GetLeadingWhitespace", luar.New(ulua.L, util.LuaGetLeadingWhitespace)) + ulua.L.SetField(pkg, "IsWordChar", luar.New(ulua.L, util.LuaIsWordChar)) + + return pkg +} diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 669e2de4..fcc15bba 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -124,6 +124,27 @@ func NewBufPaneFromBuf(buf *buffer.Buffer) *BufPane { return NewBufPane(buf, w) } +// PluginCB calls all plugin callbacks with a certain name and +// displays an error if there is one and returns the aggregrate +// boolean response +func (h *BufPane) PluginCB(cb string) bool { + b, err := config.RunPluginFnBool(cb, luar.New(ulua.L, h)) + if err != nil { + screen.TermMessage(err) + } + return b +} + +// PluginCBRune is the same as PluginCB but also passes a rune to +// the plugins +func (h *BufPane) PluginCBRune(cb string, r rune) bool { + b, err := config.RunPluginFnBool(cb, luar.New(ulua.L, h), luar.New(ulua.L, string(r))) + if err != nil { + screen.TermMessage(err) + } + return b +} + func (h *BufPane) OpenBuffer(b *buffer.Buffer) { h.Buf.Close() h.Buf = b @@ -236,14 +257,21 @@ func (h *BufPane) DoKeyEvent(e Event) bool { for _, c := range cursors { h.Buf.SetCurCursor(c.Num) h.Cursor = c - if action(h) { + if !h.PluginCB("pre" + estr) { + // canceled by plugin + continue + } + if action(h) && h.PluginCB("on"+estr) { h.Relocate() } } return true } } - if action(h) { + if !h.PluginCB("pre" + estr) { + return false + } + if action(h) && h.PluginCB("on"+estr) { h.Relocate() } return true @@ -277,6 +305,9 @@ func (h *BufPane) DoRuneInsert(r rune) { for _, c := range cursors { // Insert a character h.Buf.SetCurCursor(c.Num) + if !h.PluginCBRune("preRune", r) { + continue + } if c.HasSelection() { c.DeleteSelection() c.ResetSelection() @@ -289,6 +320,7 @@ func (h *BufPane) DoRuneInsert(r rune) { } else { h.Buf.Insert(c.Loc, string(r)) } + h.PluginCBRune("onRune", r) } } diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index b7583799..9082db3b 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -6,6 +6,7 @@ import ( "errors" "io" "io/ioutil" + "log" "os" "path/filepath" "strconv" @@ -293,6 +294,7 @@ func (b *Buffer) SetName(s string) { func (b *Buffer) Insert(start Loc, text string) { if !b.Type.Readonly { + log.Println("INSERT", start, text) b.EventHandler.cursors = b.cursors b.EventHandler.active = b.curCursor b.EventHandler.Insert(start, text) @@ -747,3 +749,7 @@ func ParseCursorLocation(cursorPositions []string) (Loc, error) { return startpos, err } + +func (b *Buffer) Line(i int) string { + return string(b.LineBytes(i)) +} diff --git a/internal/config/plugin.go b/internal/config/plugin.go index e7976c6a..8b9d93e3 100644 --- a/internal/config/plugin.go +++ b/internal/config/plugin.go @@ -17,6 +17,7 @@ func LoadAllPlugins() { } // RunPluginFn runs a given function in all plugins +// returns an error if any of the plugins had an error func RunPluginFn(fn string, args ...lua.LValue) error { var reterr error for _, p := range Plugins { @@ -31,6 +32,33 @@ func RunPluginFn(fn string, args ...lua.LValue) error { return reterr } +// RunPluginFnBool runs a function in all plugins and returns +// false if any one of them returned false +// also returns an error if any of the plugins had an error +func RunPluginFnBool(fn string, args ...lua.LValue) (bool, error) { + var reterr error + retbool := true + for _, p := range Plugins { + if !p.IsEnabled() { + continue + } + val, err := p.Call(fn, args...) + if err == ErrNoSuchFunction { + continue + } + if err != nil { + reterr = errors.New("Plugin " + p.Name + ": " + err.Error()) + continue + } + if v, ok := val.(lua.LBool); !ok { + reterr = errors.New(p.Name + "." + fn + " should return a boolean") + } else { + retbool = retbool && bool(v) + } + } + return retbool, reterr +} + type Plugin struct { Name string // name of plugin Info RuntimeFile // json file containing info diff --git a/internal/config/runtime.go b/internal/config/runtime.go index 236f7758..8ed43a0a 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -1031,7 +1031,7 @@ func runtimeHelpTutorialMd() (*asset, error) { return a, nil } -var _runtimePluginsAutocloseAutocloseLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\xff\x77\xda\x3a\xf2\xe8\xef\xfc\x15\x73\xd3\xed\x01\x6e\x6c\x8a\x81\xdb\x92\xdc\xd2\x77\x28\x21\x2d\xe7\xa5\x21\x0f\xc8\xed\x76\xb3\xb9\x5d\x63\x8b\xe0\xd6\xd8\xac\x2d\xd2\xf4\xf5\x74\xff\xf6\x77\x34\x92\x6c\xc9\x5f\x80\xf4\xdb\xe9\xdb\xcf\xcd\x0f\xc4\x96\xa5\xd1\x7c\xd3\x68\x34\x1a\xcb\xa6\x09\x7f\x1b\xb9\xc7\xb0\xa1\x8b\x6e\xc3\xdf\xd8\x60\x3d\x39\x82\x56\xb3\x79\x64\x36\x3b\x66\xb3\x0d\x56\xf7\xd8\x6a\x1e\x37\xdb\xff\x80\xb5\x1d\x53\x1b\xfe\x56\x31\xcd\x8a\x69\xc2\x45\x14\xde\x7a\x2e\x89\xe1\x72\x76\x6a\x76\xc1\xfe\x60\x47\x04\x62\x1a\x79\xc1\x0d\x2c\x36\x81\x43\xbd\x30\x88\xc1\x5b\xad\x7d\xb2\x22\x01\x25\x2e\x78\x01\xac\x37\x11\x01\x7f\x63\x1f\x33\x08\xbf\x62\x9f\x3e\x09\x6a\x71\x3d\xbd\x8f\x37\xf3\x5a\x6c\x80\x67\xc0\x3b\xa5\x34\x22\xb7\x24\x8a\x89\x56\xd3\x59\xda\x51\x6d\x13\x78\x4e\xe8\x12\xa5\x58\x94\x14\x00\xb9\x21\x81\x80\x1e\x6f\xe6\x6f\x7d\x12\x28\xcf\x16\x5e\xe0\xd6\x62\x1a\x19\x10\x91\x1b\x72\x67\x80\x17\x78\xd4\x80\xb5\x6f\x7b\x6a\xb5\x95\x4d\x9d\x65\xae\x9e\xda\x47\xbe\x86\xed\xfb\x6a\x05\x44\x41\x79\x1c\x91\xb5\x6f\x80\xef\xad\x38\x1c\x56\x73\xb4\xc0\xaa\xae\x4d\x6d\x14\x49\xcd\x09\x03\x6a\x7b\x01\xe3\x2d\x5d\x12\xf0\xc3\x0f\x24\x7a\x6a\x3e\xdb\xac\xd7\x24\x02\xc7\x8e\x09\xac\xec\xf5\xda\x0b\x6e\xe2\x3a\x78\x31\xf8\xa1\xed\x12\xd7\x60\x75\x63\xc2\x00\xda\xae\xeb\x31\x81\xd8\xbe\x22\x1b\x26\x30\xfb\xd6\xf6\x7c\x7b\xee\x13\x45\x22\x08\x55\xe3\x34\xf6\xc7\x4b\x58\x61\xdf\x57\xc1\xcc\xc9\xd2\xbe\x25\x60\xc7\xac\x3b\x2f\x82\x20\x0c\x34\x9d\x70\xc2\x4d\x40\x49\xb4\xb6\x23\x1a\xc3\x07\x8f\x2e\x91\x04\x72\xe7\x90\x35\x03\xc0\x00\xd2\xa5\x4d\x45\x1b\x26\x54\xdb\xa1\x24\xe2\xf8\x6d\x62\x54\x9c\x98\x12\xdb\x85\x70\x01\xf3\x8f\x94\xc4\xb0\x08\x23\xc6\x55\xd8\x04\x1e\x8d\x1b\x95\x8a\x69\x5e\x5d\x55\x06\xe1\xfa\x63\xe4\xdd\x2c\x29\xd4\x9c\x3a\xd3\xe0\xc7\x66\xab\xd9\x7c\x62\xc0\xff\xfe\xe8\x13\x98\xae\x3c\xba\xac\x30\xcc\xb1\x4e\x0c\x11\x89\x49\x74\x4b\xdc\x46\xa5\x32\x08\x03\x1a\x79\xf3\x0d\x0d\xa3\xf8\xb8\x02\x00\xd0\xf7\xbd\x55\x78\x0b\x53\x4a\xd6\x76\x50\xa9\x4c\x88\xeb\xc5\xbc\x8a\x17\x06\x60\x07\x2e\x43\x8c\x29\x74\x1c\x6e\x22\x87\x60\xc9\xdc\x0b\xec\xe8\x23\xc3\x6d\x15\x1b\x9c\xd0\x30\xc2\xff\xe1\x86\x56\x56\xa1\xeb\x2d\x3c\xc7\x66\x00\x0c\x24\x6d\x4d\xa2\x95\x47\xd9\xc0\x58\xf3\xa1\xe4\x72\x3e\x30\xee\x2c\x42\xdf\x0f\x3f\x30\x71\x3b\x61\xc0\x45\xc7\xf9\xb1\x22\xf4\xb8\x82\x28\xfe\x0a\x3a\x56\x31\x63\x8f\x40\x87\xe9\x3f\xac\x36\x31\x85\x88\x30\xbd\x41\x98\xf6\x3c\xbc\x65\x8f\x24\x97\x82\x90\x7a\x0e\x31\x10\x18\x00\x5d\x32\xbd\xf1\x62\xca\xc0\xa8\x9d\x06\x6e\x06\x23\xd7\x8b\x1d\xdf\xf6\x56\x24\x6a\x94\x20\xe2\x05\x2a\x33\x24\x22\xeb\x28\x74\x37\x0e\x29\xc2\x45\xe0\x20\x30\xfa\x22\x5c\x80\x53\x29\x20\xb9\xa1\xb3\x61\x56\xc7\x96\xf2\x7a\x14\x46\x10\xd2\x25\x89\x60\x65\x53\x12\x79\xb6\x1f\xa7\x6c\x4f\x94\x52\x25\x43\x12\x77\x4e\x3c\x6c\xc7\x9e\x07\xf6\x8a\x30\x9c\x90\x84\x0d\x5d\x86\x4c\xdb\xd3\x47\x28\x02\x8f\xc6\x0c\xe7\x44\xa1\x60\x65\x7f\x84\xb9\x44\x0c\xf5\x99\x86\x40\x02\x37\x8c\x62\xc2\x34\x64\x1d\x85\xab\x90\x12\xe0\xfc\xa1\x31\xb8\x24\xf2\x6e\x89\x0b\x8b\x28\x5c\x71\x5e\xc4\xe1\x82\xe2\x58\x92\xda\xc4\x81\xc5\x6b\xe2\x30\xa5\x82\x75\xe4\x31\x55\x8b\x98\x3a\x05\x5c\xb1\xe2\x18\x69\xa8\xcc\x5e\x8e\xa6\x30\x1d\x9f\xce\x5e\xf7\x27\x43\x18\x4d\xe1\x62\x32\xfe\x63\x74\x32\x3c\x81\xe7\x6f\x60\xf6\x72\x08\x83\xf1\xc5\x9b\xc9\xe8\xc5\xcb\x19\xbc\x1c\x9f\x9d\x0c\x27\x53\xe8\x9f\x9f\xc0\x60\x7c\x3e\x9b\x8c\x9e\x5f\xce\xc6\x93\x29\x1c\xf4\xa7\x30\x9a\x1e\x54\xd8\x83\xfe\xf9\x1b\x18\xfe\xfd\x62\x32\x9c\x4e\x61\x3c\x81\xd1\xab\x8b\xb3\xd1\xf0\x04\x5e\xf7\x27\x93\xfe\xf9\x6c\x34\x9c\x1a\x30\x3a\x1f\x9c\x5d\x9e\x8c\xce\x5f\x18\xf0\xfc\x72\x06\xe7\xe3\x19\x9c\x8d\x5e\x8d\x66\xc3\x13\x98\x8d\x0d\xd6\x69\x25\xdf\x0c\xc6\xa7\xf0\x6a\x38\x19\xbc\xec\x9f\xcf\xfa\xcf\x47\x67\xa3\xd9\x1b\x44\xe4\x74\x34\x3b\x67\x7d\x9d\x8e\x27\xd0\x87\x8b\xfe\x64\x36\x1a\x5c\x9e\xf5\x27\x70\x71\x39\xb9\x18\x4f\x87\xd0\x9f\x0c\x2b\x27\xa3\xe9\xe0\xac\x3f\x7a\x35\x3c\x69\xc0\xe8\x1c\xce\xc7\x30\xfc\x63\x78\x3e\x83\xe9\xcb\xfe\xd9\x59\x86\xca\xf1\xeb\xf3\xe1\x84\xa1\xae\x91\xf8\x7c\x08\x67\xa3\xfe\xf3\xb3\x61\x05\x3b\x3a\x7f\x03\x27\xa3\xc9\x70\x30\x63\xd4\xa4\x57\x83\xd1\xc9\xf0\x7c\xd6\x3f\x33\x60\x7a\x31\x1c\x8c\xd8\xc5\xf0\xef\xc3\x57\x17\x67\xfd\xc9\x1b\x43\xc0\x9c\x0e\xff\xcf\xe5\xf0\x7c\x36\xea\x9f\x55\x4e\xfa\xaf\xfa\x2f\x86\x53\xa8\xed\xe0\xc8\xc5\x64\x3c\xb8\x9c\x0c\x5f\x31\x94\xc7\xa7\x30\xbd\x7c\x3e\x9d\x8d\x66\x97\xb3\x21\xbc\x18\x8f\x4f\x18\x9f\x2b\xd3\xe1\xe4\x8f\xd1\x60\x38\xfd\x1d\xce\xc6\x53\x64\xd6\xe5\x74\x68\xc0\x49\x7f\xd6\xc7\x8e\x2f\x26\xe3\xd3\xd1\x6c\xfa\x3b\xbb\x7e\x7e\x39\x1d\x21\xcf\x46\xe7\xb3\xe1\x64\x72\x79\x31\x1b\x8d\xcf\xeb\xf0\x72\xfc\x7a\xf8\xc7\x70\x52\x19\xf4\x2f\xa7\xc3\x13\x64\xee\xf8\x1c\x49\x9d\xbd\x1c\x8e\x27\x6f\x18\x50\xc6\x03\xe4\xbd\x01\xaf\x5f\x0e\x67\x2f\x87\x13\xc6\x4f\xe4\x54\x9f\xb1\x60\x3a\x9b\x8c\x06\x33\xa5\x5a\x65\x3c\x81\xd9\x78\x32\x53\x68\x84\xf3\xe1\x8b\xb3\xd1\x8b\xe1\xf9\x60\xc8\xb0\x19\x33\x28\xaf\x47\xd3\x61\x1d\xfa\x93\xd1\x94\x55\x18\xf1\x6e\x5f\xf7\xdf\xc0\xf8\x12\x49\x66\x22\xba\x9c\x0e\x2b\x78\xa9\x28\xac\x81\x82\x84\xd1\x29\xf4\x4f\xfe\x18\x31\xb4\x45\xe5\x8b\xf1\x74\x3a\x12\x6a\x82\x2c\x1b\xbc\x04\xce\xee\x46\xc5\x34\xaf\xaf\x2b\x38\x4f\x3d\x3f\x3f\xe5\xa3\x68\x72\x3a\x80\xf6\xe3\xd6\x91\x98\xc0\x2e\x67\xa7\x5d\x33\x74\x28\xa1\x31\xf4\xe0\xd7\x1a\x2f\x60\x53\x0f\xd4\x93\xe7\x78\x0b\xd0\xe3\x77\x16\x3c\xe2\x17\x2d\x79\xd1\x96\x17\x9d\xa4\x89\xc5\xc7\x65\x0f\x1e\xde\x35\x9b\xe6\x93\xd3\xe4\x41\x2b\x7d\x30\x68\x99\x27\xa7\xbc\x94\xda\x9e\x9f\x54\x69\xa7\x55\x86\x4d\x78\x78\xd7\x6f\x9a\xcf\x95\x7a\xf0\x88\x3d\xb0\xcc\xe1\x00\x5a\x35\xa5\xb8\x0e\x8f\x18\x08\xfd\xef\xe1\xdd\xf0\x04\x1e\xde\x75\x9b\xe6\x51\x0e\xc4\xd0\x1c\x9e\x66\x40\x24\x38\x74\x52\x1c\x4e\x19\x0e\x47\x88\x43\xb6\x3f\xf6\xd4\x32\x4f\xdb\xd0\xde\x03\x91\xd3\x0e\x47\xa4\x5b\xda\x29\xde\xf2\x4e\xbb\xac\x3f\x26\xa3\x8a\x1f\x3a\xb6\x8f\xb3\x3d\x47\x88\x3b\x96\x0d\x56\x20\x9e\x09\xf1\xa4\xcf\x58\x81\x78\xe6\x6e\x56\x6b\xed\x19\x2b\x10\xcf\x98\xa3\xa7\x3d\x63\x05\xf2\x59\x18\xad\x6c\xaa\x3e\xc3\x02\xf1\xd4\x27\x01\x68\x2d\x7d\x12\xc8\x47\xcc\x41\xd2\x1e\xb1\x02\xf1\x30\x22\x6b\xbd\x5d\x44\x24\x32\xf1\x66\xae\x3f\x8a\x37\x73\xf1\x88\xfb\x76\xca\x23\x2c\x40\xbd\x8e\x08\xdd\x44\x41\xcc\xe7\x9d\xcd\x6a\x4e\xa2\xd4\x35\xc2\x09\x66\xfe\x11\x9f\x65\x3c\x2a\xb0\x29\xe7\xa8\x87\x9e\x0b\xfa\x85\x7e\x1c\x82\x1b\x6e\xe6\x3e\x89\x99\x07\x67\xe7\xda\xdc\xda\xbe\xe7\xda\x34\x94\xc4\x48\xbf\x2f\xf1\xc0\x79\xb7\xe8\x6d\xd7\x71\x5e\x62\x60\xa3\x1b\x9c\x7e\xc1\x25\x0b\x7b\xe3\xd3\x18\x1f\x78\xd0\x03\x8f\xcd\x78\x56\x25\x57\xd1\x59\x12\xe7\xbd\x17\xdc\xf0\x8a\x0b\xa0\x1f\xd7\xcc\xd9\x87\xff\xf4\xe0\x80\xd3\x7f\xc0\x48\x0a\x2a\x52\xb3\x48\x14\x85\x51\xed\x60\x6e\xbb\x29\x90\x07\x16\x9b\x5a\xab\x1a\x66\x55\xa8\x89\x45\x09\xb9\x5b\x13\x87\x32\xb7\xf8\x26\xa4\x70\xd0\x68\xc8\x4e\x1a\x0d\x38\xa8\x1f\x70\xe4\x49\xe0\x6a\x28\x78\x1c\x05\xce\xe5\x7d\x50\x68\x15\xa2\x20\xa4\x54\x82\x82\x97\x43\x01\x2f\x84\x9e\x43\x0f\xa5\x26\x38\x2c\x39\xe7\x12\xca\xa6\xf9\x80\x08\xb9\x07\x84\x30\x57\x86\x79\xc6\x89\xf0\x0c\x98\xdb\x4c\x1d\xc2\x20\x35\x80\xa2\xb9\x10\x2b\x6f\x0d\x96\xa4\xd9\x81\x67\xd0\x44\x3f\xcb\x81\xa7\x3d\xb0\x5a\x4f\x74\x92\x13\x43\x97\x94\x70\x5d\x94\x22\x25\x7e\x4c\x38\x98\x1e\x58\x47\x9d\x14\x52\xab\xd5\x2e\x86\xd4\x4a\x4a\x04\xb9\x2d\x95\x5e\x38\x04\x4b\xd0\x2c\x30\x0c\x42\xca\xea\x68\xb0\x14\x61\x70\xf5\x15\x12\xe7\x1c\xb2\x99\x8b\x4d\xec\xc8\xff\x28\x18\xac\x31\xb9\x90\x1f\x2d\xb5\x47\xa7\x05\x4f\xc1\x6a\x75\x99\xe6\x3a\x2d\x78\x06\xd6\x91\x55\xda\xff\x28\x40\x48\xd9\x61\x54\xd6\xb3\xe0\x5e\x2b\xcf\xbd\x56\x4b\xe5\x5e\xfb\xa8\x98\x7b\xed\x3d\xb8\x97\xa9\xd1\xce\xd4\x68\x15\xf2\x17\x3d\x5b\xca\x6a\xff\x48\x4e\x43\x2f\x25\xbc\xc6\xf9\xfe\xb8\xa9\xf2\xbd\xfe\x35\x8c\x97\xdc\x65\x9d\xb4\x9f\xa8\x9d\xa8\xc2\xfd\xed\xe8\x5b\x74\xf2\x1d\x75\x26\xc7\xc3\xb6\xc6\xc3\xb6\xd2\x73\xfb\xbb\x68\x6b\xbb\x40\x5b\x3b\x8a\xd5\x68\x75\x3a\xc5\xda\xda\xf9\x26\xda\x9a\xa9\xd1\xc9\xd4\x68\xef\xd0\x67\x79\xd5\xf9\xf1\x9a\x2d\x98\x24\x94\xae\xd3\xf9\x2e\x9a\xdd\xe9\x94\x69\x76\xa7\xfd\x97\x66\xef\xdb\x73\x47\xeb\xb9\xa3\xf4\xdc\xf9\x2e\x63\xaa\x93\x8e\xa9\xac\x7f\xb1\x1d\x20\x03\x86\x00\x4b\xfd\x42\x25\xa2\xe6\x05\x89\x87\xc7\xd5\xbb\xc8\xa9\x63\x6e\x6e\x2d\xce\xfb\x72\xf7\x76\xd1\x98\x2f\xf2\xde\xb8\xc5\xb8\xaf\xed\x45\x31\xab\xec\x86\xb0\x8e\xbc\x80\xd6\xaa\x07\x55\x83\x86\xbc\x5d\xed\x7d\xdd\xd0\xee\x6f\xf1\xbe\x9e\x78\x63\xb0\xdb\xe1\xf3\x49\xf0\x05\xae\x9e\xe2\x67\xad\x43\xb6\x16\xb4\x94\x12\xee\x58\xf5\x40\x44\xa8\xd3\x07\x3e\x09\x6e\xe8\x12\x7a\xd0\xe4\x00\x3e\x2c\x3d\x9f\x20\x80\xa7\x3d\xd1\xca\x0d\x53\x3b\x25\x6b\x8b\x8b\x43\x48\xbd\x27\xde\x29\xfb\x3d\xd4\x1d\x6a\x66\xcd\xd6\x61\x9c\xc1\x54\x28\x0b\x07\x94\x88\x5d\x89\xb6\xbb\x24\xa0\x9e\x63\xfb\xfe\x47\xc6\x98\x74\x4d\x21\xc2\xad\x3c\xc0\xe8\xa1\x81\x78\x87\xf1\xc4\x6c\xd0\x95\xc1\xcb\x86\x5b\x8b\x94\x84\xc1\x4c\x23\xec\x59\x55\xd1\xdc\xfe\x77\xd0\x83\x77\x6c\xe8\x98\xd6\x37\xe2\xb7\x69\x42\x18\xf8\x1f\x21\x26\x14\x7c\xa6\x8a\xb8\xaa\x78\x07\x1e\x73\x83\x6f\x6c\xea\xdd\x12\xb5\x35\xf4\xa0\xe6\xb1\x59\xaa\x29\x08\x67\x97\x75\xd6\x44\xd9\x7f\x48\xeb\xc7\xd4\x8e\xe8\x80\xad\x2e\x93\x76\x75\x6c\x88\xbd\xf8\x70\xc8\xa7\x2a\xa5\x05\x09\xdc\x81\x0c\x16\xd4\xde\x29\x2d\xde\xc9\x16\xef\xb0\x85\x44\xde\xb1\x83\x2a\x05\x8c\x9a\x63\x67\x30\x27\x8b\x30\x22\x0c\xce\x2f\x72\x74\xa5\x58\x3c\x4b\xe0\x6b\xa3\x4b\xe8\xc2\xc1\x81\xae\x22\xa6\xc9\x0d\x58\xb8\x58\xc4\x84\xc6\x4c\x0d\xd6\x76\x1c\xeb\xea\x90\xa5\xf6\xf9\x47\x4a\x0c\x12\xb8\xec\x3f\x13\x8a\xc1\xe5\xfe\x85\xca\xad\x9a\x4e\xf9\xbc\xa7\x10\x94\xb3\x9c\x09\x0e\x7c\x2c\x14\x1b\xca\xdd\x43\xa5\xb8\xdf\x42\xe6\x09\xe8\x69\x9f\x60\x2a\xa3\x92\xfd\xcd\x23\x62\xbf\xd7\x30\xd1\x30\xca\x48\x48\x74\xc7\xfa\xd0\xa8\x41\x04\x0f\x2d\x7d\x61\x99\xaa\xcb\x53\x10\x11\x23\x6c\x28\x11\x62\x6a\xd4\x84\x1c\x13\x84\xc0\xe5\x0e\x56\x22\x37\xd9\xae\x2e\x0d\xc2\xd5\x15\x9f\x0c\xd6\xbe\xed\xe4\x47\x78\xba\x26\xb4\xe5\xa6\x11\x50\x7b\xee\x93\xa2\x61\x2e\x81\xb0\x1e\x45\xe5\x6f\x30\x31\xec\x30\xe5\xa2\xd3\xaf\x5c\xb9\x4b\x74\x11\x0d\x24\xf0\x7e\xcb\xf7\x14\x0b\x6c\x5c\x86\x84\xec\xe6\xdb\xcc\x2c\x89\x52\x2b\x65\x01\xf9\x10\x53\x66\x8c\x0e\x0e\xf6\x19\x91\x69\x4c\xa6\xb7\x65\x4a\x01\x2d\xbe\x20\x74\x6a\x1d\xf2\x1f\x38\x54\xa0\x98\xda\x0a\x3c\x41\x46\x5c\x34\x1a\x20\x59\x70\xe5\x5c\xa3\x83\x54\x2f\x1e\xb3\x3a\x69\x59\xad\xe6\xe0\xb8\x06\xe3\x1c\x24\x67\x32\xc5\x70\xf1\x88\x98\x98\xc9\x3c\x0a\xef\x83\xf0\x43\x0c\xf6\x3c\xdc\x50\x10\x9b\xbe\x10\xe3\x86\x33\xdf\x12\x75\xc2\xe0\x96\x44\x31\x9b\x19\x8b\x74\x9b\x83\x93\xfc\x17\x78\x28\x92\x67\x1c\x61\xb7\x6f\x7d\xe7\xed\xc6\x49\x46\x57\x21\x6a\x3c\xfe\xf7\xcd\x50\xe3\xe0\xf6\x40\x6d\xe3\xbc\xf5\x05\x6a\x22\xe6\x5d\x84\x9d\xd8\x3c\xd7\x9d\x00\x0a\xf1\x66\xbd\x0e\x23\x2a\x76\xf0\x8b\x87\x3f\x6f\xf8\x4d\xdc\xc1\x9d\xa3\x1e\xfb\xfa\x3a\x27\xae\x74\x60\x71\x4d\xcc\x0e\xad\x7b\x0e\xb7\x67\xd0\xd4\xe6\xbe\x5c\x7c\x4e\x1b\x5e\xbc\x1d\x0f\x85\xb5\xba\x4a\x50\xed\xc8\x52\xa1\xe8\xe3\x24\x3b\x0d\x95\x42\xd7\xe6\xc6\xdd\x63\x7e\xdb\x00\xde\x7f\xf4\xe7\xf1\xdc\x36\x8e\x4d\x13\x96\x94\xae\x8f\x1f\x3d\x22\x41\xe3\x83\xf7\xde\x5b\x13\xd7\xb3\x1b\x61\x74\xf3\x88\xdd\x3d\xba\xa4\x8b\xae\x52\xc9\x25\xb7\xc4\x0f\xd7\x24\x6a\x38\x61\x14\x06\xb6\x6f\xcf\xe3\x86\x13\xae\x1e\xb1\xd1\xf3\x68\x43\x17\x66\xd7\x4c\xc7\x8d\xb9\xa1\x9e\xef\xd1\x8f\x65\x61\xe9\x34\x31\x44\xe8\xa7\x1c\x86\x4f\x7b\xd0\xbc\x7b\x72\xca\xa7\x5c\x81\xb5\xd6\x40\x9b\xe4\x6b\x99\x66\xa7\x99\x25\x34\xef\x9d\x4d\xbf\x4d\x36\x6b\xdf\x0d\x9a\x70\x08\x2b\x9b\x2e\x1b\x0b\x3f\x0c\x13\xa0\xf0\x08\x9a\x77\x9d\x66\xfd\xf7\x82\x86\x16\x36\xec\xb2\x86\x49\xf5\x87\xd9\xea\x2a\xa2\xd8\x9b\xc1\xdb\x8a\x2a\x24\x70\x7f\x2f\xc1\xf9\xf4\x74\x27\xd2\x43\xd6\x77\x19\xd6\x56\xb3\xb9\x1b\xef\x72\x8a\xf3\xa4\xa4\x10\x5a\x5f\x43\x39\xff\xd7\xda\xcd\x00\xab\x59\xca\x02\xac\xd4\x93\xaa\x51\x80\x61\x3b\x45\xb0\x18\x3b\x2c\xe5\x7f\x3d\x95\x83\x2a\x0b\x8a\x28\xff\x4e\x70\xad\xef\x04\xb7\x89\x9a\xc4\xe0\xb2\x8a\xbf\xe7\xc2\x17\x65\xd2\xe1\xff\xda\x39\x21\xe1\x5c\x00\xd5\x4b\x21\x27\xc7\x0e\x82\x90\x2d\x83\xe0\x26\x22\x36\xc5\x6c\x0b\x3b\x80\xcb\x43\x2e\xbb\x5f\xaa\xdc\xa0\x88\x15\xcb\xd2\x5b\xd0\xb7\x8f\x19\x01\xad\x3f\x1f\x6b\x85\x56\x0b\x0b\xad\x96\x5e\xda\xe5\xa5\x5d\x09\x41\xc9\x12\xab\x28\xd7\xd0\x4b\xcc\x08\x4f\xd0\x62\x8b\x5b\x03\xcd\xef\xdb\xc4\xf6\x2a\x9b\x58\xa0\x2e\x6e\xbd\x44\xfb\x3c\x78\x06\xef\x34\xf3\x92\xdd\xd1\x59\xaa\xeb\x2b\x6f\x91\xf4\xa0\xab\x68\x89\x41\xa7\x91\xa1\x63\xc4\x27\x00\x90\x6e\x9c\xf2\x3c\xb9\x30\xad\x43\x6c\x5d\xcf\x07\x99\x04\x32\x6f\xb9\x69\x4f\x12\xf0\x68\x64\x78\x86\x57\x37\xa0\x99\xc1\x47\xea\xce\x03\x67\x59\x34\x01\x4b\xb6\xaa\xa4\xc5\x6c\x19\xc6\x03\x66\x90\xb2\x1a\x67\x35\x67\x59\x57\x1d\xf7\xa4\x76\xab\x68\xb4\xce\x51\xbf\xe6\xc2\xf4\x88\xf6\x86\x65\xe4\x63\xc2\xa1\x4b\x9a\x06\xfb\x95\x15\x9b\x26\x33\xcd\xbc\xad\xc9\x46\x48\xd2\x22\x45\x08\x5b\xfd\x2a\xb5\x8b\x6b\xba\x95\x5d\x5a\x24\x18\xb6\x77\x60\x88\xbf\x2d\x0d\xcf\xf6\x16\x3c\xf1\xb7\xa5\x60\x3b\x54\xb1\xe5\xc0\xf6\x41\xdc\x6a\x49\xcc\x33\x94\xb4\x4a\x29\xe9\xec\x45\x09\xfe\xb6\x35\x7a\x3a\x3b\xe9\xc1\xdf\xb6\x42\xd5\x69\x09\x55\x1c\xfa\x5e\x04\x76\x33\x04\x26\x14\xb7\x32\x14\xb7\x0b\x1d\x14\x01\xd5\xd0\x32\x45\x71\xb0\x1f\x5a\xda\x70\x97\x23\x46\xba\x32\x13\x11\x5c\xb5\x03\xf0\x28\x89\x6c\x1a\x46\xcc\xc5\x73\x96\x7a\xd8\x95\xdc\x31\xc7\x7a\x2e\x7c\x58\x0c\x1b\xd1\x58\x6c\xbb\x07\x94\x44\xb7\xb6\x5f\xe4\xb2\xc8\xd4\x54\x86\x49\x92\x9c\xca\xd0\x16\x37\x90\x0c\x3c\x59\x90\x98\xa0\x54\x60\x6f\xf3\x2b\x4d\x11\x98\xc0\x11\xcb\x1c\x33\x85\x13\xa9\xad\x7b\xef\xad\xeb\x6a\xf0\x84\x15\xf0\xe1\xaa\x40\x4d\x2e\x0f\xf9\x73\x35\x36\x9b\x7a\xd3\x6f\x31\xdb\x13\x43\x75\xfa\x43\x1e\xe8\x12\x34\x48\x58\xca\x34\xb2\x26\x36\xd5\x3c\x5f\xd5\x2e\xea\x01\x16\xc5\xaa\xaa\x0d\x94\xee\x99\xce\xa4\x77\x87\x19\x9f\x5a\x5f\x2a\xec\x63\x5e\xa5\xf9\x43\x64\x34\x0a\x0e\x15\x4b\xce\x95\x96\x7a\x3a\x27\x12\x89\x55\x32\x1c\xf1\xed\x98\xaa\xa0\x94\x4d\x75\xc1\x32\xdf\x73\x88\x62\xd6\x91\x85\x06\x6b\x56\xcf\xce\xbf\x58\x55\x04\x85\x0c\x84\x9c\x28\xbf\x32\x73\x26\x1a\x37\xf7\x82\x98\xd8\x91\xb3\xac\xc5\x61\x44\x89\x3b\xb3\xe7\x3e\x31\x98\x5e\xaf\x0c\x70\xc2\xd5\x5a\x5d\x3a\x2d\x89\xed\x1a\x80\x59\x3a\x3d\xb0\x0c\x78\xa0\xb4\x51\xaa\xad\x3c\x57\x77\x29\x6a\xac\x21\x1c\x62\xcb\xfa\xa3\x56\xe2\x88\xe3\xee\x5b\xb8\x5a\xeb\x66\x87\xaf\x96\x6a\xd8\x8d\x89\x7d\xd6\xe1\x19\xe4\x56\x4a\x4c\x3b\xd3\xee\xaf\x68\xc8\xf7\x39\x6a\x2b\xcf\xad\x5f\xc3\x33\x24\x21\x1f\xea\x63\x7f\x82\x80\x95\xa7\x6b\x8d\x36\x19\xca\x3f\xc4\xbc\xa0\x6e\x46\xe3\xf6\x23\x19\x32\xf1\xc3\x6d\x64\x20\xdd\xd7\x4c\x69\xf2\x84\x08\x51\xd3\x68\x43\x0c\xd0\x5b\x24\xd3\x7a\x19\x5c\x44\xe8\x5e\x70\xb1\x45\xde\x5d\x90\xb6\xc3\x96\x85\x52\xc5\x32\x1a\xe6\xf8\x76\x1c\xbf\xb2\xa9\xb3\x7c\x41\x02\x6e\x2d\x6b\x58\x96\xa4\xd4\x83\x36\x6d\xb0\x91\xf8\xe9\xb3\x52\x18\xd9\xc1\x4d\xbe\xd4\xbb\x09\xc2\x08\x1d\xb5\x04\x01\xa5\x7a\x41\xf9\xc2\x8b\x62\xea\x13\xca\x7c\xca\x1e\xd2\xa8\x39\x2b\x98\xac\x9f\x34\x53\x3b\xa2\xc2\x34\x08\xc3\x8c\xb8\xd7\xd5\x1a\xcc\x08\xe2\x2d\xa6\xdc\x18\xf0\xd6\x60\xfe\xab\xc7\x66\x07\x55\x69\xd1\x56\xf6\xd2\x04\xe0\x64\x08\x08\x52\xd8\x0c\xc1\x6e\x91\x2b\x79\xcd\x95\xdb\xba\x07\x0f\x0f\x8a\xd5\x3a\xe1\x48\x42\x9b\xaa\xd9\x49\x73\xb3\xa4\x39\xc6\x36\x1b\xcc\x1c\x44\x14\x17\x01\x22\xb2\x24\xa7\x46\xa7\x5e\xcf\xb5\x91\xbc\xde\xde\xe3\x9f\x65\x08\x73\xf2\x55\xc1\x14\xd6\x83\x24\x64\x54\xfd\xe5\x97\x5f\xaa\x79\x34\x0a\x47\x2e\xa0\x0d\x96\x62\xcd\x61\x08\x05\xa3\x58\xc5\xba\x7a\x5d\x2d\xc6\x46\xdf\x0e\x28\xed\x5e\x10\xc7\x39\x54\x4a\xd6\x97\x30\xbd\x94\x5a\x0e\x2c\x22\xab\xf0\x96\x70\x60\x75\xc0\xf0\xff\x2a\xbc\x65\x2e\x48\xd5\xac\xee\x46\x82\x8f\x36\x03\x3e\x15\x40\xcb\xe2\xf6\x39\x8f\x1c\x28\x5a\x91\x8e\x40\x0d\xfd\x2c\xd3\xd5\x9d\x5d\x2e\x80\xfb\x0d\x88\xaa\xcd\x25\xc5\x68\x7d\x68\x1f\xe3\xfb\x05\x24\x26\x01\x8d\xf1\xcd\x10\xae\x59\x71\x03\x6a\xe3\xf3\xb3\x37\xd0\x9f\x0e\x46\xa3\x3c\xde\xc5\x3c\x78\xfc\x9b\x01\x47\xcd\xcf\xc8\xc6\x3e\x98\xf0\x8f\x3d\xdb\x1d\x3d\x31\xc0\x6a\xb5\x78\x43\x1b\x4c\xf8\xbf\xe5\x7a\xe6\x28\xd8\x3b\x39\xec\xf1\xfd\x81\xd0\x57\x76\x6d\x1a\x7b\xe2\xd0\x34\xa0\x6d\x15\x48\xa8\x48\xe5\xac\xd6\x93\x7a\x39\x86\xae\x82\xa1\x9b\xc3\xd0\xf5\x6e\xf0\xd5\x9b\xfd\xb0\xea\x74\x0d\xf8\xed\x09\x67\x4c\x13\x4c\x38\x2a\xef\xf6\x46\xe9\xf6\x26\xd7\x2d\xe6\x0e\xe0\x76\x8c\xb2\xa1\x25\xc2\xda\xf1\xda\x76\xc8\xbe\x18\x59\x06\x74\x77\xb1\x29\xad\xdc\xd9\x87\xab\x49\xf5\x76\xdb\x00\xab\xdd\xda\x1f\x7c\xbb\x63\x80\xf5\xdb\xd1\xfe\x0d\x1e\x5b\x8c\x9f\xf7\x68\xf1\xdb\x13\xd6\xa4\x6b\x1d\xed\x4f\x45\xb7\xd5\x6c\x1b\xd0\x6d\xdd\x83\xf0\x6e\x8b\x51\xd2\x6d\xb5\xf7\x67\x6d\xb7\xd5\x69\xb2\x26\xdd\xc7\xf7\x68\xd2\xed\xe2\x40\xeb\x3e\xf9\xbc\x45\x7f\x7d\x45\x91\xfc\xbc\x7d\x08\x3f\x90\x08\xb7\x62\xbe\xc6\x52\xdc\x67\xc4\xaf\x15\x7c\xd6\x79\xc5\x66\x8e\xd3\x86\xbf\xae\xa4\x8c\xfa\x2f\x41\x8a\xa9\x5f\x27\xcb\x9a\x2d\xaa\xd1\x35\xe0\x71\x67\xef\xea\x47\x96\x01\x47\xfb\x0b\xcb\x6a\xb1\xc1\xd0\xca\x36\xd0\x38\x13\x2b\x9c\x89\x73\x9c\xc1\x61\xfd\x05\x96\xf0\x88\x0d\xc2\x3d\x2d\x61\xbb\xb5\xa7\xc5\x6c\xb7\xf7\xac\xf8\xb8\xb9\x5f\xc5\xdf\x9e\xec\xac\x99\x2a\xbe\x75\xd4\x62\x63\xa5\xb9\xd3\xb4\x08\xe0\xdd\xd6\xbe\x84\x75\x5b\xfb\x52\xd6\x6d\xb5\x8f\xf6\xad\xd9\x7d\xb2\xef\x44\xd4\xea\x76\xb7\x28\xc8\x46\x51\x90\x4d\x4e\x41\x70\x1f\xf7\xab\x87\xf2\xf6\x49\x5f\x43\xe7\x83\x82\xce\x87\x1c\x3a\xb6\xbf\x5e\xda\xc1\x66\x45\x22\xcf\xf9\xda\xa1\xbc\x7d\xde\xfc\x52\x62\xca\xdb\xdd\xc7\x9e\xdd\x29\x5c\xb8\xcb\x71\x61\x49\xee\x6c\x97\x38\xde\xca\xfe\xb6\xbe\xc2\x76\x9a\x9f\x28\x34\x9f\xde\x87\xe6\xa6\x42\xf3\xe2\x2f\x37\xff\xbb\xb8\xf9\xa0\xae\x56\xf5\xe6\x39\xaa\x77\x33\xf8\xbe\xcc\x2d\x64\xec\x97\x30\xf5\x5b\x32\xb4\x9c\x99\xfb\x32\x4e\xcd\x02\xd0\x63\x1d\x7a\x88\xa6\x92\xa2\x1e\x87\x92\x63\x5a\x3c\x23\x09\xdd\x78\xc1\x04\xa9\xaa\x31\xe3\x35\x48\xb6\xd0\x41\x84\x3a\xde\x1a\xf8\xae\xb5\xc7\x53\x7a\x39\x03\xea\x05\x61\xba\xe8\xca\xba\x86\xa7\x3c\x10\xcb\xa0\xf0\x04\x08\x79\xf3\xb4\x07\xd1\x55\xeb\xba\x58\xb6\x4a\x44\xaa\x7c\xd1\xa8\x5c\x17\x06\xa5\x20\x55\x23\x19\x10\x28\x0a\x7b\x25\x51\xf0\x3c\xb5\x4a\xad\x34\x60\x2a\x54\x2d\xa9\x8d\x7b\x7f\xe5\x1c\x23\x81\x6b\xa4\xa1\xa2\xc2\x50\xda\x5e\x08\x24\x8c\xfb\x4f\x0f\x4c\x2b\x59\x24\xd7\xee\x8b\x58\x29\x66\x69\x1a\x39\x4f\x1f\x94\x49\xbe\xf8\x6e\x3c\xb9\xa3\x91\x9d\x64\xed\x18\xd8\x3d\x2f\x8b\x48\xbc\xf1\x29\xdc\xda\xfe\xa6\x30\x81\x30\xde\xcc\x5f\x7b\x74\xf9\x3c\x7d\x49\x10\x37\x59\xe2\xf9\xd7\x24\x0d\xc7\xf3\xa2\xdd\x8f\xbf\x52\x87\xe1\xaf\xd4\x61\xd5\x3c\x24\x37\x7f\xa5\x0e\xef\x4a\x1d\x4e\xae\x50\x0a\x32\x9d\x50\x84\xe7\x6d\x67\x89\xdb\x50\x84\xae\x08\xb5\x71\x12\xa9\x7d\xfa\x6c\x7c\x42\xd0\x6f\xdf\xae\xf8\x26\x6d\xf5\xfd\x6d\xb5\xf2\xb9\xae\x36\xba\xc0\x10\xde\x3d\x5b\x26\xe6\x03\x6d\x36\x89\xd2\xfd\x03\x71\x5e\x4e\x6e\xff\x40\x54\x84\x1e\x7c\x4a\x67\xaa\xe4\x9d\x88\x1e\x7c\xfa\x6c\x24\xe5\x8e\xbd\xa6\x9b\x48\xdd\x58\xf8\xac\xce\x14\x05\x41\x47\xa4\xe4\x0a\xfb\xbe\x86\x1e\xc8\xde\xf2\xf6\x3c\x25\x39\xad\xad\x55\x16\x62\xcc\x90\xc9\xd3\x42\x6b\xec\x3e\xb7\xad\x97\xce\x0d\x83\x7a\x76\x7e\x65\xcf\x58\x79\xf1\x14\x2a\x3a\x3e\x0e\xc8\x1d\x3d\x65\x35\xf3\xce\x87\x5a\x65\x4a\xa3\xda\x1e\xfe\x92\x6c\xc2\x3c\x7d\x9a\x6d\x50\x30\x39\x97\x91\x4c\xed\xe8\x7b\x11\xbc\xd8\xf8\xfe\x84\xa1\x37\x0e\xce\xbf\x0b\xed\x25\x1c\xbd\x07\xf9\x2b\x2f\xd8\xc4\x3f\x88\xfe\x02\xe2\xb2\x9b\x98\xe5\x74\xed\xa0\xe3\xdf\x1b\x12\x23\xb2\x3f\xb3\x28\xbf\x8c\xda\x22\x72\x85\xe9\xa8\x79\x6e\x39\xad\x6f\xf5\xde\x53\x2f\x42\xf4\xdb\x90\xf6\xe7\xca\x73\xaf\x99\xff\x6b\x16\x3f\xb1\xae\x0b\xe0\x88\x1a\xae\x92\xa7\x25\x1b\xf3\xf9\xd9\x28\x03\x56\xf2\xa0\x75\x5d\x84\x2e\x26\x76\xef\xd1\x07\xe6\xaa\x28\x37\x70\x08\x7e\x4e\xd2\x29\xce\x3d\x01\xb8\x50\xe4\xb8\xb0\x60\x73\x97\x01\x7e\x76\x2d\xb1\x9f\xa0\x8b\x84\xbd\x43\xe0\xf0\x9d\xcd\x9c\xa0\x7d\xca\xa6\xdb\xfb\x68\x4d\x89\x10\x15\x2d\x92\x99\x3c\x7b\x10\xb9\x2f\x8e\xe1\xfa\xab\x51\x6c\x65\x50\xcc\x39\x46\x5f\x31\xf8\xe6\xb6\x6f\x07\x0e\x89\x6a\x31\x8d\xb2\x69\x67\xf1\x66\x55\x90\x70\x34\x77\x0c\x20\x4e\x26\xa7\x11\x2c\x03\x2c\xb1\x32\x4f\xca\x5a\x46\xfe\xb5\x72\xb1\x6d\xcf\x3c\xfc\xb9\x53\x67\xaa\x4d\x82\x1a\x51\xac\x9c\x06\x5e\x2e\xf2\xe7\x4e\x66\xd5\x4f\xee\x67\x17\x9d\x01\xba\x9d\x0e\xae\x00\x18\x59\xcf\xa0\x59\x3c\x60\x38\xcd\xec\x37\xcb\x64\x01\x0a\x2b\xf4\xca\x9a\xef\x90\x46\x56\x2a\x65\xcd\x8a\xa7\xce\x84\x90\xb9\xb3\x0b\xf9\x6c\x6a\xd6\x7e\x1d\x6c\xa5\x37\x8c\x44\xef\x66\xc1\x3b\xda\x3a\x06\xcd\xad\x7c\x29\x1a\xfd\xa5\x18\xec\x46\x1c\x76\xed\x82\xe7\xd6\xe3\x15\x05\x68\x23\x71\x68\xb9\x25\x28\x1a\x98\x7b\xb9\x00\xc9\xf8\x24\xff\x46\xc3\x54\x62\x55\xb6\x28\x87\xb7\x00\x75\x4e\x80\x67\x0a\x00\x3b\x62\xdd\xa1\xfa\x26\x88\x47\xe1\x0a\x7b\xc2\x65\xb3\xd6\x50\xeb\xda\x0b\x6e\xce\x48\xc1\x86\x7f\x5a\x25\x5c\x17\xa5\x74\x14\x10\x14\x78\xfe\x2e\xc3\xe2\xdb\x31\xd2\xa5\x14\x95\xe6\x16\x09\x5b\x20\xa1\x2a\x09\x42\xb5\x44\x0c\x59\xfb\x71\x43\x02\x3d\x81\x08\x97\x04\xe5\xc6\xa0\x30\xe8\x73\x43\xb2\xc9\x99\x0a\x35\xf5\x9a\x96\x43\xa5\xac\x68\x44\x42\xd2\x3c\xde\x9a\x91\xa4\x32\xc9\x5b\x94\xa5\x5b\x68\xd1\xce\x9c\x2e\x1a\x72\xf5\x52\x98\xee\x25\x97\x6a\x6a\xd0\xa9\x20\xd0\x2b\xf8\x5e\x96\x2c\x84\x07\xb3\x56\xad\x56\xbb\xf3\xdb\xe3\x27\xdd\xa3\xaa\xc1\x68\xb3\x0c\x54\x84\x12\x07\x52\xb4\x94\x32\x2e\xaf\x74\x0f\x0a\x25\xb0\x82\x98\x7d\x22\x79\xd9\x9f\xce\x5c\xf5\xaf\xc8\xa0\xee\x83\x84\xf4\x3d\x93\xf4\x3c\xa7\x5e\xb2\x79\x90\xec\xcf\xcc\x4b\x32\x99\xfe\xff\x63\x8e\x98\xcf\x0b\x9f\xcd\x8d\x24\xc3\x2e\xf1\x10\xe4\x68\x43\xf5\x3f\x64\xba\x82\xff\x8f\x4a\xb0\xdb\x45\xe3\xfc\x1e\x53\x80\x42\x65\xd1\x90\xa8\x3e\xac\x42\xa3\x01\xce\x7e\x33\x6d\x49\xcc\xbf\x14\x81\x44\xf4\xbf\xfe\x10\xd1\xb3\x45\xfc\x37\x12\x7c\x19\x3b\x21\xcd\x01\xf4\xc4\x29\x28\x28\x59\xb0\x17\x94\x44\x50\x95\x6f\x2f\x0a\x71\x33\x49\xc7\x25\xa8\x14\x31\x58\x1b\x2f\x87\x3f\xd7\x78\xf9\x9f\xc6\x7e\xf3\x47\xb0\x9f\x47\x5e\xfe\x8b\xb8\xf6\xbf\x7e\x04\xd7\x92\x38\xcf\x7f\x11\xe3\xfe\xdc\xce\xb8\xb9\xf2\xce\x5a\x29\xae\x39\x0f\xb7\x2c\xe3\xf8\xa7\xa1\xfa\x6f\x3b\xa8\x26\xac\x16\x5b\xe9\x72\x6f\x75\x3f\xf2\x69\x38\x0c\xdc\x9f\x9e\xf4\xab\x9f\xc7\xbc\x97\xfa\x39\xa2\x59\xe2\xd2\x14\xb9\x10\x39\xef\x66\x97\x1f\x58\xfb\x79\x08\x87\xef\xe0\x24\xcb\x08\x94\x01\x9f\x4a\x32\x56\xf4\x4c\x91\xd8\x80\x07\xd9\xb6\x5f\xe6\x17\x6a\xe1\x3d\x27\xbe\x7a\xe0\xc4\xd7\x25\x84\x63\x7c\xa2\xd8\x2b\xb5\xea\x28\xa5\xba\xc8\xa6\xca\x05\xd6\x72\xc8\x5e\x37\xc8\x6a\x4d\x3f\x8a\x01\xb7\x5b\xf1\xeb\xff\x35\xf2\x4f\xa2\xe0\x8c\x76\x2d\xdf\xa6\x44\x82\xf2\x65\x33\x7b\xbd\x9d\xba\x8c\x0d\x12\x9c\x3e\x86\x83\xda\x01\xe0\x49\xfa\xc1\x4d\xc1\xfb\x27\xdb\x50\xdd\x5b\x77\xc2\x75\xcd\xb1\xd7\xbb\xc6\x70\xe3\xe7\x91\xe1\x2e\xe3\xa5\xc6\xa6\x9c\x41\x3d\xc9\x5f\x19\x88\xcc\x95\x9d\xfa\xfa\x70\x1b\xad\xa5\x2f\x3b\xc1\xb6\x79\xe6\xe7\x63\x51\x61\xbc\xe4\xde\xf1\xc2\x0a\xe8\xd9\x01\x0f\x9c\x38\x1f\x31\x2e\x55\xee\x7a\x56\xb9\x15\x48\xc5\xec\xfa\x32\xf6\x64\xd2\xcf\xca\x9b\x17\x04\xc3\xbc\x45\xc6\xcd\x50\x23\x8b\x31\x8d\x98\x52\xed\x1f\x43\xcc\x85\x74\x73\x1a\xb3\x2d\xd8\xa8\xc6\xde\xf4\xd8\xac\x0c\x92\x6a\x07\x48\x10\x7f\x91\x76\xc4\xee\x90\x54\xcc\x86\x90\xd7\x87\xa0\x9f\x2f\xa0\xc2\x9b\xe2\x21\x3d\xdb\xc0\xf1\x63\x7c\x92\xcb\x32\x60\x31\x8d\x30\x18\x5c\x0e\x8d\xdb\xd5\xd0\x77\x65\x3d\x84\x89\xbc\xca\xd4\xd1\xbb\xd4\xd1\x89\x72\x9d\xe8\xfa\x1c\x4b\x84\x33\x7b\x57\x71\xd2\x52\x62\x50\xaa\xe2\xa9\xce\xe4\x36\x86\xbf\x05\x75\x79\xf9\xe4\xde\xc8\xfe\x2a\xfa\x17\x29\x9e\x3f\x88\x33\x5b\x95\xe8\x4b\xc5\xae\x6d\xda\x14\x73\xee\x27\xe1\x8c\xc6\x9a\x75\x14\x3a\x24\x8e\xb3\xfc\x30\x80\x9f\xb9\x80\x3b\x14\x95\xc2\x01\x9b\x52\x1b\x8b\x55\x1e\xff\x9f\xe4\x20\x42\x3a\x24\xc5\x06\x48\x0f\x6a\xbc\x4e\x9a\xd0\x97\xb4\x49\x32\x07\x69\x54\x87\x43\x51\x7e\x98\x03\x95\x6e\x67\x68\xa0\xb7\xd8\x80\x92\x0a\xc2\x28\xf6\xb2\x1d\xe7\x70\xc7\x13\x2b\x74\x66\x8b\x27\x68\x0c\x95\x77\xa4\xef\x2f\x5a\x4b\x13\x50\x72\x63\x9a\xca\x7e\xcc\x05\x4f\xee\xcc\x8e\x2e\xad\xce\xf3\x8f\x34\x7b\x4e\x93\x38\x88\x06\x92\x84\x43\xe6\xf3\xa5\x88\x17\x1c\x20\x20\x39\xf7\x34\xcb\xa3\x42\xe7\xc0\x34\xaf\xae\xe4\x9c\xc8\x50\x4c\x5b\x95\x3b\x13\xe2\x8c\x63\x3c\xe2\x61\xfe\x91\x92\xaa\x91\x60\x5f\xec\x33\x38\xcb\xb4\x46\xba\x67\x9d\xa4\xce\x26\x9b\xd7\x49\xd7\x66\x82\x8f\xc9\xca\xbf\x0d\xf4\x9d\x80\x14\x20\xc9\x65\xd1\x06\x74\xa9\x2b\xb6\x17\x26\x92\xc8\xf4\x6a\xbf\x80\x79\x5e\x89\xe0\xfa\x3a\x57\x0b\xdf\x0c\xd7\x12\x00\x92\xfe\xca\xbb\x33\x4d\x21\x52\x67\x69\x47\x55\x03\xe9\xd0\xd2\xfb\x97\x05\xce\x60\x62\x44\xf8\xc6\x6d\x72\x7b\x5d\xdb\xda\xb4\x90\x79\xe5\xb0\x4c\x6b\x7b\x86\x8a\xea\x4c\xe9\xa6\x25\xa7\xbe\x5a\x9e\x91\xb2\xa3\x28\xff\x78\xfe\xff\xda\xf6\x22\xe5\x50\x6f\x06\x32\x59\x49\x17\x25\xef\x78\x0b\xac\x2a\xd6\xad\x7b\xbe\x2e\x93\x2c\xeb\x59\xd3\x2b\xeb\xfa\xde\xaf\xca\xe4\x00\x69\x22\x17\x50\xc5\x45\xab\x68\xe1\xbe\xeb\x5d\x16\x99\x54\xab\xb2\x54\x1b\xa0\x96\x01\x9b\x60\x6d\x3b\xef\x6b\xf9\x40\x43\x6e\x9a\x12\xd0\x64\xc2\xa8\x3c\x75\xa8\xe0\x1b\x45\x6a\x7a\xfd\xf6\xaf\x56\x42\x41\x8a\xac\x96\xce\x9a\x6e\xc8\x6f\xcb\xb2\xd5\x51\x3b\x16\x13\xa9\x38\x35\x09\xbf\x7e\x99\xc1\x16\x6b\x16\xa1\x5b\xf6\xf5\x4c\xd4\x92\x00\xb7\xd4\xf1\x5f\x26\xbb\x7f\x11\x6e\x30\xc2\xf8\xa9\x94\xe4\x7a\x92\xc5\x8b\x75\xaf\xac\xcc\x9b\x25\xc9\x83\x76\xc1\x2b\x27\xc9\xc9\x50\x28\x2b\xac\x67\x40\x3b\x2f\x2b\xd0\xcf\x62\x4d\x74\x49\x76\x29\xaf\x64\x5a\x9d\xf2\x4e\x85\xe4\xcc\x4d\x29\x6b\xca\xbe\x1b\xca\x3b\xbd\x21\x77\xcc\xa7\x90\xdd\xf2\x0a\x96\x61\xe1\x71\xab\xd5\x3f\xab\xdc\xc5\xe0\xf5\xc2\x08\xc4\x3e\x23\xde\x2b\x7c\x64\xf6\x51\xbc\x9d\x60\xa9\x92\x2d\xcd\x62\xd8\xce\x78\x09\xae\xfe\x39\xcf\xe7\xac\x00\x40\x98\x67\xd1\xbd\x64\x54\x2e\x01\x28\x01\x80\xaf\x52\x06\x2e\x58\x8c\x9e\x22\xa9\x95\x4a\x4e\x6f\xb9\x3d\x1d\xf4\x3e\xe2\xcc\x0e\xdb\xa2\x83\x95\xe4\xf9\xbc\xfc\x9b\xae\x76\x74\xa3\xbd\x1e\x12\xa1\xaf\x54\xad\x4a\x5d\xc5\xf3\x6c\x59\x55\x1e\x03\xe4\x3a\x52\x2d\x3a\x8e\xad\x64\x2b\x58\x9c\x58\xbb\x59\x25\x25\x98\xfb\xc1\x8c\xb3\x96\x7a\xc2\x7a\xc8\xfb\x41\xca\x29\x34\x65\xc9\x17\xdf\x2d\x24\xc3\x59\xc1\x7e\x1b\x0d\x70\x76\xdb\xde\x22\x38\x01\x26\x71\x29\x29\x11\x45\x14\xb0\x4a\xa5\xc8\x6b\x58\x30\x69\x5d\x05\x9b\x55\xde\x63\xf8\x56\x54\xc0\x8e\x4d\xfd\xa2\xe8\x0e\x0f\x8d\x65\x34\x05\x67\xb8\x6a\xee\xa5\x1e\xc4\x65\xed\x5f\x21\x25\x16\x9a\x77\xbc\x6c\x5e\xe3\xb5\x50\xbc\x62\x90\x52\x85\xab\x39\xc3\xf9\x80\xc1\x28\xce\x44\x4c\xfb\xac\x89\x31\xc8\xea\x1a\x60\xd5\xeb\x4a\x87\x85\x2c\x54\x9a\x0a\x1c\x73\x4d\x32\x6b\x5c\x31\x56\x23\x42\x71\xe8\x29\x46\x35\xfd\x68\x9e\x6e\x52\xb7\x7e\x69\x99\x81\xc4\x4b\xe6\xcb\xe2\x7f\xfe\xb6\x19\x14\x0f\x57\xf1\xfe\x59\x44\x6e\xf9\x6e\x97\x5a\x31\x3d\x2c\x2a\x6f\xc4\x31\x4d\xa9\x68\x2e\xf3\x68\xad\xae\x1e\x6d\x15\x24\x09\x89\x7c\x15\xf3\x80\xd7\x94\xdf\x63\xe3\x28\xfe\xa7\x07\x41\xfe\x08\x6a\x14\x50\x0f\x3e\x5d\x35\xaf\xb3\xae\x6d\x81\x31\x33\x72\x33\xdd\xe7\x9c\x12\xa1\x42\xeb\x0e\x13\xa7\x3c\x85\xc8\x8f\x86\x96\x0d\x71\xb6\x29\xb6\x7d\x80\xeb\x21\xc9\xb7\x42\xcb\xcf\x68\x0f\xb4\x92\x02\x36\xe5\xf5\xa0\x0c\xc9\xba\x01\x81\x6a\x9e\x59\x1d\xee\xcc\xf2\x8f\x9c\xab\xab\x61\x5e\x14\x6f\xe6\x29\xe7\x78\x91\x3c\xfb\xbc\xa7\x9e\x84\xce\x1f\x39\x7c\x12\x93\xaf\x92\xf1\xc2\xf4\xb8\xca\xec\xf1\xb2\x0d\x6e\x87\xb5\x7c\x40\xfe\x60\x9e\xae\x82\xb4\x06\xe9\x37\x2a\xe5\xc4\xcb\xcb\xf9\x6b\xac\xb2\x9c\xfb\x12\xbc\x07\xf1\x44\x55\x43\xf1\x44\x7c\x62\xb2\x97\x0c\x09\x5e\x9e\x7e\x22\x13\xbf\x8d\xc9\xbb\xe5\x9f\xbf\xec\x89\xef\x60\x0a\x6e\xe1\x59\xf4\x3d\x7e\x62\x8a\x20\x15\x4f\xce\xef\xf1\x93\x17\x24\xb7\xe4\x37\x2e\x23\xb2\xae\x54\xd2\xfc\xf2\xa5\x1d\xf5\xa9\xf0\x15\xeb\x72\xe2\xf3\xe0\x69\x0f\xa4\x2c\x78\x3c\xa2\xe8\x05\x45\x29\x9a\xe4\x34\x5e\x01\xa1\xe8\x35\x5a\xe5\x65\x46\x94\xbc\xb7\x80\x17\x84\x8e\xf1\x13\xe3\xb5\x03\x7b\x43\x43\xc7\x0f\x63\x72\x80\xd6\x2e\xf0\xfc\xb4\xc3\xbe\xeb\xe6\xab\xc9\x81\xab\x68\x51\xf2\xf0\x82\xad\x7b\x98\x3e\x1d\xfc\xf3\xe0\x9f\x07\x07\x06\x1c\x54\xab\xec\xf7\x5f\xff\x62\xbf\xb5\x3a\xfb\xfd\xf4\x99\xfd\x5e\x5d\x1f\x7c\x56\x5a\x9f\x93\x0f\xbe\x17\x28\xed\x73\x75\x53\xc6\x85\xc1\x64\x13\x90\x5a\x64\xc0\x6d\xc2\x36\x36\x61\x97\x10\x55\xc0\x3e\x7d\x7d\xc1\x1c\x03\x4f\x1c\xe0\x98\xa1\x44\xb1\x27\xde\x02\x22\xfe\xaa\x06\x8a\x4d\xaf\x78\xe5\x5d\x1b\xd0\x2a\xc8\x0a\x10\xcb\xc6\x4d\x74\xe6\x05\x4c\x9f\x6f\x1b\xcf\x37\x8b\x63\x76\x53\xbb\x6d\x0c\x36\x51\x1c\x46\x8d\x37\x4a\x70\x4d\xf4\x24\x3a\x11\xed\x0c\x48\xea\xfe\xfd\x90\xef\x8a\xde\x0f\x0b\xf6\x77\x7b\xfc\xdc\x76\xde\xe3\x91\x31\x35\x9c\x60\xf3\x3e\xc1\xed\x31\xef\x65\xe2\xdd\x2c\x69\x59\xa5\x82\xe3\xde\xd4\x95\xb4\x20\x20\x45\x18\x8f\xaa\xc4\xcf\xae\x8d\xe2\xd7\x61\x84\x2f\x69\xd6\xca\xe9\x33\xc5\x04\xb9\xb5\xc6\x76\x0e\x30\x08\xfb\x9e\x54\x57\xf2\xda\xfc\x6e\x61\x17\x7d\x95\xee\x0b\x85\xad\xf0\xaa\xa7\x8c\x7d\x01\xa7\x2e\x3f\xcb\xb7\x17\xfb\x0e\x4b\x89\x37\x4d\x3c\x85\xb7\x6a\x56\x61\x49\x22\x02\x1e\xbe\xbd\xec\x92\x88\x2c\x48\x20\xbe\x3d\xbf\x0e\xf1\x20\x5e\xf6\x20\x01\x79\x16\x3a\xe2\x30\x5f\x2f\xc6\xa1\xba\xb2\xe5\x77\xb4\x56\xb6\x9b\x77\xfe\x4c\x13\x3e\x2c\x49\x20\xbe\xe3\x41\xbd\xe0\x06\x6e\xf0\x2d\x69\xfc\x80\x3b\x0d\xc1\xdf\xd8\x45\x8d\x46\x14\x3f\xd4\x8a\x55\xe6\x44\x20\x16\x31\xd4\x5c\x98\x13\xc7\xde\xc4\x1c\xc7\xc4\x0c\xf0\x8f\x60\xc4\x60\x43\x10\x06\x09\xea\xbc\xa3\xbc\x6a\xa3\x28\x46\x3c\xf0\x61\xaa\xc4\x19\x5b\xc7\x52\xf9\x20\x39\x23\x8b\x7b\x8e\x91\xec\x75\x62\x90\x13\x92\xd6\x11\xe1\x28\x0a\x73\x58\xfb\x36\x06\x6e\x4f\xbd\xd4\xaa\x32\x13\x0b\xbd\x2d\xc3\x50\xad\x1f\x90\x3b\xba\xb3\xc1\xa1\xa5\x36\xf9\xc0\xcc\xfc\x0b\x42\xcf\x88\xed\x7a\xc1\xcd\xeb\xa5\x47\x09\x37\x4e\x52\xef\x8b\x8d\xb3\x36\x51\xe8\xe6\x39\xc1\x5a\x1b\xb7\x6a\x83\xd2\x91\xcb\x18\x9c\xd0\xb0\xbd\x79\xb9\x7d\xd5\x45\x57\x6a\x63\x79\xb5\x99\x3d\x2f\xad\xb2\x45\x57\x0f\xfe\x19\x1c\x30\xdf\xee\x43\x41\x5e\xc7\xed\x31\x06\xda\xc6\x8b\xb3\xad\xfd\xef\x56\xdf\xdc\xa1\x21\xbb\xb4\x58\x75\x3e\x71\xb1\x9b\x53\xeb\x74\xee\xf9\x91\x73\xf6\x3d\x14\x1f\xbe\xc5\xc4\x2b\xcf\x71\x29\x19\x31\xf7\x9f\x51\x6e\x8f\x4f\x88\x4f\x68\x4e\x9a\x3b\x99\xff\xff\x02\x00\x00\xff\xff\x27\x06\x53\xaa\xbb\x88\x00\x00" +var _runtimePluginsAutocloseAutocloseLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x56\xd1\x6a\xe3\x3a\x10\x7d\xcf\x57\x0c\xbe\x0f\xb1\x69\x9c\x4b\xee\xd3\xa5\xe0\x85\x6d\xb7\x94\x40\xe8\x2e\x69\x4b\x77\x69\x0b\x95\xe5\x71\x2c\xea\x48\x66\x3c\xda\x74\x29\xfd\xf7\x45\x76\x92\xda\xa9\xeb\x26\x50\x3f\x28\xb6\x66\x8e\x66\x74\x74\x66\x94\xdc\x48\x91\x83\xb5\xac\x72\x88\x40\x2d\x0b\x43\xec\x7b\x4b\x25\xc9\xfc\xeb\x26\xbd\x60\x50\xbb\x54\x53\xbb\x2e\x5b\xab\xe5\xf4\xff\x86\xd1\x7d\x6e\x6d\xc2\xb2\x91\xb9\x29\xf1\x87\x50\x54\x42\x04\xcf\xde\x9d\x77\xe7\x79\x23\xf0\x86\x43\x37\x3e\x3c\xb8\xd1\x0f\xdc\xf8\xfc\xe2\xc6\xdb\x7b\xef\xa5\x81\xbe\xc0\x55\xae\x74\x03\xff\xc6\x77\x90\x5a\x2d\x59\x19\x0d\x32\x13\xf4\x95\xfd\x92\x69\x04\x2a\x18\x00\x00\x84\x21\xe4\x56\x80\xd2\x09\x3e\x29\xbd\x00\x55\x82\xd1\x08\x26\x4d\x21\x25\xb3\x84\x85\xa9\xdc\x08\xd9\x92\xae\xb9\x18\xcf\xad\xc6\xed\x32\xe1\x24\x18\xa0\x4e\x1a\x51\x8c\x76\x0e\x7e\x5c\x8c\x80\xea\x20\xa9\x21\x50\x10\xc1\x64\x04\xff\xec\xec\x38\xa9\xd7\x77\x8f\x4a\x81\x20\x8a\x36\x59\xb6\x1d\x6f\xd5\xfd\x08\xfe\x0b\x80\x33\xd4\x5b\x84\x7b\x6a\x26\xa4\xa5\x99\xd2\x08\x11\xc4\xc5\xf8\xc4\xa6\xc7\xee\xcb\x8f\x8b\xf1\xa9\xa5\xd2\xd0\xf8\x57\x30\x68\xa1\x54\xba\x09\xb3\x46\x8e\xe0\xd5\xf9\xe7\xd1\x24\x38\x3c\x11\xf7\xc4\xc5\xf1\x89\x90\x8f\x65\x21\x24\xfa\x41\x97\xb9\x0e\x31\x57\x8b\x8c\xbb\x1c\x08\xc5\x63\x6b\xb6\xa2\x76\x27\xf3\x46\xa6\xf0\x05\x26\x20\x74\x02\x7e\x7d\x34\xd3\xf2\xc6\x50\x72\x9a\x09\xf2\x7b\xf6\x17\x4e\x82\x00\x0c\xf5\x51\x10\x7e\x44\x81\x5b\xa2\x9b\x83\xce\x3d\x74\xbd\x7f\x7c\xe0\x93\xcf\x3c\xf0\x26\x6d\x51\x54\x95\x65\x25\xe5\x53\x63\x35\x4f\xf5\x25\x93\xd2\x8b\x0d\x19\x15\x3f\xda\x30\x1c\xc2\xeb\xd1\xbb\xa4\x84\xa1\x9b\x87\x61\x38\x84\x0c\x09\x5d\x99\xb1\x81\x04\x09\x53\xd4\x12\x2b\x63\x61\x94\x66\x24\x67\x78\x5d\x73\x66\x24\xac\x32\x25\x33\x07\x71\x0c\x2d\x05\x2b\x29\xf2\xfc\x0f\x2c\x45\x82\x5d\x81\x56\x19\x6a\x90\x46\xff\x46\x62\x57\xd2\x0b\x03\x25\x93\x95\x5c\xc5\xcc\xad\xe8\x02\x4d\x19\x34\x62\x52\xb9\xc4\xb8\xce\x8c\x5c\x6e\x09\xc4\x28\x85\x2d\xeb\x24\xb7\x55\x8e\x4f\x05\xba\x25\x05\x68\xa3\xb7\xb9\xd7\x81\x3a\x84\x5f\x9d\xd1\x54\x97\x48\xec\x87\xad\xed\x8d\x7a\xeb\xac\xa7\x88\x66\x98\xee\x5f\x43\xbb\xef\x9b\xdf\x75\x63\x4b\x45\x5e\xe2\x4e\x1f\x2b\x08\xeb\x84\xd7\x2d\xd6\x8f\x8b\x3a\xda\xde\x0a\x6c\x39\x3b\xa9\x41\xd4\x57\x73\x4d\x80\xc6\x27\xfe\x18\x71\x34\x69\x62\x56\xee\x02\xa8\xf5\x7a\x8e\x3c\x43\x91\x28\xbd\xb8\xc9\x14\x63\xdd\x90\x36\xd2\x1e\x74\x36\xe5\xd6\x45\xd2\x6e\xcb\xdb\xec\x5b\xb5\xda\x04\xbc\x5b\xad\x2a\x6d\x6c\xa5\x1f\xde\xd3\x54\xdb\xe7\xd0\xa9\x89\xda\xe5\x4a\xc4\x9d\xe6\x3e\xf9\x79\x77\xda\x83\xf1\x18\x56\x65\xe7\xc2\x97\x2c\x88\xbf\xa7\xb3\x77\x23\xf7\xaa\xb1\xa5\xaf\x7d\x44\xd9\x54\x25\x93\xed\x10\xe5\xeb\x0d\xb3\x11\xe4\x7e\xf7\xeb\x41\xb2\x85\x4f\xb9\x24\xdd\xcd\xd4\x27\xf8\xc3\xbb\x7f\x5c\x1c\x7f\xc3\x1c\xb9\x79\x16\x6f\xe8\xab\xfe\x7f\x8d\x67\x66\xe1\x7b\xf3\xb3\xab\xeb\xf9\xc5\xf4\xe2\x1c\xae\xae\xe7\x67\x5e\xd0\x49\xef\xdf\x00\x00\x00\xff\xff\x35\x67\xdf\x19\xe9\x09\x00\x00" func runtimePluginsAutocloseAutocloseLuaBytes() ([]byte, error) { return bindataRead( diff --git a/internal/lua/lua.go b/internal/lua/lua.go index e0392e95..ddbcf3de 100644 --- a/internal/lua/lua.go +++ b/internal/lua/lua.go @@ -16,6 +16,7 @@ import ( "runtime" "strings" "time" + "unicode/utf8" lua "github.com/yuin/gopher-lua" luar "layeh.com/gopher-luar" @@ -66,6 +67,8 @@ func Import(pkg string) *lua.LTable { return importErrors() case "time": return importTime() + case "utf8": + return importUtf8() default: return nil } @@ -532,3 +535,24 @@ func importTime() *lua.LTable { return pkg } + +func importUtf8() *lua.LTable { + pkg := L.NewTable() + + L.SetField(pkg, "DecodeLastRune", luar.New(L, utf8.DecodeLastRune)) + L.SetField(pkg, "DecodeLastRuneInString", luar.New(L, utf8.DecodeLastRuneInString)) + L.SetField(pkg, "DecodeRune", luar.New(L, utf8.DecodeRune)) + L.SetField(pkg, "DecodeRuneInString", luar.New(L, utf8.DecodeRuneInString)) + L.SetField(pkg, "EncodeRune", luar.New(L, utf8.EncodeRune)) + L.SetField(pkg, "FullRune", luar.New(L, utf8.FullRune)) + L.SetField(pkg, "FullRuneInString", luar.New(L, utf8.FullRuneInString)) + L.SetField(pkg, "RuneCount", luar.New(L, utf8.RuneCount)) + L.SetField(pkg, "RuneCountInString", luar.New(L, utf8.RuneCountInString)) + L.SetField(pkg, "RuneLen", luar.New(L, utf8.RuneLen)) + L.SetField(pkg, "RuneStart", luar.New(L, utf8.RuneStart)) + L.SetField(pkg, "Valid", luar.New(L, utf8.Valid)) + L.SetField(pkg, "ValidRune", luar.New(L, utf8.ValidRune)) + L.SetField(pkg, "ValidString", luar.New(L, utf8.ValidString)) + + return pkg +} diff --git a/internal/util/lua.go b/internal/util/lua.go new file mode 100644 index 00000000..3f0393d4 --- /dev/null +++ b/internal/util/lua.go @@ -0,0 +1,41 @@ +package util + +import ( + "unicode/utf8" +) + +func LuaRuneAt(str string, runeidx int) string { + i := 0 + for len(str) > 0 { + r, size := utf8.DecodeRuneInString(str) + + str = str[size:] + + if i == runeidx { + return string(r) + } + + i++ + } + return "" +} + +func LuaGetLeadingWhitespace(s string) string { + ws := []byte{} + for len(s) > 0 { + r, size := utf8.DecodeRuneInString(s) + if r == ' ' || r == '\t' { + ws = append(ws, byte(r)) + } else { + break + } + + s = s[size:] + } + return string(ws) +} + +func LuaIsWordChar(s string) bool { + r, _ := utf8.DecodeRuneInString(s) + return IsWordChar(r) +} diff --git a/runtime/plugins/autoclose/autoclose.lua b/runtime/plugins/autoclose/autoclose.lua index e35dc177..05d64273 100644 --- a/runtime/plugins/autoclose/autoclose.lua +++ b/runtime/plugins/autoclose/autoclose.lua @@ -1,1115 +1,58 @@ --- $Id: utf8.lua 179 2009-04-03 18:10:03Z pasta $ --- --- Provides UTF-8 aware string functions implemented in pure lua: --- * utf8len(s) --- * utf8sub(s, i, j) --- * utf8reverse(s) --- * utf8char(unicode) --- * utf8unicode(s, i, j) --- * utf8gensub(s, sub_len) --- * utf8find(str, regex, init, plain) --- * utf8match(str, regex, init) --- * utf8gmatch(str, regex, all) --- * utf8gsub(str, regex, repl, limit) --- --- If utf8data.lua (containing the lower<->upper case mappings) is loaded, these --- additional functions are available: --- * utf8upper(s) --- * utf8lower(s) --- --- All functions behave as their non UTF-8 aware counterparts with the exception --- that UTF-8 characters are used instead of bytes for all units. - ---[[ -Copyright (c) 2006-2007, Kyle Smith -All rights reserved. - -Contributors: - Alimov Stepan - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the author nor the names of its contributors may be - used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---]] - --- ABNF from RFC 3629 --- --- UTF8-octets = *( UTF8-char ) --- UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4 --- UTF8-1 = %x00-7F --- UTF8-2 = %xC2-DF UTF8-tail --- UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) / --- %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail ) --- UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) / --- %xF4 %x80-8F 2( UTF8-tail ) --- UTF8-tail = %x80-BF --- - -local byte = string.byte -local char = string.char -local dump = string.dump -local find = string.find -local format = string.format -local len = string.len -local lower = string.lower -local rep = string.rep -local sub = string.sub -local upper = string.upper - --- returns the number of bytes used by the UTF-8 character at byte i in s --- also doubles as a UTF-8 character validator -local function utf8charbytes (s, i) - -- argument defaults - i = i or 1 - - -- argument checking - if type(s) ~= "string" then - error("bad argument #1 to 'utf8charbytes' (string expected, got ".. type(s).. ")") - end - if type(i) ~= "number" then - error("bad argument #2 to 'utf8charbytes' (number expected, got ".. type(i).. ")") - end - - local c = byte(s, i) - - -- determine bytes needed for character, based on RFC 3629 - -- validate byte 1 - if c > 0 and c <= 127 then - -- UTF8-1 - return 1 - - elseif c >= 194 and c <= 223 then - -- UTF8-2 - local c2 = byte(s, i + 1) - - if not c2 then - error("UTF-8 string terminated early") - end - - -- validate byte 2 - if c2 < 128 or c2 > 191 then - error("Invalid UTF-8 character") - end - - return 2 - - elseif c >= 224 and c <= 239 then - -- UTF8-3 - local c2 = byte(s, i + 1) - local c3 = byte(s, i + 2) - - if not c2 or not c3 then - error("UTF-8 string terminated early") - end - - -- validate byte 2 - if c == 224 and (c2 < 160 or c2 > 191) then - error("Invalid UTF-8 character") - elseif c == 237 and (c2 < 128 or c2 > 159) then - error("Invalid UTF-8 character") - elseif c2 < 128 or c2 > 191 then - error("Invalid UTF-8 character") - end - - -- validate byte 3 - if c3 < 128 or c3 > 191 then - error("Invalid UTF-8 character") - end - - return 3 - - elseif c >= 240 and c <= 244 then - -- UTF8-4 - local c2 = byte(s, i + 1) - local c3 = byte(s, i + 2) - local c4 = byte(s, i + 3) - - if not c2 or not c3 or not c4 then - error("UTF-8 string terminated early") - end - - -- validate byte 2 - if c == 240 and (c2 < 144 or c2 > 191) then - error("Invalid UTF-8 character") - elseif c == 244 and (c2 < 128 or c2 > 143) then - error("Invalid UTF-8 character") - elseif c2 < 128 or c2 > 191 then - error("Invalid UTF-8 character") - end - - -- validate byte 3 - if c3 < 128 or c3 > 191 then - error("Invalid UTF-8 character") - end - - -- validate byte 4 - if c4 < 128 or c4 > 191 then - error("Invalid UTF-8 character") - end - - return 4 - - else - error("Invalid UTF-8 character") - end -end - --- returns the number of characters in a UTF-8 string -local function utf8len (s) - -- argument checking - if type(s) ~= "string" then - for k,v in pairs(s) do print('"',tostring(k),'"',tostring(v),'"') end - error("bad argument #1 to 'utf8len' (string expected, got ".. type(s).. ")") - end - - local pos = 1 - local bytes = len(s) - local length = 0 - - while pos <= bytes do - length = length + 1 - pos = pos + utf8charbytes(s, pos) - end - - return length -end - --- functions identically to string.sub except that i and j are UTF-8 characters --- instead of bytes -local function utf8sub (s, i, j) - -- argument defaults - j = j or -1 - - local pos = 1 - local bytes = len(s) - local length = 0 - - -- only set l if i or j is negative - local l = (i >= 0 and j >= 0) or utf8len(s) - local startChar = (i >= 0) and i or l + i + 1 - local endChar = (j >= 0) and j or l + j + 1 - - -- can't have start before end! - if startChar > endChar then - return "" - end - - -- byte offsets to pass to string.sub - local startByte,endByte = 1,bytes - - while pos <= bytes do - length = length + 1 - - if length == startChar then - startByte = pos - end - - pos = pos + utf8charbytes(s, pos) - - if length == endChar then - endByte = pos - 1 - break - end - end - - if startChar > length then startByte = bytes+1 end - if endChar < 1 then endByte = 0 end - - return sub(s, startByte, endByte) -end - ---[[ --- replace UTF-8 characters based on a mapping table -local function utf8replace (s, mapping) - -- argument checking - if type(s) ~= "string" then - error("bad argument #1 to 'utf8replace' (string expected, got ".. type(s).. ")") - end - if type(mapping) ~= "table" then - error("bad argument #2 to 'utf8replace' (table expected, got ".. type(mapping).. ")") - end - - local pos = 1 - local bytes = len(s) - local charbytes - local newstr = "" - - while pos <= bytes do - charbytes = utf8charbytes(s, pos) - local c = sub(s, pos, pos + charbytes - 1) - - newstr = newstr .. (mapping[c] or c) - - pos = pos + charbytes - end - - return newstr -end - - --- identical to string.upper except it knows about unicode simple case conversions -local function utf8upper (s) - return utf8replace(s, utf8_lc_uc) -end - --- identical to string.lower except it knows about unicode simple case conversions -local function utf8lower (s) - return utf8replace(s, utf8_uc_lc) -end -]] - --- identical to string.reverse except that it supports UTF-8 -local function utf8reverse (s) - -- argument checking - if type(s) ~= "string" then - error("bad argument #1 to 'utf8reverse' (string expected, got ".. type(s).. ")") - end - - local bytes = len(s) - local pos = bytes - local charbytes - local newstr = "" - - while pos > 0 do - local c = byte(s, pos) - while c >= 128 and c <= 191 do - pos = pos - 1 - c = byte(s, pos) - end - - charbytes = utf8charbytes(s, pos) - - newstr = newstr .. sub(s, pos, pos + charbytes - 1) - - pos = pos - 1 - end - - return newstr -end - --- http://en.wikipedia.org/wiki/Utf8 --- http://developer.coronalabs.com/code/utf-8-conversion-utility -local function utf8char(unicode) - if unicode <= 0x7F then return char(unicode) end - - if (unicode <= 0x7FF) then - local Byte0 = 0xC0 + math.floor(unicode / 0x40); - local Byte1 = 0x80 + (unicode % 0x40); - return char(Byte0, Byte1); - end; - - if (unicode <= 0xFFFF) then - local Byte0 = 0xE0 + math.floor(unicode / 0x1000); - local Byte1 = 0x80 + (math.floor(unicode / 0x40) % 0x40); - local Byte2 = 0x80 + (unicode % 0x40); - return char(Byte0, Byte1, Byte2); - end; - - if (unicode <= 0x10FFFF) then - local code = unicode - local Byte3= 0x80 + (code % 0x40); - code = math.floor(code / 0x40) - local Byte2= 0x80 + (code % 0x40); - code = math.floor(code / 0x40) - local Byte1= 0x80 + (code % 0x40); - code = math.floor(code / 0x40) - local Byte0= 0xF0 + code; - - return char(Byte0, Byte1, Byte2, Byte3); - end; - - error 'Unicode cannot be greater than U+10FFFF!' -end - -local shift_6 = 2^6 -local shift_12 = 2^12 -local shift_18 = 2^18 - -local utf8unicode -utf8unicode = function(str, i, j, byte_pos) - i = i or 1 - j = j or i - - if i > j then return end - - local ch,bytes - - if byte_pos then - bytes = utf8charbytes(str,byte_pos) - ch = sub(str,byte_pos,byte_pos-1+bytes) - else - ch,byte_pos = utf8sub(str,i,i), 0 - bytes = #ch - end - - local unicode - - if bytes == 1 then unicode = byte(ch) end - if bytes == 2 then - local byte0,byte1 = byte(ch,1,2) - local code0,code1 = byte0-0xC0,byte1-0x80 - unicode = code0*shift_6 + code1 - end - if bytes == 3 then - local byte0,byte1,byte2 = byte(ch,1,3) - local code0,code1,code2 = byte0-0xE0,byte1-0x80,byte2-0x80 - unicode = code0*shift_12 + code1*shift_6 + code2 - end - if bytes == 4 then - local byte0,byte1,byte2,byte3 = byte(ch,1,4) - local code0,code1,code2,code3 = byte0-0xF0,byte1-0x80,byte2-0x80,byte3-0x80 - unicode = code0*shift_18 + code1*shift_12 + code2*shift_6 + code3 - end - - return unicode,utf8unicode(str, i+1, j, byte_pos+bytes) -end - --- Returns an iterator which returns the next substring and its byte interval -local function utf8gensub(str, sub_len) - sub_len = sub_len or 1 - local byte_pos = 1 - local length = #str - return function(skip) - if skip then byte_pos = byte_pos + skip end - local char_count = 0 - local start = byte_pos - repeat - if byte_pos > length then return end - char_count = char_count + 1 - local bytes = utf8charbytes(str,byte_pos) - byte_pos = byte_pos+bytes - - until char_count == sub_len - - local last = byte_pos-1 - local slice = sub(str,start,last) - return slice, start, last - end -end - -local function binsearch(sortedTable, item, comp) - local head, tail = 1, #sortedTable - local mid = math.floor((head + tail)/2) - if not comp then - while (tail - head) > 1 do - if sortedTable[tonumber(mid)] > item then - tail = mid - else - head = mid - end - mid = math.floor((head + tail)/2) - end - end - if sortedTable[tonumber(head)] == item then - return true, tonumber(head) - elseif sortedTable[tonumber(tail)] == item then - return true, tonumber(tail) - else - return false - end -end -local function classMatchGenerator(class, plain) - local codes = {} - local ranges = {} - local ignore = false - local range = false - local firstletter = true - local unmatch = false - - local it = utf8gensub(class) - - local skip - for c, _, be in it do - skip = be - if not ignore and not plain then - if c == "%" then - ignore = true - elseif c == "-" then - table.insert(codes, utf8unicode(c)) - range = true - elseif c == "^" then - if not firstletter then - error('!!!') - else - unmatch = true - end - elseif c == ']' then - break - else - if not range then - table.insert(codes, utf8unicode(c)) - else - table.remove(codes) -- removing '-' - table.insert(ranges, {table.remove(codes), utf8unicode(c)}) - range = false - end - end - elseif ignore and not plain then - if c == 'a' then -- %a: represents all letters. (ONLY ASCII) - table.insert(ranges, {65, 90}) -- A - Z - table.insert(ranges, {97, 122}) -- a - z - elseif c == 'c' then -- %c: represents all control characters. - table.insert(ranges, {0, 31}) - table.insert(codes, 127) - elseif c == 'd' then -- %d: represents all digits. - table.insert(ranges, {48, 57}) -- 0 - 9 - elseif c == 'g' then -- %g: represents all printable characters except space. - table.insert(ranges, {1, 8}) - table.insert(ranges, {14, 31}) - table.insert(ranges, {33, 132}) - table.insert(ranges, {134, 159}) - table.insert(ranges, {161, 5759}) - table.insert(ranges, {5761, 8191}) - table.insert(ranges, {8203, 8231}) - table.insert(ranges, {8234, 8238}) - table.insert(ranges, {8240, 8286}) - table.insert(ranges, {8288, 12287}) - elseif c == 'l' then -- %l: represents all lowercase letters. (ONLY ASCII) - table.insert(ranges, {97, 122}) -- a - z - elseif c == 'p' then -- %p: represents all punctuation characters. (ONLY ASCII) - table.insert(ranges, {33, 47}) - table.insert(ranges, {58, 64}) - table.insert(ranges, {91, 96}) - table.insert(ranges, {123, 126}) - elseif c == 's' then -- %s: represents all space characters. - table.insert(ranges, {9, 13}) - table.insert(codes, 32) - table.insert(codes, 133) - table.insert(codes, 160) - table.insert(codes, 5760) - table.insert(ranges, {8192, 8202}) - table.insert(codes, 8232) - table.insert(codes, 8233) - table.insert(codes, 8239) - table.insert(codes, 8287) - table.insert(codes, 12288) - elseif c == 'u' then -- %u: represents all uppercase letters. (ONLY ASCII) - table.insert(ranges, {65, 90}) -- A - Z - elseif c == 'w' then -- %w: represents all alphanumeric characters. (ONLY ASCII) - table.insert(ranges, {48, 57}) -- 0 - 9 - table.insert(ranges, {65, 90}) -- A - Z - table.insert(ranges, {97, 122}) -- a - z - elseif c == 'x' then -- %x: represents all hexadecimal digits. - table.insert(ranges, {48, 57}) -- 0 - 9 - table.insert(ranges, {65, 70}) -- A - F - table.insert(ranges, {97, 102}) -- a - f - else - if not range then - table.insert(codes, utf8unicode(c)) - else - table.remove(codes) -- removing '-' - table.insert(ranges, {table.remove(codes), utf8unicode(c)}) - range = false - end - end - ignore = false - else - if not range then - table.insert(codes, utf8unicode(c)) - else - table.remove(codes) -- removing '-' - table.insert(ranges, {table.remove(codes), utf8unicode(c)}) - range = false - end - ignore = false - end - - firstletter = false - end - - table.sort(codes) - - local function inRanges(charCode) - for _,r in ipairs(ranges) do - if r[1] <= charCode and charCode <= r[2] then - return true - end - end - return false - end - if not unmatch then - return function(charCode) - return binsearch(codes, charCode) or inRanges(charCode) - end, skip - else - return function(charCode) - return charCode ~= -1 and not (binsearch(codes, charCode) or inRanges(charCode)) - end, skip - end -end - ---[[ --- utf8sub with extra argument, and extra result value -local function utf8subWithBytes (s, i, j, sb) - -- argument defaults - j = j or -1 - - local pos = sb or 1 - local bytes = len(s) - local length = 0 - - -- only set l if i or j is negative - local l = (i >= 0 and j >= 0) or utf8len(s) - local startChar = (i >= 0) and i or l + i + 1 - local endChar = (j >= 0) and j or l + j + 1 - - -- can't have start before end! - if startChar > endChar then - return "" - end - - -- byte offsets to pass to string.sub - local startByte,endByte = 1,bytes - - while pos <= bytes do - length = length + 1 - - if length == startChar then - startByte = pos - end - - pos = pos + utf8charbytes(s, pos) - - if length == endChar then - endByte = pos - 1 - break - end - end - - if startChar > length then startByte = bytes+1 end - if endChar < 1 then endByte = 0 end - - return sub(s, startByte, endByte), endByte + 1 -end -]] - -local cache = setmetatable({},{ - __mode = 'kv' -}) -local cachePlain = setmetatable({},{ - __mode = 'kv' -}) -local function matcherGenerator(regex, plain) - local matcher = { - functions = {}, - captures = {} - } - if not plain then - cache[regex] = matcher - else - cachePlain[regex] = matcher - end - local function simple(func) - return function(cC) - if func(cC) then - matcher:nextFunc() - matcher:nextStr() - else - matcher:reset() - end - end - end - local function star(func) - return function(cC) - if func(cC) then - matcher:fullResetOnNextFunc() - matcher:nextStr() - else - matcher:nextFunc() - end - end - end - local function minus(func) - return function(cC) - if func(cC) then - matcher:fullResetOnNextStr() - end - matcher:nextFunc() - end - end - local function question(func) - return function(cC) - if func(cC) then - matcher:fullResetOnNextFunc() - matcher:nextStr() - end - matcher:nextFunc() - end - end - - local function capture(id) - return function(_) - local l = matcher.captures[id][2] - matcher.captures[id][1] - local captured = utf8sub(matcher.string, matcher.captures[id][1], matcher.captures[id][2]) - local check = utf8sub(matcher.string, matcher.str, matcher.str + l) - if captured == check then - for _ = 0, l do - matcher:nextStr() - end - matcher:nextFunc() - else - matcher:reset() - end - end - end - local function captureStart(id) - return function(_) - matcher.captures[id][1] = matcher.str - matcher:nextFunc() - end - end - local function captureStop(id) - return function(_) - matcher.captures[id][2] = matcher.str - 1 - matcher:nextFunc() - end - end - - local function balancer(str) - local sum = 0 - local bc, ec = utf8sub(str, 1, 1), utf8sub(str, 2, 2) - local skip = len(bc) + len(ec) - bc, ec = utf8unicode(bc), utf8unicode(ec) - return function(cC) - if cC == ec and sum > 0 then - sum = sum - 1 - if sum == 0 then - matcher:nextFunc() - end - matcher:nextStr() - elseif cC == bc then - sum = sum + 1 - matcher:nextStr() - else - if sum == 0 or cC == -1 then - sum = 0 - matcher:reset() - else - matcher:nextStr() - end - end - end, skip - end - - matcher.functions[1] = function(_) - matcher:fullResetOnNextStr() - matcher.seqStart = matcher.str - matcher:nextFunc() - if (matcher.str > matcher.startStr and matcher.fromStart) or matcher.str >= matcher.stringLen then - matcher.stop = true - matcher.seqStart = nil - end - end - - local lastFunc - local ignore = false - local skip = nil - local it = (function() - local gen = utf8gensub(regex) - return function() - return gen(skip) - end - end)() - local cs = {} - for c, bs, be in it do - skip = nil - if plain then - table.insert(matcher.functions, simple(classMatchGenerator(c, plain))) - else - if ignore then - if find('123456789', c, 1, true) then - if lastFunc then - table.insert(matcher.functions, simple(lastFunc)) - lastFunc = nil - end - table.insert(matcher.functions, capture(tonumber(c))) - elseif c == 'b' then - if lastFunc then - table.insert(matcher.functions, simple(lastFunc)) - lastFunc = nil - end - local b - b, skip = balancer(sub(regex, be + 1, be + 9)) - table.insert(matcher.functions, b) - else - lastFunc = classMatchGenerator('%' .. c) - end - ignore = false - else - if c == '*' then - if lastFunc then - table.insert(matcher.functions, star(lastFunc)) - lastFunc = nil - else - error('invalid regex after ' .. sub(regex, 1, bs)) - end - elseif c == '+' then - if lastFunc then - table.insert(matcher.functions, simple(lastFunc)) - table.insert(matcher.functions, star(lastFunc)) - lastFunc = nil - else - error('invalid regex after ' .. sub(regex, 1, bs)) - end - elseif c == '-' then - if lastFunc then - table.insert(matcher.functions, minus(lastFunc)) - lastFunc = nil - else - error('invalid regex after ' .. sub(regex, 1, bs)) - end - elseif c == '?' then - if lastFunc then - table.insert(matcher.functions, question(lastFunc)) - lastFunc = nil - else - error('invalid regex after ' .. sub(regex, 1, bs)) - end - elseif c == '^' then - if bs == 1 then - matcher.fromStart = true - else - error('invalid regex after ' .. sub(regex, 1, bs)) - end - elseif c == '$' then - if be == len(regex) then - matcher.toEnd = true - else - error('invalid regex after ' .. sub(regex, 1, bs)) - end - elseif c == '[' then - if lastFunc then - table.insert(matcher.functions, simple(lastFunc)) - end - lastFunc, skip = classMatchGenerator(sub(regex, be + 1)) - elseif c == '(' then - if lastFunc then - table.insert(matcher.functions, simple(lastFunc)) - lastFunc = nil - end - table.insert(matcher.captures, {}) - table.insert(cs, #matcher.captures) - table.insert(matcher.functions, captureStart(cs[#cs])) - if sub(regex, be + 1, be + 1) == ')' then matcher.captures[#matcher.captures].empty = true end - elseif c == ')' then - if lastFunc then - table.insert(matcher.functions, simple(lastFunc)) - lastFunc = nil - end - local cap = table.remove(cs) - if not cap then - error('invalid capture: "(" missing') - end - table.insert(matcher.functions, captureStop(cap)) - elseif c == '.' then - if lastFunc then - table.insert(matcher.functions, simple(lastFunc)) - end - lastFunc = function(cC) return cC ~= -1 end - elseif c == '%' then - ignore = true - else - if lastFunc then - table.insert(matcher.functions, simple(lastFunc)) - end - lastFunc = classMatchGenerator(c) - end - end - end - end - if #cs > 0 then - error('invalid capture: ")" missing') - end - if lastFunc then - table.insert(matcher.functions, simple(lastFunc)) - end - - table.insert(matcher.functions, function() - if matcher.toEnd and matcher.str ~= matcher.stringLen then - matcher:reset() - else - matcher.stop = true - end - end) - - matcher.nextFunc = function(self) - self.func = self.func + 1 - end - matcher.nextStr = function(self) - self.str = self.str + 1 - end - matcher.strReset = function(self) - local oldReset = self.reset - local str = self.str - self.reset = function(s) - s.str = str - s.reset = oldReset - end - end - matcher.fullResetOnNextFunc = function(self) - local oldReset = self.reset - local func = self.func +1 - local str = self.str - self.reset = function(s) - s.func = func - s.str = str - s.reset = oldReset - end - end - matcher.fullResetOnNextStr = function(self) - local oldReset = self.reset - local str = self.str + 1 - local func = self.func - self.reset = function(s) - s.func = func - s.str = str - s.reset = oldReset - end - end - - matcher.process = function(self, str, start) - - self.func = 1 - start = start or 1 - self.startStr = (start >= 0) and start or utf8len(str) + start + 1 - self.seqStart = self.startStr - self.str = self.startStr - self.stringLen = utf8len(str) + 1 - self.string = str - self.stop = false - - self.reset = function(s) - s.func = 1 - end - - -- local lastPos = self.str - -- local lastByte - local ch - while not self.stop do - if self.str < self.stringLen then - --[[ if lastPos < self.str then - print('last byte', lastByte) - ch, lastByte = utf8subWithBytes(str, 1, self.str - lastPos - 1, lastByte) - ch, lastByte = utf8subWithBytes(str, 1, 1, lastByte) - lastByte = lastByte - 1 - else - ch, lastByte = utf8subWithBytes(str, self.str, self.str) - end - lastPos = self.str ]] - ch = utf8sub(str, self.str,self.str) - --print('char', ch, utf8unicode(ch)) - self.functions[self.func](utf8unicode(ch)) - else - self.functions[self.func](-1) - end - end - - if self.seqStart then - local captures = {} - for _,pair in pairs(self.captures) do - if pair.empty then - table.insert(captures, pair[1]) - else - table.insert(captures, utf8sub(str, pair[1], pair[2])) - end - end - return self.seqStart, self.str - 1, unpack(captures) - end - end - - return matcher -end - --- string.find -local function utf8find(str, regex, init, plain) - local matcher = cache[regex] or matcherGenerator(regex, plain) - return matcher:process(str, init) -end - --- string.match -local function utf8match(str, regex, init) - init = init or 1 - local found = {utf8find(str, regex, init)} - if found[1] then - if found[3] then - return unpack(found, 3) - end - return utf8sub(str, found[1], found[2]) - end -end - --- string.gmatch -local function utf8gmatch(str, regex, all) - regex = (utf8sub(regex,1,1) ~= '^') and regex or '%' .. regex - local lastChar = 1 - return function() - local found = {utf8find(str, regex, lastChar)} - if found[1] then - lastChar = found[2] + 1 - if found[all and 1 or 3] then - return unpack(found, all and 1 or 3) - end - return utf8sub(str, found[1], found[2]) - end - end -end - -local function replace(repl, args) - local ret = '' - if type(repl) == 'string' then - local ignore = false - local num - for c in utf8gensub(repl) do - if not ignore then - if c == '%' then - ignore = true - else - ret = ret .. c - end - else - num = tonumber(c) - if num then - ret = ret .. args[num] - else - ret = ret .. c - end - ignore = false - end - end - elseif type(repl) == 'table' then - ret = repl[args[1] or args[0]] or '' - elseif type(repl) == 'function' then - if #args > 0 then - ret = repl(unpack(args, 1)) or '' - else - ret = repl(args[0]) or '' - end - end - return ret -end --- string.gsub -local function utf8gsub(str, regex, repl, limit) - limit = limit or -1 - local ret = '' - local prevEnd = 1 - local it = utf8gmatch(str, regex, true) - local found = {it()} - local n = 0 - while #found > 0 and limit ~= n do - local args = {[0] = utf8sub(str, found[1], found[2]), unpack(found, 3)} - ret = ret .. utf8sub(str, prevEnd, found[1] - 1) - .. replace(repl, args) - prevEnd = found[2] + 1 - n = n + 1 - found = {it()} - end - return ret .. utf8sub(str, prevEnd), n -end - -local utf8 = {} -utf8.len = utf8len -utf8.sub = utf8sub -utf8.reverse = utf8reverse -utf8.char = utf8char -utf8.unicode = utf8unicode -utf8.gensub = utf8gensub -utf8.byte = utf8unicode -utf8.find = utf8find -utf8.match = utf8match -utf8.gmatch = utf8gmatch -utf8.gsub = utf8gsub -utf8.dump = dump -utf8.format = format -utf8.lower = lower -utf8.upper = upper -utf8.rep = rep - -function charAt(str, i) - if i <= utf8.len(str) then - return utf8.sub(str, i, i) - else - return "" - end -end - -if GetOption("autoclose") == nil then - AddOption("autoclose", true) -end - +local uutil = import("micro/util") +local utf8 = import("utf8") local autoclosePairs = {"\"\"", "''", "``", "()", "{}", "[]"} local autoNewlinePairs = {"()", "{}", "[]"} -function onRune(r, v) - if not GetOption("autoclose") then - return - end +function charAt(str, i) + -- lua indexing is one off from go + return uutil.RuneAt(str, i-1) +end +function onRune(bp, r) for i = 1, #autoclosePairs do if r == charAt(autoclosePairs[i], 2) then - local curLine = v.Buf:Line(v.Cursor.Y) + local curLine = bp.Buf:Line(bp.Cursor.Y) - if charAt(curLine, v.Cursor.X+1) == charAt(autoclosePairs[i], 2) then - v:Backspace(false) - v:CursorRight(false) + if charAt(curLine, bp.Cursor.X+1) == charAt(autoclosePairs[i], 2) then + bp:Backspace() + bp:CursorRight() break end - if v.Cursor.X > 1 and (IsWordChar(charAt(curLine, v.Cursor.X-1)) or charAt(curLine, v.Cursor.X-1) == charAt(autoclosePairs[i], 1)) then + if bp.Cursor.X > 1 and (uutil.IsWordChar(charAt(curLine, bp.Cursor.X-1)) or charAt(curLine, bp.Cursor.X-1) == charAt(autoclosePairs[i], 1)) then break end end if r == charAt(autoclosePairs[i], 1) then - local curLine = v.Buf:Line(v.Cursor.Y) + local curLine = bp.Buf:Line(bp.Cursor.Y) - if v.Cursor.X == utf8.len(curLine) or not IsWordChar(charAt(curLine, v.Cursor.X+1)) then - -- the '-' here is to derefence the pointer to v.Cursor.Loc which is automatically made + if bp.Cursor.X == utf8.RuneCountInString(curLine) or not uutil.IsWordChar(charAt(curLine, bp.Cursor.X+1)) then + -- the '-' here is to derefence the pointer to bp.Cursor.Loc which is automatically made -- when converting go structs to lua -- It needs to be dereferenced because the function expects a non pointer struct - v.Buf:Insert(-v.Cursor.Loc, charAt(autoclosePairs[i], 2)) - v:CursorLeft(false) + bp.Buf:Insert(-bp.Cursor.Loc, charAt(autoclosePairs[i], 2)) + bp:CursorLeft() break end end end + return false end -function preInsertNewline(v) - if not GetOption("autoclose") then - return - end - - local curLine = v.Buf:Line(v.Cursor.Y) - local curRune = charAt(curLine, v.Cursor.X) - local nextRune = charAt(curLine, v.Cursor.X+1) - local ws = GetLeadingWhitespace(curLine) +function preInsertNewline(bp) + local curLine = bp.Buf:Line(bp.Cursor.Y) + local curRune = charAt(curLine, bp.Cursor.X) + local nextRune = charAt(curLine, bp.Cursor.X+1) + local ws = uutil.GetLeadingWhitespace(curLine) for i = 1, #autoNewlinePairs do if curRune == charAt(autoNewlinePairs[i], 1) then if nextRune == charAt(autoNewlinePairs[i], 2) then - v:InsertNewline(false) - v:InsertTab(false) - v.Buf:Insert(-v.Cursor.Loc, "\n" .. ws) - v:StartOfLine(false) - v:CursorLeft(false) + bp:InsertNewline() + bp:InsertTab() + bp.Buf:Insert(-bp.Cursor.Loc, "\n" .. ws) + bp:StartOfLine() + bp:CursorLeft() return false end end @@ -1118,15 +61,11 @@ function preInsertNewline(v) return true end -function preBackspace(v) - if not GetOption("autoclose") then - return - end - +function preBackspace(bp) for i = 1, #autoclosePairs do - local curLine = v.Buf:Line(v.Cursor.Y) - if charAt(curLine, v.Cursor.X+1) == charAt(autoclosePairs[i], 2) and charAt(curLine, v.Cursor.X) == charAt(autoclosePairs[i], 1) then - v:Delete(false) + local curLine = bp.Buf:Line(bp.Cursor.Y) + if charAt(curLine, bp.Cursor.X+1) == charAt(autoclosePairs[i], 2) and charAt(curLine, bp.Cursor.X) == charAt(autoclosePairs[i], 1) then + bp:Delete() end end From e7e02729685de27429e220f38250065e2f80ec87 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 2 Aug 2019 18:29:47 -0700 Subject: [PATCH 136/231] Jobs and gutter messages for plugins --- cmd/micro/initlua.go | 21 +++++- cmd/micro/micro.go | 4 + internal/config/plugin.go | 11 +++ internal/display/statusline.go | 8 +- internal/shell/job.go | 129 +++++++++++++++++++++++++++++++++ 5 files changed, 165 insertions(+), 8 deletions(-) create mode 100644 internal/shell/job.go diff --git a/cmd/micro/initlua.go b/cmd/micro/initlua.go index 269fbe9d..804f1142 100644 --- a/cmd/micro/initlua.go +++ b/cmd/micro/initlua.go @@ -7,6 +7,7 @@ import ( luar "layeh.com/gopher-luar" "github.com/zyedidia/micro/internal/action" + "github.com/zyedidia/micro/internal/buffer" "github.com/zyedidia/micro/internal/display" ulua "github.com/zyedidia/micro/internal/lua" "github.com/zyedidia/micro/internal/screen" @@ -25,6 +26,8 @@ func LuaImport(pkg string) *lua.LTable { return luaImportMicro() case "micro/shell": return luaImportMicroShell() + case "micro/buffer": + return luaImportMicroBuffer() case "micro/util": return luaImportMicroUtil() default: @@ -52,6 +55,22 @@ func luaImportMicroShell() *lua.LTable { ulua.L.SetField(pkg, "RunCommand", luar.New(ulua.L, shell.RunCommand)) ulua.L.SetField(pkg, "RunBackgroundShell", luar.New(ulua.L, shell.RunBackgroundShell)) ulua.L.SetField(pkg, "RunInteractiveShell", luar.New(ulua.L, shell.RunInteractiveShell)) + ulua.L.SetField(pkg, "JobStart", luar.New(ulua.L, shell.JobStart)) + ulua.L.SetField(pkg, "JobSpawn", luar.New(ulua.L, shell.JobSpawn)) + ulua.L.SetField(pkg, "JobStop", luar.New(ulua.L, shell.JobStop)) + ulua.L.SetField(pkg, "JobSend", luar.New(ulua.L, shell.JobSend)) + + return pkg +} + +func luaImportMicroBuffer() *lua.LTable { + pkg := ulua.L.NewTable() + + ulua.L.SetField(pkg, "NewMessage", luar.New(ulua.L, buffer.NewMessage)) + ulua.L.SetField(pkg, "NewMessageAtLine", luar.New(ulua.L, buffer.NewMessageAtLine)) + ulua.L.SetField(pkg, "MTInfo", luar.New(ulua.L, buffer.MTInfo)) + ulua.L.SetField(pkg, "MTWarning", luar.New(ulua.L, buffer.MTWarning)) + ulua.L.SetField(pkg, "MTError", luar.New(ulua.L, buffer.MTError)) return pkg } @@ -61,7 +80,7 @@ func luaImportMicroUtil() *lua.LTable { ulua.L.SetField(pkg, "RuneAt", luar.New(ulua.L, util.LuaRuneAt)) ulua.L.SetField(pkg, "GetLeadingWhitespace", luar.New(ulua.L, util.LuaGetLeadingWhitespace)) - ulua.L.SetField(pkg, "IsWordChar", luar.New(ulua.L, util.LuaIsWordChar)) + ulua.L.SetField(pkg, "", luar.New(ulua.L, util.LuaIsWordChar)) return pkg } diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 52f69518..06e1f968 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -13,6 +13,7 @@ import ( "github.com/zyedidia/micro/internal/buffer" "github.com/zyedidia/micro/internal/config" "github.com/zyedidia/micro/internal/screen" + "github.com/zyedidia/micro/internal/shell" "github.com/zyedidia/micro/internal/util" "github.com/zyedidia/tcell" ) @@ -231,6 +232,9 @@ func main() { // Check for new events select { + case f := <-shell.Jobs: + // If a new job has finished while running in the background we should execute the callback + f.Function(f.Output, f.Args...) case event = <-events: case <-screen.DrawChan: } diff --git a/internal/config/plugin.go b/internal/config/plugin.go index 8b9d93e3..8023c266 100644 --- a/internal/config/plugin.go +++ b/internal/config/plugin.go @@ -114,3 +114,14 @@ func (p *Plugin) Call(fn string, args ...lua.LValue) (lua.LValue, error) { ulua.L.Pop(1) return ret, nil } + +func FindPlugin(name string) *Plugin { + var pl *Plugin + for _, p := range Plugins { + if p.Name == name { + pl = p + break + } + } + return pl +} diff --git a/internal/display/statusline.go b/internal/display/statusline.go index e4a6a1de..059c25d2 100644 --- a/internal/display/statusline.go +++ b/internal/display/statusline.go @@ -54,13 +54,7 @@ var statusInfo = map[string]func(*buffer.Buffer) string{ func SetStatusInfoFnLua(s string, fn string) { luaFn := strings.Split(fn, ".") plName, plFn := luaFn[0], luaFn[1] - var pl *config.Plugin - for _, p := range config.Plugins { - if p.Name == plName { - pl = p - break - } - } + pl := config.FindPlugin(plName) statusInfo[s] = func(b *buffer.Buffer) string { if pl == nil || !pl.IsEnabled() { return "" diff --git a/internal/shell/job.go b/internal/shell/job.go new file mode 100644 index 00000000..d3c33bf8 --- /dev/null +++ b/internal/shell/job.go @@ -0,0 +1,129 @@ +package shell + +import ( + "bytes" + "io" + "os/exec" + "strings" + + luar "layeh.com/gopher-luar" + + lua "github.com/yuin/gopher-lua" + "github.com/zyedidia/micro/internal/config" + ulua "github.com/zyedidia/micro/internal/lua" + "github.com/zyedidia/micro/internal/screen" +) + +var Jobs chan JobFunction + +func init() { + Jobs = make(chan JobFunction, 100) +} + +// Jobs are the way plugins can run processes in the background +// A job is simply a process that gets executed asynchronously +// There are callbacks for when the job exits, when the job creates stdout +// and when the job creates stderr + +// These jobs run in a separate goroutine but the lua callbacks need to be +// executed in the main thread (where the Lua VM is running) so they are +// put into the jobs channel which gets read by the main loop + +// JobFunction is a representation of a job (this data structure is what is loaded +// into the jobs channel) +type JobFunction struct { + Function func(string, ...string) + Output string + Args []string +} + +// A CallbackFile is the data structure that makes it possible to catch stderr and stdout write events +type CallbackFile struct { + io.Writer + + callback func(string, ...string) + args []string +} + +func (f *CallbackFile) Write(data []byte) (int, error) { + // This is either stderr or stdout + // In either case we create a new job function callback and put it in the jobs channel + jobFunc := JobFunction{f.callback, string(data), f.args} + Jobs <- jobFunc + return f.Writer.Write(data) +} + +// JobStart starts a shell command in the background with the given callbacks +// It returns an *exec.Cmd as the job id +func JobStart(cmd string, onStdout, onStderr, onExit string, userargs ...string) *exec.Cmd { + return JobSpawn("sh", []string{"-c", cmd}, onStdout, onStderr, onExit, userargs...) +} + +// JobSpawn starts a process with args in the background with the given callbacks +// It returns an *exec.Cmd as the job id +func JobSpawn(cmdName string, cmdArgs []string, onStdout, onStderr, onExit string, userargs ...string) *exec.Cmd { + // Set up everything correctly if the functions have been provided + proc := exec.Command(cmdName, cmdArgs...) + var outbuf bytes.Buffer + if onStdout != "" { + proc.Stdout = &CallbackFile{&outbuf, luaFunctionJob(onStdout), userargs} + } else { + proc.Stdout = &outbuf + } + if onStderr != "" { + proc.Stderr = &CallbackFile{&outbuf, luaFunctionJob(onStderr), userargs} + } else { + proc.Stderr = &outbuf + } + + go func() { + // Run the process in the background and create the onExit callback + proc.Run() + jobFunc := JobFunction{luaFunctionJob(onExit), string(outbuf.Bytes()), userargs} + Jobs <- jobFunc + }() + + return proc +} + +// JobStop kills a job +func JobStop(cmd *exec.Cmd) { + cmd.Process.Kill() +} + +// JobSend sends the given data into the job's stdin stream +func JobSend(cmd *exec.Cmd, data string) { + stdin, err := cmd.StdinPipe() + if err != nil { + return + } + + stdin.Write([]byte(data)) +} + +// luaFunctionJob returns a function that will call the given lua function +// structured as a job call i.e. the job output and arguments are provided +// to the lua function +func luaFunctionJob(fn string) func(string, ...string) { + luaFn := strings.Split(fn, ".") + plName, plFn := luaFn[0], luaFn[1] + pl := config.FindPlugin(plName) + return func(output string, args ...string) { + var luaArgs []lua.LValue + for _, v := range args { + luaArgs = append(luaArgs, luar.New(ulua.L, v)) + } + _, err := pl.Call(plFn, luaArgs...) + if err != nil && err != config.ErrNoSuchFunction { + screen.TermMessage(err) + } + } +} + +func unpack(old []string) []interface{} { + new := make([]interface{}, len(old)) + for i, v := range old { + new[i] = v + } + return new +} From 4027081e0e31ec90050f51209c4888def57ac1cb Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 2 Aug 2019 23:46:25 -0700 Subject: [PATCH 137/231] Add linter plugin support --- cmd/micro/initlua.go | 2 +- cmd/micro/micro.go | 7 +- internal/action/bufpane.go | 8 +- internal/action/command.go | 9 +- internal/buffer/message.go | 10 +- internal/config/plugin.go | 15 ++- internal/config/runtime.go | 4 +- internal/lua/lua.go | 4 +- internal/shell/job.go | 25 ++--- internal/util/util.go | 9 +- runtime/plugins/linter/linter.lua | 172 +++++++++++++++++++----------- 11 files changed, 166 insertions(+), 99 deletions(-) diff --git a/cmd/micro/initlua.go b/cmd/micro/initlua.go index 804f1142..a166b1fd 100644 --- a/cmd/micro/initlua.go +++ b/cmd/micro/initlua.go @@ -80,7 +80,7 @@ func luaImportMicroUtil() *lua.LTable { ulua.L.SetField(pkg, "RuneAt", luar.New(ulua.L, util.LuaRuneAt)) ulua.L.SetField(pkg, "GetLeadingWhitespace", luar.New(ulua.L, util.LuaGetLeadingWhitespace)) - ulua.L.SetField(pkg, "", luar.New(ulua.L, util.LuaIsWordChar)) + ulua.L.SetField(pkg, "IsWordChar", luar.New(ulua.L, util.LuaIsWordChar)) return pkg } diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 06e1f968..62a41b42 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -4,6 +4,7 @@ import ( "flag" "fmt" "io/ioutil" + "log" "os" "sort" @@ -172,7 +173,10 @@ func main() { screen.TermMessage(err) } - config.LoadAllPlugins() + err = config.LoadAllPlugins() + if err != nil { + screen.TermMessage(err) + } err = config.RunPluginFn("init") if err != nil { screen.TermMessage(err) @@ -234,6 +238,7 @@ func main() { select { case f := <-shell.Jobs: // If a new job has finished while running in the background we should execute the callback + log.Println("OUTPUT:", f.Output) f.Function(f.Output, f.Args...) case event = <-events: case <-screen.DrawChan: diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index fcc15bba..edf81ebe 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -1,6 +1,7 @@ package action import ( + "log" "strings" "time" @@ -261,7 +262,8 @@ func (h *BufPane) DoKeyEvent(e Event) bool { // canceled by plugin continue } - if action(h) && h.PluginCB("on"+estr) { + rel := action(h) + if h.PluginCB("on"+estr) && rel { h.Relocate() } } @@ -271,7 +273,9 @@ func (h *BufPane) DoKeyEvent(e Event) bool { if !h.PluginCB("pre" + estr) { return false } - if action(h) && h.PluginCB("on"+estr) { + rel := action(h) + log.Println("calling on", estr) + if h.PluginCB("on"+estr) && rel { h.Relocate() } return true diff --git a/internal/action/command.go b/internal/action/command.go index 4e9f9d38..0cff15bf 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -367,8 +367,13 @@ func SetGlobalOptionNative(option string, nativeValue interface{}) error { } } else { for _, pl := range config.Plugins { - if option == pl.Name && nativeValue.(bool) && !pl.Loaded { - pl.Load() + if option == pl.Name { + if nativeValue.(bool) && !pl.Loaded { + pl.Load() + pl.Call("init") + } else if !nativeValue.(bool) && pl.Loaded { + pl.Call("deinit") + } } } } diff --git a/internal/buffer/message.go b/internal/buffer/message.go index 8f072333..065d9666 100644 --- a/internal/buffer/message.go +++ b/internal/buffer/message.go @@ -17,10 +17,10 @@ type Message struct { Msg string Start, End Loc Kind MsgType - Owner int + Owner string } -func NewMessage(owner int, msg string, start, end Loc, kind MsgType) *Message { +func NewMessage(owner string, msg string, start, end Loc, kind MsgType) *Message { return &Message{ Msg: msg, Start: start, @@ -30,8 +30,8 @@ func NewMessage(owner int, msg string, start, end Loc, kind MsgType) *Message { } } -func NewMessageAtLine(owner int, msg string, line int, kind MsgType) *Message { - start := Loc{-1, line} +func NewMessageAtLine(owner string, msg string, line int, kind MsgType) *Message { + start := Loc{-1, line - 1} end := start return NewMessage(owner, msg, start, end, kind) } @@ -64,7 +64,7 @@ func (b *Buffer) removeMsg(i int) { b.Messages = b.Messages[:len(b.Messages)-1] } -func (b *Buffer) ClearMessages(owner int) { +func (b *Buffer) ClearMessages(owner string) { for i := len(b.Messages) - 1; i >= 0; i-- { if b.Messages[i].Owner == owner { b.removeMsg(i) diff --git a/internal/config/plugin.go b/internal/config/plugin.go index 8023c266..dffad485 100644 --- a/internal/config/plugin.go +++ b/internal/config/plugin.go @@ -2,6 +2,7 @@ package config import ( "errors" + "log" lua "github.com/yuin/gopher-lua" ulua "github.com/zyedidia/micro/internal/lua" @@ -10,10 +11,15 @@ import ( var ErrNoSuchFunction = errors.New("No such function exists") // LoadAllPlugins loads all detected plugins (in runtime/plugins and ConfigDir/plugins) -func LoadAllPlugins() { +func LoadAllPlugins() error { + var reterr error for _, p := range Plugins { - p.Load() + err := p.Load() + if err != nil { + reterr = err + } } + return reterr } // RunPluginFn runs a given function in all plugins @@ -68,7 +74,7 @@ type Plugin struct { func (p *Plugin) IsEnabled() bool { if v, ok := GlobalSettings[p.Name]; ok { - return v.(bool) + return v.(bool) && p.Loaded } return true } @@ -77,7 +83,7 @@ var Plugins []*Plugin func (p *Plugin) Load() error { for _, f := range p.Srcs { - if !p.IsEnabled() { + if v, ok := GlobalSettings[p.Name]; ok && !v.(bool) { return nil } dat, err := f.Data() @@ -98,6 +104,7 @@ func (p *Plugin) Load() error { func (p *Plugin) Call(fn string, args ...lua.LValue) (lua.LValue, error) { plug := ulua.L.GetGlobal(p.Name) + log.Println(p.Name, fn, plug) luafn := ulua.L.GetField(plug, fn) if luafn == lua.LNil { return nil, ErrNoSuchFunction diff --git a/internal/config/runtime.go b/internal/config/runtime.go index 8ed43a0a..905b354b 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -1031,7 +1031,7 @@ func runtimeHelpTutorialMd() (*asset, error) { return a, nil } -var _runtimePluginsAutocloseAutocloseLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x56\xd1\x6a\xe3\x3a\x10\x7d\xcf\x57\x0c\xbe\x0f\xb1\x69\x9c\x4b\xee\xd3\xa5\xe0\x85\x6d\xb7\x94\x40\xe8\x2e\x69\x4b\x77\x69\x0b\x95\xe5\x71\x2c\xea\x48\x66\x3c\xda\x74\x29\xfd\xf7\x45\x76\x92\xda\xa9\xeb\x26\x50\x3f\x28\xb6\x66\x8e\x66\x74\x74\x66\x94\xdc\x48\x91\x83\xb5\xac\x72\x88\x40\x2d\x0b\x43\xec\x7b\x4b\x25\xc9\xfc\xeb\x26\xbd\x60\x50\xbb\x54\x53\xbb\x2e\x5b\xab\xe5\xf4\xff\x86\xd1\x7d\x6e\x6d\xc2\xb2\x91\xb9\x29\xf1\x87\x50\x54\x42\x04\xcf\xde\x9d\x77\xe7\x79\x23\xf0\x86\x43\x37\x3e\x3c\xb8\xd1\x0f\xdc\xf8\xfc\xe2\xc6\xdb\x7b\xef\xa5\x81\xbe\xc0\x55\xae\x74\x03\xff\xc6\x77\x90\x5a\x2d\x59\x19\x0d\x32\x13\xf4\x95\xfd\x92\x69\x04\x2a\x18\x00\x00\x84\x21\xe4\x56\x80\xd2\x09\x3e\x29\xbd\x00\x55\x82\xd1\x08\x26\x4d\x21\x25\xb3\x84\x85\xa9\xdc\x08\xd9\x92\xae\xb9\x18\xcf\xad\xc6\xed\x32\xe1\x24\x18\xa0\x4e\x1a\x51\x8c\x76\x0e\x7e\x5c\x8c\x80\xea\x20\xa9\x21\x50\x10\xc1\x64\x04\xff\xec\xec\x38\xa9\xd7\x77\x8f\x4a\x81\x20\x8a\x36\x59\xb6\x1d\x6f\xd5\xfd\x08\xfe\x0b\x80\x33\xd4\x5b\x84\x7b\x6a\x26\xa4\xa5\x99\xd2\x08\x11\xc4\xc5\xf8\xc4\xa6\xc7\xee\xcb\x8f\x8b\xf1\xa9\xa5\xd2\xd0\xf8\x57\x30\x68\xa1\x54\xba\x09\xb3\x46\x8e\xe0\xd5\xf9\xe7\xd1\x24\x38\x3c\x11\xf7\xc4\xc5\xf1\x89\x90\x8f\x65\x21\x24\xfa\x41\x97\xb9\x0e\x31\x57\x8b\x8c\xbb\x1c\x08\xc5\x63\x6b\xb6\xa2\x76\x27\xf3\x46\xa6\xf0\x05\x26\x20\x74\x02\x7e\x7d\x34\xd3\xf2\xc6\x50\x72\x9a\x09\xf2\x7b\xf6\x17\x4e\x82\x00\x0c\xf5\x51\x10\x7e\x44\x81\x5b\xa2\x9b\x83\xce\x3d\x74\xbd\x7f\x7c\xe0\x93\xcf\x3c\xf0\x26\x6d\x51\x54\x95\x65\x25\xe5\x53\x63\x35\x4f\xf5\x25\x93\xd2\x8b\x0d\x19\x15\x3f\xda\x30\x1c\xc2\xeb\xd1\xbb\xa4\x84\xa1\x9b\x87\x61\x38\x84\x0c\x09\x5d\x99\xb1\x81\x04\x09\x53\xd4\x12\x2b\x63\x61\x94\x66\x24\x67\x78\x5d\x73\x66\x24\xac\x32\x25\x33\x07\x71\x0c\x2d\x05\x2b\x29\xf2\xfc\x0f\x2c\x45\x82\x5d\x81\x56\x19\x6a\x90\x46\xff\x46\x62\x57\xd2\x0b\x03\x25\x93\x95\x5c\xc5\xcc\xad\xe8\x02\x4d\x19\x34\x62\x52\xb9\xc4\xb8\xce\x8c\x5c\x6e\x09\xc4\x28\x85\x2d\xeb\x24\xb7\x55\x8e\x4f\x05\xba\x25\x05\x68\xa3\xb7\xb9\xd7\x81\x3a\x84\x5f\x9d\xd1\x54\x97\x48\xec\x87\xad\xed\x8d\x7a\xeb\xac\xa7\x88\x66\x98\xee\x5f\x43\xbb\xef\x9b\xdf\x75\x63\x4b\x45\x5e\xe2\x4e\x1f\x2b\x08\xeb\x84\xd7\x2d\xd6\x8f\x8b\x3a\xda\xde\x0a\x6c\x39\x3b\xa9\x41\xd4\x57\x73\x4d\x80\xc6\x27\xfe\x18\x71\x34\x69\x62\x56\xee\x02\xa8\xf5\x7a\x8e\x3c\x43\x91\x28\xbd\xb8\xc9\x14\x63\xdd\x90\x36\xd2\x1e\x74\x36\xe5\xd6\x45\xd2\x6e\xcb\xdb\xec\x5b\xb5\xda\x04\xbc\x5b\xad\x2a\x6d\x6c\xa5\x1f\xde\xd3\x54\xdb\xe7\xd0\xa9\x89\xda\xe5\x4a\xc4\x9d\xe6\x3e\xf9\x79\x77\xda\x83\xf1\x18\x56\x65\xe7\xc2\x97\x2c\x88\xbf\xa7\xb3\x77\x23\xf7\xaa\xb1\xa5\xaf\x7d\x44\xd9\x54\x25\x93\xed\x10\xe5\xeb\x0d\xb3\x11\xe4\x7e\xf7\xeb\x41\xb2\x85\x4f\xb9\x24\xdd\xcd\xd4\x27\xf8\xc3\xbb\x7f\x5c\x1c\x7f\xc3\x1c\xb9\x79\x16\x6f\xe8\xab\xfe\x7f\x8d\x67\x66\xe1\x7b\xf3\xb3\xab\xeb\xf9\xc5\xf4\xe2\x1c\xae\xae\xe7\x67\x5e\xd0\x49\xef\xdf\x00\x00\x00\xff\xff\x35\x67\xdf\x19\xe9\x09\x00\x00" +var _runtimePluginsAutocloseAutocloseLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x55\xd1\x6a\xdb\x4a\x10\x7d\xf7\x57\x0c\xba\x0f\x96\x88\xe5\x8b\xef\xd3\x25\xa0\x42\x93\x42\x31\x98\xb6\x24\x85\xb4\x24\x81\xac\x56\xb3\xd6\x12\x79\x57\x8c\x66\xeb\x94\x90\x7f\x2f\x2b\xd9\x8e\xe4\x2a\xb2\x0d\xd1\xc3\xda\xd2\xce\xd9\x99\x3d\x73\x66\xa6\xb0\x52\x14\xe0\x1c\xeb\x02\x12\xd0\xab\xd2\x12\x87\xc1\x4a\x4b\xb2\xff\xfa\x8f\x41\x34\xda\x98\xb0\xfa\xbf\x65\xe1\x5f\x77\x7b\xc2\xb1\x95\x85\xad\xf0\x9b\xd0\x54\x41\x02\xcf\xc1\x5d\x70\x17\x04\x13\x08\xc6\x63\xbf\x3e\x3c\xf8\x35\x8c\xfc\xfa\xfc\xe2\xd7\xdb\xfb\xe0\xa5\x85\xfe\x82\xeb\x42\x9b\x16\xfe\x2f\xdb\x91\x72\x46\xb2\xb6\x06\x64\x2e\xe8\x23\x87\x15\xd3\x04\x74\x34\x02\x00\x88\x63\x28\x9c\x00\x6d\x32\x7c\xd2\x66\x09\xba\x02\x6b\x10\xac\x52\xa0\xc8\xae\x60\x69\x6b\x33\x42\x76\x64\x9a\xdb\x4e\xaf\x9c\xc1\xdd\x31\xf1\x2c\x1a\xa1\xc9\x5a\x5e\xac\xf1\x06\x61\x5a\x4e\x80\x1a\x27\xca\x12\x68\x48\x60\x36\x81\x7f\xf6\x6e\x9c\x35\xe7\xfb\x47\x2b\x20\x48\x92\x6d\x94\x5d\xc3\x5b\x7d\x3f\x81\xff\x22\xe0\x1c\xcd\x0e\xe1\x9f\x86\x09\xe9\x68\xa1\x0d\x42\x02\x69\x39\xbd\x70\xea\xdc\xbf\x85\x69\x39\xbd\x74\x54\x59\x9a\xfe\x8c\x46\x1d\x94\x56\x5b\x37\x1b\xe4\x04\x5e\x8d\x7f\x9c\xcd\xa2\xd3\x03\xf1\x4f\x5a\x9e\x5f\x08\xf9\x58\x95\x42\x62\x18\xf5\x6d\x37\x2e\xae\xf4\x32\xe7\x3e\x03\x42\xf1\xd8\xf9\x5a\x53\xbb\x17\x79\x2b\x52\xf8\x00\x33\x10\x26\x83\xb0\x49\xcd\xbc\xba\xb1\x94\x5d\xe6\x82\xc2\x81\xfb\xc5\xb3\x28\x02\x4b\x43\x14\xc4\x87\x28\xf0\x47\xf4\x73\xd0\x7b\x87\xbe\xff\x87\x13\x3e\x7b\xcf\x84\xb7\x69\x4b\x92\xba\x2c\x6b\x29\x5f\x5a\x67\x78\x6e\xae\x99\xb4\x59\x6e\xc9\xa8\xf9\x31\x96\xe1\x14\x5e\xcf\xde\x24\x25\x8e\xfd\x77\x18\xc7\x63\xc8\x91\xd0\x97\x19\x5b\xc8\x90\x50\xa1\x91\x58\x6f\x96\x56\x1b\x46\xf2\x1b\xaf\x67\x2e\xac\x84\x75\xae\x65\xee\x21\x9e\xa1\x95\x60\x2d\x45\x51\xfc\x86\x95\xc8\xb0\xcf\xd1\x3a\x47\x03\xd2\x9a\x5f\x48\xec\x4b\x7a\x69\xa1\x62\x72\x92\x6b\x9f\x85\x13\x7d\xa0\x39\x83\x41\xcc\x6a\x93\x14\x37\x91\x91\x8f\x2d\x83\x14\xa5\x70\x55\x13\xe4\xae\xca\xf1\xa9\x44\x7f\xa4\x00\x63\xcd\x2e\xf6\xc6\x51\x8f\xf0\xeb\x1c\xcd\x4d\x85\xc4\x61\xdc\xb9\xde\x64\xb0\xce\x06\x8a\x68\x81\xea\xf8\x1a\xda\xff\xbf\xfd\xdd\x34\x36\x25\x8a\x0a\xf7\xfa\x58\x49\xd8\x04\xbc\x69\xb1\x61\x5a\x36\xde\x8e\x56\x60\xc7\xd8\x4b\x0d\x92\xa1\x9a\x6b\x03\x0c\x3e\xf1\x61\xc4\xd9\xac\x8d\x59\xfb\x01\xd0\xe8\xf5\x33\xf2\x02\x45\xa6\xcd\xf2\x26\xd7\x8c\x4d\x43\xda\x4a\x7b\xd4\xdb\x94\x3b\x83\xa4\xdb\x96\x77\xd1\x77\x6a\xb5\x0d\x78\xb3\x5a\xb5\x6a\x5d\x65\x18\x3e\xd0\x54\xbb\x79\xe8\xd5\x44\x63\xf2\x5d\xa4\xbd\xdb\x43\xf2\x0b\xee\x4c\x00\xd3\x29\xac\xab\xde\x83\xaf\x59\x10\x7f\x55\x8b\x37\x3d\x0f\xaa\xb1\xa3\xaf\x63\x44\xd9\x56\x25\x93\xeb\x11\xe5\xeb\x84\xd9\x0a\xf2\xb8\xf9\x7a\x92\x6c\xe1\x5d\x86\xa4\x9f\x4c\x43\x82\x3f\xbd\xfb\xa7\xe5\xf9\x27\x2c\x90\xdb\xb9\x38\x48\xdf\x9f\x00\x00\x00\xff\xff\x80\x29\x13\xa7\xab\x09\x00\x00" func runtimePluginsAutocloseAutocloseLuaBytes() ([]byte, error) { return bindataRead( @@ -1071,7 +1071,7 @@ func runtimePluginsFtoptionsFtoptionsLua() (*asset, error) { return a, nil } -var _runtimePluginsLinterLinterLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x57\xdb\x8e\xdb\x36\x13\xbe\xf7\x53\x0c\x88\x5f\x80\xb4\x96\x94\xbf\x41\xaf\x0c\x08\x45\xba\x6d\x02\x14\x39\x14\xd8\xb4\xbd\xe8\x36\x05\x2d\x8d\x6c\x66\x29\x52\x20\x29\x1f\x60\xe4\xdd\x0b\x92\xb2\x2c\xc9\xf4\xf6\x80\x2c\xb0\xcb\x11\x39\x9c\xef\x9b\x03\xc9\x59\x56\xc3\x1b\x34\x1f\x5a\xc3\xa4\x88\x09\x67\xc2\xa0\x22\x09\x14\x05\x08\xc6\xc1\x6c\x51\x2c\x00\x00\x5e\x55\xd5\x4c\x27\x05\xa3\x3a\x4c\x16\x28\xaa\xc5\xe2\x1d\x7d\xc2\x7b\xd9\x34\x54\x54\x5e\x81\xa4\xd0\x2b\xe6\x76\xe8\xd7\x48\x0a\xff\x4f\x16\x8b\xba\x13\xa5\xb5\x05\xa3\xa5\x38\x71\x38\xf7\x9d\xfa\x95\xe1\x3e\x4e\x56\x0f\x74\x87\x71\x4d\xb9\x46\xbf\xa2\x3a\xf1\xd6\x19\x8c\x7b\xcc\xc1\xca\x78\xc5\x6a\x72\x59\x52\x0e\xb5\x81\xe2\x62\x2e\xff\xbe\xab\x57\xaf\x19\xc7\x8f\xc7\x16\xa7\x7a\x8c\xe3\x5c\x33\xff\x99\x9a\xed\x48\xa7\x62\x0a\x0a\xf8\x81\x29\x2c\x8d\x54\xc7\xf7\xb4\xc1\xd8\xee\xf3\x76\x58\x0d\x1f\x1e\x6c\xc4\xc8\x9e\x89\x4a\xee\x35\xb9\xc4\xcd\xfe\x54\xb8\x13\x1d\xe7\x50\x00\x79\xff\xcb\x5b\xe2\xe6\x91\x6b\x0c\x29\xbc\xa8\x70\xf7\xc2\x7e\xf4\x6a\xd6\xd1\x1e\xc3\x3a\x54\x00\x29\x67\xd6\x6d\x0c\x63\xb2\x29\x4b\x1b\x72\x3f\x9c\x48\x56\xeb\xa3\x30\xf4\x90\x49\xc1\x8f\x76\x21\xfb\x8d\x72\xee\x05\x3c\x18\x45\x49\xea\x1c\xff\x92\x02\x89\xea\x55\xc4\x57\x51\xb5\x5c\xe5\xcb\x15\x44\x0d\x49\x06\x86\x23\xd4\xe5\xf2\x3f\xe0\x92\x4c\x9b\xaa\x28\x97\xcb\x6f\xbe\xfd\x1a\x24\xaa\x20\x85\xaa\xb1\x75\xd5\x0f\x27\x92\x95\x92\x4b\x55\xc8\xba\x76\x48\x32\x73\xc3\xde\xff\x65\x6e\x28\x27\xc0\x51\x1c\xf1\x28\x79\x0e\x77\x23\xc3\xbe\xcb\x75\xc7\xb8\x03\xdf\x48\x87\x3d\x7c\x67\xf6\xbb\x4f\xeb\xc5\xbd\x8b\xfd\xb1\x91\xf3\x71\x19\xa4\xd3\x75\x50\x6e\x31\xfb\x4c\x77\x34\xc8\xcd\x2e\xb8\xcc\x9c\x85\x13\xc9\x2c\xb3\x8a\xa9\x79\xd0\x01\x95\x92\xea\x59\x08\x5d\x2a\xd6\x9a\x30\x90\xde\xf6\xfc\x07\x69\xcc\xdf\x6a\x21\x44\x3c\xcd\x97\xe9\x15\x82\x36\x8a\x89\x4d\xde\x50\x53\x6e\xe3\xda\xb8\x2b\xc3\xa0\xa2\x06\x49\x12\xc2\x1a\x56\xbd\x66\x9f\xee\xeb\x2a\x0a\x3b\xc2\xbb\x70\xa8\x78\x47\xcb\x2d\x96\x4f\xce\xea\x45\x3e\x91\x2c\x13\xd2\x57\x53\xb0\x50\x6f\x05\x4c\xb0\x26\x88\x63\xe7\x53\xe8\x87\x13\x19\x30\xb3\x8c\x33\x6d\x5e\x77\x9c\xdb\x5b\x47\xfb\x29\x6d\x2a\xd9\x19\x2f\xdb\xb0\xea\x95\x2f\xe8\x0b\x8d\x3c\xe2\x29\x44\xd5\x32\xbf\xc5\xe3\xc3\xfa\x33\x96\x86\xed\x30\xbb\x0f\xf2\x29\x39\x15\x1b\x8b\x70\x28\x55\x27\x3c\xa7\xf3\xd4\x57\xbf\x3f\xda\xa3\xd9\x4a\x11\xe4\xd1\x1e\x6b\x4e\x9f\xd0\x39\x3e\x92\x67\xa7\x20\xcf\x56\xdf\x85\xce\x4f\x73\x6c\x1d\xc1\x7e\x9c\xed\x0a\xed\x68\x8f\xe7\x13\x37\x48\x36\xd7\xb2\x33\x6d\x67\xb2\x5a\xaa\x86\x9a\xa2\xa5\x4a\x23\x5d\x73\xf4\x29\x50\xd8\x4a\x65\x74\x21\xe4\x95\xe3\xb7\x3c\xd6\x5b\xe4\x3c\xe8\xb0\xde\xd6\x8d\xc3\x3f\x0b\xff\xe2\xc0\xeb\x3d\xab\x0d\x01\x2a\xaa\xf3\x9b\x53\x51\xb5\x67\xe1\xc8\xea\x3d\x33\x75\x39\x4d\xb1\x33\x10\x38\x33\xcf\xa7\xef\x1a\x96\x33\xd1\x1d\xfe\x06\x75\xc0\x0a\x38\xf8\x0c\xd8\x91\x36\xe1\xc0\xb9\x85\xd4\x2b\x8c\x32\xe7\x53\xe6\x12\x4a\x95\xee\x93\x16\x42\x1c\x01\x8a\x6a\xd6\x44\x48\xe1\x1a\x8e\x1d\xc3\xfd\xf0\xaa\x87\x1a\xa3\x09\xad\x79\xe7\x31\x79\xd5\x2f\xad\xcc\x3d\x47\xaa\x5e\x71\xfe\xa6\x33\x06\xd5\x3b\xd4\x9a\x6e\x50\xc7\xb7\xa8\x38\x67\x3d\x60\x0a\x65\x53\xa5\x40\xd5\x46\xa7\xfe\x9e\xf6\xce\xce\x9b\x25\x87\x30\x33\xef\x2d\x24\xbe\x7f\xf8\x49\xae\x1f\x5a\xba\x17\xf1\xc8\x1e\x21\xfd\x6f\xdf\xa8\x49\xf1\xe3\xc1\xdd\xaa\x67\xec\x09\xe0\x3c\x5c\x56\x37\xf6\x87\xe6\xc6\x0e\x18\xfa\x27\xfb\x08\x68\x28\x40\xb7\x7c\xb4\x89\x3c\x0a\xd2\xd3\xf3\x6a\x0a\x37\x78\x80\x62\x6c\x65\xb5\xd1\xdd\x3a\x26\x51\xe4\x5e\xf3\x38\xcf\xb3\x84\x24\xc3\xa4\xab\x86\x38\xaa\x96\xe3\xc9\xc6\x6b\xda\x39\x67\xbb\x96\x0a\xfe\x4c\xdd\x3b\xc4\x04\xb0\x96\x32\xe5\x82\x83\x3a\x81\x4a\x0e\xe9\xca\x32\xf8\xa8\x58\x03\xfb\x2d\x33\xa8\x5b\x5a\xe2\xb8\xfa\x6c\x8b\x68\x87\x95\x7f\xac\xc8\xa7\x48\xdf\x59\x8c\x48\xdf\xfd\x6f\x74\xc3\x5c\x1e\xb5\x9a\x89\xca\xa1\xa4\xde\xad\x59\xe5\xc0\xa4\xff\x74\x01\xc4\x14\x1a\xbd\xb1\x51\x1a\x3f\x8b\x63\x13\x93\xdd\xac\x86\x35\xd5\x28\x6c\x2f\x7a\xdd\xbc\xba\x0e\x7e\x58\x77\xbd\xea\x35\x81\x69\x0d\x4d\xca\x67\xa8\x3f\x23\x45\xd7\xac\x51\x39\x22\x89\xa3\x98\xc2\xcb\x29\x15\x5b\x1a\x73\xf9\xba\xac\x7d\xf2\xb5\x51\x29\x68\x6c\x93\x49\xde\x75\xc7\x6d\xbb\x7e\xfa\x12\xa8\x86\x98\xc4\xbf\x7f\x8a\xf4\x1f\x2e\xc9\xbe\x2a\xe2\xc1\x80\x4d\x2e\xd2\x72\x6b\x53\xab\x8d\x5a\x6d\x7c\xd4\xfa\x90\x8f\xd2\x6b\xec\xbd\x90\x33\xa1\x51\x99\xd8\x03\xa6\x6e\xe7\xe5\x14\xba\x13\x8d\xa6\x53\xa2\x67\x34\x73\x60\x1a\xce\x11\x53\x8d\xad\xeb\xdd\xc9\x3f\xfa\x77\xa0\xd7\x7e\x7c\x24\x13\x64\x6f\xca\xda\xbf\x94\x80\x2b\x69\x5f\x20\x24\xce\xef\x08\xe4\xb9\xdb\x9e\xe7\x40\x92\x38\xbf\x4b\x6c\xa9\x47\x2f\xfb\x02\xec\xb9\x5b\x13\x8e\xf9\x5f\x01\x00\x00\xff\xff\x43\x20\x8f\x97\xdb\x0d\x00\x00" +var _runtimePluginsLinterLinterLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x58\x7b\x8f\xdb\xb8\x11\xff\xdf\x9f\x62\x20\x54\x80\x14\x4b\x5a\xb4\xe8\x5f\x02\x8c\x22\x6d\x73\x45\x8b\x5c\x52\x60\xd3\x07\x90\xe4\x0a\x5a\x1a\xd9\xbc\xa5\x48\x95\xa4\xec\x75\x17\xf9\xee\xc5\x90\x94\x4c\xf9\xb1\xbd\xb6\x67\xc0\xe2\x43\xf3\x9e\x1f\xc9\xa1\x84\x6a\x98\x00\x3d\x4a\xcb\x7b\x84\x0d\xf0\x7e\x50\xda\x66\x49\x98\x49\xf2\x95\xa7\xe8\xb8\xc0\x81\xd9\x7d\x44\x42\xc3\x87\x69\x7e\x26\x34\x7b\x14\x22\xa2\xea\x79\xa3\xd5\x83\x9b\x9d\x69\xb6\x63\xd7\xa1\xbe\x22\xf2\xd3\x33\x95\x9b\xbc\x24\x4a\xf2\x55\x78\x2d\xb8\xb4\xa8\x0d\x6c\xe0\xe5\xdb\x6a\x55\x96\xd0\x68\x64\x16\x0d\xb0\xf0\x0a\x50\x5a\x7d\x2a\xa0\x61\x42\x40\xa7\x55\x0f\x47\x6e\xf7\x5c\x02\x93\xc0\x25\xb7\x9c\x09\xfe\x2f\x66\xb9\x92\xd0\x8d\xb2\xa1\x4e\x01\x52\x59\x92\xd5\x72\x8d\x8d\x15\x27\x60\x76\xa2\x05\xa1\x58\x0b\x14\x94\x55\x59\x12\x8d\x64\x3d\xd6\xee\x09\xaa\x03\xbb\xc7\xa0\x97\xde\x51\x58\xec\x69\xc0\x7a\xee\x81\x55\xd0\xec\xb1\x79\x82\x4e\x69\x1a\x8c\x26\x66\x68\xfa\xb6\x86\x9e\x71\x39\x19\x3f\x68\xd5\xa0\x31\x60\xf7\x64\x82\x01\x7c\xc6\x66\xb4\xd8\x12\x31\xd3\x3b\x53\xd3\x73\xec\x51\x5a\x43\xd2\x06\x66\x5c\x7b\x36\x63\x92\x40\x0c\xf4\x23\x7d\x69\x47\x34\x1a\x29\xfa\x81\xb8\x19\xb5\x46\x69\x9d\x9d\xce\x99\x05\x7d\x7b\x97\xde\x47\x48\xe9\xd3\xcc\x84\x5a\x2b\xdd\x29\xdd\x33\x5b\xc3\x5e\x1d\xbd\x59\xda\x60\x64\xd4\x43\xa3\xfa\x81\x8b\xc8\x3f\x35\xda\x61\xb4\x93\xd2\xb4\xf3\x11\x2b\x20\x15\x35\xf1\x20\xc8\xb1\xdf\xa2\x2e\x20\xed\x6b\xaf\xe2\xe1\xc8\xb4\xe4\x72\x07\x3d\x1a\xc3\x76\x4e\xb7\x32\x44\x6d\x2c\x65\xe2\xe3\x23\x45\x8d\x9b\x29\x0e\xdc\x80\x19\x07\xc2\x10\xb6\xa0\x34\x8c\x32\x1a\xca\x49\xb3\x1a\x08\x00\x4c\x90\xc9\xac\x2f\xa0\xc5\x8e\x8d\xc2\xd6\xf0\xf9\x2b\x91\x1c\xf7\xdc\x22\x69\xa8\xc1\xec\xd5\x28\x5a\xe7\xd4\xc7\x47\xaf\x75\x8b\xc0\x60\x2b\x58\xf3\xe4\x86\x59\xab\x08\x48\xb4\xac\xe2\x84\xb8\xc4\xef\xd1\x10\x9f\xc9\x9d\xd9\x1a\xd8\x59\x34\x64\x4a\x8a\xd3\x7f\xe6\x7a\xd5\xdc\x8e\x09\x83\x90\x05\x23\x67\x9b\x1c\x63\xab\x7a\x66\x9b\xfd\xc2\x85\x19\x9f\x5b\x04\xa7\x70\xd0\x48\x91\x61\x6e\x21\x8d\x0c\x06\x66\x2d\x6a\x49\xd9\x74\xdc\x6e\x15\x91\x34\xe2\x66\x8d\x1d\xc3\xee\x40\x42\x0a\xf2\x28\x12\x1e\x5c\x70\x6e\xb1\xc6\xf2\x03\xb3\x08\xca\xad\x40\x7c\x66\x8d\xf5\x12\x7f\xaa\x4f\x1a\xff\x39\x72\x8d\x31\x6b\xbe\x9a\x96\x2e\xf4\xec\x09\xdf\x3b\x7d\x19\x21\xb2\x88\x8c\x6a\xfa\xb6\x70\x8b\xa6\x88\x41\x5a\x80\x32\xc5\x39\xfa\xc5\x14\x9e\x7c\x45\xc6\xf0\x6e\xda\x61\x3e\x93\xb8\xaf\xb0\xd9\x80\xe4\x82\xdc\x92\x8e\x80\x7e\x17\x14\xb4\x13\xdd\x7c\x55\xcd\x51\xde\xcc\x66\xdd\xa1\x6c\xfa\x16\x36\x64\xf1\x9d\xf7\xe4\x06\x6c\x9c\x37\x77\x28\x22\x17\x61\x13\x3b\x7c\x87\x5e\x91\x3c\x65\x28\x75\x77\xed\x3f\x63\x74\x13\xe1\x55\x69\x9f\x9a\x3b\x4c\x21\x9e\xb0\x99\x22\xbb\x64\x40\xd9\xae\xe8\x7f\x4e\xa1\xc6\x5e\x1d\xe2\x24\xfa\x54\x5c\x46\x59\x72\x71\xc1\x48\x5b\x74\x16\x88\xdd\xe1\xd0\xe2\x41\x8e\xee\x1c\x4a\x1e\x5a\x3c\x3c\xd0\x20\x99\xf2\x1a\xce\xb6\xea\x0f\x1f\x3f\x3e\x52\x5a\x93\x23\x97\xad\x3a\x9a\x64\x99\xdc\x48\xc6\x87\xbf\xbc\x4f\x66\x9b\x5d\x27\x42\x5b\xb2\x6b\x9a\xa4\x80\xc4\x3d\x7c\xff\x25\x29\x3b\x73\x92\x96\x3d\x97\x84\x7d\x7a\x51\xfe\x8d\x09\xe1\x3b\xf8\x6c\x35\xa3\x6e\xda\x25\xdf\x5c\x53\xa7\xa2\x4e\xdb\x75\x5d\xad\x6b\x48\xfb\x24\xbf\xab\x62\xbd\x7e\x45\x49\x52\x1a\xdb\x6e\x9a\xf5\xfa\x97\xbf\xfe\xff\x35\xb6\x7d\x4b\x0c\xfe\xe1\xfa\x2f\x49\xd9\x28\xa1\xf4\x46\x75\x9d\x13\xab\x4a\xd7\x1c\xfd\x93\xbb\xa6\x59\x68\x49\xb3\x54\xa4\xf9\x2b\x6e\xa9\xed\xc8\x85\xd3\xb1\x53\xf3\xf3\x25\x99\x67\x4b\x1a\x87\x44\x9c\x0d\xbf\x27\x8c\x80\x12\xcb\x0a\xe3\x97\x6b\xb7\x6f\x4b\xf8\x91\x1d\x98\x73\x80\x3a\x53\x1b\x42\xed\xcc\x49\xdb\xab\x20\xfa\x05\x76\x4f\xa0\xd9\x07\x93\x48\x92\x69\x34\x1f\xfc\x68\x9a\x8f\x4d\xf3\xc7\x5d\x2a\x8a\x6a\x5d\xdc\x16\x27\xb8\x45\xcd\x2c\x92\x88\x8b\x7e\xc8\xcf\x75\x8e\x7b\x7a\xf3\xad\xf0\xeb\xae\x00\xab\x47\xbc\x21\x78\x64\xae\x36\x71\xc2\x46\x16\x9a\x69\xea\x25\x29\x4b\xa9\x7c\xf2\x6f\x82\xe8\xb6\xb5\x92\x93\xee\x65\xf3\x92\xcc\x7a\xca\x92\xf6\x90\xef\x46\x21\xfe\xcc\xec\xde\xf8\x29\x63\x5b\x35\x5a\xdf\xa7\x10\x99\x3a\x80\x6d\xd6\x59\xa5\xa2\x80\xb4\x5d\x57\xb7\x95\x36\x82\xc9\x1d\x31\xa8\xed\x8f\x48\x27\x0e\xfa\xa0\x3c\x37\x7a\x94\xde\x80\x89\xe2\x67\x5e\xa2\xc3\xa9\x13\xec\x09\x9d\x23\xc3\xc9\xee\x95\xf4\xbd\x79\xf6\x02\x86\x55\x59\xff\xe6\xb6\xa4\xfe\x34\x9c\x96\x52\xc2\xcc\x85\x84\x7b\x76\x4c\xcb\x20\xb6\x62\x5e\x0a\x65\xe9\x2b\xae\xd2\x9f\x09\x1b\x57\xa1\xb1\xad\x40\x1f\x74\x8d\x54\x19\x99\x8d\x54\xd7\x48\xbf\xa9\xce\xec\xbb\xde\x69\xf3\x25\xbe\xeb\xf8\x99\x9f\xbc\xec\xcc\x91\xdb\xce\x65\xc9\x1c\x79\x67\x97\xe9\x72\x53\x37\x70\x7d\x4e\x05\x51\xb5\x4c\x1f\xb9\xa4\xf7\xb7\x01\x7e\xa1\xa2\xb9\x6d\x5e\x24\x50\x70\x39\x3e\xdf\x97\x77\x62\xbd\xf3\x35\x6e\xa3\x10\xfb\xd8\xba\xc8\x33\x6d\xa6\xe8\xde\xd0\xe7\x03\xb2\x3c\xcc\x1a\x25\x2d\xe3\xd2\x64\xbe\x2a\x41\x81\x54\xe5\x7b\x1b\xa8\x18\x7c\x2a\xe0\x00\x5c\xc2\xc0\xb8\xf6\x44\x39\xb4\x6a\x3e\xb6\x78\x07\x07\x3a\xd5\x02\xdf\xf2\x4c\xa3\x9f\x46\x3b\x52\x3d\xa7\xc7\xf3\xc1\x4d\x16\xc4\x6d\xa0\xf1\x87\xf5\xc5\x21\x3d\xca\x10\x85\xed\xd8\xc5\x67\x6e\x47\xc5\xc1\x76\xec\xea\xef\xb8\xc0\x4f\xa7\x01\x17\x27\xb2\xbb\x5f\xb8\xf7\x15\xad\xf7\xf8\xac\xe6\x3a\x94\x45\x74\x91\xac\x7e\xcf\x75\x46\x83\x7c\x75\xd7\x63\x57\x0e\x2c\x9c\x9e\x2c\x98\x0a\x0e\xb2\x65\x03\x87\xea\xaa\xd8\xa2\xe8\xcc\x85\xc9\x55\x68\xce\x02\x8c\xd5\x5c\xee\x2a\x37\xcc\x3a\x5b\x44\xb2\xf2\x45\xd4\x2e\x4c\xd8\x33\x43\x45\xc5\x39\x89\x87\x8a\xaa\xcc\xb8\xe4\xc8\x63\x63\xe8\x9a\xe0\x79\x98\x6c\xe1\x10\x15\x5a\xaf\x18\xb7\x2c\xba\xa6\x9c\x05\x89\x67\x69\x24\xfb\x7f\x96\x38\x0f\x42\x02\x98\xde\x9d\x53\x70\x70\x65\xe8\x22\x03\xf4\xf3\xd3\x9f\x9f\xbe\xfa\x02\xb5\xde\x99\x71\x9b\x25\x69\x4a\x3b\xb8\x4b\xe9\x3c\x43\xe7\x68\xcb\xf5\x9d\x50\xf2\x6e\x36\xed\xca\x66\xca\x3e\x21\xaf\x70\xa8\xa8\x5c\x69\xef\xf5\x52\x1b\x55\xbb\xf9\x4d\x70\x2f\xb1\xac\xe4\x23\x3b\x60\xb6\x1d\xc2\x0a\xe7\x8d\x56\xd5\x7b\xb5\xcb\x92\xc7\xb7\x7f\x7d\x17\xb6\xaa\x08\xf0\x43\xf5\xdb\x09\xf3\xaf\xac\x90\xb3\x89\x1e\xaa\xf7\x2e\x20\x5e\x10\xad\x98\xdf\x09\x64\xfa\x7b\x7f\x9d\x9d\x00\x1e\xf0\xef\xb6\xd5\xea\x4f\x6a\xfb\x38\xb0\xa3\xcc\x22\x49\x49\x12\xfe\x9e\xbe\x52\xf2\xdd\xb3\x2b\x04\x16\xaa\x17\xfa\x2e\xbd\x27\x86\xcc\x9f\x07\xaf\xb1\x5d\xc4\xe6\xe3\x87\x77\x7f\xff\xe3\xa7\xe4\x72\xde\xcb\x89\xd7\x3c\x15\x34\x74\xb9\x30\x83\x88\xf4\x24\x5f\x64\x12\x9c\x0b\x5f\x9f\x70\x87\xcf\xcb\xab\xca\x02\x3a\x49\x56\x55\x65\x9e\x9c\xd1\xe3\xb6\xdc\x2c\x6d\xd7\xf1\x64\xef\x29\x69\x6e\xde\x38\xfe\x51\xb8\x9a\x8a\x4b\xe0\xf3\xde\x81\x4b\xdc\x96\x25\x7c\xd2\xbc\xf7\xb7\x1a\x33\xb0\x66\x71\x9b\xa1\x2d\x8b\x9a\xda\x6f\x04\xc9\x0f\xa9\x79\x43\x3a\x52\xf3\xe6\x17\xc9\x62\x21\x87\x0d\xa3\xe3\xb2\x75\x5a\x0a\xef\x56\x7e\x03\xc1\xf3\x7e\xe8\xc2\x8d\x05\xf4\x66\x77\xb9\xe5\xc4\x22\x16\xdc\xbc\x83\x2d\x33\x48\x77\xa1\x6c\xda\x4c\x73\xda\xec\xe6\x59\xb7\xd2\xae\xd5\x9e\x55\x6f\xbd\x3e\xff\xb9\xad\xfa\x80\xc7\x80\xbc\xb7\xf6\x3d\x97\x98\x4d\x10\xe8\xcd\xae\x00\xab\xfc\xf7\x17\x67\x50\x5e\x4c\x4c\xdf\x7f\x7a\x47\xc9\xca\xaf\x34\x10\x9a\xdf\xb6\x6d\x90\x98\x91\xaa\x25\x51\xbc\x5b\xdd\x5f\x98\x1e\x31\xc6\xea\x02\x0c\x0e\xf9\x02\x2c\x66\x14\xf6\x7c\xd7\x5e\x42\x28\x4b\xb2\xcf\x3f\xa4\xe6\xab\x43\x86\x87\x52\x36\x0b\x20\x44\x20\x6b\xf6\x84\x07\x63\x75\xbd\xf3\xa1\x0e\x79\x8a\x30\x61\xe9\xc4\xae\xb8\x34\xa8\x6d\xe6\x15\x16\x8e\x33\xbf\x75\x48\x7a\x82\x0b\x07\x96\xd9\x88\x2c\x35\x38\xb8\x5b\xe9\x7f\x7b\x1b\x0d\x7c\x5f\xbe\x24\x0b\x1b\xbc\x50\xf7\x11\x72\x46\x90\x5b\x11\x1e\x5f\x49\x56\xbd\x49\xa0\xaa\x1c\x7b\x55\x41\x92\x67\xd5\x9b\xdc\x15\x23\xbf\x4a\x16\x1b\x99\xfb\x8a\x47\x52\xff\x1d\x00\x00\xff\xff\x9f\x7b\x2f\x98\x12\x16\x00\x00" func runtimePluginsLinterLinterLuaBytes() ([]byte, error) { return bindataRead( diff --git a/internal/lua/lua.go b/internal/lua/lua.go index ddbcf3de..f85a4ff0 100644 --- a/internal/lua/lua.go +++ b/internal/lua/lua.go @@ -57,7 +57,7 @@ func Import(pkg string) *lua.LTable { return importRuntime() case "path": return importPath() - case "filepath": + case "path/filepath", "filepath": return importFilePath() case "strings": return importStrings() @@ -67,7 +67,7 @@ func Import(pkg string) *lua.LTable { return importErrors() case "time": return importTime() - case "utf8": + case "unicode/utf8", "utf8": return importUtf8() default: return nil diff --git a/internal/shell/job.go b/internal/shell/job.go index d3c33bf8..3dfb8ced 100644 --- a/internal/shell/job.go +++ b/internal/shell/job.go @@ -32,17 +32,17 @@ func init() { // JobFunction is a representation of a job (this data structure is what is loaded // into the jobs channel) type JobFunction struct { - Function func(string, ...string) + Function func(string, ...interface{}) Output string - Args []string + Args []interface{} } // A CallbackFile is the data structure that makes it possible to catch stderr and stdout write events type CallbackFile struct { io.Writer - callback func(string, ...string) - args []string + callback func(string, ...interface{}) + args []interface{} } func (f *CallbackFile) Write(data []byte) (int, error) { @@ -55,13 +55,13 @@ func (f *CallbackFile) Write(data []byte) (int, error) { // JobStart starts a shell command in the background with the given callbacks // It returns an *exec.Cmd as the job id -func JobStart(cmd string, onStdout, onStderr, onExit string, userargs ...string) *exec.Cmd { +func JobStart(cmd string, onStdout, onStderr, onExit string, userargs ...interface{}) *exec.Cmd { return JobSpawn("sh", []string{"-c", cmd}, onStdout, onStderr, onExit, userargs...) } // JobSpawn starts a process with args in the background with the given callbacks // It returns an *exec.Cmd as the job id -func JobSpawn(cmdName string, cmdArgs []string, onStdout, onStderr, onExit string, userargs ...string) *exec.Cmd { +func JobSpawn(cmdName string, cmdArgs []string, onStdout, onStderr, onExit string, userargs ...interface{}) *exec.Cmd { // Set up everything correctly if the functions have been provided proc := exec.Command(cmdName, cmdArgs...) var outbuf bytes.Buffer @@ -104,12 +104,13 @@ func JobSend(cmd *exec.Cmd, data string) { // luaFunctionJob returns a function that will call the given lua function // structured as a job call i.e. the job output and arguments are provided // to the lua function -func luaFunctionJob(fn string) func(string, ...string) { +func luaFunctionJob(fn string) func(string, ...interface{}) { luaFn := strings.Split(fn, ".") plName, plFn := luaFn[0], luaFn[1] pl := config.FindPlugin(plName) - return func(output string, args ...string) { + return func(output string, args ...interface{}) { var luaArgs []lua.LValue + luaArgs = append(luaArgs, luar.New(ulua.L, output)) for _, v := range args { luaArgs = append(luaArgs, luar.New(ulua.L, v)) } @@ -119,11 +120,3 @@ func luaFunctionJob(fn string) func(string, ...string) { } } } - -func unpack(old []string) []interface{} { - new := make([]interface{}, len(old)) - for i, v := range old { - new[i] = v - } - return new -} diff --git a/internal/util/util.go b/internal/util/util.go index bdcf11ee..280c6cae 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -3,6 +3,7 @@ package util import ( "errors" "fmt" + "log" "os" "os/user" "path/filepath" @@ -202,10 +203,10 @@ func FSize(f *os.File) int64 { } // IsWordChar returns whether or not the string is a 'word character' -// If it is a unicode character, then it does not match -// Word characters are defined as [A-Za-z0-9_] +// Word characters are defined as numbers, letters, or '_' func IsWordChar(r rune) bool { - return (r >= '0' && r <= '9') || (r >= 'A' && r <= 'Z') || (r >= 'a' && r <= 'z') || (r == '_') + log.Println("IsWordChar") + return unicode.IsLetter(r) || unicode.IsNumber(r) || r == '_' } // Spaces returns a string with n spaces @@ -237,7 +238,7 @@ func IsSpacesOrTabs(str []byte) bool { // IsWhitespace returns true if the given rune is a space, tab, or newline func IsWhitespace(c rune) bool { - return c == ' ' || c == '\t' || c == '\n' + return unicode.IsSpace(c) } // IsBytesWhitespace returns true if the given bytes are all whitespace diff --git a/runtime/plugins/linter/linter.lua b/runtime/plugins/linter/linter.lua index e1ec9773..46be745b 100644 --- a/runtime/plugins/linter/linter.lua +++ b/runtime/plugins/linter/linter.lua @@ -1,75 +1,126 @@ -if GetOption("linter") == nil then - AddOption("linter", true) +local runtime = import("runtime") +local filepath = import("path/filepath") +local shell = import("micro/shell") +local buffer = import("micro/buffer") +local micro = import("micro") + +local linters = {} + +-- creates a linter entry, call from within an initialization function, not +-- directly at initial load time +-- +-- name: name of the linter +-- filetype: filetype to check for to use linter +-- cmd: main linter process that is executed +-- args: arguments to pass to the linter process +-- use %f to refer to the current file name +-- use %d to refer to the current directory name +-- errorformat: how to parse the linter/compiler process output +-- %f: file, %l: line number, %m: error/warning message +-- os: list of OSs this linter is supported or unsupported on +-- optional param, default: [] +-- whitelist: should the OS list be a blacklist (do not run the linter for these OSs) +-- or a whitelist (only run the linter for these OSs) +-- optional param, default: false (should blacklist) +-- domatch: should the filetype be interpreted as a lua pattern to match with +-- the actual filetype, or should the linter only activate on an exact match +-- optional param, default: false (require exact match) +function makeLinter(name, filetype, cmd, args, errorformat, os, whitelist, domatch) + if linters[name] == nil then + linters[name] = {} + linters[name].filetype = filetype + linters[name].cmd = cmd + linters[name].args = args + linters[name].errorformat = errorformat + linters[name].os = os or {} + linters[name].whitelist = whitelist or false + linters[name].domatch = domatch or false + end end -MakeCommand("lint", "linter.lintCommand", 0) - -function lintCommand() - CurView():Save(false) - runLinter() +function removeLinter(name) + linters[name] = nil end -function runLinter() - local ft = CurView().Buf:FileType() - local file = CurView().Buf.Path - local dir = DirectoryName(file) - if OS == "windows" then +function init() + local devnull = "/dev/null" + if runtime.GOOS == "windows" then devnull = "NUL" - else - devnull = "/dev/null" end - if ft == "c" then - lint("gcc", "gcc", {"-fsyntax-only", "-Wall", "-Wextra", file}, "%f:%l:%d+:.+: %m") - elseif ft == "c++" then - lint("gcc", "gcc", {"-fsyntax-only","-std=c++14", "-Wall", "-Wextra", file}, "%f:%l:%d+:.+: %m") - elseif ft == "d" then - lint("dmd", "dmd", {"-color=off", "-o-", "-w", "-wi", "-c", file}, "%f%(%l%):.+: %m") - elseif ft == "go" then - lint("gobuild", "go", {"build", "-o", devnull}, "%f:%l: %m") - lint("golint", "golint", {file}, "%f:%l:%d+: %m") - elseif ft == "java" then - lint("javac", "javac", {"-d", dir, file}, "%f:%l: error: %m") - elseif ft == "javascript" then - lint("jshint", "jshint", {file}, "%f: line %l,.+, %m") - elseif string.match(ft, "literate") then - lint("literate", "lit", {"-c", file}, "%f:%l:%m") - elseif ft == "lua" then - lint("luacheck", "luacheck", {"--no-color", file}, "%f:%l:%d+: %m") - elseif ft == "nim" then - lint("nim", "nim", {"check", "--listFullPaths", "--stdout", "--hints:off", file}, "%f.%l, %d+. %m") - elseif ft == "Objective-C" then - lint("clang", "xcrun", {"clang", "-fsyntax-only", "-Wall", "-Wextra", file}, "%f:%l:%d+:.+: %m") - elseif ft == "python" then - lint("pyflakes", "pyflakes", {file}, "%f:%l:.-:? %m") - lint("mypy", "mypy", {file}, "%f:%l: %m") - lint("pylint", "pylint", {"--output-format=parseable", "--reports=no", file}, "%f:%l: %m") - elseif ft == "shell" then - lint("shfmt", "shfmt", {file}, "%f:%l:%d+: %m") - elseif ft == "swift" and OS == "darwin" then - lint("switfc", "xcrun", {"swiftc", file}, "%f:%l:%d+:.+: %m") - elseif ft == "swift" and OS == "linux" then - lint("switfc", "swiftc", {file}, "%f:%l:%d+:.+: %m") - elseif ft == "yaml" then - lint("yaml", "yamllint", {"--format", "parsable", file}, "%f:%l:%d+:.+ %m") + makeLinter("gcc", "c", "gcc", {"-fsyntax-only", "-Wall", "-Wextra", "%f"}, "%f:%l:%d+:.+: %m") + makeLinter("gcc", "c++", "gcc", {"-fsyntax-only","-std=c++14", "-Wall", "-Wextra", "%f"}, "%f:%l:%d+:.+: %m") + makeLinter("dmd", "d", "dmd", {"-color=off", "-o-", "-w", "-wi", "-c", "%f"}, "%f%(%l%):.+: %m") + makeLinter("gobuild", "go", "go", {"build", "-o", devnull}, "%f:%l: %m") + makeLinter("golint", "go", "golint", {"%f"}, "%f:%l:%d+: %m") + makeLinter("javac", "java", "javac", {"-d", "%d", "%f"}, "%f:%l: error: %m") + makeLinter("jshint", "javascript", "jshint", {"%f"}, "%f: line %l,.+, %m") + makeLinter("literate", "literate", "lit", {"-c", "%f"}, "%f:%l:%m", {}, false, true) + makeLinter("luacheck", "lua", "luacheck", {"--no-color", "%f"}, "%f:%l:%d+: %m") + makeLinter("nim", "nim", "nim", {"check", "--listFullPaths", "--stdout", "--hints:off", "%f"}, "%f.%l, %d+. %m") + makeLinter("clang", "objective-c", "xcrun", {"clang", "-fsyntax-only", "-Wall", "-Wextra", "%f"}, "%f:%l:%d+:.+: %m") + makeLinter("pyflakes", "python", "pyflakes", {"%f"}, "%f:%l:.-:? %m") + makeLinter("mypy", "python", "mypy", {"%f"}, "%f:%l: %m") + makeLinter("pylint", "python", "pylint", {"--output-format=parseable", "--reports=no", "%f"}, "%f:%l: %m") + makeLinter("shfmt", "shell", "shfmt", {"%f"}, "%f:%l:%d+: %m") + makeLinter("switfc", "swift", "xcrun", {"swiftc", "%f"}, "%f:%l:%d+:.+: %m", {"darwin"}, true) + makeLinter("switfc", "swiftc", {"%f"}, "%f:%l:%d+:.+: %m", {"linux"}, true) + makeLinter("yaml", "yaml", "yamllint", {"--format", "parsable", "%f"}, "%f:%l:%d+:.+ %m") +end + +function contains(list, element) + for k, v in pairs(list) do + if v == element then + return true + end + end + return false +end + +function runLinter(buf) + local ft = buf:FileType() + local file = buf.Path + local dir = filepath.Dir(file) + + for k, v in pairs(linters) do + local ftmatch = ft == v.filetype + if v.domatch then + ftmatch = string.match(ft, v.filetype) + end + + local hasOS = contains(v.os, runtime.GOOS) + if not hasOS and v.whitelist then + ftmatch = false + end + if hasOS and not v.whitelist then + ftmatch = false + end + + for k, arg in pairs(v.args) do + v.args[k] = arg:gsub("%%f", file):gsub("%%d", dir) + end + + if ftmatch then + lint(buf, k, v.cmd, v.args, v.errorformat) + end end end -function onSave(view) - if GetOption("linter") then - runLinter() - else - CurView():ClearAllGutterMessages() - end +function onSave(bp) + micro.Log("SAVE") + runLinter(bp.Buf) + return false end -function lint(linter, cmd, args, errorformat) - CurView():ClearGutterMessages(linter) +function lint(buf, linter, cmd, args, errorformat) + buf:ClearMessages("linter") - JobSpawn(cmd, args, "", "", "linter.onExit", linter, errorformat) + shell.JobSpawn(cmd, args, "", "", "linter.onExit", buf, linter, errorformat) end -function onExit(output, linter, errorformat) +function onExit(output, buf, linter, errorformat) + micro.Log("ONEXIT") + micro.Log(output) local lines = split(output, "\n") local regex = errorformat:gsub("%%f", "(..-)"):gsub("%%l", "(%d+)"):gsub("%%m", "(.+)") @@ -78,8 +129,9 @@ function onExit(output, linter, errorformat) line = line:match("^%s*(.+)%s*$") if string.find(line, regex) then local file, line, msg = string.match(line, regex) - if basename(CurView().Buf.Path) == basename(file) then - CurView():GutterMessage(linter, tonumber(line), msg, 2) + if basename(buf.Path) == basename(file) then + local bmsg = buffer.NewMessageAtLine("linter", msg, tonumber(line), buffer.MTError) + buf:AddMessage(bmsg) end end end @@ -96,7 +148,7 @@ end function basename(file) local sep = "/" - if OS == "windows" then + if runtime.GOOS == "windows" then sep = "\\" end local name = string.gsub(file, "(.*" .. sep .. ")(.*)", "%2") From be136a464878c2763eb9401c811c1e91cc3e99e3 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 3 Aug 2019 15:19:28 -0700 Subject: [PATCH 138/231] Full extensible linter support --- cmd/micro/initlua.go | 17 ++- internal/action/command.go | 38 +++++-- internal/config/plugin.go | 4 +- internal/config/runtime.go | 2 +- internal/config/settings.go | 168 +++++++++++++++++++----------- runtime/plugins/linter/linter.lua | 12 ++- 6 files changed, 159 insertions(+), 82 deletions(-) diff --git a/cmd/micro/initlua.go b/cmd/micro/initlua.go index a166b1fd..665ed37e 100644 --- a/cmd/micro/initlua.go +++ b/cmd/micro/initlua.go @@ -28,6 +28,8 @@ func LuaImport(pkg string) *lua.LTable { return luaImportMicroShell() case "micro/buffer": return luaImportMicroBuffer() + case "micro/config": + return luaImportMicroConfig() case "micro/util": return luaImportMicroUtil() default: @@ -43,7 +45,20 @@ func luaImportMicro() *lua.LTable { ulua.L.SetField(pkg, "InfoBar", luar.New(ulua.L, action.GetInfoBar)) ulua.L.SetField(pkg, "Log", luar.New(ulua.L, log.Println)) ulua.L.SetField(pkg, "SetStatusInfoFn", luar.New(ulua.L, display.SetStatusInfoFnLua)) - // ulua.L.SetField(pkg, "TryBindKey", luar.New(ulua.L, action.TryBindKey)) + + return pkg +} + +func luaImportMicroConfig() *lua.LTable { + pkg := ulua.L.NewTable() + + ulua.L.SetField(pkg, "MakeCommand", luar.New(ulua.L, action.LuaMakeCommand)) + ulua.L.SetField(pkg, "FileComplete", luar.New(ulua.L, buffer.FileComplete)) + ulua.L.SetField(pkg, "HelpComplete", luar.New(ulua.L, action.HelpComplete)) + ulua.L.SetField(pkg, "OptionComplete", luar.New(ulua.L, action.OptionComplete)) + ulua.L.SetField(pkg, "OptionValueComplete", luar.New(ulua.L, action.OptionValueComplete)) + ulua.L.SetField(pkg, "NoComplete", luar.New(ulua.L, nil)) + ulua.L.SetField(pkg, "TryBindKey", luar.New(ulua.L, action.TryBindKey)) return pkg } diff --git a/internal/action/command.go b/internal/action/command.go index 0cff15bf..67f25546 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -10,8 +10,12 @@ import ( "strings" "unicode/utf8" + luar "layeh.com/gopher-luar" + + lua "github.com/yuin/gopher-lua" "github.com/zyedidia/micro/internal/buffer" "github.com/zyedidia/micro/internal/config" + ulua "github.com/zyedidia/micro/internal/lua" "github.com/zyedidia/micro/internal/screen" "github.com/zyedidia/micro/internal/shell" "github.com/zyedidia/micro/internal/util" @@ -63,16 +67,29 @@ func InitCommands() { // MakeCommand is a function to easily create new commands // This can be called by plugins in Lua so that plugins can define their own commands -// func MakeCommand(name, function string, completions ...Completion) { -// action := commandActions[function] -// // if _, ok := commandActions[function]; !ok { -// // If the user seems to be binding a function that doesn't exist -// // We hope that it's a lua function that exists and bind it to that -// // action = LuaFunctionCommand(function) -// // } -// -// commands[name] = Command{action, completions} -// } +func LuaMakeCommand(name, function string, completer buffer.Completer) { + action := LuaFunctionCommand(function) + commands[name] = Command{action, completer} +} + +// LuaFunctionCommand returns a normal function +// so that a command can be bound to a lua function +func LuaFunctionCommand(fn string) func(*BufPane, []string) { + luaFn := strings.Split(fn, ".") + plName, plFn := luaFn[0], luaFn[1] + pl := config.FindPlugin(plName) + return func(bp *BufPane, args []string) { + var luaArgs []lua.LValue + luaArgs = append(luaArgs, luar.New(ulua.L, bp)) + for _, v := range args { + luaArgs = append(luaArgs, luar.New(ulua.L, v)) + } + _, err := pl.Call(plFn, luaArgs...) + if err != nil { + screen.TermMessage(err) + } + } +} // CommandEditAction returns a bindable function that opens a prompt with // the given string and executes the command when the user presses @@ -456,7 +473,6 @@ func (h *BufPane) SetLocalCmd(args []string) { if err != nil { InfoBar.Error(err) } - } // ShowCmd shows the value of the given option diff --git a/internal/config/plugin.go b/internal/config/plugin.go index dffad485..e3f2e42b 100644 --- a/internal/config/plugin.go +++ b/internal/config/plugin.go @@ -95,9 +95,7 @@ func (p *Plugin) Load() error { return err } p.Loaded = true - if _, ok := GlobalSettings[p.Name]; !ok { - AddOption(p.Name, true) - } + RegisterGlobalOption(p.Name, true) } return nil } diff --git a/internal/config/runtime.go b/internal/config/runtime.go index 905b354b..baa0e43f 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -1071,7 +1071,7 @@ func runtimePluginsFtoptionsFtoptionsLua() (*asset, error) { return a, nil } -var _runtimePluginsLinterLinterLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x58\x7b\x8f\xdb\xb8\x11\xff\xdf\x9f\x62\x20\x54\x80\x14\x4b\x5a\xb4\xe8\x5f\x02\x8c\x22\x6d\x73\x45\x8b\x5c\x52\x60\xd3\x07\x90\xe4\x0a\x5a\x1a\xd9\xbc\xa5\x48\x95\xa4\xec\x75\x17\xf9\xee\xc5\x90\x94\x4c\xf9\xb1\xbd\xb6\x67\xc0\xe2\x43\xf3\x9e\x1f\xc9\xa1\x84\x6a\x98\x00\x3d\x4a\xcb\x7b\x84\x0d\xf0\x7e\x50\xda\x66\x49\x98\x49\xf2\x95\xa7\xe8\xb8\xc0\x81\xd9\x7d\x44\x42\xc3\x87\x69\x7e\x26\x34\x7b\x14\x22\xa2\xea\x79\xa3\xd5\x83\x9b\x9d\x69\xb6\x63\xd7\xa1\xbe\x22\xf2\xd3\x33\x95\x9b\xbc\x24\x4a\xf2\x55\x78\x2d\xb8\xb4\xa8\x0d\x6c\xe0\xe5\xdb\x6a\x55\x96\xd0\x68\x64\x16\x0d\xb0\xf0\x0a\x50\x5a\x7d\x2a\xa0\x61\x42\x40\xa7\x55\x0f\x47\x6e\xf7\x5c\x02\x93\xc0\x25\xb7\x9c\x09\xfe\x2f\x66\xb9\x92\xd0\x8d\xb2\xa1\x4e\x01\x52\x59\x92\xd5\x72\x8d\x8d\x15\x27\x60\x76\xa2\x05\xa1\x58\x0b\x14\x94\x55\x59\x12\x8d\x64\x3d\xd6\xee\x09\xaa\x03\xbb\xc7\xa0\x97\xde\x51\x58\xec\x69\xc0\x7a\xee\x81\x55\xd0\xec\xb1\x79\x82\x4e\x69\x1a\x8c\x26\x66\x68\xfa\xb6\x86\x9e\x71\x39\x19\x3f\x68\xd5\xa0\x31\x60\xf7\x64\x82\x01\x7c\xc6\x66\xb4\xd8\x12\x31\xd3\x3b\x53\xd3\x73\xec\x51\x5a\x43\xd2\x06\x66\x5c\x7b\x36\x63\x92\x40\x0c\xf4\x23\x7d\x69\x47\x34\x1a\x29\xfa\x81\xb8\x19\xb5\x46\x69\x9d\x9d\xce\x99\x05\x7d\x7b\x97\xde\x47\x48\xe9\xd3\xcc\x84\x5a\x2b\xdd\x29\xdd\x33\x5b\xc3\x5e\x1d\xbd\x59\xda\x60\x64\xd4\x43\xa3\xfa\x81\x8b\xc8\x3f\x35\xda\x61\xb4\x93\xd2\xb4\xf3\x11\x2b\x20\x15\x35\xf1\x20\xc8\xb1\xdf\xa2\x2e\x20\xed\x6b\xaf\xe2\xe1\xc8\xb4\xe4\x72\x07\x3d\x1a\xc3\x76\x4e\xb7\x32\x44\x6d\x2c\x65\xe2\xe3\x23\x45\x8d\x9b\x29\x0e\xdc\x80\x19\x07\xc2\x10\xb6\xa0\x34\x8c\x32\x1a\xca\x49\xb3\x1a\x08\x00\x4c\x90\xc9\xac\x2f\xa0\xc5\x8e\x8d\xc2\xd6\xf0\xf9\x2b\x91\x1c\xf7\xdc\x22\x69\xa8\xc1\xec\xd5\x28\x5a\xe7\xd4\xc7\x47\xaf\x75\x8b\xc0\x60\x2b\x58\xf3\xe4\x86\x59\xab\x08\x48\xb4\xac\xe2\x84\xb8\xc4\xef\xd1\x10\x9f\xc9\x9d\xd9\x1a\xd8\x59\x34\x64\x4a\x8a\xd3\x7f\xe6\x7a\xd5\xdc\x8e\x09\x83\x90\x05\x23\x67\x9b\x1c\x63\xab\x7a\x66\x9b\xfd\xc2\x85\x19\x9f\x5b\x04\xa7\x70\xd0\x48\x91\x61\x6e\x21\x8d\x0c\x06\x66\x2d\x6a\x49\xd9\x74\xdc\x6e\x15\x91\x34\xe2\x66\x8d\x1d\xc3\xee\x40\x42\x0a\xf2\x28\x12\x1e\x5c\x70\x6e\xb1\xc6\xf2\x03\xb3\x08\xca\xad\x40\x7c\x66\x8d\xf5\x12\x7f\xaa\x4f\x1a\xff\x39\x72\x8d\x31\x6b\xbe\x9a\x96\x2e\xf4\xec\x09\xdf\x3b\x7d\x19\x21\xb2\x88\x8c\x6a\xfa\xb6\x70\x8b\xa6\x88\x41\x5a\x80\x32\xc5\x39\xfa\xc5\x14\x9e\x7c\x45\xc6\xf0\x6e\xda\x61\x3e\x93\xb8\xaf\xb0\xd9\x80\xe4\x82\xdc\x92\x8e\x80\x7e\x17\x14\xb4\x13\xdd\x7c\x55\xcd\x51\xde\xcc\x66\xdd\xa1\x6c\xfa\x16\x36\x64\xf1\x9d\xf7\xe4\x06\x6c\x9c\x37\x77\x28\x22\x17\x61\x13\x3b\x7c\x87\x5e\x91\x3c\x65\x28\x75\x77\xed\x3f\x63\x74\x13\xe1\x55\x69\x9f\x9a\x3b\x4c\x21\x9e\xb0\x99\x22\xbb\x64\x40\xd9\xae\xe8\x7f\x4e\xa1\xc6\x5e\x1d\xe2\x24\xfa\x54\x5c\x46\x59\x72\x71\xc1\x48\x5b\x74\x16\x88\xdd\xe1\xd0\xe2\x41\x8e\xee\x1c\x4a\x1e\x5a\x3c\x3c\xd0\x20\x99\xf2\x1a\xce\xb6\xea\x0f\x1f\x3f\x3e\x52\x5a\x93\x23\x97\xad\x3a\x9a\x64\x99\xdc\x48\xc6\x87\xbf\xbc\x4f\x66\x9b\x5d\x27\x42\x5b\xb2\x6b\x9a\xa4\x80\xc4\x3d\x7c\xff\x25\x29\x3b\x73\x92\x96\x3d\x97\x84\x7d\x7a\x51\xfe\x8d\x09\xe1\x3b\xf8\x6c\x35\xa3\x6e\xda\x25\xdf\x5c\x53\xa7\xa2\x4e\xdb\x75\x5d\xad\x6b\x48\xfb\x24\xbf\xab\x62\xbd\x7e\x45\x49\x52\x1a\xdb\x6e\x9a\xf5\xfa\x97\xbf\xfe\xff\x35\xb6\x7d\x4b\x0c\xfe\xe1\xfa\x2f\x49\xd9\x28\xa1\xf4\x46\x75\x9d\x13\xab\x4a\xd7\x1c\xfd\x93\xbb\xa6\x59\x68\x49\xb3\x54\xa4\xf9\x2b\x6e\xa9\xed\xc8\x85\xd3\xb1\x53\xf3\xf3\x25\x99\x67\x4b\x1a\x87\x44\x9c\x0d\xbf\x27\x8c\x80\x12\xcb\x0a\xe3\x97\x6b\xb7\x6f\x4b\xf8\x91\x1d\x98\x73\x80\x3a\x53\x1b\x42\xed\xcc\x49\xdb\xab\x20\xfa\x05\x76\x4f\xa0\xd9\x07\x93\x48\x92\x69\x34\x1f\xfc\x68\x9a\x8f\x4d\xf3\xc7\x5d\x2a\x8a\x6a\x5d\xdc\x16\x27\xb8\x45\xcd\x2c\x92\x88\x8b\x7e\xc8\xcf\x75\x8e\x7b\x7a\xf3\xad\xf0\xeb\xae\x00\xab\x47\xbc\x21\x78\x64\xae\x36\x71\xc2\x46\x16\x9a\x69\xea\x25\x29\x4b\xa9\x7c\xf2\x6f\x82\xe8\xb6\xb5\x92\x93\xee\x65\xf3\x92\xcc\x7a\xca\x92\xf6\x90\xef\x46\x21\xfe\xcc\xec\xde\xf8\x29\x63\x5b\x35\x5a\xdf\xa7\x10\x99\x3a\x80\x6d\xd6\x59\xa5\xa2\x80\xb4\x5d\x57\xb7\x95\x36\x82\xc9\x1d\x31\xa8\xed\x8f\x48\x27\x0e\xfa\xa0\x3c\x37\x7a\x94\xde\x80\x89\xe2\x67\x5e\xa2\xc3\xa9\x13\xec\x09\x9d\x23\xc3\xc9\xee\x95\xf4\xbd\x79\xf6\x02\x86\x55\x59\xff\xe6\xb6\xa4\xfe\x34\x9c\x96\x52\xc2\xcc\x85\x84\x7b\x76\x4c\xcb\x20\xb6\x62\x5e\x0a\x65\xe9\x2b\xae\xd2\x9f\x09\x1b\x57\xa1\xb1\xad\x40\x1f\x74\x8d\x54\x19\x99\x8d\x54\xd7\x48\xbf\xa9\xce\xec\xbb\xde\x69\xf3\x25\xbe\xeb\xf8\x99\x9f\xbc\xec\xcc\x91\xdb\xce\x65\xc9\x1c\x79\x67\x97\xe9\x72\x53\x37\x70\x7d\x4e\x05\x51\xb5\x4c\x1f\xb9\xa4\xf7\xb7\x01\x7e\xa1\xa2\xb9\x6d\x5e\x24\x50\x70\x39\x3e\xdf\x97\x77\x62\xbd\xf3\x35\x6e\xa3\x10\xfb\xd8\xba\xc8\x33\x6d\xa6\xe8\xde\xd0\xe7\x03\xb2\x3c\xcc\x1a\x25\x2d\xe3\xd2\x64\xbe\x2a\x41\x81\x54\xe5\x7b\x1b\xa8\x18\x7c\x2a\xe0\x00\x5c\xc2\xc0\xb8\xf6\x44\x39\xb4\x6a\x3e\xb6\x78\x07\x07\x3a\xd5\x02\xdf\xf2\x4c\xa3\x9f\x46\x3b\x52\x3d\xa7\xc7\xf3\xc1\x4d\x16\xc4\x6d\xa0\xf1\x87\xf5\xc5\x21\x3d\xca\x10\x85\xed\xd8\xc5\x67\x6e\x47\xc5\xc1\x76\xec\xea\xef\xb8\xc0\x4f\xa7\x01\x17\x27\xb2\xbb\x5f\xb8\xf7\x15\xad\xf7\xf8\xac\xe6\x3a\x94\x45\x74\x91\xac\x7e\xcf\x75\x46\x83\x7c\x75\xd7\x63\x57\x0e\x2c\x9c\x9e\x2c\x98\x0a\x0e\xb2\x65\x03\x87\xea\xaa\xd8\xa2\xe8\xcc\x85\xc9\x55\x68\xce\x02\x8c\xd5\x5c\xee\x2a\x37\xcc\x3a\x5b\x44\xb2\xf2\x45\xd4\x2e\x4c\xd8\x33\x43\x45\xc5\x39\x89\x87\x8a\xaa\xcc\xb8\xe4\xc8\x63\x63\xe8\x9a\xe0\x79\x98\x6c\xe1\x10\x15\x5a\xaf\x18\xb7\x2c\xba\xa6\x9c\x05\x89\x67\x69\x24\xfb\x7f\x96\x38\x0f\x42\x02\x98\xde\x9d\x53\x70\x70\x65\xe8\x22\x03\xf4\xf3\xd3\x9f\x9f\xbe\xfa\x02\xb5\xde\x99\x71\x9b\x25\x69\x4a\x3b\xb8\x4b\xe9\x3c\x43\xe7\x68\xcb\xf5\x9d\x50\xf2\x6e\x36\xed\xca\x66\xca\x3e\x21\xaf\x70\xa8\xa8\x5c\x69\xef\xf5\x52\x1b\x55\xbb\xf9\x4d\x70\x2f\xb1\xac\xe4\x23\x3b\x60\xb6\x1d\xc2\x0a\xe7\x8d\x56\xd5\x7b\xb5\xcb\x92\xc7\xb7\x7f\x7d\x17\xb6\xaa\x08\xf0\x43\xf5\xdb\x09\xf3\xaf\xac\x90\xb3\x89\x1e\xaa\xf7\x2e\x20\x5e\x10\xad\x98\xdf\x09\x64\xfa\x7b\x7f\x9d\x9d\x00\x1e\xf0\xef\xb6\xd5\xea\x4f\x6a\xfb\x38\xb0\xa3\xcc\x22\x49\x49\x12\xfe\x9e\xbe\x52\xf2\xdd\xb3\x2b\x04\x16\xaa\x17\xfa\x2e\xbd\x27\x86\xcc\x9f\x07\xaf\xb1\x5d\xc4\xe6\xe3\x87\x77\x7f\xff\xe3\xa7\xe4\x72\xde\xcb\x89\xd7\x3c\x15\x34\x74\xb9\x30\x83\x88\xf4\x24\x5f\x64\x12\x9c\x0b\x5f\x9f\x70\x87\xcf\xcb\xab\xca\x02\x3a\x49\x56\x55\x65\x9e\x9c\xd1\xe3\xb6\xdc\x2c\x6d\xd7\xf1\x64\xef\x29\x69\x6e\xde\x38\xfe\x51\xb8\x9a\x8a\x4b\xe0\xf3\xde\x81\x4b\xdc\x96\x25\x7c\xd2\xbc\xf7\xb7\x1a\x33\xb0\x66\x71\x9b\xa1\x2d\x8b\x9a\xda\x6f\x04\xc9\x0f\xa9\x79\x43\x3a\x52\xf3\xe6\x17\xc9\x62\x21\x87\x0d\xa3\xe3\xb2\x75\x5a\x0a\xef\x56\x7e\x03\xc1\xf3\x7e\xe8\xc2\x8d\x05\xf4\x66\x77\xb9\xe5\xc4\x22\x16\xdc\xbc\x83\x2d\x33\x48\x77\xa1\x6c\xda\x4c\x73\xda\xec\xe6\x59\xb7\xd2\xae\xd5\x9e\x55\x6f\xbd\x3e\xff\xb9\xad\xfa\x80\xc7\x80\xbc\xb7\xf6\x3d\x97\x98\x4d\x10\xe8\xcd\xae\x00\xab\xfc\xf7\x17\x67\x50\x5e\x4c\x4c\xdf\x7f\x7a\x47\xc9\xca\xaf\x34\x10\x9a\xdf\xb6\x6d\x90\x98\x91\xaa\x25\x51\xbc\x5b\xdd\x5f\x98\x1e\x31\xc6\xea\x02\x0c\x0e\xf9\x02\x2c\x66\x14\xf6\x7c\xd7\x5e\x42\x28\x4b\xb2\xcf\x3f\xa4\xe6\xab\x43\x86\x87\x52\x36\x0b\x20\x44\x20\x6b\xf6\x84\x07\x63\x75\xbd\xf3\xa1\x0e\x79\x8a\x30\x61\xe9\xc4\xae\xb8\x34\xa8\x6d\xe6\x15\x16\x8e\x33\xbf\x75\x48\x7a\x82\x0b\x07\x96\xd9\x88\x2c\x35\x38\xb8\x5b\xe9\x7f\x7b\x1b\x0d\x7c\x5f\xbe\x24\x0b\x1b\xbc\x50\xf7\x11\x72\x46\x90\x5b\x11\x1e\x5f\x49\x56\xbd\x49\xa0\xaa\x1c\x7b\x55\x41\x92\x67\xd5\x9b\xdc\x15\x23\xbf\x4a\x16\x1b\x99\xfb\x8a\x47\x52\xff\x1d\x00\x00\xff\xff\x9f\x7b\x2f\x98\x12\x16\x00\x00" +var _runtimePluginsLinterLinterLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x58\xeb\x8f\xa4\xb8\x11\xff\x3e\x7f\x85\x85\x82\x04\x3b\xc0\x28\x51\x3e\x21\xb5\xa2\xcb\xe6\x2e\x52\xb4\x8f\x48\xb3\x51\x3e\xec\xee\x45\x6e\x28\xba\x7d\x63\x6c\x62\x9b\xee\xe9\x8c\xf6\x7f\x8f\xaa\x6c\xc0\xf4\x63\x6e\xf3\x18\x69\xb0\x31\xf5\xf8\xd5\xcb\x2e\xb7\xd4\x0d\x97\xcc\x8c\xca\x89\x1e\xd8\x86\x89\x7e\xd0\xc6\x65\x49\x58\x49\xf2\x3b\x4f\xd1\x09\x09\x03\x77\xfb\x88\x04\x5f\x1f\xa6\xf5\x99\xd0\xee\x41\xca\x88\xaa\x17\x8d\xd1\x0f\xb4\x3a\xd3\x6c\xc7\xae\x03\x73\x41\xe4\x97\x67\xaa\x46\xab\x4e\xec\x2e\xa8\xfc\x72\x92\xdf\x05\x32\x29\x94\x03\x63\xd9\x86\xbd\x7c\xbb\xbb\x2b\x4b\xd6\x18\xe0\x0e\x2c\xe3\xe1\x13\x03\xe5\xcc\xa9\x60\x0d\x97\x92\x75\x46\xf7\xec\x28\xdc\x5e\x28\xc6\x15\x13\x4a\x38\xc1\xa5\xf8\x17\x77\x42\x2b\xd6\x8d\xaa\xc1\x49\xc1\x94\x76\x28\xab\x15\x06\x1a\x27\x4f\x8c\xbb\x89\x96\x49\xcd\x5b\x86\xce\xb9\x2b\x4b\xa4\x51\xbc\x87\x9a\x9e\x4c\x77\xcc\xed\x21\xe8\xc5\x6f\xe8\x1e\x77\x1a\xa0\x9e\x67\xcc\x69\xd6\xec\xa1\x79\x62\x9d\x36\xf8\x32\xda\x98\xa1\xe9\xdb\x9a\xf5\x5c\xa8\x09\xfc\x60\x74\x03\xd6\x32\xb7\x47\x08\x96\xc1\x33\x34\xa3\x83\x16\x89\xb9\xd9\xd9\x1a\x9f\x63\x0f\xca\x59\x94\x36\x70\x4b\xe3\x02\x63\x92\x80\x0c\xf8\x87\xfa\xd2\x0e\x69\x0c\x60\x14\x02\x71\x33\x1a\x03\xca\x11\x4e\x32\x66\x45\xdf\xde\xa4\xf7\x1e\xd2\xe6\x34\x33\x81\x31\xda\x74\xda\xf4\xdc\xd5\x6c\xaf\x8f\x1e\x96\xb1\x10\x81\x7a\x68\x74\x3f\x08\x19\xd9\xa7\x47\x37\x8c\x6e\x52\x9a\x76\xde\x63\x05\x4b\x65\x8d\x3c\xc0\xd4\xd8\x6f\xc1\x14\x2c\xed\x6b\xaf\xe2\xe1\xc8\x8d\x12\x6a\xc7\x7a\xb0\x96\xef\x48\xb7\xb6\x48\x6d\x1d\x46\xe2\xe3\x23\x7a\x4d\xd8\xc9\x0f\xc2\x32\x3b\x0e\x98\x4a\xd0\x32\x6d\xd8\xa8\xa2\x57\x35\x69\xd6\x03\x26\x00\x97\x08\x99\xf7\x05\x6b\xa1\xe3\xa3\x74\x35\xfb\xfc\x15\x49\x8e\x7b\xe1\x00\x35\xd4\xcc\xee\xf5\x28\x5b\x32\xea\xe3\xa3\xd7\xba\x05\xc6\xd9\x56\xf2\xe6\x89\x5e\xb3\x56\x63\x22\x61\x79\xc5\x01\xa1\xc0\xef\xc1\x22\x9f\xcd\x09\xb6\x61\x7c\x11\xcd\x32\xad\xe4\xe9\xd7\xb9\x5e\x85\xdb\x71\x69\x81\x65\x01\xe4\x8c\x89\x18\x5b\xdd\x73\xd7\xec\x57\x26\xcc\xf9\xb9\x05\x46\x0a\x07\x03\xe8\x19\x4e\x85\x34\x72\x36\x70\xe7\xc0\x28\x8c\x26\x71\x53\x15\xa1\x34\xe4\xe6\x8d\x1b\xc3\x2e\x81\x42\x0a\xb4\x28\x12\x1e\x4c\x20\xb3\x78\xe3\xc4\x81\x3b\x60\x9a\x2a\x10\x9e\x79\xe3\xbc\xc4\xef\xb5\xc9\xc0\x3f\x47\x61\x20\x66\xcd\xef\xa6\xd2\x65\x3d\x7f\x82\x77\xa4\x2f\xc3\x8c\x2c\x22\x50\x4d\xdf\x16\x54\x34\x45\x9c\xa4\x05\xd3\xb6\x58\xbc\x5f\x4c\xee\xc9\xef\x10\x8c\xe8\xa6\x1d\xe6\x33\x8a\xfb\xca\x36\x1b\xa6\x84\x44\xb3\x14\x11\xe0\xdf\x19\x05\xee\x44\x57\x3f\x55\xb3\x97\x37\x33\xac\x1b\x94\x4d\xdf\xb2\x0d\x22\xbe\xf1\x1d\xcd\x60\x1b\xb2\xe6\x06\x45\x64\x22\xdb\xc4\x06\xdf\xa0\xd7\x28\x4f\x5b\x0c\xdd\x4d\xfc\x4b\x8e\x6e\xa2\x7c\xd5\xc6\x87\xe6\x06\x53\xf0\x27\xdb\x4c\x9e\x5d\x33\x80\x6a\xef\xf0\x7f\x09\xa1\x81\x5e\x1f\xe2\x20\xfa\x50\x9c\x7b\x59\x09\x79\xc6\x88\x5b\x74\x16\x88\xe9\x70\x68\xe1\xa0\x46\x3a\x8f\x92\x87\x16\x0e\x0f\xf8\x92\x4c\x71\x0d\x67\x5c\xf5\xe7\x8f\x1f\x1f\x31\xac\xc9\x51\xa8\x56\x1f\x6d\xb2\x0e\x6e\x24\xe3\xc3\xdf\xde\x25\x33\x66\x9a\x44\xd9\x96\xec\x9a\x26\x29\x58\x42\x0f\x3f\x7f\x49\xca\xce\x9e\x94\xe3\xcf\x25\xe6\x3e\x7e\x28\xff\xce\xa5\xf4\x13\x78\x76\x86\xe3\x34\xed\x92\x6f\x34\xd4\xa9\xac\xd3\xf6\xbe\xae\xee\x6b\x96\xf6\x49\x7e\x53\xc5\xfd\xfd\x2b\x4a\x92\xd2\xba\x76\xd3\xdc\xdf\xff\xf6\xf7\xff\xbb\xc6\xb6\x6f\x91\xc1\x3f\x68\xfe\x92\x94\x8d\x96\xda\x6c\x74\xd7\x91\x58\x5d\xd2\x70\xf4\x4f\x41\x43\xb3\xd2\x92\x66\xa9\x4c\xf3\x57\xcc\xd2\xdb\x51\x48\xd2\xb1\xd3\xf3\xf3\x25\x99\x57\x4b\x7c\x0f\x81\x58\x80\xdf\x12\x86\x89\x12\xcb\x0a\xef\x2f\x97\x66\x5f\x97\xf0\x0b\x3f\x70\x32\x00\x27\xd3\x18\x5c\x4d\x70\xd2\xf6\xc2\x89\xbe\xc0\x6e\x09\xb4\xfb\x00\x09\x25\xd9\xc6\x88\xc1\xbf\x4d\xeb\x31\x34\x7f\xdc\xa5\xb2\xa8\xee\x8b\xeb\xe2\xa4\x70\x60\xb8\x03\x14\x71\x36\x0f\xf1\xb9\x8c\x71\x8f\x5f\xbe\x15\xbe\xee\x0a\xe6\xcc\x08\x57\x04\x8f\x9c\x7a\x13\x12\x36\xf2\x30\x4c\x4b\x2f\x49\x59\x2a\xed\x83\x7f\x35\x89\xae\xa3\x55\x02\x75\xaf\x87\x97\x64\xd6\x53\x96\xb8\x87\xfc\x34\x4a\xf9\x57\xee\xf6\xd6\x2f\x59\xd7\xea\xd1\xf9\x39\xba\xc8\xd6\x21\xd9\x66\x9d\x55\x2a\x0b\x96\xb6\xf7\xd5\x75\xa5\x8d\xe4\x6a\x87\x0c\x7a\xfb\x0b\xe0\x89\x03\xde\x29\xcf\x8d\x19\x95\x07\x30\x51\xfc\x9f\x4b\x74\x38\x75\x92\x3f\x01\x19\x32\x9c\xdc\x5e\x2b\x3f\x9b\x57\xcf\xd2\xb0\x2a\xeb\x3f\x5c\x97\xd4\x9f\x86\xd3\x5a\x4a\x58\x39\x93\x70\x0b\xc7\x54\x06\x31\x8a\xb9\x14\xca\xd2\x77\x5c\xa5\x3f\x13\x36\xd4\xa1\xf1\xad\x04\xef\x74\x03\xd8\x19\xd9\x8d\xd2\x97\x99\x7e\x55\x9d\xdd\x77\x3d\x69\xf3\xad\x3e\x4d\xfc\xca\x77\x97\x9d\x3d\x0a\xd7\x51\x94\xec\x51\x74\x6e\x1d\x2e\x5a\xba\x92\xd7\x4b\x28\x90\xaa\xe5\xe6\x28\x14\x7e\xbf\x9e\xe0\x67\x2a\x9a\xeb\xf0\x22\x81\x52\xa8\xf1\xf9\xb6\xbc\x13\xef\xc9\xd6\x78\x8c\x5c\xec\x7d\x4b\x9e\xe7\xc6\x4e\xde\xbd\xa2\xcf\x3b\x84\xc4\xfb\xfb\x4d\xf5\x9e\x3f\xc1\x5b\xdd\xf7\x5c\xb5\x58\xf0\x3e\x92\xfe\x04\xac\x70\x78\x4b\x7b\x71\x20\xfe\xa0\xdf\xea\x7e\x90\xe0\x20\x3f\x3b\x11\x03\x69\xb6\x1d\x3c\xf8\xed\x50\x3f\xf2\x03\x84\x43\xd2\x8c\x2a\x58\xb2\x1d\xaa\x3f\x8e\xdd\x39\x77\xa3\x95\xe3\x42\xd9\xcc\x37\x46\x20\x01\x2f\x1a\x9e\x17\xfb\xd1\xa7\x82\x1d\x98\x50\x6c\xe0\xc2\x78\xa2\x9c\xb5\x7a\x3e\x39\x45\xc7\x0e\x78\xb0\x06\xbe\xf5\xb1\x4a\xfa\xc1\x8d\xd8\x52\x9a\x71\xe9\x1d\x10\x41\x3c\x06\x1a\xdf\x2f\x9c\xf5\x09\x0b\x7c\xc4\xbe\x1c\xfb\x1d\xf6\x27\xdb\xb1\xab\x7f\x12\x12\x3e\x9d\x06\x58\x35\x05\x74\xc5\xa1\xef\x15\x6e\x39\x71\xbb\x20\x4c\xe8\xcc\xf0\x4e\x5b\xfd\x49\x98\x0c\x5f\x42\x64\xae\x59\x4c\x1d\xc9\xca\xe8\x09\xc1\xd4\xf3\x20\x96\x0d\x3b\x54\x17\xfd\x1e\x7a\x67\xee\x8d\x2e\x5c\xb3\x08\xb0\xce\x08\xb5\xab\xe8\x35\xeb\x5c\x11\xc9\xca\x57\x5e\x3b\x83\xb0\xe7\x16\xfb\x9a\x25\x88\x87\x0a\x1b\xdd\xb8\xeb\xc9\x63\x30\x78\x53\xf1\x3c\x5c\xb5\xec\x10\xf5\x7a\xaf\x80\x5b\xf7\x7d\x53\xcc\x82\xc4\x45\x1a\xca\xfe\xaf\x25\xce\x2f\x21\x00\xdc\xec\x96\x10\x1c\xa8\x13\x5e\x45\x00\xff\xfc\xf2\xe7\xa7\xaf\xbe\x47\xae\x77\x76\xdc\x66\x49\x9a\xe2\x21\x42\x21\x9d\x57\xb0\x8c\x5a\x61\x6e\xb8\x52\x74\x33\xb4\x0b\xcc\x18\x7d\xcc\xbc\x82\xb2\xa2\xa2\xdb\x85\xd7\x8b\x63\xd4\x70\xe7\x57\x93\x7b\x9d\xcb\x5a\x51\x5d\x4e\x75\x7a\x59\x99\xbf\x52\x0b\x0b\x18\x9f\x94\xb7\x6e\x3b\x61\x1b\x18\xbb\xfa\xad\x04\x6e\xde\xfb\xbb\xb3\xcd\xc2\xde\x32\xed\x42\xb4\x8b\x57\x7f\xd1\xdb\xc7\x81\x1f\x55\x16\xc9\x4a\x92\xf0\x1f\x36\x23\xad\x7e\x7c\xa6\xbe\x63\xa5\x7c\xa5\xf1\xdc\x52\x64\xc8\xfc\xf1\xf3\x1a\xdb\x92\xca\xd8\x11\xe1\xed\xc4\x0e\x32\xe2\x4c\xbe\xa8\x09\x6e\xf8\x19\x0b\x76\xf0\xbc\xbe\xeb\xac\x02\x9f\x64\x55\x55\xe6\xc9\x12\x7b\xda\xb3\xb3\xb4\xbd\x8f\x17\x7b\x4f\x89\x6b\x73\xd9\xff\xa3\xa0\xa6\x4c\x28\x26\xe6\xca\x87\x75\xd6\x95\x25\xfb\x64\x44\xef\xaf\x45\x76\xe0\xcd\xea\x3a\x84\x1b\x0e\x0e\xb5\x2f\xe3\xe4\xe7\xd4\xbe\x41\x1d\xa9\x7d\xf3\x9b\x64\x55\x86\xa1\xdc\x3b\xa1\x5a\xd2\x52\x78\xb3\xf2\x2b\xf9\x37\xef\x66\xe4\x40\x28\x58\x6f\x77\xe7\x1b\x46\x2c\x62\xc5\x2d\x3a\xb6\xe5\x16\xf0\x32\x95\x4d\x5b\x61\x8e\x5b\xd5\xbc\x4a\x75\x72\xa9\x76\x51\xbd\xf5\xfa\xfc\xef\x76\xd5\x07\x38\x86\x6c\xfa\xc1\xbd\x13\x0a\xe6\x94\x22\x5c\x05\x73\xda\xff\x84\x43\x90\xf2\x62\x62\x7b\xff\xe9\x47\x0c\x57\x7e\xa1\x03\x73\xf4\x87\xb6\x0d\x32\x33\x54\xb6\x26\x8a\x77\x9b\xdb\x85\xe5\x73\xc6\x3a\x53\x30\x0b\x43\xbe\x4a\x17\x3b\x4a\xb7\x5c\xd7\xd7\x49\x94\x25\xd9\xe7\x9f\x53\xfb\x95\x72\xc3\x27\x53\x36\x0b\xc0\x9c\x00\xde\xec\x31\x23\xac\x33\xf5\xce\x3b\x3b\x44\x2a\xca\x0a\x87\x87\x7e\x25\x94\x05\xe3\x32\xaf\xb0\x20\xce\xfc\xda\x21\xe7\x09\xce\x0c\x58\xc7\x23\x42\x6a\x61\xa0\x8b\xed\x7f\x7a\xa1\x0d\x7c\x5f\xbe\x24\x2b\x0c\x5e\x28\xfd\x8e\x39\xe7\x10\xd5\x84\xcf\xb0\x24\xab\xde\x24\xac\xaa\x88\xbd\xaa\x58\x92\x67\xd5\x9b\x9c\xfa\x99\xdf\x25\xab\xed\x89\x7e\x08\x44\xa9\xff\x0e\x00\x00\xff\xff\xb6\x46\x5d\xee\x5d\x16\x00\x00" func runtimePluginsLinterLinterLuaBytes() ([]byte, error) { return bindataRead( diff --git a/internal/config/settings.go b/internal/config/settings.go index a775a1c0..7a7df05a 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -114,12 +114,35 @@ func WriteSettings(filename string) error { return err } -// AddOption creates a new option. This is meant to be called by plugins to add options. -func AddOption(name string, value interface{}) error { - GlobalSettings[name] = value - err := WriteSettings(ConfigDir + "/settings.json") - if err != nil { - return errors.New("Error writing settings.json file: " + err.Error()) +// RegisterCommonOption creates a new option. This is meant to be called by plugins to add options. +func RegisterCommonOption(name string, defaultvalue interface{}) error { + if v, ok := GlobalSettings[name]; !ok { + defaultCommonSettings[name] = defaultvalue + GlobalSettings[name] = defaultvalue + err := WriteSettings(ConfigDir + "/settings.json") + if err != nil { + return errors.New("Error writing settings.json file: " + err.Error()) + } + } else { + defaultCommonSettings[name] = v + } + return nil +} + +func RegisterLocalOption(name string, defaultvalue interface{}) { + defaultLocalSettings[name] = defaultvalue +} + +func RegisterGlobalOption(name string, defaultvalue interface{}) error { + if v, ok := GlobalSettings[name]; !ok { + defaultGlobalSettings[name] = defaultvalue + GlobalSettings[name] = defaultvalue + err := WriteSettings(ConfigDir + "/settings.json") + if err != nil { + return errors.New("Error writing settings.json file: " + err.Error()) + } + } else { + defaultGlobalSettings[name] = v } return nil } @@ -129,42 +152,40 @@ func GetGlobalOption(name string) interface{} { return GlobalSettings[name] } -func DefaultCommonSettings() map[string]interface{} { - return map[string]interface{}{ - "autoindent": true, - "autosave": false, - "basename": false, - "colorcolumn": float64(0), - "cursorline": true, - "encoding": "utf-8", - "eofnewline": false, - "fastdirty": true, - "fileformat": "unix", - "ignorecase": false, - "indentchar": " ", - "keepautoindent": false, - "matchbrace": false, - "matchbraceleft": false, - "rmtrailingws": false, - "ruler": true, - "savecursor": false, - "saveundo": false, - "scrollbar": false, - "scrollmargin": float64(3), - "scrollspeed": float64(2), - "smartpaste": true, - "softwrap": false, - "splitbottom": true, - "splitright": true, - "statusformatl": "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat) $(opt:encoding)", - "statusformatr": "$(bind:ToggleKeyMenu): show bindings, $(bind:ToggleHelp): toggle help", - "statusline": true, - "syntax": true, - "tabmovement": false, - "tabsize": float64(4), - "tabstospaces": false, - "useprimary": true, - } +var defaultCommonSettings = map[string]interface{}{ + "autoindent": true, + "autosave": false, + "basename": false, + "colorcolumn": float64(0), + "cursorline": true, + "encoding": "utf-8", + "eofnewline": false, + "fastdirty": true, + "fileformat": "unix", + "ignorecase": false, + "indentchar": " ", + "keepautoindent": false, + "matchbrace": false, + "matchbraceleft": false, + "rmtrailingws": false, + "ruler": true, + "savecursor": false, + "saveundo": false, + "scrollbar": false, + "scrollmargin": float64(3), + "scrollspeed": float64(2), + "smartpaste": true, + "softwrap": false, + "splitbottom": true, + "splitright": true, + "statusformatl": "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat) $(opt:encoding)", + "statusformatr": "$(bind:ToggleKeyMenu): show bindings, $(bind:ToggleHelp): toggle help", + "statusline": true, + "syntax": true, + "tabmovement": false, + "tabsize": float64(4), + "tabstospaces": false, + "useprimary": true, } func GetInfoBarOffset() int { @@ -178,41 +199,64 @@ func GetInfoBarOffset() int { return offset } +var defaultGlobalSettings = map[string]interface{}{ + "colorscheme": "default", + "infobar": true, + "keymenu": false, + "mouse": true, + "savehistory": true, + "sucmd": "sudo", + "termtitle": false, +} + // DefaultGlobalSettings returns the default global settings for micro // Note that colorscheme is a global only option func DefaultGlobalSettings() map[string]interface{} { - common := DefaultCommonSettings() - common["colorscheme"] = "default" - common["infobar"] = true - common["keymenu"] = false - common["mouse"] = true - common["pluginchannels"] = []string{"https://raw.githubusercontent.com/micro-editor/plugin-channel/master/channel.json"} - common["pluginrepos"] = []string{} - common["savehistory"] = true - common["sucmd"] = "sudo" - common["termtitle"] = false - return common + globalsettings := make(map[string]interface{}) + for k, v := range defaultCommonSettings { + globalsettings[k] = v + } + for k, v := range defaultGlobalSettings { + globalsettings[k] = v + } + return globalsettings } // LocalSettings is a list of the local only settings var LocalSettings = []string{"filetype", "readonly"} +var defaultLocalSettings = map[string]interface{}{ + "filetype": "unknown", + "readonly": false, +} + // DefaultLocalSettings returns the default local settings // Note that filetype is a local only option func DefaultLocalSettings() map[string]interface{} { - common := DefaultCommonSettings() - common["filetype"] = "unknown" - common["readonly"] = false - return common + localsettings := make(map[string]interface{}) + for k, v := range defaultCommonSettings { + localsettings[k] = v + } + for k, v := range defaultLocalSettings { + localsettings[k] = v + } + return localsettings } +// DefaultAllSettings returns a map of all settings and their +// default values (both local and global settings) func DefaultAllSettings() map[string]interface{} { - global := DefaultGlobalSettings() - local := DefaultLocalSettings() - for k, v := range global { - local[k] = v + allsettings := make(map[string]interface{}) + for k, v := range defaultCommonSettings { + allsettings[k] = v } - return local + for k, v := range defaultGlobalSettings { + allsettings[k] = v + } + for k, v := range defaultLocalSettings { + allsettings[k] = v + } + return allsettings } func GetNativeValue(option string, realValue interface{}, value string) (interface{}, error) { diff --git a/runtime/plugins/linter/linter.lua b/runtime/plugins/linter/linter.lua index 46be745b..f7c093e9 100644 --- a/runtime/plugins/linter/linter.lua +++ b/runtime/plugins/linter/linter.lua @@ -2,7 +2,7 @@ local runtime = import("runtime") local filepath = import("path/filepath") local shell = import("micro/shell") local buffer = import("micro/buffer") -local micro = import("micro") +local config = import("micro/config") local linters = {} @@ -66,6 +66,13 @@ function init() makeLinter("switfc", "swift", "xcrun", {"swiftc", "%f"}, "%f:%l:%d+:.+: %m", {"darwin"}, true) makeLinter("switfc", "swiftc", {"%f"}, "%f:%l:%d+:.+: %m", {"linux"}, true) makeLinter("yaml", "yaml", "yamllint", {"--format", "parsable", "%f"}, "%f:%l:%d+:.+ %m") + + config.MakeCommand("lint", "linter.lintCmd", config.NoComplete) +end + +function lintCmd(bp) + bp:Save() + runLinter(bp.Buf) end function contains(list, element) @@ -107,7 +114,6 @@ function runLinter(buf) end function onSave(bp) - micro.Log("SAVE") runLinter(bp.Buf) return false end @@ -119,8 +125,6 @@ function lint(buf, linter, cmd, args, errorformat) end function onExit(output, buf, linter, errorformat) - micro.Log("ONEXIT") - micro.Log(output) local lines = split(output, "\n") local regex = errorformat:gsub("%%f", "(..-)"):gsub("%%l", "(%d+)"):gsub("%%m", "(.+)") From fc4811c1ab9467d4a690852cea227a1e44601192 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 3 Aug 2019 15:49:05 -0700 Subject: [PATCH 139/231] Add comment plugin support --- cmd/micro/initlua.go | 3 + internal/action/bufpane.go | 22 ++++++ internal/config/runtime.go | 25 +++++++ runtime/plugins/comment/comment.lua | 106 ++++++++++++++++++++++++++++ 4 files changed, 156 insertions(+) create mode 100644 runtime/plugins/comment/comment.lua diff --git a/cmd/micro/initlua.go b/cmd/micro/initlua.go index 665ed37e..9220f139 100644 --- a/cmd/micro/initlua.go +++ b/cmd/micro/initlua.go @@ -86,6 +86,9 @@ func luaImportMicroBuffer() *lua.LTable { ulua.L.SetField(pkg, "MTInfo", luar.New(ulua.L, buffer.MTInfo)) ulua.L.SetField(pkg, "MTWarning", luar.New(ulua.L, buffer.MTWarning)) ulua.L.SetField(pkg, "MTError", luar.New(ulua.L, buffer.MTError)) + ulua.L.SetField(pkg, "Loc", luar.New(ulua.L, func(x, y int) buffer.Loc { + return buffer.Loc{x, y} + })) return pkg } diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index edf81ebe..6796b78e 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -7,6 +7,7 @@ import ( luar "layeh.com/gopher-luar" + lua "github.com/yuin/gopher-lua" "github.com/zyedidia/micro/internal/buffer" "github.com/zyedidia/micro/internal/config" "github.com/zyedidia/micro/internal/display" @@ -28,6 +29,23 @@ func init() { BufMouseBindings = make(map[MouseEvent]BufMouseAction) } +func LuaAction(fn string) func(*BufPane) bool { + luaFn := strings.Split(fn, ".") + plName, plFn := luaFn[0], luaFn[1] + pl := config.FindPlugin(plName) + return func(h *BufPane) bool { + val, err := pl.Call(plFn, luar.New(ulua.L, h)) + if err != nil { + screen.TermMessage(err) + } + if v, ok := val.(lua.LBool); !ok { + return false + } else { + return bool(v) + } + } +} + // BufMapKey maps a key event to an action func BufMapKey(k Event, action string) { if strings.HasPrefix(action, "command:") { @@ -38,6 +56,10 @@ func BufMapKey(k Event, action string) { action = strings.SplitN(action, ":", 2)[1] BufKeyStrings[k] = action BufKeyBindings[k] = CommandEditAction(action) + } else if strings.HasPrefix(action, "lua:") { + action = strings.SplitN(action, ":", 2)[1] + BufKeyStrings[k] = action + BufKeyBindings[k] = LuaAction(action) } else if f, ok := BufKeyActions[action]; ok { BufKeyStrings[k] = action BufKeyBindings[k] = f diff --git a/internal/config/runtime.go b/internal/config/runtime.go index baa0e43f..4e267ef6 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -41,6 +41,7 @@ // runtime/help/plugins.md // runtime/help/tutorial.md // runtime/plugins/autoclose/autoclose.lua +// runtime/plugins/comment/comment.lua // runtime/plugins/ftoptions/ftoptions.lua // runtime/plugins/linter/linter.lua // runtime/plugins/literate/README.md @@ -1051,6 +1052,26 @@ func runtimePluginsAutocloseAutocloseLua() (*asset, error) { return a, nil } +var _runtimePluginsCommentCommentLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x57\x5b\x6f\x2b\x35\x10\x7e\xcf\xaf\x30\x7b\x88\x64\xb7\xd9\xed\x49\x79\x8b\x08\x12\xed\x43\x91\x08\x07\xa9\xad\x20\x55\x14\xa4\xbd\xcc\x26\x3e\x78\xbd\x2b\xdb\x0b\x44\x08\x7e\x3b\xf2\x65\xaf\xde\x84\x1c\x21\xc1\x0b\x95\xda\x6c\x3e\xcf\x37\x63\xcf\x7c\xe3\xd9\xb2\x32\x8d\x19\xaa\x15\x65\x68\x8d\x68\x51\x95\x42\xe1\xa0\xa0\xa9\x28\xef\x34\x18\x90\x99\xb5\x48\x4b\x9e\xd3\x83\x67\x63\xe1\xd6\x2a\xa9\xf3\x1c\x84\x67\x65\xe1\x80\xcc\x9c\x59\xae\xd0\x1a\xfd\xfe\xc7\x6c\x96\xab\x5d\x90\x06\x7b\xb4\x46\xc1\xdd\x1d\x9a\xcb\xc0\x22\xb7\xb7\x1e\x76\x28\x3d\xa8\x3a\xa9\x63\xc9\x2d\xfc\x6e\x84\x7e\x31\x86\x8f\xaa\x60\x16\xfb\xf2\xb3\x30\x44\x73\x89\xc2\xf0\x2b\xbb\xf4\x31\xfe\x25\xf6\x9c\x7f\xac\x19\x8d\x3d\xdf\x20\x98\x87\x1d\x2b\x8f\x2c\x6a\xa9\x3c\x50\x1e\x81\x79\x6c\x56\xbb\x20\x66\x4f\xdd\x7e\x64\x2a\x68\xe5\xfb\x10\x75\x72\x1a\xbb\xc8\xfc\x48\xbf\xd2\x7c\xc8\x9d\xe5\x35\x4f\x15\x2d\x39\x2a\xf9\x83\x29\xc6\xf7\x15\x70\x9c\xd4\x39\x99\x21\x84\x10\xcd\x75\xe9\xa2\x17\x50\x8a\xf2\x83\xdc\x05\x69\x59\x14\xc0\x95\x3a\x55\xa0\x1d\xad\x11\xa7\x0c\xa9\x23\x70\x63\xee\x28\xb9\xda\x0d\x59\x39\x65\x60\x29\x7b\xf4\xe7\x04\x47\xff\x5c\x8c\x73\xd1\x65\xeb\x06\x98\x84\x4f\xf0\xe9\x72\xd5\xb2\x79\x36\x6b\x3e\xf5\x6f\x97\x1b\x47\xdc\x50\x0e\x38\xa9\x16\x88\x51\x0e\x1f\x6c\x82\xac\x6e\x35\x80\xd6\x28\xa9\xa2\x87\x3a\x5f\x19\x3b\xcf\xc6\x39\x79\x3d\x55\x9d\xe9\xb9\xcd\xf9\xb4\x67\x38\xc0\x6f\x7a\xcf\x3f\xcd\xe5\x4d\x80\xa2\xa8\xef\x6f\x75\x90\x75\x82\x83\xf9\x4d\xb0\x40\xfa\x2f\x69\x80\xd0\x00\x61\x07\x44\x06\x88\x3a\xe0\xd6\x00\xb7\x1d\xb0\x37\xc0\xbe\x03\x76\x06\xd8\x75\xc0\x5c\x6a\x04\x47\x37\x24\xe8\x9f\x4f\x82\xbe\x29\xc2\xa4\x8a\x1e\x6b\x21\x4b\xa1\x3f\x5e\x80\x81\x49\x61\xff\x40\xb5\xa8\x4a\x39\x34\xdd\x94\x69\xcf\x82\xf2\xcc\x9c\x55\x2a\x41\xf9\x21\xca\x29\xcf\x70\xef\xb4\x7a\x3b\x73\x19\x10\x14\xa2\x65\x23\x52\x67\x5a\xc4\x2a\x3d\x9a\xd4\x2f\x06\x89\x23\x43\xb9\xd5\xdc\x2d\x42\xb6\xb1\x95\xfb\x3b\x7e\x4b\x75\x25\x7e\x86\x8a\xc5\x29\x60\x7b\x81\xe9\xfd\xe3\xf7\x8d\x2e\x16\xa8\x87\xbe\xb3\xce\x9a\x15\x7d\x75\x46\x4f\xa0\x36\x10\x67\x94\x1f\x7e\x3c\x52\x05\xb2\xd2\x9e\xb4\x05\xd1\x75\x1d\x6d\x8e\xf4\x1b\xab\xcd\xd8\xea\x9b\x58\xb6\xc9\xc5\x64\xa2\x9b\x26\xcb\xb0\x5b\xee\xa3\x37\x7d\x5c\x60\xe6\xf1\x1a\xca\x7d\x47\xb9\xbf\x92\xb2\xdc\x47\xdb\x2e\xca\xf6\xca\x28\xdb\x2e\xca\xf6\x42\x4b\xb7\x7c\x6d\x6f\xc5\x14\x6d\x51\x68\x55\x73\xc6\xf4\xad\x33\x7d\xf3\xfb\xbd\x1f\x62\xd0\x74\xad\x3c\x26\x7a\xcd\x74\x81\x12\xb4\xb0\x95\xfb\x37\x15\xf2\xbf\x3e\x3e\x5d\x1f\xb7\xff\x40\x1f\xee\xb3\x4b\xee\x33\x68\x99\x28\xc0\x64\xb8\x10\x6d\x62\xa9\x7e\xa0\xb2\x8e\xd9\xd6\xde\xf1\x8e\xf0\x04\x0d\x8c\xc9\xf4\x6c\xe9\x8a\xa5\x07\x8c\x54\xb1\x30\xe3\x66\xa1\xa3\x77\x65\xce\x4b\xd1\xcc\x1a\xdf\x04\x65\x65\xbb\xf7\xa9\x89\x45\x2e\x4f\x37\x9c\x54\xdd\xcc\xbf\x4a\x47\x7d\xc3\x71\x81\x57\x4f\x02\x62\x05\xe2\xf5\x18\x73\x7c\x66\x28\xec\xee\xf7\x13\xca\xb4\x1d\xd8\x9c\x69\x7d\x49\xa9\x03\xde\xa5\xdd\x68\x2d\xac\xd1\x7b\x3f\x98\xcb\x88\x0b\xd5\x3c\x35\x83\x65\xac\x84\x51\x76\x87\x35\xbb\xd0\x1e\xa3\x2a\x4e\xea\xf6\xca\x63\x7b\x2d\x76\xfe\xd8\xf7\xff\xe5\xb1\x97\x67\x8e\x3d\x75\xe7\x8e\xc5\xda\xeb\xcb\x73\x9a\x35\x17\xaf\xb4\xab\x02\x54\x2d\x38\xc2\xd2\x5d\xcd\xfa\x0d\x09\x47\x21\x99\xcb\x9b\xcf\xcd\xbb\xcb\x32\x20\xe3\xae\x73\xf3\xde\x34\x91\xc4\x2f\xe6\xdb\xe2\x45\x7f\x1b\xf8\x6c\xcc\xea\xa4\xb1\x59\x2e\x1c\xc6\x80\x63\x4b\x20\xeb\xb5\x79\xb0\x21\xec\x3f\x3e\xd1\x77\xf1\xcf\xf0\x58\x16\x45\xcc\x33\xdc\xbc\xdb\xe9\xcd\xb8\xc7\xa8\x83\x1c\xe1\x43\xf9\x58\x16\x15\x03\x05\xa4\xf1\xf1\x2a\x4e\x0f\x94\x67\xdf\xc2\x09\x07\x5f\x33\x15\xde\x69\x07\xac\x8e\x57\xbe\x93\x3c\x66\x12\xc8\xec\xaf\x00\x00\x00\xff\xff\x93\xd1\x8d\x0e\xb5\x0d\x00\x00" + +func runtimePluginsCommentCommentLuaBytes() ([]byte, error) { + return bindataRead( + _runtimePluginsCommentCommentLua, + "runtime/plugins/comment/comment.lua", + ) +} + +func runtimePluginsCommentCommentLua() (*asset, error) { + bytes, err := runtimePluginsCommentCommentLuaBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/plugins/comment/comment.lua", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimePluginsFtoptionsFtoptionsLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\xcf\xb1\x0e\x82\x40\x0c\x06\xe0\x9d\xa7\x68\x6e\x82\xc4\x49\x37\x12\x16\x07\x57\x06\x7d\x81\x3b\x6c\xe5\xe2\xd1\x5e\xb8\x32\xf0\xf6\x86\x13\x75\x82\xc4\x26\x5d\xfa\x25\xfd\xf3\xd3\xc4\x9d\x7a\x61\x10\x3e\x4f\x44\x38\xb6\x11\xb9\x74\x55\x01\x00\x10\xa4\xb3\x01\x48\xa1\x01\x57\x5f\x7c\xc0\xdb\x1c\xb1\xac\x8a\x8c\x9e\xb2\x34\x60\x1e\x62\x40\xc6\x7c\x5c\x2f\x83\x7d\x22\xf9\x80\x06\xb4\x47\xce\xb2\x8c\xab\xaf\xa8\x6d\x5c\xf2\x4a\xa3\xd6\x25\x95\x14\x6d\x87\xc9\x1c\xc0\x08\x91\x79\xc7\x62\x48\xf8\xfb\x4e\x3e\xf5\xdf\xff\xeb\xac\x14\x67\xed\x85\x77\xf1\xb8\xab\xa7\x0d\x9d\xed\x10\x36\x88\xfd\xf0\x57\x2b\xfe\x94\xe2\x7b\xb1\xec\x2b\x00\x00\xff\xff\x55\x1f\xb6\x5b\x71\x01\x00\x00" func runtimePluginsFtoptionsFtoptionsLuaBytes() ([]byte, error) { @@ -3604,6 +3625,7 @@ var _bindata = map[string]func() (*asset, error){ "runtime/help/plugins.md": runtimeHelpPluginsMd, "runtime/help/tutorial.md": runtimeHelpTutorialMd, "runtime/plugins/autoclose/autoclose.lua": runtimePluginsAutocloseAutocloseLua, + "runtime/plugins/comment/comment.lua": runtimePluginsCommentCommentLua, "runtime/plugins/ftoptions/ftoptions.lua": runtimePluginsFtoptionsFtoptionsLua, "runtime/plugins/linter/linter.lua": runtimePluginsLinterLinterLua, "runtime/plugins/literate/README.md": runtimePluginsLiterateReadmeMd, @@ -3821,6 +3843,9 @@ var _bintree = &bintree{nil, map[string]*bintree{ "autoclose": &bintree{nil, map[string]*bintree{ "autoclose.lua": &bintree{runtimePluginsAutocloseAutocloseLua, map[string]*bintree{}}, }}, + "comment": &bintree{nil, map[string]*bintree{ + "comment.lua": &bintree{runtimePluginsCommentCommentLua, map[string]*bintree{}}, + }}, "ftoptions": &bintree{nil, map[string]*bintree{ "ftoptions.lua": &bintree{runtimePluginsFtoptionsFtoptionsLua, map[string]*bintree{}}, }}, diff --git a/runtime/plugins/comment/comment.lua b/runtime/plugins/comment/comment.lua new file mode 100644 index 00000000..0b34a4dc --- /dev/null +++ b/runtime/plugins/comment/comment.lua @@ -0,0 +1,106 @@ +local util = import("micro/util") +local config = import("micro/config") +local buffer = import("micro/buffer") + +local ft = {} + +ft["c"] = "// %s" +ft["c++"] = "// %s" +ft["go"] = "// %s" +ft["python"] = "# %s" +ft["python3"] = "# %s" +ft["html"] = "" +ft["java"] = "// %s" +ft["julia"] = "# %s" +ft["perl"] = "# %s" +ft["php"] = "// %s" +ft["rust"] = "// %s" +ft["shell"] = "# %s" +ft["lua"] = "-- %s" +ft["javascript"] = "// %s" +ft["ruby"] = "# %s" +ft["d"] = "// %s" +ft["swift"] = "// %s" + +function onBufferOpen(buf) + if buf.Settings["commenttype"] == nil then + if ft[buf.Settings["filetype"]] ~= nil then + buf.Settings["commenttype"] = ft[buf.Settings["filetype"]] + else + buf.Settings["commenttype"] = "# %s" + end + end +end + +function commentLine(bp, lineN) + local line = bp.Buf:Line(lineN) + local commentType = bp.Buf.Settings["commenttype"] + local commentRegex = "^%s*" .. commentType:gsub("%*", "%*"):gsub("%-", "%-"):gsub("%.", "%."):gsub("%+", "%+"):gsub("%]", "%]"):gsub("%[", "%["):gsub("%%s", "(.*)") + local sel = -bp.Cursor.CurSelection + local curpos = -bp.Cursor.Loc + local index = string.find(commentType, "%%s") - 1 + if string.match(line, commentRegex) then + uncommentedLine = string.match(line, commentRegex) + bp.Buf:Replace(buffer.Loc(0, lineN), buffer.Loc(#line, lineN), util.GetLeadingWhitespace(line) .. uncommentedLine) + if bp.Cursor:HasSelection() then + bp.Cursor.CurSelection[1].Y = sel[1].Y + bp.Cursor.CurSelection[2].Y = sel[2].Y + bp.Cursor.CurSelection[1].X = sel[1].X + bp.Cursor.CurSelection[2].X = sel[2].X + else + bp.Cursor.X = curpos.X - index + bp.Cursor.Y = curpos.Y + end + else + local commentedLine = commentType:gsub("%%s", trim(line)) + bp.Buf:Replace(buffer.Loc(0, lineN), buffer.Loc(#line, lineN), util.GetLeadingWhitespace(line) .. commentedLine) + if bp.Cursor:HasSelection() then + bp.Cursor.CurSelection[1].Y = sel[1].Y + bp.Cursor.CurSelection[2].Y = sel[2].Y + bp.Cursor.CurSelection[1].X = sel[1].X + bp.Cursor.CurSelection[2].X = sel[2].X + else + bp.Cursor.X = curpos.X + index + bp.Cursor.Y = curpos.Y + end + end + bp.Cursor:Relocate() + bp.Cursor.LastVisualX = bp.Cursor:GetVisualX() +end + +function commentSelection(bp, startLine, endLine) + for line = startLine, endLine do + commentLine(bp, line) + end +end + +function comment(bp) + if bp.Cursor:HasSelection() then + if bp.Cursor.CurSelection[1]:GreaterThan(-bp.Cursor.CurSelection[2]) then + local endLine = bp.Cursor.CurSelection[1].Y + if bp.Cursor.CurSelection[1].X == 0 then + endLine = endLine - 1 + end + commentSelection(bp, bp.Cursor.CurSelection[2].Y, endLine) + else + local endLine = bp.Cursor.CurSelection[2].Y + if bp.Cursor.CurSelection[2].X == 0 then + endLine = endLine - 1 + end + commentSelection(bp, bp.Cursor.CurSelection[1].Y, endLine) + end + else + commentLine(bp, bp.Cursor.Y) + end +end + +function trim(s) + return (s:gsub("^%s*(.-)%s*$", "%1")) +end + +function string.starts(String,Start) + return string.sub(String,1,string.len(Start))==Start +end + +config.MakeCommand("comment", "comment.comment", config.NoComplete) +config.TryBindKey("Alt-/", "lua:comment.comment", false) From e18f6f832fa302531e6da08bcb2df3ecf34e0d9c Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 3 Aug 2019 16:07:16 -0700 Subject: [PATCH 140/231] Add goto command --- internal/action/actions.go | 5 ----- internal/action/bindings.go | 2 +- internal/action/bufpane.go | 1 - internal/action/command.go | 36 ++++++++++++++++++++++++++++++++++++ 4 files changed, 37 insertions(+), 7 deletions(-) diff --git a/internal/action/actions.go b/internal/action/actions.go index bacb04ad..3c8e018a 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -1091,11 +1091,6 @@ func (h *BufPane) ToggleRuler() bool { return false } -// JumpLine jumps to a line and moves the view accordingly. -func (h *BufPane) JumpLine() bool { - return false -} - // ClearStatus clears the messenger bar func (h *BufPane) ClearStatus() bool { InfoBar.Message("") diff --git a/internal/action/bindings.go b/internal/action/bindings.go index a1b1e7d5..6fba69e0 100644 --- a/internal/action/bindings.go +++ b/internal/action/bindings.go @@ -451,7 +451,7 @@ func DefaultBindings() map[string]string { "CtrlG": "ToggleHelp", "Alt-g": "ToggleKeyMenu", "CtrlR": "ToggleRuler", - "CtrlL": "JumpLine", + "CtrlL": "command-edit:goto ", "Delete": "Delete", "CtrlB": "ShellMode", "CtrlQ": "Quit", diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 6796b78e..e39f2b90 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -435,7 +435,6 @@ var BufKeyActions = map[string]BufKeyAction{ "ToggleHelp": (*BufPane).ToggleHelp, "ToggleKeyMenu": (*BufPane).ToggleKeyMenu, "ToggleRuler": (*BufPane).ToggleRuler, - "JumpLine": (*BufPane).JumpLine, "ClearStatus": (*BufPane).ClearStatus, "ShellMode": (*BufPane).ShellMode, "CommandMode": (*BufPane).CommandMode, diff --git a/internal/action/command.go b/internal/action/command.go index 67f25546..a30f6937 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -42,6 +42,7 @@ func InitCommands() { "bind": Command{(*BufPane).BindCmd, nil}, "unbind": Command{(*BufPane).UnbindCmd, nil}, "quit": Command{(*BufPane).QuitCmd, nil}, + "goto": Command{(*BufPane).GotoCmd, nil}, "save": Command{(*BufPane).SaveCmd, nil}, "replace": Command{(*BufPane).ReplaceCmd, nil}, "replaceall": Command{(*BufPane).ReplaceAllCmd, nil}, @@ -555,6 +556,41 @@ func (h *BufPane) QuitCmd(args []string) { h.Quit() } +// GotoCmd is a command that will send the cursor to a certain +// position in the buffer +// For example: `goto line`, or `goto line:col` +func (h *BufPane) GotoCmd(args []string) { + if len(args) <= 0 { + InfoBar.Error("Not enough arguments") + } else { + h.RemoveAllMultiCursors() + if strings.Contains(args[0], ":") { + parts := strings.SplitN(args[0], ":", 2) + line, err := strconv.Atoi(parts[0]) + if err != nil { + InfoBar.Error(err) + return + } + col, err := strconv.Atoi(parts[1]) + if err != nil { + InfoBar.Error(err) + return + } + line = util.Clamp(line-1, 0, h.Buf.LinesNum()-1) + col = util.Clamp(col-1, 0, utf8.RuneCount(h.Buf.LineBytes(line))) + h.Cursor.GotoLoc(buffer.Loc{col, line}) + } else { + line, err := strconv.Atoi(args[0]) + if err != nil { + InfoBar.Error(err) + return + } + line = util.Clamp(line-1, 0, h.Buf.LinesNum()-1) + h.Cursor.GotoLoc(buffer.Loc{0, line}) + } + } +} + // SaveCmd saves the buffer optionally with an argument file name func (h *BufPane) SaveCmd(args []string) { if len(args) == 0 { From 763e635feafdab8214d5aade501af55c98676bd5 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 3 Aug 2019 16:46:51 -0700 Subject: [PATCH 141/231] Add literate plugin support --- cmd/micro/initlua.go | 11 +++++++++++ internal/action/command.go | 24 ++++++++++++++++++++++++ internal/config/runtime.go | 2 +- runtime/plugins/literate/literate.lua | 27 ++++++++++++--------------- 4 files changed, 48 insertions(+), 16 deletions(-) diff --git a/cmd/micro/initlua.go b/cmd/micro/initlua.go index 9220f139..11e97be8 100644 --- a/cmd/micro/initlua.go +++ b/cmd/micro/initlua.go @@ -8,6 +8,7 @@ import ( "github.com/zyedidia/micro/internal/action" "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/internal/config" "github.com/zyedidia/micro/internal/display" ulua "github.com/zyedidia/micro/internal/lua" "github.com/zyedidia/micro/internal/screen" @@ -59,6 +60,16 @@ func luaImportMicroConfig() *lua.LTable { ulua.L.SetField(pkg, "OptionValueComplete", luar.New(ulua.L, action.OptionValueComplete)) ulua.L.SetField(pkg, "NoComplete", luar.New(ulua.L, nil)) ulua.L.SetField(pkg, "TryBindKey", luar.New(ulua.L, action.TryBindKey)) + ulua.L.SetField(pkg, "Reload", luar.New(ulua.L, action.ReloadConfig)) + ulua.L.SetField(pkg, "AddRuntimeFileFromMemory", luar.New(ulua.L, config.PluginAddRuntimeFileFromMemory)) + ulua.L.SetField(pkg, "AddRuntimeFilesFromDirectory", luar.New(ulua.L, config.PluginAddRuntimeFileFromMemory)) + ulua.L.SetField(pkg, "AddRuntimeFile", luar.New(ulua.L, config.PluginAddRuntimeFile)) + ulua.L.SetField(pkg, "ListRuntimeFiles", luar.New(ulua.L, config.PluginListRuntimeFiles)) + ulua.L.SetField(pkg, "ReadRuntimeFile", luar.New(ulua.L, config.PluginReadRuntimeFile)) + ulua.L.SetField(pkg, "RTColorscheme", luar.New(ulua.L, config.RTColorscheme)) + ulua.L.SetField(pkg, "RTSyntax", luar.New(ulua.L, config.RTSyntax)) + ulua.L.SetField(pkg, "RTHelp", luar.New(ulua.L, config.RTHelp)) + ulua.L.SetField(pkg, "RTPlugin", luar.New(ulua.L, config.RTPlugin)) return pkg } diff --git a/internal/action/command.go b/internal/action/command.go index a30f6937..3bbe9359 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -3,6 +3,7 @@ package action import ( "errors" "fmt" + "log" "os" "path/filepath" "regexp" @@ -252,6 +253,29 @@ func (h *BufPane) ToggleLogCmd(args []string) { // ReloadCmd reloads all files (syntax files, colorschemes...) func (h *BufPane) ReloadCmd(args []string) { + ReloadConfig() +} + +func ReloadConfig() { + config.InitRuntimeFiles() + err := config.ReadSettings() + if err != nil { + screen.TermMessage(err) + } + config.InitGlobalSettings() + InitBindings() + InitCommands() + + err = config.InitColorscheme() + if err != nil { + screen.TermMessage(err) + } + + log.Println("RELOAD CONFIG", len(buffer.OpenBuffers)) + for _, b := range buffer.OpenBuffers { + log.Println("UPDATE RULES") + b.UpdateRules() + } } // ReopenCmd reopens the buffer (reload from disk) diff --git a/internal/config/runtime.go b/internal/config/runtime.go index 4e267ef6..4fc2f18a 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -1132,7 +1132,7 @@ func runtimePluginsLiterateReadmeMd() (*asset, error) { return a, nil } -var _runtimePluginsLiterateLiterateLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x56\xdf\x6f\xe2\x38\x10\x7e\xe7\xaf\x18\xf9\xee\xd4\xe4\x9a\x44\xe5\x1e\x91\x22\xe5\x4e\xba\x9e\x4e\xda\x6d\x57\xad\xd4\x17\xa0\xc8\x8d\x27\x60\xe1\xd8\x91\xe3\x94\x45\xa5\xff\xfb\x6a\xe2\x00\x21\xbb\xab\x85\xe6\x05\x7b\xf2\xcd\xf7\xcd\xaf\xd8\xc4\x31\x3c\xfd\xfb\xf0\xf8\xff\xfd\x1d\xa4\xc0\xc6\xc9\x4d\x72\xc3\x46\xb2\x80\xff\xd0\xdd\x57\x4e\x1a\x1d\x30\x25\x1d\x5a\xee\x90\x85\x90\xa6\xa0\xa5\x02\xb7\x42\x3d\x02\x00\xf8\x5b\x88\xef\x50\x11\x38\xdb\x60\x38\x42\x2d\x46\xa3\xa2\xd1\x39\xbd\x87\xda\x71\xeb\xea\x8d\x74\xab\xa0\x76\x36\xf2\xfb\x90\x48\x2c\xba\xc6\x12\xc0\x4a\xbd\x4c\xea\xe6\xa5\x05\x8c\xa3\xce\xa0\x50\x07\x1e\x1c\xa6\x69\xbb\x18\x30\xa3\x16\x3d\x5e\xd4\xe2\xd1\xd9\x3e\xb1\xb7\xa4\xe9\xd5\x15\x18\x3b\x94\x89\x7b\x2a\x9d\x6b\x98\xa6\x7e\x35\xcc\xa0\x52\xd2\x05\x1e\x1f\x41\x8d\x55\x2b\xd2\x3e\xca\xe4\x5c\x91\x29\x82\x42\xa2\x12\x35\xa4\xb4\x23\x3d\x36\x61\x11\xbc\xbd\x0f\xa0\x15\x77\x0e\xad\x26\x98\xd7\x2f\x8c\x2d\xb9\x0b\x58\x30\x7d\xfe\xa3\x9e\x5f\x87\x6c\xa0\xe0\x61\x93\x25\xc5\xdd\x39\x47\xb0\x0f\x2d\xc8\xc3\x4e\x77\xfa\x9b\xff\xbd\x1e\xcf\x21\x85\x9c\x72\x3f\x72\x74\xf5\xf0\x88\x41\x72\x46\x3f\x49\xdc\xdc\x57\xa8\x83\x57\x89\x1b\xef\x24\x0b\xd0\xc6\xfd\x64\x14\x68\x06\x7a\x25\xee\x3b\x1c\x3a\x42\x54\xc9\x3f\x4d\x91\x7c\xe1\x6e\x15\x01\x4b\x94\x74\x9d\xeb\x20\xaa\x76\xdb\x86\x74\x2c\x52\x6e\x04\xba\x6d\x85\x34\x98\x8d\x5e\x6b\xb3\xd1\xac\x7d\x5d\x18\x0b\x32\x1d\x47\x07\xfa\xbb\xa6\xfc\x24\x35\xd6\x20\xcc\xa0\xd0\x4a\x6a\xf2\xdf\x23\x27\x04\x0b\x64\x3c\x3e\x56\x45\x16\xfd\xd9\x24\x7c\x04\x2c\x23\xed\x05\x89\x0f\xc3\xa5\xa7\x17\x98\x1f\x8a\xce\x0b\x58\x38\xfd\x6b\x7e\x02\x7d\xb1\xc8\xd7\x07\xcb\xbe\x4e\x83\x44\xeb\xad\x76\xfc\xeb\xad\x54\x6d\xaa\x3e\xc7\x13\x5b\x6f\x93\x24\xc0\x0a\xa9\x5a\xfd\x09\xec\xfb\x11\x33\x7a\x71\x88\x8b\x40\x33\xfd\x6b\x22\x81\x0e\x73\x37\x39\x07\xda\xd6\x5d\x2a\xd4\xbc\xc4\x09\xcc\xd8\x6c\x36\x9b\x51\x3b\x7f\x9f\x9d\xa5\x64\x1b\x85\xf5\xd9\x42\x31\x48\x9d\xab\x46\xb4\x4a\x25\xb7\x6b\x61\x36\xfa\x3c\x21\xef\x5e\x57\x98\x4b\xae\xc8\xfd\x39\xc8\xea\x5d\xe6\xa4\x53\xb8\x3b\xb6\x95\x96\x65\x89\xda\x75\xbb\x4e\x6f\x97\xe5\x2b\xae\x97\x87\xdf\x05\x7d\x40\x1f\x14\x0e\x32\x2e\xc4\x22\xaf\xeb\x5d\x66\x5e\xd1\x6e\xac\x74\xe8\xb7\xb9\x51\xc6\xd6\xf9\x0a\x4b\x1f\x47\x25\x15\xda\x5d\x86\xd6\x1a\xbb\xf0\x27\xc1\x2e\x7b\x31\x66\x7d\x91\xb4\xc0\x82\x37\xea\xfc\x6e\xfa\x63\x85\x5b\x47\xc1\xc6\x71\x9c\xfc\x79\x66\x2f\x7b\xd3\xdc\xb9\x5e\xe8\xa8\x64\x29\x5d\xbc\xb4\xa6\xa9\x88\x40\x0a\xd4\x4e\x16\x12\xed\x65\x34\x97\xcd\xd4\xfe\x39\xf6\xe8\x52\xcf\x93\x82\x65\xf4\x01\xbc\x5d\x16\xf0\xa0\x70\xc4\xf0\xfe\x31\x06\x9f\x3a\x4c\xe7\x97\x67\x7f\xf8\xb2\x7e\x7c\x64\xec\xaf\xf5\x87\x46\x3b\x59\x22\x91\xdc\x5a\x53\x7e\xc6\xd2\xd8\xed\xc9\x2d\xcf\xbc\x0c\xad\xf6\xd6\x64\xcb\x4b\x45\x57\xd7\x21\x00\x7f\xce\x3e\xa0\x32\x5c\x04\xfe\x3f\xc1\xb7\x00\x00\x00\xff\xff\x6b\x4a\xed\x64\x72\x08\x00\x00" +var _runtimePluginsLiterateLiterateLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x55\x4d\x8f\xe2\x38\x10\xbd\xf3\x2b\x4a\xde\x5d\x75\xb2\x9d\x64\xc5\x1e\x91\x22\x65\xf7\xd0\xa7\xfd\x12\xbd\x73\x02\x1a\x99\xb8\x02\x16\x8e\x1d\xd9\x95\x61\x50\xd3\xff\x7d\xe4\x38\x84\x34\x6a\x69\xa0\x73\x89\xab\xfc\xea\xbd\x2a\x97\x3f\x94\x29\xb9\x82\xd2\xe8\x4a\x6e\x21\x07\x59\x37\xc6\x52\xc4\x6a\x59\x5a\xf3\x5b\x70\xb3\x78\x32\xa9\x5a\x5d\x92\x34\x1a\x1c\x71\x4b\xee\x20\x69\x17\x39\xb2\x49\xb0\xe3\x09\x00\x58\xa4\xd6\x7a\x80\x95\x7a\x9b\xb9\x76\xd3\x01\xa6\x49\xef\x50\xa8\xa3\x00\x8e\xf3\xbc\x1b\x4c\x50\x8b\x11\x33\x6a\x31\xe2\x45\x2d\x9e\xc9\x8e\x89\x83\x27\xcf\x1f\x1e\xc0\xd8\x6b\x99\x74\xa4\xd2\x87\xc6\x79\x1e\x46\x57\x3a\xae\x51\x92\xa2\x80\x4f\xc0\x61\xd3\x89\x40\x58\x08\x87\x4d\x02\x95\x44\x25\x1c\xe4\xde\xf2\x5a\x6c\xc6\x12\x78\x7d\x1b\xc1\x1a\x4e\x84\x56\x7b\x48\xd0\xad\x8c\xad\x39\x45\x2c\x5a\xbc\xfc\xe2\x56\x8f\x31\x1b\x31\x07\xc8\x6c\xeb\x73\xed\x03\x13\x38\xa7\x13\x95\x71\xaf\xb7\xf8\x29\xfc\x1f\xa7\x2b\xc8\xa1\xf4\xf5\x86\xf8\xbe\xfe\x30\x7b\x55\x8c\xd1\x7f\xb6\x55\x85\xf6\xdf\x06\x75\xb4\x69\xab\x10\x21\x2b\xd0\x86\x2e\x2b\xba\x69\xab\xec\x3f\x4e\xbb\x04\x58\xa6\x24\xb1\x18\x68\x87\xba\x83\x5e\x04\x3a\xb3\x63\xbf\xd4\x59\x1a\x81\x74\x6c\x10\x72\x60\xad\xde\x6b\x73\xd0\xac\x9b\xae\x8c\x05\x99\x4f\x93\x4d\x5b\xcd\xfe\x92\x1a\xdd\x3f\x6d\x1d\xc5\x20\xcc\x40\x1a\x08\x94\xd4\x3e\xf8\x0c\x8b\x64\x3a\x8d\x07\x88\xac\xc6\xdb\xc9\x43\x13\x60\x85\xd7\x5c\x7b\xd1\xeb\x34\xfd\x37\x4a\x28\xf4\xb1\x8f\x02\x16\x2f\x7e\x5f\xbd\x83\x6e\x2c\xf2\xfd\xe0\xf1\x85\x7d\x50\xa0\x3b\x6a\xe2\xdf\x9e\xa4\xea\x4a\x0c\xb5\xbd\xf3\x8d\x8c\x2c\x03\x56\x49\xd5\xe9\xcf\x40\x49\x42\xcb\x09\x53\xe6\x27\x86\xbc\x3c\x68\xa9\x7f\x4c\x24\x90\xb0\xa4\xd9\x2d\xd0\x6e\xbd\xa5\x42\xcd\x6b\x9c\xc1\x92\x2d\x97\xcb\xa5\x6f\xe3\xcf\xcb\x9b\x94\x6c\xab\xd0\xdd\x2c\x94\x82\xd4\xa5\x6a\x45\xa7\x54\x73\xbb\x17\xe6\xa0\x6f\x13\x0a\xe1\xae\xc1\x52\x72\xe5\xc3\x5f\xa2\xc2\x9d\x0a\x92\xa4\xf0\x74\x69\xab\x1f\xd6\x35\x6a\xea\xad\x5e\xef\x54\x94\x3b\xae\xb7\xc3\x7f\xed\xf7\xff\x27\x85\xa3\x82\x0b\xb1\x2e\x9d\x3b\x15\xe6\x2b\xda\x83\x95\x84\xc1\x2c\x8d\x32\xd6\x95\x3b\xac\x43\x1e\x8d\x54\x68\x4f\x05\x5a\x6b\xec\x3a\x1c\xe2\x53\xb1\x31\x66\x7f\x97\xb4\xc0\x8a\xb7\xea\xf6\x6e\x86\x5b\x81\x5b\xf2\xc9\xa6\x69\x9a\xfd\x7a\x63\x2f\x47\xbb\xb9\x0f\xbd\x33\x50\xc9\x5a\x52\xba\xb5\xa6\x6d\x3c\x81\x14\xa8\x49\x56\x12\xed\x7d\x34\xf7\xed\xa9\xf3\x77\xe9\xd1\xbd\x91\xef\x16\xac\xf0\x07\xe0\xf5\xbe\x84\xaf\x16\xce\x33\xbc\x7d\x8e\x21\x94\x0e\x8b\xd5\xfd\xd5\x0f\x27\xeb\xe3\x2b\x63\x12\x2e\x38\xff\xe4\x66\x7f\x08\x31\x6f\x35\xc9\x1a\x3d\xd7\x93\x35\xf5\xdf\x58\x1b\x7b\x8c\xd8\xf9\xde\x61\xc9\x19\x3b\xff\xff\xb9\x53\x4d\x60\x98\xcc\x8e\xbc\x56\xfe\x0d\x1a\xd2\x89\xc7\xec\x73\x54\x86\x8b\x28\xf8\xfc\xdd\xfc\xa5\x11\x9c\x70\xee\x4b\x8b\xe2\xee\x89\xf9\x1e\x00\x00\xff\xff\x27\x3a\xf6\x67\x18\x08\x00\x00" func runtimePluginsLiterateLiterateLuaBytes() ([]byte, error) { return bindataRead( diff --git a/runtime/plugins/literate/literate.lua b/runtime/plugins/literate/literate.lua index 913b2d3f..01fcba4b 100644 --- a/runtime/plugins/literate/literate.lua +++ b/runtime/plugins/literate/literate.lua @@ -1,7 +1,4 @@ --- VERSION = "1.0.0" -if GetOption("literate") == nil then - AddOption("literate", true) -end +local config = import("micro/config") function startswith(str, start) return string.sub(str,1,string.len(start))==start @@ -12,21 +9,20 @@ function endswith(str, endStr) end function split(string, sep) - local sep, fields = sep or ":", {} - local pattern = string.format("([^%s]+)", sep) - string:gsub(pattern, function(c) fields[#fields+1] = c end) - return fields + local sep, fields = sep or ":", {} + local pattern = string.format("([^%s]+)", sep) + string:gsub(pattern, function(c) fields[#fields+1] = c end) + return fields end -function onViewOpen(view) - if not GetOption("literate") then return end - if not endswith(view.Buf.Path, ".lit") then +function onBufferOpen(buf) + if not endswith(buf.Path, ".lit") then return end local codetype = "unknown" - for i=1,view.Buf.NumLines do - local line = view.Buf:Line(i-1) + for i=1,buf:LinesNum() do + local line = buf:Line(i-1) if startswith(line, "@code_type") then codetype = split(line, " ")[2] break @@ -52,6 +48,7 @@ function onViewOpen(view) syntaxFile = syntaxFile .. " rules: []\n" syntaxFile = syntaxFile .. " - include: " .. codetype .. "\n" - AddRuntimeFileFromMemory("literate", "syntax", "literate.yaml", syntaxFile) - Reload() + config.AddRuntimeFileFromMemory("literate", config.RTSyntax, "literate.yaml", syntaxFile) + config.Reload() + buf:UpdateRules() end From 9eed8bc2471bedf5bfae2739290d99a3db30f1fd Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 3 Aug 2019 17:12:23 -0700 Subject: [PATCH 142/231] Remove local settings --- cmd/micro/micro.go | 6 ----- internal/action/bufpane.go | 2 -- internal/action/command.go | 5 +--- internal/action/infocomplete.go | 37 ++++++++++++++--------------- internal/buffer/buffer.go | 4 +--- internal/config/plugin.go | 2 -- internal/config/rtfiles.go | 2 -- internal/config/settings.go | 42 ++++++++++----------------------- internal/display/bufwindow.go | 8 ------- internal/util/util.go | 2 -- 10 files changed, 33 insertions(+), 77 deletions(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 62a41b42..635358ff 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -201,12 +201,6 @@ func main() { action.InitTabs(b) action.InitGlobals() - for _, s := range config.LocalSettings { - if _, ok := config.GlobalSettings[s]; ok { - delete(config.GlobalSettings, s) - } - } - // Here is the event loop which runs in a separate thread go func() { events = make(chan tcell.Event) diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index e39f2b90..a5c8530c 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -1,7 +1,6 @@ package action import ( - "log" "strings" "time" @@ -296,7 +295,6 @@ func (h *BufPane) DoKeyEvent(e Event) bool { return false } rel := action(h) - log.Println("calling on", estr) if h.PluginCB("on"+estr) && rel { h.Relocate() } diff --git a/internal/action/command.go b/internal/action/command.go index 3bbe9359..c4fe0db8 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -3,7 +3,6 @@ package action import ( "errors" "fmt" - "log" "os" "path/filepath" "regexp" @@ -271,9 +270,7 @@ func ReloadConfig() { screen.TermMessage(err) } - log.Println("RELOAD CONFIG", len(buffer.OpenBuffers)) for _, b := range buffer.OpenBuffers { - log.Println("UPDATE RULES") b.UpdateRules() } } @@ -450,7 +447,7 @@ func (h *BufPane) ResetCmd(args []string) { option := args[0] defaultGlobals := config.DefaultGlobalSettings() - defaultLocals := config.DefaultLocalSettings() + defaultLocals := config.DefaultCommonSettings() if _, ok := defaultGlobals[option]; ok { SetGlobalOptionNative(option, defaultGlobals[option]) diff --git a/internal/action/infocomplete.go b/internal/action/infocomplete.go index 9179b63b..15a175da 100644 --- a/internal/action/infocomplete.go +++ b/internal/action/infocomplete.go @@ -92,17 +92,16 @@ func OptionComplete(b *buffer.Buffer) ([]string, []string) { input, argstart := buffer.GetArg(b) var suggestions []string - localSettings := config.DefaultLocalSettings() for option := range config.GlobalSettings { if strings.HasPrefix(option, input) { suggestions = append(suggestions, option) } } - for option := range localSettings { - if strings.HasPrefix(option, input) && !contains(suggestions, option) { - suggestions = append(suggestions, option) - } - } + // for option := range localSettings { + // if strings.HasPrefix(option, input) && !contains(suggestions, option) { + // suggestions = append(suggestions, option) + // } + // } sort.Strings(suggestions) completions := make([]string, len(suggestions)) @@ -122,19 +121,19 @@ func OptionValueComplete(b *buffer.Buffer) ([]string, []string) { completeValue := false args := bytes.Split(l, []byte{' '}) if len(args) >= 2 { - localSettings := config.DefaultLocalSettings() + // localSettings := config.DefaultLocalSettings() for option := range config.GlobalSettings { if option == string(args[len(args)-2]) { completeValue = true break } } - for option := range localSettings { - if option == string(args[len(args)-2]) { - completeValue = true - break - } - } + // for option := range localSettings { + // if option == string(args[len(args)-2]) { + // completeValue = true + // break + // } + // } } if !completeValue { return OptionComplete(b) @@ -144,18 +143,18 @@ func OptionValueComplete(b *buffer.Buffer) ([]string, []string) { inputOpt = strings.TrimSpace(inputOpt) var suggestions []string - localSettings := config.DefaultLocalSettings() + // localSettings := config.DefaultLocalSettings() var optionVal interface{} for k, option := range config.GlobalSettings { if k == inputOpt { optionVal = option } } - for k, option := range localSettings { - if k == inputOpt { - optionVal = option - } - } + // for k, option := range localSettings { + // if k == inputOpt { + // optionVal = option + // } + // } switch optionVal.(type) { case bool: diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index 9082db3b..5767445f 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -6,7 +6,6 @@ import ( "errors" "io" "io/ioutil" - "log" "os" "path/filepath" "strconv" @@ -163,7 +162,7 @@ func NewBuffer(r io.Reader, size int64, path string, startcursor Loc, btype BufT b := new(Buffer) - b.Settings = config.DefaultLocalSettings() + b.Settings = config.DefaultCommonSettings() for k, v := range config.GlobalSettings { if _, ok := b.Settings[k]; ok { b.Settings[k] = v @@ -294,7 +293,6 @@ func (b *Buffer) SetName(s string) { func (b *Buffer) Insert(start Loc, text string) { if !b.Type.Readonly { - log.Println("INSERT", start, text) b.EventHandler.cursors = b.cursors b.EventHandler.active = b.curCursor b.EventHandler.Insert(start, text) diff --git a/internal/config/plugin.go b/internal/config/plugin.go index e3f2e42b..40a526e9 100644 --- a/internal/config/plugin.go +++ b/internal/config/plugin.go @@ -2,7 +2,6 @@ package config import ( "errors" - "log" lua "github.com/yuin/gopher-lua" ulua "github.com/zyedidia/micro/internal/lua" @@ -102,7 +101,6 @@ func (p *Plugin) Load() error { func (p *Plugin) Call(fn string, args ...lua.LValue) (lua.LValue, error) { plug := ulua.L.GetGlobal(p.Name) - log.Println(p.Name, fn, plug) luafn := ulua.L.GetField(plug, fn) if luafn == lua.LNil { return nil, ErrNoSuchFunction diff --git a/internal/config/rtfiles.go b/internal/config/rtfiles.go index 520c74b3..d31b4123 100644 --- a/internal/config/rtfiles.go +++ b/internal/config/rtfiles.go @@ -2,7 +2,6 @@ package config import ( "io/ioutil" - "log" "os" "path" "path/filepath" @@ -138,7 +137,6 @@ func InitRuntimeFiles() { // Search ConfigDir for plugin-scripts plugdir := filepath.Join(ConfigDir, "plugins") files, _ := ioutil.ReadDir(plugdir) - log.Println("reading", plugdir) for _, d := range files { if d.IsDir() { srcs, _ := ioutil.ReadDir(filepath.Join(plugdir, d.Name())) diff --git a/internal/config/settings.go b/internal/config/settings.go index 7a7df05a..a6234032 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -129,10 +129,6 @@ func RegisterCommonOption(name string, defaultvalue interface{}) error { return nil } -func RegisterLocalOption(name string, defaultvalue interface{}) { - defaultLocalSettings[name] = defaultvalue -} - func RegisterGlobalOption(name string, defaultvalue interface{}) error { if v, ok := GlobalSettings[name]; !ok { defaultGlobalSettings[name] = defaultvalue @@ -162,11 +158,13 @@ var defaultCommonSettings = map[string]interface{}{ "eofnewline": false, "fastdirty": true, "fileformat": "unix", + "filetype": "unknown", "ignorecase": false, "indentchar": " ", "keepautoindent": false, "matchbrace": false, "matchbraceleft": false, + "readonly": false, "rmtrailingws": false, "ruler": true, "savecursor": false, @@ -199,6 +197,16 @@ func GetInfoBarOffset() int { return offset } +// DefaultCommonSettings returns the default global settings for micro +// Note that colorscheme is a global only option +func DefaultCommonSettings() map[string]interface{} { + commonsettings := make(map[string]interface{}) + for k, v := range defaultCommonSettings { + commonsettings[k] = v + } + return commonsettings +} + var defaultGlobalSettings = map[string]interface{}{ "colorscheme": "default", "infobar": true, @@ -222,29 +230,8 @@ func DefaultGlobalSettings() map[string]interface{} { return globalsettings } -// LocalSettings is a list of the local only settings -var LocalSettings = []string{"filetype", "readonly"} - -var defaultLocalSettings = map[string]interface{}{ - "filetype": "unknown", - "readonly": false, -} - -// DefaultLocalSettings returns the default local settings -// Note that filetype is a local only option -func DefaultLocalSettings() map[string]interface{} { - localsettings := make(map[string]interface{}) - for k, v := range defaultCommonSettings { - localsettings[k] = v - } - for k, v := range defaultLocalSettings { - localsettings[k] = v - } - return localsettings -} - // DefaultAllSettings returns a map of all settings and their -// default values (both local and global settings) +// default values (both common and global settings) func DefaultAllSettings() map[string]interface{} { allsettings := make(map[string]interface{}) for k, v := range defaultCommonSettings { @@ -253,9 +240,6 @@ func DefaultAllSettings() map[string]interface{} { for k, v := range defaultGlobalSettings { allsettings[k] = v } - for k, v := range defaultLocalSettings { - allsettings[k] = v - } return allsettings } diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index 685c1a16..85719689 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -1,7 +1,6 @@ package display import ( - "log" "strconv" "unicode/utf8" @@ -150,27 +149,21 @@ func (w *BufWindow) Relocate() bool { ret := false activeC := w.Buf.GetActiveCursor() cy := activeC.Y - log.Println("RELOCATE", w.StartLine, cy, height) scrollmargin := int(b.Settings["scrollmargin"].(float64)) if cy < w.StartLine+scrollmargin && cy > scrollmargin-1 { - log.Println("a") w.StartLine = cy - scrollmargin ret = true } else if cy < w.StartLine { - log.Println("b") w.StartLine = cy ret = true } if cy > w.StartLine+height-1-scrollmargin && cy < b.LinesNum()-scrollmargin { - log.Println("c") w.StartLine = cy - height + 1 + scrollmargin ret = true } else if cy >= b.LinesNum()-scrollmargin && cy >= height { - log.Println("d") w.StartLine = b.LinesNum() - height ret = true } - log.Println("RELOCATE DONE", w.StartLine) // horizontal relocation (scrolling) if !b.Settings["softwrap"].(bool) { @@ -363,7 +356,6 @@ func (w *BufWindow) showCursor(x, y int, main bool) { // displayBuffer draws the buffer being shown in this window on the screen.Screen func (w *BufWindow) displayBuffer() { - log.Println("STARTLINE", w.StartLine) b := w.Buf hasMessage := len(b.Messages) > 0 diff --git a/internal/util/util.go b/internal/util/util.go index 280c6cae..bfbe43b1 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -3,7 +3,6 @@ package util import ( "errors" "fmt" - "log" "os" "os/user" "path/filepath" @@ -205,7 +204,6 @@ func FSize(f *os.File) int64 { // IsWordChar returns whether or not the string is a 'word character' // Word characters are defined as numbers, letters, or '_' func IsWordChar(r rune) bool { - log.Println("IsWordChar") return unicode.IsLetter(r) || unicode.IsNumber(r) || r == '_' } From ccb590459119828dd9a3bf618b410bba6ab3f68f Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 3 Aug 2019 21:01:57 -0700 Subject: [PATCH 143/231] Add mkparents option --- internal/buffer/save.go | 39 +++++++++++++++++----------------- internal/config/settings.go | 1 + internal/display/statusline.go | 2 -- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/internal/buffer/save.go b/internal/buffer/save.go index d876b338..0ed64a7e 100644 --- a/internal/buffer/save.go +++ b/internal/buffer/save.go @@ -55,7 +55,8 @@ func (b *Buffer) Save() error { } // SaveAs saves the buffer to a specified path (filename), creating the file if it does not exist -func (b *Buffer) SaveAs(filename string) (err error) { +func (b *Buffer) SaveAs(filename string) error { + var err error if b.Type.Scratch { return errors.New("Cannot save scratch buffer") } @@ -88,24 +89,22 @@ func (b *Buffer) SaveAs(filename string) (err error) { // Removes any tilde and replaces with the absolute path to home absFilename, _ := ReplaceHome(filename) - // TODO: save creates parent dirs - // // Get the leading path to the file | "." is returned if there's no leading path provided - // if dirname := filepath.Dir(absFilename); dirname != "." { - // // Check if the parent dirs don't exist - // if _, statErr := os.Stat(dirname); os.IsNotExist(statErr) { - // // Prompt to make sure they want to create the dirs that are missing - // if yes, canceled := messenger.YesNoPrompt("Parent folders \"" + dirname + "\" do not exist. Create them? (y,n)"); yes && !canceled { - // // Create all leading dir(s) since they don't exist - // if mkdirallErr := os.MkdirAll(dirname, os.ModePerm); mkdirallErr != nil { - // // If there was an error creating the dirs - // return mkdirallErr - // } - // } else { - // // If they canceled the creation of leading dirs - // return errors.New("Save aborted") - // } - // } - // } + // Get the leading path to the file | "." is returned if there's no leading path provided + if dirname := filepath.Dir(absFilename); dirname != "." { + // Check if the parent dirs don't exist + if _, statErr := os.Stat(dirname); os.IsNotExist(statErr) { + // Prompt to make sure they want to create the dirs that are missing + if b.Settings["mkparents"].(bool) { + // Create all leading dir(s) since they don't exist + if mkdirallErr := os.MkdirAll(dirname, os.ModePerm); mkdirallErr != nil { + // If there was an error creating the dirs + return mkdirallErr + } + } else { + return errors.New("Parent dirs don't exist, enable 'mkparents' for auto creation") + } + } + } var fileSize int @@ -161,7 +160,7 @@ func (b *Buffer) SaveAs(filename string) (err error) { absPath, _ := filepath.Abs(filename) b.AbsPath = absPath b.isModified = false - return + return err } // SaveWithSudo saves the buffer to the default path with sudo diff --git a/internal/config/settings.go b/internal/config/settings.go index a6234032..8702bff1 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -164,6 +164,7 @@ var defaultCommonSettings = map[string]interface{}{ "keepautoindent": false, "matchbrace": false, "matchbraceleft": false, + "mkparents": false, "readonly": false, "rmtrailingws": false, "ruler": true, diff --git a/internal/display/statusline.go b/internal/display/statusline.go index 059c25d2..0fae348c 100644 --- a/internal/display/statusline.go +++ b/internal/display/statusline.go @@ -72,8 +72,6 @@ func SetStatusInfoFnLua(s string, fn string) { } } -// TODO: plugin modify status line formatter - // NewStatusLine returns a statusline bound to a window func NewStatusLine(win *BufWindow) *StatusLine { s := new(StatusLine) From bc6dd990e5632b0ebb8359979eb1445a3cc54ec2 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 3 Aug 2019 23:53:33 -0700 Subject: [PATCH 144/231] Improve gutter messages --- cmd/micro/micro.go | 12 ++++----- internal/action/bufpane.go | 44 +++++++++++++++++++++++-------- internal/config/runtime.go | 2 +- internal/display/bufwindow.go | 4 +++ internal/display/infowindow.go | 1 + internal/display/termwindow.go | 4 +++ internal/display/window.go | 1 + runtime/plugins/linter/linter.lua | 5 ++-- 8 files changed, 52 insertions(+), 21 deletions(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 635358ff..394512a0 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -232,18 +232,16 @@ func main() { select { case f := <-shell.Jobs: // If a new job has finished while running in the background we should execute the callback - log.Println("OUTPUT:", f.Output) f.Function(f.Output, f.Args...) case event = <-events: case <-screen.DrawChan: } - if event != nil { - if action.InfoBar.HasPrompt { - action.InfoBar.HandleEvent(event) - } else { - action.Tabs.HandleEvent(event) - } + if action.InfoBar.HasPrompt { + action.InfoBar.HandleEvent(event) + } else { + action.Tabs.HandleEvent(event) } + log.Println("Done event cycle") } } diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index a5c8530c..969ed956 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -250,18 +250,20 @@ func (h *BufPane) HandleEvent(event tcell.Event) { } h.Buf.MergeCursors() - // Display any gutter messages for this line - c := h.Buf.GetActiveCursor() - none := true - for _, m := range h.Buf.Messages { - if c.Y == m.Start.Y || c.Y == m.End.Y { - InfoBar.GutterMessage(m.Msg) - none = false - break + if h.IsActive() { + // Display any gutter messages for this line + c := h.Buf.GetActiveCursor() + none := true + for _, m := range h.Buf.Messages { + if c.Y == m.Start.Y || c.Y == m.End.Y { + InfoBar.GutterMessage(m.Msg) + none = false + break + } + } + if none && InfoBar.HasGutter { + InfoBar.ClearGutter() } - } - if none && InfoBar.HasGutter { - InfoBar.ClearGutter() } } @@ -366,6 +368,26 @@ func (h *BufPane) Close() { h.Buf.Close() } +func (h *BufPane) SetActive(b bool) { + h.BWindow.SetActive(b) + if b { + // Display any gutter messages for this line + c := h.Buf.GetActiveCursor() + none := true + for _, m := range h.Buf.Messages { + if c.Y == m.Start.Y || c.Y == m.End.Y { + InfoBar.GutterMessage(m.Msg) + none = false + break + } + } + if none && InfoBar.HasGutter { + InfoBar.ClearGutter() + } + } + +} + // BufKeyActions contains the list of all possible key actions the bufhandler could execute var BufKeyActions = map[string]BufKeyAction{ "CursorUp": (*BufPane).CursorUp, diff --git a/internal/config/runtime.go b/internal/config/runtime.go index 4fc2f18a..b29800e2 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -1092,7 +1092,7 @@ func runtimePluginsFtoptionsFtoptionsLua() (*asset, error) { return a, nil } -var _runtimePluginsLinterLinterLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x58\xeb\x8f\xa4\xb8\x11\xff\x3e\x7f\x85\x85\x82\x04\x3b\xc0\x28\x51\x3e\x21\xb5\xa2\xcb\xe6\x2e\x52\xb4\x8f\x48\xb3\x51\x3e\xec\xee\x45\x6e\x28\xba\x7d\x63\x6c\x62\x9b\xee\xe9\x8c\xf6\x7f\x8f\xaa\x6c\xc0\xf4\x63\x6e\xf3\x18\x69\xb0\x31\xf5\xf8\xd5\xcb\x2e\xb7\xd4\x0d\x97\xcc\x8c\xca\x89\x1e\xd8\x86\x89\x7e\xd0\xc6\x65\x49\x58\x49\xf2\x3b\x4f\xd1\x09\x09\x03\x77\xfb\x88\x04\x5f\x1f\xa6\xf5\x99\xd0\xee\x41\xca\x88\xaa\x17\x8d\xd1\x0f\xb4\x3a\xd3\x6c\xc7\xae\x03\x73\x41\xe4\x97\x67\xaa\x46\xab\x4e\xec\x2e\xa8\xfc\x72\x92\xdf\x05\x32\x29\x94\x03\x63\xd9\x86\xbd\x7c\xbb\xbb\x2b\x4b\xd6\x18\xe0\x0e\x2c\xe3\xe1\x13\x03\xe5\xcc\xa9\x60\x0d\x97\x92\x75\x46\xf7\xec\x28\xdc\x5e\x28\xc6\x15\x13\x4a\x38\xc1\xa5\xf8\x17\x77\x42\x2b\xd6\x8d\xaa\xc1\x49\xc1\x94\x76\x28\xab\x15\x06\x1a\x27\x4f\x8c\xbb\x89\x96\x49\xcd\x5b\x86\xce\xb9\x2b\x4b\xa4\x51\xbc\x87\x9a\x9e\x4c\x77\xcc\xed\x21\xe8\xc5\x6f\xe8\x1e\x77\x1a\xa0\x9e\x67\xcc\x69\xd6\xec\xa1\x79\x62\x9d\x36\xf8\x32\xda\x98\xa1\xe9\xdb\x9a\xf5\x5c\xa8\x09\xfc\x60\x74\x03\xd6\x32\xb7\x47\x08\x96\xc1\x33\x34\xa3\x83\x16\x89\xb9\xd9\xd9\x1a\x9f\x63\x0f\xca\x59\x94\x36\x70\x4b\xe3\x02\x63\x92\x80\x0c\xf8\x87\xfa\xd2\x0e\x69\x0c\x60\x14\x02\x71\x33\x1a\x03\xca\x11\x4e\x32\x66\x45\xdf\xde\xa4\xf7\x1e\xd2\xe6\x34\x33\x81\x31\xda\x74\xda\xf4\xdc\xd5\x6c\xaf\x8f\x1e\x96\xb1\x10\x81\x7a\x68\x74\x3f\x08\x19\xd9\xa7\x47\x37\x8c\x6e\x52\x9a\x76\xde\x63\x05\x4b\x65\x8d\x3c\xc0\xd4\xd8\x6f\xc1\x14\x2c\xed\x6b\xaf\xe2\xe1\xc8\x8d\x12\x6a\xc7\x7a\xb0\x96\xef\x48\xb7\xb6\x48\x6d\x1d\x46\xe2\xe3\x23\x7a\x4d\xd8\xc9\x0f\xc2\x32\x3b\x0e\x98\x4a\xd0\x32\x6d\xd8\xa8\xa2\x57\x35\x69\xd6\x03\x26\x00\x97\x08\x99\xf7\x05\x6b\xa1\xe3\xa3\x74\x35\xfb\xfc\x15\x49\x8e\x7b\xe1\x00\x35\xd4\xcc\xee\xf5\x28\x5b\x32\xea\xe3\xa3\xd7\xba\x05\xc6\xd9\x56\xf2\xe6\x89\x5e\xb3\x56\x63\x22\x61\x79\xc5\x01\xa1\xc0\xef\xc1\x22\x9f\xcd\x09\xb6\x61\x7c\x11\xcd\x32\xad\xe4\xe9\xd7\xb9\x5e\x85\xdb\x71\x69\x81\x65\x01\xe4\x8c\x89\x18\x5b\xdd\x73\xd7\xec\x57\x26\xcc\xf9\xb9\x05\x46\x0a\x07\x03\xe8\x19\x4e\x85\x34\x72\x36\x70\xe7\xc0\x28\x8c\x26\x71\x53\x15\xa1\x34\xe4\xe6\x8d\x1b\xc3\x2e\x81\x42\x0a\xb4\x28\x12\x1e\x4c\x20\xb3\x78\xe3\xc4\x81\x3b\x60\x9a\x2a\x10\x9e\x79\xe3\xbc\xc4\xef\xb5\xc9\xc0\x3f\x47\x61\x20\x66\xcd\xef\xa6\xd2\x65\x3d\x7f\x82\x77\xa4\x2f\xc3\x8c\x2c\x22\x50\x4d\xdf\x16\x54\x34\x45\x9c\xa4\x05\xd3\xb6\x58\xbc\x5f\x4c\xee\xc9\xef\x10\x8c\xe8\xa6\x1d\xe6\x33\x8a\xfb\xca\x36\x1b\xa6\x84\x44\xb3\x14\x11\xe0\xdf\x19\x05\xee\x44\x57\x3f\x55\xb3\x97\x37\x33\xac\x1b\x94\x4d\xdf\xb2\x0d\x22\xbe\xf1\x1d\xcd\x60\x1b\xb2\xe6\x06\x45\x64\x22\xdb\xc4\x06\xdf\xa0\xd7\x28\x4f\x5b\x0c\xdd\x4d\xfc\x4b\x8e\x6e\xa2\x7c\xd5\xc6\x87\xe6\x06\x53\xf0\x27\xdb\x4c\x9e\x5d\x33\x80\x6a\xef\xf0\x7f\x09\xa1\x81\x5e\x1f\xe2\x20\xfa\x50\x9c\x7b\x59\x09\x79\xc6\x88\x5b\x74\x16\x88\xe9\x70\x68\xe1\xa0\x46\x3a\x8f\x92\x87\x16\x0e\x0f\xf8\x92\x4c\x71\x0d\x67\x5c\xf5\xe7\x8f\x1f\x1f\x31\xac\xc9\x51\xa8\x56\x1f\x6d\xb2\x0e\x6e\x24\xe3\xc3\xdf\xde\x25\x33\x66\x9a\x44\xd9\x96\xec\x9a\x26\x29\x58\x42\x0f\x3f\x7f\x49\xca\xce\x9e\x94\xe3\xcf\x25\xe6\x3e\x7e\x28\xff\xce\xa5\xf4\x13\x78\x76\x86\xe3\x34\xed\x92\x6f\x34\xd4\xa9\xac\xd3\xf6\xbe\xae\xee\x6b\x96\xf6\x49\x7e\x53\xc5\xfd\xfd\x2b\x4a\x92\xd2\xba\x76\xd3\xdc\xdf\xff\xf6\xf7\xff\xbb\xc6\xb6\x6f\x91\xc1\x3f\x68\xfe\x92\x94\x8d\x96\xda\x6c\x74\xd7\x91\x58\x5d\xd2\x70\xf4\x4f\x41\x43\xb3\xd2\x92\x66\xa9\x4c\xf3\x57\xcc\xd2\xdb\x51\x48\xd2\xb1\xd3\xf3\xf3\x25\x99\x57\x4b\x7c\x0f\x81\x58\x80\xdf\x12\x86\x89\x12\xcb\x0a\xef\x2f\x97\x66\x5f\x97\xf0\x0b\x3f\x70\x32\x00\x27\xd3\x18\x5c\x4d\x70\xd2\xf6\xc2\x89\xbe\xc0\x6e\x09\xb4\xfb\x00\x09\x25\xd9\xc6\x88\xc1\xbf\x4d\xeb\x31\x34\x7f\xdc\xa5\xb2\xa8\xee\x8b\xeb\xe2\xa4\x70\x60\xb8\x03\x14\x71\x36\x0f\xf1\xb9\x8c\x71\x8f\x5f\xbe\x15\xbe\xee\x0a\xe6\xcc\x08\x57\x04\x8f\x9c\x7a\x13\x12\x36\xf2\x30\x4c\x4b\x2f\x49\x59\x2a\xed\x83\x7f\x35\x89\xae\xa3\x55\x02\x75\xaf\x87\x97\x64\xd6\x53\x96\xb8\x87\xfc\x34\x4a\xf9\x57\xee\xf6\xd6\x2f\x59\xd7\xea\xd1\xf9\x39\xba\xc8\xd6\x21\xd9\x66\x9d\x55\x2a\x0b\x96\xb6\xf7\xd5\x75\xa5\x8d\xe4\x6a\x87\x0c\x7a\xfb\x0b\xe0\x89\x03\xde\x29\xcf\x8d\x19\x95\x07\x30\x51\xfc\x9f\x4b\x74\x38\x75\x92\x3f\x01\x19\x32\x9c\xdc\x5e\x2b\x3f\x9b\x57\xcf\xd2\xb0\x2a\xeb\x3f\x5c\x97\xd4\x9f\x86\xd3\x5a\x4a\x58\x39\x93\x70\x0b\xc7\x54\x06\x31\x8a\xb9\x14\xca\xd2\x77\x5c\xa5\x3f\x13\x36\xd4\xa1\xf1\xad\x04\xef\x74\x03\xd8\x19\xd9\x8d\xd2\x97\x99\x7e\x55\x9d\xdd\x77\x3d\x69\xf3\xad\x3e\x4d\xfc\xca\x77\x97\x9d\x3d\x0a\xd7\x51\x94\xec\x51\x74\x6e\x1d\x2e\x5a\xba\x92\xd7\x4b\x28\x90\xaa\xe5\xe6\x28\x14\x7e\xbf\x9e\xe0\x67\x2a\x9a\xeb\xf0\x22\x81\x52\xa8\xf1\xf9\xb6\xbc\x13\xef\xc9\xd6\x78\x8c\x5c\xec\x7d\x4b\x9e\xe7\xc6\x4e\xde\xbd\xa2\xcf\x3b\x84\xc4\xfb\xfb\x4d\xf5\x9e\x3f\xc1\x5b\xdd\xf7\x5c\xb5\x58\xf0\x3e\x92\xfe\x04\xac\x70\x78\x4b\x7b\x71\x20\xfe\xa0\xdf\xea\x7e\x90\xe0\x20\x3f\x3b\x11\x03\x69\xb6\x1d\x3c\xf8\xed\x50\x3f\xf2\x03\x84\x43\xd2\x8c\x2a\x58\xb2\x1d\xaa\x3f\x8e\xdd\x39\x77\xa3\x95\xe3\x42\xd9\xcc\x37\x46\x20\x01\x2f\x1a\x9e\x17\xfb\xd1\xa7\x82\x1d\x98\x50\x6c\xe0\xc2\x78\xa2\x9c\xb5\x7a\x3e\x39\x45\xc7\x0e\x78\xb0\x06\xbe\xf5\xb1\x4a\xfa\xc1\x8d\xd8\x52\x9a\x71\xe9\x1d\x10\x41\x3c\x06\x1a\xdf\x2f\x9c\xf5\x09\x0b\x7c\xc4\xbe\x1c\xfb\x1d\xf6\x27\xdb\xb1\xab\x7f\x12\x12\x3e\x9d\x06\x58\x35\x05\x74\xc5\xa1\xef\x15\x6e\x39\x71\xbb\x20\x4c\xe8\xcc\xf0\x4e\x5b\xfd\x49\x98\x0c\x5f\x42\x64\xae\x59\x4c\x1d\xc9\xca\xe8\x09\xc1\xd4\xf3\x20\x96\x0d\x3b\x54\x17\xfd\x1e\x7a\x67\xee\x8d\x2e\x5c\xb3\x08\xb0\xce\x08\xb5\xab\xe8\x35\xeb\x5c\x11\xc9\xca\x57\x5e\x3b\x83\xb0\xe7\x16\xfb\x9a\x25\x88\x87\x0a\x1b\xdd\xb8\xeb\xc9\x63\x30\x78\x53\xf1\x3c\x5c\xb5\xec\x10\xf5\x7a\xaf\x80\x5b\xf7\x7d\x53\xcc\x82\xc4\x45\x1a\xca\xfe\xaf\x25\xce\x2f\x21\x00\xdc\xec\x96\x10\x1c\xa8\x13\x5e\x45\x00\xff\xfc\xf2\xe7\xa7\xaf\xbe\x47\xae\x77\x76\xdc\x66\x49\x9a\xe2\x21\x42\x21\x9d\x57\xb0\x8c\x5a\x61\x6e\xb8\x52\x74\x33\xb4\x0b\xcc\x18\x7d\xcc\xbc\x82\xb2\xa2\xa2\xdb\x85\xd7\x8b\x63\xd4\x70\xe7\x57\x93\x7b\x9d\xcb\x5a\x51\x5d\x4e\x75\x7a\x59\x99\xbf\x52\x0b\x0b\x18\x9f\x94\xb7\x6e\x3b\x61\x1b\x18\xbb\xfa\xad\x04\x6e\xde\xfb\xbb\xb3\xcd\xc2\xde\x32\xed\x42\xb4\x8b\x57\x7f\xd1\xdb\xc7\x81\x1f\x55\x16\xc9\x4a\x92\xf0\x1f\x36\x23\xad\x7e\x7c\xa6\xbe\x63\xa5\x7c\xa5\xf1\xdc\x52\x64\xc8\xfc\xf1\xf3\x1a\xdb\x92\xca\xd8\x11\xe1\xed\xc4\x0e\x32\xe2\x4c\xbe\xa8\x09\x6e\xf8\x19\x0b\x76\xf0\xbc\xbe\xeb\xac\x02\x9f\x64\x55\x55\xe6\xc9\x12\x7b\xda\xb3\xb3\xb4\xbd\x8f\x17\x7b\x4f\x89\x6b\x73\xd9\xff\xa3\xa0\xa6\x4c\x28\x26\xe6\xca\x87\x75\xd6\x95\x25\xfb\x64\x44\xef\xaf\x45\x76\xe0\xcd\xea\x3a\x84\x1b\x0e\x0e\xb5\x2f\xe3\xe4\xe7\xd4\xbe\x41\x1d\xa9\x7d\xf3\x9b\x64\x55\x86\xa1\xdc\x3b\xa1\x5a\xd2\x52\x78\xb3\xf2\x2b\xf9\x37\xef\x66\xe4\x40\x28\x58\x6f\x77\xe7\x1b\x46\x2c\x62\xc5\x2d\x3a\xb6\xe5\x16\xf0\x32\x95\x4d\x5b\x61\x8e\x5b\xd5\xbc\x4a\x75\x72\xa9\x76\x51\xbd\xf5\xfa\xfc\xef\x76\xd5\x07\x38\x86\x6c\xfa\xc1\xbd\x13\x0a\xe6\x94\x22\x5c\x05\x73\xda\xff\x84\x43\x90\xf2\x62\x62\x7b\xff\xe9\x47\x0c\x57\x7e\xa1\x03\x73\xf4\x87\xb6\x0d\x32\x33\x54\xb6\x26\x8a\x77\x9b\xdb\x85\xe5\x73\xc6\x3a\x53\x30\x0b\x43\xbe\x4a\x17\x3b\x4a\xb7\x5c\xd7\xd7\x49\x94\x25\xd9\xe7\x9f\x53\xfb\x95\x72\xc3\x27\x53\x36\x0b\xc0\x9c\x00\xde\xec\x31\x23\xac\x33\xf5\xce\x3b\x3b\x44\x2a\xca\x0a\x87\x87\x7e\x25\x94\x05\xe3\x32\xaf\xb0\x20\xce\xfc\xda\x21\xe7\x09\xce\x0c\x58\xc7\x23\x42\x6a\x61\xa0\x8b\xed\x7f\x7a\xa1\x0d\x7c\x5f\xbe\x24\x2b\x0c\x5e\x28\xfd\x8e\x39\xe7\x10\xd5\x84\xcf\xb0\x24\xab\xde\x24\xac\xaa\x88\xbd\xaa\x58\x92\x67\xd5\x9b\x9c\xfa\x99\xdf\x25\xab\xed\x89\x7e\x08\x44\xa9\xff\x0e\x00\x00\xff\xff\xb6\x46\x5d\xee\x5d\x16\x00\x00" +var _runtimePluginsLinterLinterLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x18\x69\x8f\xa4\xb8\xf5\x7b\xff\x8a\x27\x14\x24\x98\x06\x5a\x89\xf2\x09\xa9\x14\x6d\x26\xbb\x91\xa2\x39\x22\xf5\x44\xf9\x30\x33\x1b\xb9\xe0\x51\xe5\x6d\x63\x13\xdb\x54\x75\xa5\x35\xff\x3d\x7a\xb6\x01\x53\x47\xef\xe4\x28\xa9\xf0\xc1\xbb\x2f\x3f\x23\x54\xc3\x04\xe8\x51\x5a\xde\x23\x6c\x80\xf7\x83\xd2\x36\x4b\xc2\x4e\x92\xdf\x79\x88\x8e\x0b\x1c\x98\xdd\x47\x20\xb4\x7c\x98\xf6\x67\x40\xb3\x47\x21\x22\xa8\x9e\x37\x5a\x3d\xb8\xdd\x19\x66\x3b\x76\x1d\xea\x0b\x20\xbf\x3d\x43\x35\x4a\x76\x7c\x77\x01\xe5\xb7\x93\xfc\x2e\x80\x09\x2e\x2d\x6a\x03\x1b\x78\xf9\x76\x77\x57\x96\xd0\x68\x64\x16\x0d\xb0\xf0\x0a\x50\x5a\x7d\x2a\xa0\x61\x42\x40\xa7\x55\x0f\x47\x6e\xf7\x5c\x02\x93\xc0\x25\xb7\x9c\x09\xfe\x2f\x66\xb9\x92\xd0\x8d\xb2\xa1\x49\x01\x52\x59\xa2\xd5\x72\x8d\x8d\x15\x27\x60\x76\x82\x05\xa1\x58\x0b\x64\x9c\xbb\xb2\x24\x18\xc9\x7a\xac\xdd\x13\x54\x07\x76\x8f\x81\x2f\xbd\x23\xf3\xd8\xd3\x80\xf5\x3c\x03\xab\xa0\xd9\x63\xf3\x04\x9d\xd2\xb4\x18\x4d\x8c\xd0\xf4\x6d\x0d\x3d\xe3\x72\x12\x7e\xd0\xaa\x41\x63\xc0\xee\x49\x04\x03\xf8\x8c\xcd\x68\xb1\x25\x60\xa6\x77\xa6\xa6\xe7\xd8\xa3\xb4\x86\xa8\x0d\xcc\xb8\x71\x11\x63\xa2\x40\x08\xf4\x23\x7e\x69\x47\x30\x1a\xc9\x0b\x01\xb8\x19\xb5\x46\x69\x9d\x9c\x4e\x99\x15\x7c\x7b\x13\xde\x5b\x48\xe9\xd3\x8c\x84\x5a\x2b\xdd\x29\xdd\x33\x5b\xc3\x5e\x1d\xbd\x58\xda\x60\x24\xd4\x43\xa3\xfa\x81\x8b\x48\x3f\x35\xda\x61\xb4\x13\xd3\xb4\xf3\x16\x2b\x20\x15\x35\xe1\x20\xc8\xb1\xdf\xa2\x2e\x20\xed\x6b\xcf\xe2\xe1\xc8\xb4\xe4\x72\x07\x3d\x1a\xc3\x76\x8e\xb7\x32\x04\x6d\x2c\x79\xe2\xe3\x23\x59\x8d\x9b\xc9\x0e\xdc\x80\x19\x07\x0a\x25\x6c\x41\x69\x18\x65\xb4\x94\x13\x67\x35\x50\x00\x30\x41\x22\xb3\xbe\x80\x16\x3b\x36\x0a\x5b\xc3\xe7\xaf\x04\x72\xdc\x73\x8b\xc4\xa1\x06\xb3\x57\xa3\x68\x9d\x52\x1f\x1f\x3d\xd7\x2d\x02\x83\xad\x60\xcd\x93\x5b\x66\xad\xa2\x40\xa2\xf4\x8a\x1d\xe2\x1c\xbf\x47\x43\x78\x26\x77\x62\x6b\x60\x0b\x69\xc8\x94\x14\xa7\x5f\xc7\x7a\x55\xdc\x8e\x09\x83\x90\x05\x21\x67\x99\x1c\x62\xab\x7a\x66\x9b\xfd\x4a\x85\x39\x3e\xb7\x08\x8e\xe1\xa0\x91\x2c\xc3\x5c\x22\x8d\x0c\x06\x66\x2d\x6a\x49\xde\x74\xd8\x2e\x8b\x88\x1a\x61\xb3\xc6\x8e\xa1\x4a\x10\x91\x82\x34\x8a\x88\x07\x15\x9c\x5a\xac\xb1\xfc\xc0\x2c\x82\x72\x19\x88\xcf\xac\xb1\x9e\xe2\xf7\xea\xa4\xf1\x9f\x23\xd7\x18\xa3\xe6\x77\x53\xea\x42\xcf\x9e\xf0\x9d\xe3\x97\x51\x44\x16\x91\x50\x4d\xdf\x16\x2e\x69\x8a\x38\x48\x0b\x50\xa6\x58\xac\x5f\x4c\xe6\xc9\xef\x48\x18\xde\x4d\x15\xe6\x33\x91\xfb\x0a\x9b\x0d\x48\x2e\x48\x2d\xe9\x00\xe8\x77\x06\x41\x95\xe8\xea\xab\x6a\xb6\xf2\x66\x16\xeb\x06\x64\xd3\xb7\xb0\x21\x89\x6f\xbc\x27\x35\x60\xe3\xb4\xb9\x01\x11\xa9\x08\x9b\x58\xe1\x1b\xf0\x8a\xe8\x29\x43\xae\xbb\x29\xff\x12\xa3\x9b\x28\x5e\x95\xf6\xae\xb9\x81\x14\xec\x09\x9b\xc9\xb2\x6b\x04\x94\xed\x1d\xfd\x17\x17\x6a\xec\xd5\x21\x76\xa2\x77\xc5\xb9\x95\x25\x17\x67\x88\x54\xa2\xb3\x00\xec\x0e\x87\x16\x0f\x72\x74\xe7\x51\xf2\xd0\xe2\xe1\x81\x16\xc9\xe4\xd7\x70\xc6\x55\x7f\xfe\xf8\xf1\x91\xdc\x9a\x1c\xb9\x6c\xd5\xd1\x24\x6b\xe7\x46\x34\x3e\xfc\xed\x5d\x32\xcb\xec\x26\x51\xb4\x25\xbb\xa6\x49\x0a\x48\xdc\xc3\xcf\x5f\x92\xb2\x33\x27\x69\xd9\x73\x49\xb1\x4f\x2f\xca\xbf\x33\x21\xfc\x04\x9f\xad\x66\x34\x4d\xbb\xe4\x9b\x1b\xea\x54\xd4\x69\x7b\x5f\x57\xf7\x35\xa4\x7d\x92\xdf\x64\x71\x7f\xff\x0a\x93\xa4\x34\xb6\xdd\x34\xf7\xf7\xbf\xfd\xfd\xff\xce\xb1\xed\x5b\x42\xf0\x0f\x37\x7f\x49\xca\x46\x09\xa5\x37\xaa\xeb\x1c\x59\x55\xba\xe1\xe8\x9f\xdc\x0d\xcd\x8a\x4b\x9a\xa5\x22\xcd\x5f\x51\x4b\x6d\x47\x2e\x1c\x8f\x9d\x9a\x9f\x2f\xc9\xbc\x5b\xd2\x3a\x38\x62\x11\xfc\x16\x31\x0a\x94\x98\x56\x58\xbf\x5c\xaa\x7d\x9d\xc2\x2f\xec\xc0\x9c\x02\x34\x99\xc6\x60\x6a\x27\x4e\xda\x5e\x18\xd1\x27\xd8\x2d\x82\x66\x1f\x44\x22\x4a\xa6\xd1\x7c\xf0\xab\x69\x3f\x16\xcd\x1f\x77\xa9\x28\xaa\xfb\xe2\x3a\x39\xc1\x2d\x6a\x66\x91\x48\x9c\xcd\x83\x7f\x2e\x7d\xdc\xd3\x9b\x6f\x85\xcf\xbb\x02\xac\x1e\xf1\x0a\xe1\x91\xb9\xde\xc4\x11\x1b\x59\x18\xa6\xad\x97\xa4\x2c\xa5\xf2\xce\xbf\x1a\x44\xd7\xa5\x95\x9c\x78\xaf\x87\x97\x64\xe6\x53\x96\x54\x43\x7e\x1a\x85\xf8\x2b\xb3\x7b\xe3\xb7\x8c\x6d\xd5\x68\xfd\x9c\x4c\x64\xea\x10\x6c\x33\xcf\x2a\x15\x05\xa4\xed\x7d\x75\x9d\x69\x23\x98\xdc\x11\x82\xda\xfe\x82\x74\xe2\xa0\x37\xca\x73\xa3\x47\xe9\x05\x98\x20\xfe\xcf\x29\x3a\x9c\x3a\xc1\x9e\xd0\x29\x32\x9c\xec\x5e\x49\x3f\x9b\x77\xcf\xc2\xb0\x2a\xeb\x3f\x5c\xa7\xd4\x9f\x86\xd3\x9a\x4a\xd8\x39\xa3\x70\x4b\x8e\x29\x0d\x62\x29\xe6\x54\x28\x4b\xdf\x71\x95\xfe\x4c\xd8\xb8\x0e\x8d\x6d\x05\x7a\xa3\x6b\xa4\xce\xc8\x6c\xa4\xba\x8c\xf4\xab\xec\xcc\xbe\xeb\x1d\x37\xdf\xea\xbb\x89\xdf\xf9\xee\xb4\x33\x47\x6e\x3b\xe7\x25\x73\xe4\x9d\x5d\xbb\xcb\x6d\x5d\x89\xeb\xc5\x15\x04\xd5\x32\x7d\xe4\x92\xde\x5f\x0f\xf0\x33\x16\xcd\x75\xf1\x22\x82\x82\xcb\xf1\xf9\x36\xbd\x13\xeb\x9d\xae\xf1\x18\x99\xd8\xdb\xd6\x59\x9e\x69\x33\x59\xf7\x0a\x3f\x6f\x10\x47\xde\xdf\x6f\xaa\xf7\xec\x09\xdf\xaa\xbe\x67\xb2\xa5\x84\xf7\x9e\xf4\x27\x60\x45\xc3\x5b\x57\x8b\x03\xf0\x07\xf5\x56\xf5\x83\x40\x8b\xf9\xd9\x89\x18\x40\xb3\xed\xe0\x85\xdf\x0e\xf5\x23\x3b\x60\x38\x24\xf5\x28\x83\x26\xdb\xa1\xfa\xe3\xd8\x9d\x63\x37\x4a\x5a\xc6\xa5\xc9\x7c\x63\x84\x02\xe9\xa2\xe1\x71\xa9\x1f\x7d\x2a\xe0\x00\x5c\xc2\xc0\xb8\xf6\x40\x39\xb4\x6a\x3e\x39\x79\x07\x07\x3a\x58\x03\xde\xfa\x58\x75\xfc\xd1\x8e\xd4\x52\xea\x71\xe9\x1d\x48\x82\x78\x0c\x30\xbe\x5f\x38\xeb\x13\x16\xf1\x49\xf6\xe5\xd8\xef\xa8\x3f\xd9\x8e\x5d\xfd\x13\x17\xf8\xe9\x34\xe0\xaa\x29\x70\x57\x1c\xf7\xbe\xa2\x92\x13\xb7\x0b\x5c\x87\xce\x8c\xee\xb4\xd5\x9f\xb8\xce\x68\x11\x3c\x73\x4d\x63\xd7\x91\xac\x94\x9e\x24\x98\x7a\x1e\x92\x65\x03\x87\xea\xa2\xdf\x23\xeb\xcc\xbd\xd1\x85\x69\x16\x02\xc6\x6a\x2e\x77\x95\x5b\x66\x9d\x2d\x22\x5a\xf9\xca\x6a\x67\x22\xec\x99\xa1\xbe\x66\x71\xe2\xa1\xa2\x46\x37\xee\x7a\xf2\x58\x18\xba\xa9\x78\x1c\x26\x5b\x38\x44\xbd\xde\x2b\xc2\xad\xfb\xbe\xc9\x67\x81\xe2\x42\x8d\x68\xff\xd7\x14\xcf\xf4\x0a\x9d\x6f\xd4\xa3\x06\xc7\x30\xbd\x5b\x5c\x73\x70\x1d\xf2\xca\x33\xf4\xa3\xcd\xcf\x4f\x5f\x7d\xe7\x5c\xef\xcc\xb8\xcd\x92\x34\xa5\xa3\xc5\x39\x7a\xde\xa1\xe4\x6a\xb9\xbe\x61\x60\xde\xcd\x02\x5f\x68\x42\x31\x41\xf1\x58\xb8\x58\xa9\xa2\x3b\xc7\x21\x6e\xc9\xf3\xab\x01\xbf\x8e\x6f\x25\x5d\xae\x4e\xb9\x7b\x99\xad\xbf\x92\x1f\x8b\x28\x3e\x50\x6f\xdd\x80\x42\x69\x18\xbb\xfa\xad\x40\xa6\xdf\xfb\xfb\xb4\xc9\x42\xbd\x99\x2a\x93\xab\xec\xd5\x5f\xd4\xf6\x71\x60\x47\x99\x45\xb4\x92\x24\xfc\x43\x81\x52\xf2\xc7\x67\xd7\x8b\xac\x98\xaf\x38\x9e\x6b\x4a\x08\x99\x3f\x92\x5e\x43\x5b\xc2\x80\xba\x24\x8a\x03\x33\x88\x08\x33\xf9\x22\x27\x71\xc3\xa7\x2d\xdc\xe1\xf3\xfa\xfe\xb3\x72\x7b\x92\x55\x55\x99\x27\x8b\xe7\x5d\x1d\xcf\xd2\xf6\x3e\xde\xec\x3d\x24\xed\xcd\xa5\xe0\x1f\x85\x6b\xd4\xb8\x04\x3e\x57\x03\x5c\x47\x5c\x59\xc2\x27\xcd\x7b\x7f\x55\x32\x03\x6b\x56\x57\x24\x2a\x42\x34\xd4\x3e\xb5\x93\x9f\x53\xf3\x86\x78\xa4\xe6\xcd\x6f\x92\x55\x6a\x86\x12\xd0\x71\xd9\x3a\x2e\x85\x57\x2b\xbf\x12\x7d\x73\x85\x73\x06\xc4\x02\x7a\xb3\x3b\x2f\x22\x31\x89\x15\x36\xef\x60\xcb\x0c\xd2\x05\x2b\x9b\xca\x63\x4e\xe5\x6b\xde\x75\x59\x72\xc9\x76\x61\xbd\xf5\xfc\xfc\xb7\xbc\xea\x03\x1e\x43\x34\xfd\x60\xdf\x71\x89\x73\x48\x39\xb9\x0a\xb0\xca\x7f\xd6\x71\x22\xe5\xc5\x84\xf6\xfe\xd3\x8f\xe4\xae\xfc\x82\x07\xc5\xe8\x0f\x6d\x1b\x68\x66\xc4\x6c\x0d\x14\x57\xa0\xdb\x89\xe5\x63\xc6\x58\x5d\x80\xc1\x21\x5f\x85\x8b\x19\x85\x5d\xca\xcb\x3a\x88\xb2\x24\xfb\xfc\x73\x6a\xbe\xba\xd8\xf0\xc1\x94\xcd\x04\x28\x26\x90\x35\x7b\x8a\x08\x63\x75\xbd\xf3\xc6\x0e\x9e\x8a\xa2\xc2\x52\x23\x50\x71\x69\x50\xdb\xcc\x33\x2c\x1c\x66\x7e\xed\xe0\xf3\x00\x67\x0a\xac\xfd\x11\x49\x6a\x70\x70\x97\xdd\xff\xf4\x92\x1b\xf0\xbe\x7c\x49\x56\x32\x78\xa2\xee\xdb\xe6\x1c\x43\x2e\x27\x7c\x84\x25\x59\xf5\x26\x81\xaa\x72\xe8\x55\x05\x49\x9e\x55\x6f\x72\xd7\xe3\xfc\x2e\x59\x95\x27\xf7\x71\x90\xa8\xfe\x3b\x00\x00\xff\xff\x62\x4a\x34\x00\x71\x16\x00\x00" func runtimePluginsLinterLinterLuaBytes() ([]byte, error) { return bindataRead( diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index 85719689..391e0010 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -67,6 +67,10 @@ func (w *BufWindow) SetActive(b bool) { w.active = b } +func (w *BufWindow) IsActive() bool { + return w.active +} + func (w *BufWindow) getStartInfo(n, lineN int) ([]byte, int, int, *tcell.Style) { tabsize := util.IntOpt(w.Buf.Settings["tabsize"]) width := 0 diff --git a/internal/display/infowindow.go b/internal/display/infowindow.go index a2b72945..db2f9c08 100644 --- a/internal/display/infowindow.go +++ b/internal/display/infowindow.go @@ -63,6 +63,7 @@ func (i *InfoWindow) Relocate() bool { return false } func (i *InfoWindow) GetView() *View { return i.View } func (i *InfoWindow) SetView(v *View) {} func (i *InfoWindow) SetActive(b bool) {} +func (i *InfoWindow) IsActive() bool { return true } func (i *InfoWindow) GetMouseLoc(vloc buffer.Loc) buffer.Loc { c := i.Buffer.GetActiveCursor() diff --git a/internal/display/termwindow.go b/internal/display/termwindow.go index 45150948..d195d532 100644 --- a/internal/display/termwindow.go +++ b/internal/display/termwindow.go @@ -40,6 +40,10 @@ func (w *TermWindow) SetActive(b bool) { w.active = b } +func (w *TermWindow) IsActive() bool { + return w.active +} + func (w *TermWindow) GetMouseLoc(vloc buffer.Loc) buffer.Loc { return vloc } diff --git a/internal/display/window.go b/internal/display/window.go index d2d4742a..4e39bdbd 100644 --- a/internal/display/window.go +++ b/internal/display/window.go @@ -23,6 +23,7 @@ type Window interface { GetMouseLoc(vloc buffer.Loc) buffer.Loc Resize(w, h int) SetActive(b bool) + IsActive() bool } type BWindow interface { diff --git a/runtime/plugins/linter/linter.lua b/runtime/plugins/linter/linter.lua index f7c093e9..a4cac3f0 100644 --- a/runtime/plugins/linter/linter.lua +++ b/runtime/plugins/linter/linter.lua @@ -103,12 +103,13 @@ function runLinter(buf) ftmatch = false end + local args = {} for k, arg in pairs(v.args) do - v.args[k] = arg:gsub("%%f", file):gsub("%%d", dir) + args[k] = arg:gsub("%%f", file):gsub("%%d", dir) end if ftmatch then - lint(buf, k, v.cmd, v.args, v.errorformat) + lint(buf, k, v.cmd, args, v.errorformat) end end end From c0293b5d0e568d64a98f4ce1e869e7ac9c0a62bb Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 4 Aug 2019 14:22:24 -0700 Subject: [PATCH 145/231] Add autosave option --- cmd/micro/micro.go | 4 ++++ internal/action/actions.go | 22 ++++++++++++++-------- internal/action/command.go | 6 ++++++ internal/buffer/save.go | 3 +++ internal/config/autosave.go | 30 ++++++++++++++++++++++++++++++ internal/config/globals.go | 1 - internal/config/runtime.go | 2 +- internal/config/settings.go | 3 ++- runtime/help/options.md | 31 +++++++++++++------------------ 9 files changed, 73 insertions(+), 29 deletions(-) create mode 100644 internal/config/autosave.go diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 394512a0..bd1918b7 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -233,6 +233,10 @@ func main() { case f := <-shell.Jobs: // If a new job has finished while running in the background we should execute the callback f.Function(f.Output, f.Args...) + case <-config.Autosave: + for _, b := range buffer.OpenBuffers { + b.Save() + } case event = <-events: case <-screen.DrawChan: } diff --git a/internal/action/actions.go b/internal/action/actions.go index 3c8e018a..8b6c76d2 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -1162,14 +1162,20 @@ func (h *BufPane) Quit() bool { } } if h.Buf.Modified() { - InfoBar.YNPrompt("Save changes to "+h.Buf.GetName()+" before closing? (y,n,esc)", func(yes, canceled bool) { - if !canceled && !yes { - quit() - } else if !canceled && yes { - h.Save() - quit() - } - }) + if config.GlobalSettings["autosave"].(float64) > 0 { + // autosave on means we automatically save when quitting + h.Save() + quit() + } else { + InfoBar.YNPrompt("Save changes to "+h.Buf.GetName()+" before closing? (y,n,esc)", func(yes, canceled bool) { + if !canceled && !yes { + quit() + } else if !canceled && yes { + h.Save() + quit() + } + }) + } } else { quit() } diff --git a/internal/action/command.go b/internal/action/command.go index c4fe0db8..a062a23d 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -404,6 +404,12 @@ func SetGlobalOptionNative(option string, nativeValue interface{}) error { } else { screen.Screen.EnableMouse() } + } else if option == "autosave" { + if nativeValue.(float64) > 0 { + config.StartAutoSave() + } else { + config.StopAutoSave() + } } else { for _, pl := range config.Plugins { if option == pl.Name { diff --git a/internal/buffer/save.go b/internal/buffer/save.go index 0ed64a7e..fde6cf96 100644 --- a/internal/buffer/save.go +++ b/internal/buffer/save.go @@ -57,6 +57,9 @@ func (b *Buffer) Save() error { // SaveAs saves the buffer to a specified path (filename), creating the file if it does not exist func (b *Buffer) SaveAs(filename string) error { var err error + if b.Type.Readonly { + return errors.New("Cannot save readonly buffer") + } if b.Type.Scratch { return errors.New("Cannot save scratch buffer") } diff --git a/internal/config/autosave.go b/internal/config/autosave.go new file mode 100644 index 00000000..2c5bf815 --- /dev/null +++ b/internal/config/autosave.go @@ -0,0 +1,30 @@ +package config + +import ( + "log" + "time" +) + +var Autosave chan bool + +func init() { + Autosave = make(chan bool) +} + +func StartAutoSave() { + go func() { + for { + autotime := time.Duration(GlobalSettings["autosave"].(float64)) + if autotime < 1 { + break + } + time.Sleep(autotime * time.Second) + log.Println("Autosave") + Autosave <- true + } + }() +} + +func StopAutoSave() { + GlobalSettings["autosave"] = float64(0) +} diff --git a/internal/config/globals.go b/internal/config/globals.go index cd5bd3cd..b1dacd2c 100644 --- a/internal/config/globals.go +++ b/internal/config/globals.go @@ -2,7 +2,6 @@ package config const ( DoubleClickThreshold = 400 // How many milliseconds to wait before a second click is not a double click - AutosaveTime = 8 // Number of seconds to wait before autosaving ) var Bindings map[string]string diff --git a/internal/config/runtime.go b/internal/config/runtime.go index b29800e2..f34df581 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -972,7 +972,7 @@ func runtimeHelpKeybindingsMd() (*asset, error) { return a, nil } -var _runtimeHelpOptionsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x7a\xdf\x8f\xe4\xb6\x91\xff\xf3\xe8\xaf\x28\x8c\x17\x98\x19\xa3\xa7\xc7\x48\xfc\x60\xf4\x8b\xb1\xf6\x7e\xbf\x6b\x23\x67\x6f\x90\xdd\xdc\x39\x48\x82\x88\x92\x4a\x2d\x66\x28\x52\x47\x52\xdd\xab\x35\x7c\x7f\xfb\xa1\xaa\x48\x49\xdd\xdb\x33\x93\x03\xee\xfc\xe0\x9d\x96\xc8\xfa\xc5\xaa\x4f\xfd\xa0\xbe\x80\x77\x43\xd4\xce\x86\xa2\xf8\x49\xd7\xde\x41\x88\xce\x63\x00\x65\x0c\xb8\x16\x62\x87\x30\x06\xf4\x50\x3b\xdb\xea\xfd\xe8\x15\x2d\x06\x6d\x41\xc7\x70\xf6\xb0\xd1\x1e\xeb\xe8\xfc\xb4\xcd\xb4\xc6\x80\x81\x49\x94\xaf\x7e\x79\xf3\xf6\x1f\xdf\xbf\xfb\xf9\xff\xff\xf8\xf6\x1f\x3f\xbc\xfb\xe9\xff\x3d\xf4\xb4\xa0\x04\x25\xef\x9f\x22\x04\xaf\x03\x0c\xe8\x0b\x5a\xf3\xcb\x9b\xb7\x10\x06\xac\x37\xa0\xdb\xcf\x09\x96\xa0\x03\x58\x17\x21\x60\xdc\x40\xf9\x5f\x0f\x5b\xa1\x99\x19\xe9\x40\xd2\x34\xc4\xb0\x58\x38\x9e\xc8\xfc\x03\x7a\x04\xe5\x91\x25\x72\x62\x15\x88\x9d\x8a\x30\xb9\x11\x6a\x65\x89\xf6\xae\x28\xbe\x84\x52\x8d\xd1\x69\xdb\xa0\x8d\xe5\x0e\x8e\x1d\x5a\xa8\x3d\xaa\xa8\xed\x1e\x14\x58\x3c\x82\xd1\x96\x0d\xc7\xb4\x82\xea\x11\x64\xb9\x28\x98\xb4\x2e\x00\x60\xf0\x78\xd0\x6e\x0c\xbc\x63\x5b\x14\x57\x0d\xb6\x6a\x34\x11\x0e\xca\x8c\xb8\x83\x32\xfa\x11\xcb\x99\x69\x50\x07\x2c\x77\xc0\x4a\xc1\x51\x1b\x03\xf4\x84\xa9\x55\x63\xdb\xa2\x07\x3c\xa0\x9f\xe0\x1b\x08\x58\x3b\xdb\x04\xa0\x5d\xbd\x8a\xba\x56\xc6\x4c\x5b\xe0\x83\x21\xc6\xca\x84\x44\xe1\x64\x85\xd0\x53\xb6\x81\xff\x1c\x75\x14\xdd\x48\x7d\xfc\x48\xbf\x74\xec\xdc\x18\x41\x85\x47\x6d\xf7\x5b\xf8\x0e\x89\x52\xad\x3c\xb6\xa3\x91\xb5\x63\x20\x23\xc4\x4e\x07\x68\x51\xc5\xd1\xe3\x06\x2a\xac\x15\xd9\x82\xe8\xf4\x7a\xdf\x45\x50\x75\xad\xd9\x1c\x0b\x47\x68\xb5\xc1\x0d\xd1\x73\x07\xf4\x47\xaf\xd9\x9a\x47\x32\xff\x51\xec\xe5\x11\x2a\x6c\x9d\xbf\x68\xa6\x56\x99\x90\xec\x54\xa9\x80\x56\xf5\x64\x27\x6d\xd9\x34\xda\xb6\xae\x52\x7e\x03\xa1\x73\x47\x70\xd6\x4c\x62\xb1\xb4\x30\x3b\x3a\x49\x00\x15\x12\x5f\x6c\x74\xc4\x86\xa4\xf1\x8a\x58\x93\x1f\x08\xad\x76\x34\x06\x06\x15\xbb\x6d\x41\xaf\xe1\x19\x41\x6a\x67\x9c\xaf\x9d\x19\x7b\x4b\xb2\xb4\x62\x96\xc5\x4f\x21\x3a\xf8\x6a\x03\x6c\x58\x63\xa0\xd1\x61\x30\x6a\x02\x05\xb2\x07\x54\x24\x8e\x05\xb0\xdb\xeb\x56\x63\x93\xde\x6c\xe1\x43\xa2\x34\x06\x36\xbd\x6e\xd9\xb8\x47\x65\x63\xde\xfc\xcd\x57\x44\xbe\x42\xe8\xf4\xbe\x33\x64\x75\xd6\x87\x49\x29\x03\xad\xf3\x80\x1f\x55\x3f\x98\x8b\xe6\xfc\x6a\xa5\x41\xa8\x3b\x64\x6b\x1a\xa7\x9a\x1c\xaf\xf3\x73\x01\x8c\x86\x4c\x4d\xf6\x78\x75\x2b\x91\xf5\x46\xfb\xbb\x87\xd5\xb2\xf0\x50\x4a\x48\x95\x5b\x76\xde\x8d\xa8\x10\x30\xf2\x39\xeb\x00\xe5\xde\xb8\x4a\x19\x3e\x9e\xf2\x92\x4c\xe9\x77\x59\x14\x57\x3f\xbb\x88\x12\x9a\x24\x4d\x5e\xb8\x66\x07\xb7\xe9\xe9\x06\x82\x33\xca\xeb\x4f\xd8\x6c\xd8\xaf\xe7\x9f\xf7\xb1\xbe\x2b\xae\x28\xe0\xe9\x3c\x8c\xab\x55\x14\x3d\x66\x0d\x16\xd7\x8d\x1d\x4e\x8c\x0d\xd8\x57\xd8\x34\xb2\x8e\x78\x4b\x24\x56\xda\x2a\xc6\x90\xab\x0f\x67\xd6\x21\xd8\xa8\x10\x02\x1a\xac\x89\x7c\xeb\x5d\xcf\xe0\x9a\x1d\x2e\x64\x4a\xc5\xd5\x19\x68\x9d\x9a\x6f\x8d\x8a\x82\xae\xb5\x23\x3d\xab\x69\xd6\x9f\xc2\x13\x62\xe7\x11\x8b\xab\xf5\xde\x5d\x51\x5c\xfd\x25\x41\x98\x47\xd5\x40\xef\x08\xe9\x2a\x0a\x65\xe6\x74\x13\x4e\x6d\x97\x24\x4a\xc7\x5f\x42\x87\x66\x80\xe8\x06\x5d\x17\x57\xb7\x25\xff\x4a\xaf\xee\xb6\xe2\x27\xa3\x0f\xce\x13\x84\x95\xbb\xc5\xe1\x98\x08\x23\xe1\x7c\x54\xb2\x90\x8e\x5b\xb2\x88\x82\x46\x13\x6c\xa1\x4d\xc7\x47\x3e\x74\x3b\xbb\x18\x2d\x6c\xb0\xd5\x16\x1b\x52\xf4\xdc\xf5\xc8\xe7\xe9\x50\x18\x74\xee\x9e\x47\x4f\xb4\xb5\x6b\xb4\xdd\x97\x3b\x26\x93\x7f\x52\x90\xb8\x01\xad\xb8\x06\x21\x91\x1c\x0a\xd9\x72\x0b\xef\xc7\x61\x70\x9e\xce\x2d\xaf\x0f\x8c\x9d\x9e\xf4\x0a\xf4\x5c\x45\xe8\x62\x1c\xc2\xee\xe1\xe1\x78\x3c\x6e\x8f\xbf\xdf\x3a\xbf\x7f\xf8\xf0\xa7\x87\xbc\xe1\xe1\x09\x9c\x18\x63\x7b\xff\x4d\x12\xcd\xb5\x16\x8f\xc9\x7a\x2b\x68\x3f\x05\x66\xd5\x34\x92\x5c\xc4\xa2\x6e\xf6\xa0\x17\xe0\xb0\x55\x21\x36\xda\xc7\x89\x35\x67\x83\x46\xf4\xbd\xb6\xa4\x25\x9d\xcb\xa3\xb6\x0d\x41\xa0\x32\x7b\xe7\x75\xec\xfa\x24\x83\x64\x6f\xb7\xac\x07\xdd\xb2\xf6\x39\xd5\xe8\x00\xbd\x6b\x04\x98\x9c\xa7\x28\xda\xc2\x7f\x50\x12\x58\xf1\x94\xa3\xde\x24\x92\xff\x1c\x43\x14\xba\x8a\x28\x55\xce\x19\x54\x16\xca\x4c\xa6\x14\x4f\x11\x60\x20\xde\x72\x80\x94\x30\x83\x5b\x12\x27\x57\x24\xbd\x7a\x24\x3a\x96\xb1\x7a\x4b\xe4\x32\x28\x12\xf7\x0d\x54\x63\xcc\xd1\xa7\xad\xaa\x6b\xaa\x2e\x70\x0b\x3f\xb6\x9f\x89\xd7\xb6\x1b\x22\x6b\x57\xb6\x27\x72\x9d\x0a\x5d\x76\x5a\x76\xd0\xa4\xb6\xda\x2b\x6d\x43\x04\x25\x2b\x52\xf2\x70\x5e\xef\xb5\x25\x64\xa5\x2c\x72\xcb\xf5\x00\x36\x92\x14\x05\xc5\xf3\x7e\x4a\x67\x04\xa5\xd8\xdc\x2d\x40\x2e\x21\x99\xa4\x64\xd9\x5d\xc5\x85\x81\x99\xe4\x9d\xc7\xe0\x46\x5f\x33\x21\x6d\x23\xda\xa0\x0f\x98\xf6\x0b\xb2\x8a\xa9\xcd\xc4\xd8\x3e\xa0\x1b\x0c\xc2\xb1\x73\x14\xf2\xe4\x3f\x94\xa6\x53\xd0\x77\xea\xa0\xed\x9e\xcf\x32\x73\x9c\x0f\x32\x44\x15\xc7\xf0\x7c\x2c\x91\x8a\xad\xf3\xbd\x8a\x2f\xf9\x14\xfb\x2a\x5a\x8e\x9c\xb5\x6b\x13\xa6\x92\x98\xc9\x32\xec\xc6\xf0\xe7\x9f\x7f\xfc\xe5\x74\x07\x89\xcc\x3e\x53\xfe\xcd\x96\x70\x6b\xda\x3b\x32\xa8\x47\x15\xa0\x71\xe1\xb3\xb5\x44\xaa\xfc\x9b\xe7\xb5\xb5\x37\x2d\xdb\x17\x21\x1e\x1d\x0c\x2e\x04\x5d\x19\x14\x6d\x42\x62\xbe\xd8\x8e\x38\x95\xa3\xd5\x1f\x4b\x46\x82\xb2\x71\xa1\x4c\x4e\x25\x51\x26\xfa\x8a\xf4\x15\x9e\xc5\x26\xa9\xcf\xf0\x4e\x7b\x53\x1e\xa7\xa0\x10\x1c\x15\x93\x92\xb0\xe2\x05\xf1\x84\xf3\xe7\x59\xdc\x8d\xa6\x01\xa3\x1f\x39\xca\xeb\x4e\xd9\x3d\x2e\x50\x9a\xd5\x25\x70\xe4\x70\xcc\x20\x18\xa2\xf2\xab\x0a\xf4\x29\x64\x60\x1d\xe7\x53\x8c\xd3\x40\xa0\x13\x30\x86\x19\x4f\xe8\x59\x3e\x9c\x33\xdf\xdf\x9e\x67\x6d\xb6\x38\xa5\xce\xa7\xf3\x36\xeb\x7a\xd9\x6c\x14\xe4\x0d\x0e\xa2\x52\xb6\x16\xc7\x0f\x29\xd5\xa9\x03\x16\x57\x04\xce\x2c\xae\xde\x5b\xe7\xb1\x56\x81\x04\x1e\xd0\xd3\x81\x00\xfd\xbc\xd7\x36\x50\x38\x44\x7d\xa0\x44\xab\x7c\xdd\xe1\x45\x07\x5e\x81\xa2\x54\xe3\x75\xa7\xfc\x5a\xfb\x75\x8d\x4e\xef\x54\x1d\xd1\x5f\xa2\x04\x99\x0a\xd7\x95\xe5\x0e\xd0\xaa\xca\xa4\x66\x87\x8f\x29\xe5\xbb\xca\xc5\xe8\xfa\x8c\x11\x84\x54\xce\x8b\x0b\x43\x8f\x21\xa8\x3d\xce\x8e\x3b\x78\x0a\xeb\xe6\xb3\x90\x7e\xb1\x2e\x5a\xe2\xf2\x11\x71\xf8\xbc\x35\x91\x92\x7c\x79\xbe\x81\x63\xa7\x23\x86\x41\xd5\x48\x0c\x14\xd7\x33\x74\xe0\x93\x1b\x85\x3d\x97\xe1\x22\xc1\x2a\xb2\x75\xbb\xf4\x03\xbd\x3b\xcc\x49\xc8\xe2\xc7\x28\x5a\xcf\x0d\x82\x9d\x80\x4e\xc5\x4b\x6b\x09\xc0\xeb\x56\x6c\x63\xae\xeb\x85\x79\xe8\xd8\xe7\x2b\xaa\xe5\x0c\xb2\x15\xbe\x5b\xea\x1a\xda\xbb\x88\x4f\xd4\x4e\x15\x48\x7b\xa4\xc2\x4e\xf6\x67\x90\xc5\x36\x02\xf6\x43\x9c\x5e\xf0\x86\x47\x9c\x7a\xb4\x63\xb9\x9b\x6b\x70\x56\x4b\x59\x77\x1f\xe2\x64\x10\x1e\x71\x02\x5a\x71\xf9\x58\x43\xed\x11\xed\x16\xa8\x2a\x15\x5d\x55\x84\x0f\x6e\xbf\x37\xf8\x07\x9c\x7e\xa2\x7d\x3a\x40\xe5\x46\xdb\x70\x4e\x7b\x6d\xe2\xfd\xbe\x5c\x57\x6e\x04\x1b\xb9\x39\x58\xe0\x43\xdb\x6c\xb9\x05\x41\xb6\xf0\xc1\xd1\x12\x72\x37\xde\xb2\x81\xa0\xfb\xc1\x4c\x44\x2e\x53\x26\x26\x7f\xb6\x95\xb6\xcd\x1f\xf0\xb2\xcf\xac\x94\xef\x55\xac\xbb\xca\xab\xfa\xb4\x76\xe3\xc7\xe4\x38\xfc\x4a\x00\xf3\xe6\xf6\xee\x66\x03\x37\xbf\xfe\x46\xff\xff\xeb\xdf\x6f\x5e\xec\x80\x16\xda\x74\x16\xd9\x21\x67\xd2\x0a\x6a\xe3\xc2\xcc\x64\x93\xfd\x60\x5e\xc0\x7f\xcc\xe9\x93\xd6\xa4\x32\xd8\x4c\x30\xda\x06\xfd\xaa\xa8\xdc\x40\x86\xac\x1c\xb9\xd9\x3f\x89\xf7\xb7\x92\x1a\x7b\x15\x23\x7a\xf6\x48\xdd\x9e\xe8\x4e\xa6\xa7\x48\x7a\x59\x27\x37\x32\x04\x1d\x3b\x94\xce\xd0\xa5\xe8\x07\x7e\x03\x41\x6a\xc6\x54\x0a\x9d\x3c\x4b\xc7\x4b\x8b\x1b\x6e\x75\xc7\x30\x32\x10\x92\x94\x12\x66\xca\x2c\x58\xc9\x47\xec\x28\x47\x63\x08\x89\x12\x1e\xd0\x46\x4a\xb2\xba\xee\x72\x79\x23\xe9\x23\xe9\x34\xf7\x81\x94\x3b\xdc\x30\x49\xc7\x71\xc2\x80\xaa\x17\x6a\x03\x5c\x2b\x2f\x25\x2f\xdf\xea\x96\x5b\x6f\x08\xa1\xa3\xd3\x26\x7a\xa9\x43\x3c\xe9\x83\x16\x3a\x1d\xc5\xaf\x08\x97\x2d\xcd\x99\xa0\x36\x7a\xa8\x9c\xf2\x92\x0e\xfb\x3c\x71\x68\x1c\x72\xeb\xfb\x42\xa1\x3e\x98\x71\xaf\x2d\xa5\x3d\x8b\x26\x94\x3b\x6a\xc7\x22\x55\x5c\x73\xdb\x94\xdf\xcd\xcd\x8b\x6c\x81\x5e\x59\xb5\xa7\x02\x8b\xe7\x22\x9c\x08\xb8\xb8\xa0\x72\x88\x57\x50\x67\xb3\x85\xd7\x99\x00\xd7\x99\x12\x3c\x8a\xeb\x79\xb2\xc8\x8d\xc7\xc1\x05\xc2\xe9\xe9\x06\xfe\x19\x9c\xcd\x0d\x01\x59\x9c\xc7\x1d\x22\x0e\xf4\x18\x55\xa3\xa2\x4a\x35\x15\x09\xb6\xd7\x07\xb4\x89\xd7\x16\xde\xa3\xd8\xab\xfc\xa3\x88\xf7\x93\x88\x57\x42\xc0\x9a\xa1\xd5\xb5\x39\xbe\x93\xd2\x27\xad\x16\xcb\xcd\xa5\x1f\xa5\x19\x2a\x3e\xb4\xb3\x97\x4c\x97\xfb\x8f\xbd\x8e\xdd\x58\x6d\x6b\xd7\x4b\xff\x78\x2f\xe9\xe6\x41\x68\xdf\x27\xa5\xd7\x46\x66\x55\x2f\x59\x78\x31\x82\xc6\x70\xf3\x9c\x9d\x49\x03\x31\xf5\x05\x3b\x2f\xa6\x24\x16\x41\x87\x18\xb8\xd1\x80\x92\xde\x6c\xc9\xba\xa5\xe4\xfb\x73\xeb\x86\xc5\xbc\x44\x56\x01\xa1\x84\xc1\x6c\xdb\xa7\x53\xb2\xef\xa3\x57\xda\x68\xbb\x3f\x86\xe7\xba\xa9\xe8\x75\x0f\x79\xe9\x2a\x9f\x04\x82\x78\x74\xe6\x05\xd0\xf4\xa3\x41\xbf\xca\x17\x9c\x73\xec\xd8\x57\xe8\x5f\xa8\x9d\xa9\xc7\x14\xc0\x2a\x77\xe0\xb1\x47\xda\x93\x4a\x82\x55\x87\xcc\xf9\x4b\x85\x08\x51\xf7\xb8\xd4\x45\xf4\x98\x2a\x22\x29\x35\xb9\x6c\x18\x23\xe8\x98\xe6\x63\x73\x7a\xe6\x96\x76\xde\xc5\x1d\xcb\x0b\x1a\x91\x5c\x9d\x0e\x74\x58\x6b\xc1\x6a\xd7\xf7\x14\xc5\xe9\x15\x54\x18\x8f\x88\x76\x06\x6e\x7a\xe7\xf1\x9e\xf8\xa5\x96\x82\x4d\xfe\x44\xd3\x7b\x6a\x86\xd1\x36\x2e\xe7\x84\x78\xde\xc7\x6c\x08\xe0\x1d\x87\xa8\x3a\x50\x03\x4e\xa1\xa5\x5a\x82\x75\x1e\xc7\x1a\x17\xf2\xd4\x90\x7d\xd0\x65\xf0\x4b\x6f\x58\x2e\xe9\xec\x65\xb4\x38\x4f\x71\xa9\x4a\x62\xe2\xda\xee\x5f\x32\x4a\xed\x9d\x31\x52\xe2\x2d\xe3\x39\x79\x0a\x95\xf2\x2f\x26\x0b\x59\xda\x2b\xbf\xd7\xb6\xdc\x81\xea\xdd\x68\x63\x6e\x8c\xc2\x85\x72\x3f\x20\x37\x69\x69\x06\x5b\xa1\x71\xc7\x9c\xff\xc4\x33\x2e\x49\xfc\xfb\x35\xb3\x30\x20\x36\x17\x78\x11\x71\x11\x9c\x22\xca\x59\xcc\x3f\x39\xa5\x5c\x22\xfb\xbb\x44\xb6\x57\x3e\x0e\x2a\x44\xee\x14\x52\x86\xe6\xb8\x52\x4d\x03\x06\x55\x73\x1a\x42\x72\xa0\xb4\x81\x53\xf8\x68\xa2\xa6\x56\x94\xa5\xf8\x76\xee\xd3\x25\x26\x63\xa4\xfa\x8c\x64\x1b\x3c\x06\xf4\x07\x3c\xe9\x3a\xd6\x05\xb9\xc1\x03\x9a\x53\xda\x8a\x0b\xa4\xd1\xca\x32\x6c\xa0\x32\xae\x7e\x7c\x21\xfe\x5c\x1b\x8f\x5e\x0d\xe7\xba\xd0\xb3\x6c\x29\xaa\xdf\xf8\x22\xc0\x39\x30\x4e\x86\x44\xad\x8e\x73\x3f\x27\xf5\xde\x0b\xae\x33\x18\x1d\xa5\x4e\xcc\x3e\xae\xa0\x73\x5e\x7f\x22\x84\x33\xc0\xef\xc9\xbd\xd3\xa4\x60\x2e\x7e\x74\xa4\x9c\x9e\xe7\x07\xec\x01\x39\x4d\x64\xb3\xf0\xde\x6f\x9f\x57\x93\x96\x78\xaa\xe4\x16\xee\x07\xaa\xc7\xeb\x7f\x9d\xb7\x24\x75\x1e\x82\x73\x49\x98\xca\xdd\xff\x89\x14\x5c\xb7\x4a\xf6\x32\xe5\x0e\x52\x13\x1d\xa2\xa7\xe3\xe3\xc9\x9e\xe6\xc3\xcd\xed\x26\x95\x6a\xf7\xd4\xf1\xcb\x30\x62\x50\x3e\xb3\xe5\x20\x5f\x95\xc1\xef\xd3\x20\x5b\xea\x41\x7d\xc0\xb0\xea\x22\x06\xa3\x6a\x2e\xa0\x83\x6e\x10\xca\x57\xb7\x77\xe5\xbc\x83\x4b\x91\x65\x93\xb6\xb5\x19\x1b\x3e\x3c\x6d\xe4\xde\x60\xb3\x1a\x48\x6d\xa0\xe4\xc1\xdc\x86\xa7\xa1\xf4\x8f\x1b\x22\xfd\x43\xd5\xf5\x32\x21\xe0\xa7\x32\x39\xe0\x17\x6b\x0e\x51\x3d\x22\xa0\xe6\x62\x51\xd9\x0c\x72\x8e\x7f\x28\xa9\x04\x18\xd7\x8e\xca\x33\xa2\x13\x95\x96\xa2\x23\x8d\x61\xd9\xac\xf3\x98\x69\xde\x4d\xbf\xa8\x2f\x99\xfb\x0a\x6e\x93\xea\x54\x25\x5c\xc2\xa5\x57\xb7\x59\xc5\x3b\x78\x75\x9b\x55\xbc\xbb\x7d\x75\x4b\x2a\xde\x6d\x5e\xdd\xd6\xce\xdc\xd1\x3b\x37\xc4\x5d\x1e\x05\xdc\x31\xad\xf3\xff\x96\x35\x72\xa6\x79\x57\x1e\x7b\xde\xfd\x5f\x3b\xc0\x53\x2a\x92\xf9\x77\x27\xcd\xd7\xdd\x4e\xee\x7d\xe8\x8d\xb6\xfb\xb0\x81\x93\x55\x3f\xa0\x19\xee\x76\x17\x95\x8c\xbc\x80\x6b\xb2\xb5\x3a\x69\x52\xbb\xee\x15\xe5\xc5\x33\xad\xff\xd3\x98\xb1\x8a\x96\xb1\xee\x09\xb9\xf3\x75\x8f\x8c\x13\xc2\x38\xa0\xcf\x97\xb0\x9c\x8c\xb7\xf0\x8e\x1a\x8b\x10\x21\x4c\x21\x62\x1f\xe6\xde\xf1\x3a\x8c\x8d\xbb\x86\x6a\xe4\x2e\xd9\x59\xf8\xee\xfd\x1b\x0a\xea\xd4\x28\x5c\x37\x4e\x85\xed\xf5\xc9\x84\x21\xbd\xaa\xc7\x10\x5d\xaf\x3f\xa5\x19\x56\x1e\x25\xf2\x9d\x29\xc1\x07\x5b\x9f\xc7\x86\x72\xcd\x10\xc6\x4b\xba\x10\xfb\xa4\xcb\x64\xa3\xfa\x58\xee\x20\x8e\xde\x06\x90\x9f\x20\x9e\xeb\xda\xf6\x79\x43\x44\x55\xf5\xee\x80\xbd\x0c\x31\xac\x3a\xe8\xbd\x8a\x08\x4b\x81\xc6\xf6\xc5\xbd\xb6\x96\x07\x47\x39\xc5\xa9\x90\x66\x00\x72\x57\x13\x55\xc5\x9d\xde\x2d\x6e\xf7\x5b\x99\x58\x70\x83\xf3\xf5\x8a\x92\xb3\x35\xde\x9d\xce\x5c\x58\x71\x6e\x56\x94\x9d\x22\xf7\xa1\x32\x69\x23\xb9\x42\x74\xb2\x39\x4d\xb6\x5f\xc8\x02\xb4\x43\x7f\x3a\x19\xb1\x45\x55\x01\x3d\xe3\x2e\x3d\xdd\x89\x5d\x20\xf2\xf5\x42\x60\x66\xb9\xe3\xb9\x69\x12\x7e\xd5\xc5\xb1\xa2\xcf\xcb\x81\xbe\x8f\x3a\x1a\xf6\x5b\xbe\x50\x09\x73\x03\x2b\xa3\x7b\xaa\x45\xfc\xdc\xdb\xdd\x04\xe0\xe5\x73\x33\x1a\x30\x42\x35\x2d\xcd\x1c\xa7\x14\xa9\x44\x5f\x30\xc1\x18\x70\xf0\xba\x57\x7e\x2a\xe1\x36\x3b\x55\x3b\x1a\x72\x86\x2f\xad\xfe\x78\xf7\xa4\x44\x67\xf3\xe2\x84\x01\x89\xd8\xaa\xcb\xcc\x9d\xae\x5c\xb2\xf1\xb5\x7d\x82\xce\x4a\xd5\x8f\x7b\x4f\x00\x99\x8e\x38\xf7\xa0\xa0\xda\x16\xeb\x98\x13\xab\x25\x58\x5a\x37\xae\x32\x33\xfb\x3e\x7a\x73\xff\x3d\x07\x04\xff\xf9\xef\xcf\xb8\xed\xfd\xfd\x7d\x51\xbc\x49\xef\x52\xa3\x94\x3e\x22\x58\xbe\x19\xe0\xda\x94\x6a\xb3\x93\x5e\x44\x2a\xd6\xf2\xd7\xdf\x4a\x28\x6f\xef\x4a\x28\xff\xfa\xf7\x12\xca\xeb\xeb\x12\xca\x9b\x9b\x72\x0b\x7f\xf4\xee\xa0\x9b\xf9\x0a\x8c\x5d\x71\xa1\x96\x98\x3d\x3f\xb0\x8f\x49\x94\x72\xb7\x1a\x3b\x6d\x4e\xbe\x23\xc0\x08\xc1\xf5\xcb\x97\x0f\x95\x0a\xcb\x08\x3b\x27\x83\x2d\xbc\x9e\x8d\xd6\xbb\x9e\xa7\x89\xe7\xc7\xa4\x2a\x99\x16\xf5\xea\x11\xa5\x77\xe6\xbb\xb5\x61\x1e\x23\x0d\x53\xec\x9c\xdc\xb8\x4d\xaa\x37\xf9\x02\x20\x80\xc7\xbd\xf2\x8d\xc1\xc0\x6d\x22\x3b\x64\x1a\x35\x07\xbe\xb8\xf9\xbc\x5c\x5e\x4f\xc2\xa0\xc2\x4e\x1d\xb4\x4c\x2e\x08\x76\x4e\x9a\x8a\x17\x41\xc7\x68\x1b\xb9\xa7\x7b\x7d\x72\x38\xf4\x78\xbe\xc5\x91\x76\x2a\xf7\x24\x9f\x9d\xcc\x4c\x84\xfd\xf4\xc9\x56\x35\xf1\x7c\x6d\xa7\x2c\x1c\x29\x46\x07\x90\xdc\x36\xcf\x89\x73\xec\x71\x03\xb4\xba\xf1\x83\xe2\xfc\xaa\x78\x36\x13\x4f\x2c\x82\xdb\x10\x29\x64\x1f\xdf\x88\x21\x4f\x3f\xb1\x91\x66\x32\xd1\x2f\x72\xc1\x37\xcf\x80\xc5\xd6\x37\x8b\x9d\xb9\x86\xb9\x40\x87\x73\x01\x49\x1f\x1d\x28\xeb\x28\x7a\x8b\x5e\xd5\x9d\xb6\x38\x0f\x26\x39\x36\x39\x93\x9d\x08\x99\xf4\xe1\x3d\x90\xf6\x6c\x8b\xa2\xf8\xe2\x0b\x78\x2b\x13\x6f\x72\x10\x99\x28\xe5\x9d\x45\xf1\x97\xe5\x53\x1c\xda\x1e\x16\xaa\xb9\xc4\x92\x71\xb9\x99\x08\x45\x78\xb7\x99\xb6\xf0\x6f\xf2\x07\xf4\xa8\xf2\x47\x3d\x14\x49\xf9\x22\xe3\xe8\xec\x4d\x3c\x31\xf5\xf9\x17\x44\xa7\x16\x2e\xd3\xc4\x56\xc5\xf9\xeb\x0d\x42\xb6\x22\x01\x65\x3a\xc6\xf3\xbb\x93\xf7\x89\xdb\x52\x04\xce\xb2\xea\xb0\xfe\x92\x81\x3f\x54\x28\xe6\xb0\x5c\xd5\x7d\xda\xf2\x8c\x46\x28\x86\x6d\x51\x7c\x58\xee\xe9\xe5\x33\x8d\x55\x13\xbd\xba\x38\xd8\x24\x81\x71\x75\xed\xb3\x5a\xc9\x76\x2a\x68\x21\xcf\x97\x89\xe9\x22\x64\x32\xe2\x86\xa3\xbb\x0c\x18\xf9\x41\xb9\x4e\x40\xf4\xb4\xdc\x16\xc5\x8f\xe9\xc3\x81\x33\x63\xcd\x57\x3a\x74\x72\xfc\xe1\xd1\x30\xca\x17\x30\x19\x6c\x12\x0f\x8a\x23\xa9\x7e\x26\xfe\x0a\x87\x4f\xb4\x50\xac\x09\x57\xcc\x2b\x20\xe2\xcf\xb5\xb4\xdc\x00\xcb\x98\x32\x4d\x45\x3b\x15\xce\x53\x75\x2a\x30\xc9\x74\x82\x34\xf8\xb1\xc6\x21\xc2\x5b\x57\xf0\x6f\x31\xcf\x9c\xad\xe1\xeb\xcb\xcb\xff\x34\x56\x93\x3c\xd9\x15\x45\x59\x96\xa4\x5d\xf1\x6b\x71\x75\xdd\xc6\xdd\xde\x5d\xef\xe0\xd7\xe2\xea\xea\x7a\xcd\xfa\x7a\x07\x9c\x0a\x8b\xab\xdf\x36\xb2\xce\x8f\xd5\xb4\x5e\xa9\x3f\xe1\xf5\x0e\x7e\x97\x16\x9c\xed\x25\xa4\xc8\x8f\x65\xe1\xd7\xc5\x6f\xc4\xb9\x28\xde\x79\x8a\x2f\x6d\x94\x37\xd3\x6c\x5b\x99\x97\x73\x50\x92\xc9\xce\xc5\xfc\x72\xfb\x2f\x49\xf9\xe5\xd6\x57\xff\x0b\x22\xfe\x77\x00\x00\x00\xff\xff\xe0\xf7\xe9\xe1\x5b\x28\x00\x00" +var _runtimeHelpOptionsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\x5f\x8f\xe4\xb6\x91\x7f\x1e\x7d\x8a\xc2\x64\x81\x99\x36\x7a\x7a\x8d\xc4\x0f\x41\xbf\x18\x6b\xef\xdd\xda\xc8\xd9\x7b\x88\x37\x77\x0e\x92\x20\xa2\xa4\x52\x8b\x19\x8a\xd4\x91\x54\xf7\x6a\x0d\xdf\x67\x3f\x54\x15\x29\xa9\x7b\x7b\x66\x72\xc0\x9d\x1f\xbc\xd3\x12\x59\xac\xbf\xbf\xfa\x43\xfd\x06\xde\x0f\x51\x3b\x1b\x8a\xe2\x07\x5d\x7b\x07\x21\x3a\x8f\x01\x94\x31\xe0\x5a\x88\x1d\xc2\x18\xd0\x43\xed\x6c\xab\x0f\xa3\x57\xb4\x18\xb4\x05\x1d\xc3\xc5\xc3\x46\x7b\xac\xa3\xf3\xd3\x2e\xd3\x1a\x03\x06\x26\x51\xbe\xfa\xf9\xed\xbb\xbf\x7f\xfb\xfe\xc7\x7f\xfd\xfe\xdd\xdf\xbf\x7b\xff\xc3\xbf\xbc\xee\x69\x41\x09\x4a\xde\x3f\x45\x08\xde\x04\x18\xd0\x17\xb4\xe6\xe7\xb7\xef\x20\x0c\x58\x6f\x41\xb7\x9f\x13\x2c\x41\x07\xb0\x2e\x42\xc0\xb8\x85\xf2\xbf\x5f\xef\x84\x66\x3e\x48\x07\xe2\xa6\xa1\x03\x8b\xe5\xc4\x33\x9e\xbf\x43\x8f\xa0\x3c\x32\x47\x4e\xb4\x02\xb1\x53\x11\x26\x37\x42\xad\x2c\xd1\xde\x17\xc5\x17\x50\xaa\x31\x3a\x6d\x1b\xb4\xb1\xdc\xc3\xa9\x43\x0b\xb5\x47\x15\xb5\x3d\x80\x02\x8b\x27\x30\xda\xb2\xe2\x98\x56\x50\x3d\x82\x2c\x17\x01\x93\xd4\x05\x00\x0c\x1e\x8f\xda\x8d\x81\x77\xec\x8a\xe2\xa6\xc1\x56\x8d\x26\xc2\x51\x99\x11\xf7\x50\x46\x3f\x62\x39\x1f\x1a\xd4\x11\xcb\x3d\xb0\x50\x70\xd2\xc6\x00\x3d\x61\x6a\xd5\xd8\xb6\xe8\x01\x8f\xe8\x27\x28\x6d\x09\x01\x6b\x67\x9b\x00\xb4\xaf\x57\x51\xd7\xca\x98\x89\xce\xbc\x3f\x75\x24\x2a\xad\xd1\xc2\x09\x1f\x96\xed\x2d\xa2\x6f\x76\x20\x46\x54\x26\xa4\xa3\x3e\x23\xc4\x67\x2b\xdb\xc0\x7f\x8d\x3a\x8a\x1e\x48\x55\xf8\x91\x7e\xe9\xd8\xb9\x31\x82\x0a\x8f\xda\x1e\x76\xf0\x0d\x42\xad\x3c\xb6\xa3\x91\x85\x63\x20\x6d\xc5\x4e\x07\xa2\xd4\xa2\x8a\xa3\xc7\x2d\x54\x58\x2b\xd2\x1b\xd1\xe9\xf5\xa1\x8b\xa0\xea\x5a\xb3\xea\x8c\x99\xd2\x89\xd0\x6a\x83\x5b\x70\x47\xf4\x27\xaf\x59\xed\xa7\x4e\x45\x22\x74\x12\xdd\x7a\x84\x0a\x5b\xe7\x71\x07\xdf\xb7\x4f\x89\x48\xd2\x97\x5f\x96\xf4\xc4\xae\x54\x4a\x64\xc8\x93\xb2\xbe\xaf\x59\xe5\x4b\x31\x49\xa5\x02\x5a\xd5\x93\x49\xb4\x65\xca\xda\xb6\xae\x52\x7e\x0b\xa1\x73\x27\x70\xd6\x4c\x62\x9c\xb4\x30\x33\x40\x02\x40\x85\xc4\x39\x36\x3a\x62\x43\x87\x7a\x45\x9c\x93\xcb\x09\xad\x76\x34\x06\x06\x15\xbb\x5d\x41\xaf\xe1\x92\x89\x56\x99\x90\x7c\xa3\x76\xc6\xf9\xda\x99\xb1\xb7\xc4\x4b\xcb\x8a\x5d\x85\x04\x44\x07\x5f\x6e\x81\xed\x62\x0c\x34\x3a\x0c\x46\x4d\xa0\x40\xf6\x80\x8a\x74\x62\x01\x1c\x61\xba\xd5\xd8\xa4\x37\x3b\xf8\x90\x28\x8d\x81\x8d\xa7\x5b\xb6\xcd\x49\xd9\x98\x37\xff\xfe\x4b\x22\x5f\x21\x74\xfa\xd0\x19\x32\x1a\xcb\xc3\xa4\x94\x81\xd6\x79\xc0\x8f\xaa\x1f\xcc\x73\xaa\x64\x09\x42\xdd\x21\x6b\xd3\x38\xd5\x64\x68\x98\x9f\x0b\x36\x35\xa4\x6a\xd2\xc7\xab\x7b\x09\xe2\xb7\xda\x6f\x5e\xaf\x96\x85\xd7\xa5\xd8\xb7\xdc\xb1\x51\xb7\x22\x42\xc0\xc8\x9e\x42\x46\x3f\x18\x57\x29\xc3\xe6\x29\xaf\xf1\x94\x7e\x97\x45\x71\xf3\xa3\x8b\x28\x28\x40\xdc\xe4\x85\xeb\xe3\xe0\x3e\x3d\xdd\x42\x70\x46\x79\xfd\x09\x9b\x2d\x87\xc5\xfc\xf3\x21\xd6\x9b\xe2\x86\xb0\x85\xec\x61\x5c\xad\xa2\xc8\x31\x4b\xb0\x78\x7e\xec\x70\x62\x18\xc2\xbe\xc2\xa6\x91\x75\x74\xb6\x78\x68\xa5\xad\x62\xb8\xba\xf9\x70\xa1\x1d\x42\xa8\x0a\x21\xa0\xc1\x9a\xc8\xb7\xde\xf5\x8c\xe3\xd9\xe1\x42\xa6\x54\xdc\x5c\xe0\xe3\xb9\xfa\xd6\x00\x2c\x18\x50\x3b\x92\xb3\x9a\x66\xf9\x29\xba\x21\x76\x1e\xb1\xb8\x59\xef\xdd\x17\xc5\xcd\x9f\x13\x5a\x7a\x54\x0d\xf4\x8e\x40\xb5\x22\x24\xe0\x93\xee\xc2\xb9\xee\x12\x47\xc9\xfc\x25\x74\x68\x06\x88\x6e\xd0\x75\x71\x73\x5f\xf2\xaf\xf4\x6a\xb3\x13\x3f\x19\x7d\x70\x9e\xd0\xb2\xdc\x2f\x0e\xc7\x44\x18\x74\x67\x53\xc9\x42\x32\xb7\x24\x2c\x05\x8d\x26\x84\x44\x9b\xcc\xc7\x50\x38\xbb\x18\x2d\x6c\xb0\xd5\x16\x1b\x12\xf4\xd2\xf5\xc8\xe7\xc9\x28\x0c\x5b\x9b\xe7\x81\x1a\x6d\xed\x1a\x6d\x0f\xe5\x9e\xc9\xe4\x9f\x14\x24\x6e\x40\x2b\xae\x41\x40\x26\x46\x21\x5d\xee\xe0\xa7\x71\x18\x9c\x27\xbb\xe5\xf5\x0c\x8c\x74\xa6\xd1\x81\x9e\xab\x08\x5d\x8c\x43\xd8\xbf\x7e\x7d\x3a\x9d\x76\xa7\xdf\xed\x9c\x3f\xbc\xfe\xf0\xc7\xd7\x79\xc3\xeb\x27\x70\x62\x8c\xed\xc3\xef\x13\x6b\xae\xb5\x78\x4a\xda\x5b\x65\x91\x33\x68\x07\xd5\x34\x92\xc7\x44\xa3\x6e\xf6\xa0\x6b\x72\xaf\x50\xa8\x55\x21\x36\xda\xc7\x89\x25\x67\x85\x46\xf4\xbd\xb6\x24\x25\xd9\xe5\x51\xdb\x86\x20\x50\x99\x83\xf3\x3a\x76\x7d\xe2\x41\x0a\x05\xb7\xac\x07\xdd\xb2\xf4\x39\xab\xe9\x00\xbd\x6b\x04\x98\x9c\xa7\x28\xda\xc1\x7f\x12\x6c\xaf\xce\x14\x53\x6f\x13\xc9\x7f\x8c\x21\x0a\x5d\x45\x94\x2a\xe7\x0c\x2a\x0b\x65\x26\x53\x8a\xa7\x08\x30\xd0\xd9\x62\x40\xca\xcd\xc1\x2d\x39\x9a\x8b\x9f\x5e\x3d\x12\x1d\xcb\x58\xbd\x23\x72\x19\x14\xe9\xf4\x2d\x54\x63\xcc\xd1\xa7\xad\xaa\x6b\x2a\x64\x24\xf3\x5c\xb2\xd7\xb6\xdb\x6b\xe9\xa6\x53\xa1\xcb\x4e\xcb\x0e\x9a\xc4\x56\x07\xa5\x6d\x88\xa0\x64\x45\xce\x5e\x5e\x1f\xb4\x25\x64\xa5\x2c\x72\xcf\xa5\x07\x36\x92\x56\x05\xc5\xf3\x7e\xca\x86\x04\xa5\xd8\x6c\x16\x20\x97\x90\x4c\x5c\x32\xef\xae\xe2\x1a\xc4\x4c\xf2\xce\x63\x70\xa3\xaf\x99\x90\xb6\x11\x6d\xd0\x47\x4c\xfb\x97\xcc\xc9\xb9\x8d\xb0\x7d\x40\x37\x18\x84\x53\xe7\x28\xe4\xc9\x7f\x28\xd1\xa7\xa0\xef\xd4\x51\xdb\x03\xdb\x32\x9f\x38\x1b\x32\x44\x15\xc7\xf0\x7c\x2c\x91\x88\xad\xf3\xbd\x8a\x2f\xf9\x14\xfb\x2a\x5a\x8e\x9c\xb5\x6b\x13\xa6\x12\x9b\x49\x33\xec\xc6\xf0\xa7\x1f\xbf\xff\xf9\x7c\x07\xb1\xcc\x3e\x53\xfe\xd5\x96\x70\x6f\xda\x0d\x70\x99\xa4\x02\x34\x2e\x7c\xb6\x96\x48\x95\x7f\xf5\xbc\xb6\xf6\xa6\x65\xfd\x22\xc4\x93\x83\xc1\x85\xa0\x2b\x93\x4a\x8e\x90\x0e\x5f\x74\x47\x27\x95\xa3\xd5\x1f\x4b\x46\x82\xb2\x71\xa1\x4c\x4e\x25\x51\x26\xf2\x0a\xf7\x15\x5e\xc4\x26\x89\xcf\xf0\x4e\x7b\x53\x1e\xa7\xa0\x10\x1c\x15\x95\x12\xb3\xe2\x05\xf1\xec\xe4\xcf\xb3\xb8\x1b\x4d\x03\x46\x3f\x72\x94\xd7\x9d\xb2\x07\x5c\xa0\x34\x8b\x4b\xe0\xc8\xe1\x98\x41\x30\x44\xe5\x57\xc5\xee\x53\xc8\xc0\x32\xce\x56\x8c\xd3\x40\xa0\x13\x30\x86\x19\x4f\xe8\x59\x36\xce\x85\xef\xef\x2e\xb3\x36\x6b\x9c\x52\xe7\xd3\x79\x9b\x65\xbd\xae\x36\x0a\xf2\x06\x07\x11\x29\x6b\x8b\xe3\x87\x84\xea\xd4\x11\x8b\x1b\x02\x67\x66\x57\x1f\xac\xf3\x58\xab\x40\x0c\x0f\xe8\xc9\x20\x40\x3f\x1f\xb4\x0d\x14\x0e\x51\x1f\x29\xd1\x2a\x5f\x77\x78\xd5\x81\x57\xa0\x28\x85\x7f\xdd\x29\xbf\x96\x7e\xdd\x0e\xd0\x3b\x55\x47\xf4\xd7\x28\x41\xa6\xc2\x75\x65\xb9\x07\xb4\xaa\x32\xa9\xaf\x62\x33\xa5\x7c\x57\xb9\x18\x5d\x9f\x31\x82\x90\xca\x79\x71\x61\xe8\x31\x04\x75\xc0\xd9\x71\x07\x4f\x61\xdd\x7c\x16\xd2\x2f\xd6\x45\x4b\x5c\x3e\x22\x0e\x9f\x77\x41\x52\xd4\x2f\xcf\xb7\x70\xea\x74\xc4\x30\xa8\x1a\xe9\x00\xc5\xf5\x0c\x19\x7c\x72\xa3\x1c\x4f\xfc\x24\x0e\x56\x91\xad\xdb\xa5\x9d\xe8\xdd\x71\x4e\x42\x16\x3f\x46\x91\x7a\xee\x2f\xec\x04\x64\x15\x2f\x5d\x2c\x00\xaf\x5b\x1d\xcb\x30\x4f\x40\x28\x87\x87\x8e\x7d\xbe\xa2\x5a\xce\x20\x6b\xe1\x9b\xa5\xae\xa1\xbd\x0b\xfb\xdc\x50\x9c\x09\x90\xf6\x48\x85\x9d\xf4\xcf\x20\x8b\x6d\x04\xec\x87\x38\xbd\xe0\x0d\x8f\x38\xf5\x68\xc7\x72\x3f\xd7\xe0\x2c\x96\xb2\xee\x21\xc4\xc9\x20\x3c\xe2\x04\xb4\xe2\xba\x59\x43\xed\x11\xed\x0e\xa8\x2a\x15\x59\x55\x84\x0f\xee\x70\x30\xf8\x07\x9c\x7e\xa0\x7d\x3a\x40\xe5\x46\xdb\x70\x4e\x7b\x63\xe2\xc3\xa1\x5c\x57\x6e\x04\x1b\xb9\x39\x58\xe0\x43\xdb\xac\xb9\x05\x41\x76\xf0\xc1\xd1\x12\x72\x37\xde\xb2\x85\xa0\xfb\xc1\x4c\x44\x2e\x53\xa6\x43\xfe\x64\x2b\x6d\x9b\x3f\xe0\x75\x9f\x59\x09\xdf\xab\x58\x77\x95\x57\xf5\x79\xed\xc6\x8f\xc9\x71\xf8\x95\x00\xe6\xdd\xfd\xe6\x6e\x0b\x77\xbf\xfc\x4a\xff\xff\xcb\xdf\xee\x5e\xec\x80\x16\xda\x64\x8b\xec\x90\x33\x69\x05\xb5\x71\x61\x3e\x64\x9b\xfd\x60\x5e\xc0\x7f\xcc\xe9\x93\xd6\xa4\x32\xd8\x4c\x30\xda\x06\xfd\xaa\xa8\xdc\x42\x86\xac\x1c\xb9\xd9\x3f\xe9\xec\xaf\x25\x35\xf6\x2a\x46\xf4\xec\x91\xba\x3d\x93\x9d\xbb\x6e\x3f\xe2\xcb\x32\x3d\x0e\x8a\x20\x31\x48\x4f\x27\x7d\x2f\xe7\xde\x01\xad\x80\xbe\xe2\x06\x51\xfc\xa0\x71\x28\x0d\x1f\x7e\xd4\x54\x96\xcc\x10\x57\x2b\x6b\x1d\x7b\x33\xf5\x07\xea\x48\x25\xee\xd2\x6d\x80\x1c\x32\x57\xfd\x1a\x29\xe5\xd9\xbb\x44\xe7\x1c\x25\x0c\x01\x18\x67\x57\xce\xe9\x67\x18\x2b\x85\xc8\x53\x24\xb5\x85\x30\xd6\x1d\x28\x08\x3a\x8e\x8c\x7c\x2f\xf7\xb5\xbd\x1b\x19\x84\x4f\x1d\x4a\x6f\xec\x12\xfe\x01\xbf\x81\x20\x55\x73\x2a\x06\xcf\x9e\x25\x07\xa7\xc5\xcd\x96\xce\x19\xc3\xc8\x6c\x12\x7f\x02\x34\xca\x2c\xd9\x82\x9d\xdc\x51\x95\x82\x21\x24\x4a\x78\x24\xe5\x13\x04\xd4\x5d\x2e\xf0\x24\x81\x26\xab\xce\x9d\x30\x65\x4f\x37\x4c\xd2\x73\x9d\x1d\x40\xf5\x1b\x35\x42\xae\x95\x97\x52\x99\xdc\xeb\x96\xc7\x17\x10\x42\x47\xfe\x4e\xf4\x52\x8f\x7c\xd6\x09\x2e\x74\x3a\x42\x30\x61\x2e\xfb\x1a\xe7\xc2\xda\xe8\xa1\x72\xca\x4b\x41\x30\x5b\x26\xfb\xc2\x0b\xad\x8a\xef\xa3\x57\xda\x68\x7b\x38\x85\xe7\x3a\x82\xe8\x75\x0f\x79\xe9\x0a\x13\x03\xc1\x14\x3a\xf3\x42\xe0\xfb\xd1\xa0\x5f\x61\x1e\xe3\xa6\x1d\xfb\x0a\xfd\x0b\xf5\x1f\x79\xab\x04\x5d\xb9\x07\x8f\x3d\x35\xc5\x39\xad\xad\xba\x3c\xc6\x60\x15\x22\x44\xdd\xe3\xe2\xf8\xf4\x38\xc5\x8a\xb2\x3c\x63\x19\xc6\x08\x3a\xa6\x11\xd1\x9c\x62\xb8\x2d\x9b\x77\x71\xd5\xfd\x82\x44\xc4\x57\xa7\x03\x35\xc9\x6b\xc6\x6a\xd7\xf7\x64\x87\xf4\x0a\x2a\x8c\x27\x44\x3b\x83\x0f\xbd\xf3\xf8\x40\xe7\xa5\xb2\x98\x55\xfe\x44\x20\x9c\xab\x61\xb4\x8d\xcb\xb8\x16\x2f\x6b\xf1\x2d\x81\x94\xe3\x76\x86\xe3\x9b\x5c\x17\x54\x4b\xd0\xc4\xd3\x4b\xe3\x42\x1e\x9c\xf1\xe4\xce\x65\xf7\x4d\x6f\x98\x2f\xe9\x4e\xd3\x74\x2d\x0f\x3d\x29\xd3\x33\x71\x6d\x0f\x2f\x29\xa5\xf6\xce\x18\x29\x53\x96\x11\x93\x3c\x85\x4a\xf9\x17\xc3\x5d\x96\xf6\xca\x1f\xb4\x2d\xf7\xa0\x7a\x37\xda\x98\x8b\xfb\x70\xa5\x64\x0d\xc8\x8d\x46\x1a\x43\x56\x68\xdc\x29\x63\xb8\x78\xc6\x35\x8e\x7f\xb7\x3e\x2c\x0c\x88\xcd\x95\xb3\x88\xb8\x30\x4e\xe9\xc8\x59\xcc\x3f\x19\x14\xae\x91\xfd\x6d\x22\xdb\x2b\x1f\x07\x15\x22\x57\xbb\x29\xcb\xc8\x24\xb5\x69\xc0\xa0\x6a\xce\x43\x48\x0c\x4a\x1b\x38\x0d\x8d\x26\x6a\x6a\xa7\x98\x8b\xaf\xe7\x5e\x53\x62\x32\x46\xaa\x31\x88\xb7\xc1\x63\x40\x7f\xc4\xb3\xca\x79\x5d\x54\x1a\x3c\xa2\x39\xa7\xad\x38\xc9\x8f\x56\x96\x51\x12\x30\xae\x7e\x7c\x21\xfe\x5c\x1b\x4f\x5e\x0d\x97\xb2\xd0\xb3\xac\x29\xca\x3d\x3c\x37\x77\x0e\x8c\x93\x41\x47\xab\xe3\xdc\x93\x48\xcd\xf2\x82\xeb\x0c\x46\x47\xa9\x75\xb2\x8f\x2b\xe8\x9c\xd7\x9f\x9c\x8d\xca\x00\xbf\x27\xf7\x4e\xdd\xee\x9c\xc0\x75\x24\x54\xce\x3d\x30\x7b\x40\x2e\x65\xb2\x5a\x78\xef\xd7\xcf\x8b\x49\x4b\x3c\x55\x23\xcb\xe9\x47\xaa\x29\xeb\x7f\xfe\x6c\x81\x65\x1e\xe4\x72\x59\x93\x4a\xb6\xff\x0d\x17\x5c\x7b\x49\xfb\x67\xca\x3d\xa4\x46\x30\x44\x4f\xe6\xe3\xe9\x94\x66\xe3\xe6\x96\x89\xca\x8d\x07\xea\x5a\xa5\xa1\x1e\x94\xcf\xc7\x72\x90\xaf\x4a\xb9\x9f\xd2\x30\x56\x32\xb2\x3e\x62\x58\x55\xc2\x83\x51\x35\x17\x81\x41\x37\x08\xe5\xab\xfb\x4d\x39\xef\xe0\x64\xb2\x6c\xd2\xb6\x36\x63\xc3\xc6\xd3\x46\x66\xdf\xdb\xd5\x50\x65\x0b\x25\x0f\x97\xb6\x3c\xd1\xa3\x7f\xdc\x10\xe9\x1f\xaa\x10\x97\x2e\x97\x9f\x4a\xf7\xcb\x2f\xd6\x27\x44\xf5\x88\x80\x9a\xd3\xbd\xb2\x19\xe4\x1c\xff\x50\xb5\x74\xd0\x84\x6b\x27\xe5\x19\xd1\x89\x4a\x4b\xd1\x91\x46\x89\xd7\x06\xfd\x49\x5d\x54\x5b\xcf\xb5\x31\x97\xfa\xf5\x33\x65\xc8\xab\xfb\x2c\xe2\x06\x5e\xdd\x67\x11\x37\xf7\xaf\xee\x49\xc4\xcd\xf6\xd5\x7d\xed\xcc\x86\xde\xb9\x21\xee\x73\x3b\xbb\x61\x5a\x97\xff\x2d\x6b\xc4\xa6\x79\x57\x1e\xdd\x6d\xfe\xbf\x1d\xe0\x29\x11\x49\xfd\xfb\xb3\x06\x62\xb3\x97\xbb\x0b\x7a\x43\xed\xff\x16\xce\x56\x7d\x87\x66\xd8\xec\xaf\x0a\x19\x79\x01\x8f\x70\xd7\xe2\xa4\x69\xe3\xba\xdf\x91\x17\xcf\xb4\xaf\x4f\x63\xc6\x2a\x5a\xc6\xba\x27\xe4\xce\x57\x16\xd2\x12\x87\x71\x40\x9f\xef\x2c\x39\x19\xef\xe0\x3d\x95\x86\x21\x42\x98\x42\xc4\x3e\xcc\xfd\xcf\x6d\x18\x1b\x77\x0b\xd5\xc8\xb5\xb1\xb3\xf0\xcd\x4f\x6f\x29\xa8\x53\xa9\x77\xdb\x38\x15\x76\xb7\x67\xf5\x6f\x7a\x55\x8f\x21\xba\x5e\x7f\x4a\x73\x98\x3c\x0e\xe3\x2b\x46\x82\x8f\x74\x3b\xc6\x48\xaf\x63\x07\x61\xbc\x26\x0b\x1d\x9f\x64\x99\x6c\x54\x1f\xcb\x3d\xc4\xd1\xdb\x00\xf2\x13\xc4\x73\x5d\xdb\x3e\xaf\x88\xa8\x2a\xea\x91\x7b\x69\xc4\xad\x3a\xea\x03\xd5\xe1\x4b\x81\xc6\xfa\xc5\x83\xb6\x96\x87\x1f\x39\xc5\xa9\x90\xfa\x58\xb9\x6f\x88\xaa\xe2\x6e\xe5\x1e\x77\x87\x9d\x74\xdd\x5c\xa2\x7e\xb5\xa2\xe4\x6c\x8d\x9b\xf3\x8e\x80\x05\xe7\x72\x53\xd9\x29\x72\x2f\x25\xd3\x22\xe2\x2b\x44\x27\x9b\xd3\x74\xf6\x85\x2c\x40\x3b\xf4\xa7\xb3\x31\x51\x54\x15\xd0\x33\xee\x34\xd3\xbd\xce\x15\x22\x5f\x2d\x04\xe6\x23\xf7\x3c\xfb\x4b\xcc\xaf\xea\x70\x16\xf4\x79\x3e\xd0\xf7\x51\x47\xc3\x7e\xcb\x97\x02\x61\x6e\x41\x64\xfc\x4c\xb5\x88\x9f\xab\xf3\xbb\x00\xbc\x7c\x6e\x27\x02\x46\xea\x92\xe7\x72\x9c\x53\x8a\x54\xa2\x2f\xa8\x60\x0c\x38\x78\xdd\x2b\x3f\x95\x70\x9f\x9d\xaa\x1d\x0d\x39\xc3\x17\x56\x7f\xdc\x3c\xc9\xd1\xc5\xcc\x33\x61\x40\x22\xb6\xea\x13\x72\xaf\x22\x17\x45\x7c\xcb\x9d\xa0\xb3\x52\xf5\xe3\xc1\x13\x40\x26\x13\xcf\x1d\xa5\x6a\x5b\xac\x63\x4e\xac\x96\x60\x69\xdd\x7a\xc8\xdc\xe7\xdb\xe8\xcd\xc3\xb7\x1c\x10\xfc\xe7\x7f\x3c\xe3\xb6\x0f\x0f\x0f\x45\xf1\x36\xbd\x1b\xcc\x78\xd0\x19\xea\xc3\x72\xc5\xce\xb5\x29\xd5\x66\xe7\x6d\x26\x57\xac\xe5\x2f\xbf\x96\x50\xde\x6f\x4a\x28\xff\xf2\xb7\x12\xca\xdb\xdb\x12\xca\xbb\xbb\x72\x07\xff\xee\xdd\x51\x37\xf3\x35\x0e\xbb\xe2\x42\x2d\x1d\xf6\xfc\xd0\x39\x26\x56\xca\xfd\x6a\x74\xb2\x3d\xbb\x76\xc7\x08\xc1\xf5\xcb\x87\x02\x95\x0a\xcb\x18\x36\x27\x83\x1d\xbc\x99\x95\xd6\xbb\x9e\x27\x62\x97\x66\x52\x95\x4c\x3c\x7a\xf5\x88\x72\x21\xc4\xf7\x43\xc3\x3c\x0a\x19\xa6\xd8\x39\xb9\x35\x9a\x54\x6f\xf2\x10\x3b\x80\xc7\x83\xf2\x8d\xa1\x96\xd0\xb5\xe2\x90\x69\x5c\x1a\xf8\xf2\xe1\xf3\x72\x79\x3d\xcd\x81\x0a\x3b\x75\xd4\xd2\x7b\x12\xec\x9c\x35\x15\x2f\x82\x8e\xd1\x36\x72\x4f\xf7\xe6\xcc\x38\xf4\x78\xbe\x89\x98\xe7\x15\xdc\x93\x7c\x66\x99\x99\x08\xfb\x29\x9b\xe5\x99\x33\xdf\xd8\x29\x33\x47\x82\x91\x01\x92\xdb\xe6\x59\x67\x8e\x3d\x6e\x80\x56\xb7\x56\x50\x5c\x5e\x77\xce\x6a\xfa\x47\x70\x16\x82\xdb\x12\x29\x64\x1f\xdf\x8a\x22\xcf\xbf\x48\x91\x66\x32\xd1\x2f\x72\xc1\x37\xcf\x31\x45\xd7\x77\x8b\x9e\xb9\x86\xb9\x42\x87\x73\x01\x71\x1f\x1d\x28\xeb\x28\x7a\x8b\x5e\xd5\x9d\xb6\x38\x0f\xd7\x38\x36\x39\x93\x9d\x31\x99\xe4\xe1\x3d\x90\xf6\xec\x8a\xa2\xf8\xcd\x6f\xe0\x9d\x4c\x6d\xc9\x41\x64\x26\x90\x77\x16\xc5\x9f\x97\x2f\x57\x68\x7b\x58\xa8\xe6\x12\x4b\x46\xbe\x66\x22\x14\xe1\xdd\x66\xda\xc1\xbf\xc9\x1f\xd0\xa3\xca\xdf\xc0\x50\x24\xe5\x61\xfc\x89\xa7\x43\x6b\x55\x5f\x7e\x70\x73\xae\xe1\x32\x4d\x1d\x55\x9c\xbf\x40\x20\x64\x2b\x12\x50\x26\x33\x5e\xce\xff\x7f\x4a\xa7\x2d\x45\xe0\xcc\x6b\xfa\x6c\x65\x0e\x4c\x6a\xee\xe7\xb0\x5c\x7f\xe0\x61\xf9\x02\x5c\x28\x86\x5d\x51\x7c\x58\xee\x9a\xe5\x53\x83\x55\x13\xbd\x1a\x7e\x6f\x13\xc3\xb8\xba\xba\x58\xad\x64\x3d\x15\xb4\x90\x67\xa4\x74\xe8\xc2\x64\x52\xe2\x96\xa3\xbb\x0c\x18\xf9\x41\xb9\x4e\x40\xf4\xb4\xdc\x15\xc5\xf7\xe9\xf2\xfb\x42\x59\xf3\xb5\x04\x59\x8e\x3f\xbf\x19\x46\xf9\x8a\x23\x83\x4d\x3a\x83\xe2\x48\xaa\x9f\x89\xbf\x24\x61\x8b\x16\x8a\x25\xe1\x8a\x79\x05\x44\xfc\x75\x93\x96\x5b\x4c\x19\x34\xa5\xb9\x56\xa7\xc2\x65\xaa\x4e\x05\x26\xa9\x4e\x90\x06\x3f\xd6\x38\x44\x78\xe7\x0a\xfe\x2d\xea\x99\xb3\x35\x7c\x75\x7d\xf9\x1f\xc7\x6a\x92\x27\xfb\xa2\x28\xcb\x92\xa4\x2b\x7e\x29\x6e\x6e\xdb\xb8\x3f\xb8\xdb\x3d\xfc\x52\xdc\xdc\xdc\xae\x8f\xbe\xdd\x03\xa7\xc2\xe2\xe6\xd7\xad\xac\xf3\x63\x35\xad\x57\xea\x4f\x78\xbb\x87\xdf\xa6\x05\x17\x7b\x09\x29\xf2\x63\x59\xf8\x55\xf1\x2b\x9d\x5c\x14\xef\x3d\xc5\x97\x36\xca\x9b\x69\xd6\xad\xcc\x7c\x39\x28\x49\x65\x97\x6c\x7e\xb1\xfb\xa7\xb8\xfc\x62\xe7\xab\xff\x03\x16\xff\x27\x00\x00\xff\xff\xff\x0a\x4b\x21\x8a\x27\x00\x00" func runtimeHelpOptionsMdBytes() ([]byte, error) { return bindataRead( diff --git a/internal/config/settings.go b/internal/config/settings.go index 8702bff1..b7cdaa69 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -30,6 +30,7 @@ var ( // Options with validators var optionValidators = map[string]optionValidator{ + "autosave": validateNonNegativeValue, "tabsize": validatePositiveValue, "scrollmargin": validateNonNegativeValue, "scrollspeed": validateNonNegativeValue, @@ -150,7 +151,6 @@ func GetGlobalOption(name string) interface{} { var defaultCommonSettings = map[string]interface{}{ "autoindent": true, - "autosave": false, "basename": false, "colorcolumn": float64(0), "cursorline": true, @@ -209,6 +209,7 @@ func DefaultCommonSettings() map[string]interface{} { } var defaultGlobalSettings = map[string]interface{}{ + "autosave": float64(0), "colorscheme": "default", "infobar": true, "keymenu": false, diff --git a/runtime/help/options.md b/runtime/help/options.md index ef1d068b..5e25ea6e 100644 --- a/runtime/help/options.md +++ b/runtime/help/options.md @@ -13,12 +13,14 @@ Here are the options that you can set: default value: `true` -* `autosave`: micro will save the buffer every 8 seconds automatically. Micro - also will automatically save and quit when you exit without asking. Be - careful when using this feature, because you might accidentally save a file, - overwriting what was there before. +* `autosave`: micro will save the buffer every `n` seconds automatically + (where `n` is the value of the option). Micro also will automatically + save and quit when you exit without asking. Be careful when using this + feature, because you might accidentally save a file, overwriting what + was there before. If the value of the option is `0` then micro will + not autosave. - default value: `false` + default value: `0` * `basename`: in the infobar, show only the basename of the file being edited rather than the full path. @@ -123,6 +125,12 @@ Here are the options that you can set: default value: `false` +* `mkparents`: if a file is opened on a path that does not exist, the file cannot + be saved because the parent directories don't exist. This option lets micro + automatically create the parent directories in such a situation. + + default value: `false` + * `mouse`: whether to enable mouse support. When mouse support is disabled, usually the terminal will be able to access mouse events which can be useful if you want to copy from the terminal instead of from micro (if over ssh for @@ -131,19 +139,6 @@ Here are the options that you can set: default value: `true` -* `pluginchannels`: contains all the channels micro's plugin manager will search - for plugins in. A channel is simply a list of 'repository' json files which - contain metadata about the given plugin. See the `Plugin Manager` section of - the `plugins` help topic for more information. - - default value: `https://github.com/micro-editor/plugin-channel` - -* `pluginrepos`: contains all the 'repositories' micro's plugin manager will - search for plugins in. A repository consists of a `repo.json` file which - contains metadata for a single plugin. - - default value: ` ` - * `rmtrailingws`: micro will automatically trim trailing whitespaces at eol. default value: `false` From f39a916e5fc4d6ed6a1290723d5946f6fff84485 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 4 Aug 2019 14:32:42 -0700 Subject: [PATCH 146/231] Fix minor autosave race condition --- internal/action/command.go | 3 ++- internal/config/autosave.go | 31 +++++++++++++++++++++++-------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/internal/action/command.go b/internal/action/command.go index a062a23d..029f9582 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -406,9 +406,10 @@ func SetGlobalOptionNative(option string, nativeValue interface{}) error { } } else if option == "autosave" { if nativeValue.(float64) > 0 { + config.SetAutoTime(int(nativeValue.(float64))) config.StartAutoSave() } else { - config.StopAutoSave() + config.SetAutoTime(0) } } else { for _, pl := range config.Plugins { diff --git a/internal/config/autosave.go b/internal/config/autosave.go index 2c5bf815..db473081 100644 --- a/internal/config/autosave.go +++ b/internal/config/autosave.go @@ -1,30 +1,45 @@ package config import ( - "log" + "sync" "time" ) var Autosave chan bool +var autotime int + +// lock for autosave +var autolock sync.Mutex func init() { Autosave = make(chan bool) } +func SetAutoTime(a int) { + autolock.Lock() + autotime = a + autolock.Unlock() +} + +func GetAutoTime() int { + autolock.Lock() + a := autotime + autolock.Unlock() + return a +} + func StartAutoSave() { go func() { for { - autotime := time.Duration(GlobalSettings["autosave"].(float64)) if autotime < 1 { break } - time.Sleep(autotime * time.Second) - log.Println("Autosave") + time.Sleep(time.Duration(autotime) * time.Second) + // it's possible autotime was changed while sleeping + if autotime < 1 { + break + } Autosave <- true } }() } - -func StopAutoSave() { - GlobalSettings["autosave"] = float64(0) -} From d1e713ce08ba15a59b62207109b4d6bca46c7a9f Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 4 Aug 2019 15:11:09 -0700 Subject: [PATCH 147/231] Add better matchbrace --- internal/action/actions.go | 11 ++++++--- internal/buffer/buffer.go | 42 +++++++++++++++++++++++++++-------- internal/config/runtime.go | 2 +- internal/config/settings.go | 3 +-- internal/display/bufwindow.go | 27 ++++++++++++++++++++++ runtime/help/options.md | 11 +++------ 6 files changed, 73 insertions(+), 23 deletions(-) diff --git a/internal/action/actions.go b/internal/action/actions.go index 8b6c76d2..f8b02b66 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -933,9 +933,14 @@ func (h *BufPane) paste(clip string) { func (h *BufPane) JumpToMatchingBrace() bool { for _, bp := range buffer.BracePairs { r := h.Cursor.RuneUnder(h.Cursor.X) - if r == bp[0] || r == bp[1] { - matchingBrace := h.Buf.FindMatchingBrace(bp, h.Cursor.Loc) - h.Cursor.GotoLoc(matchingBrace) + rl := h.Cursor.RuneUnder(h.Cursor.X - 1) + if r == bp[0] || r == bp[1] || rl == bp[0] || rl == bp[1] { + matchingBrace, left := h.Buf.FindMatchingBrace(bp, h.Cursor.Loc) + if left { + h.Cursor.GotoLoc(matchingBrace) + } else { + h.Cursor.GotoLoc(matchingBrace.Move(1, h.Buf)) + } } } diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index 5767445f..7fe65d24 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -651,16 +651,30 @@ var BracePairs = [][2]rune{ // It is given a brace type containing the open and closing character, (for example // '{' and '}') as well as the location to match from // TODO: maybe can be more efficient with utf8 package -func (b *Buffer) FindMatchingBrace(braceType [2]rune, start Loc) Loc { +// returns the location of the matching brace +// if the boolean returned is true then the original matching brace is one character left +// of the starting location +func (b *Buffer) FindMatchingBrace(braceType [2]rune, start Loc) (Loc, bool) { curLine := []rune(string(b.LineBytes(start.Y))) - startChar := curLine[start.X] + startChar := ' ' + if start.X >= 0 && start.X < len(curLine) { + startChar = curLine[start.X] + } + leftChar := ' ' + if start.X-1 >= 0 && start.X-1 < len(curLine) { + leftChar = curLine[start.X-1] + } var i int - if startChar == braceType[0] { + if startChar == braceType[0] || leftChar == braceType[0] { for y := start.Y; y < b.LinesNum(); y++ { l := []rune(string(b.LineBytes(y))) xInit := 0 if y == start.Y { - xInit = start.X + if startChar == braceType[0] { + xInit = start.X + } else { + xInit = start.X - 1 + } } for x := xInit; x < len(l); x++ { r := l[x] @@ -669,24 +683,34 @@ func (b *Buffer) FindMatchingBrace(braceType [2]rune, start Loc) Loc { } else if r == braceType[1] { i-- if i == 0 { - return Loc{x, y} + if startChar == braceType[0] { + return Loc{x, y}, false + } + return Loc{x, y}, true } } } } - } else if startChar == braceType[1] { + } else if startChar == braceType[1] || leftChar == braceType[1] { for y := start.Y; y >= 0; y-- { l := []rune(string(b.lines[y].data)) xInit := len(l) - 1 if y == start.Y { - xInit = start.X + if leftChar == braceType[1] { + xInit = start.X - 1 + } else { + xInit = start.X + } } for x := xInit; x >= 0; x-- { r := l[x] if r == braceType[0] { i-- if i == 0 { - return Loc{x, y} + if leftChar == braceType[1] { + return Loc{x, y}, true + } + return Loc{x, y}, false } } else if r == braceType[1] { i++ @@ -694,7 +718,7 @@ func (b *Buffer) FindMatchingBrace(braceType [2]rune, start Loc) Loc { } } } - return start + return start, true } // Retab changes all tabs to spaces or vice versa diff --git a/internal/config/runtime.go b/internal/config/runtime.go index f34df581..7690ddc3 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -972,7 +972,7 @@ func runtimeHelpKeybindingsMd() (*asset, error) { return a, nil } -var _runtimeHelpOptionsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\x5f\x8f\xe4\xb6\x91\x7f\x1e\x7d\x8a\xc2\x64\x81\x99\x36\x7a\x7a\x8d\xc4\x0f\x41\xbf\x18\x6b\xef\xdd\xda\xc8\xd9\x7b\x88\x37\x77\x0e\x92\x20\xa2\xa4\x52\x8b\x19\x8a\xd4\x91\x54\xf7\x6a\x0d\xdf\x67\x3f\x54\x15\x29\xa9\x7b\x7b\x66\x72\xc0\x9d\x1f\xbc\xd3\x12\x59\xac\xbf\xbf\xfa\x43\xfd\x06\xde\x0f\x51\x3b\x1b\x8a\xe2\x07\x5d\x7b\x07\x21\x3a\x8f\x01\x94\x31\xe0\x5a\x88\x1d\xc2\x18\xd0\x43\xed\x6c\xab\x0f\xa3\x57\xb4\x18\xb4\x05\x1d\xc3\xc5\xc3\x46\x7b\xac\xa3\xf3\xd3\x2e\xd3\x1a\x03\x06\x26\x51\xbe\xfa\xf9\xed\xbb\xbf\x7f\xfb\xfe\xc7\x7f\xfd\xfe\xdd\xdf\xbf\x7b\xff\xc3\xbf\xbc\xee\x69\x41\x09\x4a\xde\x3f\x45\x08\xde\x04\x18\xd0\x17\xb4\xe6\xe7\xb7\xef\x20\x0c\x58\x6f\x41\xb7\x9f\x13\x2c\x41\x07\xb0\x2e\x42\xc0\xb8\x85\xf2\xbf\x5f\xef\x84\x66\x3e\x48\x07\xe2\xa6\xa1\x03\x8b\xe5\xc4\x33\x9e\xbf\x43\x8f\xa0\x3c\x32\x47\x4e\xb4\x02\xb1\x53\x11\x26\x37\x42\xad\x2c\xd1\xde\x17\xc5\x17\x50\xaa\x31\x3a\x6d\x1b\xb4\xb1\xdc\xc3\xa9\x43\x0b\xb5\x47\x15\xb5\x3d\x80\x02\x8b\x27\x30\xda\xb2\xe2\x98\x56\x50\x3d\x82\x2c\x17\x01\x93\xd4\x05\x00\x0c\x1e\x8f\xda\x8d\x81\x77\xec\x8a\xe2\xa6\xc1\x56\x8d\x26\xc2\x51\x99\x11\xf7\x50\x46\x3f\x62\x39\x1f\x1a\xd4\x11\xcb\x3d\xb0\x50\x70\xd2\xc6\x00\x3d\x61\x6a\xd5\xd8\xb6\xe8\x01\x8f\xe8\x27\x28\x6d\x09\x01\x6b\x67\x9b\x00\xb4\xaf\x57\x51\xd7\xca\x98\x89\xce\xbc\x3f\x75\x24\x2a\xad\xd1\xc2\x09\x1f\x96\xed\x2d\xa2\x6f\x76\x20\x46\x54\x26\xa4\xa3\x3e\x23\xc4\x67\x2b\xdb\xc0\x7f\x8d\x3a\x8a\x1e\x48\x55\xf8\x91\x7e\xe9\xd8\xb9\x31\x82\x0a\x8f\xda\x1e\x76\xf0\x0d\x42\xad\x3c\xb6\xa3\x91\x85\x63\x20\x6d\xc5\x4e\x07\xa2\xd4\xa2\x8a\xa3\xc7\x2d\x54\x58\x2b\xd2\x1b\xd1\xe9\xf5\xa1\x8b\xa0\xea\x5a\xb3\xea\x8c\x99\xd2\x89\xd0\x6a\x83\x5b\x70\x47\xf4\x27\xaf\x59\xed\xa7\x4e\x45\x22\x74\x12\xdd\x7a\x84\x0a\x5b\xe7\x71\x07\xdf\xb7\x4f\x89\x48\xd2\x97\x5f\x96\xf4\xc4\xae\x54\x4a\x64\xc8\x93\xb2\xbe\xaf\x59\xe5\x4b\x31\x49\xa5\x02\x5a\xd5\x93\x49\xb4\x65\xca\xda\xb6\xae\x52\x7e\x0b\xa1\x73\x27\x70\xd6\x4c\x62\x9c\xb4\x30\x33\x40\x02\x40\x85\xc4\x39\x36\x3a\x62\x43\x87\x7a\x45\x9c\x93\xcb\x09\xad\x76\x34\x06\x06\x15\xbb\x5d\x41\xaf\xe1\x92\x89\x56\x99\x90\x7c\xa3\x76\xc6\xf9\xda\x99\xb1\xb7\xc4\x4b\xcb\x8a\x5d\x85\x04\x44\x07\x5f\x6e\x81\xed\x62\x0c\x34\x3a\x0c\x46\x4d\xa0\x40\xf6\x80\x8a\x74\x62\x01\x1c\x61\xba\xd5\xd8\xa4\x37\x3b\xf8\x90\x28\x8d\x81\x8d\xa7\x5b\xb6\xcd\x49\xd9\x98\x37\xff\xfe\x4b\x22\x5f\x21\x74\xfa\xd0\x19\x32\x1a\xcb\xc3\xa4\x94\x81\xd6\x79\xc0\x8f\xaa\x1f\xcc\x73\xaa\x64\x09\x42\xdd\x21\x6b\xd3\x38\xd5\x64\x68\x98\x9f\x0b\x36\x35\xa4\x6a\xd2\xc7\xab\x7b\x09\xe2\xb7\xda\x6f\x5e\xaf\x96\x85\xd7\xa5\xd8\xb7\xdc\xb1\x51\xb7\x22\x42\xc0\xc8\x9e\x42\x46\x3f\x18\x57\x29\xc3\xe6\x29\xaf\xf1\x94\x7e\x97\x45\x71\xf3\xa3\x8b\x28\x28\x40\xdc\xe4\x85\xeb\xe3\xe0\x3e\x3d\xdd\x42\x70\x46\x79\xfd\x09\x9b\x2d\x87\xc5\xfc\xf3\x21\xd6\x9b\xe2\x86\xb0\x85\xec\x61\x5c\xad\xa2\xc8\x31\x4b\xb0\x78\x7e\xec\x70\x62\x18\xc2\xbe\xc2\xa6\x91\x75\x74\xb6\x78\x68\xa5\xad\x62\xb8\xba\xf9\x70\xa1\x1d\x42\xa8\x0a\x21\xa0\xc1\x9a\xc8\xb7\xde\xf5\x8c\xe3\xd9\xe1\x42\xa6\x54\xdc\x5c\xe0\xe3\xb9\xfa\xd6\x00\x2c\x18\x50\x3b\x92\xb3\x9a\x66\xf9\x29\xba\x21\x76\x1e\xb1\xb8\x59\xef\xdd\x17\xc5\xcd\x9f\x13\x5a\x7a\x54\x0d\xf4\x8e\x40\xb5\x22\x24\xe0\x93\xee\xc2\xb9\xee\x12\x47\xc9\xfc\x25\x74\x68\x06\x88\x6e\xd0\x75\x71\x73\x5f\xf2\xaf\xf4\x6a\xb3\x13\x3f\x19\x7d\x70\x9e\xd0\xb2\xdc\x2f\x0e\xc7\x44\x18\x74\x67\x53\xc9\x42\x32\xb7\x24\x2c\x05\x8d\x26\x84\x44\x9b\xcc\xc7\x50\x38\xbb\x18\x2d\x6c\xb0\xd5\x16\x1b\x12\xf4\xd2\xf5\xc8\xe7\xc9\x28\x0c\x5b\x9b\xe7\x81\x1a\x6d\xed\x1a\x6d\x0f\xe5\x9e\xc9\xe4\x9f\x14\x24\x6e\x40\x2b\xae\x41\x40\x26\x46\x21\x5d\xee\xe0\xa7\x71\x18\x9c\x27\xbb\xe5\xf5\x0c\x8c\x74\xa6\xd1\x81\x9e\xab\x08\x5d\x8c\x43\xd8\xbf\x7e\x7d\x3a\x9d\x76\xa7\xdf\xed\x9c\x3f\xbc\xfe\xf0\xc7\xd7\x79\xc3\xeb\x27\x70\x62\x8c\xed\xc3\xef\x13\x6b\xae\xb5\x78\x4a\xda\x5b\x65\x91\x33\x68\x07\xd5\x34\x92\xc7\x44\xa3\x6e\xf6\xa0\x6b\x72\xaf\x50\xa8\x55\x21\x36\xda\xc7\x89\x25\x67\x85\x46\xf4\xbd\xb6\x24\x25\xd9\xe5\x51\xdb\x86\x20\x50\x99\x83\xf3\x3a\x76\x7d\xe2\x41\x0a\x05\xb7\xac\x07\xdd\xb2\xf4\x39\xab\xe9\x00\xbd\x6b\x04\x98\x9c\xa7\x28\xda\xc1\x7f\x12\x6c\xaf\xce\x14\x53\x6f\x13\xc9\x7f\x8c\x21\x0a\x5d\x45\x94\x2a\xe7\x0c\x2a\x0b\x65\x26\x53\x8a\xa7\x08\x30\xd0\xd9\x62\x40\xca\xcd\xc1\x2d\x39\x9a\x8b\x9f\x5e\x3d\x12\x1d\xcb\x58\xbd\x23\x72\x19\x14\xe9\xf4\x2d\x54\x63\xcc\xd1\xa7\xad\xaa\x6b\x2a\x64\x24\xf3\x5c\xb2\xd7\xb6\xdb\x6b\xe9\xa6\x53\xa1\xcb\x4e\xcb\x0e\x9a\xc4\x56\x07\xa5\x6d\x88\xa0\x64\x45\xce\x5e\x5e\x1f\xb4\x25\x64\xa5\x2c\x72\xcf\xa5\x07\x36\x92\x56\x05\xc5\xf3\x7e\xca\x86\x04\xa5\xd8\x6c\x16\x20\x97\x90\x4c\x5c\x32\xef\xae\xe2\x1a\xc4\x4c\xf2\xce\x63\x70\xa3\xaf\x99\x90\xb6\x11\x6d\xd0\x47\x4c\xfb\x97\xcc\xc9\xb9\x8d\xb0\x7d\x40\x37\x18\x84\x53\xe7\x28\xe4\xc9\x7f\x28\xd1\xa7\xa0\xef\xd4\x51\xdb\x03\xdb\x32\x9f\x38\x1b\x32\x44\x15\xc7\xf0\x7c\x2c\x91\x88\xad\xf3\xbd\x8a\x2f\xf9\x14\xfb\x2a\x5a\x8e\x9c\xb5\x6b\x13\xa6\x12\x9b\x49\x33\xec\xc6\xf0\xa7\x1f\xbf\xff\xf9\x7c\x07\xb1\xcc\x3e\x53\xfe\xd5\x96\x70\x6f\xda\x0d\x70\x99\xa4\x02\x34\x2e\x7c\xb6\x96\x48\x95\x7f\xf5\xbc\xb6\xf6\xa6\x65\xfd\x22\xc4\x93\x83\xc1\x85\xa0\x2b\x93\x4a\x8e\x90\x0e\x5f\x74\x47\x27\x95\xa3\xd5\x1f\x4b\x46\x82\xb2\x71\xa1\x4c\x4e\x25\x51\x26\xf2\x0a\xf7\x15\x5e\xc4\x26\x89\xcf\xf0\x4e\x7b\x53\x1e\xa7\xa0\x10\x1c\x15\x95\x12\xb3\xe2\x05\xf1\xec\xe4\xcf\xb3\xb8\x1b\x4d\x03\x46\x3f\x72\x94\xd7\x9d\xb2\x07\x5c\xa0\x34\x8b\x4b\xe0\xc8\xe1\x98\x41\x30\x44\xe5\x57\xc5\xee\x53\xc8\xc0\x32\xce\x56\x8c\xd3\x40\xa0\x13\x30\x86\x19\x4f\xe8\x59\x36\xce\x85\xef\xef\x2e\xb3\x36\x6b\x9c\x52\xe7\xd3\x79\x9b\x65\xbd\xae\x36\x0a\xf2\x06\x07\x11\x29\x6b\x8b\xe3\x87\x84\xea\xd4\x11\x8b\x1b\x02\x67\x66\x57\x1f\xac\xf3\x58\xab\x40\x0c\x0f\xe8\xc9\x20\x40\x3f\x1f\xb4\x0d\x14\x0e\x51\x1f\x29\xd1\x2a\x5f\x77\x78\xd5\x81\x57\xa0\x28\x85\x7f\xdd\x29\xbf\x96\x7e\xdd\x0e\xd0\x3b\x55\x47\xf4\xd7\x28\x41\xa6\xc2\x75\x65\xb9\x07\xb4\xaa\x32\xa9\xaf\x62\x33\xa5\x7c\x57\xb9\x18\x5d\x9f\x31\x82\x90\xca\x79\x71\x61\xe8\x31\x04\x75\xc0\xd9\x71\x07\x4f\x61\xdd\x7c\x16\xd2\x2f\xd6\x45\x4b\x5c\x3e\x22\x0e\x9f\x77\x41\x52\xd4\x2f\xcf\xb7\x70\xea\x74\xc4\x30\xa8\x1a\xe9\x00\xc5\xf5\x0c\x19\x7c\x72\xa3\x1c\x4f\xfc\x24\x0e\x56\x91\xad\xdb\xa5\x9d\xe8\xdd\x71\x4e\x42\x16\x3f\x46\x91\x7a\xee\x2f\xec\x04\x64\x15\x2f\x5d\x2c\x00\xaf\x5b\x1d\xcb\x30\x4f\x40\x28\x87\x87\x8e\x7d\xbe\xa2\x5a\xce\x20\x6b\xe1\x9b\xa5\xae\xa1\xbd\x0b\xfb\xdc\x50\x9c\x09\x90\xf6\x48\x85\x9d\xf4\xcf\x20\x8b\x6d\x04\xec\x87\x38\xbd\xe0\x0d\x8f\x38\xf5\x68\xc7\x72\x3f\xd7\xe0\x2c\x96\xb2\xee\x21\xc4\xc9\x20\x3c\xe2\x04\xb4\xe2\xba\x59\x43\xed\x11\xed\x0e\xa8\x2a\x15\x59\x55\x84\x0f\xee\x70\x30\xf8\x07\x9c\x7e\xa0\x7d\x3a\x40\xe5\x46\xdb\x70\x4e\x7b\x63\xe2\xc3\xa1\x5c\x57\x6e\x04\x1b\xb9\x39\x58\xe0\x43\xdb\xac\xb9\x05\x41\x76\xf0\xc1\xd1\x12\x72\x37\xde\xb2\x85\xa0\xfb\xc1\x4c\x44\x2e\x53\xa6\x43\xfe\x64\x2b\x6d\x9b\x3f\xe0\x75\x9f\x59\x09\xdf\xab\x58\x77\x95\x57\xf5\x79\xed\xc6\x8f\xc9\x71\xf8\x95\x00\xe6\xdd\xfd\xe6\x6e\x0b\x77\xbf\xfc\x4a\xff\xff\xcb\xdf\xee\x5e\xec\x80\x16\xda\x64\x8b\xec\x90\x33\x69\x05\xb5\x71\x61\x3e\x64\x9b\xfd\x60\x5e\xc0\x7f\xcc\xe9\x93\xd6\xa4\x32\xd8\x4c\x30\xda\x06\xfd\xaa\xa8\xdc\x42\x86\xac\x1c\xb9\xd9\x3f\xe9\xec\xaf\x25\x35\xf6\x2a\x46\xf4\xec\x91\xba\x3d\x93\x9d\xbb\x6e\x3f\xe2\xcb\x32\x3d\x0e\x8a\x20\x31\x48\x4f\x27\x7d\x2f\xe7\xde\x01\xad\x80\xbe\xe2\x06\x51\xfc\xa0\x71\x28\x0d\x1f\x7e\xd4\x54\x96\xcc\x10\x57\x2b\x6b\x1d\x7b\x33\xf5\x07\xea\x48\x25\xee\xd2\x6d\x80\x1c\x32\x57\xfd\x1a\x29\xe5\xd9\xbb\x44\xe7\x1c\x25\x0c\x01\x18\x67\x57\xce\xe9\x67\x18\x2b\x85\xc8\x53\x24\xb5\x85\x30\xd6\x1d\x28\x08\x3a\x8e\x8c\x7c\x2f\xf7\xb5\xbd\x1b\x19\x84\x4f\x1d\x4a\x6f\xec\x12\xfe\x01\xbf\x81\x20\x55\x73\x2a\x06\xcf\x9e\x25\x07\xa7\xc5\xcd\x96\xce\x19\xc3\xc8\x6c\x12\x7f\x02\x34\xca\x2c\xd9\x82\x9d\xdc\x51\x95\x82\x21\x24\x4a\x78\x24\xe5\x13\x04\xd4\x5d\x2e\xf0\x24\x81\x26\xab\xce\x9d\x30\x65\x4f\x37\x4c\xd2\x73\x9d\x1d\x40\xf5\x1b\x35\x42\xae\x95\x97\x52\x99\xdc\xeb\x96\xc7\x17\x10\x42\x47\xfe\x4e\xf4\x52\x8f\x7c\xd6\x09\x2e\x74\x3a\x42\x30\x61\x2e\xfb\x1a\xe7\xc2\xda\xe8\xa1\x72\xca\x4b\x41\x30\x5b\x26\xfb\xc2\x0b\xad\x8a\xef\xa3\x57\xda\x68\x7b\x38\x85\xe7\x3a\x82\xe8\x75\x0f\x79\xe9\x0a\x13\x03\xc1\x14\x3a\xf3\x42\xe0\xfb\xd1\xa0\x5f\x61\x1e\xe3\xa6\x1d\xfb\x0a\xfd\x0b\xf5\x1f\x79\xab\x04\x5d\xb9\x07\x8f\x3d\x35\xc5\x39\xad\xad\xba\x3c\xc6\x60\x15\x22\x44\xdd\xe3\xe2\xf8\xf4\x38\xc5\x8a\xb2\x3c\x63\x19\xc6\x08\x3a\xa6\x11\xd1\x9c\x62\xb8\x2d\x9b\x77\x71\xd5\xfd\x82\x44\xc4\x57\xa7\x03\x35\xc9\x6b\xc6\x6a\xd7\xf7\x64\x87\xf4\x0a\x2a\x8c\x27\x44\x3b\x83\x0f\xbd\xf3\xf8\x40\xe7\xa5\xb2\x98\x55\xfe\x44\x20\x9c\xab\x61\xb4\x8d\xcb\xb8\x16\x2f\x6b\xf1\x2d\x81\x94\xe3\x76\x86\xe3\x9b\x5c\x17\x54\x4b\xd0\xc4\xd3\x4b\xe3\x42\x1e\x9c\xf1\xe4\xce\x65\xf7\x4d\x6f\x98\x2f\xe9\x4e\xd3\x74\x2d\x0f\x3d\x29\xd3\x33\x71\x6d\x0f\x2f\x29\xa5\xf6\xce\x18\x29\x53\x96\x11\x93\x3c\x85\x4a\xf9\x17\xc3\x5d\x96\xf6\xca\x1f\xb4\x2d\xf7\xa0\x7a\x37\xda\x98\x8b\xfb\x70\xa5\x64\x0d\xc8\x8d\x46\x1a\x43\x56\x68\xdc\x29\x63\xb8\x78\xc6\x35\x8e\x7f\xb7\x3e\x2c\x0c\x88\xcd\x95\xb3\x88\xb8\x30\x4e\xe9\xc8\x59\xcc\x3f\x19\x14\xae\x91\xfd\x6d\x22\xdb\x2b\x1f\x07\x15\x22\x57\xbb\x29\xcb\xc8\x24\xb5\x69\xc0\xa0\x6a\xce\x43\x48\x0c\x4a\x1b\x38\x0d\x8d\x26\x6a\x6a\xa7\x98\x8b\xaf\xe7\x5e\x53\x62\x32\x46\xaa\x31\x88\xb7\xc1\x63\x40\x7f\xc4\xb3\xca\x79\x5d\x54\x1a\x3c\xa2\x39\xa7\xad\x38\xc9\x8f\x56\x96\x51\x12\x30\xae\x7e\x7c\x21\xfe\x5c\x1b\x4f\x5e\x0d\x97\xb2\xd0\xb3\xac\x29\xca\x3d\x3c\x37\x77\x0e\x8c\x93\x41\x47\xab\xe3\xdc\x93\x48\xcd\xf2\x82\xeb\x0c\x46\x47\xa9\x75\xb2\x8f\x2b\xe8\x9c\xd7\x9f\x9c\x8d\xca\x00\xbf\x27\xf7\x4e\xdd\xee\x9c\xc0\x75\x24\x54\xce\x3d\x30\x7b\x40\x2e\x65\xb2\x5a\x78\xef\xd7\xcf\x8b\x49\x4b\x3c\x55\x23\xcb\xe9\x47\xaa\x29\xeb\x7f\xfe\x6c\x81\x65\x1e\xe4\x72\x59\x93\x4a\xb6\xff\x0d\x17\x5c\x7b\x49\xfb\x67\xca\x3d\xa4\x46\x30\x44\x4f\xe6\xe3\xe9\x94\x66\xe3\xe6\x96\x89\xca\x8d\x07\xea\x5a\xa5\xa1\x1e\x94\xcf\xc7\x72\x90\xaf\x4a\xb9\x9f\xd2\x30\x56\x32\xb2\x3e\x62\x58\x55\xc2\x83\x51\x35\x17\x81\x41\x37\x08\xe5\xab\xfb\x4d\x39\xef\xe0\x64\xb2\x6c\xd2\xb6\x36\x63\xc3\xc6\xd3\x46\x66\xdf\xdb\xd5\x50\x65\x0b\x25\x0f\x97\xb6\x3c\xd1\xa3\x7f\xdc\x10\xe9\x1f\xaa\x10\x97\x2e\x97\x9f\x4a\xf7\xcb\x2f\xd6\x27\x44\xf5\x88\x80\x9a\xd3\xbd\xb2\x19\xe4\x1c\xff\x50\xb5\x74\xd0\x84\x6b\x27\xe5\x19\xd1\x89\x4a\x4b\xd1\x91\x46\x89\xd7\x06\xfd\x49\x5d\x54\x5b\xcf\xb5\x31\x97\xfa\xf5\x33\x65\xc8\xab\xfb\x2c\xe2\x06\x5e\xdd\x67\x11\x37\xf7\xaf\xee\x49\xc4\xcd\xf6\xd5\x7d\xed\xcc\x86\xde\xb9\x21\xee\x73\x3b\xbb\x61\x5a\x97\xff\x2d\x6b\xc4\xa6\x79\x57\x1e\xdd\x6d\xfe\xbf\x1d\xe0\x29\x11\x49\xfd\xfb\xb3\x06\x62\xb3\x97\xbb\x0b\x7a\x43\xed\xff\x16\xce\x56\x7d\x87\x66\xd8\xec\xaf\x0a\x19\x79\x01\x8f\x70\xd7\xe2\xa4\x69\xe3\xba\xdf\x91\x17\xcf\xb4\xaf\x4f\x63\xc6\x2a\x5a\xc6\xba\x27\xe4\xce\x57\x16\xd2\x12\x87\x71\x40\x9f\xef\x2c\x39\x19\xef\xe0\x3d\x95\x86\x21\x42\x98\x42\xc4\x3e\xcc\xfd\xcf\x6d\x18\x1b\x77\x0b\xd5\xc8\xb5\xb1\xb3\xf0\xcd\x4f\x6f\x29\xa8\x53\xa9\x77\xdb\x38\x15\x76\xb7\x67\xf5\x6f\x7a\x55\x8f\x21\xba\x5e\x7f\x4a\x73\x98\x3c\x0e\xe3\x2b\x46\x82\x8f\x74\x3b\xc6\x48\xaf\x63\x07\x61\xbc\x26\x0b\x1d\x9f\x64\x99\x6c\x54\x1f\xcb\x3d\xc4\xd1\xdb\x00\xf2\x13\xc4\x73\x5d\xdb\x3e\xaf\x88\xa8\x2a\xea\x91\x7b\x69\xc4\xad\x3a\xea\x03\xd5\xe1\x4b\x81\xc6\xfa\xc5\x83\xb6\x96\x87\x1f\x39\xc5\xa9\x90\xfa\x58\xb9\x6f\x88\xaa\xe2\x6e\xe5\x1e\x77\x87\x9d\x74\xdd\x5c\xa2\x7e\xb5\xa2\xe4\x6c\x8d\x9b\xf3\x8e\x80\x05\xe7\x72\x53\xd9\x29\x72\x2f\x25\xd3\x22\xe2\x2b\x44\x27\x9b\xd3\x74\xf6\x85\x2c\x40\x3b\xf4\xa7\xb3\x31\x51\x54\x15\xd0\x33\xee\x34\xd3\xbd\xce\x15\x22\x5f\x2d\x04\xe6\x23\xf7\x3c\xfb\x4b\xcc\xaf\xea\x70\x16\xf4\x79\x3e\xd0\xf7\x51\x47\xc3\x7e\xcb\x97\x02\x61\x6e\x41\x64\xfc\x4c\xb5\x88\x9f\xab\xf3\xbb\x00\xbc\x7c\x6e\x27\x02\x46\xea\x92\xe7\x72\x9c\x53\x8a\x54\xa2\x2f\xa8\x60\x0c\x38\x78\xdd\x2b\x3f\x95\x70\x9f\x9d\xaa\x1d\x0d\x39\xc3\x17\x56\x7f\xdc\x3c\xc9\xd1\xc5\xcc\x33\x61\x40\x22\xb6\xea\x13\x72\xaf\x22\x17\x45\x7c\xcb\x9d\xa0\xb3\x52\xf5\xe3\xc1\x13\x40\x26\x13\xcf\x1d\xa5\x6a\x5b\xac\x63\x4e\xac\x96\x60\x69\xdd\x7a\xc8\xdc\xe7\xdb\xe8\xcd\xc3\xb7\x1c\x10\xfc\xe7\x7f\x3c\xe3\xb6\x0f\x0f\x0f\x45\xf1\x36\xbd\x1b\xcc\x78\xd0\x19\xea\xc3\x72\xc5\xce\xb5\x29\xd5\x66\xe7\x6d\x26\x57\xac\xe5\x2f\xbf\x96\x50\xde\x6f\x4a\x28\xff\xf2\xb7\x12\xca\xdb\xdb\x12\xca\xbb\xbb\x72\x07\xff\xee\xdd\x51\x37\xf3\x35\x0e\xbb\xe2\x42\x2d\x1d\xf6\xfc\xd0\x39\x26\x56\xca\xfd\x6a\x74\xb2\x3d\xbb\x76\xc7\x08\xc1\xf5\xcb\x87\x02\x95\x0a\xcb\x18\x36\x27\x83\x1d\xbc\x99\x95\xd6\xbb\x9e\x27\x62\x97\x66\x52\x95\x4c\x3c\x7a\xf5\x88\x72\x21\xc4\xf7\x43\xc3\x3c\x0a\x19\xa6\xd8\x39\xb9\x35\x9a\x54\x6f\xf2\x10\x3b\x80\xc7\x83\xf2\x8d\xa1\x96\xd0\xb5\xe2\x90\x69\x5c\x1a\xf8\xf2\xe1\xf3\x72\x79\x3d\xcd\x81\x0a\x3b\x75\xd4\xd2\x7b\x12\xec\x9c\x35\x15\x2f\x82\x8e\xd1\x36\x72\x4f\xf7\xe6\xcc\x38\xf4\x78\xbe\x89\x98\xe7\x15\xdc\x93\x7c\x66\x99\x99\x08\xfb\x29\x9b\xe5\x99\x33\xdf\xd8\x29\x33\x47\x82\x91\x01\x92\xdb\xe6\x59\x67\x8e\x3d\x6e\x80\x56\xb7\x56\x50\x5c\x5e\x77\xce\x6a\xfa\x47\x70\x16\x82\xdb\x12\x29\x64\x1f\xdf\x8a\x22\xcf\xbf\x48\x91\x66\x32\xd1\x2f\x72\xc1\x37\xcf\x31\x45\xd7\x77\x8b\x9e\xb9\x86\xb9\x42\x87\x73\x01\x71\x1f\x1d\x28\xeb\x28\x7a\x8b\x5e\xd5\x9d\xb6\x38\x0f\xd7\x38\x36\x39\x93\x9d\x31\x99\xe4\xe1\x3d\x90\xf6\xec\x8a\xa2\xf8\xcd\x6f\xe0\x9d\x4c\x6d\xc9\x41\x64\x26\x90\x77\x16\xc5\x9f\x97\x2f\x57\x68\x7b\x58\xa8\xe6\x12\x4b\x46\xbe\x66\x22\x14\xe1\xdd\x66\xda\xc1\xbf\xc9\x1f\xd0\xa3\xca\xdf\xc0\x50\x24\xe5\x61\xfc\x89\xa7\x43\x6b\x55\x5f\x7e\x70\x73\xae\xe1\x32\x4d\x1d\x55\x9c\xbf\x40\x20\x64\x2b\x12\x50\x26\x33\x5e\xce\xff\x7f\x4a\xa7\x2d\x45\xe0\xcc\x6b\xfa\x6c\x65\x0e\x4c\x6a\xee\xe7\xb0\x5c\x7f\xe0\x61\xf9\x02\x5c\x28\x86\x5d\x51\x7c\x58\xee\x9a\xe5\x53\x83\x55\x13\xbd\x1a\x7e\x6f\x13\xc3\xb8\xba\xba\x58\xad\x64\x3d\x15\xb4\x90\x67\xa4\x74\xe8\xc2\x64\x52\xe2\x96\xa3\xbb\x0c\x18\xf9\x41\xb9\x4e\x40\xf4\xb4\xdc\x15\xc5\xf7\xe9\xf2\xfb\x42\x59\xf3\xb5\x04\x59\x8e\x3f\xbf\x19\x46\xf9\x8a\x23\x83\x4d\x3a\x83\xe2\x48\xaa\x9f\x89\xbf\x24\x61\x8b\x16\x8a\x25\xe1\x8a\x79\x05\x44\xfc\x75\x93\x96\x5b\x4c\x19\x34\xa5\xb9\x56\xa7\xc2\x65\xaa\x4e\x05\x26\xa9\x4e\x90\x06\x3f\xd6\x38\x44\x78\xe7\x0a\xfe\x2d\xea\x99\xb3\x35\x7c\x75\x7d\xf9\x1f\xc7\x6a\x92\x27\xfb\xa2\x28\xcb\x92\xa4\x2b\x7e\x29\x6e\x6e\xdb\xb8\x3f\xb8\xdb\x3d\xfc\x52\xdc\xdc\xdc\xae\x8f\xbe\xdd\x03\xa7\xc2\xe2\xe6\xd7\xad\xac\xf3\x63\x35\xad\x57\xea\x4f\x78\xbb\x87\xdf\xa6\x05\x17\x7b\x09\x29\xf2\x63\x59\xf8\x55\xf1\x2b\x9d\x5c\x14\xef\x3d\xc5\x97\x36\xca\x9b\x69\xd6\xad\xcc\x7c\x39\x28\x49\x65\x97\x6c\x7e\xb1\xfb\xa7\xb8\xfc\x62\xe7\xab\xff\x03\x16\xff\x27\x00\x00\xff\xff\xff\x0a\x4b\x21\x8a\x27\x00\x00" +var _runtimeHelpOptionsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\x5f\x8f\xe4\xb6\x91\x7f\x1e\x7d\x8a\xc2\x78\x81\x99\x36\x7a\x7a\x8d\xc4\x0f\x41\xbf\x04\x6b\xef\xdd\xda\xc8\xd9\x7b\x88\x37\x77\x0e\x92\x20\xa2\xa4\x52\x8b\x19\x8a\xd4\x91\x54\xf7\x6a\x0d\xdf\x67\x3f\x54\x15\x29\xa9\x7b\x7b\x66\x72\xc0\x9d\x1f\xbc\xd3\x12\x59\xac\xbf\xbf\xfa\x43\x7d\x01\xef\x87\xa8\x9d\x0d\x45\xf1\x83\xae\xbd\x83\x10\x9d\xc7\x00\xca\x18\x70\x2d\xc4\x0e\x61\x0c\xe8\xa1\x76\xb6\xd5\x87\xd1\x2b\x5a\x0c\xda\x82\x8e\xe1\xe2\x61\xa3\x3d\xd6\xd1\xf9\x69\x97\x69\x8d\x01\x03\x93\x28\x5f\xfd\xfc\xf6\xdd\xdf\xbf\x7d\xff\xe3\xbf\x7e\xff\xee\xef\xdf\xbd\xff\xe1\x5f\x5e\xf7\xb4\xa0\x04\x25\xef\x9f\x22\x04\x6f\x02\x0c\xe8\x0b\x5a\xf3\xf3\xdb\x77\x10\x06\xac\xb7\xa0\xdb\xcf\x09\x96\xa0\x03\x58\x17\x21\x60\xdc\x42\xf9\xdf\xaf\x77\x42\x33\x1f\xa4\x03\x71\xd3\xd0\x81\xc5\x72\xe2\x19\xcf\xdf\xa1\x47\x50\x1e\x99\x23\x27\x5a\x81\xd8\xa9\x08\x93\x1b\xa1\x56\x96\x68\xef\x8b\xe2\x4b\x28\xd5\x18\x9d\xb6\x0d\xda\x58\xee\xe1\xd4\xa1\x85\xda\xa3\x8a\xda\x1e\x40\x81\xc5\x13\x18\x6d\x59\x71\x4c\x2b\xa8\x1e\x41\x96\x8b\x80\x49\xea\x02\x00\x06\x8f\x47\xed\xc6\xc0\x3b\x76\x45\x71\xd3\x60\xab\x46\x13\xe1\xa8\xcc\x88\x7b\x28\xa3\x1f\xb1\x9c\x0f\x0d\xea\x88\xe5\x1e\x58\x28\x38\x69\x63\x80\x9e\x30\xb5\x6a\x6c\x5b\xf4\x80\x47\xf4\x13\x94\xb6\x84\x80\xb5\xb3\x4d\x00\xda\xd7\xab\xa8\x6b\x65\xcc\x44\x67\xde\x9f\x3a\x12\x95\xd6\x68\xe1\x84\x0f\xcb\xf6\x16\xd1\x37\x3b\x10\x23\x2a\x13\xd2\x51\x9f\x11\xe2\xb3\x95\x6d\xe0\xbf\x46\x1d\x45\x0f\xa4\x2a\xfc\x48\xbf\x74\xec\xdc\x18\x41\x85\x47\x6d\x0f\x3b\xf8\x06\xa1\x56\x1e\xdb\xd1\xc8\xc2\x31\x90\xb6\x62\xa7\x03\x51\x6a\x51\xc5\xd1\xe3\x16\x2a\xac\x15\xe9\x8d\xe8\xf4\xfa\xd0\x45\x50\x75\xad\x59\x75\xc6\x4c\xe9\x44\x68\xb5\xc1\x2d\xb8\x23\xfa\x93\xd7\xac\xf6\x53\xa7\x22\x11\x3a\x89\x6e\x3d\x42\x85\xad\xf3\xb8\x83\xef\xdb\xa7\x44\x24\xe9\xcb\xaf\x4a\x7a\x62\x57\x2a\x25\x32\xe4\x49\x59\xdf\xd7\xac\xf2\x95\x98\xa4\x52\x01\xad\xea\xc9\x24\xda\x32\x65\x6d\x5b\x57\x29\xbf\x85\xd0\xb9\x13\x38\x6b\x26\x31\x4e\x5a\x98\x19\x20\x01\xa0\x42\xe2\x1c\x1b\x1d\xb1\xa1\x43\xbd\x22\xce\xc9\xe5\x84\x56\x3b\x1a\x03\x83\x8a\xdd\xae\xa0\xd7\x70\xc9\x44\xab\x4c\x48\xbe\x51\x3b\xe3\x7c\xed\xcc\xd8\x5b\xe2\xa5\x65\xc5\xae\x42\x02\xa2\x83\xaf\xb6\xc0\x76\x31\x06\x1a\x1d\x06\xa3\x26\x50\x20\x7b\x40\x45\x3a\xb1\x00\x8e\x30\xdd\x6a\x6c\xd2\x9b\x1d\x7c\x48\x94\xc6\xc0\xc6\xd3\x2d\xdb\xe6\xa4\x6c\xcc\x9b\x7f\xf7\x15\x91\xaf\x10\x3a\x7d\xe8\x0c\x19\x8d\xe5\x61\x52\xca\x40\xeb\x3c\xe0\x47\xd5\x0f\xe6\x39\x55\xb2\x04\xa1\xee\x90\xb5\x69\x9c\x6a\x32\x34\xcc\xcf\x05\x9b\x1a\x52\x35\xe9\xe3\xd5\xbd\x04\xf1\x5b\xed\x37\xaf\x57\xcb\xc2\xeb\x52\xec\x5b\xee\xd8\xa8\x5b\x11\x21\x60\x64\x4f\x21\xa3\x1f\x8c\xab\x94\x61\xf3\x94\xd7\x78\x4a\xbf\xcb\xa2\xb8\xf9\xd1\x45\x14\x14\x20\x6e\xf2\xc2\xf5\x71\x70\x9f\x9e\x6e\x21\x38\xa3\xbc\xfe\x84\xcd\x96\xc3\x62\xfe\xf9\x10\xeb\x4d\x71\x43\xd8\x42\xf6\x30\xae\x56\x51\xe4\x98\x25\x58\x3c\x3f\x76\x38\x31\x0c\x61\x5f\x61\xd3\xc8\x3a\x3a\x5b\x3c\xb4\xd2\x56\x31\x5c\xdd\x7c\xb8\xd0\x0e\x21\x54\x85\x10\xd0\x60\x4d\xe4\x5b\xef\x7a\xc6\xf1\xec\x70\x21\x53\x2a\x6e\x2e\xf0\xf1\x5c\x7d\x6b\x00\x16\x0c\xa8\x1d\xc9\x59\x4d\xb3\xfc\x14\xdd\x10\x3b\x8f\x58\xdc\xac\xf7\xee\x8b\xe2\xe6\xcf\x09\x2d\x3d\xaa\x06\x7a\x47\xa0\x5a\x11\x12\xf0\x49\x77\xe1\x5c\x77\x89\xa3\x64\xfe\x12\x3a\x34\x03\x44\x37\xe8\xba\xb8\xb9\x2f\xf9\x57\x7a\xb5\xd9\x89\x9f\x8c\x3e\x38\x4f\x68\x59\xee\x17\x87\x63\x22\x0c\xba\xb3\xa9\x64\x21\x99\x5b\x12\x96\x82\x46\x13\x42\xa2\x4d\xe6\x63\x28\x9c\x5d\x8c\x16\x36\xd8\x6a\x8b\x0d\x09\x7a\xe9\x7a\xe4\xf3\x64\x14\x86\xad\xcd\xf3\x40\x8d\xb6\x76\x8d\xb6\x87\x72\xcf\x64\xf2\x4f\x0a\x12\x37\xa0\x15\xd7\x20\x20\x13\xa3\x90\x2e\x77\xf0\xd3\x38\x0c\xce\x93\xdd\xf2\x7a\x06\x46\x3a\xd3\xe8\x40\xcf\x55\x84\x2e\xc6\x21\xec\x5f\xbf\x3e\x9d\x4e\xbb\xd3\x6f\x77\xce\x1f\x5e\x7f\xf8\xe3\xeb\xbc\xe1\xf5\x13\x38\x31\xc6\xf6\xe1\x77\x89\x35\xd7\x5a\x3c\x25\xed\xad\xb2\xc8\x19\xb4\x83\x6a\x1a\xc9\x63\xa2\x51\x37\x7b\xd0\x35\xb9\x57\x28\xd4\xaa\x10\x1b\xed\xe3\xc4\x92\xb3\x42\x23\xfa\x5e\x5b\x92\x92\xec\xf2\xa8\x6d\x43\x10\xa8\xcc\xc1\x79\x1d\xbb\x3e\xf1\x20\x85\x82\x5b\xd6\x83\x6e\x59\xfa\x9c\xd5\x74\x80\xde\x35\x02\x4c\xce\x53\x14\xed\xe0\x3f\x09\xb6\x57\x67\x8a\xa9\xb7\x89\xe4\x3f\xc6\x10\x85\xae\x22\x4a\x95\x73\x06\x95\x85\x32\x93\x29\xc5\x53\x04\x18\xe8\x6c\x31\x20\xe5\xe6\xe0\x96\x1c\xcd\xc5\x4f\xaf\x1e\x89\x8e\x65\xac\xde\x11\xb9\x0c\x8a\x74\xfa\x16\xaa\x31\xe6\xe8\xd3\x56\xd5\x35\x15\x32\x92\x79\x2e\xd9\x6b\xdb\xed\xb5\x74\xd3\xa9\xd0\x65\xa7\x65\x07\x4d\x62\xab\x83\xd2\x36\x44\x50\xb2\x22\x67\x2f\xaf\x0f\xda\x12\xb2\x52\x16\xb9\xe7\xd2\x03\x1b\x49\xab\x82\xe2\x79\x3f\x65\x43\x82\x52\x6c\x36\x0b\x90\x4b\x48\x26\x2e\x99\x77\x57\x71\x0d\x62\x26\x79\xe7\x31\xb8\xd1\xd7\x4c\x48\xdb\x88\x36\xe8\x23\xa6\xfd\x4b\xe6\xe4\xdc\x46\xd8\x3e\xa0\x1b\x0c\xc2\xa9\x73\x14\xf2\xe4\x3f\x94\xe8\x53\xd0\x77\xea\xa8\xed\x81\x6d\x99\x4f\x9c\x0d\x19\xa2\x8a\x63\x78\x3e\x96\x48\xc4\xd6\xf9\x5e\xc5\x97\x7c\x8a\x7d\x15\x2d\x47\xce\xda\xb5\x09\x53\x89\xcd\xa4\x19\x76\x63\xf8\xd3\x8f\xdf\xff\x7c\xbe\x83\x58\x66\x9f\x29\xff\x6a\x4b\xb8\x37\xed\x06\xb8\x4c\x52\x01\x1a\x17\x3e\x5b\x4b\xa4\xca\xbf\x7a\x5e\x5b\x7b\xd3\xb2\x7e\x11\xe2\xc9\xc1\xe0\x42\xd0\x95\x49\x25\x47\x48\x87\x2f\xba\xa3\x93\xca\xd1\xea\x8f\x25\x23\x41\xd9\xb8\x50\x26\xa7\x92\x28\x13\x79\x85\xfb\x0a\x2f\x62\x93\xc4\x67\x78\xa7\xbd\x29\x8f\x53\x50\x08\x8e\x8a\x4a\x89\x59\xf1\x82\x78\x76\xf2\xe7\x59\xdc\x8d\xa6\x01\xa3\x1f\x39\xca\xeb\x4e\xd9\x03\x2e\x50\x9a\xc5\x25\x70\xe4\x70\xcc\x20\x18\xa2\xf2\xab\x62\xf7\x29\x64\x60\x19\x67\x2b\xc6\x69\x20\xd0\x09\x18\xc3\x8c\x27\xf4\x2c\x1b\xe7\xc2\xf7\x77\x97\x59\x9b\x35\x4e\xa9\xf3\xe9\xbc\xcd\xb2\x5e\x57\x1b\x05\x79\x83\x83\x88\x94\xb5\xc5\xf1\x43\x42\x75\xea\x88\xc5\x0d\x81\x33\xb3\xab\x0f\xd6\x79\xac\x55\x20\x86\x07\xf4\x64\x10\xa0\x9f\x0f\xda\x06\x0a\x87\xa8\x8f\x94\x68\x95\xaf\x3b\xbc\xea\xc0\x2b\x50\x94\xc2\xbf\xee\x94\x5f\x4b\xbf\x6e\x07\xe8\x9d\xaa\x23\xfa\x6b\x94\x20\x53\xe1\xba\xb2\xdc\x03\x5a\x55\x99\xd4\x57\xb1\x99\x52\xbe\xab\x5c\x8c\xae\xcf\x18\x41\x48\xe5\xbc\xb8\x30\xf4\x18\x82\x3a\xe0\xec\xb8\x83\xa7\xb0\x6e\x3e\x0b\xe9\x17\xeb\xa2\x25\x2e\x1f\x11\x87\xcf\xbb\x20\x29\xea\x97\xe7\x5b\x38\x75\x3a\x62\x18\x54\x8d\x74\x80\xe2\x7a\x86\x0c\x3e\xb9\x51\x8e\x27\x7e\x12\x07\xab\xc8\xd6\xed\xd2\x4e\xf4\xee\x38\x27\x21\x8b\x1f\xa3\x48\x3d\xf7\x17\x76\x02\xb2\x8a\x97\x2e\x16\x80\xd7\xad\x8e\x65\x98\x27\x20\x94\xc3\x43\xc7\x3e\x5f\x51\x2d\x67\x90\xb5\xf0\xcd\x52\xd7\xd0\xde\x85\x7d\x6e\x28\xce\x04\x48\x7b\xa4\xc2\x4e\xfa\x67\x90\xc5\x36\x02\xf6\x43\x9c\x5e\xf0\x86\x47\x9c\x7a\xb4\x63\xb9\x9f\x6b\x70\x16\x4b\x59\xf7\x10\xe2\x64\x10\x1e\x71\x02\x5a\x71\xdd\xac\xa1\xf6\x88\x76\x07\x54\x95\x8a\xac\x2a\xc2\x07\x77\x38\x18\xfc\x03\x4e\x3f\xd0\x3e\x1d\xa0\x72\xa3\x6d\x38\xa7\xbd\x31\xf1\xe1\x50\xae\x2b\x37\x82\x8d\xdc\x1c\x2c\xf0\xa1\x6d\xd6\xdc\x82\x20\x3b\xf8\xe0\x68\x09\xb9\x1b\x6f\xd9\x42\xd0\xfd\x60\x26\x22\x97\x29\xd3\x21\x7f\xb2\x95\xb6\xcd\x1f\xf0\xba\xcf\xac\x84\xef\x55\xac\xbb\xca\xab\x9a\xe2\x6a\xb4\x0d\x72\x1d\x07\xfc\x98\x1c\x87\x5f\x09\x60\xde\xdd\x6f\xee\xb6\x70\xf7\xcb\xaf\xf4\xff\xbf\xfc\xed\x6e\xce\x6e\xa9\xae\xe3\xdc\xc4\xa5\x9d\x92\x6d\x67\x51\x74\xad\x0a\x5a\x7c\xb7\x7f\x1c\x14\x21\x4d\x90\x56\x49\xda\x49\xa6\x36\xa0\x15\x2c\x55\xdc\x77\x89\x7a\x1b\x87\xd2\x47\xe1\x47\x4d\xd9\x7e\x46\x8e\x5a\x59\xeb\xd8\x49\xa8\xec\x56\x47\xaa\x1c\x97\x22\x1e\xe4\x90\xb9\x98\xd6\x48\x99\xc4\xde\x25\x3a\xe7\xc1\x67\x08\x17\x38\x69\x71\xaa\x3c\x83\x2e\xc9\xef\x4f\x91\xd4\x16\xc2\x58\x77\xa0\x20\xe8\x38\x32\xa0\xbc\xdc\x2e\xf6\x6e\x64\x6c\x3b\x75\x28\x2d\xa7\x4b\xb0\x02\xfc\x06\x82\x14\xa3\xa9\xc6\x3a\x7b\x96\xfc\x86\x16\x37\x5b\x3a\x67\x0c\x23\xb3\x49\xfc\x49\xfc\x2a\xb3\x80\x30\xfb\x8e\xa3\xe4\x8f\x21\x24\x4a\x78\x24\xe5\x53\x64\xd5\x5d\xae\x9b\x24\x2f\xb1\x55\x57\x0d\x26\x25\x25\x37\x4c\xd2\xca\x9c\x1d\x40\x65\x11\xf5\x17\xae\x95\x97\x92\xf0\xef\x75\xcb\x53\x01\x08\xa1\x23\x37\x22\x7a\xa9\xf5\x3c\x6b\xb0\x16\x3a\x1d\x01\x83\x30\x97\x20\x46\x52\x4c\x6d\xf4\x50\x39\xe5\x25\xcf\xce\x96\xc9\xbe\xf0\x42\x07\xe0\xfb\xe8\x95\x36\xda\x1e\x4e\xe1\xb9\x42\x3b\x7a\xdd\x43\x5e\xba\x82\x9a\x40\xd1\x8f\xce\xbc\x10\x4f\x7e\x34\xe8\x57\x50\xc2\xd1\x64\xc7\xbe\x42\xff\x42\x59\x45\xde\x2a\x81\x54\xee\xc1\x63\x4f\xbd\x66\xce\x16\xab\xe6\x89\xa1\x4d\x85\x08\x51\xf7\xb8\x38\x3e\x3d\x4e\xb1\xa2\x2c\x8f\x2e\x86\x31\x82\x8e\x69\xf2\x32\x23\x37\x77\x3b\xf3\x2e\x2e\x66\x5f\x90\x88\xf8\xea\x34\xf5\xf9\xd3\x9a\xb1\xda\xf5\x3d\xd9\x21\xbd\x82\x0a\xe3\x09\xd1\x42\x6d\x9c\x64\x1c\xdb\x80\xc7\x07\x3a\x2f\x55\x9b\xac\xf2\x17\x91\x80\x8e\x1b\x6d\xe3\x72\xfe\x8a\x97\x25\xee\x96\x60\xca\x71\x97\xc0\xf1\x4d\xae\x0b\xaa\x8d\xe8\x65\x28\x68\x5c\xc8\xf3\x28\x1e\x88\xb9\xec\xbe\xe9\x0d\xf3\x25\x4d\x5f\x1a\x5a\xe5\x59\x22\x25\x50\x26\xae\xed\xe1\x25\xa5\xd4\xde\x19\x23\xd9\x7f\x99\xdc\xc8\x53\xa8\x94\x7f\x31\xdc\x65\x69\xaf\xfc\x41\xdb\x72\x0f\xaa\x77\xa3\x8d\xb9\x66\x0e\x57\x2a\xc1\x80\x5c\xbf\xa7\xe9\x5e\x85\xc6\x9d\x72\xfd\x2c\x9e\x71\x8d\xe3\xdf\xae\x0f\x0b\x03\x62\x73\xe5\x2c\x22\x2e\x8c\x13\xca\x3b\x8b\xf9\x27\x83\xc2\x35\xb2\xbf\x49\x64\x7b\xe5\xe3\xa0\x42\xe4\x22\x52\x92\xb8\xc4\x15\x75\xab\x06\x55\x73\x1e\x42\x62\x50\xda\x40\xcf\xfb\xd1\x44\x4d\x5d\x0a\x73\xf1\xfb\xb9\x85\x93\x98\x8c\x91\x52\x37\xf1\x36\x78\x0c\xe8\x8f\x78\x56\x90\xae\x6b\x35\x83\x47\x34\xe7\xb4\x15\xe7\xce\xd1\xca\x32\x4a\x02\xc6\xd5\x8f\x2f\xc4\x9f\x6b\xe3\xc9\xab\xe1\x52\x16\x7a\x96\x35\x45\xb9\x87\xc7\xd1\xce\x81\x71\x32\x3f\x68\x75\x9c\x4b\x7d\x29\x05\x5e\x70\x9d\xc1\xe8\x28\x25\x44\xf6\x71\x05\x9d\xf3\xfa\x93\xb3\x51\x19\xe0\xf7\xe4\xde\xa9\x89\xdc\x66\x76\x74\x24\x54\xce\xad\x25\x7b\x40\xae\x10\xb2\x5a\x78\xef\xef\x9f\x17\x93\x96\x78\x7d\xe8\xe2\x72\xfa\x91\x4a\xb5\xfa\x9f\x3f\x5b\x60\x99\xe7\xa3\x3c\xe9\x49\x95\xd0\xff\x86\x0b\x2e\x69\xa4\xab\x32\xe5\x1e\x52\x7f\x15\xa2\x27\xf3\xf1\xd0\x47\xb3\x71\x73\x27\x42\xd5\xdc\x03\x35\x83\xd2\xa7\x0e\xca\xe7\x63\x39\xc8\x57\x15\xd2\x4f\x69\xc6\x29\x19\x59\x1f\x31\xac\x0a\xcc\xc1\xa8\x9a\x6b\xab\xa0\x1b\x84\xf2\xd5\xfd\xa6\x9c\x77\x70\x32\x59\x36\x69\x5b\x9b\xb1\x61\xe3\x69\x23\x23\xe5\xed\x6a\x56\xb1\x85\x92\x67\x36\x5b\x1e\x94\xd1\x3f\x6e\x88\xf4\x0f\x15\x5e\x4b\xf3\xc8\x4f\xa5\xa9\xe4\x17\xeb\x13\xa2\x7a\x44\x40\xcd\xe9\x5e\xd9\x0c\x72\x8e\x7f\xa8\x5a\x1a\x53\xc2\xb5\x93\xf2\x8c\xe8\x44\xa5\xa5\xe8\x48\x13\xba\x6b\xf3\xf3\xa4\x2e\x2a\x59\xe7\x92\x93\x2b\xe8\xfa\x99\x32\xe4\xd5\x7d\x16\x71\x03\xaf\xee\xb3\x88\x9b\xfb\x57\xf7\x24\xe2\x66\xfb\xea\xbe\x76\x66\x43\xef\xdc\x10\xf7\xb9\x4b\xdc\x30\xad\xcb\xff\x96\x35\x62\xd3\xbc\x2b\x4f\xc4\x36\xff\xdf\x0e\xf0\x94\x88\xa4\xfe\xfd\x59\x5d\xbe\xd9\xcb\x95\x00\xbd\xa1\xae\x7a\x0b\x67\xab\xbe\x43\x33\x6c\xf6\x57\x85\x8c\xbc\x80\x27\xa3\x6b\x71\xd2\x10\x6f\xdd\x46\xc8\x8b\x67\xba\xc2\xa7\x31\x63\x15\x2d\x63\xdd\x13\x72\xe7\x9b\x00\xe9\x34\xc3\x38\xa0\xcf\x57\x81\x9c\x8c\x77\xf0\x9e\x4a\xc3\x10\x21\x4c\x21\x62\x1f\xe6\xb6\xe2\x36\x8c\x8d\xbb\x85\x6a\xe4\xda\xd8\x59\xf8\xe6\xa7\xb7\x14\xd4\xa9\xd4\xbb\x6d\x9c\x0a\xbb\xdb\xb3\xfa\x37\xbd\xaa\xc7\x10\x5d\xaf\x3f\xa5\xf1\x46\x9e\x32\xf1\xcd\x1d\xc1\x47\xba\x74\x62\xa4\xd7\xb1\x83\x30\x5e\x93\x85\x8e\x4f\xb2\x4c\x36\xaa\x8f\xe5\x1e\xe2\xe8\x6d\x00\xf9\x09\xe2\xb9\xae\x6d\x9f\x57\x44\x54\x15\xb5\x9e\xbd\xf4\xb7\x56\x1d\xf5\x81\xea\xf0\xa5\x40\x63\xfd\xe2\x41\x5b\xcb\x33\x85\x9c\xe2\x54\x48\xed\xa1\x8c\xf1\xa3\xaa\xb8\x2d\xbd\xc7\xdd\x61\x27\xcd\x2c\x97\xa8\x5f\xaf\x28\x39\x5b\xe3\xe6\xbc\x23\x60\xc1\xb9\xdc\x54\x76\x8a\xdc\x1e\xc9\x10\x86\xf8\x0a\xd1\xc9\xe6\x34\xf4\x7c\x21\x0b\xd0\x0e\xfd\xe9\x6c\xfa\x12\x55\x05\xf4\x8c\x1b\xb8\x74\x5d\x72\x85\xc8\xd7\x0b\x81\xf9\xc8\x3d\x8f\xd4\x12\xf3\xab\x3a\x9c\x05\x7d\x9e\x0f\xf4\x7d\xd4\xd1\xb0\xdf\xf2\xac\x3d\xcc\x2d\x88\x4c\x75\xa9\x16\xf1\x73\x75\x7e\x17\x80\x97\xcf\xed\x44\xc0\x48\xcd\xe7\x5c\x8e\x73\x4a\x91\x4a\xf4\x05\x15\x8c\x01\x07\xaf\x7b\xe5\xa7\x12\xee\xb3\x53\xb5\xa3\x21\x67\xf8\xd2\xea\x8f\x9b\x27\x39\xba\x18\x25\x26\x0c\x48\xc4\x56\x7d\x42\xee\x55\xe4\xfe\x85\x2f\x8f\x13\x74\x56\xaa\x7e\x3c\x78\x02\xc8\x64\xe2\xb9\xa3\x54\x6d\x8b\x75\xcc\x89\xd5\x12\x2c\xad\x5b\x0f\x19\xa7\x7c\x1b\xbd\x79\xf8\x96\x03\x82\xff\xfc\x8f\x67\xdc\xf6\xe1\xe1\xa1\x28\xde\xa6\x77\x83\x19\x0f\x3a\x43\x7d\x58\x6e\xae\xb9\x36\xa5\xda\xec\xbc\xcd\xe4\x8a\xb5\xfc\xe5\xd7\x12\xca\xfb\x4d\x09\xe5\x5f\xfe\x56\x42\x79\x7b\x5b\x42\x79\x77\x57\xee\xe0\xdf\xbd\x3b\xea\x66\xbe\x1d\x61\x57\x5c\xa8\xa5\xc3\x9e\x9f\xe5\xc6\xc4\x4a\xb9\x5f\x4d\x24\xb6\x67\xb7\xd9\x18\x21\xb8\x7e\xb9\x7f\xaf\x54\x58\xa6\x9b\x39\x19\xec\xe0\xcd\xac\xb4\xde\xf5\x3c\x68\xba\x34\x93\xaa\x64\x90\xd0\xab\x47\x94\x7b\x16\xbe\x76\x19\xe6\x09\xc3\x30\xc5\xce\xc9\x65\xcc\xa4\x7a\x93\x67\xc3\x01\x3c\x1e\x94\x6f\x0c\xb5\x84\xae\x15\x87\x4c\x53\xc8\xc0\x33\xfd\xcf\xcb\xe5\xf5\x90\x04\x2a\xec\xd4\x51\x4b\xef\x49\xb0\x73\xd6\x54\xbc\x08\x3a\x46\xdb\xc8\x3d\xdd\x9b\x33\xe3\xd0\xe3\x65\x04\x92\xe7\x15\xdc\x93\x7c\x66\x99\x99\x08\xfb\x29\x9b\xe5\x99\x33\xdf\xd8\x29\x33\x47\x82\x91\x01\x92\xdb\xe6\x11\x62\x8e\x3d\x6e\x80\x56\x97\x41\x50\x5c\xde\x22\xce\x6a\xfa\x47\x70\x16\x82\xdb\x12\x29\x64\x1f\xdf\x8a\x22\xcf\x3f\xf4\x90\x66\x32\xd1\x2f\x72\xc1\x37\x8f\x07\x45\xd7\x77\x8b\x9e\xb9\x86\xb9\x42\x87\x73\x01\x71\x1f\x1d\x28\xeb\x28\x7a\x8b\x5e\xd5\x9d\xb6\x38\xcf\xac\x38\x36\x39\x93\x9d\x31\x99\xe4\xe1\x3d\x90\xf6\xec\x8a\xa2\xf8\xe2\x0b\x78\x27\xc3\x50\x72\x10\x99\x09\xe4\x9d\x45\xf1\xe7\xe5\x83\x10\xda\x1e\x16\xaa\xb9\xc4\x92\x49\xaa\x99\x08\x45\x78\xb7\x99\x76\xf0\x6f\xf2\x07\xf4\xa8\xf2\xa7\x25\x14\x49\x79\xc6\x7d\xe2\xe9\xd0\x5a\xd5\x97\xdf\xb1\x9c\x6b\xb8\x4c\xc3\x3c\x15\xe7\x8b\x7d\x42\xb6\x22\x01\xa5\xb6\x57\xc7\xea\x3f\xa5\xd3\x96\x22\x70\xe6\x35\x7d\x0d\x32\x07\x26\x35\xf7\x73\x58\xae\xbf\x9b\xb0\x7c\xaf\x2c\x14\xc3\xae\x28\x3e\x2c\x57\xb8\x72\x83\xbf\x6a\xa2\x57\x33\xe5\x6d\x62\x18\x57\x37\x02\xab\x95\xac\xa7\x82\x16\xf2\xe8\x91\x0e\x5d\x98\x4c\x4a\xdc\x72\x74\x97\x01\x23\x3f\x28\xd7\x09\x88\x9e\x96\xbb\xa2\xf8\x3e\xdd\x29\x5f\x28\x6b\x9e\xf6\x93\xe5\xf8\xab\x96\x61\x94\x8f\x23\x32\xd8\xa4\x33\x28\x8e\xa4\xfa\x99\xf8\x03\x0d\xb6\x68\xa1\x58\x12\xae\x98\x57\x40\xc4\x1f\x0d\x69\xb9\x1c\x94\x41\x53\x9a\x6b\x75\x2a\x5c\xa6\xea\x54\x60\x92\xea\x04\x69\xf0\x63\x8d\x43\x84\x77\xae\xe0\xdf\xa2\x9e\x39\x5b\xc3\xd7\xd7\x97\xff\x71\xac\x26\x79\xb2\x2f\x8a\xb2\x2c\x49\xba\xe2\x97\xe2\xe6\xb6\x8d\xfb\x83\xbb\xdd\xc3\x2f\xc5\xcd\xcd\xed\xfa\xe8\xdb\x3d\x70\x2a\x2c\x6e\x7e\xdd\xca\x3a\x3f\x56\xd3\x7a\xa5\xfe\x84\xb7\x7b\xf8\x4d\x5a\x70\xb1\x97\x90\x22\x3f\x96\x85\x5f\x17\xbf\xd2\xc9\x45\xf1\xde\x53\x7c\x69\xa3\xbc\x99\x66\xdd\xf2\x3c\x57\x82\x92\x54\x76\xc9\xe6\x97\xbb\x7f\x8a\xcb\x2f\x77\xbe\xfa\x3f\x60\xf1\x7f\x02\x00\x00\xff\xff\xee\x0c\x05\x9b\xe1\x26\x00\x00" func runtimeHelpOptionsMdBytes() ([]byte, error) { return bindataRead( diff --git a/internal/config/settings.go b/internal/config/settings.go index b7cdaa69..1ec84caf 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -162,8 +162,7 @@ var defaultCommonSettings = map[string]interface{}{ "ignorecase": false, "indentchar": " ", "keepautoindent": false, - "matchbrace": false, - "matchbraceleft": false, + "matchbrace": true, "mkparents": false, "readonly": false, "rmtrailingws": false, diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index 391e0010..4fdfb129 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -381,6 +381,27 @@ func (w *BufWindow) displayBuffer() { b.Highlighter.HighlightMatches(b, w.StartLine, w.StartLine+bufHeight) } + var matchingBraces []buffer.Loc + // bracePairs is defined in buffer.go + if b.Settings["matchbrace"].(bool) { + for _, bp := range buffer.BracePairs { + for _, c := range b.GetCursors() { + if c.HasSelection() { + continue + } + curX := c.X + curLoc := c.Loc + + r := c.RuneUnder(curX) + rl := c.RuneUnder(curX - 1) + if r == bp[0] || r == bp[1] || rl == bp[0] || rl == bp[1] { + mb, _ := b.FindMatchingBrace(bp, curLoc) + matchingBraces = append(matchingBraces, mb) + } + } + } + } + lineNumStyle := config.DefStyle if style, ok := config.Colorscheme["line-number"]; ok { lineNumStyle = style @@ -477,6 +498,12 @@ func (w *BufWindow) displayBuffer() { } } + for _, mb := range matchingBraces { + if mb.X == bloc.X && mb.Y == bloc.Y { + style = style.Underline(true) + } + } + screen.Screen.SetContent(w.X+vloc.X, w.Y+vloc.Y, r, nil, style) if showcursor { diff --git a/runtime/help/options.md b/runtime/help/options.md index 5e25ea6e..4c7840e9 100644 --- a/runtime/help/options.md +++ b/runtime/help/options.md @@ -115,15 +115,10 @@ Here are the options that you can set: default value: `false` -* `matchbrace`: highlight matching braces for '()', '{}', '[]' +* `matchbrace`: underline matching braces for '()', '{}', '[]' when the cursor + is on a brace character. - default value: `false` - -* `matchbraceleft`: when matching a closing brace, should matching match the - brace directly under the cursor, or the character to the left? only matters - if `matchbrace` is true - - default value: `false` + default value: `true` * `mkparents`: if a file is opened on a path that does not exist, the file cannot be saved because the parent directories don't exist. This option lets micro From 65cd6c4605c5ab6ff6fa26a0323273998e3162d8 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 4 Aug 2019 15:17:29 -0700 Subject: [PATCH 148/231] Fix minor matchbrace issue --- internal/display/bufwindow.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index 4fdfb129..c208820a 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -395,8 +395,13 @@ func (w *BufWindow) displayBuffer() { r := c.RuneUnder(curX) rl := c.RuneUnder(curX - 1) if r == bp[0] || r == bp[1] || rl == bp[0] || rl == bp[1] { - mb, _ := b.FindMatchingBrace(bp, curLoc) + mb, left := b.FindMatchingBrace(bp, curLoc) matchingBraces = append(matchingBraces, mb) + if !left { + matchingBraces = append(matchingBraces, curLoc) + } else { + matchingBraces = append(matchingBraces, curLoc.Move(-1, b)) + } } } } From 24eb6fee250b340c86d651e8bf5e383cc170b179 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 4 Aug 2019 15:23:23 -0700 Subject: [PATCH 149/231] Add buftype access for plugins --- cmd/micro/initlua.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cmd/micro/initlua.go b/cmd/micro/initlua.go index 11e97be8..f3e302db 100644 --- a/cmd/micro/initlua.go +++ b/cmd/micro/initlua.go @@ -100,6 +100,12 @@ func luaImportMicroBuffer() *lua.LTable { ulua.L.SetField(pkg, "Loc", luar.New(ulua.L, func(x, y int) buffer.Loc { return buffer.Loc{x, y} })) + ulua.L.SetField(pkg, "BTDefault", luar.New(ulua.L, buffer.BTDefault.Kind)) + ulua.L.SetField(pkg, "BTHelp", luar.New(ulua.L, buffer.BTHelp.Kind)) + ulua.L.SetField(pkg, "BTLog", luar.New(ulua.L, buffer.BTLog.Kind)) + ulua.L.SetField(pkg, "BTScratch", luar.New(ulua.L, buffer.BTScratch.Kind)) + ulua.L.SetField(pkg, "BTRaw", luar.New(ulua.L, buffer.BTRaw.Kind)) + ulua.L.SetField(pkg, "BTInfo", luar.New(ulua.L, buffer.BTInfo.Kind)) return pkg } From 7217911c3a372986d8dd2313092ec07414c96872 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 4 Aug 2019 20:23:32 -0700 Subject: [PATCH 150/231] Add macro and QuitAll support --- cmd/micro/micro.go | 2 -- internal/action/actions.go | 63 +++++++++++++++++++++++++++++++++----- internal/action/bufpane.go | 10 ++++++ 3 files changed, 66 insertions(+), 9 deletions(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index bd1918b7..734539de 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -4,7 +4,6 @@ import ( "flag" "fmt" "io/ioutil" - "log" "os" "sort" @@ -246,6 +245,5 @@ func main() { } else { action.Tabs.HandleEvent(event) } - log.Println("Done event cycle") } } diff --git a/internal/action/actions.go b/internal/action/actions.go index f8b02b66..da802c70 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -46,6 +46,8 @@ func (h *BufPane) MousePress(e *tcell.EventMouse) bool { if b.NumCursors() > 1 { b.ClearCursors() h.Relocate() + h.Cursor = h.Buf.GetActiveCursor() + h.Cursor.Loc = mouseLoc } if time.Since(h.lastClickTime)/time.Millisecond < config.DoubleClickThreshold && (mouseLoc.X == h.lastLoc.X && mouseLoc.Y == h.lastLoc.Y) { if h.doubleClick { @@ -88,6 +90,7 @@ func (h *BufPane) MousePress(e *tcell.EventMouse) bool { } } + h.Cursor.StoreVisualX() h.lastLoc = mouseLoc return false } @@ -269,11 +272,12 @@ func (h *BufPane) SelectWordLeft() bool { // StartOfLine moves the cursor to the start of the line func (h *BufPane) StartOfLine() bool { h.Cursor.Deselect(true) - if h.Cursor.X != 0 { - h.Cursor.Start() - } else { - h.Cursor.StartOfText() - } + h.Cursor.StartOfText() + // if h.Cursor.X != 0 { + // h.Cursor.Start() + // } else { + // h.Cursor.StartOfText() + // } return true } @@ -1189,6 +1193,33 @@ func (h *BufPane) Quit() bool { // QuitAll quits the whole editor; all splits and tabs func (h *BufPane) QuitAll() bool { + anyModified := false + for _, b := range buffer.OpenBuffers { + if b.Modified() { + anyModified = true + break + } + } + + quit := func() { + for _, b := range buffer.OpenBuffers { + b.Close() + } + screen.Screen.Fini() + InfoBar.Close() + os.Exit(0) + } + + if anyModified { + InfoBar.YNPrompt("Quit micro? (all open buffers will be closed without saving)", func(yes, canceled bool) { + if !canceled && yes { + quit() + } + }) + } else { + quit() + } + return false } @@ -1271,16 +1302,34 @@ func (h *BufPane) PreviousSplit() bool { return false } -var curMacro []interface{} -var recordingMacro bool +var curmacro []interface{} +var recording_macro bool // ToggleMacro toggles recording of a macro func (h *BufPane) ToggleMacro() bool { + recording_macro = !recording_macro + if recording_macro { + curmacro = []interface{}{} + InfoBar.Message("Recording") + } else { + InfoBar.Message("Stopped recording") + } return true } // PlayMacro plays back the most recently recorded macro func (h *BufPane) PlayMacro() bool { + if recording_macro { + return false + } + for _, action := range curmacro { + switch t := action.(type) { + case rune: + h.DoRuneInsert(t) + case Event: + h.DoKeyEvent(t) + } + } return true } diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 969ed956..9709fa52 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -289,6 +289,12 @@ func (h *BufPane) DoKeyEvent(e Event) bool { if h.PluginCB("on"+estr) && rel { h.Relocate() } + + if recording_macro { + if estr != "ToggleMacro" && estr != "PlayMacro" { + curmacro = append(curmacro, e) + } + } } return true } @@ -331,6 +337,7 @@ func (h *BufPane) DoRuneInsert(r rune) { for _, c := range cursors { // Insert a character h.Buf.SetCurCursor(c.Num) + h.Cursor = c if !h.PluginCBRune("preRune", r) { continue } @@ -346,6 +353,9 @@ func (h *BufPane) DoRuneInsert(r rune) { } else { h.Buf.Insert(c.Loc, string(r)) } + if recording_macro { + curmacro = append(curmacro, r) + } h.PluginCBRune("onRune", r) } } From 3d40e91690f30658b30785e7a7aaea451c548d42 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 5 Aug 2019 20:43:34 -0700 Subject: [PATCH 151/231] Add log and plugin list command --- internal/action/bufpane.go | 6 ++++-- internal/action/command.go | 33 ++++++++++++++++++++++++++++++++- internal/action/globals.go | 31 +++++++++++++++++++++++++++++++ internal/buffer/buffer.go | 5 +++++ 4 files changed, 72 insertions(+), 3 deletions(-) diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 9709fa52..86fb7e42 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -360,19 +360,21 @@ func (h *BufPane) DoRuneInsert(r rune) { } } -func (h *BufPane) VSplitBuf(buf *buffer.Buffer) { +func (h *BufPane) VSplitBuf(buf *buffer.Buffer) *BufPane { e := NewBufPaneFromBuf(buf) e.splitID = MainTab().GetNode(h.splitID).VSplit(h.Buf.Settings["splitright"].(bool)) MainTab().Panes = append(MainTab().Panes, e) MainTab().Resize() MainTab().SetActive(len(MainTab().Panes) - 1) + return e } -func (h *BufPane) HSplitBuf(buf *buffer.Buffer) { +func (h *BufPane) HSplitBuf(buf *buffer.Buffer) *BufPane { e := NewBufPaneFromBuf(buf) e.splitID = MainTab().GetNode(h.splitID).HSplit(h.Buf.Settings["splitbottom"].(bool)) MainTab().Panes = append(MainTab().Panes, e) MainTab().Resize() MainTab().SetActive(len(MainTab().Panes) - 1) + return e } func (h *BufPane) Close() { h.Buf.Close() diff --git a/internal/action/command.go b/internal/action/command.go index 029f9582..03949b0f 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -51,7 +51,7 @@ func InitCommands() { "tab": Command{(*BufPane).NewTabCmd, buffer.FileComplete}, "help": Command{(*BufPane).HelpCmd, HelpComplete}, "eval": Command{(*BufPane).EvalCmd, nil}, - "togglelog": Command{(*BufPane).ToggleLogCmd, nil}, + "log": Command{(*BufPane).ToggleLogCmd, nil}, "plugin": Command{(*BufPane).PluginCmd, nil}, "reload": Command{(*BufPane).ReloadCmd, nil}, "reopen": Command{(*BufPane).ReopenCmd, nil}, @@ -117,6 +117,30 @@ func CommandAction(cmd string) BufKeyAction { // PluginCmd installs, removes, updates, lists, or searches for given plugins func (h *BufPane) PluginCmd(args []string) { + if len(args) <= 0 { + InfoBar.Error("Not enough arguments, see 'help commands'") + return + } + + valid := true + switch args[0] { + case "list": + for _, pl := range config.Plugins { + var en string + if pl.IsEnabled() { + en = "enabled" + } else { + en = "disabled" + } + WriteLog(fmt.Sprintf("%s: %s\n", pl.Name, en)) + } + default: + valid = false + } + + if valid && h.Buf.Type != buffer.BTLog { + OpenLogBuf(h) + } } // RetabCmd changes all spaces to tabs or all tabs to spaces @@ -248,6 +272,11 @@ func (h *BufPane) OpenCmd(args []string) { // ToggleLogCmd toggles the log view func (h *BufPane) ToggleLogCmd(args []string) { + if h.Buf.Type != buffer.BTLog { + OpenLogBuf(h) + } else { + h.Quit() + } } // ReloadCmd reloads all files (syntax files, colorschemes...) @@ -818,6 +847,8 @@ func (h *BufPane) HandleCommand(input string) { if _, ok := commands[inputCmd]; !ok { InfoBar.Error("Unknown command ", inputCmd) } else { + WriteLog("> " + input + "\n") commands[inputCmd].action(h, args[1:]) + WriteLog("\n") } } diff --git a/internal/action/globals.go b/internal/action/globals.go index 301545c8..3884c212 100644 --- a/internal/action/globals.go +++ b/internal/action/globals.go @@ -1,11 +1,42 @@ package action +import "github.com/zyedidia/micro/internal/buffer" + var InfoBar *InfoPane +var LogBufPane *BufPane func InitGlobals() { InfoBar = NewInfoBar() + buffer.LogBuf = buffer.NewBufferFromString("", "Log", buffer.BTLog) } func GetInfoBar() *InfoPane { return InfoBar } + +func WriteLog(s string) { + buffer.WriteLog(s) + if LogBufPane != nil { + LogBufPane.CursorEnd() + v := LogBufPane.GetView() + endY := buffer.LogBuf.End().Y + + if endY > v.StartLine+v.Height { + v.StartLine = buffer.LogBuf.End().Y - v.Height + 2 + LogBufPane.SetView(v) + } + } +} + +func OpenLogBuf(h *BufPane) { + LogBufPane = h.HSplitBuf(buffer.LogBuf) + LogBufPane.CursorEnd() + + v := LogBufPane.GetView() + endY := buffer.LogBuf.End().Y + + if endY > v.StartLine+v.Height { + v.StartLine = buffer.LogBuf.End().Y - v.Height + 2 + LogBufPane.SetView(v) + } +} diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index 7fe65d24..44f0e1e9 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -27,6 +27,7 @@ import ( var ( OpenBuffers []*Buffer + LogBuf *Buffer ) // The BufType defines what kind of buffer this is @@ -775,3 +776,7 @@ func ParseCursorLocation(cursorPositions []string) (Loc, error) { func (b *Buffer) Line(i int) string { return string(b.LineBytes(i)) } + +func WriteLog(s string) { + LogBuf.EventHandler.Insert(LogBuf.End(), s) +} From 26c545267d3b730a047006a6e2aa4997c8a5a63e Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 5 Aug 2019 21:36:58 -0700 Subject: [PATCH 152/231] Support column marking in linter --- internal/config/rtfiles.go | 8 ++++ internal/config/runtime.go | 2 +- internal/display/bufwindow.go | 8 ++++ runtime/plugins/linter/linter.lua | 62 ++++++++++++++++++++----------- 4 files changed, 58 insertions(+), 22 deletions(-) diff --git a/internal/config/rtfiles.go b/internal/config/rtfiles.go index d31b4123..16cc04d1 100644 --- a/internal/config/rtfiles.go +++ b/internal/config/rtfiles.go @@ -134,6 +134,14 @@ func InitRuntimeFiles() { add(RTSyntax, "syntax", "*.yaml") add(RTHelp, "help", "*.md") + initlua := filepath.Join(ConfigDir, "init.lua") + if _, err := os.Stat(initlua); !os.IsNotExist(err) { + p := new(Plugin) + p.Name = "initlua" + p.Srcs = append(p.Srcs, realFile(initlua)) + Plugins = append(Plugins, p) + } + // Search ConfigDir for plugin-scripts plugdir := filepath.Join(ConfigDir, "plugins") files, _ := ioutil.ReadDir(plugdir) diff --git a/internal/config/runtime.go b/internal/config/runtime.go index 7690ddc3..0fa2f4e3 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -1092,7 +1092,7 @@ func runtimePluginsFtoptionsFtoptionsLua() (*asset, error) { return a, nil } -var _runtimePluginsLinterLinterLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x18\x69\x8f\xa4\xb8\xf5\x7b\xff\x8a\x27\x14\x24\x98\x06\x5a\x89\xf2\x09\xa9\x14\x6d\x26\xbb\x91\xa2\x39\x22\xf5\x44\xf9\x30\x33\x1b\xb9\xe0\x51\xe5\x6d\x63\x13\xdb\x54\x75\xa5\x35\xff\x3d\x7a\xb6\x01\x53\x47\xef\xe4\x28\xa9\xf0\xc1\xbb\x2f\x3f\x23\x54\xc3\x04\xe8\x51\x5a\xde\x23\x6c\x80\xf7\x83\xd2\x36\x4b\xc2\x4e\x92\xdf\x79\x88\x8e\x0b\x1c\x98\xdd\x47\x20\xb4\x7c\x98\xf6\x67\x40\xb3\x47\x21\x22\xa8\x9e\x37\x5a\x3d\xb8\xdd\x19\x66\x3b\x76\x1d\xea\x0b\x20\xbf\x3d\x43\x35\x4a\x76\x7c\x77\x01\xe5\xb7\x93\xfc\x2e\x80\x09\x2e\x2d\x6a\x03\x1b\x78\xf9\x76\x77\x57\x96\xd0\x68\x64\x16\x0d\xb0\xf0\x0a\x50\x5a\x7d\x2a\xa0\x61\x42\x40\xa7\x55\x0f\x47\x6e\xf7\x5c\x02\x93\xc0\x25\xb7\x9c\x09\xfe\x2f\x66\xb9\x92\xd0\x8d\xb2\xa1\x49\x01\x52\x59\xa2\xd5\x72\x8d\x8d\x15\x27\x60\x76\x82\x05\xa1\x58\x0b\x64\x9c\xbb\xb2\x24\x18\xc9\x7a\xac\xdd\x13\x54\x07\x76\x8f\x81\x2f\xbd\x23\xf3\xd8\xd3\x80\xf5\x3c\x03\xab\xa0\xd9\x63\xf3\x04\x9d\xd2\xb4\x18\x4d\x8c\xd0\xf4\x6d\x0d\x3d\xe3\x72\x12\x7e\xd0\xaa\x41\x63\xc0\xee\x49\x04\x03\xf8\x8c\xcd\x68\xb1\x25\x60\xa6\x77\xa6\xa6\xe7\xd8\xa3\xb4\x86\xa8\x0d\xcc\xb8\x71\x11\x63\xa2\x40\x08\xf4\x23\x7e\x69\x47\x30\x1a\xc9\x0b\x01\xb8\x19\xb5\x46\x69\x9d\x9c\x4e\x99\x15\x7c\x7b\x13\xde\x5b\x48\xe9\xd3\x8c\x84\x5a\x2b\xdd\x29\xdd\x33\x5b\xc3\x5e\x1d\xbd\x58\xda\x60\x24\xd4\x43\xa3\xfa\x81\x8b\x48\x3f\x35\xda\x61\xb4\x13\xd3\xb4\xf3\x16\x2b\x20\x15\x35\xe1\x20\xc8\xb1\xdf\xa2\x2e\x20\xed\x6b\xcf\xe2\xe1\xc8\xb4\xe4\x72\x07\x3d\x1a\xc3\x76\x8e\xb7\x32\x04\x6d\x2c\x79\xe2\xe3\x23\x59\x8d\x9b\xc9\x0e\xdc\x80\x19\x07\x0a\x25\x6c\x41\x69\x18\x65\xb4\x94\x13\x67\x35\x50\x00\x30\x41\x22\xb3\xbe\x80\x16\x3b\x36\x0a\x5b\xc3\xe7\xaf\x04\x72\xdc\x73\x8b\xc4\xa1\x06\xb3\x57\xa3\x68\x9d\x52\x1f\x1f\x3d\xd7\x2d\x02\x83\xad\x60\xcd\x93\x5b\x66\xad\xa2\x40\xa2\xf4\x8a\x1d\xe2\x1c\xbf\x47\x43\x78\x26\x77\x62\x6b\x60\x0b\x69\xc8\x94\x14\xa7\x5f\xc7\x7a\x55\xdc\x8e\x09\x83\x90\x05\x21\x67\x99\x1c\x62\xab\x7a\x66\x9b\xfd\x4a\x85\x39\x3e\xb7\x08\x8e\xe1\xa0\x91\x2c\xc3\x5c\x22\x8d\x0c\x06\x66\x2d\x6a\x49\xde\x74\xd8\x2e\x8b\x88\x1a\x61\xb3\xc6\x8e\xa1\x4a\x10\x91\x82\x34\x8a\x88\x07\x15\x9c\x5a\xac\xb1\xfc\xc0\x2c\x82\x72\x19\x88\xcf\xac\xb1\x9e\xe2\xf7\xea\xa4\xf1\x9f\x23\xd7\x18\xa3\xe6\x77\x53\xea\x42\xcf\x9e\xf0\x9d\xe3\x97\x51\x44\x16\x91\x50\x4d\xdf\x16\x2e\x69\x8a\x38\x48\x0b\x50\xa6\x58\xac\x5f\x4c\xe6\xc9\xef\x48\x18\xde\x4d\x15\xe6\x33\x91\xfb\x0a\x9b\x0d\x48\x2e\x48\x2d\xe9\x00\xe8\x77\x06\x41\x95\xe8\xea\xab\x6a\xb6\xf2\x66\x16\xeb\x06\x64\xd3\xb7\xb0\x21\x89\x6f\xbc\x27\x35\x60\xe3\xb4\xb9\x01\x11\xa9\x08\x9b\x58\xe1\x1b\xf0\x8a\xe8\x29\x43\xae\xbb\x29\xff\x12\xa3\x9b\x28\x5e\x95\xf6\xae\xb9\x81\x14\xec\x09\x9b\xc9\xb2\x6b\x04\x94\xed\x1d\xfd\x17\x17\x6a\xec\xd5\x21\x76\xa2\x77\xc5\xb9\x95\x25\x17\x67\x88\x54\xa2\xb3\x00\xec\x0e\x87\x16\x0f\x72\x74\xe7\x51\xf2\xd0\xe2\xe1\x81\x16\xc9\xe4\xd7\x70\xc6\x55\x7f\xfe\xf8\xf1\x91\xdc\x9a\x1c\xb9\x6c\xd5\xd1\x24\x6b\xe7\x46\x34\x3e\xfc\xed\x5d\x32\xcb\xec\x26\x51\xb4\x25\xbb\xa6\x49\x0a\x48\xdc\xc3\xcf\x5f\x92\xb2\x33\x27\x69\xd9\x73\x49\xb1\x4f\x2f\xca\xbf\x33\x21\xfc\x04\x9f\xad\x66\x34\x4d\xbb\xe4\x9b\x1b\xea\x54\xd4\x69\x7b\x5f\x57\xf7\x35\xa4\x7d\x92\xdf\x64\x71\x7f\xff\x0a\x93\xa4\x34\xb6\xdd\x34\xf7\xf7\xbf\xfd\xfd\xff\xce\xb1\xed\x5b\x42\xf0\x0f\x37\x7f\x49\xca\x46\x09\xa5\x37\xaa\xeb\x1c\x59\x55\xba\xe1\xe8\x9f\xdc\x0d\xcd\x8a\x4b\x9a\xa5\x22\xcd\x5f\x51\x4b\x6d\x47\x2e\x1c\x8f\x9d\x9a\x9f\x2f\xc9\xbc\x5b\xd2\x3a\x38\x62\x11\xfc\x16\x31\x0a\x94\x98\x56\x58\xbf\x5c\xaa\x7d\x9d\xc2\x2f\xec\xc0\x9c\x02\x34\x99\xc6\x60\x6a\x27\x4e\xda\x5e\x18\xd1\x27\xd8\x2d\x82\x66\x1f\x44\x22\x4a\xa6\xd1\x7c\xf0\xab\x69\x3f\x16\xcd\x1f\x77\xa9\x28\xaa\xfb\xe2\x3a\x39\xc1\x2d\x6a\x66\x91\x48\x9c\xcd\x83\x7f\x2e\x7d\xdc\xd3\x9b\x6f\x85\xcf\xbb\x02\xac\x1e\xf1\x0a\xe1\x91\xb9\xde\xc4\x11\x1b\x59\x18\xa6\xad\x97\xa4\x2c\xa5\xf2\xce\xbf\x1a\x44\xd7\xa5\x95\x9c\x78\xaf\x87\x97\x64\xe6\x53\x96\x54\x43\x7e\x1a\x85\xf8\x2b\xb3\x7b\xe3\xb7\x8c\x6d\xd5\x68\xfd\x9c\x4c\x64\xea\x10\x6c\x33\xcf\x2a\x15\x05\xa4\xed\x7d\x75\x9d\x69\x23\x98\xdc\x11\x82\xda\xfe\x82\x74\xe2\xa0\x37\xca\x73\xa3\x47\xe9\x05\x98\x20\xfe\xcf\x29\x3a\x9c\x3a\xc1\x9e\xd0\x29\x32\x9c\xec\x5e\x49\x3f\x9b\x77\xcf\xc2\xb0\x2a\xeb\x3f\x5c\xa7\xd4\x9f\x86\xd3\x9a\x4a\xd8\x39\xa3\x70\x4b\x8e\x29\x0d\x62\x29\xe6\x54\x28\x4b\xdf\x71\x95\xfe\x4c\xd8\xb8\x0e\x8d\x6d\x05\x7a\xa3\x6b\xa4\xce\xc8\x6c\xa4\xba\x8c\xf4\xab\xec\xcc\xbe\xeb\x1d\x37\xdf\xea\xbb\x89\xdf\xf9\xee\xb4\x33\x47\x6e\x3b\xe7\x25\x73\xe4\x9d\x5d\xbb\xcb\x6d\x5d\x89\xeb\xc5\x15\x04\xd5\x32\x7d\xe4\x92\xde\x5f\x0f\xf0\x33\x16\xcd\x75\xf1\x22\x82\x82\xcb\xf1\xf9\x36\xbd\x13\xeb\x9d\xae\xf1\x18\x99\xd8\xdb\xd6\x59\x9e\x69\x33\x59\xf7\x0a\x3f\x6f\x10\x47\xde\xdf\x6f\xaa\xf7\xec\x09\xdf\xaa\xbe\x67\xb2\xa5\x84\xf7\x9e\xf4\x27\x60\x45\xc3\x5b\x57\x8b\x03\xf0\x07\xf5\x56\xf5\x83\x40\x8b\xf9\xd9\x89\x18\x40\xb3\xed\xe0\x85\xdf\x0e\xf5\x23\x3b\x60\x38\x24\xf5\x28\x83\x26\xdb\xa1\xfa\xe3\xd8\x9d\x63\x37\x4a\x5a\xc6\xa5\xc9\x7c\x63\x84\x02\xe9\xa2\xe1\x71\xa9\x1f\x7d\x2a\xe0\x00\x5c\xc2\xc0\xb8\xf6\x40\x39\xb4\x6a\x3e\x39\x79\x07\x07\x3a\x58\x03\xde\xfa\x58\x75\xfc\xd1\x8e\xd4\x52\xea\x71\xe9\x1d\x48\x82\x78\x0c\x30\xbe\x5f\x38\xeb\x13\x16\xf1\x49\xf6\xe5\xd8\xef\xa8\x3f\xd9\x8e\x5d\xfd\x13\x17\xf8\xe9\x34\xe0\xaa\x29\x70\x57\x1c\xf7\xbe\xa2\x92\x13\xb7\x0b\x5c\x87\xce\x8c\xee\xb4\xd5\x9f\xb8\xce\x68\x11\x3c\x73\x4d\x63\xd7\x91\xac\x94\x9e\x24\x98\x7a\x1e\x92\x65\x03\x87\xea\xa2\xdf\x23\xeb\xcc\xbd\xd1\x85\x69\x16\x02\xc6\x6a\x2e\x77\x95\x5b\x66\x9d\x2d\x22\x5a\xf9\xca\x6a\x67\x22\xec\x99\xa1\xbe\x66\x71\xe2\xa1\xa2\x46\x37\xee\x7a\xf2\x58\x18\xba\xa9\x78\x1c\x26\x5b\x38\x44\xbd\xde\x2b\xc2\xad\xfb\xbe\xc9\x67\x81\xe2\x42\x8d\x68\xff\xd7\x14\xcf\xf4\x0a\x9d\x6f\xd4\xa3\x06\xc7\x30\xbd\x5b\x5c\x73\x70\x1d\xf2\xca\x33\xf4\xa3\xcd\xcf\x4f\x5f\x7d\xe7\x5c\xef\xcc\xb8\xcd\x92\x34\xa5\xa3\xc5\x39\x7a\xde\xa1\xe4\x6a\xb9\xbe\x61\x60\xde\xcd\x02\x5f\x68\x42\x31\x41\xf1\x58\xb8\x58\xa9\xa2\x3b\xc7\x21\x6e\xc9\xf3\xab\x01\xbf\x8e\x6f\x25\x5d\xae\x4e\xb9\x7b\x99\xad\xbf\x92\x1f\x8b\x28\x3e\x50\x6f\xdd\x80\x42\x69\x18\xbb\xfa\xad\x40\xa6\xdf\xfb\xfb\xb4\xc9\x42\xbd\x99\x2a\x93\xab\xec\xd5\x5f\xd4\xf6\x71\x60\x47\x99\x45\xb4\x92\x24\xfc\x43\x81\x52\xf2\xc7\x67\xd7\x8b\xac\x98\xaf\x38\x9e\x6b\x4a\x08\x99\x3f\x92\x5e\x43\x5b\xc2\x80\xba\x24\x8a\x03\x33\x88\x08\x33\xf9\x22\x27\x71\xc3\xa7\x2d\xdc\xe1\xf3\xfa\xfe\xb3\x72\x7b\x92\x55\x55\x99\x27\x8b\xe7\x5d\x1d\xcf\xd2\xf6\x3e\xde\xec\x3d\x24\xed\xcd\xa5\xe0\x1f\x85\x6b\xd4\xb8\x04\x3e\x57\x03\x5c\x47\x5c\x59\xc2\x27\xcd\x7b\x7f\x55\x32\x03\x6b\x56\x57\x24\x2a\x42\x34\xd4\x3e\xb5\x93\x9f\x53\xf3\x86\x78\xa4\xe6\xcd\x6f\x92\x55\x6a\x86\x12\xd0\x71\xd9\x3a\x2e\x85\x57\x2b\xbf\x12\x7d\x73\x85\x73\x06\xc4\x02\x7a\xb3\x3b\x2f\x22\x31\x89\x15\x36\xef\x60\xcb\x0c\xd2\x05\x2b\x9b\xca\x63\x4e\xe5\x6b\xde\x75\x59\x72\xc9\x76\x61\xbd\xf5\xfc\xfc\xb7\xbc\xea\x03\x1e\x43\x34\xfd\x60\xdf\x71\x89\x73\x48\x39\xb9\x0a\xb0\xca\x7f\xd6\x71\x22\xe5\xc5\x84\xf6\xfe\xd3\x8f\xe4\xae\xfc\x82\x07\xc5\xe8\x0f\x6d\x1b\x68\x66\xc4\x6c\x0d\x14\x57\xa0\xdb\x89\xe5\x63\xc6\x58\x5d\x80\xc1\x21\x5f\x85\x8b\x19\x85\x5d\xca\xcb\x3a\x88\xb2\x24\xfb\xfc\x73\x6a\xbe\xba\xd8\xf0\xc1\x94\xcd\x04\x28\x26\x90\x35\x7b\x8a\x08\x63\x75\xbd\xf3\xc6\x0e\x9e\x8a\xa2\xc2\x52\x23\x50\x71\x69\x50\xdb\xcc\x33\x2c\x1c\x66\x7e\xed\xe0\xf3\x00\x67\x0a\xac\xfd\x11\x49\x6a\x70\x70\x97\xdd\xff\xf4\x92\x1b\xf0\xbe\x7c\x49\x56\x32\x78\xa2\xee\xdb\xe6\x1c\x43\x2e\x27\x7c\x84\x25\x59\xf5\x26\x81\xaa\x72\xe8\x55\x05\x49\x9e\x55\x6f\x72\xd7\xe3\xfc\x2e\x59\x95\x27\xf7\x71\x90\xa8\xfe\x3b\x00\x00\xff\xff\x62\x4a\x34\x00\x71\x16\x00\x00" +var _runtimePluginsLinterLinterLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x59\x5f\x8f\xa4\xb8\x11\x7f\x9f\x4f\x61\xa1\x20\xd1\x3b\xc0\xec\x46\x79\x42\x6a\x45\x97\xcd\x5d\xa4\x68\xff\x44\x9a\x8d\xf2\xb0\xbb\x17\xb9\x4d\xd1\xed\x1b\x63\x13\xdb\x74\x4f\x67\xb4\xdf\x3d\x2a\xdb\xd0\x86\x86\xd9\xc9\xdd\xb5\x34\x60\x4c\xb9\xea\x57\x7f\x5d\x66\x84\x62\x54\x10\xdd\x4b\xcb\x5b\x20\x5b\xc2\xdb\x4e\x69\x9b\x25\x61\x26\xd9\xdc\x78\x8a\x86\x0b\xe8\xa8\x3d\x44\x24\xf8\x78\x37\xcc\x8f\x84\xe6\x00\x42\x44\x54\x2d\x67\x5a\xdd\xb9\xd9\x91\x66\xd7\x37\x0d\xe8\x2b\x22\x3f\x3d\x52\x31\x25\x1b\xbe\xbf\xa2\xf2\xd3\xc9\xe6\x26\x90\x09\x2e\x2d\x68\x43\xb6\xe4\xe9\xdb\xcd\x4d\x51\x10\xa6\x81\x5a\x30\x84\x86\x57\x04\xa4\xd5\xe7\x9c\x30\x2a\x04\x69\xb4\x6a\xc9\x89\xdb\x03\x97\x84\x4a\xc2\x25\xb7\x9c\x0a\xfe\x5f\x6a\xb9\x92\xa4\xe9\x25\xc3\x41\x4e\xa4\xb2\xc8\xab\xe6\x1a\x98\x15\x67\x42\xed\x40\x4b\x84\xa2\x35\x41\xe3\xdc\x14\x05\xd2\x48\xda\x42\xe5\xae\x44\x35\xc4\x1e\x20\xc8\xc5\x77\x68\x1e\x7b\xee\xa0\x1a\x47\xc4\x2a\xc2\x0e\xc0\x1e\x48\xa3\x34\x3e\xf4\x26\x5e\xc0\xda\xba\x22\x2d\xe5\x72\x00\xdf\x69\xc5\xc0\x18\x62\x0f\x08\xc1\x10\x78\x04\xd6\x5b\xa8\x91\x98\xea\xbd\xa9\xf0\xda\xb7\x20\xad\x41\x6e\x1d\x35\xee\x7e\x81\x31\x70\xc0\x05\xf8\x43\x79\x69\x83\x34\x1a\xd0\x0b\x81\x98\xf5\x5a\x83\xb4\x0e\xa7\x53\x66\x42\x5f\xaf\xd2\x7b\x0b\x29\x7d\x1e\x17\x81\xd6\x4a\x37\x4a\xb7\xd4\x56\xe4\xa0\x4e\x1e\x96\x36\x10\x81\xba\x63\xaa\xed\xb8\x88\xf4\x53\xbd\xed\x7a\x3b\x08\x4d\x1b\x6f\xb1\x9c\xa4\xa2\xc2\x35\x40\x64\xdf\xee\x40\xe7\x24\x6d\x2b\x2f\xe2\xee\x44\xb5\xe4\x72\x4f\x5a\x30\x86\xee\x9d\x6c\x65\x90\xda\x58\xf4\xc4\xc7\x7b\xb4\x1a\x37\x83\x1d\xb8\x21\xa6\xef\x30\x94\xa0\x26\x4a\x93\x5e\x46\x8f\x72\x90\xac\x3a\x0c\x00\x2a\x10\x32\x6d\x73\x52\x43\x43\x7b\x61\x2b\x8c\xae\xa2\x20\xa7\x03\xb7\x80\x12\x2a\x62\x0e\xaa\x17\xb5\x53\xea\xe3\xbd\x97\xba\x03\x42\xc9\x4e\x50\xf6\xe0\x1e\xb3\x5a\x61\x20\x61\x7a\xc5\x0e\x71\x8e\x3f\x80\xc1\x75\x66\x33\x08\x0e\x3f\xa5\x09\xbd\x48\x21\x99\x92\xe2\xfc\x32\x06\xab\xc8\x1b\x2a\x0c\x90\x2c\xe0\x1d\xe1\xb9\x85\xb5\x6a\xa9\x65\x87\x89\x36\x63\xa8\xee\x80\x38\x81\x9d\x06\x34\x12\x75\x39\xd5\x53\xd2\x51\x6b\x41\x4b\x74\xac\x5b\xed\x12\x6a\xa2\x07\xb2\xa1\xcc\xf6\xa1\x72\x20\xb7\x1c\x55\x8b\xa4\x04\x5d\x9c\x7e\x94\x59\x7e\xa4\x16\x88\x72\x59\x09\x8f\x94\x59\xcf\xfa\xa5\xca\x69\xf8\x4f\xcf\x35\xc4\x4b\x9d\x7e\x42\x35\x8d\x01\x1b\x62\xc8\x3f\x90\x13\x17\xc2\xf9\xaa\xae\xa1\x8e\xb2\x65\x08\x32\xa2\xc1\xf6\x5a\x42\x4d\x76\xe7\x59\x42\x8f\xbf\xde\x40\xd3\x0b\xc2\xe3\x8c\x0f\xeb\x0c\x79\x5d\x70\x59\xc3\x23\xd4\x8e\xab\xf9\xae\x12\xaf\x5d\xea\x0f\x50\x99\x12\x7d\x2b\x9f\x05\xcb\x94\xf8\xfd\xb1\x7a\xb9\x2f\x41\x3b\xd4\x49\xd2\xd2\x07\x78\xe7\xf8\x65\x98\xfe\x79\xe4\x6d\xd6\xd6\xb9\xab\x50\x79\x5c\x11\x72\xa2\x4c\x7e\x89\xef\x7c\x08\xc0\x7c\xf0\x54\x3e\xd8\x61\x73\x83\x20\x78\x33\x14\xf8\xcf\x28\xe0\x2b\xd9\x6e\x89\xe4\x02\x15\x91\x37\x83\x7e\x33\x0a\x4c\xd5\xc5\x57\xe5\x18\xd9\xdb\x11\xe8\x0a\x25\x6b\x6b\xb2\x45\x1d\x56\xde\xa3\x62\x64\xeb\xf4\x5b\xa1\x88\x94\x26\xdb\xd8\x04\x2b\xf4\x0a\xf9\x29\x83\x59\xb2\x8a\xff\x52\x17\xb6\x51\x8d\x50\xda\x67\xc1\xca\xa2\x60\x61\xb2\x1d\x6c\xfd\xbd\x05\xc1\x13\x64\x3b\xf8\x04\x17\xbc\x5e\x33\xd4\x48\xcc\xe6\xc4\x20\xeb\x1b\xfc\xbb\x84\x8b\x86\x56\x1d\xe3\x80\xf1\x4e\x9e\xfb\x4f\x72\x31\x5b\x88\x7b\x6f\x16\x88\xdd\xae\x5f\xc3\x51\xf6\xae\xd1\x48\xee\x6a\x38\xde\xe1\x43\x32\x44\x4c\x68\x5e\xca\xbf\x7d\xfc\x78\x8f\x01\x93\x9c\xb8\xac\xd5\xc9\x24\xd3\xb0\x89\x78\x7c\xf8\xe7\xbb\x64\xc4\xec\x06\x51\x64\x27\x7b\xc6\x92\x9c\x24\xee\xe2\xc7\x4f\x49\xd1\x98\xb3\xb4\xf4\xb1\xc0\x02\x86\x2f\x8a\x7f\x51\x21\xfc\x00\x1e\xad\xa6\x38\x4c\x9b\xe4\x9b\xbb\x55\xa9\xa8\x52\x56\x95\xb7\x15\x49\xdb\x64\xb3\x2a\xe1\xf6\xf6\x19\x19\x49\x61\x6c\xbd\x65\xb7\xb7\x6f\xfe\xf4\x9b\x05\xd6\x6d\x8d\xf4\xfe\xe2\xc6\x4f\x49\xc1\x94\x50\x7a\xab\x9a\xc6\x71\x55\x85\xbb\x9d\xfc\x95\xbb\x1b\x9b\x08\x49\xb3\x54\xa4\x9b\x67\xb4\x52\xbb\x9e\x0b\x27\x63\xaf\xc6\xeb\x53\x32\xce\x16\xf8\x1c\xdc\x70\xc1\xbd\xc6\x0c\xc3\x24\xe6\x15\x9e\x9f\xae\xb4\x5e\x66\xf0\x0b\x3d\x52\x87\x1f\x07\xc3\x3d\x18\xda\xa1\x49\xeb\x2b\x13\xfa\xbc\x5d\x63\x68\x0e\x01\x11\x72\x32\x4c\xf3\xce\x3f\x0d\xf3\x31\x32\xbf\xbf\xa4\x22\x2f\x6f\xf3\x65\x76\x82\x5b\xd0\xd4\x02\xb2\x98\x8d\x83\x7b\xae\x3d\xdc\xe2\x9b\x6f\xb9\x4f\xe7\x9c\x58\xdd\xc3\x02\xe3\x9e\xba\x8e\xd3\x31\xeb\x69\xb8\x0d\x53\x4f\x49\x51\x48\xe5\x7d\xbf\x14\x42\xcb\x60\x25\x47\xd1\xd3\xdb\x53\x32\x8a\x29\x0a\xac\x4c\x3f\xf5\x42\xfc\x83\xda\x83\xf1\x53\xc6\xd6\xaa\xb7\x7e\x8c\x16\x32\x55\x08\xb5\x51\x64\x99\x8a\x9c\xa4\xac\x5c\x96\xc9\x04\x95\x7b\xa4\x57\xbb\x5f\x00\x3b\x06\xf0\x26\x79\x64\xba\x97\x5e\xfe\x40\xf1\xfb\x66\x67\x77\x6e\x04\x7d\x00\xa7\x46\x77\xb6\x07\x25\xfd\x68\x9c\x9d\x85\x60\x59\x54\x7f\x5e\xe6\xd4\x9e\xbb\xf3\x94\x4b\x98\x99\x71\x58\xc3\x31\xa4\x40\x8c\x62\x4c\x83\xa2\xf0\x4d\x74\xe1\xf7\x99\xad\x6b\xba\xe9\x4e\x80\x37\xb9\x06\x6c\x76\xcd\x56\xaa\xeb\x30\x5f\x14\x67\x0e\x4d\xeb\xa4\xf9\xd3\x9b\x1b\xf8\x99\x97\xa6\x9c\x39\xf1\xc6\x3a\x1f\xb9\xd1\xd4\x59\x97\x97\x2b\x8e\x40\xa2\x9a\xea\x13\x97\xf8\x7a\x39\xb6\x67\x12\xd8\x22\xb8\x88\x9f\xe0\xb2\x7f\x5c\x67\x77\xa6\xad\x53\x34\xbe\x47\xf6\xf5\x86\x75\x66\xa7\xda\x0c\xa6\xbd\x16\xe7\xad\xe1\xb8\xfb\xe3\x6a\xf9\x9e\x3e\xc0\x5b\xd5\xb6\x54\xd6\x98\xe9\xde\x8b\x7e\xdf\x2b\xf1\xf6\xd6\xd5\xe0\x40\xfc\x41\xbd\x55\x6d\x27\xc0\xc2\x66\xb6\x0f\x06\xd2\x6c\xd7\x79\xec\xbb\xae\xba\xa7\x47\x08\x5b\xa3\xee\x65\x50\x64\xd7\x95\x7f\xe9\x9b\xf9\x6a\xa6\xa4\xa5\x5c\x9a\xcc\xb7\x5e\x20\x00\xcf\x8d\x7e\x2d\x9e\x29\x1e\x72\x72\x24\x5c\x92\x8e\x72\xed\x89\x36\xa4\x56\xe3\x7e\xc9\x1b\x72\xc4\xed\x34\xac\x9b\x6e\xa6\x4e\xbe\x6b\x29\x9d\x69\xc7\x79\x44\x10\xdf\x03\x8d\xef\x3f\x66\xdd\xc1\x05\x3e\x62\xbf\x6c\xf6\x0d\xb6\x17\xbb\xbe\xa9\x7e\xe2\x02\x3e\x9d\x3b\x98\xb4\x02\xee\xc4\xea\xde\x97\x58\x6c\xe2\x26\x81\xeb\xd0\xe9\x75\xd4\x1e\xca\xbf\x72\x9d\xe1\x43\xf0\xcc\x92\xc6\xae\x0f\x99\x28\x3d\x20\x18\x7a\x28\xc4\xb2\x25\xc7\xf2\xaa\x7f\x44\xeb\x8c\xbd\xd6\x95\x69\x2e\x0c\x8c\xd5\x5c\xee\x4b\xf7\x98\x35\x36\x8f\x78\x6d\x26\x56\x9b\x41\x38\x50\x83\xdd\xcc\xc5\x89\xc7\x12\x5b\xe9\xb8\xd7\xd9\xc4\x60\xf0\xe0\xe9\xd7\x50\x59\x93\x63\xd4\x3b\x3e\x03\x6e\xda\x16\x0e\x3e\x0b\x1c\x2f\xdc\x90\xf7\xaf\xe6\x38\xd3\x2b\x74\xd2\x51\xcf\x1b\x1c\x43\xf5\xfe\xe2\x9a\xa3\xeb\xb8\x27\x9e\xc1\x1f\x4e\x7e\x7e\xf8\xea\x3b\xf1\x6a\x6f\xfa\x5d\x96\xa4\x29\x6e\x2a\xce\xd1\xe3\x0c\x26\x57\xcd\xf5\x8a\x81\x79\x33\x02\xbe\xd2\x04\x63\x02\xe3\x31\x77\xb1\x52\x46\xa7\x9a\x63\x39\x39\xd7\x1c\xcb\xf1\x04\x73\x2c\x27\x67\x98\x79\x1a\x4c\xa3\x5e\x49\x97\xc1\x43\x46\x5f\xe7\xf0\x77\xb2\xe6\x02\xd0\x87\xef\xfa\xc9\x0b\xf1\xf9\xe3\x55\x28\x1e\x7d\x53\xbd\x15\x40\xf5\x7b\xff\x01\xc5\x64\xa1\x22\x0d\xb5\xcb\xd5\xfd\xf2\xef\x6a\x77\xdf\xd1\x93\xcc\x22\xbe\x49\x12\xfe\x42\x09\x53\xf2\xc7\x47\xd7\xa6\x4c\x80\xac\x4a\x9f\x5b\x00\x17\x67\x7e\xf3\x7a\x29\x8b\x4b\x00\xb9\x23\x36\x26\x56\x27\x22\x2e\xc9\x17\x39\xa8\x11\xbe\x71\xc2\x1e\x1e\xa7\x27\xb1\x49\xc0\x24\x59\x59\x16\x9b\xe4\x12\x33\x6e\x03\xc8\xd2\xfa\x36\x9e\x64\x4b\x93\xad\x5f\x8e\x73\x63\x65\xf9\x77\xee\x1a\x3e\x2e\x09\x1f\x8b\x0b\x4c\x03\xb8\x28\xc8\x27\xcd\x5b\x7f\x92\x33\x1d\x65\x93\x03\x19\xd6\x34\xbc\x55\xbe\x52\x24\x3f\xa7\xe6\x15\xca\x48\xcd\xab\x3f\x24\x93\x4c\x0f\x15\xa5\xe1\xb2\x76\x52\x72\xaf\xeb\x66\x21\x98\xc7\x82\xe9\x2c\x8c\xa7\x74\x25\x72\xd2\x9a\xfd\xbc\x30\xc5\x7c\x16\x58\x1c\xa8\x61\x0a\x4f\x4e\x93\x5a\x1f\x55\x9e\x18\xd3\xc4\x87\xce\x86\x0b\xd0\xf0\x37\x72\x9d\x16\x8d\xe1\xe7\x61\x32\x25\x26\x6f\xe2\x22\x15\x00\xec\xa8\x01\x3c\x4b\x66\xc3\x9e\xb0\xc1\x9a\x3d\xce\xba\xd2\xb0\x8c\x20\x7c\x9f\xf6\x92\xf0\x18\x3a\x27\xf0\x65\x10\x51\x2e\xae\xbf\xf0\x68\x8d\xa5\x3a\xec\x5b\x0d\xe8\xf2\x9d\x62\x99\x55\xfe\x9b\x4d\xc6\x94\x28\xde\xdc\xba\x40\xce\xc9\x38\x8b\x36\x2f\xde\xdc\x62\x94\x6f\x36\xcf\xb1\x06\x59\xaf\x33\xfe\x15\x6c\x83\xbe\x81\xe1\x07\x38\x85\x82\x30\xd6\x03\x17\x22\x79\xd0\x29\x77\x00\xf2\x81\xfc\xfd\xa7\x1f\xd1\xbf\xd7\x9c\x61\xc9\x87\xcf\x89\xfb\xc1\xbe\xe3\xf2\x4a\xe8\x44\x0f\xaf\xc5\x0b\x64\xcf\x82\x82\x84\x72\xf7\x43\x5d\x0f\xba\x21\x8a\xcd\x6a\x24\xad\xd7\x6b\x5f\x66\x8c\xd5\x39\x31\xd0\x6d\x26\x15\xc6\xf4\xc2\x5e\xf6\xb2\x69\xdd\xc9\x92\xec\xf3\xcf\xa9\xf9\xea\x2a\x87\xcf\x86\x6c\x64\x80\x15\x03\x28\x3b\x60\xbd\x30\x56\x57\x7b\x9f\x85\x21\x8f\xa3\x9a\x61\xb1\xe9\x2c\xb9\x34\xa0\x6d\xe6\x05\xe6\x6e\xe5\x66\xa9\xcb\xf2\x04\x33\x05\xa6\x79\x10\x21\x35\xd0\xb9\xef\x29\xff\xef\x77\x94\xb0\xee\xcb\x97\x64\x82\xc1\x33\x75\xff\x17\x19\x8b\x8b\xab\x98\xbe\xfe\x24\x59\xf9\x2a\x21\x65\xe9\x96\x97\x25\x49\x36\x59\xf9\x6a\xe3\xfa\xe9\x3f\x26\x93\x5d\xcf\xfd\x63\x01\xb9\xfe\x2f\x00\x00\xff\xff\xe6\x74\x28\x8b\xad\x1a\x00\x00" func runtimePluginsLinterLinterLuaBytes() ([]byte, error) { return bindataRead( diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index c208820a..ad018c63 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -483,6 +483,14 @@ func (w *BufWindow) displayBuffer() { } } + for _, m := range b.Messages { + if bloc.GreaterEqual(m.Start) && bloc.LessThan(m.End) || + bloc.LessThan(m.End) && bloc.GreaterEqual(m.Start) { + style = style.Underline(true) + break + } + } + if r == '\t' { if s, ok := config.Colorscheme["indent-char"]; ok { style = s diff --git a/runtime/plugins/linter/linter.lua b/runtime/plugins/linter/linter.lua index a4cac3f0..e5969981 100644 --- a/runtime/plugins/linter/linter.lua +++ b/runtime/plugins/linter/linter.lua @@ -18,14 +18,20 @@ local linters = {} -- errorformat: how to parse the linter/compiler process output -- %f: file, %l: line number, %m: error/warning message -- os: list of OSs this linter is supported or unsupported on --- optional param, default: [] +-- optional param, default: {} -- whitelist: should the OS list be a blacklist (do not run the linter for these OSs) --- or a whitelist (only run the linter for these OSs) +-- or a whitelist (only run the linter for these OSs) -- optional param, default: false (should blacklist) -- domatch: should the filetype be interpreted as a lua pattern to match with --- the actual filetype, or should the linter only activate on an exact match +-- the actual filetype, or should the linter only activate on an exact match -- optional param, default: false (require exact match) -function makeLinter(name, filetype, cmd, args, errorformat, os, whitelist, domatch) +-- loffset: line offset will be added to the line number returned by the linter +-- useful if the linter returns 0-indexed lines +-- optional param, default: 0 +-- coffset: column offset will be added to the col number returned by the linter +-- useful if the linter returns 0-indexed columns +-- optional param, default: 0 +function makeLinter(name, filetype, cmd, args, errorformat, os, whitelist, domatch, loffset, coffset) if linters[name] == nil then linters[name] = {} linters[name].filetype = filetype @@ -35,6 +41,8 @@ function makeLinter(name, filetype, cmd, args, errorformat, os, whitelist, domat linters[name].os = os or {} linters[name].whitelist = whitelist or false linters[name].domatch = domatch or false + linters[name].loffset = loffset or 0 + linters[name].coffset = coffset or 0 end end @@ -48,24 +56,24 @@ function init() devnull = "NUL" end - makeLinter("gcc", "c", "gcc", {"-fsyntax-only", "-Wall", "-Wextra", "%f"}, "%f:%l:%d+:.+: %m") - makeLinter("gcc", "c++", "gcc", {"-fsyntax-only","-std=c++14", "-Wall", "-Wextra", "%f"}, "%f:%l:%d+:.+: %m") + makeLinter("gcc", "c", "gcc", {"-fsyntax-only", "-Wall", "-Wextra", "%f"}, "%f:%l:%c:.+: %m") + makeLinter("gcc", "c++", "gcc", {"-fsyntax-only","-std=c++14", "-Wall", "-Wextra", "%f"}, "%f:%l:%c:.+: %m") makeLinter("dmd", "d", "dmd", {"-color=off", "-o-", "-w", "-wi", "-c", "%f"}, "%f%(%l%):.+: %m") makeLinter("gobuild", "go", "go", {"build", "-o", devnull}, "%f:%l: %m") - makeLinter("golint", "go", "golint", {"%f"}, "%f:%l:%d+: %m") + makeLinter("golint", "go", "golint", {"%f"}, "%f:%l:%c: %m") makeLinter("javac", "java", "javac", {"-d", "%d", "%f"}, "%f:%l: error: %m") makeLinter("jshint", "javascript", "jshint", {"%f"}, "%f: line %l,.+, %m") makeLinter("literate", "literate", "lit", {"-c", "%f"}, "%f:%l:%m", {}, false, true) - makeLinter("luacheck", "lua", "luacheck", {"--no-color", "%f"}, "%f:%l:%d+: %m") - makeLinter("nim", "nim", "nim", {"check", "--listFullPaths", "--stdout", "--hints:off", "%f"}, "%f.%l, %d+. %m") - makeLinter("clang", "objective-c", "xcrun", {"clang", "-fsyntax-only", "-Wall", "-Wextra", "%f"}, "%f:%l:%d+:.+: %m") + makeLinter("luacheck", "lua", "luacheck", {"--no-color", "%f"}, "%f:%l:%c: %m") + makeLinter("nim", "nim", "nim", {"check", "--listFullPaths", "--stdout", "--hints:off", "%f"}, "%f.%l, %c. %m") + makeLinter("clang", "objective-c", "xcrun", {"clang", "-fsyntax-only", "-Wall", "-Wextra", "%f"}, "%f:%l:%c:.+: %m") makeLinter("pyflakes", "python", "pyflakes", {"%f"}, "%f:%l:.-:? %m") makeLinter("mypy", "python", "mypy", {"%f"}, "%f:%l: %m") makeLinter("pylint", "python", "pylint", {"--output-format=parseable", "--reports=no", "%f"}, "%f:%l: %m") - makeLinter("shfmt", "shell", "shfmt", {"%f"}, "%f:%l:%d+: %m") - makeLinter("switfc", "swift", "xcrun", {"swiftc", "%f"}, "%f:%l:%d+:.+: %m", {"darwin"}, true) - makeLinter("switfc", "swiftc", {"%f"}, "%f:%l:%d+:.+: %m", {"linux"}, true) - makeLinter("yaml", "yaml", "yamllint", {"--format", "parsable", "%f"}, "%f:%l:%d+:.+ %m") + makeLinter("shfmt", "shell", "shfmt", {"%f"}, "%f:%l:%c: %m") + makeLinter("swiftc", "swift", "xcrun", {"swiftc", "%f"}, "%f:%l:%c:.+: %m", {"darwin"}, true) + makeLinter("swiftc", "swiftc", {"%f"}, "%f:%l:%c:.+: %m", {"linux"}, true) + makeLinter("yaml", "yaml", "yamllint", {"--format", "parsable", "%f"}, "%f:%l:%c:.+ %m") config.MakeCommand("lint", "linter.lintCmd", config.NoComplete) end @@ -109,7 +117,7 @@ function runLinter(buf) end if ftmatch then - lint(buf, k, v.cmd, args, v.errorformat) + lint(buf, k, v.cmd, args, v.errorformat, v.loffset, v.coffset) end end end @@ -119,23 +127,35 @@ function onSave(bp) return false end -function lint(buf, linter, cmd, args, errorformat) +function lint(buf, linter, cmd, args, errorformat, loff, coff) buf:ClearMessages("linter") - shell.JobSpawn(cmd, args, "", "", "linter.onExit", buf, linter, errorformat) + shell.JobSpawn(cmd, args, "", "", "linter.onExit", buf, linter, errorformat, loff, coff) end -function onExit(output, buf, linter, errorformat) +function onExit(output, buf, linter, errorformat, loff, coff) local lines = split(output, "\n") - local regex = errorformat:gsub("%%f", "(..-)"):gsub("%%l", "(%d+)"):gsub("%%m", "(.+)") + local regex = errorformat:gsub("%%f", "(..-)"):gsub("%%l", "(%d+)"):gsub("%%c", "(%d+)"):gsub("%%m", "(.+)") for _,line in ipairs(lines) do -- Trim whitespace line = line:match("^%s*(.+)%s*$") if string.find(line, regex) then - local file, line, msg = string.match(line, regex) + local file, line, col, msg = string.match(line, regex) + local hascol = true + if not string.find(errorformat, "%%c") then + hascol = false + msg = col + end if basename(buf.Path) == basename(file) then - local bmsg = buffer.NewMessageAtLine("linter", msg, tonumber(line), buffer.MTError) + local bmsg = nil + if hascol then + local mstart = buffer.Loc(tonumber(col-1+coff), tonumber(line-1+loff)) + local mend = buffer.Loc(tonumber(col+coff), tonumber(line-1+loff)) + bmsg = buffer.NewMessage("linter", msg, mstart, mend, buffer.MTError) + else + bmsg = buffer.NewMessageAtLine("linter", msg, tonumber(line+loff), buffer.MTError) + end buf:AddMessage(bmsg) end end From adaddba6968a744670cb0496ccdfa5225f050bbb Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 6 Aug 2019 22:24:03 -0700 Subject: [PATCH 153/231] Add plugin info.json support --- internal/action/command.go | 81 +++++++++++++++++++- internal/action/infocomplete.go | 56 ++++++++++++++ internal/config/plugin.go | 9 ++- internal/config/plugin_manager.go | 66 ++++++++++++++++ internal/config/rtfiles.go | 13 +++- internal/config/runtime.go | 115 ++++++++++++++++++++++++++++ runtime/plugins/autoclose/info.json | 10 +++ runtime/plugins/comment/info.json | 10 +++ runtime/plugins/ftoptions/info.json | 10 +++ runtime/plugins/linter/info.json | 10 +++ runtime/plugins/literate/info.json | 10 +++ 11 files changed, 381 insertions(+), 9 deletions(-) create mode 100644 internal/config/plugin_manager.go create mode 100644 runtime/plugins/autoclose/info.json create mode 100644 runtime/plugins/comment/info.json create mode 100644 runtime/plugins/ftoptions/info.json create mode 100644 runtime/plugins/linter/info.json create mode 100644 runtime/plugins/literate/info.json diff --git a/internal/action/command.go b/internal/action/command.go index 03949b0f..39dc2c2a 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -1,6 +1,7 @@ package action import ( + "bytes" "errors" "fmt" "os" @@ -52,7 +53,7 @@ func InitCommands() { "help": Command{(*BufPane).HelpCmd, HelpComplete}, "eval": Command{(*BufPane).EvalCmd, nil}, "log": Command{(*BufPane).ToggleLogCmd, nil}, - "plugin": Command{(*BufPane).PluginCmd, nil}, + "plugin": Command{(*BufPane).PluginCmd, PluginComplete}, "reload": Command{(*BufPane).ReloadCmd, nil}, "reopen": Command{(*BufPane).ReopenCmd, nil}, "cd": Command{(*BufPane).CdCmd, buffer.FileComplete}, @@ -115,6 +116,8 @@ func CommandAction(cmd string) BufKeyAction { } } +var PluginCmds = []string{"list", "info", "version"} + // PluginCmd installs, removes, updates, lists, or searches for given plugins func (h *BufPane) PluginCmd(args []string) { if len(args) <= 0 { @@ -132,10 +135,82 @@ func (h *BufPane) PluginCmd(args []string) { } else { en = "disabled" } - WriteLog(fmt.Sprintf("%s: %s\n", pl.Name, en)) + WriteLog(fmt.Sprintf("%s: %s", pl.Name, en)) + if pl.Default { + WriteLog(" (default)\n") + } else { + WriteLog("\n") + } + } + WriteLog("Default plugins come pre-installed with micro.") + case "version": + if len(args) <= 1 { + InfoBar.Error("No plugin provided to give info for") + return + } + found := false + for _, pl := range config.Plugins { + if pl.Name == args[1] { + found = true + if pl.Info == nil { + InfoBar.Message("Sorry no version for", pl.Name) + return + } + + WriteLog("Version: " + pl.Info.Vstr + "\n") + } + } + if !found { + InfoBar.Message(args[1], "is not installed") + } + case "info": + if len(args) <= 1 { + InfoBar.Error("No plugin provided to give info for") + return + } + found := false + for _, pl := range config.Plugins { + if pl.Name == args[1] { + found = true + if pl.Info == nil { + InfoBar.Message("Sorry no info for ", pl.Name) + return + } + + var buffer bytes.Buffer + buffer.WriteString("Name: ") + buffer.WriteString(pl.Info.Name) + buffer.WriteString("\n") + buffer.WriteString("Description: ") + buffer.WriteString(pl.Info.Desc) + buffer.WriteString("\n") + buffer.WriteString("Website: ") + buffer.WriteString(pl.Info.Site) + buffer.WriteString("\n") + buffer.WriteString("Installation link: ") + buffer.WriteString(pl.Info.Install) + buffer.WriteString("\n") + buffer.WriteString("Version: ") + buffer.WriteString(pl.Info.Vstr) + buffer.WriteString("\n") + buffer.WriteString("Requirements:") + buffer.WriteString("\n") + for _, r := range pl.Info.Require { + buffer.WriteString(" - ") + buffer.WriteString(r) + buffer.WriteString("\n") + } + + WriteLog(buffer.String()) + } + } + if !found { + InfoBar.Message(args[1], "is not installed") + return } default: - valid = false + InfoBar.Error("Not a valid plugin command") + return } if valid && h.Buf.Type != buffer.BTLog { diff --git a/internal/action/infocomplete.go b/internal/action/infocomplete.go index 15a175da..598f3873 100644 --- a/internal/action/infocomplete.go +++ b/internal/action/infocomplete.go @@ -197,6 +197,62 @@ func OptionValueComplete(b *buffer.Buffer) ([]string, []string) { return completions, suggestions } +// OptionComplete autocompletes options +func PluginCmdComplete(b *buffer.Buffer) ([]string, []string) { + c := b.GetActiveCursor() + input, argstart := buffer.GetArg(b) + + var suggestions []string + for _, cmd := range PluginCmds { + if strings.HasPrefix(cmd, input) { + suggestions = append(suggestions, cmd) + } + } + + sort.Strings(suggestions) + completions := make([]string, len(suggestions)) + for i := range suggestions { + completions[i] = util.SliceEndStr(suggestions[i], c.X-argstart) + } + return completions, suggestions +} + +// PluginComplete completes values for the plugin command +func PluginComplete(b *buffer.Buffer) ([]string, []string) { + c := b.GetActiveCursor() + l := b.LineBytes(c.Y) + l = util.SliceStart(l, c.X) + input, argstart := buffer.GetArg(b) + + completeValue := false + args := bytes.Split(l, []byte{' '}) + if len(args) >= 2 { + for _, cmd := range PluginCmds { + if cmd == string(args[len(args)-2]) { + completeValue = true + break + } + } + } + if !completeValue { + return PluginCmdComplete(b) + } + + var suggestions []string + for _, pl := range config.Plugins { + if strings.HasPrefix(pl.Name, input) { + suggestions = append(suggestions, pl.Name) + } + } + sort.Strings(suggestions) + + completions := make([]string, len(suggestions)) + for i := range suggestions { + completions[i] = util.SliceEndStr(suggestions[i], c.X-argstart) + } + return completions, suggestions +} + // // MakeCompletion registers a function from a plugin for autocomplete commands // func MakeCompletion(function string) Completion { // pluginCompletions = append(pluginCompletions, LuaFunctionComplete(function)) diff --git a/internal/config/plugin.go b/internal/config/plugin.go index 40a526e9..f6599619 100644 --- a/internal/config/plugin.go +++ b/internal/config/plugin.go @@ -65,10 +65,11 @@ func RunPluginFnBool(fn string, args ...lua.LValue) (bool, error) { } type Plugin struct { - Name string // name of plugin - Info RuntimeFile // json file containing info - Srcs []RuntimeFile // lua files - Loaded bool + Name string // name of plugin + Info *PluginInfo // json file containing info + Srcs []RuntimeFile // lua files + Loaded bool + Default bool // pre-installed plugin } func (p *Plugin) IsEnabled() bool { diff --git a/internal/config/plugin_manager.go b/internal/config/plugin_manager.go new file mode 100644 index 00000000..19f53cdc --- /dev/null +++ b/internal/config/plugin_manager.go @@ -0,0 +1,66 @@ +package config + +import ( + "bytes" + "encoding/json" + "errors" +) + +var ( + ErrMissingName = errors.New("Missing or empty name field") + ErrMissingDesc = errors.New("Missing or empty description field") + ErrMissingSite = errors.New("Missing or empty website field") + ErrMissingInstall = errors.New("Missing or empty install field") + ErrMissingVstr = errors.New("Missing or empty versions field") + ErrMissingRequire = errors.New("Missing or empty require field") +) + +// PluginInfo contains all the needed info about a plugin +// The info is just strings and are not used beyond that (except +// the Site and Install fields should be valid URLs). This means +// that the requirements for example can be formatted however the +// plugin maker decides, the fields will only be parsed by humans +// Name: name of plugin +// Desc: description of plugin +// Site: home website of plugin +// Install: install link for plugin (can be link to repo or zip file) +// Vstr: version +// Require: list of dependencies and requirements +type PluginInfo struct { + Name string `json:"name"` + Desc string `json:"description"` + Site string `json:"website"` + Install string `json:"install"` + Vstr string `json:"version"` + Require []string `json:"require"` +} + +// NewPluginInfo parses a JSON input into a valid PluginInfo struct +// Returns an error if there are any missing fields or any invalid fields +// There are no optional fields in a plugin info json file +func NewPluginInfo(data []byte) (*PluginInfo, error) { + var info PluginInfo + + dec := json.NewDecoder(bytes.NewReader(data)) + // dec.DisallowUnknownFields() // Force errors + + if err := dec.Decode(&info); err != nil { + return nil, err + } + + // if len(info.Name) == 0 { + // return nil, ErrMissingName + // } else if len(info.Desc) == 0 { + // return nil, ErrMissingDesc + // } else if len(info.Site) == 0 { + // return nil, ErrMissingSite + // } else if len(info.Install) == 0 { + // return nil, ErrMissingInstall + // } else if len(info.Vstr) == 0 { + // return nil, ErrMissingVstr + // } else if len(info.Require) == 0 { + // return nil, ErrMissingRequire + // } + + return &info, nil +} diff --git a/internal/config/rtfiles.go b/internal/config/rtfiles.go index 16cc04d1..fdc33889 100644 --- a/internal/config/rtfiles.go +++ b/internal/config/rtfiles.go @@ -154,7 +154,11 @@ func InitRuntimeFiles() { if strings.HasSuffix(f.Name(), ".lua") { p.Srcs = append(p.Srcs, realFile(filepath.Join(plugdir, d.Name(), f.Name()))) } else if f.Name() == "info.json" { - p.Info = realFile(filepath.Join(plugdir, d.Name(), "info.json")) + data, err := ioutil.ReadFile(filepath.Join(plugdir, d.Name(), "info.json")) + if err != nil { + continue + } + p.Info, _ = NewPluginInfo(data) } } Plugins = append(Plugins, p) @@ -167,11 +171,16 @@ func InitRuntimeFiles() { if srcs, err := AssetDir(filepath.Join(plugdir, d)); err == nil { p := new(Plugin) p.Name = d + p.Default = true for _, f := range srcs { if strings.HasSuffix(f, ".lua") { p.Srcs = append(p.Srcs, assetFile(filepath.Join(plugdir, d, f))) } else if f == "info.json" { - p.Info = assetFile(filepath.Join(plugdir, d, "info.json")) + data, err := Asset(filepath.Join(plugdir, d, "info.json")) + if err != nil { + continue + } + p.Info, _ = NewPluginInfo(data) } } Plugins = append(Plugins, p) diff --git a/internal/config/runtime.go b/internal/config/runtime.go index 0fa2f4e3..4764f311 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -41,10 +41,15 @@ // runtime/help/plugins.md // runtime/help/tutorial.md // runtime/plugins/autoclose/autoclose.lua +// runtime/plugins/autoclose/info.json // runtime/plugins/comment/comment.lua +// runtime/plugins/comment/info.json // runtime/plugins/ftoptions/ftoptions.lua +// runtime/plugins/ftoptions/info.json +// runtime/plugins/linter/info.json // runtime/plugins/linter/linter.lua // runtime/plugins/literate/README.md +// runtime/plugins/literate/info.json // runtime/plugins/literate/literate.lua // runtime/syntax/LICENSE // runtime/syntax/PowerShell.yaml @@ -1052,6 +1057,26 @@ func runtimePluginsAutocloseAutocloseLua() (*asset, error) { return a, nil } +var _runtimePluginsAutocloseInfoJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x8f\xc1\x4e\xc3\x30\x0c\x86\xcf\xf4\x29\xac\x9c\xab\x74\x70\x9c\x04\x12\xcf\x81\x38\xb8\xae\x59\x2d\xd2\x24\xb3\x1d\xd0\x40\xbc\x3b\x6a\x60\xf7\x1d\xfd\xfd\xfe\xf5\xd9\xdf\x03\x00\x40\xc8\xb8\x71\x38\x42\x48\x92\x9d\x35\x8c\x7f\x74\x61\x23\x95\xea\x52\xf2\x1e\x3e\x37\x2f\x1b\xba\x10\xa6\x74\x81\x9a\x90\xd8\x80\x52\x31\xc9\x27\xa0\x15\x15\xc9\x59\x0d\xde\x8a\xc2\xb9\x15\x67\x1b\xa1\xa2\x72\xf6\x95\x6d\x1f\x66\x45\x7a\x67\xb7\x11\xd8\x29\xc6\x78\xf5\x7c\xf2\x6c\xe2\xfd\x80\xd5\xbd\xda\x71\x9a\x4e\xe2\x6b\x9b\x23\x95\x6d\xfa\xba\xf0\x22\x8b\xe0\xb4\x09\x69\x09\xe3\x70\x17\x24\x9b\x63\x4a\xb7\x16\xba\xe4\x83\xd5\xfe\x1f\xb9\x8f\x87\x78\xb8\x72\xe5\x73\x13\xdd\xe5\x2f\x1d\x74\xd8\x9b\xf0\xf4\x08\x0f\x7d\xb5\x07\xaf\xc3\xcf\xf0\x1b\x00\x00\xff\xff\xb5\xd0\x75\x6b\x2f\x01\x00\x00" + +func runtimePluginsAutocloseInfoJsonBytes() ([]byte, error) { + return bindataRead( + _runtimePluginsAutocloseInfoJson, + "runtime/plugins/autoclose/info.json", + ) +} + +func runtimePluginsAutocloseInfoJson() (*asset, error) { + bytes, err := runtimePluginsAutocloseInfoJsonBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/plugins/autoclose/info.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimePluginsCommentCommentLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x57\x5b\x6f\x2b\x35\x10\x7e\xcf\xaf\x30\x7b\x88\x64\xb7\xd9\xed\x49\x79\x8b\x08\x12\xed\x43\x91\x08\x07\xa9\xad\x20\x55\x14\xa4\xbd\xcc\x26\x3e\x78\xbd\x2b\xdb\x0b\x44\x08\x7e\x3b\xf2\x65\xaf\xde\x84\x1c\x21\xc1\x0b\x95\xda\x6c\x3e\xcf\x37\x63\xcf\x7c\xe3\xd9\xb2\x32\x8d\x19\xaa\x15\x65\x68\x8d\x68\x51\x95\x42\xe1\xa0\xa0\xa9\x28\xef\x34\x18\x90\x99\xb5\x48\x4b\x9e\xd3\x83\x67\x63\xe1\xd6\x2a\xa9\xf3\x1c\x84\x67\x65\xe1\x80\xcc\x9c\x59\xae\xd0\x1a\xfd\xfe\xc7\x6c\x96\xab\x5d\x90\x06\x7b\xb4\x46\xc1\xdd\x1d\x9a\xcb\xc0\x22\xb7\xb7\x1e\x76\x28\x3d\xa8\x3a\xa9\x63\xc9\x2d\xfc\x6e\x84\x7e\x31\x86\x8f\xaa\x60\x16\xfb\xf2\xb3\x30\x44\x73\x89\xc2\xf0\x2b\xbb\xf4\x31\xfe\x25\xf6\x9c\x7f\xac\x19\x8d\x3d\xdf\x20\x98\x87\x1d\x2b\x8f\x2c\x6a\xa9\x3c\x50\x1e\x81\x79\x6c\x56\xbb\x20\x66\x4f\xdd\x7e\x64\x2a\x68\xe5\xfb\x10\x75\x72\x1a\xbb\xc8\xfc\x48\xbf\xd2\x7c\xc8\x9d\xe5\x35\x4f\x15\x2d\x39\x2a\xf9\x83\x29\xc6\xf7\x15\x70\x9c\xd4\x39\x99\x21\x84\x10\xcd\x75\xe9\xa2\x17\x50\x8a\xf2\x83\xdc\x05\x69\x59\x14\xc0\x95\x3a\x55\xa0\x1d\xad\x11\xa7\x0c\xa9\x23\x70\x63\xee\x28\xb9\xda\x0d\x59\x39\x65\x60\x29\x7b\xf4\xe7\x04\x47\xff\x5c\x8c\x73\xd1\x65\xeb\x06\x98\x84\x4f\xf0\xe9\x72\xd5\xb2\x79\x36\x6b\x3e\xf5\x6f\x97\x1b\x47\xdc\x50\x0e\x38\xa9\x16\x88\x51\x0e\x1f\x6c\x82\xac\x6e\x35\x80\xd6\x28\xa9\xa2\x87\x3a\x5f\x19\x3b\xcf\xc6\x39\x79\x3d\x55\x9d\xe9\xb9\xcd\xf9\xb4\x67\x38\xc0\x6f\x7a\xcf\x3f\xcd\xe5\x4d\x80\xa2\xa8\xef\x6f\x75\x90\x75\x82\x83\xf9\x4d\xb0\x40\xfa\x2f\x69\x80\xd0\x00\x61\x07\x44\x06\x88\x3a\xe0\xd6\x00\xb7\x1d\xb0\x37\xc0\xbe\x03\x76\x06\xd8\x75\xc0\x5c\x6a\x04\x47\x37\x24\xe8\x9f\x4f\x82\xbe\x29\xc2\xa4\x8a\x1e\x6b\x21\x4b\xa1\x3f\x5e\x80\x81\x49\x61\xff\x40\xb5\xa8\x4a\x39\x34\xdd\x94\x69\xcf\x82\xf2\xcc\x9c\x55\x2a\x41\xf9\x21\xca\x29\xcf\x70\xef\xb4\x7a\x3b\x73\x19\x10\x14\xa2\x65\x23\x52\x67\x5a\xc4\x2a\x3d\x9a\xd4\x2f\x06\x89\x23\x43\xb9\xd5\xdc\x2d\x42\xb6\xb1\x95\xfb\x3b\x7e\x4b\x75\x25\x7e\x86\x8a\xc5\x29\x60\x7b\x81\xe9\xfd\xe3\xf7\x8d\x2e\x16\xa8\x87\xbe\xb3\xce\x9a\x15\x7d\x75\x46\x4f\xa0\x36\x10\x67\x94\x1f\x7e\x3c\x52\x05\xb2\xd2\x9e\xb4\x05\xd1\x75\x1d\x6d\x8e\xf4\x1b\xab\xcd\xd8\xea\x9b\x58\xb6\xc9\xc5\x64\xa2\x9b\x26\xcb\xb0\x5b\xee\xa3\x37\x7d\x5c\x60\xe6\xf1\x1a\xca\x7d\x47\xb9\xbf\x92\xb2\xdc\x47\xdb\x2e\xca\xf6\xca\x28\xdb\x2e\xca\xf6\x42\x4b\xb7\x7c\x6d\x6f\xc5\x14\x6d\x51\x68\x55\x73\xc6\xf4\xad\x33\x7d\xf3\xfb\xbd\x1f\x62\xd0\x74\xad\x3c\x26\x7a\xcd\x74\x81\x12\xb4\xb0\x95\xfb\x37\x15\xf2\xbf\x3e\x3e\x5d\x1f\xb7\xff\x40\x1f\xee\xb3\x4b\xee\x33\x68\x99\x28\xc0\x64\xb8\x10\x6d\x62\xa9\x7e\xa0\xb2\x8e\xd9\xd6\xde\xf1\x8e\xf0\x04\x0d\x8c\xc9\xf4\x6c\xe9\x8a\xa5\x07\x8c\x54\xb1\x30\xe3\x66\xa1\xa3\x77\x65\xce\x4b\xd1\xcc\x1a\xdf\x04\x65\x65\xbb\xf7\xa9\x89\x45\x2e\x4f\x37\x9c\x54\xdd\xcc\xbf\x4a\x47\x7d\xc3\x71\x81\x57\x4f\x02\x62\x05\xe2\xf5\x18\x73\x7c\x66\x28\xec\xee\xf7\x13\xca\xb4\x1d\xd8\x9c\x69\x7d\x49\xa9\x03\xde\xa5\xdd\x68\x2d\xac\xd1\x7b\x3f\x98\xcb\x88\x0b\xd5\x3c\x35\x83\x65\xac\x84\x51\x76\x87\x35\xbb\xd0\x1e\xa3\x2a\x4e\xea\xf6\xca\x63\x7b\x2d\x76\xfe\xd8\xf7\xff\xe5\xb1\x97\x67\x8e\x3d\x75\xe7\x8e\xc5\xda\xeb\xcb\x73\x9a\x35\x17\xaf\xb4\xab\x02\x54\x2d\x38\xc2\xd2\x5d\xcd\xfa\x0d\x09\x47\x21\x99\xcb\x9b\xcf\xcd\xbb\xcb\x32\x20\xe3\xae\x73\xf3\xde\x34\x91\xc4\x2f\xe6\xdb\xe2\x45\x7f\x1b\xf8\x6c\xcc\xea\xa4\xb1\x59\x2e\x1c\xc6\x80\x63\x4b\x20\xeb\xb5\x79\xb0\x21\xec\x3f\x3e\xd1\x77\xf1\xcf\xf0\x58\x16\x45\xcc\x33\xdc\xbc\xdb\xe9\xcd\xb8\xc7\xa8\x83\x1c\xe1\x43\xf9\x58\x16\x15\x03\x05\xa4\xf1\xf1\x2a\x4e\x0f\x94\x67\xdf\xc2\x09\x07\x5f\x33\x15\xde\x69\x07\xac\x8e\x57\xbe\x93\x3c\x66\x12\xc8\xec\xaf\x00\x00\x00\xff\xff\x93\xd1\x8d\x0e\xb5\x0d\x00\x00" func runtimePluginsCommentCommentLuaBytes() ([]byte, error) { @@ -1072,6 +1097,26 @@ func runtimePluginsCommentCommentLua() (*asset, error) { return a, nil } +var _runtimePluginsCommentInfoJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x8f\xb1\x4e\x43\x31\x0c\x45\x67\xde\x57\x5c\x65\xae\xf2\x0a\x63\x25\xd8\xf8\x02\x46\xc4\x90\x97\xb8\xaf\x16\x49\x1c\x12\x07\x28\x88\x7f\x47\x4d\xdb\xbd\xeb\xb9\xbe\x3e\xf6\xef\x04\x00\x26\xbb\x44\x66\x07\xe3\x25\x25\xca\x6a\x36\x67\x1c\xa8\xf9\xca\x45\x59\xf2\x29\x7d\xe9\xa5\x48\x55\xec\xa5\xc2\x75\x95\xe4\x94\xbd\x8b\xf1\x88\x4b\x8f\xf3\x8a\x25\x8a\x7f\x6f\x90\x3d\xbc\x04\xb2\x78\xfe\x56\xca\x8d\x97\x48\x70\x39\x20\xf5\xa8\x5c\x22\x21\xba\xbc\x76\xb7\x52\x43\x3b\xaf\xa5\x60\xaf\xde\x2f\x5a\x1a\xeb\xb8\xe8\xa0\x5a\xda\x6e\x9e\x57\xd6\x43\x5f\xac\x97\x34\xff\x1c\x29\x70\x60\x37\x27\xf6\x55\xcc\x66\xba\x33\x9c\x9b\xba\x18\x6f\x2d\x0c\xc9\x27\xd5\x76\x79\xec\xde\x6e\xed\xf6\xca\x2b\x7d\x74\xae\x27\xf9\xeb\x00\x03\x8e\x26\x9e\x1e\xf1\x30\x46\x47\xf0\x36\xfd\x4d\xff\x01\x00\x00\xff\xff\x56\x49\x72\x08\x40\x01\x00\x00" + +func runtimePluginsCommentInfoJsonBytes() ([]byte, error) { + return bindataRead( + _runtimePluginsCommentInfoJson, + "runtime/plugins/comment/info.json", + ) +} + +func runtimePluginsCommentInfoJson() (*asset, error) { + bytes, err := runtimePluginsCommentInfoJsonBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/plugins/comment/info.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimePluginsFtoptionsFtoptionsLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\xcf\xb1\x0e\x82\x40\x0c\x06\xe0\x9d\xa7\x68\x6e\x82\xc4\x49\x37\x12\x16\x07\x57\x06\x7d\x81\x3b\x6c\xe5\xe2\xd1\x5e\xb8\x32\xf0\xf6\x86\x13\x75\x82\xc4\x26\x5d\xfa\x25\xfd\xf3\xd3\xc4\x9d\x7a\x61\x10\x3e\x4f\x44\x38\xb6\x11\xb9\x74\x55\x01\x00\x10\xa4\xb3\x01\x48\xa1\x01\x57\x5f\x7c\xc0\xdb\x1c\xb1\xac\x8a\x8c\x9e\xb2\x34\x60\x1e\x62\x40\xc6\x7c\x5c\x2f\x83\x7d\x22\xf9\x80\x06\xb4\x47\xce\xb2\x8c\xab\xaf\xa8\x6d\x5c\xf2\x4a\xa3\xd6\x25\x95\x14\x6d\x87\xc9\x1c\xc0\x08\x91\x79\xc7\x62\x48\xf8\xfb\x4e\x3e\xf5\xdf\xff\xeb\xac\x14\x67\xed\x85\x77\xf1\xb8\xab\xa7\x0d\x9d\xed\x10\x36\x88\xfd\xf0\x57\x2b\xfe\x94\xe2\x7b\xb1\xec\x2b\x00\x00\xff\xff\x55\x1f\xb6\x5b\x71\x01\x00\x00" func runtimePluginsFtoptionsFtoptionsLuaBytes() ([]byte, error) { @@ -1092,6 +1137,46 @@ func runtimePluginsFtoptionsFtoptionsLua() (*asset, error) { return a, nil } +var _runtimePluginsFtoptionsInfoJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x8f\xbd\x4e\xc4\x30\x10\x84\x6b\xf2\x14\x23\x57\x20\x9d\x92\x83\x32\x12\xbc\x01\x15\x25\xa2\x70\x92\x0d\x59\xe1\x3f\xbc\x7b\xc0\x81\x78\x77\x94\x25\xe9\xaf\xf4\xf7\xed\x68\xc6\x3f\x0d\x00\xb8\xe4\x23\xb9\x1e\x6e\xd6\x5c\x94\x73\x12\x77\xf8\x17\x13\xc9\x58\xd9\xd8\xea\x9f\x48\x05\x83\x17\x1e\xb1\x1d\xae\x2f\x9a\x90\x13\x74\x21\xcc\x1c\x48\xcf\x85\x70\x3d\xe7\x0a\xfa\xf2\xb1\x04\xc2\xa3\x7f\xa3\xd5\x08\x2a\xbd\x9f\xb8\x12\xd4\x0f\x72\xd3\xee\x25\x9f\x34\x08\xab\x0d\x58\x54\x8b\xf4\x5d\xf7\xca\xba\x9c\x86\x76\xcc\xb1\xfb\x3e\xd3\xc4\x13\xfb\x2e\xf2\x58\xb3\x3b\x34\x57\x8e\x93\xa8\x0f\xe1\xd2\x80\x95\x7c\x50\x95\xed\x17\xb7\xed\xb1\x3d\xee\x7c\x9b\xe4\x7a\x3c\x1b\x30\x68\x49\x3c\xdc\xe3\xce\x4e\x4d\xbc\x34\xbf\xcd\x5f\x00\x00\x00\xff\xff\xa1\xba\x02\x21\x2f\x01\x00\x00" + +func runtimePluginsFtoptionsInfoJsonBytes() ([]byte, error) { + return bindataRead( + _runtimePluginsFtoptionsInfoJson, + "runtime/plugins/ftoptions/info.json", + ) +} + +func runtimePluginsFtoptionsInfoJson() (*asset, error) { + bytes, err := runtimePluginsFtoptionsInfoJsonBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/plugins/ftoptions/info.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimePluginsLinterInfoJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x8e\x4d\x4e\x03\x31\x0c\x85\xd7\xe4\x14\x56\xd6\x55\x52\x58\x56\x02\x89\x73\x20\x16\x6e\xe2\xa6\x96\xf2\x53\x1c\x67\xd0\x80\xb8\x3b\x9a\xc0\xec\xbb\xfd\xde\x7b\xfe\xfc\x6d\x00\x00\x6c\xc5\x42\xf6\x04\x36\x73\x55\x12\x7b\xf8\xa3\x91\x7a\x10\xbe\x29\xb7\xba\x85\xaf\x43\x5b\x41\xe5\x00\xa1\x45\x82\xad\xcb\x35\xc1\xa5\x09\x20\x2c\x28\x4c\xba\x42\xbb\x40\xc6\x9a\x06\x26\xea\x6e\x3f\xf4\x49\xe7\xce\x3a\x0d\x57\xd5\x5b\x3f\x79\x9f\x58\xaf\xe3\xec\x42\x2b\xfe\x6b\xa5\xc8\x91\xd1\x17\x0e\xd2\xec\xc1\x3c\x58\xae\x5d\x31\xe7\x7b\x07\x53\xb2\x90\xf4\xff\x4f\x1f\xdd\xd1\x1d\x77\x2e\xf4\x31\x58\x36\xf9\xdb\x04\x13\xce\x25\xbc\x3c\xc3\xd3\xac\xce\xe0\xdd\xfc\x98\xdf\x00\x00\x00\xff\xff\x66\xe8\x97\x46\x10\x01\x00\x00" + +func runtimePluginsLinterInfoJsonBytes() ([]byte, error) { + return bindataRead( + _runtimePluginsLinterInfoJson, + "runtime/plugins/linter/info.json", + ) +} + +func runtimePluginsLinterInfoJson() (*asset, error) { + bytes, err := runtimePluginsLinterInfoJsonBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/plugins/linter/info.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimePluginsLinterLinterLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x59\x5f\x8f\xa4\xb8\x11\x7f\x9f\x4f\x61\xa1\x20\xd1\x3b\xc0\xec\x46\x79\x42\x6a\x45\x97\xcd\x5d\xa4\x68\xff\x44\x9a\x8d\xf2\xb0\xbb\x17\xb9\x4d\xd1\xed\x1b\x63\x13\xdb\x74\x4f\x67\xb4\xdf\x3d\x2a\xdb\xd0\x86\x86\xd9\xc9\xdd\xb5\x34\x60\x4c\xb9\xea\x57\x7f\x5d\x66\x84\x62\x54\x10\xdd\x4b\xcb\x5b\x20\x5b\xc2\xdb\x4e\x69\x9b\x25\x61\x26\xd9\xdc\x78\x8a\x86\x0b\xe8\xa8\x3d\x44\x24\xf8\x78\x37\xcc\x8f\x84\xe6\x00\x42\x44\x54\x2d\x67\x5a\xdd\xb9\xd9\x91\x66\xd7\x37\x0d\xe8\x2b\x22\x3f\x3d\x52\x31\x25\x1b\xbe\xbf\xa2\xf2\xd3\xc9\xe6\x26\x90\x09\x2e\x2d\x68\x43\xb6\xe4\xe9\xdb\xcd\x4d\x51\x10\xa6\x81\x5a\x30\x84\x86\x57\x04\xa4\xd5\xe7\x9c\x30\x2a\x04\x69\xb4\x6a\xc9\x89\xdb\x03\x97\x84\x4a\xc2\x25\xb7\x9c\x0a\xfe\x5f\x6a\xb9\x92\xa4\xe9\x25\xc3\x41\x4e\xa4\xb2\xc8\xab\xe6\x1a\x98\x15\x67\x42\xed\x40\x4b\x84\xa2\x35\x41\xe3\xdc\x14\x05\xd2\x48\xda\x42\xe5\xae\x44\x35\xc4\x1e\x20\xc8\xc5\x77\x68\x1e\x7b\xee\xa0\x1a\x47\xc4\x2a\xc2\x0e\xc0\x1e\x48\xa3\x34\x3e\xf4\x26\x5e\xc0\xda\xba\x22\x2d\xe5\x72\x00\xdf\x69\xc5\xc0\x18\x62\x0f\x08\xc1\x10\x78\x04\xd6\x5b\xa8\x91\x98\xea\xbd\xa9\xf0\xda\xb7\x20\xad\x41\x6e\x1d\x35\xee\x7e\x81\x31\x70\xc0\x05\xf8\x43\x79\x69\x83\x34\x1a\xd0\x0b\x81\x98\xf5\x5a\x83\xb4\x0e\xa7\x53\x66\x42\x5f\xaf\xd2\x7b\x0b\x29\x7d\x1e\x17\x81\xd6\x4a\x37\x4a\xb7\xd4\x56\xe4\xa0\x4e\x1e\x96\x36\x10\x81\xba\x63\xaa\xed\xb8\x88\xf4\x53\xbd\xed\x7a\x3b\x08\x4d\x1b\x6f\xb1\x9c\xa4\xa2\xc2\x35\x40\x64\xdf\xee\x40\xe7\x24\x6d\x2b\x2f\xe2\xee\x44\xb5\xe4\x72\x4f\x5a\x30\x86\xee\x9d\x6c\x65\x90\xda\x58\xf4\xc4\xc7\x7b\xb4\x1a\x37\x83\x1d\xb8\x21\xa6\xef\x30\x94\xa0\x26\x4a\x93\x5e\x46\x8f\x72\x90\xac\x3a\x0c\x00\x2a\x10\x32\x6d\x73\x52\x43\x43\x7b\x61\x2b\x8c\xae\xa2\x20\xa7\x03\xb7\x80\x12\x2a\x62\x0e\xaa\x17\xb5\x53\xea\xe3\xbd\x97\xba\x03\x42\xc9\x4e\x50\xf6\xe0\x1e\xb3\x5a\x61\x20\x61\x7a\xc5\x0e\x71\x8e\x3f\x80\xc1\x75\x66\x33\x08\x0e\x3f\xa5\x09\xbd\x48\x21\x99\x92\xe2\xfc\x32\x06\xab\xc8\x1b\x2a\x0c\x90\x2c\xe0\x1d\xe1\xb9\x85\xb5\x6a\xa9\x65\x87\x89\x36\x63\xa8\xee\x80\x38\x81\x9d\x06\x34\x12\x75\x39\xd5\x53\xd2\x51\x6b\x41\x4b\x74\xac\x5b\xed\x12\x6a\xa2\x07\xb2\xa1\xcc\xf6\xa1\x72\x20\xb7\x1c\x55\x8b\xa4\x04\x5d\x9c\x7e\x94\x59\x7e\xa4\x16\x88\x72\x59\x09\x8f\x94\x59\xcf\xfa\xa5\xca\x69\xf8\x4f\xcf\x35\xc4\x4b\x9d\x7e\x42\x35\x8d\x01\x1b\x62\xc8\x3f\x90\x13\x17\xc2\xf9\xaa\xae\xa1\x8e\xb2\x65\x08\x32\xa2\xc1\xf6\x5a\x42\x4d\x76\xe7\x59\x42\x8f\xbf\xde\x40\xd3\x0b\xc2\xe3\x8c\x0f\xeb\x0c\x79\x5d\x70\x59\xc3\x23\xd4\x8e\xab\xf9\xae\x12\xaf\x5d\xea\x0f\x50\x99\x12\x7d\x2b\x9f\x05\xcb\x94\xf8\xfd\xb1\x7a\xb9\x2f\x41\x3b\xd4\x49\xd2\xd2\x07\x78\xe7\xf8\x65\x98\xfe\x79\xe4\x6d\xd6\xd6\xb9\xab\x50\x79\x5c\x11\x72\xa2\x4c\x7e\x89\xef\x7c\x08\xc0\x7c\xf0\x54\x3e\xd8\x61\x73\x83\x20\x78\x33\x14\xf8\xcf\x28\xe0\x2b\xd9\x6e\x89\xe4\x02\x15\x91\x37\x83\x7e\x33\x0a\x4c\xd5\xc5\x57\xe5\x18\xd9\xdb\x11\xe8\x0a\x25\x6b\x6b\xb2\x45\x1d\x56\xde\xa3\x62\x64\xeb\xf4\x5b\xa1\x88\x94\x26\xdb\xd8\x04\x2b\xf4\x0a\xf9\x29\x83\x59\xb2\x8a\xff\x52\x17\xb6\x51\x8d\x50\xda\x67\xc1\xca\xa2\x60\x61\xb2\x1d\x6c\xfd\xbd\x05\xc1\x13\x64\x3b\xf8\x04\x17\xbc\x5e\x33\xd4\x48\xcc\xe6\xc4\x20\xeb\x1b\xfc\xbb\x84\x8b\x86\x56\x1d\xe3\x80\xf1\x4e\x9e\xfb\x4f\x72\x31\x5b\x88\x7b\x6f\x16\x88\xdd\xae\x5f\xc3\x51\xf6\xae\xd1\x48\xee\x6a\x38\xde\xe1\x43\x32\x44\x4c\x68\x5e\xca\xbf\x7d\xfc\x78\x8f\x01\x93\x9c\xb8\xac\xd5\xc9\x24\xd3\xb0\x89\x78\x7c\xf8\xe7\xbb\x64\xc4\xec\x06\x51\x64\x27\x7b\xc6\x92\x9c\x24\xee\xe2\xc7\x4f\x49\xd1\x98\xb3\xb4\xf4\xb1\xc0\x02\x86\x2f\x8a\x7f\x51\x21\xfc\x00\x1e\xad\xa6\x38\x4c\x9b\xe4\x9b\xbb\x55\xa9\xa8\x52\x56\x95\xb7\x15\x49\xdb\x64\xb3\x2a\xe1\xf6\xf6\x19\x19\x49\x61\x6c\xbd\x65\xb7\xb7\x6f\xfe\xf4\x9b\x05\xd6\x6d\x8d\xf4\xfe\xe2\xc6\x4f\x49\xc1\x94\x50\x7a\xab\x9a\xc6\x71\x55\x85\xbb\x9d\xfc\x95\xbb\x1b\x9b\x08\x49\xb3\x54\xa4\x9b\x67\xb4\x52\xbb\x9e\x0b\x27\x63\xaf\xc6\xeb\x53\x32\xce\x16\xf8\x1c\xdc\x70\xc1\xbd\xc6\x0c\xc3\x24\xe6\x15\x9e\x9f\xae\xb4\x5e\x66\xf0\x0b\x3d\x52\x87\x1f\x07\xc3\x3d\x18\xda\xa1\x49\xeb\x2b\x13\xfa\xbc\x5d\x63\x68\x0e\x01\x11\x72\x32\x4c\xf3\xce\x3f\x0d\xf3\x31\x32\xbf\xbf\xa4\x22\x2f\x6f\xf3\x65\x76\x82\x5b\xd0\xd4\x02\xb2\x98\x8d\x83\x7b\xae\x3d\xdc\xe2\x9b\x6f\xb9\x4f\xe7\x9c\x58\xdd\xc3\x02\xe3\x9e\xba\x8e\xd3\x31\xeb\x69\xb8\x0d\x53\x4f\x49\x51\x48\xe5\x7d\xbf\x14\x42\xcb\x60\x25\x47\xd1\xd3\xdb\x53\x32\x8a\x29\x0a\xac\x4c\x3f\xf5\x42\xfc\x83\xda\x83\xf1\x53\xc6\xd6\xaa\xb7\x7e\x8c\x16\x32\x55\x08\xb5\x51\x64\x99\x8a\x9c\xa4\xac\x5c\x96\xc9\x04\x95\x7b\xa4\x57\xbb\x5f\x00\x3b\x06\xf0\x26\x79\x64\xba\x97\x5e\xfe\x40\xf1\xfb\x66\x67\x77\x6e\x04\x7d\x00\xa7\x46\x77\xb6\x07\x25\xfd\x68\x9c\x9d\x85\x60\x59\x54\x7f\x5e\xe6\xd4\x9e\xbb\xf3\x94\x4b\x98\x99\x71\x58\xc3\x31\xa4\x40\x8c\x62\x4c\x83\xa2\xf0\x4d\x74\xe1\xf7\x99\xad\x6b\xba\xe9\x4e\x80\x37\xb9\x06\x6c\x76\xcd\x56\xaa\xeb\x30\x5f\x14\x67\x0e\x4d\xeb\xa4\xf9\xd3\x9b\x1b\xf8\x99\x97\xa6\x9c\x39\xf1\xc6\x3a\x1f\xb9\xd1\xd4\x59\x97\x97\x2b\x8e\x40\xa2\x9a\xea\x13\x97\xf8\x7a\x39\xb6\x67\x12\xd8\x22\xb8\x88\x9f\xe0\xb2\x7f\x5c\x67\x77\xa6\xad\x53\x34\xbe\x47\xf6\xf5\x86\x75\x66\xa7\xda\x0c\xa6\xbd\x16\xe7\xad\xe1\xb8\xfb\xe3\x6a\xf9\x9e\x3e\xc0\x5b\xd5\xb6\x54\xd6\x98\xe9\xde\x8b\x7e\xdf\x2b\xf1\xf6\xd6\xd5\xe0\x40\xfc\x41\xbd\x55\x6d\x27\xc0\xc2\x66\xb6\x0f\x06\xd2\x6c\xd7\x79\xec\xbb\xae\xba\xa7\x47\x08\x5b\xa3\xee\x65\x50\x64\xd7\x95\x7f\xe9\x9b\xf9\x6a\xa6\xa4\xa5\x5c\x9a\xcc\xb7\x5e\x20\x00\xcf\x8d\x7e\x2d\x9e\x29\x1e\x72\x72\x24\x5c\x92\x8e\x72\xed\x89\x36\xa4\x56\xe3\x7e\xc9\x1b\x72\xc4\xed\x34\xac\x9b\x6e\xa6\x4e\xbe\x6b\x29\x9d\x69\xc7\x79\x44\x10\xdf\x03\x8d\xef\x3f\x66\xdd\xc1\x05\x3e\x62\xbf\x6c\xf6\x0d\xb6\x17\xbb\xbe\xa9\x7e\xe2\x02\x3e\x9d\x3b\x98\xb4\x02\xee\xc4\xea\xde\x97\x58\x6c\xe2\x26\x81\xeb\xd0\xe9\x75\xd4\x1e\xca\xbf\x72\x9d\xe1\x43\xf0\xcc\x92\xc6\xae\x0f\x99\x28\x3d\x20\x18\x7a\x28\xc4\xb2\x25\xc7\xf2\xaa\x7f\x44\xeb\x8c\xbd\xd6\x95\x69\x2e\x0c\x8c\xd5\x5c\xee\x4b\xf7\x98\x35\x36\x8f\x78\x6d\x26\x56\x9b\x41\x38\x50\x83\xdd\xcc\xc5\x89\xc7\x12\x5b\xe9\xb8\xd7\xd9\xc4\x60\xf0\xe0\xe9\xd7\x50\x59\x93\x63\xd4\x3b\x3e\x03\x6e\xda\x16\x0e\x3e\x0b\x1c\x2f\xdc\x90\xf7\xaf\xe6\x38\xd3\x2b\x74\xd2\x51\xcf\x1b\x1c\x43\xf5\xfe\xe2\x9a\xa3\xeb\xb8\x27\x9e\xc1\x1f\x4e\x7e\x7e\xf8\xea\x3b\xf1\x6a\x6f\xfa\x5d\x96\xa4\x29\x6e\x2a\xce\xd1\xe3\x0c\x26\x57\xcd\xf5\x8a\x81\x79\x33\x02\xbe\xd2\x04\x63\x02\xe3\x31\x77\xb1\x52\x46\xa7\x9a\x63\x39\x39\xd7\x1c\xcb\xf1\x04\x73\x2c\x27\x67\x98\x79\x1a\x4c\xa3\x5e\x49\x97\xc1\x43\x46\x5f\xe7\xf0\x77\xb2\xe6\x02\xd0\x87\xef\xfa\xc9\x0b\xf1\xf9\xe3\x55\x28\x1e\x7d\x53\xbd\x15\x40\xf5\x7b\xff\x01\xc5\x64\xa1\x22\x0d\xb5\xcb\xd5\xfd\xf2\xef\x6a\x77\xdf\xd1\x93\xcc\x22\xbe\x49\x12\xfe\x42\x09\x53\xf2\xc7\x47\xd7\xa6\x4c\x80\xac\x4a\x9f\x5b\x00\x17\x67\x7e\xf3\x7a\x29\x8b\x4b\x00\xb9\x23\x36\x26\x56\x27\x22\x2e\xc9\x17\x39\xa8\x11\xbe\x71\xc2\x1e\x1e\xa7\x27\xb1\x49\xc0\x24\x59\x59\x16\x9b\xe4\x12\x33\x6e\x03\xc8\xd2\xfa\x36\x9e\x64\x4b\x93\xad\x5f\x8e\x73\x63\x65\xf9\x77\xee\x1a\x3e\x2e\x09\x1f\x8b\x0b\x4c\x03\xb8\x28\xc8\x27\xcd\x5b\x7f\x92\x33\x1d\x65\x93\x03\x19\xd6\x34\xbc\x55\xbe\x52\x24\x3f\xa7\xe6\x15\xca\x48\xcd\xab\x3f\x24\x93\x4c\x0f\x15\xa5\xe1\xb2\x76\x52\x72\xaf\xeb\x66\x21\x98\xc7\x82\xe9\x2c\x8c\xa7\x74\x25\x72\xd2\x9a\xfd\xbc\x30\xc5\x7c\x16\x58\x1c\xa8\x61\x0a\x4f\x4e\x93\x5a\x1f\x55\x9e\x18\xd3\xc4\x87\xce\x86\x0b\xd0\xf0\x37\x72\x9d\x16\x8d\xe1\xe7\x61\x32\x25\x26\x6f\xe2\x22\x15\x00\xec\xa8\x01\x3c\x4b\x66\xc3\x9e\xb0\xc1\x9a\x3d\xce\xba\xd2\xb0\x8c\x20\x7c\x9f\xf6\x92\xf0\x18\x3a\x27\xf0\x65\x10\x51\x2e\xae\xbf\xf0\x68\x8d\xa5\x3a\xec\x5b\x0d\xe8\xf2\x9d\x62\x99\x55\xfe\x9b\x4d\xc6\x94\x28\xde\xdc\xba\x40\xce\xc9\x38\x8b\x36\x2f\xde\xdc\x62\x94\x6f\x36\xcf\xb1\x06\x59\xaf\x33\xfe\x15\x6c\x83\xbe\x81\xe1\x07\x38\x85\x82\x30\xd6\x03\x17\x22\x79\xd0\x29\x77\x00\xf2\x81\xfc\xfd\xa7\x1f\xd1\xbf\xd7\x9c\x61\xc9\x87\xcf\x89\xfb\xc1\xbe\xe3\xf2\x4a\xe8\x44\x0f\xaf\xc5\x0b\x64\xcf\x82\x82\x84\x72\xf7\x43\x5d\x0f\xba\x21\x8a\xcd\x6a\x24\xad\xd7\x6b\x5f\x66\x8c\xd5\x39\x31\xd0\x6d\x26\x15\xc6\xf4\xc2\x5e\xf6\xb2\x69\xdd\xc9\x92\xec\xf3\xcf\xa9\xf9\xea\x2a\x87\xcf\x86\x6c\x64\x80\x15\x03\x28\x3b\x60\xbd\x30\x56\x57\x7b\x9f\x85\x21\x8f\xa3\x9a\x61\xb1\xe9\x2c\xb9\x34\xa0\x6d\xe6\x05\xe6\x6e\xe5\x66\xa9\xcb\xf2\x04\x33\x05\xa6\x79\x10\x21\x35\xd0\xb9\xef\x29\xff\xef\x77\x94\xb0\xee\xcb\x97\x64\x82\xc1\x33\x75\xff\x17\x19\x8b\x8b\xab\x98\xbe\xfe\x24\x59\xf9\x2a\x21\x65\xe9\x96\x97\x25\x49\x36\x59\xf9\x6a\xe3\xfa\xe9\x3f\x26\x93\x5d\xcf\xfd\x63\x01\xb9\xfe\x2f\x00\x00\xff\xff\xe6\x74\x28\x8b\xad\x1a\x00\x00" func runtimePluginsLinterLinterLuaBytes() ([]byte, error) { @@ -1132,6 +1217,26 @@ func runtimePluginsLiterateReadmeMd() (*asset, error) { return a, nil } +var _runtimePluginsLiterateInfoJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x8e\xb1\x4e\xc5\x30\x0c\x45\x67\xfa\x15\x56\xe6\xa7\xf6\xc1\xf8\x24\x98\x19\xf8\x03\xc4\xe0\xb6\x26\xb1\x94\xc4\xc1\x71\x40\x80\xf8\x77\xd4\x40\xe6\xb7\x9e\xeb\x7b\x8f\xbf\x27\x00\x00\x97\x31\x91\xbb\x80\x8b\x9c\x8d\xd4\x9d\xfe\xe8\x4e\x75\x53\x2e\xc6\x92\x8f\xf0\x91\x7d\x88\xec\x83\x71\xf6\x80\x79\x87\x88\xd9\x37\xf4\x04\xb5\x95\x22\x6a\xf0\x2a\x0a\x16\x08\x9e\xd8\x48\xd1\x08\x8a\x8a\x57\x4c\xe9\x68\x98\x48\x9c\xc7\xf4\x07\xad\x95\xad\x3b\x83\x59\xa9\x97\x65\xf1\x6c\xa1\xad\xf3\x26\x69\xf9\xfa\xa4\x9d\x77\xc6\x65\x0c\xb9\xd3\x74\xe3\x38\x57\xc3\x18\xaf\x75\x12\x6f\x2a\xc3\xf3\x4e\x5a\xff\xdf\xbf\x9d\xcf\xf3\x79\x70\xa5\xb7\xc6\x7a\xf8\x9f\x3b\xe8\xb0\x37\xe1\xe1\x1e\xee\xfa\x69\x0f\x5e\xa6\x9f\xe9\x37\x00\x00\xff\xff\x4e\x6f\x8e\x85\x25\x01\x00\x00" + +func runtimePluginsLiterateInfoJsonBytes() ([]byte, error) { + return bindataRead( + _runtimePluginsLiterateInfoJson, + "runtime/plugins/literate/info.json", + ) +} + +func runtimePluginsLiterateInfoJson() (*asset, error) { + bytes, err := runtimePluginsLiterateInfoJsonBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/plugins/literate/info.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimePluginsLiterateLiterateLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x55\x4d\x8f\xe2\x38\x10\xbd\xf3\x2b\x4a\xde\x5d\x75\xb2\x9d\x64\xc5\x1e\x91\x22\x65\xf7\xd0\xa7\xfd\x12\xbd\x73\x02\x1a\x99\xb8\x02\x16\x8e\x1d\xd9\x95\x61\x50\xd3\xff\x7d\xe4\x38\x84\x34\x6a\x69\xa0\x73\x89\xab\xfc\xea\xbd\x2a\x97\x3f\x94\x29\xb9\x82\xd2\xe8\x4a\x6e\x21\x07\x59\x37\xc6\x52\xc4\x6a\x59\x5a\xf3\x5b\x70\xb3\x78\x32\xa9\x5a\x5d\x92\x34\x1a\x1c\x71\x4b\xee\x20\x69\x17\x39\xb2\x49\xb0\xe3\x09\x00\x58\xa4\xd6\x7a\x80\x95\x7a\x9b\xb9\x76\xd3\x01\xa6\x49\xef\x50\xa8\xa3\x00\x8e\xf3\xbc\x1b\x4c\x50\x8b\x11\x33\x6a\x31\xe2\x45\x2d\x9e\xc9\x8e\x89\x83\x27\xcf\x1f\x1e\xc0\xd8\x6b\x99\x74\xa4\xd2\x87\xc6\x79\x1e\x46\x57\x3a\xae\x51\x92\xa2\x80\x4f\xc0\x61\xd3\x89\x40\x58\x08\x87\x4d\x02\x95\x44\x25\x1c\xe4\xde\xf2\x5a\x6c\xc6\x12\x78\x7d\x1b\xc1\x1a\x4e\x84\x56\x7b\x48\xd0\xad\x8c\xad\x39\x45\x2c\x5a\xbc\xfc\xe2\x56\x8f\x31\x1b\x31\x07\xc8\x6c\xeb\x73\xed\x03\x13\x38\xa7\x13\x95\x71\xaf\xb7\xf8\x29\xfc\x1f\xa7\x2b\xc8\xa1\xf4\xf5\x86\xf8\xbe\xfe\x30\x7b\x55\x8c\xd1\x7f\xb6\x55\x85\xf6\xdf\x06\x75\xb4\x69\xab\x10\x21\x2b\xd0\x86\x2e\x2b\xba\x69\xab\xec\x3f\x4e\xbb\x04\x58\xa6\x24\xb1\x18\x68\x87\xba\x83\x5e\x04\x3a\xb3\x63\xbf\xd4\x59\x1a\x81\x74\x6c\x10\x72\x60\xad\xde\x6b\x73\xd0\xac\x9b\xae\x8c\x05\x99\x4f\x93\x4d\x5b\xcd\xfe\x92\x1a\xdd\x3f\x6d\x1d\xc5\x20\xcc\x40\x1a\x08\x94\xd4\x3e\xf8\x0c\x8b\x64\x3a\x8d\x07\x88\xac\xc6\xdb\xc9\x43\x13\x60\x85\xd7\x5c\x7b\xd1\xeb\x34\xfd\x37\x4a\x28\xf4\xb1\x8f\x02\x16\x2f\x7e\x5f\xbd\x83\x6e\x2c\xf2\xfd\xe0\xf1\x85\x7d\x50\xa0\x3b\x6a\xe2\xdf\x9e\xa4\xea\x4a\x0c\xb5\xbd\xf3\x8d\x8c\x2c\x03\x56\x49\xd5\xe9\xcf\x40\x49\x42\xcb\x09\x53\xe6\x27\x86\xbc\x3c\x68\xa9\x7f\x4c\x24\x90\xb0\xa4\xd9\x2d\xd0\x6e\xbd\xa5\x42\xcd\x6b\x9c\xc1\x92\x2d\x97\xcb\xa5\x6f\xe3\xcf\xcb\x9b\x94\x6c\xab\xd0\xdd\x2c\x94\x82\xd4\xa5\x6a\x45\xa7\x54\x73\xbb\x17\xe6\xa0\x6f\x13\x0a\xe1\xae\xc1\x52\x72\xe5\xc3\x5f\xa2\xc2\x9d\x0a\x92\xa4\xf0\x74\x69\xab\x1f\xd6\x35\x6a\xea\xad\x5e\xef\x54\x94\x3b\xae\xb7\xc3\x7f\xed\xf7\xff\x27\x85\xa3\x82\x0b\xb1\x2e\x9d\x3b\x15\xe6\x2b\xda\x83\x95\x84\xc1\x2c\x8d\x32\xd6\x95\x3b\xac\x43\x1e\x8d\x54\x68\x4f\x05\x5a\x6b\xec\x3a\x1c\xe2\x53\xb1\x31\x66\x7f\x97\xb4\xc0\x8a\xb7\xea\xf6\x6e\x86\x5b\x81\x5b\xf2\xc9\xa6\x69\x9a\xfd\x7a\x63\x2f\x47\xbb\xb9\x0f\xbd\x33\x50\xc9\x5a\x52\xba\xb5\xa6\x6d\x3c\x81\x14\xa8\x49\x56\x12\xed\x7d\x34\xf7\xed\xa9\xf3\x77\xe9\xd1\xbd\x91\xef\x16\xac\xf0\x07\xe0\xf5\xbe\x84\xaf\x16\xce\x33\xbc\x7d\x8e\x21\x94\x0e\x8b\xd5\xfd\xd5\x0f\x27\xeb\xe3\x2b\x63\x12\x2e\x38\xff\xe4\x66\x7f\x08\x31\x6f\x35\xc9\x1a\x3d\xd7\x93\x35\xf5\xdf\x58\x1b\x7b\x8c\xd8\xf9\xde\x61\xc9\x19\x3b\xff\xff\xb9\x53\x4d\x60\x98\xcc\x8e\xbc\x56\xfe\x0d\x1a\xd2\x89\xc7\xec\x73\x54\x86\x8b\x28\xf8\xfc\xdd\xfc\xa5\x11\x9c\x70\xee\x4b\x8b\xe2\xee\x89\xf9\x1e\x00\x00\xff\xff\x27\x3a\xf6\x67\x18\x08\x00\x00" func runtimePluginsLiterateLiterateLuaBytes() ([]byte, error) { @@ -3625,10 +3730,15 @@ var _bindata = map[string]func() (*asset, error){ "runtime/help/plugins.md": runtimeHelpPluginsMd, "runtime/help/tutorial.md": runtimeHelpTutorialMd, "runtime/plugins/autoclose/autoclose.lua": runtimePluginsAutocloseAutocloseLua, + "runtime/plugins/autoclose/info.json": runtimePluginsAutocloseInfoJson, "runtime/plugins/comment/comment.lua": runtimePluginsCommentCommentLua, + "runtime/plugins/comment/info.json": runtimePluginsCommentInfoJson, "runtime/plugins/ftoptions/ftoptions.lua": runtimePluginsFtoptionsFtoptionsLua, + "runtime/plugins/ftoptions/info.json": runtimePluginsFtoptionsInfoJson, + "runtime/plugins/linter/info.json": runtimePluginsLinterInfoJson, "runtime/plugins/linter/linter.lua": runtimePluginsLinterLinterLua, "runtime/plugins/literate/README.md": runtimePluginsLiterateReadmeMd, + "runtime/plugins/literate/info.json": runtimePluginsLiterateInfoJson, "runtime/plugins/literate/literate.lua": runtimePluginsLiterateLiterateLua, "runtime/syntax/LICENSE": runtimeSyntaxLicense, "runtime/syntax/PowerShell.yaml": runtimeSyntaxPowershellYaml, @@ -3842,18 +3952,23 @@ var _bintree = &bintree{nil, map[string]*bintree{ "plugins": &bintree{nil, map[string]*bintree{ "autoclose": &bintree{nil, map[string]*bintree{ "autoclose.lua": &bintree{runtimePluginsAutocloseAutocloseLua, map[string]*bintree{}}, + "info.json": &bintree{runtimePluginsAutocloseInfoJson, map[string]*bintree{}}, }}, "comment": &bintree{nil, map[string]*bintree{ "comment.lua": &bintree{runtimePluginsCommentCommentLua, map[string]*bintree{}}, + "info.json": &bintree{runtimePluginsCommentInfoJson, map[string]*bintree{}}, }}, "ftoptions": &bintree{nil, map[string]*bintree{ "ftoptions.lua": &bintree{runtimePluginsFtoptionsFtoptionsLua, map[string]*bintree{}}, + "info.json": &bintree{runtimePluginsFtoptionsInfoJson, map[string]*bintree{}}, }}, "linter": &bintree{nil, map[string]*bintree{ + "info.json": &bintree{runtimePluginsLinterInfoJson, map[string]*bintree{}}, "linter.lua": &bintree{runtimePluginsLinterLinterLua, map[string]*bintree{}}, }}, "literate": &bintree{nil, map[string]*bintree{ "README.md": &bintree{runtimePluginsLiterateReadmeMd, map[string]*bintree{}}, + "info.json": &bintree{runtimePluginsLiterateInfoJson, map[string]*bintree{}}, "literate.lua": &bintree{runtimePluginsLiterateLiterateLua, map[string]*bintree{}}, }}, }}, diff --git a/runtime/plugins/autoclose/info.json b/runtime/plugins/autoclose/info.json new file mode 100644 index 00000000..ddcd9264 --- /dev/null +++ b/runtime/plugins/autoclose/info.json @@ -0,0 +1,10 @@ +{ + "name": "linter", + "description": "Automatically places closing characters for quotes, parentheses, brackets, etc...", + "website": "https://github.com/zyedidia/micro", + "install": "https://github.com/zyedidia/micro", + "version": "1.0.0", + "require": [ + "micro >= 2.0.0" + ] +} diff --git a/runtime/plugins/comment/info.json b/runtime/plugins/comment/info.json new file mode 100644 index 00000000..ec79adfe --- /dev/null +++ b/runtime/plugins/comment/info.json @@ -0,0 +1,10 @@ +{ + "name": "comment", + "description": "Support for automatically commenting blocks of code. Extensible and multiple languages supported.", + "website": "https://github.com/zyedidia/micro", + "install": "https://github.com/zyedidia/micro", + "version": "1.0.0", + "require": [ + "micro >= 2.0.0" + ] +} diff --git a/runtime/plugins/ftoptions/info.json b/runtime/plugins/ftoptions/info.json new file mode 100644 index 00000000..8419cc13 --- /dev/null +++ b/runtime/plugins/ftoptions/info.json @@ -0,0 +1,10 @@ +{ + "name": "ftoptions", + "description": "Sets basic options based on the filetype (for example Makefiles require tabs).", + "website": "https://github.com/zyedidia/micro", + "install": "https://github.com/zyedidia/micro", + "version": "1.0.0", + "require": [ + "micro >= 2.0.0" + ] +} diff --git a/runtime/plugins/linter/info.json b/runtime/plugins/linter/info.json new file mode 100644 index 00000000..37567391 --- /dev/null +++ b/runtime/plugins/linter/info.json @@ -0,0 +1,10 @@ +{ + "name": "linter", + "description": "Automatic code linting for a variety of languages.", + "website": "https://github.com/zyedidia/micro", + "install": "https://github.com/zyedidia/micro", + "version": "1.0.0", + "require": [ + "micro >= 2.0.0" + ] +} diff --git a/runtime/plugins/literate/info.json b/runtime/plugins/literate/info.json new file mode 100644 index 00000000..fa133923 --- /dev/null +++ b/runtime/plugins/literate/info.json @@ -0,0 +1,10 @@ +{ + "name": "linter", + "description": "Highlighting and language support for the Literate programming tool.", + "website": "https://github.com/zyedidia/Literate", + "install": "https://github.com/zyedidia/micro", + "version": "1.0.0", + "require": [ + "micro >= 2.0.0" + ] +} From ac3a5154c0a88e92ea7d8afe2ea8e53cb57e4145 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 6 Aug 2019 23:13:40 -0700 Subject: [PATCH 154/231] Update version tool to support rc versions --- tools/build-version.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/build-version.go b/tools/build-version.go index 8e7e9b86..630521f2 100644 --- a/tools/build-version.go +++ b/tools/build-version.go @@ -20,6 +20,10 @@ func getTag(match ...string) (string, *semver.PRVersion) { if ahead, err := semver.NewPRVersion(tagParts[1]); err == nil { return tagParts[0], &ahead } + } else if len(tagParts) == 4 { + if ahead, err := semver.NewPRVersion(tagParts[2]); err == nil { + return tagParts[0] + "-" + tagParts[1], &ahead + } } return tagParts[0], nil @@ -49,7 +53,9 @@ func main() { tag = "dev" } // Get the most likely next version: - version.Patch = version.Patch + 1 + if !strings.Contains(version.String(), "rc") { + version.Patch = version.Patch + 1 + } if pr, err := semver.NewPRVersion(tag); err == nil { // append the tag as pre-release name From 5b18edf865bb248408de8235badd75528e9b3896 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 11 Aug 2019 14:50:28 -0700 Subject: [PATCH 155/231] Small improvement for replace command --- internal/action/bindings.go | 2 +- internal/action/command.go | 31 +++++++++++++++++++------------ internal/util/util.go | 4 ++++ 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/internal/action/bindings.go b/internal/action/bindings.go index 6fba69e0..7cad325a 100644 --- a/internal/action/bindings.go +++ b/internal/action/bindings.go @@ -60,7 +60,7 @@ func BindKey(k, v string) { config.Bindings[k] = v } -// findKeyEvent will find binding Key 'b' using string 'k' +// findEvent will find binding Key 'b' using string 'k' func findEvent(k string) (b Event, ok bool) { modifiers := tcell.ModNone diff --git a/internal/action/command.go b/internal/action/command.go index 39dc2c2a..082d0746 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -743,28 +743,35 @@ func (h *BufPane) ReplaceCmd(args []string) { all := false noRegex := false - if len(args) > 2 { - for _, arg := range args[2:] { - switch arg { - case "-a": - all = true - case "-l": - noRegex = true - default: + foundSearch := false + foundReplace := false + var search string + var replaceStr string + for _, arg := range args { + switch arg { + case "-a": + all = true + case "-l": + noRegex = true + default: + if !foundSearch { + foundSearch = true + search = arg + } else if !foundReplace { + foundReplace = true + replaceStr = arg + } else { InfoBar.Error("Invalid flag: " + arg) return } } } - search := args[0] - if noRegex { search = regexp.QuoteMeta(search) } - replace := []byte(args[1]) - replaceStr := args[1] + replace := []byte(replaceStr) var regex *regexp.Regexp var err error diff --git a/internal/util/util.go b/internal/util/util.go index bfbe43b1..d10c9851 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -407,3 +407,7 @@ func Clamp(val, min, max int) int { func IsNonAlphaNumeric(c rune) bool { return !unicode.IsLetter(c) && !unicode.IsNumber(c) } + +func ParseSpecial(s string) string { + return strings.Replace(s, "\\t", "\t", -1) +} From d2f8adb8ffd8239771e742d9eff3cdde8d46969b Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 17 Aug 2019 11:49:42 -0700 Subject: [PATCH 156/231] Support multiactions --- internal/action/bufpane.go | 45 ++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 86fb7e42..4f487604 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -47,23 +47,34 @@ func LuaAction(fn string) func(*BufPane) bool { // BufMapKey maps a key event to an action func BufMapKey(k Event, action string) { - if strings.HasPrefix(action, "command:") { - action = strings.SplitN(action, ":", 2)[1] - BufKeyStrings[k] = action - BufKeyBindings[k] = CommandAction(action) - } else if strings.HasPrefix(action, "command-edit:") { - action = strings.SplitN(action, ":", 2)[1] - BufKeyStrings[k] = action - BufKeyBindings[k] = CommandEditAction(action) - } else if strings.HasPrefix(action, "lua:") { - action = strings.SplitN(action, ":", 2)[1] - BufKeyStrings[k] = action - BufKeyBindings[k] = LuaAction(action) - } else if f, ok := BufKeyActions[action]; ok { - BufKeyStrings[k] = action - BufKeyBindings[k] = f - } else { - screen.TermMessage("Error:", action, "does not exist") + actions := strings.SplitN(action, ",", -1) + BufKeyStrings[k] = action + actionfns := make([]func(*BufPane) bool, len(actions)) + for i, a := range actions { + a = strings.TrimSpace(a) + var afn func(*BufPane) bool + if strings.HasPrefix(action, "command:") { + a = strings.SplitN(a, ":", 2)[1] + afn = CommandAction(a) + } else if strings.HasPrefix(a, "command-edit:") { + a = strings.SplitN(a, ":", 2)[1] + afn = CommandEditAction(a) + } else if strings.HasPrefix(a, "lua:") { + a = strings.SplitN(a, ":", 2)[1] + afn = LuaAction(a) + } else if f, ok := BufKeyActions[a]; ok { + afn = f + } else { + screen.TermMessage("Error:", action, "does not exist") + } + actionfns[i] = afn + } + BufKeyBindings[k] = func(h *BufPane) bool { + b := false + for _, a := range actionfns { + b = a(h) || b + } + return b } } From 199d65017f0a4e0069a1986b99bcdcca703999a2 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 18 Aug 2019 18:13:43 -0400 Subject: [PATCH 157/231] Auto init settings if config doesn't exist --- internal/config/settings.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/internal/config/settings.go b/internal/config/settings.go index 1ec84caf..bb92b7da 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -28,6 +28,10 @@ var ( parsedSettings map[string]interface{} ) +func init() { + parsedSettings = make(map[string]interface{}) +} + // Options with validators var optionValidators = map[string]optionValidator{ "autosave": validateNonNegativeValue, From b68461cf72cb913c40dd60a77b2cb2fcc27aec0f Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 26 Aug 2019 14:47:27 -0400 Subject: [PATCH 158/231] Terminal plugin callback support --- cmd/micro/initlua.go | 5 +++ cmd/micro/micro.go | 1 + internal/action/bufpane.go | 6 ++++ internal/action/command.go | 9 +++-- internal/action/terminal_supported.go | 30 +++++++++++++++++ internal/action/terminal_unsupported.go | 11 +++++++ internal/action/termpane.go | 8 +++-- internal/display/statusline.go | 6 ++++ internal/shell/job.go | 6 ++++ internal/shell/terminal.go | 44 +++++++++++++++++++++---- 10 files changed, 115 insertions(+), 11 deletions(-) create mode 100644 internal/action/terminal_supported.go create mode 100644 internal/action/terminal_unsupported.go diff --git a/cmd/micro/initlua.go b/cmd/micro/initlua.go index f3e302db..1c6715e1 100644 --- a/cmd/micro/initlua.go +++ b/cmd/micro/initlua.go @@ -85,6 +85,8 @@ func luaImportMicroShell() *lua.LTable { ulua.L.SetField(pkg, "JobSpawn", luar.New(ulua.L, shell.JobSpawn)) ulua.L.SetField(pkg, "JobStop", luar.New(ulua.L, shell.JobStop)) ulua.L.SetField(pkg, "JobSend", luar.New(ulua.L, shell.JobSend)) + ulua.L.SetField(pkg, "RunTermEmulator", luar.New(ulua.L, action.RunTermEmulator)) + ulua.L.SetField(pkg, "TermEmuSupported", luar.New(ulua.L, action.TermEmuSupported)) return pkg } @@ -106,6 +108,9 @@ func luaImportMicroBuffer() *lua.LTable { ulua.L.SetField(pkg, "BTScratch", luar.New(ulua.L, buffer.BTScratch.Kind)) ulua.L.SetField(pkg, "BTRaw", luar.New(ulua.L, buffer.BTRaw.Kind)) ulua.L.SetField(pkg, "BTInfo", luar.New(ulua.L, buffer.BTInfo.Kind)) + ulua.L.SetField(pkg, "NewBufferFromFile", luar.New(ulua.L, func(path string) (*buffer.Buffer, error) { + return buffer.NewBufferFromFile(path, buffer.BTDefault) + })) return pkg } diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 734539de..53c88bc5 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -236,6 +236,7 @@ func main() { for _, b := range buffer.OpenBuffers { b.Save() } + case <-shell.CloseTerms: case event = <-events: case <-screen.DrawChan: } diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 4f487604..4f03e640 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -30,8 +30,14 @@ func init() { func LuaAction(fn string) func(*BufPane) bool { luaFn := strings.Split(fn, ".") + if len(luaFn) <= 1 { + return nil + } plName, plFn := luaFn[0], luaFn[1] pl := config.FindPlugin(plName) + if pl == nil { + return nil + } return func(h *BufPane) bool { val, err := pl.Call(plFn, luar.New(ulua.L, h)) if err != nil { diff --git a/internal/action/command.go b/internal/action/command.go index 082d0746..37ff0788 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -78,8 +78,14 @@ func LuaMakeCommand(name, function string, completer buffer.Completer) { // so that a command can be bound to a lua function func LuaFunctionCommand(fn string) func(*BufPane, []string) { luaFn := strings.Split(fn, ".") + if len(luaFn) <= 1 { + return nil + } plName, plFn := luaFn[0], luaFn[1] pl := config.FindPlugin(plName) + if pl == nil { + return nil + } return func(bp *BufPane, args []string) { var luaArgs []lua.LValue luaArgs = append(luaArgs, luar.New(ulua.L, bp)) @@ -872,9 +878,8 @@ func (h *BufPane) TermCmd(args []string) { } term := func(i int, newtab bool) { - t := new(shell.Terminal) - t.Start(args, false, true) + t.Start(args, false, true, "", nil) id := h.ID() if newtab { diff --git a/internal/action/terminal_supported.go b/internal/action/terminal_supported.go new file mode 100644 index 00000000..50e0a75d --- /dev/null +++ b/internal/action/terminal_supported.go @@ -0,0 +1,30 @@ +// +build linux darwin dragonfly openbsd_amd64 freebsd + +package action + +import ( + "github.com/zyedidia/micro/internal/shell" + "github.com/zyedidia/micro/pkg/shellwords" +) + +const TermEmuSupported = true + +func RunTermEmulator(h *BufPane, input string, wait bool, getOutput bool, callback string, userargs []interface{}) error { + args, err := shellwords.Split(input) + if err != nil { + return err + } + + t := new(shell.Terminal) + t.Start(args, getOutput, wait, callback, userargs) + + id := h.ID() + h.AddTab() + id = MainTab().Panes[0].ID() + + v := h.GetView() + MainTab().Panes[0] = NewTermPane(v.X, v.Y, v.Width, v.Height, t, id) + MainTab().SetActive(0) + + return nil +} diff --git a/internal/action/terminal_unsupported.go b/internal/action/terminal_unsupported.go new file mode 100644 index 00000000..b295fd62 --- /dev/null +++ b/internal/action/terminal_unsupported.go @@ -0,0 +1,11 @@ +// +build !linux,!darwin,!freebsd,!dragonfly,!openbsd_amd64 + +package action + +import "errors" + +const TermEmuSupported = false + +func RunTermEmulator(input string, wait bool, getOutput bool, callback string, userargs []interface{}) error { + return errors.New("Unsupported operating system") +} diff --git a/internal/action/termpane.go b/internal/action/termpane.go index 5a934567..779f473d 100644 --- a/internal/action/termpane.go +++ b/internal/action/termpane.go @@ -80,9 +80,9 @@ func (t *TermPane) HandleEvent(event tcell.Event) { } else if t.Status != shell.TTDone { t.WriteString(event.EscSeq()) } - } else if e, ok := event.(*tcell.EventMouse); !ok || t.State.Mode(terminal.ModeMouseMask) { + } else if e, ok := event.(*tcell.EventMouse); e != nil && (!ok || t.State.Mode(terminal.ModeMouseMask)) { t.WriteString(event.EscSeq()) - } else { + } else if e != nil { x, y := e.Position() v := t.GetView() x -= v.X @@ -109,6 +109,10 @@ func (t *TermPane) HandleEvent(event tcell.Event) { t.mouseReleased = true } } + + if t.Status == shell.TTClose { + t.Quit() + } } func (t *TermPane) HandleCommand(input string) { diff --git a/internal/display/statusline.go b/internal/display/statusline.go index 0fae348c..172f850d 100644 --- a/internal/display/statusline.go +++ b/internal/display/statusline.go @@ -53,8 +53,14 @@ var statusInfo = map[string]func(*buffer.Buffer) string{ func SetStatusInfoFnLua(s string, fn string) { luaFn := strings.Split(fn, ".") + if len(luaFn) <= 1 { + return + } plName, plFn := luaFn[0], luaFn[1] pl := config.FindPlugin(plName) + if pl == nil { + return + } statusInfo[s] = func(b *buffer.Buffer) string { if pl == nil || !pl.IsEnabled() { return "" diff --git a/internal/shell/job.go b/internal/shell/job.go index 3dfb8ced..8c29bb9c 100644 --- a/internal/shell/job.go +++ b/internal/shell/job.go @@ -106,8 +106,14 @@ func JobSend(cmd *exec.Cmd, data string) { // to the lua function func luaFunctionJob(fn string) func(string, ...interface{}) { luaFn := strings.Split(fn, ".") + if len(luaFn) <= 1 { + return nil + } plName, plFn := luaFn[0], luaFn[1] pl := config.FindPlugin(plName) + if pl == nil { + return nil + } return func(output string, args ...interface{}) { var luaArgs []lua.LValue luaArgs = append(luaArgs, luar.New(ulua.L, output)) diff --git a/internal/shell/terminal.go b/internal/shell/terminal.go index 9732e5cb..608271d4 100644 --- a/internal/shell/terminal.go +++ b/internal/shell/terminal.go @@ -6,13 +6,19 @@ import ( "os" "os/exec" "strconv" + "strings" + lua "github.com/yuin/gopher-lua" "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/internal/config" + ulua "github.com/zyedidia/micro/internal/lua" "github.com/zyedidia/micro/internal/screen" "github.com/zyedidia/terminal" + luar "layeh.com/gopher-luar" ) type TermType int +type CallbackFunc func(string) const ( TTClose = iota // Should be closed @@ -20,6 +26,12 @@ const ( TTDone // Finished running a command ) +var CloseTerms chan bool + +func init() { + CloseTerms = make(chan bool) +} + // A Terminal holds information for the terminal emulator type Terminal struct { State terminal.State @@ -30,7 +42,7 @@ type Terminal struct { wait bool getOutput bool output *bytes.Buffer - callback string + callback CallbackFunc } // HasSelection returns whether this terminal has a valid selection @@ -64,7 +76,7 @@ func (t *Terminal) GetSelection(width int) string { } // Start begins a new command in this terminal with a given view -func (t *Terminal) Start(execCmd []string, getOutput bool, wait bool) error { +func (t *Terminal) Start(execCmd []string, getOutput bool, wait bool, callback string, userargs []interface{}) error { if len(execCmd) <= 0 { return nil } @@ -84,6 +96,25 @@ func (t *Terminal) Start(execCmd []string, getOutput bool, wait bool) error { t.title = execCmd[0] + ":" + strconv.Itoa(cmd.Process.Pid) t.wait = wait + luaFn := strings.Split(callback, ".") + if len(luaFn) >= 2 { + plName, plFn := luaFn[0], luaFn[1] + pl := config.FindPlugin(plName) + if pl != nil { + t.callback = func(out string) { + var luaArgs []lua.LValue + luaArgs = append(luaArgs, luar.New(ulua.L, out)) + for _, v := range userargs { + luaArgs = append(luaArgs, luar.New(ulua.L, v)) + } + _, err := pl.Call(plFn, luaArgs...) + if err != nil { + screen.TermMessage(err) + } + } + } + } + go func() { for { err := Term.Parse() @@ -108,6 +139,7 @@ func (t *Terminal) Stop() { t.Status = TTDone } else { t.Close() + CloseTerms <- true } } @@ -117,11 +149,9 @@ func (t *Terminal) Close() { t.Status = TTClose // call the lua function that the user has given as a callback if t.getOutput { - // TODO: plugin callback on Term emulator - // _, err := Call(t.callback, t.output.String()) - // if err != nil && !strings.HasPrefix(err.Error(), "function does not exist") { - // TermMessage(err) - // } + if t.callback != nil { + t.callback(t.output.String()) + } } } From 6f6b263d102d37901d4e25e80db9760b924a7d30 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 26 Aug 2019 21:06:27 -0400 Subject: [PATCH 159/231] Add some plugin functions --- cmd/micro/initlua.go | 3 +++ internal/buffer/loc.go | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/cmd/micro/initlua.go b/cmd/micro/initlua.go index 1c6715e1..17d64cb6 100644 --- a/cmd/micro/initlua.go +++ b/cmd/micro/initlua.go @@ -70,6 +70,8 @@ func luaImportMicroConfig() *lua.LTable { ulua.L.SetField(pkg, "RTSyntax", luar.New(ulua.L, config.RTSyntax)) ulua.L.SetField(pkg, "RTHelp", luar.New(ulua.L, config.RTHelp)) ulua.L.SetField(pkg, "RTPlugin", luar.New(ulua.L, config.RTPlugin)) + ulua.L.SetField(pkg, "RegisterCommonOption", luar.New(ulua.L, config.RegisterCommonOption)) + ulua.L.SetField(pkg, "RegisterGlobalOption", luar.New(ulua.L, config.RegisterGlobalOption)) return pkg } @@ -111,6 +113,7 @@ func luaImportMicroBuffer() *lua.LTable { ulua.L.SetField(pkg, "NewBufferFromFile", luar.New(ulua.L, func(path string) (*buffer.Buffer, error) { return buffer.NewBufferFromFile(path, buffer.BTDefault) })) + ulua.L.SetField(pkg, "ByteOffset", luar.New(ulua.L, buffer.ByteOffset)) return pkg } diff --git a/internal/buffer/loc.go b/internal/buffer/loc.go index 0fa682b1..89db7b89 100644 --- a/internal/buffer/loc.go +++ b/internal/buffer/loc.go @@ -123,3 +123,15 @@ func (l Loc) Diff(a, b Loc, buf *Buffer) int { func (l Loc) Move(n int, buf *Buffer) Loc { return l.MoveLA(n, buf.LineArray) } + +// ByteOffset is just like ToCharPos except it counts bytes instead of runes +func ByteOffset(pos Loc, buf *Buffer) int { + x, y := pos.X, pos.Y + loc := 0 + for i := 0; i < y; i++ { + // + 1 for the newline + loc += len(buf.Line(i)) + 1 + } + loc += len(buf.Line(y)[:x]) + return loc +} From bc3f845c0dd708fb34d98732aae08d7f0432bdea Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 27 Aug 2019 14:47:25 -0400 Subject: [PATCH 160/231] Remove semver from rebase --- tools/semver/range.go | 416 ------------------------------------------ 1 file changed, 416 deletions(-) delete mode 100644 tools/semver/range.go diff --git a/tools/semver/range.go b/tools/semver/range.go deleted file mode 100644 index 95f7139b..00000000 --- a/tools/semver/range.go +++ /dev/null @@ -1,416 +0,0 @@ -package semver - -import ( - "fmt" - "strconv" - "strings" - "unicode" -) - -type wildcardType int - -const ( - noneWildcard wildcardType = iota - majorWildcard wildcardType = 1 - minorWildcard wildcardType = 2 - patchWildcard wildcardType = 3 -) - -func wildcardTypefromInt(i int) wildcardType { - switch i { - case 1: - return majorWildcard - case 2: - return minorWildcard - case 3: - return patchWildcard - default: - return noneWildcard - } -} - -type comparator func(Version, Version) bool - -var ( - compEQ comparator = func(v1 Version, v2 Version) bool { - return v1.Compare(v2) == 0 - } - compNE = func(v1 Version, v2 Version) bool { - return v1.Compare(v2) != 0 - } - compGT = func(v1 Version, v2 Version) bool { - return v1.Compare(v2) == 1 - } - compGE = func(v1 Version, v2 Version) bool { - return v1.Compare(v2) >= 0 - } - compLT = func(v1 Version, v2 Version) bool { - return v1.Compare(v2) == -1 - } - compLE = func(v1 Version, v2 Version) bool { - return v1.Compare(v2) <= 0 - } -) - -type versionRange struct { - v Version - c comparator -} - -// rangeFunc creates a Range from the given versionRange. -func (vr *versionRange) rangeFunc() Range { - return Range(func(v Version) bool { - return vr.c(v, vr.v) - }) -} - -// Range represents a range of versions. -// A Range can be used to check if a Version satisfies it: -// -// range, err := semver.ParseRange(">1.0.0 <2.0.0") -// range(semver.MustParse("1.1.1") // returns true -type Range func(Version) bool - -// OR combines the existing Range with another Range using logical OR. -func (rf Range) OR(f Range) Range { - return Range(func(v Version) bool { - return rf(v) || f(v) - }) -} - -// AND combines the existing Range with another Range using logical AND. -func (rf Range) AND(f Range) Range { - return Range(func(v Version) bool { - return rf(v) && f(v) - }) -} - -// ParseRange parses a range and returns a Range. -// If the range could not be parsed an error is returned. -// -// Valid ranges are: -// - "<1.0.0" -// - "<=1.0.0" -// - ">1.0.0" -// - ">=1.0.0" -// - "1.0.0", "=1.0.0", "==1.0.0" -// - "!1.0.0", "!=1.0.0" -// -// A Range can consist of multiple ranges separated by space: -// Ranges can be linked by logical AND: -// - ">1.0.0 <2.0.0" would match between both ranges, so "1.1.1" and "1.8.7" but not "1.0.0" or "2.0.0" -// - ">1.0.0 <3.0.0 !2.0.3-beta.2" would match every version between 1.0.0 and 3.0.0 except 2.0.3-beta.2 -// -// Ranges can also be linked by logical OR: -// - "<2.0.0 || >=3.0.0" would match "1.x.x" and "3.x.x" but not "2.x.x" -// -// AND has a higher precedence than OR. It's not possible to use brackets. -// -// Ranges can be combined by both AND and OR -// -// - `>1.0.0 <2.0.0 || >3.0.0 !4.2.1` would match `1.2.3`, `1.9.9`, `3.1.1`, but not `4.2.1`, `2.1.1` -func ParseRange(s string) (Range, error) { - parts := splitAndTrim(s) - orParts, err := splitORParts(parts) - if err != nil { - return nil, err - } - expandedParts, err := expandWildcardVersion(orParts) - if err != nil { - return nil, err - } - var orFn Range - for _, p := range expandedParts { - var andFn Range - for _, ap := range p { - opStr, vStr, err := splitComparatorVersion(ap) - if err != nil { - return nil, err - } - vr, err := buildVersionRange(opStr, vStr) - if err != nil { - return nil, fmt.Errorf("Could not parse Range %q: %s", ap, err) - } - rf := vr.rangeFunc() - - // Set function - if andFn == nil { - andFn = rf - } else { // Combine with existing function - andFn = andFn.AND(rf) - } - } - if orFn == nil { - orFn = andFn - } else { - orFn = orFn.OR(andFn) - } - - } - return orFn, nil -} - -// splitORParts splits the already cleaned parts by '||'. -// Checks for invalid positions of the operator and returns an -// error if found. -func splitORParts(parts []string) ([][]string, error) { - var ORparts [][]string - last := 0 - for i, p := range parts { - if p == "||" { - if i == 0 { - return nil, fmt.Errorf("First element in range is '||'") - } - ORparts = append(ORparts, parts[last:i]) - last = i + 1 - } - } - if last == len(parts) { - return nil, fmt.Errorf("Last element in range is '||'") - } - ORparts = append(ORparts, parts[last:]) - return ORparts, nil -} - -// buildVersionRange takes a slice of 2: operator and version -// and builds a versionRange, otherwise an error. -func buildVersionRange(opStr, vStr string) (*versionRange, error) { - c := parseComparator(opStr) - if c == nil { - return nil, fmt.Errorf("Could not parse comparator %q in %q", opStr, strings.Join([]string{opStr, vStr}, "")) - } - v, err := Parse(vStr) - if err != nil { - return nil, fmt.Errorf("Could not parse version %q in %q: %s", vStr, strings.Join([]string{opStr, vStr}, ""), err) - } - - return &versionRange{ - v: v, - c: c, - }, nil - -} - -// inArray checks if a byte is contained in an array of bytes -func inArray(s byte, list []byte) bool { - for _, el := range list { - if el == s { - return true - } - } - return false -} - -// splitAndTrim splits a range string by spaces and cleans whitespaces -func splitAndTrim(s string) (result []string) { - last := 0 - var lastChar byte - excludeFromSplit := []byte{'>', '<', '='} - for i := 0; i < len(s); i++ { - if s[i] == ' ' && !inArray(lastChar, excludeFromSplit) { - if last < i-1 { - result = append(result, s[last:i]) - } - last = i + 1 - } else if s[i] != ' ' { - lastChar = s[i] - } - } - if last < len(s)-1 { - result = append(result, s[last:]) - } - - for i, v := range result { - result[i] = strings.Replace(v, " ", "", -1) - } - - // parts := strings.Split(s, " ") - // for _, x := range parts { - // if s := strings.TrimSpace(x); len(s) != 0 { - // result = append(result, s) - // } - // } - return -} - -// splitComparatorVersion splits the comparator from the version. -// Input must be free of leading or trailing spaces. -func splitComparatorVersion(s string) (string, string, error) { - i := strings.IndexFunc(s, unicode.IsDigit) - if i == -1 { - return "", "", fmt.Errorf("Could not get version from string: %q", s) - } - return strings.TrimSpace(s[0:i]), s[i:], nil -} - -// getWildcardType will return the type of wildcard that the -// passed version contains -func getWildcardType(vStr string) wildcardType { - parts := strings.Split(vStr, ".") - nparts := len(parts) - wildcard := parts[nparts-1] - - possibleWildcardType := wildcardTypefromInt(nparts) - if wildcard == "x" { - return possibleWildcardType - } - - return noneWildcard -} - -// createVersionFromWildcard will convert a wildcard version -// into a regular version, replacing 'x's with '0's, handling -// special cases like '1.x.x' and '1.x' -func createVersionFromWildcard(vStr string) string { - // handle 1.x.x - vStr2 := strings.Replace(vStr, ".x.x", ".x", 1) - vStr2 = strings.Replace(vStr2, ".x", ".0", 1) - parts := strings.Split(vStr2, ".") - - // handle 1.x - if len(parts) == 2 { - return vStr2 + ".0" - } - - return vStr2 -} - -// incrementMajorVersion will increment the major version -// of the passed version -func incrementMajorVersion(vStr string) (string, error) { - parts := strings.Split(vStr, ".") - i, err := strconv.Atoi(parts[0]) - if err != nil { - return "", err - } - parts[0] = strconv.Itoa(i + 1) - - return strings.Join(parts, "."), nil -} - -// incrementMajorVersion will increment the minor version -// of the passed version -func incrementMinorVersion(vStr string) (string, error) { - parts := strings.Split(vStr, ".") - i, err := strconv.Atoi(parts[1]) - if err != nil { - return "", err - } - parts[1] = strconv.Itoa(i + 1) - - return strings.Join(parts, "."), nil -} - -// expandWildcardVersion will expand wildcards inside versions -// following these rules: -// -// * when dealing with patch wildcards: -// >= 1.2.x will become >= 1.2.0 -// <= 1.2.x will become < 1.3.0 -// > 1.2.x will become >= 1.3.0 -// < 1.2.x will become < 1.2.0 -// != 1.2.x will become < 1.2.0 >= 1.3.0 -// -// * when dealing with minor wildcards: -// >= 1.x will become >= 1.0.0 -// <= 1.x will become < 2.0.0 -// > 1.x will become >= 2.0.0 -// < 1.0 will become < 1.0.0 -// != 1.x will become < 1.0.0 >= 2.0.0 -// -// * when dealing with wildcards without -// version operator: -// 1.2.x will become >= 1.2.0 < 1.3.0 -// 1.x will become >= 1.0.0 < 2.0.0 -func expandWildcardVersion(parts [][]string) ([][]string, error) { - var expandedParts [][]string - for _, p := range parts { - var newParts []string - for _, ap := range p { - if strings.Contains(ap, "x") { - opStr, vStr, err := splitComparatorVersion(ap) - if err != nil { - return nil, err - } - - versionWildcardType := getWildcardType(vStr) - flatVersion := createVersionFromWildcard(vStr) - - var resultOperator string - var shouldIncrementVersion bool - switch opStr { - case ">": - resultOperator = ">=" - shouldIncrementVersion = true - case ">=": - resultOperator = ">=" - case "<": - resultOperator = "<" - case "<=": - resultOperator = "<" - shouldIncrementVersion = true - case "", "=", "==": - newParts = append(newParts, ">="+flatVersion) - resultOperator = "<" - shouldIncrementVersion = true - case "!=", "!": - newParts = append(newParts, "<"+flatVersion) - resultOperator = ">=" - shouldIncrementVersion = true - } - - var resultVersion string - if shouldIncrementVersion { - switch versionWildcardType { - case patchWildcard: - resultVersion, _ = incrementMinorVersion(flatVersion) - case minorWildcard: - resultVersion, _ = incrementMajorVersion(flatVersion) - } - } else { - resultVersion = flatVersion - } - - ap = resultOperator + resultVersion - } - newParts = append(newParts, ap) - } - expandedParts = append(expandedParts, newParts) - } - - return expandedParts, nil -} - -func parseComparator(s string) comparator { - switch s { - case "==": - fallthrough - case "": - fallthrough - case "=": - return compEQ - case ">": - return compGT - case ">=": - return compGE - case "<": - return compLT - case "<=": - return compLE - case "!": - fallthrough - case "!=": - return compNE - } - - return nil -} - -// MustParseRange is like ParseRange but panics if the range cannot be parsed. -func MustParseRange(s string) Range { - r, err := ParseRange(s) - if err != nil { - panic(`semver: ParseRange(` + s + `): ` + err.Error()) - } - return r -} From 4dccfc095d6ec5bdf0ce510e3910a6ee864c597d Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 31 Aug 2019 16:44:35 -0400 Subject: [PATCH 161/231] Add visual scroll bar --- internal/display/bufwindow.go | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index ad018c63..4daefe67 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -368,6 +368,11 @@ func (w *BufWindow) displayBuffer() { bufHeight-- } + bufWidth := w.Width + if w.Buf.Settings["scrollbar"].(bool) && w.Buf.LinesNum() > w.Height { + bufWidth-- + } + w.hasCalcHeight = true start := w.StartLine if b.Settings["syntax"].(bool) && b.SyntaxDef != nil { @@ -564,7 +569,7 @@ func (w *BufWindow) displayBuffer() { totalwidth += width // If we reach the end of the window then we either stop or we wrap for softwrap - if vloc.X >= w.Width { + if vloc.X >= bufWidth { if !softwrap { break } else { @@ -590,7 +595,7 @@ func (w *BufWindow) displayBuffer() { } } } - for i := vloc.X; i < w.Width; i++ { + for i := vloc.X; i < bufWidth; i++ { curStyle := style if s, ok := config.Colorscheme["color-column"]; ok { if colorcolumn != 0 && i-w.gutterOffset == colorcolumn { @@ -635,8 +640,27 @@ func (w *BufWindow) displayStatusLine() { } } +func (w *BufWindow) displayScrollBar() { + if w.Buf.Settings["scrollbar"].(bool) && w.Buf.LinesNum() > w.Height { + scrollX := w.X + w.Width - 1 + bufHeight := w.Height + if w.drawStatus { + bufHeight-- + } + barsize := int(float64(w.Height) / float64(w.Buf.LinesNum()) * float64(w.Height)) + if barsize < 1 { + barsize = 1 + } + barstart := int(float64(w.StartLine) / float64(w.Buf.LinesNum()) * float64(w.Height)) + for y := barstart; y < util.Min(barstart+barsize, w.Y+bufHeight); y++ { + screen.Screen.SetContent(scrollX, y, '|', nil, config.DefStyle.Reverse(true)) + } + } +} + // Display displays the buffer and the statusline func (w *BufWindow) Display() { w.displayStatusLine() + w.displayScrollBar() w.displayBuffer() } From 5dfaaf8856a1b373652763fa1b47c277ae72d760 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 2 Sep 2019 11:08:27 -0400 Subject: [PATCH 162/231] Update runtime --- internal/config/runtime.go | 195 +++++++++++++++++++++++++++++++++---- 1 file changed, 178 insertions(+), 17 deletions(-) diff --git a/internal/config/runtime.go b/internal/config/runtime.go index 4764f311..8877b534 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -25,6 +25,7 @@ // runtime/colorschemes/in_progress/paper-tc.micro // runtime/colorschemes/in_progress/paper.micro // runtime/colorschemes/in_progress/symbian-tc.micro +// runtime/colorschemes/material-tc.micro // runtime/colorschemes/monokai.micro // runtime/colorschemes/railscast.micro // runtime/colorschemes/simple.micro @@ -81,7 +82,9 @@ // runtime/syntax/dockerfile.yaml // runtime/syntax/dot.yaml // runtime/syntax/elixir.yaml +// runtime/syntax/elm.yaml // runtime/syntax/erb.yaml +// runtime/syntax/erlang.yaml // runtime/syntax/fish.yaml // runtime/syntax/fortran.yaml // runtime/syntax/fsharp.yaml @@ -94,6 +97,7 @@ // runtime/syntax/glsl.yaml // runtime/syntax/go.yaml // runtime/syntax/golo.yaml +// runtime/syntax/graphql.yaml // runtime/syntax/groff.yaml // runtime/syntax/haml.yaml // runtime/syntax/haskell.yaml @@ -153,6 +157,7 @@ // runtime/syntax/sls.yaml // runtime/syntax/solidity.yaml // runtime/syntax/sql.yaml +// runtime/syntax/stata.yaml // runtime/syntax/swift.yaml // runtime/syntax/syntax_checker.go // runtime/syntax/syntax_converter.go @@ -165,10 +170,12 @@ // runtime/syntax/vala.yaml // runtime/syntax/vhdl.yaml // runtime/syntax/vi.yaml +// runtime/syntax/vue.yaml // runtime/syntax/xml.yaml // runtime/syntax/xresources.yaml // runtime/syntax/yaml.yaml // runtime/syntax/yum.yaml +// runtime/syntax/zig.yaml // runtime/syntax/zsh.yaml // DO NOT EDIT! @@ -737,6 +744,26 @@ func runtimeColorschemesIn_progressSymbianTcMicro() (*asset, error) { return a, nil } +var _runtimeColorschemesMaterialTcMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x93\x41\x8e\xa3\x30\x10\x45\xf7\x73\x0a\x0b\xb6\x4d\x94\x86\xc6\x38\xcb\x04\xf0\x3d\x0c\xae\xce\x58\x01\x1b\x15\xf6\x8c\x72\xfb\x91\x81\x30\x42\x6d\x88\xd8\x14\xe2\xb9\xaa\xfc\xff\xa7\x35\x9d\xc1\xa4\x53\xfa\x41\xe6\xb2\x35\x9d\xeb\x35\x89\xe2\x94\x66\x69\xc6\xa2\x5f\x1b\xa2\xef\x41\x5b\x12\xc5\x5f\x9c\xb2\x22\xff\x08\x43\x7a\xb4\x62\xa2\xf8\xb9\xf8\x2c\xd8\x21\x75\xd2\xae\x6f\x00\x3d\x5c\xb0\x92\x5e\x8f\xe1\x71\x80\x56\x89\xae\xfc\x2d\xfc\x09\x76\xa9\x2a\x9e\xbd\x39\x61\x51\xe9\x3b\x89\xe2\x32\xab\x19\xab\xc2\xb0\x43\x04\x6d\xfd\x0b\x24\xeb\x3e\xec\x5c\xd5\xf5\xce\x3e\x0e\xc7\xb9\x06\x12\xc5\x59\xf3\x25\x73\xba\x01\x24\x7c\x0b\xd7\x79\x09\xea\x9a\x73\xce\x83\x5d\xa4\xfa\xa3\xe4\x34\x6a\xfe\xf8\xb1\x8c\xdc\x40\x80\x68\x90\x44\x8d\xe9\x24\x59\xb9\x59\xd7\x0d\x77\x77\xd6\x02\x26\x0b\xbe\x8e\xdd\x27\xff\x0a\xd4\xb3\x32\x2b\xcb\xf9\x67\xb1\xbd\x87\x92\xa0\xad\xfa\x56\xb3\x20\xe9\xf5\xba\x73\x95\xff\xdc\xa9\x17\x2d\x1a\x6f\x27\x2f\x6f\xf4\x16\xa6\xb5\xc7\x93\x76\x76\x31\x3f\xfb\x27\x08\x6e\x0d\xa1\x39\x65\x94\x06\xc1\x01\x61\x40\xd3\x7a\x9b\x8b\x4b\xba\xe3\xda\x12\x9e\x37\x90\x15\x16\x96\x90\xbf\xc1\xdc\xb8\x04\xe0\x95\x94\x40\x10\xc6\x67\xdf\x18\x3f\xf2\x42\xcb\x1b\xaf\xc3\xbd\x26\xe6\xd4\xa0\x68\x1f\x60\xc7\xe3\x60\x2f\xb0\x19\x00\x85\x9d\xac\x3e\xd8\xd2\x8a\xa6\x11\x78\xbc\xa1\x35\xd2\xbc\xf2\x75\xd4\xea\x39\xc0\xb1\xab\x4e\x4b\x40\xaf\x88\x24\xd1\x5a\x93\x1f\x3f\xc0\xbf\x00\x00\x00\xff\xff\x5a\x13\x7a\x2c\x71\x04\x00\x00" + +func runtimeColorschemesMaterialTcMicroBytes() ([]byte, error) { + return bindataRead( + _runtimeColorschemesMaterialTcMicro, + "runtime/colorschemes/material-tc.micro", + ) +} + +func runtimeColorschemesMaterialTcMicro() (*asset, error) { + bytes, err := runtimeColorschemesMaterialTcMicroBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/colorschemes/material-tc.micro", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeColorschemesMonokaiMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\xcd\x6e\xab\x30\x10\x85\xf7\x79\x0a\xcb\xde\x06\x74\x43\x12\x43\x74\x57\x50\x60\x59\xf5\x15\x0c\x9e\xa4\x56\x8c\x8d\xfc\xa3\x36\x6f\x5f\x99\x92\x2a\x69\x5c\x5a\xbc\xb1\xc4\x37\x67\xc6\xc7\xc7\xbd\x96\xda\x24\x52\xa8\x33\xe2\x70\x64\x5e\x3a\x84\x49\x5b\xb4\x45\x9b\xad\x49\x56\x84\x85\x57\x37\x50\xaf\x87\x01\x54\x80\xf2\x7d\xbe\xd9\x37\x51\x48\x70\x50\x4e\x1c\x05\x18\x84\x09\xa5\xf5\xa1\x69\x7f\x10\x53\xd6\xb1\x49\xad\x6c\x8a\x4d\xbb\x4c\xa5\xd6\x19\xa1\x4e\x08\x93\x86\xd6\x55\xbe\xfb\x0b\x9c\xf6\xaf\x2c\x0c\x51\xd5\x0d\x2d\xeb\x68\x85\x75\xcc\xc1\x7c\xa6\xf6\x90\xd1\x3c\x7e\x70\x7b\x19\x3a\x2d\x97\x99\xd1\xc0\x68\x74\x8f\x30\x79\xaa\x76\xd5\x86\x46\x21\x77\x19\x61\xd9\x16\x3b\x42\x2f\x58\xe8\x55\xd2\x26\xcb\xe2\x1e\x7b\xc5\xc1\x48\xa1\x80\x23\x4c\xea\xed\x96\x16\xf1\x99\xc0\x18\x6d\x10\xee\xb4\xe4\x68\x71\x2c\xcd\xf5\x15\x5b\x90\x0b\x6e\x79\x1b\xfa\x22\x3c\xff\x5f\xcf\x79\xb9\x97\x63\x5d\x37\x39\xbf\xc0\x08\x15\x72\x92\xcc\x57\xb4\xff\x17\x56\xb4\x69\x68\x97\x28\x3f\x74\x53\xa0\xca\xe9\x5b\x93\x6d\x16\xd6\xfd\xed\x7b\x63\x82\x64\xbc\x20\xa2\x7c\xf2\xce\x81\x49\x66\x93\x96\xfc\x99\xc9\x37\x66\xd4\xef\x21\xf4\xc6\x7e\xee\x83\x4b\xb1\x39\xa7\x6d\xaf\xa5\x1f\xd4\x0d\x41\x9e\x35\x82\x77\x07\x8a\x03\x9f\x72\x62\xff\xa3\x17\xc9\x84\x42\x9d\x61\xfd\x19\x9c\x4d\xbf\x27\x29\xfd\xe2\xf1\xfc\x7e\xf1\x8a\x3c\xc4\x36\xbd\xd6\xdf\x50\x8f\x90\x63\xa7\xc8\x4b\xfc\x08\x00\x00\xff\xff\x92\xba\x33\x8a\x22\x04\x00\x00" func runtimeColorschemesMonokaiMicroBytes() ([]byte, error) { @@ -977,7 +1004,7 @@ func runtimeHelpKeybindingsMd() (*asset, error) { return a, nil } -var _runtimeHelpOptionsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\x5f\x8f\xe4\xb6\x91\x7f\x1e\x7d\x8a\xc2\x78\x81\x99\x36\x7a\x7a\x8d\xc4\x0f\x41\xbf\x04\x6b\xef\xdd\xda\xc8\xd9\x7b\x88\x37\x77\x0e\x92\x20\xa2\xa4\x52\x8b\x19\x8a\xd4\x91\x54\xf7\x6a\x0d\xdf\x67\x3f\x54\x15\x29\xa9\x7b\x7b\x66\x72\xc0\x9d\x1f\xbc\xd3\x12\x59\xac\xbf\xbf\xfa\x43\x7d\x01\xef\x87\xa8\x9d\x0d\x45\xf1\x83\xae\xbd\x83\x10\x9d\xc7\x00\xca\x18\x70\x2d\xc4\x0e\x61\x0c\xe8\xa1\x76\xb6\xd5\x87\xd1\x2b\x5a\x0c\xda\x82\x8e\xe1\xe2\x61\xa3\x3d\xd6\xd1\xf9\x69\x97\x69\x8d\x01\x03\x93\x28\x5f\xfd\xfc\xf6\xdd\xdf\xbf\x7d\xff\xe3\xbf\x7e\xff\xee\xef\xdf\xbd\xff\xe1\x5f\x5e\xf7\xb4\xa0\x04\x25\xef\x9f\x22\x04\x6f\x02\x0c\xe8\x0b\x5a\xf3\xf3\xdb\x77\x10\x06\xac\xb7\xa0\xdb\xcf\x09\x96\xa0\x03\x58\x17\x21\x60\xdc\x42\xf9\xdf\xaf\x77\x42\x33\x1f\xa4\x03\x71\xd3\xd0\x81\xc5\x72\xe2\x19\xcf\xdf\xa1\x47\x50\x1e\x99\x23\x27\x5a\x81\xd8\xa9\x08\x93\x1b\xa1\x56\x96\x68\xef\x8b\xe2\x4b\x28\xd5\x18\x9d\xb6\x0d\xda\x58\xee\xe1\xd4\xa1\x85\xda\xa3\x8a\xda\x1e\x40\x81\xc5\x13\x18\x6d\x59\x71\x4c\x2b\xa8\x1e\x41\x96\x8b\x80\x49\xea\x02\x00\x06\x8f\x47\xed\xc6\xc0\x3b\x76\x45\x71\xd3\x60\xab\x46\x13\xe1\xa8\xcc\x88\x7b\x28\xa3\x1f\xb1\x9c\x0f\x0d\xea\x88\xe5\x1e\x58\x28\x38\x69\x63\x80\x9e\x30\xb5\x6a\x6c\x5b\xf4\x80\x47\xf4\x13\x94\xb6\x84\x80\xb5\xb3\x4d\x00\xda\xd7\xab\xa8\x6b\x65\xcc\x44\x67\xde\x9f\x3a\x12\x95\xd6\x68\xe1\x84\x0f\xcb\xf6\x16\xd1\x37\x3b\x10\x23\x2a\x13\xd2\x51\x9f\x11\xe2\xb3\x95\x6d\xe0\xbf\x46\x1d\x45\x0f\xa4\x2a\xfc\x48\xbf\x74\xec\xdc\x18\x41\x85\x47\x6d\x0f\x3b\xf8\x06\xa1\x56\x1e\xdb\xd1\xc8\xc2\x31\x90\xb6\x62\xa7\x03\x51\x6a\x51\xc5\xd1\xe3\x16\x2a\xac\x15\xe9\x8d\xe8\xf4\xfa\xd0\x45\x50\x75\xad\x59\x75\xc6\x4c\xe9\x44\x68\xb5\xc1\x2d\xb8\x23\xfa\x93\xd7\xac\xf6\x53\xa7\x22\x11\x3a\x89\x6e\x3d\x42\x85\xad\xf3\xb8\x83\xef\xdb\xa7\x44\x24\xe9\xcb\xaf\x4a\x7a\x62\x57\x2a\x25\x32\xe4\x49\x59\xdf\xd7\xac\xf2\x95\x98\xa4\x52\x01\xad\xea\xc9\x24\xda\x32\x65\x6d\x5b\x57\x29\xbf\x85\xd0\xb9\x13\x38\x6b\x26\x31\x4e\x5a\x98\x19\x20\x01\xa0\x42\xe2\x1c\x1b\x1d\xb1\xa1\x43\xbd\x22\xce\xc9\xe5\x84\x56\x3b\x1a\x03\x83\x8a\xdd\xae\xa0\xd7\x70\xc9\x44\xab\x4c\x48\xbe\x51\x3b\xe3\x7c\xed\xcc\xd8\x5b\xe2\xa5\x65\xc5\xae\x42\x02\xa2\x83\xaf\xb6\xc0\x76\x31\x06\x1a\x1d\x06\xa3\x26\x50\x20\x7b\x40\x45\x3a\xb1\x00\x8e\x30\xdd\x6a\x6c\xd2\x9b\x1d\x7c\x48\x94\xc6\xc0\xc6\xd3\x2d\xdb\xe6\xa4\x6c\xcc\x9b\x7f\xf7\x15\x91\xaf\x10\x3a\x7d\xe8\x0c\x19\x8d\xe5\x61\x52\xca\x40\xeb\x3c\xe0\x47\xd5\x0f\xe6\x39\x55\xb2\x04\xa1\xee\x90\xb5\x69\x9c\x6a\x32\x34\xcc\xcf\x05\x9b\x1a\x52\x35\xe9\xe3\xd5\xbd\x04\xf1\x5b\xed\x37\xaf\x57\xcb\xc2\xeb\x52\xec\x5b\xee\xd8\xa8\x5b\x11\x21\x60\x64\x4f\x21\xa3\x1f\x8c\xab\x94\x61\xf3\x94\xd7\x78\x4a\xbf\xcb\xa2\xb8\xf9\xd1\x45\x14\x14\x20\x6e\xf2\xc2\xf5\x71\x70\x9f\x9e\x6e\x21\x38\xa3\xbc\xfe\x84\xcd\x96\xc3\x62\xfe\xf9\x10\xeb\x4d\x71\x43\xd8\x42\xf6\x30\xae\x56\x51\xe4\x98\x25\x58\x3c\x3f\x76\x38\x31\x0c\x61\x5f\x61\xd3\xc8\x3a\x3a\x5b\x3c\xb4\xd2\x56\x31\x5c\xdd\x7c\xb8\xd0\x0e\x21\x54\x85\x10\xd0\x60\x4d\xe4\x5b\xef\x7a\xc6\xf1\xec\x70\x21\x53\x2a\x6e\x2e\xf0\xf1\x5c\x7d\x6b\x00\x16\x0c\xa8\x1d\xc9\x59\x4d\xb3\xfc\x14\xdd\x10\x3b\x8f\x58\xdc\xac\xf7\xee\x8b\xe2\xe6\xcf\x09\x2d\x3d\xaa\x06\x7a\x47\xa0\x5a\x11\x12\xf0\x49\x77\xe1\x5c\x77\x89\xa3\x64\xfe\x12\x3a\x34\x03\x44\x37\xe8\xba\xb8\xb9\x2f\xf9\x57\x7a\xb5\xd9\x89\x9f\x8c\x3e\x38\x4f\x68\x59\xee\x17\x87\x63\x22\x0c\xba\xb3\xa9\x64\x21\x99\x5b\x12\x96\x82\x46\x13\x42\xa2\x4d\xe6\x63\x28\x9c\x5d\x8c\x16\x36\xd8\x6a\x8b\x0d\x09\x7a\xe9\x7a\xe4\xf3\x64\x14\x86\xad\xcd\xf3\x40\x8d\xb6\x76\x8d\xb6\x87\x72\xcf\x64\xf2\x4f\x0a\x12\x37\xa0\x15\xd7\x20\x20\x13\xa3\x90\x2e\x77\xf0\xd3\x38\x0c\xce\x93\xdd\xf2\x7a\x06\x46\x3a\xd3\xe8\x40\xcf\x55\x84\x2e\xc6\x21\xec\x5f\xbf\x3e\x9d\x4e\xbb\xd3\x6f\x77\xce\x1f\x5e\x7f\xf8\xe3\xeb\xbc\xe1\xf5\x13\x38\x31\xc6\xf6\xe1\x77\x89\x35\xd7\x5a\x3c\x25\xed\xad\xb2\xc8\x19\xb4\x83\x6a\x1a\xc9\x63\xa2\x51\x37\x7b\xd0\x35\xb9\x57\x28\xd4\xaa\x10\x1b\xed\xe3\xc4\x92\xb3\x42\x23\xfa\x5e\x5b\x92\x92\xec\xf2\xa8\x6d\x43\x10\xa8\xcc\xc1\x79\x1d\xbb\x3e\xf1\x20\x85\x82\x5b\xd6\x83\x6e\x59\xfa\x9c\xd5\x74\x80\xde\x35\x02\x4c\xce\x53\x14\xed\xe0\x3f\x09\xb6\x57\x67\x8a\xa9\xb7\x89\xe4\x3f\xc6\x10\x85\xae\x22\x4a\x95\x73\x06\x95\x85\x32\x93\x29\xc5\x53\x04\x18\xe8\x6c\x31\x20\xe5\xe6\xe0\x96\x1c\xcd\xc5\x4f\xaf\x1e\x89\x8e\x65\xac\xde\x11\xb9\x0c\x8a\x74\xfa\x16\xaa\x31\xe6\xe8\xd3\x56\xd5\x35\x15\x32\x92\x79\x2e\xd9\x6b\xdb\xed\xb5\x74\xd3\xa9\xd0\x65\xa7\x65\x07\x4d\x62\xab\x83\xd2\x36\x44\x50\xb2\x22\x67\x2f\xaf\x0f\xda\x12\xb2\x52\x16\xb9\xe7\xd2\x03\x1b\x49\xab\x82\xe2\x79\x3f\x65\x43\x82\x52\x6c\x36\x0b\x90\x4b\x48\x26\x2e\x99\x77\x57\x71\x0d\x62\x26\x79\xe7\x31\xb8\xd1\xd7\x4c\x48\xdb\x88\x36\xe8\x23\xa6\xfd\x4b\xe6\xe4\xdc\x46\xd8\x3e\xa0\x1b\x0c\xc2\xa9\x73\x14\xf2\xe4\x3f\x94\xe8\x53\xd0\x77\xea\xa8\xed\x81\x6d\x99\x4f\x9c\x0d\x19\xa2\x8a\x63\x78\x3e\x96\x48\xc4\xd6\xf9\x5e\xc5\x97\x7c\x8a\x7d\x15\x2d\x47\xce\xda\xb5\x09\x53\x89\xcd\xa4\x19\x76\x63\xf8\xd3\x8f\xdf\xff\x7c\xbe\x83\x58\x66\x9f\x29\xff\x6a\x4b\xb8\x37\xed\x06\xb8\x4c\x52\x01\x1a\x17\x3e\x5b\x4b\xa4\xca\xbf\x7a\x5e\x5b\x7b\xd3\xb2\x7e\x11\xe2\xc9\xc1\xe0\x42\xd0\x95\x49\x25\x47\x48\x87\x2f\xba\xa3\x93\xca\xd1\xea\x8f\x25\x23\x41\xd9\xb8\x50\x26\xa7\x92\x28\x13\x79\x85\xfb\x0a\x2f\x62\x93\xc4\x67\x78\xa7\xbd\x29\x8f\x53\x50\x08\x8e\x8a\x4a\x89\x59\xf1\x82\x78\x76\xf2\xe7\x59\xdc\x8d\xa6\x01\xa3\x1f\x39\xca\xeb\x4e\xd9\x03\x2e\x50\x9a\xc5\x25\x70\xe4\x70\xcc\x20\x18\xa2\xf2\xab\x62\xf7\x29\x64\x60\x19\x67\x2b\xc6\x69\x20\xd0\x09\x18\xc3\x8c\x27\xf4\x2c\x1b\xe7\xc2\xf7\x77\x97\x59\x9b\x35\x4e\xa9\xf3\xe9\xbc\xcd\xb2\x5e\x57\x1b\x05\x79\x83\x83\x88\x94\xb5\xc5\xf1\x43\x42\x75\xea\x88\xc5\x0d\x81\x33\xb3\xab\x0f\xd6\x79\xac\x55\x20\x86\x07\xf4\x64\x10\xa0\x9f\x0f\xda\x06\x0a\x87\xa8\x8f\x94\x68\x95\xaf\x3b\xbc\xea\xc0\x2b\x50\x94\xc2\xbf\xee\x94\x5f\x4b\xbf\x6e\x07\xe8\x9d\xaa\x23\xfa\x6b\x94\x20\x53\xe1\xba\xb2\xdc\x03\x5a\x55\x99\xd4\x57\xb1\x99\x52\xbe\xab\x5c\x8c\xae\xcf\x18\x41\x48\xe5\xbc\xb8\x30\xf4\x18\x82\x3a\xe0\xec\xb8\x83\xa7\xb0\x6e\x3e\x0b\xe9\x17\xeb\xa2\x25\x2e\x1f\x11\x87\xcf\xbb\x20\x29\xea\x97\xe7\x5b\x38\x75\x3a\x62\x18\x54\x8d\x74\x80\xe2\x7a\x86\x0c\x3e\xb9\x51\x8e\x27\x7e\x12\x07\xab\xc8\xd6\xed\xd2\x4e\xf4\xee\x38\x27\x21\x8b\x1f\xa3\x48\x3d\xf7\x17\x76\x02\xb2\x8a\x97\x2e\x16\x80\xd7\xad\x8e\x65\x98\x27\x20\x94\xc3\x43\xc7\x3e\x5f\x51\x2d\x67\x90\xb5\xf0\xcd\x52\xd7\xd0\xde\x85\x7d\x6e\x28\xce\x04\x48\x7b\xa4\xc2\x4e\xfa\x67\x90\xc5\x36\x02\xf6\x43\x9c\x5e\xf0\x86\x47\x9c\x7a\xb4\x63\xb9\x9f\x6b\x70\x16\x4b\x59\xf7\x10\xe2\x64\x10\x1e\x71\x02\x5a\x71\xdd\xac\xa1\xf6\x88\x76\x07\x54\x95\x8a\xac\x2a\xc2\x07\x77\x38\x18\xfc\x03\x4e\x3f\xd0\x3e\x1d\xa0\x72\xa3\x6d\x38\xa7\xbd\x31\xf1\xe1\x50\xae\x2b\x37\x82\x8d\xdc\x1c\x2c\xf0\xa1\x6d\xd6\xdc\x82\x20\x3b\xf8\xe0\x68\x09\xb9\x1b\x6f\xd9\x42\xd0\xfd\x60\x26\x22\x97\x29\xd3\x21\x7f\xb2\x95\xb6\xcd\x1f\xf0\xba\xcf\xac\x84\xef\x55\xac\xbb\xca\xab\x9a\xe2\x6a\xb4\x0d\x72\x1d\x07\xfc\x98\x1c\x87\x5f\x09\x60\xde\xdd\x6f\xee\xb6\x70\xf7\xcb\xaf\xf4\xff\xbf\xfc\xed\x6e\xce\x6e\xa9\xae\xe3\xdc\xc4\xa5\x9d\x92\x6d\x67\x51\x74\xad\x0a\x5a\x7c\xb7\x7f\x1c\x14\x21\x4d\x90\x56\x49\xda\x49\xa6\x36\xa0\x15\x2c\x55\xdc\x77\x89\x7a\x1b\x87\xd2\x47\xe1\x47\x4d\xd9\x7e\x46\x8e\x5a\x59\xeb\xd8\x49\xa8\xec\x56\x47\xaa\x1c\x97\x22\x1e\xe4\x90\xb9\x98\xd6\x48\x99\xc4\xde\x25\x3a\xe7\xc1\x67\x08\x17\x38\x69\x71\xaa\x3c\x83\x2e\xc9\xef\x4f\x91\xd4\x16\xc2\x58\x77\xa0\x20\xe8\x38\x32\xa0\xbc\xdc\x2e\xf6\x6e\x64\x6c\x3b\x75\x28\x2d\xa7\x4b\xb0\x02\xfc\x06\x82\x14\xa3\xa9\xc6\x3a\x7b\x96\xfc\x86\x16\x37\x5b\x3a\x67\x0c\x23\xb3\x49\xfc\x49\xfc\x2a\xb3\x80\x30\xfb\x8e\xa3\xe4\x8f\x21\x24\x4a\x78\x24\xe5\x53\x64\xd5\x5d\xae\x9b\x24\x2f\xb1\x55\x57\x0d\x26\x25\x25\x37\x4c\xd2\xca\x9c\x1d\x40\x65\x11\xf5\x17\xae\x95\x97\x92\xf0\xef\x75\xcb\x53\x01\x08\xa1\x23\x37\x22\x7a\xa9\xf5\x3c\x6b\xb0\x16\x3a\x1d\x01\x83\x30\x97\x20\x46\x52\x4c\x6d\xf4\x50\x39\xe5\x25\xcf\xce\x96\xc9\xbe\xf0\x42\x07\xe0\xfb\xe8\x95\x36\xda\x1e\x4e\xe1\xb9\x42\x3b\x7a\xdd\x43\x5e\xba\x82\x9a\x40\xd1\x8f\xce\xbc\x10\x4f\x7e\x34\xe8\x57\x50\xc2\xd1\x64\xc7\xbe\x42\xff\x42\x59\x45\xde\x2a\x81\x54\xee\xc1\x63\x4f\xbd\x66\xce\x16\xab\xe6\x89\xa1\x4d\x85\x08\x51\xf7\xb8\x38\x3e\x3d\x4e\xb1\xa2\x2c\x8f\x2e\x86\x31\x82\x8e\x69\xf2\x32\x23\x37\x77\x3b\xf3\x2e\x2e\x66\x5f\x90\x88\xf8\xea\x34\xf5\xf9\xd3\x9a\xb1\xda\xf5\x3d\xd9\x21\xbd\x82\x0a\xe3\x09\xd1\x42\x6d\x9c\x64\x1c\xdb\x80\xc7\x07\x3a\x2f\x55\x9b\xac\xf2\x17\x91\x80\x8e\x1b\x6d\xe3\x72\xfe\x8a\x97\x25\xee\x96\x60\xca\x71\x97\xc0\xf1\x4d\xae\x0b\xaa\x8d\xe8\x65\x28\x68\x5c\xc8\xf3\x28\x1e\x88\xb9\xec\xbe\xe9\x0d\xf3\x25\x4d\x5f\x1a\x5a\xe5\x59\x22\x25\x50\x26\xae\xed\xe1\x25\xa5\xd4\xde\x19\x23\xd9\x7f\x99\xdc\xc8\x53\xa8\x94\x7f\x31\xdc\x65\x69\xaf\xfc\x41\xdb\x72\x0f\xaa\x77\xa3\x8d\xb9\x66\x0e\x57\x2a\xc1\x80\x5c\xbf\xa7\xe9\x5e\x85\xc6\x9d\x72\xfd\x2c\x9e\x71\x8d\xe3\xdf\xae\x0f\x0b\x03\x62\x73\xe5\x2c\x22\x2e\x8c\x13\xca\x3b\x8b\xf9\x27\x83\xc2\x35\xb2\xbf\x49\x64\x7b\xe5\xe3\xa0\x42\xe4\x22\x52\x92\xb8\xc4\x15\x75\xab\x06\x55\x73\x1e\x42\x62\x50\xda\x40\xcf\xfb\xd1\x44\x4d\x5d\x0a\x73\xf1\xfb\xb9\x85\x93\x98\x8c\x91\x52\x37\xf1\x36\x78\x0c\xe8\x8f\x78\x56\x90\xae\x6b\x35\x83\x47\x34\xe7\xb4\x15\xe7\xce\xd1\xca\x32\x4a\x02\xc6\xd5\x8f\x2f\xc4\x9f\x6b\xe3\xc9\xab\xe1\x52\x16\x7a\x96\x35\x45\xb9\x87\xc7\xd1\xce\x81\x71\x32\x3f\x68\x75\x9c\x4b\x7d\x29\x05\x5e\x70\x9d\xc1\xe8\x28\x25\x44\xf6\x71\x05\x9d\xf3\xfa\x93\xb3\x51\x19\xe0\xf7\xe4\xde\xa9\x89\xdc\x66\x76\x74\x24\x54\xce\xad\x25\x7b\x40\xae\x10\xb2\x5a\x78\xef\xef\x9f\x17\x93\x96\x78\x7d\xe8\xe2\x72\xfa\x91\x4a\xb5\xfa\x9f\x3f\x5b\x60\x99\xe7\xa3\x3c\xe9\x49\x95\xd0\xff\x86\x0b\x2e\x69\xa4\xab\x32\xe5\x1e\x52\x7f\x15\xa2\x27\xf3\xf1\xd0\x47\xb3\x71\x73\x27\x42\xd5\xdc\x03\x35\x83\xd2\xa7\x0e\xca\xe7\x63\x39\xc8\x57\x15\xd2\x4f\x69\xc6\x29\x19\x59\x1f\x31\xac\x0a\xcc\xc1\xa8\x9a\x6b\xab\xa0\x1b\x84\xf2\xd5\xfd\xa6\x9c\x77\x70\x32\x59\x36\x69\x5b\x9b\xb1\x61\xe3\x69\x23\x23\xe5\xed\x6a\x56\xb1\x85\x92\x67\x36\x5b\x1e\x94\xd1\x3f\x6e\x88\xf4\x0f\x15\x5e\x4b\xf3\xc8\x4f\xa5\xa9\xe4\x17\xeb\x13\xa2\x7a\x44\x40\xcd\xe9\x5e\xd9\x0c\x72\x8e\x7f\xa8\x5a\x1a\x53\xc2\xb5\x93\xf2\x8c\xe8\x44\xa5\xa5\xe8\x48\x13\xba\x6b\xf3\xf3\xa4\x2e\x2a\x59\xe7\x92\x93\x2b\xe8\xfa\x99\x32\xe4\xd5\x7d\x16\x71\x03\xaf\xee\xb3\x88\x9b\xfb\x57\xf7\x24\xe2\x66\xfb\xea\xbe\x76\x66\x43\xef\xdc\x10\xf7\xb9\x4b\xdc\x30\xad\xcb\xff\x96\x35\x62\xd3\xbc\x2b\x4f\xc4\x36\xff\xdf\x0e\xf0\x94\x88\xa4\xfe\xfd\x59\x5d\xbe\xd9\xcb\x95\x00\xbd\xa1\xae\x7a\x0b\x67\xab\xbe\x43\x33\x6c\xf6\x57\x85\x8c\xbc\x80\x27\xa3\x6b\x71\xd2\x10\x6f\xdd\x46\xc8\x8b\x67\xba\xc2\xa7\x31\x63\x15\x2d\x63\xdd\x13\x72\xe7\x9b\x00\xe9\x34\xc3\x38\xa0\xcf\x57\x81\x9c\x8c\x77\xf0\x9e\x4a\xc3\x10\x21\x4c\x21\x62\x1f\xe6\xb6\xe2\x36\x8c\x8d\xbb\x85\x6a\xe4\xda\xd8\x59\xf8\xe6\xa7\xb7\x14\xd4\xa9\xd4\xbb\x6d\x9c\x0a\xbb\xdb\xb3\xfa\x37\xbd\xaa\xc7\x10\x5d\xaf\x3f\xa5\xf1\x46\x9e\x32\xf1\xcd\x1d\xc1\x47\xba\x74\x62\xa4\xd7\xb1\x83\x30\x5e\x93\x85\x8e\x4f\xb2\x4c\x36\xaa\x8f\xe5\x1e\xe2\xe8\x6d\x00\xf9\x09\xe2\xb9\xae\x6d\x9f\x57\x44\x54\x15\xb5\x9e\xbd\xf4\xb7\x56\x1d\xf5\x81\xea\xf0\xa5\x40\x63\xfd\xe2\x41\x5b\xcb\x33\x85\x9c\xe2\x54\x48\xed\xa1\x8c\xf1\xa3\xaa\xb8\x2d\xbd\xc7\xdd\x61\x27\xcd\x2c\x97\xa8\x5f\xaf\x28\x39\x5b\xe3\xe6\xbc\x23\x60\xc1\xb9\xdc\x54\x76\x8a\xdc\x1e\xc9\x10\x86\xf8\x0a\xd1\xc9\xe6\x34\xf4\x7c\x21\x0b\xd0\x0e\xfd\xe9\x6c\xfa\x12\x55\x05\xf4\x8c\x1b\xb8\x74\x5d\x72\x85\xc8\xd7\x0b\x81\xf9\xc8\x3d\x8f\xd4\x12\xf3\xab\x3a\x9c\x05\x7d\x9e\x0f\xf4\x7d\xd4\xd1\xb0\xdf\xf2\xac\x3d\xcc\x2d\x88\x4c\x75\xa9\x16\xf1\x73\x75\x7e\x17\x80\x97\xcf\xed\x44\xc0\x48\xcd\xe7\x5c\x8e\x73\x4a\x91\x4a\xf4\x05\x15\x8c\x01\x07\xaf\x7b\xe5\xa7\x12\xee\xb3\x53\xb5\xa3\x21\x67\xf8\xd2\xea\x8f\x9b\x27\x39\xba\x18\x25\x26\x0c\x48\xc4\x56\x7d\x42\xee\x55\xe4\xfe\x85\x2f\x8f\x13\x74\x56\xaa\x7e\x3c\x78\x02\xc8\x64\xe2\xb9\xa3\x54\x6d\x8b\x75\xcc\x89\xd5\x12\x2c\xad\x5b\x0f\x19\xa7\x7c\x1b\xbd\x79\xf8\x96\x03\x82\xff\xfc\x8f\x67\xdc\xf6\xe1\xe1\xa1\x28\xde\xa6\x77\x83\x19\x0f\x3a\x43\x7d\x58\x6e\xae\xb9\x36\xa5\xda\xec\xbc\xcd\xe4\x8a\xb5\xfc\xe5\xd7\x12\xca\xfb\x4d\x09\xe5\x5f\xfe\x56\x42\x79\x7b\x5b\x42\x79\x77\x57\xee\xe0\xdf\xbd\x3b\xea\x66\xbe\x1d\x61\x57\x5c\xa8\xa5\xc3\x9e\x9f\xe5\xc6\xc4\x4a\xb9\x5f\x4d\x24\xb6\x67\xb7\xd9\x18\x21\xb8\x7e\xb9\x7f\xaf\x54\x58\xa6\x9b\x39\x19\xec\xe0\xcd\xac\xb4\xde\xf5\x3c\x68\xba\x34\x93\xaa\x64\x90\xd0\xab\x47\x94\x7b\x16\xbe\x76\x19\xe6\x09\xc3\x30\xc5\xce\xc9\x65\xcc\xa4\x7a\x93\x67\xc3\x01\x3c\x1e\x94\x6f\x0c\xb5\x84\xae\x15\x87\x4c\x53\xc8\xc0\x33\xfd\xcf\xcb\xe5\xf5\x90\x04\x2a\xec\xd4\x51\x4b\xef\x49\xb0\x73\xd6\x54\xbc\x08\x3a\x46\xdb\xc8\x3d\xdd\x9b\x33\xe3\xd0\xe3\x65\x04\x92\xe7\x15\xdc\x93\x7c\x66\x99\x99\x08\xfb\x29\x9b\xe5\x99\x33\xdf\xd8\x29\x33\x47\x82\x91\x01\x92\xdb\xe6\x11\x62\x8e\x3d\x6e\x80\x56\x97\x41\x50\x5c\xde\x22\xce\x6a\xfa\x47\x70\x16\x82\xdb\x12\x29\x64\x1f\xdf\x8a\x22\xcf\x3f\xf4\x90\x66\x32\xd1\x2f\x72\xc1\x37\x8f\x07\x45\xd7\x77\x8b\x9e\xb9\x86\xb9\x42\x87\x73\x01\x71\x1f\x1d\x28\xeb\x28\x7a\x8b\x5e\xd5\x9d\xb6\x38\xcf\xac\x38\x36\x39\x93\x9d\x31\x99\xe4\xe1\x3d\x90\xf6\xec\x8a\xa2\xf8\xe2\x0b\x78\x27\xc3\x50\x72\x10\x99\x09\xe4\x9d\x45\xf1\xe7\xe5\x83\x10\xda\x1e\x16\xaa\xb9\xc4\x92\x49\xaa\x99\x08\x45\x78\xb7\x99\x76\xf0\x6f\xf2\x07\xf4\xa8\xf2\xa7\x25\x14\x49\x79\xc6\x7d\xe2\xe9\xd0\x5a\xd5\x97\xdf\xb1\x9c\x6b\xb8\x4c\xc3\x3c\x15\xe7\x8b\x7d\x42\xb6\x22\x01\xa5\xb6\x57\xc7\xea\x3f\xa5\xd3\x96\x22\x70\xe6\x35\x7d\x0d\x32\x07\x26\x35\xf7\x73\x58\xae\xbf\x9b\xb0\x7c\xaf\x2c\x14\xc3\xae\x28\x3e\x2c\x57\xb8\x72\x83\xbf\x6a\xa2\x57\x33\xe5\x6d\x62\x18\x57\x37\x02\xab\x95\xac\xa7\x82\x16\xf2\xe8\x91\x0e\x5d\x98\x4c\x4a\xdc\x72\x74\x97\x01\x23\x3f\x28\xd7\x09\x88\x9e\x96\xbb\xa2\xf8\x3e\xdd\x29\x5f\x28\x6b\x9e\xf6\x93\xe5\xf8\xab\x96\x61\x94\x8f\x23\x32\xd8\xa4\x33\x28\x8e\xa4\xfa\x99\xf8\x03\x0d\xb6\x68\xa1\x58\x12\xae\x98\x57\x40\xc4\x1f\x0d\x69\xb9\x1c\x94\x41\x53\x9a\x6b\x75\x2a\x5c\xa6\xea\x54\x60\x92\xea\x04\x69\xf0\x63\x8d\x43\x84\x77\xae\xe0\xdf\xa2\x9e\x39\x5b\xc3\xd7\xd7\x97\xff\x71\xac\x26\x79\xb2\x2f\x8a\xb2\x2c\x49\xba\xe2\x97\xe2\xe6\xb6\x8d\xfb\x83\xbb\xdd\xc3\x2f\xc5\xcd\xcd\xed\xfa\xe8\xdb\x3d\x70\x2a\x2c\x6e\x7e\xdd\xca\x3a\x3f\x56\xd3\x7a\xa5\xfe\x84\xb7\x7b\xf8\x4d\x5a\x70\xb1\x97\x90\x22\x3f\x96\x85\x5f\x17\xbf\xd2\xc9\x45\xf1\xde\x53\x7c\x69\xa3\xbc\x99\x66\xdd\xf2\x3c\x57\x82\x92\x54\x76\xc9\xe6\x97\xbb\x7f\x8a\xcb\x2f\x77\xbe\xfa\x3f\x60\xf1\x7f\x02\x00\x00\xff\xff\xee\x0c\x05\x9b\xe1\x26\x00\x00" +var _runtimeHelpOptionsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\x5f\x8f\xe4\xb6\x91\x7f\x1e\x7d\x8a\xc2\x78\x81\xe9\xf6\xf5\xf4\x18\x89\x1f\x82\x7e\x09\xd6\xde\xbb\xb5\x91\xb3\xf7\x10\x6f\xee\x1c\x24\x41\x44\x49\xa5\x16\x33\x14\xa9\x23\xa9\xee\xed\x35\xf6\x3e\xfb\xa1\xaa\x48\x49\xdd\xdb\x33\xe3\x03\x2e\x7e\xf0\x4e\x4b\x64\xb1\xfe\xfe\xea\x0f\xf5\x05\xbc\x1b\xa2\x76\x36\x14\xc5\x0f\xba\xf6\x0e\x42\x74\x1e\x03\x28\x63\xc0\xb5\x10\x3b\x84\x31\xa0\x87\xda\xd9\x56\xef\x47\xaf\x68\x31\x68\x0b\x3a\x86\x8b\x87\x8d\xf6\x58\x47\xe7\x4f\xdb\x4c\x6b\x0c\x18\x98\x44\xf9\xea\xe7\x37\x6f\xff\xfe\xed\xbb\x1f\xff\xed\xfb\xb7\x7f\xff\xee\xdd\x0f\xff\xfa\xd0\xd3\x82\x12\x94\xbc\x7f\x8a\x10\xbc\x0e\x30\xa0\x2f\x68\xcd\xcf\x6f\xde\x42\x18\xb0\xde\x80\x6e\x3f\x27\x58\x82\x0e\x60\x5d\x84\x80\x71\x03\xe5\xff\x3c\x6c\x85\x66\x3e\x48\x07\xe2\xa6\xa1\x03\x8b\xf9\xc4\x33\x9e\xbf\x43\x8f\xa0\x3c\x32\x47\x4e\xb4\x02\xb1\x53\x11\x4e\x6e\x84\x5a\x59\xa2\xbd\x2b\x8a\x2f\xa1\x54\x63\x74\xda\x36\x68\x63\xb9\x83\x63\x87\x16\x6a\x8f\x2a\x6a\xbb\x07\x05\x16\x8f\x60\xb4\xc5\x0d\x9d\xc8\xc4\x82\xea\x11\x64\xbd\x48\x98\xc4\x2e\x00\x60\xf0\x78\xd0\x6e\x0c\xbc\x65\x5b\x14\x37\x0d\xb6\x6a\x34\x11\x0e\xca\x8c\xb8\x83\x32\xfa\x11\xcb\xe9\xd4\xa0\x0e\x58\xee\x80\xa5\x82\xa3\x36\x06\xe8\x09\x53\xab\xc6\xb6\x45\x0f\x78\x40\x7f\x82\xd2\x96\x10\xb0\x76\xb6\x09\x40\xfb\x7a\x15\x75\xad\x8c\x39\xd1\x99\xab\x63\x47\xb2\xd2\x1a\x2d\x9c\xf0\x61\xd9\xe0\x22\xfb\x7a\x0b\x62\x45\x65\x42\x3a\xea\x33\x42\x7c\xb6\xb2\x0d\xfc\xf7\xa8\xa3\x28\x82\x74\x85\x1f\xe8\x97\x8e\x9d\x1b\x23\xa8\xf0\xa8\xed\x7e\x0b\xdf\x20\xd4\xca\x63\x3b\x1a\x59\x38\x06\x52\x57\xec\x74\x20\x4a\x2d\xaa\x38\x7a\xdc\x40\x85\xb5\x22\xbd\x11\x9d\x5e\xef\xbb\x08\xaa\xae\x35\xab\xce\x98\x53\x3a\x11\x5a\x6d\x70\x03\xee\x80\xfe\xe8\x35\xeb\xfd\xd8\xa9\x48\x84\x8e\xa2\x5b\x8f\x50\x61\xeb\x3c\x6e\xe1\xfb\xf6\x29\x11\x49\xfa\xf2\xab\x92\x9e\xd8\x85\x4a\x89\x0c\xb9\x52\xd6\xf7\x35\xab\x7c\x25\x26\xa9\x54\x40\xab\x7a\x32\x89\xb6\x4c\x59\xdb\xd6\x55\xca\x6f\x20\x74\xee\x08\xce\x9a\x93\x18\x27\x2d\xcc\x0c\x90\x00\x50\x21\x71\x8e\x8d\x8e\xd8\xd0\xa1\x5e\x11\xe7\xe4\x73\x42\xab\x1d\x8d\x81\x41\xc5\x6e\x5b\xd0\x6b\xb8\x64\xa2\x55\x26\x24\xdf\xa8\x9d\x71\xbe\x76\x66\xec\x2d\xf1\xd2\xb2\x62\x17\x31\x01\xd1\xc1\x57\x1b\x60\xbb\x18\x03\x8d\x0e\x83\x51\x27\x50\x20\x7b\x40\x45\x3a\xb1\x00\x0e\x31\xdd\x6a\x6c\xd2\x9b\x2d\xbc\x4f\x94\xc6\xc0\xc6\xd3\x2d\xdb\xe6\xa8\x6c\xcc\x9b\x7f\xf7\x15\x91\xaf\x10\x3a\xbd\xef\x0c\x19\x8d\xe5\x61\x52\xca\x40\xeb\x3c\xe0\x07\xd5\x0f\xe6\x39\x55\xb2\x04\xa1\xee\x90\xb5\x69\x9c\x6a\x32\x36\x4c\xcf\x05\x9c\x1a\x52\x35\xe9\xe3\xd5\x4a\xa2\xf8\x8d\xf6\xeb\x87\xc5\xb2\xf0\x50\x8a\x7d\xcb\x2d\x1b\x75\x23\x22\x04\x8c\xec\x29\x64\xf4\xbd\x71\x95\x32\x6c\x9e\xf2\x1a\x4f\xe9\x77\x59\x14\x37\x3f\xba\x88\x02\x03\xc4\x4d\x5e\xb8\x3c\x0e\x56\xe9\xe9\x06\x82\x33\xca\xeb\x8f\xd8\x6c\x38\x2c\xa6\x9f\xf7\xb1\x5e\x17\x37\x04\x2e\x64\x0f\xe3\x6a\x15\x45\x8e\x49\x82\xd9\xf3\x63\x87\x27\xc6\x21\xec\x2b\x6c\x1a\x59\x47\x67\x8b\x87\x56\xda\x2a\xc6\xab\x9b\xf7\x17\xda\x21\x88\xaa\x10\x02\x1a\xac\x89\x7c\xeb\x5d\xcf\x40\x9e\x1d\x2e\x64\x4a\xc5\xcd\x05\x40\x9e\xab\x6f\x89\xc0\x82\x01\xb5\x23\x39\xab\xd3\x24\x3f\x45\x37\xc4\xce\x23\x16\x37\xcb\xbd\xbb\xa2\xb8\xf9\x73\x82\x4b\x8f\xaa\x81\xde\x11\xaa\x56\x84\x04\x7c\xd2\x5d\x38\xd7\x5d\xe2\x28\x99\xbf\x84\x0e\xcd\x00\xd1\x0d\xba\x2e\x6e\x56\x25\xff\x4a\xaf\xd6\x5b\xf1\x93\xd1\x07\xe7\x09\x2d\xcb\xdd\xec\x70\x4c\x84\x1e\xce\xa6\x92\x85\x64\x6e\xc9\x58\x0a\x1a\x4d\x08\x89\x36\x99\x8f\xa1\x70\x72\x31\x5a\xd8\x60\xab\x2d\x36\x24\xe8\xa5\xeb\x91\xcf\x93\x51\x18\xb6\xd6\xcf\x03\x35\xda\xda\x35\xda\xee\xcb\x1d\x93\xc9\x3f\x29\x48\xdc\x80\x56\x5c\x83\x80\x4c\x8c\x42\xba\xdc\xc2\x4f\xe3\x30\x38\x4f\x76\xcb\xeb\x19\x18\xe9\x4c\xa3\x03\x3d\x57\x11\xba\x18\x87\xb0\x7b\x78\x38\x1e\x8f\xdb\xe3\x6f\xb7\xce\xef\x1f\xde\xff\xf1\x21\x6f\x78\x78\x02\x27\xc6\xd8\xde\xff\x2e\xb1\xe6\x5a\x8b\xc7\xa4\xbd\x45\x16\x39\x83\x76\x50\x4d\x23\x89\x4c\x34\xea\x26\x0f\xba\x26\xf7\x02\x85\x5a\x15\x62\xa3\x7d\x3c\xb1\xe4\xac\xd0\x88\xbe\xd7\x96\xa4\x24\xbb\x3c\x6a\xdb\x10\x04\x2a\xb3\x77\x5e\xc7\xae\x4f\x3c\x48\xa5\xe0\xe6\xf5\xa0\x5b\x96\x3e\x67\x35\x1d\xa0\x77\x8d\x00\x93\xf3\x14\x45\x5b\xf8\x2f\x82\xed\xc5\x99\x62\xea\x4d\x22\xf9\x8f\x31\x44\xa1\xab\x88\x52\xe5\x9c\x41\x65\xa1\xcc\x64\x4a\xf1\x14\x01\x06\x3a\x5b\x0c\x48\xb9\x39\xb8\x39\x47\x73\xf5\xd3\xab\x47\xa2\x63\x19\xab\xb7\x44\x2e\x83\x22\x9d\xbe\x81\x6a\x8c\x39\xfa\xb4\x55\x75\x4d\x95\x8c\x64\x9e\x4b\xf6\xda\x76\x73\x2d\xdd\x74\x2a\x74\xd9\x69\xd9\x41\x93\xd8\x6a\xaf\xb4\x0d\x11\x94\xac\xc8\xd9\xcb\xeb\xbd\xb6\x84\xac\x94\x45\x56\x5c\x7b\x60\x23\x69\x55\x50\x3c\xef\xa7\x6c\x48\x50\x8a\xcd\x7a\x06\x72\x09\xc9\xc4\x25\xf3\xee\x2a\xae\x41\xcc\x49\xde\x79\x0c\x6e\xf4\x35\x13\xd2\x36\xa2\x0d\xfa\x80\x69\xff\x9c\x39\x39\xb7\x11\xb6\x0f\xe8\x06\x83\x70\xec\x1c\x85\x3c\xf9\x0f\x25\xfa\x14\xf4\x9d\x3a\x68\xbb\x67\x5b\xe6\x13\x27\x43\x86\xa8\xe2\x18\x9e\x8f\x25\x12\xb1\x75\xbe\x57\xf1\x25\x9f\x62\x5f\x45\xcb\x91\xb3\x74\x6d\xc2\x54\x62\x33\x69\x86\xdd\x18\xfe\xf4\xe3\xf7\x3f\x9f\xef\x20\x96\xd9\x67\xca\xbf\xda\x12\x56\xf4\xae\x45\x6c\xd6\xc0\xc5\x92\x0a\xd0\xb8\xf0\xd9\x0e\x22\x58\xfe\xd5\xf3\x8e\x5a\x79\xaf\xd5\x9e\xd4\x17\x47\x6f\xe1\x5f\x60\xa2\x41\xba\x43\x88\x47\x07\x83\x0b\x41\x57\x26\x95\x23\x21\x31\x36\xe9\x35\x47\x7c\x39\x5a\xfd\xa1\x64\xa0\x28\x1b\x17\x4a\x21\x30\xeb\x42\x24\xab\xf0\x22\x6e\x49\x35\x0c\xfd\xab\x5c\x8b\x11\xc1\x84\x39\x54\x96\x05\xce\x80\x44\x67\xcd\xc4\x53\x1d\x40\x41\x25\x38\x2c\x26\x91\xf2\x95\x3c\x23\x9e\xd9\x9c\xa8\x5d\x94\x01\x6e\x34\x0d\x18\xfd\xc8\x30\x51\x77\xca\xee\x71\xc6\xe2\xac\x29\x42\xd7\x76\x82\xd0\x10\x95\x97\x5a\x99\x2b\x2d\x3c\x3e\x09\x2d\xac\x85\xc9\x0d\xe2\x69\x20\xd4\x0a\x18\xc3\x04\x48\xf4\x2c\x5b\xf7\x22\x78\xb6\x97\x69\x9f\x8d\x45\xb9\xf7\xe9\xc4\xcf\xe2\x5e\xd7\x2d\xa1\x44\x83\x83\x88\x94\xd5\xc5\x01\x48\x72\x75\xea\x80\xc5\x0d\x69\x9a\xd9\xd5\x7b\xeb\x3c\xd6\x2a\x10\xc3\x03\x7a\xb2\x1a\xd0\xcf\x7b\x6d\x03\xc5\x53\xd4\x07\xca\xd4\xca\xd7\x1d\x5e\x8d\x80\x05\xaa\x4a\xe7\x50\x77\xca\x2f\xa5\x5f\xf6\x13\xf4\x4e\xd5\x11\xfd\x35\x4a\x50\xc2\x2a\x0c\xaa\xc6\x75\xa2\xc6\x05\x6a\xb9\x03\xb4\xaa\x32\xa9\x43\x63\x73\xa5\xc4\x59\xb9\x18\x5d\x9f\xc1\x86\x20\xcf\x79\x89\x02\xe8\x31\x04\xb5\xc7\xc9\xf7\x07\x4f\xf8\xd0\x7c\x86\x0d\x2f\x16\x58\x73\x80\x3f\x22\x0e\x9f\xf7\x53\xd2\x1d\xcc\xcf\x37\x70\xec\x74\x44\x96\x83\x0e\x50\x5c\x18\x91\xe1\x4f\x6e\x94\xe3\xc5\xd5\xa5\x83\x9c\x21\x42\xb7\x73\x5f\xd2\xbb\xc3\x94\xcd\x2c\x7e\x88\x22\xf5\xd4\xa8\xd8\x13\x90\x75\xbc\xf4\xc3\x00\xbc\x6e\x71\x2c\xe7\x0b\x42\x54\x39\x3c\x74\xec\xfb\x15\x15\x85\x06\x29\xea\x22\x01\xa0\x1c\xe2\x95\x36\xd2\x96\xe4\xed\x9c\x36\xbe\x99\x2a\x28\x4e\x03\x0b\x01\x2f\xe4\xcb\x24\x75\x3b\x9b\x87\xc1\x1c\xdb\x08\xd8\x0f\xf1\xf4\x82\xd3\x3c\xe2\xa9\x47\x3b\x96\xbb\xa9\xd6\x67\xa9\x95\x75\xf7\x21\x9e\x0c\xc2\x23\x9e\x80\x56\x5c\xb7\x7a\xa8\x3d\xa2\xdd\x02\x55\xbf\xa2\x0a\x15\xe1\xbd\xdb\xef\x0d\xfe\x01\x4f\x3f\xd0\x3e\x1d\xa0\x72\xa3\x65\xb1\xcb\xd7\x26\xde\xef\xcb\x65\x85\x48\xf0\x92\x9b\x90\x19\x66\xb4\xcd\x8a\x9d\x91\x66\x0b\xef\x1d\x2d\x21\x6f\xe4\x2d\x1b\x08\xba\x1f\xcc\x89\xc8\x65\xca\x74\xc8\x9f\x6c\xa5\x6d\xf3\x07\xbc\xee\x52\x0b\xe1\x7b\x15\xeb\xae\xf2\xaa\xa6\xf0\x1b\x6d\x83\x5c\x2f\x02\x3f\x26\xab\xf0\x2b\x01\xdf\xbb\xd5\xfa\x6e\x03\x77\xbf\x7c\xa2\xff\xff\xe5\x6f\x77\x53\x16\x4d\xf5\x23\xe7\x40\x2e\x21\x95\x6c\x3b\x0b\xb6\x6b\xd5\xd6\xec\xda\xfd\xe3\xa0\x08\x90\x82\xb4\x64\xd2\xb6\x32\xb5\x01\xad\x60\xae\xe2\xfe\x4e\xd4\xdb\x38\x94\x7e\x8d\x81\x7a\x33\x03\x4c\xad\xac\x75\xdc\xdd\x52\x79\xaf\x0e\x54\xa1\xce\xcd\x02\xc8\x21\x53\xd1\xae\x91\x72\x95\xbd\x4b\x74\xce\x63\xd3\x10\x7c\x70\x72\xe4\x54\x73\x86\x70\x52\x47\x3c\x45\x52\x5b\x08\x63\xdd\x81\x82\xa0\xe3\xc8\xb8\xf3\x72\x5b\xda\xbb\x91\x21\xf0\xd8\xa1\xb4\xb6\x2e\xa1\x0e\xf0\x1b\x08\x52\xf4\xa6\x5a\xee\xec\x59\xf2\x1b\x5a\xdc\x6c\x24\xf1\x8c\xcc\x26\xf1\x27\xe1\xad\xcc\x8c\xd5\xec\x3b\x8e\x8a\x0c\x0c\x21\x51\xc2\x03\x29\x9f\x22\xab\xee\x72\x7d\x26\xe9\x8b\xad\xba\x68\x64\x29\x77\xb9\xe1\x24\x2d\xd3\xd9\x01\x54\x7e\x51\x1f\xe3\x5a\x79\x29\x85\xc5\x4a\xb7\x3c\x7d\x80\x10\x3a\x72\x23\xa2\x97\x5a\xdc\xb3\x46\x6e\xa6\xd3\x11\x6e\x08\x73\x09\x81\x24\x13\xd5\x46\x0f\x95\x53\xbe\xe1\x80\x99\x2c\x93\x7d\xe1\x85\x4e\xc3\xf7\x19\x69\x8e\xe1\xb9\x82\x3e\x7a\xdd\x5f\x03\xa5\x40\xd1\x8f\xce\xbc\x10\x4f\x7e\x34\xe8\x17\x50\xc2\xd1\x64\xc7\xbe\x42\xff\x42\xf9\x46\xde\x2a\x81\x54\xee\x08\x1c\xa9\xa7\xcd\xc9\x64\xd1\xa4\x31\xb4\xa9\x10\x21\xea\x1e\x67\xc7\xa7\xc7\x29\x56\x94\xe5\x11\xc9\x30\x46\xd0\x31\x4d\x78\x26\x60\xe7\x0a\x67\xda\xc5\x45\xf3\x0b\x12\x11\x5f\x9d\x0e\xd4\xe3\x2e\x19\xab\x5d\xdf\x93\x1d\xd2\x2b\xa8\x30\x1e\x11\x2d\xd4\xc6\x49\x42\xb2\x0d\x78\xbc\xa7\xf3\x52\x55\xcb\x2a\x7f\x11\x09\xe8\xb8\xd1\x36\x2e\xa7\xb7\x78\x59\x4a\x6f\x08\xa6\x1c\x77\x23\x1c\xdf\xe4\xba\xa0\xda\x88\x5e\xa6\x8f\xc6\x85\x3c\xf7\xe2\xc1\x9b\xcb\xee\x9b\xde\x30\x5f\x52\xe8\xa5\xe1\x58\x1e\x5a\x52\x7e\x65\xe2\xda\xee\x5f\x52\x4a\xed\x9d\x31\x52\x1c\xcc\x13\x22\x79\x0a\x95\xf2\x2f\x86\xbb\x2c\xed\x95\xdf\x6b\x5b\xee\x40\xf5\x6e\xb4\x31\xd7\xe6\xe1\x4a\xc1\x18\x90\xfb\x84\x34\x45\xac\xd0\xb8\x63\xae\xd3\xc5\x33\xae\x71\xfc\xdb\xe5\x61\x61\x40\x6c\xae\x9c\x45\xc4\x85\x71\x42\x79\x67\x31\xff\x64\x50\xb8\x46\xf6\x37\x89\x6c\xaf\x7c\x1c\x54\x88\x5c\x6b\x4a\x8e\x97\xb8\xa2\xae\xd8\xa0\x6a\xce\x43\x48\x0c\x4a\x1b\xe8\x79\x3f\x9a\xa8\xa9\x1b\x62\x2e\x7e\x3f\xb5\x8a\x12\x93\x31\x52\xea\x26\xde\x06\x8f\x01\xfd\x01\xcf\xea\xd6\x65\x49\x67\xf0\x80\xe6\x9c\xb6\xe2\xdc\x39\x5a\x59\x46\x49\xc0\xb8\xfa\xf1\x85\xf8\x73\x6d\x3c\x7a\x35\x5c\xca\x42\xcf\xb2\xa6\x28\xf7\xf0\xdc\xdb\x39\x30\x4e\xe6\x14\xad\x8e\x53\x4b\x20\xa5\xc0\x0b\xae\x33\x18\x1d\xa5\x84\xc8\x3e\xae\xa0\x73\x5e\x7f\x74\x36\x2a\x03\xfc\x9e\xdc\x3b\x35\xab\x9b\xcc\x8e\x8e\x84\xca\xb9\x85\x65\x0f\xc8\x15\x42\x56\x0b\xef\xfd\xfd\xf3\x62\xd2\x12\xaf\xf7\x5d\x9c\x4f\x3f\x50\x25\x57\xff\xfa\xb3\x05\x96\x79\x0e\xcb\x13\xa5\x54\x09\xfd\x5f\xb8\xe0\x92\x46\x3a\x34\x53\xee\x20\xf5\x6a\x21\x7a\x32\x1f\x0f\x97\x34\x1b\x37\x37\x2c\x54\xcd\xdd\x53\xd3\x29\xfd\xf0\xa0\x7c\x3e\x96\x83\x7c\x51\x21\xfd\x94\x66\xa9\x92\x91\xf5\x01\xc3\xa2\xfe\x1c\x8c\xaa\xb9\xb6\x0a\xba\x41\x28\x5f\xad\xd6\xe5\xb4\x83\x93\xc9\xbc\x49\xdb\xda\x8c\x0d\x1b\x4f\x1b\x19\x5d\x6f\x16\x33\x91\x0d\x94\x3c\x1b\xda\xf0\x40\x8e\xfe\x71\x43\xa4\x7f\xa8\xf0\x2a\xd3\xe4\x03\xe5\xa9\x74\xa7\xfc\x62\x79\x42\x54\x8f\x08\xa8\x39\xdd\x2b\x9b\x41\xce\xf1\x0f\x55\xcb\xf5\x07\xe1\xda\x51\x79\x46\x74\xa2\xd2\x52\x74\xa4\x49\xe0\xb5\x39\x7d\x52\x17\x95\xac\x53\xc9\xc9\xe5\x73\xfd\x4c\x19\xf2\x6a\x95\x45\x5c\xc3\xab\x55\x16\x71\xbd\x7a\xc5\xbd\xfd\x7a\xf3\x6a\x55\x3b\xb3\xa6\x77\x6e\x88\xbb\xdc\x4c\xae\x99\xd6\xe5\x7f\xf3\x1a\xb1\x69\xde\x95\x27\x6f\xeb\x7f\xb6\x03\x3c\x25\x22\xa9\x7f\x77\x56\x97\xaf\x77\x72\xf5\x40\x6f\xa8\xf9\xde\xc0\xd9\xaa\xef\xd0\x0c\xeb\xdd\x55\x21\x23\x2f\xe0\x09\xec\x52\x9c\x34\x2c\x5c\xb6\x11\xf2\xe2\x99\xa6\xf1\x69\xcc\x58\x44\xcb\x58\xf7\x84\xdc\xf9\xc6\x41\x1a\xd1\x30\x0e\xe8\xf3\x9d\x23\x27\xe3\x2d\xbc\xa3\xd2\x30\x44\x08\xa7\x10\xb1\x0f\x53\x5b\x71\x1b\xc6\xc6\xdd\x42\x35\x72\x6d\xec\x2c\x7c\xf3\xd3\x1b\x0a\xea\x54\xea\xdd\x36\x4e\x85\xed\xed\x59\xfd\x9b\x5e\xd5\x63\x88\xae\xd7\x1f\xa5\xb0\x98\xa6\x59\x7c\x45\x48\xf0\x91\x2e\xb7\x18\xe9\x75\xec\x20\x8c\xd7\x64\xa1\xe3\x93\x2c\x27\x1b\xd5\x87\x72\x07\x71\xf4\x36\x80\xfc\x04\xf1\x5c\xd7\xb6\xcf\x2b\x22\xaa\x8a\x9a\xc6\x5e\xda\x5f\xab\x0e\x7a\x4f\x75\xf8\x5c\xa0\xb1\x7e\x71\xaf\xad\xe5\xd1\x43\x4e\x71\x2a\xa4\xf6\x50\xae\x0b\xa2\xaa\xb8\x6b\x5d\xe1\x76\xbf\x95\x5e\x97\x4b\xd4\xaf\x17\x94\x9c\xad\x71\x7d\xde\x11\xb0\xe0\x5c\x6e\x2a\x7b\x8a\xdc\x1e\xc9\xec\x95\xf8\x0a\xd1\xc9\xe6\x34\x5c\x7d\x21\x0b\xd0\x0e\xfd\xf1\x6c\x48\x13\x55\x05\xf4\x8c\x1b\xb8\x74\x2d\x73\x85\xc8\xd7\x33\x81\xe9\xc8\x1d\x8f\xee\x12\xf3\x8b\x3a\x9c\x05\x7d\x9e\x0f\xf4\x7d\xd4\xd1\xb0\xdf\xf2\x4c\x3f\x4c\x2d\x88\x4c\x8f\xa9\x16\xf1\x53\x75\x7e\x17\x80\x97\x4f\xed\x44\xc0\x48\xcd\xe7\x54\x8e\x73\x4a\x91\x4a\xf4\x05\x15\x8c\x01\x07\xaf\x7b\xe5\x4f\x25\xac\xb2\x53\xb5\xa3\x21\x67\xf8\xd2\xea\x0f\xeb\x27\x39\xba\x18\x59\x26\x0c\x48\xc4\x16\x7d\x42\xee\x55\xe4\x9e\x87\x6f\xa9\x13\x74\x56\xaa\x7e\xdc\x7b\x02\xc8\x64\xe2\xa9\xa3\x54\x6d\x8b\x75\xcc\x89\xd5\x12\x2c\x2d\x5b\x0f\x99\xb6\x7c\x1b\xbd\xb9\xff\x96\x03\x82\xff\xfc\xcf\x67\xdc\xf6\xfe\xfe\xbe\x28\xde\xa4\x77\x83\x19\xf7\x3a\x43\x7d\x98\xaf\xc8\xb9\x36\xa5\xda\xec\xbc\xcd\xe4\x8a\xb5\xfc\xe5\x53\x09\xe5\x6a\x5d\x42\xf9\x97\xbf\x95\x50\xde\xde\x96\x50\xde\xdd\x95\x5b\xf8\x0f\xef\x0e\xba\x99\x6e\x61\xd8\x15\x67\x6a\xe9\xb0\xe7\x67\xc6\x31\xb1\x52\xee\x16\x13\x89\xcd\xd9\xad\x39\x46\x08\xae\x9f\x2f\xfa\x2b\x15\xe6\x29\x68\x4e\x06\x5b\x78\x3d\x29\xad\x77\x3d\xcf\xa1\x2e\xcd\xa4\x2a\x19\x24\xf4\xea\x11\xe5\x3e\x87\xaf\x77\x86\x69\xc2\x30\x9c\x62\xe7\xe4\xd2\xe7\xa4\x7a\x93\x67\xd0\x01\x3c\xee\x95\x6f\x0c\xb5\x84\xae\x15\x87\x4c\xc3\xca\xc0\x77\x07\x9f\x97\xcb\xcb\x21\x09\x54\xd8\xa9\x83\x96\xde\x93\x07\xce\xcb\xa6\xe2\x45\xd0\x31\xda\x46\xee\xe9\x5e\x9f\x19\x87\x1e\xcf\x23\x90\x3c\xaf\xe0\x9e\xe4\x33\xcb\x4c\x44\xd8\x4f\xd9\x2c\xcf\x9c\xf9\xda\x9e\x32\x73\x24\x18\x19\x20\xb9\x6d\x9e\x30\xe6\xd8\xe3\x06\x68\x71\xe9\x04\xc5\xe5\x6d\xe5\xa4\xa6\x7f\x04\x67\x21\xb8\x0d\x91\x42\xf6\xf1\x8d\x28\xf2\xfc\x8b\x12\x69\x26\x13\xfd\x22\x17\x7c\xd3\xf4\x50\x74\x7d\x37\xeb\x99\x6b\x98\x2b\x74\x38\x17\x10\xf7\xd1\x81\xb2\x8e\xa2\xb7\xe8\x55\xdd\xf1\xb8\x3c\xcd\xac\x38\x36\x39\x93\x9d\x31\x99\xe4\xe1\x3d\x90\xf6\x6c\x8b\xa2\xf8\xe2\x0b\x78\x2b\xb3\x52\x72\x10\x99\x09\xe4\x9d\x45\xf1\xe7\xf9\xcb\x13\xda\x1e\x66\xaa\xb9\xc4\x92\x41\xab\x39\x11\x8a\xf0\x6e\x73\xda\xc2\xbf\xcb\x1f\xd0\xa3\xca\xdf\xb0\x50\x24\xe5\x51\xf8\x91\xa7\x43\x4b\x55\x5f\x7e\x30\x73\xae\xe1\x32\x0d\xf3\x54\x9c\x3e\x20\x20\x64\x2b\x12\x50\x6a\x7b\x75\xfa\xfe\x53\x3a\x6d\x2e\x02\x27\x5e\xd3\x57\x27\x53\x60\x52\x73\x3f\x85\xe5\xf2\xfb\x0c\xcb\xf7\xd7\x42\x31\x6c\x8b\xe2\xfd\x7c\x55\x2c\x5f\x0a\x2c\x9a\xe8\xc5\xc8\x79\x93\x18\xc6\xc5\xc5\xc1\x62\x25\xeb\xa9\xa0\x85\x3c\x7a\xa4\x43\x67\x26\x93\x12\xe5\xeb\x9d\x32\x60\xe4\x07\xe5\x32\x01\xd1\xd3\x72\x5b\x14\xdf\xa7\xbb\xeb\x0b\x65\x4d\x97\x02\x64\x39\xfe\x7a\x66\x18\xe5\x23\x8c\x0c\x36\xe9\x0c\x8a\x23\xa9\x7e\x4e\xfc\x21\x08\x5b\xb4\x50\x2c\x09\x57\xcc\x0b\x20\xe2\xaf\x93\xb4\x5c\x42\xca\xa0\x29\xcd\xb5\x3a\x15\x2e\x53\x75\x2a\x30\x49\x75\x82\x34\xf8\xa1\xc6\x21\xc2\x5b\x57\xf0\x6f\x51\xcf\x94\xad\xe1\xeb\xeb\xcb\xff\x38\x56\x27\x79\xb2\x2b\x8a\xb2\x2c\x49\xba\xe2\x97\xe2\xe6\xb6\x8d\xbb\xbd\xbb\xdd\xc1\x2f\xc5\xcd\xcd\xed\xf2\xe8\xdb\x1d\x70\x2a\x2c\x6e\x3e\x6d\x64\x9d\x1f\xab\xd3\x72\xa5\xfe\x88\xb7\x3b\xf8\x4d\x5a\x70\xb1\x97\x90\x22\x3f\x96\x85\x5f\x17\x9f\xe8\xe4\xa2\x78\xe7\x29\xbe\xb4\x51\xde\x9c\x26\xdd\xf2\x3c\x57\x82\x92\x54\x76\xc9\xe6\x97\xdb\x5f\xc5\xe5\x97\x5b\x5f\xfd\x3f\xb0\xf8\xbf\x01\x00\x00\xff\xff\xa2\x25\xe1\xf8\x4a\x27\x00\x00" func runtimeHelpOptionsMdBytes() ([]byte, error) { return bindataRead( @@ -997,7 +1024,7 @@ func runtimeHelpOptionsMd() (*asset, error) { return a, nil } -var _runtimeHelpPluginsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x3a\x6b\x8f\xdc\x36\x92\xdf\xf5\x2b\xea\x3a\x38\xb8\x3b\x68\x6b\xb2\xb8\x6f\x03\x78\x01\x3b\x7e\xc4\x7b\x8e\x6d\x78\x9c\x04\x8b\x20\x80\xd8\x52\xa9\x9b\x19\x8a\xd4\x92\xd4\xf4\xf4\x19\xd9\xdf\x7e\xa8\x2a\x92\x52\xf7\x4c\xb2\xb9\x3b\x5c\x80\x78\xd4\x12\x59\x2f\xd6\xbb\xf8\x15\x7c\x34\xd3\x5e\xdb\x50\x55\xdf\xeb\xd6\x3b\x08\xd3\x38\x3a\x1f\x03\xb4\x1e\x55\xd4\x76\x0f\xa3\x2c\x80\xa3\x8e\x07\x50\x10\xf4\x30\x1a\x84\x77\x93\x82\x70\x0a\x11\x87\x1a\x5e\xdd\xa1\x3f\xa5\x75\x70\x50\x01\x54\x35\x28\x6d\x21\xb4\x5e\x8f\x11\x8e\x07\xdd\x1e\x40\x07\xf0\x93\x05\x15\x21\x44\xe5\xe3\x34\xa6\xf7\xe1\xe0\x26\xd3\xc1\x0e\x61\x34\xaa\xc5\x0e\xb4\x85\xaa\xf9\xe7\x55\xdd\x3a\xdb\xeb\xfd\xd5\x40\x64\x5d\x25\x22\xd2\xdf\xf7\x6a\xc0\xc5\x63\x6d\x26\xd5\xd4\x55\xf5\xf9\x80\x1e\x41\xd1\xff\x60\xa7\x61\x87\x1e\x5c\x0f\xad\x32\x66\xa7\xda\x5b\xe8\x27\xdb\x46\xed\x88\x15\xc6\x7c\x72\x13\xb4\xca\x0a\xa7\x48\x78\x4f\x6e\xf2\x99\x8f\xe8\x2a\xa2\xb7\x75\x1d\x12\xd1\x51\x0f\x18\xc0\xc5\x03\x7a\x88\x07\x65\x33\x17\x35\x7c\x3e\x20\x58\x35\x90\xa8\x42\x7b\xc0\x01\x89\xd5\xc6\xd9\xe7\x8c\x6c\x7d\xa7\xf1\xb8\x69\x6a\x78\xed\x7c\x85\xf7\x8a\x85\xa7\x0a\x2d\xe7\xc2\x41\x16\x24\xa1\x82\x78\x40\x98\x02\x7a\x08\xea\x0e\x03\xff\xdc\x4d\x7d\x8f\x1e\x8e\x49\x5e\xd7\x55\xd5\x34\x8d\x99\x54\x55\x80\x39\x7b\xa3\xee\x50\x50\x56\x00\x00\x75\x5d\xf3\x5f\x8f\x71\xf2\x16\x7a\x65\x02\x56\x68\x3b\xda\xc9\xf2\x82\x86\x16\x37\x70\xa7\xbc\x56\x3b\xc3\xb4\x2b\xf0\xd8\xa3\x47\xdb\x22\x44\xc7\xa8\x69\x11\x3f\x28\x41\xa4\x03\xec\x90\x38\xc6\x7b\x6c\xa7\x88\x1d\x38\x5b\x57\x9f\x0f\x3a\x30\x00\x33\xb8\x10\x41\x99\xa3\x3a\x09\xe9\xed\xe4\x3d\xda\xc8\x70\xb6\x17\xe2\xdf\x63\x14\xdd\x6a\xbe\x9d\xfc\x8f\x1a\x8f\xeb\x4d\x03\x2a\x54\x47\x34\xa6\xae\xaa\xe7\xc6\x80\xba\x53\xda\x30\x79\x2a\x9d\x20\x1d\xb2\xd1\x21\x8a\xbe\x10\x8a\x5b\x3c\xed\xb4\xed\xb4\xdd\x07\x08\x98\xe4\xd1\xf3\xa7\x03\x9a\xb1\xae\xaa\xd7\xce\x17\x65\x08\xc4\xd9\xe0\xa6\x50\x40\x6e\x99\x20\x56\x1e\x13\x1c\xec\xf5\x1d\x0a\x60\xbc\x23\xca\xb5\xed\xdd\xa3\x12\xff\x9e\x80\x7c\xf4\x18\xc2\x5a\xb8\xe3\xf5\x22\x7e\xe3\x5a\x65\xe0\x7e\x0b\x27\x78\x26\xef\xaf\x3f\xba\xa0\x59\x2f\x36\xd5\x1f\x9f\x4c\xc0\x85\xc2\x26\x23\x61\xca\xd2\x0e\x05\x3b\xe7\x0c\x92\x26\x8e\xd8\xea\xfe\x44\xc7\x71\x3c\x60\xd2\xd0\x74\x66\xb2\xb1\xda\x21\x78\x24\x6a\x48\x60\xe9\x4c\xdb\xc9\x07\xe7\xc1\x79\xb0\x2e\x82\xea\x63\xda\x37\x1f\x71\xeb\x48\x5b\x23\xd6\x55\xf5\xde\x45\xd2\x49\x32\x04\x26\x6d\x96\xa3\x6b\xdb\xc9\x3f\xdc\x4e\x6e\x60\x87\x68\x0b\x90\xae\x86\xb7\x3d\xcb\xf8\xa8\x6c\xac\xd4\x6c\x97\x3b\xec\x9d\xc7\x0b\xdc\x59\xb1\xb6\x64\x05\xd0\x8c\x1e\x93\x3d\x91\x2d\xbd\xa5\x93\x21\x02\x55\xe0\x7d\x55\x16\x85\xc8\x06\xbb\x24\x13\x8d\xa1\x88\x24\xf1\xb9\xc0\x32\x7b\x9e\xa2\xc5\xcc\x46\x45\x6b\xcc\xa4\xc4\xf6\x33\xfd\x81\x74\xd1\x8a\x03\x98\x02\xf6\x93\x99\x39\x88\x0e\x6e\xad\x3b\x82\xda\xb9\x69\xe1\xef\x58\xae\x76\x66\xaa\x6a\x9c\x25\x05\xff\x30\x62\xf6\x0b\xf3\x62\x02\x86\x1d\x91\x6b\xc9\x0d\x90\x0b\xc3\xa3\x1c\xa2\x0e\xe0\x46\x24\xb6\x94\xed\x98\x03\x8b\xc7\x2a\x7f\x1a\x55\x08\x6c\x06\xe4\x8a\xc4\x00\x13\x7d\xbd\xf3\x10\x30\xb2\x17\x17\x55\x74\xa3\xe8\xd3\x4e\x05\xb6\x59\x16\x5e\xaf\x0d\xc6\xd3\x88\x5b\xde\x90\x7d\x14\x09\x92\x36\xba\xbe\x87\x26\xaa\x5d\x88\x2e\x8c\xaa\xc5\xd0\x80\xb3\xe6\xc4\x6b\xdf\x38\xa0\xcd\x2c\x64\x86\x75\x22\x03\xaa\x84\xd8\xba\xaa\x9e\x3e\x7d\xfa\x7b\x5e\x79\xd6\x6d\xe2\x29\xbb\x9f\x20\x3a\xc6\x8b\x8b\xcd\x47\xc7\x6a\xa3\x2d\x38\xdf\xd1\xf1\x38\x50\x6d\x8b\x41\x5c\x8b\xb6\x96\x9d\xa2\xbf\x65\xd3\x77\x3d\x70\xc4\xa8\xe1\x3b\x42\xcb\xee\x8c\x1c\x05\xac\x69\x31\xb1\x09\x41\xef\xad\x8a\x93\xc7\x40\x4c\x54\x0b\x4a\x3c\x26\xbb\x9f\x02\xb1\xfe\xc6\x3d\x09\x69\x0b\x47\xba\xcd\x75\x55\x7d\x0d\xcd\x87\x9b\xe6\x7a\x76\x98\x72\x80\xb4\x4d\xe8\xf9\x70\x23\x04\xf0\x99\x8a\xdb\x33\x27\xf2\xee\x22\x4d\x4b\x84\xc8\x29\x91\xec\x01\x82\x1a\x10\x54\x10\x64\x6f\x3e\x7c\xb8\x29\xa0\xb7\x10\x1c\x34\x9d\xf2\x47\x6d\x9b\x2d\x34\x47\x6d\x3b\x77\x0c\xf4\x68\xb4\x9d\xee\xe9\xa1\xf7\x88\xbb\xd0\x35\x75\x5d\x6f\x98\x38\x89\x9a\x2f\xb5\x6f\xae\xa1\x75\x36\x2a\x0a\xdd\x44\xd7\xa8\xe2\x21\x9b\xbe\x10\x28\x4b\x27\xaf\x58\x3d\xf9\x20\x19\x04\x1d\x76\x73\x9d\xe5\xe6\x7a\x50\xc6\xf0\x36\xfa\xb0\xe0\x49\x93\x9c\x50\xb0\x4e\xfe\xb3\xda\x35\xd7\xe9\x44\x3a\xbc\xcf\xbe\x37\x7b\x7e\xde\x9b\x5c\x35\x3f\x13\x70\xde\x3b\x60\x08\x68\xf7\x48\x14\x1b\x8c\x81\x0f\x3b\xa0\xed\x80\xbe\xa8\x3d\x86\x4c\x36\xc7\x43\x72\xe2\x12\xb0\x47\xef\x86\x31\x0a\xcd\xef\xf1\xf8\x82\xc3\xe3\x3a\xe2\x7d\xdc\x0a\xb7\x21\x7a\x6d\xf7\x1b\xf8\x5a\x3e\x91\x44\x78\x67\x48\xc6\x95\x02\x6a\xef\xdd\x00\x4a\x4e\xbe\x62\x97\xac\x3a\x52\x29\xc9\x77\x44\x21\x08\xde\x39\xa2\xd7\xde\x0d\xaf\xb5\xc1\xf5\xff\x05\x55\x01\xfb\x06\xe3\x3b\x54\x14\xbd\x7e\x3a\xe8\x88\x6c\x69\xeb\x0d\xbb\xf8\xe6\x3a\xb9\x35\x39\x47\x23\xcb\x48\xef\xd2\xba\x2c\xea\x02\x55\x88\x61\xb8\x6f\xc3\x4f\xce\x77\xdf\x1e\x94\x5f\x87\xe8\x0b\x99\x17\x70\x1f\xf1\x91\xb2\x52\xec\xe7\xc9\xd1\xf9\x8e\x00\xb7\x07\xe5\x55\x1b\xd1\x3f\x61\xe0\x9f\x26\x8b\x37\xd1\xaf\x3d\xa9\x37\x6e\xd2\x9e\x05\x5c\x95\xc1\x24\x4d\xa4\xc7\x42\x29\x6f\x62\x38\xef\x5c\xbb\xe6\x20\xa9\x6d\xdc\xc0\x3b\xd7\x9e\x81\x20\xf1\xd1\x92\x86\x80\x4d\xad\x28\xcd\x4f\x62\xef\x2f\xb5\xc7\x36\x3a\x7f\x5a\x3f\x8a\xdd\x3b\x47\x5e\x9d\x4f\xc8\x92\x9d\xcd\xa1\x8f\x95\x32\x79\x0d\x62\xad\xcb\x90\x18\xfc\xdf\x9c\xb6\x1f\x55\x3c\x84\x75\xa7\x7d\x5d\xd7\x45\x70\x05\x49\xeb\x86\x9d\xb6\x18\x60\x98\x4c\xd4\xe4\x30\x33\x04\x2d\x0a\x4b\x39\x9e\x31\x67\x87\x5c\xa8\xa5\xa4\xf5\x4c\x6f\x96\x54\x1b\x03\xbb\x49\x0e\xc1\xa8\x10\x01\x0d\x0e\x44\xac\xeb\x19\xd2\x96\x40\xc6\xd3\xa8\x29\x60\x9c\x8a\x69\x3f\x09\x17\x2c\xbc\xc1\xf8\x81\xbd\xfd\x9a\x39\x7f\x88\x88\x73\x04\x65\xa6\xa2\x3f\x1e\xff\x31\x21\xa7\x54\x12\x26\x18\xcc\xf3\xae\x7b\x08\x66\x9b\x36\x6a\x1b\xd1\xf7\xaa\xc5\x2f\xbf\x11\xe4\x40\xd6\x3b\x9f\xaf\x40\x11\x3b\x12\x5f\x97\x3e\xc8\xe6\x75\xb3\xd8\xde\xc0\x80\x8a\x83\xc1\x49\x3c\xae\xb6\xf0\xc6\x89\x4b\xbb\x29\x9c\x08\xc4\x8c\x7d\x66\xe9\x71\xc4\x39\x77\xa5\xc5\x12\x1b\x89\x84\xa3\x36\x86\x36\xf0\xb7\xb4\x72\x6f\xdc\x8e\xa4\xb9\x85\xc9\x1a\x0a\x2c\x3a\xa6\xc8\x21\x51\x93\xe2\x9d\x2c\xad\x33\x45\xef\xe8\xcb\x1f\x90\xb5\x95\xd0\xfd\xf5\x8f\x1c\xe6\x7f\x9f\x44\x3e\xcd\x72\x12\x8c\x4f\x5c\xeb\xbc\x56\x7c\x07\x23\x7e\xa1\x6d\xf7\x9f\x78\x5a\xdf\xe2\x69\x5b\xd2\x98\x22\x06\xca\x7f\x03\x34\xb7\x78\x6a\x88\xf9\x46\x16\x34\xbc\xf3\x7b\x75\x8b\xdf\xba\x61\x50\xb6\xe3\x93\xdc\xce\x25\x48\x26\x38\x65\x3a\x1c\x0a\xeb\xba\xfe\xb6\xfc\x24\xd8\x6c\xfe\xc5\xa5\xb5\x02\x29\xe5\xed\x04\x2f\x67\x32\x2c\x5e\x62\x02\x9a\x8c\xa0\x91\xf4\x20\x27\x59\x35\xfc\x10\x10\xbe\x21\x80\x94\x43\x2c\xb1\x46\xc7\xd5\xc0\x7b\x37\xe3\xae\x97\xd4\xa7\x77\xeb\x0b\xd2\x37\xcd\xf5\x39\x79\xcd\xbc\x96\x25\x41\x29\xa4\x90\xba\x10\x83\xc8\x65\xae\x39\xce\x2d\x63\x59\xb1\xf0\xc2\xef\x94\xed\x4c\x11\x61\x3b\x74\x4b\x93\x9a\xec\xf2\x70\x93\x74\x78\xdb\xab\x7b\x6c\x97\x72\x2f\xd2\x56\x7e\x1f\xe0\xe7\x5f\xb2\x63\x59\xe7\xf7\xe8\xbd\xf3\x04\x94\xe4\x05\x0a\xd6\xe1\x80\xc6\x6c\xce\x45\x7e\x66\x4e\xca\xef\x27\xf2\x10\xa1\x86\x4f\x4b\x0e\x64\xc3\x93\x00\x6e\x8a\xe3\x14\x39\xd1\x52\x30\xba\x10\x34\x25\x2e\x8c\xa8\xce\x8e\xfc\x86\xb0\x3c\xc2\xdd\x23\x84\x7d\xa2\x32\x1e\x98\xac\x8c\x24\xa5\x9e\x53\xc0\x70\xc6\x72\x43\x54\x4e\xb6\x4b\xb5\xc1\xc1\xb9\x8e\x9d\x1b\x17\x32\x9d\xc3\x00\xc1\x0d\xe4\xc0\x3c\x27\x5c\xa4\x0f\x9c\xa0\x67\x8e\x60\xad\x6b\xac\xe1\x1f\x13\xfb\xf1\xf2\x7a\xc3\x55\x37\x6b\x50\xd6\x04\xff\xbf\xe6\xfc\x85\x6a\x6f\xf7\xde\x4d\xb6\x63\x19\x5c\x1c\xed\x23\xcc\x66\xeb\xdc\x95\x8d\x05\xd6\x5b\xf2\x68\x64\x76\x77\x78\x09\x6c\x0b\x47\xa5\x23\x47\xde\x2d\x69\xf9\x07\x21\x8d\x7e\xff\x49\x21\x13\xbf\xbb\x13\xb4\xc6\xb1\xb0\x24\x89\x23\x7a\x72\x72\xb9\xe0\x5d\x5c\xb3\x50\x62\x4e\x5c\x7a\x35\x84\xbf\xe1\xc4\xd3\x4f\xb8\x25\x81\x70\x02\x25\x26\xbb\x63\x71\x4e\x21\x17\x41\x12\x58\xbc\xe3\x3c\x1b\xef\x75\x64\xeb\x1c\xbd\x54\xc3\x9c\xc5\xa1\x1f\xb4\x55\x46\x92\x1a\x3d\x0c\xd8\x69\x15\x91\x92\x5d\xcc\xc5\x03\x15\xd9\x44\xe6\x96\xc2\x9a\x3b\xa6\x58\x5b\x72\xb9\xe8\xe6\xce\x42\x3a\xaa\x14\x8b\x12\x66\x21\xbc\x48\x6b\x41\xfd\xf9\x39\x87\xa8\x6c\xa7\x7c\x97\xa0\x14\x3f\xcf\x75\xaf\x94\x84\x35\xcc\x35\xac\xfe\x1d\xa0\xac\x8c\x0b\xc9\x65\x0c\x01\x06\x75\xe2\xd4\x68\x87\x07\x75\xc7\xa2\xb2\xce\x0f\xec\xab\x77\xd8\x2a\xae\x51\x75\x50\x31\x9e\x1a\xc1\xbc\xac\xeb\x8b\x7a\x7c\x46\x3f\xbc\x1a\x26\xa3\xa2\xf3\x7f\x4e\x35\xb6\x73\x91\x99\x0d\x92\x55\xa4\xb9\x86\x1b\x29\x1c\x88\x96\xc7\x54\xaf\x01\xbc\x6f\x71\x8c\xe7\x5a\x21\x7d\x26\xf2\x21\x49\x89\xb3\x9f\x0b\xa3\xa1\xa0\x47\x4a\x57\x0e\x16\x13\xa9\xdc\x43\xe2\x66\x51\x26\xa6\x01\x6d\x89\x44\xbd\xcc\xf1\x16\xd5\xb0\xe2\xfa\xf9\xa2\xc9\x95\x4f\x64\x51\xe9\x2e\xcf\x9a\x90\xb0\xa2\x49\x4b\xed\x51\x7d\x28\x30\x46\xef\xee\x74\x47\xca\x2a\x26\xdf\x6b\x1f\xc4\xce\x39\x58\x67\x4f\x51\x12\xbe\x44\x1b\xe1\x58\xeb\xa2\xf2\x80\xc3\x18\x4f\x8f\xa8\x03\x1f\xdb\x86\xf9\x5e\x76\x3e\xe8\x4b\xe2\x49\x19\x4d\x3b\x83\xe0\x4b\x5d\x53\xa9\xa9\x59\x8b\xdc\x88\x5e\xfa\xa7\x52\x3b\x06\x58\x73\xd1\xb6\x05\x29\xe8\xb6\xd0\x79\xb5\x77\xb6\x37\x27\xce\xe8\xa8\x66\xde\x85\x6e\x0b\xa9\xa2\xdb\x48\x98\x24\xe2\x9b\xa4\x36\x37\x19\x49\x03\xeb\x80\x08\x3b\x34\xee\xb8\x29\x6d\xa0\xe8\xa0\x43\x39\x3b\x24\x96\x16\xa7\xcb\x45\x01\x93\x41\x14\x17\x62\x45\x2f\x1f\x40\xbf\x86\x17\x0f\x3b\x4b\x09\xe0\x03\xdd\x38\x03\x98\x3a\x0a\x70\x87\x3e\x48\xff\x8d\x30\x8b\xa3\x12\xc3\x0b\xd9\x59\x25\xdc\x8e\x4a\x93\x8f\x2e\xac\x8d\x6b\x29\xf3\xdf\x52\xb6\x93\xab\xa8\x0d\xd9\xe2\x65\x5c\xce\x25\x08\xb9\x73\x9d\xbb\x7c\x6a\x8e\x86\x5c\x48\x70\xab\x2b\xa7\xb0\x9f\xd0\x38\x45\x6c\xad\x3f\xe1\x86\x1e\xa5\xcf\x4a\x26\x20\x45\xd2\x8b\x53\xc4\x0f\x7d\x1f\x30\xfe\x21\x19\x78\xaf\x5a\xaa\x7b\x8d\xbe\xc5\x05\xe9\xc5\xd0\xc8\x7e\x58\xd4\xad\x9b\x28\x76\xed\x4e\x94\x8d\x68\x1b\x22\xaa\x8e\xa8\xa4\x82\x27\xa4\xfa\x62\x77\x33\xaa\xa3\x25\x27\xf0\x7e\x99\x15\xb4\x43\xf7\x7c\x99\x18\x6c\xc1\xd9\x9b\xd8\xb9\x29\xa6\x27\xf4\x9e\x9e\x5e\xdd\xeb\x58\x36\x91\x2f\xe5\x74\xa2\xae\xeb\xb3\x8c\xe8\x26\x2a\x1f\xc3\x59\x7c\x48\xe5\x6c\x32\xa7\x87\x91\x0c\x9a\x8c\xb0\x49\x8f\xe8\x7d\x03\x29\xfc\x34\x82\xb9\xe1\x56\xc9\x59\x2f\x75\x69\xef\xe1\x5f\x18\x7c\x29\x54\x73\x37\xf7\xa0\xc6\x11\x4b\xc2\x3e\x53\x33\x87\x81\x26\xf3\x28\xa8\xcf\x93\x04\xc6\x56\x7c\x3e\x65\x90\xa9\x27\x76\x61\xfd\x33\x81\xe5\x10\x48\x40\x67\x9e\xf8\xff\x45\xdc\xff\x2a\x7d\x38\x73\x32\x28\x2a\x24\x6b\x53\xd2\xcc\x3e\x89\x5d\x1c\xa5\x4a\xd8\x51\x1e\x90\xb3\x03\x16\xab\x34\xac\xa4\x29\x9a\x53\xb2\xb7\x64\x6f\xe2\x55\x53\x7b\x53\x72\xe0\x70\x80\xa7\x6d\x53\x17\x19\x60\xca\xf8\xbe\xa6\x75\xf5\xb7\x43\x47\x3e\x2a\xaa\xb3\xfa\x8a\x13\xa8\xdc\x13\xb0\x49\xae\x21\x76\xba\x34\xd9\x7f\x75\x3b\x2e\x76\x93\x33\x2f\x02\x76\xe3\x39\x70\x82\x77\x4b\xe7\xa4\x78\x8b\x0c\x0d\x28\xbc\x06\xc4\x41\x6c\x4b\x41\xa0\xd0\x3a\xf7\x9f\x4a\x2b\x70\xd6\x30\xca\x22\xc5\xd1\x0a\x7a\xb7\xfb\x15\xdb\x18\xaa\xd2\x01\xde\x49\x6d\x3c\xef\xa0\xc0\x0d\x03\x15\x98\x03\xc6\x83\xeb\x48\xab\x16\x13\x87\xb9\x6b\xc0\x29\x89\xc0\xab\x44\x91\x79\xa6\x95\x9a\x60\xea\xf1\x19\x92\x32\x86\x67\x3c\xb9\x7f\x5a\xcd\xb0\xaf\x79\x28\x23\x21\xa5\xa9\xe1\xef\x69\x0b\xb9\x70\xa1\x70\xc1\x6a\xc9\x51\x33\x1a\x51\x96\x6a\x39\xdd\x38\xa0\x19\x21\xba\x51\xb7\x12\x29\x73\x00\x70\xf6\x01\x91\xb4\xa5\xe5\xa2\xe8\xbc\xc5\x33\xb7\xb8\x8b\x0d\xcf\xdd\x70\x3f\xd9\x1a\xde\xa6\x39\x93\x47\xd2\x27\x3a\xff\x3d\x5a\xf4\x9c\xf1\x84\xa8\xdb\xdb\x94\xde\xc9\xe0\x82\x75\x70\x50\xfc\x52\xcd\x13\x34\x50\x77\x4e\x33\x8c\xc9\x07\xca\xa7\x46\xef\x76\x06\x87\x70\xde\x6a\xd6\x7d\x92\xa3\x31\x0f\xc4\x46\x89\xd9\x86\xd2\x0d\xf6\x46\xf4\x86\x64\xf8\xb7\x29\x44\x19\x0c\x3c\x2e\x65\x08\x12\x70\x2a\x8a\xf5\xce\x3e\x89\xa9\x24\x2d\x20\x40\xed\x95\xa6\xe2\xf2\x87\x90\x4d\x75\x71\xec\xdb\x72\xae\x5c\xa8\x2c\xba\xcd\xa9\x8f\xa7\x42\x70\xad\x56\xc5\xa6\xd8\x74\xb9\x54\xdc\x9d\x92\x2d\xce\x94\xd5\x2f\xa6\xbe\xc9\x53\xaf\xd2\xe1\x5c\x00\x6d\x5e\x6b\x83\x9f\x4f\x23\x36\x5b\x68\x3e\xaa\x78\x68\xb6\x55\x43\x61\xa1\xa9\x6b\x19\x6b\xce\x7a\x91\x74\xf7\x11\xf5\x2b\x3e\x00\x97\x3d\xd5\xb9\x51\xad\x3c\x5e\x9f\x37\x5c\xeb\xef\xa5\xc1\xba\x1e\xc2\x9e\x9c\xd9\x59\x3b\xe7\x7c\xe5\x2b\x4a\x3a\xff\xc4\xba\xbf\x63\x78\xef\x3e\x72\x5d\xb1\x4e\xe5\x45\x29\x24\x39\x9f\xe5\x7a\xe7\x62\xd3\xd9\xfa\x2d\x1c\x74\x88\xce\x9f\x3e\x73\xe3\xfd\x41\x6f\x82\x5f\x2f\x7a\x13\x73\xed\xf4\x18\xe8\xe7\x5d\xf7\xce\xed\x1f\x27\xbc\xfa\xea\xab\xaf\xbe\x12\xd7\x5b\x55\x6f\xdc\xa2\x21\x32\x0f\x08\x58\xc7\x6a\x8e\x7f\x6c\x2f\x52\xe1\x5e\x93\x82\xf1\x30\x70\xef\xaa\x87\xe2\xdc\xc8\x10\x2f\x25\x2d\xae\x4c\x0d\xcb\xca\xeb\x8b\x95\x8b\xc1\x18\xbb\xd9\x54\xcc\x64\x81\xfc\x9a\xb4\xfd\x11\x40\x17\xa2\x5b\xad\xb6\xf0\x4d\x02\xfa\x12\x77\xd3\x9e\xec\xdd\xb8\xfd\x9e\x34\x63\x39\xdd\x26\xa5\xd9\x21\x74\xce\xa6\xce\x08\x27\x93\xcc\x62\xb6\xca\xd6\x75\x54\xb9\x3c\x40\x99\x44\xba\x4a\x3c\xc0\x9e\xca\x78\x9e\xf1\xac\xb6\x02\xfd\xc7\xa4\x72\x9f\xdd\x47\xaf\x6d\xfc\x0e\x3d\x66\x46\x2d\xc8\x35\x83\xe8\xd8\xff\x2d\x49\xca\x64\xa6\xc4\x7f\xf4\x64\x1e\xcd\xb7\xd1\x9b\x57\x0d\x69\xb5\x95\xc6\x60\x63\xdc\xbe\xa1\xea\xb5\xca\x1b\x64\x2e\x22\xc1\x9f\xd2\x68\x29\xf7\xed\xa9\x40\x0c\x54\x09\x70\x95\xba\xc4\x97\xb3\x93\x4e\x87\xd1\xa8\x13\x76\x15\x31\x51\x57\xa4\x17\xf0\x9c\xad\x33\xdb\xd3\x1b\x37\x1f\x8a\xd1\x3b\xaf\xfc\xa9\xaa\x38\xbc\xce\x86\x49\x0e\x8d\xc1\x97\xc9\xe1\x3c\xa7\xe2\xa8\x93\x02\xd5\x1c\x90\x52\x1e\xf0\xc6\x55\x97\xc0\xeb\xaa\xba\xd1\xc3\x68\x4e\xa0\x07\xca\xac\x53\x97\xb7\xbd\x25\x79\x9f\xdc\xf4\xa4\x4b\x81\x52\xc6\x81\xb6\xf8\x01\x52\x57\x1d\xcf\x02\xd1\x3c\xb4\x96\x66\xa6\x76\x53\xd4\x06\x9e\x25\xd0\xeb\x95\x76\x57\xf2\x6e\xb5\x49\x4b\xfa\x21\x2e\xbe\xf7\x43\x5c\x6d\xaa\xf4\x89\x12\x03\xee\x52\xd0\x02\xde\x55\x7f\x42\xd5\xf1\x20\x64\x75\xe3\x06\xa4\xa7\x3a\xde\xf3\x16\xdd\xf3\xca\x7f\x3e\x03\xab\x39\x2e\x71\xd2\x07\xb3\x2a\x89\x57\x59\xf1\x1f\x1e\xbb\x70\x13\x48\x1b\xbc\x86\x0b\x58\x48\x51\x86\x36\x3f\x7d\x0a\x2f\x29\x39\xa1\x4a\x22\x87\x7a\x8a\xce\x16\x94\xf7\x8a\xa5\xcc\x79\x77\x5e\x2c\xfe\xfd\x66\x24\x45\xec\x53\x77\xd2\xd9\x3b\xf4\x9c\xaf\x73\xa9\x9a\xc6\x25\xf3\xc0\x3e\x44\x62\xaf\x1f\x62\x9d\xf6\xad\x57\xff\x1e\x56\x92\x15\xa5\xb1\x3d\x91\xe1\x38\x01\xe1\x32\xa2\x74\xe5\x98\x7a\x3e\x0e\x36\x5a\xe2\xe9\xdf\xf2\x06\x72\xe6\x65\xc2\xff\x5d\x1e\x8a\x2e\x8e\x36\x88\x92\xfe\x8e\xc6\x49\x90\x29\x81\x89\x35\xab\xae\xde\xa3\xf2\x54\xf0\x1a\xb3\xd0\xac\x0c\x26\x2c\x40\x13\xae\xb9\xf2\x63\x0d\x51\x56\x6a\x9a\x2a\x67\x1f\x12\x54\xce\x07\xa2\x73\x71\x97\x51\x1b\xe7\x6e\x21\x1e\xbc\x9b\xf6\x07\x20\xcd\xaa\xf7\xae\xa9\xd6\x97\xd7\x79\x50\x85\x13\x37\x5f\x6d\x87\x9e\x99\xd9\x88\x3b\xa9\xfa\x21\x56\xda\x55\x45\xf1\x2a\x8b\xb1\x1a\x54\x3c\xf0\x3f\x57\x9e\x8a\x0d\x17\x2a\x3f\xd9\xa8\x07\xac\x78\x7e\x42\x72\xe5\x07\x39\x2d\x4a\xf4\xf6\x78\x3f\x56\xdc\x0d\x09\x15\x2f\x64\xc1\x12\x63\x9d\x6b\xb9\x34\x48\x93\x4d\x32\x06\xd5\x1e\x92\x05\x2e\x2f\x56\xcc\x81\x3e\x88\xbd\x11\x6f\x55\xe6\xed\xf7\x0e\xe2\x0c\x7c\x2d\xfe\xa2\x63\xdd\xe5\xd4\x8c\x27\xa9\x5b\x08\x27\x1b\xd5\x7d\xfe\xc5\x9d\x6e\xe3\xbc\x5c\x11\x0a\x17\xb7\x8d\xaa\xea\xef\x0b\x0b\xe6\x10\xfe\xbc\xeb\x3e\x89\x00\xd8\xb8\xa4\x67\x2f\x63\xfa\xb3\xc9\xd1\x1c\xb6\x48\x99\xbb\xae\xa2\x80\xef\xa6\x00\xb7\x3c\x0d\x70\x7d\x1a\xd1\xcb\x14\x3d\x23\x3c\x73\x11\xdb\x94\x81\x65\xb7\x22\x80\x40\x31\x3b\x15\x67\x9a\x17\xdb\x73\x49\xd7\x44\x0c\xb1\x11\x29\x4a\xbe\x98\x66\xb3\x4a\x3e\xd5\x43\xd7\x30\xfe\x2d\xfb\x2a\xce\xf0\x96\x4e\x70\x76\x4e\x17\xec\xae\x68\xf7\x6a\x0b\x2b\x22\x81\xfe\x26\x68\xab\x14\x48\x7e\x08\x0f\x44\x14\x5e\x7b\x37\xcc\x03\xc1\xa5\xc0\x3a\xed\x59\x6a\x11\xbd\xdd\x34\x33\x7f\xe5\x3a\x42\x55\x64\xc4\x83\x30\x01\x5a\xc3\x67\xc7\x16\x9c\x5a\x68\x36\xa6\x31\x9c\xca\x2b\xc4\xda\x29\x32\x37\xe4\x05\x97\x0c\xf4\x29\xa5\xdb\xc2\xd9\xf8\x8d\xf4\xa0\x79\xa7\x43\x5c\x12\x5e\x16\x97\x65\x15\xe9\x2c\xd9\xf4\x12\x51\xc8\xb1\x69\x8a\x2e\xdf\x4a\x29\x85\x62\xa9\x86\xab\xea\x86\x0b\x0b\xbe\x43\x93\xae\x72\x38\x30\xa8\xbc\x85\x83\x3b\xe6\x71\xc8\xc5\x48\x45\x32\x9c\x8b\xf1\xc8\x59\xdc\x28\x6a\x26\x55\xee\x4f\x3a\x1e\xd6\x37\x92\x79\xf1\x1b\xb9\xf1\x24\x6f\xe0\x59\x7a\xb8\x9e\xc6\x11\xfd\x3a\x7f\x53\x3e\xf2\x27\xe5\x63\xfe\x02\xcb\x5b\x50\xc2\x7e\x1d\xa6\x5d\x06\xfd\x97\x6d\x7a\x67\xd0\xae\x05\xcf\xe6\xd9\x33\x7e\x60\x5f\x3a\xdf\xc4\xca\x12\x59\x73\x67\x72\x79\xff\x4a\xf1\x60\xa3\x0c\x99\x9e\xc1\x97\xd5\x77\x68\x8c\x23\xb5\xfa\xc9\x79\xd3\xd1\xc3\x6b\xc7\xbf\x5f\x28\xbf\xfa\x6d\xb1\xd7\x63\x98\x0c\x11\xfd\xe5\x37\x71\xfc\x74\x30\x7a\x7b\x47\xf6\x3b\x2a\xed\xc3\xfa\x1c\xfa\x06\x3a\x1e\xe9\xf1\x7f\xba\x5f\x0a\xeb\x6e\x2b\x4d\xd3\xcd\x1c\x09\xf3\x7f\x91\xb2\xa5\x5a\xdb\x80\x3e\xae\x05\xe5\x16\xee\x36\x65\x0d\x4a\xf7\xa5\xfc\x4d\xe2\x92\x95\x17\x72\xe8\x9d\x5b\x2b\xbf\xdf\x5c\x84\xda\x9c\x71\xf2\x27\xde\xb1\x9c\x08\xae\x7a\x61\x3f\x69\x4c\x2d\x3f\x2f\xa6\x6e\xe5\x6b\x16\xf5\x6a\x93\xac\x91\xb4\xf2\x25\xf6\x8a\x44\x35\xe6\xfb\xa4\x0b\x07\xc3\x6e\x28\x7d\xd8\x96\xc2\xb7\x4b\x3b\x1a\x45\x0a\x6d\x5c\xc0\xa4\x85\x86\xf3\xf4\xa6\x80\x5a\x53\x3d\x30\xdf\xf4\x93\xce\x7b\xb9\xc4\xe2\x11\x3c\x8e\x29\xce\x40\x93\x2c\x26\xdf\x18\x6d\x36\x94\x1e\x1c\xd1\x18\x49\x13\x4e\x55\xbe\xcf\x5a\x6e\x1a\x9d\x43\x77\x7d\xaf\x5b\xad\x0c\xb4\x07\x65\x2d\x9a\xea\x67\x4a\x0b\x7f\x59\x1f\x62\x1c\xc3\xf5\xd5\xd5\x5e\xc7\xc3\xb4\x23\x19\xc8\xd5\xd4\xa7\xd8\xe9\xe8\x7c\xc2\xf7\x34\xed\xda\x24\x5b\x95\xdb\xb5\xf0\xbd\xb2\x6a\x8f\x3e\x5f\xb2\xe5\xaa\x92\x9b\x0a\xb0\x9b\xb4\xe1\xbe\x7b\x72\xac\x83\xac\xbc\xa8\xef\xb4\xbd\x73\xb7\x38\xcf\xfe\x9a\xbf\xe6\xf5\x75\x5d\x37\xa5\xe5\x23\x42\x4f\xe3\x64\xdd\xcd\xe3\x8b\x45\x7e\x38\xcb\xbf\x49\x9f\x9b\x65\x47\x41\xca\xcd\x4c\x45\x8f\xb1\x3d\x60\x28\x77\x80\x4b\x7e\x92\xd8\x0c\xb0\x2e\x17\xd8\x52\x04\x9d\xaf\x0d\xa5\xd0\x36\x60\x54\x9c\x39\xe5\xbb\x6e\x91\x2f\xcb\x05\xb9\x2d\x57\xc3\x8b\x53\xd6\x84\x6d\x3a\x53\x6e\xa9\x2f\xd6\x9c\x9d\x4b\x95\x50\xcf\x37\xe7\xf2\xbd\x46\x15\xe1\xcf\x1d\x0e\x37\x8f\x92\x48\x2a\x8a\x04\x1c\xd9\xdc\x91\x6f\x15\xfa\xee\xe9\xa8\x7c\x3c\xcd\x2c\x2e\xea\x6a\x81\x93\xbf\x34\x79\x8c\x4f\x5a\x9b\xe1\xc9\x2d\x0c\x6e\x13\xdb\xdb\x33\x80\x45\xf1\x9c\x4c\xc3\xb8\x35\xac\x8c\x91\x2c\x65\x99\x74\x64\xc9\x65\x5d\xc8\xc9\x65\xc2\x4f\xea\x5e\x90\xd7\xb9\x7c\x5c\x44\xef\x71\xda\x19\x1d\x0e\x73\x2b\x86\x3e\x73\xf7\xab\xc3\x94\x2d\x17\x35\x97\x15\x12\xc2\xd3\x6d\xd1\x69\xe4\x2e\xf9\x32\xde\x3b\x6b\xb4\x45\x58\x47\x07\x6f\x58\xc6\x54\x9f\xf5\xe8\xd5\xce\x9c\x36\x52\x70\x71\x44\x6d\x88\xb6\xfa\xd7\x40\x11\x85\x62\x56\xba\x14\xcc\x71\x32\x27\xdf\x51\x25\x53\xcb\x9a\x31\xd7\x4e\x39\x39\x29\x77\xf7\xec\x79\x19\x43\x80\xab\x9f\xbf\x54\x00\xab\xf7\x6a\xc0\xd5\x35\xac\x64\x0b\x05\xd9\xd5\x96\xde\xbf\x44\xb9\x76\xae\x9d\xa5\xcf\xf3\x2d\x40\xab\x5b\x8e\xe2\xad\x0e\xe4\x7b\xca\x2a\xbe\x32\x98\x4f\x47\x60\x7c\x56\xfb\xb0\xba\x86\x9f\x57\xe3\x29\x1e\x9c\x25\xcf\x48\x3e\x49\xdb\xfd\xea\x17\x5e\xf0\xa3\x0c\x38\x78\x11\x3b\xda\x2f\xc9\x57\xe7\x2f\x84\xfa\x2f\xf5\x37\xf5\x37\x0c\x90\xbf\xfc\xe0\x0d\xbd\x7d\xc4\x8f\x4c\x01\xb3\x8a\x5e\x29\xdf\x1e\xf4\x1d\x5e\xdd\xf1\xee\xfa\xbf\xf4\x38\x43\xf8\x84\xff\x98\xb4\x27\xae\xbf\x94\xd0\xb0\x62\x3d\x27\xc0\x7f\x7d\x46\x5b\xfe\x63\x95\x3e\x49\x14\xa3\x7f\x7f\xa9\x7e\xfb\xa5\x5c\x2b\xb6\xa9\x44\x86\x71\xe2\x29\x25\x5f\xf9\xf9\x1f\x98\x8e\x92\x44\x57\xb1\x7a\x57\x39\x61\x52\xc7\xb3\x93\xcf\xb3\x9e\x8b\x2b\xf5\xac\xb7\x04\xf4\xc4\xa9\xd5\xa0\x6e\x11\xa6\xb1\x93\x31\x19\xb9\xb5\x5c\x99\x3b\x7f\xbb\x5d\x8c\xf5\x58\xf5\x5c\xbf\x84\x15\xe6\x32\x3b\x55\x1c\x4b\xc5\x4a\xf3\xa7\x2a\x0f\x0f\x93\x56\xad\xdf\xb1\x7d\x1c\x74\xb8\x86\xe6\xc7\x57\x9f\x6e\xde\x7e\x78\x0f\xcf\xf2\x41\x35\x1b\xf8\x68\x50\x05\x14\xc2\xc2\xe4\x31\x25\x4b\xd5\xcf\x01\x87\x3b\xf4\x12\x04\xae\xaf\xae\xe4\x67\xed\xfc\xfe\x6a\xc3\xca\x9b\x10\xf2\x5c\xeb\xbf\x03\x00\x00\xff\xff\x7c\x8c\xe6\x56\x53\x31\x00\x00" +var _runtimeHelpPluginsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x3a\x6b\x8f\xdc\x36\x92\xdf\xf5\x2b\xea\x3a\x38\xb8\x3b\x68\x6b\xb2\xb8\x6f\x03\x78\x01\x3b\x7e\xc4\x7b\x8e\x6d\x78\x9c\x04\x8b\x20\x80\xd8\x52\xa9\x9b\x19\x8a\xd4\x92\xd4\xf4\xf4\x19\xd9\xdf\x7e\xa8\x2a\x92\x52\xf7\x4c\xb2\xb9\x3b\x5c\x80\x78\xd4\x12\x59\x2f\xd6\xbb\xf8\x15\x7c\x34\xd3\x5e\xdb\x50\x55\xdf\xeb\xd6\x3b\x08\xd3\x38\x3a\x1f\x03\xb4\x1e\x55\xd4\x76\x0f\xa3\x2c\x80\xa3\x8e\x07\x50\x10\xf4\x30\x1a\x84\x77\x93\x82\x70\x0a\x11\x87\x1a\x5e\xdd\xa1\x3f\xa5\x75\x70\x50\x01\x54\x35\x28\x6d\x21\xb4\x5e\x8f\x11\x8e\x07\xdd\x1e\x40\x07\xf0\x93\x05\x15\x21\x44\xe5\xe3\x34\xa6\xf7\xe1\xe0\x26\xd3\xc1\x0e\x61\x34\xaa\xc5\x0e\xb4\x85\xaa\xf9\xe7\x55\xdd\x3a\xdb\xeb\xfd\xd5\x40\x64\x5d\x25\x22\xd2\xdf\xf7\x6a\xc0\xc5\x63\x6d\x26\xd5\xd4\x55\xf5\xf9\x80\x1e\x41\xd1\xff\x60\xa7\x61\x87\x1e\x5c\x0f\xad\x32\x66\xa7\xda\x5b\xe8\x27\xdb\x46\xed\x88\x15\xc6\x7c\x72\x13\xb4\xca\x0a\xa7\x48\x78\x4f\x6e\xf2\x99\x8f\xe8\x2a\xa2\xb7\x75\x1d\x12\xd1\x51\x0f\x18\xc0\xc5\x03\x7a\x88\x07\x65\x33\x17\x35\x7c\x3e\x20\x58\x35\x90\xa8\x42\x7b\xc0\x01\x89\xd5\xc6\xd9\xe7\x8c\x6c\x7d\xa7\xf1\xb8\x69\x6a\x78\xed\x7c\x85\xf7\x8a\x85\xa7\x0a\x2d\xe7\xc2\x41\x16\x24\xa1\x82\x78\x40\x98\x02\x7a\x08\xea\x0e\x03\xff\xdc\x4d\x7d\x8f\x1e\x8e\x49\x5e\xd7\x55\xd5\x34\x8d\x99\x54\x55\x80\x39\x7b\xa3\xee\x50\x50\x56\x00\x00\x75\x5d\xf3\x5f\x8f\x71\xf2\x16\x7a\x65\x02\x56\x68\x3b\xda\xc9\xf2\x82\x86\x16\x37\x70\xa7\xbc\x56\x3b\xc3\xb4\x2b\xf0\xd8\xa3\x47\xdb\x22\x44\xc7\xa8\x69\x11\x3f\x28\x41\xa4\x03\xec\x90\x38\xc6\x7b\x6c\xa7\x88\x1d\x38\x5b\x57\x9f\x0f\x3a\x30\x00\x33\xb8\x10\x41\x99\xa3\x3a\x09\xe9\xed\xe4\x3d\xda\xc8\x70\xb6\x17\xe2\xdf\x63\x14\xdd\x6a\xbe\x9d\xfc\x8f\x1a\x8f\xeb\x4d\x03\x2a\x54\x47\x34\xa6\xae\xaa\xe7\xc6\x80\xba\x53\xda\x30\x79\x2a\x9d\x20\x1d\xb2\xd1\x21\x8a\xbe\x10\x8a\x5b\x3c\xed\xb4\xed\xb4\xdd\x07\x08\x98\xe4\xd1\xf3\xa7\x03\x9a\xb1\xae\xaa\xd7\xce\x17\x65\x08\xc4\xd9\xe0\xa6\x50\x40\x6e\x99\x20\x56\x1e\x13\x1c\xec\xf5\x1d\x0a\x60\xbc\x23\xca\xb5\xed\xdd\xa3\x12\xff\x9e\x80\x7c\xf4\x18\xc2\x5a\xb8\xe3\xf5\x22\x7e\xe3\x5a\x65\xe0\x7e\x0b\x27\x78\x26\xef\xaf\x3f\xba\xa0\x59\x2f\x36\xd5\x1f\x9f\x4c\xc0\x85\xc2\x26\x23\x61\xca\xd2\x0e\x05\x3b\xe7\x0c\x92\x26\x8e\xd8\xea\xfe\x44\xc7\x71\x3c\x60\xd2\xd0\x74\x66\xb2\xb1\xda\x21\x78\x24\x6a\x48\x60\xe9\x4c\xdb\xc9\x07\xe7\xc1\x79\xb0\x2e\x82\xea\x63\xda\x37\x1f\x71\xeb\x48\x5b\x23\xd6\x55\xf5\xde\x45\xd2\x49\x32\x04\x26\x6d\x96\xa3\x6b\xdb\xc9\x3f\xdc\x4e\x6e\x60\x87\x68\x0b\x90\xae\x86\xb7\x3d\xcb\xf8\xa8\x6c\xac\xd4\x6c\x97\x3b\xec\x9d\xc7\x0b\xdc\x59\xb1\xb6\x64\x05\xd0\x8c\x1e\x93\x3d\x91\x2d\xbd\xa5\x93\x21\x02\x55\xe0\x7d\x55\x16\x85\xc8\x06\xbb\x24\x13\x8d\xa1\x88\x24\xf1\xb9\xc0\x32\x7b\x9e\xa2\xc5\xcc\x46\x45\x6b\xcc\xa4\xc4\xf6\x33\xfd\x81\x74\xd1\x8a\x03\x98\x02\xf6\x93\x99\x39\x88\x0e\x6e\xad\x3b\x82\xda\xb9\x69\xe1\xef\x58\xae\x76\x66\xaa\x6a\x9c\x25\x05\xff\x30\x62\xf6\x0b\xf3\x62\x02\x86\x1d\x91\x6b\xc9\x0d\x90\x0b\xc3\xa3\x1c\xa2\x0e\xe0\x46\x24\xb6\x94\xed\x98\x03\x8b\xc7\x2a\x7f\x1a\x55\x08\x6c\x06\xe4\x8a\xc4\x00\x13\x7d\xbd\xf3\x10\x30\xb2\x17\x17\x55\x74\xa3\xe8\xd3\x4e\x05\xb6\x59\x16\x5e\xaf\x0d\xc6\xd3\x88\x5b\xde\x90\x7d\x14\x09\x92\x36\xba\xbe\x87\x26\xaa\x5d\x88\x2e\x8c\xaa\xc5\xd0\x80\xb3\xe6\xc4\x6b\xdf\x38\xa0\xcd\x2c\x64\x86\x75\x22\x03\xaa\x84\xd8\xba\xaa\x9e\x3e\x7d\xfa\x7b\x5e\x79\xd6\x6d\xe2\x29\xbb\x9f\x20\x3a\xc6\x8b\x8b\xcd\x47\xc7\x6a\xa3\x2d\x38\xdf\xd1\xf1\x38\x50\x6d\x8b\x41\x5c\x8b\xb6\x96\x9d\xa2\xbf\x65\xd3\x77\x3d\x70\xc4\xa8\xe1\x3b\x42\xcb\xee\x8c\x1c\x05\xac\x69\x31\xb1\x09\x41\xef\xad\x8a\x93\xc7\x40\x4c\x54\x0b\x4a\x3c\x26\xbb\x9f\x02\xb1\xfe\xc6\x3d\x09\x69\x0b\x47\xba\xcd\x75\x55\x7d\x0d\xcd\x87\x9b\xe6\x7a\x76\x98\x72\x80\xb4\x4d\xe8\xf9\x70\x23\x04\xf0\x99\x8a\xdb\x33\x27\xf2\xee\x22\x4d\x4b\x84\xc8\x29\x91\xec\x01\x82\x1a\x10\x54\x10\x64\x6f\x3e\x7c\xb8\x29\xa0\xb7\x10\x1c\x34\x9d\xf2\x47\x6d\x9b\x2d\x34\x47\x6d\x3b\x77\x0c\xf4\x68\xb4\x9d\xee\xe9\xa1\xf7\x88\xbb\xd0\x35\x75\x5d\x6f\x98\x38\x89\x9a\x2f\xb5\x6f\xae\xa1\x75\x36\x2a\x0a\xdd\x44\xd7\xa8\xe2\x21\x9b\xbe\x10\x28\x4b\x27\xaf\x58\x3d\xf9\x20\x19\x04\x1d\x76\x73\x9d\xe5\xe6\x7a\x50\xc6\xf0\x36\xfa\xb0\xe0\x49\x93\x9c\x50\xb0\x4e\xfe\xb3\xda\x35\xd7\xe9\x44\x3a\xbc\xcf\xbe\x37\x7b\x7e\xde\x9b\x5c\x35\x3f\x13\x70\xde\x3b\x60\x08\x68\xf7\x48\x14\x1b\x8c\x81\x0f\x3b\xa0\xed\x80\xbe\xa8\x3d\x86\x4c\x36\xc7\x43\x72\xe2\x12\xb0\x47\xef\x86\x31\x0a\xcd\xef\xf1\xf8\x82\xc3\xe3\x3a\xe2\x7d\xdc\x0a\xb7\x21\x7a\x6d\xf7\x1b\xf8\x5a\x3e\x91\x44\x78\x67\x48\xc6\x95\x02\x6a\xef\xdd\x00\x4a\x4e\xbe\x62\x97\xac\x3a\x52\x29\xc9\x77\x44\x21\x08\xde\x39\xa2\xd7\xde\x0d\xaf\xb5\xc1\xf5\xff\x05\x55\x01\xfb\x06\xe3\x3b\x54\x14\xbd\x7e\x3a\xe8\x88\x6c\x69\xeb\x0d\xbb\xf8\xe6\x3a\xb9\x35\x39\x47\x23\xcb\x48\xef\xd2\xba\x2c\xea\x02\x55\x88\x61\xb8\x6f\xc3\x4f\xce\x77\xdf\x1e\x94\x5f\x87\xe8\x0b\x99\x17\x70\x1f\xf1\x91\xb2\x52\xec\xe7\xc9\xd1\xf9\x8e\x00\xb7\x07\xe5\x55\x1b\xd1\x3f\x61\xe0\x9f\x26\x8b\x37\xd1\xaf\x3d\xa9\x37\x6e\xd2\x9e\x05\x5c\x95\xc1\x24\x4d\xa4\xc7\x42\x29\x6f\x62\x38\xef\x5c\xbb\xe6\x20\xa9\x6d\xdc\xc0\x3b\xd7\x9e\x81\x20\xf1\xd1\x92\x86\x80\x4d\xad\x28\xcd\x4f\x62\xef\x2f\xb5\xc7\x36\x3a\x7f\x5a\x3f\x8a\xdd\x3b\x47\x5e\x9d\x4f\xc8\x92\x9d\xcd\xa1\x8f\x95\x32\x79\x0d\x62\xad\xcb\x90\x18\xfc\xdf\x9c\xb6\x1f\x55\x3c\x84\x75\xa7\x7d\x5d\xd7\x45\x70\x05\x49\xeb\x86\x9d\xb6\x18\x60\x98\x4c\xd4\xe4\x30\x33\x04\x2d\x0a\x4b\x39\x9e\x31\x67\x87\x5c\xa8\xa5\xa4\xf5\x4c\x6f\x96\x54\x1b\x03\xbb\x49\x0e\xc1\xa8\x10\x01\x0d\x0e\x44\xac\xeb\x19\xd2\x96\x40\xc6\xd3\xa8\x29\x60\x9c\x8a\x69\x3f\x09\x17\x2c\xbc\xc1\xf8\x81\xbd\xfd\x9a\x39\x7f\x88\x88\x73\x04\x65\xa6\xa2\x3f\x1e\xff\x31\x21\xa7\x54\x12\x26\x18\xcc\xf3\xae\x7b\x08\x66\x9b\x36\x6a\x1b\xd1\xf7\xaa\xc5\x2f\xbf\x11\xe4\x40\xd6\x3b\x9f\xaf\x40\x11\x3b\x12\x5f\x97\x3e\xc8\xe6\x75\xb3\xd8\xde\xc0\x80\x8a\x83\xc1\x49\x3c\xae\xb6\xf0\xc6\x89\x4b\xbb\x29\x9c\x08\xc4\x8c\x7d\x66\xe9\x71\xc4\x39\x77\xa5\xc5\x12\x1b\x89\x84\xa3\x36\x86\x36\xf0\xb7\xb4\x72\x6f\xdc\x8e\xa4\xb9\x85\xc9\x1a\x0a\x2c\x3a\xa6\xc8\x21\x51\x93\xe2\x9d\x2c\xad\x33\x45\xef\xe8\xcb\x1f\x90\xb5\x95\xd0\xfd\xf5\x8f\x1c\xe6\x7f\x9f\x44\x3e\xcd\x72\x12\x8c\x4f\x5c\xeb\xbc\x56\x7c\x07\x23\x7e\xa1\x6d\xf7\x9f\x78\x5a\xdf\xe2\x69\x5b\xd2\x98\x22\x06\xca\x7f\x03\x34\xb7\x78\x6a\x88\xf9\x46\x16\x34\xbc\xf3\x7b\x75\x8b\xdf\xba\x61\x50\xb6\xe3\x93\xdc\xce\x25\x48\x26\x38\x65\x3a\x1c\x0a\xeb\xba\xfe\xb6\xfc\x24\xd8\x6c\xfe\xc5\xa5\xb5\x02\x29\xe5\xed\x04\x2f\x67\x32\x2c\x5e\x62\x02\x9a\x8c\xa0\x91\xf4\x20\x27\x59\x35\xfc\x10\x10\xbe\x21\x80\x94\x43\x2c\xb1\x46\xc7\xd5\xc0\x7b\x37\xe3\xae\x97\xd4\xa7\x77\xeb\x0b\xd2\x37\xcd\xf5\x39\x79\xcd\xbc\x96\x25\x41\x29\xa4\x90\xba\x10\x83\xc8\x65\xae\x39\xce\x2d\x63\x59\xb1\xf0\xc2\xef\x94\xed\x4c\x11\x61\x3b\x74\x4b\x93\x9a\xec\xf2\x70\x93\x74\x78\xdb\xab\x7b\x6c\x97\x72\x2f\xd2\x56\x7e\x1f\xe0\xe7\x5f\xb2\x63\x59\xe7\xf7\xe8\xbd\xf3\x04\x94\xe4\x05\x0a\xd6\xe1\x80\xc6\x6c\xce\x45\x7e\x66\x4e\xca\xef\x27\xf2\x10\xa1\x86\x4f\x4b\x0e\x64\xc3\x93\x00\x6e\x8a\xe3\x14\x39\xd1\x52\x30\xba\x10\x34\x25\x2e\x8c\xa8\xce\x8e\xfc\x86\xb0\x3c\xc2\xdd\x23\x84\x7d\xa2\x32\x1e\x98\xac\x8c\x24\xa5\x9e\x53\xc0\x70\xc6\x72\x43\x54\x4e\xb6\x4b\xb5\xc1\xc1\xb9\x8e\x9d\x1b\x17\x32\x9d\xc3\x00\xc1\x0d\xe4\xc0\x3c\x27\x5c\xa4\x0f\x9c\xa0\x67\x8e\x60\xad\x6b\xac\xe1\x1f\x13\xfb\xf1\xf2\x7a\xc3\x55\x37\x6b\x50\xd6\x04\xff\xbf\xe6\xfc\x85\x6a\x6f\xf7\xde\x4d\xb6\x63\x19\x5c\x1c\xed\x23\xcc\x66\xeb\xdc\x95\x8d\x05\xd6\x5b\xf2\x68\x64\x76\x77\x78\x09\x6c\x0b\x47\xa5\x23\x47\xde\x2d\x69\xf9\x07\x21\x8d\x7e\xff\x49\x21\x13\xbf\xbb\x13\xb4\xc6\xb1\xb0\x24\x89\x23\x7a\x72\x72\xb9\xe0\x5d\x5c\xb3\x50\x62\x4e\x5c\x7a\x35\x84\xbf\xe1\xc4\xd3\x4f\xb8\x25\x81\x70\x02\x25\x26\xbb\x63\x71\x4e\x21\x17\x41\x12\x58\xbc\xe3\x3c\x1b\xef\x75\x64\xeb\x1c\xbd\x54\xc3\x9c\xc5\xa1\x1f\xb4\x55\x46\x92\x1a\x3d\x0c\xd8\x69\x15\x91\x92\x5d\xcc\xc5\x03\x15\xd9\x44\xe6\x96\xc2\x9a\x3b\xa6\x58\x5b\x72\xb9\xe8\xe6\xce\x42\x3a\xaa\x14\x8b\x12\x66\x21\xbc\x48\x6b\x41\xfd\xf9\x39\x87\xa8\x6c\xa7\x7c\x97\xa0\x14\x3f\xcf\x75\xaf\x94\x84\x35\xcc\x35\xac\xfe\x1d\xa0\xac\x8c\x0b\xc9\x65\x0c\x01\x06\x75\xe2\xd4\x68\x87\x07\x75\xc7\xa2\xb2\xce\x0f\xec\xab\x77\xd8\x2a\xae\x51\x75\x50\x31\x9e\x1a\xc1\xbc\xac\xeb\x8b\x7a\x7c\x46\x3f\xbc\x1a\x26\xa3\xa2\xf3\x7f\x4e\x35\xb6\x73\x91\x99\x0d\x92\x55\xa4\xb9\x86\x1b\x29\x1c\x88\x96\xc7\x54\xaf\x01\xbc\x6f\x71\x8c\xe7\x5a\x21\x7d\x26\xf2\x21\x49\x89\xb3\x9f\x0b\xa3\xa1\xa0\x47\x4a\x57\x0e\x16\x13\xa9\xdc\x43\xe2\x66\x51\x26\xa6\x01\x6d\x89\x44\xbd\xcc\xf1\x16\xd5\xb0\xe2\xfa\xf9\xa2\xc9\x95\x4f\x64\x51\xe9\x2e\xcf\x9a\x90\xb0\xa2\x49\x4b\xed\x51\x7d\x28\x30\x46\xef\xee\x74\x47\xca\x2a\x26\xdf\x6b\x1f\xc4\xce\x39\x58\x67\x4f\x51\x12\xbe\x44\x1b\xe1\x58\xeb\xa2\xf2\x80\xc3\x18\x4f\x8f\xa8\x03\x1f\xdb\x86\xf9\x5e\x76\x3e\xe8\x4b\xe2\x49\x19\x4d\x3b\x83\xe0\x4b\x5d\x53\xa9\xa9\x59\x8b\xdc\x88\x5e\xfa\xa7\x52\x3b\x06\x58\x73\xd1\xb6\x05\x29\xe8\xb6\xd0\x79\xb5\x77\xb6\x37\x27\xce\xe8\xa8\x66\xde\x85\x6e\x0b\xa9\xa2\xdb\x48\x98\x24\xe2\x9b\xa4\x36\x37\x19\x49\x03\xeb\x80\x08\x3b\x34\xee\xb8\x29\x6d\xa0\xe8\xa0\x43\x39\x3b\x24\x96\x16\xa7\xcb\x45\x01\x93\x41\x14\x17\x62\x45\x2f\x1f\x40\xbf\x86\x17\x0f\x3b\x4b\x09\xe0\x03\xdd\x38\x03\x98\x3a\x0a\x70\x87\x3e\x48\xff\x8d\x30\x8b\xa3\x12\xc3\x0b\xd9\x59\x25\xdc\x8e\x4a\x93\x8f\x2e\xac\x8d\x6b\x29\xf3\xdf\x52\xb6\x93\xab\xa8\x0d\xd9\xe2\x65\x5c\xce\x25\x08\xb9\x73\x9d\xbb\x7c\x6a\x8e\x86\x5c\x48\x70\xab\x2b\xa7\xb0\x9f\xd0\x38\x45\x6c\xad\x3f\xe1\x86\x1e\xa5\xcf\x4a\x26\x20\x45\xd2\x8b\x53\xc4\x0f\x7d\x1f\x30\xfe\x21\x19\x78\xaf\x5a\xaa\x7b\x8d\xbe\xc5\x05\xe9\xc5\xd0\xc8\x7e\x58\xd4\xad\x9b\x28\x76\xed\x4e\x94\x8d\x68\x1b\x22\xaa\x8e\xa8\xa4\x82\x27\xa4\xfa\x62\x77\x33\xaa\xa3\x25\x27\xf0\x7e\x99\x15\xb4\x43\xf7\x7c\x99\x18\x6c\xc1\xd9\x9b\xd8\xb9\x29\xa6\x27\xf4\x9e\x9e\x5e\xdd\xeb\x58\x36\x91\x2f\xe5\x74\xa2\xae\xeb\xb3\x8c\xe8\x26\x2a\x1f\xc3\x59\x7c\x48\xe5\x6c\x32\xa7\x87\x91\x0c\x9a\x8c\xb0\x49\x8f\xe8\x7d\x03\x29\xfc\x34\x82\xb9\xe1\x56\xc9\x59\x2f\x75\x69\xef\xe1\x5f\x18\x7c\x29\x54\x73\x37\xf7\xa0\xc6\x11\x4b\xc2\x3e\x53\x33\x87\x81\x26\xf3\x28\xa8\xcf\x93\x04\xc6\x56\x7c\x3e\x65\x90\xa9\x27\x76\x61\xfd\x33\x81\xe5\x10\x48\x40\x67\x9e\xf8\xff\x45\xdc\xff\x2a\x7d\x38\x73\x32\x28\x2a\x24\x6b\x53\xd2\xcc\x3e\x89\x5d\x1c\xa5\x4a\xd8\x51\x1e\x90\xb3\x03\x16\xab\x34\xac\xa4\x29\x9a\x53\xb2\xb7\x64\x6f\xe2\x55\x53\x7b\x53\x72\xe0\x70\x80\xa7\x6d\x53\x17\x19\x60\xca\xf8\xbe\xa6\x75\xf5\xb7\x43\x47\x3e\x2a\xaa\xb3\xfa\x8a\x13\xa8\xdc\x13\xb0\x49\xae\x21\x76\xba\x34\xd9\x7f\x75\x3b\x2e\x76\x93\x33\x2f\x02\x76\xe3\x39\x70\x82\x77\x4b\xe7\xa4\x78\x8b\x0c\x0d\x28\xbc\x06\xc4\x41\x6c\x4b\x41\xa0\xd0\x3a\xf7\x9f\x4a\x2b\x70\xd6\x30\xca\x22\xc5\xd1\x0a\x7a\xb7\xfb\x15\xdb\x18\xaa\xd2\x01\xde\x49\x6d\x3c\xef\xa0\xc0\x0d\x03\x15\x98\x03\xc6\x83\xeb\x48\xab\x16\x13\x87\xb9\x6b\xc0\x29\x89\xc0\xab\x44\x91\x79\xa6\x95\x9a\x60\xea\xf1\x19\x92\x32\x86\x67\x3c\xb9\x7f\x5a\xcd\xb0\xaf\x79\x28\x23\x21\xa5\xa9\xe1\xef\x69\x0b\xb9\x70\xa1\x70\xc1\x6a\xc9\x51\x33\x1a\x51\x96\x6a\x39\xdd\x38\xa0\x19\x21\xba\x51\xb7\x12\x29\x73\x00\x70\xf6\x01\x91\xb4\xa5\xe5\xa2\xe8\xbc\xc5\x33\xb7\xb8\x8b\x0d\xcf\xdd\x70\x3f\xd9\x1a\xde\xa6\x39\x93\x47\xd2\x27\x3a\xff\x3d\x5a\xf4\x9c\xf1\x84\xa8\xdb\xdb\x94\xde\xc9\xe0\x82\x75\x70\x50\xfc\x52\xcd\x13\x34\x50\x77\x4e\x33\x8c\xc9\x07\xca\xa7\x46\xef\x76\x06\x87\x70\xde\x6a\xd6\x7d\x92\xa3\x31\x0f\xc4\x46\x89\xd9\x86\xd2\x0d\xf6\x46\xf4\x86\x64\xf8\xb7\x29\x44\x19\x0c\x3c\x2e\x65\x08\x12\x70\x2a\x8a\xf5\xce\x3e\x89\xa9\x24\x2d\x20\x40\xed\x95\xa6\xe2\xf2\x87\x90\x4d\x75\x71\xec\xdb\x72\xae\x5c\xa8\x2c\xba\xcd\xa9\x8f\xa7\x42\x70\xad\x56\xc5\xa6\xd8\x74\xb9\x54\xdc\x9d\x92\x2d\xce\x94\xd5\x2f\xa6\xbe\xc9\x53\xaf\xd2\xe1\x5c\x00\x6d\x5e\x6b\x83\x9f\x4f\x23\x36\x5b\x68\x3e\xaa\x78\x68\xb6\x55\x43\x61\xa1\xa9\x6b\x19\x6b\xce\x7a\x91\x74\xf7\x11\xf5\x2b\x3e\x00\x97\x3d\xd5\xb9\x51\xad\x3c\x5e\x9f\x37\x5c\xeb\xef\xa5\xc1\xba\x1e\xc2\x9e\x9c\xd9\x59\x3b\xe7\x7c\xe5\x2b\x4a\x3a\xff\xc4\xba\xbf\x63\x78\xef\x3e\x72\x5d\xb1\x4e\xe5\x45\x29\x24\x39\x9f\xe5\x7a\xe7\x62\xd3\xd9\xfa\x2d\x1c\x74\x88\xce\x9f\x3e\x73\xe3\xfd\x41\x6f\x82\x5f\x2f\x7a\x13\x73\xed\xf4\x18\xe8\xe7\x5d\xf7\xce\xed\x1f\x27\xbc\xfa\xea\xab\xaf\xbe\x12\xd7\x5b\x55\x6f\xdc\xa2\x21\x32\x0f\x08\x58\xc7\x6a\x8e\x7f\x6c\x2f\x52\xe1\x5e\x93\x82\xf1\x30\x70\xef\xaa\x87\xe2\xdc\xc8\x10\x2f\x25\x2d\xae\x4c\x0d\xcb\xca\xeb\x8b\x95\x8b\xc1\x18\xbb\xd9\x54\xcc\x64\x81\xfc\x9a\xb4\xfd\x11\x40\x17\xa2\x5b\xad\xb6\xf0\x4d\x02\xfa\x12\x77\xd3\x9e\xec\xdd\xb8\xfd\x9e\x34\x63\x39\xdd\x26\xa5\xd9\x21\x74\xce\xa6\xce\x08\x27\x93\xcc\x62\xb6\xca\xd6\x75\x54\xb9\x3c\x40\x99\x44\xba\x4a\x3c\xc0\x9e\xca\x78\x9e\xf1\xac\xb6\x02\xfd\xc7\xa4\x72\x9f\xdd\x47\xaf\x6d\xfc\x0e\x3d\x66\x46\x2d\xc8\x35\x83\xe8\xd8\xff\x2d\x49\xca\x64\xa6\xc4\x7f\xf4\x64\x1e\xcd\xb7\xd1\x9b\x57\x0d\x69\xb5\x95\xc6\x60\x63\xdc\xbe\xa1\xea\xb5\xca\x1b\x64\x2e\x22\xc1\x9f\xd2\x68\x29\xf7\xed\xa9\x40\x0c\x54\x09\x70\x95\xba\xc4\x97\xb3\x93\x4e\x87\xd1\xa8\x13\x76\x15\x31\x51\x57\xa4\x17\xf0\x9c\xad\x33\xdb\xd3\x1b\x37\x1f\x8a\xd1\x3b\xaf\xfc\xa9\xaa\x38\xbc\xce\x86\x49\x0e\x8d\xc1\x97\xc9\xe1\x3c\xa7\xe2\xa8\x93\x02\xd5\x1c\x90\x52\x1e\xf0\xc6\x55\x97\xc0\xeb\xaa\xba\xd1\xc3\x68\x4e\xa0\x07\xca\xac\x53\x97\xb7\xbd\x25\x79\x9f\xdc\xf4\xa4\x4b\x81\x52\xc6\x81\xb6\xf8\x01\x52\x57\x1d\xcf\x02\xd1\x3c\xb4\x96\x66\xa6\x76\x53\xd4\x06\x9e\x25\xd0\xeb\x95\x76\x57\xf2\x6e\xb5\x49\x4b\xfa\x21\x2e\xbe\xf7\x43\x5c\x6d\xaa\xf4\x89\x12\x03\xee\x52\xd0\x02\xde\x55\x7f\x42\xd5\xf1\x20\x64\x75\xe3\x06\xa4\xa7\x3a\xde\xf3\x16\xdd\xf3\xca\x7f\x3e\x03\xab\x39\x2e\x71\xd2\x07\xb3\x2a\x89\x57\x59\xf1\x1f\x1e\xbb\x70\x13\x48\x1b\xbc\x86\x0b\x58\x48\x51\x86\x36\x3f\x7d\x0a\x2f\x29\x39\xa1\x4a\x22\x87\x7a\x8a\xce\x16\x94\xf7\x8a\xa5\xcc\x79\x77\x5e\x2c\xfe\xfd\x66\x24\x45\xec\x53\x77\xd2\xd9\x3b\xf4\x9c\xaf\x73\xa9\x9a\xc6\x25\xf3\xc0\x3e\x44\x62\xaf\x1f\x62\x9d\xf6\xad\x57\xff\x1e\x56\x92\x15\xa5\xb1\x3d\x91\xe1\x38\x01\xe1\x32\xa2\x74\xe5\x98\x7a\x3e\x0e\x36\x5a\xe2\xe9\xdf\xf2\x06\x72\xe6\x65\xc2\xff\x5d\x1e\x8a\x2e\x8e\x36\x88\x92\xfe\x8e\xc6\x49\x90\x29\x81\x89\x35\xab\xae\xde\xa3\xf2\x54\xf0\x1a\xb3\xd0\xac\x0c\x26\x2c\x40\x13\xae\xb9\xf2\x63\x0d\x51\x56\x6a\x9a\x2a\x67\x1f\x12\x54\xce\x07\xa2\x73\x71\x97\x51\x1b\xe7\x6e\x21\x1e\xbc\x9b\xf6\x07\x20\xcd\xaa\xf7\xae\xa9\xd6\x97\xd7\x79\x50\x85\x13\x37\x5f\x6d\x87\x9e\x99\xd9\x88\x3b\xa9\xfa\x21\x56\xda\x55\x45\xf1\x2a\x8b\xb1\x1a\x54\x3c\xf0\x3f\x57\x9e\x8a\x0d\x17\x2a\x3f\xd9\xa8\x07\xac\x78\x7e\x42\x72\xe5\x07\x39\x2d\x4a\xf4\xf6\x78\x3f\x56\xdc\x0d\x09\x15\x2f\x64\xc1\x12\x63\x9d\x6b\xb9\x34\x48\x93\x4d\x32\x06\xd5\x1e\x92\x05\x2e\x2f\x56\xcc\x81\x3e\x88\xbd\x11\x6f\x55\xe6\xed\xf7\x0e\xe2\x0c\x7c\x2d\xfe\xa2\x63\xdd\xe5\xd4\x8c\x27\xa9\x5b\x08\x27\x1b\xd5\x7d\xfe\xc5\x9d\x6e\xe3\xbc\x5c\x11\x0a\x17\xb7\x8d\xaa\xea\xef\x0b\x0b\xe6\x10\xfe\xbc\xeb\x3e\x89\x00\xd8\xb8\xa4\x67\x2f\x63\xfa\xb3\xc9\xd1\x1c\xb6\x48\x99\xbb\xae\xa2\x80\xef\xa6\x00\xb7\x3c\x0d\x70\x7d\x1a\xd1\xcb\x14\x3d\x23\x3c\x73\x11\xdb\x94\x81\x65\xb7\x22\x80\x40\x31\x3b\x15\x67\x9a\x17\xdb\x73\x49\xd7\x44\x0c\xb1\x11\x29\x4a\xbe\x98\x66\xb3\x4a\x3e\xd5\x43\xd7\x30\xfe\x2d\xfb\x2a\xce\xf0\x96\x4e\x70\x76\x4e\x17\xec\xae\x68\xf7\x6a\x0b\x2b\x22\x81\xfe\x26\x68\xab\x14\x48\x7e\x08\x0f\x44\x14\x5e\x7b\x37\xcc\x03\xc1\xa5\xc0\x3a\xed\x59\x6a\x11\xbd\xdd\x34\x33\x7f\xe5\x3a\x42\x55\x64\xc4\x83\x30\x01\x5a\xc3\x67\xc7\x16\x9c\x5a\x68\x36\xa6\x31\x9c\xca\x2b\xc4\xda\x29\x32\x37\xe4\x05\x97\x0c\xf4\x29\xa5\xdb\xc2\xd9\xf8\x8d\xf4\xa0\x79\xa7\x43\x5c\x12\x5e\x16\x97\x65\x15\xe9\x2c\xd9\xf4\x12\x51\xc8\xb1\x69\x8a\x2e\xdf\x4a\x29\x85\x62\xa9\x86\xab\xea\x86\x0b\x0b\xbe\x43\x93\xae\x72\x38\x30\xa8\xbc\x85\x83\x3b\xe6\x71\xc8\xc5\x48\x45\x32\x9c\x8b\xf1\xc8\x59\xdc\x28\x6a\x26\x55\xee\x4f\x3a\x1e\xd6\x37\x92\x79\xf1\x1b\xb9\xf1\x24\x6f\xe0\x59\x7a\xb8\x9e\xc6\x11\xfd\x3a\x7f\x53\x3e\xf2\x27\xe5\x63\xfe\x02\xcb\x5b\x50\xc2\x7e\x1d\xa6\x5d\x06\xfd\x97\x6d\x7a\x67\xd0\xae\x05\xcf\xe6\xd9\x33\x7e\x60\x5f\x3a\xdf\xc4\xca\x12\x59\x73\x67\x72\x79\xff\x4a\xf1\x60\xa3\x0c\x99\x9e\xc1\x97\xd5\x77\x68\x8c\x23\xb5\xfa\xc9\x79\xd3\xd1\xc3\x6b\xc7\xbf\x5f\x28\xbf\xfa\x6d\xb1\xd7\x63\x98\x0c\x11\xfd\xe5\x37\x71\xfc\x74\x30\x7a\x7b\x47\xf6\x3b\x2a\xed\xc3\xfa\x1c\xfa\x06\x3a\x1e\xe9\xf1\x7f\xba\x5f\x0a\xeb\x6e\x2b\x4d\xd3\xcd\x1c\x09\xf3\x7f\x91\xb2\xa5\x5a\xdb\x80\x3e\xae\x05\xe5\x16\xee\x36\x65\x0d\x4a\xf7\xa5\xfc\x4d\xe2\x92\x95\x17\x72\xe8\x9d\x5b\x2b\xbf\xdf\x5c\x84\xda\x9c\x71\xf2\x27\xde\xb1\x9c\x08\xae\x7a\x61\x3f\x69\x4c\x2d\x3f\x2f\xa6\x6e\xe5\x6b\x16\xf5\x6a\x93\xac\x91\xb4\xf2\x25\xf6\x8a\x44\x35\xe6\xfb\xa4\x0b\x07\xc3\x6e\x28\x7d\xd8\x96\xc2\xb7\x4b\x3b\x1a\x45\x0a\x6d\x5c\xc0\xa4\x85\x86\xf3\xf4\xa6\x80\x5a\x53\x3d\x30\xdf\xf4\x93\xce\x7b\xb9\xc4\xe2\x11\x3c\x8e\x29\xce\x40\x93\x2c\x26\xdf\x18\x6d\x36\x94\x1e\x1c\xd1\x18\x49\x13\x4e\x55\xbe\xcf\x5a\x6e\x1a\x9d\x43\x77\x7d\xaf\x5b\xad\x0c\xb4\x07\x65\x2d\x9a\xea\x67\x4a\x0b\x7f\x59\x1f\x62\x1c\xc3\xf5\xd5\xd5\x5e\xc7\xc3\xb4\x23\x19\xc8\xd5\xd4\xa7\xd8\xe9\xe8\x7c\xc2\xf7\x34\xed\xda\x24\x5b\x95\xdb\xb5\xf0\xbd\xb2\x6a\x8f\x3e\x5f\xb2\xe5\xaa\x92\x9b\x0a\xb0\x9b\xb4\xe1\xbe\x7b\x72\xac\x83\xac\xbc\xa8\xef\xb4\xbd\x73\xb7\x38\xcf\xfe\x9a\xbf\xe6\xf5\x75\x5d\x37\xa5\xe5\x23\x42\x4f\xe3\x64\xdd\xcd\xe3\x8b\x45\x7e\x38\xcb\xbf\xc9\x9f\x9b\x65\x4b\x41\xea\xcd\x4c\x46\x8f\xb1\x3d\x60\x28\x97\x80\x4b\x82\x92\xf8\x0c\xb0\x2e\x37\xd8\x52\x08\x9d\xef\x0d\xa5\xd8\x36\x60\x54\x9c\x3a\xe5\xcb\x6e\x91\x6f\xcb\x05\xb9\x2e\x57\xc3\x8b\x53\x56\x85\x6d\x3a\x54\xee\xa9\x2f\xd6\x9c\x1d\x4c\x95\x50\xcf\x57\xe7\xf2\xc5\x46\x15\xe1\xcf\x9d\x0e\x77\x8f\x92\x4c\x2a\x0a\x05\x1c\xda\xdc\x91\xaf\x15\xfa\xee\xe9\xa8\x7c\x3c\xcd\x2c\x2e\x0a\x6b\x81\x93\xbf\x34\x79\x8e\x4f\x6a\x9b\xe1\xc9\x35\x0c\xee\x13\xdb\xdb\x33\x80\x45\xf3\x9c\x8c\xc3\xb8\x37\xac\x8c\x91\x34\x65\x99\x75\x64\xc9\x65\x65\xc8\xd9\x65\xc2\x4f\xfa\x5e\x90\xd7\xb9\x7e\x5c\x84\xef\x71\xda\x19\x1d\x0e\x73\x2f\x86\x3e\x73\xfb\xab\xc3\x94\x2e\x17\x3d\x97\x15\x12\xc3\xd3\x75\xd1\x69\xe4\x36\xf9\x32\xe0\x3b\x6b\xb4\x45\x58\x47\x07\x6f\x58\xc6\x54\xa0\xf5\xe8\xd5\xce\x9c\x36\x52\x71\x71\x48\x6d\x88\xb6\xfa\xd7\x40\x21\x85\x82\x56\xba\x15\xcc\x81\x32\x67\xdf\x51\x25\x5b\xcb\x9a\x31\x17\x4f\x39\x3b\x29\x97\xf7\xec\x79\x1d\x43\x80\xab\x9f\xbf\x54\x00\xab\xf7\x6a\xc0\xd5\x35\xac\x64\x0b\x45\xd9\xd5\x96\xde\xbf\x44\xb9\x77\xae\x9d\xa5\xcf\xf3\x35\x40\xab\x5b\x0e\xe3\xad\x0e\xe4\x7c\xca\x2a\xbe\x33\x98\x4f\x47\x60\x7c\x56\xfb\xb0\xba\x86\x9f\x57\xe3\x29\x1e\x9c\x25\xd7\x48\x4e\x49\xdb\xfd\xea\x17\x5e\xf0\xa3\x4c\x38\x78\x11\x7b\xda\x2f\xc9\x59\xe7\x2f\x84\xfa\x2f\xf5\x37\xf5\x37\x0c\x90\xbf\xfc\xe0\x0d\xbd\x7d\xc4\x91\x4c\x01\xb3\x8a\x5e\x29\xdf\x1e\xf4\x1d\x5e\xdd\xf1\xee\xfa\xbf\xf4\x38\x43\xf8\x84\xff\x98\xb4\x27\xae\xbf\x94\xd8\xb0\x62\x3d\x27\xc0\x7f\x7d\x46\x5b\xfe\x63\x95\x3e\x49\x18\xa3\x7f\x7f\xa9\x7e\xfb\xa5\xdc\x2b\xb6\xa9\x46\x86\x71\xe2\x31\x25\xdf\xf9\xf9\x1f\x98\x8e\x92\x4c\x57\xb1\x7a\x57\x39\x63\x52\xc7\xb3\x93\xcf\xc3\x9e\x8b\x3b\xf5\xac\xb7\x04\xf4\xc4\xb9\xd5\xa0\x6e\x11\xa6\xb1\x93\x39\x19\xf9\xb5\x5c\x9a\x3b\x7f\xbb\x5d\xcc\xf5\x58\xf5\x5c\xbf\x84\x15\xe6\x3a\x3b\x95\x1c\x4b\xc5\x4a\x03\xa8\x2a\x4f\x0f\x93\x56\xad\xdf\xb1\x7d\x1c\x74\xb8\x86\xe6\xc7\x57\x9f\x6e\xde\x7e\x78\x0f\xcf\xf2\x41\x35\x1b\xf8\x68\x50\x05\x14\xc2\xc2\xe4\x31\x65\x4b\xd5\xcf\x01\x87\x3b\xf4\x12\x05\xae\xaf\xae\xe4\x67\xed\xfc\xfe\x6a\xc3\xca\x9b\x10\xf2\x60\xeb\xbf\x03\x00\x00\xff\xff\x86\xa3\xf8\x6b\x54\x31\x00\x00" func runtimeHelpPluginsMdBytes() ([]byte, error) { return bindataRead( @@ -1477,7 +1504,7 @@ func runtimeSyntaxCYaml() (*asset, error) { return a, nil } -var _runtimeSyntaxCYaml2 = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x54\xdd\x6e\x1b\x37\x13\xbd\xd7\x53\xec\xb7\xf1\x57\x91\x76\x24\x2b\x49\x91\x36\xdb\x1f\xa1\x50\x9b\xb6\x40\x5a\xdf\xb4\x80\xd1\xa5\xbc\xe0\x92\xb3\x12\x61\x8a\x5c\x90\xb3\xfe\x69\x26\xef\x5e\x70\xb5\x8a\x04\xd9\x70\x83\x54\x37\xe2\x0e\xe7\xf0\x1c\xce\x1c\x4e\x63\x2c\xe0\x7d\x0b\x45\xa6\x46\x23\x0d\x08\x0a\x8b\x51\x96\x65\x59\xda\x70\x72\x03\x45\x96\x33\x21\xa6\x4c\xd1\x82\x9f\x50\x5a\xad\xe9\x97\xed\xca\x98\xf9\x36\xa2\xa1\xe1\x27\x3c\x1f\x8d\x42\x67\x21\x6e\xf1\x93\xcc\x68\x70\x68\x1a\x03\xa1\xc8\x72\x21\xea\xf2\x87\xc9\x5f\xd5\xb2\x9c\x4d\xde\xf4\x8b\x33\x21\xea\x3c\x1b\x72\xb7\x12\x52\x16\x6b\xac\x97\x48\xda\x77\xb5\x05\x52\x6b\x19\xc8\x38\xa4\xb8\xf6\x01\xc9\x7a\xb7\xa2\x68\xfe\x06\xdf\x10\xb8\x6e\x43\x37\xde\x68\x8a\x28\xd1\x28\x52\xde\x45\xa4\x88\xa1\x53\x48\x9d\x33\xde\x51\x3a\x56\x43\x43\x70\x87\x10\x1c\xb1\xce\xf1\x79\x34\x2b\x07\x9a\x8c\xb3\xc6\x01\x4f\x22\x1e\x6a\x60\x71\x9e\x58\x38\x31\xd6\x55\x73\x3e\x37\x0e\xd9\xd7\xf4\xe2\x35\xbd\x7a\x49\xaf\xbf\xa4\x16\x03\xe7\xbc\xc2\x23\xf0\x34\xd1\x38\x0d\x7a\x38\xa5\xf6\xde\x1e\x12\x24\x9d\xb0\x01\x87\xc3\x7e\xc2\xa4\x12\xd3\xa6\x43\x99\x6e\x7b\xe3\xad\x44\x63\x81\x02\xac\x4c\x44\x08\x04\x77\xad\x35\xca\xe0\x53\xc7\x34\x3e\x90\x69\xe8\x76\x9d\x90\xda\x13\xd8\x08\xa4\x64\x04\xd2\xd0\xc8\xce\x22\xc5\x5b\x83\x6a\xfd\xa4\x94\x70\x4f\xb8\x0e\xfe\x96\x94\x44\xb5\x26\xdf\x42\x90\xe8\x03\x69\xb0\x80\xf0\x14\x74\xe5\xd1\xa7\xda\xa3\x71\x1d\x50\x1d\x40\x5e\x53\x00\xec\x82\x3b\x44\xb5\x01\xda\xe0\x55\x91\xe5\x57\x65\x59\xc4\x56\x2a\x28\x96\xcb\xd3\x67\x87\x1f\xc9\x47\xc6\x01\xb5\x41\xae\x36\x92\x8c\x53\xb6\xd3\x90\xba\x46\xa6\x71\x73\xde\x77\xd2\x69\xd3\x10\x58\x66\x1a\x8a\xc0\xfb\x8b\xcb\xe0\x8c\x5b\x11\x84\xe0\x03\xdf\x11\xf6\x6e\x90\xbd\xca\x31\x2b\xaf\xc6\x42\x08\xb1\x24\x96\xfe\x4a\x91\x8f\x65\xdd\xb8\x80\x37\x7d\x94\xf3\xf1\x63\xa8\xb4\xc7\x58\x39\x9b\xbc\x5a\xce\xcb\xd9\xe4\xab\xe5\xfb\x17\xcf\x5f\x7e\x78\x22\xf9\x6e\xeb\xed\xb7\x72\xd2\x6c\x73\x87\xcc\x2c\x7b\x96\xfd\xbc\x58\x64\x75\x67\x2c\x1a\x17\x1f\x29\x64\x55\x49\xc4\x60\xea\x0e\xa1\xaa\x0e\x6b\x22\x04\x13\x82\x95\x57\x3c\x2d\xb9\x10\xfc\xb1\x36\x54\x15\x93\x76\x6b\x6b\x19\x37\x34\xf0\xd0\xda\x68\x0d\x6e\x70\x3a\xb5\x52\x5d\x83\xa6\x00\x11\x83\x51\x48\x11\x14\xee\xde\x88\x6f\xe8\x16\xe4\x35\xaf\xaa\xbd\xe2\x8b\xc1\x02\xd9\xc2\x5b\x1f\x76\xac\xf7\x9b\xda\xdb\xe9\xce\x1e\x69\x38\x94\xd3\xe2\x9b\xe7\x67\xa7\xf4\xdd\xff\x84\xf8\xff\x92\xbe\xa5\xef\xe9\x9c\x26\xf4\x05\xff\xf8\xb8\x07\x50\x1d\x92\x02\x8c\x45\x96\x97\x8c\xbf\xff\xb0\x24\x21\x4a\x12\x62\x79\x5c\xcf\xa9\xeb\x36\x75\x3f\x35\x58\x1a\x1b\xb3\xc9\x9b\x7e\x58\x90\x10\xf5\xec\xb0\xc6\x29\xf8\xa0\xdf\x7b\xf0\xef\x7f\xbe\x7b\x97\x8f\x8e\xb7\xd3\xed\xdd\xaa\x18\xae\x99\xa5\x3a\x86\xde\xca\x79\xfe\x31\x06\x4e\x1f\x45\xe2\xb5\x69\x7b\xbf\x0b\x31\xdd\x47\x0f\xc6\xdd\xee\x77\xc8\xd4\x82\x32\xd2\x2e\xd6\x32\xec\xa1\x9f\x2a\x67\x7c\xac\x66\xfc\x59\x62\xf6\xcf\x6e\x3a\x3d\xcb\x3f\x4f\xe9\xa6\x77\xd9\x03\x85\xe7\xe7\xc7\x12\x4f\xfe\x45\x0c\x7a\xed\x53\x53\xff\xb8\xf8\xf1\x82\x2e\x2f\x2f\xe9\xed\xaf\x97\xbf\xfd\xc4\x8b\xf9\x27\x90\x09\x71\xfa\xa0\x3f\xe2\xf4\xfc\x3f\x30\xfe\x13\x00\x00\xff\xff\xa4\xc8\x98\x2d\xfa\x06\x00\x00" +var _runtimeSyntaxCYaml2 = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x54\xef\x6f\xdb\x36\x10\xfd\xee\xbf\x42\x53\xb3\x99\x4c\x6a\xc7\x6d\x87\x6e\xd5\x7e\x18\x83\xb7\x6e\x03\xba\xe5\xcb\x06\x04\x13\x15\x81\x22\x4f\x36\x11\x9a\x14\xc8\x53\xd2\xae\xd7\xff\x7d\xa0\xec\xcc\x86\x63\xa4\x41\xfc\xc5\xf4\xdd\x3d\xbe\xc7\x77\x77\x6e\x8d\x05\xfc\xd0\x41\x91\xa9\xd1\x48\x03\x82\xc2\x62\x94\x65\x59\x96\x12\x4e\xae\xa1\xc8\x72\x26\xc4\x94\x29\x5a\xf0\x13\x4a\xa7\x15\xfd\xb6\x39\x19\x33\xdf\x44\x34\xb4\xfc\x84\xe7\xa3\x51\xe8\x2d\xc4\x0d\x7e\x92\x19\x0d\x0e\x4d\x6b\x20\x14\x59\x2e\x44\x53\xfe\x34\xf9\xa7\xae\xca\xd9\xe4\xcd\x70\x38\x13\xa2\xc9\xb7\xa5\x1b\x05\xa9\x88\xb5\xd6\x4b\x24\xed\xfb\xc6\x02\xa9\x95\x0c\x64\x1c\x52\x5c\xf9\x80\x64\xbd\x5b\x52\x34\xff\x82\x6f\x09\x5c\xbf\xa6\x1b\x6f\x34\x45\x94\x68\x14\x29\xef\x22\x52\xc4\xd0\x2b\xa4\xde\x19\xef\x28\x5d\xab\xa1\x25\x78\x8f\x10\x1c\xb1\xde\xf1\x79\x34\x4b\x07\x9a\x8c\xb3\xc6\x01\x3f\xae\x81\xc5\x79\x62\xe1\xc4\x58\x5f\xcf\xf9\xdc\x38\x64\xdf\xd2\x8b\xd7\xf4\xea\x25\xbd\xfe\x9a\x3a\x0c\x9c\xf3\x1a\x0f\xc0\xd3\x44\xe3\x34\xe8\xed\x2d\x8d\xf7\x76\x9f\x20\xe9\x84\x35\x38\xdc\xe6\x6f\xbc\x95\x68\x2c\x50\x80\xa5\x89\x08\xe1\xa1\xe2\xd6\x07\x32\x2d\xdd\xae\x12\x40\x7b\x02\x1b\x81\x94\x8c\x40\x1a\x5a\xd9\x5b\xa4\x78\x6b\x50\xad\x1e\xba\x63\xe9\xd1\x27\x9b\xd0\xb8\x1e\xa8\x09\x20\xaf\x29\x00\xf6\xc1\xed\xa3\xba\x00\x5d\xf0\xaa\xc8\xf2\xab\xb2\x2c\x62\x27\x15\x14\x55\x75\xfa\x6c\xff\x47\xea\xb8\x71\x40\x5d\x90\xcb\xb5\x24\xe3\x94\xed\x35\x24\x83\xc9\xb4\x6e\xce\x07\xd3\x9d\x36\x2d\x81\x65\xa6\xa5\x08\x7c\x50\x2f\x83\x33\x6e\x49\x10\x82\x0f\xfc\x8e\x70\x68\x9c\x1c\x54\x8e\x59\x79\x35\x16\x42\x88\x8a\x58\xfa\x2a\x45\x3e\x96\x4d\xeb\x02\xde\x0c\x51\xce\xc7\xc7\x50\x29\xc7\x58\x39\x9b\xbc\xaa\xe6\xe5\x6c\xf2\x4d\xf5\xf1\xc5\xf3\x97\x9f\x1e\x28\x7e\xbf\x99\xc2\xb7\x72\xd2\x6e\x6a\xb7\x95\x59\xf6\x2c\xfb\x75\xb1\xc8\x9a\xde\x58\x34\x2e\x1e\x31\xb2\xae\x25\x62\x30\x4d\x8f\x50\xd7\xfb\x9e\x08\xc1\x84\x60\xe5\x15\x4f\x47\x2e\x04\x3f\xd6\x86\xba\x66\xd2\x6e\x26\x50\xc6\x35\x6d\x79\x68\x65\xb4\x06\xb7\x1d\x4a\xea\xa4\xba\x06\x4d\x01\x22\x06\xa3\x90\x22\x28\xbc\x1b\x67\xdf\xd2\x2d\xc8\x6b\x5e\xd7\x3b\xc5\x17\x1d\x04\x89\x3e\x64\x0b\x6f\x7d\xb8\x63\xfd\xb0\x6e\xbc\x9d\xfa\x6d\x2e\xad\x71\x39\x2d\xbe\x7b\x7e\x76\x4a\x3f\x7c\x21\xc4\x97\x15\x7d\x4f\x3f\xd2\x39\x4d\xe8\xab\x9d\xd2\x0d\xa6\x09\x49\x00\xc6\x22\xcb\x4b\xc6\x3f\x7e\xaa\x48\x88\x92\x84\xa8\x0e\xed\x9c\xba\x7e\xdd\x0c\xeb\xcd\xd2\x7e\xcf\x26\x6f\x86\xad\x26\x21\x9a\xd9\xbe\xc5\x29\x78\xaf\xdd\x3b\xf0\x9f\x7f\xbf\x7b\x97\x8f\x0e\xd3\xe9\xf1\x6e\x59\x6c\x5f\x99\x25\x1b\xc3\x30\xc9\x79\xfe\x7f\x0c\x9c\x3e\x88\xc4\x6b\xd3\x0d\xe3\x2e\xc4\x74\x17\xdd\xfb\x5f\xba\xfb\xec\x33\x75\xa0\x8c\xb4\x8b\x95\x0c\x3b\xe8\x63\xe5\x8c\x0f\xd5\x8c\x9f\x24\x66\xb7\x75\xd3\xe9\x59\xfe\x34\xa5\xeb\x61\xc8\xee\x29\x3c\x3f\x3f\x94\x78\xf2\x19\x31\xe8\xb5\x4f\x4d\xfd\xeb\xe2\xe7\x0b\xba\xbc\xbc\xa4\xb7\xbf\x5f\xfe\xf1\x0b\x2f\xe6\x8f\x20\x13\xe2\xf4\x5e\x7f\xc4\xe9\xf9\xd3\x19\xff\x0b\x00\x00\xff\xff\x70\x80\xff\x83\xa2\x06\x00\x00" func runtimeSyntaxCYaml2Bytes() ([]byte, error) { return bindataRead( @@ -1517,7 +1544,7 @@ func runtimeSyntaxCaddyfileYaml() (*asset, error) { return a, nil } -var _runtimeSyntaxClojureYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x53\xd1\x6e\xd3\x30\x14\x7d\xcf\x57\x58\x61\x12\x09\x23\x5d\xd9\x26\xd0\x82\x20\x9a\x0a\x93\xf6\x80\xf6\xc0\x84\x2a\xe2\x3c\xd8\xce\x4d\xea\xcd\xb1\x23\xdb\x01\x0a\xe6\xdf\x91\x9d\xd0\x46\xed\xa4\xf5\xc5\x3e\xb7\xe7\x9c\x7b\x7c\x1d\x37\x5c\x80\xdd\xf6\x90\x23\x26\xd4\xc3\xa0\x21\x8a\x6a\xb0\xc0\x6c\x1e\x21\x84\x90\xff\x5b\x92\x0e\x72\x14\x63\xbc\x48\x98\x78\x28\x0d\xab\x8a\xf4\x24\x8e\x22\x3d\x08\x30\x79\x14\x78\x2f\xd0\x4a\x49\x63\x89\xb4\x26\xe0\x0c\xb1\x09\x2f\xa8\x52\x22\xc8\x69\x62\xf5\x00\xae\x21\xc2\x40\x8a\x31\x8d\x0f\x99\x1d\x61\x5a\x4d\x54\xc9\xc5\x9e\xe3\xfd\xbf\x11\xc1\x6b\x24\x87\x8e\x82\x3e\xea\x31\x96\x73\x14\x97\x18\x67\x55\x51\x2e\xb3\xab\xea\xb4\x78\xaa\xc7\x8e\xb9\xfc\x15\x58\xe5\x75\x76\x43\xb2\xe6\x39\xf6\xe8\x9b\x5c\x94\xcb\xec\x6d\xe5\xce\x83\xd4\xbd\x19\x97\xf2\x3c\xbb\xaa\x52\xed\xc1\x75\xf6\x7d\xee\xe4\x73\xdf\xca\x1f\x4f\x24\x07\xad\xd5\xcc\xb7\xbc\xf4\x51\x82\xdb\x45\xf9\x2e\x78\xbb\xe5\x91\xe5\xce\xf3\xeb\xb6\xa3\x4a\xfc\xf7\x32\x01\x2d\x54\x0f\x9a\xd8\xd1\xf5\xc3\xc7\x53\x8c\xb3\x57\x67\x2f\x8b\x6a\x26\xbb\xdf\xf6\x60\xce\x18\x31\x96\xcb\x76\x12\x8f\x77\x1f\x46\x4e\xb7\x16\x9c\xd9\x28\x6d\x5d\x42\x79\x9b\x16\x5c\xda\x04\x5a\xd0\x69\xe1\x84\x92\xad\x6b\x84\x22\xd6\xc9\xa1\x73\x94\xb7\x35\x30\xa7\x89\xe5\x4a\x12\xc1\x7f\x4f\x17\xba\x4f\x68\x35\x97\x2d\xda\xf0\x76\x23\x78\xbb\x99\x35\xdc\xcd\xd6\x04\x4a\x3e\x49\x10\x32\x96\x68\xeb\xa3\xc4\xf1\xae\x06\xb2\x3e\xa8\x98\x47\xde\x87\xbc\x18\x2f\xf6\xd5\xe9\x53\x44\xb3\xdf\xbc\x53\x0f\x8c\x13\xb1\xda\x10\x3f\x9c\xc4\x6b\x87\x71\xb4\x8d\xbf\xfa\x3f\x97\xaf\x2f\xff\x3a\x5f\x95\xf0\x53\x70\x09\x61\x6f\x7a\xc2\xc6\x9d\x25\x34\xac\x8d\xd2\x5d\x03\x50\x07\x40\x09\x7b\xdc\x53\x34\xd8\x41\xcb\xb0\x5d\xa4\xb3\x31\xac\x54\xd7\xc1\xfc\x4d\x04\x78\x7c\xe6\xf7\x87\x47\x3e\x79\xe6\x6c\x56\xd5\xfe\xa5\x24\xf7\x77\x9f\xee\xdc\x7a\xbd\x76\x37\xb7\xeb\x2f\x9f\xd3\xbc\x88\xa3\xe8\x5f\x00\x00\x00\xff\xff\x3b\xf2\x1f\x92\xd3\x03\x00\x00" +var _runtimeSyntaxClojureYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x53\x51\x6f\xd3\x30\x10\x7e\xcf\xaf\xb0\xc2\x24\x12\x46\xba\xb2\x4d\xa0\x05\x41\x34\x15\x26\xed\x01\xed\x81\x09\x55\xc4\x79\xb0\x9d\x4b\xea\xcd\xb1\x23\xdb\x01\x0a\xe6\xbf\x23\x3b\xa1\x8d\xda\x49\xeb\x8b\xfd\x5d\xbf\xfb\xee\xbb\xbb\xb8\xe1\x02\xec\xb6\x87\x1c\x31\xa1\x1e\x06\x0d\x51\x54\x83\x05\x66\xf3\x08\x21\x84\xfc\xdf\x92\x74\x90\xa3\x18\xe3\x45\xc2\xc4\x43\x69\x58\x55\x38\xa8\x65\x7a\x12\x47\x91\x1e\x04\x98\x3c\x0a\xdc\x17\x68\xa5\xa4\xb1\x44\x5a\x13\x70\x86\xd8\x84\x17\x54\x29\x11\x24\x68\x62\xf5\x00\xae\x21\xc2\x40\x8a\x31\x8d\x0f\x99\x1d\x61\x5a\x4d\x54\xc9\xc5\x9e\xe3\xf5\xbf\x11\xc1\x6b\x24\x87\x8e\x82\x3e\xaa\x31\x86\x73\x14\x97\x18\x67\x55\x51\x2e\xb3\xab\xea\xb4\x78\xaa\xc6\x8e\xb9\xfc\x15\x58\xe5\x75\x76\x43\xb2\xe6\x39\xf6\xa8\x9b\x5c\x94\xcb\xec\x6d\xe5\xce\x43\xaa\x7b\x33\x1e\xe5\x79\x76\x55\xa5\xda\x83\xeb\xec\xfb\x5c\xc9\xfb\xbe\x95\x3f\x9e\x70\x0e\x5a\xab\x99\x6e\x79\xe9\xad\x04\xb5\x8b\xf2\x5d\xd0\x76\xcb\x23\xc9\x9d\xe6\xd7\x6d\x47\x95\xf8\xaf\x65\x02\x5a\xa8\x1e\x34\xb1\xa3\xea\x87\x8f\xa7\x18\x67\xaf\xce\x5e\x16\xd5\x2c\xed\x7e\xdb\x83\x39\x63\xc4\x58\x2e\xdb\x29\x79\xdc\x7f\x18\x39\xdd\x5a\x70\x66\xa3\xb4\x75\x09\xe5\x6d\x5a\x70\x69\x13\x68\x41\xa7\x85\x13\x4a\xb6\xae\x11\x8a\x58\x27\x87\xce\x51\xde\xd6\xc0\x9c\x26\x96\x2b\x49\x04\xff\x3d\x2d\x74\xef\xd0\x6a\x2e\x5b\xb4\xe1\xed\x46\xf0\x76\x33\x2b\xb8\x9b\xad\x09\x94\x7c\x4a\x41\xc8\x58\xa2\xad\xb7\x12\xc7\xbb\x18\xc8\xfa\x20\x62\x1e\x79\x1f\xfc\x62\xbc\xd8\x47\xa7\x4f\x11\xcd\x7e\xf3\x4a\x3d\x30\x4e\xc4\x6a\x43\xfc\x70\x12\x9f\x3b\x8c\xa3\x6d\xfc\xea\xff\x5c\xbe\xbe\xfc\xeb\x7c\x54\xc2\x4f\xc1\x25\x84\xbb\xe9\x09\x1b\x6f\x96\xd0\x70\x36\x4a\x77\x0d\x40\x1d\x00\x25\xec\x71\x4f\xd1\x60\x07\x2d\xc3\x75\x91\xce\xc6\xb0\x52\x5d\x07\xf3\x37\x11\xe0\x71\xcf\xef\x0f\x5b\x3e\x79\xa6\x37\xab\x6a\xff\x52\x92\xfb\xbb\x4f\x77\x6e\xbd\x5e\xbb\x9b\xdb\xf5\x97\xcf\x69\x5e\xc4\x51\xf4\x2f\x00\x00\xff\xff\x9a\x5d\xd4\x68\xd7\x03\x00\x00" func runtimeSyntaxClojureYamlBytes() ([]byte, error) { return bindataRead( @@ -1757,7 +1784,7 @@ func runtimeSyntaxCythonYaml() (*asset, error) { return a, nil } -var _runtimeSyntaxDYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x96\xfb\x53\x1b\x39\x12\xc7\x7f\xe7\xaf\x98\x73\x1e\xe7\x81\x32\x90\x9f\xae\xc2\x71\xb8\x92\x00\x17\x6a\x09\xb0\x09\xd9\x47\x8d\x86\x89\x3c\xea\xb1\x55\x68\xa4\x59\xa9\x65\xe3\xa4\x37\x7f\xfb\x96\x66\x6c\xb0\xb1\x79\xee\x06\x57\x59\xcf\xf6\xb7\x3f\x52\x4b\x2d\x17\x52\x01\x8e\x2b\xd8\x8a\xc4\xca\x8a\x00\x84\x1c\xb7\x56\xa2\x28\x8a\xc2\x84\xe6\x25\x6c\x45\x2d\xc6\xd6\xdb\xa2\x2d\x49\xc4\xdd\xf8\x79\x6b\x65\xc5\x7a\x05\xae\xb1\x7a\x16\x1d\x57\x60\x39\x1a\xeb\x22\xae\x45\x54\x79\x9d\xa3\xe7\x28\x8d\xae\xe7\x3b\x91\x43\x8e\x50\x82\xc6\xad\xa8\xd5\x66\x6c\x95\x36\xe8\x05\x31\xb6\x46\x1d\xda\xd9\xa1\xed\x6d\xda\xd9\xd9\xa1\x97\xc4\xd8\x59\x9b\xb1\xb3\xb8\x4b\x8c\x11\x7d\x8f\xbb\xff\x6b\x2d\x11\x60\x6c\x3d\xc0\x30\xb6\x1e\x77\xe9\x5f\x14\xe4\x5e\xd2\x77\x62\xac\x4d\x8c\xc5\xc4\x58\x42\x8c\xa5\xc4\x18\x63\xb4\x31\xf1\xf2\x82\xb6\x69\x87\x18\xeb\xd2\x16\xfd\xb7\x35\xa5\xce\x91\xab\x48\x6a\x84\x3e\xd8\x48\x49\x04\xcb\x95\x8b\xb8\x85\x48\x40\x65\x21\xe7\x08\x62\x02\x00\xd6\x1a\x1b\xe8\x37\x93\xcd\xce\x7f\xb2\x74\x35\x6e\x1f\x26\xfe\x73\xda\xa5\x50\x1e\x76\xe3\xee\x54\x75\x17\x72\x59\x2e\xd1\x9d\x08\xe5\x46\x3b\xe4\x1a\xd7\xb5\x2f\x7b\x50\x4b\x26\x9b\x9d\xd7\x29\x25\xaf\x3a\xaf\xd3\xd0\xbc\x4d\xfc\xad\xd4\xdc\x8e\xef\xd2\x6e\x38\x7b\x6f\xd3\x64\xf3\xd5\x7d\x50\x0b\x65\x38\xde\x0d\x5a\x73\x4e\x08\x43\x04\x66\xfb\x71\x3b\x81\xbd\x34\x59\xeb\xa4\xdd\xf9\xf1\xb8\x9b\x14\xfb\x87\x69\x57\x76\x5b\xf7\x12\xbe\x51\xe7\x1e\x32\x67\xeb\xe9\x0f\xe4\x6a\xcc\x29\x29\xf6\xd3\x78\xba\x83\xef\xe1\x82\x8b\x07\x07\x7c\x33\xb9\xf8\x2d\xad\x71\x78\xa7\x78\xd3\xd9\x4f\xaf\x9a\x59\xba\x4a\x73\xbd\x19\xab\xf8\xc6\x40\xce\x62\xdc\x33\x98\x8f\x65\x08\xf7\xee\xe1\xbf\xea\x26\xd5\xc9\xb2\x28\xdc\x1d\x83\x9a\x73\x1a\xd5\x87\x39\xbd\x97\xcf\x67\xd1\xbb\x01\xb7\x3c\xc7\x5b\x22\xe7\xd0\x4a\xdd\x6f\x92\x5d\xf8\x38\xe4\x36\x5c\xb2\x7f\xb7\x2e\x87\x40\x8b\xf9\x81\x99\xfc\x38\xfd\xcc\x2a\x56\x90\x4b\xae\x82\xeb\x3a\xa3\x31\xb6\x3e\xc5\xf9\x09\xc6\x23\x63\x85\x9b\x74\x79\x07\x96\xe6\xc0\x5e\x9b\xf7\x1c\x06\x70\xe2\x4a\x72\x17\xca\xbe\x26\xee\x4a\xe2\xce\x81\x45\xe2\x1e\x0d\xf5\x8c\x18\x53\xcf\x02\x3f\xa7\x9c\x3b\x08\x05\x52\xce\x31\x1f\x50\xae\xb8\x73\x54\x23\x85\x12\xa5\xf6\x40\x02\x7a\xbe\x4f\x02\x0a\xee\x15\x92\x00\x05\x7d\x8e\x40\xc2\x10\x28\x07\x04\xda\x97\x04\x17\x95\xb1\x48\x70\x81\x60\x75\xcc\x58\x6f\x8a\x5e\x74\xd4\x0d\xac\x05\x0f\xbf\x2e\xa4\xe6\xaa\x29\xd5\x98\x0a\x63\xc3\x17\x78\x3e\x98\xd6\x99\x85\x21\xd8\x60\x19\x9e\x10\x69\x34\xf5\x0d\x1a\x92\x05\xc9\xb2\xf4\xc8\x7b\x0a\x48\x96\xb5\x77\xa9\x49\x6a\xe3\x43\x03\xc1\x16\x3c\x07\x92\x7a\xc8\xad\xe4\x1a\x49\x3a\x52\xfc\xeb\x78\x96\xad\xec\xd8\x1b\xd8\x4a\x9e\x5b\x43\xa5\xbc\x90\x9a\x4a\x23\xbc\x02\xd2\x30\x22\x6d\x70\x60\xcd\x88\xb4\x57\x8a\x82\x23\x33\x04\x6b\xa5\x00\xaa\x78\x7e\xce\xfb\x40\x95\xe5\xfd\x92\x53\x65\xe5\x30\xec\x51\x65\x4d\x78\x39\x41\x50\xe5\x7b\x4a\xe6\x54\x79\x0b\x64\xa1\x20\x0b\xe8\xe7\x77\xca\x75\x46\x37\xd0\xb8\xdc\x54\x40\x6e\xc0\x2d\x08\x0a\x93\x32\x27\x87\xd6\xe7\x48\xce\x57\x60\xc9\x8d\x64\x88\x9e\x1b\xeb\x7c\x60\x8d\x96\x5f\x41\x10\x42\x59\xa9\xc0\x80\x03\xe9\xa8\xe1\x46\xeb\x81\xd0\x8e\x29\xbc\xec\x52\xd4\x95\x29\xc8\xeb\xb0\xad\x5e\x4b\x44\x70\x48\x61\xbb\xc3\xc0\x68\x20\x15\xd0\x48\xe2\x60\x16\x33\xcb\x6e\xa0\xcc\xb2\xfd\x83\xc3\xbd\x2c\xa3\x2c\xfb\x70\xbc\xfb\x79\xd2\x3c\x3c\x38\x6a\x1a\xfb\x9f\x8f\xde\x9d\x1e\x1c\x1f\xd5\x9d\x93\x8f\x7b\xa7\xa7\xbf\xcf\x8f\xf5\x27\x0b\xcc\x32\xb4\x5c\xa2\xa3\x2c\x1b\x42\x8e\xc6\x52\x96\x55\xdc\xf2\x12\x10\xac\x9b\x45\xd9\xbd\x7c\x91\xa3\xf3\xd9\x1b\x72\xf5\x34\x07\xae\x70\x60\xc3\x71\xbd\x34\xae\x97\x2d\xa0\xa0\xa1\x51\x1c\xa5\x82\x59\xcd\x13\x2b\x4b\x89\x72\x08\x51\xb0\x9a\xea\x35\xff\x84\x6a\xb9\x9e\x31\x8a\x7a\x63\x04\xca\x85\xf1\xe1\xf4\xe5\xa0\x91\xf2\x3a\xc7\x52\x3e\xe0\x96\x72\x0b\x5c\x91\xa8\xdb\x13\x9b\x66\x56\x4e\x7a\x72\xd2\x0d\xc7\xb2\xb6\x55\x46\xf7\xa9\x6e\xb9\x41\x38\xc9\xbe\x76\xe0\x6b\x65\x1f\xcc\x7c\x6d\xe1\x9b\xd9\xa1\x91\x82\x46\x41\x7e\x96\xfc\xff\xca\xf4\xc2\x25\x8a\x04\x14\x52\x83\x88\xdc\xb8\xec\x19\xb5\x64\x09\x4d\xee\xa2\xd1\xa4\x16\x93\xda\xc9\xaf\x90\x21\x55\x68\x85\x2c\x8a\x0c\x67\xc5\x3f\x35\xc9\x29\x42\x73\x0e\x7a\xc9\x7f\x8b\xe6\x00\xec\xbe\x39\x6d\x82\xbd\x77\xbc\x5f\xd7\xa7\x07\x1f\xf6\x2e\x1b\x9f\x4e\xdf\x7c\x38\xa9\x7b\xbf\xec\x1d\xed\x1e\x7f\x9c\x34\x3f\x7e\xaa\x4f\xc0\x9c\xb7\x1a\x68\x3e\xf7\x3e\x8b\x76\xeb\xcd\xfb\xd9\x1b\x04\xd1\x58\xdc\x90\x94\xa3\x85\xac\xcc\x5a\xd7\xd3\xf2\xec\x88\x3b\x97\xd5\x7c\xca\xbd\xca\xd6\xd1\x23\xd2\xf5\xaf\x63\x27\x47\xe3\xfe\xad\x8c\x0b\x88\xf6\x76\xc6\x47\xbe\x1d\xf7\x70\xfc\xe5\xba\xdb\x2f\xff\xc0\x8b\xf5\x1e\x2e\x1e\xb6\xfc\x8b\x1f\xb2\xfc\x90\x23\x54\xb8\xd0\x77\x9c\x98\x05\x9c\x3f\x58\x8b\xb1\xf6\x02\x11\x8b\x9f\x26\x26\xb5\xfb\x6f\xd7\xdd\xd7\xa3\x7f\x3e\x99\xff\x64\xa9\xff\xf4\x89\xfc\x6f\x2f\xf1\xbe\xf3\xf7\x6f\xe7\xfd\x9c\x27\x67\xed\x6f\xc9\x36\x6b\xa5\xc9\x19\x6b\xa5\xab\xcf\xaf\xb3\x9c\xd5\xe3\x6b\x4f\x76\x18\xda\x97\x40\xf1\x0f\xb9\x25\xef\x4c\x19\x5e\xf2\xab\xc4\x5e\x36\x0f\xfb\x02\xcb\xc6\xc6\x75\xff\xcf\x17\x62\x92\xa4\xd7\x64\x16\x55\x18\x5b\x5d\xbc\x5b\xab\x1b\x8f\x93\x5a\x5b\x94\x5a\x5b\x2a\xb5\xf2\x57\x00\x00\x00\xff\xff\xe6\x35\xb2\x7c\xd5\x10\x00\x00" +var _runtimeSyntaxDYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x96\x6d\x53\x1b\x39\x12\xc7\xdf\xf3\x29\xe6\x4c\x92\xf3\x40\x19\xc8\xab\xab\x70\x1c\xae\x24\xc0\x85\x3a\x02\x5c\x42\xee\x76\x6b\x34\x4c\xe4\x51\x8f\xad\x42\x23\xcd\x4a\x2d\x1b\x27\xbd\xf9\xec\x5b\x9a\xb1\xc1\xc6\xe6\x71\x37\x50\x85\x1e\x7b\xfe\xfd\x93\x5a\x6a\xb9\x90\x0a\x70\x5c\xc1\x76\x24\x56\x56\x04\x20\xe4\xb8\xbd\x12\x45\x51\x14\x26\x34\x2f\x61\x3b\x6a\x31\xb6\xd1\x16\x6d\x49\x22\xee\xc6\x2f\x5a\x2b\x2b\xd6\x2b\x70\x8d\xd5\x6a\x74\x52\x81\xe5\x68\xac\x8b\xb8\x16\x51\xe5\x75\x8e\x9e\xa3\x34\xba\x9e\xef\x44\x0e\x39\x42\x09\x1a\xb7\xa3\x56\x9b\xb1\x35\xda\xa4\x97\xc4\xd8\x3a\x75\x68\x77\x97\x76\x76\x68\x77\x77\x97\x5e\x11\x63\xe7\x6d\xc6\xce\xe3\x2e\x31\x46\xf4\x23\xee\xfe\xab\xb5\x44\x80\xb1\x8d\x00\xc3\xd8\x46\xdc\xa5\xbf\x51\x90\x7b\x45\x3f\x88\xb1\x36\x31\x16\x13\x63\x09\x31\x96\x12\x63\x8c\xd1\xe6\xc4\xcb\x4b\xda\xa1\x5d\x62\xac\x4b\xdb\xf4\xcf\xd6\x94\x3a\x47\xae\x22\xa9\x11\xfa\x60\x23\x25\x11\x2c\x57\x2e\xe2\x16\x22\x01\x95\x85\x9c\x23\x88\x09\x00\x58\x6b\x6c\xa0\xdf\x4a\xb6\x3a\xff\xc8\xd2\xb5\xb8\x7d\x94\xf8\x2f\x69\x97\x42\x79\xd4\x8d\xbb\x53\xd5\x3d\xc8\x65\xb9\x44\x77\x22\x94\x1b\xed\x90\x6b\xdc\xd0\xbe\xec\x41\x2d\x99\x6c\x75\xde\xa4\x94\xbc\xee\xbc\x49\x43\xf3\x2e\xf1\x77\x52\x73\x3b\xbe\x4f\xbb\xe1\xec\xbd\x4b\x93\xad\xd7\x0f\x41\x2d\x94\xe1\x78\x3f\x68\xcd\x39\x21\x0c\x11\x98\xed\xc7\xed\x04\xf6\xd3\x64\xbd\x93\x76\xe7\xc7\xe3\x6e\x52\x1c\x1c\xa5\x5d\xd9\x6d\x3d\x48\xf8\x56\x9d\x07\xc8\x9c\x6f\xa4\x3f\x91\xab\x31\xa7\xa4\x38\x48\xe3\xe9\x0e\x7e\x80\x4b\x2e\x1e\x1d\xf0\xad\xe4\xf2\x97\xb4\xc6\xe1\x9d\xe2\x6d\xe7\x20\xbd\x6e\x66\xe9\x1a\xcd\xf5\x66\xac\xe2\x5b\x03\x39\x8b\xf1\xc0\x60\x3e\x95\x21\xdc\xbb\xc7\x7f\xd5\x4d\xaa\xd3\x65\x51\xb8\x3f\x06\x35\xe7\x34\xaa\x8f\x73\xfa\x20\x9f\xab\xd1\xfb\x01\xb7\x3c\xc7\x3b\x22\xe7\xd0\x4a\xdd\x6f\x92\x5d\xf8\x73\xc8\x6d\xb8\x64\x7f\x6f\x5d\x0d\x81\x16\xf3\x03\xee\x42\x56\x75\xb2\x62\x6c\xe3\x7a\x74\x26\x6b\x4e\xff\x66\xfd\x54\x90\x4b\xae\x02\xd0\xfc\xa7\xab\xd1\x7f\x60\x3c\x32\x56\xb8\x49\x97\x77\x60\x69\x66\xec\xb5\x79\xcf\x61\x58\x0e\x71\x25\xb9\x0b\x65\x5f\x13\x77\x25\x71\xe7\xc0\x22\x71\x8f\x86\x7a\x46\x8c\xa9\x67\x81\x5f\x50\xce\x1d\x84\x02\x29\xe7\x98\x0f\x28\x57\xdc\x39\xaa\x91\x42\x89\x52\x7b\x20\x01\x3d\xdf\x27\x01\x05\xf7\x0a\x49\x80\x82\x3e\x47\x20\x61\x08\x94\x03\x02\xed\x4b\x82\xcb\xca\x58\x24\xb8\x44\xb0\x3a\x66\xac\x37\x45\x2f\x3a\xea\x16\xd6\x82\x87\xaf\x0b\xa9\xb9\x6a\x4a\x35\xa6\xc2\xd8\xf0\x0f\x3c\x1f\x4c\xeb\xcc\xc2\x10\x6c\xb0\x0c\x0f\x8b\x34\x9a\xfa\x06\x0d\xc9\x82\x64\x59\x7a\xe4\x3d\x05\x24\xcb\xda\xbb\xd4\x24\xb5\xf1\xa1\x81\x60\x0b\x9e\x03\x49\x3d\xe4\x56\x72\x8d\x24\x1d\x29\xfe\x6d\x3c\xcb\x56\x76\xec\x2d\x6c\x25\xcf\xad\xa1\x52\x5e\x4a\x4d\xa5\x11\x5e\x01\x69\x18\x91\x36\x38\xb0\x66\x44\xda\x2b\x45\xc1\x91\x19\x82\xb5\x52\x00\x55\x3c\xbf\xe0\x7d\xa0\xca\xf2\x7e\xc9\xa9\xb2\x72\x18\xf6\xa8\xb2\x26\xbc\xa7\x20\xa8\xf2\x3d\x25\x73\xaa\xbc\x05\xb2\x50\x90\x05\xf4\xf3\x3b\xe5\x3a\xa3\x5b\x68\x5c\x6e\x2a\x20\x37\xe0\x16\x04\x85\x49\x99\x93\x43\xeb\x73\x24\xe7\x2b\xb0\xe4\x46\x32\x44\xcf\x8d\x75\x3e\xb0\x46\xcb\x6f\x20\x08\xa1\xac\x54\x60\xc0\x81\x74\xd4\x70\xa3\xf5\x40\x68\xc7\x14\xde\x7b\x29\xea\xca\x14\xe4\x75\xd8\x56\xaf\x25\x22\x38\xa4\xb0\xdd\x61\x60\x34\x90\x0a\x68\x24\x71\x30\x8b\x99\x65\xb7\x50\x66\xd9\xc1\xe1\xd1\x7e\x96\x51\x96\x7d\x3c\xd9\xfb\x32\x69\x1e\x1d\x1e\x37\x8d\x83\x2f\xc7\xef\xcf\x0e\x4f\x8e\xeb\xce\xe9\xa7\xfd\xb3\xb3\x5f\xe7\xc7\xfa\x93\x05\x66\x19\x5a\x2e\xd1\x51\x96\x0d\x21\x47\x63\x29\xcb\x2a\x6e\x79\x09\x08\xd6\xcd\xa2\xec\x5d\xbd\xd3\xd1\xc5\xec\x0d\xb9\x7e\xb0\x03\x57\x38\xb0\xe1\xb8\x5e\x19\xd7\xcb\x16\x50\xd0\xd0\x28\x8e\x52\xc1\xac\xe6\xa9\x95\xa5\x44\x39\x84\x28\x58\x4d\xf5\x9a\xdf\x47\xb5\x5c\xcf\x18\x45\xbd\x31\x02\xe5\xc2\xf8\x70\xfa\x72\xd0\x48\x79\x9d\x79\x29\x1f\x70\x4b\xb9\x05\xae\x48\xd4\xed\x89\x4d\x33\x2b\x27\x3d\x39\xe9\x86\x63\x59\xdb\x2a\xa3\xfb\x54\xb7\xdc\x20\x9c\x64\x5f\x3b\xf0\xb5\xb2\x0f\x66\xbe\xb6\xf0\xcd\xec\xd0\x48\x41\xa3\x20\x3f\x4b\xfe\x6f\x65\x7a\xe1\x12\x45\x02\x0a\xa9\x41\x44\x6e\x5c\xf6\x8c\x5a\xb2\x84\x26\xa3\xd1\x68\x52\x8b\x49\xed\xe4\x37\xc8\x90\x2a\xb4\x42\x16\x45\x86\xb3\xe2\x9f\x9b\xe4\x14\xa1\xb9\x00\xbd\xe4\x17\x47\x73\x00\xf6\xde\x9e\x35\xc1\xde\x3f\x39\xa8\xeb\xb3\xc3\x8f\xfb\x57\x8d\xcf\x67\x6f\x3f\x9e\xd6\xbd\xff\xed\x1f\xef\x9d\x7c\x9a\x34\x3f\x7d\xae\x4f\xc0\x9c\xb7\x1a\x68\x3e\x23\xaf\x46\x7b\xf5\xe6\xfd\xd7\x1b\x04\xd1\x58\xdc\x92\xaa\xa3\x85\x5c\xcd\x5a\x37\x93\xf5\xec\xc8\x5d\xd9\x3a\x7a\x42\xba\xfe\xff\xd8\xc9\xd1\xb8\x7f\x27\xe3\x02\xa2\xbd\x9b\xf1\x89\x6f\xc7\x03\x1c\x7f\xbd\xe9\xf6\xeb\x5f\xf0\x62\x7d\x80\xcb\xc7\x2d\xff\xf2\xa7\x2c\x3f\xe4\x08\x15\x2e\xf4\x3d\x27\x66\x01\xe7\x37\xd6\x62\xac\xbd\x40\xc4\xe2\xe7\x89\x49\xed\xfe\xfb\x4d\xf7\xf5\xe8\xef\xcf\xe6\x3f\x59\xea\x3f\x7d\x26\xff\x3b\x4b\xbc\xef\xfe\xf9\xdb\xf9\x30\xe7\xc9\x79\xfb\x7b\xb2\xc3\x5a\x69\x72\xce\x5a\xe9\xda\x8b\x9b\x2c\xe7\xf5\xf8\xfa\xb3\x1d\x86\xf6\x15\x50\xfc\x53\x6e\xc9\x7b\x53\x86\x97\xfc\x3a\xb1\x97\xcd\xc3\xbe\xc0\xb2\xb9\x79\xd3\xff\x8b\x85\x98\x24\xe9\x0d\x99\x45\x15\xc6\xd6\x16\xef\xd6\xda\xe6\xd3\xa4\xd6\x17\xa5\xd6\x97\x4a\xad\xfc\x11\x00\x00\xff\xff\xb7\xae\x06\xa1\xeb\x10\x00\x00" func runtimeSyntaxDYamlBytes() ([]byte, error) { return bindataRead( @@ -1857,6 +1884,26 @@ func runtimeSyntaxElixirYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxElmYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x92\xdd\x4a\x33\x31\x10\x86\xcf\xf7\x2a\xc2\x52\x68\xfb\x41\x7a\x01\x0b\x9f\x22\xfe\x80\x07\xd2\x13\x0f\x16\x3b\x15\xd2\xdd\xd9\x36\x98\x9f\x65\x33\x05\xad\xe3\xbd\x4b\x52\xaa\xb5\x5b\x29\x08\x3a\x81\x39\x78\x67\x92\xf7\x99\x30\x8d\x36\x48\x2f\x2d\x16\x02\x8d\xcd\xb2\x1a\x09\x2b\x2a\x32\x21\x84\x88\x25\xa7\x2c\x16\x22\x07\x98\xa0\xb1\x83\x3c\xcb\xba\xb5\xc1\xb0\xad\x4b\x11\x48\x11\x5a\x74\x94\x5a\x16\x23\x15\x58\x19\xad\x02\x57\x2a\x20\xa3\x89\xe9\xb9\xf5\x41\xbb\x25\xeb\x86\xb5\x6d\x7d\x47\xac\x1d\x1b\x24\xb6\xbe\x5e\x1b\x64\xdf\x70\x52\x69\x85\x8e\x23\x09\x8f\x01\x16\xf9\x11\x87\x11\xc0\x7f\x06\x28\x18\x40\x9e\x8d\x77\x1d\x5b\xf8\x64\x3f\xbb\x90\x0f\xf3\x98\x94\xdc\x00\xd4\xf3\x7f\xfb\x2f\xe9\x1a\x1d\xe9\x46\x63\x57\x88\xfc\x71\x34\x53\x72\xf3\x6d\x6f\xe5\x5d\x20\xe5\x68\x12\xa8\xd3\x6e\xb9\x1d\x37\x46\x20\xd5\xa5\x61\xd3\xc9\x3f\x74\x74\xf5\x11\x35\x3c\xe9\x36\xa1\x01\x4c\x3e\xd5\xbd\x1f\xdc\xc5\xbe\x63\x8b\x95\x56\xe6\x72\xa5\xba\xaf\x57\xfb\x54\xe2\x08\x56\x1f\xe9\xcf\x70\x7a\x34\xc3\x43\x98\xe1\x2f\xb2\xd8\xb4\x24\x3d\x06\x29\x0f\x21\x06\x27\xec\xc8\xd7\x3e\x2e\xdb\xfd\xf4\x6a\xca\x65\x59\xf2\xcd\x6d\x79\x77\x3d\x2e\xce\x4f\x7a\x01\xbc\xf6\xdc\x24\xc0\xdb\xcf\x0d\xdf\x03\x00\x00\xff\xff\x24\x7c\xac\xca\x9d\x03\x00\x00" + +func runtimeSyntaxElmYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxElmYaml, + "runtime/syntax/elm.yaml", + ) +} + +func runtimeSyntaxElmYaml() (*asset, error) { + bytes, err := runtimeSyntaxElmYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/elm.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxErbYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x55\x7f\x6f\xdb\xc8\x11\xfd\xbb\xfe\x14\xb4\x22\xd5\xbb\x72\x25\xb7\xff\x04\xa8\xce\x67\xe6\xda\x28\x45\x80\x6b\xdc\x02\x01\x9a\x1e\x7f\x28\x4b\x72\x48\x2d\xb4\xdc\xa5\x77\x97\xb2\x75\x79\xfe\xee\xc5\x52\xb2\x65\xc7\x6e\x0c\x7a\x21\xbc\x19\xce\xbc\xd9\x79\x33\xac\xa5\x22\xbf\xeb\x68\x11\x91\x2d\x4e\x4e\x2a\xf2\x54\xfa\x45\x74\x12\x45\x51\x14\x6c\x5a\xb4\xb4\x88\x46\x69\x3a\x27\x5b\x8c\x91\xa6\x73\xbb\xf6\xad\x1a\x8f\x4e\x4e\x6c\xaf\xc8\x2d\x06\xcf\x59\x44\xd6\x1a\xbb\x88\x46\x97\x49\x7e\x9a\xcd\xa7\xf1\xd5\xe8\x60\x70\xbb\xb6\x30\x6a\xee\x45\xb3\x88\x46\x2c\x96\xfc\x32\xb9\xc8\x62\x26\x58\x51\x58\x94\xd6\xe8\x5d\x8b\xaa\xb2\xe4\x1c\xba\x4e\x91\x87\x25\x01\xeb\x65\xa9\x08\x4e\x56\x84\xbe\x92\x86\xc7\x28\x98\x70\xc4\x6a\xa3\x3d\x8f\x51\x31\x09\xc3\x21\x1b\x28\x53\x6e\x6e\x7a\xe3\x09\x96\xc7\x28\x05\xd3\x5b\xe1\xd0\x79\x69\x34\x47\x49\xda\x93\x45\x29\x3d\xa1\x34\xac\x22\x28\xa8\xc6\x9a\xbe\xe3\xa8\x98\xf0\x82\x29\xe9\x86\x78\x20\x05\xf2\x42\x2a\x87\x5a\x43\x0a\x65\x1a\x48\x0b\x05\xcf\x41\x2d\x2b\xa8\xe2\x31\x6a\x49\xaa\x72\xe4\x51\xcb\x86\x95\x62\x48\x82\xde\x12\x47\xa0\x85\xda\xd8\x16\x4c\xf2\xb8\xb6\xa2\x25\x0c\x67\xf0\x5e\x27\x7f\x99\xbd\xcd\xb0\xb6\x90\x90\x6d\x03\xa9\x59\xd7\x7b\x38\x8e\x4d\x51\x61\x43\xbb\x86\x34\x94\x28\x48\x41\x51\x43\xba\x82\x92\x4c\x6f\x78\x8c\x56\x30\xa9\xd1\xc1\x6e\x38\x5a\xd2\x3d\x93\x9e\xda\x80\x93\x67\x02\x64\x39\xb4\xd8\x42\x1b\xb6\xcf\x05\x57\x5a\xd9\x79\x0e\xc3\x14\x3a\xcf\x86\x4a\x31\xdc\x44\xef\xbb\xde\x73\x74\x4c\x58\xd1\x42\x96\xbe\xb7\x84\xf0\x98\x26\x5c\x3d\x8f\x71\x03\xcb\x3a\x78\xf4\xc5\x8e\xc3\x31\x6f\xe5\x86\x78\x0c\x27\xda\x0e\x8e\x58\x39\x14\xab\xa8\xf4\x1c\xae\x15\x4a\xc1\x99\xde\x96\x04\xd7\x09\x0d\xe7\xad\xd1\x0d\x5c\xcf\x0a\x74\x68\x5b\x61\x77\x1c\x9e\xee\xbc\x08\xdd\xf4\xb2\x25\x78\x2b\xca\x0d\x7a\xa6\x78\x8c\xad\xb0\xd8\xca\x8a\x0c\x6e\x0b\xcb\x59\x34\x9f\xe2\x8a\xbf\xaa\x99\x39\xdd\x79\xd2\x15\x55\xcf\xc4\x53\x98\x6a\x87\x4a\x6e\x11\xa4\x88\x35\x89\x8a\x51\x68\x7f\x6d\x4c\xe8\xb7\x97\x5e\x11\xbc\x28\xc2\x79\x70\xc6\x9a\x91\x08\x4d\xb4\x83\x17\x7f\x25\x6b\x67\xa9\xb3\xa6\x7c\x96\x69\x7f\xa3\x70\x7e\xa7\xe8\x35\xa2\x1d\x95\x52\xa8\x45\x34\xfa\x63\x92\xff\x94\x24\x0b\xd7\x89\x92\x16\x59\x96\x4d\x7f\x7a\x5e\xcc\x22\x1a\x25\x8b\x9f\xb3\x07\x50\x56\xa4\xbd\xac\x25\x85\x99\x61\x42\x79\x14\x4d\x69\x94\xb1\x58\x93\x6c\xd6\x1e\x6b\x4b\x35\x64\xf5\xa0\x0b\xa3\x9b\x8a\x5c\x89\x30\x8e\x30\xba\x54\xb2\xdc\xc0\xe8\xda\x94\xbd\x83\xd1\xca\x88\x0a\x46\xb7\xa6\x77\x64\xb6\x64\xe1\xe4\xef\x0f\xad\xb1\xe5\x9e\x3e\xbc\xb0\x0d\x79\x84\x69\xc7\x56\xa8\x9e\x70\x2b\x2b\xbf\xe6\x3f\x3f\x90\x2a\x8d\x76\x5e\x68\x3f\x77\xde\x4a\x1d\xe6\x35\x1d\x25\x79\x3a\xca\xa6\xe9\xe8\x85\x8f\xee\xdb\x62\xcf\x3e\x96\xfc\x4d\xf2\xe7\xd9\x5f\x7f\x99\x7d\xc8\xbe\xbd\xfd\xd3\xdb\xfb\xff\x13\x6f\xde\xdb\x70\x0d\xac\xf6\x1d\x0b\x8a\x5b\xfb\xc3\x8f\x46\x7a\x94\x6b\x6b\x5a\xe2\x8b\x8b\x8b\x24\x8f\xfe\x90\x9d\x1f\x63\xb4\x2d\x69\x1f\x36\xcb\xe9\x6c\x36\x3f\x8f\x67\xb3\x57\x1a\x76\x79\xfa\xfe\xfa\xef\x9f\xff\xfb\xaf\xe5\xfc\xfc\xd8\x9c\x8a\x6a\xd1\x2b\xbf\xdf\x50\xe1\xcf\x79\x61\x87\x48\x93\xd1\x23\x46\x3a\x48\x6b\x72\x75\x44\xf6\x6b\x2d\x4a\xb2\x93\x97\x69\x26\x98\x3c\x86\xb7\x83\x28\x7f\xd0\x77\x2f\x3c\x1d\xb8\xa7\x69\xc1\xfe\xb6\xfc\xc7\xc7\x4f\x58\x7e\x7a\x0f\xa1\xa4\x70\x10\xba\x42\x41\x8d\xd4\x28\x2c\x89\x0d\x4a\xe1\x08\xa5\x12\xce\xa1\xa2\x3a\xfc\x4b\x4d\x55\x9a\xc6\xa8\x0c\x48\x39\x0a\x87\xac\x11\x16\x04\x69\x17\x06\xb8\x16\x01\xae\x8d\x85\xac\x21\x35\x5a\x53\xf5\x8a\xa0\xe9\xce\x43\x4b\x05\x6d\x3c\x8c\x85\xa5\xca\xc0\x92\x2b\xfb\x30\xf3\xde\xee\xc2\xd9\x5b\x0d\x47\xaa\x86\xeb\xbb\x30\x33\x6b\xd2\xf0\xb6\x27\xf4\x3a\xa4\xef\xb5\x0a\x2b\xb9\xd7\x5e\x2a\xdc\x06\xe3\xed\x5a\x2a\xc2\x2e\xec\x40\x9e\xa6\xc5\x4b\x25\xcf\xb7\x62\xd0\x43\x9a\x8e\xf1\x0e\xef\xde\xf1\x38\x4d\x8b\xe4\x97\xd9\x6f\xd9\xf9\x5e\x1e\xbf\xad\xc4\xec\xf7\x6c\xfa\xf0\x66\x2b\x1a\xd2\x5e\x1c\x24\xc4\x92\x28\xca\x90\xf3\xc5\x83\x6f\x76\xfe\x7a\x96\x56\x94\xd6\x1c\xee\x74\xb5\xfa\xf0\xf1\xd7\xe5\x6a\x85\xd5\xea\xd7\x8f\x9f\x96\xab\xd5\x53\x66\x85\x0d\x93\x74\xcc\x72\x7a\xc1\x92\xfc\x22\x03\x4b\xd3\x34\xbd\xe0\x7c\x7a\x91\x48\xd3\xde\x65\x53\x4c\x6c\x9a\x7e\x63\x49\x7e\x7f\x30\xde\x73\x3e\x4d\xd3\xfb\x83\xf9\x79\xbc\x42\xf5\xe1\x83\xf8\x35\xc9\xbf\x66\xd3\xaf\x98\xdc\xa5\xe9\xb7\xf0\x66\x78\xe1\x47\x83\xc4\x86\x49\xda\xc7\x4f\x47\x21\xc1\x08\x93\xe4\xdf\xff\xc9\xe2\x27\x01\x1e\x11\x96\xe4\x3c\x20\xfc\x80\x5c\x26\xf9\x55\x36\xbd\x7a\xb4\x27\x49\x9e\x05\x7b\xf6\x88\x8c\x93\x7c\x1c\x90\xf1\x23\x92\x27\x79\x1e\x90\xfc\x80\x9c\x86\x4f\xf3\xf4\xf4\x79\x39\x8d\x25\xd2\x8b\x68\xf4\xe6\x95\x32\x1e\x6c\x67\x2c\xc9\xcf\x0e\xd4\xcf\x38\x9f\x9e\x61\x92\xdc\xdc\x66\xcf\x79\x0f\xc0\x53\xda\x37\xb7\xd9\x91\xf5\x60\x7d\x4a\x7a\x00\x9e\x72\x1e\x80\xa7\x94\x6f\x6e\xb3\xef\x18\x1f\x77\xc1\x9b\x24\xff\x96\xcd\xa7\x63\xbc\x19\x7f\x67\x9c\xef\xcb\x0a\x3e\x47\xa7\xa3\xd7\x0b\x1d\xbd\x5c\x0e\x97\xb3\xf8\x2c\x5e\x5e\x7f\x3e\x8b\xbf\xdf\x12\xf9\xf2\xfa\xf3\x0f\xf6\x84\x37\x55\xd0\x25\xfb\xf2\xe5\x0b\x3e\x5f\xbf\xbf\xc6\x87\x8f\x5f\xfe\xb9\x44\x9a\xc6\xfb\x87\x8f\x4e\xfe\x17\x00\x00\xff\xff\x6d\x99\xea\xb9\x6e\x09\x00\x00" func runtimeSyntaxErbYamlBytes() ([]byte, error) { @@ -1877,6 +1924,26 @@ func runtimeSyntaxErbYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxErlangYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x56\x5f\x8f\x13\x37\x10\x7f\xcf\xa7\x88\x72\x54\xec\xd2\x26\x07\xb4\x52\xcb\xbd\x44\x27\x0a\x2a\xaa\xca\x3d\x40\x55\x44\x7c\xb2\xbc\xf6\xec\xc6\x3a\xaf\xbd\x1d\xcf\xde\x25\x30\xf9\xee\x95\xbd\xd9\x5c\xe0\x10\x50\x2a\x35\xd2\xee\xac\xff\x8c\x67\xe6\xf7\x1b\xcf\xa4\xb6\x0e\x68\xdb\xc1\xd9\x14\xd0\x29\xdf\x4c\x26\x06\x08\x34\x9d\x4d\xa6\xd3\xe9\x34\xad\x7a\xd5\xc2\xd9\x74\x26\xc4\x02\xd0\xdd\x9b\x4d\x26\xd8\x3b\x88\xc3\xfa\x7c\x6a\x0d\x78\xb2\xb5\x05\xcc\x7b\xaa\xd5\xf9\xfc\xed\xe5\xea\xe1\xfc\x89\x9a\xbf\x93\x97\x0f\x84\xa8\x66\x79\xe7\xc9\xf4\x15\xc0\xd9\x74\x4d\xd4\x9d\x9d\x9e\x0e\xb6\x16\x01\x9b\x53\x13\xf4\x29\x42\x0d\x08\x5e\x83\x6c\x95\xef\x95\x3b\x35\x8a\x94\x4c\x6e\xc5\xc5\x9a\x5a\xb7\xb7\xa5\x83\x8f\xa4\x3c\x2d\x7c\xdf\x56\x07\x83\x0f\xe7\x4f\x2e\xbf\x2f\x84\x58\x0c\x5f\xe5\xb2\x80\xf9\x72\xfc\x3e\xd8\xff\x9c\xf6\xfb\x47\x3f\x3c\xde\x09\x71\xb2\x52\xf3\x77\xe7\xf3\xb7\x59\xf5\x53\x8a\x55\x08\x6e\x50\x2b\x08\x7b\xe0\x5a\xb9\x08\xe5\x17\x4c\xdc\x13\x42\x88\xa5\x10\xaf\xde\x3f\xda\x7d\x0b\x14\xd6\x13\x06\xd3\x6b\xb2\xc1\x1f\x83\x11\x49\x11\xb4\xe0\x69\xef\x91\xaa\x09\x90\x95\x37\xe9\x51\x2e\x06\xae\xd2\xa0\x82\xc6\x7a\xae\x7c\x20\xae\x02\x72\x15\x1d\x57\x11\xb9\xda\x04\x64\xad\x22\xb0\x56\xa4\xd7\xac\x83\x37\x6c\xec\x35\x83\x37\x5c\xf7\x9e\x6d\xcd\x0e\x88\x93\x5e\xa8\x39\x20\x07\x04\x17\x81\x11\x34\xd8\xeb\x24\x5b\x26\xdc\xf2\xcd\x1a\x3c\x6f\x02\x96\xdf\xc8\x74\xab\x34\x86\x0f\x58\xee\x10\x3a\x0c\x3a\x87\x35\x2f\xda\x60\x7a\x07\x0c\x9b\x2e\x20\x25\xeb\x01\x0d\x5b\xaf\x5d\x6f\x60\x94\xd2\xd9\x8a\x0d\xd4\xd6\x03\xf7\xde\x40\xcd\xb6\x1e\xde\x79\x90\xfd\x06\x6f\x6c\x9a\x61\x70\xe9\x85\x18\x90\x6f\x14\x7a\xeb\x9b\x63\x06\x6f\xd3\x79\x91\x3d\xcb\x5e\x2c\x57\x43\x56\xc8\xa3\xb4\xf8\x6c\x94\xad\xf2\xe3\xd4\x31\x63\x1d\x68\xab\xc6\x0c\x82\x0d\xc9\xca\x7a\x85\x5b\xde\x0b\x1b\xae\x41\x73\x0b\x31\xaa\x06\xe4\xdf\x3d\xf4\x20\xd3\x45\x60\xb2\x2d\x14\xb2\xf7\x96\x38\x92\x6a\xbb\x92\x55\x15\x59\x75\x9d\xdb\xb2\xa2\xd0\x16\x92\xc2\x78\x56\xfa\x74\x36\x52\xb9\x3f\x55\x16\x9d\x42\x62\x0a\x32\xed\x4c\x12\x36\x36\x92\xf5\xcd\x61\xa2\x76\x41\xe5\x1d\xd6\x13\x34\x80\xbc\x3f\x22\x49\x02\x6c\xd3\x51\x54\xc8\x68\xdf\x01\x47\xc2\xa4\x7a\x6b\x64\x4b\x30\xac\x68\xb0\x8e\xf5\x1a\xf4\x95\x2c\x82\x33\x52\x07\x03\x9c\x88\x84\x18\xf3\xa0\x64\xa3\x08\xd8\x80\x03\x02\xb9\xe7\xd5\x40\x1b\xbc\xa5\x80\x6c\x6c\xd4\xc1\x7b\xd0\x24\x7d\x52\x05\x97\xb3\x9b\x01\x53\x96\x0e\x84\xc1\xc6\x12\x67\x77\x3f\x19\xf2\x32\xad\x05\xe4\x46\x61\x95\x20\xd4\xc1\x39\xd0\xc4\x0d\x10\x37\x18\xfa\x4e\x3a\x50\x06\x90\xd7\xca\x11\xef\xa3\x3d\x3e\xe9\x10\x96\x0d\x49\xca\x22\x47\x76\x58\x2f\xd9\x46\x59\x28\x97\xf2\x3f\x83\x77\xe0\x8f\x06\x5c\x38\x55\x08\x50\x7e\xf0\x31\xdd\xa3\x7c\x6d\x47\x53\x9c\x51\x6d\x55\x97\x1e\x79\x05\x5b\x1e\xea\x04\x77\xd6\x70\xce\xef\x11\xaf\xc1\xc6\x3e\xdb\x0f\x77\x86\xa9\xef\x1c\xb0\x03\xdf\xd0\xba\x64\x67\xfd\x55\x3e\x32\x45\x50\x7c\xda\xa1\x0f\xc9\x1e\xdc\x1a\xbd\x39\x58\x45\xa8\x87\xa3\x4b\x76\x41\x99\x91\x9b\x56\x5d\x81\x4c\x6b\xc9\xdb\x22\x81\x98\xe0\x28\xb9\x55\x1b\x6e\xad\xe7\x61\x9b\x4c\x2a\x60\x78\xcf\x63\x91\xd9\x2b\x97\x9c\x44\x4c\xe2\x86\x43\x07\x5e\x0e\xf1\x59\x33\xb2\x95\x4d\x17\x52\xbb\x90\x8a\x50\x68\xdb\x54\xad\xf6\x19\x90\x24\x61\x70\xb7\x84\x74\x78\x30\xb4\xc7\xa8\x90\xb5\x53\x0d\x4b\xeb\xeb\xc0\x10\x4b\xee\x7a\x6c\x0e\x79\xd5\xf5\x29\xac\xc6\x46\x02\x2c\xc0\x94\x4b\xc6\xd0\x7b\xc3\x11\x5c\xcd\x11\x68\xcc\xae\x21\xa9\x3b\x75\xe3\x0b\x99\xf1\x94\x63\x3e\xca\xd0\x11\x8f\xc4\x2f\xd3\xc5\xa3\x04\xa5\x8e\x4c\xd8\x7b\x3d\x00\x76\x9b\x21\x83\x9b\xbd\xcf\x87\xf4\x7e\xb4\x9d\xea\x23\x82\x8d\xdf\x5a\x1e\x3f\x6a\x84\x27\x89\xc6\xb1\x9c\x6c\xdb\x2a\xb8\xa1\x0f\xa7\x5f\x24\x85\xa9\x19\xdc\x9f\x1d\xa6\xc0\x9b\x0f\x27\xe2\x95\xed\x72\xfd\x11\x62\x71\x3b\x3b\x34\xf4\xe9\xea\x72\x72\x32\x3d\xfa\x1d\xf5\xb3\x7d\xe9\x7a\xba\x56\xa9\xa9\x7d\xb7\x98\x7d\xe5\xce\x64\x68\xa5\xaa\xda\x23\x5d\xdf\x17\x42\xe4\x89\xcb\x7f\xa3\x5d\xac\x1e\xce\x7f\xbe\x7c\xff\xe3\x8e\x37\xab\xf3\xf9\x73\x35\xaf\x73\xc7\x7e\xbc\xe3\xfe\x78\xfc\xd3\x8e\xff\x3c\x1e\xff\xb2\x2b\xef\x34\xe5\xe1\x4a\xdc\x05\x4c\xcc\x3e\x46\xec\x78\xe6\x73\x90\x4d\xbe\x1a\xae\xff\x84\xd6\xff\x0a\x56\x9b\xff\x53\xdc\x05\x49\x14\x42\x3c\xb8\x03\x94\x78\x20\x44\xf9\x05\x58\x28\x98\xd4\x47\x8b\xd7\x17\xbf\x5e\xf0\xf3\x17\x6f\xfe\x78\xc6\x7f\x5d\xbc\x7c\xfd\xfc\xc5\x1b\x7e\x79\xf1\xfa\x19\xff\x76\xfe\xf4\xf7\xf2\x6c\x39\xfb\x27\x00\x00\xff\xff\x80\xeb\x8d\x34\x8b\x0a\x00\x00" + +func runtimeSyntaxErlangYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxErlangYaml, + "runtime/syntax/erlang.yaml", + ) +} + +func runtimeSyntaxErlangYaml() (*asset, error) { + bytes, err := runtimeSyntaxErlangYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/erlang.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxFishYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x55\x5b\x73\x54\x37\x12\x7e\xf7\xaf\x38\x8c\x5d\xcb\x0c\xec\x78\x81\x05\x6a\xd7\x7b\x71\x52\x24\x54\xe5\x21\xe1\x25\x0f\xae\x58\xc6\xd1\x48\x7d\x46\xe2\xe8\x86\xd4\x9a\xb1\xc3\xc7\x7f\x4f\x49\x33\x36\x60\x28\x82\xcb\xba\x4c\xf7\xd1\xd7\xdd\x5f\xb7\x5a\xa3\x75\xc4\xd7\x89\x4e\x86\xd1\x16\x73\x70\xa0\x89\x49\xf1\xc9\xc1\x30\x0c\x43\xd3\x05\xe9\xe9\x64\x98\x09\x71\xdc\xf4\x47\xb3\xae\x30\x24\x35\xe5\x93\x61\xf6\xfa\xf0\xde\xf1\x83\x7f\xcc\x29\x6c\x86\x87\x8b\xd3\xf6\xc5\x7c\xc0\xd1\x62\x76\x70\x90\xab\xa3\xb2\x83\x19\x86\xc3\xe1\x97\xea\x57\x94\x4b\xff\xbd\x1c\x54\x0c\x85\x65\xe0\x0e\xbc\x3a\x7f\xb4\xfc\xf7\xc5\x43\x21\x56\xb3\x83\xdb\xef\x5f\xc4\xa0\x2d\xdb\x18\xa4\x2b\x83\x0c\xba\x1d\xe1\x1c\xdd\x30\xba\xb8\xdd\xa3\x14\x96\x4c\x9e\x6e\x60\xe6\x32\x68\xac\x68\x6d\x03\x56\x99\xe4\x04\x25\x0b\xa1\x9d\xb3\xa1\x12\xc8\x15\x02\x05\x8d\x31\x66\x8c\x35\xa8\x86\x0e\x3b\xc2\x06\x84\xc8\x88\x19\x99\xb8\xe6\x80\x42\x8e\x14\xa3\x18\x3b\x32\xca\xd6\xb2\x32\xd8\x1a\xeb\x68\xd1\x7d\xdc\x1b\x4f\xa4\xac\x74\x27\xc3\x6c\x2e\xc4\x3b\x08\xf1\x1e\x42\xcc\x21\xc4\x02\x42\xfc\x07\x42\x5c\x40\x88\x73\xfc\x0e\x21\x84\x80\x10\x47\xf8\x2f\xfe\x8f\xd7\xb8\x87\xff\xe1\x6f\x10\x02\x8b\x8f\xa2\x7d\x69\x8b\x19\x54\xf4\x5e\x06\x7d\xc3\xd1\x2e\x29\x3d\xb0\xd5\x1a\x2b\xdb\x82\x73\x51\x4d\xbb\xe0\x52\xb4\x81\xb1\xaa\xd6\xb1\x0d\x50\x1a\x2a\xd6\xc0\xd8\x63\xdc\xac\xce\x86\xc6\x80\x4f\x8e\x98\xa0\x6d\x36\x6d\x2a\x20\x65\x22\xc8\x5b\x06\x6d\xa4\x03\x5d\x91\x02\x5d\x59\xc6\xb8\x46\x4b\x62\x9f\x2e\x55\x0c\xa3\xdd\x09\x2e\xad\xa6\xc0\xbb\x6d\x92\x6b\xca\xfb\x6d\x8e\x3e\xed\xc5\xd9\xae\x0d\x7f\x22\xa9\x49\x4b\xa6\xcb\xbd\x7d\x1b\x43\xe9\x72\xdd\xd9\xa7\xdd\x52\xe4\x86\x6e\xb3\x51\x60\xc8\x25\x18\x5b\x38\xe6\x6b\xbc\x89\xab\x02\x2f\xd9\xc0\x5b\x4f\x7a\x85\x40\x57\xac\x11\x13\x05\xa4\x98\x34\x52\xa6\x8d\x46\x2a\x75\x85\x54\x1b\x70\xda\x6a\x64\x19\x74\xf4\xc8\x24\x35\x0a\x71\x1b\x97\x2a\xba\x98\x51\x62\xcd\x8a\xd0\xca\xa6\x16\x14\xce\x36\xac\xc1\x59\x26\x34\xae\x51\x9d\x6d\x8c\x54\x2f\xcb\x84\x8d\xcc\xa4\x17\x77\x6b\xd2\xfb\x18\x06\x67\x43\xbd\xfa\x4a\xb6\xe6\x6b\xd8\xf5\xe2\x54\x6e\x27\xac\x64\x31\xd0\xb2\x13\x1a\x34\x84\xd8\xbe\x7b\xf4\xf7\xa7\xef\xd7\x99\x12\x26\xeb\x5c\x9f\xa4\x73\xb7\x1a\x47\xa5\x85\x3c\x11\x52\xd7\x17\xd2\x28\x06\x2c\xf3\x67\xbe\x64\xaa\x6c\x5d\xf9\x5a\xd9\xc8\x42\xcf\x9f\x36\x27\xfa\x2d\x86\x92\x0c\x65\x54\x0c\x50\x66\x9d\x13\x94\xf1\x51\x43\x99\xb8\x6d\x92\x1c\x23\x43\x4d\xa5\xfa\x5e\x3d\x50\x09\xaa\x24\x67\x19\xaa\x32\x5a\x26\xa1\x35\xf4\xd8\x2a\xa8\x8d\xce\x69\x69\xbb\x0e\xae\x2b\x28\x6c\x40\x57\xa9\xd5\x1f\x5d\xa5\x8c\x51\x2a\x6e\x77\x4d\xb6\x9b\x37\x7a\xc6\x18\x9d\x46\xeb\x1d\x30\xb1\xb0\xd5\x68\xff\xad\x13\x38\x87\x37\xd1\x06\x38\x1b\x26\xb8\x00\x17\xd7\x1d\xd4\x15\x78\xfd\xac\xb9\xe4\xa7\x66\xd6\x4f\xa3\x1d\x23\xfc\x14\xa2\x86\x9f\x98\x7c\x82\xdf\x20\x58\x45\x08\x0e\x21\x9a\x9a\x10\x52\x8e\x0a\xa1\xfa\x66\x32\x6a\x24\x59\x98\x90\x24\x1b\x65\x26\x24\x1b\xa6\x6b\xa4\x8c\x94\x6d\xe0\xe6\x72\xdf\x8c\x48\x7c\xb5\xab\x1f\x92\xba\xfb\x91\x49\xba\x76\x0a\xd9\x23\xfb\x66\x3e\xd7\xd0\xd8\x2b\xf4\x16\xf3\x62\xe4\x63\x14\x23\x9f\x3c\x79\xda\x97\x67\xcf\xdb\xf2\xcf\x7f\xf5\x5f\xcf\x1e\x3f\x59\x34\xaf\x8b\xc9\x3d\x81\x75\x44\x71\x44\x09\x25\x66\xc6\x8e\xd5\x56\x86\x28\xac\x57\x4d\xc9\x7c\x8d\x7e\xe0\x3a\x28\xb0\x6c\xc3\x3a\x30\x11\x98\x0a\x83\xad\xa7\x3e\xc5\xca\xe0\x58\x95\x01\x67\x70\xae\xd4\xa6\xa0\x5a\x72\xb8\x63\x37\xa0\xda\xb9\xab\x61\x9f\x8b\x1a\xec\x5b\xd4\xd0\x63\xaa\x85\x72\xc1\xa6\x05\xb3\x55\xd8\x9a\xd8\x86\xf4\x16\xd7\x54\x3e\xab\xb0\xdb\x0e\x3c\x8c\x4e\xae\xcb\x17\xba\xee\x72\x79\x2e\x97\x7f\x2c\x2f\x1e\xce\xbe\xd8\x92\x87\xae\x6e\xda\xbd\xba\x77\x11\x3b\xda\xfe\x76\xcc\x4f\xed\x42\x88\x23\x21\xde\x9d\xb6\x17\xe0\xfb\xe5\x6f\x97\xf7\xbe\x3b\x3c\x7a\x70\xba\x6c\x8f\xc1\xfb\xd3\xdb\x53\x37\xaf\xc5\xf1\xee\xca\xde\x3c\x2a\x43\xb3\x96\xbb\xa5\xd9\xec\x56\x46\x41\xdf\x91\x94\xc9\xa6\xee\x8e\x10\xc7\x1f\xa4\x9f\xbc\x4f\xbb\xbf\x8f\x2d\xed\xba\xfb\x0b\x23\xf3\x87\xa3\xdf\xea\xce\xfd\xbb\xde\xdc\xff\x36\x67\x86\xf3\x8b\x0f\x36\x7c\x67\xf1\x33\xec\xc3\xbb\xd8\x47\x7f\x11\x12\x47\x1d\x1b\xd9\xbf\xbe\xfa\xe1\x15\xce\xce\xce\xf0\xf2\xa7\xb3\x9f\x7f\x5c\x9c\x34\x7a\xff\x0c\x00\x00\xff\xff\xd8\xe9\x5d\x6d\xfc\x07\x00\x00" func runtimeSyntaxFishYamlBytes() ([]byte, error) { @@ -1937,7 +2004,7 @@ func runtimeSyntaxFsharpYaml() (*asset, error) { return a, nil } -var _runtimeSyntaxGdscriptYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x54\x69\x6f\xdb\x46\x13\xfe\xae\x5f\xc1\x57\xc9\x5b\x1f\x29\xd5\x80\x29\xd0\x56\xbd\xe2\xda\x31\x1a\xa0\x69\x8c\x5a\x29\x8c\x8a\x82\x33\xe2\x0e\xa5\xad\x97\xb3\xcc\xec\xd0\xb2\xe3\xf1\x7f\x2f\x96\x94\x65\xc9\xb1\xe1\xa2\xfd\x54\x09\x9c\x9d\x9d\xfb\x78\xc8\xd2\x3a\x94\xcb\x1a\x87\xc9\xcc\x84\x82\x6d\x2d\xbd\x9e\x41\xc1\x42\x86\xbd\x24\x49\x92\xa8\x27\xa8\x70\x98\xf4\xf3\x7c\x30\x33\x4f\xfb\xbd\x1e\x37\x0e\x43\xa7\x7e\x92\x4c\x1b\xeb\x24\xb5\x94\xf8\xe9\x9f\x58\x48\x68\xc5\x69\x52\x78\x0a\x02\x24\xad\xdf\x74\x9b\x1a\xe7\x34\xa0\x2b\x55\xb8\x41\x2d\xc1\x05\xdc\xc9\xf3\x69\xbf\x35\xdf\x88\x03\x22\x6c\xa7\x8d\x60\x58\xe9\x0a\xef\x3c\xaf\x42\x76\x11\x1f\xf0\x2e\x1b\x2a\xc4\x7a\xba\xa9\xc3\x1a\x24\xb1\xa5\x45\x5e\x56\x02\xd3\xa0\x50\xf8\xa0\x10\x2c\x29\x08\x74\x24\xd3\x02\xad\xd3\xc2\x41\x55\x6b\xe1\xe9\x1c\x59\x34\x9a\x15\x3e\xcc\xd5\x4c\x33\x67\x09\x81\xd5\x60\x61\x2b\x70\x41\x0d\xce\x32\x06\xa3\x08\x01\x15\x2f\x6a\x2d\x9d\x07\x89\xd4\xb3\x96\x95\x37\x5a\xd6\x3e\xc4\x73\x0e\x61\xae\x96\x44\x6d\xb0\x54\xaa\x0d\x04\xa4\x0e\xb9\xd6\x2e\x66\x66\xa6\xea\x3c\x18\x75\x7e\xa6\x15\x5c\x68\x65\x49\xa3\x02\x83\x9c\xd6\x3e\xd3\xda\x2f\xb4\x66\x6c\x6d\x6a\x8e\x91\x5a\x8a\xcc\x1d\xc3\xb0\xe8\x98\xd0\x1d\xa2\x0c\x26\x33\x38\x53\x06\x32\xa7\x0c\x34\xc3\x8e\x0d\x88\xa6\xe5\x7c\x65\x3f\x76\x32\xdb\xd2\x52\x97\x56\xbe\x21\xa3\xad\x59\x1c\x4f\x68\xcb\x0c\x1f\x58\x34\x08\xc7\x27\x3b\x07\xd6\x38\xb4\x08\x1a\x5f\xea\x39\x70\x16\x55\x0b\x84\x33\xc6\x72\x73\x2b\xa1\xc6\xc2\x82\x4b\x2a\x94\xb9\x37\x49\xc4\xd1\x83\x7b\xd9\x23\x5b\x41\xdc\xdc\x91\x83\x4b\x64\x5d\xdd\x47\x8c\xb8\x94\xfd\xd4\x88\x78\xd2\x7d\x4f\xc2\xde\xe9\xcf\xa3\xd1\xd1\xbe\xb3\x48\xd2\xb2\xbf\xe1\x87\x06\x83\xe8\x6b\xaa\x9b\x25\x7d\x75\x1e\x95\x6f\xc0\xd2\x2f\xde\xd7\xfa\xab\x37\xd8\x92\xec\x40\x8f\x0b\x24\x8c\xb1\xf5\xb8\x06\xb1\xe0\xf4\x58\x10\xaa\x23\x44\xd6\x23\x28\xce\x50\xee\xb0\xef\x0e\x8e\x74\x64\x2b\x64\x1d\x2d\x10\x69\xb3\xd3\x38\x8d\x9b\xd6\xba\xd7\xa9\x6d\xea\x77\x2c\xc4\x73\xa6\xdd\xf9\x62\xd3\xc7\x60\x69\xc9\x3e\x08\xd6\x88\xe4\x64\x0c\xe9\xc7\xbd\xf4\x8f\xd3\xe7\xe9\x37\x93\x67\xfd\x64\xe5\x7b\x86\x97\x0b\xcf\xe6\xc6\x31\x08\x08\x56\xb8\x7a\xdd\x80\x8c\x42\x84\x78\x88\x30\x9e\x32\xc2\x59\x47\x6b\x1f\xe1\x53\x38\x08\x11\xd9\x14\x22\xc6\x49\x2c\x35\xa8\xe8\x6c\xa9\xe8\x3a\x34\x7b\x16\xc5\x0b\x41\x32\x41\xcb\x08\xe8\x86\x0a\xb5\xa5\x5a\xd2\x0a\x6a\x25\x2f\xea\x89\x11\xcc\xa5\x7a\xd6\x3a\x86\x63\x94\x86\x49\x83\x9d\x11\xb8\x88\x0b\x5d\xcc\xad\x43\xbd\xb4\xe8\x4c\xdb\x79\xd2\x5b\xeb\xbd\xf0\x0c\xe2\x79\xd5\x41\x07\x95\x61\xd2\x7f\x39\xd8\x1d\x6f\x4f\xfa\xb7\xb6\xbe\xc6\x4d\xd3\xb5\x66\xc7\x83\xe1\xb7\x9f\x3f\xdb\xd5\xef\xff\x97\xe7\xff\x7f\x39\xd1\xef\xf4\x07\xfd\x42\x53\xfd\x6c\xcd\xbf\x06\x46\x92\x39\x06\xbc\x37\xc2\xf6\xce\xd5\xf5\x44\xf3\x7c\xac\x79\xbe\x9e\x96\x9a\x6a\x8a\x7c\xff\xf7\x6c\xdc\xee\x63\xb5\xcd\x5b\xf5\xa0\xf3\x5a\xae\xa1\x33\xd3\xe7\x17\x91\x81\xb4\xdc\x4b\x0f\x27\xbb\x71\x14\xba\x35\xd8\x5a\xa6\x8a\xbe\x55\x5b\xcb\x32\x73\x12\xcb\xe3\x36\x51\xfb\xef\xaf\xe4\x48\xe6\x1e\xe9\xda\xd7\xf8\xe6\x97\x26\xe2\x8d\x1f\x26\xfd\xed\xd1\xdb\x83\xb7\x7a\x72\x72\xa2\x87\xaf\x4f\xde\xbc\xda\x19\xfe\xf8\x78\xd6\xad\xad\xad\xbb\x29\x37\x44\xff\x38\xdf\x72\x42\x41\xd8\xd2\xec\xbe\x6e\x3f\xed\xf4\x56\x12\xce\x6c\xdd\x4e\x35\xcf\x07\x8f\xd4\x72\x9b\xa9\xc3\xd4\xfe\x1c\x78\xe9\x1a\x37\xf2\xd5\xe4\xea\xc5\xb5\x5e\x8c\xf7\xd2\x43\x48\xcb\xb8\xa1\xab\xec\x5a\x9b\xf5\xfb\x97\xd7\xfa\x6e\xfd\xfe\xf5\xf5\xce\xdf\xef\xe3\xd3\xe9\xfd\x17\xbb\x78\x7f\xb7\x8b\xf7\x77\xeb\x4d\xc6\x93\x47\xb1\xf4\xe4\x6e\x94\xa7\xff\x02\x47\x7f\x05\x00\x00\xff\xff\x9d\x69\x30\xea\xab\x08\x00\x00" +var _runtimeSyntaxGdscriptYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x55\xff\x4f\x1b\xc7\x12\xff\x9d\xbf\xc2\x8f\xe4\x3d\x42\xf2\x4c\xa3\x4b\xa5\xb6\xf4\xab\xc1\x41\x45\x6d\xc0\x05\xa7\x42\xc5\x28\x1a\xdf\xce\xd9\x5b\xf6\x66\x2f\xbb\x73\x80\x93\x0f\xff\x7b\xb5\x77\x87\x4d\x89\xa3\x54\xf9\xa9\x87\x98\x9d\xaf\x3b\x3b\x33\xfb\x59\x17\xd6\xb1\x2e\x2a\xde\xed\xcd\x4c\xcc\x83\xad\x74\x63\xc3\xb0\x72\xae\xbb\x1b\xbd\x5e\xaf\x97\xec\x42\x25\xef\xf6\x36\x27\x93\x9d\x99\x79\xbc\xb9\xb1\x11\x6a\xc7\xb1\x35\x3f\xea\xed\xd5\xd6\x69\xdf\x4a\x2f\xf7\x12\x95\x44\x63\x63\xe8\x2f\xe5\x26\x72\xfa\xe4\xf0\xe8\x00\x47\x83\x23\x8c\x0e\x31\x1e\xbc\xde\x9e\x4c\xa6\x9b\x0f\x1c\x77\xa6\xde\xbb\xce\x5b\x6a\xe7\xa0\xa1\x66\x14\xe4\x22\xaf\xdc\xef\x25\x2c\x6a\xc9\xd5\x7a\xb9\x4b\x68\x0d\x8b\xda\xc2\x72\xe8\x36\xa1\x69\x04\xe5\x3e\x82\xa2\x15\x90\x52\x4b\x32\xe4\x6c\x1d\x72\x47\x65\x85\xdc\xcb\x15\x07\x45\x72\xcb\x7d\x9c\xc3\x4c\x33\x67\x85\x29\xc0\x70\x6e\x4b\x72\x11\x86\x67\x59\x20\x03\xa6\xc8\xe0\x9b\x0a\x85\xf3\xa4\x89\xfa\x80\xa2\xf4\x06\x45\xe5\x63\x5a\xe7\x14\xe7\xb0\xa2\xb0\xd1\x4a\x01\x1b\x85\x04\x8e\x43\x85\x76\xcf\xcc\x4c\xe1\x3c\x19\x38\x3f\x43\x49\x37\x28\xad\x20\x19\x38\xea\x9b\xca\x67\xa8\xfc\x35\xaa\xc0\x8d\x4f\x15\xd2\x4e\x0d\xe5\x10\x5a\x26\xd0\x75\xcb\xc4\x76\x51\x04\x32\x99\xe1\x19\x02\x89\x79\x13\x48\x66\xdc\xb2\x91\xd9\x34\x9c\x2f\xed\xbb\x56\x67\x1b\x5a\xa0\xf3\xf2\xb5\x18\x34\x6e\xa9\x3d\xb1\x39\x66\x7c\x1b\x14\x51\x43\xfa\xcf\xae\x28\x20\x35\x2d\xdd\x0f\x5f\xe0\x8a\x42\x96\x4c\xd7\x4c\x97\x81\x8b\xb5\x33\x11\x6f\xb8\x97\xee\xcb\x47\x87\x32\x10\x5b\x52\x1a\xdb\xc8\xd1\x82\x03\x96\xf2\x38\x30\x77\xba\xbd\x5a\xd5\x0b\xf6\xbd\x68\xf0\x0e\x2f\x65\x66\x85\xf1\xf3\x78\x3c\xda\x77\x96\x45\x1b\xf6\x84\xdf\xd6\x1c\x15\x87\x52\xd5\x1d\x7d\x79\x95\x8c\xaf\xc8\xca\xaf\xde\x57\x38\xf2\x86\x1b\x92\x0d\x71\x7c\x8a\xd3\x9c\x85\x53\x16\x9c\x56\xa4\x96\x1c\x4e\x35\x30\x95\x23\xe6\x80\x11\xe5\x97\xac\x0f\xd8\xd7\xc3\x11\xc6\xb6\xe4\x80\xf1\x35\xb3\xdc\xaf\x78\xbc\xa8\x96\x35\xb6\xf8\x69\xab\x1b\xec\xed\x61\x10\x02\x2d\xb0\x47\xd1\x46\xec\x7b\xe7\x03\x86\xb6\xb9\xa9\x14\x16\xcd\x79\x46\xa4\x73\x1c\x4f\xff\xe4\x5c\x31\x72\x24\x8c\x91\xf7\x6e\x6f\xa1\xdc\x86\x26\xa9\x09\x5c\x89\x87\xa2\x2b\xe1\x84\xc9\xad\xa4\xdf\x39\x57\x1f\xb2\x87\x8a\x17\xad\xe2\xb7\x9a\x14\x27\x9c\x6b\x86\x93\xc3\x61\x2a\xd9\xca\x0c\xe3\x40\x12\x0b\x1f\xca\x15\x97\x0d\xd1\xed\xd4\xad\x2f\xee\xd7\x3b\xe4\xc2\x8a\xfd\x28\xdc\x12\x16\x7b\xe7\xd4\x7f\x37\xe8\xff\xf1\xe6\x79\xff\x9b\x8b\x67\x77\x81\xbf\xf0\xe2\xda\x07\x73\x17\x15\x95\x94\x4b\x5e\x3e\x0b\x24\x06\x94\x10\x1a\x13\x0a\xa7\x81\xe9\xb2\xa5\x95\x4f\xb7\x3f\x77\x14\x13\x30\x25\x26\x88\x8a\x5a\xa9\x19\xec\x6c\x01\x76\x09\x8c\x52\x97\x09\x91\x3e\x28\xf8\x46\x59\x4c\x44\x91\x40\x59\x4b\x0e\x5b\xc0\x0a\x6c\x44\x49\x15\x4a\x8a\xca\xa1\x5b\xe2\x42\x72\x94\xa4\xf9\x1c\xe2\x15\x5e\x02\x93\x59\xc0\x07\x54\x29\x5d\xe0\xd2\x2b\x77\x4b\xe3\x1b\x58\xeb\x20\x88\xec\x0a\x44\xd6\x19\x2b\xa2\xa3\x2b\x6e\x69\xe3\x12\xed\x4c\xc8\xa1\xe1\xd5\x7b\x97\xe0\x82\xeb\xb9\x75\x8c\x85\x65\x67\xda\x66\x76\x4d\x39\xae\x38\x90\xfa\xb0\xae\x2b\xe7\x3b\xbb\xdf\xfe\xff\xd9\x53\x7c\xff\x9f\xc9\xe4\xbf\x3f\x5d\xe0\x3b\xfc\x80\x2f\xd0\xc7\xff\x96\xd1\x23\x0a\x2c\x3a\xe7\xc8\x6b\xe3\x9f\x6c\xbf\xbf\xbd\xc0\x64\x72\x8e\xc9\xe4\x62\x19\x74\x54\x97\x53\x0e\xeb\x1f\xe7\xf3\x66\x62\xeb\x9e\x64\x69\xa2\xba\x59\xb5\x6e\x78\x7e\x93\x18\xea\x17\x83\xfe\xc1\xc5\xd3\x54\x17\xb6\x76\xb6\xba\x44\x29\xb6\x6c\x4e\xd2\x88\xe9\x8b\x4a\xa1\x49\xd4\xfc\x6d\x2e\xf5\x2c\x66\x8d\xf6\xde\x8f\xcb\xdd\xd7\xef\xa9\x37\x7e\xb7\xb7\xf9\x64\x7c\x3c\x3c\xc6\xd9\xd9\x19\x0e\x0e\xcf\x5e\xbd\xdc\xde\xfd\xf1\xd3\x59\xb7\xb6\xb6\x1e\xa6\xfc\x9b\xea\xb3\xf3\x75\x1d\x8a\x0d\xa0\xd6\x55\xfb\x61\xa5\x2b\x4d\xbc\xb4\x55\xd3\xd5\xc9\x64\xe7\x13\x67\x59\x65\xaa\x38\xb7\xe4\xf6\xe7\x14\xba\xd0\x34\x91\xaf\x2e\xde\xbf\xb8\xc5\xcd\xf9\xa0\x7f\x40\xfd\x22\x4d\xe8\x7d\x76\x8b\xfa\xbe\xfc\xe5\x2d\x5e\xdf\x97\xbf\xbe\xdd\xfe\xe7\x75\x7c\xd8\xbd\x7f\x65\x15\x1f\x99\xfe\xa3\x87\xa7\x7f\xfc\xf9\x93\xff\x2b\x00\x00\xff\xff\x87\x84\xe4\x7b\x2b\x09\x00\x00" func runtimeSyntaxGdscriptYamlBytes() ([]byte, error) { return bindataRead( @@ -1977,7 +2044,7 @@ func runtimeSyntaxGentooEbuildYaml() (*asset, error) { return a, nil } -var _runtimeSyntaxGentooEtcPortageYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x92\x4f\x8b\xdb\x30\x10\xc5\xef\xfe\x14\xc2\x9b\x43\xfe\x20\x77\xa1\x21\x74\x45\x92\x65\xd9\x6b\x7b\xec\xa5\xb6\x5b\xc6\xf2\xc4\x11\x91\x25\xa1\x91\xdb\xa6\x0c\xfb\xd9\x8b\x9b\xcd\x1f\x96\xa5\x86\xc1\xcc\xa0\xdf\x7b\x8f\x61\x76\xc6\x62\x3a\x06\x54\x02\x93\x96\xc1\xc7\x04\x1d\x66\x59\x8b\x09\x75\x52\x99\x10\x42\x8c\x4f\x1c\xf4\xa8\x44\x5e\x55\xc5\xf4\x80\xc7\x5f\x3e\xb6\xc4\x3d\xd0\x81\x07\x77\xfa\x11\xce\x26\x79\x96\xc5\xc1\x22\x9d\xb0\x3b\xf1\x95\x50\xec\x2c\x74\xaf\x03\x29\xb4\x77\x94\xc0\xa5\xa2\xf1\xde\x16\x3b\xb0\x34\x8a\x96\xa5\xa2\x00\x1a\x55\x5d\x2f\xaa\x6a\xf1\x58\x82\xfc\xf3\x24\xbf\xdd\xcb\x87\x1f\xb2\x5e\xe4\xef\xb2\x29\x0e\x6f\x51\xf9\x1e\x77\x27\x3e\x9b\x03\xda\xa3\xf8\x89\x91\x8c\x77\xc2\x0d\x7d\x83\xf1\x92\x88\x02\x6a\x03\x56\x89\x5c\x96\xa5\x6a\x4d\x67\x92\xaa\xeb\x62\x3e\xbd\x51\xe6\xc9\xec\x2c\xf6\xa4\x35\x86\x84\xad\x80\xa8\xf7\x78\x51\x31\x2d\xba\x64\x76\x06\x63\xa1\x2d\x10\x8d\xc9\x5e\x64\xfd\x58\x55\xcd\x14\x6c\xd8\x03\x43\xdf\xae\x96\x0c\xb1\xe7\x7d\x08\xc0\x06\x56\x4b\xee\x4d\x20\x0e\x41\x8f\xb5\x5a\x32\x7d\x7c\xb8\x67\xda\x33\x05\x88\x9a\x7f\x7f\x5a\x8d\x25\x77\x0d\xb5\xb3\xaa\x6a\xf2\xff\x58\x5d\xa3\xbe\xba\xce\xcf\x79\x9f\x21\x61\xe7\xa3\xb9\x46\xa5\x04\x09\x7b\x74\x49\x89\xfc\xfb\x0d\x39\x2f\xe6\x1f\xce\xd4\x17\xa0\x83\x71\x9d\x88\xd8\x0d\x16\x92\xbf\x59\xd7\xb1\x6f\xbc\x7d\x8b\x4e\x37\xfc\xc2\x6b\x5e\x6f\x78\xb3\xe6\x2d\x6f\x37\xbc\xd9\x5e\x56\xf6\xec\xfb\xd1\xee\xe6\x06\xfe\xf5\xa7\x76\xfc\x28\x41\x1c\xd3\xdc\xe5\x97\x11\xba\x56\x89\x7c\x72\x1d\x9c\xce\x4a\x94\x75\xf6\x37\x00\x00\xff\xff\x3f\x79\x8b\x6b\xb0\x02\x00\x00" +var _runtimeSyntaxGentooEtcPortageYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x92\x5b\x8b\xdb\x3e\x10\xc5\xdf\xfd\x29\x84\x93\x87\x5c\x90\x77\xe1\x1f\xc2\x7f\x45\x2e\x2c\xfb\xda\x3e\xf6\xa5\xb6\x5b\xc6\xf2\xc4\x11\x91\x25\xa1\x51\xda\xa6\x0c\xfb\xd9\x8b\x9b\xcd\x85\x65\xa9\x61\x30\x33\xe8\x77\xce\x61\x98\x9d\xb1\x98\x4e\x01\x95\xc0\xa4\x65\xf0\x31\x41\x87\x59\xd6\x62\x42\x9d\x54\x26\x84\x10\xc3\x13\x07\x3d\x2a\x91\x57\x55\x31\x39\xe0\xe9\xa7\x8f\x2d\x71\x0f\x74\xe0\xa3\x3b\xff\x08\xa7\x93\x87\x62\x3e\xdd\x8e\xf3\x2c\x8b\x47\x8b\x74\x86\x47\xe2\x0b\xa1\xd8\x59\xe8\xde\x06\x52\x68\xef\x28\x81\x4b\x45\xe3\xbd\x2d\x76\x60\x69\x90\x2e\x4b\x45\x01\x34\xaa\xba\x9e\x57\xd5\x7c\x5b\x82\xfc\xfd\x2c\xbf\x3e\xca\xa7\xef\xb2\x9e\xe7\x1f\xb2\x29\x1e\xdf\xa3\xf2\x23\x6e\x24\x3e\x99\x03\xda\x93\xf8\x81\x91\x8c\x77\xc2\x1d\xfb\x06\xe3\x35\x11\x05\xd4\x06\xac\x12\xb9\x2c\x4b\xd5\x9a\xce\x24\x55\xd7\xc5\x6c\x72\xa7\xcc\xe3\xe9\x45\xec\x59\x6b\x0c\x09\x5b\x01\x51\xef\xf1\xaa\x62\x5a\x74\xc9\xec\x0c\xc6\x42\x5b\x20\x1a\x92\xbd\xca\x7a\x5b\x55\xcd\x04\x6c\xd8\x03\x43\xdf\x2e\x17\x0c\xb1\xe7\x7d\x08\xc0\x06\x96\x0b\xee\x4d\x20\x0e\x41\x0f\xb5\x5c\x30\xfd\xf7\xf4\xc8\xb4\x67\x0a\x10\x35\xff\xfa\x7f\x39\x94\xdc\x35\xd4\x4e\xab\xaa\xc9\xff\x61\x75\x8b\xfa\xe6\x3a\xbb\xe4\x7d\x81\x84\x9d\x8f\xe6\x16\x95\x12\x24\xec\xd1\x25\x25\xf2\x6f\x77\xe4\xac\x98\x3d\x5c\xa8\xcf\x40\x07\xe3\x3a\x11\xb1\x3b\x5a\x48\xfe\x6e\x5d\xa7\xbe\xf1\xf6\x3d\x3a\x59\xf3\x2b\xaf\x78\xb5\xe6\xf5\x8a\x37\xbc\x59\xf3\x7a\x73\x5d\xd9\x8b\xef\x07\xbb\xbb\x1b\xf8\xdb\x9f\xdb\xe1\xa3\x04\x71\x48\x33\xca\xaf\x23\x74\xad\x12\xf9\xf8\x36\x38\x9f\x95\x28\xeb\xec\x4f\x00\x00\x00\xff\xff\x7c\x89\xb4\x8b\xb6\x02\x00\x00" func runtimeSyntaxGentooEtcPortageYamlBytes() ([]byte, error) { return bindataRead( @@ -2117,6 +2184,26 @@ func runtimeSyntaxGoloYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxGraphqlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x53\xdd\x6e\x9b\x4c\x10\xbd\xf7\x53\xec\xe7\xf8\x02\xbe\x2a\x79\x00\xa4\xca\x25\x36\x4e\xa9\x6c\x92\x82\xa9\x54\x65\x22\x6b\x8d\x27\x0e\xea\xc2\xe2\xdd\x25\x6d\xd4\xe9\xbb\x57\x2c\xc6\x3f\xb8\xe1\x02\x69\x66\xcf\x9c\x33\x73\x76\xf6\x39\x17\x68\xde\x2a\xf4\xd8\x56\xf1\xea\x65\x27\x06\x83\x0d\x1a\xcc\x8c\x37\x60\x8c\xb1\xe6\xb8\xe4\x05\x7a\x6c\x08\x70\xe3\x6c\x77\x82\xf6\x38\x77\x34\x1c\x0c\x54\x2d\x50\xb7\xc8\x6b\xd6\xd2\x0c\x01\xd6\xce\xd8\x73\x76\x35\xaa\x37\x2a\x6a\xc3\x4d\x2e\x4b\xd2\xf5\x5a\x67\x2a\xaf\x6c\xd0\x20\xe9\x59\xf1\x6d\x81\xa5\x21\x9d\xbd\x60\xc1\xa9\x2e\x9b\x23\x59\x12\xfe\x32\x58\x6e\xf4\xd8\x75\x01\xd6\xc3\x81\x65\xbf\x62\x3a\xe3\x82\x2b\x2b\xa2\xf7\x82\xda\x70\x83\x0d\xc5\x5e\x35\x9c\x52\x58\x1a\x9a\x09\xc9\x0d\xdd\x4a\x29\x90\x97\x94\x18\x95\x97\x5b\x9a\x72\x83\x26\x2f\x90\xa2\x5a\x88\x33\xe2\xbc\x34\x4a\xea\x0a\xb3\xa6\xb5\x77\xf9\x9d\xd5\x0a\xe0\xe7\x07\xf7\x50\x56\x71\xc5\x0b\x34\xa8\xfe\x89\x76\x2c\xd8\x19\x7b\x00\x9e\xf3\x08\xa0\x9f\xfe\x77\xc7\x6d\x3c\x72\x8f\x24\x9b\x5c\x35\xba\xaf\xc8\x84\xcc\xac\x51\xef\xcd\xf6\x35\x0d\xe2\xef\xb4\x48\x97\xfe\x32\xbc\x8f\x28\x49\x6f\x93\x49\x1c\x3e\xd8\x60\x16\x06\xf3\x29\xcd\x62\xff\x6e\x11\x44\xcb\xd5\x34\x98\x85\x51\xd8\x9e\x74\xb9\xe4\x21\x0e\xfc\x29\x85\xd1\x3c\x8c\x82\x55\x97\xa6\x64\xf2\x39\x58\xf8\x94\x4c\xfc\xb9\x1f\xd3\xfd\xed\x97\x60\xb2\x6c\xe9\x4e\x59\xfc\xf8\x2e\xed\x33\x87\xd1\x32\x88\x67\xfe\x24\xa0\x34\x6a\xe2\x20\x4a\x17\xf6\xb7\xfa\xe6\xcf\xd3\x80\xc2\xe8\x21\x5d\xae\xf6\x8c\x6d\xd0\xe7\x3d\xbb\x85\x83\x13\x9d\x01\x99\x2c\xb5\xe1\xad\x9b\x9f\xce\xad\x57\x52\x9a\xb3\x8b\x3a\xc1\x5a\xaf\xec\xea\x2d\xba\xd5\x4b\x4e\x57\x2f\x69\x97\x2d\x96\xd2\x9c\xe9\xbf\x72\x95\xf3\xb5\x38\xde\x7d\x85\x59\xce\x45\xa3\x0e\x30\xea\xe9\xe3\xae\xce\x15\x6e\x98\x7e\x2b\xd6\x52\x5c\x56\xfc\xd7\x61\xaf\xf7\x90\x26\xe9\xd1\x47\x02\x20\x02\x70\x08\xc0\x25\x80\xdf\x04\xf0\x87\x00\x1e\x09\xe0\xe9\x58\xd2\x4d\x73\xb3\x96\xb6\xb2\x19\xc9\xa8\x1a\xe9\x99\x0b\x8d\xb6\x6b\xc6\x2e\xc0\xda\xee\x79\xfb\x16\x9b\x4f\x1b\xae\xac\x21\xc3\xe1\x21\x87\xe5\xa6\x97\xd1\x3f\xf2\xca\x4a\x00\xdc\x1c\xb3\x27\xcf\xba\xfb\x4e\x95\xda\x41\x27\x2f\x5c\x1d\x4b\x0f\xed\x14\x76\x69\x2f\xda\xb8\xea\x77\x31\xea\xcb\xb1\xc7\xa7\xbf\x01\x00\x00\xff\xff\x7f\xe6\xec\xe6\x8d\x04\x00\x00" + +func runtimeSyntaxGraphqlYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGraphqlYaml, + "runtime/syntax/graphql.yaml", + ) +} + +func runtimeSyntaxGraphqlYaml() (*asset, error) { + bytes, err := runtimeSyntaxGraphqlYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/graphql.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxGroffYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x52\xc1\x4e\xc3\x30\x0c\xbd\xf7\x2b\xac\xa8\x87\xb6\x68\x11\x1c\xc9\x85\x03\x9f\x11\x67\x52\xd4\xba\x23\xd2\x92\x56\x89\x39\x20\xf5\xe3\x51\xd2\x31\x26\xca\x06\xf3\xc5\x6d\xf2\x9e\xfd\xfc\x9c\xd1\x1d\x89\x3f\x66\x52\x70\x88\xd3\x38\x56\xd5\x40\x4c\x3d\x2b\xa8\x00\x00\xf2\x6d\xb0\x9e\x14\x08\x44\xe9\x35\xf9\x64\xea\x05\x51\xc6\x69\xcc\x89\xbd\xed\xeb\x65\x9f\x93\x14\x55\x15\xdf\x8f\x94\x54\x61\xee\x20\xb1\x65\xf2\x14\x58\x81\xd8\x23\xca\x66\x48\x4b\x88\x2d\xe8\xbd\xd6\x2a\xcd\xb6\x27\x65\x8c\xe9\xc4\x09\xde\x4f\x21\xb1\x0d\x2c\xd3\x4c\xbd\xb3\xc7\xd7\x37\x1b\x4b\x5b\x44\xf9\x0f\xcc\x28\x97\x92\x10\x1b\xb9\x7e\xa6\x06\xf1\x61\x41\xdc\xb5\x2f\xfa\x71\xf7\x6c\x7e\x16\x51\x20\x9a\x8c\x2b\xe0\x1c\x6d\x68\x32\xb3\x91\xb2\xdd\x60\xcb\x7f\x8e\xc4\x36\xfe\x46\x45\xd4\xe2\x0c\xa2\x30\x28\x10\xe6\xfb\x60\x35\x06\xb4\xa9\x4e\x85\x57\xcb\x8b\x2f\x17\x6e\x74\x57\xbd\xf1\x17\x46\x96\x8e\x42\x76\xf5\xd6\x16\x8e\x2e\x1c\xb6\xea\x10\xbb\xab\xa3\x7d\x91\xfe\x9a\x10\xb1\xbb\x73\xc6\x1b\xdb\x2a\x52\x6e\x6e\x75\x23\x67\xa5\xdd\x25\xc0\x0d\x14\xd8\x8d\x8e\xa2\xf4\xb6\x8f\xd3\xb9\x4a\x8e\x5a\x3f\x95\x47\xf1\x19\x00\x00\xff\xff\xb6\xd6\x2a\x2f\x01\x03\x00\x00" func runtimeSyntaxGroffYamlBytes() ([]byte, error) { @@ -2237,7 +2324,7 @@ func runtimeSyntaxHtml5Yaml() (*asset, error) { return a, nil } -var _runtimeSyntaxIniYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x90\x41\x8b\xd4\x30\x14\xc7\xef\xfd\x14\x21\x16\xa6\xed\xd2\x78\xcf\x32\x88\xa0\x82\x07\xd9\x8b\x87\x62\x5e\x06\x32\xed\xeb\x6e\x30\x4d\x42\xf2\x46\x51\xf2\xe1\xa5\x9d\x9d\x71\x50\xc1\xcb\xbe\xd3\xeb\xbf\xbf\xe4\xf7\x27\xb3\x75\x48\x3f\x22\x4a\x66\xbd\xad\xaa\x09\x09\x47\x92\xac\x62\x8c\xb1\xf5\x9f\x37\x0b\x4a\xc6\x01\x44\x63\xbd\x2d\x13\xe6\xaf\x14\x62\x71\xb3\x2b\xe1\x1b\xa6\x64\x27\x6c\xeb\xd2\x2c\x76\x41\x13\x63\x06\x10\xce\x66\x2a\xd1\xfa\x39\xa4\xb1\x64\xa4\x53\x04\x10\xe3\xfc\xd8\xd6\xe5\x3b\xe2\xf8\x64\xe8\xb5\xb8\x5b\xa3\xe0\xe7\x9a\x6f\xa2\x27\x34\x13\x26\xc9\xf8\x01\x40\xa9\xb7\xfd\x17\xd3\xff\xd4\x77\x00\xba\xe6\x55\x95\x4e\x0e\xb3\xdc\xb8\x9e\x8d\xc1\x67\x32\x9e\xc4\x31\x04\x27\x28\x9d\xce\xe5\x8e\xeb\x06\x70\xe4\xff\xc4\x66\xe3\xf2\x33\xb7\xad\x37\xa0\x9d\xd0\x93\x9d\xed\xd9\xae\x94\xcc\xd1\x8c\x28\xb5\xee\xd4\x61\xaf\xbb\xfd\x85\xcb\x11\x47\x6b\xdc\x9f\x10\x80\x12\xdd\xb9\xe7\x33\x47\x86\x70\x41\x4f\x92\x71\xb5\xbf\xd7\x7f\x15\xca\x94\xac\x7f\x5c\xcb\xf0\x06\x00\x40\x14\x75\x00\xae\xdb\x0e\x78\xd9\x5d\x93\x9d\x6e\xbb\x1d\xaf\xae\x87\x97\xed\xca\xed\x73\x9d\x4c\x26\xad\x86\x57\xfc\x1a\xa1\x9f\x24\xe3\xf5\xef\xe0\xe6\xd9\x2e\xd3\x33\x0a\x53\x90\x8c\x37\x9f\x1f\xde\x3d\x94\x61\x18\xca\x87\x8f\xc3\xa7\xf7\xad\x7c\xc3\xff\xa7\xba\x7f\x41\xd5\xaf\x00\x00\x00\xff\xff\x29\x32\xb2\x22\x74\x02\x00\x00" +var _runtimeSyntaxIniYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x90\xc1\x6b\xdb\x30\x14\xc6\xef\xfe\x2b\x84\x66\x88\xed\x11\xed\xae\x10\x76\xd9\x06\x3b\x8c\x5c\x76\x30\xf8\x39\xa0\xc8\xcf\x99\x56\x59\x12\xd2\x4b\x4b\x41\x7f\x7c\x71\xd2\xb8\xa1\x2d\xf4\xd2\x77\xfa\xf4\xe9\x27\x7d\x1f\x6f\x34\x16\xe9\x31\xa0\x64\xc6\x99\xa2\x18\x90\x50\x93\x2c\x18\x63\x6c\xbe\x72\x6a\x42\xc9\x38\x80\xa8\x8c\x33\x79\xc0\x74\x47\x3e\x64\x3b\xda\xec\xef\x31\x46\x33\x60\xa6\xa4\x5d\xa6\x88\xa9\x2e\x73\x35\x99\x09\x55\x08\x09\x40\x58\x93\x28\x07\xe3\x46\x1f\x75\x4e\x48\xa7\x00\x20\xf4\x78\xcc\x21\xfa\xff\xa8\x09\x40\x1c\xfd\xe0\xa9\x2e\xf3\x03\xa2\xfe\xa7\xe8\x9b\xf8\x3a\x23\xde\x8d\x25\x2f\x8a\x78\xb2\x98\x2e\x55\xd6\x4c\x7b\x97\x48\x39\x12\x07\xef\xad\xa0\x78\xba\xd4\x3a\xcc\x0a\xe0\xc0\xdf\xc5\x46\x65\xd3\x33\x77\x96\x37\xa0\x19\xd0\x91\x19\x0d\x46\xc9\xf8\xbe\xeb\x64\x0a\x4a\xa3\xec\xfb\xa6\xdb\x6f\xfb\x66\x7b\xe5\x52\x40\x6d\x94\x7d\x0d\x01\x74\xa2\x01\xe8\xcb\x85\x23\x45\x38\xa1\x23\xc9\x78\xb7\xdd\xf4\x6f\x0a\x25\x8a\xc6\x1d\xe7\x32\xbc\x02\x00\x10\xb9\xdb\x03\xef\xeb\x06\x78\x5e\x2d\xce\xaa\xaf\x9b\x15\x2f\x96\xc7\xd3\xf9\xcb\xf3\x71\x9e\x44\x2a\xce\x09\x5f\xf8\x62\xa1\x1b\x24\xe3\xe5\x8b\x71\xb3\xb6\xeb\xac\x19\xf9\xc1\x4b\xc6\xab\xbf\xbb\x1f\xbb\xdc\xb6\x6d\xfe\xf5\xbb\xfd\xf3\xb3\x96\xdf\xf9\x47\x51\x9b\x4f\x8c\x7a\x0a\x00\x00\xff\xff\xff\x58\x08\xe3\x6d\x02\x00\x00" func runtimeSyntaxIniYamlBytes() ([]byte, error) { return bindataRead( @@ -2297,7 +2384,7 @@ func runtimeSyntaxJavaYaml() (*asset, error) { return a, nil } -var _runtimeSyntaxJavascriptYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x54\x51\x73\xe3\x34\x10\x7e\xef\xaf\xf0\xe5\x0a\xb5\x9d\x71\x5c\x1e\xe0\x68\x06\xf0\x14\x68\x9f\xa0\x30\x30\xbc\x20\xa9\x77\xb2\xbd\x4e\xd4\xca\xb2\x47\x5a\x27\x0d\x2c\xfc\x76\x46\xb6\x4b\x72\x6e\x2f\xf4\x01\x06\x3f\xc8\xf6\xce\xa7\xef\xfb\x56\xbb\xda\x4a\x69\xc0\x5d\x0b\xcb\xe0\x4e\x6e\xa4\x2b\xac\x6a\xf1\xe4\xa4\x04\x84\x02\x97\x27\x41\x10\x04\x1e\x61\x64\x0d\xcb\x60\x16\x72\xbe\xb8\x73\xa7\xc4\xf9\x02\x1c\xfb\xf4\xb3\x37\x9f\x8b\xec\x34\x9a\xf5\xb0\x35\xc8\x12\xec\x32\x98\xdd\xbe\x7e\xb5\x88\xd3\x10\xcc\x26\x98\x47\x99\x69\x4a\x08\x03\xf2\xa8\x13\xdb\x69\x70\x03\x69\x12\x14\x8d\x71\x28\x0d\x2e\x4c\x57\xe7\xfd\x46\xce\x73\x96\xcc\x45\x16\xb2\x4f\x92\x0b\xc1\xce\x93\x0b\x11\xd3\x39\x3b\x4f\xde\xf8\xf7\x83\x0f\xc8\xa4\xba\x4c\xae\xc5\x3c\x0a\x59\xf7\x8b\x60\xfa\x3b\x91\x91\x5f\xfd\x5f\x16\x65\x9c\xe7\xb3\x17\xd0\x7b\xe6\x39\xe7\x8b\x51\x62\x78\x3d\xfe\x7b\xee\x2b\xf8\xb1\x15\x6c\x9e\x88\x6c\x0c\x65\xac\xba\xf6\x62\x2f\x66\x7f\x4a\x31\x61\x50\x25\x18\x54\x95\xea\x37\xb3\xcb\xe4\x57\x99\xfc\xf6\x56\x8c\x1f\xe7\xc9\xc5\x5b\x11\x33\xb6\x74\xad\x2c\x60\x29\x44\xcc\x42\xf1\xb8\xd3\xed\xea\xbc\xd1\x8b\xdc\xca\xe2\x1e\xd0\x0d\x65\xf9\x9d\x38\xff\x23\x3a\x0a\x09\x89\xf3\xe8\x38\x84\x11\xe7\xe2\x38\xe4\x3f\x14\x6a\x5a\xb0\x12\x9b\xfe\x40\x92\x79\x1a\x7f\xf9\xc5\x57\xaf\xfe\xfc\x28\x5b\x7e\x4c\xfb\xdc\x51\x22\xd4\x60\x70\x38\xf1\x50\xba\x9d\x29\x48\x6e\xa5\x42\xca\x2d\xc8\x7b\x2a\xa4\x03\x2a\x24\x16\x6b\xea\x8b\xe4\x57\x54\xa6\x03\x2a\x21\xef\x56\x2b\xb0\x54\x42\x25\x3b\x8d\x54\x82\x06\x04\x2a\x1b\x02\xed\x80\xe0\xa1\x6d\x2c\x52\xa5\x8c\xd4\x7a\x17\x1d\xf4\xd2\x54\xb5\x6a\x2c\x55\x9d\x29\x50\x35\x86\x0a\x2d\x9d\x23\x78\x40\x30\xa5\xa3\x15\x20\xa9\x8a\x54\xdd\x73\x29\x43\xaa\x6f\x94\x02\x9a\x8a\x34\x20\x19\xd8\x92\x05\xec\xac\x21\x07\x78\x4c\xc4\x75\x2d\x58\x72\x5b\xe5\x53\xc1\xb5\x72\x84\x6b\xdb\x6c\x09\xed\x8e\xfc\x85\x6d\x2a\xda\x48\x4b\x9b\x46\x95\xb4\x5d\x2b\x0d\xb4\x55\xb8\xa6\x9d\x02\x5d\xee\x79\x5f\x07\x16\x1c\xd8\x0d\x94\x41\xde\x61\xd0\x19\xe9\x9c\x5a\x19\x28\x47\x55\xb0\xb6\x19\xdb\x37\x04\xd3\xd5\xde\xb9\xee\x6d\x38\x52\x06\xc1\x56\xb2\x00\x6a\x65\x71\x2f\x57\x40\xad\x55\x1b\x89\xfe\xdd\xf8\xf9\x00\x25\xb5\x5d\xae\x55\x11\x4d\xef\xc5\xc8\x68\x3a\xad\xa9\x33\x25\x54\xca\x40\x49\x37\xf2\x26\x7a\xe6\x8a\x8e\x60\xb4\x1d\x50\x25\xb5\x83\x43\xd0\x30\x9b\x7a\xc0\xa5\xb5\x72\x47\x5f\x37\x8d\x06\x69\xe8\x5b\x6f\xe4\xca\x74\xf5\xd0\x34\x74\xe5\x33\xa1\xeb\xc7\xb2\x7c\x2f\x71\xfd\x01\x9e\x9b\xfe\xce\xd2\x0f\xf9\x1d\x14\x48\x3f\xc1\xea\xea\xa1\xa5\x9f\xd1\x2a\xb3\x3a\x3c\xb8\xf7\x0c\xa6\xec\x36\x16\x21\xbb\x4d\x05\x85\x9c\x73\x9e\x46\x51\xcc\x6e\xfd\x97\x48\xd9\x4a\xd5\x22\x7e\x36\x2b\xce\xfb\xf1\xd5\x2f\xd9\xb0\x92\x8f\xbe\x37\xcc\xfa\x08\xcb\x2b\x63\xf1\x8c\xcf\x38\xcf\x7a\xda\x3d\x5f\x3d\x76\xc5\x87\x07\xeb\x74\x2a\xb9\x3e\x99\x61\xd2\xfa\xc7\xa1\xb4\xbd\xa1\xd9\xec\xef\x18\x98\x72\x12\x71\xf7\xaa\x1d\x5d\x2f\xf6\xd1\x83\xa1\xfd\xf8\x1c\x2a\xb5\x50\x28\xa9\xbf\x59\x4b\xbb\xdf\xfa\x52\x3b\x67\x53\x37\x67\xff\xa3\x99\x77\x53\x33\xef\xfe\x1d\xd9\xa1\x7a\x4f\xe4\xd2\x74\xaa\x77\x3a\xd5\x0b\x98\xf8\x67\x1a\xce\xe3\x27\x35\xe5\x71\xfa\x2c\xd7\x5f\x01\x00\x00\xff\xff\x05\x1c\xab\x64\xec\x07\x00\x00" +var _runtimeSyntaxJavascriptYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x54\x5f\x73\xe3\xb4\x17\x7d\xef\xa7\xf0\x66\xfb\xfb\xd5\x76\xc6\x49\x79\x80\xa5\x19\xc0\x53\xd8\xf6\x09\x5a\x86\x3f\x2f\x48\xea\xae\x6c\x5f\x27\x6a\x65\xc9\x23\x5d\x27\x0d\x5c\xf8\xec\x8c\xec\x94\x64\xdd\x6e\xe9\x03\x0c\x7e\x90\xac\x3b\x47\xe7\x9c\x2b\x5d\xdd\x5a\x69\xc0\x6d\x0b\x8b\xe8\x56\xae\xa5\x2f\x9d\x6a\xf1\xe8\xa8\x02\x84\x12\x17\x47\x51\x14\x45\x01\x61\x64\x03\x8b\x68\x12\x73\x3e\xbb\xf5\xc7\xc4\xf9\x0c\x3c\xfb\xf4\xb3\x37\x9f\x8b\xbc\x5f\x35\xb7\xfe\x38\x99\xf4\xf0\x15\xc8\x0a\xdc\x22\x9a\xdc\xbc\x7e\x35\x4b\xe7\x31\x98\x75\x34\x4d\x72\x63\x2b\x88\x23\x0a\xa8\x23\xd7\x69\xf0\x03\x79\x16\x95\xd6\x78\x94\x06\x67\xa6\x6b\x8a\x7e\x23\xe7\x05\xcb\xa6\x22\x8f\xd9\x27\xd9\x99\x60\xa7\xd9\x99\x48\xe9\x94\x9d\x66\x6f\xc2\x7c\x1f\x02\x32\xab\xcf\xb3\x4b\x31\x4d\x62\xd6\xfd\x2c\x98\xfe\x56\xe4\x14\xc6\xb0\xca\x93\x9c\xf3\x62\xf2\x02\xfa\xc0\x3c\xe5\x7c\xb6\x93\x18\xa6\x87\x75\xe0\xbe\x80\xef\x5b\xc1\xa6\x99\xc8\x77\xa1\x9c\xd5\x97\x41\xec\xc5\xec\x8f\x29\x46\x0c\xaa\x02\x83\xaa\x56\xfd\x66\x76\x9e\xfd\x22\xb3\x5f\xdf\x89\xdd\xcf\x69\x76\xf6\x4e\xa4\x8c\x2d\x7c\x2b\x4b\x58\x08\x91\xb2\x58\x3c\xec\xf4\xdb\xa6\xb0\x7a\x56\x38\x59\xde\x01\xfa\xe1\x7a\x7e\x23\xce\x7f\x4f\x9e\x85\xc4\xc4\x79\xf2\x3c\x84\x11\xe7\xe2\x79\xc8\xbf\x28\x64\x5b\x70\x12\x6d\x7f\x20\xd9\x74\x9e\x7e\xf9\xc5\x57\xaf\xfe\xf8\x5f\xbe\xf8\x3f\xed\x73\x47\x89\xd0\x80\xc1\xe1\xc4\x63\xe9\xb7\xa6\x24\xb9\x91\x0a\xa9\x70\x20\xef\xa8\x94\x1e\xa8\x94\x58\xae\xa8\xbf\xa4\x30\xa2\x32\x1d\x50\x05\x45\xb7\x5c\x82\xa3\x0a\x6a\xd9\x69\xa4\x0a\x34\x20\x50\x65\x09\xb4\x07\x82\xfb\xd6\x3a\xa4\x5a\x19\xa9\xf5\x36\x39\xa8\xa5\xb1\x6a\x6d\x1d\xd5\x9d\x29\x51\x59\x43\xa5\x96\xde\x13\xdc\x23\x98\xca\xd3\x12\x90\x54\x4d\xaa\x19\xb8\x9c\x6d\x48\x19\xb2\x35\xa9\xbe\x60\x4a\xb0\x35\x69\x40\x32\xb0\x21\x07\xd8\x39\x43\x1e\xf0\x39\x31\xdf\xb5\xe0\xc8\x6f\x54\x48\x09\x57\xca\x13\xae\x9c\xdd\x10\xba\x2d\x85\x07\x6c\x6b\x5a\x4b\x47\x6b\xab\x2a\xda\xac\x94\x06\xda\x28\x5c\xd1\x56\x81\xae\xf6\xbc\xaf\x23\x07\x1e\xdc\x1a\xaa\xa8\xe8\x30\xea\x8c\xf4\x5e\x2d\x0d\x54\x3b\x55\x70\xce\xee\xca\x38\x06\xd3\x35\x21\x03\xdd\xdb\xf0\xa4\x0c\x82\xab\x65\x09\xd4\xca\xf2\x4e\x2e\x81\x5a\xa7\xd6\x12\xc3\x6c\x43\xbf\x80\x8a\xda\xae\xd0\xaa\xa4\x9f\xae\xdf\x5e\x27\xe3\x47\xb2\xa3\x35\x9d\xd6\xd4\x99\x0a\x6a\x65\xa0\xa2\x2b\x79\x95\x3c\xf1\x5e\x77\x60\x74\x1d\x50\x2d\xb5\x87\x43\xd0\xd0\xb0\x7a\xc0\xb9\x73\x72\x4b\x5f\x5b\xab\x41\x1a\x7a\x1b\xdc\x5c\x98\xae\x19\x2a\x88\x2e\x42\x3a\x74\xf9\x70\x47\xdf\x49\x5c\x7d\x84\xe7\xaa\x7f\xc0\x74\x5d\xdc\x42\x89\xf4\x03\x2c\x2f\xee\x5b\xfa\x11\x9d\x32\xcb\xc3\xd3\xfb\xc0\xe0\x9c\xdd\xa4\x22\x66\x37\x73\x41\x31\xe7\x9c\xcf\x93\x24\x65\x37\xe1\x4f\xcc\xd9\x52\x35\x22\x7d\x32\x2b\xce\xfb\x5e\xd6\x0f\xf9\x30\x52\x88\x7e\xd0\xd9\xfa\x08\x2b\x6a\xe3\xf0\x84\x4f\x38\xcf\x7b\xda\x3d\x5f\xb3\x2b\x8d\x8f\x77\xd9\x71\x8b\xf2\x7d\x32\x43\xdb\x0d\x9f\x47\xe9\x7a\x43\x93\xc9\x5f\x31\x30\xd5\x28\xe2\xef\x54\xbb\x73\x3d\xdb\x47\x0f\x3a\xf8\xc3\x77\xa8\xd4\x42\xa9\xa4\xfe\x66\x25\xdd\x7e\xeb\x4b\xed\x9c\x8c\xdd\x9c\xfc\x87\x66\xde\x8f\xcd\xbc\xff\x67\x64\x87\xdb\x7b\x24\x37\x9f\x8f\xf5\x8e\xc7\x7a\x11\x13\x7f\x4f\xc3\x79\xfa\xe8\x4e\x79\x3a\x7f\x92\xeb\xcf\x00\x00\x00\xff\xff\x03\xdb\x38\xed\x01\x08\x00\x00" func runtimeSyntaxJavascriptYamlBytes() ([]byte, error) { return bindataRead( @@ -2337,7 +2424,7 @@ func runtimeSyntaxJsonYaml() (*asset, error) { return a, nil } -var _runtimeSyntaxJuliaYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\xdd\x72\x9b\x30\x10\x85\xef\xfd\x14\x2a\x49\x6b\xb0\x07\x27\xb7\x61\xfa\xfb\x1a\x05\xe2\x11\x62\xb1\x37\x11\x2b\x57\x5a\x35\xe3\x76\xdb\x67\xef\x20\x27\x71\xed\xa4\x33\x1d\xae\x38\xe8\x7c\xbb\x7b\xb4\x0c\x68\x81\xf7\x3b\xa8\xd4\x5d\xb4\xa8\x67\xb3\x1e\x18\x0c\x57\x33\xa5\x94\x9a\x3e\x92\x1e\xa1\x52\x59\xd3\xac\xee\xec\x65\x96\xe4\x2d\xe8\x1e\x7c\xa5\xb2\xdb\x8b\x37\xab\xc5\x55\x0e\xf4\x5d\x2d\x8b\x4f\x09\x90\x2b\xb9\x2c\xb2\xd9\xcc\x47\x0b\xa1\x9a\xa5\xf3\x17\xaa\x8b\x68\xb9\x44\x52\xae\xbb\x03\xc3\x21\xc9\xa5\x32\x8e\x02\x6b\xe2\x55\xe7\x9c\x4d\x45\xba\x9c\x7d\x04\x19\xb4\x0d\x50\x34\x4d\x77\x28\x78\x82\xd0\xcc\x1e\xbb\xc8\x70\x4e\xa9\x54\xb6\x5e\xd7\x5f\xca\xaf\xba\xfc\x71\x5d\xde\xac\xdb\xe5\x7a\x7d\xf4\xf7\x30\x20\x21\xa3\xa3\x27\x1f\xf6\x40\x8c\x03\xa6\x51\x1e\x7d\xeb\xf6\x6f\xc0\xa2\xae\xab\xb0\xd3\x06\xaa\xb6\x5d\xd4\x79\x7b\xa4\xdd\xc3\xfe\xc1\xf9\xfe\x09\x15\x58\x33\x8c\x90\x7a\x98\x86\xe8\x60\x83\x24\x9d\x07\x7d\x2f\x46\xb3\xd9\x8a\x71\xc4\x48\xd3\x68\x91\xcc\xd4\x85\x80\x0d\x80\x83\x04\xf6\xd1\x70\x7a\x13\xa0\x5e\x06\x24\x6d\xed\x5e\x06\xe7\x65\x63\x5d\xa7\xad\x58\x67\xb4\x95\x34\xa6\xe0\x20\x48\xc6\xc6\x1e\x04\xc7\x9d\xf3\x2c\x31\x20\x6d\xc4\xc3\xb7\x88\x1e\x64\xd4\xc6\x3b\xd9\x79\x24\xb6\x24\x1e\x38\x7a\x12\xf6\x7b\x99\x2e\x59\x1e\xb6\x68\x41\x46\xd7\x47\x7b\x16\x6f\x0f\xc6\x79\xcd\xce\xbf\x4c\x67\x95\x98\x95\xca\x3e\x9f\x84\x7b\xf4\xba\x1d\x9c\x58\xc3\x7e\xec\x9c\x5d\x3d\xc9\x53\xba\xe5\x72\x71\x25\x1f\xde\xbe\xff\xf8\xee\xf7\x6d\x2b\x53\x44\x9a\x7a\x21\xc7\xe2\xbc\x60\x10\xa4\xd3\x76\x76\xda\x03\xf1\x16\x02\x9c\x41\x3b\xaf\xcd\x3d\x70\xa8\x54\x96\xd7\x79\xf1\xf3\xd7\x44\xab\xa5\x69\xda\xe2\xe8\xa6\x38\x76\xe0\x5f\x6c\xd9\x41\x3e\x5c\x51\x7d\x5d\xde\xb4\xcb\x54\xf3\xfc\x58\x60\x8f\xb4\x99\x8e\x65\x79\xd3\x34\xcd\x4a\xea\xdb\x26\x6b\x8b\x45\x93\xc9\xfc\x59\x99\xb7\xc5\x62\xfe\x4f\xf3\x63\x2b\x6a\xda\x0c\x9f\xb6\x22\x3d\xd9\xb3\x0e\xd4\xbf\xa2\x1e\xfe\x1a\x55\xb7\xff\xcd\x9d\xcf\xe7\xe7\xd0\x13\xe9\x15\xe2\x98\x16\xf5\x05\xe9\xe2\x9c\x73\xf9\x1a\xe5\x4f\x00\x00\x00\xff\xff\x44\x72\x62\x82\x30\x04\x00\x00" +var _runtimeSyntaxJuliaYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\xdd\x72\x9b\x3c\x10\x86\xcf\x7d\x15\xfa\x48\xbe\x1a\xec\xc1\x71\x8e\x32\x61\xfa\x97\x93\x5e\x44\x81\x30\x42\x2c\xb6\x12\xb1\x72\xa5\xa5\xa9\x9b\x4d\xaf\xbd\x83\xb0\xe3\xda\x71\x67\x3a\x1c\x80\x5e\xe9\x7d\xf6\x47\x4b\xab\x0d\xd0\x76\x03\x99\x78\xe8\x8d\x96\x93\x49\x03\x04\x8a\xb2\x89\x10\x42\x0c\x9b\x28\x3b\xc8\x44\x54\x14\x8b\x07\x73\x19\x05\x79\x0d\xb2\x01\x97\x89\xe8\xfe\xe2\xbf\xc5\xec\x2a\x06\xfc\x2e\xe6\xc9\xa7\x00\x88\x05\x5f\x26\xd1\x64\xe2\x7a\x03\x3e\x9b\x84\xf3\x17\xa2\xee\xb5\xa1\x54\xa3\xb0\xf5\x03\x28\xf2\x41\x4e\x85\xb2\xe8\x49\x22\x2d\x6a\x6b\x4d\x08\x52\xc7\xe4\x7a\xe0\x56\x1a\x0f\x49\x51\xd4\x63\xc0\x23\x84\x24\x72\xba\xee\x09\x4e\x29\x99\x88\xaa\x2a\xbf\x4b\xbf\xca\xf4\xe7\x32\xbd\xad\xca\x79\x55\x1d\xfc\x0d\xb4\x1a\x35\x69\x8b\x7b\x9f\x6e\x00\x49\xb7\x3a\x94\xb2\xf3\x55\xe5\x9f\x80\x59\x9e\x67\x7e\x23\x15\x64\x65\x39\xcb\xe3\xf2\x40\x7b\x84\xed\x93\x75\xcd\x1e\xe5\x49\x12\x74\x10\x72\x18\x8a\xa8\x61\xa5\x91\x6b\x07\xf2\x91\x95\x24\xb5\x66\x65\x91\x34\x0e\xa5\xf5\xa8\x86\x2c\x18\x8c\x07\xdd\xb2\x27\xd7\x2b\x0a\x2b\x06\x6c\xb8\xd5\x28\x8d\xd9\x72\x6b\x1d\xaf\x8c\xad\xa5\x61\x63\x95\x34\x1c\xca\x64\xdd\xb2\x46\x65\xfa\x06\x58\x77\x1b\xeb\x88\x7b\xaf\x71\xc5\x0e\xbe\xf5\xda\x01\x77\x52\x39\xcb\x1b\xa7\x91\x0c\xb2\x03\xea\x1d\x32\xb9\x2d\x0f\x97\xcc\x4f\x6b\x6d\x80\x3b\xdb\xf4\xe6\xa4\xbd\x0d\x28\xeb\x24\x59\xf7\xb6\x3b\x8b\xc0\xcc\x44\xf4\xf9\xa8\xb9\x07\xaf\xdd\xc0\x91\xd5\x6f\xbb\xda\x9a\xc5\x5e\x1e\xba\x9b\xce\x67\x57\xfc\xe1\xff\xf7\x1f\xdf\xfd\xba\x2f\x79\x68\x91\xc4\x86\xd1\x12\x5b\xc7\xda\xb3\xc6\xe3\x74\x36\xd2\x01\xd2\x1a\x3c\x9c\x40\x6b\x27\xd5\x23\x90\xcf\x44\x14\xe7\x71\xf2\xfc\x32\xd0\x72\x2e\x8a\x32\x39\xb8\xb1\xef\x6a\x70\x6f\xa6\x6c\x94\x77\x57\x94\x2f\xd3\xdb\x72\x1e\x57\xe3\x3b\x99\xf1\xf2\xc7\xf0\x29\xd3\xf6\x2e\xfd\xb2\xdf\xd8\xaf\x86\xed\x3a\x5f\x5e\x8f\xfa\xf5\x28\xd8\x7c\x99\xde\xec\x4e\xde\x0c\xd2\x58\xc2\x69\x54\x4f\x4e\xe3\x6a\x88\x1a\xc5\x45\x51\x14\x0b\xce\xef\x8b\xa8\x4c\x66\x45\xc4\xd3\x57\x65\x5a\x26\xcf\xd7\x2f\xd3\xbf\xda\x77\xb5\x89\x61\xd4\x5c\x18\xb3\xf0\x44\xaf\x3a\x60\x73\x46\x1d\x7f\x43\x91\x97\xff\xcc\x9d\x4e\xa7\xa7\xd0\x23\xe9\x0c\xb1\x0b\x93\xff\x86\x74\x71\xca\xb9\x3c\x47\xf9\x1d\x00\x00\xff\xff\x4f\x10\x5c\xba\x81\x04\x00\x00" func runtimeSyntaxJuliaYamlBytes() ([]byte, error) { return bindataRead( @@ -2677,7 +2764,7 @@ func runtimeSyntaxNginxYaml() (*asset, error) { return a, nil } -var _runtimeSyntaxNimYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x56\x7b\x6f\x1c\x35\x10\xff\x3f\x9f\xe2\xb8\x16\x72\x97\x90\xa3\x49\xab\x50\x8e\x47\x28\x6d\x82\x2a\x01\x95\x48\x91\x22\xd6\xdb\x32\x6b\xcf\xde\xba\xf1\x63\xf1\x23\xc9\xb5\x53\x3e\x3b\x1a\xef\xde\x25\xa0\x22\x1a\x29\xe3\x79\x78\x6d\xcf\x6f\x7e\x33\xba\x56\x1b\x4c\xeb\x1e\x97\x13\xa7\xed\xce\x8e\xc2\x84\x32\x2d\x27\x3b\x93\xc9\x64\xc2\x31\x07\x16\x97\x93\xa9\x10\x0b\xa7\xed\xfd\xe9\xce\x4e\xc8\x06\xe3\xb2\xc4\x0f\x26\x7d\xc0\x3e\x78\xb9\x9c\x4c\x2b\x21\xde\x09\x41\xb5\x10\xcd\x0c\x92\xb7\x64\x74\xa2\xb8\xb6\xa4\x15\xba\x44\x12\x8c\x21\x73\x05\x26\x23\x45\xad\x10\xdb\x16\x65\x22\xe7\xef\x18\x3d\x04\xb0\xb4\x42\x87\x41\xcb\xc1\xb0\x5e\x65\x83\xc4\x0f\x24\x83\x89\xae\x20\x90\xf4\x2e\x26\x0a\x18\xb3\x49\xc4\xb7\x93\xc5\xd4\x79\x45\x3a\x61\x80\xe4\xcb\x8e\x2b\x0c\x09\x03\x59\x90\xc1\x53\x42\xdb\x1b\x48\x48\xad\x46\xa3\x08\x5d\xb6\x83\xd6\xfa\xc0\x27\x1a\x68\xd0\x90\xbb\xac\xe0\xe0\xed\x93\x83\xdf\xeb\x7d\x02\xa3\x21\x92\xf3\x65\x9d\x0b\xd1\x54\x42\xbc\xe7\xf4\xa6\x63\xe2\x31\x41\x42\x8b\x2e\x15\x6c\x9a\x19\x28\x15\x08\x9c\x22\x88\x04\xd1\x12\x43\xa0\x25\x35\xda\x29\x6a\x8c\x97\x97\xd4\x04\x84\x4b\x92\x10\x91\x45\xe2\x47\x4a\xec\xd3\x98\x8e\xf4\x2e\x69\x97\xf1\xce\xdb\x15\xb6\x2c\x75\x94\x10\x14\xaf\x49\x3b\x99\x48\xe9\x2b\x52\x9e\xd0\xe8\x96\xd0\x44\x24\x74\x43\x4a\x84\x37\xe5\x40\xbc\xe9\x7d\x48\xd4\x6a\x07\xc6\xac\x39\x47\x6a\x83\xb7\xd4\x66\x27\x37\xe8\x92\x6e\x49\xdb\xb2\x4f\x3b\xd2\x4e\x9a\xac\x90\xb4\x4b\x18\x5a\x90\x48\x3a\x92\x8e\xce\xa7\x5b\x4c\x19\xfd\x01\xcd\x11\x6d\xab\x6f\xb4\xe3\x02\x91\xd3\x86\x78\xaf\xf3\x49\x3b\xf2\xcd\x1b\x2e\xa6\x6f\xc9\x07\xf2\x79\x2c\x51\x9f\x02\x05\xd0\x11\x29\x60\x4b\x01\x53\x0e\x8e\x62\x67\x28\x76\x81\x18\x4c\x2d\x6f\xcb\x94\xc2\x9a\x52\xee\x37\x85\xcf\x51\xbb\x55\x29\xfd\x75\x87\x8e\xae\x3b\x6d\x90\xae\x75\xea\x8a\xe0\x2b\x6e\x7c\xa0\x35\x57\x94\x4b\xf5\x5f\x25\x52\xd8\x07\x94\x90\x50\x91\xf3\xe7\x5a\xe1\xe9\x40\xbb\x52\x80\x90\x25\x67\xa9\x70\xab\xfa\x2b\x0c\x41\x2b\x2c\xef\x1f\x78\x67\x7b\x6d\xf0\xa5\xb6\x48\xce\xff\x3a\xa4\x00\x72\x2d\x8d\x96\x03\xda\x14\x3b\x30\xc6\x5f\x53\x9f\x03\x32\x0d\x7e\xf1\xe7\x09\xe4\xe5\x59\x00\x8b\x84\x21\x70\x29\x20\x81\xa1\x6b\x08\x8e\x93\xea\xb4\x4b\x64\xb4\xc3\x22\x20\x9c\x4b\x70\xa7\x4e\x95\xbb\x72\x42\xf5\xa3\x4f\x9e\xb2\x0b\xde\x18\xd2\xd6\xa2\xd2\x8c\x8f\xec\x50\x5e\x46\x6a\x7c\x76\x2a\x3e\x1d\x0c\x7e\x6e\x6b\xfc\xf5\x68\x3a\x6d\x46\x0d\x62\xc4\xc0\x00\x7b\x17\x37\xf7\xc6\x72\x71\x24\xdf\x27\x6d\xf5\xdb\x12\xa4\x1e\x52\xc2\xe0\x62\xe9\x55\xa6\x21\xf5\x39\x76\xd4\xfb\x9e\x56\xc6\x37\x60\xa8\x0f\xb0\xb2\xc0\x04\xc3\xa0\x19\x59\x30\xd4\xe8\x14\xf5\x5b\xa4\x2b\x6f\x20\x71\x61\x9c\x7f\x86\xd2\x50\x87\xa0\x30\x30\xb5\xbc\xed\x0d\x26\x3c\x2f\xc0\x6e\x50\xe4\x7c\x2f\xa9\x87\x18\x9f\x16\xf9\x13\xa1\xd5\x69\xe4\xa4\xdc\xac\x7d\x3f\x6a\xbe\x79\x23\x49\x7a\x85\x2b\x74\xe5\x78\xed\x98\x65\xe7\xc9\x32\x81\x93\xc2\x96\x31\x8c\x29\x8c\xda\x15\x04\x08\xab\x38\xf6\x82\x24\xbc\xe1\xd4\xa8\x59\x4b\xdf\xaf\xa9\x59\x33\x09\xb3\x1b\xb2\x96\x97\xa8\x28\xbb\x02\x2a\x2a\x52\x6b\x67\x74\x43\x52\xf1\x35\xa9\x0b\x08\x8a\x56\x32\x42\x8b\xa3\xc5\x5c\x58\x65\xee\x49\xee\xeb\x78\x97\x17\xff\xa0\xdf\xda\x36\xde\x2c\x7c\x3f\x34\x10\x8f\xc8\x6f\x85\xd8\x17\xe2\x40\x88\xbd\x2f\xbe\xf9\xee\x7b\x21\xee\xff\xf5\xd9\xa7\x42\xd0\x27\x42\x9c\x08\xf1\x4a\x88\xc5\x52\x08\x21\xea\xfd\xed\x11\x3d\x4a\x0d\xa6\xf0\xf7\x9d\x10\x0b\x12\x62\x21\xc4\x7b\x12\xa2\xda\x5a\x35\x09\x31\xdb\x5a\x73\xfa\x9a\x3e\xa7\x3f\x3e\xdc\x02\x0b\x21\x16\x9b\xc8\x30\xf2\x4b\x5f\x30\x05\x25\x0b\xed\xd2\x63\x16\x87\xc7\x2c\x1f\x1e\xb1\x3c\x7e\x44\x99\x63\xb9\x04\xf3\x10\xcd\x43\x38\x0f\xf1\xd6\x78\x48\x83\x7c\x78\x34\xac\xc7\x8f\xa8\xf1\xde\x90\xec\x20\x0c\xb3\x29\xa6\xc0\x7c\x97\xe3\x0a\x21\xc0\x9a\x7c\x8f\x6e\xd0\x22\xfe\xb9\xad\xd9\xd0\xf9\xe3\x18\x89\x3c\xf4\xbd\x56\x04\x39\x79\x92\xb1\xe3\x91\x15\xc0\xad\xb0\x8c\x9d\x97\x94\x1d\xa7\xa2\xca\xa4\x50\x18\xe5\xdd\x12\x8c\x49\xee\x56\xfa\x79\x3d\x7b\x4c\x87\xc7\xf4\xf0\x88\x8e\x1f\xcd\x4f\x84\x68\x68\xb7\xca\xbf\x7d\xc8\xdb\x9e\xd5\xb3\xe2\xa0\xc3\xa3\xc7\x1b\xa7\x7a\x56\xdf\x39\xb7\x4c\x0c\x70\x69\xe1\xb2\x6d\x30\x0c\x38\x56\x0f\x0e\xbe\xaa\xf7\xff\x6f\xd7\x83\xea\xe6\xa2\xe6\xad\x4f\x0e\xce\xe0\xa0\x2d\xea\xeb\x51\xff\x88\x8f\xbd\x7c\xca\x9f\x7c\x59\xc4\xeb\x8f\xf9\xa2\xf9\xa1\xae\x1e\x1c\xf2\xff\x47\x6c\x2f\xaf\xa9\x67\xcc\xa7\x93\xf9\x60\xec\xcf\x4f\x2a\x3c\xad\x2b\x26\x6e\x79\x6d\x3d\xfa\x3f\x74\xd6\x50\x5d\x3e\x6b\x3a\x63\x2a\x2f\xa8\x7a\x25\xa6\xf5\x7c\x4f\x4c\x69\x77\xeb\xd9\xad\xe7\x7b\xbb\xb7\xdf\xda\x91\xa0\x55\xb5\x8c\x3d\x48\x5c\xd6\xf5\xde\xbd\xc5\xde\xfd\x7f\xef\x28\x26\xff\xc5\x04\x61\x60\xf4\x3d\x21\xaa\xe9\xd6\x8f\x4e\x15\x6f\x2d\xc4\xbd\x5b\xef\xf0\x7b\x65\x52\xd5\x3b\x1b\x56\x78\xe5\x97\x93\xe9\xec\xe5\x8b\x67\x2f\xe8\xec\xf9\xc5\xcf\xa7\x74\x71\x71\x31\x5f\x9e\x4c\x77\xfe\x0e\x00\x00\xff\xff\x35\x7c\xeb\x87\x0d\x09\x00\x00" +var _runtimeSyntaxNimYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x56\xeb\x6e\x1b\xc7\x0e\xfe\xef\xa7\xd0\x51\x7c\x8e\x25\xfb\x58\x8d\x9d\xc0\x4d\xd5\x8b\x9b\x26\x76\x11\xa0\x6d\x80\x3a\x05\x8c\xee\x6c\x52\xee\x0c\x57\x3b\xf1\x5c\xb6\x73\xb1\xad\x84\xe9\xb3\x17\x9c\x5d\xc9\x6e\x91\xa2\x11\x20\xce\x90\x9c\x1b\x3f\x7e\xa4\xd4\x6a\x83\x69\xdd\xe3\x72\xe2\xb4\xdd\xd9\x51\x98\x50\xa6\xe5\x64\x67\x32\x99\x4c\xd8\xe7\xc0\xe2\x72\x32\x15\x62\xe1\xb4\xdd\xa5\x61\x8c\xbb\xe4\xb4\x5d\xc8\x76\x35\xdd\xd9\x09\xd9\x60\x5c\x96\x0d\x87\x93\x3e\x60\x1f\xbc\x5c\x4e\xa6\x95\x10\xef\x85\xa0\x5a\x88\x66\x06\xc9\x5b\x32\x3a\x51\x5c\x5b\xd2\x0a\x5d\x22\x09\xc6\x90\xb9\x06\x93\x91\xa2\x56\x88\x6d\x8b\x32\x91\xf3\xf7\x94\x1e\x02\x58\x5a\xa1\xc3\xa0\xe5\xa0\x58\xaf\xb2\x41\xe2\x17\x93\xc1\x44\xd7\x10\x48\x7a\x17\x13\x05\x8c\xd9\x24\xe2\xdb\xc9\x62\xea\xbc\x22\x9d\x30\x40\xf2\x65\xc5\x35\x86\x84\x81\x2c\xc8\xe0\x29\xa1\xed\x0d\x24\xa4\x56\xa3\x51\x84\x2e\xdb\x61\xd6\xfa\xc0\x27\x1a\x68\xd0\x90\xbb\xaa\xe0\xf0\xdd\xd3\xc3\x5f\xeb\x03\x02\xa3\x21\x92\xf3\x65\x9c\x0b\xd1\x54\x42\x7c\xe0\xf0\xa6\x63\xe0\x31\x41\x42\x8b\x2e\x15\xb0\x9a\x19\x28\x15\x08\x9c\x22\x88\x04\xd1\x12\x43\xa0\x25\x35\xda\x29\x6a\x8c\x97\x57\xd4\x04\x84\x2b\x92\x10\x91\x45\xe2\x47\x4a\xec\xd3\x18\x8e\xf4\x2e\x69\x97\xf1\xde\xdb\x15\xb6\x2c\x75\x94\x10\x14\x8f\x49\x3b\x99\x48\xe9\x6b\x52\x9e\xd0\xe8\x96\xd0\x44\x24\x74\x43\x48\x84\xb7\xe5\x40\xbc\xed\x7d\x48\xd4\x6a\x07\xc6\xac\x39\x46\x6a\x83\xb7\xd4\x66\x27\x37\xe8\x92\x6e\x49\xdb\xb2\x4e\x3b\xd2\x4e\x9a\xac\x90\xb4\x4b\x18\x5a\x90\x48\x3a\x92\x8e\xce\xa7\x3b\x4c\x19\xfd\x01\xcd\x11\x6d\xab\x6f\xb5\xe3\x04\x91\xd3\x86\x78\xad\xf3\x49\x3b\xf2\xcd\x5b\x4e\xa6\x6f\xc9\x07\xf2\x79\x4c\x51\x9f\x02\x05\xd0\x11\x29\x60\x4b\x01\x53\x0e\x8e\x62\x67\x28\x76\x81\x18\x4c\x2d\xef\xd2\x94\xc2\x9a\x52\xee\x37\x89\xcf\x51\xbb\x55\x49\xfd\x4d\x87\x8e\x6e\x3a\x6d\x90\x6e\x74\xea\x8a\xe0\x2b\x6e\x7d\xa0\x35\x67\x94\x53\xf5\x4f\x29\x52\xd8\x07\x94\x90\x50\x91\xf3\x17\x5a\xe1\xd9\x40\xbb\x92\x80\x90\x25\x47\xa9\x70\x3b\xf5\xd7\x18\x82\x56\x58\xde\x3f\xf0\xce\xf6\xda\xe0\x2b\x6d\x91\x9c\xff\x79\x08\x01\xe4\x5a\x1a\x2d\x07\xb4\x29\x76\x60\x8c\xbf\xa1\x3e\x07\x64\x1a\xfc\xe4\x2f\x12\xc8\xab\xf3\x00\x16\x09\x43\xe0\x54\x40\x02\x43\x37\x10\x1c\x07\xd5\x69\x97\xc8\x68\x87\x45\x40\xb8\x90\xe0\xce\x9c\x2a\x77\xe5\x84\xea\x7b\x9f\x3c\x65\x17\xbc\x31\xa4\xad\x45\xa5\x19\x1f\xd9\xa1\xbc\x8a\xd4\xf8\xec\x54\x7c\x36\x28\xfc\xdc\xd6\xf8\x9b\x51\x75\xda\x8c\x33\x88\x11\x03\x03\xec\x5d\xdc\xdc\x1b\xcb\xc5\x91\x7c\x9f\xb4\xd5\xef\x8a\x93\x7a\x48\x09\x83\x8b\xa5\x56\x99\x86\xd4\xe7\xd8\x51\xef\x7b\x5a\x19\xdf\x80\xa1\x3e\xc0\xca\x02\x13\x0c\x83\x66\x64\xc1\x50\xa3\x53\xd4\xef\x90\xae\xbd\x81\xc4\x89\x71\xfe\x39\x4a\x43\x1d\x82\xc2\xc0\xd4\xf2\xb6\x37\x98\xf0\xa2\x00\xbb\x41\x91\xe3\xbd\xa2\x1e\x62\x7c\x56\xe4\x0f\x84\x56\xa7\x91\x93\x72\x33\xf6\xfd\x38\xf3\xcd\x5b\x49\xd2\x2b\x5c\xa1\x2b\xc7\x6b\xc7\x2c\xbb\x48\x96\x09\x9c\x14\xb6\x8c\x61\x4c\x61\x9c\x5d\x43\x80\xb0\x8a\x63\x2d\x48\xc2\x5b\x0e\x8d\x9a\xb5\xf4\xfd\x9a\x9a\x35\x93\x30\xbb\x21\x6a\x79\x85\x8a\xb2\x2b\xa0\xa2\x22\xb5\x76\x46\x37\x24\x15\x5f\x93\xba\x80\xa0\x68\x25\x23\xb4\x38\x6a\xcc\x85\x55\xe6\x9a\xe4\xba\x8e\xf7\x79\xf1\x17\xfa\xad\x6d\xe3\xcd\xc2\xf7\x43\x01\x71\x8b\xfc\x5a\x88\x03\x21\x0e\x85\xd8\xff\xec\xab\x6f\xbe\x15\x62\xf7\x8f\xff\xfd\x57\x08\xfa\x8f\x10\xa7\x42\xbc\x16\x62\xb1\x14\x42\x88\xfa\x60\x7b\x44\x8f\x52\x83\x29\xfc\x7d\x2f\xc4\x82\xdb\xb1\x10\x1f\x48\x88\x6a\xab\xd5\x24\xc4\x6c\xab\xcd\xe9\x4b\xfa\x3f\xfd\xf6\xf1\x12\x58\x08\xb1\xd8\x78\x86\xdf\x80\x52\x17\x4c\x41\xc9\x42\xbb\xf4\x84\xc5\xd1\x09\xcb\x47\xc7\x2c\x4f\x1e\x53\x66\x5f\x2e\xce\x3c\x78\xf3\xe0\xce\x83\xbf\x35\x1e\xd2\x20\x1f\x1d\x0f\xe3\xc9\x63\x6a\xbc\x37\x24\x3b\x08\x43\x6f\x8a\x29\x30\xdf\xe5\x38\x42\x08\xb0\x26\xdf\xa3\x1b\x66\x11\x7f\xdf\xe6\x6c\xa8\xfc\xb1\x8d\x44\x6e\xfa\x5e\x2b\x82\x9c\x3c\xc9\xd8\x71\xcb\x0a\xe0\x56\x58\xda\xce\x2b\xca\x8e\x43\x51\xa5\x53\x28\x8c\xf2\x7e\x0a\xc6\x20\xf7\x2a\xfd\xa2\x9e\x3d\xa1\xa3\x13\x7a\x74\x4c\x27\x8f\xe7\xa7\x42\x34\xb4\x57\xe5\x5f\x3e\x66\x6d\xcf\xeb\x59\x31\xd0\xd1\xf1\x93\x8d\x51\x3d\xaf\xef\x9d\x5b\x3a\x06\xb8\xb4\x70\xd9\x36\x18\x06\x1c\xab\x87\x87\x5f\xd4\x07\xff\xb6\xea\x61\x75\x7b\x59\xf3\xd2\xa7\x87\xe7\x70\xd8\x96\xe9\x9b\x71\xfe\x09\x9b\xbd\x7c\xc6\x5b\x3e\x2f\xe2\xcd\xa7\xec\x68\xbe\xab\xab\x87\x47\xfc\xfd\x84\xe5\xe5\x35\xf5\x8c\xf9\x74\x3a\x1f\x94\x83\xf9\x69\x85\x67\x75\xc5\xc4\x2d\xaf\xad\x47\xfb\xc7\xce\x1a\xb2\xcb\x67\x4d\x67\x4c\xe5\x05\x55\xaf\xc5\xb4\x9e\xef\x8b\x29\xed\x6d\x2d\x7b\xf5\x7c\x7f\xef\x6e\xaf\x1d\x09\x5a\x55\xcb\xd8\x83\xc4\x65\x5d\xef\x3f\x58\xec\xef\xfe\x7d\x45\x51\xf9\x13\x13\x84\x81\xd1\x0f\x84\xa8\xa6\x5b\x3b\x3a\x55\xac\xb5\x10\x0f\xee\xac\xc3\xff\x95\x49\x55\xef\x6c\x58\xe1\x95\x5f\x4e\xa6\xb3\x57\x2f\x9f\xbf\xa4\xf3\x17\x97\x3f\x9e\xd1\xe5\xe5\xe5\x7c\x79\x3a\xdd\xf9\x33\x00\x00\xff\xff\x36\xeb\x3a\xbe\x1e\x09\x00\x00" func runtimeSyntaxNimYamlBytes() ([]byte, error) { return bindataRead( @@ -3037,7 +3124,7 @@ func runtimeSyntaxPuppetYaml() (*asset, error) { return a, nil } -var _runtimeSyntaxPython2Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x55\x4d\x73\xe3\x36\x0c\xbd\xfb\x57\x68\x9d\xb4\x71\x92\xda\xdb\x6b\xdd\xaf\xed\x74\xa6\xc7\x9e\x7a\xaa\xe5\x6a\x28\x11\xb2\xd8\xf0\x6b\x40\xc8\xb6\x52\xf4\xbf\x77\x48\x4a\xb6\xe3\x8d\xa7\xbd\x74\x32\x31\x9e\x61\x02\x7c\x78\x04\xc1\x56\x69\xa0\xc1\xc3\xba\xf0\x03\x75\xce\xce\x66\x12\x08\x1a\x5a\xcf\x8a\xa2\x28\xe2\xaf\x56\x18\x58\x17\xf3\xb2\x5c\xf9\xe1\x7e\x9e\xdc\x1d\x08\x09\xb8\x2e\xe6\x7f\xdc\x7d\x58\x3d\x7d\x5c\x80\xdd\x17\xcf\x8f\x3f\xe6\x0c\x8b\x82\xef\x1f\xe7\xb3\x19\xf6\x1a\xc2\x7a\x96\x02\xee\x8a\xba\x57\x9a\x96\xca\x16\xae\xfe\x13\x1a\x0a\xc9\xbd\x2c\x1a\x67\x03\x09\x4b\x69\x83\x7a\xf1\xab\xb3\xc0\x01\x74\xcb\xbf\x61\x0f\xfc\x8b\xd0\x01\x1e\xcb\xb2\xce\xdb\xbe\xc9\x23\x88\x50\xd5\x3d\xc1\x8d\x54\x55\x55\x8b\x00\xa1\xaa\xb8\xaa\x52\x90\xb2\x09\x37\x5a\x84\xec\x95\x50\xf7\xbb\x8c\x54\x43\x19\xb8\x26\xd9\x58\x77\x02\x06\x4c\x0d\x18\x46\x4c\x9d\x93\x19\x47\x51\x12\x88\x64\xab\xea\x06\xc7\xb6\xb7\x0d\x29\x67\x27\x8a\x4a\x82\x25\xd5\xaa\xa4\x5d\x24\x29\xea\xc0\xc2\x7b\x3d\x70\x23\xb4\x16\xb5\x06\x6e\x3a\xe4\xc6\x78\x6e\x9c\xf1\x4a\x03\x4b\xd0\xb1\x54\x96\x2a\xfe\xef\x8d\x93\x0c\x7b\xa1\x19\x8e\xd0\xa4\x8f\xc8\x95\x5b\xa5\x09\x90\x5b\x87\x46\x10\xef\x80\x52\xcc\x4e\xbb\x5a\xe8\xc0\x9d\x08\xe9\x7b\x27\x42\xc7\x1d\x68\xcf\x1d\x1c\x59\x49\x56\xd6\xf7\xc4\xca\x12\xa0\x65\x15\x54\x52\xb0\x01\x56\x21\xf4\x75\x52\x8a\x35\x58\xd6\xae\x89\x69\x8c\x38\xb2\x51\x96\x2d\x1c\x89\x5d\x43\xec\x3c\x58\x76\x28\xd9\xbb\x03\xa3\xb0\x3b\x60\x14\x87\x2a\x67\x45\x90\x7d\x03\x8c\xa0\x9d\x90\x8c\xe0\x91\xd1\xf5\x56\x72\x18\xd9\xf5\x56\xc5\x62\xf7\x02\x03\xbf\x2a\xcf\x55\xa5\x8c\x77\x48\xd7\x72\x06\x0f\x8d\x12\xba\xc8\xfa\x17\x51\xfa\x9b\x82\x56\x95\xa8\xf3\x09\x09\x29\xb3\xb5\xd9\x46\x81\x33\x30\x3e\x5b\x07\xd8\xc0\x08\x8d\xd7\x70\x1c\xb1\x6d\x04\x4d\x90\x84\xb2\x53\xb7\xe8\xc9\x46\xf6\x13\x56\x04\xe6\xaa\x87\x40\x07\xad\xc6\xcc\x52\xed\x27\x6b\x5c\x26\xd2\x6a\x37\xe6\x1f\x8f\x69\xc2\xa7\x54\x3b\xa0\x73\x86\x78\x66\x19\x8c\x04\x95\x55\x34\x82\xc9\xee\x27\x0b\x98\x5d\x1a\x72\xb3\x6b\x67\x73\x87\xeb\xd0\xa9\x36\xff\x36\xf1\x30\x7d\x2e\xc8\x42\x5e\x62\x9d\x7d\x05\x74\x09\xbb\xb1\x16\x97\xc9\x79\x17\x46\x7b\x48\x16\x27\x71\x71\x52\x17\x27\x55\x71\xaa\x18\x2f\x4a\x46\xf0\x30\xd6\x1c\xfb\x20\x83\x0b\x4a\x78\x5a\x38\x91\xc2\x71\x67\x3c\x6d\x89\x17\xcb\x2f\x61\x5f\x67\x70\x1c\x23\xc2\x85\xa8\xe1\x42\xd4\x70\x29\x6a\x98\x16\x8c\xd1\x29\xf8\x6d\xd7\xc5\xa1\x38\xb5\x59\x1e\x90\xa9\xc1\xd2\x50\x21\x54\x76\xc7\xb5\x73\x9a\xeb\xbe\x6d\x01\xb9\x1e\x08\x04\xa2\x18\x12\x0a\x9c\xee\x4e\x6e\x58\x1e\xbb\x8b\x63\x87\x30\xd8\xde\x00\x0a\x4a\x57\x16\x38\x35\x03\xb7\xe8\x5e\xc1\x06\x48\x57\x91\xb5\x0a\xc4\xf1\xe4\xd8\x08\xcf\x06\x8c\xc3\x61\xaf\xe0\xc0\x79\x74\xb2\x47\xe7\x01\x69\x60\x84\x3d\x60\x80\x74\xa3\x38\x15\xc7\x81\x04\xa9\x66\xdc\x38\x10\x72\xe8\x3d\x20\x53\xef\x35\x70\x2c\x23\xdd\x3a\x27\x81\x8f\xe9\xbe\xbe\xad\x59\x42\x1b\xbb\xeb\xd6\xc4\x92\xd0\x16\x1b\xb1\x7c\xfd\x69\xf9\x7b\xf5\xf5\xf2\x9b\xed\xf3\x39\xf2\x05\x86\x83\x43\x39\x85\x45\x1a\x60\xe0\x34\x8c\x85\x95\x2c\x02\x8b\x10\x00\x89\x6b\x04\xf1\x92\x25\xe2\x78\xc7\x94\xed\xe3\x9c\x6b\xe3\xac\x63\xd0\xaa\x65\xd0\x01\x18\x8e\x0d\x78\xe2\x56\x59\xa1\xf5\x10\x67\x5b\x14\xca\x8c\x53\x8d\x55\xcb\x79\x5e\xb0\x8a\xb3\x8b\xb5\x30\xb5\x14\x6c\x1d\xb1\x43\xf6\x31\xb9\xc7\xa8\x27\x0a\x15\xe2\x1c\xa2\x1e\x2d\x13\x0e\x7c\xe8\xa2\xf4\x07\x45\x1d\x0f\x0a\xb4\xbc\x16\xa1\x71\x28\xc8\xe1\x54\x4c\x8d\x6a\xd7\xd1\x0e\x01\xec\xba\x98\x7f\x5a\x3d\x6d\x16\xdb\xf3\xf2\x78\x16\x97\xab\x2f\x4b\x5f\x6c\x56\xeb\x6f\xbf\x7a\x7e\xe2\xef\x3f\x94\xe5\x17\x9f\xb6\xfc\x1d\xff\xc0\x1f\x79\xc9\x5f\x3e\x9e\x13\x78\x81\x60\xa9\x83\x00\xef\xa7\x58\x3c\xfe\xf5\xf7\x96\xcb\x72\xc3\x65\xb9\xbd\x88\xb3\x7d\x7a\x9a\xae\x5e\xbf\x55\x76\x67\xdd\x37\xe9\x94\x52\x75\xa7\x65\x26\x25\x1e\xb3\x14\x71\x2f\x4c\xa7\x94\xfe\xe6\x27\x3f\x58\xf9\x8e\x37\xbf\xe9\xc5\x66\xfb\xaf\xf9\x1e\x1e\x1e\xae\x93\xbd\x71\xbd\x93\x69\x2c\x20\xdf\xae\xf7\x18\x7e\xce\xee\xec\x09\x2f\xca\xa7\xa2\xcb\x72\x75\xbd\xcb\xe9\xeb\xf5\x4e\xf9\x61\xf9\xb9\x13\x78\x0e\xfd\xaf\x74\x3e\x2f\xef\xff\x24\x73\x43\xe5\xbb\x6b\x12\xf7\xef\x2a\xfc\x4f\x00\x00\x00\xff\xff\xcc\x2b\xa2\xe6\xe5\x09\x00\x00" +var _runtimeSyntaxPython2Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x55\x4d\x93\x23\x35\x0c\xbd\xe7\x57\xf4\x66\x17\x36\xb3\x4b\xb2\x5c\x09\x5f\x4b\x51\xc5\x91\x13\x27\xd2\xa1\xcb\x6d\xab\xd3\x66\xfc\x55\xb2\x3a\x49\x0f\xe2\xbf\x53\xb6\xbb\x93\x4c\x76\xa7\xe0\x42\x4d\x4d\xfc\xa2\x58\xf2\xd3\x93\x2c\x77\xda\x00\x8d\x01\xb6\x55\x18\xa9\xf7\x6e\xb1\x50\x40\x20\x69\xbb\xa8\xaa\xaa\x4a\xbf\x3a\x61\x61\x5b\x2d\xeb\x7a\x13\xc6\x37\xcb\x6c\xee\x41\x28\xc0\x6d\xb5\xfc\xe3\xf5\xab\xcd\xbb\x0f\x2b\x70\xc7\xea\xfd\xc3\x8f\x25\xc2\xaa\xe2\x37\x0f\xcb\xc5\x02\x07\x03\x71\xbb\xc8\x0e\xaf\xab\x76\xd0\x86\xd6\xda\x55\xbe\xfd\x13\x24\xc5\x6c\x5e\x57\xd2\xbb\x48\xc2\x51\x3e\xa0\x5d\xfd\xea\x1d\x70\x04\xd3\xf1\x6f\x38\x00\xff\x22\x4c\x84\x87\xba\x6e\xcb\xb1\xcf\xe2\x08\x22\xd4\xed\x40\xf0\x42\xa8\xa6\x69\x45\x84\xd8\x34\xdc\x34\xd9\x49\xbb\x8c\xa5\x11\xb1\x58\x15\xb4\xc3\xa1\x20\x2d\xa9\x00\x2f\xf3\x9a\xf2\xce\xc0\x82\x6d\x01\xe3\x84\xa9\xf7\xaa\xe0\x24\x4a\x06\x89\x6c\xd3\xbc\xc0\xb1\x1b\x9c\x24\xed\xdd\x4c\x51\x2b\x70\xa4\x3b\x9d\xb5\x4b\x24\x45\x1b\x59\x84\x60\x46\x96\xc2\x18\xd1\x1a\x60\xd9\x23\x4b\x1b\x58\x7a\x1b\xb4\x01\x56\x60\x52\xaa\xac\x74\xfa\x3f\x5a\xaf\x18\x8e\xc2\x30\x9c\x41\xe6\x8f\xc4\x95\x3b\x6d\x08\x90\x3b\x8f\x56\x10\x1f\x80\xb2\xcf\xc1\xf8\x56\x98\xc8\xbd\x88\xf9\x7b\x2f\x62\xcf\x3d\x98\xc0\x3d\x9c\x59\x2b\xd6\x2e\x0c\xc4\xda\x11\xa0\x63\x1d\x75\x56\x50\x02\xeb\x18\x87\x36\x2b\xc5\x06\x1c\x1b\x2f\x53\x18\x2b\xce\x6c\xb5\x63\x07\x67\x62\x2f\x89\x7d\x00\xc7\x1e\x15\x07\x7f\x62\x14\xee\x00\x8c\xe2\xd4\x94\xa8\x08\x6a\x90\xc0\x08\xc6\x0b\xc5\x08\x01\x19\xfd\xe0\x14\xc7\x89\xdd\xe0\x74\x4a\xf6\x28\x30\xf2\x93\x0e\xdc\x34\xda\x06\x8f\x74\x2f\x67\x0c\x20\xb5\x30\x55\xd1\xbf\x4a\xd2\xbf\x28\x68\xd3\x88\xb6\x54\x48\x28\x55\x56\x57\xd6\x24\x70\x01\x36\x94\xd5\x03\x4a\x98\xa0\x0d\x06\xce\x13\x76\x52\xd0\x0c\x49\x68\x37\x77\x8b\x99\xd7\xc4\x7e\xc6\x9a\xc0\xde\xf5\x10\x98\x68\xf4\x14\x59\xe9\xe3\xbc\x5a\x5f\x88\x74\xc6\x4f\xf1\xa7\x32\xcd\xf8\x12\xea\x00\x74\x8d\x90\x6a\x56\xc0\x44\x50\x3b\x4d\x13\x98\xd7\xe3\xbc\x02\x16\x93\x81\xd2\xec\xc6\xbb\xd2\xe1\x26\xf6\xba\x2b\xbf\xcd\x3c\xec\x50\x12\x72\x50\xb6\x38\xef\x9e\x00\x7d\xc6\x7e\xca\xc5\x17\x72\xc1\xc7\x69\x3d\xe5\x15\x67\x71\x71\x56\x17\x67\x55\x71\xce\x18\x6f\x52\x46\x08\x30\xe5\x9c\xfa\xa0\x80\x1b\x4a\x78\xd9\x38\x93\xc2\xe9\x64\xbc\x1c\x89\x37\xdb\x6f\xe1\xd0\x16\x70\x9e\x3c\xe2\x8d\xa8\xf1\x46\xd4\x78\x2b\x6a\x9c\x37\x4c\xde\xd9\xf9\x79\xd7\xa5\xa1\x38\xb7\x59\x19\x90\xb9\xc1\xf2\x50\x21\xd4\xee\xc0\xad\xf7\x86\xdb\xa1\xeb\x00\xb9\x1d\x09\x04\xa2\x18\x33\x8a\x9c\xef\x4e\x69\x58\x9e\xba\x8b\x53\x87\x30\xb8\xc1\x02\x0a\xca\x57\x16\x38\x37\x03\x77\xe8\x9f\xc0\x45\xc8\x57\x91\x8d\x8e\xc4\xa9\x72\x6c\x45\x60\x0b\xd6\xe3\x78\xd4\x70\xe2\x32\x3a\x39\xa0\x0f\x80\x34\x32\xc2\x11\x30\x42\xbe\x51\x9c\x93\xe3\x48\x82\xb4\x9c\x0e\x8e\x84\x1c\x87\x00\xc8\x34\x04\x03\x9c\xd2\xc8\xb7\xce\x2b\xe0\x73\xbe\xaf\xcf\x73\x56\xd0\xa5\xee\x7a\x69\x62\x29\xe8\xaa\x9d\x58\x3f\xfd\xb4\xfe\xbd\xf9\x7a\xfd\xcd\xfe\xfd\xd5\xf3\x11\xc6\x93\x47\x35\xbb\x25\x1a\x60\xe1\x32\x8c\x85\x53\x2c\x22\x8b\x18\x01\x89\x5b\x04\xf1\x58\x24\xe2\x74\xc7\xb4\x1b\xd2\x9c\xeb\xd2\xac\x63\x30\xba\x63\x30\x11\x18\xce\x12\x02\x71\xa7\x9d\x30\x66\x4c\xb3\x2d\x09\x65\xa7\xa9\xc6\xba\xe3\x32\x2f\x58\xa7\xd9\xc5\x46\xd8\x56\x09\x76\x9e\xd8\x23\x87\x14\x3c\x60\xd2\x13\x85\x8e\x69\x0e\xd1\x80\x8e\x09\x47\x3e\xf5\x49\xfa\x93\xa6\x9e\x47\x0d\x46\xdd\x8b\x20\x3d\x0a\xf2\x38\x27\xd3\xa2\x3e\xf4\x74\x40\x00\xb7\xad\x96\x1f\x37\xef\x76\xab\xfd\x75\x7b\xaa\xc5\xed\xee\x38\xda\xd6\x9b\xcd\x6c\xde\x56\xcb\xd5\x6e\xb3\xfd\xf6\xab\xf7\xef\xf8\xfb\x57\x75\xfd\xc5\xc7\x3d\x7f\xc7\x3f\xf0\x07\x5e\xf3\x97\x0f\xd7\x30\x41\x20\x38\xea\x21\xc2\x5d\xa0\x16\x85\x7c\x04\x8a\x39\xd0\xea\xe1\xaf\xbf\xf7\x5c\xd7\x3b\xae\xeb\xfd\x8d\xb7\x1b\xf2\x33\x75\xf7\x12\x6e\x8a\xb9\xd4\x60\x97\x2b\x96\x33\xbd\xdf\x56\xfa\x79\x3b\x45\xab\x52\xf5\x30\x57\x2e\xff\x2d\x2f\x76\x70\xea\x33\xd6\xf2\xce\x57\xbb\xfd\x35\xae\xcd\xa5\xff\x24\xde\xdb\xb7\x6f\xef\x83\x3d\x33\x7d\x26\xd2\xbf\x32\xfc\x94\xdd\xd5\x12\x1f\x75\xc8\xc9\xd7\xf5\xe6\xfe\x94\xcb\xd7\xfb\x93\xca\x63\xf3\x73\x2f\xf0\xea\xfa\x5f\xe9\x7c\x9a\xde\xff\x49\xe6\x05\x95\x5f\xdf\x93\x78\xf3\x59\x85\xff\x09\x00\x00\xff\xff\xdd\xb7\xca\x12\xf9\x09\x00\x00" func runtimeSyntaxPython2YamlBytes() ([]byte, error) { return bindataRead( @@ -3057,7 +3144,7 @@ func runtimeSyntaxPython2Yaml() (*asset, error) { return a, nil } -var _runtimeSyntaxPython3Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x55\x4b\x8f\xe3\x36\x0c\xbe\xcf\xaf\xf0\x66\xa7\x9d\x57\x93\x2d\xb0\xa7\x4e\x5f\x5b\x14\xe8\xb1\xa7\x9e\x1a\xa7\x86\x6c\xd3\x31\x3b\xb2\x24\x50\x74\x12\x4f\xd9\xff\x5e\xe8\xe1\x24\x93\x9d\x41\x7b\x29\x06\x03\x7e\x66\xa4\x8f\xe4\x27\x8a\xea\x50\x83\x51\x03\x3c\x16\x6e\xe2\xde\x9a\x8f\x57\x57\x2d\x30\x34\xfc\x78\x55\x14\x45\x71\xfa\x79\x51\x96\x2b\x37\x7d\xbc\x5e\x44\x7f\x0f\xaa\x05\x7a\x2c\x16\x7f\xbc\x7f\xb7\xba\xff\x70\x0b\x66\x57\x3c\xdc\xfd\x98\x39\xae\x17\x57\x57\x34\x6a\xf0\x89\xe4\x7d\x51\x8f\xa8\x79\x89\xa6\xb0\xf5\x9f\xd0\xb0\x8f\xee\x65\xd1\x58\xe3\x59\x19\x8e\xec\xf5\xed\xaf\xd6\x80\x78\xd0\x9d\xfc\x46\x23\xc8\x2f\x4a\x7b\xb8\x2b\xcb\x3a\x85\x7c\xc1\xa3\x98\x09\xeb\x91\xe1\x0d\xaa\xaa\xaa\x95\x07\x5f\x55\x52\x55\x71\x13\x9a\x88\x1b\xad\x7c\xf2\xb6\x50\x8f\xdb\x84\xb0\xe1\x04\x6c\x13\x6d\x28\x3a\x82\x01\x86\x1a\xc8\x67\xcc\xbd\x6d\x13\x0e\x8a\x44\x10\x92\xad\xaa\x37\x72\xec\x46\xd3\x30\x5a\x33\xa7\x88\x2d\x18\xc6\x0e\xa3\x6e\x21\x49\x55\x7b\x51\x5a\x8b\x32\x93\x28\xdf\x20\x4a\x8d\x46\x1a\xa5\xb5\xaa\x35\x48\xd3\x93\x34\x76\x70\xa8\x41\x5a\xd0\xa1\x64\x69\x31\xfc\xef\x06\xdb\x0a\xec\x94\x16\x38\x40\x23\x9d\xa5\x41\xb1\x6c\x81\xe3\x9a\xad\xb6\xb5\xd2\x5e\x7a\xe5\xe3\x77\xaf\x7c\x2f\x3d\x68\x27\x3d\x1c\x04\x5b\x41\xe3\x46\x16\xf4\x18\x25\x6b\x40\xd0\xfb\xb1\x8e\xd2\x08\x32\x90\x68\x30\xa2\x6d\x13\x48\x06\x75\x90\x01\x8d\x18\x38\xb0\xd8\x86\xc5\x3a\x30\x62\xa9\x15\x67\xf7\xe2\x08\x0d\x0b\x81\x23\x21\x3b\x9a\x56\x7c\xce\xc1\x5b\x62\x68\xc5\x8f\x83\xec\x14\x79\xa9\x2a\x1c\x9c\x25\xbe\x14\xcb\x3b\x68\x50\xe9\x22\xa9\x5b\x04\x61\xdf\x94\xab\xaa\x54\x9d\xf4\x57\x6d\x9b\xac\x49\x36\x48\x96\xc0\xe0\x92\xb5\x40\x0d\x64\x38\x38\x0d\x87\x8c\x4d\xa3\x78\x86\xac\xd0\xcc\xbd\xa0\x67\x1b\xb2\x9f\x31\x32\x0c\x33\xf6\x1a\x33\x61\x8b\xbb\xd9\x0e\x36\xc5\xef\xb4\xcd\xb4\xf9\x0c\x66\x7c\x64\xd8\x02\x9f\x18\xc2\x81\x24\x90\xf3\x42\x83\x9c\xc1\x6c\x77\xb3\x05\x4a\x2e\x0d\xe6\x65\xb7\x6a\x6b\x52\xff\x6a\xdf\x63\x97\x7c\x73\x42\xc3\x98\x0a\x32\xb0\xcd\xf6\x90\x16\x18\x6b\x9e\x81\x6c\xc4\x36\x13\xd9\x94\xae\xb3\x3e\xdb\x7d\xb4\x34\xab\x4c\xb3\xcc\x34\xcb\x4b\xb3\x06\x74\x26\x02\x81\x83\xac\x42\x68\x88\x04\xce\x72\xa3\xe3\xc2\x39\x3b\xca\x91\xe9\x18\x92\xce\x96\x9f\xc3\xb1\x4e\xe0\x90\x77\xf8\x33\x99\xfd\x99\xcc\xfe\x5c\x66\x3f\x2f\xc8\xbb\xe3\xe6\x97\xed\xc7\x93\x3b\xf6\x5b\xc0\xb9\xd3\x6a\x6b\xb5\xd4\x13\x83\x22\x52\x53\x44\x5e\xe2\xfd\x48\x7d\x2a\xb9\xa9\x24\x1c\x86\x80\x19\x07\x20\xc5\x20\x1d\xea\x70\x7d\x62\x3b\x48\x47\xf6\x19\x8c\x07\x96\x70\x47\x34\x7a\x96\x41\x39\x19\x60\xb0\x34\xed\x10\xf6\x92\x86\xa1\x38\xb2\x0e\x88\x27\x21\x65\xb6\x20\x04\x3b\x20\x0f\xf1\x2e\x49\xac\x46\x3c\x2b\xc6\x26\xc7\xf6\xe1\x7a\x8d\x0e\x48\x78\x74\x1a\x24\xe4\x2d\xcf\xe8\x5e\x56\xd6\x42\x17\xba\xea\xad\xf1\xd3\x42\x57\xac\xd5\xf2\xf9\xa7\xe5\xef\xd5\xd7\xcb\x6f\x36\x0f\x8b\xe2\xb8\xf5\x09\xa6\xbd\xa5\x76\xde\x17\x82\xc3\x00\xc7\xd1\xaa\x4c\x2b\xca\x8b\xf2\x1e\x88\xa5\x26\x50\x4f\x49\x1b\x09\x77\x0a\xcd\x18\xa6\x55\x17\x26\x96\x80\xc6\x4e\x40\x7b\x10\x38\x34\xe0\x58\x3a\x34\x4a\xeb\x29\x4c\xac\xa0\xcf\x90\x67\x95\x60\x27\x69\x3e\x08\x1a\x41\x2f\x5a\x0d\x75\xab\xc4\x58\x13\xc7\x90\x18\xcb\x62\x49\x5c\x88\x42\x0a\x7d\x50\x89\x47\x32\xc2\x34\xc9\xbe\x0f\x13\x72\x8f\xdc\xcb\x84\xa0\xdb\x28\x44\x71\xa6\x44\x63\x49\xb1\xa5\xb9\xa0\x9a\x70\xdb\xf3\x96\x00\xcc\x63\xb1\xf8\xb4\xba\x5f\xdf\x6e\x4e\xc2\x85\xb3\x38\x5f\x7d\x5e\xfe\xed\x7a\xf5\xf8\xed\x57\x0f\xf7\xf2\xfd\xbb\xb2\xfc\xe2\xd3\x46\xbe\x93\x1f\xe4\x83\x2c\xe5\xcb\xbb\x13\x81\x53\x04\x86\x7b\xf0\xf0\x3a\xc5\xed\xdd\x5f\x7f\x6f\xa4\x2c\xd7\x52\x96\x9b\xb3\x7d\x66\x8c\x8f\xcd\xc5\x7b\xb6\x4a\xee\xa4\xfd\x3a\x1e\x55\x3c\xe7\xe3\xb2\x21\x12\x67\x96\x22\xc4\xa2\x78\x52\xf1\x6f\x71\xf4\x83\x69\x5f\xf1\xa6\x47\xba\x58\x6f\xfe\x95\xef\xe6\xe6\xe6\x92\xec\x85\xeb\x15\xa6\x5c\x80\x67\x42\xb3\x7d\x2d\xc3\xcf\xb3\x3b\x79\xfc\x13\xba\x58\x74\x59\xae\x2e\xa3\x1c\x3f\x2f\x23\xa5\xc7\xe4\xe7\x5e\xd1\x69\xeb\x7f\x4d\xe7\xf3\xf2\xfe\xcf\x64\xde\x50\xf9\xfd\x65\x12\xd7\xaf\x2a\xfc\x4f\x00\x00\x00\xff\xff\x66\x10\x2e\xe5\xb5\x09\x00\x00" +var _runtimeSyntaxPython3Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x56\x4f\x73\xe3\xb6\x0f\xbd\xe7\x53\x68\xbd\xfb\xfb\x6d\xb2\xdb\x78\x3b\xb3\xa7\xba\xff\xb6\xd3\x69\x8f\x3d\xf5\xd4\x28\xd5\x50\x12\x64\xa1\xa1\x48\x0e\x00\xd9\x56\x8a\x7e\xf7\x0e\x49\xc9\x76\xbc\xc9\xb4\x97\x4e\x26\x83\x67\x84\x7c\x00\x1e\x01\x38\x1d\x5a\x70\x66\x80\x4d\x11\x26\xe9\xbd\xfb\x78\x75\xd5\x82\x40\x23\x9b\xab\xa2\x28\x8a\xd3\x9f\x57\x65\xb9\x0e\xd3\xc7\x37\xab\xe4\xef\xc1\xb4\x40\x9b\x62\xf5\xfb\xeb\x57\xeb\x77\x1f\xae\xc1\xed\x8a\xf7\x37\xdf\xcf\x1c\x6f\x56\x57\x57\x34\x5a\xe0\x4c\xf2\xba\xa8\x47\xb4\x72\x8b\xae\xf0\xf5\x1f\xd0\x08\x27\xf7\x6d\xd1\x78\xc7\x62\x9c\x24\xf6\xfa\xfa\x27\x6b\x31\x30\xb2\xfe\xe2\x1d\x28\x83\xed\xf4\x57\x1a\x41\x7f\x36\x96\xe1\xa6\x2c\xeb\x1c\xfb\x09\xa1\x11\x21\xac\x47\x81\x17\x38\xab\xaa\x36\x0c\x5c\x55\x5a\x55\xe9\x12\xba\x84\x1b\x6b\x38\x7b\x5b\xa8\xc7\x6d\x46\xd8\x48\x06\xbe\x49\x36\x56\x9f\xc0\x00\x43\x0d\xc4\x33\x96\xde\xb7\x19\x47\x69\x12\x88\xc9\x56\xd5\x0b\x39\x76\xa3\x6b\x04\xbd\x5b\x52\xc4\x16\x9c\x60\x87\x49\xc0\x98\xa4\xa9\x59\x8d\xb5\x6a\xdc\xa4\x86\x1b\x44\xad\xd1\x69\xed\xbd\xd5\x9a\xc0\x3c\x04\x8f\x4e\xb4\x9e\x04\x0c\x91\x99\x12\x62\x6d\x8c\xb5\xa6\xb6\xa0\x4d\x4f\x9a\xea\xc9\xa9\x69\xe3\x87\x80\xd1\xef\x87\x60\xe1\xa0\x2d\xd8\x28\x93\xb6\x18\x7f\x77\x83\x6f\x15\x76\xc6\x2a\x1c\xa0\xd1\xce\xd3\x60\x44\xb7\x20\xe9\xcc\xd6\xfa\xda\x58\xd6\xde\x70\xfa\xdc\x1b\xee\xb5\x07\x1b\xb4\x87\x83\x62\xab\xe8\xc2\x28\x8a\x8c\x49\xe6\x06\x14\x99\xc7\x3a\x85\x57\x14\x20\xb5\xe0\xd4\xfa\x26\x92\x0c\xe6\xa0\x03\x3a\x75\x70\x10\x75\xde\x25\xb7\xfa\x46\xd4\x07\x70\xea\xa9\xd5\xe0\xf7\x1a\x28\x96\x47\x10\x48\xc9\x8f\xae\x55\x9e\x93\x61\x4f\x02\xad\xf2\x38\xe8\xce\x10\x6b\x55\xe1\x10\x3c\xc9\xa5\xd2\x1c\xa0\x41\x63\x8b\x5c\x7f\x11\x5f\xe5\x45\xad\xab\xca\xd4\xf9\xf1\x4c\xdb\x66\xeb\xb2\x8d\x7a\x66\x30\x84\x6c\x3d\x50\x03\x33\x4c\x52\xce\xd8\x35\x46\x16\x28\x06\xdd\xd2\x48\x76\xb1\x31\xfb\x05\xa3\xc0\xb0\x60\xb6\x38\x13\xb6\xb8\x5b\xec\xe0\x73\xfc\xce\xfa\x99\x76\x7e\x8c\x05\x1f\x19\xb6\x20\x27\x86\xf8\x32\x19\xcc\x79\xa1\x43\x99\xc1\x62\x77\x8b\x05\xca\x2e\x0b\xee\x69\xab\x5b\xef\x72\xf3\x5b\xee\xb1\xcb\xbe\x25\xa1\x61\xcc\x05\x39\xd8\xce\xf6\x90\x0f\x38\xef\x1e\x81\x7c\xc2\x7e\x26\xf2\x39\xdd\xe0\x79\xb6\xfb\x64\x69\x51\x99\x16\x99\x69\x91\x97\x16\x0d\xe8\x4c\x04\x82\x00\xb3\x0a\xb1\x21\x32\x38\xcb\x8d\x8e\x07\x97\xec\x68\x8e\x4c\xc7\x90\x74\x76\xfc\x1c\x8e\x75\x06\x87\xf9\x06\x9f\xc9\xcc\x67\x32\xf3\xb9\xcc\xbc\x1c\x98\x6f\xa7\xcb\x4f\xdb\x4f\xa6\x70\xec\xb7\x88\xe7\x4e\xcb\xf3\x7b\x39\xb4\x17\x73\x9a\xe6\x13\x1b\x51\x70\xe3\x00\x64\x04\xb4\x43\x1b\xe7\x28\xb5\x83\x76\xe4\x1f\xc1\x31\x88\xc6\x19\xb1\xc8\xa2\x83\x09\x3a\xc0\xe0\x69\xda\x21\xec\x35\xaf\x54\x0d\xe4\x03\x90\x4c\x4a\xc6\x6d\x41\x09\x76\x40\x0c\x69\x96\x34\x55\xa3\x2c\x46\xb0\x99\x63\x73\x1c\xaf\x31\x00\xa9\x8c\xc1\x82\xc6\xbc\xf5\x11\xc3\xd3\xca\x5a\xe8\x62\x57\xbd\xb4\xbb\x5a\xe8\x8a\x3b\x73\xfb\xf8\xc3\xed\x6f\xd5\x97\xb7\x5f\xdd\xbf\x3f\xdd\x7c\x80\x69\xef\xa9\x5d\xae\xc5\xd8\x30\xc0\x71\x2d\x1b\xd7\xaa\x61\x35\xcc\x40\xa2\x66\x6f\x50\xf2\xaa\xcb\x02\x69\x1c\x2c\x74\x23\x68\x0b\x5d\xdc\x5f\x0a\x16\x3b\x05\xcb\xa0\x70\x68\x20\x88\x76\xe8\x8c\xb5\x53\xdc\x5f\x51\xa4\x61\xde\x5c\x8a\x9d\xe6\x25\xa1\xe8\x14\x59\xad\x19\xea\xd6\x9c\xb6\x8f\xf3\xa2\x9e\x34\xc4\x28\x64\x90\xa3\x54\x32\x92\x53\xa1\x49\xf7\x7d\xdc\x9b\x7b\x94\x5e\x27\x04\xdb\x5e\xaa\xd1\x78\x32\xe2\x69\xa9\xaa\x26\xdc\xf6\xb2\x25\x00\xb7\x29\x56\x9f\xd6\xef\xee\xae\xef\x4f\xc7\xe3\x7b\x9c\x9f\xe6\x69\xa8\xbd\x5d\x2f\xee\x4d\xb1\xba\xbe\x5b\x6f\xbe\xfe\xe2\xfd\x3b\xfd\xf6\x55\x59\xfe\xef\xd3\xbd\x7e\xa3\xdf\xe9\x07\xbd\xd5\xff\xdf\x9c\x68\x82\x21\x70\xd2\x03\xc3\x05\x51\x4d\xa6\x79\x00\xe1\x44\x74\x7d\xf3\xe7\x5f\xf7\x5a\x96\x77\x5a\x96\xf7\x67\xb7\xdd\x98\xbe\xb9\x2e\xbe\x1c\xd7\xd9\x9d\x1f\xe3\x2e\x3d\x5d\xaa\xf4\xf2\x18\x0b\xa1\xdb\x6e\x66\xb6\x22\x3e\x23\xa5\x27\x4c\x3f\xab\xa3\x1f\x5c\xfb\x8c\x37\xff\x0b\x50\xdc\xdd\x9f\x78\x87\xd4\x03\x9f\xf1\xbd\x7d\xfb\xf6\x92\xec\x89\xeb\x19\xa6\x7f\xcc\xf0\xf3\xec\x4e\x1e\x7e\xc0\x90\x8a\x2f\xcb\xf5\x65\x94\xe3\xc7\xcb\x48\xf9\x4b\xe6\xc7\xde\xd0\xe9\xea\xbf\x4d\xe7\xf3\xf2\xfe\xcb\x64\x5e\x50\xf9\xf5\x65\x12\x6f\x9e\x55\xf8\xef\x00\x00\x00\xff\xff\x6b\x6c\x10\x41\x13\x0a\x00\x00" func runtimeSyntaxPython3YamlBytes() ([]byte, error) { return bindataRead( @@ -3217,7 +3304,7 @@ func runtimeSyntaxSedYaml() (*asset, error) { return a, nil } -var _runtimeSyntaxShYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\x7f\x73\x1b\x45\x0c\xfd\x3f\x9f\xe2\xea\x64\xa8\xdd\x62\xd3\x96\xb6\x03\xe6\x87\x29\x2d\x30\x9d\x02\xed\x0c\x30\x93\x21\x9b\x96\xf5\xae\xce\xb7\xdc\xfe\xb8\xee\xea\xe2\x84\xbe\x7c\x77\x46\x67\x3b\x69\x4d\xa7\x40\x26\xb7\x3a\x49\x96\xf4\xa4\x7d\xa7\xda\x79\xe2\x8b\x8e\xe6\x55\x69\xc8\xfb\x83\x03\x4b\x4c\x86\xe7\x07\x55\x55\x55\xe2\x8c\x3a\xd0\xbc\x1a\x8d\x95\x9a\x95\xe6\x08\x4a\xcd\x96\xba\x34\x3b\x99\x0d\xb6\x62\x6b\x78\xa5\xbd\xd3\x85\x0a\xde\x51\x76\xce\xba\x8f\x86\x5d\x8a\x5b\xf7\xb5\xba\xfb\x41\x97\x93\x14\xc5\x3b\xca\x8b\x76\x35\xc8\xae\x5d\x85\x76\x66\x52\xac\xb1\x73\x65\xb3\xd1\x5f\x3c\xfb\xe1\xdb\xdf\x9e\xfe\xf8\x04\x33\x5a\xf6\xce\x5b\xa5\x8e\xf0\xe8\xc5\xb3\xc1\x36\x19\x0d\xcd\x34\xa4\x2d\xe5\x79\x35\x7a\x79\x78\x63\x76\xeb\x93\x31\xc5\xb3\xea\xf6\x64\x31\x5e\xea\xc9\xa2\x34\xe3\x0a\x47\x93\xd1\xc1\x41\xee\x3d\x95\x4d\xf7\x87\xd5\xcf\x7d\x58\x52\x2e\x83\x36\xad\x4c\x8a\x85\x75\xe4\x59\x1c\xcc\xf3\x6a\xa4\xd4\xf2\xe4\xce\xf4\xf3\xd3\xdb\x4a\x2d\x37\x45\x24\xea\x71\x8a\xd6\x49\x5b\xda\x97\x4a\x47\x2b\x81\x9c\x93\xaf\x6a\x9f\xd6\xdb\x5c\x85\x35\x53\xa0\xc8\x9b\x2c\x63\xa3\x0b\xc1\x26\xd8\x14\x09\xe4\x5d\x0d\xf2\x85\x40\x45\x1b\xd0\xb9\x63\xd4\x0e\x75\xca\xd8\x4d\x0c\xae\x86\x8b\xf0\xc9\x68\x8f\x4c\xda\x22\x13\xf7\x39\xa2\x90\x27\xc3\x28\x8d\xab\x19\xdc\x50\x04\xbb\x40\xe8\x23\x3b\x8f\x75\xe3\x3c\x4d\xae\xc0\x4e\xab\xd2\x91\x71\xda\x6f\xee\xf7\x0d\x94\xba\x84\x52\x63\x28\x35\x81\x52\x5f\x40\xa9\x53\x28\x75\x82\x3f\xa0\x94\x52\x90\xa1\x7e\x89\xaf\x71\x03\x5f\xe1\x23\x28\x85\xc9\x75\xd3\xbf\x08\x7b\x2a\x93\x42\xd0\xd1\xee\x26\xb6\x21\xd6\xa6\x41\x0b\x32\x4d\x02\x9d\x77\x29\x33\x3c\x31\x0a\x31\xfa\xa0\x4b\x8b\x3e\x16\xe2\xc9\xde\x10\x43\x48\xb1\xf2\x2e\xf6\xe7\x1f\x48\x3b\x5e\xc1\xad\x26\x0b\xbd\x6e\x07\xca\xc0\xca\x51\xbb\x68\xa1\xd4\xfa\xcd\x9d\x8f\xef\x5f\xae\x32\x75\x68\x9d\xf7\xc3\xa1\xbd\xbf\xf2\x78\x2a\x05\x41\xb7\x42\x2c\xf1\x17\xb2\x28\x0d\x58\xe7\x7d\x28\x99\x7a\x76\xbe\x7c\x00\xc7\x52\x17\x7a\x78\x5f\x30\x0c\x1f\x0c\x8c\x66\x98\xc6\xa4\x08\xd3\xac\x72\x07\xd3\x84\x64\x61\x9a\xb4\x16\x4b\x4e\x89\x61\xda\xd2\x07\x48\x4a\x98\x0e\xa6\x74\xde\x31\x4c\xcf\xb0\x9a\x09\xd6\xc2\xd6\xb0\x2e\xcb\x63\x92\x4f\xb9\xc8\xdb\x90\xdc\xf6\xa0\x78\x26\xa3\xd4\xd1\x8a\xc8\xa8\xb5\x61\xa1\x87\x16\xd6\xd4\x81\x51\x27\x6f\x21\x94\x47\x93\x0a\x3b\x0b\xf9\x17\xfe\x7a\x8f\x3f\x93\x50\xc7\xc5\x16\x5e\x28\xb4\x1a\x92\xfa\x82\x60\x1f\x08\xa4\xd0\x4a\xd9\xd0\xd6\xae\x4e\x08\x6d\x4c\x16\xa1\x65\x0a\x1d\xc2\x19\xa2\x33\x84\xe8\x11\x53\xd3\x77\x88\x5d\x4e\x06\xb1\x0f\x52\x32\x59\x74\xba\x30\xa1\xd3\xdc\x98\xa6\x45\xe7\x62\x7b\x81\x2e\xa3\xcb\x2e\xb2\x40\x1e\x5e\x6a\x74\x7c\x8e\x6e\x6d\x07\xe2\x0e\x38\x32\x69\x2f\x51\xc8\x01\x39\x48\xf9\xdc\x47\x99\x5e\xa1\xd7\x18\x97\x46\xdf\x45\x69\xf4\xbd\x7b\xf7\x07\xf1\xe0\xa1\x88\x4f\x3f\x1b\xb4\x07\x77\xef\x4d\x04\x75\x69\xf2\x70\x7f\x7d\x8d\xe2\x89\x3a\x14\xe1\xd9\x66\xaa\xf2\xb5\xa1\xb0\x5d\x8a\x93\xf9\x02\x43\xc0\x45\x34\x60\x2d\x8f\xf3\x60\x22\x30\x15\xde\x7c\x2e\x72\xa4\x9e\xc1\xa9\x37\x0d\x38\x83\x73\x4f\x72\x44\x23\x97\xc3\x43\x6e\x49\xd4\x0f\xb3\xeb\xe3\xf6\x2e\xfa\xe8\x5e\xa3\x8f\x43\x4f\x7d\xa1\x5c\x70\x26\xcd\xac\x0d\xd6\x4d\x92\x47\x07\x87\x0b\x2a\xfb\x04\xbb\x5a\x18\x55\xed\xf5\xaa\xbc\x67\x49\x4c\xa7\x27\x7a\xfa\xd7\xf4\xf4\xf6\xe8\xbd\x1b\xa4\x1a\xdc\xe2\xdd\xba\x9d\xa5\xc8\xae\x76\xdb\x3d\x75\xa4\xd4\x9b\x85\xec\xaa\x47\xd3\xdf\x5f\xdd\xf8\xe6\xf0\xe8\xd6\x62\x2a\x6b\xeb\x72\x31\xfa\xff\x01\xfb\xfb\xb0\x70\x76\x71\x35\xdf\xf6\x53\x09\xb4\x3c\xc0\x1a\x8d\xae\x6c\x14\xed\x9e\xa5\xb4\xae\x1b\x4a\x29\x35\xbb\xb6\xbe\xb5\x7f\x77\x7f\x6f\x57\xda\xec\xab\xc7\x8d\xce\xd7\xa1\xff\x15\xce\xcd\x7d\x34\x37\xf7\xcb\x56\x27\xa7\xd7\xd9\xc2\x30\xdc\x7f\x64\x19\xbf\x84\x52\x65\x72\xb8\x9f\xec\xe8\x5f\x7a\xe0\x64\x93\x84\xff\xfa\xfc\xc9\x73\x1c\x1f\x1f\xe3\xfb\xa7\xc7\x3f\x7d\x37\x99\xcb\x3c\xff\x0e\x00\x00\xff\xff\x42\xc3\x8d\xb7\x85\x07\x00\x00" +var _runtimeSyntaxShYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\x7f\x73\x1b\x45\x0c\xfd\x3f\x9f\xe2\xea\x64\xa8\xdd\x62\xd3\x96\xb6\x03\xe6\x87\x29\x2d\x30\x9d\x02\xed\x0c\x30\x93\x21\x9b\x96\xf5\xae\xce\xb7\xdc\xfe\xb8\xee\xea\xe2\x84\xbe\x7c\x77\x46\x67\x3b\x69\x4d\xa7\x40\x26\xb7\x3a\x49\x96\xf4\xa4\x7d\xa7\xda\x79\xe2\x8b\x8e\xe6\x55\x69\xc8\xfb\x83\x03\x4b\x4c\x86\xe7\x07\x55\x55\x55\xe2\x8c\x3a\xd0\xbc\x1a\x8d\x95\x9a\x95\xe6\x08\x4a\xcd\x96\xba\x34\x22\xb7\x42\xd4\x6c\xb0\x15\x5b\xc3\x2b\xed\x9d\x2e\x54\xf0\x8e\xb2\x73\xd6\x7d\x34\xec\x52\xdc\xba\xaf\xd5\xdd\x0f\xba\x9c\xa4\x36\xde\x51\x94\x9a\xed\x5e\x77\xf2\x45\xbb\xda\xe8\xed\x2a\xb4\x33\x93\x62\x7d\xe5\xca\x66\xa3\xbf\x78\xf6\xc3\xb7\xbf\x3d\xfd\xf1\x09\x66\xb4\xec\x9d\xb7\x4a\x1d\xe1\xd1\x8b\x67\x83\x6d\x32\x1a\xda\x6c\x48\x5b\xca\xf3\x6a\xf4\xf2\xf0\xc6\xec\xd6\x27\x63\x8a\x67\xd5\xed\xc9\x62\xbc\xd4\x93\xc5\x58\x4f\x16\xa5\x19\x57\x38\x9a\x8c\x0e\x0e\x72\xef\xa9\x6c\x66\x73\x58\xfd\xdc\x87\x25\xe5\x32\x68\xd3\xca\xa4\x58\x58\x47\x9e\xc5\xc1\x3c\xaf\x46\x4a\x2d\x4f\xee\x4c\x3f\x3f\xbd\xad\xd4\x72\x53\x48\xa2\x1e\xa7\x68\x9d\x74\xab\x7d\xa9\x74\xb4\x12\xc8\x39\xf9\xaa\xf6\x69\xbd\xcd\x55\x58\x33\x05\x8a\xbc\xc9\x32\x36\xba\x10\x6c\x82\x4d\x91\x40\xde\xd5\x20\x5f\x08\x54\xb4\x01\x9d\x3b\x46\xed\x50\xa7\x8c\xdd\x20\xe1\x6a\xb8\x08\x9f\x8c\xf6\xc8\xa4\x2d\x32\x71\x9f\x23\x0a\x79\x32\x8c\xd2\xb8\x9a\xc1\x0d\x45\xb0\x0b\x84\x3e\xb2\xf3\x58\x37\xce\xd3\xe4\x0a\xec\xb4\x2a\x1d\x19\xa7\xfd\xe6\xf6\xdf\x40\xa9\x4b\x28\x35\x86\x52\x13\x28\xf5\x05\x94\x3a\x85\x52\x27\xf8\x03\x4a\x29\x05\x19\xec\x97\xf8\x1a\x37\xf0\x15\x3e\x82\x52\x98\x5c\x37\xfd\x8b\x70\xab\x32\x29\x04\x1d\xed\x6e\x62\x1b\xda\x6d\x1a\xb4\x20\xd3\x24\xd0\x79\x97\x32\xc3\x13\xa3\x10\xa3\x0f\xba\xb4\xe8\x63\x21\x9e\xec\x0d\x31\x84\x14\x2b\xef\x62\x7f\xfe\x81\xb4\xe3\x15\xdc\x6a\xb2\xd0\xeb\x76\x60\x12\xac\x1c\xb5\x8b\x16\x4a\xad\xdf\xdc\xf9\xf8\xfe\xe5\x2a\x53\x87\xd6\x79\x3f\x1c\xda\xfb\x2b\x8f\xa7\x52\x10\x74\x2b\xe4\x12\x7f\x21\x8b\xd2\x80\x75\xde\x87\x92\xa9\x67\xe7\xcb\x07\x70\x2c\x75\xa1\x87\xf7\x05\xc3\xf0\x39\xc1\x68\x86\x69\x4c\x8a\x30\xcd\x2a\x77\x30\x4d\x48\x16\xa6\x49\x6b\xb1\xe4\x94\x18\xa6\x2d\x7d\x80\xa4\x84\xe9\x60\x4a\xe7\x1d\xc3\xf4\x0c\xab\x99\x60\x2d\x6c\x0d\xeb\xb2\x3c\x26\xf9\x94\x8b\xbc\x0d\xc9\x6d\x0f\x8a\x67\x32\x4a\x1d\xad\x88\x8c\x5a\x1b\x16\x7a\x68\x61\x4d\x1d\x18\x75\xf2\x16\x42\x7b\x34\xa9\xb0\xb3\x90\x7f\xe1\xaf\xf7\xf8\x33\x09\x75\x5c\x6c\xe1\x85\x42\xab\x21\xa9\x2f\x08\xf6\x81\x40\x0a\xad\x94\x0d\x6d\xed\xea\x84\xd0\xc6\x64\x11\x5a\xa6\xd0\x21\x9c\x21\x3a\x43\x88\x1e\x31\x35\x7d\x87\xd8\xe5\x64\x10\xfb\x20\x25\x93\x45\xa7\x0b\x13\x3a\xcd\x8d\x69\x5a\x74\x2e\xb6\x17\xe8\x32\xba\xec\x22\x0b\xe4\xe1\xa5\x46\xc7\xe7\xe8\xd6\x76\x20\xee\x80\x23\x93\xf6\x12\x85\x1c\x90\x83\x94\xcf\x7d\x94\xe9\x15\x7a\x8d\x71\x69\xf4\x5d\x94\x46\xdf\xbb\x77\x7f\x10\x0f\x1e\x8a\xf8\xf4\xb3\x41\x7b\x70\xf7\xde\x44\x50\x97\x26\x0f\xf7\xd7\xd7\x28\x9e\xa8\x43\x11\x9e\x6d\xa6\x2a\x5f\x1b\x0a\xdb\xa5\x38\x99\x2f\x30\x04\x5c\x44\x03\xd6\xf2\x38\x0f\x26\x02\x53\xe1\xcd\xe7\x22\x47\xea\x19\x9c\x7a\xd3\x80\x33\x38\xf7\x24\x47\x34\x72\x39\x3c\xe4\x96\x44\xfd\x30\xbb\x3e\x6e\xef\xa2\x8f\xee\x35\xfa\x38\xf4\xd4\x17\xca\x05\x67\xd2\xcc\xda\x60\xdd\x24\x79\x74\x70\xb8\xa0\xb2\x4f\xb0\xab\x85\x51\xd5\x5e\xaf\xca\x7b\x96\xc4\x74\x7a\xa2\xa7\x7f\x4d\x4f\x6f\x8f\xde\xbb\x41\xaa\xc1\x2d\xde\xad\xdb\x59\x8a\xec\x6a\xb7\xdd\x53\x47\x4a\xbd\x59\xc8\xae\x7a\x34\xfd\xfd\xd5\x8d\x6f\x0e\x8f\x6e\x2d\xa6\xb2\xb6\x2e\x17\xa3\xff\x1f\xb0\xbf\x0f\x0b\x67\x17\x57\xf3\x6d\x3f\x95\x40\xcb\x03\xac\xd1\xe8\xca\x46\xd1\xee\x59\x4a\xeb\xba\xa1\x94\x52\xb3\x6b\xeb\x5b\xfb\x77\xf7\xf7\x76\xa5\xcd\xbe\x7a\xdc\xe8\x7c\x1d\xfa\x5f\xe1\xdc\xdc\x47\x73\x73\xbf\x6c\x75\x72\x7a\x9d\x2d\x0c\xc3\xfd\x47\x96\xf1\x4b\x28\x55\x26\x87\xfb\xc9\x8e\xfe\xa5\x07\x4e\x36\x49\xf8\xaf\xcf\x9f\x3c\xc7\xf1\xf1\x31\xbe\x7f\x7a\xfc\xd3\x77\x93\xb9\xcc\xf3\xef\x00\x00\x00\xff\xff\xef\x45\x76\x90\xa3\x07\x00\x00" func runtimeSyntaxShYamlBytes() ([]byte, error) { return bindataRead( @@ -3297,6 +3384,26 @@ func runtimeSyntaxSqlYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxStataYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\xbc\x5b\xaf\x24\x37\x92\x1f\xfe\xae\x4f\xd1\xdb\xff\xf9\x7b\xa5\x99\x95\xd4\xe7\xe8\xd2\x3d\xc2\x6a\x05\xb8\xbd\xc2\xae\xb1\xc6\xbe\xf8\x61\x00\x95\x36\xcd\x24\x23\x33\xa9\xe2\xed\x90\xcc\xcc\xaa\x9e\x98\xf9\xec\x46\x44\x90\x59\x75\x4e\xb7\x31\x06\x0c\xbf\xb8\xd1\x8c\xdf\x2f\x78\xbf\x25\x19\x64\x66\x9d\xc9\x3a\xa8\xd7\x04\x3f\xbc\x2a\x55\x55\xf5\xd9\x67\x06\x2a\xe8\xfa\xc3\x67\xaf\x5e\xbd\x7a\x45\x81\x41\x79\xf8\xe1\xd5\xeb\xd3\xe9\x2b\xf5\x93\x89\xbf\x7b\xfd\xd9\x67\x79\x75\x50\x24\xc2\x97\xaf\x74\x0c\xa5\xaa\x50\xbf\x2a\x35\xdb\x30\x8b\x37\xfd\x2b\x55\xe5\xfa\xc3\xab\xd7\xff\xe3\xf4\xfa\xf5\xe1\x09\xc1\x50\x5e\xaf\xff\xfe\xe6\x75\x97\x5b\xff\xf7\xe5\x2b\x6b\x20\x54\x3b\x59\xc8\x5f\x79\xa5\x73\x7c\x1e\xfe\x2c\xfb\xd7\x1f\x05\x49\x21\x7f\xff\x71\x80\x14\xf5\xea\x97\x5f\xff\x56\x69\xd4\xdc\xdf\x9d\x4e\xfb\x1f\x5e\xbf\x88\x79\x6b\x6d\x02\x6d\x95\x7b\xbf\xa8\xcc\xb1\x4f\xa7\xaf\x5e\x7f\xf6\xbf\xdb\x25\x9f\xea\x91\xff\x77\x3b\xe4\xff\x7b\xf5\x9f\x57\xeb\xea\x97\x36\xbc\x9a\xd6\xa0\xab\x8d\xa1\x7c\xf6\xb2\x9c\x5b\x7b\x5e\x9f\x4e\xe3\xe7\x83\x56\xce\x41\x46\x35\x8e\x19\x36\x54\x63\x41\xa5\xa3\x88\x05\x55\xb1\x81\xc5\x82\xaa\xaa\xc0\xe2\x91\xe5\x82\x6a\xad\x51\x47\x03\x38\x42\x55\x06\x02\x8e\x36\x44\x6f\x95\x3b\x48\x3a\x58\x55\x56\xbc\xb3\xa7\xf0\x38\x19\x1c\xaf\x15\x62\x36\x90\x51\xa3\x56\xab\x5e\xae\x0d\x28\x2b\x61\x9c\xea\xbd\x59\x7c\x41\x0d\xd6\xa1\x5e\x54\x46\xbd\xd8\x47\x16\x1c\x6f\xb1\x8f\x12\x8b\x23\x2d\xd1\x41\x39\x5f\x89\x24\xd4\xce\x26\x7c\xef\xa2\x3e\xa3\x76\x71\x76\x71\xc6\xf7\xde\x5c\x29\xe2\xfb\x38\x69\x12\x06\x75\x74\xf0\x14\x56\x3f\x12\x73\xaa\xc6\xec\xa2\x56\x0e\x0e\x75\x83\x5c\x6c\x0c\xa4\x87\x29\x03\x24\x95\xa9\xa4\xe8\x7a\xa2\x12\x27\xd4\x91\x79\xa0\xfc\x72\x46\xea\x3f\xee\x3e\xa3\x2a\xa0\x51\x57\x34\x50\xd1\xcc\xca\x7b\x95\x8c\xba\xb1\x67\xfc\x72\xf0\x3b\x46\x9c\x6a\x6c\xac\x9a\x59\xbc\xd1\xa1\xa2\xb1\x1c\x8e\x26\x4e\x23\x89\xf7\x24\x16\x12\x9e\xc4\x13\x89\x9d\xc4\x15\x4d\x24\x72\x45\xb3\x86\x00\xb5\xa6\x1c\x47\x04\x04\x87\x90\x8a\x89\xeb\xe8\x80\xd8\xe4\xa2\xaa\x08\x97\x44\x2e\x06\x9a\x2b\xca\xdd\x73\xea\xec\x3b\x95\xfb\xfc\x67\xfc\x99\xbc\x69\xe9\x82\x8b\x2d\xb5\x30\xcd\xa0\xcc\x41\x20\xe7\x98\x59\xdb\xb3\xad\x80\x52\xce\xe4\x22\xf9\xfa\xba\x5b\x53\x17\xfc\x99\x73\xe3\x16\x51\x7e\xd2\xf4\x06\x1c\xb4\x28\xa3\xbc\xca\x06\x17\xe5\xa6\x2b\xa8\x7c\x10\x77\xc5\x45\x95\x01\x52\x8e\x09\x97\x05\x97\xe5\x3d\x52\x77\x2d\x34\xb6\x4b\x5c\x73\xc1\xe5\x9a\x20\xcf\x10\x3d\xd4\x6c\xf5\x0b\x35\xe1\xbf\xa2\xa5\xf9\x2b\x92\x4b\xb3\xb3\x5a\x4b\xb1\x2a\xdc\x18\x55\xeb\x50\x24\x52\x30\x70\x09\xb1\xa2\x0d\xce\x16\x82\xac\xc2\x0c\x68\x03\xf1\x8d\xdc\xf1\x38\xdc\xf1\x96\x76\x6b\x13\xfe\x60\x87\x3f\x4d\xee\x86\x87\x5f\x9b\xbc\x36\x6c\xf7\x83\x68\xc3\x76\x3f\x56\xcf\xd5\x9e\xf6\x67\x16\x5d\x6b\x3d\x7b\xb0\xee\xdf\x7a\xa0\x91\xc3\xf7\xd6\x0f\x77\x4a\x0f\x75\x2a\x39\xa5\xe1\x8e\x1e\x21\x71\xb6\xa5\x5a\x7d\xcf\xef\xc3\xb8\x83\xc2\x7d\xef\x84\x97\xdd\x13\x7a\x3f\x84\xfb\x8e\x08\x3f\x8b\x3c\xf4\xa3\xde\x6d\x5d\x21\x26\xb9\xd7\x1e\x27\x45\x5b\x4a\x0c\x77\xb4\x87\x94\xab\x27\xe0\xf8\x47\xf4\xba\x9e\xe1\xda\xbb\x77\x07\x3b\xae\xce\xdd\xd1\xb4\x3c\x53\x7a\xaa\xe6\x21\x6a\x06\x5e\x14\x6d\x29\x57\xdf\xe6\xdc\x7f\xc5\xde\x5b\x0d\x69\x3e\xdd\xf7\x9a\x0b\xe8\xc2\x6d\xf5\x73\x61\x52\xba\xc6\x4c\xdd\xe3\x82\x3c\xea\x2e\xd8\xe3\x09\x61\x7e\x9b\x99\x2e\xd8\xdd\x96\x45\xe5\x2a\xda\x7d\x21\xc1\xb7\xce\x11\xad\x75\x54\x27\xe2\x79\x9f\x38\xce\xe4\x1e\xde\xe0\x31\x8a\x9d\xb4\xe0\xdb\x70\xca\x58\x7a\x55\xbd\x2d\xc5\x86\x99\x68\xb6\x17\x82\x35\xd8\x29\x66\x8f\x5e\x91\x7a\xa1\xa5\x9e\xb0\xad\x37\x5e\x5d\x64\x1d\xf0\xea\x42\xcf\x8b\x57\x17\x17\x29\xbd\xb9\x62\x5b\xa0\x8f\x2c\x6d\x20\x27\x19\xd8\xd0\x33\xb0\xa1\x65\x60\x03\x67\x60\x83\x64\x60\xc3\x5a\xa1\xa0\xf7\xe8\xfd\x7b\xf4\xd1\xa0\xa7\x85\xc0\xc7\x50\x17\x91\xee\x8a\x3e\x83\x33\x76\x42\x5f\xe2\x24\x4b\x04\xb1\x23\x6d\x89\x53\x01\x5a\xcb\x0b\x86\xbe\xb3\xdd\x66\x6b\xb8\xed\x6d\xcf\x67\xad\x4c\xd9\xd0\x37\xa6\xdb\xc4\x0d\x3f\x63\xe0\x75\xb2\x4d\xdc\x36\x6b\xdb\x48\xdc\xc6\x21\xa4\x96\x45\xa2\x14\x29\x54\xe4\xff\x1c\x24\xf3\x33\xac\xce\x79\x55\x31\xb9\x35\x2b\x87\x7d\x6a\x37\x4c\x78\x3f\xc1\x9f\xa8\xdd\x4f\xab\xca\x15\x72\x47\x77\xc5\x8c\x99\x4b\xcf\x47\x83\x72\x5b\x8a\x32\x17\x9e\x81\xbc\x64\x06\x67\x98\xe1\xe2\x05\xb2\x40\xc1\xd6\x77\x19\x92\x53\x57\xcc\x50\xd7\x1c\x30\xdf\x2f\x44\x59\xe6\x6b\x7e\xb1\xee\xe6\xdb\x72\x92\xfb\xd3\x90\x8f\x49\x96\x6f\x3d\x9c\x5b\xcf\xe4\xb8\x06\x83\x39\xee\x6d\x7f\xce\x71\xbf\xdb\x80\x49\x6b\xbe\xb4\x01\xe7\xde\x19\xb9\x62\xee\xb3\xaf\x13\x9a\x22\xb9\x3f\xcc\xf9\xf6\x28\x17\x2c\x5a\x39\x95\xb1\x8f\x77\xb1\x73\x40\xb2\x78\xd8\xe0\x29\x9e\x2c\xa3\x52\xdb\xa4\x2b\x54\x1f\xb8\x60\x79\xca\x15\x4b\xc1\x52\xde\x63\xa9\x59\xab\x4a\x60\xd6\x44\x10\x27\xee\x41\x31\x47\x09\x6a\xb6\x9e\xd5\x4e\x5c\x27\x47\x90\x83\x40\xb0\xa6\x04\x99\xf5\xb8\x0b\xa1\x4d\x4d\x98\x57\x55\x2f\xec\x15\x0b\xa7\xed\x08\x64\x9e\x00\x17\x14\xe9\xf8\x80\x65\x1d\x6d\x28\x35\x0b\xd9\x63\x36\xc4\xc4\xc3\x63\xd9\x01\x12\x56\x24\x53\x8e\x6d\xb8\xfa\x1e\xab\x41\x9e\x64\x75\xc1\x6a\x03\x56\x8f\x35\xd2\xf3\x56\xb0\x3e\x61\xcd\x34\x4e\x35\x37\x7b\x43\xe6\xe1\x6d\x91\xac\x3b\xd6\xdd\xd6\xc5\x06\x5c\xd9\x38\x5b\x4d\x6b\xd0\x6a\x5a\xb1\xab\x2d\xc6\xd2\x42\xb1\xda\xe2\xa0\xd2\x74\x5c\xa9\xdb\xa2\x4f\x2a\x03\xf3\x12\x73\x3d\xc3\xf5\xde\x1f\x2e\xf7\x21\x4d\x9b\xac\x60\x8d\xa2\xe6\xe8\x99\x70\x79\xdc\xe5\x9b\x72\xd6\x90\x81\xb4\xf6\xd2\x39\x78\xaa\x4c\xb2\x9d\x17\x61\xd2\xd7\xeb\xd1\xd9\x9c\xab\xad\x4e\xea\xc3\x03\xb3\x1e\x63\xb5\x1e\x83\x45\x4c\x66\xa7\xfd\x20\x51\x69\x1c\xd6\x3e\x20\x4c\xe4\xa1\x39\x68\x9e\xee\xb8\xba\xf1\x1e\x5b\xc6\x8f\xeb\x14\xa0\x68\x95\x5a\x15\xe2\x02\xbd\xb1\x3c\xae\x44\x79\x34\x3b\xd1\x71\x6d\xed\x94\xf1\xde\x40\x93\x63\x3b\x71\x07\x38\xb3\x70\x57\xec\xf3\xbe\x21\x8d\xf4\xed\x09\x38\xd8\x33\x6f\x1e\xe4\xfb\x3d\x6d\xa7\xc5\x84\x4b\x27\x31\x66\x50\xe7\x66\x25\xb3\x31\xd6\x0c\xb1\xeb\x82\x57\x8f\x57\x8a\x7b\x7d\xc2\xeb\xfe\xc5\xe9\x34\xbe\x7e\x79\x2e\xd1\xd1\x7b\x15\x4c\x3f\x96\xd0\x49\x18\x3c\x84\xfa\xe2\x54\x62\x27\x04\x57\x80\xc5\xe9\x54\xfe\x60\x27\xb4\x01\xa7\x98\x41\xe9\x85\x90\xdc\xc6\x42\x89\x74\x0d\xd6\x8e\x70\x90\x82\xe3\x15\xc7\x2b\x01\x4d\x28\x7c\x5a\x2d\x54\x77\x25\x44\x35\xc6\xb5\xa2\xd2\xa8\xf4\xf0\x16\x95\x4e\x39\xb9\x58\x0f\x42\x7e\xe6\xb7\xb5\x54\x54\x26\x92\x4b\xaa\x2e\x84\x6b\x62\xdb\x5e\xb9\xb4\x28\x54\x1e\x54\x28\x48\xe7\xa3\x10\xc9\x6d\x2c\x94\xc8\x01\xa8\x95\x8d\x57\xa0\xd5\x8b\xb9\x81\x09\x95\x9c\x80\x54\x42\x95\xd8\x01\x8b\x20\xd2\xa0\xca\x7a\x61\x31\x98\x2c\xd8\x32\x23\x9a\x18\x9c\x47\x95\x61\x66\xc1\x5e\x73\x41\x95\xad\x57\x22\x25\x21\x91\x9e\x92\x78\x42\x55\x50\x15\x4f\x4f\xb1\xad\x37\xd6\x23\x1d\xba\x9b\xee\x14\x3f\x5d\x86\xc1\xb8\xf9\xce\x8b\x32\xa2\x9c\x0a\xb0\xc8\x22\x2b\xaa\x4d\xfa\x71\xeb\xbd\xc8\xa4\x74\x1c\xde\xe2\xa8\xcb\x19\xf6\x37\x38\xce\xd1\x4c\x19\xae\x74\x3c\xa4\x76\x8c\x36\xbd\xa1\x62\x47\xcb\x39\x8c\x36\xa5\xa6\xe6\x03\x13\x03\x57\x7d\xb4\x15\x4a\x07\x4b\x18\xf7\x8a\xa3\x18\x27\xa3\x07\x5f\xe8\x59\x1d\x23\x65\x15\x63\x2d\xca\x27\x21\x35\xab\x3b\x36\xbc\xc3\x31\x5e\x74\x1c\x5c\xc3\x24\x78\x69\x30\x7c\xdf\x49\xc2\xb1\x17\x9d\x91\x9f\x05\x1c\xb3\x05\xe2\x91\xdc\xce\xa2\x88\x04\x1c\x33\x85\x64\xee\xd6\xb1\xe0\xc8\x4d\xa7\x5a\xb8\x61\x6f\x04\x3a\x72\xd0\x13\x77\x42\x8b\x5f\x55\x65\x4f\xc2\x77\x84\x5c\x69\xa9\xf1\x5b\xd4\x0a\x75\x1f\x57\x4d\x83\xaa\x55\xeb\x35\xad\x3c\xfb\x05\x3a\xb9\x92\x1c\xde\x75\xe4\x68\xc4\x7a\x3a\xe2\xe4\xc7\x2e\xc7\xdf\x80\x2f\x0e\x48\xa9\x2c\x56\x91\xb9\x01\x20\x6d\x79\x5a\xa3\xa6\x15\xbf\x36\xa0\xda\x68\x8b\xda\xa0\x86\x50\xe2\x58\x86\xaa\x68\xd7\xd4\x64\x15\x10\x4e\xfd\xf4\x6e\x2c\x49\xd0\x67\xe3\x66\x3a\x18\x16\xd1\x68\xf4\xbc\xe2\x2b\x0b\xe9\x13\xf6\x5d\x5c\xba\x8b\x43\x5b\x98\x5e\xc0\x25\xa4\xa2\xac\x45\xed\x50\x3b\x9a\x80\x2c\xd7\x6a\x49\xa7\x25\x49\x3b\x0a\xb4\x85\x45\xa5\xf3\x3f\xdf\x01\xb0\xa0\x59\xc4\x98\x18\xac\xc8\xa1\xec\x42\x6a\x83\x1e\x8d\x27\xb9\x10\x41\xd7\xa3\xb6\x0c\x03\x6c\x5c\x62\xa1\xa2\x54\xce\xea\x8a\xda\xad\x85\x76\xba\x86\x83\x07\x55\xd6\x4c\xcd\x68\x1e\xa5\xf2\x05\x85\x28\x35\x03\x3c\x53\x68\xb0\x44\xe5\x51\xf4\x86\x4b\x0a\x99\x1c\xb0\x98\x45\x52\xcd\x18\xa9\x46\xa1\xb0\x7f\x34\x30\xc6\x78\x96\x0b\x8c\x54\xbe\xed\x84\xaf\x34\x62\xf6\xab\xab\x43\x18\xef\x95\x1d\xfb\x6e\x4c\x98\x81\xfa\x33\x86\x89\x85\x15\x99\x1b\x78\xc2\x0c\x81\x80\x63\x51\xe7\x46\xde\x80\x04\x54\x47\x7b\x90\x70\x63\x1c\xb9\xda\xb0\x02\x93\xac\x34\xf9\xa4\x2b\x0b\xd9\x9e\x89\x95\xb8\x66\x4d\x51\x28\xd7\xac\xfb\xa5\x4a\xce\x8f\x46\x55\xc5\x6c\x50\xa1\x5a\x61\x67\x1f\x85\x14\x2f\x51\x41\xa4\x6b\xa0\x3a\xd6\x83\x48\x8c\x39\x2b\x6a\xcf\x4a\x2e\xa0\x6c\xa8\xf4\xc4\xcb\x53\x4e\x92\xba\x35\x5e\x46\xc5\x9d\x77\x59\xd4\x07\x02\x1e\xed\xb6\x4f\xdc\xb6\x09\x4d\xf5\xcc\x50\x59\xac\x22\x73\x83\x80\x3a\x47\xea\x55\xfa\xaf\xb3\xa5\x07\x4b\x70\xe0\x91\x2d\x16\xa9\x23\xea\x40\x13\xb6\x16\xca\xa4\x96\x3a\x7c\x27\x40\x5d\x5c\x6b\x24\x58\x7d\x49\x22\xa9\xc4\xd5\xaf\x0e\xf5\xca\x4f\x05\x49\xf6\xa3\x67\xc0\x20\xf5\x53\xb1\x73\xc7\x70\x10\x75\x63\xf5\x8e\xae\xf7\x3c\x3f\x53\x80\x6f\xb1\x6a\x9c\xd0\x8c\x68\xf8\xf4\x60\x00\x0d\x68\x72\x91\x85\x11\x49\xbe\xd3\x84\x06\x0a\x39\xcd\x22\x8b\xb4\x0d\xc6\x8e\x14\xb7\x59\xc9\x66\x92\x4c\xa7\xd9\x15\x34\xd3\xca\xd7\x91\xc6\xa2\xb1\xc3\x8c\xb4\x5a\x18\xcb\xcb\x67\x41\x63\xd9\x69\x95\x0d\x61\x62\x31\xd0\x73\xc5\x44\xc0\x89\x54\x0d\xae\x84\xd5\x06\x5d\xd1\x44\x34\x11\xc8\x19\x16\x56\x24\x05\x54\x1e\xcd\x86\xc3\x5b\x34\x6d\x89\x37\x59\xed\x64\xf1\xa1\xc9\x31\xa1\x29\x68\xca\x20\x5d\x5c\xaa\xa1\x8d\xc5\xac\xc9\x59\xad\xc8\x5c\x36\x2b\x9d\xaa\x14\x9a\x9d\x17\x56\x73\x35\x17\x04\x04\x83\x54\x12\x97\x03\x33\x04\x04\xbb\xd1\x73\x0a\x9e\xf6\x7f\xda\xe3\xc9\x2f\x68\x72\x91\x85\x11\x09\x08\x4f\x08\x99\xe6\x1e\x70\x02\x7a\xce\xdd\x24\x98\x04\xca\xce\xb8\x40\xed\x38\xcc\x2d\x4a\xe3\x43\x59\x6e\x6a\x3a\xa8\xbd\x8b\x65\x9f\xc7\xb2\x1c\x8b\x33\xac\xab\xc8\xdc\x20\x20\x64\xe2\x39\xa2\x5c\xec\xd1\xce\x0b\xa5\x0e\x7a\xe2\x0b\xc0\xc6\xd9\x60\x65\xea\xac\x3e\xf3\x36\x40\x1a\x5c\x92\xa2\xe6\x96\x3a\x2c\xd1\x09\xa9\x47\xe8\x1a\x0e\x4f\xa1\xf1\x8c\xb2\x43\xb1\x1c\x0c\x4c\x6a\x75\x5d\x2b\xab\xf7\x8d\x6e\x1a\x86\x18\xdc\x15\x79\xff\x6f\xdb\x08\x14\x84\x1a\x4d\xdc\x91\x67\x2e\xd4\xe8\xcd\x15\xe1\x82\x70\xb1\xe4\xf8\xae\x93\x6b\xc3\xa0\x1d\x4e\x4a\x93\xab\x2c\xa2\xc8\xdc\xa0\x6d\x95\x4d\x49\x07\xd1\x6a\xc8\x91\x2c\x58\xd3\xbd\x44\x6d\x1a\x2d\xde\x93\x56\xa5\xc9\x81\x56\xd7\x95\x42\x59\x9b\xb3\x4a\x0b\x4e\x46\xd1\xf3\x22\xa0\x3b\xe6\x83\xd8\x1b\x1b\xef\x28\x10\x2f\x6a\x6b\xc0\xea\x5a\x00\xa7\x85\x96\x8b\x48\x16\x24\xdf\xc3\x6a\x17\xc9\x97\x76\x60\x12\x93\x75\xb4\x2d\x4d\xd6\x39\x32\xa7\x6d\x30\xc3\xe2\xd2\xd0\xc2\x83\x39\x88\xad\x0d\x86\xb7\x38\x91\xe2\x70\x72\x96\x5c\x61\x51\xc9\xb8\xfe\x6e\x78\x83\x7c\xd0\x26\xa1\x44\x56\x9c\x52\x06\x63\xa9\x23\xb3\xd2\xc3\xc3\x77\xdf\x0a\x51\xe6\x37\x21\x7a\x39\x37\x12\x2f\x42\x8c\x49\x8d\x50\xee\x4c\x36\x41\xaa\x24\xa1\x5f\x1b\x49\x2d\x66\x7a\x6a\xd8\x22\xee\x73\x2b\xef\x12\x19\xe9\x41\x23\xe4\xc7\xba\x13\x6a\x0b\xd1\xe8\xae\x42\x32\x0d\x5c\x26\x53\xe8\x22\xb8\x04\xc1\x24\x50\x43\xc7\x47\x26\x95\xcc\xbc\xa9\x46\x36\xfd\xa7\x1a\x59\xd0\xc4\x9a\x6a\xdc\xd9\x73\xc6\x59\xf9\xfe\x18\x76\x9a\x3a\xb3\x37\x4f\xdb\x2e\xb8\x45\x0e\xe6\xb1\x91\xe6\x4d\x4f\x36\x13\x7a\xb4\x67\x63\x87\x05\x2e\x6a\x8e\x81\x79\x49\xf1\x0c\x05\x67\x40\x6a\xe6\x0c\x81\x09\x64\x91\xaa\x41\xed\xc8\xa1\x59\x85\x33\x61\xa9\x86\x60\xa3\x13\x0b\xce\x50\x6b\x3c\x53\x1e\x0e\x67\xa7\x0c\x1d\x45\x1a\x0e\x6f\x71\x76\xd6\x0f\xee\xcd\x43\x27\x8f\x9d\x7c\xd3\xc9\xb7\x9d\x7c\xd7\xc9\xf7\x9d\x1c\xc9\xdf\x75\xf2\xc7\x46\x1e\xde\x74\xd2\x73\x7e\xe8\x39\x4f\x82\x7e\x15\x0c\xfb\x43\x27\x8f\x9d\xb4\xb2\x93\xc0\xd6\x22\x6c\x2d\x7c\x6b\xc1\x5b\xab\xd9\xd6\x2a\xb6\xb5\x7a\x6d\x54\x2d\x4f\x6e\xf8\x9e\x65\x62\x49\x9d\xed\x3c\x4f\x87\xd9\x45\x72\x23\x0b\x25\x92\x3a\x87\x0d\x43\x81\xe1\x5d\x27\x09\x67\x39\xf9\xcd\x61\xcc\xc0\xf5\x27\x32\x37\x18\xbe\xeb\x24\xe1\x1c\x3d\x1f\x63\x08\x81\x0b\x24\x92\x5b\x08\xe4\xfa\xe1\x20\x3c\xe4\xd1\xa7\x63\x1a\xdd\x38\xad\xd3\x87\x9a\x0e\x6a\xef\x62\xd9\xe7\xb1\x68\x9e\xa5\xc5\xc4\x4a\x40\xcb\x02\x41\x26\x4b\x6c\x4e\x19\xa6\x42\x10\x47\x4b\xf5\x68\x5b\x5e\x43\x6a\x65\xc6\x39\xbf\xc5\x39\x0f\x6c\xa3\x11\xae\x39\x03\xa5\xcd\x83\x19\x59\xf6\xe5\x88\xb8\xcd\x0c\x59\xed\x1d\x87\x76\x4f\xc8\x6a\x4c\x84\xbc\x11\x36\xdc\x2c\xec\x31\xd5\xc2\xfa\x45\xcc\xfe\x1b\x7d\x14\x9e\xe8\xc8\x3e\xe7\xa1\xd5\x3a\x0f\x4f\x45\x2f\xe0\x39\xe6\xd3\x0a\x99\x73\xe7\xc5\x8e\x91\x37\x1f\x66\xbd\x64\x5e\x1f\x09\xa1\x36\xb8\x65\x20\xfb\xcf\x9c\x87\x35\x98\xc8\x58\x48\xa5\x95\x99\x25\xb5\x1e\x46\x45\x0d\x03\xcb\x4f\x9b\xe0\xf0\xf6\x60\xd4\x4f\x34\x0b\xc6\xeb\x41\x28\xb4\xf0\xaa\x6a\xc3\x14\x3b\xaf\xd7\x04\xc4\x39\xe3\x1e\xc0\x1b\xcb\xcc\xd7\x12\xf3\x1e\xa3\xc1\x05\x17\x65\xac\xdf\x22\x2e\x7c\xac\x5f\xd4\x5a\xbc\x0a\xb8\xa8\x0d\x32\x2e\x80\x74\x10\xa2\xf5\x82\x90\x17\x0c\x21\x81\x91\xe7\x18\x93\xdc\x42\xf8\x9e\x6e\x01\x87\x7c\x6e\x5a\xd8\x94\x58\xa0\xca\x61\x5a\x48\x12\xe4\x78\x95\x4f\xd3\x0b\x5c\xcc\xea\x13\x2e\xd6\xd9\x0a\xb8\xd0\x82\x4f\x62\x78\xcb\x10\xd9\x72\x5e\xe4\xa1\x58\xdc\x8a\x8b\x3c\x06\x4b\xac\x54\x10\x49\x47\x96\xdd\xd2\xa6\xd4\xc2\x85\x16\xe0\xdb\x0c\xab\xcd\x1f\x59\x0c\xd3\xc4\x98\xd0\xda\x82\x56\xf6\x46\xeb\xb9\x02\x36\xb0\xd1\x6d\x83\x76\xab\x21\x9c\xc8\x59\x16\x4e\x24\xfb\xda\x0b\xda\x90\xc8\xad\x2c\x28\x65\x21\xb7\x00\x30\x4f\x2c\x40\xa4\x6e\x40\x21\x15\x66\x96\x81\x64\x16\x85\x1e\xd5\xb7\x9d\x24\x26\xf3\xe3\xc0\x6f\x80\x6a\x9e\xef\xc9\x23\xda\x14\xf9\x20\x61\xf9\xbc\x6e\x33\xda\x3c\x91\x1b\x74\x06\xf6\xcf\x93\x47\x9b\x2d\xda\x32\x94\xed\xda\x80\x6c\x75\x5b\xac\x41\xdb\xec\x47\xbb\x51\x1f\x0d\x0f\x34\x1a\x8d\x1f\xcc\xd6\x83\x50\x6d\xd8\x6c\x64\x39\x4c\x31\xd6\x10\xa9\x94\xad\xde\x52\xd7\x9e\xb8\xb6\xb4\xb5\x25\xfd\x4d\xe9\xf3\x39\xd8\x09\x98\x09\xb9\x87\xe1\xfb\x4e\xde\xe1\x6f\x67\x9e\x92\xbf\x45\x4b\x33\xfa\xac\x9c\xca\x5e\x3d\xe0\x59\x25\x72\xc3\x37\x24\x3d\xd0\x46\x78\x56\x29\x29\x92\xb4\xf9\x9e\x0d\x84\x62\xeb\xf5\x20\xc3\x5b\x3c\x03\x24\x3c\x17\x4f\xce\xe6\x10\x37\x3c\x57\xb5\xe2\x79\x57\x8e\xec\x08\x87\x4e\xa1\x53\x23\x39\x60\xe1\x44\xf2\xf1\xb5\x6d\x47\x0e\x36\x70\xa5\x41\x9c\x98\x64\x35\x03\x3a\x32\x4b\x48\x0c\x09\x9d\x45\x67\x83\x8e\x9e\x00\x48\x9c\x79\x16\x71\x29\x34\x77\x9d\x8b\x87\x71\x7c\xc7\x69\xa1\x3c\xd4\x74\x50\x7b\x17\xcb\x3e\x8f\x65\x25\x16\xdf\x16\x30\x29\x43\xf3\x69\xa5\xb4\x77\x66\x9d\xd1\x5a\xee\xe8\x00\x41\x03\x23\x84\x52\xf2\x25\x32\xa5\x3c\xde\xc7\x31\x1e\xb1\x8f\xba\xde\x29\x5c\x8d\x43\x4f\x37\x6e\xef\x23\xda\x17\x11\xa9\xc2\x41\x2e\xda\x5c\x54\xc6\x86\x99\x4d\x22\x17\x35\x39\xc5\xc2\xf5\xd7\x7e\x56\x5e\xf0\x71\x5d\x5f\xbe\xfe\xa3\xda\xf2\xf3\x2e\x5b\x9f\x58\xc4\x7d\x1b\x94\xcb\x90\x42\xc8\x86\x86\x8b\x01\x76\x75\x45\x17\xe3\x79\x8a\x99\x71\xa5\x68\x3b\x94\xd2\x60\x78\x8b\xae\x9b\x8a\x2e\x03\x19\xc7\xe8\x32\xd5\x2b\x47\x4d\x81\x59\xc6\xb0\xa0\x2b\x10\x9a\x24\x7f\xc6\x0b\x3a\xa9\x81\xac\xe0\x02\x14\x5a\xb3\x55\x61\x46\xb7\xa1\xdb\xf2\xa3\x34\xb6\x91\xe1\x2d\x7a\xf4\x0a\xbd\xd2\xe4\x32\x8b\x88\x5e\x9d\x41\x87\x82\xb4\x86\x7a\xb9\xb7\xf5\xf7\x17\xb7\x4d\x49\x8d\x70\xad\xbc\x0a\xb4\xd4\x79\x95\xcf\x2c\x6c\x60\x88\x6b\x65\x6c\x57\x58\x9e\x53\xd7\x41\xab\x94\x98\xc8\x6d\x2f\xb1\xb4\xd6\x21\x0b\xcd\x2d\x54\xb1\x18\xe4\x02\x8b\xe9\xb1\xbb\x8a\x46\x3b\x28\x33\xaf\xea\xf3\x20\xaf\x2a\xef\x72\x5d\xa1\x5d\x4c\x38\xf8\x98\xaf\x8d\x3b\x3b\x36\x16\x6f\xb1\xdb\x8e\xc9\x7c\x5f\xac\x5e\x98\xca\xd3\xe8\x55\xd5\x89\x86\xc4\xab\xca\xcf\x91\x57\xb5\xc7\xce\xf2\xba\xf7\xee\xa5\x6f\xb6\x97\x81\xd7\x60\xb9\x23\xa6\x3a\xd5\x6c\xcf\xe8\xb5\x26\x67\xd1\x9b\x37\x03\x7a\xf3\xc0\xc2\xc0\xb8\xce\xc4\x1e\x59\x1c\x6a\x21\xd7\x7b\xde\xd0\xe3\xe5\x4d\xe1\xcb\xa7\x99\x58\x7b\x51\x5c\xbc\x04\x97\x05\x92\xca\x06\xbd\xb9\x92\x39\xce\x30\xa1\x87\xc1\x00\xf9\x92\x91\x2b\x5b\x93\x07\x63\x59\x91\xfe\x68\xd7\xc2\x1e\x9e\x92\xca\xd4\x59\x34\x2c\x90\x67\x16\x80\x7e\x4a\xe8\xa7\x0b\x7a\xde\x34\xfd\x12\x0d\xd5\xcb\x86\x91\xdf\x49\x7a\x7b\x01\x43\xbb\x41\x27\x64\x6c\xa8\xec\xd1\x9f\xdb\xed\xb7\x3f\x93\x31\xe4\xcf\x5c\xcb\x73\x49\xbc\x2c\x79\x87\xde\x0d\xdf\x91\x50\xe6\xb7\x42\x38\x2e\xcb\xc2\x44\x0f\x86\x81\x76\x6c\x26\x32\x09\xdc\xa0\x43\x25\xe0\xee\x11\x32\x71\x4c\x78\x23\x72\x18\xa7\xb9\x34\xaa\xaf\x9a\x26\x1d\x73\x43\x2d\x20\x66\x19\x1e\x44\xde\x62\x3f\x70\xd9\x8d\xde\x12\x3e\x1c\x09\x1f\x45\xde\x85\x8d\xd3\xfc\xa6\x91\x7c\x10\xc9\x78\x5c\xde\x3c\x35\xb2\xb4\xa0\xa5\xc7\xc9\xad\x0a\xba\x13\x33\xa5\x37\x8d\xe4\x83\x48\x3e\xe6\x88\x23\xb5\x84\xae\xcf\x9d\xb8\xa9\xc1\xad\x29\xc4\x7b\x5b\xdc\x74\x57\x61\x37\x1d\xad\x71\x53\x4f\x2e\x69\x42\xcf\x2f\xe4\x56\x87\x6c\xd6\x1b\xb9\x65\x2e\x5a\xcf\xfe\xd0\x9e\x6e\xea\xad\x3c\x56\x7b\x89\xac\x84\x7c\x64\x74\x31\x1c\xe9\xd8\xb9\xbd\x1b\x66\x78\x0a\x3c\xc8\x73\x56\xe6\x4d\x23\x89\x4b\x5a\x7a\x91\x8b\x04\xf0\xdd\x88\x77\x83\x0d\xb6\x0a\x6e\x04\xb4\x6e\x7b\x37\xf0\x67\x16\x6e\xf0\x8e\xd7\x9f\x46\x86\x77\x4c\xa3\x01\x9e\x77\x61\xe4\x8c\x62\xe2\x18\x5c\x47\x5e\x1c\xbd\x6b\x56\xb4\x77\x43\x36\x73\xe6\x62\x32\xa4\xc8\x35\x2b\x03\xd7\xb4\xe8\x98\x85\x90\x0d\x47\xa4\x82\x5e\x82\x7d\x5a\xd9\xb7\xdd\xdd\x78\x07\x9b\xa2\xc2\xa6\x01\xbd\xf3\xaa\x8e\x6c\xef\x30\x15\xc2\xd5\xa5\x7d\xc6\xb7\x8f\x47\x64\x03\xb9\xeb\x94\xb6\xa1\x78\xc7\xe7\x02\xef\x24\xdd\x06\x9a\x49\x70\xb4\x82\x50\xd5\xb8\x3e\x71\x23\x07\xd8\x5f\x63\xdd\xbd\xb4\xba\xbd\x9f\xf2\x3c\x12\x0c\xb4\xf2\x6c\xed\xaa\xd2\x6f\xed\x96\xcd\xb3\x5d\xc5\xb2\x2d\x3b\x01\xe5\x14\x27\x67\x37\xfe\xe8\xa3\xdd\xbd\xf5\xd3\x9c\x60\xd9\x31\x40\x61\xe3\x31\x40\xc5\x00\x3b\x5c\x45\x0e\x6f\x1b\x26\xc2\x82\xc1\x61\x70\xe4\xe9\x86\x3f\xb2\xa0\x00\xd7\x04\xfb\x93\xf1\xc2\x92\x3d\xe1\x92\x1e\x1b\x70\x28\x11\xd5\xb1\xfb\x7c\xd3\x80\xf5\x39\xfa\x6f\x1a\x74\xfd\xdb\x06\xac\xf3\xc4\x09\x64\x97\x7c\xd3\x80\xbd\x5d\x9c\xbf\x6d\xc0\x7a\x9c\x87\x6c\x18\x39\x7a\x1b\x0d\x21\x74\xfc\x11\xc6\x2f\x2c\x02\xef\xde\x18\x22\x86\x28\xaf\xc1\x42\xb4\xe4\x0a\x0b\xa1\xd6\x35\xb8\x22\x0f\x30\x89\x22\x92\x37\x89\x90\x6a\x86\x60\x30\xac\x5e\xb6\x1c\x22\xb4\xd3\x44\x33\x6a\x8c\xce\x0c\x74\xea\x89\x2e\x92\x9b\x59\x58\x91\xd4\xfb\x51\xea\x19\x7b\x3d\x63\x7b\x4b\x13\x03\xc6\x00\xe4\x76\x16\x0a\x9b\x3d\x12\xd3\xa0\xa3\x0b\x5e\x88\x4f\x84\xc6\x4e\x13\x21\x3d\x52\x31\x0d\xa5\x66\x8c\x89\x5d\x64\x31\x8a\xe4\xf2\x78\x52\x35\xa0\xf2\xda\xbc\x6b\x48\x1e\xb5\x0c\x70\xd1\x6e\x2d\x76\x03\x94\xed\x3e\xe6\xba\x50\xdd\x73\x5d\xf8\xea\x29\xae\x48\xcf\x69\x5c\xeb\xc4\xc2\x8a\x74\x0d\x80\xb0\xb0\x58\x44\x42\x83\x03\x2b\xc6\x8d\xcd\x90\xa4\x34\xb9\xe1\x2d\x26\xc5\x1f\x57\xa0\x6c\x67\x2c\x07\x63\x4b\xb1\x1e\x13\xdf\x0c\x26\xad\xc8\x0d\xef\x58\xf6\xbb\xf1\x74\xbc\x3f\x4c\xfc\x02\xf1\x76\xa5\x49\x94\x3f\x36\x92\xb7\x7c\xa9\xbf\xe5\x4b\x7a\xb1\x2c\x98\xc7\x9c\x31\x69\x7e\xc3\x97\x20\x54\xbb\x7a\x4c\x20\x2f\x56\x1a\x52\x34\xc8\x9e\xce\x76\x0d\xa9\x0a\x90\x4b\x0c\xca\x61\x82\x1a\x07\x6a\xc8\xf9\x78\x4b\x95\xce\xf2\xb2\x24\x9d\xe1\x69\xb5\x1b\xe1\x45\x79\xda\x40\x0f\x46\x79\x9e\xcb\xa2\x12\xf9\xf1\x55\xb0\x00\xf9\x3b\x4c\x2e\x22\x2f\x6d\xc9\xad\xb3\x0d\x98\xf8\x02\x9f\x25\x45\x88\xb6\xcc\x71\x92\x8f\xa5\xe8\x99\x16\x52\xf6\xf6\xf9\xd4\x90\x5e\x7e\x58\xd5\x3b\x28\x16\x11\x72\xa7\x4a\x8c\x47\x8b\x08\xbf\x12\x48\x09\x72\xa6\x64\x19\x53\x56\xb6\x88\x1c\xa0\xe3\x63\x23\x09\xbb\xd9\xdb\x30\x38\x62\x05\xf2\x46\x71\x6d\xa0\x80\x88\x3c\xf5\x64\xc2\xb5\x69\xf6\xec\x15\xfd\xb1\xbe\x91\x81\x36\x54\xeb\x81\x59\xdc\x20\xf3\xc0\xe6\xa8\xf3\x5a\xe8\x69\xbb\xd1\x5b\xd2\xee\xc1\xc9\xf9\x63\x5d\x22\x33\x0b\xa1\x59\x35\xf0\xc8\x1f\xd7\x92\x88\x99\xdf\x0c\x27\xb1\xcc\x05\x2c\xa6\x5d\xa6\xc1\x6e\xf0\x09\x0b\x3e\x8d\x57\x72\x05\x9f\x68\xa6\x3c\xc9\x4c\x79\x6a\xc7\xb9\xa7\xe3\x76\xf1\x89\x47\xe5\xa9\x8d\xca\xd3\x13\x8f\x98\x00\xe9\xb4\xa8\x92\x18\xb4\x40\x12\x28\x3b\x3e\xad\xf8\xb4\x2a\xa3\x97\x33\xa1\xbc\x5d\xee\x84\x52\xae\xa4\xf2\x47\x6f\xb4\xab\xc9\x57\xb9\x74\x28\xa1\x0d\x24\xab\x6a\x23\x66\x99\xd2\xb9\x4f\xe9\xac\xe3\x84\x19\xf8\xa6\x3e\x83\xa6\xe3\xe3\xdd\x37\x70\xe4\xbe\x61\x31\x24\x02\xb3\x93\xe4\x0f\xe2\x32\x88\x1c\xd2\xa3\x90\xd2\x40\x62\xf2\x9b\xd4\x86\xad\xeb\x49\xb3\x1b\x07\x7b\x45\x32\x90\x53\x2c\x3c\x36\x5b\x3c\x43\x48\x93\xbd\x60\x86\x04\x9c\xa6\x7d\x2d\x07\x7c\x15\x96\x41\x66\x7e\x86\x52\x23\xd7\xa0\xf2\x77\x78\xf2\x31\xde\xf1\x49\x9e\xc7\xec\xc9\x08\xcd\x71\xdc\x14\x81\xe6\x05\xaf\x21\xb5\xba\xb1\x77\xc4\x26\x7a\x12\x08\x6d\x6d\x20\xfe\x33\xed\xeb\x39\xca\x3d\x7a\x43\x49\x5b\xd5\xd8\x80\x75\xb9\xf0\xc9\x6d\x45\xce\xc7\x92\x9c\x39\x5d\x55\x2c\x84\x56\x68\x40\xcb\x4b\xe6\x1e\x96\x11\xce\x2b\xe6\x35\x90\xe3\xf9\x95\xb7\x49\x8a\x15\xa4\x62\xb6\xd4\x7c\x52\xf3\x29\x0a\x8b\x9a\x80\xbf\x6d\x93\x33\x17\x41\xb1\x58\xd4\x86\x7c\xc8\x21\x61\x32\x94\xd5\xd5\xc2\x0a\xb5\xa8\x68\x2c\x5a\xf1\xe7\x7f\xf2\x0d\xe0\xf1\x25\xa0\x56\xfc\x89\x5a\xd1\x7e\xe0\x35\xa7\xe8\x48\x8e\x2f\x56\x18\x13\x03\x6f\x3f\x4c\x2a\x41\x46\xb1\x90\x58\x72\x15\x0f\x36\xf0\x11\xa2\x68\xda\x32\x59\xb6\xe0\xc6\x5a\xb0\xe1\x16\x0b\x58\x2c\x80\xed\xb2\xac\xd0\xc1\x82\x7a\xac\x40\x82\x46\x72\x1e\xf9\x9b\x45\x46\xea\x03\xc8\x05\x2a\x36\xd7\x5f\x94\x15\x2c\x53\x56\x41\x5b\x85\x65\x41\xda\x44\xca\x02\x8e\x05\xcb\x9d\x9f\x81\x4e\x28\x1b\x3b\x87\x8f\x3e\xc2\x20\x4f\x3e\xd1\x13\x91\x3a\x5a\xbf\x3a\x91\x9c\xc8\xaf\x7c\x0d\xd6\xc9\xf0\x0e\x8b\x5c\xbe\x14\x07\x90\xb0\xc8\x84\x10\x18\xcc\x63\x67\x09\x8b\x8f\xb1\x2e\x58\x82\x4a\x25\xa9\x80\x25\x62\xa1\x8e\xa4\x39\x5e\x12\xa8\x4c\xe7\xf1\x92\xec\xb9\xf5\x58\x67\x54\xaa\x70\xf2\xa4\x93\xd5\x70\x61\x52\x51\xbe\x9d\x29\x6d\xc1\x28\xf4\x64\x14\x7e\x34\x8a\x3c\x1b\xa5\x3d\x1c\x85\xc6\xbf\x62\xa9\x83\x66\xb9\x68\x91\xa6\xc1\x40\x3d\xc6\x6f\xe3\x59\x96\x2b\x13\x36\x60\x4a\x1d\x52\x8e\x3e\x12\xe1\x1e\xaf\x43\x59\xe2\xce\xe8\x93\x63\x5c\x47\x4b\x39\x29\x7d\x46\x7e\x6f\x3d\x5e\x3b\x52\xef\x54\xbe\xd9\x2c\x55\x5b\x16\xd4\x9c\xaa\xe3\x45\x64\x5b\x26\x84\x4f\xf9\x20\x74\xda\x14\x9e\x1a\xd2\xfc\x23\x72\xf6\x1d\x25\xa7\x9e\x7e\xcd\x5b\x03\xe8\xc8\x11\x0c\x50\x63\x80\x52\x41\xda\x2d\x57\x85\x2f\x85\x79\x3b\xa3\x52\x66\xfe\x1e\xd5\x52\xe1\xbf\x45\x4b\xdc\x53\xff\x78\xea\x93\xb4\xc8\x60\x34\xc2\x39\xa6\x45\xc6\xbb\x11\xf1\xe3\x0d\xa9\x54\x99\xb2\x0c\xec\x2f\x05\xb5\x95\x9c\x88\xf4\x21\x55\xa9\x70\x84\xa6\xcb\x70\xf2\xa9\xa1\xd4\x1a\xb5\x16\x20\xbf\x4d\x65\xea\xcf\x1d\xec\x88\x65\xc5\xb2\x72\xe1\x24\xa9\x77\x29\x01\x19\x04\x24\x94\xc8\xdc\xc0\x76\xfc\x70\x10\xc0\xb2\x86\xa9\x7d\x70\xbb\x72\xe5\xd6\xbc\x49\xdf\xad\x79\xe3\xdc\x68\xf5\x24\x41\x3d\xbf\xd1\x92\x55\xb6\x2b\x39\xb6\xa1\x84\x70\xc2\xed\x3a\x70\x4d\x04\xa9\x31\xc2\x24\xc5\x30\x43\xc3\x7e\x86\x20\x65\x01\x65\x0e\x42\x75\x60\xca\xd7\xf9\x47\x0c\xb9\xc2\x6f\xea\x71\x37\xcd\xca\x76\xe3\x77\xd7\x74\x5d\xad\x8d\xfb\x7b\xe5\xbe\xf4\x78\x1f\x10\x0f\x83\x82\xb4\x6e\xfa\x34\xed\x3e\xa8\x6f\x68\xa2\x95\x75\xec\xd8\x9a\x7c\x11\xd9\x35\x89\xc7\xb3\x8e\x81\x06\x69\xbb\xf2\x1c\xdb\xae\xed\x75\x59\xd9\xae\xfd\x25\x46\xa3\x6c\xfc\x94\xed\xda\xee\xe6\x0f\x26\xb9\xf2\x2d\x3c\x93\xad\x85\x3a\xcd\x32\xb6\xa6\xb5\x45\x67\xbb\xf6\x4b\xb9\x1b\x95\xf2\xf9\x66\x88\x90\x4e\x15\x0d\x25\xc5\x51\xa3\xd8\x82\xe2\x11\x14\x7b\xad\xba\xdd\xcf\xb4\x72\xcb\xa8\xc3\x3a\x4a\x25\xbb\x15\x49\xf4\x88\x4e\xac\x93\xd4\x51\xe2\x8b\x6d\x42\x44\xca\x3f\xc6\xa9\x5b\x12\x65\xbb\x16\x99\x44\xb4\xcc\xbf\xed\x84\xdb\x43\xbb\xb1\x80\x04\xd4\x36\x15\x6b\xac\xb4\xc5\xed\x58\x76\x8a\xb8\xcb\xb7\x63\x65\xe7\x05\x67\x97\xe7\x7e\xb7\xee\x8c\x65\xe7\x19\xd4\xb0\x62\xd9\xe3\x41\x52\xa6\x3a\xef\xd2\xc4\xbd\x37\x66\x97\xc5\x76\xaf\x4d\x95\x07\x52\x7e\xf3\x72\x65\x62\x49\xca\x7a\x21\x48\x75\xbb\x86\xaa\x2e\x58\xae\xe5\xb8\xc1\x24\x4e\xab\xcd\xb5\xd0\x39\xa5\x7c\xc8\x11\x68\x0b\xae\x0a\xa9\x55\x55\x8d\x0f\x24\x1e\x49\x0c\x91\xfc\x47\xc3\xc2\x8a\x2c\x0d\x12\x21\xfb\x39\x20\xc9\x77\x76\x0d\x87\xb7\xc4\xf8\x59\xac\x6a\x5c\x59\x38\x91\xaa\x41\xed\x08\xc8\xff\x3d\x7f\x78\xc8\x84\x8d\x32\x22\xb4\x14\xf0\x87\xf1\xd4\xbb\x24\x82\x63\xe0\xcb\x3f\x22\xa5\x1a\xac\x50\xb3\xd2\x4b\xcc\x56\x23\xad\x82\x83\xad\x8c\x19\x2b\xd5\x35\x8e\xe4\x2c\x4a\xb7\xf5\x37\x34\x82\x65\x47\x79\x1f\xcf\xd2\x36\xf8\xd0\x11\xb0\xc6\xf6\xcd\x94\x8c\x6b\xcd\x2a\x14\xa9\x72\x63\xd4\x3f\x44\xc9\xb8\xac\x19\x54\xa5\x8d\x83\x09\xad\x5f\x42\x60\x46\xfe\x9a\xbd\xe6\x30\x0e\xfc\x1d\x1f\x33\x7e\x24\xaa\xfc\x90\x82\x36\xea\x9a\xd7\xa0\x25\xf9\x1a\xb4\x24\x27\x42\xc9\x4b\xfb\x3c\x99\x97\xeb\x5a\x78\xe3\xa8\x85\x6f\x39\x05\x06\xb8\x60\x2d\xcd\x62\x25\xc2\x5d\x57\x72\x8b\x22\xc9\x9a\x05\x50\xcb\x1a\x68\xa0\xa5\x57\xc5\x02\xaa\x6b\xe5\x0f\x45\x08\x77\x45\x1d\xb5\xb6\xdf\x43\xf1\x4f\x0e\x54\x06\x3a\x35\xd6\x3d\x92\xa3\x93\xbd\xc0\x30\x4c\x89\x6c\xd7\x66\x12\x1d\x9e\xed\xc7\xb0\x03\x2d\x3b\xdd\xf3\x78\x91\xf9\xcc\xd7\xa6\x68\xc3\x47\x19\x88\x6f\x79\xe9\x7d\xbc\xeb\xba\xcf\xc1\x7d\xa2\x02\x74\xca\x99\xe1\x79\xf9\x49\xdb\x97\xd1\x9e\x3e\x91\xb4\x59\xa4\x1f\xc5\x3d\x36\xae\xfb\x4c\xcf\xc5\x1f\xf1\xae\x58\xaf\x09\xf9\xa5\x33\x89\x38\xe1\x8a\xdc\xd1\x24\xf8\xb7\xbe\x44\xb4\x37\xd8\xbe\x65\x5f\x0b\xae\xfc\x5b\x04\x90\xab\x18\x1a\x32\xda\xf7\xfc\x99\x3f\x0f\x0d\x74\xf4\x93\x7d\x70\x53\x79\x54\xc5\x6a\x22\xf2\x81\xd3\xa6\xe8\xb0\x1f\x66\xe0\x24\x36\x4f\x0d\x06\x65\x4c\xa7\x5a\x6e\x37\xbb\x26\xaf\x49\xbb\x26\x8f\x6d\xd3\x8e\xa5\xa1\xeb\x36\x1f\x94\xd6\xcd\xc6\xe5\xe3\xb8\xa6\x3c\xcb\x3c\x3e\xd3\xda\xb1\xaa\x69\xd4\x39\x8d\x1e\x85\xf2\x95\x13\xa1\x97\x36\xf3\xd9\x74\x53\xb9\x44\x6e\x63\x39\x22\x0a\x1b\xf6\x7b\xfe\x48\xca\x4e\xe1\x1a\xfa\xcf\x30\x86\x09\x36\xc3\xc4\x9f\xd3\x62\x99\x25\x91\x94\x18\xf4\x7d\x17\x80\x96\x72\x05\x25\x5c\x6a\x20\x28\x3e\x6c\x86\x6f\xa0\x7b\x65\x20\xdb\x40\xb5\x86\x5c\x58\x58\x91\x11\xfb\x2f\x96\x37\x0b\x3b\x8b\xf6\x39\xed\x66\x27\xdc\x76\x57\x70\xef\x1f\x74\xee\x30\x1e\x5d\xbd\xc3\x58\xe4\x67\x23\x23\xcd\x02\x5a\xcd\xf9\xb5\x32\x91\xc7\x4e\xee\xf0\x0d\x93\xfe\xa2\xf2\x8e\x93\xf1\x7c\xa7\xaa\x67\xca\xb3\xc0\x74\x50\x7b\x97\x85\x7d\x9e\x85\xbd\xcf\xc2\xbe\xc8\xc2\x4a\x16\x2b\xad\x9c\xf2\x83\x95\x21\xbd\xfc\xc5\xcb\xa0\x0f\x56\x3a\x5b\xa0\xe2\xbe\xe0\xce\x87\xaf\x7d\xb1\x28\x6f\xbe\xf6\xc5\x3a\x16\x80\xbb\x75\x9a\x96\x18\xc2\x78\x89\x01\x77\xcb\xce\xb0\x88\x22\x77\x02\xb8\x80\xc6\x9d\x0f\x47\x63\xc7\xe1\x6d\x63\x4f\x78\x91\xcb\x86\x4b\xbf\x6c\xb8\xf0\x65\x09\x4b\xd2\x2c\x5e\xec\xf0\x3d\x5e\xbc\xa3\x13\xab\x00\x10\xd2\x20\x5c\x52\x24\x59\x16\x72\x4c\xc0\x89\x74\x78\xa9\x83\xb5\x85\xa0\x32\x28\x32\x11\x09\x62\x30\x78\xa9\xa3\x0d\xac\xf3\x57\xef\x02\xcf\xd8\xf0\xee\x8e\x9b\xc7\x3b\x25\xa9\x23\x21\x5f\x07\x83\xa8\xa1\x0a\x72\xed\x2b\x7f\x87\x7d\xe1\xc3\xc4\xa5\xf2\xa7\x71\x1c\x7a\x7c\x24\x77\xa9\x33\x80\xc8\x01\xf8\x42\xa5\x71\xde\x83\x85\x7b\x75\x06\x4b\x8b\x8c\xa8\xa9\x63\x8f\xee\x8a\x48\x0e\x59\xd4\x5a\x1a\x90\x99\x78\xa9\x8b\x94\xb8\x54\x75\x75\x91\xf2\xa0\x51\xbb\x54\xdb\x6a\xd2\x0c\xc7\x4e\xb8\xb9\x8d\x72\x6b\x0f\x43\xfa\x52\xed\x96\x86\x87\x86\x1c\xb4\x49\x4a\xde\xab\x04\x68\x3b\xbb\x54\x31\x88\x1a\x72\x8e\xc7\xa9\xb6\xd3\x49\xda\xd1\x0c\x6b\x75\xa7\xb4\x7e\xe4\x57\x86\x1d\x8f\xee\x10\x8d\xc2\xc3\x38\x4c\x20\xe8\x26\x46\xa9\x4c\xb3\xdb\x55\x8b\x44\x4a\x86\x56\x5a\xd2\x34\x4b\x18\x44\x8f\x3c\x23\xba\x01\x7a\x30\xa9\xe8\x61\xda\xab\x23\x32\xa9\xb7\xdc\x32\x57\xb0\x99\x79\x9d\x70\x73\x1b\x95\x6c\x84\xb7\x66\xa5\x22\xd5\x4e\x45\xaa\x9d\x0a\xad\xba\x07\xe1\xd4\x99\xf7\x8e\x4b\xcd\x9a\x45\xe3\xcb\x42\xd0\x0b\x97\xc6\x52\xeb\x46\x68\x64\xea\xc4\xbb\x46\x5a\xcd\xa5\x0f\x84\xf0\x2c\xca\xd0\x6a\x43\x4b\xfc\xa5\x96\x69\xe0\xe7\x84\xb1\x5a\x62\xab\xc7\x4b\x25\xab\xf2\xc2\x76\xc6\x1b\xc2\xd6\xcc\x7a\xb4\xb2\xdb\x64\x97\xca\xa6\x14\x5e\x2f\x78\xbd\xd0\x3a\x3a\x0c\x23\x6d\x15\x67\x90\x6f\xdc\x9a\xa7\xca\xa0\x9e\x79\x8c\x2a\x3f\xd3\x4d\xac\xcf\xf5\x1c\xe5\xda\xe2\xde\xf3\x30\x51\xee\x3d\xad\xca\x39\xee\xcf\xbd\x78\x6f\x2e\xcf\xfc\xe4\xe3\x91\x67\x5e\x49\x7f\x9c\x34\xe9\xf1\x53\x9e\x5a\xa5\x72\xf5\x2f\x3c\x9b\xd5\xf1\xd2\x37\xbd\x6c\x7c\xfe\xa8\xf5\xf9\x65\xf3\xc9\xe3\x79\xf6\x59\xab\xf4\x91\xc7\xcb\x3a\x64\x1d\x43\x00\x5d\xc1\x3c\xf7\xfe\xa8\xe7\xf2\xa7\xea\x9a\x3f\xae\xea\x27\x7c\x0e\x13\x8a\x7d\x3f\xa8\x34\x14\xfc\x60\xc3\xc8\x62\x70\x6e\x12\x92\x98\x24\x72\xcd\x33\x0d\xa2\x71\x48\x1d\x74\x1d\xbe\x23\x5c\x74\x47\x23\xc4\x96\x8e\x8d\x94\x25\x36\xe2\x13\x93\x51\x15\x60\xa2\xe3\x85\x91\x8e\xc8\x84\x20\x1f\x90\x7e\xe0\x5b\x19\x26\x64\x40\x12\xda\xcc\xf0\x5b\xb4\xa2\x53\x7d\x69\xbd\x48\xf8\xa1\xb2\x63\x26\xb9\xd0\x01\x91\x31\x39\x2b\x64\xf5\x8c\x35\xb6\x4a\x6f\x2a\x5f\x99\xf0\xbe\xfe\xdd\xed\x47\x9b\x77\x7f\x71\x26\xac\x7e\x04\xf9\x63\x33\xe3\x2f\x7f\xf8\xf2\xd7\x9f\x3e\xff\xe5\xcd\x97\x7f\xfc\xf5\x0f\x9f\x9f\x4e\x5f\x09\xfb\xe2\x27\x3c\x38\xb1\x2f\x3e\xff\x05\xfe\xf9\x57\x8e\xdb\x23\xfc\x62\x7f\xfd\xe9\x2e\xf3\x72\xf5\x63\x74\x5f\x45\xbe\xd6\x8c\x94\xf9\x97\xf8\xe3\x8f\xf8\x8f\x3f\xe2\x3f\xfd\x88\xff\x88\xff\x84\xff\x09\xff\xee\xc7\xff\x75\xe4\xd3\xe9\xf7\x78\x3a\x51\x59\xff\x81\x5f\xe3\xdf\xe1\x5f\xf1\x47\xfc\xeb\xcb\xf8\x63\x56\xfa\x0c\xb5\xfc\xf0\xea\xf5\x2f\xa7\xd3\x9f\x4f\xa7\xbf\x9c\x4e\x9f\x9f\x4e\x5f\x9c\x4e\xbf\x9c\x4e\xbf\xfe\x7a\xfc\x19\xa1\xbb\x3f\x8e\xf3\xea\xf5\xff\xff\xe5\x4f\xa7\x93\xf9\xf3\xc3\x3f\x3c\xfe\x85\xda\xd7\xf9\x17\x3f\xfd\x32\x4f\xf0\xab\xfe\xe9\xf5\x27\x13\x7d\xfe\xf8\x70\xc1\x87\xef\xff\x05\x1f\xbe\xff\x37\x7c\xf7\x2f\xf8\xee\xdf\xbe\xf8\x74\xc4\x2f\x7f\xfa\xbc\xea\xfe\xbb\xeb\x9d\x7f\x6e\xfd\xc4\xbf\xbd\xbe\x62\x9d\xbf\xf8\xea\xcf\x6f\xfe\xe1\x9b\xc7\xbf\x7c\x3a\xe9\x2f\x5f\xfe\xf5\xd7\x56\xb7\x6f\xff\x52\x3e\x51\xfb\x17\x7f\x42\xe8\xcf\x0f\x9f\xce\xeb\xe5\xdf\x35\xfa\xc4\xdf\x33\xfa\xe8\xef\x18\xdd\xfe\x7e\xd1\x31\x39\xfc\xf3\xdf\xed\xf6\x5c\xbe\xfe\xfa\xeb\x9f\x5e\x66\xf4\xbb\xbf\xf1\x37\x97\x6a\x34\x54\xed\xcf\xff\xfb\xbf\xff\x97\x7f\xc7\x3f\xfd\xe9\x4f\xf8\xf3\xbf\xfe\xe9\xbf\xfd\xf3\x17\x3f\xfc\xf4\xfa\x6f\x17\x77\x3a\xfd\xfe\xa3\xbf\xf1\x74\xfa\xfd\xd7\xff\xf7\x4a\xfc\x8f\xd3\xa9\xfc\xfe\x13\xa5\xfe\x1f\x34\xf2\x7f\x06\x00\x00\xff\xff\x59\x2d\x62\xda\x1b\x4c\x00\x00" + +func runtimeSyntaxStataYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxStataYaml, + "runtime/syntax/stata.yaml", + ) +} + +func runtimeSyntaxStataYaml() (*asset, error) { + bytes, err := runtimeSyntaxStataYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/stata.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxSwiftYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x37\x79\x53\x1b\xcb\xf1\xff\xf3\x29\xd6\xf8\xf7\x4b\x00\xc7\xe2\x1d\x29\x57\xb2\x39\x1c\x10\x90\x52\x85\xc3\x65\xc0\x76\x85\xe5\xa9\x46\x33\xbd\x52\xdb\xb3\x33\xe3\x39\x10\x72\x3a\xdf\x3d\xd5\xb3\xbb\x20\x09\x30\xa9\xd4\x53\x95\x76\x76\x7a\xfa\x3e\xa6\x7b\x6b\xd4\x10\x17\x0e\xca\x22\xcc\xb1\x8e\x1b\x1b\x0a\x22\xc8\x58\x6e\x14\x45\x51\xf0\xa1\x11\x0d\x94\xc5\x66\x55\x0d\x32\xc2\xff\x6d\x6e\x6c\xf8\xa4\x21\x94\x1b\x45\xc6\x79\x59\xbc\x13\x31\x82\x37\x21\x6f\x5f\x17\x2d\xb7\x6a\xb2\x35\xde\xae\x26\x19\xd6\xe1\x9d\x39\xf0\x22\x5a\xdf\x23\x86\x45\x33\xb1\x7a\x60\x3b\x70\x59\x6c\x5d\x0d\xca\x3f\xfd\xee\xd5\x0e\xfd\xe5\xc5\xdb\xaa\xfa\xff\x6b\xfa\x33\xfd\x95\x76\xe9\x35\xfd\x66\x7b\x99\xcf\x01\x48\x2d\xbc\x88\x68\x4d\xf1\x0f\x58\xcc\xad\x57\x77\x2c\xa3\x88\xd0\x80\x89\x03\x75\x8f\x94\x95\x11\x21\x58\x89\x22\x82\x62\xfd\x48\x6a\x11\x02\x29\x40\x83\x91\xc0\xa4\x86\xe0\x36\x82\x09\x68\x0d\xb1\xd5\xce\xe3\x8d\x88\x40\x75\x32\x92\xb0\x71\xd6\x47\x62\xdc\xde\xa4\xef\x89\x42\x63\x13\x63\xb3\x53\x84\x26\x0d\x91\xac\x03\x43\xbd\xa1\xd4\x33\x77\xde\x46\x2b\xad\x26\x97\x26\x1a\x25\x31\xcb\xbc\xf8\x24\x23\x85\x34\x09\xd2\xa3\x8b\xc4\x1a\x0b\x8d\x22\xd0\x8d\xf0\x6b\x4e\x3d\xef\xd5\x08\x4f\xfa\x22\x2b\x35\xf1\x20\xbe\x90\x14\x01\x48\x5a\x13\xd1\x24\x20\x05\xb5\x48\x3a\xf2\x0a\x9e\x94\x25\xd0\x01\xa8\x16\x5a\xc7\x99\xb7\x69\x3a\xa3\xda\x7a\x9a\x26\xe1\xd5\x23\x76\xb7\xb6\xd6\xec\x96\x9a\x3c\x38\x10\x91\x3c\xc4\xe4\x0d\x85\x39\x46\x39\xa3\xf9\x0c\x3c\xd0\x7c\x86\x1a\xd6\xb4\xfe\xd2\xaa\x3a\xf0\x10\xc0\xdf\x80\x7a\xe0\xd3\xfe\x60\x25\x76\x78\x83\x71\xc1\xea\xdf\x80\x41\x30\x12\x48\x2d\x8c\x68\x50\x92\x42\x75\x0e\x91\x6a\x64\x87\x4f\x81\xbd\x5f\xe3\x2d\xa1\x51\xe8\x41\x46\xd2\xe2\xdb\x82\x34\xd4\x91\x9a\xc4\x4e\x36\xd3\xc7\x02\xb9\x22\xd4\x58\x03\x64\xac\xe9\x09\xc8\xde\x80\xf7\xa8\x80\x9c\x0d\x91\xb9\x3b\x0f\x12\x54\xd6\xc3\x79\x60\xc8\xbb\x3e\xa0\x1e\xbe\x26\xf4\xf0\x98\xdb\x56\xa5\x78\x9c\xce\x22\x05\x88\x74\xc1\x69\x99\x8c\x9d\x1b\x50\x34\xe7\x60\xcd\x51\xeb\x73\x88\x6b\xae\x3b\xbc\x75\x1e\x02\x27\x6a\x21\x8c\xca\xd5\xf6\xa0\xf2\x44\xa0\x3d\xb3\x20\x29\x38\x0a\x18\x38\x2c\x33\x6f\xe7\x81\x42\x72\xe0\x29\x80\xae\x29\x43\xa8\x83\x47\xbf\x58\x11\xb3\xac\xef\x24\xa1\x8e\x63\xec\xca\x68\x12\x48\xa8\x1b\xc1\x46\x0b\x8d\x53\x63\xeb\x7e\xfd\x20\x74\x02\x12\x66\xf1\x77\x30\x5d\xa2\x8b\x10\xc0\xc7\x6e\x41\x6b\x8e\x04\xea\xe4\x81\x26\x1e\xd5\x14\x8e\xbc\x6d\xce\x26\x9f\x41\x46\xbc\x81\xe1\x63\xae\x5a\x11\xfd\x18\xd1\xa5\x91\xd6\x28\x64\xde\x42\x77\x6c\x2f\xec\xfd\xf9\x23\xa0\x55\x12\xae\x05\x81\x26\x3c\x2b\x5d\xda\x64\x22\xe5\xe7\xa1\x6e\x0b\xae\xdd\x1d\x83\x50\x68\xa6\xff\x04\x6f\xf9\x42\x99\xa4\xe9\x3b\x8f\x26\x2e\xbd\x6a\x43\x0a\x43\xcc\x3e\x53\xde\xba\x23\xf4\x21\xe6\xb7\x63\xc1\x2f\xa9\x71\x04\x46\x5a\x05\xfb\x18\xc3\x5e\xf8\xc8\x45\xfc\xac\x42\x7c\x69\xb1\x9b\x81\xe0\x6b\x12\x9a\x6a\x11\x85\x3e\xf4\xde\x7a\xbe\xc0\x22\xf0\x62\x14\x17\xc3\x7e\xf6\x81\xba\x77\x41\x4e\xb5\x29\xc4\x0f\xe2\x18\x43\xcc\x55\x22\x21\x10\x9a\x2e\x4c\xe7\xd6\x3f\x7a\xd1\xad\xc8\xc7\xd0\xf1\x5d\xf1\xf7\x1d\xf4\x03\xf8\x89\x88\xd8\xac\x9d\x5e\x1a\xfc\x9a\x40\x2f\xde\xf3\x95\xc3\xa5\xa3\x1e\x05\x9e\x5a\x73\x36\xf9\xfc\x7c\x4e\x7c\xb6\x68\x48\xc3\x2d\x4a\x3b\xf5\xc2\xcd\x50\x0a\x3d\xb4\x8d\x13\x1e\xa8\x11\x8e\x1a\x71\xcb\xff\x2e\x62\xd4\xa0\xe1\x7f\xbf\xcd\x1e\x44\x39\xe4\x28\x70\x75\x6b\xe1\x02\x39\xe1\x63\xce\x0e\xae\x73\xbc\x7d\x56\x05\xbe\x05\xfa\x84\xa2\xe5\x4d\x9f\xec\x2e\xa7\x83\xeb\x32\xe1\x6b\x42\xf9\x85\x1d\x4c\x1e\x84\x3a\x46\x03\xe4\x41\x25\xc9\x4b\xad\x41\x3e\xef\x78\x0f\xb9\xb5\x38\x0f\x91\x35\x7f\xe1\xe1\x06\x7c\x00\xf2\x36\x19\x75\xe9\x2e\xec\x1e\xd7\x63\x36\x30\xe0\x37\xb0\x75\xb7\xb4\xf5\x19\x58\x74\x70\x1a\x23\xb7\x1b\x1f\xc3\x47\x8c\x33\x6e\x39\xa8\xe0\x59\xd1\x2d\x1a\x73\xec\x5e\x3a\x9e\x73\xe1\x28\xda\xf3\xe8\xf9\x9e\x8c\x5e\x98\xc0\xd9\x4c\xc9\x28\xf0\x10\x22\x36\x22\xc2\x30\x17\x50\x32\x41\xd4\xb0\xa7\x14\xdf\x61\x67\x75\xb7\xdf\xc7\x6c\xca\xb3\xf2\x5b\xec\x03\x3b\x37\x92\x63\xd6\x6e\x2f\xcd\xdc\x0b\xd7\x6d\xde\xb7\x4e\xa4\x39\xc6\xd9\x21\x77\x74\x05\xea\x18\x6b\x88\xd8\x40\x06\xb6\xd9\xb8\x17\xdf\xe9\x14\xb8\x66\x33\xf0\x32\xd3\xbe\xb3\xd9\xb1\xcf\x6a\xf1\x80\xa2\xcf\xf1\x25\x5e\x27\x29\x8a\x89\xee\x11\x9e\x3c\x08\xbf\x86\xf8\x96\x49\x57\xcc\xdf\xd0\x31\x87\xae\x59\x9c\x40\x14\x0f\xb8\x35\x10\x45\x59\x54\x7f\xe3\xeb\x3c\x45\x2b\xb5\x0d\x9c\xa7\xe2\x46\xa0\x66\xdd\xba\x0e\x9b\x13\x1a\x6e\x79\xf4\x01\x45\xa3\xfd\x3d\x99\x21\xa3\xfd\x03\x08\x38\x35\x19\x73\xb4\x7f\x96\x22\x0f\x38\xa3\xfd\x91\x09\x0e\x64\x36\xae\xed\xbe\x8f\x19\xb2\x24\x3a\xb7\x64\x63\xbb\x89\xc1\x58\x08\x52\xb8\xdc\x71\xed\xe4\xb3\xa4\xd3\xf3\x3d\xe7\x34\xca\x3c\x56\x9d\x08\x34\x74\x7a\x3e\xb4\x6e\xc1\x19\x76\x7a\x7e\x22\x8c\x98\x82\xa2\x8c\xda\x35\xdf\xae\x2d\x3f\x23\xb6\xef\xcc\x14\x21\xb4\xca\xce\x85\x37\xe3\x64\x52\x00\x35\xf6\x10\x78\x20\xba\x1c\xad\x09\x6f\x99\xb6\x4e\x75\x1e\x9c\xb7\x12\x42\xb0\xbe\x93\xd4\x81\xca\xe2\x97\xab\xab\x32\x38\x21\xa1\xbc\xbe\xde\x79\xb9\xbc\xd9\x52\x50\x73\xb1\xe7\x11\x8b\x1f\x58\x13\x18\xc5\xf3\x53\xcd\x0d\x19\x64\xb4\x4b\xb1\xef\x38\x0e\x0e\xb8\x8b\x8c\x14\x47\xa3\x46\xf0\xed\x5c\x3d\x1e\x9e\x1d\x5f\x9e\x9c\x8e\xc7\x34\x1e\x1f\x8d\x8e\x0f\xdb\x97\xcb\xd3\xe1\xc5\xe8\xac\x85\x1e\x8f\x4e\x0f\xc7\xe3\xff\x82\xdd\x77\x14\x96\x56\xa7\xa6\x9d\x86\xf3\x18\x9c\xa3\xaf\xd1\xc0\x52\x7e\x0d\xad\xe1\xc6\x16\x3b\x31\xb2\xdb\x66\x35\xa3\x4f\x79\x98\x0c\x40\x06\xf5\xf6\x1a\xca\xc0\xa4\x66\x02\x79\xe8\xff\xe1\xf5\x1f\xaf\x5f\x6d\xaf\x0e\xb5\xd6\x8b\x29\x14\x17\x6b\xc3\xcd\x20\xb4\x07\x99\xff\xd6\xe5\xf6\xdb\x91\x89\x5b\x7f\xa0\x1f\xdf\xd0\xcf\x3f\xd1\x9b\xdf\x6f\xdf\x1b\xfc\x00\x7b\x64\x38\xac\x26\x52\x77\x4b\xed\x63\xa4\x7d\x6b\x35\x0d\x67\xc2\x0b\xc9\x45\x7a\x60\x13\xe7\xc3\x99\xeb\x66\x83\x23\x6d\x45\xa4\xf7\xc2\x4c\xe1\x3b\x8c\xf7\xcc\xa2\xad\xfe\xb5\x39\x6d\x68\x35\x07\x15\xed\xca\x87\xd1\x40\xde\x83\x5b\x72\xef\xc5\x82\x0e\x30\x83\x84\x5f\x50\x37\xf1\xf5\x5c\xd6\xe7\xbb\x81\xcc\x90\x4c\x3b\x6c\x0d\x60\x0b\x68\x78\x69\xb8\x2a\x41\xb5\xbb\xf3\x19\xdf\xf3\x77\xc0\x6e\xcb\xf6\xdf\xc1\xf2\xe6\xd8\x9a\xe9\x3d\xa8\xdd\xf1\xf3\x21\xbc\x85\x7c\x44\x05\xad\x04\x7e\xfe\xf8\xa6\x5d\x7f\xfe\x89\x86\xad\xb7\x86\xad\x13\x97\x2c\x68\xfd\xbd\x1e\xfd\x90\xa1\xed\x57\x26\xff\x72\x2f\x2a\x8b\x6a\xf3\x0e\x02\x46\xad\xec\xc3\x17\x74\x65\x51\x55\x83\x3b\x48\xff\x19\xba\xf4\x5b\x96\xe0\x40\xa2\xd0\xac\x5e\x59\x6c\x55\xd5\x0f\x54\x55\x55\x45\x55\x15\xa9\xaa\x0c\x55\x95\xa7\xaa\xda\xa4\xaa\xfa\xed\xf6\x53\x2c\xda\x3e\x6b\x75\xff\x69\x57\x55\x5b\x57\x57\x65\x1e\x34\xb8\x42\xaa\x27\x09\x93\x41\x6e\x80\x4c\x92\xaa\x7f\x5d\x5d\x95\xb7\x0a\xa7\x18\xcb\xeb\xeb\x57\xff\xbe\xf3\xcb\x0c\x26\xc2\x4c\x0b\x1e\x01\xee\xbc\xd3\xe4\xeb\x2a\xb4\x47\x65\xf1\xcb\xd6\xcb\x17\xdb\x83\x9d\x9e\xe4\xc0\xca\x62\xd8\xe2\xac\x51\x28\xbe\x7c\xb6\x76\x77\x77\x19\x7b\x29\x09\x99\xf9\x13\x24\x5c\xc9\x65\xb1\xb9\xbb\x3b\xd8\xd9\x5c\x26\xd9\xd7\x56\x7e\x79\x82\x66\xc2\x67\x0f\x82\xb6\xb9\x5b\x55\x3b\x6b\x81\xdb\xac\xaa\x9d\xdd\xcd\xef\x87\x2a\x5a\x65\xcb\x62\x73\xeb\xe2\xec\xe0\x8c\x3e\x7d\xfa\x44\x47\xa3\x4f\x27\x87\xdb\xe5\xdb\x9e\x6e\xc9\xec\xff\x51\xab\x5f\x5d\xb1\x4e\xa5\x0b\xab\xec\xc6\xb3\xc8\xff\x09\x00\x00\xff\xff\x39\x00\x1b\xee\x5c\x11\x00\x00" func runtimeSyntaxSwiftYamlBytes() ([]byte, error) { @@ -3357,7 +3464,7 @@ func runtimeSyntaxSyntax_converterGo() (*asset, error) { return a, nil } -var _runtimeSyntaxSystemdYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x58\x4d\x73\xe3\xb8\x11\x3d\xef\xfc\x0a\x95\x33\x87\x99\x4c\xed\x1c\x73\x70\x55\x92\xa2\x48\x4a\xc6\x5a\xfc\x58\x82\xb2\xd7\x19\xcd\xb2\x20\xb2\x25\x21\x86\x00\x2e\x00\xca\xd6\x06\x3f\x3e\x05\xf0\x5b\x3b\x17\xa9\xdf\x43\x93\x00\x89\xee\xd7\x4d\x1c\x28\x03\x7d\xad\xe1\x7e\xa1\xae\x4a\xc3\xb9\xfa\xf0\xa1\x02\x0d\xa5\xbe\x5f\x7c\x58\x2c\x16\x0b\x3b\xce\xc9\x19\xee\x17\x77\xbb\xdd\xd7\x4f\x0a\xe4\x85\x96\x60\x94\x28\x5f\x41\x7f\xfe\x78\xe7\x9c\x4e\x40\x2a\x90\xf7\x8b\xbb\xdf\x77\xbb\x6f\x5b\x4e\xf5\x6e\xf7\xfd\xe3\xdd\x87\x0f\xb2\x61\xa0\xee\x9d\xcb\xcf\x0b\xa5\x89\x86\x33\x70\x6d\xfd\x3e\x79\x65\x09\xb5\x36\xde\x41\x83\x34\x1e\xa3\x44\x19\x8f\x31\xf1\x86\x94\x60\x44\x83\xf1\x98\x12\xc6\x8b\x31\x2a\xfc\x64\x93\x64\xa6\xf0\xb6\x01\xca\x8b\x4d\xb2\x46\xf1\x16\x05\x3d\xc6\x21\xc6\x28\x89\xcd\x92\x94\xaf\x4c\x1c\xcd\x12\x0e\x42\x82\x59\x52\x5e\xa1\xf4\xf2\x8f\x84\xb3\xab\x03\x2a\x17\xee\x3f\x17\x01\xb8\x07\x58\x32\x51\xbe\xa2\x24\x03\x52\x2d\x09\xaf\xde\x68\xa5\x4f\x3d\xf9\x0c\xf4\x78\xd2\x03\x92\x54\xc3\xe8\x53\x2c\x93\x24\x2f\x50\x60\x96\x52\x90\xaa\x24\x4a\x9b\xe5\x76\x5d\x64\x61\x9a\x64\x79\xb1\xcd\x36\x66\xd9\xa8\x98\x9c\xc1\xf8\xa4\x26\x7b\xca\xa8\xa6\xa0\x46\x70\x5d\x8a\x86\x57\x94\x1f\x31\x68\xe3\x3f\x78\x18\x23\x6c\x4a\x5a\x9f\x40\x9a\x92\x11\xa5\x4c\xe1\x47\xc1\x06\xc5\xa1\xf1\x93\x20\x2c\x56\x68\xd3\x5b\xdb\xd8\x6f\x2d\x37\x5a\xf8\x49\x14\x19\x5f\x9c\x6b\x09\x4a\x19\x5f\xf0\x8a\x6a\x2a\xb8\xe7\xa7\xe2\x0d\xe4\x48\x8c\x53\x8f\x5c\x40\x25\x94\x5a\xc8\x6b\x2c\x74\x78\xae\xa7\x43\x2b\xca\x00\xa9\xf0\x1d\xca\x46\x93\x3d\x83\xf9\xc8\x5f\xfd\x1f\x84\xd2\x23\x7a\x04\xc9\x81\xf9\xe2\x7c\x26\xbc\xda\x50\x3e\xb9\x3c\x6e\x18\x1b\x51\x4a\xf4\x29\x7c\xa7\x4a\xab\x1f\x71\x6b\x26\xf6\x73\x1e\xa9\x61\xcd\xb7\x03\x91\x68\xb8\x4e\x05\xe5\xfa\x76\xc4\x6e\xaf\xdb\xbf\xdb\x01\x7c\x3d\xef\x05\xa3\xe5\x86\xf2\xd7\x71\x0c\x43\xd9\xc8\xd9\x7b\x7a\xa2\x52\x37\x84\xd1\x3f\x89\x45\x96\x3f\x30\x5a\xb6\x6b\xd6\x52\xb0\xb5\x14\x4d\x3d\x03\x9e\xd6\x92\xee\x9b\x76\xca\x81\x8d\x44\x45\x0f\xd7\x19\x95\x82\x54\x54\x69\xe0\xda\x94\x2d\xcd\x40\x0e\x37\x6e\xed\x34\x2c\x62\x2f\x0a\x8d\x9f\x6e\xbd\xc3\x81\x72\xb7\xb6\x74\x8b\xcb\x13\x54\x0d\xa3\xfc\x98\xda\x87\xb8\xe5\x24\x15\xf2\x2f\x9e\x19\x28\xd0\x09\x5f\x09\xf9\xea\x06\x4e\x44\xda\xb0\x94\x44\x9d\xfc\xd3\x53\xde\x5a\xf8\x04\x8c\x99\xa2\xf0\xb7\x19\x4e\x32\x53\xc1\xbe\x39\x9a\x00\x0e\xa4\x61\x7a\xba\xb0\x8e\x0a\xa0\x06\x5e\x01\x2f\x6d\x84\x77\xdc\x86\x9e\xa9\xf6\xf0\x0c\xfa\x49\x16\xce\x89\x74\x3b\xc3\x81\x97\x7b\x33\x62\x85\xd1\x7f\xe6\x97\x6c\x12\xff\x71\x7e\xd7\x28\x8c\x2c\x39\xe7\xf0\xfa\xd7\x6d\xb8\x9d\x5f\x1a\x23\xff\x86\x48\x5c\x56\xcd\xa8\x34\x4b\xfc\x19\x93\xe1\xf9\x74\x59\x9e\x66\x28\xb9\xa1\x72\x14\xcd\xef\x83\xd1\x3a\x0d\xe3\x00\xc5\xeb\x39\x9d\x7b\xe3\x4a\xb1\x26\xbc\x22\xb2\x0a\xa5\x14\xf2\x96\x4c\x1a\x5d\x37\xda\x04\xa0\x4a\x49\x6b\x17\x75\xad\x64\x39\x79\xec\xec\x00\xf8\xd5\x0c\xf9\x10\x89\x0a\xcc\x5f\x33\x3a\x10\x65\x63\xf5\xb6\x0d\xdd\xa0\x39\xd7\xbe\xd5\x46\xb0\xdb\x58\x5f\x4d\xc8\x2f\x54\x0a\x6e\x3d\xa6\xb6\x4d\x72\x13\x66\x59\x9c\x18\xb8\x00\xd7\x85\xa6\x67\x10\x8d\x36\x45\xf8\x5b\x68\xac\x2c\x64\xc0\x04\xa9\x9c\x89\x35\x91\x7a\xb4\x52\x2b\x05\x23\x92\xd0\x01\x51\x0f\xc6\xc4\x45\xd4\xd6\xe3\x40\x99\x2d\x01\xab\x24\xce\xdd\x4f\x11\x79\x69\x6b\x6c\x63\xe4\x6c\x21\xdf\x88\xac\x72\xe1\x0b\xae\x04\x83\x91\x78\x8c\xd4\x71\x44\xf8\xaa\x6c\x05\x58\x49\x00\xab\xf4\xe6\x20\xe1\x0f\xb3\x52\xe5\x6b\x4a\x94\x8a\x85\x39\x28\x4d\xf6\xa6\x58\xa3\xc0\xb4\x59\xbb\x6e\x40\xa9\x88\x50\x9e\xa2\xc0\x3c\x10\x5e\x31\x78\xa0\x7b\x90\x9c\x68\x78\x84\x6b\x47\x6d\x68\x85\xdf\xa8\x2e\x4f\x1d\x76\xe2\x3a\x0e\xe3\x46\xd9\x1c\xb0\xc4\x89\xa8\x93\x99\xde\x01\x1d\xb9\x90\x80\xf8\x89\xee\xa9\x86\xca\x3c\x24\x51\xe8\x2a\x44\xf1\x90\xe0\xdc\x25\x36\xf2\x93\xb8\x4d\x71\x14\x18\x54\x31\xf0\x4a\xb7\x5b\xa3\x89\xa1\x34\x28\x28\x36\xe8\xd1\xfa\x14\x51\x12\x84\x9b\xc1\x28\x56\x59\x12\x15\x36\x7b\x96\x1e\x0e\x4d\x3b\x61\xc2\xfb\x22\xda\x63\xcc\x49\xad\x4e\x42\x77\x84\x8d\x51\x94\x86\x06\x71\x52\x96\xa0\x14\xdd\x33\xe8\xc3\xc7\x66\x72\xb7\xe2\x00\x18\xb9\x46\xe4\xdd\xae\xc0\x4a\x8f\x41\xc9\x28\x27\xbe\x2b\x55\x53\x66\x90\x1d\x94\xe6\x09\xb6\xbf\xf9\xc6\xfc\x22\xf6\x79\x1b\x3f\xf6\x2e\xbf\x08\xca\xa7\x32\xf2\x08\x50\x7b\x8c\x5e\xc0\x3c\x86\x2f\x76\xaf\xdb\xbf\x22\x4f\xd6\xeb\x4d\x68\x1e\x29\x63\xe1\x7b\xc9\x9a\x0a\xb6\xca\xf9\x53\xc6\x5c\xb0\x5b\xc3\xd6\xf6\x91\xc6\xf4\xc8\x09\x73\xa6\x25\x53\x29\xec\x93\x81\x32\xc3\xfe\xdd\xee\x46\x2f\x54\xa3\x42\x0d\xd2\x34\x6a\xd2\x44\x8c\x26\x2a\x34\x93\x9f\xb9\xee\x8c\x82\x33\x55\x9a\x89\xc4\x0c\xda\x32\x15\x95\xa9\x9a\xdc\xca\xc8\x44\x3f\x18\xe5\xaf\x45\xdd\xbf\xe7\x0b\x61\x0d\x6c\x5c\x09\x09\x88\x26\x47\x49\xce\xa6\x85\x2b\xb4\x4a\x3a\x33\x02\xa5\xc8\x11\x7e\x6d\xa0\x81\x8e\x8a\x41\xdb\x1b\x75\x08\xc3\x1f\x0d\x70\x4d\x09\x4b\x89\xed\xe9\x7a\xba\x86\x92\x12\xd6\x23\x2d\xc1\xde\x5d\x1c\x7d\xc1\x84\xb4\xc6\x06\x2e\xc0\x9c\x21\xca\x56\x61\x36\xe2\x98\x13\x79\x04\x6d\x58\xf3\xaa\x4c\x11\x79\xfe\x03\x8a\x43\xdb\x2b\x45\xe4\x15\xc6\xf2\x1d\x11\xf9\x6a\x22\xf2\xee\x0b\xce\xc1\x05\xb9\xb2\xd0\x2a\x8f\x8d\x92\x88\xbc\xbb\x9b\xf7\xf9\xde\x63\x97\xee\x3d\xc0\xda\x6a\xd9\x80\xda\xdc\x8f\xc8\x7b\x06\xb6\xa2\x76\x79\x13\xc1\x59\xc8\xab\x7b\x81\x9d\x8d\xc5\x41\x77\x38\xc4\xd8\x5b\x87\xfd\xbf\x5b\xe5\xe4\x5d\x45\xe4\xbd\x83\x6a\xce\xb7\x36\xa6\x7f\x82\x29\x8a\x28\x89\x93\x3c\x89\x91\x5f\xd8\xad\xc3\xb9\x17\xa5\xc6\x75\x23\x2b\x46\x8e\xca\xb8\xc4\x8e\xbd\x46\x8b\xa7\x5c\x99\xd8\xf6\x9d\xb1\xe0\xae\xaf\xa4\xfc\x68\x62\x11\xc3\x5b\x2a\xe9\x85\x32\xb0\xf3\xc4\x42\xd3\xc3\xd5\x73\x39\x69\x12\x6e\xf3\xff\xe2\xde\x48\xc2\x97\x42\xe8\xd6\xf2\x09\x03\x5b\x28\x4c\xc2\x57\x84\xb2\x46\xc2\x68\xf5\x79\x9f\x70\x27\xc0\x4d\xdd\x5e\x62\x3b\xf2\xe9\xcd\x2c\xb6\xb9\x3f\x30\x49\x84\x4b\x21\xc1\xab\xfe\xdb\x28\x6d\x92\xba\xdd\x12\xd1\x56\xa2\xd4\x8b\x5c\x3b\x9b\x12\xa9\x93\x83\xb1\x6a\xea\x4b\xa8\xda\x98\x51\x0e\x0f\x7d\x93\x6d\xae\xfc\x13\xe1\x47\xa8\xcc\xa4\xc1\xbb\xe9\xeb\x2c\x74\x0d\x11\xb5\x6e\x20\xcf\x54\x29\x3b\xa3\x5b\xb4\x6b\xd9\x0b\x2b\xc9\x29\x0a\x5c\x31\x4a\x69\xdd\xbe\xef\x5e\x7a\x6f\x33\x39\xcd\xc2\x3c\x7f\x19\x45\xb5\xc3\xad\xdd\x67\x8b\xcd\xb3\x0c\xe5\x2f\x96\xb9\x10\x0d\x31\xe8\x37\xdb\x0b\x75\x30\x3f\xd7\x26\x95\xa2\x26\x47\xa2\x41\xb5\x25\x2e\x17\xa6\x56\xca\x64\x44\x83\x8b\x99\x65\x23\x95\x1e\x21\xe2\x1a\xe4\x85\x30\x63\xbb\x4c\xbb\xec\xa9\x86\x0e\x9d\xe7\x94\x2c\x8a\x2c\xf4\x36\x36\x54\x26\xf1\x92\x41\x09\xf4\x02\xcb\xe6\x70\x00\x69\x32\x38\x34\x0a\x22\xc2\x1b\xc2\xda\xea\x3a\x67\x44\x6d\x24\xd8\x29\xed\x02\x87\x05\x57\x2b\x29\xce\x26\x83\x33\xa1\xdc\x7d\x52\x85\xef\xd4\x5e\xf9\x47\x43\x25\x54\xcb\x6b\x6f\xaa\xc1\x70\x51\xaa\x56\x42\x0e\x4c\x72\x01\x29\x69\xe5\x5a\x7e\xc7\x29\xdb\x37\x0f\xd6\x7c\xd8\x7e\x07\xc2\x53\xee\xac\x59\x67\x98\x81\xea\x56\xad\xba\x1e\xc0\x36\x11\x76\x39\x58\x13\xdd\x0c\x0e\x36\xee\x32\x21\xf4\xa8\x0a\x33\x34\x86\x42\xd6\x70\xdb\x81\xd8\x52\x61\x4b\x7b\x8f\x7b\xbd\xb0\x71\x31\x52\x5b\x35\xa0\x67\xa2\xcb\x53\x25\x8e\x76\x22\x45\xce\x35\x03\x65\x54\x49\x18\x14\xef\xdd\xff\xd5\x60\x20\xcc\xb8\xe0\x85\x25\xd5\xca\x14\x38\xdc\xa0\x78\xfb\x5b\xe1\x27\x71\x1e\xfe\x96\x1b\x0c\xbc\xea\x36\xc6\x9a\x18\xad\x1f\xd1\x66\x63\x70\xf7\x15\x8c\x4f\xe2\xad\x7b\x2c\x7c\x6a\x74\x25\xde\xf8\x6c\x5a\xbb\x38\x7c\x26\xe5\xeb\x86\xec\x81\x4d\x4c\x94\x22\x3e\x83\x49\xa3\x0d\x76\xdf\xd4\xae\xbe\xb5\xa6\x32\x58\x34\xb2\x04\x9b\x2f\xa6\xc0\xc9\x36\xf3\xc3\x1f\x45\x10\xae\x19\xed\xae\x9b\x75\x96\x3d\x42\xdc\xe6\xf1\x4d\x83\xe9\xde\x70\x5b\x03\xdb\x96\x63\x24\xda\x38\x1f\xf1\x10\xe8\xf6\x13\x9e\x96\x05\x6f\xa7\x12\xf5\xf3\x09\xf8\x96\x73\x80\x0a\x2a\x4b\x48\x72\x04\xa3\xb4\xa4\xfc\x58\x80\x2a\x49\x0d\x86\x0b\x0e\x46\x42\xcd\x48\x09\xb8\x71\xd2\x36\x09\x06\xdc\xd4\x35\x73\x87\x02\x44\x5e\x5d\x57\xa6\x0c\xde\xa6\xc3\xa7\xf4\xd8\x5d\xdd\xe6\x7c\xab\xf8\x2b\x52\xb6\x1f\xb6\xf8\x05\x6f\x92\x75\xb1\xf2\x7c\xb4\xb1\x49\xde\x0e\x23\xa7\x52\x07\x6a\xb7\xaf\x75\x40\x41\x18\xe7\x68\x85\xc2\xac\x73\x69\xcb\xd8\xc4\x4e\x25\x1c\xe8\x7b\xef\x6f\x75\x08\xbb\x83\x11\x9f\x30\xb6\x6a\x7b\x55\xfc\x82\xf3\x30\x0a\x0a\x6f\x83\x3c\x6c\x8a\x1e\xfa\xeb\x2c\xd9\xa6\x23\x4e\x9e\xe3\x30\x2b\xb6\xf6\x0e\x1d\x93\x85\x5e\xf0\x32\x3a\xf4\x87\x17\x03\xb1\x8d\x51\x3e\x41\xd8\x5e\x6e\xa9\x9e\x79\xf6\xe2\x1c\x77\xeb\x19\x12\xa2\x85\xd3\x7c\x18\x18\x9b\x0e\xf8\xaa\x9e\xba\x76\xbc\x53\xc2\xdc\x4f\x7d\xc1\x8f\xa0\xdc\xb6\xe7\x7e\xfa\x2c\x49\xed\x24\xbe\x6f\xf5\x27\x2d\x5b\x6f\xf6\x39\x3b\x60\x51\xf7\x50\x62\x46\xca\xd7\xd8\x41\x49\xb8\xaa\x89\xb4\xdf\x14\x45\x9e\x79\x31\xb6\x5b\x69\xb4\x53\xbf\x3c\x7f\x71\x91\x9c\xe7\x2f\x4e\x36\xac\xf1\xf4\x40\xf8\xb1\xa9\x9d\x99\x07\x54\x11\xc6\x6c\x3b\x01\x26\xbf\xd6\x60\xdc\xcb\xdb\x46\x44\xbd\x1a\x5b\xb3\x8c\xed\xec\xcc\x56\x9f\xeb\xc9\xc6\x3e\x85\x99\x7b\x89\xdd\xbf\xad\xe3\xcf\x84\x6b\xa7\x7a\xd6\x50\x66\x9a\x92\xcf\x27\xa2\xcd\xf3\x09\x24\x98\x67\x21\x6d\x15\x1e\x24\xe7\xf3\x3f\xef\xba\x93\xaa\x5a\x42\x2d\x45\xd9\x9e\x67\x7d\xa5\xdc\x75\xa0\xbb\xdd\xbf\xfa\x71\xe5\x0e\x0f\xee\x17\x77\xc3\x15\xaa\xed\x96\xba\x13\xb0\x4f\x6e\xb1\x88\x2b\x4d\x18\x1b\xc5\xa2\x3d\x32\xdb\xed\xbe\xf7\x57\xd1\xe1\x29\xbe\xba\x93\x1f\x77\xc6\xf6\x31\xf2\x50\x9c\xa2\xa0\x77\x2a\x85\xbd\x0f\xd7\x5f\xf7\xc2\xcd\xb9\xdb\xed\x3f\x69\xd9\x80\x39\x10\xa6\xe0\xf3\x6e\xb7\x1f\x3d\xcf\xdd\xf1\xda\xa7\xdf\xcd\xb7\x6f\xf7\xaa\x26\x25\xdc\x7f\xff\xfe\xf9\x6f\x9f\xbe\xfd\xfe\xbf\xef\x5f\xff\xfe\xf9\xdf\x1f\x87\xa9\xed\x67\xbb\xfe\xb9\x3c\x11\xf9\xf5\xed\x44\x35\xb4\xce\x8b\xbb\xc9\x75\x5f\x7e\xe4\x7d\xbf\xb8\xfb\xe9\xcb\xe2\x8b\x59\x7c\xf9\xe9\xcb\xdd\x87\xff\x07\x00\x00\xff\xff\x12\x83\x8f\x17\x3e\x14\x00\x00" +var _runtimeSyntaxSystemdYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x58\x4d\x93\xe3\x28\x12\x3d\x4f\xff\x8a\x8a\xda\x3e\x74\x6f\xc7\xf4\x71\x0f\x15\xb1\xbb\x21\x4b\xb2\x8b\x29\xeb\x63\x84\x5c\x35\xb5\xed\x1e\x05\x96\xd2\x36\x6b\x0c\x1a\x40\xae\xf2\x2c\x3f\x7e\x03\xf4\xed\xe9\x8b\x9d\xef\x81\x00\x41\xe6\xcb\x14\x7b\xca\x40\x5f\x6b\x78\xb8\x53\x57\xa5\xe1\x5c\x7d\xf8\x50\x81\x86\x52\x3f\x7c\xb8\xbb\xbb\xbb\xb3\xcd\x9c\x9c\xe1\xe1\xee\x7e\xbb\xfd\xfa\x49\x81\xbc\xd0\x12\x8c\x12\xe5\x09\xb4\xd1\xf4\x0c\xf2\xf3\xc7\x7b\xd7\xf5\x08\xa4\x02\xf9\x70\x77\xff\xfb\x76\xfb\x6d\xc3\xa9\xde\x6e\xbf\x7f\xbc\xff\xf0\x41\x36\x0c\x54\x3b\xda\xcf\x77\x4a\x13\x0d\x67\xe0\xda\xf6\xfb\xe4\x95\x25\xd4\xda\x78\x7b\x0d\xd2\x78\x8c\x12\x65\x3c\xc6\xc4\x1b\x52\x82\x11\x0d\xc6\x63\x4a\x18\x2f\xc6\xa8\xf0\x93\x75\x92\x99\xc2\xdb\x04\x28\x2f\xd6\xc9\x0a\xc5\x1b\x14\xf4\x18\x87\x18\xa3\x24\x36\x0b\x52\x9e\x98\x38\x98\x05\xec\x85\x04\xb3\xa0\xbc\x42\xe9\xe5\x1f\x09\x67\x57\x07\x54\x2e\xdc\x7f\x2e\x02\x70\xaf\xb1\x60\xa2\x3c\xa1\x24\x03\x52\x2d\x08\xaf\xde\x68\xa5\x8f\x3d\xf9\x02\xf4\x70\xd4\x03\x92\x54\xc3\xd8\xa7\x58\x24\x49\x5e\xa0\xc0\x2c\xa4\x20\x55\x49\x94\x36\x8b\xcd\xaa\xc8\xc2\x34\xc9\xf2\x62\x93\xad\xcd\xa2\x51\x31\x39\x83\xf1\x49\x4d\x76\x94\x51\x4d\x41\x8d\xe0\xba\x10\x0d\xaf\x28\x3f\x60\xd0\xc6\x7f\xf4\x30\x46\xd8\x94\xb4\x3e\x82\x34\x25\x23\x4a\x99\xc2\x8f\x82\x35\x8a\x43\xe3\x27\x41\x58\x2c\xd1\xba\xb7\x36\xb1\xdf\x5a\xae\xb5\xf0\x93\x28\x32\xbe\x38\xd7\x12\x94\x32\xbe\xe0\x15\xd5\x54\x70\xcf\x4f\xc5\x1b\xc8\x91\x18\xa7\x1e\xb9\x80\x4a\x28\xb5\x90\xd7\x58\xe8\xf0\x5c\x4f\x9b\x96\x94\x01\x52\xe1\x3b\x94\x8d\x26\x3b\x06\xf3\x96\xbf\xf6\x7f\x14\x4a\x8f\xe8\x09\x24\x07\xe6\x8b\xf3\x99\xf0\x6a\x4d\xf9\xe4\xf1\xb8\x61\x6c\x44\x29\xd1\xc7\xf0\x9d\x2a\xad\x7e\xc4\xad\x98\xd8\xcd\x79\xa4\x86\x35\xdf\x36\x44\xa2\xe1\x3a\x15\x94\xeb\xdb\x16\x7b\xbc\xee\xfc\x6e\x1b\xf0\xf5\xbc\x13\x8c\x96\x6b\xca\x4f\x63\x1b\x86\xb2\x91\xb3\x7d\x7a\xa6\x52\x37\x84\xd1\x3f\x89\x45\x96\xdf\x33\x5a\xb6\x6b\xd6\x52\xb0\x95\x14\x4d\x3d\x03\x9e\xd6\x92\xee\x9a\x76\xca\x81\x8d\x44\x45\xf7\xd7\x19\x95\x82\x54\x54\x69\xe0\xda\x94\x2d\xcd\x40\x0e\x03\xb7\x76\x1a\x16\xb1\x17\x85\xc6\x4f\x37\xde\x7e\x4f\xb9\x5b\x5b\xba\xc1\xe5\x11\xaa\x86\x51\x7e\x48\xed\x4b\xdc\x72\x92\x0a\xf9\x97\x9e\x19\x28\xd0\x09\x5f\x0a\x79\x72\x0d\x47\x22\xad\x5b\x4a\xa2\x8e\xfe\xf1\x39\x6f\x2d\x7c\x04\xc6\x4c\x51\xf8\x9b\x0c\x27\x99\xa9\x60\xd7\x1c\x4c\x00\x7b\xd2\x30\x3d\x5d\x58\x47\x05\x50\x03\xaf\x80\x97\xd6\xc3\x3b\x6e\x4d\xcf\x54\x7b\x78\x06\xfd\x24\x0b\xe7\x44\xba\x99\xe1\xc0\xcb\xbd\x19\xb1\xc4\xe8\x3f\xf3\x47\xd6\x89\xff\x34\x1f\x35\x0a\x23\x4b\xce\x39\xbc\xfa\x75\x13\x6e\xe6\x8f\xc6\xc8\xbf\x21\x12\x17\x55\x33\x2a\xcd\x12\x7f\xc6\x64\x78\x3e\x5d\x96\xa7\x19\x4a\x6e\xa8\x1c\x45\xf3\x71\x30\x5a\xa5\x61\x1c\xa0\x78\x35\xa7\x73\x6f\x5c\x29\xd6\x84\x57\x44\x56\xa1\x94\x42\xde\x92\x49\xa3\xeb\x46\x9b\x00\x54\x29\x69\xed\xbc\xae\x95\x2c\x27\x8f\x9d\x1d\x00\xbf\x9a\x21\x1e\x22\x51\x81\xf9\x6b\x44\x07\xa2\x6c\xac\xde\xb6\xae\x1b\x34\xe7\xda\xb7\xda\x08\xf6\x18\xeb\xab\x09\xf9\x85\x4a\xc1\x6d\x8f\xa9\x6d\x83\xdc\x84\x59\x16\x27\x06\x2e\xc0\x75\x61\x95\x5e\x34\xda\x14\xe1\x6f\xa1\xb1\xb2\x90\x01\x13\xa4\x72\x26\xd6\x44\xea\xd1\x4a\xad\x14\x8c\x48\x42\x07\x44\x3d\x18\x93\x2e\xa2\xb6\x3d\xf6\x94\xd9\x14\xb0\x4c\xe2\xdc\xfd\x14\x91\x97\xb6\xc6\x26\x46\xce\x16\xf2\x8d\xc8\x2a\x17\xbe\xe0\x4a\x30\x18\x89\xa7\x48\x1d\x46\x84\xaf\xca\x66\x80\xa5\x04\xb0\x4a\x6f\xf6\x12\xfe\x30\x4b\x55\x9e\x52\xa2\x54\x2c\xcc\x5e\x69\xb2\x33\xc5\x0a\x05\xa6\x8d\xda\x55\x03\x4a\x45\x84\xf2\x14\x05\xe6\x91\xf0\x8a\xc1\x23\xdd\x81\xe4\x44\xc3\x13\x5c\x3b\x6a\x4d\x2b\xfc\x46\x75\x79\xec\xb0\x13\xd7\xb1\x19\x37\xca\xc6\x80\x25\x8e\x44\x1d\xcd\x74\x04\x74\xe0\x42\x02\xe2\x47\xba\xa3\x1a\x2a\xf3\x98\x44\xa1\xcb\x10\xc5\x63\x82\x73\x17\xd8\xc8\x4f\xe2\x36\xc4\x51\x60\x50\xc5\xc0\x2b\xdd\x69\x8d\x26\x86\xd2\xa0\xa0\x58\xa3\x27\xdb\xa7\x88\x92\x20\x5c\x0f\x46\xb1\xcc\x92\xa8\xb0\xd1\xb3\xf0\x70\x68\xda\x09\x13\xde\x27\xd1\x1e\x63\x4e\x6a\x75\x14\xba\x23\xac\x8f\xa2\x34\x34\x88\x93\xb2\x04\xa5\xe8\x8e\x41\xef\x3e\x36\x92\xbb\x15\x07\xc0\xc8\x35\x22\xef\x76\x05\x56\x7a\x0c\x4a\x46\x39\xf1\x5d\xaa\x9a\x32\x83\xec\xa0\x34\x4f\xb0\xfd\xcd\xd7\xe6\x17\xb1\xcb\x5b\xff\xb1\xa3\xfc\x22\x28\x9f\xca\xc8\x13\x40\xed\x31\x7a\x01\xf3\x14\xbe\xda\xb3\x6e\xff\x8a\x3c\x59\xad\xd6\xa1\x79\xa2\x8c\x85\xef\x25\x6b\x2a\xd8\x28\xd7\x9f\x32\xe6\x9c\xdd\x1a\x36\xb7\x8f\x34\xa6\x07\x4e\x98\x33\x2d\x99\x4a\x61\xdf\x0c\x94\x19\xce\xef\xf6\x34\x7a\xa1\x1a\x15\x6a\x90\xa6\x51\x93\x26\x62\x34\x51\xa1\x99\xfc\xcc\x75\x67\x14\x9c\xa9\xd2\x4c\x24\x66\xd0\x96\xa9\xa8\x4c\xd5\xe4\x56\x46\x26\xfa\xc1\x28\x3f\x15\x75\xbf\xcf\x17\xc2\x1a\x58\xbb\x14\x12\x10\x4d\x0e\x92\x9c\x4d\x0b\x97\x68\x99\x74\x66\x04\x4a\x91\x03\xfc\xda\x40\x03\x1d\x15\x83\xb6\x03\x75\x08\xc3\x1f\x0d\x70\x4d\x09\x4b\x89\xab\xec\x3a\xba\x86\x92\x12\xd6\x23\x2d\xc1\x8e\x2e\x0e\xbe\x60\x42\x5a\x63\x0d\x17\x60\xce\x10\x65\xab\x30\x6b\x71\xc8\x89\x3c\x80\x36\xac\x39\x29\x53\x44\x9e\xff\x88\xe2\xd0\xd6\x4a\x11\x39\xc1\x98\xbe\x23\x22\x4f\x26\x22\xef\xbe\xe0\x1c\x9c\x93\x2b\x0b\xad\xf2\x58\x2f\x89\xc8\xbb\x1b\xbc\x8f\xf7\x1e\xbb\x70\xef\x01\xd6\x56\xcb\x06\xd4\xc6\x7e\x44\xde\x33\xb0\x19\xb5\x8b\x9b\x08\xce\x42\x5e\xdd\x06\x76\x36\x16\x7b\xdd\xe1\x10\x63\x6f\x15\xf6\xff\x6e\x95\x93\xbd\x8a\xc8\x7b\x07\xd5\x9c\x6f\x6d\x4c\xff\x04\x53\x14\x51\x12\x27\x79\x12\x23\xbf\xb0\x47\x87\x73\x2f\x4a\x8d\xab\x46\x96\x8c\x1c\x94\x71\x81\x1d\x7b\x8d\x16\xcf\xb9\x32\xb1\xad\x3b\x63\xc1\x5d\x5d\x49\xf9\xc1\xc4\x22\x86\xb7\x54\xd2\x0b\x65\x60\xe7\x89\x85\xa6\xfb\xab\xe7\x62\xd2\x24\xdc\xc6\xff\xc5\xed\x48\xc2\x17\x42\xe8\xd6\xf2\x09\x03\x9b\x28\x4c\xc2\x97\x84\xb2\x46\xc2\x68\xf5\x71\x9f\x70\x27\xc0\x4d\xdd\x3e\x62\x2b\xf2\xe9\x60\x16\xdb\xd8\x1f\x98\x24\xc2\xa5\x90\xe0\x55\xff\x6d\x94\x36\x49\xdd\x1e\x89\x68\x33\x51\xea\x45\xae\x9c\x4d\x89\xd4\xc9\xde\x58\x35\xf5\x25\x54\xad\xcf\x28\x87\x87\xba\xc9\x16\x57\xfe\x91\xf0\x03\x54\x66\x52\xe0\xdd\xd4\x75\x16\xba\x82\x88\xda\x6e\x20\xcf\x54\x29\x3b\xa3\x5b\xb4\x2b\xd9\x0b\x2b\xc9\x29\x0a\x5c\x32\x4a\x69\xdd\xee\x77\x2f\xbd\xb7\x91\x9c\x66\x61\x9e\xbf\x8e\xa2\xda\xe1\xd6\xee\xa3\xc5\xc6\x59\x86\xf2\x57\xcb\x5c\x88\x86\x18\xf4\x9b\xad\x85\x3a\x98\x9f\x6b\x93\x4a\x51\x93\x03\xd1\xa0\xda\x14\x97\x0b\x53\x2b\x65\x32\xa2\xc1\xf9\xcc\xa2\x91\x4a\x8f\x10\x71\x0d\xf2\x42\x98\xb1\x55\xa6\x5d\xf6\x54\x43\x87\xca\x73\x4a\x16\x45\x16\x7a\x6b\xeb\x2a\x13\x7f\xc9\xa0\x04\x7a\x81\x45\xb3\xdf\x83\x34\x19\xec\x1b\x05\x11\xe1\x0d\x61\x6d\x76\x9d\x33\xa2\x36\x12\xec\x94\x76\x81\xc3\x82\xab\xa5\x14\x67\x93\xc1\x99\x50\xee\x3e\xa9\xc2\x77\x6a\x9f\xfc\xa3\xa1\x12\xaa\xc5\xb5\x37\xd5\x60\x38\x2f\x55\x4b\x21\x07\x26\xb9\x80\x94\xb4\x72\x25\xbf\xe3\x94\xad\x9b\x07\x6b\xde\x6c\xbf\x06\xe1\x39\x77\xd6\xac\x32\xcc\x40\x75\xab\x56\x5d\x0d\x60\x8b\x08\xbb\x1c\xac\x89\x6e\x86\x0e\xd6\xef\x32\x21\xf4\xa8\x0a\x33\x34\xba\x42\xd6\x70\x5b\x81\xd8\x54\x61\x53\x7b\x8f\x7b\xbd\xb0\x7e\x31\x52\x1b\x35\xa0\x17\xa2\xcb\x63\x25\x0e\x76\x22\x45\xce\x35\x03\x65\x54\x49\x18\x14\xef\xdd\xff\xd5\x60\x20\xcc\x38\xe7\x85\x05\xd5\xca\x14\x38\x5c\xa3\x78\xf3\x5b\xe1\x27\x71\x1e\xfe\x96\x1b\x0c\xbc\xea\x0e\xc6\x9a\x18\xad\x9e\xd0\x7a\x6d\x70\xf7\x2d\x8c\x8f\xe2\xad\x7b\x2d\x7c\x6c\x74\x25\xde\xf8\x6c\x5a\xbb\x38\x7c\x26\xe5\x69\x4d\x76\xc0\x26\x26\x4a\x11\x9f\xc1\xa4\xd1\x06\xbb\x2f\x6b\x97\xdf\x5a\x53\x19\x2c\x1a\x59\x82\x8d\x17\x53\xe0\x64\x93\xf9\xe1\x8f\x3c\x08\xd7\x8c\x76\xcf\xcd\x2a\xcb\x1e\x21\x6e\xe3\xf8\xa6\xc0\x74\x3b\xdc\xe6\xc0\xb6\xe4\x18\x89\xd6\xcf\x47\x3c\x38\xba\xfd\x84\xa7\x65\xc1\xdb\xa9\x44\xfd\x72\x04\xbe\xe1\x1c\xa0\x82\xca\x12\x92\x1c\xc0\x28\x2d\x29\x3f\x14\xa0\x4a\x52\x83\xe1\x82\x83\x91\x50\x33\x52\x02\x6e\x9c\xb4\x4d\x9c\x01\x37\x75\xcd\xdc\xa5\x00\x91\x57\x57\x95\x29\x83\x37\xe9\xf0\x29\x3d\x56\x57\xb7\x31\xdf\x2a\xfe\x92\x94\xed\x87\x2d\x7e\xc5\xeb\x64\x55\x2c\x3d\x1f\xad\x6d\x90\xb7\xcd\xc8\xa9\xd4\x9e\xda\xe3\x6b\x3b\xa0\x20\x8c\x73\xb4\x44\x61\xd6\x75\x69\xd3\xd8\xc4\x4e\x25\xec\xe9\x7b\xdf\xdf\xea\x10\x76\xb7\x23\x3e\x61\x6c\xd9\xd6\xaa\xf8\x15\xe7\x61\x14\x14\xde\x1a\x79\xd8\x14\x3d\xf4\x57\x59\xb2\x49\x47\x9c\xbc\xc4\x61\x56\x6c\xec\x08\x1d\x93\x85\x5e\xf0\x3a\x76\xe8\x2f\x2f\x06\x62\x13\xa3\x7c\x82\xb0\x7d\xdc\x52\x3d\xf3\xe2\xc5\x39\xee\xd6\x33\x04\x44\x0b\xa7\xf1\x30\x30\x36\x1c\xf0\x55\x3d\x77\xe5\x78\xa7\x84\xb9\x9f\xfa\x82\x1f\x40\xb9\x63\xcf\xfd\xf4\x45\x92\xda\x49\x7c\x5f\xea\x4f\x4a\xb6\xde\xec\x63\x76\xc0\xa2\xee\xa1\xc4\x8c\x94\xa7\xd8\x41\x49\xb8\xaa\x89\xb4\xdf\x14\x45\x9e\x79\x31\xb6\x47\x69\xb4\x53\xbf\x3c\x7f\x75\x9e\x9c\xe7\xaf\x4e\x36\xac\xf1\xfc\x48\xf8\xa1\xa9\x9d\x99\x07\x54\x11\xc6\x6c\x39\x01\x26\xbf\xd6\x60\xdc\xe6\x6d\x22\xa2\x4e\xc6\xe6\x2c\x63\x2b\x3b\xb3\xd1\xe7\x7a\x72\xb0\xcf\x61\xe6\x36\xb1\xfb\xb7\x79\xfc\x85\x70\xed\x54\xcf\x1a\xca\x4c\x43\xf2\xe5\x48\xb4\x79\x39\x82\x04\xf3\x22\xa4\xcd\xc2\x83\xe4\x7c\xfe\xe7\x7d\x77\x53\x55\x4b\xa8\xa5\x28\xdb\xfb\xac\xaf\x94\xbb\x0a\x74\xbb\xfd\x57\xdf\xae\xdc\xe5\xc1\xc3\xdd\xfd\xf0\x84\x6a\xab\xa5\xee\x06\xec\x93\x5b\x2c\xe2\x4a\x13\xc6\x46\xb1\x68\x2f\xce\xdc\x8e\x7d\xde\x6e\xbf\xf7\xcf\xd2\xe1\x5d\xbe\xba\xfb\x1f\x77\xdf\xf6\x31\xf2\x50\x9c\xa2\xa0\xef\x54\x0a\x3b\x1a\xd7\x5f\x77\xc2\xcd\xbc\xdd\xee\x3e\x69\xd9\x80\xd9\x13\xa6\xe0\xf3\x76\xbb\x1b\x7b\x9e\xbb\x4b\xb6\x4f\xbf\x9b\x6f\xdf\x1e\x54\x4d\x4a\x78\xf8\xfe\xfd\xf3\xdf\x3e\x7d\xfb\xfd\x7f\xdf\xbf\xfe\xfd\xf3\xbf\x3f\x0e\x53\xdb\x8f\x77\xfd\x73\x79\x24\xf2\xeb\xdb\x91\x6a\x68\x3b\xdf\xdd\x4f\x9e\xfb\xf2\xa3\xde\x0f\x77\xf7\x3f\x7d\xb9\xfb\x62\xee\xbe\xfc\xf4\xe5\xfe\xc3\xff\x03\x00\x00\xff\xff\xa4\x35\xde\xe0\x49\x14\x00\x00" func runtimeSyntaxSystemdYamlBytes() ([]byte, error) { return bindataRead( @@ -3377,7 +3484,7 @@ func runtimeSyntaxSystemdYaml() (*asset, error) { return a, nil } -var _runtimeSyntaxTclYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x55\x5d\x97\xdb\x34\x10\x7d\xdf\x5f\xe1\xa6\x7b\x68\xb2\x7b\x36\xf0\x4a\x0a\x2c\xbc\xf3\x0b\x58\x6d\x83\x2c\x8f\x6d\x91\xb1\x24\x46\xe3\x24\xa6\xd3\xff\xce\x19\xd9\xc9\xa6\xe7\x40\x1f\x6c\xdd\xd1\xc7\x48\xba\xba\xba\x6a\x3d\x02\x4f\x09\x76\x15\x3b\xbc\xbb\x6b\x80\xc1\xf1\xae\xba\xab\xaa\xaa\xd2\xb6\x60\x07\xd8\x55\x2b\x63\xb6\xec\xf0\x7e\x55\xea\x7b\xb0\x0d\xd0\xae\x5a\x7d\x7a\xff\x6e\xfb\xf0\xfd\x1a\xc2\xb1\x7a\xdc\x3c\xb3\xc3\xdc\xaf\x2b\xb9\xdf\xac\xee\xee\x68\x44\xc8\xbb\xd2\xfd\xa9\xca\x6c\x19\x06\x08\x5c\x32\xd5\x6b\xdb\x32\x90\xd8\x94\x20\x34\x62\x89\xec\x24\x76\xe4\xb8\x87\x33\xb8\x78\x98\xb1\x1f\x52\x24\x9e\x31\x46\xdb\xbc\xa1\xbd\x0f\x0d\x9c\xe7\xf8\xef\xd1\xa2\x6f\x27\xa9\x7d\xb0\x34\x49\x4d\x60\x0f\xe2\x6c\x06\x71\x96\x5d\x2f\xae\x11\x87\xd1\x1d\xf4\xaf\x95\x31\x38\xcb\x5a\xb0\x0f\x23\x08\x60\x06\x81\xe0\x62\xe3\x43\x27\x10\x5b\x01\xa2\x48\x02\x47\x8b\xa2\xab\x11\x38\x7b\x16\x38\x27\x92\xb6\xd6\x44\xd0\x48\xeb\x62\x68\x7d\x37\x12\x28\x4c\x93\x28\x4f\xe5\x07\x47\x08\x2c\x2d\x8e\xb9\x97\x36\x92\x7e\x60\x5d\xc1\x83\x65\xe9\x80\xb3\x74\x18\xeb\xf2\xb3\x28\xbd\xcf\x1c\x69\x12\xdf\x8a\x0f\x8e\xc4\x87\x36\x8a\x0f\x0c\x94\xe4\xaf\xe8\x83\xe0\xc2\x11\xce\x5b\x46\x1f\x32\x10\x0b\xfa\xcc\x82\x08\xa1\xe3\x5e\x0a\x39\x48\x36\x74\x20\x48\x90\xd0\x3a\x10\xcc\x60\xc9\xf5\x5a\xb2\x60\x56\x26\xf5\x24\x73\xd2\xc6\x98\x20\x48\xb2\xee\x60\x3b\x90\xe4\x1b\x49\x23\x67\x49\xa7\x46\x08\xac\xfe\x3a\x38\x27\x2d\xf2\x58\x0b\x15\x09\x08\x01\x8f\x14\x24\x3b\x1b\x24\x03\x1c\x44\x13\x67\x25\x44\x8b\x91\x1c\x48\x4e\xe8\x59\x32\x93\x72\x99\xc7\x3a\xb3\xe4\x93\xd7\x53\x60\x87\xbf\xc7\x4e\x18\x10\x85\xfd\x00\xc2\xa4\xeb\x18\xc3\x21\xc4\x53\x90\x31\x68\xb2\x31\x35\x96\x41\xc6\x84\x70\x04\x94\x31\x1d\x2d\xc9\xd1\x92\xb7\x35\x82\x1c\x4f\xd6\xb3\x9c\x7a\x8f\xb0\x31\xa6\x5e\xfd\x9f\xb2\x54\x4c\x95\x0d\xd3\x10\x09\x66\x69\x55\x4d\x0c\xb0\xd0\x31\x57\xc0\xd9\x67\xce\x4b\xd0\x01\x2f\xa8\x10\x74\xc1\x70\x66\xc0\x92\x79\xa9\xc9\xd7\x7e\xd9\xff\x73\x49\x9d\xd9\x12\x7f\x95\x5b\x17\xe4\x33\x7b\x77\xc9\x54\x36\xf7\xad\x25\xcf\x84\x55\xf5\xa4\x13\x96\x13\x5d\x6a\x5c\x1c\x92\x25\xb8\x84\xa0\x5a\xbf\x04\xad\xa7\x7c\xe1\xba\x9a\xc5\x71\x09\xf2\x05\xa1\x7d\xeb\xf2\x75\xe6\xc1\xa6\x37\xa8\x07\xb4\x04\xb3\x88\x2e\x01\x24\xb0\x7c\x13\x15\x61\x2d\x21\xc7\x37\x84\xf1\x04\xf4\x16\xb2\x67\xbc\xe9\x37\xa6\x74\xd3\x4a\x7e\xb8\xc5\x08\x2d\xdf\xc6\xe4\xbb\xfe\x5a\x71\xf2\x78\xdd\xef\x29\x52\xa3\x17\xe1\x26\x2c\xdc\x7f\x53\x0b\x68\x69\xb8\xb1\x8d\x74\xe8\xa4\x5e\x0e\x4b\xdd\x61\x76\x04\xcb\xe5\x5a\x3a\xcb\xe5\x5a\x38\x17\x11\x55\x87\xee\xe2\x15\x33\xef\xae\xef\x28\x89\xeb\x87\xd8\x88\xeb\x55\xb5\xae\xa7\x18\x59\xdc\xcc\xbe\x5b\x18\x76\x43\x33\x8b\xdb\xc5\x61\xb0\xa1\xc1\x18\x93\xb8\x99\x58\x57\x2e\x05\x89\xe3\x78\xd0\xa9\xd4\x77\xa5\x19\x93\x80\xeb\x63\xb1\x1b\x94\xd6\x05\x46\x69\x8b\x67\xb5\x91\x0e\xd2\xea\xb6\xa4\x65\x1a\x75\x39\x20\xed\x18\x4a\x63\x1f\x33\xef\x67\xc3\x68\x8a\x71\x9c\xe5\x00\x13\x36\x80\xa5\x54\x59\x6b\x79\x80\x29\x17\xa0\xfa\x3d\x28\xa3\x68\x73\xf6\x5d\x10\x54\x17\xb4\x6a\x32\x30\x24\x9e\x04\x0b\x0f\xe8\xc3\x41\x70\x56\x85\xb2\x86\xbe\x5e\xbc\x47\x37\x82\x47\x4b\x4a\x8a\x96\x69\x89\x93\xba\xdd\x60\xcf\x32\xf8\x20\xc1\x3b\xb5\x94\x04\x92\x28\x16\x5f\x24\x1b\x9a\x38\x14\x67\x69\x3c\x89\xea\xc8\x97\x8d\xa8\x95\xe8\x12\xe0\xcc\x05\x97\xde\x0a\x16\x49\x02\x82\x63\xc9\x40\x47\xa0\xbd\x75\x0e\xd2\x35\x72\x04\x25\x83\xef\x82\x5e\x09\x04\x48\x92\xa7\xe0\x24\x4f\x99\x61\x50\xbf\x39\xef\x5b\x1f\x1a\x1f\x3c\x2f\x91\x72\x59\x50\xd1\x02\x87\xe6\x9c\xe7\x78\x1e\x3e\xc3\x9b\xe1\xc5\x6f\xd4\xac\xb2\xba\x55\xc8\xea\x6d\x4c\xd3\xbe\x3c\x0d\xe3\x60\xf3\x41\xb4\xcb\xad\x00\x7d\x03\x81\x7d\xeb\x81\xb6\x4e\x59\xde\x55\xab\x44\xd1\xbd\xbc\xec\x8a\xef\xee\x5e\x5f\x65\x6d\xcc\x67\x31\xe6\xcb\xe6\x2a\xda\x69\xa8\x23\x6e\x63\x02\xb2\x1c\xf5\x51\x5d\x1b\xb3\x16\x63\x36\x62\xcc\x47\xf9\x53\x8c\x31\x46\x8c\xb9\x97\x9f\xe4\x17\x79\x27\x3f\xcb\x77\x62\x8c\x5c\xc7\xbb\x18\x32\xdb\xc0\xdb\x30\x0e\x75\x79\x94\x8d\xa9\x5f\x7e\x78\xfa\xf1\xf5\x71\x6d\xcc\x76\x46\x9b\xe7\x9b\x55\x5e\x47\xcc\x77\x49\x47\xe8\x9c\xc6\x6c\xe5\xe5\x93\x59\xbd\x6e\x1e\xcc\x4a\x3e\x5c\x6b\x3e\xbc\x6e\x1e\x3e\xfc\xc7\x0e\x8f\x76\x9e\xec\xde\x98\xcf\xcf\x3a\xcd\x6f\x4f\x7f\xec\xdf\xfd\xfa\xfe\xfe\xe1\xf9\xe9\xf5\xd1\x98\x2f\xcf\x6f\x13\x0e\xcb\xad\x5c\x7f\x92\x8f\x9b\x1b\x3a\x1e\xde\x6f\x1f\xae\xa9\x83\xe6\x7e\x72\xbd\xa5\xed\xa9\xf7\x3c\xbf\x55\xbb\x6a\x75\xd3\xff\xf1\x7e\x75\xf7\x6f\x00\x00\x00\xff\xff\x44\x7a\xd2\xf7\xb1\x08\x00\x00" +var _runtimeSyntaxTclYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x55\xd1\x96\xdb\x26\x10\x7d\xdf\xaf\x50\x9c\x3d\x8d\xbd\x7b\xd6\xed\x6b\x9d\xb6\xdb\xbe\xf7\x0b\xba\x6c\x5c\x84\x46\x12\xf5\x08\xe8\x30\xb2\xad\x66\xf2\xef\x3d\x83\x64\xaf\x73\x4e\x9b\x07\xc1\x1d\x04\x03\x5c\x2e\x97\xd6\x23\xf0\x94\x60\x57\xb1\xc3\xbb\xbb\x06\x18\x1c\xef\xee\xaa\xaa\xaa\xf4\x57\xb0\x03\xec\xaa\x95\x31\x5b\x76\x78\xbf\x2a\xed\x3d\xd8\x06\x68\x57\xad\x3e\xbd\x7f\xb7\x7d\xf8\x7e\x0d\xe1\x58\x3d\x6e\x9e\xd9\x61\xee\xd7\x95\xdc\x6f\x56\x77\x77\x34\x22\xe4\x39\xcd\x53\x95\xd9\x32\x0c\x10\xb8\x64\xaa\xd7\xb6\x65\x20\xb1\x29\x41\x68\xc4\x12\xd9\x49\xec\xc8\x71\x0f\x67\x70\xf1\x30\x63\x3f\xa4\x48\x3c\x63\x8c\xb6\x79\x43\x7b\x1f\x1a\x38\xcf\xf1\xdf\xa3\x45\xdf\x4e\x52\xfb\x60\x69\x92\x9a\xc0\x1e\xc4\xd9\x0c\xe2\x2c\xbb\x5e\x5c\x23\x0e\xa3\x3b\x68\xa9\x8d\x31\x38\xcb\x5a\xb1\x0f\x23\x08\x60\x9e\x0b\xdf\x0a\x04\x17\x1b\x1f\x3a\x81\xd8\x0a\x10\x45\x12\x38\x5a\x14\x5d\x94\xc0\xd9\xb3\xc0\x39\x91\xb4\xb5\xe6\x83\x46\x5a\x17\x43\xeb\xbb\x91\x40\x61\x9a\x44\xe9\x2a\x05\x1c\x21\xb0\xb4\x38\xe6\x5e\xda\x48\xfa\x81\x75\x05\x0f\x96\xa5\x03\xce\xd2\x61\xac\x4b\x61\x51\x7a\x9f\x39\xd2\x24\xbe\x15\x1f\x1c\x89\x0f\x6d\x14\x1f\x18\x28\xc9\x5f\xd1\x07\xc1\x85\x2a\x9c\x77\x8e\x3e\x64\x20\x16\xf4\x99\x05\x11\x42\xc7\xbd\x14\x8e\x90\x6c\xe8\x40\x90\x20\xa1\x75\x20\x98\xc1\x92\xeb\xb5\x66\xc1\xac\x84\xea\x81\xe6\xa4\x3f\x63\x82\x20\xc9\xba\x83\xed\x40\x92\x6f\x24\x8d\x9c\x25\x9d\x1a\x21\xb0\x5a\x74\x70\x4e\x5a\xe5\xb1\x16\x2a\x4a\x10\x02\x1e\x29\x48\x76\x36\x48\x06\x38\x88\x26\xce\x4a\x88\x56\x23\x39\x90\x9c\xd0\xb3\x64\x26\xe5\x32\x8f\x75\x66\xc9\x27\xaf\x87\xc1\x0e\x7f\x8f\x9d\x30\x20\x0a\xfb\x01\x84\x49\xd7\x31\x86\x43\x88\xa7\x20\x63\xd0\x64\x63\x6a\x2c\x83\x8c\x09\xe1\x08\x28\x63\x3a\x5a\x92\xa3\x25\x6f\x6b\x04\x39\x9e\xac\x67\x39\xf5\x1e\x61\x63\x4c\xbd\xfa\x3f\x81\xa9\xa6\x2a\x1b\xa6\x21\x12\xcc\x0a\xab\x9a\x18\x60\xa1\x63\x6e\x80\xb3\xcf\x9c\x97\xa0\x03\x5e\x50\x21\xe8\x82\xe1\xcc\x80\x25\xf3\xd2\x92\xaf\xfd\xb2\xff\xe7\x92\x3a\xb3\x25\xfe\x2a\xb7\x2e\xc8\x67\xf6\xee\x92\xa9\x6c\xee\x5b\x4b\x9e\x09\xab\xea\x49\x27\x2c\x27\xba\xb4\xb8\x38\x24\x4b\x70\x09\x41\x25\x7f\x09\x5a\x4f\xf9\xc2\x75\x35\x8b\xe3\x12\xe4\x0b\x42\xfb\xd6\xe5\xeb\xcc\x83\x4d\x6f\x50\x0f\x68\x09\x66\x11\x5d\x02\x48\x60\xf9\x26\x2a\xc2\x5a\x42\x8e\x6f\x08\xe3\x09\xe8\x2d\x64\xcf\x78\xd3\x6f\x4c\xe9\xe6\x2f\xf9\xe1\x16\x23\xb4\x7c\x1b\x93\xef\xfa\x6b\xc3\xc9\xe3\x75\xbf\xa7\x48\x8d\x5e\x84\x9b\xb0\x70\xff\x4d\x2d\xa0\xa5\xe1\xc6\x3d\xd2\xa1\x93\x7a\x39\x2c\x35\x89\xd9\x18\x2c\x97\x6b\xe9\x2c\x97\x6b\xe1\x5c\x44\x54\x1d\xba\x8b\x65\xcc\xbc\xbb\xbe\xa3\x24\xae\x1f\x62\x23\xae\x57\xd5\xba\x9e\x62\x64\x71\x33\xfb\x6e\x61\xd8\x0d\xcd\x2c\x6e\x17\x87\xc1\x86\x06\x63\x4c\xe2\x66\x62\x5d\xb9\x14\x24\x8e\xe3\x41\xa7\x52\xf7\x95\x66\x4c\x02\xae\x8f\xc5\x6e\x50\x5a\x17\x18\xa5\x2d\xd6\xd5\x46\x3a\x48\xab\xdb\x92\x96\x69\xd4\xe5\x80\xb4\x63\x28\x3f\xfb\x98\x79\x3f\x1b\x46\x53\x8c\xe3\x2c\x07\x98\xb0\x01\x2c\xb5\xca\x5a\xeb\x03\x4c\xb9\x00\xd5\xef\x41\x19\x45\x9b\xb3\xef\x82\xa0\x9a\xa1\x55\x93\x81\x21\xf1\x24\x58\x78\x40\x1f\x0e\x82\xb3\x2a\x94\x35\xf4\xf5\xe2\x3d\xba\x11\x3c\x5a\x52\x52\xb4\x4e\x4b\x9c\xd4\xed\x06\x7b\x96\xc1\x07\x09\xde\xa9\xa5\x24\x90\x44\xb1\xf8\x22\xd9\xd0\xc4\xa1\x38\x4b\xe3\x49\x54\x47\xbe\x6c\x44\xad\x44\x97\x00\x67\x2e\xb8\xf4\x56\xb0\x48\x12\x10\x1c\x4b\x06\x3a\x02\xed\xad\x73\x90\xae\x91\x23\x28\x19\x7c\x17\xf4\x4a\x20\x40\x92\x3c\x05\x27\x79\xca\x0c\x83\xfa\xcd\x79\xdf\xfa\xd0\xf8\xe0\x79\x89\x94\xcb\x82\x8a\x16\x38\x34\xe7\x3c\xc7\xf3\xf0\x19\xde\x0c\x2f\x7e\xa3\x66\x95\xd5\xad\x42\x56\x6f\x63\x9a\xf6\xe5\x69\x18\x07\x9b\x0f\xa2\x5d\x6e\x05\xe8\x1b\x08\xec\x5b\x0f\xb4\x75\xca\xf2\xae\x5a\x25\x8a\xee\xe5\x65\x57\x7c\x77\xf7\xfa\x2a\x6b\x63\x3e\x8b\x31\x5f\x36\x57\xd1\x4e\x43\x1d\x71\x1b\x13\x90\xe5\xa8\x6f\xeb\xda\x98\xb5\x18\xb3\x11\x63\x3e\xca\x9f\x62\x8c\x31\x62\xcc\xbd\xfc\x24\xbf\xc8\x3b\xf9\x59\xbe\x13\x63\xe4\x3a\xde\xc5\x90\xd9\x06\xde\x86\x71\xa8\xcb\xdb\x6c\x4c\xfd\xf2\xc3\xd3\x8f\xaf\x8f\x6b\x63\xb6\x33\xda\x3c\xdf\xac\xf2\x3a\x62\xbe\x4b\x3a\x42\xe7\x34\x66\x2b\x2f\x9f\xcc\xea\x75\xf3\x60\x56\xf2\xe1\xda\xf2\xe1\x75\xf3\xf0\xe1\x3f\x76\x78\xb4\xf3\x64\xf7\xc6\x7c\x7e\xd6\x69\x7e\x7b\xfa\x63\xff\xee\xd7\xf7\xf7\x0f\xcf\x4f\xaf\x8f\xc6\x7c\x79\x7e\x9b\x70\x58\x6e\xe5\xfa\x93\x7c\xdc\xdc\xd0\xf1\xf0\x7e\xfb\x70\x4d\x1d\x34\xf7\x93\xeb\x2d\x6d\x4f\xbd\xe7\xf9\xad\xda\x55\xab\x9b\xfe\x8f\xf7\xab\xbb\x7f\x03\x00\x00\xff\xff\x1e\x2f\x55\x8f\xb7\x08\x00\x00" func runtimeSyntaxTclYamlBytes() ([]byte, error) { return bindataRead( @@ -3537,6 +3644,26 @@ func runtimeSyntaxViYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxVueYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x90\xcd\xaa\xc3\x20\x10\x85\xf7\x3e\xc5\x20\x77\x75\xa1\xe9\xaa\x1b\x29\xed\x8b\x64\x23\x7a\x42\x53\x26\x21\xc4\x31\x90\xb7\x2f\x32\x25\xf4\xc7\x12\x77\xf2\xcd\x78\x3e\x4f\xd7\x33\x64\x9d\xe0\x68\xc9\x30\x26\x42\x10\xc4\x19\x22\xa2\x82\x46\x3f\xc0\x91\x6d\xdb\x66\xc9\xf8\xb3\xc6\xcc\x99\x91\x94\x1f\x28\xa2\xf3\x99\x9f\xe3\xe5\x24\xf1\xb3\x38\xb2\x67\xc1\x30\xb1\x17\x34\xff\xd7\x8b\xdd\x30\xc6\x58\xe0\xb1\x4e\xf5\x69\xda\xee\x9a\xd1\x8f\x81\x73\x2c\x12\x37\x19\xf8\x64\xdf\xf0\x87\x07\x7d\x8b\xa4\x30\xf7\x93\xd4\x35\x6a\xec\xe5\x7f\x35\x87\xbb\x5f\xbc\xae\xe9\xca\x6e\x11\x49\x56\xfe\xd1\x42\x05\xed\xa4\x87\x94\x74\xf6\x11\x00\x00\xff\xff\xe1\x4d\x6b\x0b\xb6\x01\x00\x00" + +func runtimeSyntaxVueYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxVueYaml, + "runtime/syntax/vue.yaml", + ) +} + +func runtimeSyntaxVueYaml() (*asset, error) { + bytes, err := runtimeSyntaxVueYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/vue.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxXmlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\xcd\x31\x0b\xc2\x30\x10\x05\xe0\x3d\xbf\xe2\x3c\x44\xb4\x90\xba\xa7\x62\x07\x75\xd6\xc1\x45\xda\x0a\xa5\xbd\x96\x40\x12\x4b\x12\xa1\x42\x7f\xbc\x84\x56\x87\x22\xbe\xf5\xdd\xfb\xae\x91\x8a\xfc\xab\x23\x01\xbd\x56\x8c\xd5\xe4\xa9\xf2\x82\x01\x00\x84\xca\x94\x9a\x04\x60\x9e\xc7\xeb\x5e\xab\xc1\xb5\x5a\xa5\x83\x35\xed\xd0\x29\xe9\xfc\x66\x89\x8c\xd9\xa7\x22\x37\x2e\x38\xc8\x9a\x8c\x97\x8d\x24\x2b\x00\x77\x71\x94\xee\x71\x6a\xaa\x87\xd6\x64\x26\x3a\xc4\xf9\xd2\xfa\x70\xb5\x38\x9e\x0f\xd7\xdb\xe5\x84\xdf\x8a\x4c\x2d\x00\xb3\x6d\xf1\x99\x87\x8c\x7f\x20\x2b\x66\x20\xfc\x10\x39\x9f\x63\x9c\xff\xa1\x5c\x47\x95\x2c\x95\x00\x5c\x65\xf7\xa4\x88\x12\x64\xef\x00\x00\x00\xff\xff\x1f\x6d\x27\xb2\x18\x01\x00\x00" func runtimeSyntaxXmlYamlBytes() ([]byte, error) { @@ -3577,7 +3704,7 @@ func runtimeSyntaxXresourcesYaml() (*asset, error) { return a, nil } -var _runtimeSyntaxYamlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x91\x4f\x8f\xd3\x30\x10\xc5\xef\xfe\x14\x5e\xb3\x4b\x93\xad\x1c\x71\xc5\x07\x50\x85\x58\x2e\xd0\x1e\xe0\x52\x32\x89\xe4\xb6\x13\x6a\xe1\x38\x21\x9e\x0a\x05\xcd\x87\x47\x49\x28\x0d\x2d\x17\x24\xac\x1c\xa2\x37\xff\x7e\x7a\xaf\x72\x1e\xa9\x6f\xd1\xc8\xde\xd6\x5e\x88\x03\x12\xee\xc9\x08\x29\xa5\x1c\x6a\xc1\xd6\x68\xa4\x02\xc8\x7a\xfb\xba\xf6\xf7\x6a\xac\x1c\xd1\x1e\xb0\x33\x52\x3d\x6c\x57\x1f\xde\x2b\x21\xba\x93\xc7\x38\x4d\x69\x39\xed\x53\x49\xc9\x32\xbd\xbb\x4b\x76\x2e\xd8\xae\xe7\x5d\xd3\x78\xae\x7c\x63\x89\x5d\x20\xae\x6d\xcb\xe1\xe4\x3d\x37\xc3\x5f\xc4\x6f\x1c\x91\x38\x52\x97\x4a\xf5\x6b\xcf\xbe\x09\x91\x6c\x20\x23\x07\x80\x5d\xb2\x7d\xfb\x91\x7b\x8c\xbc\xe5\x9e\x37\x6b\x6e\x02\xaf\x37\x1c\x1a\x5e\x73\xe0\xcd\xd3\x13\x37\x55\x95\x02\xec\x6e\xc7\xc7\x69\xea\x4e\xc8\x95\xf5\x11\xe7\x4d\x91\x2c\x61\x8d\x63\x57\x62\xf2\xdc\xc4\xd6\xee\xd1\x14\x05\x03\xe4\x0c\x50\xf0\x5c\x5c\xe6\xfc\xaa\xe0\x72\xa6\x3c\x6a\x99\x9e\x77\xb9\x03\x06\x72\x95\x1b\x9d\x99\xf5\xe4\x00\x8f\xcf\x8b\x7c\xa5\x3f\x5b\xfd\xe3\x85\x7e\x59\x2c\xd5\x9f\x4e\xe5\x3a\x03\xf8\x5e\x2c\xcd\xdf\xa8\x2e\x62\x8b\x7b\x67\xfd\xe0\x46\x52\x6a\xad\xb9\x04\xc8\xa6\x8f\xcb\x31\x08\x2e\x1f\x3e\xad\xde\xa5\x4a\x5c\x39\x90\x45\xea\x5c\xf8\x32\xe5\x33\xbc\x48\xb6\xa3\x73\x44\xa0\xd4\xef\x02\x86\xc3\x60\xd7\x4c\x89\x5f\x5d\x3b\x3a\x08\x90\x5d\xd4\x59\xde\xe7\x37\x3f\x37\x91\xbe\x39\xda\xee\x32\xfa\x4f\x4c\x8b\x6b\xa4\xc5\x0d\x51\x32\xee\x4d\x39\x59\x2c\xd2\xff\x03\x56\x8f\x8e\xdf\x00\x3d\xbb\x66\xb9\xbf\x3e\x27\xf3\x42\x08\xf1\x33\x00\x00\xff\xff\x9a\xfa\x6f\xca\x4b\x03\x00\x00" +var _runtimeSyntaxYamlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x91\x41\x8f\xd3\x30\x10\x85\xef\xfe\x15\x5e\xb3\x4b\x93\xad\x1c\x71\xc5\x07\x50\x85\x5a\x2e\x4b\x2b\xb1\xe5\x50\x32\x89\xe4\xb6\x13\xd6\xc2\x71\x42\xec\x0a\x05\xcd\x8f\x47\x4e\x28\x0d\x5d\x2e\x48\x58\x95\x55\xbd\x89\xdf\x7c\x7a\xaf\x32\x16\x43\xdf\xa2\xe2\xbd\xae\x2d\x63\x47\x0c\x78\x08\x8a\x71\xce\x79\x9c\x39\x5d\xa3\xe2\x02\x20\xeb\xf5\xdb\xda\xde\x8a\x61\xf2\x84\xfa\x88\x9d\xe2\xe2\x6e\xb7\xf8\xf0\x20\x18\xeb\x4e\x16\xfd\xf8\x4a\xf2\xd1\x4f\x24\x25\xf1\xf4\xe6\x26\xd9\x1b\xa7\xbb\x9e\xf6\x4d\x63\xa9\xb2\x8d\x0e\x64\x5c\xa0\x5a\xb7\xe4\x4e\xd6\x52\x13\xff\x79\xfc\x46\x1e\x03\xf9\xd0\xa5\x5c\xfc\xf2\x39\x34\xce\x07\xed\x82\xe2\x11\x60\x9f\xec\x96\x8f\xd4\xa3\xa7\x1d\xf5\xb4\x59\x53\xe3\x68\xfb\xf1\xd3\x92\xb6\xdd\x09\x29\xc4\x6b\xbd\x21\xd7\xd0\x9a\x1c\x6d\x56\x2b\x6a\xaa\x8a\x56\x8b\x87\xc7\x25\xad\xb4\xf5\x48\x55\xbc\x53\x80\xfd\xd9\xdf\x07\x1d\xb0\xc6\xb8\x40\x24\x2a\xcf\x95\x6f\xf5\x01\x55\x51\x10\x40\x4e\x00\x05\x4d\xc5\x79\x4e\x6f\x0a\x2a\x27\xca\xbd\xe4\xe9\xd9\xcb\x1c\xd1\x05\x53\x99\x21\x95\xc9\x37\x39\xc0\xfd\xcb\x22\x5f\xc8\xcf\x5a\xfe\x78\x25\x5f\x17\x73\xf1\x67\x4a\xb9\xcc\x00\xbe\x17\x73\xf5\x37\xaa\x8b\xd8\xe2\xc1\x68\x1b\x93\x48\x4a\x29\x25\x95\x00\xd9\xf8\xa3\x72\x28\x81\xca\xbb\xed\xe2\x7d\x2a\xd8\x55\x78\x99\x0f\x9d\x71\x5f\xc6\x6e\xe2\xf1\x41\x77\xe1\x5c\x0f\x08\xf1\x7b\x80\xee\x18\x9b\x9e\x28\xfe\xab\x69\x87\xf2\x01\xb2\x8b\x3a\xe9\xfa\x7c\xa6\xeb\x46\xd2\x77\x4f\xba\xbb\x3c\xfd\x27\xa6\xd9\x35\xd2\xec\x19\x51\x32\xf8\xa6\x94\xcc\x66\xe9\xff\x01\xab\x87\xc4\x9f\x01\xbd\xb8\x66\xb9\xbd\x5e\xc7\xf3\x82\x31\xf6\x33\x00\x00\xff\xff\xd6\xcd\xd8\x11\x47\x03\x00\x00" func runtimeSyntaxYamlYamlBytes() ([]byte, error) { return bindataRead( @@ -3617,6 +3744,26 @@ func runtimeSyntaxYumYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxZigYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x54\xcd\x8e\x1b\x37\x0c\xbe\xfb\x29\x84\x69\x0e\x76\x0c\xef\x3f\x8c\xcd\x5c\xd2\x20\xdb\x00\x3d\xb4\x29\x8a\x1c\x16\xdd\x31\x0c\x8e\xc4\xb1\x09\x6b\xa8\x81\x7e\xec\xb5\xc1\x87\x2f\x34\x1e\xaf\x37\x9b\x43\x8b\xcc\x41\x12\x29\x91\x1f\xc9\x8f\x9c\x86\x2c\xc6\x7d\x87\xa5\x3a\xd0\x6a\x34\x32\x18\x51\xc7\x72\xa4\x94\x52\xf9\x8a\xa1\xc5\x52\x15\x55\x75\x71\xa0\xd5\xbb\x62\x34\xf2\xc9\x62\x38\xde\xff\xa2\x9a\xc4\x3a\x92\x63\x65\xb0\x21\xa6\x7c\xec\x6f\x66\x8a\x0c\x72\xa4\x86\xd0\x97\xaa\x68\x58\x3d\xc1\xec\x70\x35\xfb\xb0\x5c\x4c\x8b\xfe\x45\xb6\xfe\x1b\x03\xfa\x2d\x1a\xb5\x73\xde\x84\xc1\x30\x44\x88\xd8\x22\xc7\x1e\xb5\x1e\x83\xa5\x15\x0b\xb0\x11\xb0\xd6\xed\x0e\xe8\x9d\x00\xef\xd1\x7b\xe7\x05\x42\x2b\x10\xf6\xac\x05\x76\x40\x51\x6a\x8f\xb0\x11\x0d\xac\xd1\x8a\x86\xa8\xd7\xa2\x5d\xdb\x45\x6a\x51\xb4\xe3\x10\xf3\x1a\x89\x13\x8a\xc1\x06\xbd\xa0\x0d\x28\xc8\xa9\x15\xf4\x7e\x50\xf5\x9e\xf1\xb9\x73\x3e\x0a\x3e\x47\xf4\x2c\x0d\xe4\x77\x0d\x4b\xe3\xbc\x50\x23\xc4\x96\x18\x85\x61\x83\x46\x6b\x61\x07\x96\x20\x08\x27\x6b\xc5\x79\x71\xbe\xf7\xdb\x81\xde\xa0\x91\xce\xbb\x96\xb2\x98\x6a\xf1\x18\x52\x8b\xe2\x31\x26\xcf\x62\x89\x37\x01\xfb\x0a\x4a\x88\x46\x83\xb5\x5a\x4b\x88\x3e\xe9\x28\x21\x85\x0e\xd9\x48\xd8\x51\xce\x23\x62\x88\x12\xd7\x1e\xc1\x58\xa7\xc1\x4a\xf4\x09\x25\xfa\xbd\x24\xee\xab\x8f\x46\x12\x67\x4f\x89\x3d\x82\x5e\x43\x6d\x51\x52\x40\xd9\x82\x97\xad\xb3\x10\xc9\xa2\xec\xd6\x64\x71\x52\x55\xf5\x99\x86\x3a\x91\x8d\xc4\x2f\x64\xbe\x30\xd1\xa1\x26\xb0\xa5\x2a\x7e\x9d\x66\xfa\xbe\xe3\xee\x73\xae\x26\x70\x3c\x3d\xd6\x83\x5c\xaa\xe2\xe9\xd3\xec\x9f\x45\x5e\x96\x8b\xe9\xf8\xe9\x6a\xf6\x61\x31\x9d\x7c\x3c\x5b\xfe\x99\xda\x1a\x7d\x50\xe3\x35\x3e\x83\x41\x4d\x2d\x58\x35\x55\xc3\x69\xf2\xc6\xdf\x05\xf7\xcf\x87\x66\xb8\x7a\x7e\xfa\x34\xfb\xd2\xbb\x94\xc1\xf3\x77\xa9\xfc\xe5\xa9\xa5\x48\x5b\x54\xdf\xf6\x1d\x06\x75\xa9\x1e\xd0\x53\x6e\xb1\x07\x88\x70\x54\x0e\x00\xc7\x9e\x2f\xc6\xc7\x68\x61\x76\x58\x4c\x65\x4c\xf7\x92\xee\x85\xae\xe7\x92\xae\xe7\x42\xb7\x37\x92\x6e\x6f\x84\xe6\x77\x92\xe6\x77\x42\xd7\x37\xf7\x92\xf2\x42\x81\x0e\xb9\xb8\x79\xd5\xcb\xb0\xce\xad\xa2\x97\xe9\x74\x20\xee\xc5\xe3\x66\x1d\xaf\xb2\x34\xec\x79\x7b\xad\x7a\xa5\x36\x2e\x65\xce\xf4\x72\xeb\xc8\x48\x73\x3d\x97\xe6\xf6\x46\x9a\xf9\x9d\x34\x19\xb4\x76\xce\x4a\x7f\xc5\x6e\x68\xa0\x9c\xc4\x79\x1a\x4e\xad\x7e\xc4\x3f\x09\x8d\x75\x10\x27\x93\x62\xf4\xb6\xb2\x21\x7a\xe2\x55\x39\x14\x4f\xe5\xc9\xf3\xfd\xd4\x15\xc5\x8b\x0e\xd9\xbc\xd1\x84\x0d\x75\x3d\x1b\x55\x75\x71\xd6\xbe\xfa\x2b\x9c\xbe\xd7\x48\xc7\x4e\xfa\xbc\x06\x7f\x36\x7d\x09\xa7\xed\xa7\xfd\x87\x30\x2e\x2f\xdf\x86\xf1\xee\x3f\xf0\xa2\x33\x2e\x53\xfa\xed\xeb\xc3\x57\x79\x7c\x7c\x94\x2f\xbf\x3f\xfe\xf1\xdb\xa4\xfc\xf8\x3f\xc0\xaa\xea\xfd\x0f\x59\x57\xef\x2f\x7f\x1e\xf1\xdf\x00\x00\x00\xff\xff\x3f\xc8\x6c\xd6\x58\x05\x00\x00" + +func runtimeSyntaxZigYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxZigYaml, + "runtime/syntax/zig.yaml", + ) +} + +func runtimeSyntaxZigYaml() (*asset, error) { + bytes, err := runtimeSyntaxZigYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/zig.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxZshYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x55\x5d\x6f\x1b\xb7\x12\x7d\xf7\xaf\xd8\xc8\xc6\x8d\x36\xbe\xf2\x4d\x72\x93\xa0\x75\x3f\xd4\x36\x40\xd1\x87\xa2\x2f\x05\xfa\x10\xd3\x6d\x29\x72\x56\x64\x96\x4b\x6e\x38\x43\xcb\x52\x4e\xfe\x7b\xc1\x95\xbf\xaa\x24\x68\x05\xed\x72\xf9\x31\x67\x86\x87\x73\x86\x9d\x0f\x24\xdb\x91\xce\x9b\x1d\xbb\xa3\x23\x4b\x42\x46\xce\x8f\x9a\xa6\x69\xea\x54\xd4\x03\x9d\x37\xb3\xb9\x52\x67\x3b\x76\x27\x50\xea\x6c\x39\xdf\xb1\xa3\x78\x85\xdd\x98\x53\x5d\x83\x1d\xbb\x6c\xb0\x0b\x69\xed\xe3\xd4\xa4\x22\xed\x49\x3b\x9b\x50\x1c\x69\x4b\xf9\xbc\x99\xfd\x7e\xfc\xe8\xec\xc9\xff\xe6\x14\xaf\x9a\xd3\x76\xb9\x63\x37\x6f\x50\x17\x1d\xe5\x12\x88\xf7\x2e\x8f\x8f\x9b\x5f\xca\xb0\xa2\xcc\x53\x77\xd1\x98\x14\x59\x74\x94\xb3\x38\x0d\x9f\x37\x33\xa5\x56\x17\x4f\x17\x5f\x5e\x9e\x2a\xb5\x9a\x1d\x4d\xcb\x26\xbb\xd7\x29\x5a\x2f\x3e\x45\x1d\xb8\xd1\xd1\x56\x53\xc9\x29\x34\x5d\x48\x9b\x1b\x34\x16\x2d\x34\x50\x94\x3d\xce\x5c\x87\x8d\xde\x32\x56\x99\x74\x8f\xd5\x96\x60\x34\x13\xaa\xa1\x8f\x85\x60\x3d\xa7\x4d\x84\x4d\xb0\x29\x12\x28\xf8\x0e\x14\x98\x40\xac\x0d\xe8\xda\x0b\x3a\x8f\x2e\x65\x74\x25\x9a\xea\x1b\xbe\x83\x8f\x08\xc9\xe8\x80\x4c\xda\x22\x93\x94\x1c\xc1\x14\xc8\x08\xd8\xf9\x4e\x20\x8e\x22\xc4\x0f\x84\x12\xc5\x07\x6c\x9c\x0f\xd4\xde\xef\xe7\xef\x81\xce\x95\x7a\x0f\xa5\x3e\x40\xa9\x39\x94\x6a\xa1\xd4\x57\x50\xea\x12\x4a\x5d\xe0\x4f\x28\xa5\x14\x94\x3a\xc1\xd7\xf8\x16\x8f\xf0\x0d\xfe\x03\xa5\x70\x43\xfe\x21\x33\x4d\x17\xf4\xfa\x96\x5b\x1e\xc9\x78\x1d\xce\x9b\xd9\xe2\xe2\x67\x4b\xdd\x3a\x97\xcd\xf5\xe5\x14\xc6\x47\x0b\xe6\xf4\x0e\x91\xb0\x16\x04\xc1\x9a\x10\x08\x8c\x88\x5d\x7b\x70\x0a\x3f\x68\x76\x0b\x1f\x1d\x65\x2f\x64\x3f\x43\xfb\xbc\xc4\x76\xa9\x83\xd7\x8c\x95\x8f\xb6\xa7\x2d\x56\xc5\x07\xf1\x11\xc6\xc2\x92\x09\x3a\x13\xe8\x4a\x07\xd0\x35\x55\xa6\xc7\x94\x05\x6f\xd3\x8a\x11\x48\x30\xa6\xd1\x62\x2c\xec\x2c\x98\x04\x9c\x4a\x36\x84\x9a\xc5\xb5\x5b\x06\xcd\x3d\x4a\x64\x92\xf6\x6e\x33\x53\x70\x6f\x7e\xfd\x69\x31\xed\xa9\xf3\xe6\x26\xb4\x7d\xea\xef\x93\xc1\xda\xc5\x8e\xdd\xc2\xa5\xd4\x43\x17\x49\x21\x69\x0b\xe3\xac\xcf\x30\x69\x18\x7d\xf4\x02\xeb\x33\x63\x6e\x3d\x83\x62\xab\x57\x81\x40\xc6\x25\x31\xa0\xa1\x04\x2d\x84\x31\xfb\x28\x18\x73\x1a\x46\x99\x57\x93\x76\x89\x69\xbf\x4c\x92\x46\xc1\xae\xea\x65\x48\x76\x02\xdf\xb1\x6c\x03\x61\xe3\x28\x1a\x3a\xa4\xf2\x75\x1a\x86\x14\x9b\xe0\x63\xb9\x6e\x4c\x1a\x06\x1d\x2d\x7f\x8e\xd1\x35\xfc\xba\x5d\xea\x4d\x8f\xce\x47\x0b\xa5\x36\xef\x9f\xfe\xf7\xc5\x87\x75\xa6\x11\xbd\x0f\x61\x7a\xe9\x10\xee\x66\x02\x31\x63\xd0\x3d\x61\x9c\xe6\x99\x2c\x44\xe7\x8f\x83\xc8\x54\xc4\x07\xfe\xa7\x08\x56\x9a\xe9\xd5\x0b\xd4\xa6\xd6\x0c\x18\x2d\x30\xce\xa4\x08\xe3\xd6\x79\x84\x71\x43\xaa\x6c\x56\x41\x19\x97\x53\x12\x98\x9e\xcb\x50\xa9\x1d\x60\x46\x18\x1e\x83\x17\x98\x22\xb0\x95\x48\x6b\x61\xbb\xca\x77\x7d\x4c\x0a\x29\x73\xfd\x9a\xc0\x6d\x99\x68\x47\xad\x42\x74\x3d\xea\x68\x6b\x93\xd1\x69\x23\x55\x8d\xba\x8a\xb4\x1b\x04\x5d\x0a\x16\xb5\x02\xc1\x25\x16\x6f\x51\xff\xb5\xa2\x84\x80\xb7\xa9\x2a\xd5\xc7\x1e\xa1\x2a\x76\x3d\x21\x07\xc6\x60\x5f\xd6\xb8\x86\xbe\xfa\x1e\xfa\xce\x77\x09\x43\x1f\x93\xc5\xd0\x0b\x0d\x23\x86\x2b\x44\x6f\x08\x31\x20\x26\x57\x46\xc4\x31\x27\x83\x58\x86\xea\x32\x59\x8c\x9a\x6b\x26\x68\x71\xc6\xf5\x18\x7d\xec\xb7\x18\xf3\x3e\x35\x6a\xc8\xd3\x47\x87\x51\xae\x31\x6e\xec\x54\x27\xa6\x38\x32\xe9\x50\xad\x90\x07\xe4\xa1\xba\xcf\x25\x56\x0a\x99\xde\x61\xce\x4e\x3f\x03\x3b\xfd\xfc\xf9\x8b\xa9\x79\xf9\xaa\x36\xff\xff\x62\xea\xbd\x7c\xf6\xbc\xad\x51\xb3\xcb\x64\xc1\xae\x74\xe0\x40\x34\x82\xab\x72\xf6\xd4\xd6\x23\x03\x8b\x5d\xd5\x49\x91\x2d\x26\x83\x6d\x34\x10\x5d\x1f\x1f\x20\x44\x10\x62\x99\xaa\x53\x2a\x02\x49\xc5\x38\x48\x86\xe4\x42\xf5\x15\x4d\x3d\x1c\x99\x60\x2b\x46\x99\x68\x2b\xf1\xe6\x18\x4a\xf4\xef\x50\xe2\xb4\x9d\xc2\x94\x19\x57\x75\x1f\x1b\x83\x8d\x4b\xf5\xd1\x83\xc7\x96\xf8\x30\xcf\x7e\xbc\x29\xa0\x8d\xa5\xae\xaa\xc6\xa7\x78\x93\x68\xde\x52\x14\xdf\xf9\xfd\x1d\xa2\x14\x9f\xce\x6f\xab\x6d\xed\xb4\xf5\x32\xf8\x7e\xf1\xe6\x8f\x7a\x21\xf0\xa9\x52\x73\xa5\xda\x59\x73\xdc\xcc\x7d\xfb\x00\xff\x37\x9d\x7d\x95\x2b\x7f\x0a\x55\xa9\x13\xa5\xde\x2f\x6f\x91\x1e\x7d\x77\x7c\xf2\x64\xb9\xa8\x80\x1f\x96\xb3\xe6\xf8\x0e\xe9\xc1\x75\xc4\x92\x7d\x5c\x9f\xdf\x38\x68\xaa\x1c\xf2\x24\x85\xd9\xec\x6e\x8c\xa2\x3d\x18\xe1\xde\x8f\x93\x3f\xa5\xce\xee\x47\x1f\xdc\x7f\xb7\xbf\x87\x9e\xf6\x45\xf8\xb5\xd3\xf9\xde\xf4\xdf\x86\xf3\xf8\x30\x9a\xc7\x87\x6e\x9b\x8b\xcb\x7b\xb4\x61\x12\xf4\x47\x28\xc7\x87\x28\x27\x9f\x44\xf9\x2b\x00\x00\xff\xff\x63\xe6\xa7\x7e\x4b\x08\x00\x00" func runtimeSyntaxZshYamlBytes() ([]byte, error) { @@ -3714,6 +3861,7 @@ var _bindata = map[string]func() (*asset, error){ "runtime/colorschemes/in_progress/paper-tc.micro": runtimeColorschemesIn_progressPaperTcMicro, "runtime/colorschemes/in_progress/paper.micro": runtimeColorschemesIn_progressPaperMicro, "runtime/colorschemes/in_progress/symbian-tc.micro": runtimeColorschemesIn_progressSymbianTcMicro, + "runtime/colorschemes/material-tc.micro": runtimeColorschemesMaterialTcMicro, "runtime/colorschemes/monokai.micro": runtimeColorschemesMonokaiMicro, "runtime/colorschemes/railscast.micro": runtimeColorschemesRailscastMicro, "runtime/colorschemes/simple.micro": runtimeColorschemesSimpleMicro, @@ -3770,7 +3918,9 @@ var _bindata = map[string]func() (*asset, error){ "runtime/syntax/dockerfile.yaml": runtimeSyntaxDockerfileYaml, "runtime/syntax/dot.yaml": runtimeSyntaxDotYaml, "runtime/syntax/elixir.yaml": runtimeSyntaxElixirYaml, + "runtime/syntax/elm.yaml": runtimeSyntaxElmYaml, "runtime/syntax/erb.yaml": runtimeSyntaxErbYaml, + "runtime/syntax/erlang.yaml": runtimeSyntaxErlangYaml, "runtime/syntax/fish.yaml": runtimeSyntaxFishYaml, "runtime/syntax/fortran.yaml": runtimeSyntaxFortranYaml, "runtime/syntax/fsharp.yaml": runtimeSyntaxFsharpYaml, @@ -3783,6 +3933,7 @@ var _bindata = map[string]func() (*asset, error){ "runtime/syntax/glsl.yaml": runtimeSyntaxGlslYaml, "runtime/syntax/go.yaml": runtimeSyntaxGoYaml, "runtime/syntax/golo.yaml": runtimeSyntaxGoloYaml, + "runtime/syntax/graphql.yaml": runtimeSyntaxGraphqlYaml, "runtime/syntax/groff.yaml": runtimeSyntaxGroffYaml, "runtime/syntax/haml.yaml": runtimeSyntaxHamlYaml, "runtime/syntax/haskell.yaml": runtimeSyntaxHaskellYaml, @@ -3842,6 +3993,7 @@ var _bindata = map[string]func() (*asset, error){ "runtime/syntax/sls.yaml": runtimeSyntaxSlsYaml, "runtime/syntax/solidity.yaml": runtimeSyntaxSolidityYaml, "runtime/syntax/sql.yaml": runtimeSyntaxSqlYaml, + "runtime/syntax/stata.yaml": runtimeSyntaxStataYaml, "runtime/syntax/swift.yaml": runtimeSyntaxSwiftYaml, "runtime/syntax/syntax_checker.go": runtimeSyntaxSyntax_checkerGo, "runtime/syntax/syntax_converter.go": runtimeSyntaxSyntax_converterGo, @@ -3854,10 +4006,12 @@ var _bindata = map[string]func() (*asset, error){ "runtime/syntax/vala.yaml": runtimeSyntaxValaYaml, "runtime/syntax/vhdl.yaml": runtimeSyntaxVhdlYaml, "runtime/syntax/vi.yaml": runtimeSyntaxViYaml, + "runtime/syntax/vue.yaml": runtimeSyntaxVueYaml, "runtime/syntax/xml.yaml": runtimeSyntaxXmlYaml, "runtime/syntax/xresources.yaml": runtimeSyntaxXresourcesYaml, "runtime/syntax/yaml.yaml": runtimeSyntaxYamlYaml, "runtime/syntax/yum.yaml": runtimeSyntaxYumYaml, + "runtime/syntax/zig.yaml": runtimeSyntaxZigYaml, "runtime/syntax/zsh.yaml": runtimeSyntaxZshYaml, } @@ -3931,6 +4085,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ "paper.micro": &bintree{runtimeColorschemesIn_progressPaperMicro, map[string]*bintree{}}, "symbian-tc.micro": &bintree{runtimeColorschemesIn_progressSymbianTcMicro, map[string]*bintree{}}, }}, + "material-tc.micro": &bintree{runtimeColorschemesMaterialTcMicro, map[string]*bintree{}}, "monokai.micro": &bintree{runtimeColorschemesMonokaiMicro, map[string]*bintree{}}, "railscast.micro": &bintree{runtimeColorschemesRailscastMicro, map[string]*bintree{}}, "simple.micro": &bintree{runtimeColorschemesSimpleMicro, map[string]*bintree{}}, @@ -4003,7 +4158,9 @@ var _bintree = &bintree{nil, map[string]*bintree{ "dockerfile.yaml": &bintree{runtimeSyntaxDockerfileYaml, map[string]*bintree{}}, "dot.yaml": &bintree{runtimeSyntaxDotYaml, map[string]*bintree{}}, "elixir.yaml": &bintree{runtimeSyntaxElixirYaml, map[string]*bintree{}}, + "elm.yaml": &bintree{runtimeSyntaxElmYaml, map[string]*bintree{}}, "erb.yaml": &bintree{runtimeSyntaxErbYaml, map[string]*bintree{}}, + "erlang.yaml": &bintree{runtimeSyntaxErlangYaml, map[string]*bintree{}}, "fish.yaml": &bintree{runtimeSyntaxFishYaml, map[string]*bintree{}}, "fortran.yaml": &bintree{runtimeSyntaxFortranYaml, map[string]*bintree{}}, "fsharp.yaml": &bintree{runtimeSyntaxFsharpYaml, map[string]*bintree{}}, @@ -4016,6 +4173,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ "glsl.yaml": &bintree{runtimeSyntaxGlslYaml, map[string]*bintree{}}, "go.yaml": &bintree{runtimeSyntaxGoYaml, map[string]*bintree{}}, "golo.yaml": &bintree{runtimeSyntaxGoloYaml, map[string]*bintree{}}, + "graphql.yaml": &bintree{runtimeSyntaxGraphqlYaml, map[string]*bintree{}}, "groff.yaml": &bintree{runtimeSyntaxGroffYaml, map[string]*bintree{}}, "haml.yaml": &bintree{runtimeSyntaxHamlYaml, map[string]*bintree{}}, "haskell.yaml": &bintree{runtimeSyntaxHaskellYaml, map[string]*bintree{}}, @@ -4075,6 +4233,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ "sls.yaml": &bintree{runtimeSyntaxSlsYaml, map[string]*bintree{}}, "solidity.yaml": &bintree{runtimeSyntaxSolidityYaml, map[string]*bintree{}}, "sql.yaml": &bintree{runtimeSyntaxSqlYaml, map[string]*bintree{}}, + "stata.yaml": &bintree{runtimeSyntaxStataYaml, map[string]*bintree{}}, "swift.yaml": &bintree{runtimeSyntaxSwiftYaml, map[string]*bintree{}}, "syntax_checker.go": &bintree{runtimeSyntaxSyntax_checkerGo, map[string]*bintree{}}, "syntax_converter.go": &bintree{runtimeSyntaxSyntax_converterGo, map[string]*bintree{}}, @@ -4087,10 +4246,12 @@ var _bintree = &bintree{nil, map[string]*bintree{ "vala.yaml": &bintree{runtimeSyntaxValaYaml, map[string]*bintree{}}, "vhdl.yaml": &bintree{runtimeSyntaxVhdlYaml, map[string]*bintree{}}, "vi.yaml": &bintree{runtimeSyntaxViYaml, map[string]*bintree{}}, + "vue.yaml": &bintree{runtimeSyntaxVueYaml, map[string]*bintree{}}, "xml.yaml": &bintree{runtimeSyntaxXmlYaml, map[string]*bintree{}}, "xresources.yaml": &bintree{runtimeSyntaxXresourcesYaml, map[string]*bintree{}}, "yaml.yaml": &bintree{runtimeSyntaxYamlYaml, map[string]*bintree{}}, "yum.yaml": &bintree{runtimeSyntaxYumYaml, map[string]*bintree{}}, + "zig.yaml": &bintree{runtimeSyntaxZigYaml, map[string]*bintree{}}, "zsh.yaml": &bintree{runtimeSyntaxZshYaml, map[string]*bintree{}}, }}, }}, From b41fc10b8fa62241a8d74ecfa6dc4006f646fd4f Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 2 Sep 2019 14:40:50 -0400 Subject: [PATCH 163/231] Update some docs --- internal/action/actions.go | 4 +++ internal/action/bufpane.go | 1 + runtime/help/colors.md | 60 +++++++++++++++++++------------------ runtime/help/commands.md | 21 +++---------- runtime/help/help.md | 20 +++++-------- runtime/help/keybindings.md | 15 ++++++---- runtime/help/options.md | 21 ++----------- runtime/help/tutorial.md | 11 ------- 8 files changed, 59 insertions(+), 94 deletions(-) diff --git a/internal/action/actions.go b/internal/action/actions.go index da802c70..a24adc6b 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -1467,3 +1467,7 @@ func (h *BufPane) RemoveAllMultiCursors() bool { h.multiWord = false return true } + +func (h *BufPane) None() bool { + return false +} diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 4f03e640..cf5ac23e 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -510,6 +510,7 @@ var BufKeyActions = map[string]BufKeyAction{ "RemoveAllMultiCursors": (*BufPane).RemoveAllMultiCursors, "SkipMultiCursor": (*BufPane).SkipMultiCursor, "JumpToMatchingBrace": (*BufPane).JumpToMatchingBrace, + "None": (*BufPane).None, // This was changed to InsertNewline but I don't want to break backwards compatibility "InsertEnter": (*BufPane).InsertNewline, diff --git a/runtime/help/colors.md b/runtime/help/colors.md index ac70509c..38ea1784 100644 --- a/runtime/help/colors.md +++ b/runtime/help/colors.md @@ -2,48 +2,62 @@ This help page aims to cover two aspects of micro's syntax highlighting engine: -- How to create colorschemes and use them -- How to create syntax files to add to the list of languages micro can highlight - +- How to create colorschemes and use them. +- How to create syntax files to add to the list of languages micro can highlight. ## Colorschemes To change your colorscheme, press Ctrl-E in micro to bring up the command prompt, and type: + ``` -set colorscheme solarized +set colorscheme monokai ``` + (or whichever colorscheme you choose). -Micro comes with a number of colorschemes by default. Here is the list: +Micro comes with a number of colorschemes by default. Modern terminals tend to +have three different kinds of color support. The most common is 256 color where +the terminal provides 256 standardized colors (except the first 16 may be configured +by the user). A 256-color theme requires a terminal with 256 color support and +is the most portable. + +A 16-color theme uses the 16 user-configurable colors (or 16 default colors on +old terminals). These colorschemes are guranteed to work, but won't look great +unless the 16 colors are configured to the user's liking. Using a 16-color theme +will also preserve the terminal's theme because the terminal usually uses its 16 +colors for prompts or other coloring. + +Some terminals support "true color" with 16 million colors (using standard RGB values). +There is no one standard for this color support among terminals so this method +is not guaranteed to work. Usually truecolor must also be enabled by the user. The +colorschemes using true color will look exactly as intended. If true color is not +supported, a true color colorscheme will approximate its colors to 256-color. + +Here is the list of colorschemes: ### 256 color These should work and look nice in most terminals. I recommend these themes the most. -* `monokai`: this is the monokai colorscheme; you may recognize it as Sublime - Text's default colorscheme. It requires true color to look perfect, but the - 256 color approximation looks very good as well. It's also the default - colorscheme. +* `monokai` (also the `default` colorscheme) * `zenburn` * `gruvbox` * `darcula` * `twilight` * `railscast` -* `bubblegum`: a light colorscheme +* `bubblegum` ### 16 color These may vary widely based on the 16 colors selected for your terminal. -* `simple`: this is the simplest colorscheme. It uses 16 colors which are set by - your terminal -* `solarized`: You should have the solarized color palette in your terminal to use this colorscheme properly. +* `simple` +* `solarized` (must have the solarized color palette in your terminal to use this colorscheme properly) * `cmc-16` -* `cmc-paper`: cmc-16, but on a white background. (Actually light grey - on most ANSI (16-color) terminals) -* `geany`: Colorscheme based on geany's default highlighting. +* `cmc-paper` +* `geany` ### True color @@ -56,22 +70,10 @@ These require terminals that support true color and require `MICRO_TRUECOLOR=1` * `gruvbox-tc`: The true color version of the gruvbox colorscheme * `github-tc`: The true color version of the Github colorscheme -### Monochrome - -You can also use `monochrome` if you'd prefer to have just the terminal's default -foreground and background colors. Note: This provides no syntax highlighting! - -### Other - -See `help gimmickcolors` for a list of some true colour themes that are more -just for fun than for serious use. (Though feel free if you want!) - - ## Creating a Colorscheme Micro's colorschemes are also extremely simple to create. The default ones can -be found -[here](https://github.com/zyedidia/micro/tree/master/runtime/colorschemes). +be found [here](https://github.com/zyedidia/micro/tree/master/runtime/colorschemes). They are only about 18-30 lines in total. diff --git a/runtime/help/commands.md b/runtime/help/commands.md index e282d992..9ecd7782 100644 --- a/runtime/help/commands.md +++ b/runtime/help/commands.md @@ -29,9 +29,6 @@ Here are the possible commands that you can use. * `show option`: shows the current value of the given option. -* `eval "expression"`: Evaluates a Lua expression. Note that micro will not - print anything so you should use `messenger:Message(...)` to display a value. - * `run sh-command`: runs the given shell command in the background. The command's output will be displayed in one line when it finishes running. @@ -51,23 +48,11 @@ Here are the possible commands that you can use. * `log`: opens a log of all messages and debug statements. -* `plugin install plugin_name`: installs the given plugin. - -* `plugin remove plugin_name`: removes the given plugin. - * `plugin list`: lists all installed plugins. -* `plugin update`: updates all installed plugins. +* `plugin version pl`: shows version for specified plugin. -* `plugin search plugin_name`: searches for the given plugin. Note that you can - find a list of all available plugins at - github.com/micro-editor/plugin-channel. - - You can also see more information about the plugin manager in the - `Plugin Manager` section of the `plugins` help topic. - -* `plugin available`: list plugins available for download (this includes any - plugins that may be already installed). +* `plugin info pl`: shows additional info for specified plugin. * `reload`: reloads all runtime files. @@ -98,6 +83,8 @@ The following commands are provided by the default plugins: * `lint`: Lint the current file for errors. +* `comment`: automatically comment or uncomment current selection or line. + # Command Parsing When running a command, you can use extra syntax that micro will expand before diff --git a/runtime/help/help.md b/runtime/help/help.md index 66264260..aad6bac8 100644 --- a/runtime/help/help.md +++ b/runtime/help/help.md @@ -1,25 +1,23 @@ # Micro help text -Thank you for downloading and using micro. - Micro is a terminal-based text editor that aims to be easy to use and intuitive, while also taking advantage of the full capabilities of modern terminals. +To open the command bar, press CtrlE. This enables a `>` prompt for typing +commands. From now on when the documentation says to run a command such as +`> help`, this means press CtrlE and type `help` (and press enter to execute +the command). - -For a list of the default keybindings press CtrlE and type `help defaultkeys`. +For a list of the default keybindings run `> help defaultkeys`. For more information on keybindings see `> help keybindings`. -See the next section for more information about documentation and help. - ## Quick-start Press CtrlQ to quit, and CtrlS to save. Press CtrlE to start typing commands and you can see which commands are available by pressing tab, or by viewing the help -topic `> help commands`. When I write `> ...` I mean press CtrlE and then type -whatever is there. +topic `> help commands`. -Move the cursor around with the mouse or the arrow keys. Type +Move the cursor around with the mouse or the arrow keys. Run `> help defaultkeys` to get a quick, easy overview of the default hotkeys and what they do. For more info on rebinding keys, see type `> help keybindings`. @@ -30,7 +28,6 @@ see more information with `> help colors`. Press CtrlW to move between splits, and type `> vsplit filename` or `> hsplit filename` to open a new split. - ## Accessing more help Micro has a built-in help system much like Vim's (although less extensive). @@ -53,8 +50,7 @@ Here are the possible help topics that you can read: * colors: Explains micro's colorscheme and syntax highlighting engine and how to create your own colorschemes or add new languages to the engine -For example, to open the help page on plugins you would press CtrlE and type -`help plugins`. +For example, to open the help page on plugins you would run `> help plugins`. I recommend looking at the `tutorial` help file because it is short for each section and gives concrete examples of how to use the various configuration diff --git a/runtime/help/keybindings.md b/runtime/help/keybindings.md index 661c02fa..168b2c74 100644 --- a/runtime/help/keybindings.md +++ b/runtime/help/keybindings.md @@ -5,7 +5,7 @@ hotkeys are fully customizable to your liking. Custom keybindings are stored internally in micro if changed with the `> bind` command or you can also be added in the file `~/.config/micro/bindings.json` as -discussed below. For a list of the default keybindings in the json format used +discussed below. For a list of the default keybindings in the json format used by micro, please see the end of this file. For a more user-friendly list with explanations of what the default hotkeys are and what they do, please see `> help defaultkeys` (a json formatted list of default keys is included @@ -20,7 +20,6 @@ cursor the start and end of the buffer. You can hold shift with all of these movement actions to select while moving. - ## Rebinding keys The bindings may be rebound using the `~/.config/micro/bindings.json` file. Each @@ -120,12 +119,10 @@ You can do this in linux using the loadkeys program. Coming soon! - ## Unbinding keys It is also possible to disable any of the default key bindings by use of the -`UnbindKey` action in the user's `bindings.json` file. - +`None` action in the user's `bindings.json` file. ## Bindable actions and bindable keys @@ -222,7 +219,7 @@ SpawnMultiCursorSelect RemoveMultiCursor RemoveAllMultiCursors SkipMultiCursor -UnbindKey +None JumpToMatchingBrace ``` @@ -486,3 +483,9 @@ Additionally, alt keys can be bound by using `Alt-key`. For example `Alt-a` or `Ctrl` so `Alt-a` could be rewritten as `Alta` (case matters for alt bindings). This is why in the default keybindings you can see `AltShiftLeft` instead of `Alt-ShiftLeft` (they are equivalent). + +Please note that terminal emulators are strange applications and micro only receives +key events that the terminal decides to send. Some terminal emulators may not +send certain events even if this document says micro can receive the event. To see +exactly what micro receives from the terminal when you press a key, run the `> raw` +command. diff --git a/runtime/help/options.md b/runtime/help/options.md index 4c7840e9..6afe0081 100644 --- a/runtime/help/options.md +++ b/runtime/help/options.md @@ -246,31 +246,14 @@ Here are the options that you can set: --- -Default plugin options: - -* `autoclose`: automatically close `{}` `()` `[]` `""` `''`. Provided by the - `autoclose` plugin - - default value: `true` - -* `ftoptions`: by default, micro will set some options based on the filetype. At - the moment, micro will use tabs for makefiles and spaces for python and yaml - files regardless of your settings. If you would like to disable this behavior - turn this option off. - - default value: `true` - -* `linter`: Automatically lint when the file is saved. Provided by the `linter` - plugin. - - default value: `true` +Plugin options: all plugins come with a special option to enable or disable them. THe option +is a boolean with the same name as the plugin itself. Any option you set in the editor will be saved to the file ~/.config/micro/settings.json so, in effect, your configuration file will be created for you. If you'd like to take your configuration with you to another machine, simply copy the settings.json to the other machine. - ## Global and local settings You can set these settings either globally or locally. Locally means that the diff --git a/runtime/help/tutorial.md b/runtime/help/tutorial.md index 8bddbe5e..707a3c54 100644 --- a/runtime/help/tutorial.md +++ b/runtime/help/tutorial.md @@ -8,17 +8,6 @@ Hopefully you'll find this useful. See `> help defaultkeys` for a list an explanation of the default keybindings. -### Plugins - -Micro has a plugin manager which can automatically download plugins for you. To -see the 'official' plugins, go to github.com/micro-editor/plugin-channel. - -For example, if you'd like to install the snippets plugin (listed in that repo), -just press `CtrlE` to execute a command, and type `plugin install snippets`. - -For more information about the plugin manager, see the end of the `plugins` help -topic. - ### Settings In micro, your settings are stored in `~/.config/micro/settings.json`, a file From e79869978baab205fc9f7a5d6e4e30fb8d0f50a0 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 2 Sep 2019 16:38:14 -0400 Subject: [PATCH 164/231] Use plugin name defined in info and require it to be an identifier --- internal/config/rtfiles.go | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/internal/config/rtfiles.go b/internal/config/rtfiles.go index fdc33889..2251d661 100644 --- a/internal/config/rtfiles.go +++ b/internal/config/rtfiles.go @@ -2,9 +2,11 @@ package config import ( "io/ioutil" + "log" "os" "path" "path/filepath" + "regexp" "strings" ) @@ -143,8 +145,11 @@ func InitRuntimeFiles() { } // Search ConfigDir for plugin-scripts - plugdir := filepath.Join(ConfigDir, "plugins") + plugdir := filepath.Join(ConfigDir, "plug") files, _ := ioutil.ReadDir(plugdir) + + isID := regexp.MustCompile(`^[_A-Za-z0-9]+$`).MatchString + for _, d := range files { if d.IsDir() { srcs, _ := ioutil.ReadDir(filepath.Join(plugdir, d.Name())) @@ -159,8 +164,14 @@ func InitRuntimeFiles() { continue } p.Info, _ = NewPluginInfo(data) + p.Name = p.Info.Name } } + + if !isID(p.Name) { + log.Println("Invalid plugin name", p.Name) + continue + } Plugins = append(Plugins, p) } } @@ -181,8 +192,13 @@ func InitRuntimeFiles() { continue } p.Info, _ = NewPluginInfo(data) + p.Name = p.Info.Name } } + if !isID(p.Name) { + log.Println("Invalid plugin name", p.Name) + continue + } Plugins = append(Plugins, p) } } @@ -211,7 +227,7 @@ func PluginListRuntimeFiles(fileType RTFiletype) []string { // PluginAddRuntimeFile adds a file to the runtime files for a plugin func PluginAddRuntimeFile(plugin string, filetype RTFiletype, filePath string) { - fullpath := filepath.Join(ConfigDir, "plugins", plugin, filePath) + fullpath := filepath.Join(ConfigDir, "plug", plugin, filePath) if _, err := os.Stat(fullpath); err == nil { AddRuntimeFile(filetype, realFile(fullpath)) } else { @@ -222,7 +238,7 @@ func PluginAddRuntimeFile(plugin string, filetype RTFiletype, filePath string) { // PluginAddRuntimeFilesFromDirectory adds files from a directory to the runtime files for a plugin func PluginAddRuntimeFilesFromDirectory(plugin string, filetype RTFiletype, directory, pattern string) { - fullpath := filepath.Join(ConfigDir, "plugins", plugin, directory) + fullpath := filepath.Join(ConfigDir, "plug", plugin, directory) if _, err := os.Stat(fullpath); err == nil { AddRuntimeFilesFromDirectory(filetype, fullpath, pattern) } else { From aa66435353bb19e7a8351172a102d19ba9258c2c Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 26 Sep 2019 17:41:33 -0400 Subject: [PATCH 165/231] Better plugin docs --- internal/config/runtime.go | 14 +- runtime/help/plugins.md | 316 ++++++++++++++++--------------------- 2 files changed, 143 insertions(+), 187 deletions(-) diff --git a/internal/config/runtime.go b/internal/config/runtime.go index 8877b534..1f1564c4 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -904,7 +904,7 @@ func runtimeColorschemesZenburnMicro() (*asset, error) { return a, nil } -var _runtimeHelpColorsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x5a\x6d\x73\xdc\x36\x92\xfe\x8e\x5f\xd1\x91\x73\xa5\x91\x6b\x86\xb2\x77\xef\x72\x7b\xba\xdc\xa6\xb4\xde\xbc\xb8\x2a\x8e\xab\x62\xa5\x2a\x5b\x96\xeb\x08\x92\x4d\x12\x3b\x20\xc0\x03\x40\x8d\x26\x19\xdf\x6f\xbf\xea\x06\xf8\x26\xc9\xc9\xde\x7e\xb2\x86\x00\x1b\xfd\xfa\xf4\xd3\xa0\x9f\xc1\x2b\xab\xad\xf3\x42\xdc\xb4\xca\x43\x8b\xba\x87\x5e\x36\x08\x52\x75\x1e\x82\x85\xd2\xde\xa1\x83\x70\xb0\x20\x7d\x8f\x65\xf0\x60\x6b\xe8\x54\xe9\xec\xb9\x07\x7f\x34\x41\xde\x43\xab\x9a\x56\xab\xa6\x0d\xca\x34\x80\xa6\x51\x06\xaf\x84\xd8\xc1\x77\xf6\xc0\x22\x1c\xca\x80\x50\xf2\x41\x65\x8b\x1d\x7a\x90\xa6\x82\xc1\x23\x84\x16\xbb\x47\x3b\x93\xd8\x5a\x69\x64\x1d\x64\x55\xd1\x3f\xa1\x45\xd0\xca\x07\xd2\x40\x4b\xd3\x0c\xb2\x41\x1f\x75\x81\x52\x9a\x59\x0d\x21\xc4\xb3\xd1\xb0\x78\x9e\x10\x37\x16\xca\x56\x9a\x06\xe1\x68\x07\xb7\x54\x66\x0b\xbd\x43\xef\xe1\x55\x70\x7a\xf7\x35\x28\x93\x44\x06\x0b\x85\x23\x8b\x86\x9e\x8f\x2e\x6d\xd7\x49\x53\x89\xde\xd9\xae\x0f\x5b\x36\x21\x1c\x7b\xbc\x12\x79\x9e\x0b\x8f\x61\x29\x14\xbc\xd5\xd2\xa9\x5f\xb0\xe2\xd5\x8d\x75\x70\x68\x55\xd9\x22\x79\x73\xb9\xef\x68\x07\x28\x5b\x6b\x3d\x5e\x64\x42\xbc\x89\xc6\x58\x72\xd1\x41\x85\x16\x24\x98\xa1\x2b\xd0\x91\xcd\x2b\x07\x16\x47\xa8\xb0\x96\x83\x0e\x19\x7c\x87\x0e\x41\xf9\xc9\x41\x57\x64\xff\x33\xf8\xc3\xbf\x7d\x11\xdf\xa1\xe0\xa2\x47\xf0\xad\x1d\x74\x05\x07\xeb\xf6\xac\xbd\xb6\x76\x0f\x46\x95\xc8\x46\x5b\x1f\x20\xa0\xeb\x94\x91\xda\x67\xf0\x1a\x1c\x92\xc9\x48\x66\xd2\xeb\x22\xc4\x93\xe9\x14\xda\x9c\x09\xf1\x1c\xf2\xce\x1a\xbb\x97\x2a\xbf\x82\x40\x09\xa4\xc6\x75\x7e\xba\x54\xf9\x3f\xd9\xd4\x4e\x1e\x59\x6e\x63\xd4\x2f\x08\x2a\x80\xf4\xf0\x6e\x28\xb4\xea\x50\x00\xdc\xe0\x7d\x38\xf7\xa3\x61\xcb\xb7\x33\x78\x1d\xc0\xe1\xff\x0c\xca\x91\x0a\x6e\x48\xf9\x44\x51\x62\x33\x7a\x74\x35\x96\x61\x0b\xc5\x10\x48\x05\x01\xb3\xfd\x20\xfb\xde\xd9\x7b\xd5\xc9\xa0\xac\xe1\xfd\x1e\xee\xd0\x1d\xa1\xb1\xb6\x22\x15\x0e\xa8\x35\x1d\x71\xee\x41\x6a\x1f\x53\x2d\x69\x21\x60\xa5\x07\xd9\xfc\x0b\x9a\x62\x70\x26\xa7\xbf\x1b\x37\xdc\x15\xf6\x9e\xff\xae\xa4\x2b\x07\x2d\xf9\xef\x70\x50\x9c\x8b\xfc\xc3\x49\xa5\x7d\x29\x7d\xfc\x55\x0c\x45\xa1\xb1\x19\xba\xfc\x0a\x24\xf0\xae\xe5\x11\x31\x78\x2f\x1f\xc4\x8e\x1c\x77\x27\xdd\x11\x0e\xaa\x42\x7d\x84\x42\x7a\xac\xc0\x1a\x56\x75\xdc\xec\xc1\xa3\xc6\x32\x60\x05\xb5\x75\x31\xd3\xc7\x90\xc6\x70\x79\xd5\xf5\x1a\x1f\x44\x2b\x3e\xf4\x8f\x1d\x3e\x78\xf4\x0b\xe1\x9c\xc1\x20\x1d\x02\x65\x7b\x71\x14\xb0\x3e\x82\x0f\x18\xf3\x3e\xbf\x82\xbf\xd9\x61\xcc\xb9\x56\xde\x61\x3c\x6b\x5c\x4f\xa1\xe9\xa5\xc6\x10\x38\x03\x57\xb2\x28\xb0\x11\x20\x94\x5f\x15\x4c\xef\x6c\x8f\x4e\x1f\x39\x12\x65\x57\xee\x5e\x7e\x91\x8f\x7f\xf6\xb2\x47\x97\x5f\x41\x7c\x1c\x73\xc1\x1a\x90\xa4\x79\x40\x28\x64\xb9\x6f\x9c\x1d\x4c\x95\xc1\xe6\xba\x0c\x83\xd4\xfa\x98\x02\xd0\x38\x24\x7b\x6c\x2a\x84\xeb\x1f\xde\xbd\x86\xcd\xcb\x2f\x76\x7c\xf4\xc5\x5c\x18\x17\x1c\x74\x94\xe6\x98\x5f\x2d\x21\x66\x0e\x08\x2f\x2e\xb2\x78\x89\x8e\x59\x0c\xee\xcd\x94\xbf\x63\x78\x53\x6a\xcf\xe7\x40\x68\x65\x00\x3f\xf4\xbd\x75\x61\x99\xf0\x54\xb8\xe3\xee\xfc\xcd\xeb\x57\x3f\xbe\xfd\xef\x9b\x1f\x7f\xfa\xfa\xd5\xdb\xef\xdf\xfe\xf8\x5f\x2f\x73\xd8\x8c\x91\x95\x06\xd0\xdc\x29\x67\x4d\x87\x26\x50\xf2\x28\x59\x68\x86\x99\x65\x9c\x76\xa1\x7c\x98\x0e\xeb\x10\x25\xfb\x28\xa1\x66\x35\xd8\xfb\x32\xd8\x6e\x57\x49\xb7\x5f\xc8\x58\xbe\xa2\xfc\xe8\x95\xba\x26\x00\xbb\x0e\xb6\x3b\xf7\x70\x46\xaf\x9c\x3d\xaa\x2a\x0a\x1a\xcb\xb9\x9e\xcf\x19\x5c\xd4\xdb\x30\xe8\x33\x0a\x77\x25\x37\x0d\xcc\xe0\xd3\x90\x20\x20\x82\x82\x0a\x1e\x0a\xf4\x21\x83\x9f\x3c\xa6\xac\x00\x55\x3f\xc8\xb4\xca\xa2\x37\xe7\x4f\x39\x3b\x5b\x54\x78\xd4\xed\xa6\xc5\xe5\x51\x77\xe8\x3c\x41\x4a\x52\x2e\x6d\x5d\x55\x33\x49\x50\xa1\x1d\x8a\x7f\x44\xc0\xb7\xbc\xf3\x31\x1a\xbc\xb1\xc6\x96\xad\xb3\xf4\x9b\xaa\x8a\xda\x1d\x03\x15\x95\x08\x63\x70\x5c\xcd\x93\x75\xe7\x15\x35\xb5\x1a\x19\x1f\xb9\xf6\xfe\x3e\x78\xc6\xc5\xc9\xec\x39\x43\x45\x6d\x1d\xc6\xba\xe0\xec\x9a\xcb\x24\x29\x92\xc1\x0f\x36\x20\xe9\xae\x3c\xd5\xdf\x9d\xaa\xd0\x83\xb1\x4f\xf5\xff\xcf\xa2\xc2\x6f\x43\x8b\x4e\x88\x77\x88\x90\x33\xa9\x68\x54\xd7\xa9\x72\x1f\x05\xe6\x9c\x4d\x72\xea\xe6\xde\x76\xb8\x0a\xfa\xd4\x6a\x64\x60\xbc\xe9\xac\x43\x10\x6c\x03\xbd\x59\x0f\x84\x7b\xd2\xf0\x0f\x8f\x4e\xd9\xc1\x93\x2b\x32\xd8\xdc\xb4\x76\x68\x5a\xa8\x11\x35\xd4\x0e\x31\x39\x04\x0e\xd2\x84\xcf\x2e\x12\x33\x20\x9a\x41\x9d\x5d\x2e\x2b\x38\x75\xdf\x73\xff\x80\xa9\x38\x8c\xae\xc6\xfb\xe0\xb0\x23\xec\x8d\x78\x39\x13\x96\x8c\xa3\x3a\xd6\xbb\x35\xe8\x29\x40\xa2\xa0\xa2\x19\x4c\x25\xde\xb7\xe8\xf0\xc3\xa6\x0d\xa1\xf7\x57\x97\x97\x31\x1d\xb2\xd2\x76\x97\xbf\x1c\xb1\x52\x95\x92\x97\x4c\x39\x2e\x83\x43\xbc\xec\xa4\x0f\xe8\x2e\xdd\x60\x82\xea\xf0\x72\xa9\x0c\xd5\xee\x4d\x8b\x47\x56\xca\x1a\x7d\x04\x59\xd8\x21\xc0\xcb\x3f\xed\xfe\xf8\x02\xb4\xa2\x93\x95\x81\x60\x03\xe3\xfd\x5f\xa4\x57\x25\x63\xdc\xcc\xad\x22\x93\x59\xf3\x0f\x83\xc8\x04\x4b\x2b\xb3\x9f\x83\x09\x94\x03\x7d\xe4\x21\x42\x32\x5a\x4e\xf9\x70\x93\xe0\xa2\xb2\x06\x61\xf0\xe4\x4b\x12\x9c\xf3\xfa\x8e\xe4\xe4\x23\x5f\xca\x84\xf8\xc6\x3a\xc0\x7b\x49\x4e\xdb\x72\x42\x4e\x47\x48\xad\x21\x92\x8c\xc0\x9a\x37\x0e\xd1\x6c\x63\xc0\xb8\x6f\x24\x8e\x38\x0a\xbb\x12\x4c\xa7\xe6\x63\xc6\xb7\xe1\x8c\x5f\x3d\xe3\x65\xf1\x97\x87\x19\x3c\x17\x4c\x81\x40\x3c\x56\xd5\x0a\xab\x91\x62\xb1\xf0\xdf\x13\xbd\x2d\xf4\x80\x49\x3e\x9b\x7f\x50\x5a\x43\xa3\xee\x66\x05\xd9\x0a\x09\xb4\x71\xd9\x6b\x84\x78\x5d\x2f\x4c\xd2\x6a\x8f\x54\x3c\x8b\xaa\x3b\xa6\x92\xe6\x04\x27\x93\x93\x4e\x51\x41\x63\x43\x4b\x1e\x56\x06\x6a\x67\x4d\xf8\x0d\x4d\x97\x4a\xae\x70\xa2\x1f\x02\x14\x56\x57\x5b\xb0\x0e\x06\x53\xa1\xa3\x6c\x99\x44\x4e\xe8\x4a\x32\x7f\x43\x3e\x89\x00\x87\x55\x3a\x62\xb7\xdb\x71\x42\x52\x89\x50\xf3\x6a\xa9\xe0\x2a\x55\xd7\xe8\x68\xfb\x41\x1e\x99\xbf\x47\x87\x1f\xe7\x13\x32\x21\x5e\x45\xa8\x9e\xda\xdd\xe0\x63\x37\x66\xb0\x9a\x29\xc7\x84\x00\xc4\xd1\x99\x74\xb0\x94\xc1\xa3\x4b\x59\xd8\xa1\x34\x5e\xf0\xbe\xe4\x46\x63\x03\x54\xd8\x13\x71\x65\x7e\x64\xfd\x98\xf2\x20\x35\xeb\x54\xe0\x98\xb1\x5e\x52\x27\x19\x5d\x15\xb3\xcd\x7a\x14\x23\xe3\x21\xff\xd3\x3e\x23\x09\x0b\xf2\x42\xcb\x72\xbf\x25\x0f\x6c\xa7\x5c\x45\xad\xed\x61\xcb\x51\xdf\x42\x27\x1b\x34\x41\x6e\xa1\x3c\x4a\xb3\x8d\xbc\x23\x17\x32\x72\x68\x9a\x27\x28\xeb\x53\x4b\xe3\x51\x0a\x65\xd9\x12\x64\xc0\x26\x2e\xa6\x13\xe2\x0f\x87\x55\x96\x65\xa9\xea\xcd\x94\x26\x63\x51\xcc\xde\x9b\xa8\x2e\x0f\x06\x53\x41\x2a\x97\xc6\x07\x0f\x2f\x77\xb4\x67\x93\x7e\x8a\x97\xd4\x09\x39\x83\xa7\x36\x31\x9a\x39\xd6\xcc\x45\x4c\xdc\xd1\xdd\xe7\x7e\xee\x98\xa9\x53\x2e\xbb\xee\x96\x36\xce\x2a\x72\xd2\x8d\x71\x8f\xf2\x04\xde\xcb\x32\xe8\xb5\x7a\x2d\x52\xb7\xac\x90\x06\x8e\x7a\x65\x14\xc1\x0b\x45\x72\xd1\x2c\x89\xce\xc5\xd9\x4c\x79\x11\x28\x15\x13\x49\x94\xcb\x5d\x2b\x06\x12\xa2\x91\x32\x04\xec\xfa\x40\xfb\x3b\xd9\x2f\x40\x70\x34\x5c\xc8\x3b\xa9\x34\xf1\xa3\x85\x2f\x33\x21\xbe\x45\x83\x8e\x13\x73\xd5\x14\x22\x13\x9e\x48\xdb\x82\x7b\xcc\xfc\x2d\x0d\x26\x71\xc4\x70\x28\x3a\xe9\xf6\x33\xe6\xe4\x44\x07\xc0\x0f\x75\xad\xee\xb9\xeb\x3e\x21\x9f\xdc\x4c\x18\xff\x88\xbe\x3e\x29\x2f\x92\xdf\x24\x32\x4b\xc5\x39\x8e\x86\x73\xaf\x7d\xd8\x00\x12\xca\x2f\x0b\x88\x7c\x7a\x45\x2c\x71\x6c\x69\x9b\x68\x5c\x7a\x7b\xa9\x87\xa9\x96\x38\x56\x33\xb8\x4c\xf0\x4e\x5d\x05\xef\x03\x51\xe6\x84\x20\xe2\x39\xa8\x0a\x4d\x20\xf8\x75\xfc\xd8\xf8\x20\xf9\xb9\x0f\x32\x60\xda\xe3\x8f\x5d\x61\x69\x9c\xe8\x1d\xf6\xce\x96\xe2\x39\x4f\xda\xb4\x42\x29\xc5\x93\xc6\x04\x62\x95\x78\x0e\xe8\x9c\x25\x79\xc1\x56\x36\xc9\x1a\x3c\x23\xdc\xe6\xd5\x52\xf5\x79\x81\x94\x0a\xb2\x28\xa4\x7b\xb0\x25\x3d\x64\x7f\x90\xcf\x3c\xd8\x1e\x4d\xbc\x8c\xa0\x97\x94\x21\x03\x76\x65\xfb\xe8\x4d\x7a\x24\xcb\x80\x69\xd4\xa7\x9d\xaa\x94\x81\x78\x8c\x2c\x3c\x11\x11\xda\x65\x7b\x1e\x42\x95\x17\x00\x68\x28\xe3\x2a\x12\x4b\x3a\xed\x62\x75\x8a\xe7\xd0\x0c\x21\xa0\xdb\x8d\x66\xa5\x9f\x07\xe9\x8c\x32\x0d\xf9\x6d\x70\x3e\x82\x33\xc6\x5f\x84\xb7\xbb\xb5\x8c\x88\xdf\xa5\xd5\x43\x67\x48\xef\xc6\x58\x47\xbb\x2b\x45\xfc\xed\xa1\xf2\xe3\xd3\x02\xc3\x01\xd1\x10\x31\x0d\x44\x1e\xc0\xf7\x5a\x05\x7f\x91\x10\x7b\x4c\xd0\x8e\x3a\x55\x81\xd0\x6b\x59\x62\xc5\xa4\x83\xfa\xff\xff\x5e\x66\xa5\x35\xb5\x6a\x12\xa1\x59\x26\x75\x0e\x95\x72\x58\x06\xeb\x88\x8f\x10\x3b\x1a\x3c\x56\x63\xa2\xbe\x36\x20\xab\x4a\xb1\x6f\x52\x4d\x76\x52\x99\x27\x52\x95\x91\x26\x75\x1c\x3f\x14\x4f\xe4\xaf\x18\x81\xa7\x38\xb2\x50\xd3\x40\x9e\x8d\x5b\xf3\x51\x3c\xff\x62\xd8\x21\xc2\xec\x30\x32\x24\xda\xcc\xe3\x81\x3d\x18\x28\x07\x1f\x6c\x27\x96\xf7\x51\xdb\xa9\x48\x3a\xb9\x67\x13\xc8\x83\xd3\x1b\x93\x42\x11\x3c\xa7\xcb\xa9\xf3\x00\x9d\x0c\x65\x6c\x26\xe3\xa6\x2d\xa8\x70\xae\xf5\x54\x66\x49\x31\x67\x6d\x22\x5f\x5b\xf0\x16\x68\x93\x17\x5e\xd6\x98\x66\xbf\x74\x2b\x83\x13\xfc\xcd\x5e\x18\xa7\xe8\xa8\xf8\xea\x22\x6d\xcd\xc3\x28\x1b\xf3\xb1\xfa\x32\x1f\x9c\x32\x4d\x4e\x40\xc1\x8c\x75\x96\xb3\xbc\x26\x8b\xc6\x30\x9e\x0e\xa9\xe3\x52\xc1\xaf\x6e\xff\xa2\xa4\x88\xe6\xa4\x37\x43\x38\xcb\xdc\x4e\x60\x3c\x70\x3f\x8e\x47\x83\x32\x3e\xa0\xac\xb2\x74\xf5\x15\x9c\x8a\x77\x7e\xb3\xb7\xb4\x74\x0d\xfa\xc0\x77\x0e\xb6\x1e\xf1\x4a\x05\x0e\x42\xad\xcc\x94\x7d\xcb\xa9\xa9\xc2\x5a\x19\xce\x26\xcf\x4e\x54\xf5\x96\x95\x25\xf3\x35\x2e\x4c\x2f\xac\xd5\x19\x01\xf8\xc2\x7a\xee\x64\x2b\x6b\x91\xcd\x65\xab\x3e\xf5\xea\x64\x28\xb7\xa9\xf5\xae\x85\x6c\x16\x2b\x26\x3f\x3c\xd8\xc7\x27\x18\x1b\xd8\x59\x7c\xfb\x32\x6d\xc8\x33\x88\x70\x7e\xbe\x44\xf3\x39\xf4\x54\x4c\xd3\xe5\xe5\xb9\x87\x62\x50\x3a\xec\x94\x79\x98\x04\x13\x16\x67\x89\x8d\x6c\xde\xd1\xf4\x45\xcb\x84\xb1\x3e\x32\xb0\x4a\xf9\xa0\x4c\xc9\x0e\x9c\x30\x21\xae\xf3\x4d\x64\x24\xbb\x17\x0b\x08\x67\x03\x1e\xfe\x66\xf7\x3c\x7a\x58\x4b\xed\x57\x4f\xd3\x1d\xe7\xf2\x51\x02\xfa\x57\xad\x74\xab\xc7\x9c\x5f\x8f\x9f\x64\x83\xd3\xb0\xea\x2e\x59\xa9\xa5\xf7\xb0\xb9\x4e\x63\x72\x35\x4e\x8e\xd1\xa8\x8b\xf5\xe6\x4e\x52\x58\x56\x8f\xee\xf8\xe4\xd4\x81\x32\xdf\x62\x21\x4d\x43\x03\x26\xc2\xb3\xcf\x40\xc6\x69\xba\xc0\x46\x19\x02\x65\x72\x8b\x64\x2f\x46\x28\x0a\xa8\x75\xbc\x4e\xb1\xd4\xce\x65\x10\x00\xbe\x74\xaa\xa7\x94\x0f\xe8\x7a\x87\x21\xf2\xae\xc1\x73\x33\x8a\x3d\x2f\x2b\x9c\x2c\xf7\x18\x3c\x6c\xf2\x5f\x3f\x6e\x2e\xde\x7f\xc8\xb9\xea\x69\x42\xa6\x71\xd0\x43\xfe\xe5\x9f\xf3\xc5\x7e\xdb\xa3\x93\xc1\xce\x70\x3e\xfe\x8e\xeb\x7e\xa6\xe3\xfa\xb8\x78\x2d\xc8\x06\x36\x84\x07\x6d\xe8\x34\x04\xd9\xf8\x2d\xc8\xce\x92\x1d\x84\xae\xc0\x13\x07\x3b\x89\x82\x9e\xed\xf1\x78\xb0\xae\x82\xcd\xeb\x79\x9a\x06\x39\x76\xe3\xc5\x40\x47\x3e\x4e\x9b\x7d\x9c\x74\xf2\xde\xa9\x3b\x19\x30\xbf\x60\x90\x27\x8f\xd4\x43\x18\x1c\x6e\xa1\xd7\x43\xa3\x8c\xe7\xbb\xcd\x71\x38\x63\x0a\x96\x70\x2d\xb2\x8e\x94\xdf\x3c\xea\x87\xa3\x8e\xb7\x68\x34\xc6\xbf\x5b\x24\x36\x33\xe4\xf5\x87\x03\x1a\xd1\x9c\x0a\x01\x0d\xc3\x99\xec\xf4\xae\xb6\xae\xa3\x79\x82\x1c\x9a\x5a\x44\x1b\xbf\x3c\xcc\xdf\x0e\xa6\x2f\x0b\xd9\x7c\x21\xc0\xb5\x34\x97\xd2\x0a\xf1\x22\x62\xf1\x6d\x72\x2b\x1d\x63\x32\xcd\x98\xd2\xe0\x16\x3c\x1a\xaf\xc8\xa0\xf4\xdd\x80\x5a\x2c\x44\xfc\xe5\xef\x2a\xb2\xc1\xb1\xff\xd2\x18\xa3\x4c\x53\x0f\x1a\x50\x63\x1c\x25\x39\xa5\x46\x7d\x32\x88\x08\xd9\x4a\xbf\x6a\x48\x51\x39\x9e\xe4\x28\xfc\x77\xe8\xe0\xe5\x8b\x17\x8b\x0f\x24\xc6\x1e\x3e\x83\xef\xec\x01\xef\xd0\x8d\xbd\x93\x3c\x5e\x20\x08\xaf\xc2\x20\x63\x91\x1f\x78\x81\x82\xcb\x98\x3a\x9a\xbe\xb6\x95\x6d\x53\x86\x39\x66\xa9\x68\xc6\xb3\x2e\xb2\x74\xcb\x0d\x43\x68\xb5\xa7\x00\xf1\x85\x08\x33\x5f\x83\x87\x74\xb1\xb8\xe0\x97\xe9\x2e\x62\xee\x9a\xab\x06\x4b\xe1\x61\x5e\x11\xbf\x0e\x29\x03\x8f\x89\x45\x7c\x23\xd6\xc6\x9b\x15\x52\xa7\x81\x6f\xea\x2b\x7c\x1d\xf5\x4d\x42\x37\x98\xfb\x42\x1c\x90\x99\xc7\xf8\x20\x5d\x2c\xe7\x85\x22\xf1\x0b\x4b\xa9\xa5\x1b\x67\xc5\x11\x22\xd3\x7c\x3c\xfd\x84\xc6\xc6\x71\xf8\x19\x1d\xf5\x57\x0c\x58\x86\xd5\x41\xd3\xf0\xc6\xa7\x8d\x79\xa0\x4c\x4c\x47\x62\x3c\xf1\x1a\x27\xe5\x62\x15\x25\x3c\x71\x64\x5c\xb9\x12\x00\xc0\x4b\x34\xae\x5d\xc1\xd9\xed\x6d\xd6\xd8\xcf\xd3\x4c\xbe\xf0\xc6\xd8\x43\x95\x07\x87\x0d\xde\x83\x6c\x24\xf9\x05\x24\xdf\x5b\x98\x49\xc6\x27\x4e\xe5\xc1\x58\x4c\xd5\x39\x25\xb0\x49\x24\x56\x6a\xc8\x5b\x94\x15\x8d\x1d\xf1\x00\x8e\x32\x9f\x5d\xb6\x58\xee\x93\x34\xe7\x03\xf3\x5b\xb0\xb5\x18\xe5\x67\xb0\x60\x23\xbf\x6b\xde\x51\x7e\xd5\xe9\xcf\xcf\x78\x25\x9e\x78\x05\x67\xff\xf2\xb7\xeb\x37\xdf\x9f\x2d\x5c\x9f\x00\xc1\x0d\x0c\x08\x3f\xe0\x7d\x78\xec\xf5\x45\x94\x57\xa9\xcd\x2f\x71\xde\x8e\x97\x19\x07\x3b\x35\x3c\xc1\xab\x57\xd0\xd3\x1c\xe9\x8c\x4f\x44\xac\xa1\xc2\xc9\xe0\x7a\x7c\x4e\x79\xce\x3e\x8f\x1f\x02\x24\xd0\xa0\xab\x31\xda\x1e\xbf\x78\xc6\x4b\x0e\x29\xd2\x0a\x83\xea\xf4\xfd\xe9\x3a\xc9\x9c\x35\x5b\xf4\xde\x83\x9d\x8f\xe7\x2a\xef\x06\x1d\x54\xaf\x51\xc4\x7b\x3f\x92\x4f\xa1\xe2\xf6\xcd\xfa\x12\x7e\x28\x82\x91\x03\x21\xa0\x1f\xad\x8f\x67\x64\x69\x36\x64\x16\x4d\x04\x60\x24\x86\xd3\x21\xca\xc0\xb7\x36\x45\x26\xda\xcf\xee\xdf\x8d\xa8\xcf\x91\x29\x36\x85\x43\xb9\x3f\x95\xd2\xe3\xa9\xb4\x26\x28\x33\xe0\x29\x11\xda\x53\x63\x4f\x8d\x0d\xf6\xe4\xa4\x69\xf0\xe4\x30\x0c\xce\x5c\xdc\xde\x16\x67\xa3\xa4\x71\xe6\x4b\xb2\x50\x7b\x3c\xd5\xd6\x9d\x54\x7d\xf2\x07\x15\xca\x76\xb9\x3b\xb5\xe2\xb4\xb7\x97\xe5\x5e\x36\x78\x52\x5d\x6f\x5d\x38\x31\x1f\x38\xdd\x49\x77\xa2\xa0\x9d\x7c\x70\x43\x19\x4e\xd4\xee\x49\x8b\x0a\x6b\x74\x27\x65\x83\x8c\x02\xd3\x2d\x1e\x82\x75\x55\xfc\xb8\x3a\x99\x5d\x59\xe4\x28\x52\x77\x96\x7e\x7e\xae\xed\x01\xdd\x48\x35\x19\x20\x38\xcf\x29\x14\xd4\x66\xf8\xf3\x68\xbc\xfb\xe5\xd2\xc7\x8a\x8a\x3a\x5e\x0e\x76\x99\x10\xd7\xa6\x82\xf6\x49\x87\xa7\x3c\x62\xf8\x9e\x1c\xbe\x7b\x48\x70\xa2\xf3\x19\xa9\xc8\x01\x67\xd1\x29\x68\xaa\xc5\xaf\x45\x94\xa2\xc7\x9e\x62\x53\x54\x38\xd9\xd9\xef\x6f\xba\xbd\xbd\xbd\x7d\x2f\x8b\xda\xb8\x70\x77\x7e\x7b\x7b\xcb\x0f\x3e\xfc\x83\x2f\x6e\xde\xbf\xd8\xfd\xfb\x87\x5f\xff\xf8\xf1\x74\xff\xfe\x7a\xf7\x8d\xdc\xd5\x2f\x76\xff\xf1\xe1\xd7\x3f\x7c\x3c\x0d\xcb\xdf\xff\xfa\xf1\xf4\xd3\xf2\xf7\x9f\x3e\x5e\x9c\x09\xb6\x9d\xf9\xe5\xda\xe6\xcb\xcb\xa5\xcd\x9f\x7f\xc2\xe4\x60\x2b\x7b\x05\x67\x9b\x9b\xb7\x7f\x7d\x7b\xfa\xf9\xe7\x9f\x4f\xdf\xbc\xfe\xf9\xcd\xd7\x17\x57\x5f\xfd\x86\xe0\xdb\xdb\xe7\x2b\x77\xde\x3e\xbf\xfc\xff\x4b\xe7\x94\xfa\xc1\x06\x55\x62\x04\xf2\x76\x0e\x2d\xd5\x25\x15\x07\x0d\xb4\xb1\x34\x53\x3d\xc6\xe6\xdf\x65\x70\x6d\x8e\xa0\x8c\x41\x97\xd6\x09\x48\x05\x7f\xf9\x48\x78\x12\xef\x57\xd1\x80\xdf\xab\xbe\xc7\x8a\xfa\xb5\x01\x8f\xd2\x95\x7c\x39\xcc\x9f\xe7\x5a\x04\xbe\xf5\xac\x97\x85\x4e\x40\x2b\xa6\xeb\x77\x7e\x6d\x85\x7c\xf9\x59\x6d\x2d\xdc\x9e\x41\x21\xdd\x59\xbe\x25\xd0\x2a\x11\xf2\xdb\xb3\x7c\x89\x67\x34\x4a\x9b\xa8\x22\xa3\xc1\x58\x09\xf1\x10\x9e\x57\x94\x1f\x95\xcb\xe0\x7b\xb5\xc7\x83\xf2\xf1\xb3\x61\x3a\x21\x1e\xb1\x38\xe1\x96\x4e\x10\x4f\x9c\xc0\x4e\x78\x20\x33\xfd\x87\x0b\x52\x9f\xaf\x1a\xce\x16\x43\x55\x5a\x11\xb1\x54\xc8\x07\x7e\x24\xe8\xa5\x75\x8e\xfa\x1a\x13\x8a\x2c\x35\xfd\xb1\xa3\xe1\x7d\xaf\x55\xa9\x82\x3e\x42\x27\xdd\x9e\x8f\x8a\x9d\x0c\xfd\xf8\xe1\xa8\xb2\x34\xbc\x33\xe1\xa5\x50\x45\x0e\x24\x16\x77\x5c\x4f\x75\xb2\x7f\xaa\x7c\xe9\xf4\xd8\xee\x96\xd9\x07\xef\x3f\x2c\x5a\xdc\x6b\x53\xea\xa1\xa2\xf6\xb6\x32\x44\xc5\xc7\x29\x79\x6a\x67\xbb\xc4\xe3\x57\x4c\x51\x7a\xc0\xae\xc0\xaa\xc2\x6a\xe6\x87\x0f\xf2\x83\xd1\xcd\x6a\x6d\x0f\xfc\xc9\xc1\x43\x6f\x7d\xe4\xb0\x75\x9a\x16\x26\x13\x13\xca\xaf\x4d\xfb\x32\x0e\x39\xd9\xf3\xaf\xfe\xbc\xb4\xf1\xcb\xcb\x87\xcf\x1f\xd5\x56\xb2\xe1\x0a\xce\xfe\x2e\xef\x64\xdc\xce\x45\xfb\x89\x73\xc2\x51\xe3\x13\xc7\xac\x1f\xff\xc6\x29\xa5\xf7\xb1\x6a\xff\x2f\x00\x00\xff\xff\xb9\xb4\xb6\xe7\x04\x25\x00\x00" +var _runtimeHelpColorsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x5a\x6d\x93\xdb\x38\x8e\xfe\xce\x5f\x81\x75\xf6\xaa\xdd\x29\x5b\x9d\xde\xbd\xcb\xed\x75\xcd\xed\x54\x4f\x76\x5e\x52\x35\xd9\x54\xcd\x66\xaa\x66\x2b\x9d\x3a\x53\x12\x24\x73\x4d\x91\x3a\x92\xb2\xdb\x33\xce\xfd\xf6\x2b\x80\xa4\x24\x3b\x9d\x99\xbd\xfb\x94\xb6\x48\x81\x00\x08\x3c\x78\x00\xe5\x19\xbc\xb2\xda\x3a\x2f\xc4\xbb\xad\xf2\xb0\x45\xdd\x43\x2f\x5b\x04\xa9\x3a\x0f\xc1\x42\x65\xf7\xe8\x20\x1c\x2c\x48\xdf\x63\x15\x3c\xd8\x06\x3a\x55\x39\x7b\xe5\xc1\x1f\x4d\x90\x8f\xb0\x55\xed\x56\xab\x76\x1b\x94\x69\x01\x4d\xab\x0c\xde\x09\xb1\x86\xef\xec\x81\x45\x38\x94\x01\xa1\xe2\x83\xaa\x2d\x76\xe8\x41\x9a\x1a\x06\x8f\x10\xb6\xd8\x15\x9f\x6c\x4d\x72\x1b\xa5\x91\x95\x90\x75\x4d\xff\x84\x2d\x82\x56\x3e\x90\x0a\x5a\x9a\x76\x90\x2d\xfa\xa8\x0c\x54\xd2\x4c\x7a\x14\x42\x3c\xcb\x96\xc5\x03\x85\x78\x67\xa1\xda\x4a\xd3\x22\x1c\xed\xe0\xe6\xda\xac\xa0\x77\xe8\x3d\xbc\x0a\x4e\xaf\xbf\x06\x65\x92\xc8\x60\xa1\x74\x64\xd2\xd0\xf3\xd1\x95\xed\x3a\x69\x6a\xd1\x3b\xdb\xf5\x61\xc5\x36\x84\x63\x4f\xb6\x6e\x36\x1b\xe1\x31\xcc\xa5\x42\x67\x8d\xdd\x49\xc5\x6b\x62\x69\x1d\x1c\xb6\xaa\xda\x22\xb9\x73\xbe\xed\x68\x07\xa8\xb6\xd6\x7a\xbc\x2e\x84\x78\x13\x8d\xb1\xe4\xa3\x83\x0a\x5b\x90\x60\x86\xae\x44\x47\x36\x9f\x79\xb0\x3c\x42\x8d\x8d\x1c\x74\x28\xe0\x8d\xad\xd1\x19\x08\xe8\x3a\x65\xa4\xf6\x10\x90\x74\xb3\x62\x2b\xf7\xe4\x63\x87\x08\xb5\x6a\x1a\x74\x68\x02\xec\x94\xa9\xfd\x28\x0f\xfc\xd0\xf7\xd6\x85\x02\xde\x6d\x49\x69\x1f\xd8\x50\x6b\x40\x79\xf8\xc3\xbf\xbd\x4c\xbb\x0e\x5b\x74\x28\xc8\x0d\xf9\x14\xe8\x9d\xdd\xab\x1a\xe3\x2e\x1f\xa4\xa9\xa5\xab\xd5\xcf\x58\x27\x45\x61\x89\x8f\x15\xf6\x81\x9d\xd7\x28\xe7\x03\xdc\xbe\x84\x4e\x1e\xa1\x24\x67\x9a\x46\xb5\x83\xc3\x5a\x94\x47\xde\x31\x78\x74\xd7\x05\xdc\x93\xb8\x75\x3c\x34\xb0\x87\x1c\xfe\xf7\xa0\x1c\x05\xcd\x74\x36\xfb\x66\xd2\x2e\xd9\x40\x57\x22\x94\x67\x71\x6c\x09\x3d\x94\xa5\xc6\x42\x88\x7b\xb8\x3d\x17\x3b\x78\x8c\x3b\x6f\x5f\xf2\xd9\xeb\xac\x12\xbd\x30\x9a\x60\x1d\xad\x27\x4f\xe7\xa7\xd6\x08\xab\xeb\xc9\xdf\xd7\xec\x3c\x7f\x19\xe3\x0e\x81\xc4\x99\x80\xc8\xf1\x7b\xb0\x6e\xb7\x82\x72\x08\x70\xb0\xe6\x2a\x80\xb6\x76\x07\x2d\x85\xbc\x18\x8c\xa6\x10\x4c\xea\xa4\x63\x48\xc0\xe4\xa7\x9c\x01\xa4\xeb\x95\x07\xad\x76\xca\xb4\x05\xfc\xe8\x29\x44\xe5\x85\x75\xe2\xa0\xb4\x06\xa9\xbd\xe5\xe0\x46\xc7\x71\x30\x5d\xde\x95\x4f\x5e\x28\xb1\x92\x29\x11\x27\xef\x0e\x7e\x90\x5a\x1f\xa3\x8b\x54\xf0\x70\xfb\x52\x24\x9d\x1a\xeb\x20\x26\x80\x07\xeb\xc0\x86\x6d\x8e\x67\xd2\x46\x88\xbf\xd9\x0e\x67\x81\x98\x2f\x66\x11\xdc\x90\xdc\xb3\x88\x97\x47\xa1\xa0\xb4\x56\xd6\x8c\xbe\x1e\xd8\x94\x1c\x49\xf0\xc3\xb7\x5f\xc1\x5e\xea\x01\xfd\x75\x21\xde\x51\xfc\x51\x48\x1a\x0b\xd6\xe0\xb4\xab\x61\x93\x95\xbf\x8c\x84\xce\x9a\x76\xae\x88\x8d\xbb\x3a\x0c\x5b\xcb\x41\x62\x6c\x80\x76\x90\x17\xf7\x43\x0e\x8d\xc6\x93\xc6\x51\x66\x37\xf8\x10\x7d\x59\x22\xa0\xa1\xf8\xa8\x61\x16\xb5\x7c\xfb\xe2\xec\xee\xa3\x29\x93\xd1\xc0\xf7\xc1\x17\x8e\x8f\xb2\x0a\xfa\x08\xd2\x83\x32\x94\xa8\x58\x17\xf0\xba\x99\x6f\x8e\xda\x89\x64\x0b\xd6\x2b\x0a\xfd\x69\x79\x0e\x1f\xf1\x9e\xfb\xde\xd9\x47\xd5\x11\x76\xd2\x75\x25\x87\x06\x3b\xe5\x52\x21\xc4\x77\xc9\x83\x73\x18\x9d\x2b\x7d\x47\xa8\xf9\x6c\xca\x2a\xaa\x09\x14\xd4\x7e\x6b\x07\x5d\xb3\x77\x18\xf3\xd8\x0a\xa3\x2a\x64\xa8\xa4\x34\x1b\xdd\x5c\xc0\x6b\x70\x48\xf8\xc1\x00\x44\xaf\x8b\x10\x3d\x92\x73\xb2\x10\xe2\x39\x6c\x12\x38\x6e\x60\xc9\x7e\xa5\xc5\x4d\x4a\xb2\xcd\x5c\xa9\x6b\xda\xfc\x33\x9a\x72\x70\x66\x43\x7f\xb7\x6e\xd8\x97\xf6\x91\xff\xae\xa5\xab\x06\x2d\xf9\xef\x70\x50\x0c\xfd\xfc\xc3\x49\xa5\x7d\x25\x7d\xfc\x55\x0e\x65\xa9\xb1\x1d\xba\x4d\x34\xf0\xf6\xc2\x3e\x42\xa4\xbd\x74\x47\x38\xa8\x1a\xf5\x11\x4a\xe9\xb1\x06\x6b\x2e\xb2\xd1\xa3\xc6\x2a\x60\x8c\x38\xae\x21\xd9\xec\x68\x92\x57\x5d\xaf\x91\x4f\xf4\x56\x4b\x47\x48\xb8\x81\x25\x07\x4f\xc2\x61\x84\x71\x25\x5d\x65\x2f\x35\x86\xc0\x9e\x3c\x13\x49\x77\x17\xd3\x32\x47\x76\xba\xef\xde\xd9\x1e\x9d\x3e\xb2\x63\xaa\xae\x5a\xdf\xbe\xdc\xe4\x3f\x7b\xd9\xa3\x8b\x5e\x42\x69\x8e\xc9\xdc\x77\x63\xe0\x64\x83\x13\xa0\xce\xeb\xc5\x56\x86\x31\x75\x66\x91\x46\xd7\x9d\x77\x6f\xde\xbc\x7e\xf5\xc3\xdb\xff\x7a\xf7\xc3\x8f\x5f\xbf\x7a\xfb\xfd\xdb\x1f\xfe\xf3\x76\x03\x4b\xd6\x4f\x51\x3d\x07\x34\x7b\xe5\xac\xe9\xa8\xc4\xec\xa5\x53\x94\x26\xd7\xc9\x35\xd9\xea\x75\xa8\x36\x77\x90\x5f\x7a\xc2\x21\xc9\x4a\x4e\xea\x51\x8d\x82\x64\xc8\x60\xbb\x75\x2d\xdd\x6e\x26\x63\xfe\x8a\xf2\xf9\xe2\x9a\x86\x22\xfb\x3e\xd8\xee\xca\xc3\x82\x5e\x59\xcc\x77\x16\xd9\x5d\x2c\xe7\x7e\x3a\x67\x70\x51\x6f\xc3\x99\xc1\x15\xbf\xab\x22\x4c\x16\x00\xaf\xc3\x54\x88\x66\x1e\x0a\x56\x40\xcc\x08\x4a\xbc\x12\x7d\x20\x04\xe1\x57\xd7\xb7\x2f\x41\x35\x17\xf7\x5a\x5b\xf4\x84\xfd\x9f\x3a\xbb\x98\x85\x77\xd4\x8d\x0a\xf2\xec\xa8\x3d\x3a\x4f\x70\x99\x94\x4b\x5b\xe7\xa6\xb1\x04\x15\xb6\x43\xf9\xcf\x08\xf8\x96\x77\x9e\xbd\xcf\xb4\x89\x0a\x52\xac\x29\xaf\xe6\x4b\x6f\x12\xe9\xfb\xa4\xc6\x71\x06\xe3\x63\x70\xd8\x51\xfa\xc4\x3c\x98\xd8\x5c\x24\x16\xb9\x82\x5a\x83\x9e\xc8\x9a\x28\xe9\x96\x07\x53\xc3\x7b\x42\xf6\x0f\xcb\x6d\x08\xbd\xbf\xbb\xb9\x89\xfa\x17\x95\xed\x6e\x7e\x3e\x62\xad\x6a\x25\x6f\x98\x8f\xdd\x04\x87\x78\xd3\x49\x1f\xd0\xdd\xb8\xc1\x04\xd5\xe1\xcd\x5c\x19\x0a\xb6\x77\x5b\x3c\xb2\x52\xd6\x10\xc4\x96\x76\x08\x70\xfb\xa7\xf5\x1f\x5f\x80\x56\x74\xb2\x32\x10\x6c\xe0\x94\xfd\x4a\x7a\x55\x45\xa4\x1f\x89\x67\xa4\x79\xe7\xe4\xcc\xa4\xea\xa0\x95\xd9\x4d\x14\x13\x5a\x67\x87\x3e\x92\x34\x21\xab\x30\x48\x9d\xde\x24\x7b\x63\x7c\xd7\x54\xa8\x52\x25\x20\x80\xe3\xf5\x35\xc9\xd9\x64\x32\x59\x08\xf1\x8d\x75\x54\x13\xc8\x69\x2b\x3a\x67\x3a\x42\x6a\x0d\x11\x4b\x03\x6b\xde\x3a\x44\xb3\x62\xa5\x0e\x0c\xc9\xb9\x70\x27\x61\x89\x88\x4e\xc7\xe4\xb7\x61\xc1\xaf\x2e\x22\x17\xfd\x4a\x56\x3b\xd2\xde\x8c\x44\x8d\xc8\x73\xae\x6f\xc4\xf2\x55\xa3\xb0\xce\xfc\x93\x85\xff\x96\xe8\x55\xa9\x07\x4c\xf2\xd9\x7c\xae\x4b\xad\xda\x4f\x0a\xb2\x15\x12\x68\x23\x94\xa3\x0a\x85\x10\xaf\x9b\x99\x49\x5a\xed\x90\x6a\x7c\x63\x1d\x26\x25\x99\x21\x4b\x03\xff\x20\x24\x25\x93\x93\x4e\x51\x41\x63\xc3\x96\x3c\xac\x0c\x34\xce\x9a\xf0\x2b\x9a\xce\x95\xfc\x7b\x12\x1a\x29\xd2\x10\xa0\xb4\xba\x5e\x11\xa5\x19\x4c\x8d\x8e\xa2\x65\x14\x39\xc2\x01\xc9\xfc\x15\xf9\x24\x02\x1c\xd6\xe9\x88\xf5\x7a\x2d\x12\x6f\xa1\x88\xbc\xa4\xe1\x07\x79\xe4\x12\x1d\x1d\x7e\x9c\x4e\x28\x84\x78\x15\xb1\x65\xc4\xe7\x4c\xc8\xb8\x8e\x4c\x25\x89\x61\x9b\x64\x33\xc7\x0b\x97\x9c\x84\xe9\x8e\x34\x5e\xf0\xbe\xe4\x46\xa2\x3d\x35\xf6\x54\x9f\xb9\xc4\xd9\x91\xb6\x82\xd4\xac\x53\x89\x39\x62\xbd\x24\xe8\xcb\xae\x8a\xd1\x66\x7d\xa6\x3a\xd1\xff\xb4\xcf\x48\xc2\x82\x4d\xa9\x65\xb5\x5b\x91\x07\x56\x63\xac\xa2\xd6\xf6\xb0\xe2\x5b\x5f\x41\x27\x5b\x34\x41\xae\xa0\x3a\x4a\xb3\xa2\x86\x28\xe0\x46\xc8\x48\x15\xa8\xd9\xa2\xa8\x4f\x18\xcc\x1d\x0a\xca\x6a\xcb\x74\x6f\x19\x17\xd3\x09\xf1\x87\xc3\xba\x28\x8a\x94\xf5\x66\x0c\x93\x4b\x36\x3b\xeb\x62\xb8\x6b\x1a\x13\x52\xb9\xd4\x5b\x79\xb8\x5d\xd3\x9e\x65\xfa\x29\x6e\x09\xba\x39\x82\x1d\x36\xd4\xfe\xda\xd1\xcc\x9c\x33\xd7\x31\x70\x67\x84\x7c\x84\xf8\x04\xed\xf3\x32\xb1\xa2\x8d\x93\x8a\x1c\x74\xf9\xde\xa3\x3c\x91\x69\xe1\x5c\xbd\x2d\x12\xbc\xd7\xe8\x23\x41\x9c\x53\xf4\x44\x60\x67\xe8\x4e\x7d\x45\x6c\x5c\x95\x17\x81\xfb\x13\x9b\xd2\xe5\x33\xdc\x51\x85\x44\x1f\x43\xc0\x8e\xfa\x34\x0b\x9d\xec\x67\x20\x98\x0d\x17\x72\x2f\x95\xe6\xbe\x68\xf2\x65\x21\xc4\xb7\x68\xd0\x71\x60\x9e\x15\x05\x6e\x74\x27\x96\x31\x2b\x96\x13\xe1\xb0\xa9\xfb\xb1\xb6\xa6\x08\x16\x9d\x74\xbb\x09\x73\x36\x54\xbf\xc0\x0f\x4d\xa3\x1e\x99\x84\x3c\x21\x9f\xdc\x4c\x18\x1f\xc3\x68\x06\x29\x4f\xca\x8b\xdc\x28\x89\x2c\x52\x72\x66\x46\x2c\x47\x3e\x7c\x59\x00\x12\xca\xcf\x13\x88\x7c\x7a\x47\xb4\x26\x97\xb4\x65\x34\x2e\xbd\x3d\xd7\xc3\xd4\x73\x1c\x6b\x18\x5c\x46\x78\xa7\xaa\x82\x8f\x81\x88\x5c\x42\x10\xf1\x1c\x54\x8d\x26\x10\xfc\x3a\x7e\x6c\xa8\xcd\xa1\xe7\x3e\xc8\x80\x69\x8f\x3f\x76\xa5\xd5\xe2\x39\x65\x7d\xef\x6c\x25\x9e\xf3\x18\x82\x56\x28\xa4\x24\x2d\x8d\x20\x56\x8b\xe7\x80\xce\x59\x92\x17\x6c\x6d\x93\xac\xc1\x33\xc2\x2d\x5f\xcd\x55\x9f\x16\x48\xa9\x20\xcb\x52\xba\x8b\x2d\xe9\x21\xfb\x83\x7c\xe6\xc1\xf6\x68\xe2\xa4\x86\x5e\x52\x86\x0c\x58\x57\xdb\x4f\xde\xa4\x47\xb2\x0a\x98\xe6\x20\xb4\x53\x55\x32\x10\x9b\x92\xa5\x27\xa2\x44\xbb\x6c\x1f\x14\x8f\x1e\x04\xe4\x4e\x8b\xc4\x92\x4e\xeb\x98\x9d\xe2\x39\xb4\x43\x08\xe8\xd6\xd9\xac\xf4\xf3\x20\x9d\x51\xa6\x25\xbf\x0d\xce\x47\x70\xc6\xf8\x8b\xf0\x76\x7d\x2e\x23\xe2\x77\x65\xf5\xd0\x19\xd2\xbb\x35\xd6\xd1\xee\x5a\xed\x55\x8d\x97\xca\xe7\xa7\x25\x86\x03\xa2\x21\x26\x15\x88\x3c\x80\xef\xb5\x0a\xfe\x3a\x21\x76\x0e\x50\xe6\xfc\x25\x42\xaf\x65\x85\x35\x93\x0e\xaa\xff\xff\x73\x53\xc4\x76\x3e\x11\x9a\x79\x50\x6f\xa0\x56\x0e\xab\x60\x1d\xf1\x11\x62\x47\x83\xc7\x3a\x07\xea\x6b\x03\xb2\xae\x15\xfb\x26\xe5\x64\x27\x95\x79\x22\x54\x19\x69\x52\xc5\xf1\x43\xf9\x44\xfc\x8a\x0c\x3c\xe5\x91\x85\x9a\x16\x36\x45\xde\xba\xc9\xe2\xf9\x17\xc3\xce\xd1\x0e\x57\x0e\x23\x43\xa2\xcd\xcc\x67\xed\xc1\x40\x35\xf8\x60\x3b\x31\x1f\xd6\xad\xc6\x24\xe9\xe4\x8e\x4d\x20\x0f\x8e\x6f\x8c\x0a\x45\xf0\x1c\x27\x77\x57\x01\x3a\x19\xaa\x58\x4c\xf2\xa6\x15\xa8\x70\xa5\xf5\x98\x66\x49\x31\x67\x6d\x22\x5f\x2b\x6a\xea\x69\x93\x17\x5e\x36\x98\x9a\x95\xd4\x7c\xe2\x08\x7f\x93\x17\x72\x93\x15\x15\x3f\x9b\x32\x9e\xf3\x30\x8a\xc6\x4d\xce\xbe\xc2\x07\xa7\x4c\xbb\x21\xa0\x88\x8c\x75\x94\x33\x9f\x21\x46\x63\x18\x4f\x87\x54\x71\x29\xe1\xcf\x66\xa3\x51\x52\x44\x73\xd2\x9b\x21\x9c\x65\xae\x46\x30\x1e\xb8\x1e\xc7\xa3\x41\x19\x1f\x50\xd6\x45\x9a\x0b\x06\xa7\xe2\x40\x74\xf2\x96\x96\xae\x45\x1f\x80\xca\xbf\x6d\x32\x5e\xa9\xc0\x97\xd0\x28\x33\x46\xdf\x9c\xe6\xd7\xd8\x28\xc3\xd1\xe4\xd9\x89\xaa\x59\xb1\xb2\x64\xbe\xc6\x99\xe9\xa5\xb5\xba\x20\x00\x9f\x59\xcf\x95\xec\xcc\x5a\x64\x73\xd9\xaa\xcf\xbd\x3a\x1a\xca\x65\xea\x7c\xd7\x4c\x36\x8b\x15\xa3\x1f\x2e\xf6\xf1\x09\xc6\x06\x76\x16\xcf\xa6\xc6\x0d\x9b\x02\x22\x9c\x5f\xcd\xd1\x7c\xba\x7a\x4a\xa6\x71\xb2\x7b\xe5\xa1\x1c\x94\x0e\x6b\x65\x2e\x83\x60\xc4\xe2\x22\xb1\x91\x25\x0f\xb4\x68\x99\x30\xd6\x47\x06\x56\x2b\x1f\x94\xa9\xd8\x81\x23\x26\xc4\x75\x9e\xa9\x44\xb2\x7b\x3d\x83\x70\x36\xe0\xf2\x37\xbb\xe7\x93\x87\x8d\xd4\xfe\xec\x69\x1a\x00\xcf\x1f\x25\xa0\x7f\xb5\x95\xee\xec\x31\xc7\xd7\xa7\x4f\x8a\xc1\x69\x38\xab\x2e\x45\xa5\xa5\xf7\xb0\xbc\x27\x26\xc2\xce\xa1\xfb\x6f\x86\x64\xd4\xf5\xf9\xe6\x4e\xd2\xb5\x9c\x3d\xda\xf3\xc9\xa9\x02\x15\x7e\x8b\xa5\x34\x2d\x2c\xa9\xd5\x7b\xf6\x3b\x90\x71\xe8\x5b\x62\xab\x0c\x81\x32\xb9\x45\xb2\x17\x23\x14\x05\xd4\x3a\xf6\xff\x96\xca\xb9\x0c\x02\xc0\x57\x4e\xf5\x81\x67\x62\xae\x77\x18\x22\xef\x1a\x3c\x17\xa3\x58\xf3\x8a\xd2\xc9\x6a\x87\xc1\xc3\x72\xf3\xcb\xc7\xe5\xf5\xfb\x0f\x1b\xce\x7a\x6f\x3b\xa4\x76\xd0\xc3\xe6\x8b\x3f\x6f\x66\xfb\x6d\x8f\x4e\x06\x3b\xc1\x79\xfe\x1d\xd7\xfd\x44\xc7\xe3\x44\x25\xbd\x16\x64\x0b\x4b\xc2\x83\x6d\xe8\x34\x04\xd9\xfa\x55\x1a\x28\xc6\x79\x27\x77\x1c\xec\x24\xba\xf4\x62\x87\xc7\x83\x75\x35\x2c\x73\x27\x43\xa9\x2b\x73\x35\x9e\x35\x74\xe4\xe3\xb4\xd9\xc7\x4e\x67\xd3\x3b\xb5\x97\x01\x37\xd7\x0c\xf2\x3c\x29\x1f\xc2\xe0\x70\x05\xbd\x1e\x5a\x65\x3c\x8f\xa7\x72\x73\xc6\x14\x2c\xe1\x5a\x64\x1d\x29\xbe\x49\xb2\x0f\x47\x1d\x87\xb0\xd4\xc6\xff\x6d\x16\xd8\xcc\x90\xcf\xbf\xaa\x50\x8b\xe6\x54\x08\x68\x18\xce\x64\xa7\xd7\x8d\x75\x9d\x0c\xd1\xa1\xa9\x44\x6c\xe3\x67\x99\xd1\x02\x31\x7e\x76\x29\xa6\x81\x00\xe7\xd2\x94\x4a\x67\x88\x17\x11\x6b\x8f\x8e\x7a\x17\xc7\x98\x4c\x3d\xa6\x34\xb8\x02\x8f\xc6\x2b\x32\x28\x7d\x54\xa1\x12\x0b\x11\x7f\xf9\xab\x93\x6c\x31\xd7\x5f\x6a\x63\x94\x69\x9b\x41\x03\x6a\x8c\xad\x24\x87\x54\xd6\xa7\x80\x88\x90\x5b\xe9\xcf\x0a\x52\x54\x8e\x3b\x39\xba\xfe\x3d\x3a\xb8\x7d\xf1\x62\xf6\xf5\xc8\xd8\xc3\xef\xe0\x3b\x7b\xc0\x3d\xba\x5c\x3b\xd3\x27\x0a\xe1\x55\x18\x64\x4c\x72\xfe\xfc\xc1\x97\xcb\x98\x9a\x4d\x3f\xb7\x95\x6d\x53\x86\x39\x66\xa5\xa8\xc7\xb3\x2e\xb2\x74\xcb\x05\x43\xe4\x99\x3d\xdd\x06\x33\x5f\x83\x87\x34\x09\x9b\xf1\xcb\x34\x8b\x98\xaa\xe6\x59\x81\xa5\xeb\x61\x5e\xc1\x93\x29\xa1\x0c\x7c\x4a\x2c\xe2\x1b\x31\x37\xde\x9c\x21\x75\x6a\xf8\xc6\xba\xc2\x13\xc2\x6f\x12\xba\xc1\x54\x17\x62\x83\xcc\x3c\xc6\x07\xe9\x62\x3a\xcf\x14\x89\x9f\x9f\x2a\x2d\x5d\xee\x15\x33\x44\xa6\xfe\x78\xfc\x09\xad\x8d\xed\xf0\x33\x3a\xea\x2f\x18\xb0\x0a\x67\x07\x8d\xcd\x1b\x9f\x96\xe3\x40\x99\x18\x8e\xc4\x78\xe2\x18\x27\xc5\x62\x1d\x25\x3c\x71\x64\x5c\xb9\x13\x00\xc0\x4b\xd4\xae\xdd\xc1\xe2\xe1\xa1\x68\xed\xef\x53\x4f\x3e\xf3\x46\xae\xa1\xca\x83\xc3\x16\x1f\x41\xb6\x92\xfc\x02\x92\xe7\x16\x66\x94\xf1\x99\x53\xb9\x31\x16\x63\x76\x8e\x01\x6c\x12\x89\x95\x1a\x36\x5b\x94\x35\xb5\x1d\xf1\x00\xbe\x65\x3e\xbb\xda\x62\xb5\x9b\x7d\x17\x63\x32\x6e\x1b\x91\xe5\x17\x30\x63\x23\xbf\x69\xde\x51\x7e\xd9\xe9\xdf\x2f\x78\x25\x9e\x78\x07\x8b\x7f\xf9\xfb\xfd\x9b\xef\x17\x33\xd7\x27\x40\x70\x03\x03\xc2\x5f\xf1\x31\x7c\xea\xf5\xd9\x2d\x9f\x85\x36\xbf\xc4\x71\x9b\x87\x19\x07\x3b\x16\x3c\xc1\xab\x77\xd0\x53\x1f\xe9\x8c\x4f\x44\xac\xa5\xc4\x29\xe0\x3e\x3f\xa7\x38\x67\x9f\xc7\xe1\xba\x04\x6a\x74\x35\x46\xdb\xe3\xf7\xe0\x38\xe4\x90\x22\xad\x30\xa8\x4a\x0f\x07\xd4\x9a\x04\x45\x99\x93\x66\xb3\xda\x7b\xb0\xd3\xf1\x9c\xe5\xdd\xa0\x83\xea\x35\x8a\x38\xf7\x23\xf9\x74\x55\x5c\xbe\x59\x5f\xc2\x0f\x45\x30\x72\x20\x04\xf4\xd9\xfa\x78\x46\xfe\x5a\xc2\x2c\x9a\x08\x40\x26\x86\xe3\x21\xca\xc0\xb7\x36\xdd\x4c\xb4\x9f\xdd\xbf\xce\xa8\xcf\x37\x53\x2e\x4b\x87\x72\x77\xaa\xa4\xc7\x53\x65\x4d\x50\x66\xc0\x53\x22\xb4\xa7\xd6\x9e\x5a\x1b\xec\xc9\x49\xd3\xe2\xc9\x61\x18\x9c\xb9\x7e\x78\x28\x17\x59\x52\xee\xf9\x92\x2c\xd4\x1e\x4f\x8d\x75\x27\xd5\x9c\xfc\x41\x85\x6a\x3b\xdf\x9d\x4a\x71\xda\xdb\xcb\x6a\x27\x5b\x3c\xa9\xae\xb7\x2e\x9c\x98\x0f\x9c\xf6\xd2\x9d\xe8\xd2\x4e\x3e\xb8\xa1\x0a\x27\x2a\xf7\xa4\x45\x8d\x0d\xba\x93\xb2\x41\x46\x81\x69\x8a\x87\x60\x5d\x1d\xbf\x3c\x8f\x66\xd7\x16\xf9\x16\xa9\x3a\x4b\x3f\x3d\xd7\xf6\x80\x2e\x53\x4d\x06\x08\x8e\x73\xba\x0a\x2a\x33\xf1\xcb\x31\xcf\x7e\x39\xf5\xb1\xa6\xa4\xde\xe7\xef\xff\xe2\xde\xd4\xb0\x7d\xd2\xe1\x29\x8e\x18\xbe\x47\x87\xaf\x2f\x09\x4e\x74\x3e\x23\x15\x39\x60\x11\x9d\x82\xa6\x9e\xfd\x9a\xdd\x52\xf4\xd8\x53\x6c\x8a\x12\xa7\x58\xfc\xf6\xa6\x87\x87\x87\x87\xf7\xb2\x6c\x8c\x0b\xfb\xab\x87\x87\x07\x7e\xf0\xe1\x9f\x7c\x71\xf9\xfe\xc5\xfa\xdf\x3f\xfc\xf2\xc7\x8f\xa7\xc7\xf7\xf7\xeb\x6f\xe4\xba\x79\xb1\xfe\x8f\x0f\xbf\xfc\xe1\xe3\x69\x98\xff\xfe\xd7\x8f\xa7\x1f\xe7\xbf\xff\xf4\xf1\x7a\x21\xd8\x76\xe6\x97\xe7\x36\xdf\xdc\xcc\x6d\xfe\xfd\x67\x4c\x0e\xb6\xb6\x77\xb0\x58\xbe\x7b\xfb\x97\xb7\xa7\x9f\x7e\xfa\xe9\xf4\xcd\xeb\x9f\xde\x7c\x7d\x7d\xf7\xe5\xaf\x08\x7e\x78\x78\x7e\xe6\xce\x87\xe7\x37\xff\x77\xe9\x1c\x52\x7f\xb5\x41\x55\x18\x81\x7c\x3b\x5d\x2d\xe5\x25\x25\x07\x35\xb4\x31\x35\x53\x3e\xc6\xe2\xdf\x15\x70\x6f\x8e\xa0\x8c\x41\x97\xd6\x09\x48\x85\xe4\x4a\x1d\xf1\x24\xce\x57\xd1\x80\xdf\xa9\xbe\xc7\x9a\xea\xb5\x01\x8f\xd2\x55\x3c\x1c\x8e\x1f\x89\x11\x78\xea\xd9\xcc\x13\x9d\x80\x56\x8c\xe3\x77\x7e\xed\x0c\xf9\x36\x8b\xc6\x5a\x78\x58\x40\x29\xdd\x62\xb3\x22\xd0\xaa\x10\x36\x0f\x8b\xcd\x1c\xcf\xa8\x95\x36\x51\x45\x46\x83\x9c\x09\xf1\x10\xee\x57\x94\xcf\xca\x15\xf0\xbd\xda\xe1\x41\xf9\xf8\x9d\x2b\x9d\x10\x8f\x98\x9d\xf0\x40\x27\x88\x27\x4e\x60\x27\x5c\xc8\x4c\xff\x1b\x85\xd4\xe7\x51\xc3\x62\xd6\x54\xa5\x15\x11\x53\x85\x7c\xe0\x33\x41\xaf\xac\x73\x54\xd7\x98\x50\x14\xa9\xe8\xe7\x8a\x86\x8f\xbd\x56\x95\x0a\xfa\x08\x9d\x74\x3b\x3e\x2a\x56\x32\xf4\xe9\xc3\x16\xd4\xfc\x1f\x19\x98\xf0\xd2\x55\x45\x0e\x24\x66\x33\xae\xa7\x2a\xd9\xff\x2b\x7d\xe9\xf4\x58\xee\xe6\xd1\x07\xef\x3f\xcc\x4a\xdc\x6b\x53\xe9\xa1\xa6\xf2\x76\x66\x88\x8a\x8f\x53\xf0\x34\xce\x76\x89\xc7\x9f\x31\x45\xe9\x01\xbb\x12\xeb\x1a\xeb\x89\x1f\x5e\xc4\x07\xa3\x9b\xd5\xda\x1e\xf8\x93\x83\x87\xde\xfa\xc8\x61\x9b\xd4\x2d\x8c\x26\x26\x94\x3f\x37\xed\x8b\xd8\xe4\x14\xcf\xbf\xfc\xf3\xdc\xc6\x2f\x6e\x2e\x9f\x7f\x92\x5b\xc9\x86\x3b\x58\xfc\x43\xee\x65\xdc\xce\x49\xfb\x99\x73\xc2\x51\xe3\x13\xc7\x9c\x3f\xfe\x95\x53\x2a\xef\x63\xd6\xfe\x6f\x00\x00\x00\xff\xff\x0c\xf7\x57\xab\x22\x26\x00\x00" func runtimeHelpColorsMdBytes() ([]byte, error) { return bindataRead( @@ -924,7 +924,7 @@ func runtimeHelpColorsMd() (*asset, error) { return a, nil } -var _runtimeHelpCommandsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x57\x4b\x8f\xdd\x4a\x11\x5e\x5f\xff\x8a\xd2\xdc\x45\x66\xa2\x8c\xef\xfe\x2c\x40\x62\x20\x02\x29\x81\x81\x04\x10\x2b\x5c\xc7\x2e\xdb\xcd\xb4\xbb\x9d\x7e\x9c\x33\xe6\xd7\xa3\xaa\x6a\x3f\x4e\x06\xe9\x26\x8b\xcc\x71\x77\xbd\x1f\x5f\x55\xff\x0c\xcf\x3e\x46\x73\xb6\x04\xad\x9f\x26\x74\x5d\xac\xaa\x7f\xf9\x0c\x2d\x3a\xa0\x57\x6a\x73\x22\xe0\x9f\x9d\x49\x3e\xac\x34\x70\x5e\x60\x0e\x14\xa3\x71\x03\x34\x4f\x29\xd8\x47\x6a\xa0\xf7\xd6\xfa\x2b\xc9\x6d\x1a\x37\x81\x75\xf5\x47\x0a\x04\x18\x48\x4e\xe7\xef\xf5\x41\x1a\x31\xc1\x52\x74\xe6\x48\x75\x55\xbd\x87\xe6\x5b\x36\xa9\x39\xc1\x5f\xb3\x49\x11\x26\xd3\x06\xaf\xe7\x11\x2f\x04\xbd\xb1\xe4\x70\xa2\xdf\x36\x27\xf8\x82\x17\x8a\xaa\x30\x87\x40\x2e\xc1\x39\xf7\x3d\x85\x1a\xfe\xd4\xcb\xf1\x4a\x0c\x26\xc2\x1c\xfc\xc5\x74\xd4\x81\x49\x15\xc0\xd5\x58\x0b\xef\x44\x22\xc6\x77\x37\xc4\xaa\x2c\xd0\x6c\xb1\x25\xb8\x8b\x84\xa1\x1d\xef\xe0\xee\x82\x36\xd3\x1d\xf4\x16\x87\xd8\x9c\xe0\xeb\x68\xa2\x8a\x59\x49\x1b\x25\x6d\xe0\x6a\xd2\x08\x8d\xd0\x37\x35\x54\x00\xf0\x75\x24\x68\x94\x53\xc2\xe1\xe7\x64\xbc\x43\x5b\xef\x49\x90\x5b\xbe\x3c\x31\xc3\x7b\x68\x1e\xb1\x39\xc1\xdf\x8a\x6c\xb4\x16\x7c\xab\x6e\xb6\x14\x01\x13\x78\xd7\xd2\x4a\x6a\x9b\x13\xfc\xde\x03\x82\x35\x89\x02\x5a\x50\x53\xc0\xb8\x98\x08\x3b\xf0\x3d\x20\x04\x1a\xe8\xb5\xdc\x54\xcc\xf9\x67\x9f\x48\x73\xb0\x99\x3e\xe5\x98\xe0\x4c\x80\x70\x41\x6b\xba\xc2\x73\x9f\x9d\xa5\x18\x45\x91\xc4\x12\x63\xa4\xee\x41\xe2\xec\x1d\x89\x8b\x5e\x43\x8e\x61\xc8\x13\xb9\x14\xa1\xf3\x14\xc1\xf9\x04\xa3\x44\xd9\x2d\x10\x67\x64\xdb\x8d\x03\x93\x3e\x48\xde\x27\x5c\xc0\x4f\x26\x09\xeb\xb7\xec\x13\xc5\x9b\xf0\xb3\xdb\xdf\x67\xe0\xc7\x63\x2f\x1f\x3e\x73\xbe\xb9\xba\xb8\x88\x5d\x6f\xc2\x84\x1c\xfc\xba\xaa\x7e\xfa\x42\xb4\xa9\x6a\xb6\x12\xef\x7d\x80\xc9\x07\x02\xe3\x7a\xbf\x53\x73\x05\x52\x2a\xa9\x03\xd5\x70\x82\x48\x49\x4b\xb0\x9c\x27\xaf\x57\x35\xb0\x70\xbe\x68\xf4\x26\x36\x30\x92\x9d\x21\xf9\xd9\xb4\xac\x83\xad\xe2\x84\xc5\xc4\xb1\x2b\x44\x5b\x37\x44\x4a\x9b\x4e\xeb\x5b\xb4\x3f\xaa\x18\x84\xda\x2e\x70\xef\x9d\x5d\x38\xd8\x87\x06\x61\x9d\xda\x23\x0f\x45\xfa\xe8\xaf\x45\x02\xcb\x1c\xfd\xf5\xb6\xa1\x54\x64\xc9\xed\x60\x2e\xe4\x0a\xb5\xb2\xd3\x05\x2d\xdc\xd1\xab\x42\x82\x77\x9c\x9c\x3f\x30\x0f\x26\x2e\x52\xf8\x94\x11\xf6\xdb\xfa\x50\x71\xd2\xd7\x9a\x43\xe7\xc5\xae\x39\x18\x97\xb8\x4e\xd2\xc8\xe0\x12\xbd\xc4\x22\x8e\x3e\xdb\x8e\xd3\x07\xcd\x44\x31\x92\x1b\x28\x9c\x3e\x53\x8c\x38\xd0\x7d\x5d\xd7\x0f\x0d\xbb\xde\x99\x38\x5b\x5c\xb4\x6e\xf3\xda\xc3\xd9\x41\x1c\x1f\x4b\x5e\x9b\x13\x84\xec\xe2\xc1\x93\x38\x92\xb5\x5b\xda\x4b\xa4\xce\xd8\xbe\x0c\xc1\x67\xd7\xd5\xd2\xb6\x6c\x5a\x21\x79\x17\xc1\xe7\x34\xe7\xa4\x76\x9f\x69\x55\x4b\xc2\xcd\x9d\x60\x8d\x23\xb8\x8e\xc4\x25\x0e\xbd\x71\x26\x8e\x14\x59\xaf\x33\x6e\x50\xab\xce\xc6\x75\xf0\x42\x0b\x60\x5b\xc2\xde\x06\x2a\xf1\x7a\xa1\x85\xaf\xd9\xff\x3e\xf8\x49\xc8\x92\x2f\x94\x7b\x49\x45\x92\x83\x28\x7d\xe7\x0e\x5c\x11\xf0\xec\x19\x25\x8f\x25\xcc\x67\x6c\x33\x87\xfd\x85\x96\x08\xec\xad\x8a\x14\xc0\x01\xbc\xa0\xb1\x78\xb6\x25\x6c\x97\x38\x5b\xb1\x5e\xf1\xb0\x39\x81\x9f\x89\x49\xe1\x42\x21\x19\xae\x45\xa5\xd0\x5e\xdb\xe8\x04\x0e\x9c\x3f\xa2\xae\xe6\x55\x81\xf7\xc3\x5b\x01\x26\x8a\x68\xea\x54\x14\x4f\x9b\x69\x4e\xcb\x0a\xe3\x62\xcd\xf8\xc6\x9a\xc8\xb2\x31\xae\x86\x36\x70\xce\x69\x33\x71\xf4\xc1\xfc\xd7\xbb\xb4\xeb\x38\x40\x20\x9b\x73\x6b\x82\xea\x48\x78\x7e\xeb\xee\x5e\x27\x7c\xc5\x09\x46\x70\x74\x85\x84\xe7\x8d\x2b\x5e\x4d\x6a\x47\x3e\x5a\x51\x69\xad\x26\xa9\x90\xf5\xda\x6b\xd6\x66\x6a\x4d\x6f\xa8\x13\x11\x3a\x13\x98\x93\xfb\x9d\x2d\x23\x93\x46\x0a\x8a\xbe\x6c\x91\xcb\xd3\x99\xc2\x07\xf0\x81\x35\xb3\xd3\x02\xe3\xa2\xff\x27\xfe\x07\x6c\x85\xf5\xc3\x21\x43\xd6\x0f\x42\x65\x2d\x4c\xda\x23\x9a\xee\x8e\xce\x79\x80\x98\x30\x91\xa0\xb3\x7a\x30\xdb\x3c\x30\x1a\xbb\x98\x98\x43\x3f\xff\x5d\xa2\x50\x4e\x8f\x81\x50\x82\x1b\xde\x40\x13\x17\xdc\x2d\xab\x1e\xfe\x0a\x27\x23\x5f\x73\x92\x3f\x51\x0c\x2e\x0a\xa9\x2b\xd4\xb7\x46\xe6\xb9\xc3\xc4\xc2\xf5\xc7\x8f\xb0\x94\x21\x78\x6b\x9b\x1e\x52\x94\x1e\x79\x63\xe0\x01\xa1\x0a\x12\x73\x66\x7a\x6e\xd9\x1d\xab\x59\xf3\xd6\x33\xab\x66\x40\x41\xb1\xc1\xa4\x31\x9f\xeb\xd6\x4f\xbf\x08\xc4\x3d\xea\xfe\xf4\x8b\x52\x3d\xb6\x23\x3a\x47\xb6\x96\xf9\xbb\x6e\x5b\x68\xa3\x87\x48\xf4\x66\xea\x94\xce\x95\xe5\x49\x5d\x9a\xd0\xe1\x40\xa1\x80\x15\x0b\x69\x9e\xf5\xe6\xb3\xde\x34\x2b\x38\xac\xa0\x5d\x82\x71\x33\x7e\x6e\xa2\xb4\x79\x52\x92\xb1\x3b\xb4\xb9\xc8\xa1\xea\xfc\xd5\x59\x8f\x1d\xdc\x27\xae\x73\xe3\x5a\x9b\x3b\xa9\xae\x45\xba\xbc\x30\x29\xb8\xe3\x22\x65\x6c\x03\x61\xb7\xec\x59\x7a\x58\x87\x3b\x0b\x92\x3a\xe1\x1f\x9a\xca\x90\x5d\x32\x93\xae\x61\x25\x8d\x6d\x07\x33\xa6\xb1\x39\xc1\xd3\x88\x6e\x50\xec\xbb\xfa\xf0\xc2\xf8\xd8\x99\x40\x6d\xf2\x61\x59\xdb\x4b\xf3\xd8\x08\x47\x71\xf0\xca\x4a\x9e\x65\xae\x1c\x87\xda\x1b\x11\x4a\xce\x3d\x74\x84\x81\xbf\xf0\x37\x6e\xdd\xff\x7f\xf6\xcc\xe2\xcd\xbe\x16\x88\x4f\xdb\x64\x3e\xce\x4b\xb6\x92\xf7\xd9\x8e\x7a\xcc\xb6\x0c\xd6\xc2\xaf\xf0\x51\x56\x3d\x8d\x86\x25\x94\x29\xc0\x18\xa3\xe0\x58\x96\x27\x1f\xb6\xbb\x72\x22\xb7\x4c\xc7\x69\xe8\x68\x26\x9d\x1f\x5e\x2d\xde\x06\xb8\xc0\x55\xf2\xca\x54\x02\x14\xf0\xda\x9c\xe0\xf3\x3e\x8a\xbd\xba\x5c\x60\x4e\x90\x43\x36\x04\x96\x44\xb1\xc5\x99\x67\xcf\xb7\xcc\x3b\xa8\x14\x05\x5d\x28\x2c\xfc\xbf\xae\x16\x26\x41\xa0\x96\x0c\xf7\xbe\xcc\x2f\xe6\x4b\x14\x26\x23\xbb\xae\x00\xa4\xee\x18\xdc\x5c\xd7\x7d\x0f\xc0\x36\x65\x59\x5a\x22\x15\x56\x16\x77\xe4\x16\x5b\xb8\x82\x95\x97\xbb\xe5\x3a\x9a\x76\x84\x7d\xf2\x05\x72\xef\xd2\xfe\xca\x10\x14\x1e\x17\x55\x2b\xd6\x45\x98\x7c\x4c\xbc\x4b\xf4\xd9\x6a\x51\x33\x2c\x0e\x1c\xae\xc3\x0c\xdd\x37\xa3\x17\x5a\xf8\x99\xb1\x46\x40\x67\xe6\x7d\x7c\x80\x33\xef\x07\x32\x99\x4b\x92\x5f\x68\xa9\xe1\x23\x47\xe4\x15\xa7\xd9\x4a\x67\x96\xa9\x0f\xcd\x6f\xa0\x08\x03\x7e\x30\x3d\x35\x1a\xeb\x75\x65\x69\x26\x34\xae\xbe\x7f\xff\x0f\x43\xd7\x87\xfa\xc9\xcf\x4b\x53\xc3\xdf\x19\x04\x12\xaf\x51\x56\xda\x6b\x15\xb0\x2d\xd5\x5c\xc3\x70\xe5\xfd\x85\xfd\x90\xb1\xbe\x19\xb5\x36\xb6\x8e\x78\xb5\x2b\x8d\x3e\x52\xc9\xd1\x7f\x78\xc9\xd7\x3c\xdc\x7d\xca\xf8\x31\x3b\xa1\xfc\x9d\xfa\x5f\xdf\x55\xd5\xe3\xe3\x63\x55\xf1\x80\xd2\x97\x1d\x7b\xb1\x3d\xda\x78\x63\xd8\x1e\x53\xe5\xc1\xb7\x56\x75\x41\x81\x93\x44\xd0\x1a\xc7\x00\xff\xe9\xfb\xf6\x93\x86\x92\xea\x09\xc1\x07\x0e\xf7\xcf\xf0\x54\xc6\xe6\x33\x06\x7e\x5a\x56\xd5\x3f\x79\x87\x5a\x23\x88\xab\xf6\x0f\xc7\xd7\x22\xd0\x6b\x0a\x08\x71\x71\x09\x5f\xdf\x6c\x95\xf4\x3a\xcb\x7b\x95\x7a\x1f\xa8\x5a\x25\x1d\x5f\xa7\xf0\xd5\x8b\x18\x46\xe0\xf2\x6a\x29\x7b\x88\xb6\xd6\xfa\x50\x89\x66\x9a\xed\x02\xbc\xf7\xc9\x3e\x51\x95\x87\xca\x2d\x7e\x8b\x41\xee\x62\x82\x77\x93\x6e\xce\xc1\x30\x78\xc6\x0d\x3b\xd6\x17\x34\x06\xa9\xcd\x34\xd2\x52\xad\x8b\xa4\x5a\x4b\x5d\x01\x33\x13\xd6\x57\xc4\x47\x2e\x7e\xbb\xec\x8e\xb3\x19\xf2\x42\x5f\xb7\x6a\x96\xcf\x4b\x6b\x32\xed\x4b\xac\x64\x93\xdd\x17\x54\x2a\xcb\xf8\x96\x29\xdd\x79\x35\x2a\xa3\xbc\xd1\xff\x17\x00\x00\xff\xff\x4f\x5c\xa5\xa1\x09\x10\x00\x00" +var _runtimeHelpCommandsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x57\x5f\x6f\xdc\xb8\x11\x7f\x8e\x3e\xc5\xc0\x79\xb0\x1d\xd8\xfb\x01\xf6\xa1\x05\xea\x22\x68\x81\xb4\x4d\x9b\xf4\x0e\xf7\xa6\x59\x69\xb4\xe2\x99\x22\x15\x0e\xb9\x6b\xdd\xa7\x3f\xcc\x0c\xa5\x5d\xc7\x77\x40\xf2\x10\xaf\xc8\xf9\xff\xe7\x37\xc3\xf7\xf0\x39\x32\xbb\x83\x27\xe8\xe2\x34\x61\xe8\xb9\x69\x7e\x89\x05\x3a\x0c\x40\x2f\xd4\x95\x4c\x20\x3f\x7b\x97\x63\x5a\x69\xe0\xb0\xc0\x9c\x88\xd9\x85\x23\xb4\x4f\x39\xf9\x47\x6a\x61\x88\xde\xc7\x33\xe9\x6d\x1e\x37\x81\xbb\xe6\x1f\x94\x08\x30\x91\x9e\xce\xdf\xeb\x83\x3c\x62\x86\xa5\xea\x2c\x4c\xbb\xa6\xf9\x00\xed\xb7\xe2\x72\xbb\x87\xff\x16\x97\x19\x26\xd7\xa5\x68\xe7\x8c\x27\x82\xc1\x79\x0a\x38\xd1\x5f\xdb\x3d\x7c\xc1\x13\xb1\x29\x2c\x29\x51\xc8\x70\x28\xc3\x40\x69\x07\xff\x1c\xf4\x78\x25\x06\xc7\x30\xa7\x78\x72\x3d\xf5\xe0\x72\x03\x70\x76\xde\xc3\xad\x4a\x44\xbe\x7d\x45\x6c\xca\x12\xcd\x1e\x3b\x82\x1b\x26\x4c\xdd\x78\x03\x37\x27\xf4\x85\x6e\x60\xf0\x78\xe4\x76\x0f\x5f\x47\xc7\x26\x66\x25\x6d\x8d\xb4\x85\xb3\xcb\x23\xb4\x4a\xdf\xee\xa0\x01\x80\xaf\x23\x41\x6b\x9c\x1a\x8e\x38\x67\x17\x03\xfa\xdd\x25\x09\x7a\x2b\x97\x7b\x61\xf8\x00\xed\x23\xb6\x7b\xf8\x5f\x95\x8d\xde\x43\xec\xcc\xcd\x8e\x18\x30\x43\x0c\x1d\xad\xa4\xbe\xdd\xc3\xdf\x23\x20\x78\x97\x29\xa1\x07\x33\x05\x5c\xe0\x4c\xd8\x43\x1c\x00\x21\xd1\x91\x5e\xea\x4d\x23\x9c\xff\x8e\x99\x2c\x07\x9b\xe9\x53\xe1\x0c\x07\x02\x84\x13\x7a\xd7\x57\x9e\xbb\x12\x3c\x31\xab\x22\x8d\x25\x32\x53\x7f\xaf\x71\x8e\x81\xd4\xc5\x68\x21\xc7\x74\x2c\x13\x85\xcc\xd0\x47\x62\x08\x31\xc3\xa8\x51\x0e\x0b\xf0\x8c\x62\xbb\x0b\xe0\xf2\x83\xe6\x7d\xc2\x05\xe2\xe4\xb2\xb2\x7e\x2b\x31\x13\xbf\x0a\xbf\xb8\xfd\x7d\x06\x7e\x3c\xf6\xfa\x11\x8b\xe4\x5b\xaa\x4b\x8a\x38\x0c\x2e\x4d\x28\xc1\xdf\x35\xcd\xbb\x2f\x44\x9b\xaa\x76\x2b\xf1\x21\x26\x98\x62\x22\x70\x61\x88\x17\x6a\xa9\x40\xca\x35\x75\x60\x1a\xf6\xc0\x94\xad\x04\xeb\x79\x8e\x76\xb5\x03\x11\x2e\x17\xad\xdd\x70\x0b\x23\xf9\x19\x72\x9c\x5d\x27\x3a\xc4\x2a\x49\x18\x67\x89\x5d\x25\xda\xba\x81\x29\x6f\x3a\x7d\xec\xd0\xff\xa8\x62\x50\x6a\xbf\xc0\x5d\x0c\x7e\x91\x60\x5f\x35\x88\xe8\xb4\x1e\xb9\xaf\xd2\xc7\x78\xae\x12\x44\xe6\x18\xcf\xaf\x1b\xca\x44\xd6\xdc\x1e\xdd\x89\x42\xa5\xae\x69\x2a\x01\x78\x7c\xac\x91\x6b\xf7\x90\x4a\xe0\x2b\x5a\x1e\xc9\xfb\x2d\xb0\xd5\x96\x03\x76\xcf\xc7\x14\x4b\xe8\x77\xda\x18\x62\x54\x25\xb9\x65\x88\x25\xcf\x25\x5b\x76\x0f\x04\xbd\xe3\xd9\xe3\x42\xca\x2d\xb5\xe6\x5d\x20\x38\x8f\x24\x45\x04\x83\x0b\x8e\x47\x62\xd1\x1b\x5c\x38\x9a\x55\x07\x17\x7a\x78\xa6\x05\xb0\xab\x8e\x75\x89\x30\x4b\xdb\xc8\xb1\x5c\x0b\x7c\x0d\x29\x4e\x4a\x96\x63\xa5\xbc\x24\x8d\x49\x0f\x58\x2b\x3b\x5c\x71\x31\xe0\x21\x0a\x0e\x5d\x17\x89\x9c\x89\xcd\xd2\x4a\xcf\xb4\x30\x88\xb7\x26\x52\x5b\x1a\xf0\x84\xce\xe3\xc1\x57\x70\x39\xf1\xec\xd5\x7a\x43\x9c\x76\x0f\x71\x26\x21\x85\x13\xa5\xec\x24\xdb\x46\x61\xd5\xbc\xd1\x69\xc3\x85\x78\x8d\x6b\x62\xe0\x0a\x6d\x0f\x6f\x05\x38\x56\xd1\xd4\x9b\x28\xc1\xf3\x69\xce\xcb\x0a\x94\x6a\xcd\xf8\xc6\x1a\x16\xd9\xc8\xab\xa1\x2d\x1c\x4a\xde\x4c\x1c\x63\x72\xbf\xc5\x90\x2f\x3a\xae\x40\x46\xcc\x79\x6d\x82\xe9\xc8\x78\x78\xeb\xee\xa5\x4e\xe4\x4a\x12\x8c\x10\xe8\x0c\x19\x0f\x1b\x17\x9f\x5d\xee\x46\x39\x5a\xfb\x7e\xad\x26\xad\x90\xf5\x3a\x5a\xd6\x66\xea\xdc\xe0\xa8\x57\x11\x86\xba\xc2\x29\x1d\x25\x96\x91\xcb\x23\x25\xc3\x37\xb1\x28\x94\xe9\x40\xe9\x01\x62\x12\xcd\xe2\xb4\x02\xa5\xea\x7f\x27\xff\x40\xac\xf0\xf1\x78\x95\x21\x1f\x8f\x4a\xe5\x3d\x4c\xc4\x8c\x47\xb2\x74\xf7\x74\x28\x47\xe0\x8c\x99\x14\xff\xcc\x83\xd9\x97\xa3\x0b\xda\xe5\xed\x5e\xff\xb0\xb2\x4a\xcc\xd0\x7b\xea\xc1\x28\x5e\x93\x9f\x28\xb1\xf4\xf4\xec\xb7\xa6\x5c\x8f\xa4\xee\x2e\x6e\x1a\xfd\x2b\x5e\xad\xc7\x2b\x46\xec\x7b\x67\xc3\xc6\xae\xfe\x5c\x40\x22\x1f\x51\x9b\x58\x7f\x98\xa1\xa9\x84\xec\x26\x9b\x8e\xd5\xc8\xae\x87\x19\xf3\xd8\xee\xe1\x69\xc4\x70\xb4\x86\x39\xc7\xf4\x2c\x4d\xd5\xbb\x44\x5d\x8e\x69\x59\x73\x62\x09\x6e\x95\xa3\x1a\x7a\x16\x25\x9f\x93\x0b\xf9\x15\xd6\xbc\x11\x61\xe4\x12\xf8\xeb\xda\xf9\x8f\x7c\xe3\x56\x32\x7f\x30\xfe\xab\x37\x17\xb4\x56\x9f\x36\xc0\xbc\x86\x31\xb1\x52\xd6\x8c\x9e\x06\x2c\xbe\xe2\x5d\xe5\xb7\x9a\xab\x13\xd8\xa2\xe1\x09\x15\x3a\xa4\x30\xad\xa3\xea\x4c\x8b\x69\xbb\xab\x27\x7a\x2b\x74\x52\x78\x3d\xcd\x64\xa0\x13\xcd\xe2\x0d\x57\xb5\xc6\x73\x34\xa6\x1a\xa0\x84\xe7\x76\x0f\xff\x92\xcd\xc7\xaa\x3c\x9a\xcb\xb5\x37\xb4\xdc\x14\xb8\x45\x12\x71\x87\xb3\x00\xd6\xb7\x22\xab\x81\xe6\x97\x4e\x94\x16\xf9\xdf\x10\xdf\x65\x48\xd4\x91\x93\x6d\x49\x41\x4f\xf8\x32\xa5\xc9\xe9\x0a\xa2\x5d\x65\xc5\x22\xd3\x47\x51\x4c\xd7\x2e\x81\xb0\xa2\xb3\x84\xa9\xb2\x8a\xb8\x6b\x6e\xb5\x45\xe6\x9a\xf1\x32\x09\x36\xbb\x6e\x84\x0b\x5c\x26\x0a\xb7\xf9\xb2\xfc\x69\xeb\x8e\x8b\xa9\x55\xeb\x18\xa6\xc8\x59\x26\xf4\x50\xbc\xda\xaf\xbd\x74\x94\x70\x5d\x01\xef\x65\x60\x3d\xd3\x22\xdb\xdf\x1a\x01\x03\xda\x3b\xbe\x87\x83\x0c\x15\x85\xf3\x9a\xe4\x67\x5a\x76\xf0\x51\x22\xf2\x82\xd3\xec\x75\x5f\xaa\xa3\x02\xda\xbf\x40\x15\x06\xb2\xc7\x3e\xb5\x16\xeb\x3a\x70\xa0\x9d\xd0\x85\xdd\xdd\x87\x9f\x1c\x9d\xef\x77\x4f\x71\x5e\xda\x1d\xfc\x5f\x36\x82\x5c\x30\x93\x5f\x44\xd6\x2a\x60\xdb\x75\xa4\x86\xe1\x2c\x43\x4f\xfc\xd0\x59\xb0\x19\x55\x1b\xb4\xce\x05\xb3\x2b\x8f\x91\xa9\xe6\xe8\x57\xd9\xbd\x2c\x0f\x37\x9f\x0a\x7e\x2c\x41\x29\xff\x66\xfe\xef\x6e\x9a\xe6\xf1\xf1\xb1\x69\x04\xd5\x6c\xe1\x16\x2f\xb6\x5d\x5a\xc6\xcc\xb6\xe3\xd6\x3d\x7c\xad\xea\x8a\x31\x7b\x8d\xa0\x77\x41\xb0\xe8\xd3\xf7\xed\xa7\x0d\xa5\xd5\x93\x52\x4c\x6b\xaf\xc7\x49\xd0\xac\xdd\x03\x96\x1c\x65\x17\xb2\xe5\xa2\x9e\x4b\xdd\x97\xb0\x7e\xac\x92\x98\xbc\x8d\x4f\x6d\x0b\x17\x64\xea\xbd\x87\xa7\x8a\xdb\x9f\x31\xc9\xeb\xa1\x69\x7e\x96\x21\xbe\x66\x03\x57\x4f\x1e\xae\x1f\x04\x40\x2f\x39\x21\xf0\x12\x32\xbe\xd8\xaa\x3a\x5d\xda\x82\x5e\x66\x7d\x92\xd0\x10\x13\x35\xab\xa4\xeb\x07\x08\x7c\x8d\x2a\x06\xc3\xb6\x98\xd6\x41\x68\x6d\xba\xee\xa2\xec\xa6\xd9\x2f\x20\x8b\x87\x0e\xb4\xa6\xee\xa2\xb0\x3e\x88\xd0\xb3\x49\xa2\x70\x72\x29\x86\xc9\x96\xa3\xe4\x64\xa8\xf3\x86\x43\xeb\x23\x09\x93\xd6\x79\x1e\x69\x69\xd6\x4d\xc6\xac\xa5\xbe\x02\xa3\x4b\xeb\xa2\xf8\x51\x1a\xc9\x2f\x17\xc7\xc5\x0c\x7d\x84\xd9\x4b\x2b\x0a\xa8\xeb\xd6\x94\x5d\xf7\xcc\x8d\xae\x52\x97\x0d\x89\x44\x0c\xe6\x4b\xd6\x6d\xe9\xb2\xa8\x8c\xfa\x0c\xfb\x3d\x00\x00\xff\xff\x0c\xa2\xdf\x99\xec\x0d\x00\x00" func runtimeHelpCommandsMdBytes() ([]byte, error) { return bindataRead( @@ -964,7 +964,7 @@ func runtimeHelpDefaultkeysMd() (*asset, error) { return a, nil } -var _runtimeHelpHelpMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x56\xcd\x8e\xdc\x36\x0c\xbe\xeb\x29\x08\xec\x21\xed\x62\xd6\x0f\x90\x43\x80\xa0\x48\x9b\x1c\x02\x24\x48\xd0\xa0\xb7\xa1\x6d\x8e\x45\x8c\x2c\xba\x12\x6d\xef\xf4\xe9\x0b\x4a\xf6\xee\xcc\x66\xd1\x9e\x66\x40\x89\x1f\xff\xbe\x8f\xf2\x1d\x7c\xe6\x2e\x09\x78\x0a\x13\x28\x3d\xaa\x73\xdf\x3d\xc6\x33\x5c\x64\x86\x93\x24\xe8\x65\x8d\x41\xb0\xe7\x38\x00\xc6\x1e\xe6\x6c\xff\x46\x73\x6a\x9c\xab\xce\x9c\x01\x41\x29\x8d\x1c\x31\x3c\xb4\x98\xa9\x2f\x58\x40\x3d\xab\x24\x50\x8f\x0a\xc8\x63\x06\x15\x68\x09\x08\xf3\xc5\xfe\xce\x99\x0a\x26\x47\x9d\x59\x79\xa1\x03\xb8\xd5\x73\x20\xc0\x90\x05\x14\xcf\x25\x6a\xbf\x60\x54\x1c\x08\xe4\x04\xea\x09\x4e\x73\x08\xd0\xe1\x84\x2d\x07\x56\xa6\x6c\x07\xa3\xf4\x94\xe2\x53\x16\xb9\x71\xce\xb9\xdf\x25\x01\x42\xe0\xac\xbb\x6f\x4f\x27\x9c\x83\xc2\x99\x2e\x2d\x47\xab\x2a\xc3\x94\x28\x67\xf8\x4d\x53\xf8\x50\xd2\xd1\xcb\x44\x70\x2c\x1d\xd9\xae\x9f\xe9\x92\x8f\x4d\x81\x1b\x25\x11\x70\x3c\x49\x1a\x51\x59\x22\x48\xbc\x01\xcb\x44\x70\x7c\x57\xfb\x79\x65\x3f\x36\xce\x7d\x23\x2a\x39\x44\x6b\x4d\xa6\xae\xb8\x9f\x5e\xc3\xc4\x56\x66\x85\x5e\xba\x79\xa4\xa8\x9b\x2d\xf6\x05\xb5\x71\xee\xee\x0e\xbe\xce\xdc\x9d\x1f\xb2\x62\x52\xe7\xbe\x3c\x15\xf0\xd5\xda\xfa\xf7\xcc\x7a\x28\xf7\xcd\xf4\xcd\x4c\x19\x17\x6a\xe0\xcb\x55\xa1\x66\x34\x6f\xab\xd6\xba\xdc\xc9\x38\x62\xec\xb3\xf9\x39\x1b\x7e\x87\xb1\x14\xb3\x7a\xee\xfc\xd5\x71\x22\xc0\x05\x39\x60\x1b\x08\xda\x4b\xed\x9e\x21\x28\xb6\x07\x90\x64\xb6\x85\x69\x2d\x26\x4f\x25\x67\xa7\x32\x71\xf7\xd4\x97\x1d\xec\xd8\xc0\x0f\x4f\x11\x3e\xc1\x9a\x58\x4b\xdf\x9a\xa6\x39\xc2\x27\x18\x09\xe3\xcf\x73\xb1\xbb\x36\x1c\xb7\x7a\x54\x5a\x28\x19\xf3\xd4\x53\xa2\x06\x9c\xfb\x2c\x4b\xed\x6f\x37\xa7\x6c\x83\x4f\x32\xc7\x1e\x56\x56\x5f\xcc\xa3\x18\xdf\x0a\x1d\x09\x30\x25\x59\x6d\x40\xb9\x81\xef\x06\xb9\xe7\x76\x3d\x71\x6b\x12\x0c\xa4\x80\xd6\xd3\xee\x7c\xa8\xcc\x95\x85\x92\x55\xf8\x92\x53\x5e\x8a\x5b\xe9\xa0\x65\x68\x87\x17\xe8\xa5\x81\x1b\xe2\x18\x63\x12\x6d\xc4\x28\x29\x1c\x4a\xa3\x2b\xed\x5e\xa7\xce\xa7\x1a\xa9\x93\x20\x29\x77\x9e\x46\x82\x5e\x28\xc7\x37\x0a\x41\xe4\x0c\x83\x48\x7f\x80\x7d\x6c\x9d\xc7\x38\x10\xb0\x96\xe2\xad\xb4\x4c\x7a\xe3\x6c\x6d\x6e\xe0\xaf\xed\x7e\x6d\xb4\x62\x5b\x58\xb1\xb1\xf4\x79\xc8\x57\x8e\xd9\x26\xec\xec\xca\x4f\x9c\x2d\x7d\x7e\x9e\xb0\xb9\x58\xe6\xcf\x9c\xfb\x61\xe8\xa3\x0d\xa9\x25\x5d\x89\x22\xe4\x29\xb0\xe6\xc3\x95\xe8\xde\xc1\x52\x8c\x70\xe2\x40\x11\x47\x3a\x5a\x3c\x43\x7d\x69\x56\x01\x99\x28\x02\x42\xa4\xb5\x22\x99\xe4\xef\xee\xe0\x7d\xd7\x6d\x8c\x2c\x39\x16\xfe\x6d\x8b\xca\xa3\x6d\xaa\x76\xe6\xa0\x0f\x1c\x6b\xaa\xf9\x92\x95\x46\x18\xe7\xce\x43\xe0\x33\xc1\x9f\x3c\xbe\xc9\xf0\x0b\x06\xf5\x32\x0f\x1e\x82\x15\x40\x8f\x4a\x31\xf3\x42\xbf\x36\xce\x7d\xaf\xab\xcb\x54\x36\xdd\x4a\x0a\x4b\xec\x9d\xe0\x65\x29\x3d\x57\xc7\xb1\x6e\x95\x23\x9c\x24\x04\x59\xa9\x37\xad\x60\x15\x47\xa1\xa1\x25\xfd\xca\x95\x28\xea\xed\x68\xe5\x10\x6a\xd5\xea\x39\xc3\x84\x03\x35\xce\x7d\x24\x93\x64\xaa\x53\x9b\x24\x67\xb6\xa1\xd5\x85\x6e\xc8\xb9\xee\xdf\x9d\x1c\x89\xb0\x7f\xeb\xdc\x3d\xe8\xac\x92\x18\xc3\x5b\x78\x0f\x6d\x62\x3a\x3d\x59\x36\xcd\x0f\xbc\x90\xb1\xf9\x86\xf0\x18\x42\x09\x24\xa6\xbb\xda\x5c\xd8\xe2\xb8\xfb\x6b\xda\xbe\x85\x3f\xaa\x7f\xdd\xd7\xff\xb7\x84\x31\xc3\x4a\x21\xd8\xaf\x97\x15\x54\x1c\x6c\x2a\x31\x97\xd1\xdd\x5f\x2b\xf3\x19\xbb\x8c\x38\x6b\x42\x1e\xbc\x3e\x9c\x24\xad\x98\xfa\x9b\x60\x55\x95\x37\xfb\x0d\x4c\x9d\x96\xf6\xa6\x4f\x77\xff\x74\xfc\x8c\xbc\x63\xec\x05\xff\x04\xb0\xbb\xbb\x7b\x90\xc9\x24\xf0\x1f\xce\xdb\x85\x67\x85\xce\x59\x65\xe4\x7f\xc8\xdd\xc3\x14\xe6\x81\xcd\xf9\xc3\xe3\x14\x90\x63\x6d\x40\x79\x61\xdf\xe4\xed\x74\x67\xe9\x2a\xe9\x5c\x33\xa8\x4d\x82\x2e\x11\x2a\x19\x6e\x02\x59\xa3\x83\x1d\xae\xd4\x64\x22\xbc\xc2\xdd\x31\xaf\x37\x81\x61\xe5\x4b\x54\x7c\x04\xcf\x83\x0f\xd6\x47\xe3\x1a\xc5\x81\x23\x5d\x85\x72\xf0\x32\xd8\xcd\x62\xb0\xc5\x8a\x7d\x5f\xd4\x18\x30\x0e\x33\x0e\x54\xde\x7b\x2b\xbf\x82\xd5\xf7\x98\x1e\x71\x9c\x02\x1d\x9e\x14\xbc\x3f\x12\x85\xcf\xb6\x1c\xb7\x0a\x4a\xb3\x56\x99\x43\xff\xea\x0b\xed\xea\x0b\xbd\x5d\x2e\x4b\x12\x12\xd9\x94\x28\xf6\x65\x2b\x96\x8f\x87\x32\x26\x38\xee\xd4\x3e\xd6\x50\xb6\x47\xa0\xa5\x0e\xab\x8e\xed\x1d\xc9\x5e\x92\x96\xe7\x98\xb0\xf3\x6e\x7f\x9f\x2d\x5c\x15\x42\x27\xb1\x4b\xa4\xb4\x57\x50\x3e\x3b\xb6\x31\x18\x8c\xc5\x59\x30\xb1\xcc\xe5\xee\x89\x87\x39\x95\xd5\xe8\xf6\xe9\x73\xdc\x3e\x9c\xe0\xa3\xac\xf6\x7e\x1d\x2c\xb6\x2d\x72\x93\x78\x09\x53\x50\x38\x3e\xf4\x34\xa9\x7f\xf1\x05\xa0\x1b\xe9\x5c\xd5\xde\x26\xee\x29\xc9\xc2\x3d\x35\xee\xdf\x00\x00\x00\xff\xff\x94\x3d\xb0\x96\xcb\x09\x00\x00" +var _runtimeHelpHelpMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x56\xcd\xae\xdb\x36\x13\xdd\xf3\x29\x06\xc8\x22\xc9\x85\xaf\x1e\x20\x8b\x00\xc1\x87\xe4\x4b\x17\x01\x92\x36\x68\xd1\x9d\x47\xd2\x58\x1c\x98\xe2\xa8\xe4\x48\xba\xee\xd3\x17\x43\x4a\xbe\xf6\x4d\xd0\xae\x6c\x0c\x39\xff\xe7\x1c\xf1\x15\x7c\xe1\x2e\x09\x78\x0a\x13\x28\x3d\xa9\x73\xd5\xc0\x19\x10\x94\xd2\xc8\x11\xc3\x63\x8b\x99\xfa\x72\x0e\xd4\xb3\x4a\x02\xf5\xa8\x80\x3c\x66\x50\x81\x96\x80\x30\x5f\xec\xef\x9c\x09\x30\xf6\xc0\x51\x67\x56\x5e\xe8\x00\x6e\xf5\x1c\x08\x30\x64\x01\xc5\x33\xc7\x01\xb0\x5f\x30\x2a\x0e\x04\x72\x02\xf5\x04\xa7\x39\x04\xe8\x70\xc2\x96\x03\x2b\x53\xb6\x83\x51\x7a\x4a\xf1\x5a\x45\x6e\x9c\xfb\x2e\x20\x13\xc5\xe2\xd3\xc9\x38\x5a\xaa\x16\xd3\x01\xa6\x44\x39\xc3\xff\x34\x85\x8f\x0d\x7c\xf7\x9c\x81\x22\xb6\x81\xac\x8d\xe3\xfb\x23\x4c\x49\xc6\x49\xe1\x64\xa5\x5f\x26\x8e\x83\xdb\xdc\x73\x03\x9f\x92\x8c\x10\x65\x05\x89\xb0\xfa\x2d\x7a\x2f\xdd\x3c\x52\x54\x54\x96\x08\x19\x2f\xa5\xd3\x34\x47\xc0\x6b\xe6\x3c\x77\x1e\x30\xbb\xe3\xfb\x32\xc0\xe3\x01\xd4\x32\x8f\x84\x31\xdf\x56\x54\x26\xa2\x97\x89\xe0\x58\xee\xc1\x1b\x33\xd4\x0b\x14\x95\x92\x85\xa6\x27\xea\x66\x25\x77\xd3\xda\xdb\xc6\xb9\x4f\x92\x00\x21\x70\xd6\x7d\x56\x3d\x9d\x70\x0e\x0a\x67\xba\xb4\x1c\x7b\x8e\x43\x2e\x75\x6d\x55\xec\xe7\x67\xba\xe4\x63\x53\xfc\x47\x49\x04\x1c\x4f\x92\xc6\xda\x8e\xc4\x3b\xef\x4c\x74\xf5\xbe\xb1\x1f\x1b\xe7\x5e\xbd\x82\x6f\x33\x77\xe7\xc7\xac\x98\xd4\xb9\xaf\xd7\xae\xbe\x59\xd1\x7f\xcd\xac\x87\xd2\x9e\x99\x7e\x33\x53\xc6\x85\x1a\xf8\x7a\xd3\xbd\x19\xcd\x7b\x9b\xfc\xde\x5d\x36\x3f\x77\x91\x19\x3a\x8c\xa5\x86\xd5\x73\xe7\x6f\x8e\x13\x01\x2e\xc8\xc1\x16\x09\xed\xa5\x4e\xcc\x22\x28\xb6\x07\x90\x64\xb6\x85\x69\x2d\x26\x4f\xa5\x01\xa7\x32\x71\x77\x6d\x67\x0f\x66\xbd\x7c\x91\x85\x2a\x72\xe6\x94\x6d\xac\x49\xe6\xd8\xc3\xca\xea\x8b\x79\x14\x43\x6f\x01\x37\x01\xa6\x24\xab\x4d\x23\x37\xf0\xeb\x1c\xdd\xcf\xa6\x6b\x9d\xc1\x40\x0a\x68\x83\xe8\xce\x87\x4a\x03\x59\x28\x59\x59\x2f\x17\xe6\xa5\xb8\x95\xb6\x57\xe3\x8f\x7a\xba\x40\x2f\x0d\xdc\x2d\xc9\xb6\x93\x68\x5b\x42\xa9\xe0\x50\xa6\x53\x01\xf4\xf3\x35\xfd\x72\xda\x28\x11\x24\xe5\xce\xd3\x68\x00\xa6\x1c\x5f\x2b\x04\x91\x33\x0c\x22\xfd\x01\xf6\x59\x77\x1e\xe3\x40\xc0\x5a\x7a\xb7\xd6\x32\xe9\x9d\x73\xd3\x34\xc7\x06\xfe\xdc\xee\x57\xa4\x2a\xb6\x65\x95\x54\x87\xf8\xbc\x99\x1b\xc7\x6c\x6b\x71\x76\xe5\x07\xcc\x95\x31\x3f\xaf\xc5\x5c\xac\xf2\x67\xa0\xfc\x61\xd1\x47\xdb\x51\x4b\xba\x12\x45\xc8\x53\x60\xcd\x87\x1b\xfa\xbc\x87\xa5\x18\xe1\xc4\x81\x22\x8e\x74\xb4\x7c\x16\xf5\xa5\x59\x37\xa5\x40\x88\xb4\xd6\x48\x15\xce\x1f\xba\x6e\x43\x51\x29\xb1\x60\x66\x13\x3d\x8f\x26\x17\xed\xcc\x41\x1f\x39\xd6\x4a\xf3\x25\x2b\x8d\x30\x1a\xd5\x03\x9f\x09\x7e\xe7\xf1\x75\x86\x37\x18\xd4\xcb\x3c\x78\x08\x85\xc5\x4f\x4a\x31\xf3\x42\x6f\xab\x48\x19\x90\x8c\x19\xd3\x3d\x0d\xb0\xe4\xbe\xea\x87\x09\xdc\x73\x73\x1c\x77\x79\x38\x49\x08\xb2\x52\x6f\xf8\xc6\x0a\xe8\x06\xbe\x57\xf2\xfc\xe4\x4a\x14\xf5\x76\xb4\x72\x08\xbb\x3c\x72\x86\x09\x07\x6a\x9c\xfb\x4c\x46\xa3\x54\x97\x36\x49\xce\x6c\x3b\xab\x82\x6f\x91\x73\xd5\xf2\x1d\x1b\x89\xb0\x7f\xe7\xdc\x03\xe8\xac\x92\x18\xc3\x3b\xf8\x00\x6d\x62\x3a\x5d\x2d\x1b\x4f\x07\x5e\x4c\x5e\xe3\x1d\xde\x31\x84\x92\x48\xd4\x53\xaa\xc3\x85\x2d\x8f\x7b\xb8\x45\xed\x3b\xf8\x7f\xf5\xaf\xda\xff\x5f\x02\x87\x19\x56\x0a\xc1\x7e\xbd\xac\xa0\xe2\x60\x23\x89\xb9\x8c\xee\xe1\x96\x98\xcf\xb1\xcb\x8a\xb3\x26\xe4\xc1\xeb\xe3\x49\xd2\x8a\xa9\xbf\x4b\x56\x49\x79\xa7\x49\x60\xe4\xb4\xb2\x37\x7a\xba\x87\xeb\xf1\x73\xe4\x3d\xc6\xde\xf0\x0f\x01\x76\x77\xf7\x00\x32\x19\x03\xfe\xc5\x79\xbb\xf0\x4c\xd0\x39\xab\x8c\xfc\x37\xb9\x07\x98\xc2\x3c\xb0\x39\x7f\x7c\x9a\x02\x72\xac\x03\x18\x0d\xb0\xaf\xf3\x76\xba\xa3\x74\x95\x74\xae\x15\xd4\x21\x41\x97\x08\x95\x2c\x6e\x02\x59\xa3\x83\x3d\x5c\xe9\xc9\x38\x78\x13\x77\x8f\x79\x2b\x04\xe5\x33\x77\x89\x8a\x4f\xe0\x79\xf0\xc1\xe6\x68\x58\xa3\x38\x70\xa4\x9b\x54\x0e\x5e\x26\xbb\xd3\x05\x93\x55\xec\xfb\x42\xc6\x80\x71\x98\x71\xa0\xf2\x45\xb5\xf6\x6b\xb0\xfa\xad\xa3\x27\x1c\xa7\x40\x87\x2b\x81\x77\x61\x2f\x78\x36\x6d\xdc\x3a\x28\xc3\x5a\x65\x0e\xfd\xdd\xd7\x6f\x3b\x2d\xa2\x08\x89\x6c\x2d\x14\xfb\xa2\x82\xe5\xe5\x51\xf6\x02\xc7\x1d\xcb\xc7\xea\x65\xba\x01\x2d\x75\x58\x89\x6b\xcf\x9f\xec\x25\xd5\x07\x03\x61\xe7\x5d\xa6\xae\xc8\x98\x75\x5c\x91\xdf\x49\xec\x12\x29\xed\x25\x97\x37\xcb\x36\x77\x0b\x63\x79\x16\x4c\x2c\x73\xb9\x7b\xe2\x61\x4e\x45\x0a\xdd\xbe\x6e\x8e\x75\xe6\x0d\x7c\x96\x95\x16\x4a\x07\xcb\x6d\xc2\x6d\x9c\x2e\x69\x4a\x14\x8e\x8f\x3d\x4d\xea\x5f\x3c\x4a\x74\x43\x99\xab\x64\xdb\xd8\x3c\x25\x59\xb8\xa7\xc6\xfd\x13\x00\x00\xff\xff\x08\x50\x49\x38\xdc\x09\x00\x00" func runtimeHelpHelpMdBytes() ([]byte, error) { return bindataRead( @@ -984,7 +984,7 @@ func runtimeHelpHelpMd() (*asset, error) { return a, nil } -var _runtimeHelpKeybindingsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x5a\x5f\x77\xdb\x38\xae\x7f\xbe\xf8\x14\xbc\xee\xc3\xb6\x67\x1d\x37\xce\xbf\xfe\xb9\x7b\x7a\x4e\x9a\x46\x9b\x4e\x27\x6d\xa6\x49\xa6\xdb\xbd\xf3\x20\x5a\xa2\x63\x6e\x28\x52\x43\x52\x71\xbc\x7b\xf6\x7e\xf6\x7b\x00\x52\x12\x69\xa7\x3b\x79\x60\x28\x12\x04\x01\x10\x00\x7f\x90\xfc\x8c\x7d\x12\x9b\x85\xd4\xb5\xd4\x77\x0e\xe0\x52\x56\xd6\xb0\x15\x77\x8c\xb3\x56\x09\xbf\x32\x96\x33\xb3\x64\x2b\xe3\xef\xc5\xc6\x31\xbf\xe2\x9e\x35\xfc\x5e\x30\xe9\x99\xe0\x6e\xc3\xb8\xae\x59\x6b\xd6\xc2\x2e\x3b\xc5\xbc\x61\x9d\x13\x34\xc6\x95\x82\x7e\x15\xb7\x82\x2d\x3b\xa5\x36\xac\xea\x9c\x37\x8d\xfc\x27\x5f\x28\x81\xd4\x1b\xd3\x59\xa6\xe4\xbd\xd4\x77\x33\x80\x33\x9a\x65\xf7\xa3\x44\xb4\xd4\x79\x63\x45\xcd\xa4\xf6\xc2\x6a\x8e\x6c\xa4\x66\x0d\x49\x2a\x97\xac\x5a\x71\x7d\x27\x6a\xb6\x96\x7e\xc5\xfc\x4a\xb0\xf2\x1d\xc3\xe5\x25\x54\xa6\x69\x50\x14\x63\x71\x1f\x56\x71\xcd\xb8\x72\x86\x2d\x04\xe3\x75\x4d\x1c\x69\xc1\x52\x2a\xc1\xca\xff\x7b\x39\xab\x8c\x5e\xca\xbb\x97\xc4\xfa\x65\x2f\xc2\xec\x1f\xce\xe8\x92\x71\x07\xb5\x74\x55\xe7\x9c\xa8\xd9\x42\x28\xb3\x9e\x31\x56\x18\xcb\x38\x53\xd2\x79\x34\x12\xf2\xaa\xc5\x92\x77\xca\x67\x3a\xc4\x6d\x90\x0f\x5b\x1a\xdb\x70\x8f\x56\xaa\x61\xb1\x09\x5a\x4c\xd1\xd4\xdc\x09\xe6\x84\x20\x4a\x81\x42\x23\x3f\xe9\x48\xb8\x59\xdc\xa8\x31\x56\xe0\x52\xbb\xb7\xb4\x52\xe8\x5a\x6d\xc2\xde\xa8\x3a\x88\xc7\x56\x71\xcd\xbd\x34\xda\xe1\xea\x35\x1e\x55\x2a\x52\x7a\x1a\x68\x96\x9e\x60\xc3\xea\x4c\x04\x28\xdf\xb1\x95\x50\x6d\xbf\x10\x17\x95\xec\x39\x4f\x15\xf0\xa2\x1e\xd4\x4e\x54\x76\x4c\xa2\xba\x95\xea\x6a\x51\x43\xdc\x3f\xd5\xa6\x36\x55\xd7\x08\xed\x5f\xcc\x00\x3e\x2e\xff\xd0\xe8\xb5\x11\x8e\x69\xe3\x99\x78\x94\xce\x4f\x87\x63\x74\xb2\x69\xd1\x9b\xac\xe0\x1e\x5d\x71\x16\x1d\x77\x2d\x95\x62\xf7\xda\xac\xa3\x72\x86\xd5\x26\x38\x06\xd2\xc0\xf7\xb8\x1c\x7d\x14\x25\xe3\xbd\xd4\x7f\x66\xdc\x5a\xb3\x76\xb8\xa2\x31\x0f\x82\xad\x8d\xad\xd9\x62\x43\xff\x67\xec\xcc\x5b\xc5\x94\x58\x7a\xb2\x9b\x95\x77\x2b\x4f\x64\x80\x4c\xaa\xce\x3a\x63\x71\x25\x3e\x39\xcf\x6d\x20\x1b\xd4\x16\x4c\x49\x2d\xa6\x34\x58\x21\xa7\xae\xa5\x7e\x6d\xd6\x3a\xec\xe6\x57\x02\x7a\x36\x3f\xe2\xb1\xe8\x96\x4b\x61\x13\x25\x56\x46\xd5\xcc\xad\xe4\x32\x9c\x3f\x06\x5c\xa4\x75\x82\xd8\xa2\x9d\x19\xaf\x82\x43\x78\xc3\x9c\x50\xa2\xf2\x6c\xbd\x42\x77\x6f\xcc\x43\x88\x39\x78\xf6\x8c\x7d\x15\xd1\xee\x64\x0d\x80\x1b\xdc\xaf\xf7\xde\x86\x6f\x30\x62\xac\x58\x98\x4e\xd7\xac\x73\x48\x47\x71\xf6\x07\x87\x17\x3c\xf7\x9c\x57\x2b\xb8\x17\x1b\xf4\x8c\xc0\xc1\x1b\x86\x91\x48\x82\xcd\x00\xd0\xb5\xc5\x23\x6f\x5a\x25\xa6\x38\x87\x5c\x58\x89\x26\xdf\xdb\x94\x94\x51\x74\x6d\xc8\x1a\x61\xf0\x9f\x34\x68\x05\x3a\x2d\xf9\x83\xe9\x54\xcd\xda\x8e\x9c\x0d\x96\x46\x29\xb3\x46\x11\x63\xd4\x95\x4f\x49\x05\x50\x96\x25\x3e\xc3\xbf\xe0\xbf\x26\xc8\xf6\xfb\xe4\x2d\x9b\xdc\xea\xda\x4c\xa6\x71\xe4\xef\x38\xf2\x55\xd4\x66\x02\xff\x46\x72\x80\x8f\x1a\xf3\x86\x44\xb9\x51\x04\x81\x5d\x7d\x17\x72\xd8\x1f\x18\x63\x74\x5d\xdb\x69\x28\xdf\x91\x92\x7f\xb9\x17\x9b\xca\x34\x0b\xf3\x8e\xfd\x25\x98\xe3\x5d\xb9\x95\x52\x90\x8e\x72\x65\x3c\xc7\x29\xe5\x88\x90\x7e\x46\x57\xa0\xac\x56\xad\xb8\xd4\x2c\xe6\x3c\xc7\xd6\x2b\xa1\xf1\xd0\x82\x18\x21\x83\x0c\x66\x96\x4b\x92\x67\xcd\xb5\x67\xa7\xca\xef\xa1\x7f\x80\xe3\x0f\x21\x31\xfc\xde\x49\x3f\xc8\x4b\x92\x4a\x8f\x49\x5a\x30\x67\xde\xa6\xa6\x63\x8c\xb1\x09\xad\x47\x5b\x5d\xf3\x07\x31\xfd\xa5\x93\x7e\x30\xd8\xb3\x67\xec\x7d\x74\xac\x5e\xae\x2d\xa1\x89\x3b\x47\xb7\x23\x8b\x3e\x8a\xaa\xf3\x82\xf1\x9e\x9c\x8d\x1a\xb1\xc6\xd4\x82\x3d\x47\xf5\xa1\xa4\xf4\xd4\xb3\x2c\x5f\xcc\xd8\x75\x48\x08\xad\x15\x2d\xc6\x8c\x1f\x1d\x38\x04\x47\x19\x89\xdf\x96\x99\x25\x9e\xd6\xa6\x45\x6d\xfa\x05\xed\xba\x1e\xf4\xf9\x4c\x89\x45\x68\x32\x4e\x6b\x85\x73\xac\xa4\x05\x65\x70\xb5\x76\x5d\x97\x83\xbc\x94\x8b\x16\xa2\x57\x0a\xf3\xad\xac\x56\x61\xd8\xad\xcc\x1a\xc8\x6f\xd6\xc6\xe2\xe5\xc7\x6a\x69\x45\xe5\x8d\xdd\xf4\x7e\x2b\xf5\xd2\x2c\xb8\xdd\x3e\xe5\x60\x30\xcd\x26\xe8\x7d\xe8\x19\x93\x64\xc3\x44\xd1\x3d\x9c\x47\x6d\x6f\x30\xed\x36\x82\xeb\x78\x79\x43\xb8\x38\xd7\x46\xff\xc9\x33\xd9\x34\xa2\x96\xdc\x0b\xb5\x19\x8c\x4f\x39\xad\x67\x99\x2b\x9b\x98\x75\xca\x16\x9d\x07\xa9\x9d\x17\xbc\x66\xff\xe8\x9c\x67\xad\xe2\x95\x88\x09\xcc\x26\x11\x18\x35\xd9\x3e\xcb\x2d\x97\x84\x31\x96\x83\xd7\x86\x70\xff\x2b\x45\x7b\xbc\x91\xca\xdd\xf3\x22\x9a\xe4\xbc\x82\xde\xe4\x1f\xff\xf1\xd8\x02\xef\x29\x23\x57\x2a\xc3\xa9\xf0\xb6\x15\x41\xce\xd4\x06\x28\x3a\xfe\xa7\xe3\x8a\x59\x1a\xc9\x61\x21\x82\xca\x35\xe3\x4b\x2f\x2c\x06\xc9\x73\x6d\xa2\x05\x5d\x8b\xc6\x48\x6f\x7e\xb2\x7e\x65\xb4\xb7\x46\x05\x53\x46\x66\xc4\xa4\xbf\x14\x93\x90\xb1\x7c\xcd\x84\xab\x78\x8b\xb7\xf2\xef\x9d\xd0\x95\x70\x00\x5f\xb4\xda\x30\x8b\x46\xa7\x0b\xd5\x09\x4a\x0c\x7d\x44\xe3\xdd\x4e\x38\x49\x38\x1f\x00\x4e\x9a\xd9\x83\x0c\xdc\x0a\x3c\x7b\x13\x64\x83\x3e\xd5\xb8\xae\x6d\x8d\xc5\x55\x44\xba\x34\xb6\x5f\x3b\xc3\x5d\xc5\x80\x70\x2c\x5f\x2f\x78\x75\x4f\x20\x23\xdc\x06\x9c\x79\x61\x1b\xa9\xb9\xda\x5b\x70\xc4\x47\x78\x08\xc6\x62\xca\xf7\x3d\x0a\x89\x43\x4d\xe7\x3c\xdc\x09\xdf\x5f\x57\xd2\x3b\x72\x10\x04\x15\xa8\x07\x5f\x98\x8e\x2e\x65\x26\x1e\x84\xf6\xc8\xc0\x9a\xee\x2e\x20\xbb\x7e\x17\xf4\xea\xf1\x09\x9c\xc0\x84\x17\x2e\xbe\xb8\xaa\x47\x76\xc6\x36\xb8\xcb\xb6\x19\x99\x59\x7a\xa1\xd9\xf3\x45\xe7\x09\x5e\x70\xb5\xe6\x1b\xf7\x02\xe8\xe6\x1d\x93\xc6\xfe\xe3\x7c\x51\xce\xd8\xd6\x1d\x25\x97\x11\x7c\xe2\x29\x38\x56\xfe\xf6\x38\x5f\xfc\xef\xfc\x7f\x8e\x3f\x94\x53\x34\x6a\x63\x9c\x1f\x64\x73\xe1\x94\xc8\xbd\x30\x08\xe9\x8e\x42\x04\x17\xfc\x50\xd4\x84\x2d\x7e\x16\x4b\x1f\x6f\xc2\x86\xeb\x0d\xa9\x5f\xad\x8c\x25\xad\x50\xfb\x69\xa6\x7e\x0c\x5e\x54\x9b\x21\x79\xd4\xae\xc2\x04\x19\x9d\x93\x26\x81\xeb\x6c\x8e\x2b\x94\x98\x32\x4c\xe7\xf2\xf8\xa3\xe3\xa6\xa0\x78\x8f\x47\x8b\xce\x5b\x4e\x59\xb3\xd9\x36\x72\xf9\x5b\xb7\xbf\xff\x6a\x59\x0e\x9e\x4e\x98\x4e\x38\x92\x87\x60\x4b\x62\xb9\x17\xd3\x98\xf3\xa4\x0f\xc9\x2b\xf0\x58\x1a\x0b\xe5\xb8\x0d\xd9\x05\x6d\x1e\x8c\x5a\x71\xe4\x35\x26\x80\x91\x70\x06\x70\x61\xd6\xe2\x41\xd8\x29\x73\xa6\x11\x89\x91\x11\x20\xe0\xbd\x4f\x31\xd0\x63\x88\xe0\xf1\x61\x57\xe6\x5a\x51\xc9\xa5\xac\xa2\x41\x60\x74\x05\x5c\x52\x8b\xa5\xd4\x82\xdc\x4a\xb3\xa5\x35\x4d\x14\xa6\xbf\x04\x43\x76\x56\x9b\xc0\xd8\xaf\x0c\x7a\xda\x36\x23\xc4\x35\xe1\x96\xde\x4a\x6d\x19\xa8\x49\x14\xef\xb9\x63\x16\xb5\x5d\x45\x77\xae\x85\xe1\x94\x7b\xd1\xc9\xc1\x10\x38\x62\xd4\x95\x94\x8b\x3c\xca\xd9\xdf\xcc\x52\x6f\x83\x9c\xdd\x34\x89\xc7\x36\x32\xc1\x7c\xf9\x41\x28\xe1\xc5\x37\x63\x6b\xf4\xbe\x21\x57\x5e\x08\xac\x0e\xb0\xe8\x42\x0b\xf7\x92\x11\x84\x44\x17\x41\x81\xf2\xdc\x44\xb1\x56\x4b\x04\xa7\x88\x37\x87\x33\xc1\x54\xf6\x8c\xc9\x1b\x61\x9b\x03\x82\x4e\xa1\x3b\x02\xa1\xda\x04\xf7\x91\x9a\xb1\xf2\xca\x0a\x62\x50\x09\xb7\xf7\xee\xca\x1a\x44\x69\x6e\xef\xdd\x27\x2a\x3d\x48\xdb\x4a\xc9\xea\x3e\x5c\xb3\x7f\x2e\xa7\x20\x35\x22\x3e\xca\xc9\x63\xa9\x15\x30\xf6\x32\xc2\xe8\xf2\x94\x04\x2f\x7b\xe0\x5b\x5e\xa3\x35\xcf\x43\x40\x5c\xc7\x63\x0b\x78\x80\x80\x3c\x5f\x20\x16\xef\x03\x22\xde\xce\x78\x1f\xf9\x4d\x2b\x58\x39\x9e\x80\xd4\x11\xec\x2f\xcc\x23\x7b\x4e\x5b\xfd\x46\xfe\xce\xa4\x03\xde\x79\x83\xb9\xac\xa2\x42\xd5\xa1\x4d\x16\x9b\xa8\xfc\x2c\x18\xe5\x67\xa9\xbb\xc7\x98\x3a\x95\xe1\x75\x00\xdd\xdf\x77\xed\xa2\x12\x42\xaa\x23\x22\x31\x6b\xad\xb9\xb3\xbc\xc1\x92\xd9\x34\x38\xeb\x8c\xd1\xff\x1d\xc0\xfc\xad\xce\xc1\xfc\x47\x8f\x79\x98\xe2\xaf\x35\xce\xc9\x58\x79\xd7\xd2\x05\x60\xa9\x37\x4f\xd4\xae\x23\xfc\x5f\x6c\xa8\x5c\x8a\x24\x50\x06\xf6\x9f\xc4\xa6\x8c\xde\xde\xe7\x5a\xcc\x6a\x7f\x72\x3f\xc2\xdb\xfd\xc5\x96\x82\x59\x3a\xad\x01\xe1\x8e\xa5\xc7\x13\x85\xe5\x20\x0e\x5e\xa0\x5c\x6a\x17\xd2\x6c\x94\x6a\xd0\x2b\x65\x4c\xfc\x42\xfe\xd9\x8c\x75\x1f\xe1\x96\x98\xf3\xfb\x7a\xa9\x99\x31\x72\x7b\x34\x13\xbd\xa7\x18\xe1\xb7\xf1\x2b\x4c\xcc\xe9\xd8\xf6\x66\x21\xd8\xe0\x8c\x2e\xf3\xdb\x36\x76\x3e\x98\xb5\x8e\xdd\x2b\x7e\x27\x86\x71\x7c\x48\xe6\x30\xf6\x62\xf7\x2b\x96\x95\xb1\x7f\x8d\xa9\x34\xf6\xcf\x75\x0d\xd7\xe4\xc1\x37\x26\x8c\xf7\x4f\xe3\xcc\x6d\x1b\x3b\xc4\x3a\x74\x89\x75\xe8\x06\xd6\x18\xeb\x63\x2f\x99\x1e\x27\xc6\x67\x9a\xbe\x34\x0f\xe2\x67\xa9\x85\xbb\x6d\xc7\x3e\x6d\x31\x66\x8f\xb0\x30\xcf\x26\xbd\x04\x52\x8b\x5c\xf4\x2f\xcb\x6c\xec\x5c\xd7\x71\xe4\xa3\x76\xc2\xfa\xcf\x62\xad\xc6\xa7\x6b\xcc\x92\x30\xe4\xcb\xb8\x07\x9c\x09\xc4\x37\x91\xe6\x86\x2f\x00\xeb\x0e\x6a\x4e\x95\x0a\xff\x1d\x14\x52\xd7\xd4\x7c\x16\x8f\x9e\x3a\x57\x56\x3c\x48\xd3\x39\xc0\x22\x0f\xb0\xae\x83\x33\xd3\x6e\xe0\xac\x43\x43\x07\x59\x3f\x74\xad\x92\x15\xf7\x22\x3c\xd1\x7e\x51\xbc\x5a\x68\x1f\xc4\x96\x46\xc3\x97\xce\xe7\x03\x57\xdc\xf9\x5e\x2f\x14\xe3\x4b\x2b\x74\x21\x95\x80\x70\x62\x78\x52\xd1\x0d\x06\x07\x08\xc4\x71\x74\x7c\xa0\xb9\x0b\xae\x96\x71\xa6\xef\x86\x35\x89\x11\x47\xe3\x5d\x71\xcb\xef\x2c\x6f\x57\x83\x8e\xc3\x08\xa9\x7f\x63\xee\xee\x94\xb8\x10\xaa\x8d\xdd\xaf\x9d\x12\x16\x7e\xea\x9a\x96\xd6\x9f\x29\xc1\xd1\xe5\x7c\xe7\xe0\x7a\x25\x94\xba\x34\xb5\xc0\xcc\x82\xf8\x97\xfa\x58\xd5\x51\x83\xba\x9d\xd6\x35\x9a\xbd\xdf\x0c\xfb\xb8\x4d\xff\xff\xba\x55\xd2\xc3\xad\x76\xf4\xff\xd7\xf0\x78\x11\xfe\xf5\x6b\xc2\x53\x10\xe6\x92\x57\xd6\xc0\x95\xe2\x9b\xd0\xbb\xee\x1c\xd5\x70\xcf\x6f\xb5\x7c\x64\x46\xab\xcd\x0b\xb8\xae\xac\x51\x0a\xed\x44\x9d\x60\x8b\x96\xaf\xf5\x65\xa7\xbc\x0c\x71\xb2\x33\x10\x6c\x0a\x5f\x45\x63\x1e\x44\x4a\x18\x46\x4e\x95\x4a\x06\x1d\x5c\xdf\xcb\x36\xa5\x1a\x12\x1d\x19\xea\xc6\x5c\x72\x5f\xad\xa4\xbe\x7b\x6f\xd1\x19\xe9\xb2\xdc\xad\xcc\xe8\xd6\x6c\x0c\xbd\x04\x8d\xb9\xe8\x79\x7c\x23\x83\x25\xd2\x42\x8c\xef\x40\x02\xd5\xa2\xf3\xde\x68\xf7\x22\x24\x91\x4b\x1c\xbb\x42\x64\x18\xba\xa9\x3c\xe3\xf5\x2c\x5d\x7c\xab\x14\x12\x12\x26\xb2\x21\x29\xd1\xf5\x90\xd6\xee\x31\x3d\xdd\xb6\x40\x56\x0b\xe1\x4a\x41\x7a\xdb\xc6\x7f\x31\x84\xcd\x5a\xd3\x00\x76\x62\x32\x0a\xa1\xb6\xed\xb9\x17\xa6\x21\xf7\x8b\x31\xd8\x07\x26\x39\xd8\xf9\xa3\xf4\xc1\xa1\xe0\x8c\xeb\x4a\x28\xb8\xb2\x52\x7b\xb8\xe2\x9d\x0b\xc1\xec\xf9\x02\x8a\x39\x14\x07\x50\x1c\x42\x71\x04\xc5\x31\x14\x27\x50\xbc\x82\xe2\x35\x14\x6f\xa0\x98\xef\x43\x31\x9f\x43\x31\x3f\x80\x62\x7e\x08\xc5\xfc\x08\x8a\xf9\x31\x14\xf3\x13\x28\xe6\xaf\xa0\x98\xbf\x86\x62\xfe\x06\x8a\x83\x7d\x28\x0e\x90\xcf\x01\x14\x07\x87\x50\x1c\x1c\x41\x71\x70\x0c\xc5\xc1\x09\x14\x07\xaf\xa0\x38\x78\x0d\xc5\xc1\x1b\x28\x0e\xf7\xa1\x38\x9c\x43\x71\x88\x1b\x1e\x42\x71\x78\x04\xc5\xe1\x31\x14\x87\x27\x50\x1c\xbe\x82\xe2\xf0\x35\x14\x87\x6f\xa0\x38\xda\x87\xe2\x68\x0e\xc5\xd1\x01\x14\x47\x28\xd9\x11\x14\x47\xc7\x50\x1c\x9d\x40\x71\xf4\x0a\x8a\xa3\xd7\x50\x1c\xbd\x81\xe2\x78\x1f\x8a\xe3\x39\x14\xc7\x07\x50\x1c\x1f\x42\x71\x8c\x2a\x1c\x43\x71\x7c\x02\xc5\xf1\x2b\x28\x8e\x5f\x43\x71\xfc\x06\x8a\x93\x7d\x28\x4e\xe6\x50\x9c\x1c\x40\x71\x72\x08\xc5\xc9\x11\x20\xfe\x0b\x59\x0d\x7b\xa7\xd4\xbe\xa7\xf6\x8c\xda\x0f\xd4\x9e\x53\x5b\x50\xfb\x57\x6a\x2f\xa8\xfd\x48\xed\x4f\xd4\x7e\xa2\xf6\x67\x6a\x2f\xa9\xfd\x4c\xed\x17\x6a\xaf\xa8\xfd\x85\xda\xaf\x61\x57\x6a\x6f\xa8\xbd\xa5\xf6\x57\x6a\xbf\x51\xfb\x37\x6a\xbf\x53\xfb\x77\xe8\x2b\x92\xeb\xdf\x61\x00\xac\x8a\xbb\x55\x60\x87\x8e\x11\x67\xce\xb8\xe5\x3e\xb0\xd4\xb5\xb0\xae\x32\x36\xcd\xd7\x5f\x54\x3d\x3e\x60\x76\x38\x77\x15\x04\xf8\x05\xe7\xe4\x58\x7f\x1c\x44\x31\x3c\x28\x88\x36\xfd\xab\xc8\x21\x84\x34\x96\x8d\x6a\x88\x34\x63\x21\x0b\xbd\x34\xa8\xe2\x7d\x86\x31\x25\xeb\x5a\x89\xd0\x0f\x6e\x4e\xdd\x6f\x2b\x21\x14\xdd\x73\xfd\x03\xf9\xfa\xf8\x38\x72\xa0\xc7\xb0\x34\xbc\xe6\x62\x1f\x76\x90\x0a\x0b\x2f\x03\x3b\xcb\xe3\x6b\xce\x2d\x40\x7e\xdb\x4e\xde\xb2\xf4\x6f\xd2\x03\x88\xc9\x34\x50\xe0\xf6\x19\xcd\x64\x44\x16\x3d\x0d\x09\x91\x12\x4d\x12\x2c\xd1\x13\x11\xbe\x7f\x82\x11\x8d\x47\x9a\xeb\x95\x5c\xfa\x54\xa6\x49\x0f\x2c\x32\x8a\x54\xa6\xc9\x88\x38\x32\x9a\x74\xbb\xc9\x08\x45\x32\x9a\x54\xee\x49\x82\x51\x7a\xa2\x53\xe5\x73\xa9\x27\x43\xa1\x32\x52\xe4\xca\x4f\x06\x30\x92\x90\xe4\x56\x9e\x24\x78\x26\x21\xca\x0d\x3d\xc9\x80\x4e\x42\x96\x0b\x3e\xd9\x82\x4e\xdb\x84\x83\xf8\x93\x1c\x53\xf5\x74\x7d\x90\x8d\xf2\x27\x77\x7b\x4a\x94\x69\x39\x19\x2e\xfd\x94\x24\xdb\x70\xf2\x04\xe0\xca\x6c\x8f\xd9\x7b\xeb\x7c\x9e\x24\x1e\x38\xf7\x12\x4c\x76\x60\x5b\xc6\xf7\x5c\xd7\x89\x32\x3f\x22\xa5\x6c\x91\x9e\xca\x24\x41\xbc\x29\x51\x76\x2a\x93\x01\x0a\xef\x48\xd7\x33\xcb\x55\xd9\x21\xeb\xd9\xa5\x92\x25\x67\xb6\xf7\xaf\xcc\x51\x76\x10\x55\x4a\xfa\xef\xa7\x49\x11\xfb\xf4\x64\x94\xde\x32\xb2\x0c\xe0\xa6\xd2\x5d\x64\x64\x43\xc2\xec\x49\xc6\x81\xb7\x3f\x22\x41\x99\x32\x4e\xdb\xb5\x7d\x42\x97\xb1\xfb\x01\xdd\x0d\x5f\xe4\xb9\x69\xb2\x05\x7f\xa7\x03\xf6\x4e\xa5\xf4\xe9\xb2\xc9\x36\x42\x9e\xc6\x81\x6d\x5f\xf8\x92\xa9\xdf\xc3\xe6\xec\xf8\x32\x0a\xc4\xf7\xe9\x6c\x91\xcd\x22\xd0\x4f\x67\x3f\xef\xcc\xa6\xa7\x44\x57\xe5\x0e\xc5\xf6\x91\xf7\xdf\x82\x46\xaa\xf8\x99\x68\x98\xfd\x9e\xcd\xd2\x27\xa3\x64\xf6\x2c\xcf\xcf\xa6\xdd\xa4\xb3\x7f\xdb\xca\xde\x99\x70\x9f\xb6\x27\xb7\xad\xf7\x21\x23\xc8\xca\x97\x94\xec\xd7\x2d\x8f\x75\x3e\x9b\x3e\xcd\x2d\xdc\x17\x31\x29\xc9\x4d\x46\x12\x2a\x80\xc4\xaf\xa6\xf9\xfd\x92\x94\x06\x09\xd1\x2c\x27\x8a\x35\x43\x4f\x90\xa6\xa5\x28\xc8\x6e\x4e\x4a\x73\x0c\x63\x3f\x4c\x88\x19\xaf\x1f\x25\x98\x8c\xd7\x6e\x82\x09\xa0\x77\x37\x51\xc5\xf1\x84\xea\xa9\x4c\x35\x8c\x4f\xf3\xcf\x14\x23\xb7\xb1\x28\xcb\xb2\xfd\x13\x34\x54\xad\x65\xf7\x46\x46\xd4\x97\x71\x03\x6e\xa0\xa0\x4e\x05\x8f\x23\x09\x87\xf7\xf9\x89\xf7\x35\x5f\x4a\xf2\x4b\x46\x42\x9f\xf5\x52\xe3\x6d\x39\xf5\x50\x2a\xa6\x44\xdf\x32\xa2\xa1\x36\xcc\xae\x82\x27\xf4\xa5\x32\x30\x25\xfa\x29\x77\xdf\xbe\x52\x9c\x4c\x81\x68\x5e\xbe\x64\xe7\x0d\xaf\xdc\x9e\xf3\x9b\x50\x01\x0d\xbf\x67\x61\x7d\xde\x5b\xe2\xfd\xf5\xd4\x65\xbd\xb7\xe8\x67\xb6\x53\x25\xa7\x2b\x6f\xd7\x07\x71\x0e\xcd\x9b\xb9\x5e\x2f\xc8\x47\xed\xc5\x5d\xc0\x7c\xe1\x4d\x38\xfd\xb6\xa4\xe1\x9a\xdf\x09\x1b\xe5\x29\xe6\x94\x7c\x77\x1d\xa0\x38\x08\x37\x54\x92\xe2\x8a\x43\x1a\x4a\xf3\x5a\x71\x44\x43\xe9\x89\x14\xaf\x76\xa9\xe6\xfb\x28\x63\x4a\x75\xee\x2a\x12\x9b\x10\x78\x22\xf3\x65\x40\xda\x99\xcd\x52\x48\x1c\x61\x4c\x2c\xc1\x7b\x6e\x39\x4e\x26\x5b\x0d\xb5\x79\x46\x93\xe1\xc1\xb1\xc0\xcd\x68\x02\x26\x8f\x17\x39\xe5\xa7\x2b\x2b\x1b\x6e\xb3\x54\xb9\x97\xb2\x9b\x6c\xd7\xc7\xa9\x42\x38\xda\xaa\xfe\x03\x9b\x63\xbb\xfe\x10\x04\xde\x7a\x61\x90\x9e\x70\xf3\x14\x41\x48\x8d\x29\x59\x1b\x7e\x24\xb0\xf5\x86\x21\xa5\xa8\x46\x8a\xad\x37\x0e\x29\xd5\x23\x6d\x97\xbf\x81\x98\x4c\x93\xef\xe8\x05\x7d\x12\xd0\xc6\x0b\x07\xf0\xd9\x78\xf1\x96\x7d\xd1\xa1\x52\x32\xaa\x1e\x3f\x0d\x89\xa6\x53\xdc\xa3\xd2\xf4\xcb\x27\xcd\xbe\x49\x5d\x9b\xb5\x63\x0d\xaf\x56\x88\x6a\xa7\xe1\x33\xc4\x45\xc9\xdc\x8a\xde\x6e\x2f\xe8\x83\x54\x78\x6d\xbe\xe8\xe1\xc1\x0c\xe0\x34\xfe\xd4\x81\x2b\xb5\x99\x8e\x3f\x95\xa1\xf7\x0a\x7d\x0d\x46\x2f\x87\xb1\xda\xa1\xcf\xe0\xf7\x62\x93\x7f\x5e\x0f\xc3\xbc\xc4\xca\x8c\xba\xb7\x6d\x39\x63\xe1\xa7\x3a\xf1\x73\x23\xca\xc9\x4c\x1b\x36\x62\xe5\x5e\xc9\x16\xc2\xaf\x85\xd0\xac\x31\xb5\x5c\x4a\x61\x5d\xf8\xe9\x01\xae\x0f\x1f\x3f\x80\x14\x28\x99\x33\x03\xff\x2a\x6a\xc2\xac\x58\x5b\xe9\xbd\xd0\x8c\x87\x6f\xf3\xbc\x64\xcf\x2b\xee\x30\x06\xbd\x47\x66\xa8\x26\x2a\xd3\xfb\xc4\x8b\x19\xd0\x27\x72\xe9\xd8\x7a\x35\x7c\x7d\x7f\xea\xd5\xf3\xf0\xe3\x23\x11\xa4\x19\x60\x77\xc9\xfa\xef\xe0\x66\x19\xf4\x4c\xa6\x42\xe5\xca\xad\x60\xe2\xf7\x4e\x3e\x70\x15\x3e\xf4\xfe\x7f\x00\x00\x00\xff\xff\x22\x16\xe5\x81\x78\x27\x00\x00" +var _runtimeHelpKeybindingsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x3a\x5d\x73\xdb\x38\x92\xcf\xd7\xbf\x02\xa7\x3c\x6c\x52\x2b\x2b\x96\xbf\xf2\x71\x5b\xa9\x72\x1c\x73\x9d\x99\x71\xe2\x89\xed\xc9\x66\x6f\x1e\x08\x91\x90\x85\x35\x09\x70\x00\xd0\xb2\x76\x6b\xef\xb7\x5f\x75\x03\x20\x01\xc9\xd9\xe8\x01\x02\x81\x46\xa3\xbb\xd1\x9f\x04\x9f\xb1\x9f\xc5\x66\x21\x55\x2d\xd5\x9d\x05\xb8\x94\x95\xd1\x6c\xc5\x2d\xe3\xac\x6b\x84\x5b\x69\xc3\x99\x5e\xb2\x95\x76\xf7\x62\x63\x99\x5b\x71\xc7\x5a\x7e\x2f\x98\x74\x4c\x70\xbb\x61\x5c\xd5\xac\xd3\x6b\x61\x96\x7d\xc3\x9c\x66\xbd\x15\x34\xc6\x9b\x06\xe2\x2a\x6e\x04\x5b\xf6\x4d\xb3\x61\x55\x6f\x9d\x6e\xe5\x3f\xf9\xa2\x11\x08\xbd\xd1\xbd\x61\x8d\xbc\x97\xea\x6e\x06\x70\x46\xb3\xec\x7e\xa4\x88\x96\x5a\xa7\x8d\xa8\x99\x54\x4e\x18\xc5\x11\x8d\x54\xac\x25\x4a\xe5\x92\x55\x2b\xae\xee\x44\xcd\xd6\xd2\xad\x98\x5b\x09\x56\xbe\x63\xb8\xbc\x84\x4a\xb7\x2d\x92\xa2\x0d\xee\xc3\x2a\xae\x18\x6f\xac\x66\x0b\xc1\x78\x5d\x13\x46\x5a\xb0\x94\x8d\x60\xe5\xff\xbd\x9c\x55\x5a\x2d\xe5\xdd\x4b\x42\xfd\x32\x92\x30\xfb\x87\xd5\xaa\x64\xdc\x42\x2d\x6d\xd5\x5b\x2b\x6a\xb6\x10\x8d\x5e\xcf\x58\xa1\x0d\xe3\xac\x91\xd6\xa1\x8c\x10\x55\x2d\x96\xbc\x6f\x5c\xc6\x42\xd8\x05\xd1\xb0\xa5\x36\x2d\x77\x28\xa4\x1a\x16\x1b\xcf\xc4\x14\x25\xcd\xad\x60\x56\x08\x82\x14\x48\x33\xe2\x93\x96\x68\x8b\x1b\xb5\xda\x08\x5c\x6a\xf6\x96\x46\x0a\x55\x37\x1b\xbf\x37\x72\x0e\xe2\xb1\x6b\xb8\xe2\x4e\x6a\x65\x71\xf5\x1a\x4f\x2a\x25\x29\x3d\x0c\x94\x4a\x04\xd8\xb0\x3a\x23\x01\xca\x77\x6c\x25\x9a\x2e\x2e\xc4\x45\x25\x7b\xce\x53\x06\x9c\xa8\x07\xb6\x13\x96\x2d\x93\xc8\x6e\xd5\xf4\xb5\xa8\x21\xec\x9f\x72\x53\xeb\xaa\x6f\x85\x72\x2f\x66\x00\x1f\x97\x3f\x94\x79\xad\x85\x65\x4a\x3b\x26\x1e\xa5\x75\xd3\xe1\x14\xad\x6c\x3b\x54\x26\x23\xb8\x43\x4d\x9c\x05\xbd\x5d\xcb\xa6\x61\xf7\x4a\xaf\x03\x73\x9a\xd5\xda\xeb\x05\xc2\xc0\xb7\xb0\x1c\x55\x14\x29\xe3\x91\xea\x3f\x33\x6e\x8c\x5e\x5b\x5c\xd1\xea\x07\xc1\xd6\xda\xd4\x6c\xb1\xa1\xff\x19\x3b\x73\xa6\x61\x8d\x58\x3a\x92\x9b\x91\x77\x2b\x47\x60\x80\x48\xaa\xde\x58\x6d\x70\x25\x3e\x59\xc7\x8d\x07\x1b\xd8\x16\xac\x91\x4a\x4c\x69\xb0\x42\x4c\x7d\x47\xfd\x5a\xaf\x95\xdf\xcd\xad\x04\x44\x34\xdf\xc3\xb1\xe8\x97\x4b\x61\x12\x26\x56\xba\xa9\x99\x5d\xc9\xa5\x3f\x7f\xb4\xb7\x00\x6b\x05\xa1\x45\x39\x33\x5e\x79\x85\x70\x9a\x59\xd1\x88\xca\xb1\xf5\x0a\xb5\xbd\xd5\x0f\xde\xe4\x9e\x3d\x63\x5f\x44\x10\x3b\x09\x03\xe0\x06\xb7\x8b\xca\xdb\xf2\x0d\xda\x8b\x11\x0b\xdd\xab\x9a\xf5\x16\xe1\xc8\xca\x7e\x70\x76\x5e\x71\xcf\x79\xb5\x82\x7b\xb1\x41\xc5\xf0\x18\x9c\x66\x68\x87\x44\xd7\x0c\x00\x35\x5b\x3c\xf2\xb6\x6b\xc4\x14\xe7\x10\x0b\x2b\x51\xe2\x7b\x9b\x92\xfc\x89\xaa\x35\x09\xc3\x0f\xfe\x93\x06\x8d\x40\x9d\x25\x75\xd0\x7d\x53\xb3\xae\x27\x5d\x83\xa5\x6e\x1a\xbd\x46\x12\x83\xd1\x95\x4f\x51\x05\x50\x96\x25\x3e\xc3\xbf\xe0\xbf\x26\x88\xf6\xdb\xe4\x2d\x9b\xdc\xaa\x5a\x4f\xa6\x61\xe4\xef\x38\xf2\x45\xd4\x7a\x02\xff\x46\x70\x80\x8f\x0a\xbd\x86\x44\xba\x91\x04\x81\x5d\x75\xe7\x3d\xd8\x0f\x84\x31\x6a\xae\xe9\x15\x94\xef\x88\xc9\xbf\xdc\x8b\x4d\xa5\xdb\x85\x7e\xc7\xfe\xe2\xc5\xf1\xae\xdc\xf2\x28\x08\x47\x9e\x32\x1c\xe3\x94\x5c\x84\x77\x3e\xa3\x26\x90\x4f\xab\x56\x5c\x2a\x16\x3c\x9e\x65\xeb\x95\x50\x78\x68\x9e\x0c\xef\x40\x06\x31\xcb\x25\xd1\xb3\xe6\xca\xb1\xd3\xc6\xed\xa1\x7a\x80\xe5\x0f\xde\x2f\xfc\xd1\x4b\x37\xd0\x4b\x94\x4a\x87\x2e\x5a\x30\xab\xdf\xa6\xa2\x63\x8c\xb1\x09\xad\x47\x59\x5d\xf3\x07\x31\xfd\xb5\x97\x6e\x10\xd8\xb3\x67\xec\x7d\x50\xac\x48\xd7\x16\xd1\x84\x9d\xa3\xda\x91\x44\x1f\x45\xd5\x3b\xc1\x78\x04\x67\x23\x47\xac\xd5\xb5\x60\xcf\x91\x7d\x28\xc9\x3b\x45\x94\xe5\x8b\x19\xbb\xf6\xfe\xa0\x33\xa2\x43\x93\x71\xa3\x02\x7b\xdb\x28\x03\xf0\xdb\x32\x93\xc4\xd3\xdc\x74\xc8\x4d\x5c\xd0\xad\xeb\x81\x9f\x4f\xe4\x57\x84\x22\xe1\x74\x46\x58\xcb\x4a\x5a\x50\x7a\x55\xeb\xd6\x75\x39\xd0\x4b\xae\x68\x21\x22\x53\xe8\x6e\x65\xb5\xf2\xc3\x76\xa5\xd7\x40\x7a\xb3\xd6\x06\x43\x1f\xab\xa5\x11\x95\xd3\x66\x13\xf5\x56\xaa\xa5\x5e\x70\xb3\x7d\xca\x5e\x60\x8a\x4d\x50\xfb\x50\x33\x26\xc9\x86\x09\xa3\x7b\x38\x8f\xdc\xde\xa0\xd7\x6d\x05\x57\x21\x74\x83\x0f\x9b\x6b\xad\xfe\xe4\x98\x6c\x5b\x51\x4b\xee\x44\xb3\x19\x84\x4f\x2e\x2d\xa2\xcc\x99\x4d\xc4\x3a\x65\x8b\xde\x81\x54\xd6\x09\x5e\xb3\x7f\xf4\xd6\xb1\xae\xe1\x95\x08\xfe\xcb\x24\x16\x18\x38\xd9\x3e\xcb\x2d\x95\x84\xd1\x96\xbd\xd6\x7a\x73\xff\x2b\x59\x7b\x08\x48\xe5\xee\x79\x11\x4c\x72\x5e\x9e\x6f\xd2\x8f\xff\x78\x6c\x1e\xf7\x94\x91\x2a\x95\xfe\x54\x78\xd7\x09\x4f\x67\x2a\x03\x24\x1d\xff\xe9\xb8\x82\x93\x46\x70\x58\x08\xcf\x72\xcd\xf8\xd2\x09\x83\x46\xf2\x5c\xe9\x20\x41\xdb\xa1\x30\xd2\xc0\x4f\xd2\xaf\xb4\x72\x46\x37\x5e\x94\x01\x19\x21\x89\x31\x31\x31\x19\xc3\xd7\x4c\xd8\x8a\x77\x18\x94\xff\xe8\x85\xaa\x84\x05\xf8\xac\x9a\x0d\x33\x28\x74\x8a\xa7\x56\x90\x63\x88\x16\x8d\xa1\x9d\xb2\x24\x61\x9d\x4f\x6f\x52\xcf\xee\x69\xe0\x46\xe0\xd9\x6b\x4f\x1b\x44\x57\x63\xfb\xae\xd3\x06\x57\x11\xe8\x52\x9b\xb8\x76\x86\xbb\x8a\x21\xc1\x31\x7c\xbd\xe0\xd5\x3d\xe5\x18\x3e\x1a\x70\xe6\x84\x69\xa5\xe2\xcd\xde\x82\x63\x76\x84\x87\xa0\x0d\xba\x7c\x17\x93\x90\x30\xd4\xf6\xd6\xc1\x9d\x70\x31\x5a\x49\x67\x49\x41\x30\xa7\x40\x3e\xf8\x42\xf7\x14\x93\x99\x78\x10\xca\x21\x02\xa3\xfb\x3b\x9f\xd7\xc5\x5d\x50\xab\xc7\x27\xb0\x02\x1d\x9e\x8f\x7b\x61\x55\xcc\xeb\xb4\x69\x71\x97\x6d\x31\x32\xbd\x74\x42\xb1\xe7\x8b\xde\x51\x76\xc1\x9b\x35\xdf\xd8\x17\x40\x81\x77\x74\x1a\xfb\x8f\xf3\x45\x39\x63\x5b\x31\x4a\x2e\x43\xea\x89\xa7\x60\x59\xf9\xfb\xe3\x7c\xf1\xbf\xf3\xff\x39\xfe\x50\x4e\x51\xa8\xad\xb6\x6e\xa0\xcd\xfa\x53\x22\xf5\x42\x23\xa4\x18\x85\x09\x9c\xd7\x43\x51\x53\x6a\xf1\x8b\x58\xba\x10\x09\x5b\xae\x36\xc4\x7e\xb5\xd2\x86\xb8\x42\xee\xa7\x19\xfb\xc1\x78\x91\x6d\x86\xe0\x81\xbb\x0a\x1d\x64\x50\x4e\x9a\x04\xae\xb2\x39\xde\x20\xc5\xe4\x61\x7a\x9b\xdb\x1f\x1d\x37\x19\xc5\x7b\x3c\x5a\x54\xde\x72\xca\xda\xcd\xb6\x90\xcb\xdf\xfb\xfd\xfd\x57\xcb\x72\xd0\x74\x4a\xe9\x84\x25\x7a\x28\x6b\x49\x24\xf7\x62\x1a\x7c\x9e\x74\xde\x79\x79\x1c\x4b\x6d\xa0\x1c\xb7\x21\xb9\xa0\xcc\xbd\x50\x2b\x8e\xb8\x46\x07\x30\x02\xce\x00\x2e\xf4\x5a\x3c\x08\x33\x65\x56\xb7\x22\x11\x32\x26\x08\x18\xf7\xc9\x06\x62\x0e\xe1\x35\xde\xef\xca\x6c\x27\x2a\xb9\x94\x55\x10\x08\x8c\xaa\x80\x4b\x6a\xb1\x94\x4a\x90\x5a\x29\xb6\x34\xba\x0d\xc4\xc4\x20\xe8\xbd\x73\xb3\xf1\x88\xdd\x4a\xa3\xa6\x6d\x23\xc2\xbc\xc6\x47\xe9\x2d\xd7\x96\x25\x35\x09\xe3\x11\x3b\x7a\x51\xd3\x57\x14\x73\x0d\x0c\xa7\x1c\x49\x27\x05\xc3\xbc\x11\xad\xae\x24\x5f\xe4\x90\xce\x18\x99\xa5\xda\x4e\x72\x76\xdd\x24\x1e\xdb\x88\x04\xfd\xe5\x07\xd1\x08\x27\xbe\x6a\x53\xa3\xf6\x0d\xbe\xf2\x42\x60\x71\x80\x25\x17\x4a\x38\x52\x46\x19\x24\xaa\x08\x12\x94\xfb\x26\xb2\xb5\x5a\x62\x6e\x8a\xe9\xe6\x70\x26\xe8\xca\x9e\x31\x79\x23\x4c\x7b\x40\xa9\x93\xef\x8e\x89\x50\xad\xbd\xfa\x48\xc5\x58\x79\x65\x04\x21\xa8\x84\xdd\x7b\x77\x65\x34\x66\x69\x76\xef\xdd\xcf\x54\x79\x10\xb7\x55\x23\xab\x7b\x1f\x66\xff\x5c\x4e\x41\x2a\xcc\xf8\xc8\x27\x8f\x95\x96\x4f\xb1\x97\x21\x8b\x2e\x4f\x89\xf0\x32\xe6\xbd\xe5\x35\x4a\xf3\xdc\x1b\xc4\x75\x38\x36\x9f\x0f\x50\x1e\xcf\x17\x98\x8a\x47\x83\x08\xd1\x19\xe3\x91\xdb\x74\x82\x95\xe3\x09\x48\x15\x72\xfd\x85\x7e\x64\xcf\x69\xab\xdf\x49\xdf\x99\xb4\xc0\x7b\xa7\xd1\x97\x55\x54\xa6\x5a\x94\xc9\x62\x13\x98\x9f\x79\xa1\xfc\x22\x55\xff\x18\x5c\x67\xa3\x79\xed\x93\xee\x6f\xbb\x72\x69\x12\x40\x2a\x23\x02\x30\xeb\x8c\xbe\x33\xbc\xc5\x82\x59\xb7\x38\x6b\xb5\x56\xff\x4d\xd1\xe3\x56\xe5\xb9\xfc\x47\x87\x6e\x98\xcc\xaf\xd3\xd6\xca\x50\x76\xd7\xd2\xfa\xbc\x52\x6d\x9e\xa8\x5c\xc7\xec\x7f\xb1\xa1\x62\x29\x80\x40\xf9\x49\x2b\x51\x06\x3d\x8f\x5e\x16\xfd\xd9\x9f\xec\xf7\x32\xed\x10\xd1\xd2\x2c\x96\x8e\x69\x48\x6d\xc7\x9a\xe3\x89\x82\x72\x20\x04\x23\x27\x97\xca\x7a\xff\x1a\xe8\x19\x38\x4a\x11\x13\x3e\xef\x78\x36\x63\xbd\x47\x09\x4b\x70\xf6\xb1\x4e\x6a\x67\x8c\xf4\x1d\x05\x44\xaf\x27\xc6\xbc\x5b\xbb\x15\x7a\xe4\x74\x6c\x7b\x33\x6f\x65\x70\x46\x51\xfc\xb6\x0b\x9d\x0f\x7a\xad\x42\xf7\x8a\xdf\x89\x61\x1c\x1f\x92\x39\x34\xba\xd0\xfd\x82\xe5\x64\xe8\x5f\xa3\x0f\x0d\xfd\x73\x55\xc3\x35\xa9\xee\x8d\xf6\xe3\xf1\x69\x9c\xb9\xed\x42\x87\x50\xfb\x2e\xa1\xf6\x5d\x8f\x1a\x8d\x7c\xec\x25\xd3\xe3\xc4\xf8\x4c\xd3\x97\xfa\x41\xfc\x22\x95\xb0\xb7\xdd\xd8\xa7\x2d\x46\xb7\xe1\x17\xe6\x6e\x24\x52\x20\x95\xc8\x49\xff\xbc\xcc\xc6\xce\x55\x1d\x46\x3e\x2a\x2b\x8c\xfb\x24\xd6\xcd\xf8\x74\x8d\xee\x11\x06\x47\x19\xf6\x80\x33\x81\x89\x4d\x80\xb9\xe1\x0b\xc0\x82\x83\x9a\xd3\xa6\xf1\xff\x16\x0a\xa9\x6a\x6a\x3e\x89\x47\x47\x9d\x2b\x23\x1e\xa4\xee\x2d\x60\x75\x07\x58\xd0\xc1\x99\xee\x36\x70\xd6\xa3\xa0\x3d\xad\x1f\xfa\xae\x91\x15\x77\xc2\x3f\xd1\x7e\x81\xbc\x5a\x28\xe7\xc9\x96\x5a\xc1\xe7\xde\xe5\x03\x57\xdc\xba\xc8\x17\x92\xf1\xb9\x13\xaa\x90\x8d\x00\x7f\x62\x78\x52\x41\x0d\x06\x05\xf0\xc0\x61\x74\x7c\xa0\xb9\x0b\xde\x2c\xc3\x4c\xec\xfa\x35\x89\x10\x47\xe1\x5d\x71\xc3\xef\x0c\xef\x56\x03\x8f\xc3\x08\xb1\x7f\xa3\xef\xee\x1a\x71\x21\x9a\x2e\x74\xbf\xf4\x8d\x30\xf0\x53\xdf\x76\xb4\xfe\xac\x11\x1c\x55\xce\xf5\x16\xae\x57\xa2\x69\x2e\x75\x2d\xd0\xa5\x60\xe2\x4b\x7d\x2c\xe7\xa8\x41\xde\x4e\xeb\x1a\xc5\x1e\x37\xc3\x3e\x6e\x13\xff\xaf\xbb\x46\x3a\xb8\x55\x96\xfe\x7f\xf3\x8f\x17\xfe\x2f\xae\xf1\x4f\x9e\x98\x4b\x5e\x19\x0d\x57\x0d\xdf\xf8\xde\x75\x6f\xa9\x78\x7b\x7e\xab\xe4\x23\xd3\xaa\xd9\xbc\x80\xeb\xca\xe8\xa6\x41\x39\x51\xc7\xcb\xa2\xe3\x6b\x75\xd9\x37\x4e\x7a\x3b\xd9\x19\xf0\x32\x85\x2f\xa2\xd5\x0f\x22\x05\xf4\x23\xa7\x4d\x93\x0c\x5a\xb8\xbe\x97\x5d\x0a\x85\x2e\x8e\x64\x74\xa3\x2f\xb9\xab\x56\x52\xdd\xbd\x37\xa8\x87\x14\x20\x77\xab\x31\x8a\x94\xad\xa6\xd7\x9e\xc1\x0d\x3d\x0f\x2f\x61\xb0\x2c\x5a\x88\xf1\xbd\x87\x87\x5a\xf4\xce\x69\x65\x5f\x78\xff\x71\x89\x63\x57\x98\x0d\xfa\x6e\x4a\xca\x18\x92\xa5\x0d\x2f\x92\xbc\x2f\x42\x1f\x36\xf8\x23\x0a\x09\x69\xbd\x1e\x3c\xd3\x6d\x07\x24\x30\x6f\xa9\x64\x9f\xb7\x5d\xf8\x0b\xd6\xab\xd7\x8a\x06\xb0\x13\xfc\x90\xb7\xb2\x6d\xa5\xbd\xd0\x2d\x69\x5e\x30\xbf\x68\x93\xa4\x5b\xe7\x8f\xd2\x79\x5d\x82\x33\xae\x2a\xd1\xc0\x95\x91\xca\xc1\x15\xef\xad\xb7\x63\xc7\x17\x50\xcc\xa1\x38\x80\xe2\x10\x8a\x23\x28\x8e\xa1\x38\x81\xe2\x15\x14\xaf\xa1\x78\x03\xc5\x7c\x1f\x8a\xf9\x1c\x8a\xf9\x01\x14\xf3\x43\x28\xe6\x47\x50\xcc\x8f\xa1\x98\x9f\x40\x31\x7f\x05\xc5\xfc\x35\x14\xf3\x37\x50\x1c\xec\x43\x71\x80\x78\x0e\xa0\x38\x38\x84\xe2\xe0\x08\x8a\x83\x63\x28\x0e\x4e\xa0\x38\x78\x05\xc5\xc1\x6b\x28\x0e\xde\x40\x71\xb8\x0f\xc5\xe1\x1c\x8a\x43\xdc\xf0\x10\x8a\xc3\x23\x28\x0e\x8f\xa1\x38\x3c\x81\xe2\xf0\x15\x14\x87\xaf\xa1\x38\x7c\x03\xc5\xd1\x3e\x14\x47\x73\x28\x8e\x0e\xa0\x38\x42\xca\x8e\xa0\x38\x3a\x86\xe2\xe8\x04\x8a\xa3\x57\x50\x1c\xbd\x86\xe2\xe8\x0d\x14\xc7\xfb\x50\x1c\xcf\xa1\x38\x3e\x80\xe2\xf8\x10\x8a\x63\x64\xe1\x18\x8a\xe3\x13\x28\x8e\x5f\x41\x71\xfc\x1a\x8a\xe3\x37\x50\x9c\xec\x43\x71\x32\x87\xe2\xe4\x00\x8a\x93\x43\x28\x4e\x8e\x00\x73\x3e\xef\xd0\xb0\x77\x4a\xed\x7b\x6a\xcf\xa8\xfd\x40\xed\x39\xb5\x05\xb5\x7f\xa5\xf6\x82\xda\x8f\xd4\xfe\x44\xed\xcf\xd4\xfe\x42\xed\x25\xb5\x9f\xa8\xfd\x4c\xed\x15\xb5\xbf\x52\xfb\xc5\xef\x4a\xed\x0d\xb5\xb7\xd4\xfe\x46\xed\x57\x6a\xff\x46\xed\x37\x6a\xff\x0e\xb1\x0a\xb9\xfe\x03\x86\x24\xb5\xe1\x76\xe5\xd1\xa1\x62\x84\x99\x33\x6e\xb8\xf3\x28\x55\x2d\x8c\xad\xb4\x49\x5d\xf5\xe7\xa6\x1e\x1f\xd0\x31\x9c\xdb\x0a\x7c\xca\x05\xe7\xa4\x58\x3f\x36\xa2\x60\x1e\x64\x44\x9b\xf8\xfa\x71\x30\x21\x85\xa5\x62\x33\x58\x9a\x36\x90\x99\x5e\x6a\x54\x21\x94\xa1\x4d\xc9\xba\x6e\x84\xef\x7b\x35\xa7\xee\xd7\x95\x10\x0d\x85\xb8\xf8\x40\xba\x3e\x3e\x8e\x18\xe8\xd1\x2f\xf5\xaf\xb6\xd8\x87\x9d\x24\x85\xf9\x17\x80\xbd\xe1\xe1\xd5\xe6\x56\x12\x7e\xdb\x4d\xde\xb2\xf4\x37\x89\xb9\xc3\x64\xea\x21\x70\xfb\x0c\x66\x32\x26\x15\x11\x86\x88\x48\x81\x26\x49\x1a\x11\x81\x28\xa7\x7f\x02\x11\x8d\x07\x98\xeb\x95\x5c\xba\x94\xa6\x49\xcc\x29\x32\x88\x94\xa6\xc9\x98\x6c\x64\x30\xe9\x76\x93\x31\x0b\xc9\x60\x52\xba\x27\x49\x7a\x12\x81\x4e\x1b\x97\x53\x3d\x19\x8a\x93\x11\x22\x67\x7e\x32\xe4\x21\x09\x48\x2e\xe5\x49\x92\xca\x24\x40\xb9\xa0\x27\x59\x8e\x93\x80\xe5\x84\x4f\xb6\xb2\xa6\x6d\xc0\x81\xfc\x49\x9e\x4e\x45\xb8\x68\x64\x23\xfd\x49\x58\x4f\x81\x32\x2e\x27\x43\xbc\x4f\x41\xb2\x0d\x27\x4f\xe4\x5a\x99\xec\xd1\x7b\x6f\x9d\xcf\x93\xc0\x03\xe6\x48\xc1\x64\x27\x63\xcb\xf0\x9e\xab\x3a\x61\xe6\x7b\xa0\xe4\x2d\xd2\x53\x99\x24\xc9\x6e\x0a\x94\x9d\xca\x64\xc8\x82\x77\xa8\x8b\xc8\x72\x56\x76\xc0\x22\xba\x94\xb2\xe4\xcc\xf6\xfe\x95\x29\xca\x4e\x32\x95\x82\xfe\xfb\x69\x50\x4c\x7b\x22\x18\xb9\xb7\x0c\x2c\xcb\x6d\x53\xea\x2e\x32\xb0\xc1\x61\x46\x90\x71\xe0\xed\xf7\x40\x90\xa6\x0c\xd3\x76\x3d\x9f\xc0\x65\xe8\xbe\x03\x77\xc3\x17\xb9\x6f\x9a\x6c\x65\xbe\xd3\x21\xed\x4e\xa9\x74\xe9\xb2\xc9\x76\x72\x3c\x0d\x03\xdb\xba\xf0\x39\x63\x3f\x66\xcc\xd9\xf1\x65\x10\x98\xda\xa7\xb3\x45\x36\x8b\x39\x7e\x3a\xfb\x69\x67\x36\x3d\x25\x0a\x95\x3b\x10\xdb\x47\x1e\xef\x7f\x46\xa8\x70\x35\x34\xcc\x7e\xcb\x66\xe9\x9a\x28\x99\x3d\xcb\xfd\xb3\xee\x36\xe9\xec\xdf\xb6\xbc\x77\x46\xdc\xcf\xdb\x93\xdb\xd2\xfb\x90\x01\x64\x95\x4b\x0a\xf6\xdb\x96\xc6\x5a\x97\x4d\x9f\xe6\x12\x8e\xf5\x4b\x0a\x72\x93\x81\xf8\xe4\x3f\xd1\xab\x69\x1e\x5f\x92\xaa\x20\x01\x9a\xe5\x40\xa1\x5c\x88\x00\xa9\x5b\x0a\x84\xec\xfa\xa4\xd4\xc7\x30\xf6\x5d\x87\x98\xe1\xfa\x9e\x83\xc9\x70\xed\x3a\x18\x9f\xf4\xee\x3a\xaa\x30\x9e\x40\x3d\xe5\xa9\x86\xf1\x69\x7e\x35\x31\x62\x1b\xeb\xb1\xcc\xdb\x3f\x01\x43\x85\x5a\x16\x37\x32\xa0\x58\xc1\x0d\x79\x03\x19\x75\x4a\x78\x18\x49\x30\xbc\xcf\x4f\x3c\x96\x7b\x29\xc8\xaf\x19\x08\x5d\xe5\xa5\xc2\xdb\x52\xea\xa1\x4a\x4c\x81\xbe\x66\x40\x43\x59\x98\x85\x82\x27\xf8\xa5\x0a\x30\x05\xfa\x29\x57\xdf\x58\x24\x4e\xa6\x40\x30\x2f\x5f\xb2\xf3\x96\x57\x76\xcf\xba\x8d\xaf\x80\x86\x2f\x58\x58\xf4\x7b\x4b\x8c\x5f\x4f\x05\xeb\xbd\x45\x9c\xd9\x76\x95\x9c\x42\xde\xae\x0e\xe2\x1c\x8a\x37\x53\xbd\x48\xc8\x47\xe5\xc4\x9d\xcf\xf9\xfc\xdb\x6f\xfa\x9a\xa4\xe5\x8a\xdf\x09\x13\xe8\x29\xe6\xe4\x7c\x77\x15\xa0\x38\xf0\x11\x2a\x71\x71\xc5\x21\x0d\xa5\x7e\xad\x38\xa2\xa1\xf4\x44\x8a\x57\xbb\x50\xf3\x7d\xa4\x31\x85\x3a\xb7\x15\x91\x4d\x19\x78\x42\xf3\xa5\xcf\xb4\x33\x99\xa5\x29\x71\x48\x63\x42\xf5\x1d\xb1\xe5\x79\x32\xc9\x6a\x28\xcb\x33\x98\x2c\x1f\x1c\x0b\xdc\x0c\xc6\xe7\xe4\x21\x90\x93\x7f\xba\x32\xb2\xe5\x26\x73\x95\x7b\x29\xba\xc9\x76\x7d\x9c\x32\x84\xa3\x5d\x13\x2f\xd5\x2c\xdb\xd5\x07\x4f\xf0\xd6\xbb\x82\xf4\x84\xdb\xa7\x00\xbc\x6b\x4c\xc1\x3a\xff\x61\xc0\xd6\xcb\x85\x14\xa2\x1a\x21\xb6\x5e\x36\xa4\x50\x8f\xb4\x5d\xfe\xf2\x61\x32\x4d\xee\xce\x0b\xba\x06\x50\xda\x09\x0b\xf0\x49\x3b\xf1\x96\x7d\x56\xbe\x52\xd2\x4d\x3d\x5e\x07\x89\xb6\x6f\xb8\x43\xa6\xe9\x5b\x27\xc5\xbe\x4a\x55\xeb\xb5\x65\x2d\xaf\x56\x98\xd5\x4e\xfd\xd5\xc3\x45\xc9\xec\x8a\xde\x68\x2f\xe8\x12\xca\xbf\x2a\x5f\xc4\xf4\x60\x06\x70\x1a\x3e\x6f\xe0\x4d\xb3\x99\x8e\x5f\xc7\xd0\x7b\x85\x58\x83\xd1\x1b\x61\xac\x76\xe8\xea\xfb\x5e\x6c\xf2\x2b\x75\x3f\xcc\x4b\xac\xcc\xa8\x7b\xdb\x95\x33\xe6\xbf\xce\x09\x57\x8c\x48\x27\xd3\x9d\xdf\x88\x95\x7b\x25\x5b\x08\xb7\x16\x42\xb1\x56\xd7\x72\x29\x85\xb1\xfe\x73\x03\x5c\xef\x2f\x3c\x80\x18\x28\x99\xd5\x03\xfe\x2a\x70\xc2\x8c\x58\x1b\xe9\x9c\x50\x8c\xfb\xfb\x78\x5e\xb2\xe7\x15\xb7\x68\x83\xce\x21\x32\x64\x13\x99\x89\x3a\xf1\x62\x06\x74\x2d\x2e\x2d\x5b\xaf\x86\x1b\xf7\xa7\xde\x3a\x0f\xdf\x1b\x09\x4f\xcd\x90\x76\x97\x2c\xde\x7d\xeb\xa5\xe7\x33\x99\xf2\x95\x2b\x37\x82\x89\x3f\x7a\xf9\xc0\x9b\x70\xb9\x7b\xe5\x3f\xb1\x0a\x57\x67\xdc\x3d\x79\x84\xf4\xb9\x9b\xe1\xea\x4e\x30\xde\xf9\xe0\x3e\xbc\xda\xf6\xb7\x52\xda\x5f\x01\x57\x42\x3e\x08\x0b\xd9\x5d\x69\xb8\x6c\x1d\xf0\xd6\xa2\x92\xb5\x18\xae\xc1\x66\xec\x3a\xbd\x38\x4b\xb6\xc5\x32\x5b\x69\x47\xd7\x7c\xac\x12\xc6\x71\xa9\x22\x5a\xfc\x63\x72\xeb\x03\x2e\x66\xf9\xc6\x8e\x77\x76\x91\x1e\x7f\xd7\x8b\xeb\x66\xec\x46\xd3\xd7\x64\xe2\x91\xd3\xdd\x19\x7d\x91\x15\x6f\x4e\x3d\xf1\xfe\xae\x2d\xbf\xdb\xcc\x2f\xea\xe9\xdb\x90\x29\x33\xbd\x8a\x5f\xf6\x19\xbe\x1e\x3e\xec\x9b\xc1\xff\x07\x00\x00\xff\xff\x47\xd3\x2f\x42\xbe\x28\x00\x00" func runtimeHelpKeybindingsMdBytes() ([]byte, error) { return bindataRead( @@ -1004,7 +1004,7 @@ func runtimeHelpKeybindingsMd() (*asset, error) { return a, nil } -var _runtimeHelpOptionsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\x5f\x8f\xe4\xb6\x91\x7f\x1e\x7d\x8a\xc2\x78\x81\xe9\xf6\xf5\xf4\x18\x89\x1f\x82\x7e\x09\xd6\xde\xbb\xb5\x91\xb3\xf7\x10\x6f\xee\x1c\x24\x41\x44\x49\xa5\x16\x33\x14\xa9\x23\xa9\xee\xed\x35\xf6\x3e\xfb\xa1\xaa\x48\x49\xdd\xdb\x33\xe3\x03\x2e\x7e\xf0\x4e\x4b\x64\xb1\xfe\xfe\xea\x0f\xf5\x05\xbc\x1b\xa2\x76\x36\x14\xc5\x0f\xba\xf6\x0e\x42\x74\x1e\x03\x28\x63\xc0\xb5\x10\x3b\x84\x31\xa0\x87\xda\xd9\x56\xef\x47\xaf\x68\x31\x68\x0b\x3a\x86\x8b\x87\x8d\xf6\x58\x47\xe7\x4f\xdb\x4c\x6b\x0c\x18\x98\x44\xf9\xea\xe7\x37\x6f\xff\xfe\xed\xbb\x1f\xff\xed\xfb\xb7\x7f\xff\xee\xdd\x0f\xff\xfa\xd0\xd3\x82\x12\x94\xbc\x7f\x8a\x10\xbc\x0e\x30\xa0\x2f\x68\xcd\xcf\x6f\xde\x42\x18\xb0\xde\x80\x6e\x3f\x27\x58\x82\x0e\x60\x5d\x84\x80\x71\x03\xe5\xff\x3c\x6c\x85\x66\x3e\x48\x07\xe2\xa6\xa1\x03\x8b\xf9\xc4\x33\x9e\xbf\x43\x8f\xa0\x3c\x32\x47\x4e\xb4\x02\xb1\x53\x11\x4e\x6e\x84\x5a\x59\xa2\xbd\x2b\x8a\x2f\xa1\x54\x63\x74\xda\x36\x68\x63\xb9\x83\x63\x87\x16\x6a\x8f\x2a\x6a\xbb\x07\x05\x16\x8f\x60\xb4\xc5\x0d\x9d\xc8\xc4\x82\xea\x11\x64\xbd\x48\x98\xc4\x2e\x00\x60\xf0\x78\xd0\x6e\x0c\xbc\x65\x5b\x14\x37\x0d\xb6\x6a\x34\x11\x0e\xca\x8c\xb8\x83\x32\xfa\x11\xcb\xe9\xd4\xa0\x0e\x58\xee\x80\xa5\x82\xa3\x36\x06\xe8\x09\x53\xab\xc6\xb6\x45\x0f\x78\x40\x7f\x82\xd2\x96\x10\xb0\x76\xb6\x09\x40\xfb\x7a\x15\x75\xad\x8c\x39\xd1\x99\xab\x63\x47\xb2\xd2\x1a\x2d\x9c\xf0\x61\xd9\xe0\x22\xfb\x7a\x0b\x62\x45\x65\x42\x3a\xea\x33\x42\x7c\xb6\xb2\x0d\xfc\xf7\xa8\xa3\x28\x82\x74\x85\x1f\xe8\x97\x8e\x9d\x1b\x23\xa8\xf0\xa8\xed\x7e\x0b\xdf\x20\xd4\xca\x63\x3b\x1a\x59\x38\x06\x52\x57\xec\x74\x20\x4a\x2d\xaa\x38\x7a\xdc\x40\x85\xb5\x22\xbd\x11\x9d\x5e\xef\xbb\x08\xaa\xae\x35\xab\xce\x98\x53\x3a\x11\x5a\x6d\x70\x03\xee\x80\xfe\xe8\x35\xeb\xfd\xd8\xa9\x48\x84\x8e\xa2\x5b\x8f\x50\x61\xeb\x3c\x6e\xe1\xfb\xf6\x29\x11\x49\xfa\xf2\xab\x92\x9e\xd8\x85\x4a\x89\x0c\xb9\x52\xd6\xf7\x35\xab\x7c\x25\x26\xa9\x54\x40\xab\x7a\x32\x89\xb6\x4c\x59\xdb\xd6\x55\xca\x6f\x20\x74\xee\x08\xce\x9a\x93\x18\x27\x2d\xcc\x0c\x90\x00\x50\x21\x71\x8e\x8d\x8e\xd8\xd0\xa1\x5e\x11\xe7\xe4\x73\x42\xab\x1d\x8d\x81\x41\xc5\x6e\x5b\xd0\x6b\xb8\x64\xa2\x55\x26\x24\xdf\xa8\x9d\x71\xbe\x76\x66\xec\x2d\xf1\xd2\xb2\x62\x17\x31\x01\xd1\xc1\x57\x1b\x60\xbb\x18\x03\x8d\x0e\x83\x51\x27\x50\x20\x7b\x40\x45\x3a\xb1\x00\x0e\x31\xdd\x6a\x6c\xd2\x9b\x2d\xbc\x4f\x94\xc6\xc0\xc6\xd3\x2d\xdb\xe6\xa8\x6c\xcc\x9b\x7f\xf7\x15\x91\xaf\x10\x3a\xbd\xef\x0c\x19\x8d\xe5\x61\x52\xca\x40\xeb\x3c\xe0\x07\xd5\x0f\xe6\x39\x55\xb2\x04\xa1\xee\x90\xb5\x69\x9c\x6a\x32\x36\x4c\xcf\x05\x9c\x1a\x52\x35\xe9\xe3\xd5\x4a\xa2\xf8\x8d\xf6\xeb\x87\xc5\xb2\xf0\x50\x8a\x7d\xcb\x2d\x1b\x75\x23\x22\x04\x8c\xec\x29\x64\xf4\xbd\x71\x95\x32\x6c\x9e\xf2\x1a\x4f\xe9\x77\x59\x14\x37\x3f\xba\x88\x02\x03\xc4\x4d\x5e\xb8\x3c\x0e\x56\xe9\xe9\x06\x82\x33\xca\xeb\x8f\xd8\x6c\x38\x2c\xa6\x9f\xf7\xb1\x5e\x17\x37\x04\x2e\x64\x0f\xe3\x6a\x15\x45\x8e\x49\x82\xd9\xf3\x63\x87\x27\xc6\x21\xec\x2b\x6c\x1a\x59\x47\x67\x8b\x87\x56\xda\x2a\xc6\xab\x9b\xf7\x17\xda\x21\x88\xaa\x10\x02\x1a\xac\x89\x7c\xeb\x5d\xcf\x40\x9e\x1d\x2e\x64\x4a\xc5\xcd\x05\x40\x9e\xab\x6f\x89\xc0\x82\x01\xb5\x23\x39\xab\xd3\x24\x3f\x45\x37\xc4\xce\x23\x16\x37\xcb\xbd\xbb\xa2\xb8\xf9\x73\x82\x4b\x8f\xaa\x81\xde\x11\xaa\x56\x84\x04\x7c\xd2\x5d\x38\xd7\x5d\xe2\x28\x99\xbf\x84\x0e\xcd\x00\xd1\x0d\xba\x2e\x6e\x56\x25\xff\x4a\xaf\xd6\x5b\xf1\x93\xd1\x07\xe7\x09\x2d\xcb\xdd\xec\x70\x4c\x84\x1e\xce\xa6\x92\x85\x64\x6e\xc9\x58\x0a\x1a\x4d\x08\x89\x36\x99\x8f\xa1\x70\x72\x31\x5a\xd8\x60\xab\x2d\x36\x24\xe8\xa5\xeb\x91\xcf\x93\x51\x18\xb6\xd6\xcf\x03\x35\xda\xda\x35\xda\xee\xcb\x1d\x93\xc9\x3f\x29\x48\xdc\x80\x56\x5c\x83\x80\x4c\x8c\x42\xba\xdc\xc2\x4f\xe3\x30\x38\x4f\x76\xcb\xeb\x19\x18\xe9\x4c\xa3\x03\x3d\x57\x11\xba\x18\x87\xb0\x7b\x78\x38\x1e\x8f\xdb\xe3\x6f\xb7\xce\xef\x1f\xde\xff\xf1\x21\x6f\x78\x78\x02\x27\xc6\xd8\xde\xff\x2e\xb1\xe6\x5a\x8b\xc7\xa4\xbd\x45\x16\x39\x83\x76\x50\x4d\x23\x89\x4c\x34\xea\x26\x0f\xba\x26\xf7\x02\x85\x5a\x15\x62\xa3\x7d\x3c\xb1\xe4\xac\xd0\x88\xbe\xd7\x96\xa4\x24\xbb\x3c\x6a\xdb\x10\x04\x2a\xb3\x77\x5e\xc7\xae\x4f\x3c\x48\xa5\xe0\xe6\xf5\xa0\x5b\x96\x3e\x67\x35\x1d\xa0\x77\x8d\x00\x93\xf3\x14\x45\x5b\xf8\x2f\x82\xed\xc5\x99\x62\xea\x4d\x22\xf9\x8f\x31\x44\xa1\xab\x88\x52\xe5\x9c\x41\x65\xa1\xcc\x64\x4a\xf1\x14\x01\x06\x3a\x5b\x0c\x48\xb9\x39\xb8\x39\x47\x73\xf5\xd3\xab\x47\xa2\x63\x19\xab\xb7\x44\x2e\x83\x22\x9d\xbe\x81\x6a\x8c\x39\xfa\xb4\x55\x75\x4d\x95\x8c\x64\x9e\x4b\xf6\xda\x76\x73\x2d\xdd\x74\x2a\x74\xd9\x69\xd9\x41\x93\xd8\x6a\xaf\xb4\x0d\x11\x94\xac\xc8\xd9\xcb\xeb\xbd\xb6\x84\xac\x94\x45\x56\x5c\x7b\x60\x23\x69\x55\x50\x3c\xef\xa7\x6c\x48\x50\x8a\xcd\x7a\x06\x72\x09\xc9\xc4\x25\xf3\xee\x2a\xae\x41\xcc\x49\xde\x79\x0c\x6e\xf4\x35\x13\xd2\x36\xa2\x0d\xfa\x80\x69\xff\x9c\x39\x39\xb7\x11\xb6\x0f\xe8\x06\x83\x70\xec\x1c\x85\x3c\xf9\x0f\x25\xfa\x14\xf4\x9d\x3a\x68\xbb\x67\x5b\xe6\x13\x27\x43\x86\xa8\xe2\x18\x9e\x8f\x25\x12\xb1\x75\xbe\x57\xf1\x25\x9f\x62\x5f\x45\xcb\x91\xb3\x74\x6d\xc2\x54\x62\x33\x69\x86\xdd\x18\xfe\xf4\xe3\xf7\x3f\x9f\xef\x20\x96\xd9\x67\xca\xbf\xda\x12\x56\xf4\xae\x45\x6c\xd6\xc0\xc5\x92\x0a\xd0\xb8\xf0\xd9\x0e\x22\x58\xfe\xd5\xf3\x8e\x5a\x79\xaf\xd5\x9e\xd4\x17\x47\x6f\xe1\x5f\x60\xa2\x41\xba\x43\x88\x47\x07\x83\x0b\x41\x57\x26\x95\x23\x21\x31\x36\xe9\x35\x47\x7c\x39\x5a\xfd\xa1\x64\xa0\x28\x1b\x17\x4a\x21\x30\xeb\x42\x24\xab\xf0\x22\x6e\x49\x35\x0c\xfd\xab\x5c\x8b\x11\xc1\x84\x39\x54\x96\x05\xce\x80\x44\x67\xcd\xc4\x53\x1d\x40\x41\x25\x38\x2c\x26\x91\xf2\x95\x3c\x23\x9e\xd9\x9c\xa8\x5d\x94\x01\x6e\x34\x0d\x18\xfd\xc8\x30\x51\x77\xca\xee\x71\xc6\xe2\xac\x29\x42\xd7\x76\x82\xd0\x10\x95\x97\x5a\x99\x2b\x2d\x3c\x3e\x09\x2d\xac\x85\xc9\x0d\xe2\x69\x20\xd4\x0a\x18\xc3\x04\x48\xf4\x2c\x5b\xf7\x22\x78\xb6\x97\x69\x9f\x8d\x45\xb9\xf7\xe9\xc4\xcf\xe2\x5e\xd7\x2d\xa1\x44\x83\x83\x88\x94\xd5\xc5\x01\x48\x72\x75\xea\x80\xc5\x0d\x69\x9a\xd9\xd5\x7b\xeb\x3c\xd6\x2a\x10\xc3\x03\x7a\xb2\x1a\xd0\xcf\x7b\x6d\x03\xc5\x53\xd4\x07\xca\xd4\xca\xd7\x1d\x5e\x8d\x80\x05\xaa\x4a\xe7\x50\x77\xca\x2f\xa5\x5f\xf6\x13\xf4\x4e\xd5\x11\xfd\x35\x4a\x50\xc2\x2a\x0c\xaa\xc6\x75\xa2\xc6\x05\x6a\xb9\x03\xb4\xaa\x32\xa9\x43\x63\x73\xa5\xc4\x59\xb9\x18\x5d\x9f\xc1\x86\x20\xcf\x79\x89\x02\xe8\x31\x04\xb5\xc7\xc9\xf7\x07\x4f\xf8\xd0\x7c\x86\x0d\x2f\x16\x58\x73\x80\x3f\x22\x0e\x9f\xf7\x53\xd2\x1d\xcc\xcf\x37\x70\xec\x74\x44\x96\x83\x0e\x50\x5c\x18\x91\xe1\x4f\x6e\x94\xe3\xc5\xd5\xa5\x83\x9c\x21\x42\xb7\x73\x5f\xd2\xbb\xc3\x94\xcd\x2c\x7e\x88\x22\xf5\xd4\xa8\xd8\x13\x90\x75\xbc\xf4\xc3\x00\xbc\x6e\x71\x2c\xe7\x0b\x42\x54\x39\x3c\x74\xec\xfb\x15\x15\x85\x06\x29\xea\x22\x01\xa0\x1c\xe2\x95\x36\xd2\x96\xe4\xed\x9c\x36\xbe\x99\x2a\x28\x4e\x03\x0b\x01\x2f\xe4\xcb\x24\x75\x3b\x9b\x87\xc1\x1c\xdb\x08\xd8\x0f\xf1\xf4\x82\xd3\x3c\xe2\xa9\x47\x3b\x96\xbb\xa9\xd6\x67\xa9\x95\x75\xf7\x21\x9e\x0c\xc2\x23\x9e\x80\x56\x5c\xb7\x7a\xa8\x3d\xa2\xdd\x02\x55\xbf\xa2\x0a\x15\xe1\xbd\xdb\xef\x0d\xfe\x01\x4f\x3f\xd0\x3e\x1d\xa0\x72\xa3\x65\xb1\xcb\xd7\x26\xde\xef\xcb\x65\x85\x48\xf0\x92\x9b\x90\x19\x66\xb4\xcd\x8a\x9d\x91\x66\x0b\xef\x1d\x2d\x21\x6f\xe4\x2d\x1b\x08\xba\x1f\xcc\x89\xc8\x65\xca\x74\xc8\x9f\x6c\xa5\x6d\xf3\x07\xbc\xee\x52\x0b\xe1\x7b\x15\xeb\xae\xf2\xaa\xa6\xf0\x1b\x6d\x83\x5c\x2f\x02\x3f\x26\xab\xf0\x2b\x01\xdf\xbb\xd5\xfa\x6e\x03\x77\xbf\x7c\xa2\xff\xff\xe5\x6f\x77\x53\x16\x4d\xf5\x23\xe7\x40\x2e\x21\x95\x6c\x3b\x0b\xb6\x6b\xd5\xd6\xec\xda\xfd\xe3\xa0\x08\x90\x82\xb4\x64\xd2\xb6\x32\xb5\x01\xad\x60\xae\xe2\xfe\x4e\xd4\xdb\x38\x94\x7e\x8d\x81\x7a\x33\x03\x4c\xad\xac\x75\xdc\xdd\x52\x79\xaf\x0e\x54\xa1\xce\xcd\x02\xc8\x21\x53\xd1\xae\x91\x72\x95\xbd\x4b\x74\xce\x63\xd3\x10\x7c\x70\x72\xe4\x54\x73\x86\x70\x52\x47\x3c\x45\x52\x5b\x08\x63\xdd\x81\x82\xa0\xe3\xc8\xb8\xf3\x72\x5b\xda\xbb\x91\x21\xf0\xd8\xa1\xb4\xb6\x2e\xa1\x0e\xf0\x1b\x08\x52\xf4\xa6\x5a\xee\xec\x59\xf2\x1b\x5a\xdc\x6c\x24\xf1\x8c\xcc\x26\xf1\x27\xe1\xad\xcc\x8c\xd5\xec\x3b\x8e\x8a\x0c\x0c\x21\x51\xc2\x03\x29\x9f\x22\xab\xee\x72\x7d\x26\xe9\x8b\xad\xba\x68\x64\x29\x77\xb9\xe1\x24\x2d\xd3\xd9\x01\x54\x7e\x51\x1f\xe3\x5a\x79\x29\x85\xc5\x4a\xb7\x3c\x7d\x80\x10\x3a\x72\x23\xa2\x97\x5a\xdc\xb3\x46\x6e\xa6\xd3\x11\x6e\x08\x73\x09\x81\x24\x13\xd5\x46\x0f\x95\x53\xbe\xe1\x80\x99\x2c\x93\x7d\xe1\x85\x4e\xc3\xf7\x19\x69\x8e\xe1\xb9\x82\x3e\x7a\xdd\x5f\x03\xa5\x40\xd1\x8f\xce\xbc\x10\x4f\x7e\x34\xe8\x17\x50\xc2\xd1\x64\xc7\xbe\x42\xff\x42\xf9\x46\xde\x2a\x81\x54\xee\x08\x1c\xa9\xa7\xcd\xc9\x64\xd1\xa4\x31\xb4\xa9\x10\x21\xea\x1e\x67\xc7\xa7\xc7\x29\x56\x94\xe5\x11\xc9\x30\x46\xd0\x31\x4d\x78\x26\x60\xe7\x0a\x67\xda\xc5\x45\xf3\x0b\x12\x11\x5f\x9d\x0e\xd4\xe3\x2e\x19\xab\x5d\xdf\x93\x1d\xd2\x2b\xa8\x30\x1e\x11\x2d\xd4\xc6\x49\x42\xb2\x0d\x78\xbc\xa7\xf3\x52\x55\xcb\x2a\x7f\x11\x09\xe8\xb8\xd1\x36\x2e\xa7\xb7\x78\x59\x4a\x6f\x08\xa6\x1c\x77\x23\x1c\xdf\xe4\xba\xa0\xda\x88\x5e\xa6\x8f\xc6\x85\x3c\xf7\xe2\xc1\x9b\xcb\xee\x9b\xde\x30\x5f\x52\xe8\xa5\xe1\x58\x1e\x5a\x52\x7e\x65\xe2\xda\xee\x5f\x52\x4a\xed\x9d\x31\x52\x1c\xcc\x13\x22\x79\x0a\x95\xf2\x2f\x86\xbb\x2c\xed\x95\xdf\x6b\x5b\xee\x40\xf5\x6e\xb4\x31\xd7\xe6\xe1\x4a\xc1\x18\x90\xfb\x84\x34\x45\xac\xd0\xb8\x63\xae\xd3\xc5\x33\xae\x71\xfc\xdb\xe5\x61\x61\x40\x6c\xae\x9c\x45\xc4\x85\x71\x42\x79\x67\x31\xff\x64\x50\xb8\x46\xf6\x37\x89\x6c\xaf\x7c\x1c\x54\x88\x5c\x6b\x4a\x8e\x97\xb8\xa2\xae\xd8\xa0\x6a\xce\x43\x48\x0c\x4a\x1b\xe8\x79\x3f\x9a\xa8\xa9\x1b\x62\x2e\x7e\x3f\xb5\x8a\x12\x93\x31\x52\xea\x26\xde\x06\x8f\x01\xfd\x01\xcf\xea\xd6\x65\x49\x67\xf0\x80\xe6\x9c\xb6\xe2\xdc\x39\x5a\x59\x46\x49\xc0\xb8\xfa\xf1\x85\xf8\x73\x6d\x3c\x7a\x35\x5c\xca\x42\xcf\xb2\xa6\x28\xf7\xf0\xdc\xdb\x39\x30\x4e\xe6\x14\xad\x8e\x53\x4b\x20\xa5\xc0\x0b\xae\x33\x18\x1d\xa5\x84\xc8\x3e\xae\xa0\x73\x5e\x7f\x74\x36\x2a\x03\xfc\x9e\xdc\x3b\x35\xab\x9b\xcc\x8e\x8e\x84\xca\xb9\x85\x65\x0f\xc8\x15\x42\x56\x0b\xef\xfd\xfd\xf3\x62\xd2\x12\xaf\xf7\x5d\x9c\x4f\x3f\x50\x25\x57\xff\xfa\xb3\x05\x96\x79\x0e\xcb\x13\xa5\x54\x09\xfd\x5f\xb8\xe0\x92\x46\x3a\x34\x53\xee\x20\xf5\x6a\x21\x7a\x32\x1f\x0f\x97\x34\x1b\x37\x37\x2c\x54\xcd\xdd\x53\xd3\x29\xfd\xf0\xa0\x7c\x3e\x96\x83\x7c\x51\x21\xfd\x94\x66\xa9\x92\x91\xf5\x01\xc3\xa2\xfe\x1c\x8c\xaa\xb9\xb6\x0a\xba\x41\x28\x5f\xad\xd6\xe5\xb4\x83\x93\xc9\xbc\x49\xdb\xda\x8c\x0d\x1b\x4f\x1b\x19\x5d\x6f\x16\x33\x91\x0d\x94\x3c\x1b\xda\xf0\x40\x8e\xfe\x71\x43\xa4\x7f\xa8\xf0\x2a\xd3\xe4\x03\xe5\xa9\x74\xa7\xfc\x62\x79\x42\x54\x8f\x08\xa8\x39\xdd\x2b\x9b\x41\xce\xf1\x0f\x55\xcb\xf5\x07\xe1\xda\x51\x79\x46\x74\xa2\xd2\x52\x74\xa4\x49\xe0\xb5\x39\x7d\x52\x17\x95\xac\x53\xc9\xc9\xe5\x73\xfd\x4c\x19\xf2\x6a\x95\x45\x5c\xc3\xab\x55\x16\x71\xbd\x7a\xc5\xbd\xfd\x7a\xf3\x6a\x55\x3b\xb3\xa6\x77\x6e\x88\xbb\xdc\x4c\xae\x99\xd6\xe5\x7f\xf3\x1a\xb1\x69\xde\x95\x27\x6f\xeb\x7f\xb6\x03\x3c\x25\x22\xa9\x7f\x77\x56\x97\xaf\x77\x72\xf5\x40\x6f\xa8\xf9\xde\xc0\xd9\xaa\xef\xd0\x0c\xeb\xdd\x55\x21\x23\x2f\xe0\x09\xec\x52\x9c\x34\x2c\x5c\xb6\x11\xf2\xe2\x99\xa6\xf1\x69\xcc\x58\x44\xcb\x58\xf7\x84\xdc\xf9\xc6\x41\x1a\xd1\x30\x0e\xe8\xf3\x9d\x23\x27\xe3\x2d\xbc\xa3\xd2\x30\x44\x08\xa7\x10\xb1\x0f\x53\x5b\x71\x1b\xc6\xc6\xdd\x42\x35\x72\x6d\xec\x2c\x7c\xf3\xd3\x1b\x0a\xea\x54\xea\xdd\x36\x4e\x85\xed\xed\x59\xfd\x9b\x5e\xd5\x63\x88\xae\xd7\x1f\xa5\xb0\x98\xa6\x59\x7c\x45\x48\xf0\x91\x2e\xb7\x18\xe9\x75\xec\x20\x8c\xd7\x64\xa1\xe3\x93\x2c\x27\x1b\xd5\x87\x72\x07\x71\xf4\x36\x80\xfc\x04\xf1\x5c\xd7\xb6\xcf\x2b\x22\xaa\x8a\x9a\xc6\x5e\xda\x5f\xab\x0e\x7a\x4f\x75\xf8\x5c\xa0\xb1\x7e\x71\xaf\xad\xe5\xd1\x43\x4e\x71\x2a\xa4\xf6\x50\xae\x0b\xa2\xaa\xb8\x6b\x5d\xe1\x76\xbf\x95\x5e\x97\x4b\xd4\xaf\x17\x94\x9c\xad\x71\x7d\xde\x11\xb0\xe0\x5c\x6e\x2a\x7b\x8a\xdc\x1e\xc9\xec\x95\xf8\x0a\xd1\xc9\xe6\x34\x5c\x7d\x21\x0b\xd0\x0e\xfd\xf1\x6c\x48\x13\x55\x05\xf4\x8c\x1b\xb8\x74\x2d\x73\x85\xc8\xd7\x33\x81\xe9\xc8\x1d\x8f\xee\x12\xf3\x8b\x3a\x9c\x05\x7d\x9e\x0f\xf4\x7d\xd4\xd1\xb0\xdf\xf2\x4c\x3f\x4c\x2d\x88\x4c\x8f\xa9\x16\xf1\x53\x75\x7e\x17\x80\x97\x4f\xed\x44\xc0\x48\xcd\xe7\x54\x8e\x73\x4a\x91\x4a\xf4\x05\x15\x8c\x01\x07\xaf\x7b\xe5\x4f\x25\xac\xb2\x53\xb5\xa3\x21\x67\xf8\xd2\xea\x0f\xeb\x27\x39\xba\x18\x59\x26\x0c\x48\xc4\x16\x7d\x42\xee\x55\xe4\x9e\x87\x6f\xa9\x13\x74\x56\xaa\x7e\xdc\x7b\x02\xc8\x64\xe2\xa9\xa3\x54\x6d\x8b\x75\xcc\x89\xd5\x12\x2c\x2d\x5b\x0f\x99\xb6\x7c\x1b\xbd\xb9\xff\x96\x03\x82\xff\xfc\xcf\x67\xdc\xf6\xfe\xfe\xbe\x28\xde\xa4\x77\x83\x19\xf7\x3a\x43\x7d\x98\xaf\xc8\xb9\x36\xa5\xda\xec\xbc\xcd\xe4\x8a\xb5\xfc\xe5\x53\x09\xe5\x6a\x5d\x42\xf9\x97\xbf\x95\x50\xde\xde\x96\x50\xde\xdd\x95\x5b\xf8\x0f\xef\x0e\xba\x99\x6e\x61\xd8\x15\x67\x6a\xe9\xb0\xe7\x67\xc6\x31\xb1\x52\xee\x16\x13\x89\xcd\xd9\xad\x39\x46\x08\xae\x9f\x2f\xfa\x2b\x15\xe6\x29\x68\x4e\x06\x5b\x78\x3d\x29\xad\x77\x3d\xcf\xa1\x2e\xcd\xa4\x2a\x19\x24\xf4\xea\x11\xe5\x3e\x87\xaf\x77\x86\x69\xc2\x30\x9c\x62\xe7\xe4\xd2\xe7\xa4\x7a\x93\x67\xd0\x01\x3c\xee\x95\x6f\x0c\xb5\x84\xae\x15\x87\x4c\xc3\xca\xc0\x77\x07\x9f\x97\xcb\xcb\x21\x09\x54\xd8\xa9\x83\x96\xde\x93\x07\xce\xcb\xa6\xe2\x45\xd0\x31\xda\x46\xee\xe9\x5e\x9f\x19\x87\x1e\xcf\x23\x90\x3c\xaf\xe0\x9e\xe4\x33\xcb\x4c\x44\xd8\x4f\xd9\x2c\xcf\x9c\xf9\xda\x9e\x32\x73\x24\x18\x19\x20\xb9\x6d\x9e\x30\xe6\xd8\xe3\x06\x68\x71\xe9\x04\xc5\xe5\x6d\xe5\xa4\xa6\x7f\x04\x67\x21\xb8\x0d\x91\x42\xf6\xf1\x8d\x28\xf2\xfc\x8b\x12\x69\x26\x13\xfd\x22\x17\x7c\xd3\xf4\x50\x74\x7d\x37\xeb\x99\x6b\x98\x2b\x74\x38\x17\x10\xf7\xd1\x81\xb2\x8e\xa2\xb7\xe8\x55\xdd\xf1\xb8\x3c\xcd\xac\x38\x36\x39\x93\x9d\x31\x99\xe4\xe1\x3d\x90\xf6\x6c\x8b\xa2\xf8\xe2\x0b\x78\x2b\xb3\x52\x72\x10\x99\x09\xe4\x9d\x45\xf1\xe7\xf9\xcb\x13\xda\x1e\x66\xaa\xb9\xc4\x92\x41\xab\x39\x11\x8a\xf0\x6e\x73\xda\xc2\xbf\xcb\x1f\xd0\xa3\xca\xdf\xb0\x50\x24\xe5\x51\xf8\x91\xa7\x43\x4b\x55\x5f\x7e\x30\x73\xae\xe1\x32\x0d\xf3\x54\x9c\x3e\x20\x20\x64\x2b\x12\x50\x6a\x7b\x75\xfa\xfe\x53\x3a\x6d\x2e\x02\x27\x5e\xd3\x57\x27\x53\x60\x52\x73\x3f\x85\xe5\xf2\xfb\x0c\xcb\xf7\xd7\x42\x31\x6c\x8b\xe2\xfd\x7c\x55\x2c\x5f\x0a\x2c\x9a\xe8\xc5\xc8\x79\x93\x18\xc6\xc5\xc5\xc1\x62\x25\xeb\xa9\xa0\x85\x3c\x7a\xa4\x43\x67\x26\x93\x12\xe5\xeb\x9d\x32\x60\xe4\x07\xe5\x32\x01\xd1\xd3\x72\x5b\x14\xdf\xa7\xbb\xeb\x0b\x65\x4d\x97\x02\x64\x39\xfe\x7a\x66\x18\xe5\x23\x8c\x0c\x36\xe9\x0c\x8a\x23\xa9\x7e\x4e\xfc\x21\x08\x5b\xb4\x50\x2c\x09\x57\xcc\x0b\x20\xe2\xaf\x93\xb4\x5c\x42\xca\xa0\x29\xcd\xb5\x3a\x15\x2e\x53\x75\x2a\x30\x49\x75\x82\x34\xf8\xa1\xc6\x21\xc2\x5b\x57\xf0\x6f\x51\xcf\x94\xad\xe1\xeb\xeb\xcb\xff\x38\x56\x27\x79\xb2\x2b\x8a\xb2\x2c\x49\xba\xe2\x97\xe2\xe6\xb6\x8d\xbb\xbd\xbb\xdd\xc1\x2f\xc5\xcd\xcd\xed\xf2\xe8\xdb\x1d\x70\x2a\x2c\x6e\x3e\x6d\x64\x9d\x1f\xab\xd3\x72\xa5\xfe\x88\xb7\x3b\xf8\x4d\x5a\x70\xb1\x97\x90\x22\x3f\x96\x85\x5f\x17\x9f\xe8\xe4\xa2\x78\xe7\x29\xbe\xb4\x51\xde\x9c\x26\xdd\xf2\x3c\x57\x82\x92\x54\x76\xc9\xe6\x97\xdb\x5f\xc5\xe5\x97\x5b\x5f\xfd\x3f\xb0\xf8\xbf\x01\x00\x00\xff\xff\xa2\x25\xe1\xf8\x4a\x27\x00\x00" +var _runtimeHelpOptionsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\x5f\x8f\xe4\x36\x72\x7f\x1e\x7d\x8a\xc2\x78\x81\xe9\x76\x7a\x7a\x8c\x3b\x3f\x1c\xfa\xe5\x60\x7b\x93\xdd\xc5\xc5\xde\xe0\x76\x2f\xf1\x21\x17\x9c\x28\xa9\xd4\xe2\x0d\x45\x2a\x24\xd5\xbd\xbd\x86\xf3\xd9\x83\xaa\x22\x25\x75\x6f\xcf\xcc\x05\xc8\xf9\xc1\x3b\x2d\x91\xc5\xfa\xfb\xab\x3f\xd4\x57\xf0\x7e\x88\xda\xd9\x50\x14\x3f\xea\xda\x3b\x08\xd1\x79\x0c\xa0\x8c\x01\xd7\x42\xec\x10\xc6\x80\x1e\x6a\x67\x5b\xbd\x1f\xbd\xa2\xc5\xa0\x2d\xe8\x18\x2e\x1e\x36\xda\x63\x1d\x9d\x3f\x6d\x33\xad\x31\x60\x60\x12\xe5\xab\x9f\x5f\xbf\xf9\xeb\x0f\xef\x7f\xfa\x97\x77\x6f\xfe\xfa\xf6\xfd\x8f\xff\xfc\xd0\xd3\x82\x12\x94\xbc\x7f\x8a\x10\x7c\x17\x60\x40\x5f\xd0\x9a\x9f\x5f\xbf\x81\x30\x60\xbd\x01\xdd\x7e\x49\xb0\x04\x1d\xc0\xba\x08\x01\xe3\x06\xca\xff\x79\xd8\x0a\xcd\x7c\x90\x0e\xc4\x4d\x43\x07\x16\xf3\x89\x67\x3c\xbf\x45\x8f\xa0\x3c\x32\x47\x4e\xb4\x02\xb1\x53\x11\x4e\x6e\x84\x5a\x59\xa2\xbd\x2b\x8a\xaf\xa1\x54\x63\x74\xda\x36\x68\x63\xb9\x83\x63\x87\x16\x6a\x8f\x2a\x6a\xbb\x07\x05\x16\x8f\x60\xb4\xc5\x0d\x9d\xc8\xc4\x82\xea\x11\x64\xbd\x48\x98\xc4\x2e\x00\x60\xf0\x78\xd0\x6e\x0c\xbc\x65\x5b\x14\x37\x0d\xb6\x6a\x34\x11\x0e\xca\x8c\xb8\x83\x32\xfa\x11\xcb\xe9\xd4\xa0\x0e\x58\xee\x80\xa5\x82\xa3\x36\x06\xe8\x09\x53\xab\xc6\xb6\x45\x0f\x78\x40\x7f\x82\xd2\x96\x10\xb0\x76\xb6\x09\x40\xfb\x7a\x15\x75\xad\x8c\x39\xd1\x99\xab\x63\x47\xb2\xd2\x1a\x2d\x9c\xf0\x61\xd9\xe0\x22\xfb\x7a\x0b\x62\x45\x65\x42\x3a\xea\x0b\x42\x7c\xb6\xb2\x0d\xfc\xf7\xa8\xa3\x28\x82\x74\x85\x9f\xe8\x97\x8e\x9d\x1b\x23\xa8\xf0\xa8\xed\x7e\x0b\xdf\x23\xd4\xca\x63\x3b\x1a\x59\x38\x06\x52\x57\xec\x74\x20\x4a\x2d\xaa\x38\x7a\xdc\x40\x85\xb5\x22\xbd\x11\x9d\x5e\xef\xbb\x08\xaa\xae\x35\xab\xce\x98\x53\x3a\x11\x5a\x6d\x70\x03\xee\x80\xfe\xe8\x35\xeb\xfd\xd8\xa9\x48\x84\x8e\xa2\x5b\x8f\x50\x61\xeb\x3c\x6e\xe1\x5d\xfb\x94\x88\x24\x7d\xf9\x4d\x49\x4f\xec\x42\xa5\x44\x86\x5c\x29\xeb\xfb\x9a\x55\xbe\x11\x93\x54\x2a\xa0\x55\x3d\x99\x44\x5b\xa6\xac\x6d\xeb\x2a\xe5\x37\x10\x3a\x77\x04\x67\xcd\x49\x8c\x93\x16\x66\x06\x48\x00\xa8\x90\x38\xc7\x46\x47\x6c\xe8\x50\xaf\x88\x73\xf2\x39\xa1\xd5\x8e\xc6\xc0\xa0\x62\xb7\x2d\xe8\x35\x5c\x32\xd1\x2a\x13\x92\x6f\xd4\xce\x38\x5f\x3b\x33\xf6\x96\x78\x69\x59\xb1\x8b\x98\x80\xe8\xe0\x9b\x0d\xb0\x5d\x8c\x81\x46\x87\xc1\xa8\x13\x28\x90\x3d\xa0\x22\x9d\x58\x00\x87\x98\x6e\x35\x36\xe9\xcd\x16\x3e\x26\x4a\x63\x60\xe3\xe9\x96\x6d\x73\x54\x36\xe6\xcd\xbf\xfb\x86\xc8\x57\x08\x9d\xde\x77\x86\x8c\xc6\xf2\x30\x29\x65\xa0\x75\x1e\xf0\x93\xea\x07\xf3\x9c\x2a\x59\x82\x50\x77\xc8\xda\x34\x4e\x35\x19\x1b\xa6\xe7\x02\x4e\x0d\xa9\x9a\xf4\xf1\x6a\x25\x51\xfc\x5a\xfb\xf5\xc3\x62\x59\x78\x28\xc5\xbe\xe5\x96\x8d\xba\x11\x11\x02\x46\xf6\x14\x32\xfa\xde\xb8\x4a\x19\x36\x4f\x79\x8d\xa7\xf4\xbb\x2c\x8a\x9b\x9f\x5c\x44\x81\x01\xe2\x26\x2f\x5c\x1e\x07\xab\xf4\x74\x03\xc1\x19\xe5\xf5\x67\x6c\x36\x1c\x16\xd3\xcf\xfb\x58\xaf\x8b\x1b\x02\x17\xb2\x87\x71\xb5\x8a\x22\xc7\x24\xc1\xec\xf9\xb1\xc3\x13\xe3\x10\xf6\x15\x36\x8d\xac\xa3\xb3\xc5\x43\x2b\x6d\x15\xe3\xd5\xcd\xc7\x0b\xed\x10\x44\x55\x08\x01\x0d\xd6\x44\xbe\xf5\xae\x67\x20\xcf\x0e\x17\x32\xa5\xe2\xe6\x02\x20\xcf\xd5\xb7\x44\x60\xc1\x80\xda\x91\x9c\xd5\x69\x92\x9f\xa2\x1b\x62\xe7\x11\x8b\x9b\xe5\xde\x5d\x51\xdc\xfc\x39\xc1\xa5\x47\xd5\x40\xef\x08\x55\x2b\x42\x02\x3e\xe9\x2e\x9c\xeb\x2e\x71\x94\xcc\x5f\x42\x87\x66\x80\xe8\x06\x5d\x17\x37\xab\x92\x7f\xa5\x57\xeb\xad\xf8\xc9\xe8\x83\xf3\x84\x96\xe5\x6e\x76\x38\x26\x42\x0f\x67\x53\xc9\x42\x32\xb7\x64\x2c\x05\x8d\x26\x84\x44\x9b\xcc\xc7\x50\x38\xb9\x18\x2d\x6c\xb0\xd5\x16\x1b\x12\xf4\xd2\xf5\xc8\xe7\xc9\x28\x0c\x5b\xeb\xe7\x81\x1a\x6d\xed\x1a\x6d\xf7\xe5\x8e\xc9\xe4\x9f\x14\x24\x6e\x40\x2b\xae\x41\x40\x26\x46\x21\x5d\x6e\xe1\xc3\x38\x0c\xce\x93\xdd\xf2\x7a\x06\x46\x3a\xd3\xe8\x40\xcf\x55\x84\x2e\xc6\x21\xec\x1e\x1e\x8e\xc7\xe3\xf6\xf8\xdb\xad\xf3\xfb\x87\x8f\x7f\x7c\xc8\x1b\x1e\x9e\xc0\x89\x31\xb6\xf7\xbf\x4b\xac\xb9\xd6\xe2\x31\x69\x6f\x91\x45\xce\xa0\x1d\x54\xd3\x48\x22\x13\x8d\xba\xc9\x83\xae\xc9\xbd\x40\xa1\x56\x85\xd8\x68\x1f\x4f\x2c\x39\x2b\x34\xa2\xef\xb5\x25\x29\xc9\x2e\x8f\xda\x36\x04\x81\xca\xec\x9d\xd7\xb1\xeb\x13\x0f\x52\x29\xb8\x79\x3d\xe8\x96\xa5\xcf\x59\x4d\x07\xe8\x5d\x23\xc0\xe4\x3c\x45\xd1\x16\xfe\x83\x60\x7b\x71\xa6\x98\x7a\x93\x48\xfe\x6d\x0c\x51\xe8\x2a\xa2\x54\x39\x67\x50\x59\x28\x33\x99\x52\x3c\x45\x80\x81\xce\x16\x03\x52\x6e\x0e\x6e\xce\xd1\x5c\xfd\xf4\xea\x91\xe8\x58\xc6\xea\x2d\x91\xcb\xa0\x48\xa7\x6f\xa0\x1a\x63\x8e\x3e\x6d\x55\x5d\x53\x25\x23\x99\xe7\x92\xbd\xb6\xdd\x5c\x4b\x37\x9d\x0a\x5d\x76\x5a\x76\xd0\x24\xb6\xda\x2b\x6d\x43\x04\x25\x2b\x72\xf6\xf2\x7a\xaf\x2d\x21\x2b\x65\x91\x15\xd7\x1e\xd8\x48\x5a\x15\x14\xcf\xfb\x29\x1b\x12\x94\x62\xb3\x9e\x81\x5c\x42\x32\x71\xc9\xbc\xbb\x8a\x6b\x10\x73\x92\x77\x1e\x83\x1b\x7d\xcd\x84\xb4\x8d\x68\x83\x3e\x60\xda\x3f\x67\x4e\xce\x6d\x84\xed\x03\xba\xc1\x20\x1c\x3b\x47\x21\x4f\xfe\x43\x89\x3e\x05\x7d\xa7\x0e\xda\xee\xd9\x96\xf9\xc4\xc9\x90\x21\xaa\x38\x86\xe7\x63\x89\x44\x6c\x9d\xef\x55\x7c\xc9\xa7\xd8\x57\xd1\x72\xe4\x2c\x5d\x9b\x30\x95\xd8\x4c\x9a\x61\x37\x86\x3f\xfd\xf4\xee\xe7\xf3\x1d\xc4\x32\xfb\x4c\xf9\x17\x5b\xc2\x8a\xde\xb5\x88\xcd\x1a\xb8\x58\x52\x01\x1a\x17\xbe\xd8\x41\x04\xcb\xbf\x78\xde\x51\x2b\xef\xb5\xda\x93\xfa\xe2\xe8\x2d\xfc\x13\x4c\x34\x48\x77\x08\xf1\xe8\x60\x70\x21\xe8\xca\xa4\x72\x24\x24\xc6\x26\xbd\xe6\x88\x2f\x47\xab\x3f\x95\x0c\x14\x65\xe3\x42\x29\x04\x66\x5d\x88\x64\x15\x5e\xc4\x2d\xa9\x86\xa1\x7f\x95\x6b\x31\x22\x98\x30\x87\xca\xb2\xc0\x19\x90\xe8\xac\x99\x78\xaa\x03\x28\xa8\x04\x87\xc5\x24\x52\xbe\x92\x67\xc4\x33\x9b\x13\xb5\x8b\x32\xc0\x8d\xa6\x01\xa3\x1f\x19\x26\xea\x4e\xd9\x3d\xce\x58\x9c\x35\x45\xe8\xda\x4e\x10\x1a\xa2\xf2\x52\x2b\x73\xa5\x85\xc7\x27\xa1\x85\xb5\x30\xb9\x41\x3c\x0d\x84\x5a\x01\x63\x98\x00\x89\x9e\x65\xeb\x5e\x04\xcf\xf6\x32\xed\xb3\xb1\x28\xf7\x3e\x9d\xf8\x59\xdc\xeb\xba\x25\x94\x68\x70\x10\x91\xb2\xba\x38\x00\x49\xae\x4e\x1d\xb0\xb8\x21\x4d\x33\xbb\x7a\x6f\x9d\xc7\x5a\x05\x62\x78\x40\x4f\x56\x03\xfa\x79\xaf\x6d\xa0\x78\x8a\xfa\x40\x99\x5a\xf9\xba\xc3\xab\x11\xb0\x40\x55\xe9\x1c\xea\x4e\xf9\xa5\xf4\xcb\x7e\x82\xde\xa9\x3a\xa2\xbf\x46\x09\x4a\x58\x85\x41\xd5\xb8\x4e\xd4\xb8\x40\x2d\x77\x80\x56\x55\x26\x75\x68\x6c\xae\x94\x38\x2b\x17\xa3\xeb\x33\xd8\x10\xe4\x39\x2f\x51\x00\x3d\x86\xa0\xf6\x38\xf9\xfe\xe0\x09\x1f\x9a\x2f\xb0\xe1\xc5\x02\x6b\x0e\xf0\x47\xc4\xe1\xcb\x7e\x4a\xba\x83\xf9\xf9\x06\x8e\x9d\x8e\xc8\x72\xd0\x01\x8a\x0b\x23\x32\xfc\xc9\x8d\x72\xbc\xb8\xba\x74\x90\x33\x44\xe8\x76\xee\x4b\x7a\x77\x98\xb2\x99\xc5\x4f\x51\xa4\x9e\x1a\x15\x7b\x02\xb2\x8e\x97\x7e\x18\x80\xd7\x2d\x8e\xe5\x7c\x41\x88\x2a\x87\x87\x8e\x7d\xbf\xa2\xa2\xd0\x20\x45\x5d\x24\x00\x94\x43\xbc\xd2\x46\xda\x92\xbc\x9d\xd3\xc6\xf7\x53\x05\xc5\x69\x60\x21\xe0\x85\x7c\x99\xa4\x6e\x67\xf3\x30\x98\x63\x1b\x01\xfb\x21\x9e\x5e\x70\x9a\x47\x3c\xf5\x68\xc7\x72\x37\xd5\xfa\x2c\xb5\xb2\xee\x3e\xc4\x93\x41\x78\xc4\x13\xd0\x8a\xeb\x56\x0f\xb5\x47\xb4\x5b\xa0\xea\x57\x54\xa1\x22\x7c\x74\xfb\xbd\xc1\x3f\xe0\xe9\x47\xda\xa7\x03\x54\x6e\xb4\x2c\x76\xf9\x9d\x89\xf7\xfb\x72\x59\x21\x12\xbc\xe4\x26\x64\x86\x19\x6d\xb3\x62\x67\xa4\xd9\xc2\x47\x47\x4b\xc8\x1b\x79\xcb\x06\x82\xee\x07\x73\x22\x72\x99\x32\x1d\xf2\x27\x5b\x69\xdb\xfc\x01\xaf\xbb\xd4\x42\xf8\x5e\xc5\xba\xab\xbc\xaa\x29\xfc\x46\xdb\x20\xd7\x8b\xc0\x8f\xc9\x2a\xfc\x4a\xc0\xf7\x6e\xb5\xbe\xdb\xc0\xdd\x2f\xbf\xd2\xff\xff\xf3\xbf\xee\xa6\x2c\x9a\xea\x47\xce\x81\x5c\x42\x2a\xd9\x76\x16\x6c\xd7\xaa\xad\xd9\xb5\xfb\xc7\x41\x11\x20\x05\x69\xc9\xa4\x6d\x65\x6a\x03\x5a\xc1\x5c\xc5\xfd\x9d\xa8\xb7\x71\x28\xfd\x1a\x03\xf5\x66\x06\x98\x5a\x59\xeb\xb8\xbb\xa5\xf2\x5e\x1d\xa8\x42\x9d\x9b\x05\x90\x43\xa6\xa2\x5d\x23\xe5\x2a\x7b\x97\xe8\x9c\xc7\xa6\x21\xf8\xe0\xe4\xc8\xa9\xe6\x0c\xe1\xa4\x8e\x78\x8a\xa4\xb6\x10\xc6\xba\x03\x05\x41\xc7\x91\x71\xe7\xe5\xb6\xb4\x77\x23\x43\xe0\xb1\x43\x69\x6d\x5d\x42\x1d\xe0\x37\x10\xa4\xe8\x4d\xb5\xdc\xd9\xb3\xe4\x37\xb4\xb8\xd9\x48\xe2\x19\x99\x4d\xe2\x4f\xc2\x5b\x99\x19\xab\xd9\x77\x1c\x15\x19\x18\x42\xa2\x84\x07\x52\x3e\x45\x56\xdd\xe5\xfa\x4c\xd2\x17\x5b\x75\xd1\xc8\x52\xee\x72\xc3\x49\x5a\xa6\xb3\x03\xa8\xfc\xa2\x3e\xc6\xb5\xf2\x52\x0a\x8b\x95\x6e\x79\xfa\x00\x21\x74\xe4\x46\x44\x2f\xb5\xb8\x67\x8d\xdc\x4c\xa7\x23\xdc\x10\xe6\x12\x02\x49\x26\xaa\x8d\x1e\x2a\xa7\x7c\xc3\x01\x33\x59\x26\xfb\xc2\x0b\x9d\x86\xef\x33\xd2\x1c\xc3\x73\x05\x7d\xf4\xba\xbf\x06\x4a\x81\xa2\x1f\x9d\x79\x21\x9e\xfc\x68\xd0\x2f\xa0\x84\xa3\xc9\x8e\x7d\x85\xfe\x85\xf2\x8d\xbc\x55\x02\xa9\xdc\x11\x38\x52\x4f\x9b\x93\xc9\xa2\x49\x63\x68\x53\x21\x42\xd4\x3d\xce\x8e\x4f\x8f\x53\xac\x28\xcb\x23\x92\x61\x8c\xa0\x63\x9a\xf0\x4c\xc0\xce\x15\xce\xb4\x8b\x8b\xe6\x17\x24\x22\xbe\x3a\x1d\xa8\xc7\x5d\x32\x56\xbb\xbe\x27\x3b\xa4\x57\x50\x61\x3c\x22\x5a\xa8\x8d\x93\x84\x64\x1b\xf0\x78\x4f\xe7\xa5\xaa\x96\x55\xfe\x22\x12\xd0\x71\xa3\x6d\x5c\x4e\x6f\xf1\xb2\x94\xde\x10\x4c\x39\xee\x46\x38\xbe\xc9\x75\x41\xb5\x11\xbd\x4c\x1f\x8d\x0b\x79\xee\xc5\x83\x37\x97\xdd\x37\xbd\x61\xbe\xa4\xd0\x4b\xc3\xb1\x3c\xb4\xa4\xfc\xca\xc4\xb5\xdd\xbf\xa4\x94\xda\x3b\x63\xa4\x38\x98\x27\x44\xf2\x14\x2a\xe5\x5f\x0c\x77\x59\xda\x2b\xbf\xd7\xb6\xdc\x81\xea\xdd\x68\x63\xae\xcd\xc3\x95\x82\x31\x20\xf7\x09\x69\x8a\x58\xa1\x71\xc7\x5c\xa7\x8b\x67\x5c\xe3\xf8\xb7\xcb\xc3\xc2\x80\xd8\x5c\x39\x8b\x88\x0b\xe3\x84\xf2\xce\x62\xfe\xc9\xa0\x70\x8d\xec\x6f\x12\xd9\x5e\xf9\x38\xa8\x10\xb9\xd6\x94\x1c\x2f\x71\x45\x5d\xb1\x41\xd5\x9c\x87\x90\x18\x94\x36\xd0\xf3\x7e\x34\x51\x53\x37\xc4\x5c\xfc\x7e\x6a\x15\x25\x26\x63\xa4\xd4\x4d\xbc\x0d\x1e\x03\xfa\x03\x9e\xd5\xad\xcb\x92\xce\xe0\x01\xcd\x39\x6d\xc5\xb9\x73\xb4\xb2\x8c\x92\x80\x71\xf5\xe3\x0b\xf1\xe7\xda\x78\xf4\x6a\xb8\x94\x85\x9e\x65\x4d\x51\xee\xe1\xb9\xb7\x73\x60\x9c\xcc\x29\x5a\x1d\xa7\x96\x40\x4a\x81\x17\x5c\x67\x30\x3a\x4a\x09\x91\x7d\x5c\x41\xe7\xbc\xfe\xec\x6c\x54\x06\xf8\x3d\xb9\x77\x6a\x56\x37\x99\x1d\x1d\x09\x95\x73\x0b\xcb\x1e\x90\x2b\x84\xac\x16\xde\xfb\xfb\xe7\xc5\xa4\x25\x5e\xef\xbb\x38\x9f\x7e\xa0\x4a\xae\xfe\xfb\xcf\x16\x58\xe6\x39\x2c\x4f\x94\x52\x25\xf4\x7f\xe1\x82\x4b\x1a\xe9\xd0\x4c\xb9\x83\xd4\xab\x85\xe8\xc9\x7c\x3c\x5c\xd2\x6c\xdc\xdc\xb0\x50\x35\x77\x4f\x4d\xa7\xf4\xc3\x83\xf2\xf9\x58\x0e\xf2\x45\x85\xf4\x21\xcd\x52\x25\x23\xeb\x03\x86\x45\xfd\x39\x18\x55\x73\x6d\x15\x74\x83\x50\xbe\x5a\xad\xcb\x69\x07\x27\x93\x79\x93\xb6\xb5\x19\x1b\x36\x9e\x36\x32\xba\xde\x2c\x66\x22\x1b\x28\x79\x36\xb4\xe1\x81\x1c\xfd\xe3\x86\x48\xff\x50\xe1\x55\xa6\xc9\x07\xca\x53\xe9\x4e\xf9\xc5\xf2\x84\xa8\x1e\x11\x50\x73\xba\x57\x36\x83\x9c\xe3\x1f\xaa\x96\xeb\x0f\xc2\xb5\xa3\xf2\x8c\xe8\x44\xa5\xa5\xe8\x48\x93\xc0\x6b\x73\xfa\xa4\x2e\x2a\x59\xa7\x92\x93\xcb\xe7\xfa\x99\x32\xe4\xd5\x2a\x8b\xb8\x86\x57\xab\x2c\xe2\x7a\xf5\x8a\x7b\xfb\xf5\xe6\xd5\xaa\x76\x66\x4d\xef\xdc\x10\x77\xb9\x99\x5c\x33\xad\xcb\xff\xe6\x35\x62\xd3\xbc\x2b\x4f\xde\xd6\xff\x68\x07\x78\x4a\x44\x52\xff\xee\xac\x2e\x5f\xef\xe4\xea\x81\xde\x50\xf3\xbd\x81\xb3\x55\x6f\xd1\x0c\xeb\xdd\x55\x21\x23\x2f\xe0\x09\xec\x52\x9c\x34\x2c\x5c\xb6\x11\xf2\xe2\x99\xa6\xf1\x69\xcc\x58\x44\xcb\x58\xf7\x84\xdc\xf9\xc6\x41\x1a\xd1\x30\x0e\xe8\xf3\x9d\x23\x27\xe3\x2d\xbc\xa7\xd2\x30\x44\x08\xa7\x10\xb1\x0f\x53\x5b\x71\x1b\xc6\xc6\xdd\x42\x35\x72\x6d\xec\x2c\x7c\xff\xe1\x35\x05\x75\x2a\xf5\x6e\x1b\xa7\xc2\xf6\xf6\xac\xfe\x4d\xaf\xea\x31\x44\xd7\xeb\xcf\x52\x58\x4c\xd3\x2c\xbe\x22\x24\xf8\x48\x97\x5b\x8c\xf4\x3a\x76\x10\xc6\x6b\xb2\xd0\xf1\x49\x96\x93\x8d\xea\x53\xb9\x83\x38\x7a\x1b\x40\x7e\x82\x78\xae\x6b\xdb\xe7\x15\x11\x55\x45\x4d\x63\x2f\xed\xaf\x55\x07\xbd\xa7\x3a\x7c\x2e\xd0\x58\xbf\xb8\xd7\xd6\xf2\xe8\x21\xa7\x38\x15\x52\x7b\x28\xd7\x05\x51\x55\xdc\xb5\xae\x70\xbb\xdf\x4a\xaf\xcb\x25\xea\xb7\x0b\x4a\xce\xd6\xb8\x3e\xef\x08\x58\x70\x2e\x37\x95\x3d\x45\x6e\x8f\x64\xf6\x4a\x7c\x85\xe8\x64\x73\x1a\xae\xbe\x90\x05\x68\x87\xfe\x7c\x36\xa4\x89\xaa\x02\x7a\xc6\x0d\x5c\xba\x96\xb9\x42\xe4\xdb\x99\xc0\x74\xe4\x8e\x47\x77\x89\xf9\x45\x1d\xce\x82\x3e\xcf\x07\xfa\x3e\xea\x68\xd8\x6f\x79\xa6\x1f\xa6\x16\x44\xa6\xc7\x54\x8b\xf8\xa9\x3a\xbf\x0b\xc0\xcb\xa7\x76\x22\x60\xa4\xe6\x73\x2a\xc7\x39\xa5\x48\x25\xfa\x82\x0a\xc6\x80\x83\xd7\xbd\xf2\xa7\x12\x56\xd9\xa9\xda\xd1\x90\x33\x7c\x6d\xf5\xa7\xf5\x93\x1c\x5d\x8c\x2c\x13\x06\x24\x62\x8b\x3e\x21\xf7\x2a\x72\xcf\xc3\xb7\xd4\x09\x3a\x2b\x55\x3f\xee\x3d\x01\x64\x32\xf1\xd4\x51\xaa\xb6\xc5\x3a\xe6\xc4\x6a\x09\x96\x96\xad\x87\x4c\x5b\x7e\x88\xde\xdc\xff\xc0\x01\xc1\x7f\xfe\xfb\x33\x6e\x7b\x7f\x7f\x5f\x14\xff\x66\xc6\xbd\xce\x10\x1f\x76\x7c\xd7\x34\xf0\xb3\xc0\x37\x46\x12\x3b\x6a\xba\x08\x4c\x1e\x37\x37\x81\xce\x2f\xfa\x7e\xec\xb7\xf0\xf1\x6d\xc6\xfc\x42\x07\xea\xb8\xd3\xd4\x3e\x5d\x37\xa5\xab\x74\xbe\x48\x4d\xf3\x79\x39\x0f\x74\x0c\x68\x28\xce\xbe\xb3\xa7\x7c\x0e\x95\x9b\x64\xc8\xa4\x9d\x3c\xc8\xca\x26\xe6\x3a\x7b\x71\xb7\x01\xc5\xe5\xa5\x58\x1a\x1d\x86\xed\xdf\x82\xb3\x10\xdc\x86\x48\x21\xab\x72\x23\x0e\x74\xfe\xe1\x82\xf4\x2c\x89\x7e\x91\xeb\x8a\x69\x48\xf5\x8e\x2b\xf6\xbb\xb9\xfa\xe5\x54\x79\x85\x0e\x4b\x4b\xdc\x53\x43\x6b\x1d\x39\x49\xd1\xab\xba\xe3\xa9\x6c\x1a\x8d\xb0\x0b\xb0\x46\xce\x98\x4c\xf2\xf0\x1e\x48\x7b\xb6\x45\xf1\xd5\x57\xf0\x46\x26\x72\x64\x5d\xe9\x3c\xf3\xc6\xa2\xf8\xf3\xfc\x7d\x03\xed\x0e\x33\xd1\x9c\xc8\x65\x9c\x67\x4e\x64\x31\xde\x6d\x4e\x5b\xf8\x57\xf9\x03\x7a\x54\xf9\x4b\x09\x72\xda\x3c\x70\x3d\xf2\x0c\x62\xa9\xe9\xcb\xcf\x32\xce\x15\x5c\xa6\x91\x91\x8a\xd3\x35\x35\xc5\x4f\x91\xc2\x51\xdb\xab\x33\xde\x0f\xe9\xb4\xb9\xd4\x98\x78\x4d\xdf\x36\x4c\x03\x37\x6a\x21\xe5\x93\x09\x91\x73\x6a\xc0\x2c\x7b\xae\x50\xa4\x7e\xf6\xe3\x7c\x21\x29\xf7\xd1\x8b\x56\x6d\x31\xd8\xdc\x24\x86\x71\x31\x9e\x5e\xac\x64\x3d\x15\xb4\x90\x07\x5c\x74\xe8\xcc\x64\x52\xa2\x7c\x23\x52\x06\x8c\xfc\xa0\x5c\xc2\x1c\x3d\x2d\xb7\x45\xf1\x2e\xdd\x90\x5e\x28\x6b\x1a\x3d\x93\xe5\xf8\x1b\x0d\xea\x8d\xe9\x94\xfc\xed\x4a\x3a\x83\x80\x4c\x72\xec\x89\x3f\x37\x60\x8b\x16\x8a\x25\xe1\xba\x6c\x1a\xa4\x6f\x81\xbf\x81\xd1\x72\xd5\x25\xe3\x8c\x34\x3d\xe9\x54\xb8\x4c\x08\xa9\x8c\x21\xd5\xc9\x3d\x26\x7e\xaa\x71\x88\xf0\xc6\x15\xfc\x5b\xd4\x33\xe5\x04\xf8\xf6\xfa\xf2\x3f\x8e\xd5\x49\x9e\xec\x8a\xa2\x2c\x4b\x92\xae\xf8\xa5\xb8\xb9\x6d\xe3\x6e\xef\x6e\x77\xf0\x4b\x71\x73\x73\xbb\x3c\xfa\x76\x07\x0c\xb8\xc5\xcd\xaf\x1b\x59\xe7\xc7\xea\xb4\x5c\xa9\x3f\xe3\xed\x0e\x7e\x93\x16\x5c\xec\x25\x04\xcb\x8f\x65\xe1\xb7\xc5\xaf\x74\x72\x51\xbc\xf7\x14\x5e\xda\x28\x6f\x4e\x93\x6e\x79\x6a\x28\x31\x49\x2a\xbb\x64\xf3\xeb\xed\xdf\xc5\xe5\xd7\x5b\x5f\xfd\x3f\xb0\xf8\xbf\x01\x00\x00\xff\xff\x90\x75\xac\xf0\xb0\x25\x00\x00" func runtimeHelpOptionsMdBytes() ([]byte, error) { return bindataRead( @@ -1024,7 +1024,7 @@ func runtimeHelpOptionsMd() (*asset, error) { return a, nil } -var _runtimeHelpPluginsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x3a\x6b\x8f\xdc\x36\x92\xdf\xf5\x2b\xea\x3a\x38\xb8\x3b\x68\x6b\xb2\xb8\x6f\x03\x78\x01\x3b\x7e\xc4\x7b\x8e\x6d\x78\x9c\x04\x8b\x20\x80\xd8\x52\xa9\x9b\x19\x8a\xd4\x92\xd4\xf4\xf4\x19\xd9\xdf\x7e\xa8\x2a\x92\x52\xf7\x4c\xb2\xb9\x3b\x5c\x80\x78\xd4\x12\x59\x2f\xd6\xbb\xf8\x15\x7c\x34\xd3\x5e\xdb\x50\x55\xdf\xeb\xd6\x3b\x08\xd3\x38\x3a\x1f\x03\xb4\x1e\x55\xd4\x76\x0f\xa3\x2c\x80\xa3\x8e\x07\x50\x10\xf4\x30\x1a\x84\x77\x93\x82\x70\x0a\x11\x87\x1a\x5e\xdd\xa1\x3f\xa5\x75\x70\x50\x01\x54\x35\x28\x6d\x21\xb4\x5e\x8f\x11\x8e\x07\xdd\x1e\x40\x07\xf0\x93\x05\x15\x21\x44\xe5\xe3\x34\xa6\xf7\xe1\xe0\x26\xd3\xc1\x0e\x61\x34\xaa\xc5\x0e\xb4\x85\xaa\xf9\xe7\x55\xdd\x3a\xdb\xeb\xfd\xd5\x40\x64\x5d\x25\x22\xd2\xdf\xf7\x6a\xc0\xc5\x63\x6d\x26\xd5\xd4\x55\xf5\xf9\x80\x1e\x41\xd1\xff\x60\xa7\x61\x87\x1e\x5c\x0f\xad\x32\x66\xa7\xda\x5b\xe8\x27\xdb\x46\xed\x88\x15\xc6\x7c\x72\x13\xb4\xca\x0a\xa7\x48\x78\x4f\x6e\xf2\x99\x8f\xe8\x2a\xa2\xb7\x75\x1d\x12\xd1\x51\x0f\x18\xc0\xc5\x03\x7a\x88\x07\x65\x33\x17\x35\x7c\x3e\x20\x58\x35\x90\xa8\x42\x7b\xc0\x01\x89\xd5\xc6\xd9\xe7\x8c\x6c\x7d\xa7\xf1\xb8\x69\x6a\x78\xed\x7c\x85\xf7\x8a\x85\xa7\x0a\x2d\xe7\xc2\x41\x16\x24\xa1\x82\x78\x40\x98\x02\x7a\x08\xea\x0e\x03\xff\xdc\x4d\x7d\x8f\x1e\x8e\x49\x5e\xd7\x55\xd5\x34\x8d\x99\x54\x55\x80\x39\x7b\xa3\xee\x50\x50\x56\x00\x00\x75\x5d\xf3\x5f\x8f\x71\xf2\x16\x7a\x65\x02\x56\x68\x3b\xda\xc9\xf2\x82\x86\x16\x37\x70\xa7\xbc\x56\x3b\xc3\xb4\x2b\xf0\xd8\xa3\x47\xdb\x22\x44\xc7\xa8\x69\x11\x3f\x28\x41\xa4\x03\xec\x90\x38\xc6\x7b\x6c\xa7\x88\x1d\x38\x5b\x57\x9f\x0f\x3a\x30\x00\x33\xb8\x10\x41\x99\xa3\x3a\x09\xe9\xed\xe4\x3d\xda\xc8\x70\xb6\x17\xe2\xdf\x63\x14\xdd\x6a\xbe\x9d\xfc\x8f\x1a\x8f\xeb\x4d\x03\x2a\x54\x47\x34\xa6\xae\xaa\xe7\xc6\x80\xba\x53\xda\x30\x79\x2a\x9d\x20\x1d\xb2\xd1\x21\x8a\xbe\x10\x8a\x5b\x3c\xed\xb4\xed\xb4\xdd\x07\x08\x98\xe4\xd1\xf3\xa7\x03\x9a\xb1\xae\xaa\xd7\xce\x17\x65\x08\xc4\xd9\xe0\xa6\x50\x40\x6e\x99\x20\x56\x1e\x13\x1c\xec\xf5\x1d\x0a\x60\xbc\x23\xca\xb5\xed\xdd\xa3\x12\xff\x9e\x80\x7c\xf4\x18\xc2\x5a\xb8\xe3\xf5\x22\x7e\xe3\x5a\x65\xe0\x7e\x0b\x27\x78\x26\xef\xaf\x3f\xba\xa0\x59\x2f\x36\xd5\x1f\x9f\x4c\xc0\x85\xc2\x26\x23\x61\xca\xd2\x0e\x05\x3b\xe7\x0c\x92\x26\x8e\xd8\xea\xfe\x44\xc7\x71\x3c\x60\xd2\xd0\x74\x66\xb2\xb1\xda\x21\x78\x24\x6a\x48\x60\xe9\x4c\xdb\xc9\x07\xe7\xc1\x79\xb0\x2e\x82\xea\x63\xda\x37\x1f\x71\xeb\x48\x5b\x23\xd6\x55\xf5\xde\x45\xd2\x49\x32\x04\x26\x6d\x96\xa3\x6b\xdb\xc9\x3f\xdc\x4e\x6e\x60\x87\x68\x0b\x90\xae\x86\xb7\x3d\xcb\xf8\xa8\x6c\xac\xd4\x6c\x97\x3b\xec\x9d\xc7\x0b\xdc\x59\xb1\xb6\x64\x05\xd0\x8c\x1e\x93\x3d\x91\x2d\xbd\xa5\x93\x21\x02\x55\xe0\x7d\x55\x16\x85\xc8\x06\xbb\x24\x13\x8d\xa1\x88\x24\xf1\xb9\xc0\x32\x7b\x9e\xa2\xc5\xcc\x46\x45\x6b\xcc\xa4\xc4\xf6\x33\xfd\x81\x74\xd1\x8a\x03\x98\x02\xf6\x93\x99\x39\x88\x0e\x6e\xad\x3b\x82\xda\xb9\x69\xe1\xef\x58\xae\x76\x66\xaa\x6a\x9c\x25\x05\xff\x30\x62\xf6\x0b\xf3\x62\x02\x86\x1d\x91\x6b\xc9\x0d\x90\x0b\xc3\xa3\x1c\xa2\x0e\xe0\x46\x24\xb6\x94\xed\x98\x03\x8b\xc7\x2a\x7f\x1a\x55\x08\x6c\x06\xe4\x8a\xc4\x00\x13\x7d\xbd\xf3\x10\x30\xb2\x17\x17\x55\x74\xa3\xe8\xd3\x4e\x05\xb6\x59\x16\x5e\xaf\x0d\xc6\xd3\x88\x5b\xde\x90\x7d\x14\x09\x92\x36\xba\xbe\x87\x26\xaa\x5d\x88\x2e\x8c\xaa\xc5\xd0\x80\xb3\xe6\xc4\x6b\xdf\x38\xa0\xcd\x2c\x64\x86\x75\x22\x03\xaa\x84\xd8\xba\xaa\x9e\x3e\x7d\xfa\x7b\x5e\x79\xd6\x6d\xe2\x29\xbb\x9f\x20\x3a\xc6\x8b\x8b\xcd\x47\xc7\x6a\xa3\x2d\x38\xdf\xd1\xf1\x38\x50\x6d\x8b\x41\x5c\x8b\xb6\x96\x9d\xa2\xbf\x65\xd3\x77\x3d\x70\xc4\xa8\xe1\x3b\x42\xcb\xee\x8c\x1c\x05\xac\x69\x31\xb1\x09\x41\xef\xad\x8a\x93\xc7\x40\x4c\x54\x0b\x4a\x3c\x26\xbb\x9f\x02\xb1\xfe\xc6\x3d\x09\x69\x0b\x47\xba\xcd\x75\x55\x7d\x0d\xcd\x87\x9b\xe6\x7a\x76\x98\x72\x80\xb4\x4d\xe8\xf9\x70\x23\x04\xf0\x99\x8a\xdb\x33\x27\xf2\xee\x22\x4d\x4b\x84\xc8\x29\x91\xec\x01\x82\x1a\x10\x54\x10\x64\x6f\x3e\x7c\xb8\x29\xa0\xb7\x10\x1c\x34\x9d\xf2\x47\x6d\x9b\x2d\x34\x47\x6d\x3b\x77\x0c\xf4\x68\xb4\x9d\xee\xe9\xa1\xf7\x88\xbb\xd0\x35\x75\x5d\x6f\x98\x38\x89\x9a\x2f\xb5\x6f\xae\xa1\x75\x36\x2a\x0a\xdd\x44\xd7\xa8\xe2\x21\x9b\xbe\x10\x28\x4b\x27\xaf\x58\x3d\xf9\x20\x19\x04\x1d\x76\x73\x9d\xe5\xe6\x7a\x50\xc6\xf0\x36\xfa\xb0\xe0\x49\x93\x9c\x50\xb0\x4e\xfe\xb3\xda\x35\xd7\xe9\x44\x3a\xbc\xcf\xbe\x37\x7b\x7e\xde\x9b\x5c\x35\x3f\x13\x70\xde\x3b\x60\x08\x68\xf7\x48\x14\x1b\x8c\x81\x0f\x3b\xa0\xed\x80\xbe\xa8\x3d\x86\x4c\x36\xc7\x43\x72\xe2\x12\xb0\x47\xef\x86\x31\x0a\xcd\xef\xf1\xf8\x82\xc3\xe3\x3a\xe2\x7d\xdc\x0a\xb7\x21\x7a\x6d\xf7\x1b\xf8\x5a\x3e\x91\x44\x78\x67\x48\xc6\x95\x02\x6a\xef\xdd\x00\x4a\x4e\xbe\x62\x97\xac\x3a\x52\x29\xc9\x77\x44\x21\x08\xde\x39\xa2\xd7\xde\x0d\xaf\xb5\xc1\xf5\xff\x05\x55\x01\xfb\x06\xe3\x3b\x54\x14\xbd\x7e\x3a\xe8\x88\x6c\x69\xeb\x0d\xbb\xf8\xe6\x3a\xb9\x35\x39\x47\x23\xcb\x48\xef\xd2\xba\x2c\xea\x02\x55\x88\x61\xb8\x6f\xc3\x4f\xce\x77\xdf\x1e\x94\x5f\x87\xe8\x0b\x99\x17\x70\x1f\xf1\x91\xb2\x52\xec\xe7\xc9\xd1\xf9\x8e\x00\xb7\x07\xe5\x55\x1b\xd1\x3f\x61\xe0\x9f\x26\x8b\x37\xd1\xaf\x3d\xa9\x37\x6e\xd2\x9e\x05\x5c\x95\xc1\x24\x4d\xa4\xc7\x42\x29\x6f\x62\x38\xef\x5c\xbb\xe6\x20\xa9\x6d\xdc\xc0\x3b\xd7\x9e\x81\x20\xf1\xd1\x92\x86\x80\x4d\xad\x28\xcd\x4f\x62\xef\x2f\xb5\xc7\x36\x3a\x7f\x5a\x3f\x8a\xdd\x3b\x47\x5e\x9d\x4f\xc8\x92\x9d\xcd\xa1\x8f\x95\x32\x79\x0d\x62\xad\xcb\x90\x18\xfc\xdf\x9c\xb6\x1f\x55\x3c\x84\x75\xa7\x7d\x5d\xd7\x45\x70\x05\x49\xeb\x86\x9d\xb6\x18\x60\x98\x4c\xd4\xe4\x30\x33\x04\x2d\x0a\x4b\x39\x9e\x31\x67\x87\x5c\xa8\xa5\xa4\xf5\x4c\x6f\x96\x54\x1b\x03\xbb\x49\x0e\xc1\xa8\x10\x01\x0d\x0e\x44\xac\xeb\x19\xd2\x96\x40\xc6\xd3\xa8\x29\x60\x9c\x8a\x69\x3f\x09\x17\x2c\xbc\xc1\xf8\x81\xbd\xfd\x9a\x39\x7f\x88\x88\x73\x04\x65\xa6\xa2\x3f\x1e\xff\x31\x21\xa7\x54\x12\x26\x18\xcc\xf3\xae\x7b\x08\x66\x9b\x36\x6a\x1b\xd1\xf7\xaa\xc5\x2f\xbf\x11\xe4\x40\xd6\x3b\x9f\xaf\x40\x11\x3b\x12\x5f\x97\x3e\xc8\xe6\x75\xb3\xd8\xde\xc0\x80\x8a\x83\xc1\x49\x3c\xae\xb6\xf0\xc6\x89\x4b\xbb\x29\x9c\x08\xc4\x8c\x7d\x66\xe9\x71\xc4\x39\x77\xa5\xc5\x12\x1b\x89\x84\xa3\x36\x86\x36\xf0\xb7\xb4\x72\x6f\xdc\x8e\xa4\xb9\x85\xc9\x1a\x0a\x2c\x3a\xa6\xc8\x21\x51\x93\xe2\x9d\x2c\xad\x33\x45\xef\xe8\xcb\x1f\x90\xb5\x95\xd0\xfd\xf5\x8f\x1c\xe6\x7f\x9f\x44\x3e\xcd\x72\x12\x8c\x4f\x5c\xeb\xbc\x56\x7c\x07\x23\x7e\xa1\x6d\xf7\x9f\x78\x5a\xdf\xe2\x69\x5b\xd2\x98\x22\x06\xca\x7f\x03\x34\xb7\x78\x6a\x88\xf9\x46\x16\x34\xbc\xf3\x7b\x75\x8b\xdf\xba\x61\x50\xb6\xe3\x93\xdc\xce\x25\x48\x26\x38\x65\x3a\x1c\x0a\xeb\xba\xfe\xb6\xfc\x24\xd8\x6c\xfe\xc5\xa5\xb5\x02\x29\xe5\xed\x04\x2f\x67\x32\x2c\x5e\x62\x02\x9a\x8c\xa0\x91\xf4\x20\x27\x59\x35\xfc\x10\x10\xbe\x21\x80\x94\x43\x2c\xb1\x46\xc7\xd5\xc0\x7b\x37\xe3\xae\x97\xd4\xa7\x77\xeb\x0b\xd2\x37\xcd\xf5\x39\x79\xcd\xbc\x96\x25\x41\x29\xa4\x90\xba\x10\x83\xc8\x65\xae\x39\xce\x2d\x63\x59\xb1\xf0\xc2\xef\x94\xed\x4c\x11\x61\x3b\x74\x4b\x93\x9a\xec\xf2\x70\x93\x74\x78\xdb\xab\x7b\x6c\x97\x72\x2f\xd2\x56\x7e\x1f\xe0\xe7\x5f\xb2\x63\x59\xe7\xf7\xe8\xbd\xf3\x04\x94\xe4\x05\x0a\xd6\xe1\x80\xc6\x6c\xce\x45\x7e\x66\x4e\xca\xef\x27\xf2\x10\xa1\x86\x4f\x4b\x0e\x64\xc3\x93\x00\x6e\x8a\xe3\x14\x39\xd1\x52\x30\xba\x10\x34\x25\x2e\x8c\xa8\xce\x8e\xfc\x86\xb0\x3c\xc2\xdd\x23\x84\x7d\xa2\x32\x1e\x98\xac\x8c\x24\xa5\x9e\x53\xc0\x70\xc6\x72\x43\x54\x4e\xb6\x4b\xb5\xc1\xc1\xb9\x8e\x9d\x1b\x17\x32\x9d\xc3\x00\xc1\x0d\xe4\xc0\x3c\x27\x5c\xa4\x0f\x9c\xa0\x67\x8e\x60\xad\x6b\xac\xe1\x1f\x13\xfb\xf1\xf2\x7a\xc3\x55\x37\x6b\x50\xd6\x04\xff\xbf\xe6\xfc\x85\x6a\x6f\xf7\xde\x4d\xb6\x63\x19\x5c\x1c\xed\x23\xcc\x66\xeb\xdc\x95\x8d\x05\xd6\x5b\xf2\x68\x64\x76\x77\x78\x09\x6c\x0b\x47\xa5\x23\x47\xde\x2d\x69\xf9\x07\x21\x8d\x7e\xff\x49\x21\x13\xbf\xbb\x13\xb4\xc6\xb1\xb0\x24\x89\x23\x7a\x72\x72\xb9\xe0\x5d\x5c\xb3\x50\x62\x4e\x5c\x7a\x35\x84\xbf\xe1\xc4\xd3\x4f\xb8\x25\x81\x70\x02\x25\x26\xbb\x63\x71\x4e\x21\x17\x41\x12\x58\xbc\xe3\x3c\x1b\xef\x75\x64\xeb\x1c\xbd\x54\xc3\x9c\xc5\xa1\x1f\xb4\x55\x46\x92\x1a\x3d\x0c\xd8\x69\x15\x91\x92\x5d\xcc\xc5\x03\x15\xd9\x44\xe6\x96\xc2\x9a\x3b\xa6\x58\x5b\x72\xb9\xe8\xe6\xce\x42\x3a\xaa\x14\x8b\x12\x66\x21\xbc\x48\x6b\x41\xfd\xf9\x39\x87\xa8\x6c\xa7\x7c\x97\xa0\x14\x3f\xcf\x75\xaf\x94\x84\x35\xcc\x35\xac\xfe\x1d\xa0\xac\x8c\x0b\xc9\x65\x0c\x01\x06\x75\xe2\xd4\x68\x87\x07\x75\xc7\xa2\xb2\xce\x0f\xec\xab\x77\xd8\x2a\xae\x51\x75\x50\x31\x9e\x1a\xc1\xbc\xac\xeb\x8b\x7a\x7c\x46\x3f\xbc\x1a\x26\xa3\xa2\xf3\x7f\x4e\x35\xb6\x73\x91\x99\x0d\x92\x55\xa4\xb9\x86\x1b\x29\x1c\x88\x96\xc7\x54\xaf\x01\xbc\x6f\x71\x8c\xe7\x5a\x21\x7d\x26\xf2\x21\x49\x89\xb3\x9f\x0b\xa3\xa1\xa0\x47\x4a\x57\x0e\x16\x13\xa9\xdc\x43\xe2\x66\x51\x26\xa6\x01\x6d\x89\x44\xbd\xcc\xf1\x16\xd5\xb0\xe2\xfa\xf9\xa2\xc9\x95\x4f\x64\x51\xe9\x2e\xcf\x9a\x90\xb0\xa2\x49\x4b\xed\x51\x7d\x28\x30\x46\xef\xee\x74\x47\xca\x2a\x26\xdf\x6b\x1f\xc4\xce\x39\x58\x67\x4f\x51\x12\xbe\x44\x1b\xe1\x58\xeb\xa2\xf2\x80\xc3\x18\x4f\x8f\xa8\x03\x1f\xdb\x86\xf9\x5e\x76\x3e\xe8\x4b\xe2\x49\x19\x4d\x3b\x83\xe0\x4b\x5d\x53\xa9\xa9\x59\x8b\xdc\x88\x5e\xfa\xa7\x52\x3b\x06\x58\x73\xd1\xb6\x05\x29\xe8\xb6\xd0\x79\xb5\x77\xb6\x37\x27\xce\xe8\xa8\x66\xde\x85\x6e\x0b\xa9\xa2\xdb\x48\x98\x24\xe2\x9b\xa4\x36\x37\x19\x49\x03\xeb\x80\x08\x3b\x34\xee\xb8\x29\x6d\xa0\xe8\xa0\x43\x39\x3b\x24\x96\x16\xa7\xcb\x45\x01\x93\x41\x14\x17\x62\x45\x2f\x1f\x40\xbf\x86\x17\x0f\x3b\x4b\x09\xe0\x03\xdd\x38\x03\x98\x3a\x0a\x70\x87\x3e\x48\xff\x8d\x30\x8b\xa3\x12\xc3\x0b\xd9\x59\x25\xdc\x8e\x4a\x93\x8f\x2e\xac\x8d\x6b\x29\xf3\xdf\x52\xb6\x93\xab\xa8\x0d\xd9\xe2\x65\x5c\xce\x25\x08\xb9\x73\x9d\xbb\x7c\x6a\x8e\x86\x5c\x48\x70\xab\x2b\xa7\xb0\x9f\xd0\x38\x45\x6c\xad\x3f\xe1\x86\x1e\xa5\xcf\x4a\x26\x20\x45\xd2\x8b\x53\xc4\x0f\x7d\x1f\x30\xfe\x21\x19\x78\xaf\x5a\xaa\x7b\x8d\xbe\xc5\x05\xe9\xc5\xd0\xc8\x7e\x58\xd4\xad\x9b\x28\x76\xed\x4e\x94\x8d\x68\x1b\x22\xaa\x8e\xa8\xa4\x82\x27\xa4\xfa\x62\x77\x33\xaa\xa3\x25\x27\xf0\x7e\x99\x15\xb4\x43\xf7\x7c\x99\x18\x6c\xc1\xd9\x9b\xd8\xb9\x29\xa6\x27\xf4\x9e\x9e\x5e\xdd\xeb\x58\x36\x91\x2f\xe5\x74\xa2\xae\xeb\xb3\x8c\xe8\x26\x2a\x1f\xc3\x59\x7c\x48\xe5\x6c\x32\xa7\x87\x91\x0c\x9a\x8c\xb0\x49\x8f\xe8\x7d\x03\x29\xfc\x34\x82\xb9\xe1\x56\xc9\x59\x2f\x75\x69\xef\xe1\x5f\x18\x7c\x29\x54\x73\x37\xf7\xa0\xc6\x11\x4b\xc2\x3e\x53\x33\x87\x81\x26\xf3\x28\xa8\xcf\x93\x04\xc6\x56\x7c\x3e\x65\x90\xa9\x27\x76\x61\xfd\x33\x81\xe5\x10\x48\x40\x67\x9e\xf8\xff\x45\xdc\xff\x2a\x7d\x38\x73\x32\x28\x2a\x24\x6b\x53\xd2\xcc\x3e\x89\x5d\x1c\xa5\x4a\xd8\x51\x1e\x90\xb3\x03\x16\xab\x34\xac\xa4\x29\x9a\x53\xb2\xb7\x64\x6f\xe2\x55\x53\x7b\x53\x72\xe0\x70\x80\xa7\x6d\x53\x17\x19\x60\xca\xf8\xbe\xa6\x75\xf5\xb7\x43\x47\x3e\x2a\xaa\xb3\xfa\x8a\x13\xa8\xdc\x13\xb0\x49\xae\x21\x76\xba\x34\xd9\x7f\x75\x3b\x2e\x76\x93\x33\x2f\x02\x76\xe3\x39\x70\x82\x77\x4b\xe7\xa4\x78\x8b\x0c\x0d\x28\xbc\x06\xc4\x41\x6c\x4b\x41\xa0\xd0\x3a\xf7\x9f\x4a\x2b\x70\xd6\x30\xca\x22\xc5\xd1\x0a\x7a\xb7\xfb\x15\xdb\x18\xaa\xd2\x01\xde\x49\x6d\x3c\xef\xa0\xc0\x0d\x03\x15\x98\x03\xc6\x83\xeb\x48\xab\x16\x13\x87\xb9\x6b\xc0\x29\x89\xc0\xab\x44\x91\x79\xa6\x95\x9a\x60\xea\xf1\x19\x92\x32\x86\x67\x3c\xb9\x7f\x5a\xcd\xb0\xaf\x79\x28\x23\x21\xa5\xa9\xe1\xef\x69\x0b\xb9\x70\xa1\x70\xc1\x6a\xc9\x51\x33\x1a\x51\x96\x6a\x39\xdd\x38\xa0\x19\x21\xba\x51\xb7\x12\x29\x73\x00\x70\xf6\x01\x91\xb4\xa5\xe5\xa2\xe8\xbc\xc5\x33\xb7\xb8\x8b\x0d\xcf\xdd\x70\x3f\xd9\x1a\xde\xa6\x39\x93\x47\xd2\x27\x3a\xff\x3d\x5a\xf4\x9c\xf1\x84\xa8\xdb\xdb\x94\xde\xc9\xe0\x82\x75\x70\x50\xfc\x52\xcd\x13\x34\x50\x77\x4e\x33\x8c\xc9\x07\xca\xa7\x46\xef\x76\x06\x87\x70\xde\x6a\xd6\x7d\x92\xa3\x31\x0f\xc4\x46\x89\xd9\x86\xd2\x0d\xf6\x46\xf4\x86\x64\xf8\xb7\x29\x44\x19\x0c\x3c\x2e\x65\x08\x12\x70\x2a\x8a\xf5\xce\x3e\x89\xa9\x24\x2d\x20\x40\xed\x95\xa6\xe2\xf2\x87\x90\x4d\x75\x71\xec\xdb\x72\xae\x5c\xa8\x2c\xba\xcd\xa9\x8f\xa7\x42\x70\xad\x56\xc5\xa6\xd8\x74\xb9\x54\xdc\x9d\x92\x2d\xce\x94\xd5\x2f\xa6\xbe\xc9\x53\xaf\xd2\xe1\x5c\x00\x6d\x5e\x6b\x83\x9f\x4f\x23\x36\x5b\x68\x3e\xaa\x78\x68\xb6\x55\x43\x61\xa1\xa9\x6b\x19\x6b\xce\x7a\x91\x74\xf7\x11\xf5\x2b\x3e\x00\x97\x3d\xd5\xb9\x51\xad\x3c\x5e\x9f\x37\x5c\xeb\xef\xa5\xc1\xba\x1e\xc2\x9e\x9c\xd9\x59\x3b\xe7\x7c\xe5\x2b\x4a\x3a\xff\xc4\xba\xbf\x63\x78\xef\x3e\x72\x5d\xb1\x4e\xe5\x45\x29\x24\x39\x9f\xe5\x7a\xe7\x62\xd3\xd9\xfa\x2d\x1c\x74\x88\xce\x9f\x3e\x73\xe3\xfd\x41\x6f\x82\x5f\x2f\x7a\x13\x73\xed\xf4\x18\xe8\xe7\x5d\xf7\xce\xed\x1f\x27\xbc\xfa\xea\xab\xaf\xbe\x12\xd7\x5b\x55\x6f\xdc\xa2\x21\x32\x0f\x08\x58\xc7\x6a\x8e\x7f\x6c\x2f\x52\xe1\x5e\x93\x82\xf1\x30\x70\xef\xaa\x87\xe2\xdc\xc8\x10\x2f\x25\x2d\xae\x4c\x0d\xcb\xca\xeb\x8b\x95\x8b\xc1\x18\xbb\xd9\x54\xcc\x64\x81\xfc\x9a\xb4\xfd\x11\x40\x17\xa2\x5b\xad\xb6\xf0\x4d\x02\xfa\x12\x77\xd3\x9e\xec\xdd\xb8\xfd\x9e\x34\x63\x39\xdd\x26\xa5\xd9\x21\x74\xce\xa6\xce\x08\x27\x93\xcc\x62\xb6\xca\xd6\x75\x54\xb9\x3c\x40\x99\x44\xba\x4a\x3c\xc0\x9e\xca\x78\x9e\xf1\xac\xb6\x02\xfd\xc7\xa4\x72\x9f\xdd\x47\xaf\x6d\xfc\x0e\x3d\x66\x46\x2d\xc8\x35\x83\xe8\xd8\xff\x2d\x49\xca\x64\xa6\xc4\x7f\xf4\x64\x1e\xcd\xb7\xd1\x9b\x57\x0d\x69\xb5\x95\xc6\x60\x63\xdc\xbe\xa1\xea\xb5\xca\x1b\x64\x2e\x22\xc1\x9f\xd2\x68\x29\xf7\xed\xa9\x40\x0c\x54\x09\x70\x95\xba\xc4\x97\xb3\x93\x4e\x87\xd1\xa8\x13\x76\x15\x31\x51\x57\xa4\x17\xf0\x9c\xad\x33\xdb\xd3\x1b\x37\x1f\x8a\xd1\x3b\xaf\xfc\xa9\xaa\x38\xbc\xce\x86\x49\x0e\x8d\xc1\x97\xc9\xe1\x3c\xa7\xe2\xa8\x93\x02\xd5\x1c\x90\x52\x1e\xf0\xc6\x55\x97\xc0\xeb\xaa\xba\xd1\xc3\x68\x4e\xa0\x07\xca\xac\x53\x97\xb7\xbd\x25\x79\x9f\xdc\xf4\xa4\x4b\x81\x52\xc6\x81\xb6\xf8\x01\x52\x57\x1d\xcf\x02\xd1\x3c\xb4\x96\x66\xa6\x76\x53\xd4\x06\x9e\x25\xd0\xeb\x95\x76\x57\xf2\x6e\xb5\x49\x4b\xfa\x21\x2e\xbe\xf7\x43\x5c\x6d\xaa\xf4\x89\x12\x03\xee\x52\xd0\x02\xde\x55\x7f\x42\xd5\xf1\x20\x64\x75\xe3\x06\xa4\xa7\x3a\xde\xf3\x16\xdd\xf3\xca\x7f\x3e\x03\xab\x39\x2e\x71\xd2\x07\xb3\x2a\x89\x57\x59\xf1\x1f\x1e\xbb\x70\x13\x48\x1b\xbc\x86\x0b\x58\x48\x51\x86\x36\x3f\x7d\x0a\x2f\x29\x39\xa1\x4a\x22\x87\x7a\x8a\xce\x16\x94\xf7\x8a\xa5\xcc\x79\x77\x5e\x2c\xfe\xfd\x66\x24\x45\xec\x53\x77\xd2\xd9\x3b\xf4\x9c\xaf\x73\xa9\x9a\xc6\x25\xf3\xc0\x3e\x44\x62\xaf\x1f\x62\x9d\xf6\xad\x57\xff\x1e\x56\x92\x15\xa5\xb1\x3d\x91\xe1\x38\x01\xe1\x32\xa2\x74\xe5\x98\x7a\x3e\x0e\x36\x5a\xe2\xe9\xdf\xf2\x06\x72\xe6\x65\xc2\xff\x5d\x1e\x8a\x2e\x8e\x36\x88\x92\xfe\x8e\xc6\x49\x90\x29\x81\x89\x35\xab\xae\xde\xa3\xf2\x54\xf0\x1a\xb3\xd0\xac\x0c\x26\x2c\x40\x13\xae\xb9\xf2\x63\x0d\x51\x56\x6a\x9a\x2a\x67\x1f\x12\x54\xce\x07\xa2\x73\x71\x97\x51\x1b\xe7\x6e\x21\x1e\xbc\x9b\xf6\x07\x20\xcd\xaa\xf7\xae\xa9\xd6\x97\xd7\x79\x50\x85\x13\x37\x5f\x6d\x87\x9e\x99\xd9\x88\x3b\xa9\xfa\x21\x56\xda\x55\x45\xf1\x2a\x8b\xb1\x1a\x54\x3c\xf0\x3f\x57\x9e\x8a\x0d\x17\x2a\x3f\xd9\xa8\x07\xac\x78\x7e\x42\x72\xe5\x07\x39\x2d\x4a\xf4\xf6\x78\x3f\x56\xdc\x0d\x09\x15\x2f\x64\xc1\x12\x63\x9d\x6b\xb9\x34\x48\x93\x4d\x32\x06\xd5\x1e\x92\x05\x2e\x2f\x56\xcc\x81\x3e\x88\xbd\x11\x6f\x55\xe6\xed\xf7\x0e\xe2\x0c\x7c\x2d\xfe\xa2\x63\xdd\xe5\xd4\x8c\x27\xa9\x5b\x08\x27\x1b\xd5\x7d\xfe\xc5\x9d\x6e\xe3\xbc\x5c\x11\x0a\x17\xb7\x8d\xaa\xea\xef\x0b\x0b\xe6\x10\xfe\xbc\xeb\x3e\x89\x00\xd8\xb8\xa4\x67\x2f\x63\xfa\xb3\xc9\xd1\x1c\xb6\x48\x99\xbb\xae\xa2\x80\xef\xa6\x00\xb7\x3c\x0d\x70\x7d\x1a\xd1\xcb\x14\x3d\x23\x3c\x73\x11\xdb\x94\x81\x65\xb7\x22\x80\x40\x31\x3b\x15\x67\x9a\x17\xdb\x73\x49\xd7\x44\x0c\xb1\x11\x29\x4a\xbe\x98\x66\xb3\x4a\x3e\xd5\x43\xd7\x30\xfe\x2d\xfb\x2a\xce\xf0\x96\x4e\x70\x76\x4e\x17\xec\xae\x68\xf7\x6a\x0b\x2b\x22\x81\xfe\x26\x68\xab\x14\x48\x7e\x08\x0f\x44\x14\x5e\x7b\x37\xcc\x03\xc1\xa5\xc0\x3a\xed\x59\x6a\x11\xbd\xdd\x34\x33\x7f\xe5\x3a\x42\x55\x64\xc4\x83\x30\x01\x5a\xc3\x67\xc7\x16\x9c\x5a\x68\x36\xa6\x31\x9c\xca\x2b\xc4\xda\x29\x32\x37\xe4\x05\x97\x0c\xf4\x29\xa5\xdb\xc2\xd9\xf8\x8d\xf4\xa0\x79\xa7\x43\x5c\x12\x5e\x16\x97\x65\x15\xe9\x2c\xd9\xf4\x12\x51\xc8\xb1\x69\x8a\x2e\xdf\x4a\x29\x85\x62\xa9\x86\xab\xea\x86\x0b\x0b\xbe\x43\x93\xae\x72\x38\x30\xa8\xbc\x85\x83\x3b\xe6\x71\xc8\xc5\x48\x45\x32\x9c\x8b\xf1\xc8\x59\xdc\x28\x6a\x26\x55\xee\x4f\x3a\x1e\xd6\x37\x92\x79\xf1\x1b\xb9\xf1\x24\x6f\xe0\x59\x7a\xb8\x9e\xc6\x11\xfd\x3a\x7f\x53\x3e\xf2\x27\xe5\x63\xfe\x02\xcb\x5b\x50\xc2\x7e\x1d\xa6\x5d\x06\xfd\x97\x6d\x7a\x67\xd0\xae\x05\xcf\xe6\xd9\x33\x7e\x60\x5f\x3a\xdf\xc4\xca\x12\x59\x73\x67\x72\x79\xff\x4a\xf1\x60\xa3\x0c\x99\x9e\xc1\x97\xd5\x77\x68\x8c\x23\xb5\xfa\xc9\x79\xd3\xd1\xc3\x6b\xc7\xbf\x5f\x28\xbf\xfa\x6d\xb1\xd7\x63\x98\x0c\x11\xfd\xe5\x37\x71\xfc\x74\x30\x7a\x7b\x47\xf6\x3b\x2a\xed\xc3\xfa\x1c\xfa\x06\x3a\x1e\xe9\xf1\x7f\xba\x5f\x0a\xeb\x6e\x2b\x4d\xd3\xcd\x1c\x09\xf3\x7f\x91\xb2\xa5\x5a\xdb\x80\x3e\xae\x05\xe5\x16\xee\x36\x65\x0d\x4a\xf7\xa5\xfc\x4d\xe2\x92\x95\x17\x72\xe8\x9d\x5b\x2b\xbf\xdf\x5c\x84\xda\x9c\x71\xf2\x27\xde\xb1\x9c\x08\xae\x7a\x61\x3f\x69\x4c\x2d\x3f\x2f\xa6\x6e\xe5\x6b\x16\xf5\x6a\x93\xac\x91\xb4\xf2\x25\xf6\x8a\x44\x35\xe6\xfb\xa4\x0b\x07\xc3\x6e\x28\x7d\xd8\x96\xc2\xb7\x4b\x3b\x1a\x45\x0a\x6d\x5c\xc0\xa4\x85\x86\xf3\xf4\xa6\x80\x5a\x53\x3d\x30\xdf\xf4\x93\xce\x7b\xb9\xc4\xe2\x11\x3c\x8e\x29\xce\x40\x93\x2c\x26\xdf\x18\x6d\x36\x94\x1e\x1c\xd1\x18\x49\x13\x4e\x55\xbe\xcf\x5a\x6e\x1a\x9d\x43\x77\x7d\xaf\x5b\xad\x0c\xb4\x07\x65\x2d\x9a\xea\x67\x4a\x0b\x7f\x59\x1f\x62\x1c\xc3\xf5\xd5\xd5\x5e\xc7\xc3\xb4\x23\x19\xc8\xd5\xd4\xa7\xd8\xe9\xe8\x7c\xc2\xf7\x34\xed\xda\x24\x5b\x95\xdb\xb5\xf0\xbd\xb2\x6a\x8f\x3e\x5f\xb2\xe5\xaa\x92\x9b\x0a\xb0\x9b\xb4\xe1\xbe\x7b\x72\xac\x83\xac\xbc\xa8\xef\xb4\xbd\x73\xb7\x38\xcf\xfe\x9a\xbf\xe6\xf5\x75\x5d\x37\xa5\xe5\x23\x42\x4f\xe3\x64\xdd\xcd\xe3\x8b\x45\x7e\x38\xcb\xbf\xc9\x9f\x9b\x65\x4b\x41\xea\xcd\x4c\x46\x8f\xb1\x3d\x60\x28\x97\x80\x4b\x82\x92\xf8\x0c\xb0\x2e\x37\xd8\x52\x08\x9d\xef\x0d\xa5\xd8\x36\x60\x54\x9c\x3a\xe5\xcb\x6e\x91\x6f\xcb\x05\xb9\x2e\x57\xc3\x8b\x53\x56\x85\x6d\x3a\x54\xee\xa9\x2f\xd6\x9c\x1d\x4c\x95\x50\xcf\x57\xe7\xf2\xc5\x46\x15\xe1\xcf\x9d\x0e\x77\x8f\x92\x4c\x2a\x0a\x05\x1c\xda\xdc\x91\xaf\x15\xfa\xee\xe9\xa8\x7c\x3c\xcd\x2c\x2e\x0a\x6b\x81\x93\xbf\x34\x79\x8e\x4f\x6a\x9b\xe1\xc9\x35\x0c\xee\x13\xdb\xdb\x33\x80\x45\xf3\x9c\x8c\xc3\xb8\x37\xac\x8c\x91\x34\x65\x99\x75\x64\xc9\x65\x65\xc8\xd9\x65\xc2\x4f\xfa\x5e\x90\xd7\xb9\x7e\x5c\x84\xef\x71\xda\x19\x1d\x0e\x73\x2f\x86\x3e\x73\xfb\xab\xc3\x94\x2e\x17\x3d\x97\x15\x12\xc3\xd3\x75\xd1\x69\xe4\x36\xf9\x32\xe0\x3b\x6b\xb4\x45\x58\x47\x07\x6f\x58\xc6\x54\xa0\xf5\xe8\xd5\xce\x9c\x36\x52\x71\x71\x48\x6d\x88\xb6\xfa\xd7\x40\x21\x85\x82\x56\xba\x15\xcc\x81\x32\x67\xdf\x51\x25\x5b\xcb\x9a\x31\x17\x4f\x39\x3b\x29\x97\xf7\xec\x79\x1d\x43\x80\xab\x9f\xbf\x54\x00\xab\xf7\x6a\xc0\xd5\x35\xac\x64\x0b\x45\xd9\xd5\x96\xde\xbf\x44\xb9\x77\xae\x9d\xa5\xcf\xf3\x35\x40\xab\x5b\x0e\xe3\xad\x0e\xe4\x7c\xca\x2a\xbe\x33\x98\x4f\x47\x60\x7c\x56\xfb\xb0\xba\x86\x9f\x57\xe3\x29\x1e\x9c\x25\xd7\x48\x4e\x49\xdb\xfd\xea\x17\x5e\xf0\xa3\x4c\x38\x78\x11\x7b\xda\x2f\xc9\x59\xe7\x2f\x84\xfa\x2f\xf5\x37\xf5\x37\x0c\x90\xbf\xfc\xe0\x0d\xbd\x7d\xc4\x91\x4c\x01\xb3\x8a\x5e\x29\xdf\x1e\xf4\x1d\x5e\xdd\xf1\xee\xfa\xbf\xf4\x38\x43\xf8\x84\xff\x98\xb4\x27\xae\xbf\x94\xd8\xb0\x62\x3d\x27\xc0\x7f\x7d\x46\x5b\xfe\x63\x95\x3e\x49\x18\xa3\x7f\x7f\xa9\x7e\xfb\xa5\xdc\x2b\xb6\xa9\x46\x86\x71\xe2\x31\x25\xdf\xf9\xf9\x1f\x98\x8e\x92\x4c\x57\xb1\x7a\x57\x39\x63\x52\xc7\xb3\x93\xcf\xc3\x9e\x8b\x3b\xf5\xac\xb7\x04\xf4\xc4\xb9\xd5\xa0\x6e\x11\xa6\xb1\x93\x39\x19\xf9\xb5\x5c\x9a\x3b\x7f\xbb\x5d\xcc\xf5\x58\xf5\x5c\xbf\x84\x15\xe6\x3a\x3b\x95\x1c\x4b\xc5\x4a\x03\xa8\x2a\x4f\x0f\x93\x56\xad\xdf\xb1\x7d\x1c\x74\xb8\x86\xe6\xc7\x57\x9f\x6e\xde\x7e\x78\x0f\xcf\xf2\x41\x35\x1b\xf8\x68\x50\x05\x14\xc2\xc2\xe4\x31\x65\x4b\xd5\xcf\x01\x87\x3b\xf4\x12\x05\xae\xaf\xae\xe4\x67\xed\xfc\xfe\x6a\xc3\xca\x9b\x10\xf2\x60\xeb\xbf\x03\x00\x00\xff\xff\x86\xa3\xf8\x6b\x54\x31\x00\x00" +var _runtimeHelpPluginsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x5a\x5f\x6f\x1c\x37\x92\x7f\x3e\x7e\x8a\xba\x09\x0e\x99\x59\x8c\x5b\xbb\x77\x6f\x02\x14\xc0\x4e\x62\xc7\x77\x96\x6d\x48\x4a\x8c\x83\x61\xa0\x39\xdd\xd5\xd3\x8c\xd8\x64\x2f\xc9\x9e\xd1\xac\xe1\xfd\xec\x87\x2a\x92\xfd\x67\x24\xe5\x36\x79\x88\xa6\xc9\x62\xb1\x58\xac\x3f\xbf\x2a\xfa\x3b\xf8\xa8\x87\xbd\x32\x5e\x88\x6b\x55\x39\x0b\x7e\xe8\x7b\xeb\x82\x87\xca\xa1\x0c\xca\xec\xa1\x8f\x04\x70\x54\xa1\x05\x09\x5e\x75\xbd\x46\x78\x37\x48\xf0\x27\x1f\xb0\x2b\x32\x0b\x90\x0e\x45\x63\x75\x8d\xce\x43\x65\x4d\x90\xca\x10\x03\x22\x6d\x94\x46\x0f\xd2\xd4\xd0\x5b\xef\xd5\x4e\x9f\xc0\x86\x16\x1d\x78\x3b\xb8\x0a\xd3\x7c\xaf\x65\x85\xb5\x50\x06\xca\x7f\x5e\x14\x95\x35\x8d\xda\x5f\x74\x24\xd7\x05\x49\x51\x16\x70\xd7\x62\x12\x08\x6a\xe5\xb0\x0a\xd6\x9d\x60\x4d\xa2\xd1\x22\x26\xda\x80\x6f\xed\xa0\x6b\x91\x44\x00\x19\x40\xa3\xf4\x01\xac\xc1\x51\x18\x96\x45\x1a\x28\x95\x69\x6c\xf1\xbb\xb7\xa6\xe4\xf1\xb8\x05\x0d\xf2\xa7\xe8\x9d\x3d\xa8\x9a\x64\xaf\x6b\x15\x94\x35\x52\xf3\xac\xeb\x24\x7d\x81\x1f\xaa\x16\xa4\x87\xd0\x22\x18\xd9\x21\xd8\x86\x7f\x47\x21\xb7\xf4\x5b\xc4\xdf\xdf\x7b\x38\xe2\xce\xab\x80\x5b\xa8\xb1\x47\x53\xa3\xa9\x14\xfa\x2d\x60\xa8\x8a\xa2\x80\x5f\xd0\x21\x28\xd2\x12\xe0\x83\x64\x2d\x4f\x72\x34\xce\x76\xcc\x78\x6f\x47\xde\xc7\x56\x55\x2d\xb4\x69\xf7\xc6\x6a\x6d\x8f\xa4\x70\x3e\x9f\x0f\x6e\xa8\xc2\xe0\xf0\x52\x88\xb2\x2c\xc5\x53\x0a\xbd\xd8\xdb\x17\x91\x99\x00\x00\xd8\xdb\x42\x0f\x92\x7f\x8e\x5a\xe1\xb5\x62\xfc\xbc\xe4\xef\xaf\x4c\xb3\xa2\xf3\xae\x2e\x61\xb5\xb7\xab\x6d\x1c\xa9\xd1\x57\x4e\xf5\xa4\x19\x9a\x78\x63\x21\x6a\x8a\x0d\x89\x34\x1e\xac\xd5\xd9\xc6\xf2\xa2\xa4\x15\x5a\xd0\x86\xd0\xfb\xcb\x8b\x8b\xbd\x0a\xed\xb0\x2b\x2a\xdb\x45\x69\x5f\x60\xad\x82\x75\x93\xbc\xab\xad\xf8\xb7\x95\x32\x3e\x48\xad\xff\xec\x42\xde\xf4\x80\xce\x27\x29\xff\x56\xfc\xb5\xf8\x6b\x1e\x77\xf8\xf7\x41\x39\x12\xe6\x33\x0f\xf0\x20\xb3\x82\x1f\xae\xe0\x3f\x99\x94\x27\xbe\x88\x6f\x51\x37\x2f\xb5\x86\x46\xa1\xae\xd9\x01\xa2\x7f\x9c\x40\x99\x80\xae\x77\x18\xb0\x26\xf3\xf0\xc1\x29\xb3\xf7\x5b\xf0\x96\x2f\x2b\x6d\x0f\xb5\x45\x0f\xc6\x06\x61\x10\x49\x3b\xb0\x43\xf2\x31\xec\xa4\x09\xaa\xca\x64\xdb\xa8\xbb\x16\x17\x86\xc3\xdb\x49\xed\x2d\x58\xa3\x4f\xa2\x43\x69\x42\x62\xd1\x4b\xe7\xb1\x86\xdd\x09\xda\xa1\x93\xc6\x47\xab\x66\xfb\x8c\xce\xc1\xfb\x18\x50\x35\x9a\xa0\x1a\x85\x8e\xb7\x10\xb4\x45\xba\x8e\x4c\xd8\x5b\x15\xd9\x4a\x38\x48\xad\xea\x3c\x9f\x1d\x85\xaf\x20\x2a\x20\x3b\x5e\xf2\x99\x68\xbd\x72\x67\x87\x90\xe9\xc8\x0c\xe6\xde\x61\xdd\x9c\x7f\xde\x39\xb4\x32\x4c\x8e\x37\xf3\xb6\x42\x88\xef\xbe\x63\x17\xae\xa4\xd6\x3b\x59\xdd\x7b\x21\x72\xf4\x19\x7c\xf4\xee\xdd\x10\xa2\x56\x5a\x79\x40\x90\x55\x85\xde\x13\xff\x4e\x9a\x13\x34\x83\xa9\x88\x93\x87\x9d\x0d\x2d\xb0\x57\xf1\xed\x0a\xd2\xf0\xe8\x64\x6f\x2c\xf8\x20\x4d\x2d\x5d\x0d\x5a\xed\x9c\x74\xa7\x02\xae\x89\xc1\xb8\xf1\xa4\xfd\x1a\x1b\x65\xb0\x8e\xee\x28\x68\x98\x88\x78\x00\x0d\x54\xe8\x38\x0a\xe1\x01\x4d\xf0\xd0\xca\xbe\x47\x33\x39\x3b\xed\xa6\x15\x05\xa7\x66\x76\xa8\xe8\xd9\xd1\xec\x22\x7b\x7f\x29\xc4\x5f\x28\x5a\xa9\xb0\xde\x94\x97\x10\x5a\xe5\xc7\xd3\xcc\x2e\x75\xa0\x7b\x6f\xac\x83\x93\x1d\x5c\x0e\x95\xb4\x4a\x49\xad\xfe\x91\xb5\xf8\x17\x28\xad\x79\x35\x34\x0d\xba\x0f\x3d\x9a\xf5\x6e\x68\x88\xa9\x1b\x28\xce\x93\xd4\xa4\x46\x9a\x25\x11\x6d\x8f\x06\xeb\x7c\xdf\xfd\x10\x72\x70\xf7\xe4\x08\x74\x80\x44\x6b\x77\xbf\x63\x15\x66\xec\x3f\x4a\x83\x99\x7f\x2f\x0d\x3e\xb1\x07\x0d\x3f\xb9\x09\xf1\xce\xfb\xe4\x4d\x98\x78\xb9\xcb\x4b\x56\xc0\xd3\x1b\x94\x71\xb2\x64\x3d\x3b\xb5\xdf\xa3\x8b\x4e\x41\xec\x06\x4f\x46\x7f\x6c\xd1\x21\x6d\x35\xa7\x95\xb0\x53\xa6\x96\x3b\xca\x12\x51\xbf\x6b\x8f\x08\xe5\x0f\xd0\xa2\xee\xe1\x1e\x4f\x34\x4f\xfe\x5c\x6e\x0a\x78\x99\x25\x23\x36\xca\x43\x2f\xbd\x8f\x4e\x1f\x95\x95\x5d\xf7\xfc\xb2\x1c\x86\xc1\xb1\x16\xac\xd5\x28\x4d\xbc\x68\x65\xf6\xc4\xe7\xd8\x22\xa7\x47\x8e\x15\x0a\x8f\xb3\x1b\x76\xa8\x6d\x25\x39\xae\x34\x81\x49\x48\xe4\xc8\x9a\xb6\x47\x47\xfe\x82\x75\xd4\x50\xef\xf0\x19\x15\xa9\xae\xc3\x5a\xc9\x80\xfa\x04\x3b\x6c\xac\xc3\xa7\x15\x46\xe2\xcc\x74\x56\xc0\x0d\x0b\xee\x67\x92\x47\x73\x4d\x86\xba\x90\x5d\xce\x8f\xcc\x9c\xc8\x3b\x4c\x85\x9a\x05\x7c\x6d\xdd\x98\xeb\xe4\xa4\xa1\xc8\x4f\x79\x12\x94\x1c\xc7\x9d\x20\xa8\x0e\x47\x19\xc0\xcb\x03\xfa\x99\xe9\x89\x63\xd2\x4e\x4c\x76\x94\xc5\x46\x66\xd6\xdc\xca\x03\xae\x77\xfd\x86\xe3\x76\x51\x14\xfc\x37\xa9\xbf\x91\xda\xa3\x40\x53\xc7\x60\x4e\xe6\x57\xee\xfa\x12\x0e\xd2\x29\xb6\x00\xb6\x07\x87\x0d\x3a\x34\x15\x52\x20\x99\x1b\xe3\xec\x8c\xca\xc3\x0e\x29\xc0\xe1\x03\x56\x03\xdd\x4f\x84\x25\x85\xb8\xa3\x1b\x22\x3e\xba\xb3\x9e\x82\xd3\x51\x9e\xa2\xf4\xd5\xe0\x1c\x9a\x90\xd9\x15\x31\x9b\xc8\x83\x54\x7a\x66\x7e\x31\xd6\x50\x94\xc0\x1a\x94\xe1\x95\x33\x23\x04\x8f\xe9\xa4\x11\x7a\x90\x91\x26\xdd\x4e\xd1\x8a\x02\xa0\xa5\x10\x99\x58\x6e\x29\x40\x4c\x31\x6c\xaf\x0e\x18\x19\x73\x9c\xe2\xa0\xfb\xa4\x2e\xaf\x89\xc9\x47\x87\xde\xaf\xc9\x2e\xb7\x91\x3e\xaa\x96\xec\x52\xc3\xc3\x16\x4e\x70\x15\xc7\x2f\x3f\x5a\xcf\xa8\x69\xbd\x11\x7f\xac\x75\x8f\xb3\xd8\x9c\x8c\x9d\x25\x7b\xe4\x26\xbe\xc7\x4a\x35\x27\xd2\xf4\xdc\xd2\xf2\x8d\x24\x53\x5b\x38\x4a\xba\xb4\x6a\x70\xde\x3a\x4a\x3a\xc6\x86\xd1\x7b\xe6\x17\x58\x59\x32\xc5\x80\x31\xd1\xbc\xe4\xdc\x41\x1b\xc5\x48\x3c\x0a\x28\xc4\xad\x8d\x50\x8f\x27\xbe\xf7\x31\xdd\x9f\x63\x43\xe5\x01\x1f\x7a\xeb\xa7\x5b\xa3\x39\x5a\xd6\xcb\xea\x5e\xee\xd9\x57\x28\x67\x54\xd2\x90\x63\xa8\x8e\x60\x51\x0c\x51\x94\xc9\x12\xf2\xa6\x10\x93\x16\xc0\x39\xa5\x32\x4c\xc9\x60\x96\xf2\xf3\x80\x22\x81\x61\x15\x32\x71\x4c\x81\x58\xc3\xe0\x73\xfe\x9d\xb0\xa2\x3f\x99\x20\x1f\xa6\xab\x8e\x77\x18\xcf\x7b\x95\xf6\x59\x47\x00\xb4\xda\x08\xfe\x5b\xbc\xb3\xfb\xf5\xea\x17\xd4\x9a\x86\x46\xb7\x19\xcf\xc4\x99\x74\xbc\xcb\x99\xe9\xee\x50\xdb\x63\xcc\x63\xcc\xa8\x64\x93\x78\x01\xe5\x1d\xba\xee\x1a\xbd\x97\x7b\x5c\x77\x7e\x1f\xb5\xd9\xc8\x0a\xbf\x7e\x2b\x8a\x62\xb3\xa0\xfb\xd9\x39\xeb\xd6\xd3\xd8\x5b\xd3\xd8\x57\x72\x3e\x42\xe2\xfd\x11\x97\x5b\x0c\xb7\x41\x86\xc1\xd3\xd2\xd7\xa6\x1c\xe5\xb9\x88\x00\x79\x24\xbc\x96\xf7\xf8\xa3\xed\x3a\x69\xea\x71\xec\xb5\xd2\x34\xc6\x56\x32\x0e\xfe\x82\xba\x7f\x34\xf8\x81\x61\xf0\x33\xc3\xbf\xd1\x55\x3d\x9a\x7b\x6f\x1f\x0d\xdd\xb9\xd3\x2b\x65\xea\xff\xc1\xd3\x38\x74\x83\xda\xca\x49\xa2\x97\x75\x7d\x33\x18\x8a\x8f\x24\x9b\x7f\xed\x6c\xf7\x53\x2e\x8d\x9e\x21\x22\x9a\x6b\xec\x9e\x27\x98\x74\xa9\x7c\x98\x73\x9f\x09\x21\x9f\x5c\x70\x73\xf7\xa3\xd5\xd6\xf9\xaa\xc5\x6e\x3e\x7a\xcb\x76\x36\x1b\x20\x9d\xcd\x3e\x23\x8a\x9b\xb1\xdf\x93\xcd\x38\x52\xbf\x35\x51\x67\x8f\x26\xdf\x68\xbb\x93\x3a\x4f\x8e\xb7\xe8\x5b\xd4\x7a\x24\xfe\xf9\x01\xab\xf3\x4b\xbc\x19\xcc\x13\x43\xaf\x64\x75\xbf\x77\x76\x30\xf5\xed\x82\xc3\xcd\x60\xde\x92\x29\x51\x98\x38\xe0\x72\xee\xbf\xed\xee\x36\x48\x17\x16\x03\xbd\x3c\x9a\x25\x85\xed\x9f\xfd\xbe\x19\x0c\x9b\x75\x37\x68\x19\xac\x5b\xda\x7a\x37\xdc\xc6\x5a\x09\xeb\xd9\x01\x63\xce\x9b\xac\x06\x8f\xc9\x79\x9e\x18\x7a\x19\xde\x29\x33\x4d\x5c\xdf\x91\xd1\xcf\x3e\x3f\x49\x47\x98\x63\x36\xc2\x0e\x36\x73\xa6\x6a\xfc\xfd\xea\xee\x27\x6c\xe4\xa0\xc3\x6c\xe4\x9d\xdd\xcf\xbe\x6e\xe4\x71\xf6\xb5\xd8\xea\x3d\x1e\x23\xe0\x24\xe3\x5b\x98\xcc\xab\x53\xc0\x0f\x4d\xe3\x31\xcc\xce\x38\x04\xb5\xb8\x01\x7c\x39\xed\xfa\x06\xc3\x3b\x94\x94\xfb\x3e\xb5\x2a\xa0\xef\x65\x35\x71\x7b\xeb\x3f\x59\x57\xff\xd8\x4a\x57\x0a\x11\x53\x6f\x27\x4f\xe0\x11\x3b\xd0\xea\x9e\xcb\xab\x8e\x4a\x96\x8c\xba\xa7\x6c\x3b\x2b\x0e\x86\x00\xde\x4e\xd5\x7c\xc4\x9c\x5e\xc4\x64\x34\x81\xc8\x69\x05\x17\x1b\x5c\x62\x74\x18\x5a\x5b\xa7\x92\x6b\x0a\xe3\x2c\x45\xaa\x46\xa4\x39\x89\x7e\xd8\x69\x55\x65\x6a\x16\xc4\xa4\x7d\x60\xbe\x0d\xb1\x4c\x52\xcc\x82\xea\xce\x1e\xb0\x80\x19\x7c\xda\x8a\xd4\x9f\x49\xb0\x3b\xb3\x4a\xa5\x08\x61\x9a\x98\xf2\x2b\x4e\xad\x69\x98\xb8\x96\x04\x8f\xca\x09\x7c\xc5\x94\x12\xd9\x95\xbb\xfe\x92\xd1\xd3\xa6\x2c\x84\x78\x6f\x53\x71\xc6\xc7\x1a\x7c\x82\x60\xe5\x65\x99\xd2\x08\x25\x5a\xe2\x3c\xc7\x72\x4e\xa6\x14\x2d\x0d\xbc\xa1\x54\x59\x16\x99\xbc\xe0\xac\xb3\xb7\x29\xad\x8c\x91\xbc\xc8\xb9\x20\x65\x97\x08\x37\x83\x1d\x93\xd4\x19\xfd\xe5\x19\xfd\x22\x75\x3f\x53\xce\x09\xf1\x36\x30\x5c\x8e\xed\x28\x9c\x6a\x26\x4d\xe5\xa5\xad\x19\xea\xa5\xfb\xea\x9e\xbc\x84\x94\xd3\xdf\x58\xf1\xa8\x56\x14\xe2\x36\xb5\x01\x38\x81\xc6\x9a\x37\xa5\xf0\x93\x1d\xbe\xaf\x93\x29\xc6\xd2\xc0\xc4\x8b\x91\x86\x6b\x58\x15\x16\x17\x7b\x9e\x9a\x95\x25\xd7\x98\xe5\x66\x65\x2f\xe2\xd8\x6a\x93\x48\x9a\x2e\xcc\xe6\x9b\x2e\x8c\x33\xcf\xe5\xf5\x34\x5d\xcb\x20\xb7\x80\xce\x11\x09\xf3\x2c\x28\xce\x93\xb7\xae\x57\x04\x79\xe8\x57\x11\x1e\x88\xa1\x50\x0d\x53\xfe\xf3\x0a\x8c\xd2\x7c\x0c\x76\xc1\xf3\xbb\x89\xf9\x7a\xc5\x7f\xc0\x45\xb7\xe5\x0e\xd5\x25\x9c\x71\x44\xc2\x84\xec\xc5\x2f\xe0\x27\x19\x24\x17\x00\xd9\x13\x24\xf7\xc5\xa4\x73\x92\x6f\x62\x77\x0a\xe8\x33\xf1\xaf\x7c\xd1\xb7\xbd\x53\x26\x34\x70\x54\x5a\x53\xe5\x78\x40\x17\x08\x05\x71\x6b\x21\xf6\x5f\x66\x28\xd5\x07\x3a\x64\xd3\x85\x22\xad\x5b\xaf\xfe\xc3\xaf\xb6\xac\x82\x84\x55\x49\x0c\xcb\x61\x80\x00\xd5\x3e\x36\x40\xd9\x04\x94\xe6\x6b\x84\xdf\x07\x1f\xf8\x4c\xff\x9e\x17\x50\x75\x31\xc2\x5a\xae\xf1\x09\xff\x84\x39\x3c\xfa\xa3\x26\x43\xf4\xae\x6c\x0d\xd1\xfa\x0a\xf1\x1e\xa5\xd3\x27\xe0\x3e\xcb\x68\x7d\x99\x8d\x9f\x23\x2f\x87\xb9\xb9\x46\xb5\x34\x59\x51\x6c\x26\x56\x41\xe4\x70\x17\x6b\xab\x25\x3e\x1b\xd7\x8c\x5b\x6b\x6b\xef\x21\xb4\xce\x0e\xfb\x16\xc8\xfa\x8a\xbd\x2d\xc5\x3a\x2e\x9e\x6a\x51\x94\xfe\x44\x0a\x1e\x4c\x8d\x8e\x0f\xb3\x89\x4e\x2d\x9a\x2e\x08\x65\xc5\x68\x9c\xc2\x60\x10\x9d\x0c\x2d\xff\xef\xc2\x49\x53\x0b\xeb\x85\x8b\x10\x42\xf4\x34\x43\x7a\xe5\x1f\xa9\x5b\x26\x1c\xee\xf1\xa1\x17\x48\xb6\xe3\x05\x13\xb2\x62\xe9\x60\xb5\xad\x86\x0e\x4d\x88\x50\x9b\xbc\x17\x65\xd5\x26\x2f\x9d\x57\x13\xdb\xf1\x50\xa9\x35\x47\x67\x13\xf9\x6c\xcf\x5d\xc4\x82\x7d\x2a\x07\x6a\xb6\x5d\xee\x01\x70\xbf\x7a\x9b\xc3\x5e\xfa\xa2\x82\x6b\x02\x3f\x1c\x20\x66\x5d\x18\x21\xfe\x77\xe6\xe5\x1c\x38\x97\xa0\x6b\x6d\x64\x87\x5b\x08\xa7\x1e\xb7\x40\x7a\x48\x56\xbb\x99\x05\x67\x32\xe6\xba\x16\x54\x9d\xda\xc1\xc3\xbd\x32\x31\x77\xc4\xfe\x79\xb0\xf3\x0d\x97\xf9\x01\x54\x33\x0f\x3d\x91\x11\x48\x3e\x8e\x08\xb6\x57\xd5\xd9\xf2\x31\x75\x04\xf4\x21\x25\x8f\x58\x66\xf3\xd3\x00\x25\x52\x9e\x2a\xba\x3a\xb6\xce\x63\x97\x92\x56\x89\x79\xa0\x9c\x02\xd8\xd9\x71\x57\xb4\x7a\xb5\x85\x15\x89\x40\x7f\x13\xb7\x5c\x54\xfc\xea\x1f\xa9\x68\x89\x6e\x17\x0a\xab\x95\x63\xad\x51\x1d\xb6\x29\xa7\xf3\x99\xa1\xdb\xa1\x03\xdb\x88\x51\x47\x24\x5d\x32\xbc\x02\xee\x2c\x7b\x70\x2c\x10\xad\x09\x54\xfd\x52\x32\xce\x14\xd1\xdb\x07\x8f\xe2\x1c\xf3\xae\x69\xe6\x8e\x37\x8f\x9d\xd5\x7c\x5b\xd6\x3d\x06\xce\x23\xf1\x48\x26\xc8\x66\xc9\xa7\xe7\x1b\xf9\x64\x6a\x43\xb0\xb9\x16\xa5\xa2\xb4\xe3\x02\xcf\xed\xd9\x24\xa9\xfc\x44\x8c\x7d\x9f\xdc\x3c\x09\x16\x34\x4a\x67\xa0\xb5\x47\x76\x48\xd2\x5d\xaa\x5f\x88\x0b\x77\x75\x88\xc9\xb2\xa8\x59\xa6\x96\xd1\xca\x18\xd2\xfa\x4f\x2a\xb4\xeb\x5b\x96\x76\xcb\x23\xb1\xca\x8f\x23\x70\x95\x7e\x5c\x0e\x7d\x8f\x6e\x9d\xe7\xa4\x0b\x3c\x25\x5d\xc8\x33\x30\xaf\xfc\xe3\xe9\x0b\x3f\xec\x32\xeb\xbf\x6d\xd3\x98\x46\xb3\x8e\xfb\x6c\xae\xae\xf8\x07\x87\xd2\xa9\xfb\x90\x35\xb2\xe6\xc6\xda\xbc\xe7\x20\xb5\x9e\x0e\xea\xe1\x0a\xbe\xa6\xfa\x74\x0b\xab\x4f\xd6\xe9\x9a\x7e\xbc\xb6\xfc\xfd\x4a\xba\xd5\xb7\xd9\x5a\x87\x7e\xd0\x24\xf4\xd7\x6f\x31\xee\xd3\xbd\xa8\xed\x81\xdc\xb7\x97\xca\xf9\xf5\x92\xfb\x06\x6a\x3b\x3e\x0d\xa8\x66\xae\xac\xc3\x36\xf6\xfc\x36\x53\x3a\xcc\xff\x05\x42\x98\x85\x32\x1e\x5d\x58\xc7\x2d\xb7\x70\xd8\x8c\x34\x74\xd2\xf9\xdf\xa4\xae\x48\x79\xa6\x87\xc6\xda\xb5\x74\xfb\xb8\xb8\xa3\xda\xde\xec\xd1\x8d\x28\x88\xa7\x78\xc5\xec\xae\xd7\xab\x26\x1e\x3f\x59\x4c\x11\x3f\x97\x26\xb2\x1e\x67\xb3\xaa\x57\x9b\x09\x53\x25\xf0\x9f\xdb\x12\x8b\xee\x1d\x07\xa1\x34\xb1\x25\xb0\x9d\x5e\x2b\xe2\x8a\x52\x92\x3d\x6b\xeb\x31\x19\xa1\xe6\xda\xbc\x1c\x59\xad\x7d\xb0\x6e\x6a\x93\x18\xeb\xba\x11\xad\x54\xd6\x21\x38\xec\x53\x96\x81\x32\xf9\xcb\x45\x5a\x5c\x6e\x08\x1c\x1c\x91\x60\x67\x82\xd6\xe9\x45\x80\x93\x29\xe7\xb7\x05\x77\xdb\x34\xaa\x52\x52\x43\xd5\x4a\x63\x50\x8b\xcf\x2d\x3a\xfc\xb2\xfe\xff\xde\x90\x22\xdb\x17\x69\xd5\x26\x7a\x6a\xac\x5b\xe1\x5a\x1a\xb9\x47\x97\x5f\x51\xd3\xfb\x03\xf7\x48\x07\xa5\x03\xdb\x52\x2e\x03\x98\x32\xe5\xe1\x9c\x9a\x94\x39\xd8\x7b\x1c\x21\x86\x28\x7f\xc8\xf4\x45\x51\x94\x39\x04\xa4\xae\x1e\x37\x85\xf9\x2d\x26\x8d\xfb\x39\x80\x9c\xd4\x5f\xe6\xe9\x32\x26\x2d\x8e\xf2\x45\xec\xd6\x64\x31\x1a\x0c\x55\xcb\x4f\xaf\x51\x67\x23\x3a\x49\xc7\xf4\xb0\x1e\xbb\xb1\x29\x7f\xca\xb1\x74\x4a\x89\xad\xc3\x20\x19\x37\xe5\xc6\x6d\x80\x7b\x63\x8f\x3e\xbe\xfd\x14\xf0\xea\x94\x2d\x61\x9b\xee\xd4\x1a\x7d\x9a\xd3\x2c\xee\x45\xa4\xad\xa7\x36\xf0\xd8\xf0\x0e\xf0\xaf\x5d\x0e\x17\x70\x49\x27\x82\xf2\x00\xe7\x35\x7b\x24\x03\x50\xae\x7e\xd1\x4b\x17\x4e\xd3\x11\xa7\xc6\x58\x19\xf9\xe4\x99\x12\x2c\x77\x17\xd8\x6a\x33\xbf\xf8\xf0\x4c\x40\x42\x99\xfb\x05\xc3\xd1\xf0\xc8\x02\xb4\x3d\xe6\x67\xaf\x88\x51\xe6\x90\x23\x6b\x2e\x1b\x43\x86\x96\x69\x7f\x32\xf7\x71\xf3\x42\x88\xb7\xe7\xb9\x9b\xab\x47\x4f\xf5\x5e\x32\x13\x9a\xe6\x0a\xb4\xc6\x84\x95\x47\x33\xcf\x8f\x6d\x24\x7f\xea\x8e\x0e\xbd\xb6\xb2\x5e\x64\x7b\x6b\xb4\x32\x08\xeb\x60\xe1\x0d\xeb\x18\x7a\xee\x7a\xcb\x9d\x3e\x6d\x62\x83\x91\xf3\x69\x49\xb2\xcd\x1f\xcc\x63\x8d\xcd\x59\x32\x43\x6f\x7e\xf0\xa2\xe3\x64\xcb\x38\x7f\x91\x7a\xea\xb1\x3b\xe2\x04\x7e\x73\xfe\xfc\x55\x00\xac\xde\xa7\xe7\xe5\xb8\x84\x1f\x9b\xb7\x34\xfe\xd3\xf2\x91\x79\xe4\x04\x46\x55\x9c\xc3\x2b\xe5\x29\xf6\x8c\x54\xdc\xa8\xcd\xb7\x13\x79\xdc\xc9\xbd\x5f\x5d\xc2\xe7\x55\x7f\x0a\xad\x35\x14\x18\x29\x26\x29\xb3\x5f\x7d\x61\x82\xdf\xe2\xcb\xab\x1f\x1f\x82\xbf\xa6\x50\x9d\x67\xce\x5f\x8e\x01\x56\xbf\xba\xe7\xde\xa2\x07\x8f\xd9\x44\x2f\xa4\xab\x5a\x75\xc0\x8b\x03\xaf\x2e\xfe\xa1\xfa\x89\xc3\xcd\xf8\xfa\xfc\xf5\xec\xf5\x99\x18\xff\x70\x45\x4b\xfe\x6b\x95\xa6\x62\x12\xa3\xff\x7f\x11\xdf\xbe\x8c\x8d\x58\xc3\x6f\x69\x64\x19\x03\x81\x0b\xfc\xfb\x80\x3e\xfc\x09\xd7\x91\x11\xe6\x4a\x36\x6f\x91\xe1\x92\x3c\x2e\x6e\x9e\x43\xab\x3a\x87\xb8\x1c\xa6\x3d\x31\x3d\x31\xb0\xea\xe4\x3d\xc2\xd0\xd7\xf1\x1f\x92\x4c\xff\x14\x02\x8e\xd6\xdd\x6f\x53\x2d\xe5\x7c\x00\x36\x3d\xdb\xcc\x79\xf9\xa9\x10\x4f\xf5\xc6\xdc\xb0\xd2\xc3\xb8\x58\xfc\x6b\x8b\x02\xd6\xef\xd8\x3f\x5a\xe5\x2f\xa1\xfc\xed\xe7\x9b\xdb\xb7\x1f\xde\xc3\x55\xbe\xa8\x72\x03\x1f\x35\x4a\x8f\x51\x30\x3f\x38\x4c\x58\x49\x7c\xf6\xd8\x1d\xd0\xc5\x24\x70\x79\x71\x11\x3f\x0b\xeb\xf6\x17\x1b\x36\xde\xb4\x21\xe1\x14\xf1\x7f\x01\x00\x00\xff\xff\x28\xc2\x8e\x40\x35\x23\x00\x00" func runtimeHelpPluginsMdBytes() ([]byte, error) { return bindataRead( @@ -1044,7 +1044,7 @@ func runtimeHelpPluginsMd() (*asset, error) { return a, nil } -var _runtimeHelpTutorialMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x57\x5b\x6f\xdd\x36\x12\x7e\xe7\xaf\x18\x9c\x3c\xd8\x5e\x1c\x2b\x40\xd0\x27\x03\x29\xd0\x1a\xdb\x4d\xd0\x5d\xa0\x68\x8c\x02\xfb\x26\x4a\x1a\x1d\xb1\xa6\x48\x81\x97\xa3\x68\x17\xdd\xdf\xbe\x98\x19\xf2\x5c\x6c\x27\x0f\xb9\x1c\x89\x9c\xcb\x37\xdf\x7c\x33\x7a\x07\x4f\x39\xf9\x60\xb4\x55\xea\x69\x32\x11\x4c\x04\x0d\x5d\x30\x38\x82\x71\x29\x78\x48\x1e\x66\xd3\x07\x7f\x13\xa1\xf7\x6e\x34\x87\x1c\x74\x32\xde\x41\xdc\x62\xc2\x19\xd2\xa4\x13\xac\xc6\x5a\x38\x98\x23\x42\xf4\x33\x42\x34\xf3\x62\x51\xe1\x57\x4d\xff\x46\x88\x93\x5f\x8d\x3b\xc0\xe4\x57\xb2\x57\xed\x20\x44\x4c\xc9\xb8\x43\xdc\x43\xc0\xce\xb8\x01\x9e\x71\x8b\x7b\xd0\x6e\x80\x1c\x11\x5a\xe3\x4c\x6a\x6c\xd6\x2d\x24\xaf\xce\xd7\x38\x20\xb2\xb4\xf9\x1c\xc0\x9a\x67\xe3\x0e\x8d\x52\x9f\xfc\x82\x63\xb6\x76\xa3\xe7\x37\xd6\xc2\x48\x26\x13\xa5\x95\x23\xbd\x69\x94\xfa\x82\x08\xed\x8f\x30\xa1\x5d\x60\xc0\x51\x67\x9b\xc8\x67\x0b\xa3\x0f\xa0\xc1\x9a\x98\x40\x3b\xc0\xaf\x8b\xd5\x4e\x12\xf5\x23\xa4\x09\xeb\x69\x0a\x91\x42\xa5\xb0\x1b\xa5\xde\xbd\x7b\x07\xbf\xd9\x7c\x30\x2e\x2a\xf5\x2f\x8e\x6b\xd2\x84\xe1\xc2\x0f\x61\xd6\x4e\x1f\x30\xc0\x3a\x99\x7e\x82\x5e\x3b\xd0\x39\xf9\x59\x27\xd3\x6b\x8a\x74\xf0\xab\xb3\x5e\x0f\xe5\x7c\xe4\x38\x36\x9f\x1b\x78\xf2\x2a\x22\xb2\xeb\x1b\x3f\x8e\xa6\x37\xda\xde\xd4\x63\x7b\x38\x30\x00\x07\x93\xa6\xdc\x35\xbd\x9f\xdf\x33\x28\xf7\x38\x98\xe4\xc3\x7b\x39\x76\xdf\x4f\xda\x39\xa4\xbc\x7f\xf1\x01\x4a\x3d\xf6\x60\x46\x46\x68\x20\xe8\x90\xcc\x18\x17\x93\xb6\x96\x9d\x45\x67\x96\x05\x53\xac\x19\xdc\x12\x26\x38\x80\x71\x52\xeb\x80\x8b\xbf\xdb\xab\x3f\x73\x4c\xb0\x04\x8c\x11\xda\xc7\x14\xec\xdf\xa9\x46\x80\x5f\xb1\xcf\x09\x41\x43\xef\xe7\x59\xbb\x41\x8a\x99\xb6\x05\xa1\x2d\x06\xab\xb3\xea\xa8\x2d\xe1\xcd\x3e\x20\x18\x37\xfa\x30\x0b\xf0\xba\xf3\x39\x71\x4c\xd7\x60\xee\xa1\x02\x83\x6e\xa8\xe5\x29\xd6\x63\xcb\xb5\x55\xc9\x2f\xa6\x2f\xf5\xf9\x52\x58\xa6\xd4\x67\x27\xdc\xd9\x0b\x73\x2a\xfd\x40\x13\x17\x93\x0f\x92\x66\xfb\xbf\xf7\x8d\x90\x4d\x40\x7d\x5f\xcf\x35\x7f\x46\xef\xda\x3d\x68\x18\x8d\x45\xc5\x70\x98\x08\x7d\x40\x4d\x08\x51\x18\xa3\x09\x31\x41\x32\x33\x92\x0b\x08\xb9\x78\x6c\xe0\x73\x92\xe6\x22\x1b\x7c\xbf\x70\x62\xf2\x76\x88\xa0\xad\x55\x8c\xfe\x29\x24\xa6\x2e\x9a\x00\x47\x6d\x33\x46\x22\x04\x50\x3d\x0f\x48\x04\xf5\x0b\x41\xc4\x79\x30\xab\xd0\xa4\x09\x43\x3d\x90\x26\x54\x7c\x4d\xaa\x86\xd0\x5e\xa7\xc0\xfe\xf7\x20\x54\xe3\xfb\x5c\x21\x93\xe8\xfc\x60\x02\xf6\xc9\x6e\x14\x9f\x45\xc8\xd1\xb8\x83\x92\x24\x94\xfa\x42\xad\xbd\x95\xc2\x73\xdd\x99\x86\x5e\xfa\x9a\x4b\x0e\xb3\x1f\xf0\xb2\xee\x11\x53\x89\x57\x72\x69\xe1\x56\xc2\x52\x63\x4e\x39\xe0\x1e\x3e\x8b\x82\x70\xcf\xff\x08\xaf\xcf\x33\x45\x07\xd3\xeb\x84\xe2\x9a\xd4\x84\xbd\xdf\x35\xf0\x34\x61\xc9\x5b\xb1\x95\xa4\x9f\x11\x70\x1c\xb1\x4f\x60\xe6\x19\x07\xa3\x13\xda\x8d\x03\xe2\x03\xda\x46\x0f\x1d\x42\xd4\x47\xaa\x9a\xff\x26\x42\x2a\x7a\xe1\xfc\x45\x65\xc4\x44\x4c\xa6\x7f\x06\x3c\xa2\x03\x3d\x26\x2c\x38\x5a\x1f\x8b\x38\x35\x4a\xfd\xbb\x20\xcb\xde\xce\x29\x45\xb0\x5e\x5a\x5f\xca\x3f\xa3\x76\xf1\x1b\x5e\xbc\xb3\x1b\x4c\xfa\x78\x59\x50\x72\xc4\x4a\x2b\xc5\xa2\x3b\x5d\x1e\xc7\x12\x02\xf9\xe1\x17\x0d\xbc\xd1\xf1\xc5\xd6\xea\x55\x5c\xac\x49\x11\xfc\x82\x4e\x2a\x45\x6f\xa5\x5a\x8c\x3f\xc7\x08\x49\x77\xd1\xfc\x07\xe1\x43\xbb\x67\x47\xf5\xf7\x39\xb8\x0e\xe1\x03\x18\xc7\xd4\xed\x73\x08\xe8\x52\x09\xa7\x81\x9f\x28\x71\x91\x6a\xbe\xe0\x7c\x62\xc8\x45\x91\xc5\x43\xe5\x2b\xd7\x40\xbd\x55\x83\x06\x3e\xf9\x15\x8f\xd4\xf5\x95\xab\x31\x71\x09\xde\x80\xb4\xd0\xea\x6d\x3b\x6f\x01\xb2\x6a\x27\xb8\xb7\x25\x37\xe6\x1a\x67\xc5\xf9\x19\xa7\x7e\xcf\xdd\xc6\x16\xca\x60\xfa\x01\x3c\xb5\xda\x6a\x22\x96\x90\x7c\xb6\x03\x2c\x45\xaa\x46\x6f\xad\x4c\x3b\x52\x92\xeb\x40\x1e\x94\x6a\xdb\x96\xfe\xab\xfe\xab\x00\x00\x76\x7f\x6b\x42\xb7\x7b\x00\xf9\xc5\x4f\x4a\x1c\xbb\x07\xf8\xc0\x0f\xff\xda\xab\x17\xcf\x7f\x50\x7f\x91\x99\x3a\x6e\xd6\x0a\xc6\xab\x34\x4e\x39\x48\xf8\x95\x70\x3a\xf5\x13\x1f\x3e\x58\xdf\x41\x4b\x21\x90\x04\x7f\x2e\x88\x70\x36\x75\x30\x3c\x3b\xbf\x8a\x30\x8b\x18\xd7\x21\xa1\x8f\xda\x58\xdd\x59\xac\x25\x38\x69\xb2\x6a\xcb\x13\x0a\x61\x31\x3d\xdc\xd6\x71\x5b\x9f\xdf\x15\x59\xfe\xf5\x3c\x48\x95\xba\xf8\x01\xab\x0f\xcf\x14\xf5\x9c\x4b\xa0\x51\xcf\x08\xab\xde\x40\xc7\x6a\xa5\x01\xee\xaf\xd3\x4a\x90\x26\x9c\x45\xaa\x24\x88\x97\x12\x7e\x1a\xd9\x17\x8c\xb8\x9a\x8a\x27\x46\x5c\xe5\xcf\x4b\x09\xcf\xb7\xdf\x19\xd2\x80\x83\x7f\x5d\x74\x75\x5d\xf4\x6b\x5f\xaf\x8b\xce\xe6\x76\x0f\xb0\x23\x6b\xbb\x5a\xcd\x3f\x30\x6c\x65\x73\x7a\xa9\x1e\xa7\xd5\xa8\x48\xb2\x29\x43\x05\xba\xed\x9c\x33\x75\x6e\x3d\x08\xba\x27\x94\xda\xd3\x14\x56\x5d\xa1\xe7\x09\x64\x4a\x62\x26\xa5\x5c\x4d\x12\x94\xab\x7c\xaf\xde\xdd\xa4\xd7\xfa\x78\x9d\x95\xba\x40\xf0\x1b\x83\xfb\x62\x51\xda\x0b\xa0\x42\x40\x4e\x84\x72\xeb\x10\x3a\x9f\xcb\x8e\xa0\x56\x92\x40\x89\x5b\x06\xf2\x89\x63\xe7\x79\xdf\x5e\xd8\x94\x41\xff\x92\x64\x97\x07\x2a\xd1\x1e\xaf\xf6\x56\xce\xf7\x9f\x59\x9f\x18\xef\x10\x07\xc9\x61\xf1\x2b\x06\xd2\x62\xd1\xd5\xd3\xa4\x8e\xb0\x04\x7f\x34\x03\x9e\x35\x88\x46\x15\x47\x74\x5a\x51\x05\x11\x78\xe4\x65\xa0\xa8\xf3\x4b\x1a\xb6\x34\xad\x4c\x94\xf1\xcf\xdb\x80\xcd\xb2\x4c\x40\x5d\x26\x68\x63\x58\x27\x74\x32\x71\x21\x26\x1d\x92\x6c\x03\x26\x02\xc6\x88\x2e\x19\xd6\x3a\x0d\xde\xe1\x3d\xdf\x95\xd5\x87\x7a\x98\xb6\x5e\xda\xb6\x45\xed\x65\xdd\x7e\x1d\xaa\x78\xec\x36\x1a\x24\xc4\x1e\x5e\x78\xa5\x0b\xfc\x58\xae\x29\xd9\x6a\xe8\x6b\x40\xf0\x24\x53\xb5\x13\xa4\x90\xac\x3c\x75\xe3\x6b\x0f\x9e\x62\x6f\xc1\x0b\x78\x75\x1a\xf0\xa6\xa1\x68\x62\xb9\xf3\x94\xbb\x7c\x29\x38\xfc\xc3\xd7\x9e\xac\xcc\x1f\xca\xec\xed\x36\x6a\xb3\x54\x59\x7e\xdd\x6a\xa7\x94\xa4\xcb\x6c\xd6\x6a\xcc\x8e\x49\x04\x07\x1f\xb2\xbb\xbd\xe3\x9e\x93\x69\xd3\xe5\x11\x3e\xc2\x63\x0e\x7f\x18\x5c\x6f\xef\x9a\x9f\xf3\x08\xf7\xf7\xb2\x40\x5c\x0d\x2f\xbe\x63\x46\xfa\xf5\xf0\x8b\xb1\xf8\xb4\x2d\x78\x7b\x07\x1f\x3f\xc2\xee\xe0\x77\x14\x87\x3b\x29\xf6\x27\xed\x06\x8b\x5f\x26\xb4\xf6\x51\x3a\xe8\x76\x27\x58\xc0\x0e\x9a\x86\x6c\x34\xbf\xe9\x34\xed\x21\x85\x8c\xf2\xf7\x1d\xb9\xbd\x58\x17\x43\xc6\xb2\x08\x0c\xdc\x7c\x74\xf9\x62\xbe\xeb\xfe\xf9\x10\xa8\x53\xd8\x29\xba\x41\xd1\x1f\xf5\xb3\x71\xc3\xaf\xb8\xdd\x16\x41\xd9\xc3\x8e\xe1\xe0\xbc\x77\x77\xa2\x2a\x3f\xd9\x84\x81\x3e\x64\x8e\x68\xb7\xcb\x79\x75\xc0\x04\xc1\x9c\xd7\xe7\x62\xac\x05\x6b\x5c\xd9\xde\x44\xdd\x68\x56\x1b\x87\xa7\xd9\xfa\x86\x92\x7e\x47\xe2\x2e\x22\xaa\x42\xf7\x1d\xc9\xa8\x1f\x41\x65\xf9\xe5\xee\xb8\xfc\xce\x94\x9e\xc8\x11\x2f\xe7\xcd\xd5\xe2\xff\x52\x0f\xea\xcb\xbb\x46\xfd\x3f\x00\x00\xff\xff\xe5\xd4\xf7\xf7\xec\x0e\x00\x00" +var _runtimeHelpTutorialMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x57\x4d\x6f\xdc\x46\x0c\xbd\xcf\xaf\x20\xd6\x87\x78\x8b\x8d\x02\x04\x39\x19\x48\x80\xc4\x68\x1a\x23\x2d\x50\xc4\x46\x80\xde\x34\x92\xa8\xd5\x74\x47\x33\x8b\xf9\x58\x45\x2d\xd2\xdf\x5e\x90\x94\xb4\x5a\xdb\xc9\x21\xb1\x25\xcd\x90\x8f\xe4\xe3\x23\x7d\x05\x0f\x39\xf9\x60\xb4\x55\xea\xa1\x33\x11\x4c\x04\x0d\x55\x30\xd8\x82\x71\x29\x78\x48\x1e\x7a\x53\x07\xff\x22\x42\xed\x5d\x6b\xf6\x39\xe8\x64\xbc\x83\x38\xc6\x84\x3d\xa4\x4e\x27\x18\x8c\xb5\xb0\x37\x27\x84\xe8\x7b\x84\x68\xfa\xa3\x45\x85\xdf\x34\xfd\x8c\x10\x3b\x3f\x18\xb7\x87\xce\x0f\x64\x6f\xb6\x83\x10\x31\x25\xe3\xf6\x71\x07\x01\x2b\xe3\x1a\x38\xe0\x18\x77\xa0\x5d\x03\x39\x22\x94\xc6\x99\x54\xd8\xac\x4b\x48\x5e\x9d\xaf\x31\x20\xb2\x34\xfa\x1c\xc0\x9a\x83\x71\xfb\x42\xa9\x4f\xfe\x88\x6d\xb6\x76\xa4\xf7\x2f\xac\x85\x96\x4c\x26\x0a\x2b\x47\xfa\x52\x28\x75\x8f\x08\xe5\x3b\xe8\xd0\x1e\xa1\xc1\x56\x67\x9b\xc8\x67\x09\xad\x0f\xa0\xc1\x9a\x98\x40\x3b\xc0\x6f\x47\xab\x9d\x04\xea\x5b\x48\x1d\xce\xa7\x09\x22\x41\x25\xd8\x85\x52\x57\x57\x57\x70\x3f\x45\xa1\xd4\x9d\x13\x6c\x3b\x41\x36\x87\x07\x9a\x62\x4d\x3e\x60\x03\xc6\x41\xf9\xdf\xab\x42\x82\x79\xc5\xa7\x5f\xcd\xe7\x8a\xbf\xa3\x77\xe5\x0e\x34\xb4\xc6\xa2\xe2\xd4\x9a\x08\x75\x40\x9d\xb0\x61\x14\xad\x09\x31\x41\x32\x3d\x92\x0b\x08\x79\xf2\x58\xc0\x5d\x92\xe2\x91\x0d\xbe\x0f\x43\x67\xea\x0e\x3a\x6f\x9b\x08\xda\x5a\x45\xf7\xcf\x90\x38\x35\x68\x02\x9c\xb4\xcd\x18\x0b\x78\xf0\x50\x77\xda\xed\x91\x12\xe0\x8f\x14\x3b\xc7\x01\x35\x25\xc4\xa4\x0e\xc3\x7c\x20\x75\xa8\xf8\x1a\x85\x43\x66\xcb\xcb\x10\xd8\xff\x0e\x7c\x58\xee\xa7\xf1\x88\x60\x12\x9d\x6f\x4c\xc0\x3a\xd9\x91\xf0\x59\x84\x1c\x8d\xdb\x2b\x09\x42\xa9\x7b\xa2\xce\x08\xc7\x80\x31\xc2\x6d\x0a\xf6\x57\xaa\xf3\xde\x0b\x6f\xfa\x9e\x60\xf7\xbe\x41\x21\x09\x5b\x25\xdf\x13\x5e\x89\xa5\x84\x6b\x81\xa5\xda\x9c\x72\xc0\x1d\xdc\x09\x43\x99\x53\xef\xe0\xe9\xf9\xe4\x81\x4a\x5a\xeb\x84\xe2\x9a\xd8\xca\xde\xb7\x05\x3c\x74\x38\xc5\xad\xd8\x4a\xd2\x07\x04\x6c\x5b\xac\x13\x98\xbe\xc7\xc6\xe8\x84\x76\x64\x40\x7c\x40\xdb\xe8\xa1\x42\x88\xfa\x44\x55\xf3\x3f\xcc\x90\x8a\x5e\xfa\x67\x55\x19\x31\x11\x93\xa9\x0f\x80\x27\x74\xa0\xdb\x84\x53\x1e\xad\x8f\x13\xf9\x0b\xa5\xfe\x9a\x32\xcb\xde\xce\x21\x45\xb0\xbe\xd6\x56\xd2\x5b\x77\xd0\xa3\x76\xf1\x07\x5e\xbc\xb3\x23\x74\xfa\xb4\x2e\x28\x39\xe2\x4e\x96\x62\xd1\x9d\x2a\xb7\xed\x04\x81\xfc\xf0\x87\x02\x3e\xfa\x00\x53\x87\xef\xc0\xb4\xfc\x59\x6c\x0d\x5e\xc5\xa3\x35\x29\x82\x3f\xa2\x93\x4a\xd1\x57\xa9\x16\xe7\x9f\x31\x42\xd2\x55\x34\xff\x20\xbc\x2e\x77\xec\x68\x7e\x3e\x83\xab\x10\x5e\x83\x71\x4c\xdd\x3a\x87\x80\x2e\x4d\x70\x0a\x78\x4f\x81\x8b\x14\xf0\x05\xe7\x13\xa7\x5c\x3a\x5e\x3c\xcc\x7c\xe5\x1a\xa8\xe7\x6a\x50\xc0\x27\x3f\xe0\x09\xc3\x99\xeb\x31\x71\x09\x9e\x49\xe9\x44\xab\xe7\xed\x3c\x97\x90\x41\x3b\xc9\x7b\x39\xc5\xc6\x5c\xe3\xa8\x38\x3e\xe3\xd4\x97\x5c\x8d\x6c\x61\x12\xbe\x37\xe0\xa9\xd5\x06\x13\x71\x82\xe4\xb3\x6d\xe0\x98\xc5\x50\xeb\xad\x15\x35\x25\x25\xb9\x04\x72\xa3\x54\x59\x96\xf4\xab\xfa\x57\x01\x00\x6c\x7e\x29\x42\xb5\xb9\x01\x79\xe2\x37\x13\x8e\xcd\x0d\xbc\xe6\x97\xdf\x77\xea\xd1\xfb\x37\xea\x3b\x99\x51\xea\x8f\x73\x6e\x29\x19\x4f\xc2\x58\x62\x10\xf8\x33\xe1\x74\xaa\x3b\x3e\xbc\xb7\xbe\x82\x92\x20\x94\x85\x52\x77\x53\x46\x38\x1a\x6b\x0e\x5c\x95\x83\xf3\x03\xf4\x3e\x20\xe8\xca\xe7\x44\x32\xc5\x57\xf5\x49\x1b\xab\x2b\x8b\x73\x09\x76\x10\x51\x68\x5a\x4e\x6f\x08\xc2\xd1\xd4\x70\x3d\xcb\xf9\xfc\x7e\x3b\xc9\xf2\xe7\xb3\x50\x2b\xb5\x7a\x80\xc1\x87\x03\xa1\xee\xf3\x04\x34\xea\x1e\x61\xd0\x23\xe8\x38\x5b\x29\x80\xfb\x6b\x19\x39\xa9\xc3\x5e\xa4\x4a\x40\x3c\x96\xf0\x65\x24\xac\x18\xa1\xd4\x8a\x12\x0b\x23\x2e\xe2\xe7\xa1\x57\x92\xd2\x7c\xe1\x94\x06\x6c\xfc\xd3\xa2\xab\xcb\xa2\x5f\xfa\x7a\x5a\x74\x36\xb7\xb9\x81\x0d\x59\xdb\xcc\xd5\xfc\x8a\x61\x9c\x26\xf3\x63\xf5\x58\x46\xef\x24\xc9\x66\x1a\x2a\x50\x8d\xe7\x98\xa9\x73\xe7\x83\xa0\x6b\xca\x52\x39\x4b\xf2\x4e\x55\x13\x3d\x97\x24\x53\x10\x3d\x29\xe5\x60\x92\x64\x79\x96\xef\xc1\xbb\x17\xe9\xa9\x3e\x5e\x46\xa5\x56\x19\x64\x7e\x18\xd7\xfa\xd0\xcb\x44\x16\xae\xac\x06\xf1\x4e\x12\x2a\x04\xe4\x40\x28\xb6\x0a\xa1\xf2\xd9\x35\xdc\x57\x6a\x20\x09\x14\xdc\x32\x90\x17\x8e\x2d\xdc\x82\x72\x65\xb3\x14\x56\x3d\x22\xd9\xfa\xc0\x4c\xb4\xdb\x8b\xbd\x88\xe3\xfd\x3d\xeb\x85\xf1\x0e\xb1\x91\x18\x8e\x7e\xc0\x40\x5a\x2c\xba\xba\x4c\xea\x08\xc7\xe0\x4f\xa6\xc1\xb3\x06\xd1\xa8\x62\x44\xcb\x0a\x24\x19\x81\x5b\x5e\x06\x26\x75\x7e\x4c\xc3\x92\xa6\x95\x89\x32\xfe\x79\x1b\xb0\x59\x96\x09\x98\x97\x09\xda\x18\x86\x0e\x9d\x4c\x5c\x88\x49\x87\x24\xdb\x80\x89\x80\x31\xa2\x4b\x86\xb5\x4e\x83\x77\xf8\x92\xef\x1e\x6d\xde\x1b\x47\x3d\x4c\x5b\x15\x6d\x73\xa2\xf6\xb2\xce\x3d\x85\x2a\x1e\xab\x91\x06\x09\xb1\x87\x17\x2a\xe9\x02\xdf\x4e\xd7\x94\x6c\x35\xb4\x6d\x4a\x3e\xc9\xd4\xdc\x09\x52\x48\x56\x1e\xfc\x86\x75\x4e\x08\xe5\xde\x13\xf6\x12\xbc\x24\x6f\x9e\x06\xbc\x69\x28\x9a\x58\xee\x3c\xe5\xd6\x1f\x25\x0f\xbf\xf9\xb9\x27\x67\xe6\x37\xd3\xec\xad\x46\x6a\xb3\x34\xb3\xfc\xb2\xd5\x96\x90\xa4\xcb\x6c\xd6\xaa\xcd\x8e\x49\x04\x7b\x1f\xb2\xbb\xde\x72\xcf\xc9\xb4\xa9\x72\x0b\x6f\xe1\x36\x87\xaf\x06\x87\xeb\x6d\xf1\x21\xb7\xf0\xf2\xa5\x2c\x10\x17\xc3\x8b\xef\x98\x96\x9e\x6e\x3e\x1a\x8b\x0f\xe3\x11\xaf\xb7\xf0\xf6\x2d\x6c\xf6\x7e\x43\x38\xdc\xa2\xd8\x9f\xb4\x6b\x2c\xde\x77\x68\xed\xad\x74\xd0\xf5\x46\x72\x01\x1b\x28\x0a\xb2\x51\xfc\xa9\x53\xb7\x83\x14\x32\xca\xff\x5b\x72\xbb\x5a\x17\x43\xc6\x69\x11\x68\xb8\xf9\xe8\xf2\x6a\xbe\xeb\xfa\xb0\x0f\xd4\x29\xec\x14\x5d\xa3\xe8\x9f\xfa\x60\x5c\xf3\x19\xc7\xeb\x49\x50\x76\xb0\xe1\x74\x70\xdc\x9b\xad\xa8\xca\x7b\x9b\x30\xd0\xa2\x7c\x42\x3b\xae\xe7\xd5\x1e\x13\x04\xd3\xcc\xdb\x73\x39\x19\x2b\xc1\x1a\x37\x6d\x6f\xa2\x6e\x34\xab\x8d\xc3\x65\xb6\x3e\xa3\xa4\x3f\x91\xb8\x15\xa2\x59\xe8\x7e\x22\x19\x42\xe4\x65\xf9\xe5\xee\x58\xff\x1d\x23\x3d\x91\x23\xae\xe7\xcd\x74\xe9\x79\x3d\x98\x3f\x6e\x0b\xf5\x7f\x00\x00\x00\xff\xff\x7c\x2c\x7e\x15\x4c\x0d\x00\x00" func runtimeHelpTutorialMdBytes() ([]byte, error) { return bindataRead( diff --git a/runtime/help/plugins.md b/runtime/help/plugins.md index 2b29ca4b..4c6e15fd 100644 --- a/runtime/help/plugins.md +++ b/runtime/help/plugins.md @@ -1,23 +1,76 @@ # Plugins -Micro supports creating plugins with a simple Lua system. Every plugin has a -main script which is run at startup which should be placed in -`~/.config/micro/plugins/pluginName/pluginName.lua`. +Micro supports creating plugins with a simple Lua system. Plugins are +folders containing Lua files and possibly other source files placed +in `~/.config/micro/plug`. The plugin directory (within `plug`) should +contain at least one Lua file and an `info.json` file. The info file +provides additional information such as the name of the plugin, the +plugin's website, dependencies, etc... Here is an example info file +from the go plugin, which has the following file structure: -There are a number of callback functions which you can create in your plugin to -run code at times other than startup. The naming scheme is `onAction(view)`. For -example a function which is run every time the user saves the buffer would be: +``` +~/.config/micro/plug/go-plugin + go.lua + info.json +``` + +info.json: +``` +{ + "name": "go", + "description": "Go formatting and tool support", + "website": "https://github.com/micro-editor/go-plugin", + "install": "https://github.com/micro-editor/go-plugin", + "version": "1.0.0", + "require": [ + "micro >= 2.0.0" + ] +} +``` + +All fields are simply interpreted as strings, so the version does not +need to be a semantic version, and the dependencies are also only +meant to be parsed by humans. The name should be an identifier, and +the website should point to a valid website. The install field should +provide info about installing the plugin, or point to a website that +provides information. + +## Lua callbacks + +Plugins use Lua but also have access to many functions both from micro +and from the Go standard library. Many callbacks are also defined which +are called when certain events happen. Here is the list of callbacks +which micro defines: + +* `init()`: this function should be used for your plugin initialization. + +* `onBufferOpen(buf)`: runs when a buffer is opened. The input contains + the buffer object. + +* `onBufPaneOpen(bufpane)`: runs when a bufpane is opened. The input + contains the bufpane object. + +* `onAction(bufpane)`: runs when `Action` is triggered by the user, where + `Action` is a bindable action (see `> help keybindings`). A bufpane + is passed as input and the function should return a boolean defining + whether the view should be relocated after this action is performed. + +* `preAction(bufpane)`: runs immediately before `Action` is triggered + by the user. Returns a boolean which defines whether the action should + be canceled. + +For example a function which is run every time the user saves the buffer +would be: ```lua -function onSave(view) +function onSave(bp) ... return false end ``` -The `view` variable is a reference to the view the action is being executed on. -This is almost always the current view, which you can get with `CurView()` as -well. +The `bp` variable is a reference to the bufpane the action is being executed within. +This is almost always the current bufpane. All available actions are listed in the keybindings section of the help. @@ -31,191 +84,96 @@ function onMousePress(view, event) end ``` -These functions should also return a boolean specifying whether the view should +These functions should also return a boolean specifying whether the bufpane should be relocated to the cursor or not after the action is complete. -Note that these callbacks occur after the action has been completed. If you want -a callback before the action is executed, use `preAction()`. In this case the -boolean returned specifies whether or not the action should be executed after -the lua code completes. +## Accessing micro functions -Another useful callback to know about which is not an action is -`onViewOpen(view)` which is called whenever a new view is opened and the new -view is passed in. This is useful for setting local options based on the -filetype, for example turning off `tabstospaces` only for Go files when they are -opened. +Some of micro's internal information is exposed in the form of packages which +can be imported by Lua plugins. A package can be imported in Lua and a value +within it can be accessed using the following syntax: ---- +```lua +local micro = import("micro") +micro.Log("Hello") +``` -There are a number of functions and variables that are available to you in order -to access the inner workings of micro. Here is a list (the type signatures for -functions are given using Go's type system): +The packages and functions are listed below: -* `OS`: variable which gives the OS micro is currently running on (this is the - same as Go's GOOS variable, so `darwin`, `windows`, `linux`, `freebsd`...) +* `micro` + - `TermMessage(msg interface{}...)` + - `TermError()` + - `InfoBar()` + - `Log(msg interface{}...)` + - `SetStatusInfoFn` +* `micro/config` + - `MakeCommand` + - `FileComplete` + - `HelpComplete` + - `OptionComplete` + - `OptionValueComplete` + - `NoComplete` + - `TryBindKey` + - `Reload` + - `AddRuntimeFilesFromDirectory` + - `AddRuntimeFileFromMemory` + - `AddRuntimeFile` + - `ListRuntimeFiles` + - `ReadRuntimeFile` + - `RTColorscheme` + - `RTSyntax` + - `RTHelp` + - `RTPlugin` + - `RegisterCommonOption` + - `RegisterGlobalOption` +* `micro/shell` + - `ExecCommand` + - `RunCommand` + - `RunBackgroundShell` + - `RunInteractiveShell` + - `JobStart` + - `JobSpawn` + - `JobStop` + - `JobStop` + - `RunTermEmulator` + - `TermEmuSupported` +* `micro/buffer` + - `NewMessage` + - `NewMessageAtLine` + - `MTInfo` + - `MTWarning` + - `MTError` + - `Loc` + - `BTDefault` + - `BTLog` + - `BTRaw` + - `BTInfo` + - `NewBufferFromFile` + - `ByteOffset` +* `micro/util` + - `RuneAt` + - `GetLeadingWhitespace` + - `IsWordChar` -* `configDir`: contains the path to the micro configuration files - -* `tabs`: a list of all the tabs currently in use - -* `curTab`: the index of the current tabs in the tabs list - -* `messenger`: lets you send messages to the user or create prompts - -* `NewBuffer(text, path string) *Buffer`: creates a new buffer from a given - reader with a given path - -* `NewBufferFromFile(path string) *Buffer`: creates a new buffer from a given - path - -* `GetLeadingWhitespace() bool`: returns the leading whitespace of the given - string - -* `IsWordChar(str string) bool`: returns whether or not the string is a 'word - character' - -* `RuneStr(r rune) string`: returns a string containing the given rune - -* `Loc(x, y int) Loc`: returns a new `Loc` struct - -* `WorkingDirectory() string`: returns a rooted path name to the current working - directory - -* `JoinPaths(dir... string) string`: combines multiple directories to a full - path - -* `DirectoryName(path string)`: returns all but the last element of path, - typically the path's directory - -* `GetOption(name string)`: returns the value of the requested option - -* `AddOption(name string, value interface{})`: sets the given option with the - given value (`interface{}` means any type in Go) - -* `SetOption(option, value string)`: sets the given option to the value. This - will set the option globally, unless it is a local only option. - -* `SetLocalOption(option, value string, view *View)`: sets the given option to - the value locally in the given buffer - -* `BindKey(key, action string)`: binds `key` to `action` - -* `MakeCommand(name, function string, completions ...Completion)`: - creates a command with `name` which will call `function` when executed. Use 0 - for completions to get NoCompletion. - -* `MakeCompletion(function string)`: - creates a `Completion` to use with `MakeCommand` - -* `CurView()`: returns the current view - -* `HandleCommand(cmd string)`: runs the given command - -* `ExecCommand(name string, args []string) (string, error)`: exec a (shell) command with the - given arguments. Returns the command's output and a possible error. - -* `RunShellCommand(cmd string) (string, error)`: Run a shell command. This uses `ExecCommand` - under the hood but also does some parsing for the arguments (i.e. quoted arguments). The - function returns the command's output and a possible error. - -* `RunBackgroundShell(cmd string)`: Run a shell command in the background. - -* `RunInteractiveShell(cmd string, wait bool, getOutput bool) (string, error)`: Run a shell command - by closing micro and running the command interactively. If `wait` is true, a prompt will be - used after the process exits to prevent the terminal from immediately returning to micro, allowing - the user to view the output of the process. If `getOutput` is true, the command's standard output - will be returned. Note that if `getOutput` is true, some interactive commands may not behave - normally because `isatty` will return false. - -* `RunTermEmulator(cmd string, wait bool, getOutput bool, callback string) error`: Same as - `RunInteractiveShell` except the command is run within the current split in a terminal emulator. - The `callback` input is a string callback to a lua function which will be called when the process - exits. The output of the process will be provided as the first and only argument to the callback - (it will be empty if `getOutput` is false). - Note that this functionality is only supported on some operating systems (linux, darwin, dragonfly, - openbsd, freebsd). Use the `TermEmuSupported` (see below) boolean to determine if the current - system is supported. - -* `TermEmuSupported`: Boolean specifying if the terminal emulator is supported on the version of - micro that is running. - -* `ToCharPos(loc Loc, buf *Buffer) int`: returns the character position of a - given x, y location - -* `Reload`: (Re)load everything - -* `ByteOffset(loc Loc, buf *Buffer) int`: exactly like `ToCharPos` except it it - counts bytes instead of runes - -* `JobSpawn(cmdName string, cmdArgs []string, onStdout, onStderr, onExit string, userargs ...string)`: - Starts running the given process in the background. `onStdout` `onStderr` and - `onExit` are callbacks to lua functions which will be called when the given - actions happen to the background process. `userargs` are the arguments which - will get passed to the callback functions - -* `JobStart(cmd string, onStdout, onStderr, onExit string, userargs ...string)`: - Starts running the given shell command in the background. Note that the - command execute is first parsed by a shell when using this command. It is - executed with `sh -c`. - -* `JobSend(cmd *exec.Cmd, data string)`: send a string into the stdin of the job - process - -* `JobStop(cmd *exec.Cmd)`: kill a job This may seem like a small list of available functions but some of the objects -returned by the functions have many methods. `CurView()` returns a view object -which has all the actions which you can call. For example -`CurView():Save(false)`. You can see the full list of possible actions in the -keybindings help topic. The boolean on all the actions indicates whether or not -the lua callbacks should be run. I would recommend generally sticking to false -when making a plugin to avoid recursive problems, for example if you call -`CurView():Save(true)` in `onSave()`. Just use `CurView():Save(false)` so that -it won't call `onSave()` again. +returned by the functions have many methods. The Lua plugin may access any +public methods of an object returned by any of the functions above. For example, +with a BufPane object called `bp`, you could called the `Save` function in Lua +with `bp:Save()`. -Using the view object, you can also access the buffer associated with that view -by using `CurView().Buf`, which lets you access the `FileType`, `Path`, -`Name`... - -The possible methods which you can call using the `messenger` variable are: - -* `messenger.Message(msg ...interface{})` -* `messenger.Error(msg ...interface{})` -* `messenger.YesNoPrompt(prompt string) (bool,bool)` -* `messenger.Prompt(prompt, historyType string, completionType Completion) (string, bool)` -* `messenger.AddLog(msg ...interface{})` - -#### Note - -Go function signatures use `.` and lua uses `:` so +Note that Lua uses the `:` syntax to call a function rather than Go's `.` syntax. ```go -messenger.Message() +micro.InfoBar().Message() ``` turns to ```lua -messenger:Message() +micro.InfoBar():Message() ``` -If you want a standard prompt, just use - -```lua -messenger:Prompt(prompt, "", 0) -``` - -Debug or logging your plugin can be done with below lua example code. - -```lua -messenger:AddLog("Message goes here ",pluginVariableToPrintHere) -``` - -In Micro to see your plugin logging output press `CtrlE` then type `log`, a -logging window will open and any logging sent from your plugin will be displayed -here. - - ## Accessing the Go standard library It is possible for your lua code to access many of the functions in the Go @@ -226,11 +184,12 @@ Simply import the package you'd like and then you can use it. For example: ```lua local ioutil = import("io/ioutil") local fmt = import("fmt") +local micro = import("micro") local data, err = ioutil.ReadFile("SomeFile.txt") if err ~= nil then - messenger:Error("Error reading file: SomeFile.txt") + micro.InfoBar():Error("Error reading file: SomeFile.txt") else -- Data is returned as an array of bytes -- Using Sprintf will convert it to a string @@ -282,7 +241,6 @@ files to the runtime. To read the content of a runtime file use `ReadRuntimeFile(fileType, name string)` or `ListRuntimeFiles(fileType string)` for all runtime files. - ## Autocomplete command arguments See this example to learn how to use `MakeCompletion` and `MakeCommand` @@ -313,7 +271,6 @@ end MakeCommand("foo", "example.foo", MakeCompletion("example.complete")) ``` - ## Default plugins For examples of plugins, see the default `autoclose` and `linter` plugins @@ -321,7 +278,6 @@ For examples of plugins, see the default `autoclose` and `linter` plugins plugins that are stored in the official channel [here](https://github.com/micro-editor/plugin-channel). - ## Plugin Manager Micro also has a built in plugin manager which you can invoke with the From 7f32d311080c24da7ea8434783118a68d33efda0 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 19 Dec 2019 09:54:53 -0500 Subject: [PATCH 166/231] Fix plugin names --- internal/config/runtime.go | 6 +++--- runtime/plugins/autoclose/info.json | 2 +- runtime/plugins/literate/info.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/config/runtime.go b/internal/config/runtime.go index 1f1564c4..aaf3f5a6 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -1064,7 +1064,7 @@ func runtimeHelpTutorialMd() (*asset, error) { return a, nil } -var _runtimePluginsAutocloseAutocloseLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x55\xd1\x6a\xdb\x4a\x10\x7d\xf7\x57\x0c\xba\x0f\x96\x88\xe5\x8b\xef\xd3\x25\xa0\x42\x93\x42\x31\x98\xb6\x24\x85\xb4\x24\x81\xac\x56\xb3\xd6\x12\x79\x57\x8c\x66\xeb\x94\x90\x7f\x2f\x2b\xd9\x8e\xe4\x2a\xb2\x0d\xd1\xc3\xda\xd2\xce\xd9\x99\x3d\x73\x66\xa6\xb0\x52\x14\xe0\x1c\xeb\x02\x12\xd0\xab\xd2\x12\x87\xc1\x4a\x4b\xb2\xff\xfa\x8f\x41\x34\xda\x98\xb0\xfa\xbf\x65\xe1\x5f\x77\x7b\xc2\xb1\x95\x85\xad\xf0\x9b\xd0\x54\x41\x02\xcf\xc1\x5d\x70\x17\x04\x13\x08\xc6\x63\xbf\x3e\x3c\xf8\x35\x8c\xfc\xfa\xfc\xe2\xd7\xdb\xfb\xe0\xa5\x85\xfe\x82\xeb\x42\x9b\x16\xfe\x2f\xdb\x91\x72\x46\xb2\xb6\x06\x64\x2e\xe8\x23\x87\x15\xd3\x04\x74\x34\x02\x00\x88\x63\x28\x9c\x00\x6d\x32\x7c\xd2\x66\x09\xba\x02\x6b\x10\xac\x52\xa0\xc8\xae\x60\x69\x6b\x33\x42\x76\x64\x9a\xdb\x4e\xaf\x9c\xc1\xdd\x31\xf1\x2c\x1a\xa1\xc9\x5a\x5e\xac\xf1\x06\x61\x5a\x4e\x80\x1a\x27\xca\x12\x68\x48\x60\x36\x81\x7f\xf6\x6e\x9c\x35\xe7\xfb\x47\x2b\x20\x48\x92\x6d\x94\x5d\xc3\x5b\x7d\x3f\x81\xff\x22\xe0\x1c\xcd\x0e\xe1\x9f\x86\x09\xe9\x68\xa1\x0d\x42\x02\x69\x39\xbd\x70\xea\xdc\xbf\x85\x69\x39\xbd\x74\x54\x59\x9a\xfe\x8c\x46\x1d\x94\x56\x5b\x37\x1b\xe4\x04\x5e\x8d\x7f\x9c\xcd\xa2\xd3\x03\xf1\x4f\x5a\x9e\x5f\x08\xf9\x58\x95\x42\x62\x18\xf5\x6d\x37\x2e\xae\xf4\x32\xe7\x3e\x03\x42\xf1\xd8\xf9\x5a\x53\xbb\x17\x79\x2b\x52\xf8\x00\x33\x10\x26\x83\xb0\x49\xcd\xbc\xba\xb1\x94\x5d\xe6\x82\xc2\x81\xfb\xc5\xb3\x28\x02\x4b\x43\x14\xc4\x87\x28\xf0\x47\xf4\x73\xd0\x7b\x87\xbe\xff\x87\x13\x3e\x7b\xcf\x84\xb7\x69\x4b\x92\xba\x2c\x6b\x29\x5f\x5a\x67\x78\x6e\xae\x99\xb4\x59\x6e\xc9\xa8\xf9\x31\x96\xe1\x14\x5e\xcf\xde\x24\x25\x8e\xfd\x77\x18\xc7\x63\xc8\x91\xd0\x97\x19\x5b\xc8\x90\x50\xa1\x91\x58\x6f\x96\x56\x1b\x46\xf2\x1b\xaf\x67\x2e\xac\x84\x75\xae\x65\xee\x21\x9e\xa1\x95\x60\x2d\x45\x51\xfc\x86\x95\xc8\xb0\xcf\xd1\x3a\x47\x03\xd2\x9a\x5f\x48\xec\x4b\x7a\x69\xa1\x62\x72\x92\x6b\x9f\x85\x13\x7d\xa0\x39\x83\x41\xcc\x6a\x93\x14\x37\x91\x91\x8f\x2d\x83\x14\xa5\x70\x55\x13\xe4\xae\xca\xf1\xa9\x44\x7f\xa4\x00\x63\xcd\x2e\xf6\xc6\x51\x8f\xf0\xeb\x1c\xcd\x4d\x85\xc4\x61\xdc\xb9\xde\x64\xb0\xce\x06\x8a\x68\x81\xea\xf8\x1a\xda\xff\xbf\xfd\xdd\x34\x36\x25\x8a\x0a\xf7\xfa\x58\x49\xd8\x04\xbc\x69\xb1\x61\x5a\x36\xde\x8e\x56\x60\xc7\xd8\x4b\x0d\x92\xa1\x9a\x6b\x03\x0c\x3e\xf1\x61\xc4\xd9\xac\x8d\x59\xfb\x01\xd0\xe8\xf5\x33\xf2\x02\x45\xa6\xcd\xf2\x26\xd7\x8c\x4d\x43\xda\x4a\x7b\xd4\xdb\x94\x3b\x83\xa4\xdb\x96\x77\xd1\x77\x6a\xb5\x0d\x78\xb3\x5a\xb5\x6a\x5d\x65\x18\x3e\xd0\x54\xbb\x79\xe8\xd5\x44\x63\xf2\x5d\xa4\xbd\xdb\x43\xf2\x0b\xee\x4c\x00\xd3\x29\xac\xab\xde\x83\xaf\x59\x10\x7f\x55\x8b\x37\x3d\x0f\xaa\xb1\xa3\xaf\x63\x44\xd9\x56\x25\x93\xeb\x11\xe5\xeb\x84\xd9\x0a\xf2\xb8\xf9\x7a\x92\x6c\xe1\x5d\x86\xa4\x9f\x4c\x43\x82\x3f\xbd\xfb\xa7\xe5\xf9\x27\x2c\x90\xdb\xb9\x38\x48\xdf\x9f\x00\x00\x00\xff\xff\x80\x29\x13\xa7\xab\x09\x00\x00" +var _runtimePluginsAutocloseAutocloseLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x55\xd1\x6a\xdb\x4a\x10\x7d\xf7\x57\x0c\xba\x0f\x96\x88\xe5\x8b\xef\xd3\x25\xa0\x42\x93\x42\x31\x98\xb6\x24\x85\xb4\x24\x81\xac\x56\x23\x6b\x89\xbc\x2b\x46\xb3\x75\x4a\xc8\xbf\x97\xd5\xda\x8e\xe4\x2a\xb2\x0d\xd1\xc3\xda\xd2\xcc\xd9\x99\x3d\x7b\x66\xa6\x34\x52\x94\x60\x2d\xab\x12\x12\x50\xab\xca\x10\x87\xc1\x4a\x49\x32\xff\xba\x8f\x41\x34\xf2\x2e\x2b\xbb\x6f\xdf\x99\x2c\xe7\xff\xb7\x8c\xee\x75\x67\x13\x96\x8d\x2c\x4d\x8d\xdf\x84\xa2\x1a\x12\x78\x0e\xee\x82\xbb\x20\x98\x40\x30\x1e\xbb\xf5\xe1\xc1\xad\x61\xe4\xd6\xe7\x17\xb7\xde\xde\x07\x2f\x2d\xf4\x17\x5c\x97\x4a\xb7\xf0\x7f\xf9\x8e\x72\xab\x25\x2b\xa3\x41\x16\x82\x3e\x72\x58\x33\x4d\x40\x45\x23\x00\x80\x38\x86\xd2\x0a\x50\x3a\xc3\x27\xa5\x97\xa0\x6a\x30\x1a\xc1\xe4\x39\xe4\x64\x56\xb0\x34\x8d\x1b\x21\x5b\xd2\x9e\x88\xe9\x95\xd5\xb8\xdb\x26\x9e\x45\x23\xd4\x59\x2b\x8a\xd1\xce\x21\x4c\xab\x09\x90\x0f\x92\x1b\x02\x05\x09\xcc\x26\xf0\xcf\xde\x89\x33\xbf\xbf\x7b\x54\x0e\x04\x49\xb2\xcd\xb2\xeb\x78\xab\xee\x27\xf0\x5f\x04\x5c\xa0\xde\x21\xdc\xe3\x99\x90\x96\x16\x4a\x23\x24\x90\x56\xd3\x0b\x9b\x9f\xbb\xb7\x30\xad\xa6\x97\x96\x6a\x43\xd3\x9f\xd1\xa8\x83\x52\xf9\x36\xcc\x06\x39\x81\x57\xe7\x1f\x67\xb3\xe8\xf4\x44\xdc\x93\x56\xe7\x17\x42\x3e\xd6\x95\x90\x18\x46\x7d\x66\x1f\xe2\x4a\x2d\x0b\xee\x73\x20\x14\x8f\x9d\xaf\x0d\xb5\x7b\x99\xb7\x32\x85\x0f\x30\x03\xa1\x33\x08\xfd\xd5\xcc\xeb\x1b\x43\xd9\x65\x21\x28\x1c\x38\x5f\x3c\x8b\x22\x30\x34\x44\x41\x7c\x88\x02\xb7\x45\x3f\x07\xbd\x67\xe8\xfb\x7f\xf8\xc2\x67\xef\x79\xe1\x6d\xda\x92\xa4\x29\xcb\x46\xca\x97\xc6\x6a\x9e\xeb\x6b\x26\xa5\x97\x5b\x32\x1a\x7e\xb4\x61\x38\x85\xd7\xb3\x37\x49\x89\x63\xf7\x1d\xc6\xf1\x18\x0a\x24\x74\x65\xc6\x06\x32\x24\xcc\x51\x4b\x6c\x8c\x95\x51\x9a\x91\x9c\xe1\x75\xcf\x85\x91\xb0\x2e\x94\x2c\x1c\xc4\x31\xb4\x12\xac\xa4\x28\xcb\xdf\xb0\x12\x19\xf6\x05\x5a\x17\xa8\x41\x1a\xfd\x0b\x89\x5d\x49\x2f\x0d\xd4\x4c\x56\x72\x13\xb3\xb4\xa2\x0f\x34\x67\xd0\x88\x59\xe3\x92\xe2\x26\x33\x72\xb9\x65\x90\xa2\x14\xb6\xf6\x49\xee\xaa\x1c\x9f\x2a\x74\x5b\x0a\xd0\x46\xef\x72\xf7\x81\x7a\x84\xdf\xdc\xd1\x5c\xd7\x48\x1c\xc6\x9d\xe3\x4d\x06\xeb\x6c\xa0\x88\x16\x98\x1f\x5f\x43\xfb\xff\xb7\xbf\x9b\xc6\x96\x8b\xb2\xc6\xbd\x3e\x56\x11\xfa\x84\x37\x2d\x36\x4c\x2b\x1f\xed\x68\x05\x76\x9c\x9d\xd4\x20\x19\xaa\xb9\x36\x40\xe3\x13\x1f\x46\x9c\xcd\xda\x98\xb5\x1b\x00\x5e\xaf\x9f\x91\x17\x28\x32\xa5\x97\x37\x85\x62\xf4\x0d\x69\x2b\xed\x51\x6f\x53\xee\x0c\x92\x6e\x5b\xde\x65\xdf\xa9\xd5\x36\xe0\xcd\x6a\x55\x79\xeb\x28\xc3\xf0\x81\xa6\xda\xbd\x87\x5e\x4d\x78\x97\xef\x22\xed\x35\x0f\xc9\x2f\xb8\xd3\x01\x4c\xa7\xb0\xae\x7b\x37\xbe\x66\x41\xfc\x35\x5f\xbc\x19\x79\x50\x8d\x1d\x7d\x1d\x23\xca\xb6\x2a\x99\x6c\x8f\x28\x5f\x27\xcc\x56\x90\xc7\xcd\xd7\x93\x64\x0b\xef\x32\x24\xdd\x64\x1a\x12\xfc\xe9\xdd\x3f\xad\xce\x3f\x61\x89\xdc\xbe\x8b\x83\xf4\xfd\x09\x00\x00\xff\xff\xf7\xe0\x3d\x62\xc6\x09\x00\x00" func runtimePluginsAutocloseAutocloseLuaBytes() ([]byte, error) { return bindataRead( @@ -1084,7 +1084,7 @@ func runtimePluginsAutocloseAutocloseLua() (*asset, error) { return a, nil } -var _runtimePluginsAutocloseInfoJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x8f\xc1\x4e\xc3\x30\x0c\x86\xcf\xf4\x29\xac\x9c\xab\x74\x70\x9c\x04\x12\xcf\x81\x38\xb8\xae\x59\x2d\xd2\x24\xb3\x1d\xd0\x40\xbc\x3b\x6a\x60\xf7\x1d\xfd\xfd\xfe\xf5\xd9\xdf\x03\x00\x40\xc8\xb8\x71\x38\x42\x48\x92\x9d\x35\x8c\x7f\x74\x61\x23\x95\xea\x52\xf2\x1e\x3e\x37\x2f\x1b\xba\x10\xa6\x74\x81\x9a\x90\xd8\x80\x52\x31\xc9\x27\xa0\x15\x15\xc9\x59\x0d\xde\x8a\xc2\xb9\x15\x67\x1b\xa1\xa2\x72\xf6\x95\x6d\x1f\x66\x45\x7a\x67\xb7\x11\xd8\x29\xc6\x78\xf5\x7c\xf2\x6c\xe2\xfd\x80\xd5\xbd\xda\x71\x9a\x4e\xe2\x6b\x9b\x23\x95\x6d\xfa\xba\xf0\x22\x8b\xe0\xb4\x09\x69\x09\xe3\x70\x17\x24\x9b\x63\x4a\xb7\x16\xba\xe4\x83\xd5\xfe\x1f\xb9\x8f\x87\x78\xb8\x72\xe5\x73\x13\xdd\xe5\x2f\x1d\x74\xd8\x9b\xf0\xf4\x08\x0f\x7d\xb5\x07\xaf\xc3\xcf\xf0\x1b\x00\x00\xff\xff\xb5\xd0\x75\x6b\x2f\x01\x00\x00" +var _runtimePluginsAutocloseInfoJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x8f\xc1\x4e\xc3\x30\x0c\x86\xcf\xf4\x29\xac\x9c\xab\x74\x70\x9c\x04\x12\xcf\x81\x38\xb8\xae\x59\x2d\xd2\xa4\xb3\x1d\xd0\x40\xbc\x3b\x4a\x60\xf7\x1d\xfd\xff\xfe\xf4\xd9\xdf\x03\x00\x40\xc8\xb8\x71\x38\x42\xc0\xea\x85\x52\x31\x0e\xe3\x5f\xb1\xb0\x91\xca\xee\x52\x72\xeb\x9f\xab\x97\x0d\x5d\x08\x53\xba\xc0\x9e\x90\xd8\xa0\x01\x92\x4f\x40\x2b\x2a\x92\xb3\x1a\xbc\x15\x85\x73\x2d\xce\x36\xc2\x8e\xca\xd9\x57\xb6\x36\xcc\x8a\xf4\xce\x6e\x23\xb0\x53\x8c\xf1\xea\xf9\xe4\xd9\xc4\xfb\x0d\xab\xfb\x6e\xc7\x69\x3a\x89\xaf\x75\x8e\x54\xb6\xe9\xeb\xc2\x8b\x2c\x82\xd3\x26\xa4\x25\x8c\xc3\x5d\x90\x6c\x8e\x29\xdd\x0a\x74\xc9\x07\xab\xfd\x3f\x72\x1f\x0f\xf1\x70\xcd\x95\xcf\x55\xb4\xc9\x5f\x7a\xd0\xc3\x4e\xc2\xd3\x23\x3c\xf4\xd5\x5e\xbc\x0e\x3f\xc3\x6f\x00\x00\x00\xff\xff\xd9\xec\x80\xc2\x32\x01\x00\x00" func runtimePluginsAutocloseInfoJsonBytes() ([]byte, error) { return bindataRead( @@ -1244,7 +1244,7 @@ func runtimePluginsLiterateReadmeMd() (*asset, error) { return a, nil } -var _runtimePluginsLiterateInfoJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x8e\xb1\x4e\xc5\x30\x0c\x45\x67\xfa\x15\x56\xe6\xa7\xf6\xc1\xf8\x24\x98\x19\xf8\x03\xc4\xe0\xb6\x26\xb1\x94\xc4\xc1\x71\x40\x80\xf8\x77\xd4\x40\xe6\xb7\x9e\xeb\x7b\x8f\xbf\x27\x00\x00\x97\x31\x91\xbb\x80\x8b\x9c\x8d\xd4\x9d\xfe\xe8\x4e\x75\x53\x2e\xc6\x92\x8f\xf0\x91\x7d\x88\xec\x83\x71\xf6\x80\x79\x87\x88\xd9\x37\xf4\x04\xb5\x95\x22\x6a\xf0\x2a\x0a\x16\x08\x9e\xd8\x48\xd1\x08\x8a\x8a\x57\x4c\xe9\x68\x98\x48\x9c\xc7\xf4\x07\xad\x95\xad\x3b\x83\x59\xa9\x97\x65\xf1\x6c\xa1\xad\xf3\x26\x69\xf9\xfa\xa4\x9d\x77\xc6\x65\x0c\xb9\xd3\x74\xe3\x38\x57\xc3\x18\xaf\x75\x12\x6f\x2a\xc3\xf3\x4e\x5a\xff\xdf\xbf\x9d\xcf\xf3\x79\x70\xa5\xb7\xc6\x7a\xf8\x9f\x3b\xe8\xb0\x37\xe1\xe1\x1e\xee\xfa\x69\x0f\x5e\xa6\x9f\xe9\x37\x00\x00\xff\xff\x4e\x6f\x8e\x85\x25\x01\x00\x00" +var _runtimePluginsLiterateInfoJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x8e\x31\x4e\x04\x31\x0c\x45\x6b\xe6\x14\x56\x6a\x34\xb3\x50\xae\x04\x35\xc5\xde\x00\x51\x78\x27\x26\xb1\x94\xc4\xc1\x71\x40\x80\xb8\x3b\x9a\xb0\x23\xca\x6d\x9f\xfd\xff\xfb\xdf\x13\x00\x80\x2b\x98\xc9\x1d\xc1\x25\x36\x52\x34\x72\xb7\x7f\xdc\x53\x5b\x95\xab\xb1\x94\xed\xfc\xc4\x21\x26\x0e\xd1\xb8\x04\xc0\xe2\x21\x61\x09\x1d\x03\x41\xeb\xb5\x8a\x1a\xbc\x8a\x82\x45\x82\xd3\xa5\x08\xaa\x4a\x50\xcc\x79\x4b\x98\x48\x9a\xf7\xea\x0f\x3a\x37\xb6\x61\x8d\x66\xb5\x1d\x97\x25\xb0\xc5\x7e\x9e\x57\xc9\xcb\xd7\x27\x79\xf6\x8c\xcb\xe9\x7f\xd1\x8d\xe3\xd2\x0c\x53\xba\x96\xc9\xbc\xaa\xec\x9e\x77\xd2\x76\x99\x7f\x37\x1f\xe6\xc3\xce\x95\xde\x3a\xeb\xe6\x7f\x1e\x60\xc0\x91\x84\xc7\x07\xb8\x1f\xaf\xe3\xf0\x32\xfd\x4c\xbf\x01\x00\x00\xff\xff\xde\x6b\x89\x2e\x27\x01\x00\x00" func runtimePluginsLiterateInfoJsonBytes() ([]byte, error) { return bindataRead( diff --git a/runtime/plugins/autoclose/info.json b/runtime/plugins/autoclose/info.json index ddcd9264..c9b72919 100644 --- a/runtime/plugins/autoclose/info.json +++ b/runtime/plugins/autoclose/info.json @@ -1,5 +1,5 @@ { - "name": "linter", + "name": "autoclose", "description": "Automatically places closing characters for quotes, parentheses, brackets, etc...", "website": "https://github.com/zyedidia/micro", "install": "https://github.com/zyedidia/micro", diff --git a/runtime/plugins/literate/info.json b/runtime/plugins/literate/info.json index fa133923..4834d6cf 100644 --- a/runtime/plugins/literate/info.json +++ b/runtime/plugins/literate/info.json @@ -1,5 +1,5 @@ { - "name": "linter", + "name": "literate", "description": "Highlighting and language support for the Literate programming tool.", "website": "https://github.com/zyedidia/Literate", "install": "https://github.com/zyedidia/micro", From d29994ada969c2c67a0c9cc6cfb5f9fa8d52520e Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 19 Dec 2019 10:12:12 -0500 Subject: [PATCH 167/231] Close file --- internal/action/bufpane.go | 1 - internal/util/util.go | 1 - pkg/terminfo/terminfo.go | 3 ++- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index cf5ac23e..7b8e9d00 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -215,7 +215,6 @@ func (h *BufPane) Name() string { } // HandleEvent executes the tcell event properly -// TODO: multiple actions bound to one key func (h *BufPane) HandleEvent(event tcell.Event) { switch e := event.(type) { case *tcell.EventRaw: diff --git a/internal/util/util.go b/internal/util/util.go index d10c9851..92af3bce 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -353,7 +353,6 @@ func IntOpt(opt interface{}) int { // coordinate (this is necessary because tabs are 1 char but // 4 visual spaces) func GetCharPosInLine(b []byte, visualPos int, tabsize int) int { - // Scan rune by rune until we exceed the visual width that we are // looking for. Then we can return the character position we have found i := 0 // char pos diff --git a/pkg/terminfo/terminfo.go b/pkg/terminfo/terminfo.go index b7fc0fa9..4bf3beed 100644 --- a/pkg/terminfo/terminfo.go +++ b/pkg/terminfo/terminfo.go @@ -717,10 +717,11 @@ func AddTerminfo(t *Terminfo) { func loadFromFile(fname string, term string) (*Terminfo, error) { var e error - var f io.Reader + var f io.ReadCloser if f, e = os.Open(fname); e != nil { return nil, e } + defer f.Close() if strings.HasSuffix(fname, ".gz") { if f, e = gzip.NewReader(f); e != nil { return nil, e From 5e28ed42716a919a077087b6a246e8182d36dc0e Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 19 Dec 2019 10:22:31 -0500 Subject: [PATCH 168/231] Add textfilter command --- internal/action/command.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/internal/action/command.go b/internal/action/command.go index 37ff0788..385fe6b0 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "os" + "os/exec" "path/filepath" "regexp" "strconv" @@ -64,6 +65,7 @@ func InitCommands() { "memusage": Command{(*BufPane).MemUsageCmd, nil}, "retab": Command{(*BufPane).RetabCmd, nil}, "raw": Command{(*BufPane).RawCmd, nil}, + "textfilter": Command{(*BufPane).TextFilterCmd, nil}, } } @@ -240,6 +242,33 @@ func (h *BufPane) RawCmd(args []string) { Tabs.SetActive(len(Tabs.List) - 1) } +// TextFilterCmd filters the selection through the command. +// Selection goes to the command input. +// On successfull run command output replaces the current selection. +func (h *BufPane) TextFilterCmd(args []string) { + if len(args) == 0 { + InfoBar.Error("usage: textfilter arguments") + return + } + sel := h.Cursor.GetSelection() + if len(sel) == 0 { + h.Cursor.SelectWord() + sel = h.Cursor.GetSelection() + } + var bout, berr bytes.Buffer + cmd := exec.Command(args[0], args[1:]...) + cmd.Stdin = strings.NewReader(string(sel)) + cmd.Stderr = &berr + cmd.Stdout = &bout + err := cmd.Run() + if err != nil { + InfoBar.Error(err.Error() + " " + berr.String()) + return + } + h.Cursor.DeleteSelection() + h.Buf.Insert(h.Cursor.Loc, bout.String()) +} + // TabSwitchCmd switches to a given tab either by name or by number func (h *BufPane) TabSwitchCmd(args []string) { if len(args) > 0 { From 5075c91fd4e017af468d56b2b605f168744e0906 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 19 Dec 2019 10:52:59 -0500 Subject: [PATCH 169/231] Fix rebase issue --- cmd/micro/textfilter.go | 35 ----------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 cmd/micro/textfilter.go diff --git a/cmd/micro/textfilter.go b/cmd/micro/textfilter.go deleted file mode 100644 index ec4c91e8..00000000 --- a/cmd/micro/textfilter.go +++ /dev/null @@ -1,35 +0,0 @@ -package main - -import ( - "bytes" - "os/exec" - "strings" -) - -// TextFilter command filters the selection through the command. -// Selection goes to the command input. -// On successfull run command output replaces the current selection. -func TextFilter(args []string) { - if len(args) == 0 { - messenger.Error("usage: textfilter arguments") - return - } - v := CurView() - sel := v.Cursor.GetSelection() - if sel == "" { - v.Cursor.SelectWord() - sel = v.Cursor.GetSelection() - } - var bout, berr bytes.Buffer - cmd := exec.Command(args[0], args[1:]...) - cmd.Stdin = strings.NewReader(sel) - cmd.Stderr = &berr - cmd.Stdout = &bout - err := cmd.Run() - if err != nil { - messenger.Error(err.Error() + " " + berr.String()) - return - } - v.Cursor.DeleteSelection() - v.Buf.Insert(v.Cursor.Loc, bout.String()) -} From ba594abfad7c4a6de67ac7018f720463944ac6e1 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 19 Dec 2019 11:43:57 -0500 Subject: [PATCH 170/231] Clearer status bar --- internal/config/settings.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/config/settings.go b/internal/config/settings.go index bb92b7da..19d2586c 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -180,7 +180,7 @@ var defaultCommonSettings = map[string]interface{}{ "softwrap": false, "splitbottom": true, "splitright": true, - "statusformatl": "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat) $(opt:encoding)", + "statusformatl": "$(filename) $(modified)($(line),$(col)) | ft:$(opt:filetype) | $(opt:fileformat) | $(opt:encoding)", "statusformatr": "$(bind:ToggleKeyMenu): show bindings, $(bind:ToggleHelp): toggle help", "statusline": true, "syntax": true, From dde52132cf74bfdcf2fbbfea9098c614190cb82c Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 20 Dec 2019 11:15:35 -0500 Subject: [PATCH 171/231] Update tcell version --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 13c51a04..2a124b6b 100644 --- a/go.mod +++ b/go.mod @@ -26,7 +26,7 @@ require ( github.com/zyedidia/glob v0.0.0-20170209203856-dd4023a66dc3 github.com/zyedidia/poller v2.0.0+incompatible // indirect github.com/zyedidia/pty v1.1.2-0.20180126010845-30364665a244 // indirect - github.com/zyedidia/tcell v0.0.0-20190204041104-518c15c24302 + github.com/zyedidia/tcell v0.0.0-20191219170756-59b50b23fa9b github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415 golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9 // indirect golang.org/x/text v0.3.0 diff --git a/go.sum b/go.sum index 234d7bc4..f315c57c 100644 --- a/go.sum +++ b/go.sum @@ -58,6 +58,8 @@ github.com/zyedidia/pty v1.1.2-0.20180126010845-30364665a244 h1:DZ7mZvUV5+oXeXV1 github.com/zyedidia/pty v1.1.2-0.20180126010845-30364665a244/go.mod h1:4y9l9yJZNxRa7GB/fB+mmDmGkG3CqmzLf4vUxGGotEA= github.com/zyedidia/tcell v0.0.0-20190204041104-518c15c24302 h1:ruNSURcO81y+J+XnqrLLt+zxcdFtq8QNoZfWXSsybYQ= github.com/zyedidia/tcell v0.0.0-20190204041104-518c15c24302/go.mod h1:yXgdp23+aW8OMENYVBvpKoeiBtjaVWJ9HhpPDu6LBfM= +github.com/zyedidia/tcell v0.0.0-20191219170756-59b50b23fa9b h1:cryFENlMxJJrkimVx/CUMFDCxC4vpmey2x3A3tAgTNM= +github.com/zyedidia/tcell v0.0.0-20191219170756-59b50b23fa9b/go.mod h1:yXgdp23+aW8OMENYVBvpKoeiBtjaVWJ9HhpPDu6LBfM= github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415 h1:752dTQ5OatJ9M5ULK2+9lor+nzyZz+LYDo3WGngg3Rc= github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415/go.mod h1:8leT8G0Cm8NoJHdrrKHyR9MirWoF4YW7pZh06B6H+1E= golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9 h1:lkiLiLBHGoH3XnqSLUIaBsilGMUjI+Uy2Xu2JLUtTas= From 9127152d930ae9bd34473bb2d2256fa301fcc2fd Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 21 Dec 2019 16:12:51 -0500 Subject: [PATCH 172/231] Fix goto issue --- internal/action/bufpane.go | 2 +- internal/action/command.go | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 7b8e9d00..fd6b6019 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -57,7 +57,7 @@ func BufMapKey(k Event, action string) { BufKeyStrings[k] = action actionfns := make([]func(*BufPane) bool, len(actions)) for i, a := range actions { - a = strings.TrimSpace(a) + // a = strings.TrimSpace(a) var afn func(*BufPane) bool if strings.HasPrefix(action, "command:") { a = strings.SplitN(a, ":", 2)[1] diff --git a/internal/action/command.go b/internal/action/command.go index 385fe6b0..1fe25bab 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -755,6 +755,7 @@ func (h *BufPane) GotoCmd(args []string) { line = util.Clamp(line-1, 0, h.Buf.LinesNum()-1) h.Cursor.GotoLoc(buffer.Loc{0, line}) } + h.Relocate() } } From 88b8fc713df5d7ea4ee36128eea1ca610983b2e7 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 21 Dec 2019 16:19:20 -0500 Subject: [PATCH 173/231] Proper scrollbar location for hsplits --- internal/display/bufwindow.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index 4daefe67..3f81a490 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -651,7 +651,7 @@ func (w *BufWindow) displayScrollBar() { if barsize < 1 { barsize = 1 } - barstart := int(float64(w.StartLine) / float64(w.Buf.LinesNum()) * float64(w.Height)) + barstart := w.Y + int(float64(w.StartLine)/float64(w.Buf.LinesNum())*float64(w.Height)) for y := barstart; y < util.Min(barstart+barsize, w.Y+bufHeight); y++ { screen.Screen.SetContent(scrollX, y, '|', nil, config.DefStyle.Reverse(true)) } From a86a6c464ecf43f49ced55f87ce45ec593694d0e Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 21 Dec 2019 16:35:09 -0500 Subject: [PATCH 174/231] Start implementing backup system --- internal/buffer/backup.go | 49 +++++++++++++++++++++++++++++++++++++ internal/config/settings.go | 1 + 2 files changed, 50 insertions(+) create mode 100644 internal/buffer/backup.go diff --git a/internal/buffer/backup.go b/internal/buffer/backup.go new file mode 100644 index 00000000..e9b91bcb --- /dev/null +++ b/internal/buffer/backup.go @@ -0,0 +1,49 @@ +package buffer + +import ( + "io" + + "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/util" + "golang.org/x/text/encoding" +) + +// Backup saves the current buffer to ConfigDir/backups +func (b *Buffer) Backup() error { + if !b.Settings["backup"].(bool) { + return nil + } + + name := config.ConfigDir + "/backups" + util.EscapePath(b.AbsPath) + + err := overwriteFile(name, encoding.Nop, func(file io.Writer) (e error) { + if len(b.lines) == 0 { + return + } + + // end of line + eol := []byte{'\n'} + + // write lines + if _, e = file.Write(b.lines[0].data); e != nil { + return + } + + for _, l := range b.lines[1:] { + if _, e = file.Write(eol); e != nil { + return + } + if _, e = file.Write(l.data); e != nil { + return + } + } + return + }) + + return err +} + +// ApplyBackup applies the corresponding backup file to this buffer (if one exists) +func (b *Buffer) ApplyBackup() error { + return nil +} diff --git a/internal/config/settings.go b/internal/config/settings.go index 19d2586c..f8b42675 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -155,6 +155,7 @@ func GetGlobalOption(name string) interface{} { var defaultCommonSettings = map[string]interface{}{ "autoindent": true, + "backup": true, "basename": false, "colorcolumn": float64(0), "cursorline": true, From e42cf3663bfe014a705534041e280ea2a416987f Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 21 Dec 2019 19:55:23 -0500 Subject: [PATCH 175/231] Backup support --- internal/buffer/backup.go | 43 +++++++++++++++++++++++++++++++++++++- internal/buffer/buffer.go | 42 ++++++++++++++++++++++++++++++++++++- internal/screen/message.go | 33 +++++++++++++++++++++++++++++ 3 files changed, 116 insertions(+), 2 deletions(-) diff --git a/internal/buffer/backup.go b/internal/buffer/backup.go index e9b91bcb..6f6978bd 100644 --- a/internal/buffer/backup.go +++ b/internal/buffer/backup.go @@ -2,19 +2,51 @@ package buffer import ( "io" + "log" + "os" + "time" "github.com/zyedidia/micro/internal/config" "github.com/zyedidia/micro/internal/util" "golang.org/x/text/encoding" ) +const backupMsg = `A backup was detected for this file. This likely means that micro +crashed while editing this file, or another instance of micro is currently +editing this file. + +The backup was created at %s. + +* 'recover' will apply the backup as unsaved changes to the current buffer. + When the buffer is closed, the backup will be removed. +* 'ignore' will ignore the backup, discarding its changes. The backup file + will be removed. + +Options: [r]ecover, [i]gnore: ` + // Backup saves the current buffer to ConfigDir/backups func (b *Buffer) Backup() error { if !b.Settings["backup"].(bool) { return nil } - name := config.ConfigDir + "/backups" + util.EscapePath(b.AbsPath) + sub := time.Now().Sub(b.lastbackup) + if sub < time.Duration(backup_time)*time.Millisecond { + log.Println("Backup event but not enough time has passed", sub) + return nil + } + + b.lastbackup = time.Now() + + backupdir := config.ConfigDir + "/backups/" + if _, err := os.Stat(backupdir); os.IsNotExist(err) { + os.Mkdir(backupdir, os.ModePerm) + log.Println("Creating backup dir") + } + + name := backupdir + util.EscapePath(b.AbsPath) + + log.Println("Backing up to", name) err := overwriteFile(name, encoding.Nop, func(file io.Writer) (e error) { if len(b.lines) == 0 { @@ -43,6 +75,15 @@ func (b *Buffer) Backup() error { return err } +// RemoveBackup removes any backup file associated with this buffer +func (b *Buffer) RemoveBackup() { + if !b.Settings["backup"].(bool) { + return + } + f := config.ConfigDir + "/backups/" + util.EscapePath(b.AbsPath) + os.Remove(f) +} + // ApplyBackup applies the corresponding backup file to this buffer (if one exists) func (b *Buffer) ApplyBackup() error { return nil diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index 44f0e1e9..b85677b8 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -4,8 +4,10 @@ import ( "bytes" "crypto/md5" "errors" + "fmt" "io" "io/ioutil" + "log" "os" "path/filepath" "strconv" @@ -25,6 +27,8 @@ import ( "golang.org/x/text/transform" ) +const backup_time = 8000 + var ( OpenBuffers []*Buffer LogBuf *Buffer @@ -109,6 +113,10 @@ type Buffer struct { CurSuggestion int Messages []*Message + + // counts the number of edits + // resets every backup_time edits + lastbackup time.Time } // NewBufferFromFile opens a new buffer using the given path @@ -191,9 +199,36 @@ func NewBuffer(r io.Reader, size int64, path string, startcursor Loc, btype BufT } if !found { + choice := 1 // ignore by default + b.SharedBuffer = new(SharedBuffer) b.Type = btype - b.LineArray = NewLineArray(uint64(size), FFAuto, reader) + + if b.Settings["backup"].(bool) { + backupfile := config.ConfigDir + "/backups/" + EscapePath(absPath) + if info, err := os.Stat(backupfile); err == nil { + backup, err := os.Open(backupfile) + if err == nil { + t := info.ModTime() + msg := fmt.Sprintf(backupMsg, t.Format("Mon Jan _2 15:04 2006")) + choice = screen.TermPrompt(msg, []string{"r", "i", "recover", "ignore"}, true) + log.Println("Choice:", choice) + + if choice%2 == 0 { + // recover + b.LineArray = NewLineArray(uint64(size), FFAuto, backup) + } else if choice%2 == 1 { + // delete + os.Remove(backupfile) + } + backup.Close() + } + } + } + + if choice > 0 { + b.LineArray = NewLineArray(uint64(size), FFAuto, reader) + } b.EventHandler = NewEventHandler(b.SharedBuffer, b.cursors) } @@ -273,6 +308,7 @@ func (b *Buffer) Fini() { if !b.Modified() { b.Serialize() } + b.RemoveBackup() } // GetName returns the name that should be displayed in the statusline @@ -297,6 +333,8 @@ func (b *Buffer) Insert(start Loc, text string) { b.EventHandler.cursors = b.cursors b.EventHandler.active = b.curCursor b.EventHandler.Insert(start, text) + + go b.Backup() } } @@ -305,6 +343,8 @@ func (b *Buffer) Remove(start, end Loc) { b.EventHandler.cursors = b.cursors b.EventHandler.active = b.curCursor b.EventHandler.Remove(start, end) + + go b.Backup() } } diff --git a/internal/screen/message.go b/internal/screen/message.go index cd4abce9..1ca9141c 100644 --- a/internal/screen/message.go +++ b/internal/screen/message.go @@ -5,6 +5,7 @@ import ( "fmt" "os" "strconv" + "strings" ) // TermMessage sends a message to the user in the terminal. This usually occurs before @@ -25,6 +26,38 @@ func TermMessage(msg ...interface{}) { TempStart(screenb) } +// TermPrompt prints a prompt and requests the user for a response +// The result is matched against a list of options and the index of +// the match is returned +// If wait is true, the prompt re-prompts until a valid option is +// chosen, otherwise if wait is false, -1 is returned for no match +func TermPrompt(prompt string, options []string, wait bool) int { + screenb := TempFini() + + idx := -1 + // same behavior as do { ... } while (wait && idx == -1) + for ok := true; ok; ok = wait && idx == -1 { + reader := bufio.NewReader(os.Stdin) + fmt.Print(prompt) + resp, _ := reader.ReadString('\n') + resp = strings.TrimSpace(resp) + + for i, opt := range options { + if resp == opt { + idx = i + } + } + + if wait && idx == -1 { + fmt.Println("\nInvalid choice.") + } + } + + TempStart(screenb) + + return idx +} + // TermError sends an error to the user in the terminal. Like TermMessage except formatted // as an error func TermError(filename string, lineNum int, err string) { From 04e5acb1f8f936147a77232e6f0b9e6812209b58 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 21 Dec 2019 22:08:27 -0500 Subject: [PATCH 176/231] Minor highlighting fixes --- internal/config/runtime.go | 102 ++++++++++++++++++++++++++-- internal/display/bufwindow.go | 17 ++--- runtime/colorschemes/twilight.micro | 3 +- 3 files changed, 108 insertions(+), 14 deletions(-) diff --git a/internal/config/runtime.go b/internal/config/runtime.go index aaf3f5a6..67e282ec 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -96,6 +96,7 @@ // runtime/syntax/git-rebase-todo.yaml // runtime/syntax/glsl.yaml // runtime/syntax/go.yaml +// runtime/syntax/godoc.yaml // runtime/syntax/golo.yaml // runtime/syntax/graphql.yaml // runtime/syntax/groff.yaml @@ -108,6 +109,7 @@ // runtime/syntax/inputrc.yaml // runtime/syntax/java.yaml // runtime/syntax/javascript.yaml +// runtime/syntax/jinja2.yaml // runtime/syntax/json.yaml // runtime/syntax/julia.yaml // runtime/syntax/keymap.yaml @@ -122,6 +124,7 @@ // runtime/syntax/makefile.yaml // runtime/syntax/man.yaml // runtime/syntax/markdown.yaml +// runtime/syntax/mc.yaml // runtime/syntax/micro.yaml // runtime/syntax/mpdconf.yaml // runtime/syntax/nanorc.yaml @@ -143,6 +146,7 @@ // runtime/syntax/privoxy-action.yaml // runtime/syntax/privoxy-config.yaml // runtime/syntax/privoxy-filter.yaml +// runtime/syntax/proto.yaml // runtime/syntax/puppet.yaml // runtime/syntax/python2.yaml // runtime/syntax/python3.yaml @@ -864,7 +868,7 @@ func runtimeColorschemesSolarizedMicro() (*asset, error) { return a, nil } -var _runtimeColorschemesTwilightMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x93\x51\x8e\xb2\x30\x14\x85\xdf\x5d\x05\x81\x57\x35\xe0\x3f\x60\xfb\x58\x81\xae\xe0\xdf\x40\x81\x3b\xda\x08\x2d\xb9\x2d\x63\xdc\xfd\xe4\x82\x33\x19\xb4\xe6\xbc\xb4\x39\x9f\xed\xe9\xb9\x92\x44\xff\x6f\xba\xd7\xe7\x8b\x8f\x5a\xdb\x5b\x8c\x5c\x7b\x81\x01\x36\xf3\x66\xd7\x6b\x73\x8d\x3a\xf8\x54\x53\xef\xa3\x38\x91\x8c\xb4\x4d\xb2\x0f\x52\xfc\x17\x5a\x96\xad\xed\xa7\xc1\x44\x71\x92\x9d\x48\x4f\xc4\x30\x80\xa1\x63\x72\x99\x8b\x22\x7d\x32\x8d\xf3\x6a\x76\x4b\x59\x88\x8f\x32\xde\x24\x01\x7b\x6f\xa6\xa1\x01\xfc\x43\x85\x20\x37\x42\xab\x55\x5f\x5e\x14\x91\x55\x25\x0f\xe2\x39\xec\x0f\xe9\x51\x9b\x73\x14\x27\x4c\xf2\xaa\x10\x6b\x68\x42\x04\xe3\x69\x03\xbb\xdf\x7b\x59\x41\xda\x06\x1f\x38\xa1\x5b\xd6\x10\x6e\xa0\xd3\x5f\xba\x9b\x4f\xc9\x6a\xd2\xca\x04\x44\x3b\xc7\x3d\x08\x26\xb2\x95\x75\x9e\xbc\x07\xdc\xfd\x10\xfc\xc4\x72\x5e\x85\x88\x9b\x42\xb3\xbc\x27\xc0\xe8\x0e\x8c\xd7\x9f\x1a\x96\x33\x8e\xe9\x3f\xf9\xc6\xdf\xb7\xbd\x72\x8e\xb2\x88\x2a\x65\xf9\x3b\xea\x6b\xae\xf7\x98\xb3\xa3\x28\xd6\x8c\x21\x68\xd7\x2e\xfd\xe7\x19\x69\x05\x84\x2a\x5d\x01\x23\xc2\x88\xb6\x8d\xe2\xa4\x4e\xcb\x9c\xf1\x95\xf9\x18\xef\x1b\xd3\x2b\x0f\x8f\xff\x59\x59\x09\x56\xbc\xda\x93\x7b\x8c\x68\x49\xb6\x0d\x4d\xc3\xdd\x87\xc6\xd2\x15\xa2\x64\x2c\x3f\x05\xbc\x7d\x83\xaa\xbd\x82\x77\xbf\xdf\x45\x08\xb2\x23\xa0\xf2\xf3\xd8\x42\x69\x16\xc8\xab\x73\xf8\x26\xaf\x9a\x66\xee\x50\x1e\x64\x5a\x97\xdb\xe4\x50\x91\xd6\x8c\xed\x2c\x95\x78\xe2\x4c\x3c\xfd\xfa\x3e\xd2\x2b\x25\xaf\x6b\xce\x5e\x9c\xfd\x15\xee\x37\x8b\x5d\x38\xd9\x64\x3a\x40\xaa\x89\x7c\xc6\x79\x21\x58\xbc\xf9\x0e\x00\x00\xff\xff\x50\x4e\x7e\x42\x2c\x04\x00\x00" +var _runtimeColorschemesTwilightMicro = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x93\x4d\x8e\xa3\x30\x10\x85\xf7\x39\x05\x82\x6d\x12\x41\xa6\x21\xf6\xd2\x01\x7c\x82\xb9\x80\x81\xea\xc4\x0a\xd8\xc8\x3f\x1d\xe5\xf6\xa3\x82\x74\x2b\x10\x67\xa4\xd6\xdb\xd8\x7a\x1f\x76\xd5\x2b\x93\x44\x7f\x6f\xb2\x97\xe7\x8b\x8b\x5a\xdd\x6b\x13\xd9\xf6\x02\x03\x6c\xa6\xcd\xae\x97\xea\x1a\x75\xf0\x29\x7c\xef\xa2\x38\xe1\x04\xb5\x4d\xb2\x0f\x54\xfc\x0c\xcd\xcb\x56\xf7\x7e\x50\x51\x9c\x64\x27\xd4\x8a\x18\x06\x50\x78\x4c\xce\x73\x56\xa4\x2b\x53\x59\x27\x26\xb7\xe4\x05\xfb\x28\xe3\x4d\x12\xb0\xf7\xca\x0f\x0d\x98\x27\x2a\x04\xd9\x11\x5a\x29\xfa\xf2\x22\x90\xac\x2a\x7e\x60\xeb\x62\xbf\x49\x67\xa4\x3a\x47\x71\x42\x38\xad\x0a\xb6\x84\xbc\x31\xa0\x1c\x6e\x60\xf7\x73\x2f\x29\x50\xdb\x60\x83\xde\xd8\x79\x0d\xe1\x04\x3a\xf9\x25\xbb\xe9\x94\xac\x46\x2d\x4c\x30\x46\x4f\xe5\x1e\x18\x61\xd9\xc2\x3a\x7b\xe7\xc0\xec\xbe\x09\x7a\x22\x39\xad\x42\xc4\x4d\x18\x35\xf7\x13\x60\x64\x07\xca\xc9\x4f\x09\xf3\x19\xc7\xf4\x0f\x7f\xe3\xef\xdb\x5e\x58\x8b\xb5\xb0\x2a\x25\xf9\x3b\xea\x6b\x8a\xf7\x98\x93\x23\x2b\x96\x8c\x42\x68\xd7\xce\xf9\xe7\x19\x6a\x01\xfc\x26\xd2\xff\xcd\xe0\xf5\x19\x8e\x06\x46\xa3\xdb\x28\x4e\xea\xb4\xcc\x09\x5d\x98\x8f\x77\xf1\xc6\x74\xc2\xc1\xe3\x81\x96\x15\x23\xc5\xab\xed\xed\x63\xb6\x73\x4b\xdb\xd0\x18\xed\x7d\x68\x34\x5e\xc1\x4a\x42\xf2\x53\xc0\xdb\x37\x46\xb4\x57\x70\xf6\xe7\x87\x0a\x41\x7a\x04\x23\xdc\x34\xef\x50\x35\x33\xe4\xc4\x39\x7c\x93\x13\x4d\x33\x85\xcf\x0f\x3c\xad\xcb\x6d\x72\xa8\x50\x4b\x46\x77\x1a\xc3\x3c\x51\xc2\x56\x5f\xdf\x47\xec\x92\xd3\xba\xa6\xe4\xc5\xd9\x5f\xe1\x7e\xd3\xa6\x0b\x57\xe6\x55\x07\x06\x63\x42\x9f\x50\x5a\x30\x12\x6f\xfe\x05\x00\x00\xff\xff\x7b\xe9\x1e\x19\x65\x04\x00\x00" func runtimeColorschemesTwilightMicroBytes() ([]byte, error) { return bindataRead( @@ -944,7 +948,7 @@ func runtimeHelpCommandsMd() (*asset, error) { return a, nil } -var _runtimeHelpDefaultkeysMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x59\x5b\x73\xa3\xc6\x12\x7e\xd7\xaf\x68\x97\x1f\x8e\xbc\xf6\xba\xce\x9e\x93\xaa\xbc\xa5\xca\xd7\xec\xcd\x5e\xad\x2f\xd9\x4d\x9e\x3c\x42\x8d\x98\xd2\x30\x43\xe6\x62\xad\x2a\xce\x7f\x4f\xf5\x00\x03\x42\x80\x64\x59\x0e\x6f\x82\xe6\xfb\xe8\x7b\xf7\x68\x1f\xce\x31\x66\x4e\x58\xf8\x84\x0b\x33\x18\x9c\xa2\x50\x73\x60\x1a\xc1\xf0\x34\x13\x08\x51\xc2\xb4\x35\xa0\x62\xb0\x09\xc2\xa4\x10\x4e\x94\x9d\xe1\xc2\x00\x93\x13\xba\xcf\x35\xc4\x4e\x46\x96\x2b\x69\x8e\xe1\x52\x69\x48\x95\xc6\x01\x97\xb1\xd2\x29\xa3\xdb\xc0\xc6\xca\x59\x18\x73\x39\xe1\x72\x0a\x91\x33\x56\xa5\x01\x46\x69\xe2\x91\x53\x7a\x54\x52\x14\xa2\xe6\x08\x32\x81\xcc\xe0\x40\x3b\x09\x0f\xbf\x40\x82\x22\x83\x19\x2e\xca\xe7\x0f\x83\xc1\xc8\x0b\x80\xc6\x14\xd3\x31\x6a\xb0\x09\xb3\xf0\x86\x09\xf1\x06\x3c\x7c\x82\x1a\xbd\x4e\x1a\xe9\x2d\x36\x16\xb8\x07\x1f\x62\x58\x28\x07\x13\x25\xff\x63\x41\xf0\x19\x02\xb7\x47\x74\x6b\x10\x31\x99\x7f\x0e\xdd\xda\x1b\x0c\xf6\xf7\xf7\x61\xa4\xe6\xa8\xc1\x19\xd4\x83\xc1\x13\xd9\x0a\xf2\xeb\x09\xce\xd1\x44\x9a\x67\x5e\x49\x15\x07\x3b\xc0\xee\xae\xa7\xc1\xd3\xdb\xe2\xa2\x5f\x6f\x5f\xfd\x22\x46\x38\xb3\x5a\x1c\x5e\xe4\x3a\x7e\xc9\x50\x02\x83\x48\xa5\x29\x79\x3c\xd3\x2a\xcd\x2c\xc4\x4a\x83\x76\x52\x7a\x87\xe6\x8f\x0c\x0c\x0d\x62\x70\x53\x79\xf7\xc1\xcb\x32\x10\xdc\x58\x32\xd2\x23\x13\x7c\x12\x9e\x1e\x1c\x7b\x1d\xe1\x8e\x8d\x83\x55\x3f\xc8\x06\xdb\x11\x70\x0b\x73\x2e\x04\x30\x67\x55\xa4\x28\x38\x2d\x02\x8f\x21\x53\xc6\xf0\xb1\xc0\xe3\x67\x5b\x35\xd7\xf1\x34\x67\xbc\x71\xa4\xa2\x49\x50\x88\x40\x3d\xb4\x09\x37\x39\x6b\x24\x94\x41\x48\x79\xa4\x15\xcc\x13\x2e\x90\x42\x45\x07\x49\xfc\x81\x91\xb3\xe8\x75\xe9\x66\xf4\xa1\x74\xcd\x1e\xf9\xd4\x27\xc5\x72\x28\xad\x88\xbf\x62\x68\xd5\x42\xaa\xcd\xfd\xaf\x1c\x5a\x27\x5a\xab\xb9\x69\xd7\xf9\x4a\x3d\xa2\x2f\x35\x91\xd3\x86\x82\x46\x2b\x27\x27\x3b\x50\xd9\x33\xdf\x26\x3c\xb6\x87\xac\x85\xbf\x60\x26\x5f\x1a\x14\x18\x59\xb0\xf8\xc3\xee\x82\x37\x67\x7e\xaf\x52\xa4\x3a\x47\x21\xf7\x19\x63\xeb\x6d\x50\x67\xb6\xca\xab\x3d\xc6\x29\xcf\x53\xaa\x28\xb9\x91\xd3\x1a\x25\x95\x28\x89\x5b\x31\x5f\xc8\x49\x49\x7c\xc3\xa7\x49\x27\x33\x92\xdc\x0e\x38\x2b\xe6\x13\x61\x97\x55\xad\x9e\xe6\xcc\x85\x8f\x95\x44\x98\x2b\x3d\x01\x81\xf1\xcb\x4d\x5e\x30\x37\x74\x5d\xc3\xac\x49\x7a\x47\xcc\x87\x7f\xb5\x3f\x5d\x62\xb6\x0a\x32\x8d\x8f\x5c\x39\x03\x98\x66\x76\xe1\x8d\x7d\x44\x9e\x5a\x0a\x81\x89\x8a\x5c\x4a\xbe\xd8\x88\xf9\xef\xcd\x98\x25\x85\x76\x83\xb5\x70\xff\x66\x7c\xcb\xcc\x23\x36\xc5\xfb\x6c\x3d\xb3\xcb\xbc\xc1\x33\x36\xdd\x36\xaa\xda\x98\xcf\xd5\xbc\xa5\x24\x2e\x33\x4f\x48\x66\x67\xdc\x65\xeb\xa8\xe7\xf4\x7d\x56\xc6\xda\x8a\xb5\x8d\x65\xda\x6e\x63\xdb\x6e\xe6\x5a\x4e\x93\xfa\x05\xf5\x0a\xf3\x96\x3e\xed\x63\x3e\xfc\xdc\xfa\x14\x3e\xba\x34\x23\x4a\x96\x17\x0d\x2e\x7d\x21\x89\xa9\x51\x0e\xf3\x0e\x4e\x8d\xd4\x26\xb0\x7f\xb0\x2d\xf3\xb7\x76\xe6\xb3\x45\x24\xa8\x6e\xda\x39\xa2\x04\x93\x09\x6e\x4d\xc9\x5f\x16\x32\xcb\xc6\x30\x74\xc6\x4f\x26\x8f\x5e\xe4\x81\xec\x47\x73\x4a\xf1\xcb\x2a\x88\x34\x32\x8b\x34\x04\xd0\xad\x83\xd0\xb0\xef\xd8\xd8\xd4\x5b\x75\x5f\x63\xae\xcf\x6a\xdd\x6d\xb4\xa6\xd4\x5d\x6d\xbe\x92\x38\xf7\x5f\xda\x50\x9e\x12\xfb\xc8\xf3\x8e\xca\x8a\xd1\x90\xaa\xe4\x8e\xbd\xdc\x35\xe5\xf7\x8a\x0c\x54\x33\xc8\x25\x97\x13\x62\xd5\x7e\x0e\x31\xdb\xcf\xb4\x5b\xcf\xa6\x95\x05\x2e\x73\x4e\xff\x49\x43\x95\xa1\x34\xc5\xc8\xd7\x15\x28\xe1\xcd\xeb\xda\x9b\xbe\xa4\x71\x69\x2c\x93\x11\xd2\x47\x97\xae\x37\xc8\x74\x94\x34\xde\x1c\xd5\xde\x0c\x65\xb8\xef\xed\x60\x37\x81\x3b\xb1\x5b\xd7\xb5\xe3\x59\xbf\xae\xf3\xd7\x22\x5d\xfc\x20\x5b\xea\x97\x27\xe8\x9f\x8e\x72\x26\x1f\x6e\x39\x8d\x00\xdc\x00\x37\x3e\x83\x04\x33\x85\x14\xb9\xe6\x60\xc9\x8a\x5f\xa0\xbe\x1d\x2c\xe7\x3a\x0d\xfc\x74\x47\xb2\x14\xd7\x66\x7c\x40\xbc\xcd\x11\x6f\xd9\x63\xe3\x13\x9f\x7b\x95\xa9\x4b\x51\xa1\x3a\xfc\xd5\xf9\xee\x76\xf1\xdf\xe3\x84\xe7\xe6\xc5\x89\xb0\x7e\x52\xed\x98\x61\x72\x1b\xe5\x53\xea\x06\xd3\x4b\x1d\xb1\x63\x1e\x5b\x41\xec\x9f\xc4\xc2\x28\x5d\xef\x80\x2b\xf8\x01\xb1\xde\x03\x3b\x46\xcb\x80\x58\xeb\x6c\xab\x26\xa8\x23\x16\xbd\xad\x73\x54\x2d\x63\xca\xa3\x54\xdd\xb9\x4b\xeb\xfa\x37\x76\x44\xdc\x12\x62\xad\xed\x76\x23\x16\xdf\xd8\x19\xc1\x21\xee\xbf\x77\xdb\xda\xe7\xac\xb3\xc5\x56\x82\x93\xfe\xbd\x24\x20\x9e\xad\x41\x54\xd9\x62\x33\xc8\x80\xf8\x5b\x3f\xe2\x88\x19\xbb\x59\x9e\x06\xc4\x4f\x6b\xbe\xd1\xd9\x0d\x37\x91\x80\x78\xde\x8f\x78\xee\x32\xc1\x23\x6a\xf2\xeb\x70\x03\xe2\x1f\xfd\x88\xf7\x72\xa2\xfa\x24\x5a\x10\x7f\xef\x47\xbc\xc1\xe7\x20\x9e\x88\xee\xd8\x2e\x11\xcb\xa1\xb0\x52\x58\xe9\xca\xf7\x74\xc3\xd0\x68\x5e\x21\x76\xc6\x76\x0f\x62\xdc\x44\xf4\x23\x77\x89\x78\xca\xa2\x99\xc9\x58\xe4\xa9\x4f\x84\xf5\x86\x78\x5f\x43\x3c\x47\x7f\x9c\xb3\x61\xed\xf1\xaf\x9f\xf4\xda\xa6\xcc\x42\x26\xc4\x7a\x3b\xfa\x5e\x71\xc5\x22\xad\x5e\xa1\xa5\xb7\x28\x50\x6f\xcf\x5b\xf7\xf6\xfe\x16\xe2\x4d\x74\x9f\xeb\x70\xa7\xa6\x53\x81\x90\x92\x82\xa0\x31\x52\xda\x1f\xc2\x0e\x33\x8d\xc6\x94\x92\xa1\x00\x56\x02\xf9\xe9\x1b\xc9\xb0\x29\xa3\x89\x9a\x44\x54\x76\x50\x73\xc2\x47\x08\x87\x67\x82\x59\x34\xe5\xeb\x38\x29\xe8\xb6\xb7\x52\xee\x14\x27\x2c\xf7\xe7\xd0\x7e\xa9\xe9\xe8\xe0\xaf\x7d\x0a\xdb\xd2\xe5\x5f\xff\x24\x36\xcc\xf4\xd7\x0d\x5d\xcf\xf2\x3d\x85\xb6\x85\x74\xd9\x3c\x10\x6b\x95\x16\x89\x48\xda\x0f\xfd\xd1\x65\x71\x9e\x55\xe6\xab\xcf\x31\x1e\x83\x54\xb5\x29\xb7\x78\xe3\xa0\xda\x24\x46\x0d\xd6\x1b\x4c\x29\xeb\x0b\x2f\x37\x89\x77\x60\x61\xcf\x7a\xd6\xce\x4a\x59\xdc\xa0\x34\x30\x8c\x68\x5a\x17\xcf\xdd\x27\x5b\x58\xbf\x37\x58\x6f\x67\x3c\x5b\x51\xb1\x32\xeb\x0b\xaf\x92\xf5\xaa\xc9\x9a\xb1\x79\xb9\x06\x96\xa7\x9f\x76\xf5\x50\x10\x1f\x51\x2f\x96\xb6\xec\x15\x37\x76\xb1\x52\xca\xbe\xbd\x52\xce\xe0\xe7\xa2\xc6\x3e\xc1\x48\x50\x59\x66\x2b\xea\x32\x0b\x4c\x2e\x40\xa8\x88\xbd\x40\xe9\x22\x8d\xbf\xd8\xe4\xdf\xfa\xe7\xe4\xf5\xff\x2d\xa9\x5b\xf3\xf0\x57\xa8\x76\x20\xff\x9f\xc7\x56\xeb\x4a\xb7\x2e\x50\xb5\xca\x27\xa8\xda\xe8\x50\x09\x1a\xdb\x74\xca\x25\x13\xd4\x6c\x41\x2a\x0b\xc6\x65\x99\xd2\x45\xcc\x04\xd9\x19\x2e\x7c\x29\x77\x06\x4b\x34\x5a\x75\x91\x4d\x0e\x96\x59\x6e\xa0\xde\x2e\xfc\xf6\x47\x51\x26\x9d\xff\x57\x4d\x3b\x81\x2f\x48\xf4\x22\x12\x2e\x52\x16\x19\x30\x76\x21\x10\x58\xf4\xcc\x2d\xba\xf2\x2d\xf4\xfa\xb6\xca\xb1\xcb\x02\xd3\x9f\x88\xf8\xca\xd7\x66\x63\x92\x3c\x2d\x24\xc3\x19\xcb\x8a\x74\x29\x79\x52\x48\x96\x87\xe7\x61\x6f\x08\xc3\x64\x29\x79\xd1\x90\x2c\xf6\x81\xda\xd0\x59\x9e\x2b\x94\x3a\xce\x70\x61\x8e\x07\x83\x6f\x4c\x53\xba\xef\xc1\x5d\x82\x95\x01\xfc\x9f\x99\x29\x5b\x78\x5f\xcf\x95\x9e\x51\x01\xa0\xd2\x18\x02\x61\x0f\x2a\x63\x6e\x62\xc8\xf5\x46\xbc\x7c\x07\x8d\x00\x6f\x33\xe0\xe5\xff\xa0\x5a\xdc\x3b\xdc\xff\x04\x97\xff\x87\xea\xd8\xa5\x5b\xea\xa7\x5c\xea\xab\xe3\x1d\x63\xa0\x97\xfa\x79\x23\xac\x77\xff\x5d\x8b\xf5\x4f\x00\x00\x00\xff\xff\xc6\x76\xae\xe2\x03\x1f\x00\x00" +var _runtimeHelpDefaultkeysMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x59\x4b\x73\xdb\x46\x12\xbe\xf3\x57\xb4\x4a\x87\xa5\x6c\xad\x6a\xbd\xbb\x55\xb9\xa5\x4a\xd6\x23\xf1\x43\x32\x2d\xc9\xb1\x93\x93\x86\x40\x83\x98\xe2\x60\x06\x99\x87\x68\x56\x94\xff\x9e\xea\x19\x60\x00\x82\x04\x49\x51\x94\x71\x92\x80\xc6\xf7\xa1\xdf\xdd\xc3\x43\x38\xc7\x8c\x39\x61\xe1\x03\xce\xcd\x60\xf0\x16\x85\x9a\x01\xd3\x08\x86\x17\xa5\x40\x48\x72\xa6\xad\x01\x95\x81\xcd\x11\xd2\x4a\x38\x57\x76\x8a\x73\x03\x4c\xa6\x74\x9f\x6b\xc8\x9c\x4c\x2c\x57\xd2\x9c\xc0\xa5\xd2\x50\x28\x8d\x03\x2e\x33\xa5\x0b\x46\xb7\x81\x8d\x95\xb3\x30\xe6\x32\xe5\x72\x02\x89\x33\x56\x15\x11\x46\x69\xe2\x91\x13\x7a\x54\x53\x54\xa2\xe6\x18\x4a\x81\xcc\xe0\x40\x3b\x09\xf7\x3f\x43\x8e\xa2\x84\x29\xce\xeb\xe7\xf7\x83\xc1\xc8\x0b\x80\xc6\x02\x8b\x31\x6a\xb0\x39\xb3\xf0\x8a\x09\xf1\x0a\x3c\x7c\x8e\x1a\xbd\x4e\x1a\xe9\x2d\x36\x16\x78\x00\xef\x32\x98\x2b\x07\xa9\x92\xff\xb2\x20\xf8\x14\x81\xdb\x63\xba\x35\x48\x98\x0c\x9f\x43\xb7\x0e\x06\x83\xc3\xc3\x43\x18\xa9\x19\x6a\x70\x06\xf5\x60\xf0\x48\xb6\x82\x70\x3d\xc2\x39\x9a\x44\xf3\xd2\x2b\xa9\xb2\x68\x07\xd8\xdf\xf5\x38\x78\xfc\x77\xbc\xa0\xf5\xf7\x4b\x5d\xc4\x08\x67\x56\x8b\xd7\x17\x41\xc7\x4f\x25\x4a\x60\x90\xa8\xa2\x20\x8f\x97\x5a\x15\xa5\x85\x4c\x69\xd0\x4e\x4a\xef\xd0\xf0\xc8\xc0\xd0\x20\x46\x37\xd5\x77\xef\xbd\x2c\x03\xc1\x8d\x25\x23\x3d\x30\xc1\xd3\xf8\xf4\xe8\xc4\xeb\x08\x77\x6c\x1c\xad\xfa\x4e\x76\xd8\x8e\x81\x5b\x98\x71\x21\x80\x39\xab\x12\x45\xc1\x69\x11\x78\x06\xa5\x32\x86\x8f\x05\x9e\x3c\xd9\xaa\x41\xc7\xb7\x81\xf1\xc6\x91\x8a\x26\x47\x21\x22\xf5\xd0\xe6\xdc\x04\xd6\x44\x28\x83\x50\xf0\x44\x2b\x98\xe5\x5c\x20\x85\x8a\x8e\x92\xf8\x1d\x13\x67\xd1\xeb\xd2\xcf\xe8\x43\xe9\x9a\x3d\xf0\x89\x4f\x8a\xc5\x50\x5a\x96\x7f\xc1\xd8\x5a\x88\xa9\x15\x01\xf0\xc2\xc1\x75\xaa\xb5\x9a\x99\x1e\xad\xaf\xd4\x03\xfa\x6a\x93\x38\x6d\x28\x6e\xb4\x72\x32\xdd\x83\xd2\x9e\xfa\x36\xe7\x99\x7d\xcd\x56\x7d\x40\x45\x4d\xfe\x34\x28\x30\xb1\x60\xf1\xbb\xdd\x07\x71\xa0\xfe\x55\x15\x48\xb5\xce\x87\xdd\x47\xcc\xac\x37\x43\x9b\xda\x2a\xaf\xf8\x18\x27\x3c\xe4\x55\x55\x77\x13\xa7\x35\x4a\xaa\x53\x12\x77\xa2\xbe\x90\x69\x64\xbe\xe1\x93\xbc\x97\x1a\x49\x70\x0f\xa4\x0d\xf5\xa9\xb0\x1d\x65\x9b\xc7\x81\xba\xf2\xb3\x92\x08\x33\xa5\x53\x10\x98\x3d\xdf\xea\x35\x75\x47\xdb\x0d\xd4\x9a\xa4\xf7\x45\xfd\x57\xcf\xe3\x05\x6a\xab\xa0\xd4\xf8\xc0\x95\x33\x80\x45\x69\xe7\xde\xde\xc7\xe4\xad\x85\x30\x48\x55\xe2\x0a\x72\xc7\x56\xd4\x7f\x6f\x49\x2d\x29\xc0\x3b\xb4\x55\x08\x6c\x47\xb8\x48\x3d\x62\x13\xfc\x52\x6e\x41\xed\x4a\x6f\xf3\x92\x4d\x76\x0d\xad\x55\xd4\xe7\x6a\xb6\xaa\x38\x2e\x52\xa7\x24\xb4\x37\xf2\xd8\x46\x16\x92\xfb\x4b\x59\x45\xdc\x92\xc1\x8d\x65\xda\xee\x62\xde\x35\xd4\xed\xe4\x26\x13\x04\xee\x25\xea\x1d\xfd\xba\x96\xfa\xe3\xea\xc7\xf0\xde\x15\x25\x71\xb2\x50\x3d\xb8\xf4\x15\x25\xa3\xbe\x39\x0c\x0d\x9d\xfa\xaa\xcd\xe1\xf0\x68\x57\xea\xaf\x3d\xd4\x67\xf3\x44\x50\x09\xb5\x33\x44\x09\xa6\x14\xdc\x9a\xfa\x03\xea\x92\x66\xd9\x18\x86\xce\xf8\x49\xe5\xc1\x8b\xdc\x93\x05\x69\x6e\xa9\xfe\xb3\x0a\x12\x8d\xcc\x22\x0d\x05\x74\xeb\x28\x36\xf0\x3b\x36\x36\xed\xd6\xbd\xae\x4f\xb7\xfa\xec\x9a\xa6\xda\xd2\xea\xae\x35\x6f\x49\x9c\xf9\x2f\xed\x68\x4f\xf9\x7d\xec\x79\x47\x75\xe1\xe8\x48\x35\x72\x27\x5e\xee\x9a\xb2\x7c\x49\x06\x9a\x99\xe4\x92\xcb\x94\x58\xb5\x9f\x4b\xcc\xee\x33\xee\xce\xb3\x6a\x63\x81\xcb\xc0\xe9\x3f\x69\xa8\x4a\x94\xa6\x1a\x01\xfb\x22\x25\xbe\x79\xdd\x7a\xd3\x17\x36\x2e\x8d\x65\x32\x41\xfa\xe8\xda\xf5\x06\x99\x4e\xf2\xce\x9b\xa3\xd6\x9b\xb1\x1a\xaf\x7b\x3b\xda\x4d\xe0\x5e\xec\xd6\x77\xed\x7d\xf6\x6f\x74\xfe\x5c\xa5\x8b\x1f\x6c\x6b\xfd\x42\x86\xfe\xe9\x28\x67\xc2\xb0\xcb\x69\x18\xe0\x06\xb8\xf1\x19\x24\x98\xa9\xa4\xc8\x35\x47\x0b\x56\xfc\x04\xed\x6d\x61\x31\xd9\x69\x01\xa0\x3b\x92\x15\xb8\x31\xe5\x23\xe2\x6d\x40\xbc\x65\x0f\x9d\x4f\x7c\xea\x55\xa7\x2e\x45\x85\xea\xf1\xd7\x9a\xb7\x77\xcd\x80\x75\x7e\x78\xa2\xcf\x28\x9b\xc3\xec\xda\x33\xd1\x04\x4b\x85\xb9\x75\x8b\x59\x66\x11\xb3\x67\x40\x5b\xc2\x5c\x3f\x9a\x35\xf3\xf5\x42\x37\x5c\xa2\x88\x98\xed\x86\xd8\x33\x6e\x36\x98\xed\x36\xb7\x6c\x89\x36\x66\xd5\xe9\x7a\x07\xd8\x26\xbe\x3c\x4c\xec\xd6\xbd\xba\xb7\xbf\xb3\x27\xfe\x3a\x98\x4d\x1f\x5e\x83\x59\x7d\x67\x6f\x44\x47\xcc\x6f\xfd\x36\x0f\x98\x67\xce\x56\x3b\x0b\xa6\xeb\xb7\x96\x88\x79\xb6\x11\x53\x95\xf3\xed\x40\x23\xe6\x6f\x9b\x30\x47\xcc\xd8\xed\xb2\x37\x62\x7e\xd8\xf8\x9d\xce\x6e\xb9\xab\x44\xcc\xf3\x4d\x98\xe7\xae\x14\x3c\xa1\xf6\xbf\x09\x39\x62\xfe\xb1\x09\xf3\x8b\x4c\xd5\x7a\x99\x25\xcc\xdf\x37\x61\xde\xe0\x53\x30\x29\xdf\x7b\x83\x3d\x62\xd6\x63\x63\xa3\xb6\xd2\x4d\x1c\xd0\x0d\x43\xf3\x7b\x0b\xb3\x37\xd8\xd7\x61\x66\x5d\x4c\x3f\x98\x47\xcc\xb7\x2c\x99\x9a\x92\x25\x9e\x9d\x6e\x84\x29\xbb\x85\x79\x8e\xfe\x08\x68\xcb\xba\xe4\x5f\x3f\xdd\x60\xa3\x3a\x37\x99\x10\x9b\xed\xe9\x3b\xca\x15\x4b\xb4\x7a\x81\xc6\xbf\x42\x85\xdd\x9a\xc7\x93\x9a\x4c\x58\x5e\x82\x0e\x77\x6a\x32\x11\x08\x05\x29\x08\x1a\x13\xa5\xfd\xd1\xed\xb0\xd4\x68\x4c\x2d\x19\x0b\x63\x23\x10\xce\xec\x48\x86\x4d\x18\xcd\xdd\x24\xa2\xca\xa3\x96\x1b\xde\x43\x3c\x72\x13\xcc\xa2\xa9\x5f\xc7\xb4\xa2\xdb\xdd\x4a\xc1\x29\x4e\x58\xee\x4f\xaf\xfd\xf2\xd3\xd3\xe7\x5f\xfa\xec\x76\xe5\x24\xf0\xd2\xe7\xb7\x31\x7f\xae\x3b\xba\x9e\x85\x6d\x86\x76\x8a\x62\xd1\x3c\x90\x69\x55\x54\xc9\x48\xda\x0f\xfd\x81\x67\x75\x02\x56\xe7\xac\xcf\x32\x9e\x81\x54\xad\x59\xb8\x7a\xe3\xa8\xc9\xda\x51\x87\xf5\x06\x0b\xca\xfc\xca\xcb\x5d\xe2\x3d\x58\x38\x94\x86\xd5\xac\x94\xc5\x1d\x4a\x03\xc3\x84\x66\x7a\xf1\xd4\xb5\x73\x05\xeb\xb7\x0e\xeb\xed\x94\x97\x4b\x2a\x36\x66\x7d\xe6\x55\xb3\x5e\x75\x59\x4b\x36\xab\x97\xc5\xfa\xc0\xd4\x2e\x9f\x22\xe2\x03\xea\xf9\xc2\x32\xbe\xe4\xc6\x3e\x56\x9f\xb2\x57\xca\x19\xfc\x58\x55\xd9\x47\x18\x09\xaa\xcc\x6c\x49\x5d\x66\x81\xc9\x39\x08\x95\xb0\x67\x28\x5d\xa5\xf1\x27\x9b\xff\xa8\xdf\x5b\x7e\xc8\x6f\x2c\x8d\x35\x7f\x81\x66\x53\xf2\xbf\x94\xec\xb4\xd4\xf4\xeb\x02\x4d\xb3\x7c\x84\xa6\x93\x0e\x95\xa0\x41\x4e\x17\x5c\x32\x41\x0d\x17\xa4\xb2\x60\x5c\x59\x2a\x5d\xc5\x4c\x94\x9d\xe2\xdc\x97\x72\x67\xb0\x46\xa3\x85\x18\x59\x7a\xb4\xc8\x72\x03\xed\x76\xe1\x77\x44\x8a\x32\xe9\xfc\x6f\x71\xda\x09\x7c\x46\xa2\x57\x91\x70\x51\xb0\xc4\x80\xb1\x73\x81\xc0\x92\x27\xee\xda\x5b\xfb\x36\xe6\xd8\x65\x85\xe9\xcf\x4d\x7c\xe5\x5b\x65\x63\x3f\xa5\x54\x92\xf1\x24\x66\x49\xba\x96\x3c\xad\x24\xeb\xc3\xf6\xb8\x4f\xc4\xc1\xb2\x96\xbc\xe8\x48\x56\x5b\x42\x6b\x00\xad\x4f\x1f\x6a\x1d\xa7\x38\x37\x27\x83\xc1\x57\xa6\x29\xdd\x0f\xe0\x2e\xc7\xc6\x00\xfe\x27\xd0\x82\xcd\xbd\xaf\x67\x4a\x4f\xa9\x00\x50\x69\x8c\x81\x70\x00\x8d\x31\xb7\x32\xe4\x46\x23\x5e\xbe\x81\x4e\x80\xaf\x32\xe0\xe5\x7f\xa1\x59\xef\x7b\xdc\xff\x08\x97\xff\x83\xe6\x70\xa6\x5f\xea\xff\x41\xea\xb3\xe3\x3d\x83\xa0\x97\xfa\x69\x2b\xac\x37\xff\xd9\x88\xf5\x4f\x00\x00\x00\xff\xff\x08\x40\x5a\x45\x39\x1f\x00\x00" func runtimeHelpDefaultkeysMdBytes() ([]byte, error) { return bindataRead( @@ -1064,7 +1068,7 @@ func runtimeHelpTutorialMd() (*asset, error) { return a, nil } -var _runtimePluginsAutocloseAutocloseLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x55\xd1\x6a\xdb\x4a\x10\x7d\xf7\x57\x0c\xba\x0f\x96\x88\xe5\x8b\xef\xd3\x25\xa0\x42\x93\x42\x31\x98\xb6\x24\x85\xb4\x24\x81\xac\x56\x23\x6b\x89\xbc\x2b\x46\xb3\x75\x4a\xc8\xbf\x97\xd5\xda\x8e\xe4\x2a\xb2\x0d\xd1\xc3\xda\xd2\xcc\xd9\x99\x3d\x7b\x66\xa6\x34\x52\x94\x60\x2d\xab\x12\x12\x50\xab\xca\x10\x87\xc1\x4a\x49\x32\xff\xba\x8f\x41\x34\xf2\x2e\x2b\xbb\x6f\xdf\x99\x2c\xe7\xff\xb7\x8c\xee\x75\x67\x13\x96\x8d\x2c\x4d\x8d\xdf\x84\xa2\x1a\x12\x78\x0e\xee\x82\xbb\x20\x98\x40\x30\x1e\xbb\xf5\xe1\xc1\xad\x61\xe4\xd6\xe7\x17\xb7\xde\xde\x07\x2f\x2d\xf4\x17\x5c\x97\x4a\xb7\xf0\x7f\xf9\x8e\x72\xab\x25\x2b\xa3\x41\x16\x82\x3e\x72\x58\x33\x4d\x40\x45\x23\x00\x80\x38\x86\xd2\x0a\x50\x3a\xc3\x27\xa5\x97\xa0\x6a\x30\x1a\xc1\xe4\x39\xe4\x64\x56\xb0\x34\x8d\x1b\x21\x5b\xd2\x9e\x88\xe9\x95\xd5\xb8\xdb\x26\x9e\x45\x23\xd4\x59\x2b\x8a\xd1\xce\x21\x4c\xab\x09\x90\x0f\x92\x1b\x02\x05\x09\xcc\x26\xf0\xcf\xde\x89\x33\xbf\xbf\x7b\x54\x0e\x04\x49\xb2\xcd\xb2\xeb\x78\xab\xee\x27\xf0\x5f\x04\x5c\xa0\xde\x21\xdc\xe3\x99\x90\x96\x16\x4a\x23\x24\x90\x56\xd3\x0b\x9b\x9f\xbb\xb7\x30\xad\xa6\x97\x96\x6a\x43\xd3\x9f\xd1\xa8\x83\x52\xf9\x36\xcc\x06\x39\x81\x57\xe7\x1f\x67\xb3\xe8\xf4\x44\xdc\x93\x56\xe7\x17\x42\x3e\xd6\x95\x90\x18\x46\x7d\x66\x1f\xe2\x4a\x2d\x0b\xee\x73\x20\x14\x8f\x9d\xaf\x0d\xb5\x7b\x99\xb7\x32\x85\x0f\x30\x03\xa1\x33\x08\xfd\xd5\xcc\xeb\x1b\x43\xd9\x65\x21\x28\x1c\x38\x5f\x3c\x8b\x22\x30\x34\x44\x41\x7c\x88\x02\xb7\x45\x3f\x07\xbd\x67\xe8\xfb\x7f\xf8\xc2\x67\xef\x79\xe1\x6d\xda\x92\xa4\x29\xcb\x46\xca\x97\xc6\x6a\x9e\xeb\x6b\x26\xa5\x97\x5b\x32\x1a\x7e\xb4\x61\x38\x85\xd7\xb3\x37\x49\x89\x63\xf7\x1d\xc6\xf1\x18\x0a\x24\x74\x65\xc6\x06\x32\x24\xcc\x51\x4b\x6c\x8c\x95\x51\x9a\x91\x9c\xe1\x75\xcf\x85\x91\xb0\x2e\x94\x2c\x1c\xc4\x31\xb4\x12\xac\xa4\x28\xcb\xdf\xb0\x12\x19\xf6\x05\x5a\x17\xa8\x41\x1a\xfd\x0b\x89\x5d\x49\x2f\x0d\xd4\x4c\x56\x72\x13\xb3\xb4\xa2\x0f\x34\x67\xd0\x88\x59\xe3\x92\xe2\x26\x33\x72\xb9\x65\x90\xa2\x14\xb6\xf6\x49\xee\xaa\x1c\x9f\x2a\x74\x5b\x0a\xd0\x46\xef\x72\xf7\x81\x7a\x84\xdf\xdc\xd1\x5c\xd7\x48\x1c\xc6\x9d\xe3\x4d\x06\xeb\x6c\xa0\x88\x16\x98\x1f\x5f\x43\xfb\xff\xb7\xbf\x9b\xc6\x96\x8b\xb2\xc6\xbd\x3e\x56\x11\xfa\x84\x37\x2d\x36\x4c\x2b\x1f\xed\x68\x05\x76\x9c\x9d\xd4\x20\x19\xaa\xb9\x36\x40\xe3\x13\x1f\x46\x9c\xcd\xda\x98\xb5\x1b\x00\x5e\xaf\x9f\x91\x17\x28\x32\xa5\x97\x37\x85\x62\xf4\x0d\x69\x2b\xed\x51\x6f\x53\xee\x0c\x92\x6e\x5b\xde\x65\xdf\xa9\xd5\x36\xe0\xcd\x6a\x55\x79\xeb\x28\xc3\xf0\x81\xa6\xda\xbd\x87\x5e\x4d\x78\x97\xef\x22\xed\x35\x0f\xc9\x2f\xb8\xd3\x01\x4c\xa7\xb0\xae\x7b\x37\xbe\x66\x41\xfc\x35\x5f\xbc\x19\x79\x50\x8d\x1d\x7d\x1d\x23\xca\xb6\x2a\x99\x6c\x8f\x28\x5f\x27\xcc\x56\x90\xc7\xcd\xd7\x93\x64\x0b\xef\x32\x24\xdd\x64\x1a\x12\xfc\xe9\xdd\x3f\xad\xce\x3f\x61\x89\xdc\xbe\x8b\x83\xf4\xfd\x09\x00\x00\xff\xff\xf7\xe0\x3d\x62\xc6\x09\x00\x00" +var _runtimePluginsAutocloseAutocloseLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x55\xd1\x6a\xdb\x4a\x10\x7d\xf7\x57\x0c\xba\x0f\x96\x88\xe5\x8b\xef\xd3\x25\xa0\x42\x93\x42\x31\x98\xb6\x24\x85\xb4\x24\x81\xac\x56\xb3\xd6\x12\x79\x57\x8c\x66\xeb\x94\x90\x7f\x2f\x2b\xd9\x8e\xe4\x2a\xb2\x0d\xd1\xc3\xda\xd2\xce\xd9\x99\x3d\x73\x66\xa6\xb0\x52\x14\xe0\x1c\xeb\x02\x12\xd0\xab\xd2\x12\x87\xc1\x4a\x4b\xb2\xff\xfa\x8f\x41\x34\xda\x98\xb0\xfa\xbf\x65\xe1\x5f\x77\x7b\xc2\xb1\x95\x85\xad\xf0\x9b\xd0\x54\x41\x02\xcf\xc1\x5d\x70\x17\x04\x13\x08\xc6\x63\xbf\x3e\x3c\xf8\x35\x8c\xfc\xfa\xfc\xe2\xd7\xdb\xfb\xe0\xa5\x85\xfe\x82\xeb\x42\x9b\x16\xfe\x2f\xdb\x91\x72\x46\xb2\xb6\x06\x64\x2e\xe8\x23\x87\x15\xd3\x04\x74\x34\x02\x00\x88\x63\x28\x9c\x00\x6d\x32\x7c\xd2\x66\x09\xba\x02\x6b\x10\xac\x52\xa0\xc8\xae\x60\x69\x6b\x33\x42\x76\x64\x9a\xdb\x4e\xaf\x9c\xc1\xdd\x31\xf1\x2c\x1a\xa1\xc9\x5a\x5e\xac\xf1\x06\x61\x5a\x4e\x80\x1a\x27\xca\x12\x68\x48\x60\x36\x81\x7f\xf6\x6e\x9c\x35\xe7\xfb\x47\x2b\x20\x48\x92\x6d\x94\x5d\xc3\x5b\x7d\x3f\x81\xff\x22\xe0\x1c\xcd\x0e\xe1\x9f\x86\x09\xe9\x68\xa1\x0d\x42\x02\x69\x39\xbd\x70\xea\xdc\xbf\x85\x69\x39\xbd\x74\x54\x59\x9a\xfe\x8c\x46\x1d\x94\x56\x5b\x37\x1b\xe4\x04\x5e\x8d\x7f\x9c\xcd\xa2\xd3\x03\xf1\x4f\x5a\x9e\x5f\x08\xf9\x58\x95\x42\x62\x18\xf5\x6d\x37\x2e\xae\xf4\x32\xe7\x3e\x03\x42\xf1\xd8\xf9\x5a\x53\xbb\x17\x79\x2b\x52\xf8\x00\x33\x10\x26\x83\xb0\x49\xcd\xbc\xba\xb1\x94\x5d\xe6\x82\xc2\x81\xfb\xc5\xb3\x28\x02\x4b\x43\x14\xc4\x87\x28\xf0\x47\xf4\x73\xd0\x7b\x87\xbe\xff\x87\x13\x3e\x7b\xcf\x84\xb7\x69\x4b\x92\xba\x2c\x6b\x29\x5f\x5a\x67\x78\x6e\xae\x99\xb4\x59\x6e\xc9\xa8\xf9\x31\x96\xe1\x14\x5e\xcf\xde\x24\x25\x8e\xfd\x77\x18\xc7\x63\xc8\x91\xd0\x97\x19\x5b\xc8\x90\x50\xa1\x91\x58\x6f\x96\x56\x1b\x46\xf2\x1b\xaf\x67\x2e\xac\x84\x75\xae\x65\xee\x21\x9e\xa1\x95\x60\x2d\x45\x51\xfc\x86\x95\xc8\xb0\xcf\xd1\x3a\x47\x03\xd2\x9a\x5f\x48\xec\x4b\x7a\x69\xa1\x62\x72\x92\x6b\x9f\x85\x13\x7d\xa0\x39\x83\x41\xcc\x6a\x93\x14\x37\x91\x91\x8f\x2d\x83\x14\xa5\x70\x55\x13\xe4\xae\xca\xf1\xa9\x44\x7f\xa4\x00\x63\xcd\x2e\xf6\xc6\x51\x8f\xf0\xeb\x1c\xcd\x4d\x85\xc4\x61\xdc\xb9\xde\x64\xb0\xce\x06\x8a\x68\x81\xea\xf8\x1a\xda\xff\xbf\xfd\xdd\x34\x36\x25\x8a\x0a\xf7\xfa\x58\x49\xd8\x04\xbc\x69\xb1\x61\x5a\x36\xde\x8e\x56\x60\xc7\xd8\x4b\x0d\x92\xa1\x9a\x6b\x03\x0c\x3e\xf1\x61\xc4\xd9\xac\x8d\x59\xfb\x01\xd0\xe8\xf5\x33\xf2\x02\x45\xa6\xcd\xf2\x26\xd7\x8c\x4d\x43\xda\x4a\x7b\xd4\xdb\x94\x3b\x83\xa4\xdb\x96\x77\xd1\x77\x6a\xb5\x0d\x78\xb3\x5a\xb5\x6a\x5d\x65\x18\x3e\xd0\x54\xbb\x79\xe8\xd5\x44\x63\xf2\x5d\xa4\xbd\xdb\x43\xf2\x0b\xee\x4c\x00\xd3\x29\xac\xab\xde\x83\xaf\x59\x10\x7f\x55\x8b\x37\x3d\x0f\xaa\xb1\xa3\xaf\x63\x44\xd9\x56\x25\x93\xeb\x11\xe5\xeb\x84\xd9\x0a\xf2\xb8\xf9\x7a\x92\x6c\xe1\x5d\x86\xa4\x9f\x4c\x43\x82\x3f\xbd\xfb\xa7\xe5\xf9\x27\x2c\x90\xdb\xb9\x38\x48\xdf\x9f\x00\x00\x00\xff\xff\x80\x29\x13\xa7\xab\x09\x00\x00" func runtimePluginsAutocloseAutocloseLuaBytes() ([]byte, error) { return bindataRead( @@ -2164,6 +2168,26 @@ func runtimeSyntaxGoYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxGodocYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4c\x8d\x31\x4b\xc4\x40\x10\x85\xfb\xf9\x15\x8f\xb9\x2b\xf4\x20\xb9\x7e\x1a\x1b\x15\x2c\xe4\x1a\x8b\x80\xe7\xc1\xb2\x3b\xc6\xe0\x6e\x66\xd9\x5b\x41\x21\x3f\x5e\x12\xa3\xde\x2b\xdf\x37\xdf\xbc\x0d\x7a\x0b\xe6\x69\x03\xfd\x74\x29\x47\x15\xf4\x86\x60\x1e\x8d\x8b\x11\x13\xd2\xe0\x8b\x81\xe8\x75\x88\x5a\xbf\xf2\xc2\x67\x81\x82\x56\xf5\x55\x08\x00\x66\x38\xba\xa4\x02\x3e\x1e\xdb\xe5\x60\xcb\x0b\x79\x53\x17\xb4\x08\xb2\xf3\xef\xae\xd7\x76\x37\xa4\x6c\xa5\x12\x95\x8f\xa8\xe7\x1f\xbb\x41\x2e\x9a\x8b\x79\x01\x9f\x9e\x4f\x78\x69\x77\x4c\x2b\xf1\x96\x92\x8e\xeb\xcc\x9c\x73\x75\xa5\x0a\x78\xbf\xe7\xbf\x4e\xc7\x20\xe0\xed\x7f\x71\xf1\xfc\x37\x0d\xaa\x05\x13\xf0\xd5\xd3\xe1\xf6\x30\x75\x5d\x37\xdd\x3f\x74\x8f\x77\xd7\x72\xc3\xf4\x1d\x00\x00\xff\xff\x73\xe8\x65\xe9\x06\x01\x00\x00" + +func runtimeSyntaxGodocYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGodocYaml, + "runtime/syntax/godoc.yaml", + ) +} + +func runtimeSyntaxGodocYaml() (*asset, error) { + bytes, err := runtimeSyntaxGodocYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/godoc.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxGoloYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x57\x5f\x73\x1c\xb7\x0d\x7f\xf7\xa7\x50\xd5\xb4\x8e\x93\x91\x9a\xd7\x6a\x9a\x76\x54\x5b\xd7\x51\x9b\x58\x19\xfb\xea\x78\xc6\xe7\xda\xd8\x25\xf6\x8e\x39\x2e\x41\x83\xe0\x9d\x36\x45\xfb\xd9\x3b\xe0\xde\xea\x6f\x3d\xd9\x3e\x54\x33\x22\x41\x2e\x01\x02\x20\xf0\x03\xae\xf3\x01\x65\x48\x78\x76\xb4\xa6\x40\x4f\x9e\x38\x14\x6c\xe5\xec\xc9\xd1\xd1\xd1\x91\x7d\x8b\xd0\xe3\xd9\xd1\xf1\x6a\x75\x6a\xdf\xbf\x38\x7e\xf2\x84\x4b\xc0\x3c\x1e\x38\x39\x1a\x59\x8f\x57\xab\xe6\xcb\xae\xc4\x56\x3c\x45\xed\x4a\xd4\x67\xab\x55\x73\xfc\xf8\x4c\x16\x2e\xad\xe8\x8b\x21\x42\xef\xdb\xab\xe6\x27\x6c\x45\x4b\x34\xae\x73\x07\x49\x90\x17\xd0\xb0\x6f\xa7\xd5\x74\xf2\x0d\xb0\x87\x26\xa0\x5e\x35\x19\x79\x67\xe4\x67\x6e\x08\x3e\x8b\x66\x14\x05\x66\x18\x74\x87\xad\x10\xab\x94\x14\x50\x7b\x48\x9f\xe1\xba\xda\xea\x05\x33\xb1\x5e\xf4\x49\x06\x7d\x49\x11\xf5\x35\xf5\xa8\x57\xa9\x9a\xf4\x0a\x73\x09\x72\x98\x4e\x69\x3b\x51\x1d\xf8\x30\xd1\x58\x05\x4c\x8b\x2a\x67\xe4\x86\xf0\x70\x49\xdd\xa8\xc7\x41\x11\xef\x30\x8a\xef\x3c\xf2\x69\x1b\x20\xe7\x83\x52\x50\xd6\x3d\x46\xd1\xe4\xfb\x7b\x7a\x7f\xe6\xb8\x8f\x82\xdc\x41\x8b\x59\x7d\x9f\x02\x1a\x6f\x56\xbc\x16\x8c\x2e\x2b\xed\x90\xd9\x3b\xcc\xda\xc3\x16\x59\x23\xee\x2f\x63\x16\x88\x2d\xce\x91\x9d\x47\xc7\xf8\x5c\x5d\xe3\xf3\x0f\x8c\xd9\x74\xf3\xb9\xba\xc9\x0b\x32\x98\xa3\xbb\x00\x22\x18\xd1\xa9\xd0\x77\xf6\x14\xb6\xf1\x3d\x24\xfd\x08\xd1\x29\xf1\x45\xc8\xf8\x17\x14\xfd\x68\x8f\x42\x07\xb7\x42\x4a\x61\x50\xf4\xb2\x41\x9e\xa1\x0c\x8f\x5c\x34\x3e\x8d\xf0\xe0\xe3\x5a\x19\x7c\xb6\x39\x96\x10\x7c\x37\x68\x0b\xd2\x6e\x7c\x5c\xcf\x90\x97\x98\x7a\x9f\xd1\xa2\x66\x51\xa4\x30\xaa\x3d\x2b\xba\xc3\x02\x42\x50\x88\xc3\xac\x17\xf0\xe2\x21\xf8\x9f\x51\x6f\xc9\x1f\xbd\x6c\x7c\x5c\x6e\x18\xc1\x69\x16\x60\xd1\x6e\xba\x25\x84\x06\xda\xed\x92\x94\xe2\x6b\x14\xa5\xb8\xb0\x78\x6a\xed\x51\x82\x62\xfc\x54\xb0\xcc\x79\x9d\xc4\x3e\x4a\x88\x5a\xe7\xea\x09\x54\xbb\x2e\xc4\x3a\xfd\x00\x39\xef\x89\x9d\x66\x6c\x0b\xe3\xab\xbb\x5b\x8c\x9f\x8a\x67\x7c\x49\xf2\xb2\x84\x30\x2d\x2d\x3a\x96\x43\x42\x77\x5e\x93\x88\x21\xae\x4d\xe2\x0e\x39\xa3\x7b\x55\x57\x3d\xa4\x8b\x28\x3c\x28\xe4\xcb\x29\xf0\xa6\x80\x52\xc8\x8b\x03\x18\x40\xb8\xf9\xaa\x3e\x3f\x0f\x94\xab\xe5\x3e\xe0\x92\x96\x78\x2d\x2a\x78\x2d\x4b\x5a\xf8\x30\xee\x5e\x5c\xfb\x2c\x59\xdb\xc2\x8c\x51\x5e\x78\xd6\x1c\x10\x93\x96\xe2\x9d\xfa\x3c\xea\x53\x53\xdb\xf4\xbb\xea\xb4\xdd\x00\xbf\x81\x50\xcc\xe5\x32\x12\x81\xe2\x7a\xa4\x1c\x95\x26\xe0\x48\x77\x81\xe0\x70\x80\xb1\xa7\x1d\xfe\x79\xb8\x8c\x0e\xaf\xb5\xa1\xeb\x19\x3e\x0e\x7e\x8b\x61\x78\x5d\x52\x22\x16\x34\xc7\x19\xc8\x34\x14\x9c\x96\xe8\x90\x73\x4b\x8c\xda\x04\x1f\xb7\x93\xa7\x3e\xec\xbc\x43\xd2\x96\x62\x8b\x10\xd0\x69\xb7\xfe\xd0\x04\x68\xb7\x46\xf0\xb8\x5e\x33\x62\x34\x62\xc0\x10\x68\x3f\x1e\x31\x6d\xd7\x1f\x7a\x58\x63\x14\x30\xb2\x1d\xa0\x1e\xda\x6f\xbc\xa0\x36\x93\x98\x66\x14\xd3\x4c\x62\x9a\x1b\x31\xcd\x41\x4c\x73\x2b\xa6\x39\x88\x69\x26\x31\x6d\xe1\x4c\xfc\x21\x51\xf6\x35\x91\x0e\xeb\x0c\x3b\x7c\xb4\xc9\x98\x85\xf8\xf1\x7e\x49\x13\xe5\x68\x7f\xb3\xdb\x11\xef\x81\xdd\xb4\xb4\x18\xaf\x6b\x64\xc8\xf8\xc1\xf9\x9c\x02\x0c\x87\x55\xf0\x71\x4e\x88\x57\x00\xad\x80\xd2\x52\xcc\x1a\xe0\xe7\x71\xd5\x31\xf5\x97\x56\x28\xd6\x18\x0f\x10\xc4\x98\x10\xe4\x00\x49\x73\x64\x43\xfe\xee\x46\x1c\x05\x17\xea\xc8\x2a\xb0\xc5\x3a\xfc\xb8\xb1\xe8\x74\x4c\xa9\x0e\xe3\x32\x97\xc6\x38\xe6\xa0\x42\x6f\x21\x33\xe3\x60\x4f\xae\x84\x39\x0a\xff\xf5\xf5\xd5\xcb\x19\xc7\xb2\xb0\x8f\x6b\x03\xc3\x04\x9c\x51\x85\x8c\x51\x85\x1e\x94\xdf\xe4\x40\x70\xc1\xd4\xcf\x94\x7b\xa7\x74\xa8\xc3\xce\x47\xd4\x35\xca\xdf\x70\xb0\x69\xcc\xb0\xc4\x94\x90\xc5\x63\xbe\x41\xb9\x19\x82\xc5\xf7\x98\xb5\xa4\x25\xa9\x85\xd3\x92\x66\xf0\x74\xc4\x3d\x88\x0a\x5d\xc6\xc3\x88\x6b\xb4\xda\xf2\xa2\xe6\xbe\x0a\x2d\x2c\xf1\xad\x1c\xd1\xac\x6a\xb0\x31\x9c\x16\xc3\xe1\xa9\xe8\x31\xba\xd2\xa2\x22\xb4\x1b\x6d\xa9\x44\x51\xac\x28\x35\xcf\x55\x86\xff\xaf\xa1\x47\xc3\x2b\x75\x78\xe8\x80\x20\x25\x8c\x4e\xc1\xd5\xff\xcb\xee\xbc\xa9\xe5\x34\x59\xf0\x46\xa7\x3e\x66\x64\xd1\x00\xd9\xda\xa3\x9e\x9c\xef\x6a\xff\xf3\xc6\xe3\x5e\x3b\x1f\x9d\x81\xa5\x85\x7d\x0f\x49\x7f\x22\x1f\x27\xcc\xb9\x41\x69\x25\x76\xc8\xe3\x58\xe1\xca\x20\xef\x5c\xd4\xc7\x36\x14\x87\x8a\xd7\xe3\x3c\x7e\x50\x87\x01\x05\x75\x03\xd9\x12\x4c\xc0\xc7\x6c\xaf\x79\x55\x0b\xb6\x0a\x55\xe0\x9d\x93\x4b\xa3\x41\x4b\xd2\x5c\xda\xd6\xec\x71\xda\x97\xa0\x11\xd7\x96\x32\xca\x36\x38\xbf\x53\xb6\xa1\x27\xa7\x6c\x43\xa2\xbd\xb2\x0d\x59\x58\x83\xe8\x5a\x14\x3f\x69\x0d\x2c\x0d\x38\x36\x0f\xd6\x32\x7c\x8c\x24\x7a\x4d\xac\xb8\xc3\xa8\xe4\xdc\xad\xb6\xd3\x6b\x7d\xf4\xd9\xfe\xa3\xf5\x18\x9d\xb5\x78\xc6\x78\xd9\xd5\xf2\xd6\x59\x6f\x18\x9d\x59\xe6\x05\x7b\xab\xf8\x75\x5e\xa3\x98\x33\x7d\x15\x97\x45\x17\x60\x56\x2f\xb9\xa0\x56\x3e\x2b\x47\x83\x96\x38\xcd\xc0\x83\xe6\x64\xb5\x15\x59\x77\xc0\xc0\xeb\xac\x79\x0f\xe9\x7c\x22\x9e\xd7\x93\x95\xa2\xda\x7b\x1a\xa9\x3e\xee\x68\x5b\x3b\x02\x4d\x3e\xa1\xb6\xd4\x27\xca\xa8\x9e\x14\xa2\x5b\x6e\x30\x6a\x89\xe2\xad\x0e\xb7\x85\x4d\x19\x37\x27\x6d\xe8\xef\x29\x21\x3f\x87\x8c\x8a\x9f\x0a\x84\x3c\xf6\x19\xd9\x2e\xba\xd7\x68\x66\x01\xa9\x7d\xe1\x04\x4d\x9d\x62\x7d\x5f\xbb\x79\x6f\x43\x6b\x42\x7a\xeb\x9d\x94\xac\x1d\xdb\xfb\x7c\x0f\x91\x72\xc2\xd6\x43\x38\xf0\xef\xcd\x92\x86\x11\xb6\xf5\x1d\x7c\xac\xc5\x55\x0a\xc7\xbb\x3c\xb5\x31\x9e\x74\xe5\x43\x6b\x66\x51\x0c\x21\x0c\x2a\x1b\xa6\xfd\x7f\xb7\x72\xc2\xb1\x92\x2c\xa3\x37\x3e\x6b\x40\x31\x7f\x6b\xa0\x16\xc2\x3d\xbd\x86\xbe\xa1\x70\xda\x30\xb4\x5b\x14\xf3\xcc\xbb\x2f\x9f\xfd\xf3\x5f\xef\x75\xb5\x7a\xa7\xab\xd5\xfb\xe3\xcf\x78\xa0\x23\xd6\x7d\x05\xf4\x8e\xb8\x66\xb8\xbf\xa7\x7b\x8d\x07\xb8\x39\x0e\x35\x37\xd5\x67\xb5\x40\x24\xd6\x1a\x68\x53\x7c\xdd\xf3\xf5\xc4\x79\xda\x10\x85\x1b\xeb\x4b\x6d\xfb\xee\xfb\xf4\xf6\x8e\x03\x68\x58\xc8\x59\x53\x61\xd0\xea\xee\x3f\xe0\x68\xa6\x81\xab\xd5\x3a\x33\x73\xb5\x3a\xf9\xfa\x77\x5f\x7d\xfb\x87\x3f\xfe\xea\xdf\xbf\xf9\xad\xfe\xe3\xbd\x9e\x7d\xfb\x50\xf0\x69\x2c\x7d\x63\xee\x3c\x5c\xf0\xee\x9b\x93\xdf\xbf\xff\x5a\xbf\xb9\x36\x02\x4e\xba\xf3\x93\xc5\xfb\xaf\xec\x1e\x7d\x7a\xfa\xf4\xb1\x01\x63\x1d\x19\x7f\xf1\xd9\x5f\x0d\x2e\xb3\xe8\xf8\xf8\x66\x0f\xa3\x7b\xb0\x93\xb7\x3e\x55\xb3\x57\xab\xd3\xdb\xdd\x3b\x3f\x1e\xa7\xbf\xbb\x37\x8d\xd1\xf5\x7c\x03\x7c\xcb\x3a\x57\x9d\xa7\x0f\xb5\x79\xfa\xff\x54\xa6\xaf\x41\xf4\x48\x89\x5f\x3f\x54\xe2\x8b\x5f\xb8\x4e\xc8\xd1\xd9\xd1\xf1\x97\xcb\xab\x17\x57\xfa\xf6\xed\x5b\x5d\x5c\xbe\xfd\xfe\xe2\xd9\xd9\x9f\x7e\xf9\xae\x93\x93\x93\x93\x87\xd7\xdd\xdf\xfb\x9f\x6f\xfc\x4f\x00\x00\x00\xff\xff\x8f\x72\x85\xf4\x0e\x10\x00\x00" func runtimeSyntaxGoloYamlBytes() ([]byte, error) { @@ -2384,7 +2408,7 @@ func runtimeSyntaxJavaYaml() (*asset, error) { return a, nil } -var _runtimeSyntaxJavascriptYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x54\x5f\x73\xe3\xb4\x17\x7d\xef\xa7\xf0\x66\xfb\xfb\xd5\x76\xc6\x49\x79\x80\xa5\x19\xc0\x53\xd8\xf6\x09\x5a\x86\x3f\x2f\x48\xea\xae\x6c\x5f\x27\x6a\x65\xc9\x23\x5d\x27\x0d\x5c\xf8\xec\x8c\xec\x94\x64\xdd\x6e\xe9\x03\x0c\x7e\x90\xac\x3b\x47\xe7\x9c\x2b\x5d\xdd\x5a\x69\xc0\x6d\x0b\x8b\xe8\x56\xae\xa5\x2f\x9d\x6a\xf1\xe8\xa8\x02\x84\x12\x17\x47\x51\x14\x45\x01\x61\x64\x03\x8b\x68\x12\x73\x3e\xbb\xf5\xc7\xc4\xf9\x0c\x3c\xfb\xf4\xb3\x37\x9f\x8b\xbc\x5f\x35\xb7\xfe\x38\x99\xf4\xf0\x15\xc8\x0a\xdc\x22\x9a\xdc\xbc\x7e\x35\x4b\xe7\x31\x98\x75\x34\x4d\x72\x63\x2b\x88\x23\x0a\xa8\x23\xd7\x69\xf0\x03\x79\x16\x95\xd6\x78\x94\x06\x67\xa6\x6b\x8a\x7e\x23\xe7\x05\xcb\xa6\x22\x8f\xd9\x27\xd9\x99\x60\xa7\xd9\x99\x48\xe9\x94\x9d\x66\x6f\xc2\x7c\x1f\x02\x32\xab\xcf\xb3\x4b\x31\x4d\x62\xd6\xfd\x2c\x98\xfe\x56\xe4\x14\xc6\xb0\xca\x93\x9c\xf3\x62\xf2\x02\xfa\xc0\x3c\xe5\x7c\xb6\x93\x18\xa6\x87\x75\xe0\xbe\x80\xef\x5b\xc1\xa6\x99\xc8\x77\xa1\x9c\xd5\x97\x41\xec\xc5\xec\x8f\x29\x46\x0c\xaa\x02\x83\xaa\x56\xfd\x66\x76\x9e\xfd\x22\xb3\x5f\xdf\x89\xdd\xcf\x69\x76\xf6\x4e\xa4\x8c\x2d\x7c\x2b\x4b\x58\x08\x91\xb2\x58\x3c\xec\xf4\xdb\xa6\xb0\x7a\x56\x38\x59\xde\x01\xfa\xe1\x7a\x7e\x23\xce\x7f\x4f\x9e\x85\xc4\xc4\x79\xf2\x3c\x84\x11\xe7\xe2\x79\xc8\xbf\x28\x64\x5b\x70\x12\x6d\x7f\x20\xd9\x74\x9e\x7e\xf9\xc5\x57\xaf\xfe\xf8\x5f\xbe\xf8\x3f\xed\x73\x47\x89\xd0\x80\xc1\xe1\xc4\x63\xe9\xb7\xa6\x24\xb9\x91\x0a\xa9\x70\x20\xef\xa8\x94\x1e\xa8\x94\x58\xae\xa8\xbf\xa4\x30\xa2\x32\x1d\x50\x05\x45\xb7\x5c\x82\xa3\x0a\x6a\xd9\x69\xa4\x0a\x34\x20\x50\x65\x09\xb4\x07\x82\xfb\xd6\x3a\xa4\x5a\x19\xa9\xf5\x36\x39\xa8\xa5\xb1\x6a\x6d\x1d\xd5\x9d\x29\x51\x59\x43\xa5\x96\xde\x13\xdc\x23\x98\xca\xd3\x12\x90\x54\x4d\xaa\x19\xb8\x9c\x6d\x48\x19\xb2\x35\xa9\xbe\x60\x4a\xb0\x35\x69\x40\x32\xb0\x21\x07\xd8\x39\x43\x1e\xf0\x39\x31\xdf\xb5\xe0\xc8\x6f\x54\x48\x09\x57\xca\x13\xae\x9c\xdd\x10\xba\x2d\x85\x07\x6c\x6b\x5a\x4b\x47\x6b\xab\x2a\xda\xac\x94\x06\xda\x28\x5c\xd1\x56\x81\xae\xf6\xbc\xaf\x23\x07\x1e\xdc\x1a\xaa\xa8\xe8\x30\xea\x8c\xf4\x5e\x2d\x0d\x54\x3b\x55\x70\xce\xee\xca\x38\x06\xd3\x35\x21\x03\xdd\xdb\xf0\xa4\x0c\x82\xab\x65\x09\xd4\xca\xf2\x4e\x2e\x81\x5a\xa7\xd6\x12\xc3\x6c\x43\xbf\x80\x8a\xda\xae\xd0\xaa\xa4\x9f\xae\xdf\x5e\x27\xe3\x47\xb2\xa3\x35\x9d\xd6\xd4\x99\x0a\x6a\x65\xa0\xa2\x2b\x79\x95\x3c\xf1\x5e\x77\x60\x74\x1d\x50\x2d\xb5\x87\x43\xd0\xd0\xb0\x7a\xc0\xb9\x73\x72\x4b\x5f\x5b\xab\x41\x1a\x7a\x1b\xdc\x5c\x98\xae\x19\x2a\x88\x2e\x42\x3a\x74\xf9\x70\x47\xdf\x49\x5c\x7d\x84\xe7\xaa\x7f\xc0\x74\x5d\xdc\x42\x89\xf4\x03\x2c\x2f\xee\x5b\xfa\x11\x9d\x32\xcb\xc3\xd3\xfb\xc0\xe0\x9c\xdd\xa4\x22\x66\x37\x73\x41\x31\xe7\x9c\xcf\x93\x24\x65\x37\xe1\x4f\xcc\xd9\x52\x35\x22\x7d\x32\x2b\xce\xfb\x5e\xd6\x0f\xf9\x30\x52\x88\x7e\xd0\xd9\xfa\x08\x2b\x6a\xe3\xf0\x84\x4f\x38\xcf\x7b\xda\x3d\x5f\xb3\x2b\x8d\x8f\x77\xd9\x71\x8b\xf2\x7d\x32\x43\xdb\x0d\x9f\x47\xe9\x7a\x43\x93\xc9\x5f\x31\x30\xd5\x28\xe2\xef\x54\xbb\x73\x3d\xdb\x47\x0f\x3a\xf8\xc3\x77\xa8\xd4\x42\xa9\xa4\xfe\x66\x25\xdd\x7e\xeb\x4b\xed\x9c\x8c\xdd\x9c\xfc\x87\x66\xde\x8f\xcd\xbc\xff\x67\x64\x87\xdb\x7b\x24\x37\x9f\x8f\xf5\x8e\xc7\x7a\x11\x13\x7f\x4f\xc3\x79\xfa\xe8\x4e\x79\x3a\x7f\x92\xeb\xcf\x00\x00\x00\xff\xff\x03\xdb\x38\xed\x01\x08\x00\x00" +var _runtimeSyntaxJavascriptYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x55\x6d\x6f\xe4\x34\x10\xfe\xde\x5f\xe1\xdb\x2b\x74\x5f\x94\xdd\xf2\x01\x8e\xae\x80\x55\xb9\x6b\xa5\x4a\x5c\x8b\xae\x77\x3a\x89\x38\xbd\x73\x9c\x49\xd6\xad\x63\x47\xf6\x64\xb7\x0b\x03\xbf\x1d\x39\x49\xbb\x2f\x2d\xa5\x48\x20\xf2\xc1\x1e\x8f\x9e\x79\x66\x9c\x79\x71\xae\x34\xe0\xaa\x82\x29\xbb\x16\x0b\xe1\xa5\x53\x15\xee\xed\x65\x80\x20\x71\xba\xc7\x18\x63\x01\x61\x44\x09\x53\xd6\xeb\x73\x3e\xbe\xf6\xfb\xc4\xf9\x18\x7c\xfc\xf5\x37\xaf\xbe\x4d\x66\xcd\xa9\xbc\xf6\xfb\x83\x5e\x03\x9f\x83\xc8\xc0\x4d\x59\xef\xea\xe5\x8b\xf1\x70\xd2\x07\xb3\x60\xa3\xc1\xcc\xd8\x0c\xfa\x8c\x02\x6a\xcf\xd5\x1a\x7c\x4b\x1e\x31\x69\x8d\x47\x61\x70\x6c\xea\x32\x6d\x0c\x39\x4f\xe3\x68\x94\xcc\xfa\xf1\x57\xd1\x51\x12\x1f\x46\x47\xc9\x90\x0e\xe3\xc3\xe8\x55\xd8\x6f\x83\x42\x44\xf9\x71\x74\x9a\x8c\x06\xfd\xb8\xfe\x90\xc4\xfa\xa7\x64\x46\x61\x0d\xa7\xd9\x60\xc6\x79\xda\x7b\x06\x7d\x60\x1e\x71\x3e\xee\x5c\xb4\xdb\xdd\x39\x70\x9f\xc0\xcf\x55\x12\x8f\xa2\x64\xd6\xa9\x66\x71\x7e\x1a\x9c\x3d\x9b\xfd\x21\xc5\x16\xc3\xcb\x88\xa9\x0c\x0c\xaa\x5c\x35\xd6\xf1\x71\xf4\x8b\x88\x7e\xfd\x94\x74\xc2\x61\x74\xf4\x29\x19\xc6\xf1\xd4\x57\x42\xc2\x34\x49\x86\x71\x3f\xe9\x4c\xd9\x15\xc3\xb9\xf2\x4c\x79\x66\x2c\x32\x69\x9d\x03\x89\xac\xf6\xa2\x00\x66\x73\x86\x73\xd8\x20\x67\xd2\x6a\xeb\xba\xb0\xfd\xaa\x4c\xad\x1e\xa7\x4e\xc8\x1b\x40\xdf\x66\xf6\x37\xe2\xfc\xf7\x41\xef\x29\x48\x9f\x38\x1f\x3c\x0d\x89\x89\xf3\xe4\x69\xc8\x7f\xe8\xc8\x56\xe0\x04\xda\xe6\x57\x46\xa3\xc9\xf0\xfb\xef\x7e\x78\xf1\xc7\x17\xb3\xe9\x97\x94\xdc\x23\x51\x20\x94\x60\xb0\x4d\x56\x5f\xf8\x95\x91\x24\x96\x42\x21\xa5\x0e\xc4\x0d\x49\xe1\x81\xa4\x40\x39\xa7\x26\xbf\x61\x45\x65\x6a\xa0\x0c\xd2\xba\x28\xc0\x51\x06\xb9\xa8\x35\x52\x06\x1a\x10\x28\xb3\x04\xda\x03\xc1\x6d\x65\x1d\x52\xae\x8c\xd0\x7a\x35\xd8\x28\xc3\x5d\xaf\xb9\x75\x94\xd7\x46\xa2\xb2\x86\xa4\x16\xde\x13\xdc\x22\x98\xcc\x53\x01\x48\x2a\x27\x55\xb6\x5c\xce\x96\xa4\x0c\xd9\x9c\x54\x53\x6b\x12\x6c\x4e\x1a\x90\x0c\x2c\xc9\x01\xd6\xce\x90\x07\x7c\xca\x99\xaf\x2b\x70\xe4\x97\x2a\x5c\x29\xd4\x0c\xe1\xdc\xd9\x25\xa1\x5b\x51\xe8\x7d\x9b\xd3\x42\x38\x5a\x58\x95\xd1\x72\xae\x34\xd0\x52\xe1\x9c\x56\x0a\x74\xb6\xe6\x7d\xc9\x1c\x78\x70\x0b\xc8\x58\x5a\x23\xab\x8d\xf0\x5e\x15\x06\xb2\xce\x2b\x38\x67\xbb\x0e\xe8\x83\xa9\xcb\x70\x03\xdd\x84\xe1\x49\x19\x04\x97\x0b\x09\x54\x09\x79\x23\x0a\xa0\xca\xa9\x85\xc0\xb0\xdb\x30\x6a\x20\xa3\xaa\x4e\xb5\x92\xf4\xfe\xe2\xcd\xc5\x60\xb7\xbf\x3a\xda\x42\xdb\x54\xe8\xf7\xe1\x06\x67\x26\x57\x46\xe1\x8a\x4c\xad\x35\xd5\x26\x83\x5c\x19\xc8\xe8\x5c\x9c\x0f\x1e\x69\xff\x8e\xe0\x1f\x81\xd1\xd5\x40\xb9\xd0\x1e\x36\x41\xed\xb0\x6c\x00\xc7\xce\x89\x15\xfd\x68\xad\x06\x61\xe8\x4d\xb8\xce\x89\xa9\xcb\xb6\x04\xe9\x24\xfc\x0f\x3a\xbd\x4b\xf2\x5b\x81\x73\x7a\x2b\x2a\xba\x04\xa4\x8f\x20\x6e\x82\x1c\xf6\xcb\xed\xe4\x6d\xf0\x9f\x37\x43\x85\x2e\xd2\x6b\x90\x48\xef\xa0\x38\xb9\xad\xe8\x12\x9d\x32\xc5\x66\x5a\xb6\x02\x9f\xc4\x57\xc3\xa4\x1f\x5f\x4d\x12\xea\x73\xce\xf9\x64\x30\x18\xc6\x57\x41\x4a\x26\x71\xa1\xca\x64\xf8\xe8\x6d\x39\x6f\xe6\x6b\xb3\xcc\xda\x95\x82\x76\x6b\xda\x36\x9a\x38\xcd\x8d\xc3\x03\xde\xe3\x7c\xd6\xd0\xae\xf9\xca\xae\xe6\xfe\x7a\xf2\xb7\xc8\xad\x91\xd7\xf4\xa0\x06\x17\x9a\x49\xda\x0c\x3e\xbc\x3b\x5b\x4b\xaf\x6d\x59\x59\x03\x06\x29\xb3\xb2\x0e\xf4\x04\xe6\x0e\x75\x2f\xad\x51\xe0\xa5\xa8\x80\x60\x21\x34\x29\x7f\x1a\x2a\x04\x48\xf9\x73\x71\x4e\x95\x70\x1e\x4e\xb5\x15\xd8\x8a\x67\x06\xa9\x36\x9d\x41\x6d\x1a\x93\xa5\x32\x99\x5d\x6e\x66\xe3\x41\xa8\x67\x06\x35\x7d\x84\xf4\xd8\x7b\x28\xd3\xed\x26\x7f\x00\x3e\x76\x45\x13\xb4\x6f\x51\x7b\xbb\xaf\x86\x6f\x72\xd9\xbe\x84\xe1\xf3\x28\x5c\x93\x8f\x5e\xef\x5e\x07\x26\xdb\xd1\xf8\x1b\x55\x75\x49\x1b\xaf\xb5\x1b\x8f\xea\xdd\xb7\xe9\xa9\x02\xa9\x84\x7e\x3d\x17\x6e\x6d\xfa\xdc\x70\x0e\x76\xa3\x39\xf8\x1f\x83\xf9\xbc\x1b\xcc\xe7\x7f\xc7\x6d\x5b\xbc\x0f\xdc\x4d\x26\xbb\xfe\xf6\x77\xfd\xb1\x38\xf9\x7b\x1a\xce\x87\x0f\x72\xca\x87\x93\x47\xb9\xfe\x0c\x00\x00\xff\xff\x7e\x39\x45\xc9\x94\x09\x00\x00" func runtimeSyntaxJavascriptYamlBytes() ([]byte, error) { return bindataRead( @@ -2404,6 +2428,26 @@ func runtimeSyntaxJavascriptYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxJinja2Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x53\xc1\x8e\x22\x39\x0c\xbd\xf3\x15\x25\x66\x47\xea\x3e\x30\x87\x3d\x72\xe9\x0f\xd9\xde\x43\x2a\x79\x55\x98\x4d\x39\xc1\x71\xa0\x19\xcc\xbf\xaf\x12\x8a\xd1\x4c\xaf\xb4\x9a\x08\x61\x57\xfc\x12\xbf\x67\xc7\x13\x45\xe8\x35\x63\x3f\x1c\x89\x8f\xee\xcf\xcd\x26\x40\xe1\x75\xbf\x19\x86\x61\x68\x51\x76\x0b\xf6\xc3\xf6\xfd\xfd\xdb\x41\x97\xf8\xc7\x76\xb3\x91\x1a\x51\x1a\x60\x37\x10\xfb\x58\x43\x8b\xb7\xe0\xb6\xef\x95\x0c\x4f\x2e\xee\x87\xed\xcb\xed\x66\xf7\xbb\xdd\xbe\xee\xde\x6c\xf7\xf6\xf5\xfe\xfa\x00\x04\x4c\xae\xc6\x35\x45\x5b\x45\x9d\x68\xc7\x37\xe4\xed\xd6\x71\x8f\x05\x0e\x2d\xd0\x4e\xdb\xfd\xfe\x53\x20\xd2\x42\xba\x9b\x25\xd5\xbc\x7f\xa6\xfc\x11\xfc\xc1\xf0\xb9\x7e\x66\x9a\xaf\x7a\x48\xbc\xfd\x25\x5a\xd4\x29\x16\xb0\x76\xa5\xe3\x0b\xcd\x9c\x04\xc3\x42\xa5\x10\xcf\x76\x21\x3d\xbc\xa4\xaa\xaf\x6f\x83\x4f\xac\xf8\x50\x1b\x63\xf2\xff\x98\x77\x31\x1a\x38\x3c\xbe\xc0\xe1\xb9\x31\x51\x54\x48\xf7\x52\x37\x8b\xf3\x92\x9a\x23\xee\xd2\x4c\x81\x1a\x3e\xb4\x79\xb6\x82\x1b\x72\xa5\x69\x0f\x78\xc3\x0a\x7c\x95\x42\x67\x58\xf1\x29\x23\x58\x81\xbe\xbe\xbf\x8f\xbf\x0a\xa0\x00\x56\x9a\x08\xf2\x6d\xac\x14\x95\x78\xaa\xec\x57\x35\x4e\x55\x6c\x74\xea\x0f\xe6\x5d\x26\x75\x91\xbe\xc3\x3c\xb8\x65\xf5\xa9\xb2\x5a\xb0\xb5\x2b\x16\xc8\x6b\x49\xa2\x06\x43\xf1\x2e\xa3\xd1\x43\xa1\xef\x98\x92\x2c\x4e\x6d\x22\x29\xda\xc8\x7a\xac\x80\xde\x85\xf1\x6a\xc4\x8d\x85\x1d\x13\xb1\x45\x57\xd4\x22\x78\xd6\x83\xc5\x74\x81\x58\xce\x42\xac\x26\x8e\x43\x5a\x4c\x70\x84\xd7\xd5\x74\x82\x82\x1c\x9d\x87\x09\xce\x90\x02\x2b\x6e\x82\x15\xc4\x06\x7b\x98\x0e\x2b\x2a\x94\xd5\xcd\xc5\x94\x34\xc2\x34\x1d\x4b\x62\x53\xa1\xc5\x54\x2a\x7b\xa7\xb0\xca\x74\xaa\xb0\x9a\x33\xc4\xaa\x44\xb0\x4f\x01\xcd\x6b\xca\x2f\x49\xc2\x43\x76\xf3\x2e\xe2\xb2\x7d\x2c\xb1\xdd\xfe\x3b\x85\x55\x94\xe7\x33\x69\xdd\x76\x63\x44\x2b\x1e\x31\x82\x05\x3a\x53\xa1\x31\x62\xbc\x1a\x4e\x86\x53\x75\x51\xd3\x5a\xc8\x60\x38\x83\x6d\x86\xcd\x6a\xa4\x90\x7e\xb4\xfd\x7a\x7d\xa2\xda\xe2\x72\x6e\xef\x8d\x61\x9c\xda\x5f\x5d\x46\x88\xa5\x10\xac\xb8\x05\xae\x58\xc1\xa9\x82\x3d\x7a\x19\x78\xb6\xca\xcf\xd4\x5d\xeb\xff\xf2\x5f\x3b\x3c\xc7\x34\xf6\xf1\x6c\x0a\x22\xe5\x52\x17\xf3\x57\x1f\x21\xbd\x73\x10\x6b\x23\x5f\xb2\xf3\x78\x5e\xb7\x1b\x7c\x5a\xfa\x78\xfc\x67\x66\x6f\x5f\x3e\x0f\xeb\x97\xfb\xf6\xd3\x20\x0e\x7f\xfd\xbd\xf9\x37\x00\x00\xff\xff\x83\xe1\x3e\xeb\x69\x04\x00\x00" + +func runtimeSyntaxJinja2YamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxJinja2Yaml, + "runtime/syntax/jinja2.yaml", + ) +} + +func runtimeSyntaxJinja2Yaml() (*asset, error) { + bytes, err := runtimeSyntaxJinja2YamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/jinja2.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxJsonYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x52\x3b\x6b\xf3\x30\x14\xdd\xfd\x2b\x84\x08\xf8\x85\xfc\xe5\x83\x42\x89\x16\x53\x4a\x33\x75\xe8\xd2\x49\x57\x01\xd9\xb9\x6e\xdc\x3a\x8a\x91\x64\x68\x89\xfb\xdf\x8b\x1c\xa7\xcd\xab\x90\xa5\x1a\x2c\xdf\x73\x74\x1e\x58\xae\xea\x06\xdd\x47\x8b\x9c\xbc\xda\x8d\x0e\x82\x25\x3a\x2c\x1d\x0f\x08\x21\xc4\x73\x5a\xad\x91\x13\x0a\x90\x79\x7e\x42\x07\x62\x85\x6a\x89\x86\x13\xba\x00\xd8\x4e\x68\x10\x98\xae\x41\xbb\x13\x31\x52\x6e\xb4\x75\x4a\xbb\x4c\x77\xeb\x62\x38\x06\x50\x08\x96\xca\x3c\x12\xff\xd9\x4c\x8a\x29\x9b\xc9\xa4\x9f\x8a\x29\xbb\xf5\xfb\xbb\x07\x14\xab\xee\xd8\x5c\xa6\x71\x24\xba\x67\x29\x9a\x47\x99\xf7\xfe\xe9\xa7\x3c\xce\x01\x0a\x7a\x85\xbd\x77\x4e\x01\xb2\x31\x62\xb7\xed\x67\xef\xfd\x80\x4f\xad\x14\x29\x93\xf9\x08\xe5\xa2\x9a\xfb\xb0\xab\xdd\xcf\x2d\x7e\x71\xd8\x49\x23\xdd\x35\x4d\x7c\xa1\xfe\x48\x3b\xd3\x61\x5f\xa9\xc6\xe2\xa5\x43\x99\x75\xa6\xd6\x2f\x9c\x0c\xb8\x5f\xd6\x29\x33\x68\x29\xfd\xc6\x50\x2f\x4f\x10\xfb\x56\xb7\x43\x00\x40\xf6\x83\x1e\xdc\xd2\x7e\x1d\x46\xb5\x58\xd6\xaa\xb9\x5f\x29\x73\x2c\x3d\xaf\x73\xd6\x26\x3c\x2d\x13\xfe\x41\x97\xb1\x8c\x75\xca\xe1\x1a\xc7\x2f\x08\x34\xf2\x34\xd0\x5e\x2c\x80\xca\x38\xf1\xef\x42\x70\xdb\xaa\x12\xb9\x94\x09\x07\x4a\x08\xd0\x30\x02\x08\x7b\xb1\x08\x65\x9c\x84\x47\xfc\xc5\x8b\x01\xe8\x0e\xfe\xca\xed\xcd\x67\xef\x31\x51\x54\xda\xb8\x10\xe8\x3f\x3f\x49\x1a\x7c\x05\x00\x00\xff\xff\x67\x47\xd8\x55\x3e\x03\x00\x00" func runtimeSyntaxJsonYamlBytes() ([]byte, error) { @@ -2684,6 +2728,26 @@ func runtimeSyntaxMarkdownYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxMcYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x8e\xcf\x4a\xc4\x30\x10\x87\xef\x79\x8a\x21\xbb\xa0\x1e\xdc\x07\xe8\xad\xd0\x08\x01\xdb\x2c\x6d\x15\xc4\xf5\x4f\x48\xa6\x4b\xa0\x99\x95\x66\x14\x84\x3c\xbc\xb4\x0b\x2b\xe8\x82\x38\x97\x61\x7e\xf3\xcd\xc7\xac\x20\x21\xf9\x68\xc3\x08\xee\x40\x43\xd8\xc3\x10\x46\x4c\x42\xcc\x8d\x3f\xdf\xb0\x80\xe8\x84\xf0\xc8\xe8\xb8\x10\x00\xb0\x00\x64\x23\x16\x20\x77\xbb\x4d\x74\x6b\x29\xc4\xf4\x3e\x62\x3a\xae\xaf\x21\xb1\x65\x8c\x48\x5c\x80\x7c\xbe\xf4\xe1\x03\x27\xce\xf7\xaa\xed\xb4\x69\x74\x95\x4d\xd7\x3f\x6c\x55\xae\x4c\x5d\xea\x26\xdf\xa8\xb2\xbf\x6b\x55\xf6\x38\x04\xc2\x2b\x79\xd6\x51\x95\xaa\x36\xcd\x8b\xd9\xf6\xda\x34\x5d\xae\x4b\x7d\xab\xda\x13\xeb\x0e\x71\x21\x97\x71\xae\xc4\x76\x9a\x0f\x57\xf2\x14\x21\xf9\x02\xe4\xfa\x3b\x38\x7e\x0c\x8f\x4f\x7f\x49\x3c\x8d\xff\xd2\x50\x62\x4b\xbc\x49\x3c\x05\xda\xff\xd6\xbd\xfe\x94\x5d\x9c\x93\x89\xaf\x00\x00\x00\xff\xff\xaa\xc9\x8d\xf2\x98\x01\x00\x00" + +func runtimeSyntaxMcYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxMcYaml, + "runtime/syntax/mc.yaml", + ) +} + +func runtimeSyntaxMcYaml() (*asset, error) { + bytes, err := runtimeSyntaxMcYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/mc.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxMicroYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x93\x31\x6f\xdb\x30\x10\x85\x77\xfd\x0a\x42\xc9\x20\xc1\x90\x91\x8e\x15\x10\x18\x41\x9b\x00\x1d\xda\x0c\xcd\x50\xa0\xcc\x70\xa2\x4e\x32\x61\x8a\x14\x8e\xa7\xc4\x46\xd9\xff\x5e\x50\x72\x63\xab\x6e\x6c\x6d\x3e\x7e\x8f\xf7\xee\xd1\xd7\x68\x83\xbc\xeb\xb1\x14\x9d\x56\xe4\x92\xa4\x46\x46\xc5\x65\x22\x84\x10\xf1\xd0\x42\x87\xa5\x48\xa5\x5c\x66\x23\x91\x5f\xa7\x49\x42\x83\x41\x3f\x31\x85\xf0\x0c\x8c\x1d\x5a\x1e\xb1\x2a\xf3\x3b\xcb\xb0\x0d\xca\x19\x47\x59\x61\xb4\xdd\xe4\xab\x5c\xca\x2a\x7d\x8f\x67\x20\xbe\x0d\x68\xeb\xdb\x03\x76\x25\xbe\xeb\xae\x37\x28\x9c\xc5\x78\x07\x92\xdf\xcb\x75\x8d\x96\x75\xa3\x91\xf6\xfa\x1a\x1b\x18\x0c\x07\x3b\x74\x15\x52\x78\xbb\x3e\x0c\xb6\x46\x8a\xda\x3a\x20\x91\xa3\xc0\xae\x76\xe3\xf9\xe0\x63\x39\x68\x1b\xef\x2a\xd4\x1a\x28\xa8\x81\xbc\x23\x29\xc7\x66\x93\x79\x29\x0b\xe5\xcc\xd0\xd9\xa0\x5b\xeb\x08\x43\xad\x5f\x74\x8d\x14\x18\xaa\x0a\x68\x66\x16\x7b\x20\x60\x3c\x72\xe7\x05\x3b\xb1\x41\xec\x45\xaa\x5c\x1c\x65\x9b\x0a\xc2\x16\xb7\x42\x19\x04\xfb\xde\x34\xbe\x47\xa5\xc1\x64\x9f\xd6\x40\xf3\xdc\x4e\xd0\x4c\x0d\x44\x68\x59\xca\x22\x5f\x45\xdb\x52\x16\x53\x08\x67\x65\xed\xc0\x8c\x71\xb8\x4c\xdb\xc6\xed\xa3\x79\x05\xb2\xda\xb6\xf9\xaf\x0f\xbf\xcf\x8a\x95\xeb\x62\xb6\x99\x94\xcb\x8a\x74\xbb\xe6\x0b\x1e\xfd\xae\xab\x9c\x89\x78\x56\x11\xa8\x0d\xb2\x0f\xae\x47\x02\x8e\xef\x01\x6d\x7e\x41\x7f\x28\x8c\x77\x28\x03\xde\x87\x0e\x14\xb9\xf0\x02\x74\x49\xad\x9c\xf5\x0c\x93\xdd\xac\x72\x7b\x23\x4c\x03\x86\x06\x8c\xc7\x71\xdc\xd5\xdb\x3f\x67\x8a\x3e\x26\x1f\x3c\x93\xb6\x6d\xc4\x07\x32\xf9\x6a\x02\xcf\xf6\xea\x09\x7b\x72\x2a\x4a\xfc\x1a\x2b\xb0\xed\x05\x41\x5c\xbb\x48\x6f\x70\xf7\xea\xa8\x9e\xd3\x7f\x9d\x2f\x27\x6f\x7b\x49\x58\x87\xbb\x70\xb3\xcd\x17\x3f\x6f\x8a\x8f\xcf\x8b\xf1\x77\xbe\xb8\x24\xbb\xd9\x46\x5c\x40\xd1\x88\xbb\xe2\xe1\x79\xce\x8f\xcf\x39\xad\x72\xfc\xc6\x65\x2c\x45\x7a\x95\xbe\x95\xd0\xd6\xa5\x48\xaf\x0f\x85\xa3\xed\x9f\xbe\x42\xc4\xcd\x2a\x45\x9a\x3d\x7c\xf9\xf1\xf5\x3e\x3c\x3d\x7e\x7e\x0c\xdf\x1e\x9f\xee\xf3\x72\x75\xe2\x6c\x4a\xf6\xb4\xa3\x4c\xff\x6d\x79\x5c\xf1\x1b\xdd\x8f\xd3\x48\xb9\x3c\xe3\x64\xde\xe9\xf0\x9e\x73\xe9\xff\x72\xba\x1a\x33\xba\x2b\x1e\x62\x4e\xcf\x8b\x34\xf9\x13\x00\x00\xff\xff\x39\xf1\xae\x51\x1a\x05\x00\x00" func runtimeSyntaxMicroYamlBytes() ([]byte, error) { @@ -3104,6 +3168,26 @@ func runtimeSyntaxPrivoxyFilterYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxProtoYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x92\xcf\x6e\x9c\x3c\x14\xc5\xf7\xf3\x14\x16\x1a\x69\x20\xf9\x60\x48\xf2\x29\x6d\xd8\x44\x55\xdb\x48\x5d\x54\xd9\x74\x31\x2a\x17\x55\x06\xee\xa4\xd6\x80\xed\xda\x97\x6a\x46\xb9\x79\xf7\x0a\xc8\x1f\x44\x54\x35\x1a\xaf\xe0\xfa\xd8\xbf\xa3\x73\xbc\x55\x0d\xd2\xc1\x62\x26\xac\x33\x64\x16\x8b\x1a\x09\x2b\xca\x16\x42\x08\xd1\x6f\x6a\xd9\x62\x26\x82\x10\x20\x09\x07\x49\xb4\x5c\x46\xc1\x62\xe1\xba\x06\xfd\x28\x8b\x85\xaa\x51\x93\xda\x2a\x74\x99\x08\x00\xca\xfc\x43\xfc\xfd\x47\x91\xa7\xf1\xd5\xf0\x71\x0a\x50\x06\x8f\xd2\x11\xd6\x8b\x42\xa5\x29\x7c\xcf\x67\x97\x7c\x71\xce\x97\xff\x47\x11\x7b\x72\x4a\xdf\x71\x79\x20\xf4\xec\xd0\xa2\x24\xac\xb9\x34\xa6\x61\x87\xbf\x3a\xe5\xb0\xe6\x56\x5a\x36\x96\x94\xd1\xb2\x61\xa3\xd1\x6c\xb9\xd3\xca\xe8\x09\xc2\x93\x24\x6c\x51\xd3\x13\xa7\xb5\xc6\x11\x7b\x74\xbf\x55\x85\x8c\xba\x6b\xd9\x1f\x34\xc9\x3d\x5b\x59\xed\xe4\x1d\x3e\xde\xc8\x2d\x7a\xdf\xff\x3a\x5b\xb1\x43\xea\x9c\xf6\x8c\x7b\x42\xed\x95\xd1\x9e\xc9\x44\x13\x4c\x65\xb4\x27\x39\x50\x56\x00\x00\x61\x98\xa7\xf1\x45\x71\x9d\xa7\xf1\xbb\xe2\xfe\xec\xbf\xf3\x87\x28\x5a\xfd\x4d\xbc\x1f\xc3\xb9\x91\xf1\x76\xd4\x3e\x2b\xfd\xa1\x2d\x4d\x93\x94\x4e\x56\x3b\x24\x9f\x89\x20\x0f\xa3\xfb\x87\x82\x01\x72\x06\x28\xe6\x37\x26\xba\x6b\xcb\x21\xf8\xb0\x4f\x3e\x8d\xaf\x86\xbc\x19\xa0\x4c\xa7\x94\x7e\xd8\x17\x37\x3b\x3d\x66\x3e\x16\xd9\x2f\x4f\xd2\x0d\xc1\x05\xc1\xf3\x0c\x75\x3d\x9b\xf8\x9d\xb2\x43\xba\x00\xc9\xcb\x74\xf2\x26\x9e\xd6\x94\x64\xb1\x52\xb2\xf9\xf8\x53\xba\x97\xa3\x6f\xb5\xb3\x9a\xbb\x59\x1d\x65\xc6\x3a\xb4\xce\x54\x99\x08\x92\xe4\x34\x38\xce\x69\x3b\x3c\xad\x57\x0e\xd7\xeb\xb9\xc5\xe5\x3f\xcc\x90\xa9\x4d\x5f\xdb\xb7\xdb\x4f\xb7\xbc\xd9\x6c\xf8\xe6\xcb\xe6\xeb\xe7\x28\xbb\x7e\x03\x0c\xe0\xe4\x55\x3f\x70\xb2\x3e\x9e\xf8\x27\x00\x00\xff\xff\x63\xdb\x6f\x09\x09\x04\x00\x00" + +func runtimeSyntaxProtoYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxProtoYaml, + "runtime/syntax/proto.yaml", + ) +} + +func runtimeSyntaxProtoYaml() (*asset, error) { + bytes, err := runtimeSyntaxProtoYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/proto.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPuppetYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x54\xd1\x6e\xe3\x36\x10\x7c\xf7\x57\x28\x3a\x05\x91\x64\xd8\xb9\x97\x3e\x9c\xd0\x26\x39\xa0\x2d\xd0\x87\xe2\x50\xa0\x40\x83\x23\x29\x87\xa6\x56\x16\x61\x89\x54\x48\x2a\xb1\x9d\x4d\xbf\xbd\xa0\x2c\xdb\xb2\x83\x03\x1a\x04\x32\x39\x33\xdc\x19\x5a\xeb\x2d\x65\x0d\x6e\xdb\x42\x16\xb4\x5d\xdb\x82\x9b\x4c\x0a\x70\x20\x5c\x16\x4c\x82\x20\x08\x3c\xad\x78\x03\x59\x10\x52\x3a\x6f\xdb\x28\x9c\x4c\x4c\x57\x83\xcd\x7a\x7a\x16\x14\x50\xf2\xae\x76\x59\x10\xe6\x84\x64\xb6\xe5\x02\x32\xc6\x62\xc2\x67\x3b\xe6\x1f\x9f\x67\x5f\x16\x6c\x9a\x84\x83\x5c\x16\xa0\x9c\x2c\x25\x98\xf9\x0b\x37\x7d\xd5\xc8\xcb\xb2\xa3\x38\x63\xd3\x83\x78\x9f\x2b\xa4\x74\x19\xf3\x6e\x05\xdc\xa2\xd0\x4d\xdb\x39\x30\x28\x8c\x56\x08\x1b\x10\xe8\x13\xf6\x8f\x65\x27\xd6\xe0\x70\x65\x74\xd7\x62\xa5\xad\x43\xa9\x1c\x98\x92\x0b\xc0\xf5\x4f\xb5\x5e\x49\x85\x0d\x17\xbc\x73\x95\x36\x72\xc7\x9d\xd4\x1e\x90\x35\xaf\x25\xb7\xfd\xaa\x96\xd6\x61\x23\x36\xd8\xe8\x4e\x39\x54\x7c\x25\xb5\x5d\x08\xdd\x34\x5c\x15\xa7\xad\x72\x5c\xb8\x8b\xed\xde\x76\xc0\x7a\xf7\xd1\xba\x80\x16\x54\x01\x4a\x6c\xc7\x28\x58\xc1\xeb\x7d\x8c\x31\xba\x71\x52\x95\x7a\x0c\x9d\xd5\xb6\x60\x5e\xa4\x80\x8b\xed\x47\x87\x81\xf8\x68\x72\x20\xce\x7d\x06\xf4\xcc\xca\xc9\x06\x5a\x30\x52\x17\xa8\xb4\x93\xe5\x16\x5b\x2e\xd6\x7c\x05\x68\xc0\xea\xce\x08\xb0\x68\x74\xff\x3e\xac\xa8\xa0\xe8\x6a\x38\x2e\x8a\x85\xe3\x76\x8d\x16\xea\xa5\xd6\x35\x70\xe5\x97\x8d\xde\x6b\x86\x2b\x58\x5b\x2d\x0e\xaf\x03\x8a\xc5\x1a\xb6\x1e\xea\x3f\x9c\x77\x71\xb2\xd8\x62\x67\xc1\xe0\x4b\xcd\x15\x6e\xbb\xc6\x40\xab\x71\x57\x5a\xdc\x69\x05\xb8\x6b\xb5\xae\x91\x2b\x51\x69\x93\x50\xba\x3c\xf4\x8d\x75\xdc\x41\x03\xca\x0d\xcd\x23\x6a\x6e\x2d\x16\x50\x4a\x05\x28\x4b\x84\xda\x02\x76\xaa\x80\x12\xa5\xaa\xc0\x48\x67\xcf\x8e\x6f\x9b\xa5\xae\xb3\x20\x8c\x7f\xc1\x19\xfe\x8b\x77\x3f\xee\xde\x98\xd2\x08\x1f\xf0\xe1\x21\xb9\xa7\x74\x49\xbe\xce\xbe\xb3\x29\xf9\x3c\xfb\xf2\x75\xf6\x7d\xe1\x7f\x01\xe9\xc7\x9a\x24\xe8\xff\x18\xe6\x49\x76\x90\xb2\xe9\xc8\x5e\x68\x65\x1d\xef\xc3\xdf\xc6\x24\xbf\x65\x18\x53\x4a\xe9\x6d\x92\xa4\xb7\x44\xea\x66\xc3\x52\xbc\x36\x94\xbe\xc5\x24\x7f\x1f\xc8\xf7\x24\x49\x29\x7d\x1f\xe8\xcb\x4a\x73\xeb\x8c\x54\xab\x2c\x08\x9f\x48\xfe\xc4\xd2\x27\xbc\xde\x50\xfa\xe6\x8f\xfb\x53\x3f\x96\xd3\x30\x26\x39\x0d\x07\x13\x1a\x7a\x97\x10\xaf\xc9\x5f\xff\xb0\xfb\x51\x81\x23\x12\x93\x3c\xf1\x48\x32\x20\x3f\x93\xfc\x8e\xa5\x77\x47\x9e\x90\x9c\x79\x9e\x1d\x91\x88\xe4\x91\x47\xa2\x23\x92\x93\x3c\xf7\x48\x3e\x20\x57\x24\xbf\x62\xe9\xd5\xf1\x8b\x6c\x41\x48\x5e\xef\x27\xc7\xff\xba\xc4\x4d\x4c\xf2\x9b\xe1\x0a\x37\x49\x92\xde\xe0\x35\x79\x7e\x65\xe7\xf9\x7b\x60\x1c\xff\xf9\x95\x9d\xd2\xf7\xec\x38\x7c\x0f\x8c\xb3\xf7\xc0\x38\xfa\xf3\x2b\xbb\x48\xee\xc7\xc8\xbe\x27\x3f\x91\xfc\x8d\xcd\xd3\x08\x3f\x45\x17\xe4\x7c\x69\xe4\xaa\xea\x35\x27\xd1\x49\xe5\x74\xa1\x7d\x0f\x3d\x3e\x3e\xe2\xdf\xdf\x7e\xfd\x86\xbf\xff\xf1\xf8\xe7\x6f\x48\xe9\xfd\xfe\xff\xd4\xa8\x7e\x16\xb8\x99\xa8\xb8\x99\xbf\x56\xd2\xc1\x7e\x30\x07\xe1\x68\x46\x4f\xa3\x70\xf2\x5f\x00\x00\x00\xff\xff\x70\xcf\x41\x80\xfe\x05\x00\x00" func runtimeSyntaxPuppetYamlBytes() ([]byte, error) { @@ -3504,7 +3588,7 @@ func runtimeSyntaxTclYaml() (*asset, error) { return a, nil } -var _runtimeSyntaxTexYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x51\xdb\xae\x9b\x30\x10\x7c\xe7\x2b\x56\x24\xad\x12\x1d\x81\xfa\x5a\x54\x35\xed\x6f\xd4\x8b\x2a\x5f\x96\xc4\x2a\x36\x08\x6f\xaa\x34\x38\xff\x5e\x71\x49\x48\x1b\x21\x1d\x5e\x80\xd9\xf1\x78\x76\xa6\xb2\x35\xf1\x9f\x96\x0a\x60\xba\x24\x89\x21\x26\xcd\x05\x24\x00\x00\xc3\xcc\x4b\x47\x05\xa4\x88\x39\xd3\x65\x1b\x11\x73\x65\xd5\xf8\xd6\x75\xd8\xa6\x49\xd2\x9d\x6b\x0a\xc5\xc8\xdf\x80\x6e\xea\xa6\xb3\x57\x02\x3e\x11\x58\x43\x9e\x6d\x65\xa9\x0b\xd0\x54\xd0\x7f\x59\x80\xaf\x37\x90\xde\x80\x78\x86\xca\x51\x23\x7b\x3a\x36\xa9\x0e\x4f\x60\xd9\xf1\x68\xa3\x4f\x1f\x20\x79\x33\x42\xb7\x05\x9a\xcc\x80\x78\x9f\x96\x78\xd5\x2a\xd7\xb4\x36\xe0\xcf\x4e\x51\x17\x66\x65\xdd\xf8\xc0\xd2\x73\x3e\xc1\xe3\x61\x25\x3e\x65\x9f\xcb\xb7\x1d\x62\x3e\x7d\xed\x0f\x3b\x21\x8a\xd0\x4a\x4d\x45\x59\xee\x5a\x8e\xce\x45\xed\xa2\xf5\x91\x2e\x91\x5c\x54\x6d\x6c\x75\x34\x26\x6a\x1d\xbd\x89\x5e\xc7\xd0\xee\xf7\x07\x44\x95\xce\xb7\xd6\xc4\xa0\x3a\xa9\x7f\x11\x07\x38\xc9\xdf\x53\xb4\x86\x2a\x79\xae\x79\xca\x1b\xe4\x51\x5a\x3f\xfb\x9a\x27\x05\xa4\xa2\xbf\x21\x0a\xc4\x72\xde\x29\x83\xd0\x92\xb6\xb2\x1e\x66\x1f\x11\x1f\xcb\x6e\xc0\x49\xdd\x35\xf7\xcd\x02\x4b\x26\x47\x7e\xca\x08\xf1\xdb\x41\xc8\xec\xfa\x3d\xfb\xf1\xb3\x7c\x4b\x1f\x3d\xbb\x81\xb1\x84\x31\xfe\xbe\x66\xfc\xe1\xff\x84\xb7\xeb\x5d\xad\x8a\x0c\x26\x14\x1d\xad\x47\xec\x67\xd2\x3f\xa5\xdf\xbb\x43\x24\x6f\x56\x38\xcb\x65\x7f\x03\x00\x00\xff\xff\xbd\xc5\x77\x79\xf1\x02\x00\x00" +var _runtimeSyntaxTexYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x92\x6f\x8f\x9b\x30\x0c\xc6\xdf\xf3\x29\x2c\xda\x9b\x5a\x9d\x40\x7b\x3b\x34\xad\xdb\xd7\x58\xcc\xa6\xfc\x31\x77\xd1\x48\x40\xc4\x9d\xba\x23\xfd\xee\x13\x81\x2b\xb7\x55\x48\xc7\x1b\xe0\xb1\xf3\x8b\xfd\xd8\x8d\x6d\x89\xff\xf4\x54\x01\xd3\x25\xcb\x0c\x31\x69\xae\x20\x03\x00\x98\x62\x5e\x3a\xaa\x20\x47\x2c\x99\x2e\xfb\x88\x58\x2a\xab\xd2\x5b\xb7\x61\x9f\x67\xd9\x70\x6e\x29\x54\x29\x7f\x07\xba\x6b\xbb\xc1\xbe\x10\xf0\x33\x81\x35\xe4\xd9\x36\x96\x86\x00\x5d\x03\xe3\xe7\x55\xf8\x72\x05\xe9\x0d\x88\xb7\x52\x9d\x18\xc5\x9b\x63\x33\x75\x7a\x02\xcb\x81\x53\x19\x63\x7e\x13\xc9\x9b\x24\x5d\x57\x69\x2e\x06\xc4\xfb\x58\xe2\x9e\x55\x6f\xb1\x76\xe0\xcf\x4e\xd1\x10\x16\xb2\xee\x7c\x60\xe9\xb9\x9c\xe5\x74\x58\x89\x8f\xc5\xa7\xfa\xf1\x80\x58\xce\x5f\xc7\xd3\x41\x88\x2a\xf4\x52\x53\x55\xd7\x87\x9e\xa3\x73\x51\xbb\x68\x7d\xa4\x4b\x24\x17\x55\x1f\x7b\x1d\x8d\x89\x5a\x47\x6f\xa2\xd7\x31\xf4\xc7\xe3\x09\x51\xe5\xcb\xad\x2d\x31\xa8\x41\xea\x5f\xc4\x01\x9e\xe5\xef\xd9\x5a\x43\x8d\x3c\xb7\x3c\xfb\x0d\xf2\x49\x5a\xbf\xd4\xb5\x44\x2a\xc8\xc5\x78\x45\x14\x88\xf5\xd2\x53\x01\xa1\x27\x6d\x65\x3b\xc5\x3e\x20\xde\x9a\xdd\x81\x93\x7a\xe8\x5e\x3b\x0b\x2c\x99\x1c\xf9\xd9\x23\xc4\xaf\x27\x21\x8b\x97\x6f\xc5\xf7\x9f\xf5\x63\xbe\x91\xf3\x90\xdf\x16\xc0\x4d\xf2\xea\x52\xfa\xbd\x37\x5f\xfc\x48\x05\x3c\xfc\x3f\x81\xfd\xf6\x2c\x37\x59\x13\x49\xd1\x93\xf5\x88\xe3\x92\xf4\xcf\x52\xbc\xce\x16\x91\xbc\xd9\xc8\x59\x2f\xfb\x1b\x00\x00\xff\xff\xd5\xe7\xc0\x26\x11\x03\x00\x00" func runtimeSyntaxTexYamlBytes() ([]byte, error) { return bindataRead( @@ -3932,6 +4016,7 @@ var _bindata = map[string]func() (*asset, error){ "runtime/syntax/git-rebase-todo.yaml": runtimeSyntaxGitRebaseTodoYaml, "runtime/syntax/glsl.yaml": runtimeSyntaxGlslYaml, "runtime/syntax/go.yaml": runtimeSyntaxGoYaml, + "runtime/syntax/godoc.yaml": runtimeSyntaxGodocYaml, "runtime/syntax/golo.yaml": runtimeSyntaxGoloYaml, "runtime/syntax/graphql.yaml": runtimeSyntaxGraphqlYaml, "runtime/syntax/groff.yaml": runtimeSyntaxGroffYaml, @@ -3944,6 +4029,7 @@ var _bindata = map[string]func() (*asset, error){ "runtime/syntax/inputrc.yaml": runtimeSyntaxInputrcYaml, "runtime/syntax/java.yaml": runtimeSyntaxJavaYaml, "runtime/syntax/javascript.yaml": runtimeSyntaxJavascriptYaml, + "runtime/syntax/jinja2.yaml": runtimeSyntaxJinja2Yaml, "runtime/syntax/json.yaml": runtimeSyntaxJsonYaml, "runtime/syntax/julia.yaml": runtimeSyntaxJuliaYaml, "runtime/syntax/keymap.yaml": runtimeSyntaxKeymapYaml, @@ -3958,6 +4044,7 @@ var _bindata = map[string]func() (*asset, error){ "runtime/syntax/makefile.yaml": runtimeSyntaxMakefileYaml, "runtime/syntax/man.yaml": runtimeSyntaxManYaml, "runtime/syntax/markdown.yaml": runtimeSyntaxMarkdownYaml, + "runtime/syntax/mc.yaml": runtimeSyntaxMcYaml, "runtime/syntax/micro.yaml": runtimeSyntaxMicroYaml, "runtime/syntax/mpdconf.yaml": runtimeSyntaxMpdconfYaml, "runtime/syntax/nanorc.yaml": runtimeSyntaxNanorcYaml, @@ -3979,6 +4066,7 @@ var _bindata = map[string]func() (*asset, error){ "runtime/syntax/privoxy-action.yaml": runtimeSyntaxPrivoxyActionYaml, "runtime/syntax/privoxy-config.yaml": runtimeSyntaxPrivoxyConfigYaml, "runtime/syntax/privoxy-filter.yaml": runtimeSyntaxPrivoxyFilterYaml, + "runtime/syntax/proto.yaml": runtimeSyntaxProtoYaml, "runtime/syntax/puppet.yaml": runtimeSyntaxPuppetYaml, "runtime/syntax/python2.yaml": runtimeSyntaxPython2Yaml, "runtime/syntax/python3.yaml": runtimeSyntaxPython3Yaml, @@ -4172,6 +4260,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ "git-rebase-todo.yaml": &bintree{runtimeSyntaxGitRebaseTodoYaml, map[string]*bintree{}}, "glsl.yaml": &bintree{runtimeSyntaxGlslYaml, map[string]*bintree{}}, "go.yaml": &bintree{runtimeSyntaxGoYaml, map[string]*bintree{}}, + "godoc.yaml": &bintree{runtimeSyntaxGodocYaml, map[string]*bintree{}}, "golo.yaml": &bintree{runtimeSyntaxGoloYaml, map[string]*bintree{}}, "graphql.yaml": &bintree{runtimeSyntaxGraphqlYaml, map[string]*bintree{}}, "groff.yaml": &bintree{runtimeSyntaxGroffYaml, map[string]*bintree{}}, @@ -4184,6 +4273,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ "inputrc.yaml": &bintree{runtimeSyntaxInputrcYaml, map[string]*bintree{}}, "java.yaml": &bintree{runtimeSyntaxJavaYaml, map[string]*bintree{}}, "javascript.yaml": &bintree{runtimeSyntaxJavascriptYaml, map[string]*bintree{}}, + "jinja2.yaml": &bintree{runtimeSyntaxJinja2Yaml, map[string]*bintree{}}, "json.yaml": &bintree{runtimeSyntaxJsonYaml, map[string]*bintree{}}, "julia.yaml": &bintree{runtimeSyntaxJuliaYaml, map[string]*bintree{}}, "keymap.yaml": &bintree{runtimeSyntaxKeymapYaml, map[string]*bintree{}}, @@ -4198,6 +4288,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ "makefile.yaml": &bintree{runtimeSyntaxMakefileYaml, map[string]*bintree{}}, "man.yaml": &bintree{runtimeSyntaxManYaml, map[string]*bintree{}}, "markdown.yaml": &bintree{runtimeSyntaxMarkdownYaml, map[string]*bintree{}}, + "mc.yaml": &bintree{runtimeSyntaxMcYaml, map[string]*bintree{}}, "micro.yaml": &bintree{runtimeSyntaxMicroYaml, map[string]*bintree{}}, "mpdconf.yaml": &bintree{runtimeSyntaxMpdconfYaml, map[string]*bintree{}}, "nanorc.yaml": &bintree{runtimeSyntaxNanorcYaml, map[string]*bintree{}}, @@ -4219,6 +4310,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ "privoxy-action.yaml": &bintree{runtimeSyntaxPrivoxyActionYaml, map[string]*bintree{}}, "privoxy-config.yaml": &bintree{runtimeSyntaxPrivoxyConfigYaml, map[string]*bintree{}}, "privoxy-filter.yaml": &bintree{runtimeSyntaxPrivoxyFilterYaml, map[string]*bintree{}}, + "proto.yaml": &bintree{runtimeSyntaxProtoYaml, map[string]*bintree{}}, "puppet.yaml": &bintree{runtimeSyntaxPuppetYaml, map[string]*bintree{}}, "python2.yaml": &bintree{runtimeSyntaxPython2Yaml, map[string]*bintree{}}, "python3.yaml": &bintree{runtimeSyntaxPython3Yaml, map[string]*bintree{}}, diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index 3f81a490..942c36fb 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -497,15 +497,16 @@ func (w *BufWindow) displayBuffer() { } if r == '\t' { - if s, ok := config.Colorscheme["indent-char"]; ok { - style = s + indentrunes := []rune(b.Settings["indentchar"].(string)) + // if empty indentchar settings, use space + if indentrunes == nil || len(indentrunes) == 0 { + indentrunes = []rune{' '} + } - indentrunes := []rune(b.Settings["indentchar"].(string)) - // if empty indentchar settings, use space - if indentrunes == nil || len(indentrunes) == 0 { - indentrunes = []rune{' '} - } - r = indentrunes[0] + r = indentrunes[0] + if s, ok := config.Colorscheme["indent-char"]; ok && r != ' ' { + fg, _, _ := s.Decompose() + style = style.Foreground(fg) } } diff --git a/runtime/colorschemes/twilight.micro b/runtime/colorschemes/twilight.micro index b6a3eba7..89591ccb 100644 --- a/runtime/colorschemes/twilight.micro +++ b/runtime/colorschemes/twilight.micro @@ -16,7 +16,8 @@ color-link identifier "#9B703F" color-link identifier.class "#DAD085" color-link identifier.var "#7587A6" color-link indent-char "#515151" -color-link line-number "#868686" +color-link line-number "#868686,#1B1B1B" +color-link current-line-number "#868686,#141414" color-link preproc "#E0C589" color-link special "#E0C589" color-link statement "#CDA869" From a9bb1f35dae37270fa658f43bd5d976dc3c01d62 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 21 Dec 2019 22:20:49 -0500 Subject: [PATCH 177/231] Improve selection display --- internal/display/bufwindow.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index 942c36fb..65b0917b 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -613,6 +613,8 @@ func (w *BufWindow) displayBuffer() { } } + draw(' ', curStyle, false) + bloc.X = w.StartCol bloc.Y++ if bloc.Y >= b.LinesNum() { From c4d5d7c195e2947785d875913b3019cbea3a3353 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 21 Dec 2019 23:26:53 -0500 Subject: [PATCH 178/231] Better backup behavior --- cmd/micro/micro.go | 4 ++++ internal/buffer/backup.go | 12 +++++++----- internal/buffer/buffer.go | 5 +++-- runtime/help/options.md | 11 +++++++++++ 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 53c88bc5..c01a063f 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -190,6 +190,10 @@ func main() { if err := recover(); err != nil { screen.Screen.Fini() fmt.Println("Micro encountered an error:", err) + // backup all open buffers + for _, b := range buffer.OpenBuffers { + b.Backup(false) + } // Print the stack trace too fmt.Print(errors.Wrap(err, 2).ErrorStack()) os.Exit(1) diff --git a/internal/buffer/backup.go b/internal/buffer/backup.go index 6f6978bd..32e1b63c 100644 --- a/internal/buffer/backup.go +++ b/internal/buffer/backup.go @@ -25,15 +25,17 @@ The backup was created at %s. Options: [r]ecover, [i]gnore: ` // Backup saves the current buffer to ConfigDir/backups -func (b *Buffer) Backup() error { +func (b *Buffer) Backup(checkTime bool) error { if !b.Settings["backup"].(bool) { return nil } - sub := time.Now().Sub(b.lastbackup) - if sub < time.Duration(backup_time)*time.Millisecond { - log.Println("Backup event but not enough time has passed", sub) - return nil + if checkTime { + sub := time.Now().Sub(b.lastbackup) + if sub < time.Duration(backup_time)*time.Millisecond { + log.Println("Backup event but not enough time has passed", sub) + return nil + } } b.lastbackup = time.Now() diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index b85677b8..e518c7d2 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -217,6 +217,7 @@ func NewBuffer(r io.Reader, size int64, path string, startcursor Loc, btype BufT if choice%2 == 0 { // recover b.LineArray = NewLineArray(uint64(size), FFAuto, backup) + b.isModified = true } else if choice%2 == 1 { // delete os.Remove(backupfile) @@ -334,7 +335,7 @@ func (b *Buffer) Insert(start Loc, text string) { b.EventHandler.active = b.curCursor b.EventHandler.Insert(start, text) - go b.Backup() + go b.Backup(true) } } @@ -344,7 +345,7 @@ func (b *Buffer) Remove(start, end Loc) { b.EventHandler.active = b.curCursor b.EventHandler.Remove(start, end) - go b.Backup() + go b.Backup(true) } } diff --git a/runtime/help/options.md b/runtime/help/options.md index 6afe0081..9670f940 100644 --- a/runtime/help/options.md +++ b/runtime/help/options.md @@ -22,6 +22,17 @@ Here are the options that you can set: default value: `0` +* `backup`: micro will automatically keep backups of all open buffers. Backups + are stored in `~/.config/micro/backups` and are removed when the buffer is + closed cleanly. In the case of a system crash or a micro crash, the contents + of the buffer can be recovered automatically by opening the file that + was being edited before the crash, or manually by searching for the backup + in the backup directory. Backups are made in the background when a buffer is + modified and the latest backup is more than 8 seconds old, or when micro + detects a crash. It is highly recommended that you leave this feature enabled. + + default value: `true` + * `basename`: in the infobar, show only the basename of the file being edited rather than the full path. From fc706bc404042e4733f4008bcb627f795fea2e81 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 22 Dec 2019 13:43:29 -0500 Subject: [PATCH 179/231] No backups for no name files --- cmd/micro/micro.go | 9 ++++++++- internal/action/actions.go | 6 +++--- internal/action/termpane.go | 4 ++-- internal/buffer/backup.go | 4 ++-- internal/buffer/buffer.go | 2 +- internal/config/runtime.go | 2 +- internal/info/infobuffer.go | 2 +- 7 files changed, 18 insertions(+), 11 deletions(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index c01a063f..94ea6383 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -70,7 +70,7 @@ func InitFlags() { // If -options was passed var keys []string m := config.DefaultAllSettings() - for k, _ := range m { + for k := range m { keys = append(keys, k) } sort.Strings(keys) @@ -134,6 +134,13 @@ func LoadInput() []*buffer.Buffer { } func main() { + defer os.Exit(0) + + // runtime.SetCPUProfileRate(400) + // f, _ := os.Create("micro.prof") + // pprof.StartCPUProfile(f) + // defer pprof.StopCPUProfile() + var err error InitLog() diff --git a/internal/action/actions.go b/internal/action/actions.go index a24adc6b..6d83ae4c 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -1,8 +1,8 @@ package action import ( - "os" "regexp" + "runtime" "strings" "time" "unicode/utf8" @@ -1167,7 +1167,7 @@ func (h *BufPane) Quit() bool { } else { screen.Screen.Fini() InfoBar.Close() - os.Exit(0) + runtime.Goexit() } } if h.Buf.Modified() { @@ -1207,7 +1207,7 @@ func (h *BufPane) QuitAll() bool { } screen.Screen.Fini() InfoBar.Close() - os.Exit(0) + runtime.Goexit() } if anyModified { diff --git a/internal/action/termpane.go b/internal/action/termpane.go index 779f473d..b5a2da52 100644 --- a/internal/action/termpane.go +++ b/internal/action/termpane.go @@ -1,7 +1,7 @@ package action import ( - "os" + "runtime" "github.com/zyedidia/clipboard" "github.com/zyedidia/micro/internal/display" @@ -47,7 +47,7 @@ func (t *TermPane) Quit() { } else { screen.Screen.Fini() InfoBar.Close() - os.Exit(0) + runtime.Goexit() } } diff --git a/internal/buffer/backup.go b/internal/buffer/backup.go index 32e1b63c..5b87e906 100644 --- a/internal/buffer/backup.go +++ b/internal/buffer/backup.go @@ -26,7 +26,7 @@ Options: [r]ecover, [i]gnore: ` // Backup saves the current buffer to ConfigDir/backups func (b *Buffer) Backup(checkTime bool) error { - if !b.Settings["backup"].(bool) { + if !b.Settings["backup"].(bool) || b.Path == "" { return nil } @@ -79,7 +79,7 @@ func (b *Buffer) Backup(checkTime bool) error { // RemoveBackup removes any backup file associated with this buffer func (b *Buffer) RemoveBackup() { - if !b.Settings["backup"].(bool) { + if !b.Settings["backup"].(bool) || b.Path == "" { return } f := config.ConfigDir + "/backups/" + util.EscapePath(b.AbsPath) diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index e518c7d2..2b20685a 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -204,7 +204,7 @@ func NewBuffer(r io.Reader, size int64, path string, startcursor Loc, btype BufT b.SharedBuffer = new(SharedBuffer) b.Type = btype - if b.Settings["backup"].(bool) { + if b.Settings["backup"].(bool) && len(path) > 0 { backupfile := config.ConfigDir + "/backups/" + EscapePath(absPath) if info, err := os.Stat(backupfile); err == nil { backup, err := os.Open(backupfile) diff --git a/internal/config/runtime.go b/internal/config/runtime.go index 67e282ec..e1d0deb8 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -1008,7 +1008,7 @@ func runtimeHelpKeybindingsMd() (*asset, error) { return a, nil } -var _runtimeHelpOptionsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\x5f\x8f\xe4\x36\x72\x7f\x1e\x7d\x8a\xc2\x78\x81\xe9\x76\x7a\x7a\x8c\x3b\x3f\x1c\xfa\xe5\x60\x7b\x93\xdd\xc5\xc5\xde\xe0\x76\x2f\xf1\x21\x17\x9c\x28\xa9\xd4\xe2\x0d\x45\x2a\x24\xd5\xbd\xbd\x86\xf3\xd9\x83\xaa\x22\x25\x75\x6f\xcf\xcc\x05\xc8\xf9\xc1\x3b\x2d\x91\xc5\xfa\xfb\xab\x3f\xd4\x57\xf0\x7e\x88\xda\xd9\x50\x14\x3f\xea\xda\x3b\x08\xd1\x79\x0c\xa0\x8c\x01\xd7\x42\xec\x10\xc6\x80\x1e\x6a\x67\x5b\xbd\x1f\xbd\xa2\xc5\xa0\x2d\xe8\x18\x2e\x1e\x36\xda\x63\x1d\x9d\x3f\x6d\x33\xad\x31\x60\x60\x12\xe5\xab\x9f\x5f\xbf\xf9\xeb\x0f\xef\x7f\xfa\x97\x77\x6f\xfe\xfa\xf6\xfd\x8f\xff\xfc\xd0\xd3\x82\x12\x94\xbc\x7f\x8a\x10\x7c\x17\x60\x40\x5f\xd0\x9a\x9f\x5f\xbf\x81\x30\x60\xbd\x01\xdd\x7e\x49\xb0\x04\x1d\xc0\xba\x08\x01\xe3\x06\xca\xff\x79\xd8\x0a\xcd\x7c\x90\x0e\xc4\x4d\x43\x07\x16\xf3\x89\x67\x3c\xbf\x45\x8f\xa0\x3c\x32\x47\x4e\xb4\x02\xb1\x53\x11\x4e\x6e\x84\x5a\x59\xa2\xbd\x2b\x8a\xaf\xa1\x54\x63\x74\xda\x36\x68\x63\xb9\x83\x63\x87\x16\x6a\x8f\x2a\x6a\xbb\x07\x05\x16\x8f\x60\xb4\xc5\x0d\x9d\xc8\xc4\x82\xea\x11\x64\xbd\x48\x98\xc4\x2e\x00\x60\xf0\x78\xd0\x6e\x0c\xbc\x65\x5b\x14\x37\x0d\xb6\x6a\x34\x11\x0e\xca\x8c\xb8\x83\x32\xfa\x11\xcb\xe9\xd4\xa0\x0e\x58\xee\x80\xa5\x82\xa3\x36\x06\xe8\x09\x53\xab\xc6\xb6\x45\x0f\x78\x40\x7f\x82\xd2\x96\x10\xb0\x76\xb6\x09\x40\xfb\x7a\x15\x75\xad\x8c\x39\xd1\x99\xab\x63\x47\xb2\xd2\x1a\x2d\x9c\xf0\x61\xd9\xe0\x22\xfb\x7a\x0b\x62\x45\x65\x42\x3a\xea\x0b\x42\x7c\xb6\xb2\x0d\xfc\xf7\xa8\xa3\x28\x82\x74\x85\x9f\xe8\x97\x8e\x9d\x1b\x23\xa8\xf0\xa8\xed\x7e\x0b\xdf\x23\xd4\xca\x63\x3b\x1a\x59\x38\x06\x52\x57\xec\x74\x20\x4a\x2d\xaa\x38\x7a\xdc\x40\x85\xb5\x22\xbd\x11\x9d\x5e\xef\xbb\x08\xaa\xae\x35\xab\xce\x98\x53\x3a\x11\x5a\x6d\x70\x03\xee\x80\xfe\xe8\x35\xeb\xfd\xd8\xa9\x48\x84\x8e\xa2\x5b\x8f\x50\x61\xeb\x3c\x6e\xe1\x5d\xfb\x94\x88\x24\x7d\xf9\x4d\x49\x4f\xec\x42\xa5\x44\x86\x5c\x29\xeb\xfb\x9a\x55\xbe\x11\x93\x54\x2a\xa0\x55\x3d\x99\x44\x5b\xa6\xac\x6d\xeb\x2a\xe5\x37\x10\x3a\x77\x04\x67\xcd\x49\x8c\x93\x16\x66\x06\x48\x00\xa8\x90\x38\xc7\x46\x47\x6c\xe8\x50\xaf\x88\x73\xf2\x39\xa1\xd5\x8e\xc6\xc0\xa0\x62\xb7\x2d\xe8\x35\x5c\x32\xd1\x2a\x13\x92\x6f\xd4\xce\x38\x5f\x3b\x33\xf6\x96\x78\x69\x59\xb1\x8b\x98\x80\xe8\xe0\x9b\x0d\xb0\x5d\x8c\x81\x46\x87\xc1\xa8\x13\x28\x90\x3d\xa0\x22\x9d\x58\x00\x87\x98\x6e\x35\x36\xe9\xcd\x16\x3e\x26\x4a\x63\x60\xe3\xe9\x96\x6d\x73\x54\x36\xe6\xcd\xbf\xfb\x86\xc8\x57\x08\x9d\xde\x77\x86\x8c\xc6\xf2\x30\x29\x65\xa0\x75\x1e\xf0\x93\xea\x07\xf3\x9c\x2a\x59\x82\x50\x77\xc8\xda\x34\x4e\x35\x19\x1b\xa6\xe7\x02\x4e\x0d\xa9\x9a\xf4\xf1\x6a\x25\x51\xfc\x5a\xfb\xf5\xc3\x62\x59\x78\x28\xc5\xbe\xe5\x96\x8d\xba\x11\x11\x02\x46\xf6\x14\x32\xfa\xde\xb8\x4a\x19\x36\x4f\x79\x8d\xa7\xf4\xbb\x2c\x8a\x9b\x9f\x5c\x44\x81\x01\xe2\x26\x2f\x5c\x1e\x07\xab\xf4\x74\x03\xc1\x19\xe5\xf5\x67\x6c\x36\x1c\x16\xd3\xcf\xfb\x58\xaf\x8b\x1b\x02\x17\xb2\x87\x71\xb5\x8a\x22\xc7\x24\xc1\xec\xf9\xb1\xc3\x13\xe3\x10\xf6\x15\x36\x8d\xac\xa3\xb3\xc5\x43\x2b\x6d\x15\xe3\xd5\xcd\xc7\x0b\xed\x10\x44\x55\x08\x01\x0d\xd6\x44\xbe\xf5\xae\x67\x20\xcf\x0e\x17\x32\xa5\xe2\xe6\x02\x20\xcf\xd5\xb7\x44\x60\xc1\x80\xda\x91\x9c\xd5\x69\x92\x9f\xa2\x1b\x62\xe7\x11\x8b\x9b\xe5\xde\x5d\x51\xdc\xfc\x39\xc1\xa5\x47\xd5\x40\xef\x08\x55\x2b\x42\x02\x3e\xe9\x2e\x9c\xeb\x2e\x71\x94\xcc\x5f\x42\x87\x66\x80\xe8\x06\x5d\x17\x37\xab\x92\x7f\xa5\x57\xeb\xad\xf8\xc9\xe8\x83\xf3\x84\x96\xe5\x6e\x76\x38\x26\x42\x0f\x67\x53\xc9\x42\x32\xb7\x64\x2c\x05\x8d\x26\x84\x44\x9b\xcc\xc7\x50\x38\xb9\x18\x2d\x6c\xb0\xd5\x16\x1b\x12\xf4\xd2\xf5\xc8\xe7\xc9\x28\x0c\x5b\xeb\xe7\x81\x1a\x6d\xed\x1a\x6d\xf7\xe5\x8e\xc9\xe4\x9f\x14\x24\x6e\x40\x2b\xae\x41\x40\x26\x46\x21\x5d\x6e\xe1\xc3\x38\x0c\xce\x93\xdd\xf2\x7a\x06\x46\x3a\xd3\xe8\x40\xcf\x55\x84\x2e\xc6\x21\xec\x1e\x1e\x8e\xc7\xe3\xf6\xf8\xdb\xad\xf3\xfb\x87\x8f\x7f\x7c\xc8\x1b\x1e\x9e\xc0\x89\x31\xb6\xf7\xbf\x4b\xac\xb9\xd6\xe2\x31\x69\x6f\x91\x45\xce\xa0\x1d\x54\xd3\x48\x22\x13\x8d\xba\xc9\x83\xae\xc9\xbd\x40\xa1\x56\x85\xd8\x68\x1f\x4f\x2c\x39\x2b\x34\xa2\xef\xb5\x25\x29\xc9\x2e\x8f\xda\x36\x04\x81\xca\xec\x9d\xd7\xb1\xeb\x13\x0f\x52\x29\xb8\x79\x3d\xe8\x96\xa5\xcf\x59\x4d\x07\xe8\x5d\x23\xc0\xe4\x3c\x45\xd1\x16\xfe\x83\x60\x7b\x71\xa6\x98\x7a\x93\x48\xfe\x6d\x0c\x51\xe8\x2a\xa2\x54\x39\x67\x50\x59\x28\x33\x99\x52\x3c\x45\x80\x81\xce\x16\x03\x52\x6e\x0e\x6e\xce\xd1\x5c\xfd\xf4\xea\x91\xe8\x58\xc6\xea\x2d\x91\xcb\xa0\x48\xa7\x6f\xa0\x1a\x63\x8e\x3e\x6d\x55\x5d\x53\x25\x23\x99\xe7\x92\xbd\xb6\xdd\x5c\x4b\x37\x9d\x0a\x5d\x76\x5a\x76\xd0\x24\xb6\xda\x2b\x6d\x43\x04\x25\x2b\x72\xf6\xf2\x7a\xaf\x2d\x21\x2b\x65\x91\x15\xd7\x1e\xd8\x48\x5a\x15\x14\xcf\xfb\x29\x1b\x12\x94\x62\xb3\x9e\x81\x5c\x42\x32\x71\xc9\xbc\xbb\x8a\x6b\x10\x73\x92\x77\x1e\x83\x1b\x7d\xcd\x84\xb4\x8d\x68\x83\x3e\x60\xda\x3f\x67\x4e\xce\x6d\x84\xed\x03\xba\xc1\x20\x1c\x3b\x47\x21\x4f\xfe\x43\x89\x3e\x05\x7d\xa7\x0e\xda\xee\xd9\x96\xf9\xc4\xc9\x90\x21\xaa\x38\x86\xe7\x63\x89\x44\x6c\x9d\xef\x55\x7c\xc9\xa7\xd8\x57\xd1\x72\xe4\x2c\x5d\x9b\x30\x95\xd8\x4c\x9a\x61\x37\x86\x3f\xfd\xf4\xee\xe7\xf3\x1d\xc4\x32\xfb\x4c\xf9\x17\x5b\xc2\x8a\xde\xb5\x88\xcd\x1a\xb8\x58\x52\x01\x1a\x17\xbe\xd8\x41\x04\xcb\xbf\x78\xde\x51\x2b\xef\xb5\xda\x93\xfa\xe2\xe8\x2d\xfc\x13\x4c\x34\x48\x77\x08\xf1\xe8\x60\x70\x21\xe8\xca\xa4\x72\x24\x24\xc6\x26\xbd\xe6\x88\x2f\x47\xab\x3f\x95\x0c\x14\x65\xe3\x42\x29\x04\x66\x5d\x88\x64\x15\x5e\xc4\x2d\xa9\x86\xa1\x7f\x95\x6b\x31\x22\x98\x30\x87\xca\xb2\xc0\x19\x90\xe8\xac\x99\x78\xaa\x03\x28\xa8\x04\x87\xc5\x24\x52\xbe\x92\x67\xc4\x33\x9b\x13\xb5\x8b\x32\xc0\x8d\xa6\x01\xa3\x1f\x19\x26\xea\x4e\xd9\x3d\xce\x58\x9c\x35\x45\xe8\xda\x4e\x10\x1a\xa2\xf2\x52\x2b\x73\xa5\x85\xc7\x27\xa1\x85\xb5\x30\xb9\x41\x3c\x0d\x84\x5a\x01\x63\x98\x00\x89\x9e\x65\xeb\x5e\x04\xcf\xf6\x32\xed\xb3\xb1\x28\xf7\x3e\x9d\xf8\x59\xdc\xeb\xba\x25\x94\x68\x70\x10\x91\xb2\xba\x38\x00\x49\xae\x4e\x1d\xb0\xb8\x21\x4d\x33\xbb\x7a\x6f\x9d\xc7\x5a\x05\x62\x78\x40\x4f\x56\x03\xfa\x79\xaf\x6d\xa0\x78\x8a\xfa\x40\x99\x5a\xf9\xba\xc3\xab\x11\xb0\x40\x55\xe9\x1c\xea\x4e\xf9\xa5\xf4\xcb\x7e\x82\xde\xa9\x3a\xa2\xbf\x46\x09\x4a\x58\x85\x41\xd5\xb8\x4e\xd4\xb8\x40\x2d\x77\x80\x56\x55\x26\x75\x68\x6c\xae\x94\x38\x2b\x17\xa3\xeb\x33\xd8\x10\xe4\x39\x2f\x51\x00\x3d\x86\xa0\xf6\x38\xf9\xfe\xe0\x09\x1f\x9a\x2f\xb0\xe1\xc5\x02\x6b\x0e\xf0\x47\xc4\xe1\xcb\x7e\x4a\xba\x83\xf9\xf9\x06\x8e\x9d\x8e\xc8\x72\xd0\x01\x8a\x0b\x23\x32\xfc\xc9\x8d\x72\xbc\xb8\xba\x74\x90\x33\x44\xe8\x76\xee\x4b\x7a\x77\x98\xb2\x99\xc5\x4f\x51\xa4\x9e\x1a\x15\x7b\x02\xb2\x8e\x97\x7e\x18\x80\xd7\x2d\x8e\xe5\x7c\x41\x88\x2a\x87\x87\x8e\x7d\xbf\xa2\xa2\xd0\x20\x45\x5d\x24\x00\x94\x43\xbc\xd2\x46\xda\x92\xbc\x9d\xd3\xc6\xf7\x53\x05\xc5\x69\x60\x21\xe0\x85\x7c\x99\xa4\x6e\x67\xf3\x30\x98\x63\x1b\x01\xfb\x21\x9e\x5e\x70\x9a\x47\x3c\xf5\x68\xc7\x72\x37\xd5\xfa\x2c\xb5\xb2\xee\x3e\xc4\x93\x41\x78\xc4\x13\xd0\x8a\xeb\x56\x0f\xb5\x47\xb4\x5b\xa0\xea\x57\x54\xa1\x22\x7c\x74\xfb\xbd\xc1\x3f\xe0\xe9\x47\xda\xa7\x03\x54\x6e\xb4\x2c\x76\xf9\x9d\x89\xf7\xfb\x72\x59\x21\x12\xbc\xe4\x26\x64\x86\x19\x6d\xb3\x62\x67\xa4\xd9\xc2\x47\x47\x4b\xc8\x1b\x79\xcb\x06\x82\xee\x07\x73\x22\x72\x99\x32\x1d\xf2\x27\x5b\x69\xdb\xfc\x01\xaf\xbb\xd4\x42\xf8\x5e\xc5\xba\xab\xbc\xaa\x29\xfc\x46\xdb\x20\xd7\x8b\xc0\x8f\xc9\x2a\xfc\x4a\xc0\xf7\x6e\xb5\xbe\xdb\xc0\xdd\x2f\xbf\xd2\xff\xff\xf3\xbf\xee\xa6\x2c\x9a\xea\x47\xce\x81\x5c\x42\x2a\xd9\x76\x16\x6c\xd7\xaa\xad\xd9\xb5\xfb\xc7\x41\x11\x20\x05\x69\xc9\xa4\x6d\x65\x6a\x03\x5a\xc1\x5c\xc5\xfd\x9d\xa8\xb7\x71\x28\xfd\x1a\x03\xf5\x66\x06\x98\x5a\x59\xeb\xb8\xbb\xa5\xf2\x5e\x1d\xa8\x42\x9d\x9b\x05\x90\x43\xa6\xa2\x5d\x23\xe5\x2a\x7b\x97\xe8\x9c\xc7\xa6\x21\xf8\xe0\xe4\xc8\xa9\xe6\x0c\xe1\xa4\x8e\x78\x8a\xa4\xb6\x10\xc6\xba\x03\x05\x41\xc7\x91\x71\xe7\xe5\xb6\xb4\x77\x23\x43\xe0\xb1\x43\x69\x6d\x5d\x42\x1d\xe0\x37\x10\xa4\xe8\x4d\xb5\xdc\xd9\xb3\xe4\x37\xb4\xb8\xd9\x48\xe2\x19\x99\x4d\xe2\x4f\xc2\x5b\x99\x19\xab\xd9\x77\x1c\x15\x19\x18\x42\xa2\x84\x07\x52\x3e\x45\x56\xdd\xe5\xfa\x4c\xd2\x17\x5b\x75\xd1\xc8\x52\xee\x72\xc3\x49\x5a\xa6\xb3\x03\xa8\xfc\xa2\x3e\xc6\xb5\xf2\x52\x0a\x8b\x95\x6e\x79\xfa\x00\x21\x74\xe4\x46\x44\x2f\xb5\xb8\x67\x8d\xdc\x4c\xa7\x23\xdc\x10\xe6\x12\x02\x49\x26\xaa\x8d\x1e\x2a\xa7\x7c\xc3\x01\x33\x59\x26\xfb\xc2\x0b\x9d\x86\xef\x33\xd2\x1c\xc3\x73\x05\x7d\xf4\xba\xbf\x06\x4a\x81\xa2\x1f\x9d\x79\x21\x9e\xfc\x68\xd0\x2f\xa0\x84\xa3\xc9\x8e\x7d\x85\xfe\x85\xf2\x8d\xbc\x55\x02\xa9\xdc\x11\x38\x52\x4f\x9b\x93\xc9\xa2\x49\x63\x68\x53\x21\x42\xd4\x3d\xce\x8e\x4f\x8f\x53\xac\x28\xcb\x23\x92\x61\x8c\xa0\x63\x9a\xf0\x4c\xc0\xce\x15\xce\xb4\x8b\x8b\xe6\x17\x24\x22\xbe\x3a\x1d\xa8\xc7\x5d\x32\x56\xbb\xbe\x27\x3b\xa4\x57\x50\x61\x3c\x22\x5a\xa8\x8d\x93\x84\x64\x1b\xf0\x78\x4f\xe7\xa5\xaa\x96\x55\xfe\x22\x12\xd0\x71\xa3\x6d\x5c\x4e\x6f\xf1\xb2\x94\xde\x10\x4c\x39\xee\x46\x38\xbe\xc9\x75\x41\xb5\x11\xbd\x4c\x1f\x8d\x0b\x79\xee\xc5\x83\x37\x97\xdd\x37\xbd\x61\xbe\xa4\xd0\x4b\xc3\xb1\x3c\xb4\xa4\xfc\xca\xc4\xb5\xdd\xbf\xa4\x94\xda\x3b\x63\xa4\x38\x98\x27\x44\xf2\x14\x2a\xe5\x5f\x0c\x77\x59\xda\x2b\xbf\xd7\xb6\xdc\x81\xea\xdd\x68\x63\xae\xcd\xc3\x95\x82\x31\x20\xf7\x09\x69\x8a\x58\xa1\x71\xc7\x5c\xa7\x8b\x67\x5c\xe3\xf8\xb7\xcb\xc3\xc2\x80\xd8\x5c\x39\x8b\x88\x0b\xe3\x84\xf2\xce\x62\xfe\xc9\xa0\x70\x8d\xec\x6f\x12\xd9\x5e\xf9\x38\xa8\x10\xb9\xd6\x94\x1c\x2f\x71\x45\x5d\xb1\x41\xd5\x9c\x87\x90\x18\x94\x36\xd0\xf3\x7e\x34\x51\x53\x37\xc4\x5c\xfc\x7e\x6a\x15\x25\x26\x63\xa4\xd4\x4d\xbc\x0d\x1e\x03\xfa\x03\x9e\xd5\xad\xcb\x92\xce\xe0\x01\xcd\x39\x6d\xc5\xb9\x73\xb4\xb2\x8c\x92\x80\x71\xf5\xe3\x0b\xf1\xe7\xda\x78\xf4\x6a\xb8\x94\x85\x9e\x65\x4d\x51\xee\xe1\xb9\xb7\x73\x60\x9c\xcc\x29\x5a\x1d\xa7\x96\x40\x4a\x81\x17\x5c\x67\x30\x3a\x4a\x09\x91\x7d\x5c\x41\xe7\xbc\xfe\xec\x6c\x54\x06\xf8\x3d\xb9\x77\x6a\x56\x37\x99\x1d\x1d\x09\x95\x73\x0b\xcb\x1e\x90\x2b\x84\xac\x16\xde\xfb\xfb\xe7\xc5\xa4\x25\x5e\xef\xbb\x38\x9f\x7e\xa0\x4a\xae\xfe\xfb\xcf\x16\x58\xe6\x39\x2c\x4f\x94\x52\x25\xf4\x7f\xe1\x82\x4b\x1a\xe9\xd0\x4c\xb9\x83\xd4\xab\x85\xe8\xc9\x7c\x3c\x5c\xd2\x6c\xdc\xdc\xb0\x50\x35\x77\x4f\x4d\xa7\xf4\xc3\x83\xf2\xf9\x58\x0e\xf2\x45\x85\xf4\x21\xcd\x52\x25\x23\xeb\x03\x86\x45\xfd\x39\x18\x55\x73\x6d\x15\x74\x83\x50\xbe\x5a\xad\xcb\x69\x07\x27\x93\x79\x93\xb6\xb5\x19\x1b\x36\x9e\x36\x32\xba\xde\x2c\x66\x22\x1b\x28\x79\x36\xb4\xe1\x81\x1c\xfd\xe3\x86\x48\xff\x50\xe1\x55\xa6\xc9\x07\xca\x53\xe9\x4e\xf9\xc5\xf2\x84\xa8\x1e\x11\x50\x73\xba\x57\x36\x83\x9c\xe3\x1f\xaa\x96\xeb\x0f\xc2\xb5\xa3\xf2\x8c\xe8\x44\xa5\xa5\xe8\x48\x93\xc0\x6b\x73\xfa\xa4\x2e\x2a\x59\xa7\x92\x93\xcb\xe7\xfa\x99\x32\xe4\xd5\x2a\x8b\xb8\x86\x57\xab\x2c\xe2\x7a\xf5\x8a\x7b\xfb\xf5\xe6\xd5\xaa\x76\x66\x4d\xef\xdc\x10\x77\xb9\x99\x5c\x33\xad\xcb\xff\xe6\x35\x62\xd3\xbc\x2b\x4f\xde\xd6\xff\x68\x07\x78\x4a\x44\x52\xff\xee\xac\x2e\x5f\xef\xe4\xea\x81\xde\x50\xf3\xbd\x81\xb3\x55\x6f\xd1\x0c\xeb\xdd\x55\x21\x23\x2f\xe0\x09\xec\x52\x9c\x34\x2c\x5c\xb6\x11\xf2\xe2\x99\xa6\xf1\x69\xcc\x58\x44\xcb\x58\xf7\x84\xdc\xf9\xc6\x41\x1a\xd1\x30\x0e\xe8\xf3\x9d\x23\x27\xe3\x2d\xbc\xa7\xd2\x30\x44\x08\xa7\x10\xb1\x0f\x53\x5b\x71\x1b\xc6\xc6\xdd\x42\x35\x72\x6d\xec\x2c\x7c\xff\xe1\x35\x05\x75\x2a\xf5\x6e\x1b\xa7\xc2\xf6\xf6\xac\xfe\x4d\xaf\xea\x31\x44\xd7\xeb\xcf\x52\x58\x4c\xd3\x2c\xbe\x22\x24\xf8\x48\x97\x5b\x8c\xf4\x3a\x76\x10\xc6\x6b\xb2\xd0\xf1\x49\x96\x93\x8d\xea\x53\xb9\x83\x38\x7a\x1b\x40\x7e\x82\x78\xae\x6b\xdb\xe7\x15\x11\x55\x45\x4d\x63\x2f\xed\xaf\x55\x07\xbd\xa7\x3a\x7c\x2e\xd0\x58\xbf\xb8\xd7\xd6\xf2\xe8\x21\xa7\x38\x15\x52\x7b\x28\xd7\x05\x51\x55\xdc\xb5\xae\x70\xbb\xdf\x4a\xaf\xcb\x25\xea\xb7\x0b\x4a\xce\xd6\xb8\x3e\xef\x08\x58\x70\x2e\x37\x95\x3d\x45\x6e\x8f\x64\xf6\x4a\x7c\x85\xe8\x64\x73\x1a\xae\xbe\x90\x05\x68\x87\xfe\x7c\x36\xa4\x89\xaa\x02\x7a\xc6\x0d\x5c\xba\x96\xb9\x42\xe4\xdb\x99\xc0\x74\xe4\x8e\x47\x77\x89\xf9\x45\x1d\xce\x82\x3e\xcf\x07\xfa\x3e\xea\x68\xd8\x6f\x79\xa6\x1f\xa6\x16\x44\xa6\xc7\x54\x8b\xf8\xa9\x3a\xbf\x0b\xc0\xcb\xa7\x76\x22\x60\xa4\xe6\x73\x2a\xc7\x39\xa5\x48\x25\xfa\x82\x0a\xc6\x80\x83\xd7\xbd\xf2\xa7\x12\x56\xd9\xa9\xda\xd1\x90\x33\x7c\x6d\xf5\xa7\xf5\x93\x1c\x5d\x8c\x2c\x13\x06\x24\x62\x8b\x3e\x21\xf7\x2a\x72\xcf\xc3\xb7\xd4\x09\x3a\x2b\x55\x3f\xee\x3d\x01\x64\x32\xf1\xd4\x51\xaa\xb6\xc5\x3a\xe6\xc4\x6a\x09\x96\x96\xad\x87\x4c\x5b\x7e\x88\xde\xdc\xff\xc0\x01\xc1\x7f\xfe\xfb\x33\x6e\x7b\x7f\x7f\x5f\x14\xff\x66\xc6\xbd\xce\x10\x1f\x76\x7c\xd7\x34\xf0\xb3\xc0\x37\x46\x12\x3b\x6a\xba\x08\x4c\x1e\x37\x37\x81\xce\x2f\xfa\x7e\xec\xb7\xf0\xf1\x6d\xc6\xfc\x42\x07\xea\xb8\xd3\xd4\x3e\x5d\x37\xa5\xab\x74\xbe\x48\x4d\xf3\x79\x39\x0f\x74\x0c\x68\x28\xce\xbe\xb3\xa7\x7c\x0e\x95\x9b\x64\xc8\xa4\x9d\x3c\xc8\xca\x26\xe6\x3a\x7b\x71\xb7\x01\xc5\xe5\xa5\x58\x1a\x1d\x86\xed\xdf\x82\xb3\x10\xdc\x86\x48\x21\xab\x72\x23\x0e\x74\xfe\xe1\x82\xf4\x2c\x89\x7e\x91\xeb\x8a\x69\x48\xf5\x8e\x2b\xf6\xbb\xb9\xfa\xe5\x54\x79\x85\x0e\x4b\x4b\xdc\x53\x43\x6b\x1d\x39\x49\xd1\xab\xba\xe3\xa9\x6c\x1a\x8d\xb0\x0b\xb0\x46\xce\x98\x4c\xf2\xf0\x1e\x48\x7b\xb6\x45\xf1\xd5\x57\xf0\x46\x26\x72\x64\x5d\xe9\x3c\xf3\xc6\xa2\xf8\xf3\xfc\x7d\x03\xed\x0e\x33\xd1\x9c\xc8\x65\x9c\x67\x4e\x64\x31\xde\x6d\x4e\x5b\xf8\x57\xf9\x03\x7a\x54\xf9\x4b\x09\x72\xda\x3c\x70\x3d\xf2\x0c\x62\xa9\xe9\xcb\xcf\x32\xce\x15\x5c\xa6\x91\x91\x8a\xd3\x35\x35\xc5\x4f\x91\xc2\x51\xdb\xab\x33\xde\x0f\xe9\xb4\xb9\xd4\x98\x78\x4d\xdf\x36\x4c\x03\x37\x6a\x21\xe5\x93\x09\x91\x73\x6a\xc0\x2c\x7b\xae\x50\xa4\x7e\xf6\xe3\x7c\x21\x29\xf7\xd1\x8b\x56\x6d\x31\xd8\xdc\x24\x86\x71\x31\x9e\x5e\xac\x64\x3d\x15\xb4\x90\x07\x5c\x74\xe8\xcc\x64\x52\xa2\x7c\x23\x52\x06\x8c\xfc\xa0\x5c\xc2\x1c\x3d\x2d\xb7\x45\xf1\x2e\xdd\x90\x5e\x28\x6b\x1a\x3d\x93\xe5\xf8\x1b\x0d\xea\x8d\xe9\x94\xfc\xed\x4a\x3a\x83\x80\x4c\x72\xec\x89\x3f\x37\x60\x8b\x16\x8a\x25\xe1\xba\x6c\x1a\xa4\x6f\x81\xbf\x81\xd1\x72\xd5\x25\xe3\x8c\x34\x3d\xe9\x54\xb8\x4c\x08\xa9\x8c\x21\xd5\xc9\x3d\x26\x7e\xaa\x71\x88\xf0\xc6\x15\xfc\x5b\xd4\x33\xe5\x04\xf8\xf6\xfa\xf2\x3f\x8e\xd5\x49\x9e\xec\x8a\xa2\x2c\x4b\x92\xae\xf8\xa5\xb8\xb9\x6d\xe3\x6e\xef\x6e\x77\xf0\x4b\x71\x73\x73\xbb\x3c\xfa\x76\x07\x0c\xb8\xc5\xcd\xaf\x1b\x59\xe7\xc7\xea\xb4\x5c\xa9\x3f\xe3\xed\x0e\x7e\x93\x16\x5c\xec\x25\x04\xcb\x8f\x65\xe1\xb7\xc5\xaf\x74\x72\x51\xbc\xf7\x14\x5e\xda\x28\x6f\x4e\x93\x6e\x79\x6a\x28\x31\x49\x2a\xbb\x64\xf3\xeb\xed\xdf\xc5\xe5\xd7\x5b\x5f\xfd\x3f\xb0\xf8\xbf\x01\x00\x00\xff\xff\x90\x75\xac\xf0\xb0\x25\x00\x00" +var _runtimeHelpOptionsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\x5f\x8f\xe4\x36\x72\x7f\x1e\x7d\x8a\xc2\x78\x81\x9d\x76\x7a\x7a\x8c\x3b\x3f\x18\xfd\x72\xf0\x9f\x64\xbd\xb8\xd8\x1b\x9c\xf7\x12\x1f\x72\xc1\x89\x92\x4a\x2d\xde\x50\xa4\x42\x52\xdd\xab\x35\x9c\xcf\x1e\x54\x15\x29\xa9\x7b\x7b\x66\x1c\x20\xe7\x07\xef\xb4\x44\x56\xb1\xfe\xff\xaa\xa8\xcf\xe0\xdd\x10\xb5\xb3\xa1\x28\x7e\xd0\xb5\x77\x10\xa2\xf3\x18\x40\x19\x03\xae\x85\xd8\x21\x8c\x01\x3d\xd4\xce\xb6\xfa\x30\x7a\x45\x8b\x41\x5b\xd0\x31\x5c\x3c\x6c\xb4\xc7\x3a\x3a\x3f\xed\x32\xad\x31\x60\x60\x12\xe5\xab\x9f\xbf\x7b\xf3\xb7\x6f\xdf\xfd\xf8\x2f\x6f\xdf\xfc\xed\xfb\x77\x3f\xfc\xf3\x43\x4f\x0b\x4a\x50\xf2\xfe\x29\x42\xf0\x75\x80\x01\x7d\x41\x6b\x7e\xfe\xee\x0d\x84\x01\xeb\x2d\xe8\xf6\x53\x82\x25\xe8\x00\xd6\x45\x08\x18\xb7\x50\xfe\xcf\xc3\x4e\x68\x66\x46\x3a\xd0\x69\x1a\x62\x58\x2c\x1c\xcf\xce\xfc\x3d\x7a\x04\xe5\x91\x4f\xe4\x44\x2b\x10\x3b\x15\x61\x72\x23\xd4\xca\x12\xed\x7d\x51\x7c\x0e\xa5\x1a\xa3\xd3\xb6\x41\x1b\xcb\x3d\x9c\x3a\xb4\x50\x7b\x54\x51\xdb\x03\x28\xb0\x78\x02\xa3\x2d\x6e\x89\x23\x13\x0b\xaa\x47\x90\xf5\x22\x61\x12\xbb\x00\x80\xc1\xe3\x51\xbb\x31\xf0\x96\x5d\x51\xdc\x34\xd8\xaa\xd1\x44\x38\x2a\x33\xe2\x1e\xca\xe8\x47\x2c\x67\xae\x41\x1d\xb1\xdc\x03\x4b\x05\x27\x6d\x0c\xd0\x13\xa6\x56\x8d\x6d\x8b\x1e\xf0\x88\x7e\x82\xd2\x96\x10\xb0\x76\xb6\x09\x40\xfb\x7a\x15\x75\xad\x8c\x99\x88\xe7\xdd\xa9\x23\x59\x69\x8d\x96\x93\x30\xb3\x6c\x70\x91\x7d\xb3\x03\xb1\xa2\x32\x21\xb1\xfa\x84\x10\xf3\x56\xb6\x81\xff\x1e\x75\x14\x45\x90\xae\xf0\x03\xfd\xd2\xb1\x73\x63\x04\x15\x1e\xb5\x3d\xec\xe0\x1b\x84\x5a\x79\x6c\x47\x23\x0b\xc7\x40\xea\x8a\x9d\x0e\x44\xa9\x45\x15\x47\x8f\x5b\xa8\xb0\x56\xa4\x37\xa2\xd3\xeb\x43\x17\x41\xd5\xb5\x66\xd5\x19\x33\x25\x8e\xd0\x6a\x83\x5b\x70\x47\xf4\x27\xaf\x59\xef\xa7\x4e\x45\x22\x74\x12\xdd\x7a\x84\x0a\x5b\xe7\x71\x07\x6f\xdb\xa7\x44\x24\xe9\xcb\x2f\x4a\x7a\x62\x57\x2a\x25\x32\xe4\x4a\x59\xdf\xd7\xac\xf2\x85\x98\xa4\x52\xf5\xe3\x38\x9c\x1b\xe4\x4c\x4b\xf0\x88\x38\x80\x2c\x0b\xc4\x9d\x03\x6b\x40\x9b\xcc\x15\x76\xf0\x8d\xbc\x24\xae\xe4\x7d\x1c\x80\x0d\x85\xd8\xa5\x17\x3f\x24\x32\x25\xab\x9c\xd6\x7a\xec\xdd\x11\x1b\x51\xe8\xca\x07\x44\xa7\xb5\x71\xe4\xf2\xb5\x41\x65\xcd\xb4\x83\xb7\xb2\xa6\x56\x81\xf5\xa0\x20\x4c\x21\x62\x0f\xb5\x57\xa1\x03\xe7\x41\x25\x31\xf8\xc1\x36\x47\x66\x44\x1b\x99\x5e\xd2\x5d\xe2\x41\x01\x51\xd1\x11\x6a\x32\x03\x85\xd6\x99\xdc\xd5\xc4\x62\x8a\x8d\x91\x0d\xc6\xc1\x94\x6d\x54\x21\xbd\xc2\x46\x47\x6c\x92\xa9\x84\xa1\xf0\x76\x1e\x7a\x65\xc7\x4c\x2a\xa0\xf2\x75\x47\x3b\x5a\xe7\xe5\x14\xac\x0b\xa2\xa6\xed\xea\xc1\x3a\x79\x24\xc5\xb2\xa6\x7a\xd5\xe0\x7a\xe5\xc1\xbb\xd1\x26\xc5\xa9\x73\xb5\xf5\xae\xd1\xad\x26\x81\x6c\xc3\xeb\x8d\x8a\x18\x62\x66\xa0\x03\xf4\x72\x58\x65\xe1\xab\x39\xc8\x9c\x69\xf8\xd4\xa7\xd9\x97\x88\x56\x83\x11\xeb\x18\x40\x89\x5c\x3b\x78\x1b\x89\x40\xa7\x0f\x9d\x99\x58\x77\x7d\x8f\xb6\xc1\x66\x49\x34\x06\x25\xa0\x75\xc8\x41\x01\x68\x55\x65\xb0\xd9\x15\x44\x12\x9e\x4e\x10\x95\x0a\x68\x55\x4f\x09\x22\x89\xaa\x6d\xeb\x2a\xe5\xb7\x10\x3a\x77\x02\x67\xcd\x94\x34\x20\x0b\xb3\x49\xd9\x3a\x6b\x8b\x10\x23\xaf\x28\x8e\x44\x4e\x5e\x34\x1a\x03\x83\x8a\xdd\x13\xe7\x68\x95\x09\xe9\x20\xb5\x33\xce\xd7\xce\x8c\xbd\xa5\xb3\xb4\x22\xce\x92\xa1\x21\x3a\xf8\x62\x0b\x9c\x25\x8c\x81\x46\x87\xc1\xa8\x89\xb4\xc4\x7b\x40\x45\xe2\x58\x00\x27\x7c\x31\x86\xbc\xd9\xc1\xfb\x44\x69\x0c\x9c\x4a\x74\xcb\x4a\x3b\x29\x1b\xf3\xe6\xaf\xbe\x20\xf2\x15\x8a\x96\x29\x85\xb0\x3c\x4c\x4a\x19\x76\x20\xfc\xa0\xfa\xc1\x3c\x17\xd8\x2c\x41\xa8\x3b\x64\x6d\x1a\xa7\x9a\x5c\xa9\xe6\xe7\xab\x48\x25\x7d\xbc\xba\x93\x58\xfd\x4e\xfb\xcd\xc3\x6a\x59\x78\x28\x25\xdb\x94\x3b\x76\x8b\xad\x88\x10\x30\x72\xde\xa2\x14\x74\x30\xae\x52\x86\xcd\x53\x5e\x3b\x53\xfa\x5d\x16\xc5\xcd\x8f\x2e\x4a\x1c\xf1\x69\xf2\xc2\x35\x3b\xb8\x4b\x4f\xb7\x10\x9c\x51\x5e\x7f\xc4\x66\xcb\xbe\x3c\xff\xbc\x8f\xf5\xa6\xb8\xa1\xb0\x20\x7b\x18\x57\xab\x28\x72\xcc\x12\x2c\x79\x38\x76\x38\x71\x04\x61\x5f\x61\xd3\xc8\x3a\xe2\x2d\xa9\xa2\xd2\x56\x71\xf5\xbc\x79\x7f\xa1\x9d\x94\x1f\x02\x1a\xac\x89\x7c\xeb\x5d\xcf\xd9\x2f\x3b\x5c\xc8\x94\x8a\x9b\xcb\x44\x77\xa6\xbe\x75\x48\x4b\x45\xaa\x1d\xc9\x59\x4d\xb3\xfc\x54\x6b\x20\x76\x1e\xb1\xb8\x59\xef\xdd\x17\xc5\xcd\x5f\x52\xf1\xf6\xa8\x1a\x89\x5c\x55\x51\x5d\x62\x4e\xaf\xc3\xb9\xee\xd2\x89\x92\xf9\x4b\xe8\xd0\x0c\x10\xdd\xa0\xeb\xe2\xe6\xae\xe4\x5f\xe9\xd5\x66\x27\x7e\x32\xfa\xe0\x3c\xd5\xee\x72\xbf\x38\x9c\xa4\x0d\x6d\x57\xa6\x92\x85\x64\x6e\xc1\x4f\x0a\x1a\x4d\x49\x07\x6d\x32\x1f\x17\xe6\xd9\xc5\x68\x61\x83\xad\xb6\x94\x1d\xa7\x4f\x5c\x8f\x7c\x9e\x8c\xc2\x45\x74\xf3\x3c\x6c\x40\x5b\xbb\x46\xdb\x43\xb9\x67\x32\xf9\x27\x05\x09\x17\x22\x76\x0d\xca\x39\x62\x14\xd2\xe5\x0e\x7e\x1a\x87\xc1\x79\xb2\x5b\x5e\x3f\x17\x28\xa3\x03\x3d\x57\x11\xba\x18\x87\xb0\x7f\x78\x38\x9d\x4e\xbb\xd3\xef\x77\xce\x1f\x1e\xde\xff\xe9\x21\x6f\x78\x78\x22\x4f\x8c\xb1\xbd\xff\x2a\x1d\xcd\xb5\x16\x4f\x49\x7b\x4f\x96\x50\xd5\x34\x02\xab\x44\xa3\x6e\xf6\xa0\x6b\x72\xaf\xb2\x50\xab\x42\x6c\xb4\x8f\x13\x4b\xce\x0a\x8d\xe8\x7b\x6d\x49\x4a\xb2\xcb\xa3\xb6\x8d\xd4\xe4\x83\xf3\x3a\x76\x7d\x3a\x83\xe0\x56\xb7\xac\x07\xdd\xb2\xf4\x4b\xa1\x58\xaa\x84\xf3\x14\x45\x3b\xf8\x0f\x4a\xfc\x2b\x9e\x62\xea\x6d\x22\xf9\xf7\x31\x44\xa1\xab\x88\x52\xe5\x1c\x55\x65\x28\x33\x99\x52\x3c\x45\x12\x03\xf1\x16\x03\x12\x52\x0c\x6e\x41\x8c\x8c\xc5\x7b\xf5\x48\x74\x2c\xe7\xea\x1d\x91\xcb\x49\x91\xb8\x6f\xa1\x1a\x63\x8e\x3e\x6d\x55\x5d\x13\xae\x16\x1c\x74\x79\xbc\xb6\xdd\x5e\x03\x3f\x1d\xe1\x81\xe4\xb4\xec\xa0\x49\x6c\x75\x50\xda\x86\x08\x4a\x56\x64\x2c\xe5\xf5\x41\x5b\xca\xac\x54\x45\xee\x18\x09\xaf\x30\x09\x8b\x2b\xfb\xa9\xee\x53\x2a\xc5\x66\xb3\x24\x72\x09\xc9\x74\x4a\x3e\xbb\xab\x18\x11\x9b\x49\xde\x79\x0c\x6e\xf4\x35\x4a\xad\x8f\x68\x83\x3e\x62\xda\xbf\xe0\x38\xae\x6d\x94\xdb\x07\x74\x83\x41\x38\x75\x8e\x42\x9e\xfc\x87\x60\x67\x0a\xfa\x4e\x1d\xb5\x3d\xb0\x2d\x33\xc7\xd9\x90\x21\xaa\x38\x86\xe7\x63\x89\x44\x6c\x9d\xef\x55\x7c\xc9\xa7\xd8\x57\xd1\x72\xe4\xac\x5d\x9b\x72\x6a\xc2\x30\x8c\x7b\xc9\x8d\xe1\xcf\x3f\xbe\xfd\xf9\x7c\x07\x1d\x99\x7d\xa6\xfc\xab\x2d\xe1\x8e\xde\xb5\x88\xcd\x06\x18\xba\xab\x00\x8d\x0b\x9f\xec\x20\x82\xe5\x5f\x3d\xef\xa8\x95\xf7\x5a\x1d\x48\x7d\x71\xf4\x16\xfe\x09\x66\x1a\xa4\x3b\x84\x78\x72\x30\xb8\x10\x74\x65\x12\x38\x0e\xe9\x60\xb3\x5e\x73\xc4\x97\xa3\xd5\x1f\x04\x75\x96\x8d\x0b\xa5\x10\x58\x74\x21\x92\x55\x78\x11\xb7\x02\x7e\xb0\xe1\x7e\x83\x3b\x03\x46\x91\x92\x73\xa8\x49\x08\x5c\x01\x89\xce\x86\x89\x27\x1c\x40\x41\x25\x79\x58\x4c\x22\xcd\x14\x79\x46\x3c\xb3\x39\x51\xbb\x80\x01\x6e\x34\x0d\x18\xfd\xc8\x69\xa2\xee\x94\x3d\xe0\x92\x8b\xb3\xa6\x28\xbb\xb6\x73\x0a\x0d\x51\x79\xe9\xdc\x18\xf7\xe3\xe9\xc9\xd4\xc2\x5a\x98\xdd\x20\x4e\x03\x65\xad\x80\x31\xcc\x09\x89\x9e\xcd\x08\xf5\x3c\x78\x76\x97\x65\x9f\x8d\x45\xb5\xf7\xe9\xc2\xcf\xe2\x5e\xd7\x2d\x65\x89\x06\x07\x11\x29\xab\x8b\x03\x90\xe4\xea\xd4\x11\x8b\x1b\xd2\x34\x1f\x57\x1f\xac\xf3\x48\xb8\xbf\xdc\x53\x3f\x4d\x56\xe3\x36\xe0\x5e\xdb\x40\xf1\x14\xf5\x11\x13\xc6\xc6\xab\x11\xb0\xca\xaa\xd2\xc7\xd6\x9d\xf2\x6b\xe9\xd7\xdd\x2d\xbd\x53\x75\x44\x7f\x8d\x12\x94\x70\x17\x06\x55\xe3\x26\x51\x63\x80\x5a\xee\x13\xc8\x0d\x8b\xb9\x52\xe1\xac\x5c\x8c\xae\xcf\xc9\x86\x52\x9e\xa0\x6c\x02\xf5\x18\x82\x3a\xe0\xec\xfb\x83\xa7\xfc\xd0\x7c\x92\x1b\x5e\x04\x58\x4b\x80\x53\xbb\xf6\x69\x77\x2f\xbd\xea\xf2\x7c\x0b\xa7\x4e\x47\x64\x39\x88\x81\x62\x60\x44\x86\x9f\xdc\x28\xec\xc5\xd5\x65\x9e\xb1\xa4\x08\xdd\x2e\x5d\x32\xb5\x6e\xb9\x9a\x59\xfc\x10\x45\xea\xb9\x6d\xb6\x13\x90\x75\xbc\x4c\x67\x00\x78\xdd\x8a\x2d\xd7\x0b\xca\xa8\xc2\x3c\x74\xec\xfb\x15\x81\x42\x83\x14\x75\xd1\xa5\xfe\x10\xa2\x57\xda\x48\x93\x9c\xb7\x73\xd9\xf8\x66\x46\x50\xd2\xec\x2d\x02\x5e\xc8\x97\x49\xea\x76\x31\x0f\x27\x73\x6c\x23\x60\x3f\xc4\xe9\x05\xa7\x79\xc4\xa9\x47\x3b\x96\xfb\x19\xeb\xb3\xd4\xca\xba\xfb\x10\x27\x83\xf0\x88\x13\xd0\x8a\xeb\x56\x0f\xb5\x47\xb4\x3b\x20\xf4\x2b\xaa\x50\x11\xde\xbb\xc3\xc1\xe0\x1f\x71\xfa\x81\xf6\xe9\x00\x15\xb7\x74\x54\x3b\xbf\x36\xf1\xfe\x50\xae\x11\xa2\xf4\x72\x52\x71\x96\x34\xa3\x6d\x56\xec\x92\x69\x76\xf0\xde\xd1\x12\xf2\x46\xde\xb2\x85\xa0\xfb\x41\xfa\xd0\x4c\x99\x98\xfc\xd9\x56\xda\x36\x7f\xc4\xeb\x2e\xb5\x12\xbe\x57\xb1\xee\x2a\xaf\x6a\x0a\xbf\xd1\x36\xc8\x78\x11\xf8\x31\x59\x85\x5f\x49\xf2\x7d\x7d\xb7\x79\xbd\x85\xd7\xbf\xfc\x4a\xff\xff\xcf\xff\x7a\xbd\x74\xf6\x82\x1f\xb9\x06\x32\x84\x54\xb2\xed\x2c\xd8\x9e\xef\x0e\xfb\xc7\x41\x51\x42\x0a\xd2\x92\xc9\x10\x85\xa9\x0d\x68\x25\xe7\x2a\xee\xef\x44\xbd\x8d\x43\xe9\xd7\x38\x51\x6f\x97\x04\x53\x2b\x6b\x1d\xf7\xf1\x04\xef\xd5\x91\xfb\xf7\xb9\x59\x00\x61\x32\x83\x76\x8d\x54\xab\xec\xeb\x44\xe7\x3c\x36\x0d\xa5\x8f\xb9\x59\x3e\xcf\x70\x82\x23\x9e\x22\xa9\x2d\x84\xb1\xee\x40\x41\xd0\x71\xe4\xbc\xf3\x72\x5b\xda\xbb\x91\x53\xe0\xa9\x43\x69\x6d\x5d\xca\x3a\xc0\x6f\x20\x08\xe8\x4d\x58\xee\xec\x59\xf2\x1b\xee\xc3\xb7\x52\x78\x64\x38\x41\xe7\x93\xf0\x56\x66\xc9\xd5\xec\x3b\x8e\x40\x06\x86\x90\x28\xe1\x91\x94\x4f\x91\x55\x77\x19\x9f\x49\xf9\x62\xab\xae\x1a\x59\xaa\x5d\x6e\x98\xa4\x65\x3a\x63\x40\xf0\x8b\xfa\x18\xd7\xca\x4b\x01\x16\x77\xba\xe5\x59\x18\x84\xd0\x91\x1b\x11\xbd\xd4\xe2\x9e\x35\x72\x0b\x9d\x8e\xf2\x86\x1c\x2e\x65\x20\xa9\x44\xb5\xd1\x43\xe5\x94\x97\xe1\xc7\x32\xc6\x48\xbe\xf0\x42\xa7\xe1\xfb\x9c\x69\x4e\xe1\x39\x40\x1f\xbd\xee\xaf\x25\xa5\x40\xd1\x8f\xce\xbc\x10\x4f\x7e\x34\xe8\x57\xa9\x84\xa3\xc9\x8e\x7d\x85\xfe\x05\xf8\x46\xde\x2a\x81\x54\xee\x29\x39\x52\x4f\x9b\x8b\xc9\xaa\x49\xe3\xd4\xa6\x42\x84\xa8\x7b\x5c\x1c\x9f\x1e\xa7\x58\x51\x96\x47\x24\xc3\x18\x41\xc7\x34\x6f\x9c\x13\x3b\x23\x9c\x79\x17\x83\xe6\x17\x24\xa2\x73\x75\x3a\x50\x8f\xbb\x3e\x58\xed\xfa\x9e\xec\x90\x5e\x41\x85\xf1\x84\x68\x79\xb0\xc7\x05\xc9\x36\xe0\xf1\x3e\xcd\xd9\x78\x76\x45\x2a\x7f\x31\x13\x10\xbb\xd1\x36\x2e\x97\xb7\x78\x09\xa5\xb7\x94\xa6\x1c\x77\x23\x1c\xdf\xe4\xba\xa0\xda\x88\x5e\x66\xe1\xc6\x85\x3c\x85\xe5\x31\xb0\xcb\xee\x9b\xde\xf0\xb9\x04\xe8\xa5\x51\x6d\x1e\xa1\xf3\x38\x94\x88\x6b\x7b\x78\x49\x29\xb5\x77\xc6\x08\x38\x58\x26\x44\xf2\x14\x2a\xe5\x5f\x0c\x77\x59\xda\x2b\x7f\xd0\xb6\xdc\x83\xea\xdd\x68\x63\xc6\xe6\xe1\x0a\x60\x0c\xc8\x7d\x42\x9a\x69\x57\x68\xdc\x29\xe3\x74\xf1\x8c\x6b\x27\xfe\xfd\x9a\x59\x18\x10\x9b\x2b\xbc\x88\xb8\x1c\x9c\xb2\xbc\xb3\x98\x7f\x72\x52\xb8\x46\xf6\x77\x89\x6c\xaf\x7c\x1c\x54\x88\x8c\x35\xa5\xc6\x4b\x5c\x51\x57\x6c\x50\x35\xe7\x21\x24\x06\xa5\x0d\xf4\xbc\x1f\x4d\xd4\xd4\x0d\xf1\x29\xfe\x30\xb7\x8a\x12\x93\x31\x52\xe9\xa6\xb3\x0d\x1e\x03\xfa\x23\x9e\xe1\xd6\x35\xa4\x33\x78\x44\x73\x4e\x5b\x71\xed\x1c\xad\x2c\xa3\x22\x60\x5c\xfd\xf8\x42\xfc\xb9\x36\x9e\xbc\x1a\x2e\x65\xa1\x67\x59\x53\x54\x7b\xf8\x16\xc6\x39\x30\x4e\xe6\x14\xad\x8e\x73\x4b\x20\x50\xe0\x05\xd7\x19\x8c\x8e\x02\x21\xb2\x8f\x2b\xe8\x9c\xd7\x1f\x9d\x8d\xca\x00\xbf\x27\xf7\x4e\xcd\xea\x36\x1f\x47\x47\xca\xca\xb9\x85\x65\x0f\xc8\x08\x21\xab\x85\xf7\xfe\xe1\x79\x31\x69\x89\xd7\x87\x2e\x2e\xdc\x8f\x84\xe4\xea\xdf\xce\x5b\xd2\x32\xcf\x61\x79\xa2\x94\x90\xd0\xff\xe5\x14\x0c\x69\xa4\x43\x33\xe5\x1e\x52\xaf\x16\xa2\x27\xf3\xf1\x70\x49\xb3\x71\x73\xc3\x42\x68\xee\x9e\x9a\x4e\xe9\x87\x07\xe5\x33\x5b\x0e\xf2\x15\x42\xfa\x29\xcd\x52\xa5\x22\xeb\x23\x86\x15\xfe\x1c\x8c\xaa\x19\x5b\x05\xdd\x20\x94\xaf\xee\x36\xe5\xbc\x83\x8b\xc9\xb2\x49\xdb\xda\x8c\x0d\x1b\x4f\x1b\x19\x5d\x6f\x57\x33\x91\x2d\x94\x3c\x1b\xda\xf2\x40\x8e\xfe\x71\x43\xa4\x7f\x08\x78\x95\x69\xf2\x81\xf2\x54\xba\x53\x7e\xb1\xe6\x10\xd5\x23\x02\x6a\x2e\xf7\xca\xe6\x24\xe7\xf8\x87\xaa\xe5\x32\x8e\xf2\xda\x49\x79\xce\xe8\x44\xa5\xa5\xe8\x48\x93\xc0\x6b\xb7\x46\x49\x5d\x04\x59\x67\xc8\xc9\xf0\xb9\x7e\x06\x86\xbc\xba\xcb\x22\x6e\xe0\xd5\x5d\x16\x71\x73\xf7\x8a\x7b\xfb\xcd\xf6\xd5\x5d\xed\xcc\x86\xde\xb9\x21\xee\x73\x33\xb9\x61\x5a\x97\xff\x2d\x6b\xc4\xa6\x79\x57\x9e\xbc\x6d\xfe\xd1\x0e\xf0\x94\x88\xa4\xfe\xfd\x19\x2e\xdf\xec\xe5\xea\x81\xde\x50\xf3\xbd\x85\xb3\x55\xdf\xa3\x19\x36\xfb\xab\x42\x46\x5e\xc0\x13\xd8\xb5\x38\x69\x58\xb8\x6e\x23\xe4\xc5\x33\x4d\xe3\xd3\x39\x63\x15\x2d\x63\xdd\x53\xe6\xce\x37\x0e\xd2\x88\x86\x71\x40\x9f\x6f\xc0\xb9\x18\xef\xe0\x1d\x41\xc3\x10\xd3\xed\x59\x98\xdb\x8a\xdb\x30\x36\xee\x16\xaa\x91\xb1\xb1\xb3\xf0\xcd\x4f\xdf\x51\x50\x27\xa8\x77\xdb\x38\x15\x76\xb7\x67\xf8\x37\xbd\xaa\xc7\x10\x5d\xaf\x3f\xa6\x3b\xa7\x3c\xcd\xe2\x0b\x6b\x4a\x1f\xe9\xaa\x95\x33\xbd\x8e\x1d\x84\xf1\x9a\x2c\xc4\x3e\xc9\x32\xd9\xa8\x3e\x94\x7b\x88\xa3\xb7\x01\xe4\x27\x88\xe7\xba\xb6\x7d\x5e\x11\x51\x55\xd4\x34\xf6\xd2\xfe\x5a\x75\xd4\x07\xc2\xe1\x0b\x40\x63\xfd\xe2\x41\x5b\xbe\xdc\x9b\x4b\x9c\x0a\xa9\x3d\x94\xeb\x82\xa8\x2a\xee\x5a\xef\x70\x77\xd8\x49\xaf\xcb\x10\xf5\xcb\x15\x25\x67\x6b\xdc\x9c\x77\x04\x2c\x38\xc3\x4d\x65\xa7\xc8\xed\x91\xcc\x5e\xe9\x5c\x21\x3a\xd9\x9c\x86\xab\x2f\x54\x01\xda\xa1\x3f\x9e\x0d\x69\xa2\xaa\x80\x9e\x71\x03\x97\xae\x65\xae\x10\xf9\x72\x21\x30\xb3\xdc\xf3\xe8\x2e\x1d\x7e\x85\xc3\x59\xd0\xe7\xcf\x81\xbe\x8f\x3a\x1a\xf6\x5b\x9e\xe9\x87\xb9\x05\x91\xe9\x31\x61\x11\x3f\xa3\xf3\xd7\x01\x78\xf9\xdc\x4e\x04\x8c\xd4\x7c\xce\x70\x9c\x4b\x8a\x20\xd1\x17\x54\x30\x06\x1c\xbc\xee\x95\x9f\x4a\xb8\xcb\x4e\xd5\x8e\x86\x9c\xe1\x73\xab\x3f\x6c\x9e\x3c\xd1\xc5\xc8\x32\xe5\x80\x44\x6c\xd5\x27\xe4\x5e\x45\xee\x79\xf8\x9b\x89\x4f\xae\x59\x93\x89\xe7\x8e\x52\xb5\x2d\xd6\x31\x17\x56\x4b\x69\x69\xdd\x7a\xc8\xb4\xe5\xdb\xe8\xcd\xfd\xb7\x1c\x10\xfc\xe7\xbf\x3f\xe3\xb6\xf7\xf7\xf7\x45\xf1\x6f\x66\x3c\xe8\x9c\xe2\xc3\x9e\xef\x9a\x06\x7e\x16\xf8\xc6\x48\x62\x47\xcd\x17\x81\xc9\xe3\x96\x26\xd0\xf9\x55\xdf\x8f\xfd\x0e\xde\x7f\x9f\x73\x7e\xa1\x03\x75\xdc\x69\x6a\x9f\xae\x9b\xd2\x87\x1d\x7c\x91\x9a\xe6\xf3\xc2\x0f\x74\x0c\x68\x28\xce\xbe\xb6\x53\xe6\x43\x70\x93\x0c\x99\xb4\x93\x07\x59\xd9\xc4\x8c\xb3\x57\x77\x1b\x50\x5c\x5e\x8a\xa5\xd1\x61\xd8\xfd\x3d\x38\x0b\xc1\x6d\x89\x14\xb2\x2a\xb7\xe2\x40\xe7\x9f\xd1\x48\xcf\x92\xe8\x17\x19\x57\xcc\x43\xaa\xb7\x8c\xd8\x5f\x2f\xe8\x97\x4b\xe5\x15\x3a\x2c\x2d\x9d\x9e\x1a\x5a\xeb\xc8\x49\x8a\x5e\xd5\x1d\x4f\x65\xd3\x68\x84\x5d\x80\x35\x72\x76\xc8\x24\x0f\xef\x81\xb4\x67\x57\x14\x9f\x7d\x06\x6f\x64\x22\x47\xd6\x95\xce\x33\x6f\x2c\x8a\xbf\x2c\x5f\xdb\xd0\xee\xb0\x10\xcd\x85\x5c\xc6\x79\x66\x22\x8b\xf1\x6e\x33\xed\xe0\x5f\xe5\x0f\xe8\x51\xe5\xef\x76\xc8\x69\xf3\xc0\xf5\xc4\x33\x88\xb5\xa6\x3f\xf9\xbc\xe2\xec\xec\x65\x1a\x19\xa9\x38\x5f\x53\x53\xfc\x14\x29\x1c\xb5\xbd\x3a\xe3\xfd\x29\x71\x5b\xa0\xc6\x7c\xd6\xf4\xa5\xcd\x3c\x70\xa3\x16\x52\x3e\xe0\x11\x39\xe7\x06\xcc\xb2\xe7\xe6\xcf\x43\x8a\xe2\xfd\x72\x21\x29\xf7\xd1\xab\x56\x6d\x35\xd8\xdc\xce\xdf\x2b\x2c\xe3\xe9\xd5\x4a\xd6\x53\xe1\xf8\x43\x90\xf7\x8e\x99\x2e\x87\x4c\x4a\x94\x2f\x96\xca\x80\x91\x1f\x94\xeb\x34\x47\x4f\xcb\x5d\x51\xa4\x8f\x48\xca\x0b\x65\xcd\xa3\x67\xb2\x1c\x7f\x31\x44\xbd\x31\x71\xc9\x5f\x52\x25\x1e\xfc\x35\x07\xd7\xd8\x89\x3f\x37\x60\x8b\x16\x8a\x25\x91\x6f\x50\xf2\xe9\x77\xc0\x5f\x64\x69\xb9\xea\x92\x71\x46\x9a\x9e\x74\x2a\x5c\x16\x84\x04\x63\x48\x75\x72\x8f\x89\x1f\x6a\x1c\x22\xbc\x71\x05\xff\x16\xf5\xcc\x35\x01\xbe\xbc\xbe\xfc\x4f\x63\x35\xc9\x93\x7d\x51\x94\x65\x49\xd2\x15\xbf\x14\x37\xb7\x6d\xdc\x1f\xdc\xed\x1e\x7e\x29\x6e\x6e\x6e\xd7\xac\x6f\xf7\xc0\x09\xb7\xb8\xf9\x75\x2b\xeb\xfc\x58\x4d\xeb\x95\xfa\x23\xde\xee\xe1\x77\x69\xc1\xc5\x5e\xca\x60\xf9\xb1\x2c\xfc\xb2\xf8\x95\x38\x17\xc5\x3b\x4f\xe1\xa5\x8d\xf2\x66\x9a\x75\xcb\x53\x43\x89\x49\x52\xd9\xe5\x31\x3f\xdf\xfd\xa6\x53\x7e\xbe\xf3\xd5\xff\xc3\x11\xff\x37\x00\x00\xff\xff\x06\x5b\xc5\x78\x3e\x28\x00\x00" func runtimeHelpOptionsMdBytes() ([]byte, error) { return bindataRead( diff --git a/internal/info/infobuffer.go b/internal/info/infobuffer.go index 3e8de958..ca7de9cc 100644 --- a/internal/info/infobuffer.go +++ b/internal/info/infobuffer.go @@ -58,7 +58,7 @@ func (i *InfoBuf) Message(msg ...interface{}) { displayMessage := fmt.Sprint(msg...) // if there is no active prompt then style and display the message as normal i.Msg = displayMessage - i.HasMessage = true + i.HasMessage, i.HasError = true, false } } From 3f22501b1af033893138ea70dae02ef7517f49d7 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 22 Dec 2019 17:24:00 -0500 Subject: [PATCH 180/231] Improved save with sudo --- internal/buffer/save.go | 108 ++++++++++++++++++++-------------- internal/display/bufwindow.go | 8 +-- 2 files changed, 67 insertions(+), 49 deletions(-) diff --git a/internal/buffer/save.go b/internal/buffer/save.go index fde6cf96..240526e8 100644 --- a/internal/buffer/save.go +++ b/internal/buffer/save.go @@ -12,6 +12,7 @@ import ( "unicode/utf8" "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/screen" . "github.com/zyedidia/micro/internal/util" "golang.org/x/text/encoding" "golang.org/x/text/encoding/htmlindex" @@ -49,6 +50,48 @@ func overwriteFile(name string, enc encoding.Encoding, fn func(io.Writer) error) return } +// overwriteFileAsRoot executes dd as root and then calls the supplied function +// with dd's standard input as an io.Writer object. Dd opens the given file for writing, +// truncating it if it exists, and writes what it receives on its standard input to the file. +func overwriteFileAsRoot(name string, enc encoding.Encoding, fn func(io.Writer) error) (err error) { + cmd := exec.Command(config.GlobalSettings["sucmd"].(string), "dd", "status=none", "bs=4K", "of="+name) + var stdin io.WriteCloser + + screenb := screen.TempFini() + + // This is a trap for Ctrl-C so that it doesn't kill micro + // Instead we trap Ctrl-C to kill the program we're running + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt) + go func() { + for range c { + cmd.Process.Kill() + } + }() + + if stdin, err = cmd.StdinPipe(); err != nil { + return + } + + if err = cmd.Start(); err != nil { + return + } + + e := fn(stdin) + + if err = stdin.Close(); err != nil { + return + } + + if err = cmd.Wait(); err != nil { + return + } + + screen.TempStart(screenb) + + return e +} + // Save saves the buffer to its default path func (b *Buffer) Save() error { return b.SaveAs(b.Path) @@ -56,6 +99,18 @@ func (b *Buffer) Save() error { // SaveAs saves the buffer to a specified path (filename), creating the file if it does not exist func (b *Buffer) SaveAs(filename string) error { + return b.saveToFile(filename, false) +} + +func (b *Buffer) SaveWithSudo() error { + return b.SaveAsWithSudo(b.Path) +} + +func (b *Buffer) SaveAsWithSudo(filename string) error { + return b.saveToFile(filename, true) +} + +func (b *Buffer) saveToFile(filename string, withSudo bool) error { var err error if b.Type.Readonly { return errors.New("Cannot save readonly buffer") @@ -116,7 +171,7 @@ func (b *Buffer) SaveAs(filename string) error { return err } - err = overwriteFile(absFilename, enc, func(file io.Writer) (e error) { + fwriter := func(file io.Writer) (e error) { if len(b.lines) == 0 { return } @@ -144,7 +199,13 @@ func (b *Buffer) SaveAs(filename string) error { fileSize += len(eol) + len(l.data) } return - }) + } + + if withSudo { + err = overwriteFileAsRoot(absFilename, enc, fwriter) + } else { + err = overwriteFile(absFilename, enc, fwriter) + } if err != nil { return err @@ -165,46 +226,3 @@ func (b *Buffer) SaveAs(filename string) error { b.isModified = false return err } - -// SaveWithSudo saves the buffer to the default path with sudo -func (b *Buffer) SaveWithSudo() error { - return b.SaveAsWithSudo(b.Path) -} - -// SaveAsWithSudo is the same as SaveAs except it uses a neat trick -// with tee to use sudo so the user doesn't have to reopen micro with sudo -func (b *Buffer) SaveAsWithSudo(filename string) error { - if b.Type.Scratch { - return errors.New("Cannot save scratch buffer") - } - - b.UpdateRules() - b.Path = filename - absPath, _ := filepath.Abs(filename) - b.AbsPath = absPath - - // Set up everything for the command - cmd := exec.Command(config.GlobalSettings["sucmd"].(string), "tee", filename) - cmd.Stdin = bytes.NewBuffer(b.Bytes()) - - // This is a trap for Ctrl-C so that it doesn't kill micro - // Instead we trap Ctrl-C to kill the program we're running - c := make(chan os.Signal, 1) - signal.Notify(c, os.Interrupt) - go func() { - for range c { - cmd.Process.Kill() - } - }() - - // Start the command - cmd.Start() - err := cmd.Wait() - - if err == nil { - b.isModified = false - b.ModTime, _ = GetModTime(filename) - return b.Serialize() - } - return err -} diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index 65b0917b..b6967329 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -118,12 +118,12 @@ func (w *BufWindow) Clear() { // but if softwrap is enabled things get complicated since one buffer // line can take up multiple lines in the view func (w *BufWindow) Bottomline() int { - // b := w.Buf + b := w.Buf // TODO: possible non-softwrap optimization - // if !b.Settings["softwrap"].(bool) { - // return w.StartLine + w.Height - // } + if !b.Settings["softwrap"].(bool) || !w.hasCalcHeight { + return w.StartLine + w.Height + } prev := 0 for _, l := range w.lineHeight { From b527e4fe420ac52f598107a72777d687f28efd4f Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 22 Dec 2019 18:05:23 -0500 Subject: [PATCH 181/231] Reoragnize slightly --- internal/buffer/backup.go | 32 +++++++++++++++++++++++++++++--- internal/buffer/buffer.go | 35 +++++------------------------------ 2 files changed, 34 insertions(+), 33 deletions(-) diff --git a/internal/buffer/backup.go b/internal/buffer/backup.go index 5b87e906..49d9f1e7 100644 --- a/internal/buffer/backup.go +++ b/internal/buffer/backup.go @@ -1,12 +1,14 @@ package buffer import ( + "fmt" "io" "log" "os" "time" "github.com/zyedidia/micro/internal/config" + "github.com/zyedidia/micro/internal/screen" "github.com/zyedidia/micro/internal/util" "golang.org/x/text/encoding" ) @@ -15,7 +17,7 @@ const backupMsg = `A backup was detected for this file. This likely means that m crashed while editing this file, or another instance of micro is currently editing this file. -The backup was created at %s. +The backup was created on %s. * 'recover' will apply the backup as unsaved changes to the current buffer. When the buffer is closed, the backup will be removed. @@ -87,6 +89,30 @@ func (b *Buffer) RemoveBackup() { } // ApplyBackup applies the corresponding backup file to this buffer (if one exists) -func (b *Buffer) ApplyBackup() error { - return nil +// Returns true if a backup was applied +func (b *Buffer) ApplyBackup(fsize int64) bool { + if b.Settings["backup"].(bool) && len(b.Path) > 0 { + backupfile := config.ConfigDir + "/backups/" + util.EscapePath(b.AbsPath) + if info, err := os.Stat(backupfile); err == nil { + backup, err := os.Open(backupfile) + if err == nil { + defer backup.Close() + t := info.ModTime() + msg := fmt.Sprintf(backupMsg, t.Format("Mon Jan _2 at 15:04, 2006")) + choice := screen.TermPrompt(msg, []string{"r", "i", "recover", "ignore"}, true) + + if choice%2 == 0 { + // recover + b.LineArray = NewLineArray(uint64(fsize), FFAuto, backup) + b.isModified = true + return true + } else if choice%2 == 1 { + // delete + os.Remove(backupfile) + } + } + } + } + + return false } diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index 2b20685a..dd7d0950 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -4,10 +4,8 @@ import ( "bytes" "crypto/md5" "errors" - "fmt" "io" "io/ioutil" - "log" "os" "path/filepath" "strconv" @@ -198,36 +196,16 @@ func NewBuffer(r io.Reader, size int64, path string, startcursor Loc, btype BufT } } - if !found { - choice := 1 // ignore by default + b.Path = path + b.AbsPath = absPath + if !found { b.SharedBuffer = new(SharedBuffer) b.Type = btype - if b.Settings["backup"].(bool) && len(path) > 0 { - backupfile := config.ConfigDir + "/backups/" + EscapePath(absPath) - if info, err := os.Stat(backupfile); err == nil { - backup, err := os.Open(backupfile) - if err == nil { - t := info.ModTime() - msg := fmt.Sprintf(backupMsg, t.Format("Mon Jan _2 15:04 2006")) - choice = screen.TermPrompt(msg, []string{"r", "i", "recover", "ignore"}, true) - log.Println("Choice:", choice) + hasBackup := b.ApplyBackup(size) - if choice%2 == 0 { - // recover - b.LineArray = NewLineArray(uint64(size), FFAuto, backup) - b.isModified = true - } else if choice%2 == 1 { - // delete - os.Remove(backupfile) - } - backup.Close() - } - } - } - - if choice > 0 { + if !hasBackup { b.LineArray = NewLineArray(uint64(size), FFAuto, reader) } b.EventHandler = NewEventHandler(b.SharedBuffer, b.cursors) @@ -237,9 +215,6 @@ func NewBuffer(r io.Reader, size int64, path string, startcursor Loc, btype BufT b.Type.Readonly = true } - b.Path = path - b.AbsPath = absPath - // The last time this file was modified b.ModTime, _ = GetModTime(b.Path) From 93734f56685b064a7b1971ce86e3f7216646866e Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 23 Dec 2019 15:36:53 -0500 Subject: [PATCH 182/231] Fix highlighting issue --- internal/display/bufwindow.go | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index b6967329..eac0831f 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -1,6 +1,7 @@ package display import ( + "log" "strconv" "unicode/utf8" @@ -118,11 +119,13 @@ func (w *BufWindow) Clear() { // but if softwrap is enabled things get complicated since one buffer // line can take up multiple lines in the view func (w *BufWindow) Bottomline() int { - b := w.Buf - // TODO: possible non-softwrap optimization - if !b.Settings["softwrap"].(bool) || !w.hasCalcHeight { - return w.StartLine + w.Height + if !w.Buf.Settings["softwrap"].(bool) || !w.hasCalcHeight { + h := w.StartLine + w.Height - 1 + if w.drawStatus { + h-- + } + return h } prev := 0 @@ -143,6 +146,7 @@ func (w *BufWindow) Relocate() bool { b := w.Buf // how many buffer lines are in the view height := w.Bottomline() + 1 - w.StartLine + log.Printf("Height: %d, w.Height: %d\n", height, w.Height) h := w.Height if w.drawStatus { h-- @@ -374,16 +378,18 @@ func (w *BufWindow) displayBuffer() { } w.hasCalcHeight = true - start := w.StartLine if b.Settings["syntax"].(bool) && b.SyntaxDef != nil { - if start > 0 && b.Rehighlight(start-1) { - b.Highlighter.ReHighlightLine(b, start-1) - b.SetRehighlight(start-1, false) + for _, c := range b.GetCursors() { + // rehighlight starting from where the cursor is + start := c.Y + if start > 0 && b.Rehighlight(start-1) { + b.Highlighter.ReHighlightLine(b, start-1) + b.SetRehighlight(start-1, false) + } + + b.Highlighter.ReHighlightStates(b, start) + b.Highlighter.HighlightMatches(b, w.StartLine, w.StartLine+bufHeight) } - - b.Highlighter.ReHighlightStates(b, start) - - b.Highlighter.HighlightMatches(b, w.StartLine, w.StartLine+bufHeight) } var matchingBraces []buffer.Loc From 432f1f3363949d40a3a7e6029b2ea2440d5e7a7d Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 23 Dec 2019 16:16:54 -0500 Subject: [PATCH 183/231] Minor relocate improvement --- internal/display/bufwindow.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index eac0831f..5c958147 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -62,6 +62,7 @@ func (w *BufWindow) Resize(width, height int) { w.hasCalcHeight = false // This recalculates lineHeight w.GetMouseLoc(buffer.Loc{width, height}) + w.Relocate() } func (w *BufWindow) SetActive(b bool) { From 3b306c1d3bc518ae6a9892225ce01bd79ae10cb3 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 24 Dec 2019 16:01:08 -0500 Subject: [PATCH 184/231] Better softwrap --- internal/action/actions.go | 4 +-- internal/action/bufpane.go | 2 +- internal/action/tab.go | 2 +- internal/display/bufwindow.go | 54 ++++++++++++---------------------- internal/display/infowindow.go | 2 +- internal/display/tabwindow.go | 2 +- internal/display/termwindow.go | 2 +- internal/display/window.go | 2 +- 8 files changed, 27 insertions(+), 43 deletions(-) diff --git a/internal/action/actions.go b/internal/action/actions.go index 6d83ae4c..c8cd6b5d 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -40,7 +40,7 @@ func (h *BufPane) ScrollDown(n int) { func (h *BufPane) MousePress(e *tcell.EventMouse) bool { b := h.Buf mx, my := e.Position() - mouseLoc := h.GetMouseLoc(buffer.Loc{mx, my}) + mouseLoc := h.LocFromVisual(buffer.Loc{mx, my}) h.Cursor.Loc = mouseLoc if h.mouseReleased { if b.NumCursors() > 1 { @@ -1410,7 +1410,7 @@ func (h *BufPane) SpawnMultiCursorSelect() bool { func (h *BufPane) MouseMultiCursor(e *tcell.EventMouse) bool { b := h.Buf mx, my := e.Position() - mouseLoc := h.GetMouseLoc(buffer.Loc{X: mx, Y: my}) + mouseLoc := h.LocFromVisual(buffer.Loc{X: mx, Y: my}) c := buffer.NewCursor(b, mouseLoc) b.AddCursor(c) b.MergeCursors() diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index fd6b6019..17a0220d 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -241,7 +241,7 @@ func (h *BufPane) HandleEvent(event tcell.Event) { // Mouse was just released mx, my := e.Position() - mouseLoc := h.GetMouseLoc(buffer.Loc{X: mx, Y: my}) + mouseLoc := h.LocFromVisual(buffer.Loc{X: mx, Y: my}) // Relocating here isn't really necessary because the cursor will // be in the right place from the last mouse event diff --git a/internal/action/tab.go b/internal/action/tab.go index 45a9f3db..bf0ffbec 100644 --- a/internal/action/tab.go +++ b/internal/action/tab.go @@ -103,7 +103,7 @@ func (t *TabList) HandleEvent(event tcell.Event) { mx, my := e.Position() switch e.Buttons() { case tcell.Button1: - ind := t.GetMouseLoc(buffer.Loc{mx, my}) + ind := t.LocFromVisual(buffer.Loc{mx, my}) if ind != -1 { t.SetActive(ind) } diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index 5c958147..ac1305a0 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -25,10 +25,8 @@ type BufWindow struct { sline *StatusLine - lineHeight []int - hasCalcHeight bool - gutterOffset int - drawStatus bool + gutterOffset int + drawStatus bool } // NewBufWindow creates a new window at a location in the screen with a width and height @@ -36,7 +34,6 @@ func NewBufWindow(x, y, width, height int, buf *buffer.Buffer) *BufWindow { w := new(BufWindow) w.View = new(View) w.X, w.Y, w.Width, w.Height, w.Buf = x, y, width, height, buf - w.lineHeight = make([]int, height) w.active = true w.sline = NewStatusLine(w) @@ -58,10 +55,6 @@ func (v *View) SetView(view *View) { func (w *BufWindow) Resize(width, height int) { w.Width, w.Height = width, height - w.lineHeight = make([]int, height) - w.hasCalcHeight = false - // This recalculates lineHeight - w.GetMouseLoc(buffer.Loc{width, height}) w.Relocate() } @@ -120,8 +113,7 @@ func (w *BufWindow) Clear() { // but if softwrap is enabled things get complicated since one buffer // line can take up multiple lines in the view func (w *BufWindow) Bottomline() int { - // TODO: possible non-softwrap optimization - if !w.Buf.Settings["softwrap"].(bool) || !w.hasCalcHeight { + if !w.Buf.Settings["softwrap"].(bool) { h := w.StartLine + w.Height - 1 if w.drawStatus { h-- @@ -129,15 +121,10 @@ func (w *BufWindow) Bottomline() int { return h } - prev := 0 - for _, l := range w.lineHeight { - if l >= prev { - prev = l - } else { - break - } - } - return prev + l := w.LocFromVisual(buffer.Loc{0, w.Height}) + + log.Println("Bottom line:", l.Y) + return l.Y } // Relocate moves the view window so that the cursor is in view @@ -152,7 +139,7 @@ func (w *BufWindow) Relocate() bool { if w.drawStatus { h-- } - if b.LinesNum() <= h || !w.hasCalcHeight { + if b.LinesNum() <= h { height = w.Height } ret := false @@ -189,15 +176,15 @@ func (w *BufWindow) Relocate() bool { return ret } -func (w *BufWindow) GetMouseLoc(svloc buffer.Loc) buffer.Loc { +// LocFromVisual takes a visual location (x and y position) and returns the +// position in the buffer corresponding to the visual location +// Computing the buffer location requires essentially drawing the entire screen +// to account for complications like softwrap, wide characters, and horizontal scrolling +// If the requested position does not correspond to a buffer location it returns +// the nearest position +func (w *BufWindow) LocFromVisual(svloc buffer.Loc) buffer.Loc { b := w.Buf - // TODO: possible non-softwrap optimization - // if !b.Settings["softwrap"].(bool) { - // l := b.LineBytes(svloc.Y) - // return buffer.Loc{b.GetActiveCursor().GetCharPosInLine(l, svloc.X), svloc.Y} - // } - hasMessage := len(b.Messages) > 0 bufHeight := w.Height if w.drawStatus { @@ -293,11 +280,12 @@ func (w *BufWindow) GetMouseLoc(svloc buffer.Loc) buffer.Loc { return bloc } + if bloc.Y+1 >= b.LinesNum() || vloc.Y+1 >= bufHeight { + return bloc + } + bloc.X = w.StartCol bloc.Y++ - if bloc.Y >= b.LinesNum() { - break - } } return buffer.Loc{} @@ -378,7 +366,6 @@ func (w *BufWindow) displayBuffer() { bufWidth-- } - w.hasCalcHeight = true if b.Settings["syntax"].(bool) && b.SyntaxDef != nil { for _, c := range b.GetCursors() { // rehighlight starting from where the cursor is @@ -544,8 +531,6 @@ func (w *BufWindow) displayBuffer() { nColsBeforeStart-- } - w.lineHeight[vloc.Y] = bloc.Y - totalwidth := w.StartCol - nColsBeforeStart for len(line) > 0 { r, size := utf8.DecodeRune(line) @@ -586,7 +571,6 @@ func (w *BufWindow) displayBuffer() { break } vloc.X = 0 - w.lineHeight[vloc.Y] = bloc.Y // This will draw an empty line number because the current line is wrapped w.drawLineNum(lineNumStyle, true, maxLineNumLength, &vloc, &bloc) } diff --git a/internal/display/infowindow.go b/internal/display/infowindow.go index db2f9c08..b179c81e 100644 --- a/internal/display/infowindow.go +++ b/internal/display/infowindow.go @@ -65,7 +65,7 @@ func (i *InfoWindow) SetView(v *View) {} func (i *InfoWindow) SetActive(b bool) {} func (i *InfoWindow) IsActive() bool { return true } -func (i *InfoWindow) GetMouseLoc(vloc buffer.Loc) buffer.Loc { +func (i *InfoWindow) LocFromVisual(vloc buffer.Loc) buffer.Loc { c := i.Buffer.GetActiveCursor() l := i.Buffer.LineBytes(0) n := utf8.RuneCountInString(i.Msg) diff --git a/internal/display/tabwindow.go b/internal/display/tabwindow.go index d3e9553b..3d25a42c 100644 --- a/internal/display/tabwindow.go +++ b/internal/display/tabwindow.go @@ -25,7 +25,7 @@ func NewTabWindow(w int, y int) *TabWindow { return tw } -func (w *TabWindow) GetMouseLoc(vloc buffer.Loc) int { +func (w *TabWindow) LocFromVisual(vloc buffer.Loc) int { x := -w.hscroll for i, n := range w.Names { diff --git a/internal/display/termwindow.go b/internal/display/termwindow.go index d195d532..95a90037 100644 --- a/internal/display/termwindow.go +++ b/internal/display/termwindow.go @@ -44,7 +44,7 @@ func (w *TermWindow) IsActive() bool { return w.active } -func (w *TermWindow) GetMouseLoc(vloc buffer.Loc) buffer.Loc { +func (w *TermWindow) LocFromVisual(vloc buffer.Loc) buffer.Loc { return vloc } diff --git a/internal/display/window.go b/internal/display/window.go index 4e39bdbd..bed538c5 100644 --- a/internal/display/window.go +++ b/internal/display/window.go @@ -20,7 +20,7 @@ type Window interface { Relocate() bool GetView() *View SetView(v *View) - GetMouseLoc(vloc buffer.Loc) buffer.Loc + LocFromVisual(vloc buffer.Loc) buffer.Loc Resize(w, h int) SetActive(b bool) IsActive() bool From 94ff79e7b28b17c50bbd2ad1f159e7c44cb25738 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 24 Dec 2019 17:17:44 -0500 Subject: [PATCH 185/231] Lua prompt support and plugin improvements --- internal/action/bufpane.go | 4 ++ internal/action/command.go | 6 +-- internal/config/runtime.go | 4 +- internal/info/infobuffer.go | 65 +++++++++++++++++++++++++++++ internal/shell/job.go | 6 +-- internal/shell/terminal.go | 6 +-- runtime/plugins/comment/comment.lua | 2 +- runtime/plugins/linter/linter.lua | 19 +++++---- 8 files changed, 87 insertions(+), 25 deletions(-) diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 17a0220d..4c70669b 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -68,6 +68,10 @@ func BufMapKey(k Event, action string) { } else if strings.HasPrefix(a, "lua:") { a = strings.SplitN(a, ":", 2)[1] afn = LuaAction(a) + if afn == nil { + screen.TermMessage("Lua Error:", action, "does not exist") + continue + } } else if f, ok := BufKeyActions[a]; ok { afn = f } else { diff --git a/internal/action/command.go b/internal/action/command.go index 1fe25bab..aaafb570 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -89,11 +89,7 @@ func LuaFunctionCommand(fn string) func(*BufPane, []string) { return nil } return func(bp *BufPane, args []string) { - var luaArgs []lua.LValue - luaArgs = append(luaArgs, luar.New(ulua.L, bp)) - for _, v := range args { - luaArgs = append(luaArgs, luar.New(ulua.L, v)) - } + luaArgs := []lua.LValue{luar.New(ulua.L, bp), luar.New(ulua.L, args)} _, err := pl.Call(plFn, luaArgs...) if err != nil { screen.TermMessage(err) diff --git a/internal/config/runtime.go b/internal/config/runtime.go index e1d0deb8..392616d0 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -1108,7 +1108,7 @@ func runtimePluginsAutocloseInfoJson() (*asset, error) { return a, nil } -var _runtimePluginsCommentCommentLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x57\x5b\x6f\x2b\x35\x10\x7e\xcf\xaf\x30\x7b\x88\x64\xb7\xd9\xed\x49\x79\x8b\x08\x12\xed\x43\x91\x08\x07\xa9\xad\x20\x55\x14\xa4\xbd\xcc\x26\x3e\x78\xbd\x2b\xdb\x0b\x44\x08\x7e\x3b\xf2\x65\xaf\xde\x84\x1c\x21\xc1\x0b\x95\xda\x6c\x3e\xcf\x37\x63\xcf\x7c\xe3\xd9\xb2\x32\x8d\x19\xaa\x15\x65\x68\x8d\x68\x51\x95\x42\xe1\xa0\xa0\xa9\x28\xef\x34\x18\x90\x99\xb5\x48\x4b\x9e\xd3\x83\x67\x63\xe1\xd6\x2a\xa9\xf3\x1c\x84\x67\x65\xe1\x80\xcc\x9c\x59\xae\xd0\x1a\xfd\xfe\xc7\x6c\x96\xab\x5d\x90\x06\x7b\xb4\x46\xc1\xdd\x1d\x9a\xcb\xc0\x22\xb7\xb7\x1e\x76\x28\x3d\xa8\x3a\xa9\x63\xc9\x2d\xfc\x6e\x84\x7e\x31\x86\x8f\xaa\x60\x16\xfb\xf2\xb3\x30\x44\x73\x89\xc2\xf0\x2b\xbb\xf4\x31\xfe\x25\xf6\x9c\x7f\xac\x19\x8d\x3d\xdf\x20\x98\x87\x1d\x2b\x8f\x2c\x6a\xa9\x3c\x50\x1e\x81\x79\x6c\x56\xbb\x20\x66\x4f\xdd\x7e\x64\x2a\x68\xe5\xfb\x10\x75\x72\x1a\xbb\xc8\xfc\x48\xbf\xd2\x7c\xc8\x9d\xe5\x35\x4f\x15\x2d\x39\x2a\xf9\x83\x29\xc6\xf7\x15\x70\x9c\xd4\x39\x99\x21\x84\x10\xcd\x75\xe9\xa2\x17\x50\x8a\xf2\x83\xdc\x05\x69\x59\x14\xc0\x95\x3a\x55\xa0\x1d\xad\x11\xa7\x0c\xa9\x23\x70\x63\xee\x28\xb9\xda\x0d\x59\x39\x65\x60\x29\x7b\xf4\xe7\x04\x47\xff\x5c\x8c\x73\xd1\x65\xeb\x06\x98\x84\x4f\xf0\xe9\x72\xd5\xb2\x79\x36\x6b\x3e\xf5\x6f\x97\x1b\x47\xdc\x50\x0e\x38\xa9\x16\x88\x51\x0e\x1f\x6c\x82\xac\x6e\x35\x80\xd6\x28\xa9\xa2\x87\x3a\x5f\x19\x3b\xcf\xc6\x39\x79\x3d\x55\x9d\xe9\xb9\xcd\xf9\xb4\x67\x38\xc0\x6f\x7a\xcf\x3f\xcd\xe5\x4d\x80\xa2\xa8\xef\x6f\x75\x90\x75\x82\x83\xf9\x4d\xb0\x40\xfa\x2f\x69\x80\xd0\x00\x61\x07\x44\x06\x88\x3a\xe0\xd6\x00\xb7\x1d\xb0\x37\xc0\xbe\x03\x76\x06\xd8\x75\xc0\x5c\x6a\x04\x47\x37\x24\xe8\x9f\x4f\x82\xbe\x29\xc2\xa4\x8a\x1e\x6b\x21\x4b\xa1\x3f\x5e\x80\x81\x49\x61\xff\x40\xb5\xa8\x4a\x39\x34\xdd\x94\x69\xcf\x82\xf2\xcc\x9c\x55\x2a\x41\xf9\x21\xca\x29\xcf\x70\xef\xb4\x7a\x3b\x73\x19\x10\x14\xa2\x65\x23\x52\x67\x5a\xc4\x2a\x3d\x9a\xd4\x2f\x06\x89\x23\x43\xb9\xd5\xdc\x2d\x42\xb6\xb1\x95\xfb\x3b\x7e\x4b\x75\x25\x7e\x86\x8a\xc5\x29\x60\x7b\x81\xe9\xfd\xe3\xf7\x8d\x2e\x16\xa8\x87\xbe\xb3\xce\x9a\x15\x7d\x75\x46\x4f\xa0\x36\x10\x67\x94\x1f\x7e\x3c\x52\x05\xb2\xd2\x9e\xb4\x05\xd1\x75\x1d\x6d\x8e\xf4\x1b\xab\xcd\xd8\xea\x9b\x58\xb6\xc9\xc5\x64\xa2\x9b\x26\xcb\xb0\x5b\xee\xa3\x37\x7d\x5c\x60\xe6\xf1\x1a\xca\x7d\x47\xb9\xbf\x92\xb2\xdc\x47\xdb\x2e\xca\xf6\xca\x28\xdb\x2e\xca\xf6\x42\x4b\xb7\x7c\x6d\x6f\xc5\x14\x6d\x51\x68\x55\x73\xc6\xf4\xad\x33\x7d\xf3\xfb\xbd\x1f\x62\xd0\x74\xad\x3c\x26\x7a\xcd\x74\x81\x12\xb4\xb0\x95\xfb\x37\x15\xf2\xbf\x3e\x3e\x5d\x1f\xb7\xff\x40\x1f\xee\xb3\x4b\xee\x33\x68\x99\x28\xc0\x64\xb8\x10\x6d\x62\xa9\x7e\xa0\xb2\x8e\xd9\xd6\xde\xf1\x8e\xf0\x04\x0d\x8c\xc9\xf4\x6c\xe9\x8a\xa5\x07\x8c\x54\xb1\x30\xe3\x66\xa1\xa3\x77\x65\xce\x4b\xd1\xcc\x1a\xdf\x04\x65\x65\xbb\xf7\xa9\x89\x45\x2e\x4f\x37\x9c\x54\xdd\xcc\xbf\x4a\x47\x7d\xc3\x71\x81\x57\x4f\x02\x62\x05\xe2\xf5\x18\x73\x7c\x66\x28\xec\xee\xf7\x13\xca\xb4\x1d\xd8\x9c\x69\x7d\x49\xa9\x03\xde\xa5\xdd\x68\x2d\xac\xd1\x7b\x3f\x98\xcb\x88\x0b\xd5\x3c\x35\x83\x65\xac\x84\x51\x76\x87\x35\xbb\xd0\x1e\xa3\x2a\x4e\xea\xf6\xca\x63\x7b\x2d\x76\xfe\xd8\xf7\xff\xe5\xb1\x97\x67\x8e\x3d\x75\xe7\x8e\xc5\xda\xeb\xcb\x73\x9a\x35\x17\xaf\xb4\xab\x02\x54\x2d\x38\xc2\xd2\x5d\xcd\xfa\x0d\x09\x47\x21\x99\xcb\x9b\xcf\xcd\xbb\xcb\x32\x20\xe3\xae\x73\xf3\xde\x34\x91\xc4\x2f\xe6\xdb\xe2\x45\x7f\x1b\xf8\x6c\xcc\xea\xa4\xb1\x59\x2e\x1c\xc6\x80\x63\x4b\x20\xeb\xb5\x79\xb0\x21\xec\x3f\x3e\xd1\x77\xf1\xcf\xf0\x58\x16\x45\xcc\x33\xdc\xbc\xdb\xe9\xcd\xb8\xc7\xa8\x83\x1c\xe1\x43\xf9\x58\x16\x15\x03\x05\xa4\xf1\xf1\x2a\x4e\x0f\x94\x67\xdf\xc2\x09\x07\x5f\x33\x15\xde\x69\x07\xac\x8e\x57\xbe\x93\x3c\x66\x12\xc8\xec\xaf\x00\x00\x00\xff\xff\x93\xd1\x8d\x0e\xb5\x0d\x00\x00" +var _runtimePluginsCommentCommentLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x57\xdf\x6f\xeb\x34\x14\x7e\xef\x5f\x61\x72\xa9\x64\x6f\x4d\x76\x3b\xde\x2a\x8a\xc4\xf6\x30\x24\xca\x45\xda\x26\xe8\x54\x15\xc9\x4d\x4f\x5a\x5f\x1c\x27\xb2\x1d\xa0\x42\xf0\xb7\x23\xff\xc8\x4f\xa7\xa5\x57\x48\xf0\xc2\xa4\x2d\xc9\x97\xef\x9c\x63\x9f\xf3\x1d\x9f\x8c\x17\x29\xe5\xa8\xd2\x8c\xa3\x25\x62\x79\x59\x48\x8d\xa3\x9c\xa5\xb2\xb8\x33\x60\x44\x26\x8e\x91\x16\x22\x63\x87\x80\xe3\xe0\x86\xb5\xab\xb2\x0c\x64\xc0\x72\x70\x44\x26\x9e\x96\x69\xb4\x44\xbf\xff\x31\x99\x64\x7a\x13\xa5\xd1\x16\x2d\x51\x74\x77\x87\xa6\x2a\x72\xc8\xed\x6d\x80\x1d\x8a\x00\x2a\x4f\xfa\x58\x08\x07\xbf\x1b\xa0\x5f\x0c\xe1\xa3\xce\xb9\xc3\xbe\xfc\x2c\x8e\xd1\x54\xa1\x38\xfe\xca\xbd\xfa\x48\x7f\xa1\x81\xf3\x8f\x15\x67\x34\xf0\x0d\x92\x07\xd8\xb1\x0c\x8c\x65\xa5\x74\x00\xaa\x23\xf0\xc0\x9a\x57\x3e\x88\x5d\x53\xbb\x1e\x95\x4a\x56\x86\x3e\x64\xb5\x3b\x0d\x5d\xec\xc3\x48\xbf\xb2\xac\x6f\x3b\xc9\x2a\x91\x6a\x56\x08\x54\x88\x07\x5b\x8c\xef\x4b\x10\x78\x57\x65\x64\x82\x10\x42\x2c\x33\xa5\x4b\x5e\x40\x6b\x26\x0e\x6a\x13\xa5\x45\x9e\x83\xd0\xfa\x54\x82\x71\xb4\x44\x82\x71\xa4\x8f\x20\x2c\xdd\x9b\x64\x7a\xd3\xb7\xca\x18\x07\x67\xb2\x45\x7f\x8e\xd8\x98\x9f\x8b\x71\x2e\xba\x6c\xdc\x00\x57\xf0\x09\x3e\x7d\xae\x1a\x6b\xb1\x9f\xd4\x57\xf3\xdb\xe6\xc6\x1b\xae\x98\x00\xbc\x2b\x67\x88\x33\x01\x1f\x5c\x82\x9c\x6e\x0d\x80\x96\x68\x57\x26\x0f\x55\xb6\xb0\xbc\x80\xe3\x9d\xbc\x9e\xca\x96\x7a\x6e\x71\xa1\xd9\x33\x1c\xe0\x37\xb3\xe6\x9f\xa6\xea\x26\x42\x49\xd2\xf5\xb7\x38\xa8\x6a\x87\xa3\xe9\x4d\x34\x43\xe6\x2f\xa9\x81\xd8\x02\x71\x0b\x24\x16\x48\x5a\xe0\xd6\x02\xb7\x2d\xb0\xb5\xc0\xb6\x05\x36\x16\xd8\xb4\xc0\x54\x19\x04\x27\x37\x24\xea\xee\x4f\x81\x39\x29\xe2\x5d\x99\x3c\x56\x52\x15\xd2\x5c\x5e\x80\x83\x4d\x61\x77\x43\x95\x2c\x0b\xd5\xa7\xae\x8a\xb4\xc3\x60\x62\x6f\xf7\xaa\xb4\x64\xe2\x90\x64\x4c\xec\x71\x67\xb7\x66\x39\x53\x15\x11\x14\xa3\x79\x2d\x52\x4f\xcd\xa9\x4e\x8f\x36\xf5\xb3\x5e\xe2\x48\x5f\x6e\x95\xf0\x2f\x61\xbf\x72\x95\xfb\x3b\xfb\xc6\xd4\x97\xf8\x19\x4a\x4e\x53\xc0\xee\x00\x33\xeb\xc7\xef\x6b\x5d\xcc\x50\x07\x7d\xe7\x9c\xd5\x6f\xcc\xd1\x99\x3c\x81\x5e\x01\xdd\x33\x71\xf8\xf1\xc8\x34\xa8\xd2\x78\x32\x0c\x62\xea\x3a\x58\x1c\xe9\x36\x56\x93\xb1\xc5\x37\x54\x35\xc9\xc5\x64\xa4\x9b\x46\xcb\xb0\x99\x6f\x93\x37\xb3\x5d\xe0\xf6\xf6\x1a\x93\xfb\xd6\xe4\xfe\x4a\x93\xf9\x36\x59\xb7\x51\xd6\x57\x46\x59\xb7\x51\xd6\x17\x5a\xba\xb1\x37\x7c\x27\xa6\x64\x8d\x62\xa7\x9a\x33\xd4\xb7\x96\xfa\x16\xf6\x7b\x37\x44\xaf\xe9\x1a\x79\x8c\xf4\x9a\xed\x02\x2d\x59\xee\x2a\xf7\x6f\x2a\xe4\x7f\x7d\x7c\xba\x3e\x6e\xff\x81\x3e\xfc\xb5\x4d\xee\x33\x18\x99\x68\xc0\xa4\xff\x22\x59\x51\xa5\x7f\x60\xaa\xa2\x7c\xed\xce\x78\x6f\xf0\x04\x35\x8c\xc9\xf8\x6c\x69\x8b\x65\x06\x8c\xd2\x54\xda\x71\x33\x33\xd1\xdb\x32\x67\x85\xac\x67\x4d\x48\x41\xfb\xa2\x59\xfb\xd8\xc4\x22\x97\xa7\x9b\xe5\x51\x79\x50\xed\xe4\xbf\x4a\x4d\x5d\xe2\xb0\xcc\x8b\x27\x09\x54\x83\x7c\x3d\x52\x81\xcf\x8c\x86\xcd\xfd\x76\x44\x9f\xae\x0f\xeb\x9d\x2d\x2f\xe9\xb5\x67\x77\x69\x35\x46\x11\x4b\xf4\x3e\x0c\xe6\xf3\xe2\x43\xd5\x77\xf5\x78\x19\xea\x61\x90\xe3\x7e\xe5\x2e\x34\xc9\xa0\x96\xa3\xea\xbd\x72\xdb\x41\xa3\x9d\xdf\xf6\xfd\x7f\xb9\xed\xf9\x99\x6d\x8f\x9d\xbc\x43\xc9\x76\xba\xf3\x9c\x72\xed\xf1\xeb\xf5\x2a\x41\x57\x52\x20\xac\xfc\x01\x6d\xbe\x93\x70\x12\x93\xa9\xba\xf9\xdc\x7e\xc1\xcc\x23\x32\xec\x3d\x3f\xf5\x6d\x2b\x29\xfc\x62\x9f\x66\x2f\xe6\xa9\xe7\xb3\xa6\x55\xbb\x9a\x33\x9f\x79\x8c\x83\xc0\xce\x80\x2c\x97\xf6\xc6\x85\x70\xff\xfe\x24\xdf\xd1\x9f\xe1\xb1\xc8\x73\x2a\xf6\xb8\xfe\xc2\x33\x8b\xf1\xb7\x49\x0b\x79\x83\x0f\xc5\x63\x91\x97\x1c\x34\x90\xda\xc7\xab\x3c\x3d\x30\xb1\xff\x16\x4e\x38\xfa\x9a\xeb\xf8\xce\x38\xe0\x15\x5d\x84\x4e\x32\xca\x15\x90\xc9\x5f\x01\x00\x00\xff\xff\x04\xbe\xc6\xd7\xbb\x0d\x00\x00" func runtimePluginsCommentCommentLuaBytes() ([]byte, error) { return bindataRead( @@ -1208,7 +1208,7 @@ func runtimePluginsLinterInfoJson() (*asset, error) { return a, nil } -var _runtimePluginsLinterLinterLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x59\x5f\x8f\xa4\xb8\x11\x7f\x9f\x4f\x61\xa1\x20\xd1\x3b\xc0\xec\x46\x79\x42\x6a\x45\x97\xcd\x5d\xa4\x68\xff\x44\x9a\x8d\xf2\xb0\xbb\x17\xb9\x4d\xd1\xed\x1b\x63\x13\xdb\x74\x4f\x67\xb4\xdf\x3d\x2a\xdb\xd0\x86\x86\xd9\xc9\xdd\xb5\x34\x60\x4c\xb9\xea\x57\x7f\x5d\x66\x84\x62\x54\x10\xdd\x4b\xcb\x5b\x20\x5b\xc2\xdb\x4e\x69\x9b\x25\x61\x26\xd9\xdc\x78\x8a\x86\x0b\xe8\xa8\x3d\x44\x24\xf8\x78\x37\xcc\x8f\x84\xe6\x00\x42\x44\x54\x2d\x67\x5a\xdd\xb9\xd9\x91\x66\xd7\x37\x0d\xe8\x2b\x22\x3f\x3d\x52\x31\x25\x1b\xbe\xbf\xa2\xf2\xd3\xc9\xe6\x26\x90\x09\x2e\x2d\x68\x43\xb6\xe4\xe9\xdb\xcd\x4d\x51\x10\xa6\x81\x5a\x30\x84\x86\x57\x04\xa4\xd5\xe7\x9c\x30\x2a\x04\x69\xb4\x6a\xc9\x89\xdb\x03\x97\x84\x4a\xc2\x25\xb7\x9c\x0a\xfe\x5f\x6a\xb9\x92\xa4\xe9\x25\xc3\x41\x4e\xa4\xb2\xc8\xab\xe6\x1a\x98\x15\x67\x42\xed\x40\x4b\x84\xa2\x35\x41\xe3\xdc\x14\x05\xd2\x48\xda\x42\xe5\xae\x44\x35\xc4\x1e\x20\xc8\xc5\x77\x68\x1e\x7b\xee\xa0\x1a\x47\xc4\x2a\xc2\x0e\xc0\x1e\x48\xa3\x34\x3e\xf4\x26\x5e\xc0\xda\xba\x22\x2d\xe5\x72\x00\xdf\x69\xc5\xc0\x18\x62\x0f\x08\xc1\x10\x78\x04\xd6\x5b\xa8\x91\x98\xea\xbd\xa9\xf0\xda\xb7\x20\xad\x41\x6e\x1d\x35\xee\x7e\x81\x31\x70\xc0\x05\xf8\x43\x79\x69\x83\x34\x1a\xd0\x0b\x81\x98\xf5\x5a\x83\xb4\x0e\xa7\x53\x66\x42\x5f\xaf\xd2\x7b\x0b\x29\x7d\x1e\x17\x81\xd6\x4a\x37\x4a\xb7\xd4\x56\xe4\xa0\x4e\x1e\x96\x36\x10\x81\xba\x63\xaa\xed\xb8\x88\xf4\x53\xbd\xed\x7a\x3b\x08\x4d\x1b\x6f\xb1\x9c\xa4\xa2\xc2\x35\x40\x64\xdf\xee\x40\xe7\x24\x6d\x2b\x2f\xe2\xee\x44\xb5\xe4\x72\x4f\x5a\x30\x86\xee\x9d\x6c\x65\x90\xda\x58\xf4\xc4\xc7\x7b\xb4\x1a\x37\x83\x1d\xb8\x21\xa6\xef\x30\x94\xa0\x26\x4a\x93\x5e\x46\x8f\x72\x90\xac\x3a\x0c\x00\x2a\x10\x32\x6d\x73\x52\x43\x43\x7b\x61\x2b\x8c\xae\xa2\x20\xa7\x03\xb7\x80\x12\x2a\x62\x0e\xaa\x17\xb5\x53\xea\xe3\xbd\x97\xba\x03\x42\xc9\x4e\x50\xf6\xe0\x1e\xb3\x5a\x61\x20\x61\x7a\xc5\x0e\x71\x8e\x3f\x80\xc1\x75\x66\x33\x08\x0e\x3f\xa5\x09\xbd\x48\x21\x99\x92\xe2\xfc\x32\x06\xab\xc8\x1b\x2a\x0c\x90\x2c\xe0\x1d\xe1\xb9\x85\xb5\x6a\xa9\x65\x87\x89\x36\x63\xa8\xee\x80\x38\x81\x9d\x06\x34\x12\x75\x39\xd5\x53\xd2\x51\x6b\x41\x4b\x74\xac\x5b\xed\x12\x6a\xa2\x07\xb2\xa1\xcc\xf6\xa1\x72\x20\xb7\x1c\x55\x8b\xa4\x04\x5d\x9c\x7e\x94\x59\x7e\xa4\x16\x88\x72\x59\x09\x8f\x94\x59\xcf\xfa\xa5\xca\x69\xf8\x4f\xcf\x35\xc4\x4b\x9d\x7e\x42\x35\x8d\x01\x1b\x62\xc8\x3f\x90\x13\x17\xc2\xf9\xaa\xae\xa1\x8e\xb2\x65\x08\x32\xa2\xc1\xf6\x5a\x42\x4d\x76\xe7\x59\x42\x8f\xbf\xde\x40\xd3\x0b\xc2\xe3\x8c\x0f\xeb\x0c\x79\x5d\x70\x59\xc3\x23\xd4\x8e\xab\xf9\xae\x12\xaf\x5d\xea\x0f\x50\x99\x12\x7d\x2b\x9f\x05\xcb\x94\xf8\xfd\xb1\x7a\xb9\x2f\x41\x3b\xd4\x49\xd2\xd2\x07\x78\xe7\xf8\x65\x98\xfe\x79\xe4\x6d\xd6\xd6\xb9\xab\x50\x79\x5c\x11\x72\xa2\x4c\x7e\x89\xef\x7c\x08\xc0\x7c\xf0\x54\x3e\xd8\x61\x73\x83\x20\x78\x33\x14\xf8\xcf\x28\xe0\x2b\xd9\x6e\x89\xe4\x02\x15\x91\x37\x83\x7e\x33\x0a\x4c\xd5\xc5\x57\xe5\x18\xd9\xdb\x11\xe8\x0a\x25\x6b\x6b\xb2\x45\x1d\x56\xde\xa3\x62\x64\xeb\xf4\x5b\xa1\x88\x94\x26\xdb\xd8\x04\x2b\xf4\x0a\xf9\x29\x83\x59\xb2\x8a\xff\x52\x17\xb6\x51\x8d\x50\xda\x67\xc1\xca\xa2\x60\x61\xb2\x1d\x6c\xfd\xbd\x05\xc1\x13\x64\x3b\xf8\x04\x17\xbc\x5e\x33\xd4\x48\xcc\xe6\xc4\x20\xeb\x1b\xfc\xbb\x84\x8b\x86\x56\x1d\xe3\x80\xf1\x4e\x9e\xfb\x4f\x72\x31\x5b\x88\x7b\x6f\x16\x88\xdd\xae\x5f\xc3\x51\xf6\xae\xd1\x48\xee\x6a\x38\xde\xe1\x43\x32\x44\x4c\x68\x5e\xca\xbf\x7d\xfc\x78\x8f\x01\x93\x9c\xb8\xac\xd5\xc9\x24\xd3\xb0\x89\x78\x7c\xf8\xe7\xbb\x64\xc4\xec\x06\x51\x64\x27\x7b\xc6\x92\x9c\x24\xee\xe2\xc7\x4f\x49\xd1\x98\xb3\xb4\xf4\xb1\xc0\x02\x86\x2f\x8a\x7f\x51\x21\xfc\x00\x1e\xad\xa6\x38\x4c\x9b\xe4\x9b\xbb\x55\xa9\xa8\x52\x56\x95\xb7\x15\x49\xdb\x64\xb3\x2a\xe1\xf6\xf6\x19\x19\x49\x61\x6c\xbd\x65\xb7\xb7\x6f\xfe\xf4\x9b\x05\xd6\x6d\x8d\xf4\xfe\xe2\xc6\x4f\x49\xc1\x94\x50\x7a\xab\x9a\xc6\x71\x55\x85\xbb\x9d\xfc\x95\xbb\x1b\x9b\x08\x49\xb3\x54\xa4\x9b\x67\xb4\x52\xbb\x9e\x0b\x27\x63\xaf\xc6\xeb\x53\x32\xce\x16\xf8\x1c\xdc\x70\xc1\xbd\xc6\x0c\xc3\x24\xe6\x15\x9e\x9f\xae\xb4\x5e\x66\xf0\x0b\x3d\x52\x87\x1f\x07\xc3\x3d\x18\xda\xa1\x49\xeb\x2b\x13\xfa\xbc\x5d\x63\x68\x0e\x01\x11\x72\x32\x4c\xf3\xce\x3f\x0d\xf3\x31\x32\xbf\xbf\xa4\x22\x2f\x6f\xf3\x65\x76\x82\x5b\xd0\xd4\x02\xb2\x98\x8d\x83\x7b\xae\x3d\xdc\xe2\x9b\x6f\xb9\x4f\xe7\x9c\x58\xdd\xc3\x02\xe3\x9e\xba\x8e\xd3\x31\xeb\x69\xb8\x0d\x53\x4f\x49\x51\x48\xe5\x7d\xbf\x14\x42\xcb\x60\x25\x47\xd1\xd3\xdb\x53\x32\x8a\x29\x0a\xac\x4c\x3f\xf5\x42\xfc\x83\xda\x83\xf1\x53\xc6\xd6\xaa\xb7\x7e\x8c\x16\x32\x55\x08\xb5\x51\x64\x99\x8a\x9c\xa4\xac\x5c\x96\xc9\x04\x95\x7b\xa4\x57\xbb\x5f\x00\x3b\x06\xf0\x26\x79\x64\xba\x97\x5e\xfe\x40\xf1\xfb\x66\x67\x77\x6e\x04\x7d\x00\xa7\x46\x77\xb6\x07\x25\xfd\x68\x9c\x9d\x85\x60\x59\x54\x7f\x5e\xe6\xd4\x9e\xbb\xf3\x94\x4b\x98\x99\x71\x58\xc3\x31\xa4\x40\x8c\x62\x4c\x83\xa2\xf0\x4d\x74\xe1\xf7\x99\xad\x6b\xba\xe9\x4e\x80\x37\xb9\x06\x6c\x76\xcd\x56\xaa\xeb\x30\x5f\x14\x67\x0e\x4d\xeb\xa4\xf9\xd3\x9b\x1b\xf8\x99\x97\xa6\x9c\x39\xf1\xc6\x3a\x1f\xb9\xd1\xd4\x59\x97\x97\x2b\x8e\x40\xa2\x9a\xea\x13\x97\xf8\x7a\x39\xb6\x67\x12\xd8\x22\xb8\x88\x9f\xe0\xb2\x7f\x5c\x67\x77\xa6\xad\x53\x34\xbe\x47\xf6\xf5\x86\x75\x66\xa7\xda\x0c\xa6\xbd\x16\xe7\xad\xe1\xb8\xfb\xe3\x6a\xf9\x9e\x3e\xc0\x5b\xd5\xb6\x54\xd6\x98\xe9\xde\x8b\x7e\xdf\x2b\xf1\xf6\xd6\xd5\xe0\x40\xfc\x41\xbd\x55\x6d\x27\xc0\xc2\x66\xb6\x0f\x06\xd2\x6c\xd7\x79\xec\xbb\xae\xba\xa7\x47\x08\x5b\xa3\xee\x65\x50\x64\xd7\x95\x7f\xe9\x9b\xf9\x6a\xa6\xa4\xa5\x5c\x9a\xcc\xb7\x5e\x20\x00\xcf\x8d\x7e\x2d\x9e\x29\x1e\x72\x72\x24\x5c\x92\x8e\x72\xed\x89\x36\xa4\x56\xe3\x7e\xc9\x1b\x72\xc4\xed\x34\xac\x9b\x6e\xa6\x4e\xbe\x6b\x29\x9d\x69\xc7\x79\x44\x10\xdf\x03\x8d\xef\x3f\x66\xdd\xc1\x05\x3e\x62\xbf\x6c\xf6\x0d\xb6\x17\xbb\xbe\xa9\x7e\xe2\x02\x3e\x9d\x3b\x98\xb4\x02\xee\xc4\xea\xde\x97\x58\x6c\xe2\x26\x81\xeb\xd0\xe9\x75\xd4\x1e\xca\xbf\x72\x9d\xe1\x43\xf0\xcc\x92\xc6\xae\x0f\x99\x28\x3d\x20\x18\x7a\x28\xc4\xb2\x25\xc7\xf2\xaa\x7f\x44\xeb\x8c\xbd\xd6\x95\x69\x2e\x0c\x8c\xd5\x5c\xee\x4b\xf7\x98\x35\x36\x8f\x78\x6d\x26\x56\x9b\x41\x38\x50\x83\xdd\xcc\xc5\x89\xc7\x12\x5b\xe9\xb8\xd7\xd9\xc4\x60\xf0\xe0\xe9\xd7\x50\x59\x93\x63\xd4\x3b\x3e\x03\x6e\xda\x16\x0e\x3e\x0b\x1c\x2f\xdc\x90\xf7\xaf\xe6\x38\xd3\x2b\x74\xd2\x51\xcf\x1b\x1c\x43\xf5\xfe\xe2\x9a\xa3\xeb\xb8\x27\x9e\xc1\x1f\x4e\x7e\x7e\xf8\xea\x3b\xf1\x6a\x6f\xfa\x5d\x96\xa4\x29\x6e\x2a\xce\xd1\xe3\x0c\x26\x57\xcd\xf5\x8a\x81\x79\x33\x02\xbe\xd2\x04\x63\x02\xe3\x31\x77\xb1\x52\x46\xa7\x9a\x63\x39\x39\xd7\x1c\xcb\xf1\x04\x73\x2c\x27\x67\x98\x79\x1a\x4c\xa3\x5e\x49\x97\xc1\x43\x46\x5f\xe7\xf0\x77\xb2\xe6\x02\xd0\x87\xef\xfa\xc9\x0b\xf1\xf9\xe3\x55\x28\x1e\x7d\x53\xbd\x15\x40\xf5\x7b\xff\x01\xc5\x64\xa1\x22\x0d\xb5\xcb\xd5\xfd\xf2\xef\x6a\x77\xdf\xd1\x93\xcc\x22\xbe\x49\x12\xfe\x42\x09\x53\xf2\xc7\x47\xd7\xa6\x4c\x80\xac\x4a\x9f\x5b\x00\x17\x67\x7e\xf3\x7a\x29\x8b\x4b\x00\xb9\x23\x36\x26\x56\x27\x22\x2e\xc9\x17\x39\xa8\x11\xbe\x71\xc2\x1e\x1e\xa7\x27\xb1\x49\xc0\x24\x59\x59\x16\x9b\xe4\x12\x33\x6e\x03\xc8\xd2\xfa\x36\x9e\x64\x4b\x93\xad\x5f\x8e\x73\x63\x65\xf9\x77\xee\x1a\x3e\x2e\x09\x1f\x8b\x0b\x4c\x03\xb8\x28\xc8\x27\xcd\x5b\x7f\x92\x33\x1d\x65\x93\x03\x19\xd6\x34\xbc\x55\xbe\x52\x24\x3f\xa7\xe6\x15\xca\x48\xcd\xab\x3f\x24\x93\x4c\x0f\x15\xa5\xe1\xb2\x76\x52\x72\xaf\xeb\x66\x21\x98\xc7\x82\xe9\x2c\x8c\xa7\x74\x25\x72\xd2\x9a\xfd\xbc\x30\xc5\x7c\x16\x58\x1c\xa8\x61\x0a\x4f\x4e\x93\x5a\x1f\x55\x9e\x18\xd3\xc4\x87\xce\x86\x0b\xd0\xf0\x37\x72\x9d\x16\x8d\xe1\xe7\x61\x32\x25\x26\x6f\xe2\x22\x15\x00\xec\xa8\x01\x3c\x4b\x66\xc3\x9e\xb0\xc1\x9a\x3d\xce\xba\xd2\xb0\x8c\x20\x7c\x9f\xf6\x92\xf0\x18\x3a\x27\xf0\x65\x10\x51\x2e\xae\xbf\xf0\x68\x8d\xa5\x3a\xec\x5b\x0d\xe8\xf2\x9d\x62\x99\x55\xfe\x9b\x4d\xc6\x94\x28\xde\xdc\xba\x40\xce\xc9\x38\x8b\x36\x2f\xde\xdc\x62\x94\x6f\x36\xcf\xb1\x06\x59\xaf\x33\xfe\x15\x6c\x83\xbe\x81\xe1\x07\x38\x85\x82\x30\xd6\x03\x17\x22\x79\xd0\x29\x77\x00\xf2\x81\xfc\xfd\xa7\x1f\xd1\xbf\xd7\x9c\x61\xc9\x87\xcf\x89\xfb\xc1\xbe\xe3\xf2\x4a\xe8\x44\x0f\xaf\xc5\x0b\x64\xcf\x82\x82\x84\x72\xf7\x43\x5d\x0f\xba\x21\x8a\xcd\x6a\x24\xad\xd7\x6b\x5f\x66\x8c\xd5\x39\x31\xd0\x6d\x26\x15\xc6\xf4\xc2\x5e\xf6\xb2\x69\xdd\xc9\x92\xec\xf3\xcf\xa9\xf9\xea\x2a\x87\xcf\x86\x6c\x64\x80\x15\x03\x28\x3b\x60\xbd\x30\x56\x57\x7b\x9f\x85\x21\x8f\xa3\x9a\x61\xb1\xe9\x2c\xb9\x34\xa0\x6d\xe6\x05\xe6\x6e\xe5\x66\xa9\xcb\xf2\x04\x33\x05\xa6\x79\x10\x21\x35\xd0\xb9\xef\x29\xff\xef\x77\x94\xb0\xee\xcb\x97\x64\x82\xc1\x33\x75\xff\x17\x19\x8b\x8b\xab\x98\xbe\xfe\x24\x59\xf9\x2a\x21\x65\xe9\x96\x97\x25\x49\x36\x59\xf9\x6a\xe3\xfa\xe9\x3f\x26\x93\x5d\xcf\xfd\x63\x01\xb9\xfe\x2f\x00\x00\xff\xff\xe6\x74\x28\x8b\xad\x1a\x00\x00" +var _runtimePluginsLinterLinterLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x59\x5f\x8f\xa4\xb8\x11\x7f\x9f\x4f\x61\xa1\x20\xd1\x3b\xc0\xec\x5e\x2e\x2f\x48\xad\xe8\xb2\xb9\x8b\x14\xed\x9f\x48\xbb\x51\x1e\x76\xf7\x22\xb7\x29\xba\x7d\x63\x6c\x62\x9b\xee\xe9\x8c\xf6\xbb\x47\x65\x1b\xda\xd0\x30\x3b\xb9\xbb\x96\x06\x8c\x29\xff\xea\x7f\xb9\xcc\x08\xc5\xa8\x20\x2d\x67\x5a\x91\x2d\xe1\x6d\xa7\xb4\xcd\x12\xf7\x9c\x6c\x6e\xfc\x5b\xdd\x4b\xcb\x5b\x88\xde\x87\x99\x91\xa2\xe1\x02\x3a\x6a\x0f\x11\x09\x3e\xde\x0d\xf3\x23\xa1\x39\x80\x10\x73\x46\x77\x6e\x76\xa4\xd9\xf5\x4d\x03\xfa\x8a\xc8\x4f\x8f\x54\x4c\xc9\x86\xef\xaf\xa8\xfc\x74\xb2\xb9\x09\x64\x82\x4b\x0b\xda\x90\x2d\x79\xfc\x7a\x73\x53\x14\x84\x69\xa0\x16\x0c\xa1\xe1\x15\x01\x69\xf5\x39\x27\x8c\x0a\x41\x1a\xad\x5a\x72\xe2\xf6\xc0\x25\xa1\x92\x70\xc9\x2d\xa7\x82\xff\x97\x5a\xae\x24\x69\x7a\xc9\x70\x90\x13\xa9\x2c\x62\xd5\x5c\x03\xb3\xe2\x4c\xa8\x1d\x68\x89\x50\xb4\x26\x68\x9c\x9b\xa2\x40\x1a\x49\x5b\xa8\xdc\x95\xa8\x86\xd8\x03\x04\xbe\xf8\x0e\xcd\x63\xcf\x1d\x54\xe3\x88\x58\x45\xd8\x01\xd8\x3d\x69\x94\xc6\x87\xde\xc4\x0b\x58\x5b\x57\xa4\xa5\x5c\x0e\xc2\x77\x5a\x31\x30\x86\xd8\x03\x8a\x60\x08\x3c\x00\xeb\x2d\xd4\x48\x4c\xf5\xde\x54\x78\xed\x5b\x90\xd6\x20\x5a\x47\x8d\xbb\x5f\xc4\x18\x10\x70\x01\xfe\x90\x5f\xda\x20\x8d\x06\xf4\x42\x20\x66\xbd\xd6\x20\xad\x93\xd3\x29\x33\xa1\xaf\x57\xe9\xbd\x85\x94\x3e\x8f\x8b\x40\x6b\xa5\x1b\xa5\x5b\x6a\x2b\x72\x50\x27\x2f\x96\x36\x10\x09\x75\xc7\x54\xdb\x71\x11\xe9\xa7\x7a\xdb\xf5\x76\x60\x9a\x36\xde\x62\x39\x49\x45\x85\x6b\x80\xc8\xbe\xdd\x81\xce\x49\xda\x56\x9e\xc5\xdd\x89\x6a\xc9\xe5\x9e\xb4\x60\x0c\xdd\x3b\xde\xca\x20\xb5\xb1\xe8\x89\xf7\x1f\xd0\x6a\xdc\x0c\x76\xe0\x86\x98\xbe\xc3\x50\x82\x9a\x28\x4d\x7a\x19\x3d\xca\x81\xb3\xea\x30\x00\xa8\x40\x91\x69\x9b\x93\x1a\x1a\xda\x0b\x5b\x61\x74\x15\x05\x39\x1d\xb8\x05\xe4\x50\x11\x73\x50\xbd\xa8\x9d\x52\xef\x3f\x78\xae\x3b\x20\x94\xec\x04\x65\xf7\xee\x31\xab\x15\x06\x12\xa6\x57\xec\x10\xe7\xf8\x03\x18\x5c\x67\x36\x03\xe3\xf0\x53\x9a\xd0\x0b\x17\x92\x29\x29\xce\xcf\x03\x58\x95\xbc\xa1\xc2\x00\xc9\x82\xbc\xa3\x78\x6e\x61\xad\x5a\x6a\xd9\x61\xa2\xcd\x18\xaa\x3b\x20\x8e\x61\xa7\x01\x8d\x44\x5d\x4e\xf5\x94\x74\xd4\x5a\xd0\x12\x1d\xeb\x56\xbb\x84\x9a\xe8\x81\x30\x94\xd9\x3e\x54\x0e\x44\xcb\x51\xb5\x88\x4b\xd0\xc5\xe9\x47\x99\xe5\x47\x6a\x81\x28\x97\x95\xf0\x40\x99\xf5\xd0\xcf\x55\x4e\xc3\x7f\x7a\xae\x21\x5e\xea\xf4\x13\xaa\x69\x0c\xd8\x10\x43\xfe\x81\x9c\xb8\x10\xce\x57\x75\x0d\x75\x94\x2d\x43\x90\x11\x0d\xb6\xd7\x12\x6a\xb2\x3b\xcf\x12\x7a\xfc\xf5\x06\x9a\x5e\x10\x1e\x67\x7c\x58\x67\xc8\xcb\x82\xcb\x1a\x1e\xa0\x76\xa8\xe6\x9b\x4a\xbc\x74\xa9\x3f\x88\xca\x94\xe8\x5b\xf9\xa4\xb0\x4c\x89\xdf\x5f\x56\xcf\xf7\x39\xd2\x0e\x75\x92\xb4\xf4\x1e\xde\x38\xbc\x0c\xd3\x3f\x8f\xbc\xcd\xda\x3a\x77\x15\x2a\x8f\x2b\x42\x4e\x94\xc9\x2f\xf1\x9d\x0f\x01\x98\x0f\x9e\xca\x07\x3b\x6c\x6e\x50\x08\xde\x0c\x05\xfe\x13\x32\xf8\x42\xb6\x5b\x22\xb9\x40\x45\xe4\xcd\xa0\xdf\x8c\x02\x53\x75\xf1\x55\x39\x46\xf6\x76\x14\x74\x85\x92\xb5\x35\xd9\xa2\x0e\x2b\xef\x51\x31\xb2\x75\xfa\xad\x50\x44\x4a\x93\x6d\x6c\x82\x15\x7a\x85\x78\xca\x60\x96\xac\xca\x7f\xa9\x0b\xdb\xa8\x46\x28\xed\xb3\x60\x65\x51\xb0\x30\xd9\x0e\xb6\xfe\xd6\x82\xe0\x09\xb2\x1d\x7c\x82\x0b\x5e\xae\x19\x6a\x24\x66\x73\x62\x90\xf5\x0d\xfe\x5d\xc2\x45\x43\xab\x8e\x71\xc0\x78\x27\xcf\xfd\x27\xb9\x98\x2d\xc4\xbd\x37\x0b\xc4\x6e\xd7\xaf\xe1\x28\x7b\xd7\x68\x24\x77\x35\x1c\xef\xf0\x21\x19\x22\x26\x34\x2f\xe5\xdf\xde\xbf\xff\x80\x01\x93\x9c\xb8\xac\xd5\xc9\x24\xd3\xb0\x89\x30\xde\xfd\xf3\x4d\x32\xca\xec\x06\x51\x64\x27\x7b\xc6\x92\x9c\x24\xee\xe2\xc7\x8f\x49\xd1\x98\xb3\xb4\xf4\xa1\xc0\x02\x86\x2f\x8a\x7f\x51\x21\xfc\x00\x1e\xac\xa6\x38\x4c\x9b\xe4\xab\xbb\x55\xa9\xa8\x52\x56\x95\xb7\x15\x49\xdb\x64\xb3\xca\xe1\xf6\xf6\x09\x1e\x49\x61\x6c\xbd\x65\xb7\xb7\xaf\xbe\xff\xcd\x0c\xeb\xb6\x46\x7a\x7f\x71\xe3\xc7\xa4\x60\x4a\x28\xbd\x55\x4d\xe3\x50\x55\xe1\x6e\x27\x7f\xe5\xee\xc6\x26\x4c\xd2\x2c\x15\xe9\xe6\x09\xad\xd4\xae\xe7\xc2\xf1\xd8\xab\xf1\xfa\x98\x8c\xb3\x05\x3e\x07\x37\x4c\xe4\xfe\xf3\x05\xb0\x28\x66\x98\x18\x2d\x31\x64\x78\x7e\xbc\x52\x7e\x59\xa8\x5f\xe8\x91\x3a\x35\x70\x30\xdc\x83\xbd\x9d\x50\x69\x7d\x65\x49\x9f\xbe\x6b\x80\xe6\x10\x24\x42\x24\xc3\x34\xef\xfc\xd3\x30\x1f\x4b\xe6\xb7\x99\x54\xe4\xe5\x6d\xbe\x0c\x27\xb8\x05\x4d\x2d\x20\xc4\x6c\x1c\xbc\x74\xed\xe8\x16\xdf\x7c\xcd\x7d\x56\xe7\xc4\xea\x1e\x16\x80\x7b\xea\x1a\x4f\x07\xd6\xd3\x70\x1b\xa6\x1e\x93\xa2\x90\xca\x87\xc0\x52\x24\x2d\x0b\x2b\x39\xb2\x9e\xde\x1e\x93\x91\x4d\x51\x60\x81\xfa\xa9\x17\xe2\x1f\xd4\x1e\x8c\x9f\x32\xb6\x56\xbd\xf5\x63\xb4\x90\xa9\x42\xc4\x8d\x2c\xcb\x54\xe4\x24\x65\xe5\x32\x4f\x26\xa8\xdc\x23\xbd\xda\xfd\x02\xd8\x38\x80\x37\xc9\x03\xd3\xbd\xf4\xfc\x07\x8a\xdf\x37\x49\xbb\x73\x23\xe8\x3d\x38\x35\xba\xb3\x3d\x28\xe9\x47\xe3\xec\x2c\x04\xcb\x22\x8e\xe3\x18\xa9\x3d\x77\xe7\x29\x4a\x98\x99\x21\xac\xc9\x31\xa4\x40\x2c\xc5\x98\x06\x45\xe1\x7b\xe9\xc2\x6f\x37\x5b\xd7\x7b\xd3\x9d\x00\x6f\x72\x0d\xd8\xf3\x9a\xad\x54\xd7\x61\xbe\xc8\xce\x1c\x9a\xd6\x71\xf3\x87\x38\x37\xf0\x33\xcf\x4d\x39\x73\xe2\x8d\x75\x3e\x72\xa3\xa9\xb3\x2e\x2f\x57\x1c\x81\x44\x35\xd5\x27\x2e\xf1\xf5\x72\x6c\xcf\x38\xb0\x45\xe1\x22\x3c\xc1\x65\xff\xb0\x0e\x77\xa6\xad\x53\x34\xbe\x47\xf6\xf5\x86\x75\x66\xa7\xda\x0c\xa6\xbd\x66\xe7\xad\xe1\xd0\xfd\xa9\xb5\x7c\x4b\xef\xe1\xb5\x6a\x5b\x2a\x6b\xcc\x74\xef\x45\xbf\xfd\x95\x78\x7b\xed\x4a\x71\x20\x7e\xa7\x5e\xab\xb6\x13\x60\x61\x33\xdb\x0e\x03\x69\xb6\xeb\x7c\x8b\xe5\x35\xd8\x75\xd5\x07\x7a\x84\xb0\x4f\xea\x5e\x06\x75\x76\x5d\xf9\x97\xbe\x99\x63\x30\x25\x2d\xe5\xd2\x64\xbe\x0f\x03\x01\x78\x88\xf4\x6b\xf1\x80\x71\x9f\x93\x23\xe1\x92\x74\x94\x6b\x4f\xb4\x21\xb5\x1a\x37\x4f\xde\x90\x23\xee\xad\x61\xdd\x74\x67\x75\xfc\x5d\x7f\xe9\x0c\x3c\xce\xa3\x04\xf1\x3d\xd0\xf8\x66\x64\xd6\x2a\x5c\xc4\x47\xd9\x2f\x3b\x7f\x83\xbd\xc6\xae\x6f\xaa\x9f\xb8\x80\x8f\xe7\x0e\x26\x7d\x81\x3b\xbe\xba\xf7\x25\x96\x9c\xb8\x63\xe0\x3a\xb4\x7d\x1d\xb5\x87\xf2\xaf\x5c\x67\xf8\x10\xfc\xb3\xa4\xb1\x6b\x4a\x26\x4a\x0f\x12\x0c\x0d\x15\xca\xb2\x25\xc7\xf2\xaa\x99\x44\xeb\x8c\x8d\xd7\x95\x69\x2e\x00\xc6\x6a\x2e\xf7\xa5\x7b\xcc\x1a\x9b\x47\x58\x9b\x89\xd5\x66\x22\x1c\xa8\xc1\xd6\xe6\xe2\xc4\x63\x89\x7d\x75\xdc\xf8\x6c\x62\x61\xf0\x14\xea\xd7\x50\x59\x93\x63\xd4\x48\x3e\x21\xdc\xb4\x47\x1c\x7c\x16\x10\x2f\x68\x88\xfd\xab\x11\x67\x7a\x85\xb6\x3a\x6a\x80\x83\x63\xa8\xde\x5f\x5c\x73\x74\xed\xf7\xc4\x33\xf8\xc3\xc9\x4f\xf7\x5f\x7c\x5b\x5e\xed\x4d\xbf\xcb\x92\x34\xc5\xad\xc5\x39\x7a\x9c\xc1\x14\xab\xb9\x5e\x31\x30\x6f\x46\x81\xaf\x34\xc1\x98\xc0\x78\xcc\x5d\xac\x94\xd1\x11\xe7\x58\x4e\x0e\x39\xc7\x72\x3c\xce\x1c\xcb\xc9\x81\x66\x9e\x06\xd3\xa8\x57\xd2\x65\xf0\xae\x5b\xcb\xe1\x6f\x64\xcd\x45\x40\x1f\xbe\xeb\xc7\x30\x94\xcf\x9f\xb5\x42\xf1\xe8\x9b\xea\xb5\x00\xaa\xdf\xfa\xaf\x29\x43\x02\x84\xfc\x70\xb5\xbf\xfc\xbb\xda\x7d\xe8\xe8\x49\x66\x11\x6a\x92\x84\xbf\x50\xc6\x94\xfc\xf1\xc1\xb5\x2a\x13\x31\x56\x79\xcf\xf5\xc7\xc5\x99\xdf\xc0\xe2\xda\x36\x7e\x38\xfc\x26\x64\x38\x95\x7d\x7a\xf5\xc5\xaf\xff\xf4\xdd\x30\xf8\xe3\x30\xf8\x7e\x18\xfc\xe9\x4b\x04\xee\x8e\xea\x98\x93\x9d\x88\x44\x48\x3e\xcb\xa1\x86\x87\x6f\xa5\xb0\x87\x87\xe9\x89\x6e\x12\x6b\x49\x56\x96\xc5\x26\xb9\x84\x9b\xdb\x41\xb2\xb4\xbe\x8d\x27\xd9\xd2\x64\xeb\x97\xe3\xdc\x58\x94\xfe\x9d\xbb\x8e\x91\x4b\xc2\xc7\xba\x04\xd3\xd8\x2f\x0a\xf2\x51\xf3\xd6\x9f\x08\x4d\x47\xd9\xe4\x60\x87\xe5\x10\x6f\x95\x2f\x32\xc9\xcf\xa9\x79\x81\x3c\x52\xf3\xe2\x0f\xc9\xa4\x48\x84\x62\xd4\x70\x59\x3b\x2e\xb9\xd7\x75\xb3\x90\x07\x63\xad\x75\xee\xc0\xd3\xbe\x12\x39\x69\xcd\x7e\x5e\xd3\x62\x9c\x05\x88\x03\x35\x4c\xe1\x09\x6c\xb2\x4d\x44\x45\x2b\x96\x69\xe2\x70\x67\xc3\x05\xd1\xf0\x37\xa2\x4e\xeb\xcd\xf0\xf3\x62\x32\x25\x26\x6f\x40\x18\xe0\x8d\xfb\xb2\xb2\xf4\x8d\xe1\x19\xd8\x71\x85\x74\x7c\x38\xd3\xaa\x7c\xa3\xf6\xd9\x8e\x1a\xc0\xc3\x6d\x36\xec\x4b\x9b\x9c\x8c\x73\xae\x38\x6d\xe6\xca\x5f\x2f\x41\xb1\xa6\x8b\x96\x25\x0c\xa9\xe2\xb5\xc4\xa3\xf4\x9c\xc0\x57\x6f\xd4\x62\x71\xfd\x05\xa3\x35\x96\xea\xb0\xdd\x36\xa0\xcb\x37\x8a\x65\x56\xf9\xef\x4e\x19\x53\xa2\x78\x75\xeb\x92\x38\x27\xe3\x2c\xfa\xbb\x78\x75\x8b\xe9\x38\xd3\x69\x06\x0d\xb2\x5e\x07\xfe\x15\xb0\x41\xdf\x00\xf8\x0e\x4e\xa1\x8e\x65\x43\xb9\x68\xcd\x3e\x0f\x1a\xe5\x8e\x7d\x3e\x10\xbf\xfd\xf8\x23\x46\xd6\x35\x2e\x2c\x45\xcf\x53\xcc\x7e\xb0\x6f\xb8\x9c\xb1\x9c\xe8\xe0\x35\x78\x06\xe7\x59\x28\x91\x50\xa1\x7f\xa8\xeb\x41\x2f\x94\x61\xb3\x1a\x7f\xeb\x5b\x8c\x2f\x6f\xc6\xea\x9c\x18\xe8\x36\x93\xca\x66\x7a\x61\x2f\xdb\xef\xb4\xde\x65\x49\xf6\xe9\xe7\xd4\x7c\x71\x15\xcb\x67\x61\x36\x02\x60\xa5\x02\xca\x0e\x58\xa7\x8c\xd5\xd5\xde\x67\x7f\xa8\x1f\x51\xad\xb2\xd8\x2d\x97\x5c\x1a\xd0\x36\xf3\x0c\x73\xb7\x72\xb3\xd4\x18\x7a\x82\x99\x02\xd3\x1c\x88\x24\x35\xd0\xb9\xef\x41\xff\xef\x77\xa0\xb0\xee\xf3\xe7\x64\x22\x83\x07\x75\xff\xd7\x19\x8b\x9a\xab\xd4\xbe\xee\x25\x59\xf9\x22\x21\x65\xe9\x96\x97\x25\x49\x36\x59\xf9\x62\xe3\x0e\x02\xdf\x25\x93\x8d\xda\xfd\x63\x04\x51\xff\x17\x00\x00\xff\xff\xb2\x3e\x43\x48\x8b\x1b\x00\x00" func runtimePluginsLinterLinterLuaBytes() ([]byte, error) { return bindataRead( diff --git a/internal/info/infobuffer.go b/internal/info/infobuffer.go index ca7de9cc..89b926f2 100644 --- a/internal/info/infobuffer.go +++ b/internal/info/infobuffer.go @@ -2,8 +2,14 @@ package info import ( "fmt" + "strings" "github.com/zyedidia/micro/internal/buffer" + luar "layeh.com/gopher-luar" + + "github.com/zyedidia/micro/internal/config" + ulua "github.com/zyedidia/micro/internal/lua" + "github.com/zyedidia/micro/internal/screen" ) // The InfoBuf displays messages and other info at the bottom of the screen. @@ -113,6 +119,8 @@ func (i *InfoBuf) Prompt(prompt string, msg string, ptype string, eventcb func(s i.Buffer.Insert(i.Buffer.Start(), msg) } +// YNPrompt creates a yes or no prompt, and the callback returns the yes/no result and whether +// the prompt was canceled func (i *InfoBuf) YNPrompt(prompt string, donecb func(bool, bool)) { if i.HasPrompt { i.DonePrompt(true) @@ -126,6 +134,63 @@ func (i *InfoBuf) YNPrompt(prompt string, donecb func(bool, bool)) { i.YNCallback = donecb } +// PlugPrompt provides a plugin interface for calling "Prompt" with the appropriate Lua callbacks +func (i *InfoBuf) PlugPrompt(prompt string, msg string, ptype string, eventcb string, donecb string) { + eventLuaFn := strings.Split(eventcb, ".") + doneLuaFn := strings.Split(donecb, ".") + var luaEventcb func(string) + var luaDonecb func(string, bool) + + if len(eventLuaFn) == 2 { + plName, plFn := doneLuaFn[0], doneLuaFn[1] + pl := config.FindPlugin(plName) + if pl != nil { + luaEventcb = func(resp string) { + _, err := pl.Call(plFn, luar.New(ulua.L, resp)) + if err != nil && err != config.ErrNoSuchFunction { + screen.TermMessage(err) + } + } + } + } + + if len(doneLuaFn) == 2 { + plName, plFn := doneLuaFn[0], doneLuaFn[1] + pl := config.FindPlugin(plName) + if pl != nil { + luaDonecb = func(resp string, canceled bool) { + _, err := pl.Call(plFn, luar.New(ulua.L, resp), luar.New(ulua.L, canceled)) + if err != nil && err != config.ErrNoSuchFunction { + screen.TermMessage(err) + } + } + } + } + + i.Prompt(prompt, msg, ptype, luaEventcb, luaDonecb) +} + +// PlugYNPrompt provides a plugin interface for calling "YNPrompt" with the appropriate Lua callbacks +func (i *InfoBuf) PlugYNPrompt(prompt string, donecb string) { + doneLuaFn := strings.Split(donecb, ".") + var luaDonecb func(bool, bool) + + if len(doneLuaFn) == 2 { + plName, plFn := doneLuaFn[0], doneLuaFn[1] + pl := config.FindPlugin(plName) + if pl != nil { + luaDonecb = func(resp bool, canceled bool) { + _, err := pl.Call(plFn, luar.New(ulua.L, resp), luar.New(ulua.L, canceled)) + if err != nil && err != config.ErrNoSuchFunction { + screen.TermMessage(err) + } + } + } + } + + i.YNPrompt(prompt, luaDonecb) +} + // DonePrompt finishes the current prompt and indicates whether or not it was canceled func (i *InfoBuf) DonePrompt(canceled bool) { hadYN := i.HasYN diff --git a/internal/shell/job.go b/internal/shell/job.go index 8c29bb9c..010adebd 100644 --- a/internal/shell/job.go +++ b/internal/shell/job.go @@ -115,11 +115,7 @@ func luaFunctionJob(fn string) func(string, ...interface{}) { return nil } return func(output string, args ...interface{}) { - var luaArgs []lua.LValue - luaArgs = append(luaArgs, luar.New(ulua.L, output)) - for _, v := range args { - luaArgs = append(luaArgs, luar.New(ulua.L, v)) - } + luaArgs := []lua.LValue{luar.New(ulua.L, output), luar.New(ulua.L, args)} _, err := pl.Call(plFn, luaArgs...) if err != nil && err != config.ErrNoSuchFunction { screen.TermMessage(err) diff --git a/internal/shell/terminal.go b/internal/shell/terminal.go index 608271d4..18ff6f6b 100644 --- a/internal/shell/terminal.go +++ b/internal/shell/terminal.go @@ -102,11 +102,7 @@ func (t *Terminal) Start(execCmd []string, getOutput bool, wait bool, callback s pl := config.FindPlugin(plName) if pl != nil { t.callback = func(out string) { - var luaArgs []lua.LValue - luaArgs = append(luaArgs, luar.New(ulua.L, out)) - for _, v := range userargs { - luaArgs = append(luaArgs, luar.New(ulua.L, v)) - } + luaArgs := []lua.LValue{luar.New(ulua.L, out), luar.New(ulua.L, userargs)} _, err := pl.Call(plFn, luaArgs...) if err != nil { screen.TermMessage(err) diff --git a/runtime/plugins/comment/comment.lua b/runtime/plugins/comment/comment.lua index 0b34a4dc..d4c5b7e3 100644 --- a/runtime/plugins/comment/comment.lua +++ b/runtime/plugins/comment/comment.lua @@ -74,7 +74,7 @@ function commentSelection(bp, startLine, endLine) end end -function comment(bp) +function comment(bp, args) if bp.Cursor:HasSelection() then if bp.Cursor.CurSelection[1]:GreaterThan(-bp.Cursor.CurSelection[2]) then local endLine = bp.Cursor.CurSelection[1].Y diff --git a/runtime/plugins/linter/linter.lua b/runtime/plugins/linter/linter.lua index e5969981..e94a0b58 100644 --- a/runtime/plugins/linter/linter.lua +++ b/runtime/plugins/linter/linter.lua @@ -1,3 +1,4 @@ +local micro = import("micro") local runtime = import("runtime") local filepath = import("path/filepath") local shell = import("micro/shell") @@ -59,8 +60,8 @@ function init() makeLinter("gcc", "c", "gcc", {"-fsyntax-only", "-Wall", "-Wextra", "%f"}, "%f:%l:%c:.+: %m") makeLinter("gcc", "c++", "gcc", {"-fsyntax-only","-std=c++14", "-Wall", "-Wextra", "%f"}, "%f:%l:%c:.+: %m") makeLinter("dmd", "d", "dmd", {"-color=off", "-o-", "-w", "-wi", "-c", "%f"}, "%f%(%l%):.+: %m") - makeLinter("gobuild", "go", "go", {"build", "-o", devnull}, "%f:%l: %m") - makeLinter("golint", "go", "golint", {"%f"}, "%f:%l:%c: %m") + makeLinter("gobuild", "go", "go", {"build", "-o", devnull}, "%f:%l:%c:? %m") + -- makeLinter("golint", "go", "golint", {"%f"}, "%f:%l:%c: %m") makeLinter("javac", "java", "javac", {"-d", "%d", "%f"}, "%f:%l: error: %m") makeLinter("jshint", "javascript", "jshint", {"%f"}, "%f: line %l,.+, %m") makeLinter("literate", "literate", "lit", {"-c", "%f"}, "%f:%l:%m", {}, false, true) @@ -78,7 +79,7 @@ function init() config.MakeCommand("lint", "linter.lintCmd", config.NoComplete) end -function lintCmd(bp) +function lintCmd(bp, args) bp:Save() runLinter(bp.Buf) end @@ -128,12 +129,13 @@ function onSave(bp) end function lint(buf, linter, cmd, args, errorformat, loff, coff) - buf:ClearMessages("linter") + buf:ClearMessages(linter) shell.JobSpawn(cmd, args, "", "", "linter.onExit", buf, linter, errorformat, loff, coff) end -function onExit(output, buf, linter, errorformat, loff, coff) +function onExit(output, args) + local buf, linter, errorformat, loff, coff = args[1], args[2], args[3], args[4], args[5] local lines = split(output, "\n") local regex = errorformat:gsub("%%f", "(..-)"):gsub("%%l", "(%d+)"):gsub("%%c", "(%d+)"):gsub("%%m", "(.+)") @@ -146,15 +148,18 @@ function onExit(output, buf, linter, errorformat, loff, coff) if not string.find(errorformat, "%%c") then hascol = false msg = col + elseif col == nil then + hascol = false end + micro.Log(basename(buf.Path), basename(file)) if basename(buf.Path) == basename(file) then local bmsg = nil if hascol then local mstart = buffer.Loc(tonumber(col-1+coff), tonumber(line-1+loff)) local mend = buffer.Loc(tonumber(col+coff), tonumber(line-1+loff)) - bmsg = buffer.NewMessage("linter", msg, mstart, mend, buffer.MTError) + bmsg = buffer.NewMessage(linter, msg, mstart, mend, buffer.MTError) else - bmsg = buffer.NewMessageAtLine("linter", msg, tonumber(line+loff), buffer.MTError) + bmsg = buffer.NewMessageAtLine(linter, msg, tonumber(line+loff), buffer.MTError) end buf:AddMessage(bmsg) end From 4951f155ea27b19325b0805da2bfe9c97a51ee82 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 25 Dec 2019 12:54:51 -0500 Subject: [PATCH 186/231] Support for more complex action chaining --- internal/action/actions.go | 173 +++++++++++++++++++++---------- internal/action/bindings.go | 4 +- internal/action/bufpane.go | 197 ++++++++++++++++++++---------------- 3 files changed, 231 insertions(+), 143 deletions(-) diff --git a/internal/action/actions.go b/internal/action/actions.go index c8cd6b5d..585646a3 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -92,19 +92,19 @@ func (h *BufPane) MousePress(e *tcell.EventMouse) bool { h.Cursor.StoreVisualX() h.lastLoc = mouseLoc - return false + return true } // ScrollUpAction scrolls the view up func (h *BufPane) ScrollUpAction() bool { h.ScrollUp(util.IntOpt(h.Buf.Settings["scrollspeed"])) - return false + return true } // ScrollDownAction scrolls the view up func (h *BufPane) ScrollDownAction() bool { h.ScrollDown(util.IntOpt(h.Buf.Settings["scrollspeed"])) - return false + return true } // Center centers the view on the cursor @@ -118,6 +118,7 @@ func (h *BufPane) Center() bool { v.StartLine = 0 } h.SetView(v) + h.Relocate() return true } @@ -125,6 +126,7 @@ func (h *BufPane) Center() bool { func (h *BufPane) CursorUp() bool { h.Cursor.Deselect(true) h.Cursor.Up() + h.Relocate() return true } @@ -132,6 +134,7 @@ func (h *BufPane) CursorUp() bool { func (h *BufPane) CursorDown() bool { h.Cursor.Deselect(true) h.Cursor.Down() + h.Relocate() return true } @@ -156,6 +159,7 @@ func (h *BufPane) CursorLeft() bool { h.Cursor.Left() } } + h.Relocate() return true } @@ -182,6 +186,7 @@ func (h *BufPane) CursorRight() bool { } } + h.Relocate() return true } @@ -189,6 +194,7 @@ func (h *BufPane) CursorRight() bool { func (h *BufPane) WordRight() bool { h.Cursor.Deselect(false) h.Cursor.WordRight() + h.Relocate() return true } @@ -196,6 +202,7 @@ func (h *BufPane) WordRight() bool { func (h *BufPane) WordLeft() bool { h.Cursor.Deselect(true) h.Cursor.WordLeft() + h.Relocate() return true } @@ -206,6 +213,7 @@ func (h *BufPane) SelectUp() bool { } h.Cursor.Up() h.Cursor.SelectTo(h.Cursor.Loc) + h.Relocate() return true } @@ -216,6 +224,7 @@ func (h *BufPane) SelectDown() bool { } h.Cursor.Down() h.Cursor.SelectTo(h.Cursor.Loc) + h.Relocate() return true } @@ -231,6 +240,7 @@ func (h *BufPane) SelectLeft() bool { } h.Cursor.Left() h.Cursor.SelectTo(h.Cursor.Loc) + h.Relocate() return true } @@ -246,6 +256,7 @@ func (h *BufPane) SelectRight() bool { } h.Cursor.Right() h.Cursor.SelectTo(h.Cursor.Loc) + h.Relocate() return true } @@ -256,6 +267,7 @@ func (h *BufPane) SelectWordRight() bool { } h.Cursor.WordRight() h.Cursor.SelectTo(h.Cursor.Loc) + h.Relocate() return true } @@ -266,6 +278,7 @@ func (h *BufPane) SelectWordLeft() bool { } h.Cursor.WordLeft() h.Cursor.SelectTo(h.Cursor.Loc) + h.Relocate() return true } @@ -278,6 +291,7 @@ func (h *BufPane) StartOfLine() bool { // } else { // h.Cursor.StartOfText() // } + h.Relocate() return true } @@ -285,12 +299,14 @@ func (h *BufPane) StartOfLine() bool { func (h *BufPane) EndOfLine() bool { h.Cursor.Deselect(true) h.Cursor.End() + h.Relocate() return true } // SelectLine selects the entire current line func (h *BufPane) SelectLine() bool { h.Cursor.SelectLine() + h.Relocate() return true } @@ -301,6 +317,7 @@ func (h *BufPane) SelectToStartOfLine() bool { } h.Cursor.Start() h.Cursor.SelectTo(h.Cursor.Loc) + h.Relocate() return true } @@ -311,6 +328,7 @@ func (h *BufPane) SelectToEndOfLine() bool { } h.Cursor.End() h.Cursor.SelectTo(h.Cursor.Loc) + h.Relocate() return true } @@ -328,6 +346,7 @@ func (h *BufPane) ParagraphPrevious() bool { if line == 0 { h.Cursor.Loc = h.Buf.Start() } + h.Relocate() return true } @@ -345,6 +364,7 @@ func (h *BufPane) ParagraphNext() bool { if line == h.Buf.LinesNum() { h.Cursor.Loc = h.Buf.End() } + h.Relocate() return true } @@ -352,6 +372,7 @@ func (h *BufPane) ParagraphNext() bool { // on the user's settings func (h *BufPane) Retab() bool { h.Buf.Retab() + h.Relocate() return true } @@ -360,6 +381,7 @@ func (h *BufPane) CursorStart() bool { h.Cursor.Deselect(true) h.Cursor.X = 0 h.Cursor.Y = 0 + h.Relocate() return true } @@ -368,6 +390,7 @@ func (h *BufPane) CursorEnd() bool { h.Cursor.Deselect(true) h.Cursor.Loc = h.Buf.End() h.Cursor.StoreVisualX() + h.Relocate() return true } @@ -378,6 +401,7 @@ func (h *BufPane) SelectToStart() bool { } h.CursorStart() h.Cursor.SelectTo(h.Buf.Start()) + h.Relocate() return true } @@ -388,6 +412,7 @@ func (h *BufPane) SelectToEnd() bool { } h.CursorEnd() h.Cursor.SelectTo(h.Buf.End()) + h.Relocate() return true } @@ -420,6 +445,7 @@ func (h *BufPane) InsertNewline() bool { } } h.Cursor.LastVisualX = h.Cursor.GetVisualX() + h.Relocate() return true } @@ -449,6 +475,7 @@ func (h *BufPane) Backspace() bool { } } h.Cursor.LastVisualX = h.Cursor.GetVisualX() + h.Relocate() return true } @@ -459,6 +486,7 @@ func (h *BufPane) DeleteWordRight() bool { h.Cursor.DeleteSelection() h.Cursor.ResetSelection() } + h.Relocate() return true } @@ -469,6 +497,7 @@ func (h *BufPane) DeleteWordLeft() bool { h.Cursor.DeleteSelection() h.Cursor.ResetSelection() } + h.Relocate() return true } @@ -483,6 +512,7 @@ func (h *BufPane) Delete() bool { h.Buf.Remove(loc, loc.Move(1, h.Buf)) } } + h.Relocate() return true } @@ -513,6 +543,7 @@ func (h *BufPane) IndentSelection() bool { } h.Buf.RelocateCursors() + h.Relocate() return true } return false @@ -531,6 +562,7 @@ func (h *BufPane) OutdentLine() bool { h.Buf.Remove(buffer.Loc{X: 0, Y: h.Cursor.Y}, buffer.Loc{X: 1, Y: h.Cursor.Y}) } h.Buf.RelocateCursors() + h.Relocate() return true } @@ -557,29 +589,37 @@ func (h *BufPane) OutdentSelection() bool { } h.Buf.RelocateCursors() + h.Relocate() return true } return false } -// InsertTab inserts a tab or spaces -func (h *BufPane) InsertTab() bool { +// Autocomplete cycles the suggestions and performs autocompletion if there are suggestions +func (h *BufPane) Autocomplete() bool { b := h.Buf + + if h.Cursor.HasSelection() { + return false + } + if b.HasSuggestions { b.CycleAutocomplete(true) return true } + return b.Autocomplete(buffer.BufferComplete) +} +// InsertTab inserts a tab or spaces +func (h *BufPane) InsertTab() bool { + b := h.Buf l := b.LineBytes(h.Cursor.Y) l = util.SliceStart(l, h.Cursor.X) - hasComplete := b.Autocomplete(buffer.BufferComplete) - if !hasComplete { - indent := b.IndentString(util.IntOpt(b.Settings["tabsize"])) - tabBytes := len(indent) - bytesUntilIndent := tabBytes - (h.Cursor.GetVisualX() % tabBytes) - b.Insert(h.Cursor.Loc, indent[:bytesUntilIndent]) - return true - } + indent := b.IndentString(util.IntOpt(b.Settings["tabsize"])) + tabBytes := len(indent) + bytesUntilIndent := tabBytes - (h.Cursor.GetVisualX() % tabBytes) + b.Insert(h.Cursor.Loc, indent[:bytesUntilIndent]) + h.Relocate() return true } @@ -588,7 +628,7 @@ func (h *BufPane) SaveAll() bool { for _, b := range buffer.OpenBuffers { b.Save() } - return false + return true } // Save the buffer to disk @@ -600,7 +640,7 @@ func (h *BufPane) Save() bool { h.saveBufToFile(h.Buf.Path) } - return false + return true } // SaveAs saves the buffer to disk with the given name @@ -618,7 +658,7 @@ func (h *BufPane) SaveAs() bool { } }) - return false + return true } // This function saves the buffer to `filename` and changes the buffer's path and name @@ -690,7 +730,7 @@ func (h *BufPane) Find() bool { h.Relocate() }) - return false + return true } // FindNext searches forwards for the last used search term @@ -716,6 +756,7 @@ func (h *BufPane) FindNext() bool { } else { h.Cursor.ResetSelection() } + h.Relocate() return true } @@ -742,6 +783,7 @@ func (h *BufPane) FindPrevious() bool { } else { h.Cursor.ResetSelection() } + h.Relocate() return true } @@ -749,6 +791,7 @@ func (h *BufPane) FindPrevious() bool { func (h *BufPane) Undo() bool { h.Buf.Undo() InfoBar.Message("Undid action") + h.Relocate() return true } @@ -756,6 +799,7 @@ func (h *BufPane) Undo() bool { func (h *BufPane) Redo() bool { h.Buf.Redo() InfoBar.Message("Redid action") + h.Relocate() return true } @@ -766,6 +810,7 @@ func (h *BufPane) Copy() bool { h.freshClip = true InfoBar.Message("Copied selection") } + h.Relocate() return true } @@ -791,6 +836,7 @@ func (h *BufPane) CutLine() bool { h.Cursor.DeleteSelection() h.Cursor.ResetSelection() InfoBar.Message("Cut line") + h.Relocate() return true } @@ -803,6 +849,7 @@ func (h *BufPane) Cut() bool { h.freshClip = true InfoBar.Message("Cut selection") + h.Relocate() return true } else { return h.CutLine() @@ -820,6 +867,7 @@ func (h *BufPane) DuplicateLine() bool { } InfoBar.Message("Duplicated line") + h.Relocate() return true } @@ -832,6 +880,7 @@ func (h *BufPane) DeleteLine() bool { h.Cursor.DeleteSelection() h.Cursor.ResetSelection() InfoBar.Message("Deleted line") + h.Relocate() return true } @@ -839,8 +888,8 @@ func (h *BufPane) DeleteLine() bool { func (h *BufPane) MoveLinesUp() bool { if h.Cursor.HasSelection() { if h.Cursor.CurSelection[0].Y == 0 { - InfoBar.Message("Can not move further up") - return true + InfoBar.Message("Cannot move further up") + return false } start := h.Cursor.CurSelection[0].Y end := h.Cursor.CurSelection[1].Y @@ -855,8 +904,8 @@ func (h *BufPane) MoveLinesUp() bool { h.Cursor.CurSelection[1].Y -= 1 } else { if h.Cursor.Loc.Y == 0 { - InfoBar.Message("Can not move further up") - return true + InfoBar.Message("Cannot move further up") + return false } h.Buf.MoveLinesUp( h.Cursor.Loc.Y, @@ -864,6 +913,7 @@ func (h *BufPane) MoveLinesUp() bool { ) } + h.Relocate() return true } @@ -871,8 +921,8 @@ func (h *BufPane) MoveLinesUp() bool { func (h *BufPane) MoveLinesDown() bool { if h.Cursor.HasSelection() { if h.Cursor.CurSelection[1].Y >= h.Buf.LinesNum() { - InfoBar.Message("Can not move further down") - return true + InfoBar.Message("Cannot move further down") + return false } start := h.Cursor.CurSelection[0].Y end := h.Cursor.CurSelection[1].Y @@ -886,8 +936,8 @@ func (h *BufPane) MoveLinesDown() bool { ) } else { if h.Cursor.Loc.Y >= h.Buf.LinesNum()-1 { - InfoBar.Message("Can not move further down") - return true + InfoBar.Message("Cannot move further down") + return false } h.Buf.MoveLinesDown( h.Cursor.Loc.Y, @@ -895,6 +945,7 @@ func (h *BufPane) MoveLinesDown() bool { ) } + h.Relocate() return true } @@ -903,6 +954,7 @@ func (h *BufPane) MoveLinesDown() bool { func (h *BufPane) Paste() bool { clip, _ := clipboard.ReadAll("clipboard") h.paste(clip) + h.Relocate() return true } @@ -910,6 +962,7 @@ func (h *BufPane) Paste() bool { func (h *BufPane) PastePrimary() bool { clip, _ := clipboard.ReadAll("primary") h.paste(clip) + h.Relocate() return true } @@ -948,6 +1001,7 @@ func (h *BufPane) JumpToMatchingBrace() bool { } } + h.Relocate() return true } @@ -958,6 +1012,7 @@ func (h *BufPane) SelectAll() bool { // Put the cursor at the beginning h.Cursor.X = 0 h.Cursor.Y = 0 + h.Relocate() return true } @@ -968,7 +1023,7 @@ func (h *BufPane) OpenFile() bool { h.HandleCommand(resp) } }) - return false + return true } // Start moves the viewport to the start of the buffer @@ -976,7 +1031,7 @@ func (h *BufPane) Start() bool { v := h.GetView() v.StartLine = 0 h.SetView(v) - return false + return true } // End moves the viewport to the end of the buffer @@ -990,7 +1045,7 @@ func (h *BufPane) End() bool { v.StartLine = h.Buf.LinesNum() - v.Height h.SetView(v) } - return false + return true } // PageUp scrolls the view up a page @@ -1002,7 +1057,7 @@ func (h *BufPane) PageUp() bool { v.StartLine = 0 } h.SetView(v) - return false + return true } // PageDown scrolls the view down a page @@ -1013,7 +1068,7 @@ func (h *BufPane) PageDown() bool { } else if h.Buf.LinesNum() >= v.Height { v.StartLine = h.Buf.LinesNum() - v.Height } - return false + return true } // SelectPageUp selects up one page @@ -1023,6 +1078,7 @@ func (h *BufPane) SelectPageUp() bool { } h.Cursor.UpN(h.GetView().Height) h.Cursor.SelectTo(h.Cursor.Loc) + h.Relocate() return true } @@ -1033,6 +1089,7 @@ func (h *BufPane) SelectPageDown() bool { } h.Cursor.DownN(h.GetView().Height) h.Cursor.SelectTo(h.Cursor.Loc) + h.Relocate() return true } @@ -1046,6 +1103,7 @@ func (h *BufPane) CursorPageUp() bool { h.Cursor.StoreVisualX() } h.Cursor.UpN(h.GetView().Height) + h.Relocate() return true } @@ -1059,6 +1117,7 @@ func (h *BufPane) CursorPageDown() bool { h.Cursor.StoreVisualX() } h.Cursor.DownN(h.GetView().Height) + h.Relocate() return true } @@ -1071,7 +1130,7 @@ func (h *BufPane) HalfPageUp() bool { v.StartLine = 0 } h.SetView(v) - return false + return true } // HalfPageDown scrolls the view down half a page @@ -1085,7 +1144,7 @@ func (h *BufPane) HalfPageDown() bool { } } h.SetView(v) - return false + return true } // ToggleRuler turns line numbers off and on @@ -1097,13 +1156,13 @@ func (h *BufPane) ToggleRuler() bool { h.Buf.Settings["ruler"] = false InfoBar.Message("Disabled ruler") } - return false + return true } // ClearStatus clears the messenger bar func (h *BufPane) ClearStatus() bool { InfoBar.Message("") - return false + return true } // ToggleHelp toggles the help screen @@ -1113,14 +1172,14 @@ func (h *BufPane) ToggleHelp() bool { } else { h.openHelp("help") } - return false + return true } // ToggleKeyMenu toggles the keymenu option and resizes all tabs func (h *BufPane) ToggleKeyMenu() bool { config.GlobalSettings["keymenu"] = !config.GetGlobalOption("keymenu").(bool) Tabs.Resize() - return false + return true } // ShellMode opens a terminal to run a shell command @@ -1132,7 +1191,7 @@ func (h *BufPane) ShellMode() bool { } }) - return false + return true } // CommandMode lets the user enter a command @@ -1142,18 +1201,18 @@ func (h *BufPane) CommandMode() bool { h.HandleCommand(resp) } }) - return false + return true } // ToggleOverwriteMode lets the user toggle the text overwrite mode func (h *BufPane) ToggleOverwriteMode() bool { h.isOverwriteMode = !h.isOverwriteMode - return false + return true } // Escape leaves current mode func (h *BufPane) Escape() bool { - return false + return true } // Quit this will close the current tab or view that is open @@ -1188,7 +1247,7 @@ func (h *BufPane) Quit() bool { } else { quit() } - return false + return true } // QuitAll quits the whole editor; all splits and tabs @@ -1220,7 +1279,7 @@ func (h *BufPane) QuitAll() bool { quit() } - return false + return true } // AddTab adds a new tab with an empty buffer @@ -1232,7 +1291,7 @@ func (h *BufPane) AddTab() bool { Tabs.AddTab(tp) Tabs.SetActive(len(Tabs.List) - 1) - return false + return true } // PreviousTab switches to the previous tab in the tab list @@ -1240,28 +1299,28 @@ func (h *BufPane) PreviousTab() bool { a := Tabs.Active() Tabs.SetActive(util.Clamp(a-1, 0, len(Tabs.List)-1)) - return false + return true } // NextTab switches to the next tab in the tab list func (h *BufPane) NextTab() bool { a := Tabs.Active() Tabs.SetActive(util.Clamp(a+1, 0, len(Tabs.List)-1)) - return false + return true } // VSplitAction opens an empty vertical split func (h *BufPane) VSplitAction() bool { h.VSplitBuf(buffer.NewBufferFromString("", "", buffer.BTDefault)) - return false + return true } // HSplitAction opens an empty horizontal split func (h *BufPane) HSplitAction() bool { h.HSplitBuf(buffer.NewBufferFromString("", "", buffer.BTDefault)) - return false + return true } // Unsplit closes all splits in the current tab except the active one @@ -1272,7 +1331,7 @@ func (h *BufPane) Unsplit() bool { MainTab().RemovePane(MainTab().GetPane(h.splitID)) MainTab().Resize() MainTab().SetActive(len(MainTab().Panes) - 1) - return false + return true } // NextSplit changes the view to the next split @@ -1286,7 +1345,7 @@ func (h *BufPane) NextSplit() bool { MainTab().SetActive(a) - return false + return true } // PreviousSplit changes the view to the previous split @@ -1299,7 +1358,7 @@ func (h *BufPane) PreviousSplit() bool { } MainTab().SetActive(a) - return false + return true } var curmacro []interface{} @@ -1314,6 +1373,7 @@ func (h *BufPane) ToggleMacro() bool { } else { InfoBar.Message("Stopped recording") } + h.Relocate() return true } @@ -1330,6 +1390,7 @@ func (h *BufPane) PlayMacro() bool { h.DoKeyEvent(t) } } + h.Relocate() return true } @@ -1339,6 +1400,7 @@ func (h *BufPane) SpawnMultiCursor() bool { if !spawner.HasSelection() { spawner.SelectWord() h.multiWord = true + h.Relocate() return true } @@ -1369,6 +1431,7 @@ func (h *BufPane) SpawnMultiCursor() bool { InfoBar.Message("No matches found") } + h.Relocate() return true } @@ -1403,7 +1466,7 @@ func (h *BufPane) SpawnMultiCursorSelect() bool { return false } InfoBar.Message("Added cursors from selection") - return false + return true } // MouseMultiCursor is a mouse action which puts a new cursor at the mouse position @@ -1415,7 +1478,7 @@ func (h *BufPane) MouseMultiCursor(e *tcell.EventMouse) bool { b.AddCursor(c) b.MergeCursors() - return false + return true } // SkipMultiCursor moves the current multiple cursor to the next available position @@ -1446,6 +1509,7 @@ func (h *BufPane) SkipMultiCursor() bool { } else { InfoBar.Message("No matches found") } + h.Relocate() return true } @@ -1458,6 +1522,7 @@ func (h *BufPane) RemoveMultiCursor() bool { } else { h.multiWord = false } + h.Relocate() return true } @@ -1465,9 +1530,11 @@ func (h *BufPane) RemoveMultiCursor() bool { func (h *BufPane) RemoveAllMultiCursors() bool { h.Buf.ClearCursors() h.multiWord = false + h.Relocate() return true } +// None is an action that does nothing func (h *BufPane) None() bool { - return false + return true } diff --git a/internal/action/bindings.go b/internal/action/bindings.go index 7cad325a..18fdfa33 100644 --- a/internal/action/bindings.go +++ b/internal/action/bindings.go @@ -422,8 +422,8 @@ func DefaultBindings() map[string]string { "Backspace": "Backspace", "Alt-CtrlH": "DeleteWordLeft", "Alt-Backspace": "DeleteWordLeft", - "Tab": "InsertTab", - "Backtab": "OutdentLine", + "Tab": "Autocomplete|IndentSelection|InsertTab", + "Backtab": "OutdentSelection|OutdentLine", "CtrlO": "OpenFile", "CtrlS": "Save", "CtrlF": "Find", diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 4c70669b..9df8779e 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -53,18 +53,35 @@ func LuaAction(fn string) func(*BufPane) bool { // BufMapKey maps a key event to an action func BufMapKey(k Event, action string) { - actions := strings.SplitN(action, ",", -1) BufKeyStrings[k] = action - actionfns := make([]func(*BufPane) bool, len(actions)) - for i, a := range actions { - // a = strings.TrimSpace(a) + var actionfns []func(*BufPane) bool + var names []string + var types []byte + for i := 0; ; i++ { + if action == "" { + break + } + + idx := strings.IndexAny(action, "&|,") + a := action + if idx >= 0 { + a = action[:idx] + types = append(types, action[idx]) + action = action[idx+1:] + } else { + types = append(types, ' ') + action = "" + } + var afn func(*BufPane) bool if strings.HasPrefix(action, "command:") { a = strings.SplitN(a, ":", 2)[1] afn = CommandAction(a) + names = append(names, "") } else if strings.HasPrefix(a, "command-edit:") { a = strings.SplitN(a, ":", 2)[1] afn = CommandEditAction(a) + names = append(names, "") } else if strings.HasPrefix(a, "lua:") { a = strings.SplitN(a, ":", 2)[1] afn = LuaAction(a) @@ -72,19 +89,31 @@ func BufMapKey(k Event, action string) { screen.TermMessage("Lua Error:", action, "does not exist") continue } + names = append(names, "") } else if f, ok := BufKeyActions[a]; ok { afn = f + names = append(names, a) } else { screen.TermMessage("Error:", action, "does not exist") + continue } - actionfns[i] = afn + actionfns = append(actionfns, afn) } BufKeyBindings[k] = func(h *BufPane) bool { - b := false - for _, a := range actionfns { - b = a(h) || b + cursors := h.Buf.GetCursors() + success := true + for i, a := range actionfns { + for j, c := range cursors { + h.Buf.SetCurCursor(c.Num) + h.Cursor = c + if i == 0 || (success && types[i-1] == '&') || (!success && types[i-1] == '|') || (types[i-1] == ',') { + success = h.execAction(a, names[i], j) + } else { + break + } + } } - return b + return true } } @@ -291,43 +320,34 @@ func (h *BufPane) HandleEvent(event tcell.Event) { // to and executing it (possibly multiple times for multiple cursors) func (h *BufPane) DoKeyEvent(e Event) bool { if action, ok := BufKeyBindings[e]; ok { - estr := BufKeyStrings[e] - if estr != "InsertTab" { - h.Buf.HasSuggestions = false - } - for _, s := range MultiActions { - if s == estr { - cursors := h.Buf.GetCursors() - for _, c := range cursors { - h.Buf.SetCurCursor(c.Num) - h.Cursor = c - if !h.PluginCB("pre" + estr) { - // canceled by plugin - continue - } - rel := action(h) - if h.PluginCB("on"+estr) && rel { - h.Relocate() - } + return action(h) + } + return false +} - if recording_macro { - if estr != "ToggleMacro" && estr != "PlayMacro" { - curmacro = append(curmacro, e) - } +func (h *BufPane) execAction(action func(*BufPane) bool, name string, cursor int) bool { + if name != "Autocomplete" { + h.Buf.HasSuggestions = false + } + + _, isMulti := MultiActions[name] + if (!isMulti && cursor == 0) || isMulti { + if h.PluginCB("pre" + name) { + asuccess := action(h) + psuccess := h.PluginCB("on" + name) + + if isMulti { + if recording_macro { + if name != "ToggleMacro" && name != "PlayMacro" { + curmacro = append(curmacro, action) } } - return true } + + return asuccess && psuccess } - if !h.PluginCB("pre" + estr) { - return false - } - rel := action(h) - if h.PluginCB("on"+estr) && rel { - h.Relocate() - } - return true } + return false } @@ -469,6 +489,7 @@ var BufKeyActions = map[string]BufKeyAction{ "MoveLinesDown": (*BufPane).MoveLinesDown, "IndentSelection": (*BufPane).IndentSelection, "OutdentSelection": (*BufPane).OutdentSelection, + "Autocomplete": (*BufPane).Autocomplete, "OutdentLine": (*BufPane).OutdentLine, "Paste": (*BufPane).Paste, "PastePrimary": (*BufPane).PastePrimary, @@ -529,52 +550,52 @@ var BufMouseActions = map[string]BufMouseAction{ // times if there are multiple cursors (one per cursor) // Generally actions that modify global editor state like quitting or // saving should not be included in this list -var MultiActions = []string{ - "CursorUp", - "CursorDown", - "CursorPageUp", - "CursorPageDown", - "CursorLeft", - "CursorRight", - "CursorStart", - "CursorEnd", - "SelectToStart", - "SelectToEnd", - "SelectUp", - "SelectDown", - "SelectLeft", - "SelectRight", - "WordRight", - "WordLeft", - "SelectWordRight", - "SelectWordLeft", - "DeleteWordRight", - "DeleteWordLeft", - "SelectLine", - "SelectToStartOfLine", - "SelectToEndOfLine", - "ParagraphPrevious", - "ParagraphNext", - "InsertNewline", - "Backspace", - "Delete", - "InsertTab", - "FindNext", - "FindPrevious", - "Cut", - "CutLine", - "DuplicateLine", - "DeleteLine", - "MoveLinesUp", - "MoveLinesDown", - "IndentSelection", - "OutdentSelection", - "OutdentLine", - "Paste", - "PastePrimary", - "SelectPageUp", - "SelectPageDown", - "StartOfLine", - "EndOfLine", - "JumpToMatchingBrace", +var MultiActions = map[string]bool{ + "CursorUp": true, + "CursorDown": true, + "CursorPageUp": true, + "CursorPageDown": true, + "CursorLeft": true, + "CursorRight": true, + "CursorStart": true, + "CursorEnd": true, + "SelectToStart": true, + "SelectToEnd": true, + "SelectUp": true, + "SelectDown": true, + "SelectLeft": true, + "SelectRight": true, + "WordRight": true, + "WordLeft": true, + "SelectWordRight": true, + "SelectWordLeft": true, + "DeleteWordRight": true, + "DeleteWordLeft": true, + "SelectLine": true, + "SelectToStartOfLine": true, + "SelectToEndOfLine": true, + "ParagraphPrevious": true, + "ParagraphNext": true, + "InsertNewline": true, + "Backspace": true, + "Delete": true, + "InsertTab": true, + "FindNext": true, + "FindPrevious": true, + "Cut": true, + "CutLine": true, + "DuplicateLine": true, + "DeleteLine": true, + "MoveLinesUp": true, + "MoveLinesDown": true, + "IndentSelection": true, + "OutdentSelection": true, + "OutdentLine": true, + "Paste": true, + "PastePrimary": true, + "SelectPageUp": true, + "SelectPageDown": true, + "StartOfLine": true, + "EndOfLine": true, + "JumpToMatchingBrace": true, } From ff6f28e36663a10db7d52e75f2a512347949728f Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 25 Dec 2019 13:11:38 -0500 Subject: [PATCH 187/231] Autocompletion fix for infobuffer --- internal/action/actions.go | 4 ++-- internal/action/infopane.go | 11 +++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/internal/action/actions.go b/internal/action/actions.go index 585646a3..48a2cd27 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -1386,8 +1386,8 @@ func (h *BufPane) PlayMacro() bool { switch t := action.(type) { case rune: h.DoRuneInsert(t) - case Event: - h.DoKeyEvent(t) + case func(*BufPane) bool: + t(h) } } h.Relocate() diff --git a/internal/action/infopane.go b/internal/action/infopane.go index cc0ef609..33b40268 100644 --- a/internal/action/infopane.go +++ b/internal/action/infopane.go @@ -2,6 +2,7 @@ package action import ( "bytes" + "strings" "github.com/zyedidia/micro/internal/display" "github.com/zyedidia/micro/internal/info" @@ -82,7 +83,9 @@ func (h *InfoPane) DoKeyEvent(e KeyEvent) bool { } } for s, a := range InfoOverrides { - if s == estr { + // TODO this is a hack and really we should have support + // for having binding overrides for different buffers + if strings.Contains(estr, s) { done = true a(h) break @@ -150,7 +153,7 @@ var InfoOverrides = map[string]InfoKeyAction{ "CursorUp": (*InfoPane).CursorUp, "CursorDown": (*InfoPane).CursorDown, "InsertNewline": (*InfoPane).InsertNewline, - "InsertTab": (*InfoPane).InsertTab, + "Autocomplete": (*InfoPane).Autocomplete, "OutdentLine": (*InfoPane).CycleBack, "Escape": (*InfoPane).Escape, "Quit": (*InfoPane).Quit, @@ -167,8 +170,8 @@ func (h *InfoPane) CursorDown() { h.DownHistory(h.History[h.PromptType]) } -// InsertTab begins autocompletion -func (h *InfoPane) InsertTab() { +// Autocomplete begins autocompletion +func (h *InfoPane) Autocomplete() { b := h.Buf if b.HasSuggestions { b.CycleAutocomplete(true) From 922a57b3e7dfbda9916fb73819be6e7fd0404a43 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 25 Dec 2019 17:07:30 -0500 Subject: [PATCH 188/231] Merge branch refactor2.0 The code from the refactor that I have been working on is now more or less ready to be merged. These changes make some breaking changes, notably with regards to the plugin interface. Once a lot more documentation has been written, I will release this code as micro 2.0. There are a lot of new features, and in the coming days I will try to go through the open issues to see exactly which ones are addressed by the new features, and write lots more documentation regarding what has been implemented. Some highlights include: * Simple autocompletion. * Autocompletion (tab by default) will do a simple "buffer completion" which will autocomplete according to words used elsewhere in the buffer. In the future plugin support could be added along with support for interfacing with language-specific autocompletion tools. * Automatic backups. * Backup files are stored in `~/.config/micro/backups` for every open buffer and are saved roughly every 8 seconds if the buffer is being modified. Backups are removed when the buffer is closed, but if micro or the system crashes, any unsaved changes can be recovered by re-opening the file (micro will auto- recover) or by manually viewing the backup in the `~/.config/micro/backups` directory. * Configurable statusline. * Configurable linter plugin. * Resizeable splits. * Complete re-organization of the code to support better go modules and maintain a better directory structure. * Better plugin interface with better access to the Go standard library and internal Micro functions (lots of documentation still needs to be written). * Documentation still needs to be written, but in the meantime please see the default plugins as examples as they have been converted from their old versions to be compatible with the new interface. * Buffer synchronization when the same file is opened multiple times. * Keybindings and mouse support in the command bar. * Support for non-utf8 encodings. * General QoL improvements and bug fixes. * Notably I believe the autoclose plugin crash issue is fixed. * No more plugin manager. * Plugin installation will now be performed manually by git cloning into the `~/.config/micro/plug` directory. This may not be a highlight for some but I believe it is much simpler, and there is no need to have a heavyweight dependency manager. Perhaps in the future, a good command-line tool can be made to manage plugins if people would find it useful. * Other features that I have forgotten. Next I plan to write up more documentation for all the new features, and make a "release candidate" for micro 2.0. I will also be working to fix any bugs that come up (hopefully not too many, but this is a big change and bound to have some issues). After release I hope to focus more on optimization (for example loading syntax files is currently somewhat inefficient, and the bottleneck for startup time #1427). Sorry for not being so active recently, but I hope merging this big change can help me get back to more regular development. Thanks to everyone for using micro and for giving feedback and engaging with development online (even if I don't always respond). Merry Christmas! Issues that are fixed/affected by this change: Ref #1419 (configurable statusline) Ref #1413 (cursor behaves better) Ref #1401 (softwrap problems) Ref #1383 (better save with sudo) Ref #1424 (better save with sudo) Ref #1382 (go modules) Ref #1381 (install plugins from command line) Ref #1357 (sorting -- textfilter) Ref #1351 (custom linting) Ref #1350 (sudo problem might be fixed) Ref #1298 (readonly option) Ref #1250 (autoclose bug) Ref #1239 (go modules) Ref #813 (autoclose bug) Ref #812 (cursor sync across same buffers) Ref #770 (resizeable panes) Ref #635 (keybindings in infobar) Ref #596 (disable builtin plugins) Ref #550 (backups) Ref #174 (autocompletion) From c5d3008d85e7b7aec6050be081aa66e37fd32761 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 25 Dec 2019 17:23:39 -0500 Subject: [PATCH 189/231] Clean unused go modules --- go.mod | 14 +------------- go.sum | 37 ++----------------------------------- 2 files changed, 3 insertions(+), 48 deletions(-) diff --git a/go.mod b/go.mod index 2a124b6b..94081a3c 100644 --- a/go.mod +++ b/go.mod @@ -2,24 +2,16 @@ module github.com/zyedidia/micro require ( github.com/blang/semver v3.5.1+incompatible - github.com/davecgh/go-spew v1.1.1 // indirect github.com/dustin/go-humanize v1.0.0 github.com/flynn/json5 v0.0.0-20160717195620-7620272ed633 github.com/gdamore/encoding v1.0.0 // indirect github.com/go-errors/errors v1.0.1 - github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e // indirect - github.com/jtolds/gls v4.2.1+incompatible // indirect - github.com/kr/pretty v0.1.0 // indirect - github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 // indirect - github.com/lucasb-eyer/go-colorful v0.0.0-20181028223441-12d3b2882a08 // indirect + github.com/lucasb-eyer/go-colorful v1.0.3 // indirect github.com/mattn/go-isatty v0.0.4 github.com/mattn/go-runewidth v0.0.4 github.com/mitchellh/go-homedir v1.1.0 github.com/npat-efault/poller v2.0.0+incompatible // indirect - github.com/robertkrimen/otto v0.0.0-20180617131154-15f95af6e78d // indirect github.com/sergi/go-diff v1.0.0 - github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304 // indirect - github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c // indirect github.com/stretchr/testify v1.3.0 github.com/yuin/gopher-lua v0.0.0-20190125051437-7b9317363aa9 github.com/zyedidia/clipboard v0.0.0-20180718195219-bd31d747117d @@ -28,11 +20,7 @@ require ( github.com/zyedidia/pty v1.1.2-0.20180126010845-30364665a244 // indirect github.com/zyedidia/tcell v0.0.0-20191219170756-59b50b23fa9b github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415 - golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9 // indirect golang.org/x/text v0.3.0 - gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0 // indirect - gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect - gopkg.in/sourcemap.v1 v1.0.5 // indirect gopkg.in/yaml.v2 v2.2.2 layeh.com/gopher-luar v1.0.4 ) diff --git a/go.sum b/go.sum index f315c57c..8e6ea9b0 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,6 @@ github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdn github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/flynn/json5 v0.0.0-20160717195620-7620272ed633 h1:xJMmr4GMYIbALX5edyoDIOQpc2bOQTeJiWMeCl9lX/8= @@ -12,39 +10,19 @@ github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdk github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= -github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg= -github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/jtolds/gls v4.2.1+incompatible h1:fSuqC+Gmlu6l/ZYAoZzx2pyucC8Xza35fpRVWLVmUEE= -github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= -github.com/lucasb-eyer/go-colorful v0.0.0-20181028223441-12d3b2882a08 h1:5MnxBC15uMxFv5FY/J/8vzyaBiArCOkMdFT9Jsw78iY= -github.com/lucasb-eyer/go-colorful v0.0.0-20181028223441-12d3b2882a08/go.mod h1:NXg0ArsFk0Y01623LgUqoqcouGDB+PwCCQlrwrG6xJ4= +github.com/lucasb-eyer/go-colorful v1.0.3 h1:QIbQXiugsb+q10B+MI+7DI1oQLdmnep86tWFlaaUAac= +github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/npat-efault/poller v2.0.0+incompatible h1:jtTdXWKgN5kDK41ts8hoY1rvTEi0K08MTB8/bRO9MqE= github.com/npat-efault/poller v2.0.0+incompatible/go.mod h1:lni01B89P8PtVpwlAhdhK1niN5rPkDGGpGGgBJzpSgo= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/robertkrimen/otto v0.0.0-20180617131154-15f95af6e78d h1:1VUlQbCfkoSGv7qP7Y+ro3ap1P1pPZxgdGVqiTVy5C4= -github.com/robertkrimen/otto v0.0.0-20180617131154-15f95af6e78d/go.mod h1:xvqspoSXJTIpemEonrMDFq6XzwHYYgToXWj5eRX1OtY= github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304 h1:Jpy1PXuP99tXNrhbq2BaPz9B+jNAvH1JPQQpG/9GCXY= -github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c h1:Ho+uVpkel/udgjbwB5Lktg9BtvJSh2DT0Hi6LPSyI2w= -github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/yuin/gopher-lua v0.0.0-20190125051437-7b9317363aa9 h1:Wy3fAQLBPP0JSWdq3kBnmbFgXDHcyhtPpd+8kENV7mU= github.com/yuin/gopher-lua v0.0.0-20190125051437-7b9317363aa9/go.mod h1:fFiAh+CowNFr0NK5VASokuwKwkbacRmHsVA7Yb1Tqac= @@ -52,27 +30,16 @@ github.com/zyedidia/clipboard v0.0.0-20180718195219-bd31d747117d h1:Lhqt2eo+rgM8 github.com/zyedidia/clipboard v0.0.0-20180718195219-bd31d747117d/go.mod h1:WDk3p8GiZV9+xFWlSo8qreeoLhW6Ik692rqXk+cNeRY= github.com/zyedidia/glob v0.0.0-20170209203856-dd4023a66dc3 h1:oMHjjTLfGXVuyOQBYj5/td9WC0mw4g1xDBPovIqmHew= github.com/zyedidia/glob v0.0.0-20170209203856-dd4023a66dc3/go.mod h1:YKbIYP//Eln8eDgAJGI3IDvR3s4Tv9Z9TGIOumiyQ5c= -github.com/zyedidia/poller v2.0.0+incompatible h1:DMOvB0EXz2JTokqOKfxPWN/8xXFJbO+m4vNhMkOY7Lo= github.com/zyedidia/poller v2.0.0+incompatible/go.mod h1:vZXJOHGDcuK08GXhF6IAY0ZFd2WcgOR5DOTp84Uk5eE= github.com/zyedidia/pty v1.1.2-0.20180126010845-30364665a244 h1:DZ7mZvUV5+oXeXV1E1t6ZIXRihHYyqYVIOSA+RGo88A= github.com/zyedidia/pty v1.1.2-0.20180126010845-30364665a244/go.mod h1:4y9l9yJZNxRa7GB/fB+mmDmGkG3CqmzLf4vUxGGotEA= -github.com/zyedidia/tcell v0.0.0-20190204041104-518c15c24302 h1:ruNSURcO81y+J+XnqrLLt+zxcdFtq8QNoZfWXSsybYQ= -github.com/zyedidia/tcell v0.0.0-20190204041104-518c15c24302/go.mod h1:yXgdp23+aW8OMENYVBvpKoeiBtjaVWJ9HhpPDu6LBfM= github.com/zyedidia/tcell v0.0.0-20191219170756-59b50b23fa9b h1:cryFENlMxJJrkimVx/CUMFDCxC4vpmey2x3A3tAgTNM= github.com/zyedidia/tcell v0.0.0-20191219170756-59b50b23fa9b/go.mod h1:yXgdp23+aW8OMENYVBvpKoeiBtjaVWJ9HhpPDu6LBfM= github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415 h1:752dTQ5OatJ9M5ULK2+9lor+nzyZz+LYDo3WGngg3Rc= github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415/go.mod h1:8leT8G0Cm8NoJHdrrKHyR9MirWoF4YW7pZh06B6H+1E= -golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9 h1:lkiLiLBHGoH3XnqSLUIaBsilGMUjI+Uy2Xu2JLUtTas= -golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0 h1:FVCohIoYO7IJoDDVpV2pdq7SgrMH6wHnuTyrdrxJNoY= -gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0/go.mod h1:OdE7CF6DbADk7lN8LIKRzRJTTZXIjtWgA5THM5lhBAw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/sourcemap.v1 v1.0.5 h1:inv58fC9f9J3TK2Y2R1NPntXEn3/wjWHkonhIUODNTI= -gopkg.in/sourcemap.v1 v1.0.5/go.mod h1:2RlvNNSMglmRrcvhfuzp4hQHwOtjxlbjX7UPY/GXb78= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= layeh.com/gopher-luar v1.0.4 h1:BFgt94J/CXh4HkDcE2b7A7pBaVeQKEVfHEBRKL/K/Tc= From 05331e1fa24e44dba536b4ced2e2b0c5a630bd02 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 25 Dec 2019 17:42:57 -0500 Subject: [PATCH 190/231] Support rc tags in build version --- tools/build-version.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/build-version.go b/tools/build-version.go index 630521f2..ead81a43 100644 --- a/tools/build-version.go +++ b/tools/build-version.go @@ -26,7 +26,7 @@ func getTag(match ...string) (string, *semver.PRVersion) { } } - return tagParts[0], nil + return string(tag), nil } } From e66d01e989276fa16178c3c9087ece91c36102d3 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 25 Dec 2019 19:37:51 -0500 Subject: [PATCH 191/231] Some documentation --- internal/config/runtime.go | 6 +++--- runtime/help/commands.md | 5 +++++ runtime/help/keybindings.md | 30 ++++++++++++++++++++++++------ 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/internal/config/runtime.go b/internal/config/runtime.go index 392616d0..f6e0a961 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -928,7 +928,7 @@ func runtimeHelpColorsMd() (*asset, error) { return a, nil } -var _runtimeHelpCommandsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x57\x5f\x6f\xdc\xb8\x11\x7f\x8e\x3e\xc5\xc0\x79\xb0\x1d\xd8\xfb\x01\xf6\xa1\x05\xea\x22\x68\x81\xb4\x4d\x9b\xf4\x0e\xf7\xa6\x59\x69\xb4\xe2\x99\x22\x15\x0e\xb9\x6b\xdd\xa7\x3f\xcc\x0c\xa5\x5d\xc7\x77\x40\xf2\x10\xaf\xc8\xf9\xff\xe7\x37\xc3\xf7\xf0\x39\x32\xbb\x83\x27\xe8\xe2\x34\x61\xe8\xb9\x69\x7e\x89\x05\x3a\x0c\x40\x2f\xd4\x95\x4c\x20\x3f\x7b\x97\x63\x5a\x69\xe0\xb0\xc0\x9c\x88\xd9\x85\x23\xb4\x4f\x39\xf9\x47\x6a\x61\x88\xde\xc7\x33\xe9\x6d\x1e\x37\x81\xbb\xe6\x1f\x94\x08\x30\x91\x9e\xce\xdf\xeb\x83\x3c\x62\x86\xa5\xea\x2c\x4c\xbb\xa6\xf9\x00\xed\xb7\xe2\x72\xbb\x87\xff\x16\x97\x19\x26\xd7\xa5\x68\xe7\x8c\x27\x82\xc1\x79\x0a\x38\xd1\x5f\xdb\x3d\x7c\xc1\x13\xb1\x29\x2c\x29\x51\xc8\x70\x28\xc3\x40\x69\x07\xff\x1c\xf4\x78\x25\x06\xc7\x30\xa7\x78\x72\x3d\xf5\xe0\x72\x03\x70\x76\xde\xc3\xad\x4a\x44\xbe\x7d\x45\x6c\xca\x12\xcd\x1e\x3b\x82\x1b\x26\x4c\xdd\x78\x03\x37\x27\xf4\x85\x6e\x60\xf0\x78\xe4\x76\x0f\x5f\x47\xc7\x26\x66\x25\x6d\x8d\xb4\x85\xb3\xcb\x23\xb4\x4a\xdf\xee\xa0\x01\x80\xaf\x23\x41\x6b\x9c\x1a\x8e\x38\x67\x17\x03\xfa\xdd\x25\x09\x7a\x2b\x97\x7b\x61\xf8\x00\xed\x23\xb6\x7b\xf8\x5f\x95\x8d\xde\x43\xec\xcc\xcd\x8e\x18\x30\x43\x0c\x1d\xad\xa4\xbe\xdd\xc3\xdf\x23\x20\x78\x97\x29\xa1\x07\x33\x05\x5c\xe0\x4c\xd8\x43\x1c\x00\x21\xd1\x91\x5e\xea\x4d\x23\x9c\xff\x8e\x99\x2c\x07\x9b\xe9\x53\xe1\x0c\x07\x02\x84\x13\x7a\xd7\x57\x9e\xbb\x12\x3c\x31\xab\x22\x8d\x25\x32\x53\x7f\xaf\x71\x8e\x81\xd4\xc5\x68\x21\xc7\x74\x2c\x13\x85\xcc\xd0\x47\x62\x08\x31\xc3\xa8\x51\x0e\x0b\xf0\x8c\x62\xbb\x0b\xe0\xf2\x83\xe6\x7d\xc2\x05\xe2\xe4\xb2\xb2\x7e\x2b\x31\x13\xbf\x0a\xbf\xb8\xfd\x7d\x06\x7e\x3c\xf6\xfa\x11\x8b\xe4\x5b\xaa\x4b\x8a\x38\x0c\x2e\x4d\x28\xc1\xdf\x35\xcd\xbb\x2f\x44\x9b\xaa\x76\x2b\xf1\x21\x26\x98\x62\x22\x70\x61\x88\x17\x6a\xa9\x40\xca\x35\x75\x60\x1a\xf6\xc0\x94\xad\x04\xeb\x79\x8e\x76\xb5\x03\x11\x2e\x17\xad\xdd\x70\x0b\x23\xf9\x19\x72\x9c\x5d\x27\x3a\xc4\x2a\x49\x18\x67\x89\x5d\x25\xda\xba\x81\x29\x6f\x3a\x7d\xec\xd0\xff\xa8\x62\x50\x6a\xbf\xc0\x5d\x0c\x7e\x91\x60\x5f\x35\x88\xe8\xb4\x1e\xb9\xaf\xd2\xc7\x78\xae\x12\x44\xe6\x18\xcf\xaf\x1b\xca\x44\xd6\xdc\x1e\xdd\x89\x42\xa5\xae\x69\x2a\x01\x78\x7c\xac\x91\x6b\xf7\x90\x4a\xe0\x2b\x5a\x1e\xc9\xfb\x2d\xb0\xd5\x96\x03\x76\xcf\xc7\x14\x4b\xe8\x77\xda\x18\x62\x54\x25\xb9\x65\x88\x25\xcf\x25\x5b\x76\x0f\x04\xbd\xe3\xd9\xe3\x42\xca\x2d\xb5\xe6\x5d\x20\x38\x8f\x24\x45\x04\x83\x0b\x8e\x47\x62\xd1\x1b\x5c\x38\x9a\x55\x07\x17\x7a\x78\xa6\x05\xb0\xab\x8e\x75\x89\x30\x4b\xdb\xc8\xb1\x5c\x0b\x7c\x0d\x29\x4e\x4a\x96\x63\xa5\xbc\x24\x8d\x49\x0f\x58\x2b\x3b\x5c\x71\x31\xe0\x21\x0a\x0e\x5d\x17\x89\x9c\x89\xcd\xd2\x4a\xcf\xb4\x30\x88\xb7\x26\x52\x5b\x1a\xf0\x84\xce\xe3\xc1\x57\x70\x39\xf1\xec\xd5\x7a\x43\x9c\x76\x0f\x71\x26\x21\x85\x13\xa5\xec\x24\xdb\x46\x61\xd5\xbc\xd1\x69\xc3\x85\x78\x8d\x6b\x62\xe0\x0a\x6d\x0f\x6f\x05\x38\x56\xd1\xd4\x9b\x28\xc1\xf3\x69\xce\xcb\x0a\x94\x6a\xcd\xf8\xc6\x1a\x16\xd9\xc8\xab\xa1\x2d\x1c\x4a\xde\x4c\x1c\x63\x72\xbf\xc5\x90\x2f\x3a\xae\x40\x46\xcc\x79\x6d\x82\xe9\xc8\x78\x78\xeb\xee\xa5\x4e\xe4\x4a\x12\x8c\x10\xe8\x0c\x19\x0f\x1b\x17\x9f\x5d\xee\x46\x39\x5a\xfb\x7e\xad\x26\xad\x90\xf5\x3a\x5a\xd6\x66\xea\xdc\xe0\xa8\x57\x11\x86\xba\xc2\x29\x1d\x25\x96\x91\xcb\x23\x25\xc3\x37\xb1\x28\x94\xe9\x40\xe9\x01\x62\x12\xcd\xe2\xb4\x02\xa5\xea\x7f\x27\xff\x40\xac\xf0\xf1\x78\x95\x21\x1f\x8f\x4a\xe5\x3d\x4c\xc4\x8c\x47\xb2\x74\xf7\x74\x28\x47\xe0\x8c\x99\x14\xff\xcc\x83\xd9\x97\xa3\x0b\xda\xe5\xed\x5e\xff\xb0\xb2\x4a\xcc\xd0\x7b\xea\xc1\x28\x5e\x93\x9f\x28\xb1\xf4\xf4\xec\xb7\xa6\x5c\x8f\xa4\xee\x2e\x6e\x1a\xfd\x2b\x5e\xad\xc7\x2b\x46\xec\x7b\x67\xc3\xc6\xae\xfe\x5c\x40\x22\x1f\x51\x9b\x58\x7f\x98\xa1\xa9\x84\xec\x26\x9b\x8e\xd5\xc8\xae\x87\x19\xf3\xd8\xee\xe1\x69\xc4\x70\xb4\x86\x39\xc7\xf4\x2c\x4d\xd5\xbb\x44\x5d\x8e\x69\x59\x73\x62\x09\x6e\x95\xa3\x1a\x7a\x16\x25\x9f\x93\x0b\xf9\x15\xd6\xbc\x11\x61\xe4\x12\xf8\xeb\xda\xf9\x8f\x7c\xe3\x56\x32\x7f\x30\xfe\xab\x37\x17\xb4\x56\x9f\x36\xc0\xbc\x86\x31\xb1\x52\xd6\x8c\x9e\x06\x2c\xbe\xe2\x5d\xe5\xb7\x9a\xab\x13\xd8\xa2\xe1\x09\x15\x3a\xa4\x30\xad\xa3\xea\x4c\x8b\x69\xbb\xab\x27\x7a\x2b\x74\x52\x78\x3d\xcd\x64\xa0\x13\xcd\xe2\x0d\x57\xb5\xc6\x73\x34\xa6\x1a\xa0\x84\xe7\x76\x0f\xff\x92\xcd\xc7\xaa\x3c\x9a\xcb\xb5\x37\xb4\xdc\x14\xb8\x45\x12\x71\x87\xb3\x00\xd6\xb7\x22\xab\x81\xe6\x97\x4e\x94\x16\xf9\xdf\x10\xdf\x65\x48\xd4\x91\x93\x6d\x49\x41\x4f\xf8\x32\xa5\xc9\xe9\x0a\xa2\x5d\x65\xc5\x22\xd3\x47\x51\x4c\xd7\x2e\x81\xb0\xa2\xb3\x84\xa9\xb2\x8a\xb8\x6b\x6e\xb5\x45\xe6\x9a\xf1\x32\x09\x36\xbb\x6e\x84\x0b\x5c\x26\x0a\xb7\xf9\xb2\xfc\x69\xeb\x8e\x8b\xa9\x55\xeb\x18\xa6\xc8\x59\x26\xf4\x50\xbc\xda\xaf\xbd\x74\x94\x70\x5d\x01\xef\x65\x60\x3d\xd3\x22\xdb\xdf\x1a\x01\x03\xda\x3b\xbe\x87\x83\x0c\x15\x85\xf3\x9a\xe4\x67\x5a\x76\xf0\x51\x22\xf2\x82\xd3\xec\x75\x5f\xaa\xa3\x02\xda\xbf\x40\x15\x06\xb2\xc7\x3e\xb5\x16\xeb\x3a\x70\xa0\x9d\xd0\x85\xdd\xdd\x87\x9f\x1c\x9d\xef\x77\x4f\x71\x5e\xda\x1d\xfc\x5f\x36\x82\x5c\x30\x93\x5f\x44\xd6\x2a\x60\xdb\x75\xa4\x86\xe1\x2c\x43\x4f\xfc\xd0\x59\xb0\x19\x55\x1b\xb4\xce\x05\xb3\x2b\x8f\x91\xa9\xe6\xe8\x57\xd9\xbd\x2c\x0f\x37\x9f\x0a\x7e\x2c\x41\x29\xff\x66\xfe\xef\x6e\x9a\xe6\xf1\xf1\xb1\x69\x04\xd5\x6c\xe1\x16\x2f\xb6\x5d\x5a\xc6\xcc\xb6\xe3\xd6\x3d\x7c\xad\xea\x8a\x31\x7b\x8d\xa0\x77\x41\xb0\xe8\xd3\xf7\xed\xa7\x0d\xa5\xd5\x93\x52\x4c\x6b\xaf\xc7\x49\xd0\xac\xdd\x03\x96\x1c\x65\x17\xb2\xe5\xa2\x9e\x4b\xdd\x97\xb0\x7e\xac\x92\x98\xbc\x8d\x4f\x6d\x0b\x17\x64\xea\xbd\x87\xa7\x8a\xdb\x9f\x31\xc9\xeb\xa1\x69\x7e\x96\x21\xbe\x66\x03\x57\x4f\x1e\xae\x1f\x04\x40\x2f\x39\x21\xf0\x12\x32\xbe\xd8\xaa\x3a\x5d\xda\x82\x5e\x66\x7d\x92\xd0\x10\x13\x35\xab\xa4\xeb\x07\x08\x7c\x8d\x2a\x06\xc3\xb6\x98\xd6\x41\x68\x6d\xba\xee\xa2\xec\xa6\xd9\x2f\x20\x8b\x87\x0e\xb4\xa6\xee\xa2\xb0\x3e\x88\xd0\xb3\x49\xa2\x70\x72\x29\x86\xc9\x96\xa3\xe4\x64\xa8\xf3\x86\x43\xeb\x23\x09\x93\xd6\x79\x1e\x69\x69\xd6\x4d\xc6\xac\xa5\xbe\x02\xa3\x4b\xeb\xa2\xf8\x51\x1a\xc9\x2f\x17\xc7\xc5\x0c\x7d\x84\xd9\x4b\x2b\x0a\xa8\xeb\xd6\x94\x5d\xf7\xcc\x8d\xae\x52\x97\x0d\x89\x44\x0c\xe6\x4b\xd6\x6d\xe9\xb2\xa8\x8c\xfa\x0c\xfb\x3d\x00\x00\xff\xff\x0c\xa2\xdf\x99\xec\x0d\x00\x00" +var _runtimeHelpCommandsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x57\xcd\x8e\xdc\xb8\x11\x3e\xaf\x9e\xa2\x30\x7b\xb0\xc7\x98\xe9\x07\xe8\x43\x02\x64\x02\x23\x01\x36\x89\xb3\xeb\x24\xc8\x4d\xd5\x52\xa9\xc5\x0c\x45\xca\x2c\xb2\x7b\x94\xa7\x0f\xaa\x8a\x52\xab\x3d\x59\x60\x7d\xf0\xb4\xc8\xfa\xff\xf9\xaa\xf8\x23\x7c\x89\xcc\xee\xe4\x09\xba\x38\x4d\x18\x7a\x6e\x9a\x7f\xc7\x02\x1d\x06\xa0\x37\xea\x4a\x26\x90\x9f\xbd\xcb\x31\xad\x34\x70\x5a\x60\x4e\xc4\xec\xc2\x19\xda\x97\x9c\xfc\x33\xb5\x30\x44\xef\xe3\x95\xf4\x36\x8f\x9b\xc0\x43\xf3\x27\x4a\x04\x98\x48\x4f\xe7\xef\xf5\x41\x1e\x31\xc3\x52\x75\x16\xa6\x43\xd3\x7c\x82\xf6\x5b\x71\xb9\x3d\xc2\xdf\x8b\xcb\x0c\x93\xeb\x52\xb4\x73\xc6\x0b\xc1\xe0\x3c\x05\x9c\xe8\xf7\xed\x11\x7e\xc1\x0b\xb1\x29\x2c\x29\x51\xc8\x70\x2a\xc3\x40\xe9\x00\x7f\x1e\xf4\x78\x25\x06\xc7\x30\xa7\x78\x71\x3d\xf5\xe0\x72\x03\x70\x75\xde\xc3\x07\x95\x88\xfc\xe1\x8e\xd8\x94\x25\x9a\x3d\x76\x04\x0f\x4c\x98\xba\xf1\x01\x1e\x2e\xe8\x0b\x3d\xc0\xe0\xf1\xcc\xed\x11\xbe\x8e\x8e\x4d\xcc\x4a\xda\x1a\x69\x0b\x57\x97\x47\x68\x95\xbe\x3d\x40\x03\x00\x5f\x47\x82\xd6\x38\x35\x1c\x71\xce\x2e\x06\xf4\x87\x5b\x12\xf4\x56\x2e\x8f\xc2\xf0\x09\xda\x67\x6c\x8f\xf0\x73\x95\x8d\xde\x43\xec\xcc\xcd\x8e\x18\x30\x43\x0c\x1d\xad\xa4\xbe\x3d\xc2\x1f\x23\x20\x78\x97\x29\xa1\x07\x33\x05\x5c\xe0\x4c\xd8\x43\x1c\x00\x21\xd1\x99\xde\xea\x4d\x23\x9c\x7f\x8d\x99\x2c\x07\x9b\xe9\x53\xe1\x0c\x27\x02\x84\x0b\x7a\xd7\x57\x9e\x8f\x25\x78\x62\x56\x45\x1a\x4b\x64\xa6\xfe\x51\xe3\x1c\x03\xa9\x8b\xd1\x42\x8e\xe9\x5c\x26\x0a\x99\xa1\x8f\xc4\x10\x62\x86\x51\xa3\x1c\x16\xe0\x19\xc5\x76\x17\xc0\xe5\x27\xcd\xfb\x84\x0b\xc4\xc9\x65\x65\xfd\x56\x62\x26\xbe\x0b\xbf\xb8\xfd\x7d\x06\x7e\x7b\xec\xf5\x23\x16\xc9\xb7\x54\x97\x14\x71\x18\x5c\x9a\x50\x82\x7f\x68\x9a\x1f\x7e\x21\xda\x54\xb5\x5b\x89\x0f\x31\xc1\x14\x13\x81\x0b\x43\xbc\x51\x4b\x05\x52\xae\xa9\x03\xd3\x70\x04\xa6\x6c\x25\x58\xcf\x73\xb4\xab\x03\x88\x70\xb9\x68\xed\x86\x5b\x18\xc9\xcf\x90\xe3\xec\x3a\xd1\x21\x56\x49\xc2\x38\x4b\xec\x2a\xd1\xd6\x0d\x4c\x79\xd3\xe9\x63\x87\xfe\xb7\x2a\x06\xa5\xf6\x0b\x7c\x8c\xc1\x2f\x12\xec\x5d\x83\x88\x4e\xeb\x91\xc7\x2a\x7d\x8c\xd7\x2a\x41\x64\x8e\xf1\x7a\xdf\x50\x26\xb2\xe6\xf6\xec\x2e\x14\x2a\x75\x4d\x53\x09\xc0\xe3\x73\x8d\x5c\x7b\x84\x54\x02\xef\x68\x79\x24\xef\xb7\xc0\x56\x5b\x4e\xd8\xbd\x9e\x53\x2c\xa1\x3f\x68\x63\x88\x51\x95\xe4\x03\x43\x2c\x79\x2e\xd9\xb2\x7b\x22\xe8\x1d\xcf\x1e\x17\x52\x6e\xa9\x35\xef\x02\xc1\x75\x24\x29\x22\x18\x5c\x70\x3c\x12\x8b\xde\xe0\xc2\xd9\xac\x3a\xb9\xd0\xc3\x2b\x2d\x80\x5d\x75\xac\x4b\x84\x59\xda\x46\x8e\xe5\x5a\xe0\x6b\x48\x71\x52\xb2\x1c\x2b\xe5\x2d\x69\x4c\x7a\xc0\x5a\xd9\x61\xc7\xc5\x80\xa7\x28\x38\xb4\x2f\x12\x39\x13\x9b\xa5\x95\x5e\x69\x61\x10\x6f\x4d\xa4\xb6\x34\xe0\x05\x9d\xc7\x93\xaf\xe0\x72\xe1\xd9\xab\xf5\x86\x38\xed\x11\xe2\x4c\x42\x0a\x17\x4a\xd9\x49\xb6\x8d\xc2\xaa\x79\xa3\xd3\x86\x0b\x71\x8f\x6b\x62\xe0\x0a\x6d\x4f\xef\x05\x38\x56\xd1\xd4\x9b\x28\xc1\xf3\x69\xce\xcb\x0a\x94\x6a\xcd\xf8\xce\x1a\x16\xd9\xc8\xab\xa1\x2d\x9c\x4a\xde\x4c\x1c\x63\x72\xff\x8d\x21\xdf\x74\xec\x40\x46\xcc\xb9\x37\xc1\x74\x64\x3c\xbd\x77\xf7\x56\x27\x72\x25\x09\x46\x08\x74\x85\x8c\xa7\x8d\x8b\xaf\x2e\x77\xa3\x1c\xad\x7d\xbf\x56\x93\x56\xc8\x7a\x1d\x2d\x6b\x33\x75\x6e\x70\xd4\xab\x08\x43\x5d\xe1\x94\x8e\x12\xcb\xc8\xe5\x91\x92\xe1\x9b\x58\x14\xca\x74\xa2\xf4\x04\x31\x89\x66\x71\x5a\x81\xf2\xa6\x9f\xde\xf2\xe0\x7c\xa6\x74\x5f\xe5\x76\x76\xdf\x29\x4c\xde\x6a\x06\xf2\x98\x62\x39\x8f\x80\xf7\xe5\xaf\xfd\xce\xc0\x19\x43\x8f\x49\xea\x59\xea\x5c\x3c\xa9\x08\xc4\xb5\xf2\x56\x39\x9a\x31\x3d\xca\xbd\x94\x57\xed\xc2\x3b\xa1\x07\x91\xfa\x39\x26\xa0\x37\x9c\x66\x4f\x4f\x12\x0a\x8e\x29\xef\xa0\xc5\xbc\xe4\x27\x18\x5c\xe2\xd5\x50\x11\x35\x3d\xa9\xfa\x2c\xcd\x54\x27\xbe\x88\x6b\x7f\x07\x7b\xc7\x45\xd8\x73\x68\x0f\xcd\x0f\xf2\x0f\x24\x2e\x3e\x9e\x77\x35\xeb\xe3\x59\xe3\xe6\x3d\x4c\xc4\x8c\x67\xb2\x06\xe8\xe9\x54\xce\xe2\x6f\x26\x9d\x08\x16\xd3\xd9\x97\xb3\x0b\x6a\x5c\x7b\xd4\x3f\xac\xac\x52\x45\xe8\x3d\xf5\x60\x14\xf7\xe4\x17\x4a\x2c\x31\x99\xfd\x06\x53\xeb\x91\x74\xe2\x2d\xf1\x46\x7f\xc7\xab\x1d\xba\x63\xc4\xbe\x77\x36\x7e\xed\xea\xd7\x05\x24\xf2\x11\x15\xd6\xf4\x87\x19\x9a\x4a\xc8\x6e\xb2\x7d\xa1\x1a\xd9\xf5\x30\x63\x1e\xdb\x23\xbc\x8c\x18\xce\x06\x21\xd7\x98\x5e\x05\x66\x7a\x97\xa8\xcb\x31\x2d\x6b\x95\x5a\xc9\xb7\xca\x51\x0d\xbd\x8a\x92\x2f\xc9\x85\x7c\x57\x53\xef\x44\x18\xb9\x04\x7e\xdf\x4d\x7f\x93\x6f\xdc\x9a\xe8\xff\x2c\x44\xd5\x9b\xdb\xfc\x52\x9f\xb6\x11\xb2\x07\x76\xb1\x52\x16\xaf\x9e\x06\x2c\xbe\x4e\x80\xca\x6f\x5d\xf8\xf3\x5a\xae\x12\x0d\x4f\xa8\x60\x2a\xad\x6a\x15\x5b\xa7\x7c\x4c\xdb\x5d\x3d\xb1\x7a\xc6\x93\x62\x56\x4f\x33\x19\x0c\x47\xb3\x78\x9b\x34\xda\xf5\x39\x1a\x53\x0d\x50\xc2\x6b\x7b\x84\xbf\xc8\x2e\x68\x7d\x1f\xcd\xe5\x8a\x16\x5a\x6e\x3a\xca\x44\x12\x71\x87\xb3\x34\xd2\xb7\x22\xcb\x92\xe6\x97\x2e\x94\x16\xf9\xdf\x66\xa0\xcb\x90\xa8\x23\x27\xfb\xa3\x8e\x01\xe1\xcb\x94\x26\xa7\x4b\x99\xe2\x8c\x15\x8b\xcc\x63\xc5\x75\x5d\x44\x05\xd4\x8b\x4e\x57\xa6\xca\x2a\xe2\xf6\xdc\x6a\x8b\x4c\x7a\xe3\x65\x92\x69\xe5\xba\x11\x6e\x03\x24\x51\xf8\x90\x6f\xeb\xb0\x82\xd9\xb8\x98\x5a\xb5\x8e\x61\x8a\x9c\x65\x67\x19\x8a\x57\xfb\xb5\x97\xce\x12\xae\xdd\x28\xba\x8d\xf0\x57\x5a\x64\x1f\x5e\x23\x60\xa3\xe7\x23\x3f\xc2\x49\xc6\xac\x0e\xb8\x9a\xe4\x57\x5a\x0e\x7b\xc0\x10\x7d\x75\x78\x4a\xe3\x57\x61\x20\x9b\xfd\x4b\x6b\xb1\xae\x23\x18\xda\x09\x5d\x38\x7c\xfc\xf4\x4f\x47\xd7\xc7\xc3\x4b\x9c\x97\xf6\x00\xff\x90\x1d\x29\x17\xcc\xe4\x17\x91\xb5\x0a\xd8\xb6\x3f\xa9\x61\xb8\x0a\x64\x89\x1f\x3a\x1d\x37\xa3\x6a\x83\xd6\x49\x69\x76\xe5\x31\x32\xd5\x1c\xfd\x47\xb6\x51\xcb\xc3\xc3\x4f\x05\x3f\x97\xa0\x94\x7f\x30\xff\x0f\x0f\x4d\xf3\xfc\xfc\xdc\x34\x82\xf3\xf6\x04\x11\x2f\xb6\xd7\x85\x0c\xde\x6d\xeb\xaf\x2f\x93\xb5\xaa\x2b\xc6\x1c\x35\x82\xde\x05\xc1\xa2\x9f\xbe\x6f\x3f\x6d\x28\xad\x9e\x94\x62\x5a\x7b\x3d\x4e\x82\x66\xed\x11\xb0\xe4\x28\xdb\xa1\xad\x5b\xf5\x5c\xea\xbe\x84\xf5\xe3\xfd\x70\x90\xb6\x70\x41\xf6\x80\x1f\xe1\xa5\x4e\xb2\x2f\x98\xe4\x3d\xd5\x34\xff\x12\x24\x5e\xb3\x81\xab\x27\x4f\xfb\x27\x12\xd0\x5b\x4e\x08\xbc\x84\x8c\x6f\xb6\xbc\x4f\xb7\xb6\xa0\xb7\x59\x1f\x69\x34\xc4\x44\xcd\x2a\x69\xff\x24\x83\xaf\x51\xc5\x60\xd8\x56\xf5\xba\x1a\x58\x9b\xae\xdb\x39\xbb\x69\xf6\x0b\xc8\x88\xd2\x11\xdf\xd4\xed\x1c\xd6\x27\x22\x7a\x36\x49\x14\x2e\x2e\xc5\x30\xd9\xba\x98\x9c\xac\x39\xbc\xe1\xd0\xfa\x6c\xc4\xb4\xce\x9a\xa5\x59\x77\x3b\xb3\x96\xfa\x0a\x8c\x2e\xad\xab\xf3\x67\x69\x24\xbf\xdc\x1c\xb7\x49\x29\x0c\xfa\xf6\x8c\x02\xea\xba\x47\x66\xd7\xbd\x72\xa3\xcb\xe5\x6d\x67\x24\x11\x83\xf9\x96\x75\x1b\x99\x16\x95\x51\xa7\xe6\xff\x02\x00\x00\xff\xff\x92\x8d\x9e\xa3\xfe\x0e\x00\x00" func runtimeHelpCommandsMdBytes() ([]byte, error) { return bindataRead( @@ -988,7 +988,7 @@ func runtimeHelpHelpMd() (*asset, error) { return a, nil } -var _runtimeHelpKeybindingsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x3a\x5d\x73\xdb\x38\x92\xcf\xd7\xbf\x02\xa7\x3c\x6c\x52\x2b\x2b\x96\xbf\xf2\x71\x5b\xa9\x72\x1c\x73\x9d\x99\x71\xe2\x89\xed\xc9\x66\x6f\x1e\x08\x91\x90\x85\x35\x09\x70\x00\xd0\xb2\x76\x6b\xef\xb7\x5f\x75\x03\x20\x01\xc9\xd9\xe8\x01\x02\x81\x46\xa3\xbb\xd1\x9f\x04\x9f\xb1\x9f\xc5\x66\x21\x55\x2d\xd5\x9d\x05\xb8\x94\x95\xd1\x6c\xc5\x2d\xe3\xac\x6b\x84\x5b\x69\xc3\x99\x5e\xb2\x95\x76\xf7\x62\x63\x99\x5b\x71\xc7\x5a\x7e\x2f\x98\x74\x4c\x70\xbb\x61\x5c\xd5\xac\xd3\x6b\x61\x96\x7d\xc3\x9c\x66\xbd\x15\x34\xc6\x9b\x06\xe2\x2a\x6e\x04\x5b\xf6\x4d\xb3\x61\x55\x6f\x9d\x6e\xe5\x3f\xf9\xa2\x11\x08\xbd\xd1\xbd\x61\x8d\xbc\x97\xea\x6e\x06\x70\x46\xb3\xec\x7e\xa4\x88\x96\x5a\xa7\x8d\xa8\x99\x54\x4e\x18\xc5\x11\x8d\x54\xac\x25\x4a\xe5\x92\x55\x2b\xae\xee\x44\xcd\xd6\xd2\xad\x98\x5b\x09\x56\xbe\x63\xb8\xbc\x84\x4a\xb7\x2d\x92\xa2\x0d\xee\xc3\x2a\xae\x18\x6f\xac\x66\x0b\xc1\x78\x5d\x13\x46\x5a\xb0\x94\x8d\x60\xe5\xff\xbd\x9c\x55\x5a\x2d\xe5\xdd\x4b\x42\xfd\x32\x92\x30\xfb\x87\xd5\xaa\x64\xdc\x42\x2d\x6d\xd5\x5b\x2b\x6a\xb6\x10\x8d\x5e\xcf\x58\xa1\x0d\xe3\xac\x91\xd6\xa1\x8c\x10\x55\x2d\x96\xbc\x6f\x5c\xc6\x42\xd8\x05\xd1\xb0\xa5\x36\x2d\x77\x28\xa4\x1a\x16\x1b\xcf\xc4\x14\x25\xcd\xad\x60\x56\x08\x82\x14\x48\x33\xe2\x93\x96\x68\x8b\x1b\xb5\xda\x08\x5c\x6a\xf6\x96\x46\x0a\x55\x37\x1b\xbf\x37\x72\x0e\xe2\xb1\x6b\xb8\xe2\x4e\x6a\x65\x71\xf5\x1a\x4f\x2a\x25\x29\x3d\x0c\x94\x4a\x04\xd8\xb0\x3a\x23\x01\xca\x77\x6c\x25\x9a\x2e\x2e\xc4\x45\x25\x7b\xce\x53\x06\x9c\xa8\x07\xb6\x13\x96\x2d\x93\xc8\x6e\xd5\xf4\xb5\xa8\x21\xec\x9f\x72\x53\xeb\xaa\x6f\x85\x72\x2f\x66\x00\x1f\x97\x3f\x94\x79\xad\x85\x65\x4a\x3b\x26\x1e\xa5\x75\xd3\xe1\x14\xad\x6c\x3b\x54\x26\x23\xb8\x43\x4d\x9c\x05\xbd\x5d\xcb\xa6\x61\xf7\x4a\xaf\x03\x73\x9a\xd5\xda\xeb\x05\xc2\xc0\xb7\xb0\x1c\x55\x14\x29\xe3\x91\xea\x3f\x33\x6e\x8c\x5e\x5b\x5c\xd1\xea\x07\xc1\xd6\xda\xd4\x6c\xb1\xa1\xff\x19\x3b\x73\xa6\x61\x8d\x58\x3a\x92\x9b\x91\x77\x2b\x47\x60\x80\x48\xaa\xde\x58\x6d\x70\x25\x3e\x59\xc7\x8d\x07\x1b\xd8\x16\xac\x91\x4a\x4c\x69\xb0\x42\x4c\x7d\x47\xfd\x5a\xaf\x95\xdf\xcd\xad\x04\x44\x34\xdf\xc3\xb1\xe8\x97\x4b\x61\x12\x26\x56\xba\xa9\x99\x5d\xc9\xa5\x3f\x7f\xb4\xb7\x00\x6b\x05\xa1\x45\x39\x33\x5e\x79\x85\x70\x9a\x59\xd1\x88\xca\xb1\xf5\x0a\xb5\xbd\xd5\x0f\xde\xe4\x9e\x3d\x63\x5f\x44\x10\x3b\x09\x03\xe0\x06\xb7\x8b\xca\xdb\xf2\x0d\xda\x8b\x11\x0b\xdd\xab\x9a\xf5\x16\xe1\xc8\xca\x7e\x70\x76\x5e\x71\xcf\x79\xb5\x82\x7b\xb1\x41\xc5\xf0\x18\x9c\x66\x68\x87\x44\xd7\x0c\x00\x35\x5b\x3c\xf2\xb6\x6b\xc4\x14\xe7\x10\x0b\x2b\x51\xe2\x7b\x9b\x92\xfc\x89\xaa\x35\x09\xc3\x0f\xfe\x93\x06\x8d\x40\x9d\x25\x75\xd0\x7d\x53\xb3\xae\x27\x5d\x83\xa5\x6e\x1a\xbd\x46\x12\x83\xd1\x95\x4f\x51\x05\x50\x96\x25\x3e\xc3\xbf\xe0\xbf\x26\x88\xf6\xdb\xe4\x2d\x9b\xdc\xaa\x5a\x4f\xa6\x61\xe4\xef\x38\xf2\x45\xd4\x7a\x02\xff\x46\x70\x80\x8f\x0a\xbd\x86\x44\xba\x91\x04\x81\x5d\x75\xe7\x3d\xd8\x0f\x84\x31\x6a\xae\xe9\x15\x94\xef\x88\xc9\xbf\xdc\x8b\x4d\xa5\xdb\x85\x7e\xc7\xfe\xe2\xc5\xf1\xae\xdc\xf2\x28\x08\x47\x9e\x32\x1c\xe3\x94\x5c\x84\x77\x3e\xa3\x26\x90\x4f\xab\x56\x5c\x2a\x16\x3c\x9e\x65\xeb\x95\x50\x78\x68\x9e\x0c\xef\x40\x06\x31\xcb\x25\xd1\xb3\xe6\xca\xb1\xd3\xc6\xed\xa1\x7a\x80\xe5\x0f\xde\x2f\xfc\xd1\x4b\x37\xd0\x4b\x94\x4a\x87\x2e\x5a\x30\xab\xdf\xa6\xa2\x63\x8c\xb1\x09\xad\x47\x59\x5d\xf3\x07\x31\xfd\xb5\x97\x6e\x10\xd8\xb3\x67\xec\x7d\x50\xac\x48\xd7\x16\xd1\x84\x9d\xa3\xda\x91\x44\x1f\x45\xd5\x3b\xc1\x78\x04\x67\x23\x47\xac\xd5\xb5\x60\xcf\x91\x7d\x28\xc9\x3b\x45\x94\xe5\x8b\x19\xbb\xf6\xfe\xa0\x33\xa2\x43\x93\x71\xa3\x02\x7b\xdb\x28\x03\xf0\xdb\x32\x93\xc4\xd3\xdc\x74\xc8\x4d\x5c\xd0\xad\xeb\x81\x9f\x4f\xe4\x57\x84\x22\xe1\x74\x46\x58\xcb\x4a\x5a\x50\x7a\x55\xeb\xd6\x75\x39\xd0\x4b\xae\x68\x21\x22\x53\xe8\x6e\x65\xb5\xf2\xc3\x76\xa5\xd7\x40\x7a\xb3\xd6\x06\x43\x1f\xab\xa5\x11\x95\xd3\x66\x13\xf5\x56\xaa\xa5\x5e\x70\xb3\x7d\xca\x5e\x60\x8a\x4d\x50\xfb\x50\x33\x26\xc9\x86\x09\xa3\x7b\x38\x8f\xdc\xde\xa0\xd7\x6d\x05\x57\x21\x74\x83\x0f\x9b\x6b\xad\xfe\xe4\x98\x6c\x5b\x51\x4b\xee\x44\xb3\x19\x84\x4f\x2e\x2d\xa2\xcc\x99\x4d\xc4\x3a\x65\x8b\xde\x81\x54\xd6\x09\x5e\xb3\x7f\xf4\xd6\xb1\xae\xe1\x95\x08\xfe\xcb\x24\x16\x18\x38\xd9\x3e\xcb\x2d\x95\x84\xd1\x96\xbd\xd6\x7a\x73\xff\x2b\x59\x7b\x08\x48\xe5\xee\x79\x11\x4c\x72\x5e\x9e\x6f\xd2\x8f\xff\x78\x6c\x1e\xf7\x94\x91\x2a\x95\xfe\x54\x78\xd7\x09\x4f\x67\x2a\x03\x24\x1d\xff\xe9\xb8\x82\x93\x46\x70\x58\x08\xcf\x72\xcd\xf8\xd2\x09\x83\x46\xf2\x5c\xe9\x20\x41\xdb\xa1\x30\xd2\xc0\x4f\xd2\xaf\xb4\x72\x46\x37\x5e\x94\x01\x19\x21\x89\x31\x31\x31\x19\xc3\xd7\x4c\xd8\x8a\x77\x18\x94\xff\xe8\x85\xaa\x84\x05\xf8\xac\x9a\x0d\x33\x28\x74\x8a\xa7\x56\x90\x63\x88\x16\x8d\xa1\x9d\xb2\x24\x61\x9d\x4f\x6f\x52\xcf\xee\x69\xe0\x46\xe0\xd9\x6b\x4f\x1b\x44\x57\x63\xfb\xae\xd3\x06\x57\x11\xe8\x52\x9b\xb8\x76\x86\xbb\x8a\x21\xc1\x31\x7c\xbd\xe0\xd5\x3d\xe5\x18\x3e\x1a\x70\xe6\x84\x69\xa5\xe2\xcd\xde\x82\x63\x76\x84\x87\xa0\x0d\xba\x7c\x17\x93\x90\x30\xd4\xf6\xd6\xc1\x9d\x70\x31\x5a\x49\x67\x49\x41\x30\xa7\x40\x3e\xf8\x42\xf7\x14\x93\x99\x78\x10\xca\x21\x02\xa3\xfb\x3b\x9f\xd7\xc5\x5d\x50\xab\xc7\x27\xb0\x02\x1d\x9e\x8f\x7b\x61\x55\xcc\xeb\xb4\x69\x71\x97\x6d\x31\x32\xbd\x74\x42\xb1\xe7\x8b\xde\x51\x76\xc1\x9b\x35\xdf\xd8\x17\x40\x81\x77\x74\x1a\xfb\x8f\xf3\x45\x39\x63\x5b\x31\x4a\x2e\x43\xea\x89\xa7\x60\x59\xf9\xfb\xe3\x7c\xf1\xbf\xf3\xff\x39\xfe\x50\x4e\x51\xa8\xad\xb6\x6e\xa0\xcd\xfa\x53\x22\xf5\x42\x23\xa4\x18\x85\x09\x9c\xd7\x43\x51\x53\x6a\xf1\x8b\x58\xba\x10\x09\x5b\xae\x36\xc4\x7e\xb5\xd2\x86\xb8\x42\xee\xa7\x19\xfb\xc1\x78\x91\x6d\x86\xe0\x81\xbb\x0a\x1d\x64\x50\x4e\x9a\x04\xae\xb2\x39\xde\x20\xc5\xe4\x61\x7a\x9b\xdb\x1f\x1d\x37\x19\xc5\x7b\x3c\x5a\x54\xde\x72\xca\xda\xcd\xb6\x90\xcb\xdf\xfb\xfd\xfd\x57\xcb\x72\xd0\x74\x4a\xe9\x84\x25\x7a\x28\x6b\x49\x24\xf7\x62\x1a\x7c\x9e\x74\xde\x79\x79\x1c\x4b\x6d\xa0\x1c\xb7\x21\xb9\xa0\xcc\xbd\x50\x2b\x8e\xb8\x46\x07\x30\x02\xce\x00\x2e\xf4\x5a\x3c\x08\x33\x65\x56\xb7\x22\x11\x32\x26\x08\x18\xf7\xc9\x06\x62\x0e\xe1\x35\xde\xef\xca\x6c\x27\x2a\xb9\x94\x55\x10\x08\x8c\xaa\x80\x4b\x6a\xb1\x94\x4a\x90\x5a\x29\xb6\x34\xba\x0d\xc4\xc4\x20\xe8\xbd\x73\xb3\xf1\x88\xdd\x4a\xa3\xa6\x6d\x23\xc2\xbc\xc6\x47\xe9\x2d\xd7\x96\x25\x35\x09\xe3\x11\x3b\x7a\x51\xd3\x57\x14\x73\x0d\x0c\xa7\x1c\x49\x27\x05\xc3\xbc\x11\xad\xae\x24\x5f\xe4\x90\xce\x18\x99\xa5\xda\x4e\x72\x76\xdd\x24\x1e\xdb\x88\x04\xfd\xe5\x07\xd1\x08\x27\xbe\x6a\x53\xa3\xf6\x0d\xbe\xf2\x42\x60\x71\x80\x25\x17\x4a\x38\x52\x46\x19\x24\xaa\x08\x12\x94\xfb\x26\xb2\xb5\x5a\x62\x6e\x8a\xe9\xe6\x70\x26\xe8\xca\x9e\x31\x79\x23\x4c\x7b\x40\xa9\x93\xef\x8e\x89\x50\xad\xbd\xfa\x48\xc5\x58\x79\x65\x04\x21\xa8\x84\xdd\x7b\x77\x65\x34\x66\x69\x76\xef\xdd\xcf\x54\x79\x10\xb7\x55\x23\xab\x7b\x1f\x66\xff\x5c\x4e\x41\x2a\xcc\xf8\xc8\x27\x8f\x95\x96\x4f\xb1\x97\x21\x8b\x2e\x4f\x89\xf0\x32\xe6\xbd\xe5\x35\x4a\xf3\xdc\x1b\xc4\x75\x38\x36\x9f\x0f\x50\x1e\xcf\x17\x98\x8a\x47\x83\x08\xd1\x19\xe3\x91\xdb\x74\x82\x95\xe3\x09\x48\x15\x72\xfd\x85\x7e\x64\xcf\x69\xab\xdf\x49\xdf\x99\xb4\xc0\x7b\xa7\xd1\x97\x55\x54\xa6\x5a\x94\xc9\x62\x13\x98\x9f\x79\xa1\xfc\x22\x55\xff\x18\x5c\x67\xa3\x79\xed\x93\xee\x6f\xbb\x72\x69\x12\x40\x2a\x23\x02\x30\xeb\x8c\xbe\x33\xbc\xc5\x82\x59\xb7\x38\x6b\xb5\x56\xff\x4d\xd1\xe3\x56\xe5\xb9\xfc\x47\x87\x6e\x98\xcc\xaf\xd3\xd6\xca\x50\x76\xd7\xd2\xfa\xbc\x52\x6d\x9e\xa8\x5c\xc7\xec\x7f\xb1\xa1\x62\x29\x80\x40\xf9\x49\x2b\x51\x06\x3d\x8f\x5e\x16\xfd\xd9\x9f\xec\xf7\x32\xed\x10\xd1\xd2\x2c\x96\x8e\x69\x48\x6d\xc7\x9a\xe3\x89\x82\x72\x20\x04\x23\x27\x97\xca\x7a\xff\x1a\xe8\x19\x38\x4a\x11\x13\x3e\xef\x78\x36\x63\xbd\x47\x09\x4b\x70\xf6\xb1\x4e\x6a\x67\x8c\xf4\x1d\x05\x44\xaf\x27\xc6\xbc\x5b\xbb\x15\x7a\xe4\x74\x6c\x7b\x33\x6f\x65\x70\x46\x51\xfc\xb6\x0b\x9d\x0f\x7a\xad\x42\xf7\x8a\xdf\x89\x61\x1c\x1f\x92\x39\x34\xba\xd0\xfd\x82\xe5\x64\xe8\x5f\xa3\x0f\x0d\xfd\x73\x55\xc3\x35\xa9\xee\x8d\xf6\xe3\xf1\x69\x9c\xb9\xed\x42\x87\x50\xfb\x2e\xa1\xf6\x5d\x8f\x1a\x8d\x7c\xec\x25\xd3\xe3\xc4\xf8\x4c\xd3\x97\xfa\x41\xfc\x22\x95\xb0\xb7\xdd\xd8\xa7\x2d\x46\xb7\xe1\x17\xe6\x6e\x24\x52\x20\x95\xc8\x49\xff\xbc\xcc\xc6\xce\x55\x1d\x46\x3e\x2a\x2b\x8c\xfb\x24\xd6\xcd\xf8\x74\x8d\xee\x11\x06\x47\x19\xf6\x80\x33\x81\x89\x4d\x80\xb9\xe1\x0b\xc0\x82\x83\x9a\xd3\xa6\xf1\xff\x16\x0a\xa9\x6a\x6a\x3e\x89\x47\x47\x9d\x2b\x23\x1e\xa4\xee\x2d\x60\x75\x07\x58\xd0\xc1\x99\xee\x36\x70\xd6\xa3\xa0\x3d\xad\x1f\xfa\xae\x91\x15\x77\xc2\x3f\xd1\x7e\x81\xbc\x5a\x28\xe7\xc9\x96\x5a\xc1\xe7\xde\xe5\x03\x57\xdc\xba\xc8\x17\x92\xf1\xb9\x13\xaa\x90\x8d\x00\x7f\x62\x78\x52\x41\x0d\x06\x05\xf0\xc0\x61\x74\x7c\xa0\xb9\x0b\xde\x2c\xc3\x4c\xec\xfa\x35\x89\x10\x47\xe1\x5d\x71\xc3\xef\x0c\xef\x56\x03\x8f\xc3\x08\xb1\x7f\xa3\xef\xee\x1a\x71\x21\x9a\x2e\x74\xbf\xf4\x8d\x30\xf0\x53\xdf\x76\xb4\xfe\xac\x11\x1c\x55\xce\xf5\x16\xae\x57\xa2\x69\x2e\x75\x2d\xd0\xa5\x60\xe2\x4b\x7d\x2c\xe7\xa8\x41\xde\x4e\xeb\x1a\xc5\x1e\x37\xc3\x3e\x6e\x13\xff\xaf\xbb\x46\x3a\xb8\x55\x96\xfe\x7f\xf3\x8f\x17\xfe\x2f\xae\xf1\x4f\x9e\x98\x4b\x5e\x19\x0d\x57\x0d\xdf\xf8\xde\x75\x6f\xa9\x78\x7b\x7e\xab\xe4\x23\xd3\xaa\xd9\xbc\x80\xeb\xca\xe8\xa6\x41\x39\x51\xc7\xcb\xa2\xe3\x6b\x75\xd9\x37\x4e\x7a\x3b\xd9\x19\xf0\x32\x85\x2f\xa2\xd5\x0f\x22\x05\xf4\x23\xa7\x4d\x93\x0c\x5a\xb8\xbe\x97\x5d\x0a\x85\x2e\x8e\x64\x74\xa3\x2f\xb9\xab\x56\x52\xdd\xbd\x37\xa8\x87\x14\x20\x77\xab\x31\x8a\x94\xad\xa6\xd7\x9e\xc1\x0d\x3d\x0f\x2f\x61\xb0\x2c\x5a\x88\xf1\xbd\x87\x87\x5a\xf4\xce\x69\x65\x5f\x78\xff\x71\x89\x63\x57\x98\x0d\xfa\x6e\x4a\xca\x18\x92\xa5\x0d\x2f\x92\xbc\x2f\x42\x1f\x36\xf8\x23\x0a\x09\x69\xbd\x1e\x3c\xd3\x6d\x07\x24\x30\x6f\xa9\x64\x9f\xb7\x5d\xf8\x0b\xd6\xab\xd7\x8a\x06\xb0\x13\xfc\x90\xb7\xb2\x6d\xa5\xbd\xd0\x2d\x69\x5e\x30\xbf\x68\x93\xa4\x5b\xe7\x8f\xd2\x79\x5d\x82\x33\xae\x2a\xd1\xc0\x95\x91\xca\xc1\x15\xef\xad\xb7\x63\xc7\x17\x50\xcc\xa1\x38\x80\xe2\x10\x8a\x23\x28\x8e\xa1\x38\x81\xe2\x15\x14\xaf\xa1\x78\x03\xc5\x7c\x1f\x8a\xf9\x1c\x8a\xf9\x01\x14\xf3\x43\x28\xe6\x47\x50\xcc\x8f\xa1\x98\x9f\x40\x31\x7f\x05\xc5\xfc\x35\x14\xf3\x37\x50\x1c\xec\x43\x71\x80\x78\x0e\xa0\x38\x38\x84\xe2\xe0\x08\x8a\x83\x63\x28\x0e\x4e\xa0\x38\x78\x05\xc5\xc1\x6b\x28\x0e\xde\x40\x71\xb8\x0f\xc5\xe1\x1c\x8a\x43\xdc\xf0\x10\x8a\xc3\x23\x28\x0e\x8f\xa1\x38\x3c\x81\xe2\xf0\x15\x14\x87\xaf\xa1\x38\x7c\x03\xc5\xd1\x3e\x14\x47\x73\x28\x8e\x0e\xa0\x38\x42\xca\x8e\xa0\x38\x3a\x86\xe2\xe8\x04\x8a\xa3\x57\x50\x1c\xbd\x86\xe2\xe8\x0d\x14\xc7\xfb\x50\x1c\xcf\xa1\x38\x3e\x80\xe2\xf8\x10\x8a\x63\x64\xe1\x18\x8a\xe3\x13\x28\x8e\x5f\x41\x71\xfc\x1a\x8a\xe3\x37\x50\x9c\xec\x43\x71\x32\x87\xe2\xe4\x00\x8a\x93\x43\x28\x4e\x8e\x00\x73\x3e\xef\xd0\xb0\x77\x4a\xed\x7b\x6a\xcf\xa8\xfd\x40\xed\x39\xb5\x05\xb5\x7f\xa5\xf6\x82\xda\x8f\xd4\xfe\x44\xed\xcf\xd4\xfe\x42\xed\x25\xb5\x9f\xa8\xfd\x4c\xed\x15\xb5\xbf\x52\xfb\xc5\xef\x4a\xed\x0d\xb5\xb7\xd4\xfe\x46\xed\x57\x6a\xff\x46\xed\x37\x6a\xff\x0e\xb1\x0a\xb9\xfe\x03\x86\x24\xb5\xe1\x76\xe5\xd1\xa1\x62\x84\x99\x33\x6e\xb8\xf3\x28\x55\x2d\x8c\xad\xb4\x49\x5d\xf5\xe7\xa6\x1e\x1f\xd0\x31\x9c\xdb\x0a\x7c\xca\x05\xe7\xa4\x58\x3f\x36\xa2\x60\x1e\x64\x44\x9b\xf8\xfa\x71\x30\x21\x85\xa5\x62\x33\x58\x9a\x36\x90\x99\x5e\x6a\x54\x21\x94\xa1\x4d\xc9\xba\x6e\x84\xef\x7b\x35\xa7\xee\xd7\x95\x10\x0d\x85\xb8\xf8\x40\xba\x3e\x3e\x8e\x18\xe8\xd1\x2f\xf5\xaf\xb6\xd8\x87\x9d\x24\x85\xf9\x17\x80\xbd\xe1\xe1\xd5\xe6\x56\x12\x7e\xdb\x4d\xde\xb2\xf4\x37\x89\xb9\xc3\x64\xea\x21\x70\xfb\x0c\x66\x32\x26\x15\x11\x86\x88\x48\x81\x26\x49\x1a\x11\x81\x28\xa7\x7f\x02\x11\x8d\x07\x98\xeb\x95\x5c\xba\x94\xa6\x49\xcc\x29\x32\x88\x94\xa6\xc9\x98\x6c\x64\x30\xe9\x76\x93\x31\x0b\xc9\x60\x52\xba\x27\x49\x7a\x12\x81\x4e\x1b\x97\x53\x3d\x19\x8a\x93\x11\x22\x67\x7e\x32\xe4\x21\x09\x48\x2e\xe5\x49\x92\xca\x24\x40\xb9\xa0\x27\x59\x8e\x93\x80\xe5\x84\x4f\xb6\xb2\xa6\x6d\xc0\x81\xfc\x49\x9e\x4e\x45\xb8\x68\x64\x23\xfd\x49\x58\x4f\x81\x32\x2e\x27\x43\xbc\x4f\x41\xb2\x0d\x27\x4f\xe4\x5a\x99\xec\xd1\x7b\x6f\x9d\xcf\x93\xc0\x03\xe6\x48\xc1\x64\x27\x63\xcb\xf0\x9e\xab\x3a\x61\xe6\x7b\xa0\xe4\x2d\xd2\x53\x99\x24\xc9\x6e\x0a\x94\x9d\xca\x64\xc8\x82\x77\xa8\x8b\xc8\x72\x56\x76\xc0\x22\xba\x94\xb2\xe4\xcc\xf6\xfe\x95\x29\xca\x4e\x32\x95\x82\xfe\xfb\x69\x50\x4c\x7b\x22\x18\xb9\xb7\x0c\x2c\xcb\x6d\x53\xea\x2e\x32\xb0\xc1\x61\x46\x90\x71\xe0\xed\xf7\x40\x90\xa6\x0c\xd3\x76\x3d\x9f\xc0\x65\xe8\xbe\x03\x77\xc3\x17\xb9\x6f\x9a\x6c\x65\xbe\xd3\x21\xed\x4e\xa9\x74\xe9\xb2\xc9\x76\x72\x3c\x0d\x03\xdb\xba\xf0\x39\x63\x3f\x66\xcc\xd9\xf1\x65\x10\x98\xda\xa7\xb3\x45\x36\x8b\x39\x7e\x3a\xfb\x69\x67\x36\x3d\x25\x0a\x95\x3b\x10\xdb\x47\x1e\xef\x7f\x46\xa8\x70\x35\x34\xcc\x7e\xcb\x66\xe9\x9a\x28\x99\x3d\xcb\xfd\xb3\xee\x36\xe9\xec\xdf\xb6\xbc\x77\x46\xdc\xcf\xdb\x93\xdb\xd2\xfb\x90\x01\x64\x95\x4b\x0a\xf6\xdb\x96\xc6\x5a\x97\x4d\x9f\xe6\x12\x8e\xf5\x4b\x0a\x72\x93\x81\xf8\xe4\x3f\xd1\xab\x69\x1e\x5f\x92\xaa\x20\x01\x9a\xe5\x40\xa1\x5c\x88\x00\xa9\x5b\x0a\x84\xec\xfa\xa4\xd4\xc7\x30\xf6\x5d\x87\x98\xe1\xfa\x9e\x83\xc9\x70\xed\x3a\x18\x9f\xf4\xee\x3a\xaa\x30\x9e\x40\x3d\xe5\xa9\x86\xf1\x69\x7e\x35\x31\x62\x1b\xeb\xb1\xcc\xdb\x3f\x01\x43\x85\x5a\x16\x37\x32\xa0\x58\xc1\x0d\x79\x03\x19\x75\x4a\x78\x18\x49\x30\xbc\xcf\x4f\x3c\x96\x7b\x29\xc8\xaf\x19\x08\x5d\xe5\xa5\xc2\xdb\x52\xea\xa1\x4a\x4c\x81\xbe\x66\x40\x43\x59\x98\x85\x82\x27\xf8\xa5\x0a\x30\x05\xfa\x29\x57\xdf\x58\x24\x4e\xa6\x40\x30\x2f\x5f\xb2\xf3\x96\x57\x76\xcf\xba\x8d\xaf\x80\x86\x2f\x58\x58\xf4\x7b\x4b\x8c\x5f\x4f\x05\xeb\xbd\x45\x9c\xd9\x76\x95\x9c\x42\xde\xae\x0e\xe2\x1c\x8a\x37\x53\xbd\x48\xc8\x47\xe5\xc4\x9d\xcf\xf9\xfc\xdb\x6f\xfa\x9a\xa4\xe5\x8a\xdf\x09\x13\xe8\x29\xe6\xe4\x7c\x77\x15\xa0\x38\xf0\x11\x2a\x71\x71\xc5\x21\x0d\xa5\x7e\xad\x38\xa2\xa1\xf4\x44\x8a\x57\xbb\x50\xf3\x7d\xa4\x31\x85\x3a\xb7\x15\x91\x4d\x19\x78\x42\xf3\xa5\xcf\xb4\x33\x99\xa5\x29\x71\x48\x63\x42\xf5\x1d\xb1\xe5\x79\x32\xc9\x6a\x28\xcb\x33\x98\x2c\x1f\x1c\x0b\xdc\x0c\xc6\xe7\xe4\x21\x90\x93\x7f\xba\x32\xb2\xe5\x26\x73\x95\x7b\x29\xba\xc9\x76\x7d\x9c\x32\x84\xa3\x5d\x13\x2f\xd5\x2c\xdb\xd5\x07\x4f\xf0\xd6\xbb\x82\xf4\x84\xdb\xa7\x00\xbc\x6b\x4c\xc1\x3a\xff\x61\xc0\xd6\xcb\x85\x14\xa2\x1a\x21\xb6\x5e\x36\xa4\x50\x8f\xb4\x5d\xfe\xf2\x61\x32\x4d\xee\xce\x0b\xba\x06\x50\xda\x09\x0b\xf0\x49\x3b\xf1\x96\x7d\x56\xbe\x52\xd2\x4d\x3d\x5e\x07\x89\xb6\x6f\xb8\x43\xa6\xe9\x5b\x27\xc5\xbe\x4a\x55\xeb\xb5\x65\x2d\xaf\x56\x98\xd5\x4e\xfd\xd5\xc3\x45\xc9\xec\x8a\xde\x68\x2f\xe8\x12\xca\xbf\x2a\x5f\xc4\xf4\x60\x06\x70\x1a\x3e\x6f\xe0\x4d\xb3\x99\x8e\x5f\xc7\xd0\x7b\x85\x58\x83\xd1\x1b\x61\xac\x76\xe8\xea\xfb\x5e\x6c\xf2\x2b\x75\x3f\xcc\x4b\xac\xcc\xa8\x7b\xdb\x95\x33\xe6\xbf\xce\x09\x57\x8c\x48\x27\xd3\x9d\xdf\x88\x95\x7b\x25\x5b\x08\xb7\x16\x42\xb1\x56\xd7\x72\x29\x85\xb1\xfe\x73\x03\x5c\xef\x2f\x3c\x80\x18\x28\x99\xd5\x03\xfe\x2a\x70\xc2\x8c\x58\x1b\xe9\x9c\x50\x8c\xfb\xfb\x78\x5e\xb2\xe7\x15\xb7\x68\x83\xce\x21\x32\x64\x13\x99\x89\x3a\xf1\x62\x06\x74\x2d\x2e\x2d\x5b\xaf\x86\x1b\xf7\xa7\xde\x3a\x0f\xdf\x1b\x09\x4f\xcd\x90\x76\x97\x2c\xde\x7d\xeb\xa5\xe7\x33\x99\xf2\x95\x2b\x37\x82\x89\x3f\x7a\xf9\xc0\x9b\x70\xb9\x7b\xe5\x3f\xb1\x0a\x57\x67\xdc\x3d\x79\x84\xf4\xb9\x9b\xe1\xea\x4e\x30\xde\xf9\xe0\x3e\xbc\xda\xf6\xb7\x52\xda\x5f\x01\x57\x42\x3e\x08\x0b\xd9\x5d\x69\xb8\x6c\x1d\xf0\xd6\xa2\x92\xb5\x18\xae\xc1\x66\xec\x3a\xbd\x38\x4b\xb6\xc5\x32\x5b\x69\x47\xd7\x7c\xac\x12\xc6\x71\xa9\x22\x5a\xfc\x63\x72\xeb\x03\x2e\x66\xf9\xc6\x8e\x77\x76\x91\x1e\x7f\xd7\x8b\xeb\x66\xec\x46\xd3\xd7\x64\xe2\x91\xd3\xdd\x19\x7d\x91\x15\x6f\x4e\x3d\xf1\xfe\xae\x2d\xbf\xdb\xcc\x2f\xea\xe9\xdb\x90\x29\x33\xbd\x8a\x5f\xf6\x19\xbe\x1e\x3e\xec\x9b\xc1\xff\x07\x00\x00\xff\xff\x47\xd3\x2f\x42\xbe\x28\x00\x00" +var _runtimeHelpKeybindingsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x3a\x5d\x73\x1c\x29\x92\xcf\xc7\xaf\xe0\xda\x11\xb7\x76\x6c\xab\x47\xad\x2f\x7f\xdc\x86\x23\x64\x59\xb5\xf6\x7a\x64\x69\x2c\x69\xbc\xde\x9b\x87\xa2\xab\xb2\xbb\x59\x55\x41\x0d\x50\x6a\xf5\xee\xec\xfd\xf6\x8b\x4c\xa0\x0a\x5a\xf2\xcd\x9d\x1e\x10\x0d\x49\x92\xdf\x64\x42\x3d\xe3\x9f\x60\xbb\x90\xaa\x96\x6a\x65\x19\xbb\x90\x95\xd1\x7c\x2d\x2c\x17\xbc\x6b\xc0\xad\xb5\x11\x5c\x2f\xf9\x5a\xbb\x3b\xd8\x5a\xee\xd6\xc2\xf1\x56\xdc\x01\x97\x8e\x83\xb0\x5b\x2e\x54\xcd\x3b\xbd\x01\xb3\xec\x1b\xee\x34\xef\x2d\xd0\x98\x68\x1a\x16\x57\x09\x03\x7c\xd9\x37\xcd\x96\x57\xbd\x75\xba\x95\xff\x10\x8b\x06\x10\x7a\xab\x7b\xc3\x1b\x79\x27\xd5\x6a\xc6\xd8\x19\xcd\xf2\xbb\x91\x22\x5a\x6a\x9d\x36\x50\x73\xa9\x1c\x18\x25\x10\x8d\x54\xbc\x25\x4a\xe5\x92\x57\x6b\xa1\x56\x50\xf3\x8d\x74\x6b\xee\xd6\xc0\xcb\xb7\x1c\x97\x97\xac\xd2\x6d\x8b\xa4\x68\x83\xfb\xf0\x4a\x28\x2e\x1a\xab\xf9\x02\xb8\xa8\x6b\xc2\x48\x0b\x96\xb2\x01\x5e\xfe\xf7\x0f\xb3\x4a\xab\xa5\x5c\xfd\x40\xa8\x7f\x88\x24\xcc\xfe\x6e\xb5\x2a\xb9\xb0\xac\x96\xb6\xea\xad\x85\x9a\x2f\xa0\xd1\x9b\x19\x2f\xb4\xe1\x82\x37\xd2\x3a\x94\x11\xa2\xaa\x61\x29\xfa\xc6\x65\x2c\x84\x5d\x10\x0d\x5f\x6a\xd3\x0a\x87\x42\xaa\xd9\x62\xeb\x99\x98\xa2\xa4\x85\x05\x6e\x01\x08\x12\x90\x66\xc4\x27\x2d\xd1\x16\x37\x6a\xb5\x01\x5c\x6a\xf6\x96\x46\x82\xaa\x9b\xad\xdf\x1b\x39\x67\xf0\xd0\x35\x42\x09\x27\xb5\xb2\xb8\x7a\x83\x9a\x4a\x49\x4a\x95\x81\x52\x89\x00\x5b\x5e\x67\x24\xb0\xf2\x2d\x5f\x43\xd3\xc5\x85\xb8\xa8\xe4\xcf\x45\xca\x80\x83\x7a\x60\x3b\x61\xd9\x72\x89\xec\x56\x4d\x5f\x43\xcd\xc2\xfe\x29\x37\xb5\xae\xfa\x16\x94\x7b\x31\x63\xec\xe3\xf2\x77\x65\x5e\x6b\xb0\x5c\x69\xc7\xe1\x41\x5a\x37\x1d\xb4\x68\x65\xdb\xa1\x31\x19\x10\x0e\x2d\x71\x16\xec\x76\x23\x9b\x86\xdf\x29\xbd\x09\xcc\x69\x5e\x6b\x6f\x17\x08\xc3\xbe\x85\xe5\x68\xa2\x48\x99\x88\x54\xff\x91\x0b\x63\xf4\xc6\xe2\x8a\x56\xdf\x03\xdf\x68\x53\xf3\xc5\x96\xfe\xcf\xf8\x99\x33\x0d\x6f\x60\xe9\x48\x6e\x46\xae\xd6\x8e\xc0\x18\x22\xa9\x7a\x63\xb5\xc1\x95\xf8\xcb\x3a\x61\x3c\xd8\xc0\x36\xf0\x46\x2a\x98\xd2\x60\x85\x98\xfa\x8e\xfa\xb5\xde\x28\xbf\x9b\x5b\x03\x8b\x68\xbe\x87\x63\xd1\x2f\x97\x60\x12\x26\xd6\xba\xa9\xb9\x5d\xcb\xa5\xd7\x3f\xfa\x5b\x80\xb5\x40\x68\x51\xce\x5c\x54\xde\x20\x9c\xe6\x16\x1a\xa8\x1c\xdf\xac\xd1\xda\x5b\x7d\xef\x5d\xee\xd9\x33\xfe\x05\x82\xd8\x49\x18\x8c\xdd\xe0\x76\xd1\x78\x5b\xb1\x45\x7f\x31\xb0\xd0\xbd\xaa\x79\x6f\x11\x8e\xbc\xec\x77\x74\xe7\x0d\xf7\x5c\x54\x6b\x76\x07\x5b\x34\x0c\x8f\xc1\x69\x8e\x7e\x48\x74\xcd\x18\x43\xcb\x86\x07\xd1\x76\x0d\x4c\x71\x0e\xb1\xf0\x12\x25\xbe\xb7\x2d\x29\x9e\xa8\x5a\x93\x30\xfc\xe0\x3f\x68\xd0\x00\xda\x2c\x99\x83\xee\x9b\x9a\x77\x3d\xd9\x1a\x5b\xea\xa6\xd1\x1b\x24\x31\x38\x5d\xf9\x14\x55\x8c\x95\x65\x89\xbf\xd9\x3f\xd9\xbf\x4d\x10\xed\xb7\xc9\x1b\x3e\xb9\x55\xb5\x9e\x4c\xc3\xc8\xdf\x70\xe4\x0b\xd4\x7a\xc2\xfe\x85\xe0\x8c\x7d\x54\x18\x35\x24\xd2\x8d\x24\x00\x76\xd5\xca\x47\xb0\xdf\x11\xc6\x68\xb9\xa6\x57\xac\x7c\x4b\x4c\xfe\xe9\x0e\xb6\x95\x6e\x17\xfa\x2d\xff\x93\x17\xc7\xdb\x72\x27\xa2\x20\x1c\x45\xca\xa0\xc6\x29\x85\x08\x1f\x7c\x46\x4b\xa0\x98\x56\xad\x85\x54\x3c\x44\x3c\xcb\x37\x6b\x50\xa8\x34\x4f\x86\x0f\x20\x83\x98\xe5\x92\xe8\xd9\x08\xe5\xf8\x69\xe3\xf6\xd0\x3c\x98\x15\xf7\x3e\x2e\xfc\xda\x4b\x37\xd0\x4b\x94\x4a\x87\x21\x1a\xb8\xd5\x6f\x52\xd1\x71\xce\xf9\x84\xd6\xa3\xac\xae\xc5\x3d\x4c\x7f\xea\xa5\x1b\x04\x86\xba\x0f\x94\x7b\xcf\x34\xe0\x7a\xa3\xb8\xe0\xb6\xaf\x2a\xb0\x96\x2f\x1b\xb1\x9a\xf1\xd3\x60\xa3\xb4\x1f\x78\x4e\xa0\x46\xa0\x35\x9d\x37\xde\xcd\x88\x3f\xad\xd0\xed\xb5\x72\x52\xf5\x10\xb8\x74\x6b\xc0\x88\x86\xe7\x84\x47\x0b\x76\x8a\x21\x7f\x29\x64\xd3\x9b\xf0\x03\x24\x82\xcd\xc8\xb6\xcb\x69\xc9\x2d\x74\xc2\x08\xa7\x8d\xa7\x4c\x34\x1b\xb1\xb5\x61\x93\xe0\xca\x0a\x1e\xa2\xff\xcc\x38\xad\xfb\x2d\x59\xc7\xfc\xba\x85\x36\x3e\xca\xf9\xa5\xd2\x3b\x6b\x60\xba\x33\x50\x01\x39\x96\x74\x9e\x38\xa8\xad\x0f\x04\x64\x9b\xff\x51\xd2\xee\xec\xff\x81\x05\x99\xb2\xbb\xea\x54\x69\x9c\x67\xd1\xf4\xa6\xdc\x89\xc5\xe8\x77\xc2\x92\xee\xd8\xe4\x46\x2c\x50\x5f\xa7\xbd\xd3\x95\x46\x0c\x0e\x7e\xfb\xa8\x6a\x50\xee\x9a\x22\x84\xd4\xea\xb7\x8f\xca\x82\x71\x08\xe9\x55\x79\x83\xc1\xbb\x05\xa1\x42\x06\x10\x28\x2c\x53\x24\x65\x24\x58\xda\xa8\x89\x65\xdf\x4c\x13\xbe\x46\x91\xcd\xd8\x25\xea\x63\x23\x2d\xd2\xef\xfc\x8c\x33\x5b\x5e\xee\x50\x52\x7a\x71\xd1\x7e\x22\xb0\xcf\x9d\xd6\xc3\x2a\x06\x0f\x50\xf5\x0e\x70\x65\xa0\xb9\xf4\x61\xed\x5d\x08\x6a\xd1\x27\x76\x1c\x86\x2c\x5b\x60\xc8\x23\x6f\x0e\x58\x44\x04\xe7\xa3\x37\xf1\x56\xd7\xc0\x9f\xa3\xeb\xb1\x92\x4e\xc6\x88\xb2\x7c\x31\xe3\xd7\xfe\x2c\xea\x0c\x74\x10\x14\x1b\xc3\x29\xc5\xe5\x32\x00\xbf\x29\x33\xb5\x3d\xed\x49\x1d\x6a\x26\x2e\xe8\x36\xf5\xe0\x4b\x9f\xe9\x4c\x03\x45\x8e\xd9\x19\x74\x9e\x92\x16\x94\x5e\x11\xdd\xa6\x2e\x07\x7a\x49\x9a\x0b\x88\x4c\xe1\x51\x2f\xab\xb5\x1f\xb6\x6b\xbd\x61\x14\xb3\x36\xda\x60\xda\xc5\x6b\x69\xa0\x72\xda\x6c\xa3\x21\x49\xb5\xd4\x0b\x61\x76\x23\x8c\x17\x98\xe2\x13\x8c\x7c\x18\x95\x26\xc9\x86\x09\xa3\x7b\x38\x8f\xdc\xee\x1a\x0d\xf3\x29\xdb\x46\xab\x3f\x38\x2e\xdb\x16\x6a\x29\x1c\x34\xdb\x41\xf8\x64\x29\x11\x65\xce\x6c\x22\xd6\x29\x5f\xf4\x8e\x49\x65\x1d\x88\x9a\xff\xbd\xb7\x8e\x77\x8d\xa8\x20\x9c\x9d\x26\x89\xfe\x81\x93\x5d\x5d\xee\xf8\x0f\x1b\xcf\x11\x1f\x31\xfd\x51\xf3\x67\x3a\x69\x42\x32\x54\x3e\xd6\x17\xc1\x24\xfa\xf2\x7c\x93\x7d\xfc\xaf\x6a\xf3\xb8\xa7\x9c\x4c\xa9\x0c\x4e\xd1\x75\xe0\xe9\x4c\x65\x80\xa4\xe3\x7f\x52\x57\x48\x10\xc8\xe6\x17\xe0\x59\xae\xb9\x58\x3a\x30\xe8\x0b\xcf\x95\x0e\x12\xb4\x1d\x0a\x23\x4d\x3a\x49\xfa\x18\x35\x8d\x6e\xbc\x28\x03\x32\x42\x12\xf3\xb1\xc4\x65\x8c\xd8\x70\xb0\x95\xe8\x30\x21\xfc\xb5\x07\x55\x81\x65\xec\x12\x83\xaf\x41\xa1\x53\x2e\x67\x21\xb8\xbb\x3f\x4d\x30\x00\x53\x86\x0e\xd6\xf9\xd4\x3a\xcd\x2a\x3c\x0d\xc2\x00\xea\x5e\x7b\xda\x58\x3c\xe6\x6c\xdf\x75\xda\xe0\x2a\x02\x5d\x6a\x13\xd7\xce\x70\x57\x18\x92\x6b\x23\x36\x0b\x51\xdd\x51\x7e\xeb\x33\x11\xc1\x1d\x98\x56\x2a\xd1\xec\x2d\x04\x66\xe6\xa8\x04\x6d\x30\x06\xb9\x98\x00\x87\xa1\xb6\xb7\x8e\xad\xc0\xc5\x4c\x49\x3a\x4b\x06\x82\xf9\x2c\xf2\x21\x16\xba\xa7\x7c\x90\xc3\x3d\x28\x87\x08\x8c\xee\x57\xbe\xa6\x88\xbb\xf8\x93\x20\xfe\x62\x16\xf0\xb0\xf5\x39\x57\x58\x15\x6b\x0a\x6d\x5a\xdc\x65\x57\x8c\x5c\x2f\x1d\x28\xfe\x7c\xd1\x3b\xca\x6c\xfd\xc9\xf3\x82\x51\xd2\x37\x06\x8d\xfd\x87\xf9\xa2\x9c\xf1\x9d\xfc\x48\x2e\x43\xd9\x83\x5a\xb0\xbc\xfc\xe5\x61\xbe\xf8\xaf\xf9\x7f\x1e\xbf\x2f\xa7\x28\xd4\x56\x5b\x37\xd0\x66\xbd\x96\xc8\xbc\xd0\x09\x29\x3f\xc2\xe2\xc1\xdb\x21\xd4\x94\xd6\xfe\x08\x4b\x17\xb2\xb0\x56\xa8\x2d\xb1\x5f\xad\xb5\x21\xae\x90\xfb\x69\xc6\x7e\x70\x5e\x64\x9b\x23\x78\xe0\xae\xc2\x00\x19\xcf\x52\x9c\x64\x42\x65\x73\xa2\x41\x8a\x29\xc2\xf4\x36\xf7\x3f\x52\x37\x39\xc5\x3b\x54\x2d\x1a\x6f\x39\xe5\xed\x76\x57\xc8\xe5\x2f\xfd\xfe\xfe\xcb\x65\x39\x58\x3a\x95\x13\x60\x89\x1e\xca\x98\x13\xc9\xbd\x98\x86\x98\x27\x9d\x0f\x5e\x1e\xc7\x52\x1b\x56\x8e\xdb\x90\x5c\x50\xe6\x5e\xa8\x95\x40\x5c\x63\x00\x18\x01\x67\x8c\x7d\xd0\x1b\xb8\x07\x33\xe5\x56\xb7\x90\x08\x19\x93\x53\xcc\x39\xc9\x07\x62\xfe\xea\x2d\xde\xef\xca\x6d\x07\x95\x5c\xca\x2a\x08\x84\x8d\xa6\x80\x4b\x6a\x58\x4a\x05\x64\x56\x8a\x2f\x8d\x6e\x03\x31\x31\x01\xf3\xd1\xb9\xd9\x7a\xc4\x6e\xad\xd1\xd2\x76\x11\x61\x4e\xed\x93\xa8\x9d\xd0\x96\x25\xd4\x09\xe3\x11\x3b\x46\x51\xd3\x57\x94\xef\x19\x36\x68\x39\x92\x4e\x06\x86\x35\x0b\x7a\x5d\x19\x13\x97\x31\x2b\x94\x6a\x37\xc1\x7e\x1c\x26\x51\x6d\x23\x12\x8c\x97\xef\x01\xd3\x85\xaf\xda\xd4\x68\x7d\x43\xac\xfc\x30\xa4\x71\x28\xe1\x48\x19\x65\x86\x68\x22\x48\x50\x1e\x9b\xc8\xd7\x6a\x89\x75\x11\x96\x3a\x83\x4e\x30\x94\x3d\xe3\xf2\x06\x4c\x7b\x40\x69\xbb\xef\x8e\x49\x78\xad\xbd\xf9\x48\xc5\x79\x79\x65\x80\x10\x54\x60\xf7\xde\x5e\x19\x8d\x15\x82\xdd\x7b\xfb\x89\xaa\x5e\xe2\xb6\x6a\x64\x75\xe7\x8f\xd9\x3f\x96\x53\x26\x15\x56\x1b\x14\x93\xc7\x2a\xdf\xa7\x29\xcb\x50\xc1\x95\x3e\xa5\x2d\x63\xcd\x55\x5e\xa3\x34\xcf\xbd\x43\x5c\x07\xb5\xf9\x7c\x80\x92\x5b\xb1\xc0\x32\x30\x3a\x44\x38\x9d\xf1\x3c\x72\xdb\x0e\x78\x39\x6a\x40\xaa\x90\x9c\x2e\xf4\x03\x7f\x4e\x5b\xfd\x42\xf6\xce\xa5\x65\xa2\x77\x1a\x63\x59\x45\x57\x24\x16\x65\xb2\xd8\x06\xe6\x67\x5e\x28\x3f\x4a\xd5\x3f\x84\xd0\xd9\x68\x51\xfb\x82\xef\xdb\x63\xb9\x34\x09\x20\x95\xb0\x01\x98\x77\x46\xaf\x8c\x68\x67\x8c\x9d\xe9\x16\x67\xad\xd6\xea\xdf\xe9\xf4\xb8\x55\x79\x1d\xf9\xd1\x61\x18\x26\xf7\xeb\xb4\xb5\x32\x5c\xf9\xd4\xd2\xfa\x9a\x46\x6d\x9f\xb8\x35\x19\x2b\xcf\xc5\x96\x0a\xf5\x00\xc2\xca\xcf\x5a\x25\x39\xa6\x8f\xb2\x18\xcf\xfe\x60\xbf\x57\xe5\x85\x13\x2d\xad\xa0\x48\x4d\x43\x59\x35\xd6\xbb\x4f\x5c\x66\x0c\x84\xe0\xc9\x29\xa4\xb2\x3e\xbe\x06\x7a\x06\x8e\x52\xc4\x84\xcf\x07\x9e\xed\x78\xd7\x40\x09\x4b\x08\xf6\xb1\x46\x6f\x67\x9c\xec\x1d\x05\x44\x57\x63\x63\xcd\xa7\xdd\x1a\x23\x72\x3a\xb6\xbb\x99\xf7\x32\x76\x46\xa7\xf8\x6d\x17\x3a\xef\xf5\x46\x85\xee\x95\x58\xc1\x30\x8e\x3f\x92\x39\x74\xba\xd0\xfd\x22\x57\xeb\xd8\xbf\xc6\x18\x1a\xfa\xe7\xaa\x66\x3e\x05\xbf\xd1\x7e\x3c\xfe\x1a\x67\x6e\xbb\xd0\x21\xd4\xbe\x4b\xa8\x7d\xd7\xa3\x46\x27\x1f\x7b\xc9\xf4\x38\x31\xfe\xa6\xe9\x0b\x7d\x0f\x3f\x4a\x05\xf6\xb6\x1b\xfb\xb4\xc5\x18\x36\xfc\xc2\x3c\x8c\x44\x0a\xa4\x82\x9c\xf4\xcb\x65\x36\x76\xae\xea\x30\xe2\xeb\x85\xcf\xb0\x69\xc6\x5f\xd7\x18\x1e\xd9\x10\x28\xc3\x1e\xec\x0c\x30\xb1\x61\x43\x85\xc1\xb0\xd8\xa5\xe6\xb4\x69\xfc\x7f\xcb\x0a\xa9\x6a\x6a\x3e\xc3\x83\xa3\xce\x95\x81\x7b\xa9\x7b\xcb\x6e\x55\xad\xd9\x17\xa8\x35\x3b\xd3\xdd\x96\x9d\xf5\x28\x68\x4f\xeb\xfb\xbe\x6b\x64\x25\x1c\xf8\x5f\xb4\x5f\x20\x2f\x2b\x84\xd8\x65\xef\xf2\x81\x2b\x61\x5d\xe4\x0b\xc9\xb8\xec\x40\x15\xb2\x01\xe6\x35\x86\x9a\x0a\x66\x30\x18\x80\x07\x0e\xa3\xe3\x0f\x9a\xfb\x20\x9a\x65\x98\x89\x5d\xbf\x26\x11\xe2\x28\xbc\x2b\x61\xc4\xca\x88\x6e\x3d\xf0\x38\x8c\x10\xfb\x37\x7a\xb5\x6a\xe0\x03\x34\x5d\xe8\x7e\xe9\x1b\x30\xec\x2f\x7d\xdb\xd1\xfa\xb3\x06\x04\x9a\x9c\xeb\x2d\xbb\x5e\x43\xd3\x5c\xe8\x1a\x30\xa4\x60\xe2\x4b\xfd\x9f\x7a\xe9\xa8\x41\xde\x4e\xeb\x1a\xc5\x1e\x37\xc3\x3e\x6e\x13\xff\x5f\x77\x8d\x74\xec\x56\x59\xfa\xff\xb3\xff\xf9\xc1\xff\x8b\x6b\xfc\x2f\x4f\xcc\x85\xa8\x8c\x66\x57\x8d\xd8\xfa\xde\x75\x6f\xa9\x78\x7b\x7e\xab\xe4\x03\x5d\x32\xbc\x60\xd7\x95\xd1\x4d\x83\x72\xa2\x8e\x97\x45\x27\x36\xea\xa2\x6f\x9c\xf4\x7e\xf2\x68\xc0\xcb\x94\x7d\x81\x56\xdf\x43\x0a\xe8\x47\x4e\x9b\x26\x19\xb4\xec\xfa\x4e\x76\x29\x14\x86\x38\x92\xd1\x8d\xbe\x10\xae\x5a\x4b\xb5\x7a\x67\xd0\x0e\xd3\x3a\xdb\x9f\x96\x8f\x4b\x33\x3a\x36\x5b\x4d\xf7\xef\x21\x26\x3d\x0f\xb7\x81\x58\x23\x2d\x60\xbc\x80\xf3\x50\x8b\xde\x39\xad\xec\x0b\x1f\x4c\x2e\x70\xec\x0a\x53\x43\xdf\x4d\xe9\x1a\xcf\x67\x69\xc3\x8d\xa6\x0f\x4c\x18\xd0\x86\xe0\x44\xe7\x43\x7a\x71\x14\xc2\xd4\x6d\xc7\x48\x7a\xde\x6d\xc9\x59\x6f\xbb\xf0\x2f\xb8\xb2\xde\x28\x1a\xc0\x4e\x08\x4a\xde\xe5\x76\x2d\xf8\x83\x6e\xc9\x0c\x83\x2f\x46\x07\x25\x43\x3b\x7f\x90\xce\x1b\x16\x3b\x13\xaa\x82\x86\x5d\x19\xa9\x1c\xbb\x12\xbd\xf5\x4e\xed\xc4\x82\x15\x73\x56\x1c\xb0\xe2\x90\x15\x47\xac\x38\x66\xc5\x09\x2b\x5e\xb2\xe2\x15\x2b\x5e\xb3\x62\xbe\xcf\x8a\xf9\x9c\x15\xf3\x03\x56\xcc\x0f\x59\x31\x3f\x62\xc5\xfc\x98\x15\xf3\x13\x56\xcc\x5f\xb2\x62\xfe\x8a\x15\xf3\xd7\xac\x38\xd8\x67\xc5\x01\xe2\x39\x60\xc5\xc1\x21\x2b\x0e\x8e\x58\x71\x70\xcc\x8a\x83\x13\x56\x1c\xbc\x64\xc5\xc1\x2b\x56\x1c\xbc\x66\xc5\xe1\x3e\x2b\x0e\xe7\xac\x38\xc4\x0d\x0f\x59\x71\x78\xc4\x8a\xc3\x63\x56\x1c\x9e\xb0\xe2\xf0\x25\x2b\x0e\x5f\xb1\xe2\xf0\x35\x2b\x8e\xf6\x59\x71\x34\x67\xc5\xd1\x01\x2b\x8e\x90\xb2\x23\x56\x1c\x1d\xb3\xe2\xe8\x84\x15\x47\x2f\x59\x71\xf4\x8a\x15\x47\xaf\x59\x71\xbc\xcf\x8a\xe3\x39\x2b\x8e\x0f\x58\x71\x7c\xc8\x8a\x63\x64\xe1\x98\x15\xc7\x27\xac\x38\x7e\xc9\x8a\xe3\x57\xac\x38\x7e\xcd\x8a\x93\x7d\x56\x9c\xcc\x59\x71\x72\xc0\x8a\x93\x43\x56\x9c\x1c\x31\x4c\x00\x7d\x74\xc3\xde\x29\xb5\xef\xa8\x3d\xa3\xf6\x3d\xb5\xe7\xd4\x16\xd4\xfe\x99\xda\x0f\xd4\x7e\xa4\xf6\x2f\xd4\x7e\xa2\xf6\x47\x6a\x2f\xa8\xfd\x4c\xed\x25\xb5\x57\xd4\xfe\x44\xed\x17\xbf\x2b\xb5\x37\xd4\xde\x52\xfb\x33\xb5\x5f\xa9\xfd\x2b\xb5\xdf\xa8\xfd\x1b\x8b\x25\xc9\xf5\xaf\x6c\xc8\x58\x1b\x61\xd7\x1e\x1d\x1a\x46\x98\x39\x13\x46\x38\x8f\x52\xd5\x60\x6c\xa5\x4d\x1a\xb7\x2f\x9b\x7a\xfc\x81\x51\xe2\xdc\x56\xcc\xe7\x5f\xec\x9c\x0c\xeb\xf7\x9d\x28\xb8\x07\x39\xd1\x36\xde\x83\x0f\x2e\xa4\xb0\x6e\x6c\x06\x4f\xd3\x86\x65\xae\x97\x3a\x55\x38\xd7\xd0\xa7\x64\x5d\x37\xe0\xfb\xde\xcc\xa9\xfb\x75\x0d\xd0\xd0\x79\x17\x7f\x90\xad\x8f\x3f\x47\x0c\xf4\xd3\x2f\x25\x0e\x9e\xf1\xf7\x8f\x32\x16\xee\x6f\xa2\x7b\x23\xc2\x1d\xfb\x4e\x46\x7e\xdb\x4d\xde\xf0\xf4\x6f\x12\x13\x89\xc9\xd4\x43\xe0\xf6\x19\xcc\x64\xcc\x30\x22\x0c\x11\x91\x02\x4d\x92\x9c\x22\x02\x51\x82\xff\x04\x22\x1a\x0f\x30\xd7\x6b\xb9\x74\x29\x4d\x93\x98\x60\x64\x10\x29\x4d\x93\x31\xf3\xc8\x60\xd2\xed\x26\x63\x4a\x92\xc1\xa4\x74\x4f\x92\x5c\x25\x02\x9d\x36\x2e\xa7\x7a\x32\x54\x2a\x23\x44\xce\xfc\x64\x48\x4a\x12\x90\x5c\xca\x93\x24\xaf\x49\x80\x72\x41\x4f\xb2\x84\x27\x01\xcb\x09\x9f\xec\xa4\x50\xbb\x80\x03\xf9\x93\x3c\xb7\x8a\x70\xd1\xc9\x46\xfa\x93\x33\x3e\x05\xca\xb8\x9c\x0c\x87\x7f\x0a\x92\x6d\x38\x79\x22\xf1\xca\x64\x8f\xd1\x7b\x47\x3f\x4f\x02\x0f\x98\x23\x05\x93\x47\xe9\x5b\x86\xf7\x5c\xd5\x09\x33\xdf\x03\xa5\x68\x91\x6a\x65\x92\x64\xbe\x29\x50\xa6\x95\xc9\x90\x12\x3f\xa2\x2e\x22\xcb\x59\x79\x04\x16\xd1\xa5\x94\x25\x3a\xdb\xfb\x67\x66\x28\x8f\x32\xab\x14\xf4\x5f\x4f\x83\x62\x0e\x14\xc1\x28\xbc\x65\x60\x59\xa2\x9b\x52\xf7\x21\x03\x1b\x02\x66\x04\x19\x07\xde\x7c\x0f\x04\x69\xca\x30\xed\x16\xf7\x09\x5c\x86\xee\x3b\x70\xfe\x6d\x22\xf9\xfb\xbf\x3e\x53\x24\x24\xbb\x14\xc7\x64\x37\x6d\xfe\x2d\x0c\xec\x1a\xc6\x65\x26\x8b\x98\x4b\x67\xba\xcc\x20\x30\xe9\x4f\x67\x8b\x6c\x16\xb3\xff\x74\xf6\xf3\xa3\xd9\x54\x65\x74\x6e\x3e\x82\xd8\xd5\x7f\x7c\x95\x1c\xa1\xc2\x83\xe5\x30\xfb\x2d\x9b\xa5\xc7\xcb\x64\xf6\x2c\x0f\xd6\xba\xdb\xa6\xb3\x7f\xdd\x09\xe5\x19\x71\x9f\x76\x27\x77\xa5\xf7\x3e\x03\xc8\x6a\x9a\x14\xec\xe7\x1d\xf3\xb5\x2e\x9b\x3e\xcd\x25\x1c\x2b\x9b\x14\xe4\x26\x03\xf1\x65\x41\x62\x64\xd3\xfc\xb0\x49\xea\x85\x04\x68\x96\x03\x85\x42\x22\x02\xa4\x31\x2a\x10\xf2\x38\x40\xa5\x01\x87\xf3\xef\x46\xc7\x0c\xd7\xf7\xa2\x4d\x86\xeb\x71\xb4\xf1\x19\xf0\xe3\xa8\x15\xc6\x13\xa8\xa7\xc2\xd6\x30\x9e\x9a\x5a\x8a\xf1\x29\x19\x45\xa0\x01\xe1\xae\x8c\xe2\xd3\xc7\x48\xd3\x58\xef\xa5\x2e\xbf\x7a\x02\xe6\x13\x6c\x2f\x40\xf5\xd9\x39\xf3\x04\x18\xd5\x8b\xd9\x89\x95\x01\x65\x6f\x2e\x2b\xed\x34\x1f\x72\x17\x0a\x2c\xa9\xbc\xc2\x48\x82\xeb\x5d\x6e\x68\xb1\xfe\x4c\x41\x7e\xca\x40\xe8\x5d\x3b\xd5\xd9\x8e\x2f\x0d\x65\x6b\x0a\xf4\x35\x03\x1a\xea\xd4\xec\x38\x7a\x82\x73\x2a\x49\x53\xa0\xbf\xe4\x5e\x13\xab\xd6\x08\xe2\x83\x60\xca\xb0\xc7\x73\x79\x0f\x66\x63\xa4\x83\x40\x17\x41\xff\xf0\x03\x3f\x6f\x45\x65\xf7\xac\xdb\xfa\x92\x6d\xf8\xf6\x6b\xd0\xda\x12\x0f\xdc\xa7\xb2\x8b\xbd\x45\x9c\xd9\x8d\xed\x82\xce\xe8\xc7\x7e\x82\x73\xa8\x8b\xcc\x3d\x22\x21\x1f\x95\x83\x95\x4f\x52\xfd\xdd\x3d\x7d\x87\xd5\x0a\x25\x56\x60\x02\x3d\xc5\x81\x3f\x39\x93\x68\x5b\x1c\xd2\x50\x1a\x62\x8b\x23\x1a\x4a\xb5\x54\xbc\x7c\x0c\x35\xdf\x47\x52\x52\xa8\x73\x5b\x11\x75\x54\x19\x24\xa4\x5d\xf8\x0a\x20\x13\x4d\x9a\xaa\x87\xf4\x2a\x5c\x11\x44\x6c\x79\xfe\x4e\x22\x19\xee\x0e\x32\x98\x2c\x4f\x1d\x0b\xef\x0c\xc6\xd7\x0a\x21\xc1\xa0\x50\x79\x65\x64\x2b\x4c\x16\xb5\xf7\x52\x74\x93\xdd\xba\x3d\x32\x44\x6a\xf0\xf4\xec\xdc\x57\xa4\x7a\x6a\x9f\x02\xf0\x41\x38\x05\xeb\xfc\x87\x31\x3b\x17\x1c\x29\x44\x35\x42\xec\x5c\x78\xa4\x50\x0f\xb4\x5d\x7e\x01\x32\xbc\x05\x3c\x7b\xc6\x0b\x7a\x89\x50\xda\x81\x65\xec\xb3\x76\xf0\x86\x5f\x2a\x5f\x9f\xe9\xa6\x1e\x5f\xa4\xa0\xed\x1b\xe1\xb4\xf1\x37\xb0\x5a\xf1\xaf\x52\xd5\x7a\x63\x79\x2b\xaa\x35\xe6\xd2\x53\xff\xfa\xf1\xa1\xe4\x76\x4d\x97\xea\x0b\x7a\x07\xf3\xb7\xf5\x8b\x98\x94\xcc\x18\x3b\x0d\x5f\xf7\x88\xa6\xd9\x4e\xc7\x8f\xc3\xc2\x67\x29\xbe\xf2\xa3\x4b\x69\xac\xb1\xe8\xf5\xfd\x0e\xb6\xf9\xab\xbe\x1f\x16\x25\xd6\x83\xd4\xbd\xed\xca\x19\xf7\x1f\xa7\x85\x57\x4e\xa4\x93\xeb\xce\x6f\xc4\xcb\xbd\x92\x2f\xc0\x6d\x00\x14\x6f\x75\x2d\x97\x12\x8c\xf5\x5f\xdb\xe0\x7a\xff\xe6\xc2\x88\x81\x92\x5b\x3d\xe0\xaf\x02\x27\xdc\x00\xfa\xb8\x03\xc5\x85\xff\x24\x40\x94\xfc\x79\x25\x2c\x3a\x92\x73\x88\x0c\xd9\x44\x66\xa2\x35\xbf\x98\xf9\xcf\x39\xa4\xe5\x9b\xf5\x76\xe7\xeb\x91\xec\xe2\x7b\xf8\xdc\x0e\x3c\x35\x43\xb2\x5f\xf2\xf8\xfc\xae\x97\x9e\xcf\x64\xca\xd7\xcb\xc2\x00\x87\x5f\x7b\x79\x2f\x9a\xf0\xbe\x7c\xe5\xbf\x30\x0c\xaf\x77\xc2\x3d\xa9\x42\xfa\xda\xd3\x08\xb5\x02\x2e\x3a\x9f\x45\x0c\xb7\xeb\xfe\x61\x4c\xfb\x57\xe8\x0a\xe4\x3d\x58\x96\x3d\xd7\x86\xf7\xde\x01\x6f\x0d\x95\xac\x61\x78\x89\x9b\xf1\xeb\xf4\xed\x2e\xd9\x16\x8b\x7b\xa5\x1d\xbd\x34\xf2\x0a\x8c\x13\x52\x45\xb4\xf8\xcf\x7f\x7f\x92\x7c\xbf\xc8\xad\xd8\xda\xf1\xd9\x30\xd2\xe3\x9f\x9b\x71\xdd\x8c\xdf\x68\xfa\x98\x12\x1e\x04\x3d\xdf\xd1\x07\x89\xf1\xf1\xd6\x13\xef\x9f\xfb\xf2\xe7\xd5\xfc\x5b\x01\xfa\x3c\x65\xca\x4d\xaf\xe2\x87\xad\x46\x6c\x86\xef\x5a\x67\xec\x7f\x02\x00\x00\xff\xff\x7f\x5a\x10\xfa\xbd\x2b\x00\x00" func runtimeHelpKeybindingsMdBytes() ([]byte, error) { return bindataRead( @@ -1328,7 +1328,7 @@ func runtimeSyntaxPowershellYaml() (*asset, error) { return a, nil } -var _runtimeSyntaxReadmeMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x56\xc1\x6e\x1b\x39\x12\xbd\xf3\x2b\x6a\x93\x05\x2c\x09\x42\xeb\xb0\x7b\xca\x61\x17\x98\x41\x92\xf1\x20\x31\x06\x88\x73\x18\x18\xc6\x34\x45\x56\x37\x19\xb3\x59\x0d\xb2\x5a\x72\xcf\x61\xbe\x7d\x50\x64\x4b\x96\xe2\xc9\xc1\xb0\x44\xd6\x2b\xbe\x7a\x7c\x55\xd4\x5b\xf8\x32\x47\xd6\xcf\xf0\xc1\x07\xcc\x4a\xfd\x82\x09\x41\x27\x84\xc1\x9b\x44\x37\x19\x72\xdd\xee\x64\xbb\x51\xea\xbd\x36\x0e\x66\x3d\x84\xb2\x02\x79\x44\xe3\x3b\x8f\x19\x1c\x1d\x81\x09\x2c\x32\x1a\x06\x76\x58\x02\x78\x1e\x11\xf6\x3a\xa3\x05\x8a\x15\x82\xcf\x8c\x31\x7b\x8a\x40\x09\x1c\x6a\x8b\x29\xc3\xaa\xf3\x29\x33\x04\x1f\x11\xa8\x3b\xc3\xd7\x8d\xba\x77\x18\xe5\xfb\x42\x6b\xd4\xcc\x98\x62\x06\x1d\x2d\x24\xec\x3d\xc5\x2c\xb0\x27\xb4\x72\xbc\xf3\xbd\x0b\xbe\x77\x0c\x7d\xa2\x69\xcc\x70\x74\xde\x38\x60\x0c\xa1\x56\x74\xe2\xf9\x12\xc8\x4e\xf3\x99\x6b\xa3\xd4\x67\xfd\xe4\x63\x0f\x33\x4d\x09\xe8\x18\xaf\x04\x00\x9f\xe1\x80\x69\x86\xec\x87\x31\x60\x03\xb7\x90\xd0\xd0\x30\x60\xb4\x82\x00\xe3\xd0\x3c\x9d\xe9\x83\xee\x18\x53\xd9\x10\xee\x9d\x8f\x3e\x3b\xb4\x70\xf4\xec\x24\x48\x3d\xb4\x35\xfb\x1f\x05\x87\xa9\xe9\xa9\x7d\x5c\x35\xbb\x57\xab\x6b\x18\x13\xf5\x49\x0f\xb0\x0a\x64\x34\xa3\x05\x2f\xb2\xf8\x0c\xd6\x27\x34\x4c\x69\x5e\x37\xf0\xeb\x94\x19\xc6\xa0\x0d\x56\xfe\xe5\xa2\x6a\x32\x55\x08\x15\x10\x82\x99\x52\xc2\xc8\x2f\xd8\x2a\xe7\x14\xa1\xed\xa9\xfc\x7f\xcd\xab\x84\x78\x86\xa3\x0f\x61\xa9\x13\x8b\x16\x92\xb8\x81\xdb\xee\xe2\x96\x22\x29\x4c\x89\x52\x3e\x03\xc6\xe4\x23\x43\x7b\x47\xe0\x73\x9e\x30\xff\xab\x6d\x94\xfa\x5d\x14\xd3\x11\x12\x6a\x0b\x03\x09\x78\x4f\x13\x9f\xee\xe8\x98\x3c\xe3\xb5\xfe\x2b\x21\x61\x28\x50\xca\xc6\xe1\x80\x79\x7d\x2a\xe9\xa1\xae\x3e\xae\x9a\x66\xe7\x30\x8c\xbb\xfa\xbd\x19\xec\x1a\x2c\x99\x69\xc0\xc8\x9a\x3d\xc5\x46\xa9\xb7\xf0\x09\x7b\x6d\x66\xb8\x69\xaa\xcd\xcf\xf7\xaf\xd4\xe7\xe2\x92\x29\x57\x3f\x4d\x19\x4b\xf6\xb6\x06\xb6\x2f\xa6\xee\x28\x5d\x53\xab\x4e\xf3\x19\x22\x41\xa0\xd8\x63\x82\x3c\x8d\x23\x25\x46\x5b\xe4\x11\x1b\x38\x7d\x78\x49\xa6\xae\xf0\xc5\x87\x12\x73\xa4\x29\x58\x08\xfe\x09\x85\x81\xa1\x78\xc0\xc4\xf2\x51\x88\x44\x3c\x9e\x39\x6c\xab\xe5\x74\x3c\xd3\x7c\xf1\x53\x45\xbd\x76\xd4\xc5\xfa\x85\xa7\x74\xc8\x42\xfa\x47\xc6\x7a\xa7\x54\xdb\xb6\xea\xdf\xf0\x9d\x39\x2e\x92\x81\xa9\x45\xc1\xff\xc0\x34\x62\xbb\x82\x50\x9f\x29\xd7\x61\x20\x7f\x57\xe5\x16\xaf\x14\x39\xf6\x88\xf1\x54\x26\x5a\x98\xb2\xb4\x5f\x51\x83\x89\x42\xa3\xd4\x1d\x31\x2e\x0b\x92\x89\x28\x80\xcf\xf1\x86\x61\xc4\xd4\xc9\xb4\x11\x53\xb0\xa3\xa9\x77\xe2\x37\x9f\x61\x8a\x22\x5f\x98\xab\x42\x83\x9e\x0b\x6d\x1f\x99\x20\xd3\x80\x90\x07\x1d\xc2\xe2\xc4\x0b\xe1\xc5\xa8\x85\x12\x13\x74\xfe\x19\x06\x1d\x27\x1d\xc2\xac\x56\xd5\x97\xff\x5d\xb8\x77\x89\x86\xef\x34\x02\xa7\xed\x29\x61\xed\xfa\x3d\x4a\x1d\xe7\xba\xd6\xc5\x77\xd5\x5d\x8b\x10\xe7\x19\x24\x81\x5d\x9d\xbf\xf7\x0e\x73\xed\xa1\x0b\xc5\x5e\x07\x16\xfb\x15\xc1\x1b\xb8\x27\xf0\x31\xb3\x54\xc4\x0e\x87\x2d\x7c\x9b\x32\xab\x71\x62\x58\x96\xbe\x1b\x61\x11\xda\xbf\x76\x8d\xa1\xd8\xf9\x7e\x57\x72\x2c\xee\x90\x96\xbc\x77\x38\xd7\xe3\xf5\x13\xc6\x5a\xe9\x9d\x8e\xb4\x3d\x8d\x7a\x23\x82\xd4\xf5\x87\x22\x41\xc2\x91\xb2\x17\x0d\x1e\x57\x8e\x79\xcc\xef\x76\xbb\xde\xb3\x9b\xf6\x8d\xa1\x61\x97\x0d\x8d\x9a\xff\xdc\x45\x1d\x29\x99\x75\xa3\xae\x24\xa8\x94\xe4\x3c\x1d\x06\xf1\x8a\xb7\x18\x59\x0e\x91\x3b\x90\x83\x6f\xf2\x16\xf0\xd9\xe0\xc8\xb5\xe5\xe4\xfa\x9e\x70\x06\xeb\xbb\x0e\x13\x46\x83\xf9\x9d\x52\x9b\x45\x59\x4b\x28\x0d\xc8\xa5\x23\x5a\x5f\x66\x40\xdb\xc0\x6d\xcc\x8c\xda\x6e\x4b\x0a\x0d\x46\x67\x19\x85\x59\xde\x21\xf6\x07\x84\x41\xb3\x71\xdb\x73\x1b\xbd\xda\xef\x82\xee\x61\xd5\xfa\xf6\x3c\x6e\x12\xf6\x53\xd0\x09\xf0\x79\x4c\x98\xe5\x39\x53\x00\x00\x1b\xf8\x40\xb2\xa8\xe5\x79\xd8\x9e\x18\x40\x9f\xc4\xe3\x6f\x9a\xcd\x9b\x76\x69\xef\xbd\x3c\x1b\x08\xed\xd5\xfe\xea\xff\x7e\x2d\x31\xe2\x94\xaf\xa5\x0d\xca\x4b\x71\x39\xef\x4a\x37\x94\x8b\xad\xcf\x64\xc6\x53\x3f\xfd\x43\x2b\x2d\x03\xec\xf4\x94\x5f\xe4\x81\x0e\x35\x4f\x09\x1b\x28\x1d\x5a\x73\x0d\xc5\x39\xe0\x74\xb2\x86\xec\x22\x45\xc1\x6c\x97\xe9\x26\xb3\x66\x8f\x32\x37\xf6\x01\x07\xcd\xde\x80\xc5\x11\xa3\x15\xae\x14\x2f\x10\xf5\x14\xe9\xaa\x29\xcb\xab\x5a\x7e\x57\xf8\x0c\x1a\x82\x3f\x1f\x78\x39\xf9\x7e\xc0\x7f\x4c\x34\x62\x0a\x73\x29\xe4\x52\x88\x72\xe9\x07\xaf\x36\xd0\x93\xda\x80\x51\x1b\xb0\x6a\x03\x83\x4e\x4f\x96\x8e\x51\x6d\xc0\xf1\x10\xd4\x06\xc2\xa4\xd5\x06\xf2\xd1\x77\xac\x36\x90\xa4\x37\x36\xf0\x4d\x1f\xf4\xf2\x2f\x9b\xe4\x47\x59\x1b\x75\x36\x5a\x10\xe3\xcc\x8e\x62\x09\xde\xcf\x82\x75\x72\x8a\x97\x18\xc6\x67\x59\xa0\xe0\xad\xe7\xb9\xbc\x24\xde\x60\xcc\xa8\xd4\x4f\x68\xf4\xc9\x40\x62\xf6\x6b\x8b\xdf\xd6\x02\x07\xb2\xf2\x73\xc9\x16\xcb\x5b\x9f\x39\xf9\xfd\x54\xa6\x5e\xb4\x98\x0a\xf6\xe3\xdd\x57\xf8\xf8\xdb\xa7\xc3\x7f\x20\xd4\xd4\xdb\xab\x7b\xae\xbd\x92\xe9\x12\xad\x4e\x68\xcd\x27\x50\x03\x5f\x10\xe1\xe1\xd3\xed\xcf\xef\xef\xbe\xbc\x7f\x5c\x2d\x1f\xd6\x8d\xfa\x3b\x00\x00\xff\xff\xbd\xd7\x92\xf8\xf2\x09\x00\x00" +var _runtimeSyntaxReadmeMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x56\x41\x8f\x1b\x37\x0f\xbd\xeb\x57\xf0\x4b\x3e\x60\x6d\xc3\x18\x5f\x7a\xca\xa1\x3d\x14\x09\xba\x45\xb2\x97\x6c\x0f\xc5\x62\xd1\x91\x25\xce\x48\xb1\x46\x1c\x48\x9c\xb5\xa7\x87\xfe\xf6\x82\xd2\xd8\x6b\x67\x9b\xc3\xc2\x36\x45\x52\x8f\x4f\x8f\xe4\xbe\x87\xaf\x73\x64\x7d\x82\x4f\x3e\x60\x56\xea\x37\x4c\x08\x3a\x21\x0c\xde\x24\xba\xcb\x90\xeb\x71\x27\xc7\x8d\x52\x1f\xb5\x71\x30\xeb\x21\x14\x0b\xe4\x11\x8d\xef\x3c\x66\x70\x74\x04\x26\xb0\xc8\x68\x18\xd8\x61\x71\xe0\x79\x44\xd8\xeb\x8c\x16\x28\xd6\x10\x3c\x31\xc6\xec\x29\x02\x25\x70\xa8\x2d\xa6\x0c\xab\xce\xa7\xcc\x10\x7c\x44\xa0\xee\x12\xbe\x6e\xd4\xa3\xc3\x28\xbf\x17\x58\xa3\x66\xc6\x14\x33\xe8\x68\x21\x61\xef\x29\x66\x09\x3b\xa0\x95\xeb\x9d\xef\x5d\xf0\xbd\x63\xe8\x13\x4d\x63\x86\xa3\xf3\xc6\x01\x63\x08\xb5\xa2\x33\xce\x57\x47\x76\x9a\x2f\x58\x1b\xa5\xbe\xe8\x83\x8f\x3d\xcc\x34\x25\xa0\x63\xbc\x21\x00\x7c\x86\x17\x4c\x33\x64\x3f\x8c\x01\x1b\xb8\x87\x84\x86\x86\x01\xa3\x95\x08\x30\x0e\xcd\xe1\x02\x1f\x74\xc7\x98\xca\x81\x60\xef\x7c\xf4\xd9\xa1\x85\xa3\x67\x27\x4e\xea\xa9\xad\xd9\xff\x2a\x71\x98\x9a\x9e\xda\xe7\x55\xb3\x7b\x63\x5d\xc3\x98\xa8\x4f\x7a\x80\x55\x20\xa3\x19\x2d\x78\xa1\xc5\x67\xb0\x3e\xa1\x61\x4a\xf3\xba\x81\xdf\xa7\xcc\x30\x06\x6d\xb0\xe2\x2f\x0f\x55\x93\xa9\x02\xa8\x04\x21\x98\x29\x25\x8c\xfc\x1a\x5b\xe9\x9c\x22\xb4\x3d\x95\xcf\xb7\xb8\x8a\x8b\x67\x38\xfa\x10\x96\x3a\xb1\x70\x21\x89\x1b\xb8\xef\xae\x5e\x29\x92\xc2\x94\x28\xe5\x4b\xc0\x98\x7c\x64\x68\x1f\x08\x7c\xce\x13\xe6\xff\xb5\x8d\x52\x7f\x0a\x63\x3a\x42\x42\x6d\x61\x20\x09\xde\xd3\xc4\xe7\x37\x3a\x26\xcf\x78\xcb\xff\x4a\x40\x18\x0a\x94\xb2\x71\x38\x60\x5e\x9f\x4b\x7a\xaa\xd6\xe7\x55\xd3\xec\x1c\x86\x71\x57\x7f\x37\x83\x5d\x83\x25\x33\x0d\x18\x59\xb3\xa7\xd8\x28\xf5\x1e\x3e\x63\xaf\xcd\x0c\x77\x4d\x95\xf9\xe5\xfd\x95\xfa\x52\x54\x32\xe5\xaa\xa7\x29\x63\xc9\xde\x56\xc7\xf6\x55\xd4\x1d\xa5\x5b\x68\x55\x69\x3e\x43\x24\x08\x14\x7b\x4c\x90\xa7\x71\xa4\xc4\x68\x0b\x3d\x22\x03\xa7\x5f\x5e\x93\xa9\x9b\xf8\xa2\x43\xf1\x39\xd2\x14\x2c\x04\x7f\x40\x41\x60\x28\xbe\x60\x62\xf9\x2a\x40\x22\x1e\x2f\x18\xb6\x55\x72\x3a\x5e\x60\xbe\xea\xa9\x46\xbd\x55\xd4\x95\xfd\x4a\x53\x3a\x64\x01\xfd\x23\x61\x7d\x50\xaa\x6d\x5b\xf5\x7f\xf8\x4e\x1c\x57\xc9\xc0\xd4\xa2\xe0\x67\x30\x8d\xc8\xae\x44\xa8\x2f\x94\xeb\x30\x90\xbf\x9b\x72\x8b\x56\x0a\x1d\x7b\xc4\x78\x2e\x13\x2d\x4c\x59\xda\xaf\xb0\xc1\x44\xa1\x51\xea\x81\x18\x17\x83\x64\x22\x0a\xe0\x73\xbc\x63\x18\x31\x75\x32\x6d\x44\x14\xec\x68\xea\x9d\xe8\xcd\x67\x98\xa2\xd0\x17\xe6\xca\xd0\xa0\xe7\x02\xdb\x47\x26\xc8\x34\x20\xe4\x41\x87\xb0\x28\xf1\x8a\x78\x11\x6a\x81\xc4\x04\x9d\x3f\xc1\xa0\xe3\xa4\x43\x98\xd5\xaa\xea\xf2\xa7\x05\x7b\x97\x68\xf8\x8e\x23\x70\xda\x9e\x13\xd6\xae\xdf\xa3\xd4\x71\xa9\x6b\x5d\x74\x57\xd5\xb5\x10\x71\x99\x41\xe2\xd8\xd5\xf9\xfb\xe8\x30\xd7\x1e\xba\x62\xec\xad\x63\x91\x5f\x21\xbc\x81\x47\x02\x1f\x33\x4b\x45\xec\x70\xd8\xc2\xb7\x29\xb3\x1a\x27\x86\xc5\xf4\xdd\x08\x8b\xd0\xfe\xb3\x6b\x0c\xc5\xce\xf7\xbb\x92\x63\x51\x87\xb4\xe4\xa3\xc3\xb9\x5e\xaf\x0f\x18\x6b\xa5\x0f\x3a\xd2\xf6\x3c\xea\x8d\x10\x52\xed\x4f\x85\x82\x84\x23\x65\x2f\x1c\x3c\xaf\x1c\xf3\x98\x3f\xec\x76\xbd\x67\x37\xed\x1b\x43\xc3\x2e\x1b\x1a\x35\xff\xbd\x8b\x3a\x52\x32\xeb\x46\xdd\x50\x50\x21\xc9\x7d\x3a\x0c\xa2\x15\x6f\x31\xb2\x5c\x22\x6f\x20\x17\xdf\xe5\x2d\xe0\xc9\xe0\xc8\xb5\xe5\xe4\xf9\x0e\x38\x83\xf5\x5d\x87\x09\xa3\xc1\xfc\x41\xa9\xcd\xc2\xac\x25\x94\x06\xe4\xd2\x11\xad\x2f\x33\xa0\x6d\xe0\x3e\x66\x46\x6d\xb7\x25\x85\x06\xa3\xb3\x8c\xc2\x2c\x7b\x88\xfd\x0b\xc2\xa0\xd9\xb8\xed\xa5\x8d\xde\x9c\x77\x41\xf7\xb0\x6a\x7d\x7b\x19\x37\x09\xfb\x29\xe8\x04\x78\x1a\x13\x66\x59\x67\x0a\x00\x60\x03\x9f\x48\x8c\x5a\xd6\xc3\xf6\x8c\x00\xfa\x24\x1a\x7f\xd7\x6c\xde\xb5\x4b\x7b\xef\x65\x6d\x20\xb4\x37\xe7\xab\x5f\xfc\x5a\x7c\x44\x29\x7f\x94\x36\x28\x9b\xe2\x7a\xde\x95\x6e\x28\x0f\x5b\xd7\x64\xc6\x73\x3f\xfd\x47\x2b\x2d\x03\xec\xbc\xca\xaf\xf2\x40\x87\x9a\xa7\x84\x0d\x94\x0e\xad\xb9\x86\xa2\x1c\x70\x3a\x59\x43\x76\xa1\xa2\xc4\x6c\x97\xe9\x26\xb3\x66\x8f\x32\x37\xf6\x01\x07\xcd\xde\x80\xc5\x11\xa3\x15\xac\x14\xaf\x22\xea\x2d\xd2\x55\x53\x96\xad\x5a\xfe\xaf\xf0\x19\x34\x04\x7f\xb9\xf0\x7a\xf2\xfd\x00\xff\x98\x68\xc4\x14\xe6\x52\xc8\x35\x11\xe5\xd1\x5f\xbc\xda\x40\x4f\x6a\x03\x46\x6d\xc0\xaa\x0d\x0c\x3a\x1d\x2c\x1d\xa3\xda\x80\xe3\x21\xa8\x0d\x84\x49\xab\x0d\xe4\xa3\xef\x58\x6d\x20\x49\x6f\x6c\xe0\x9b\x7e\xd1\xcb\x47\x36\xc9\x8f\x62\x1b\x75\x36\x5a\x22\xc6\x99\x1d\xc5\xe2\xbc\x9f\x25\xd6\xc9\x2d\x5e\x7c\x18\x4f\x62\xa0\xe0\xad\xe7\xb9\x6c\x12\x6f\x30\x66\x54\xea\x2b\x22\x3c\x7d\xbe\xff\xf5\xe3\xc3\xd7\x8f\xcf\xab\xe5\xcb\xba\x51\xff\x06\x00\x00\xff\xff\xf5\x4f\x77\x99\x62\x09\x00\x00" func runtimeSyntaxReadmeMdBytes() ([]byte, error) { return bindataRead( diff --git a/runtime/help/commands.md b/runtime/help/commands.md index 9ecd7782..61f6fe10 100644 --- a/runtime/help/commands.md +++ b/runtime/help/commands.md @@ -45,6 +45,11 @@ Here are the possible commands that you can use. * `tabswitch tab`: This command will switch to the specified tab. The `tab` can either be a tab number, or a name of a tab. + +* `textfilter sh-command`: filters the current selection through a shell command + as standard input and replaces the selection with the stdout of the shell command. + For example, to sort a list of numbers, first select them, and then execute + `> textfilter sort -n`. * `log`: opens a log of all messages and debug statements. diff --git a/runtime/help/keybindings.md b/runtime/help/keybindings.md index 168b2c74..305e04a8 100644 --- a/runtime/help/keybindings.md +++ b/runtime/help/keybindings.md @@ -47,6 +47,21 @@ save and quit you can bind it like so: } ``` +Each action will return a success flag. Actions can be chained such that +the chain only continues when there are successes, or failures, or either. +The `,` separator will always chain to the next action. The `|` separator +will abort the chain if the action preceding it succeeds, and the `&` will +abort the chain if the action preceding it fails. For example, in the default +bindings, tab is bound as + +``` +"Tab": "Autocomplete|IndentSelection|InsertTab" +``` + +This means that if the `Autocomplete` action is successful, the chain will abort. +Otherwise, it will try `IndentSelection`, and if that fails too, it will +execute `InsertTab`. + ## Binding commands You can also bind a key to execute a command in command mode (see @@ -221,6 +236,7 @@ RemoveAllMultiCursors SkipMultiCursor None JumpToMatchingBrace +Autocomplete ``` You can also bind some mouse actions (these must be bound to mouse buttons) @@ -407,8 +423,8 @@ MouseWheelRight "Backspace": "Backspace", "Alt-CtrlH": "DeleteWordLeft", "Alt-Backspace": "DeleteWordLeft", - "Tab": "IndentSelection,InsertTab", - "Backtab": "OutdentSelection,OutdentLine", + "Tab": "Autocomplete|IndentSelection|InsertTab", + "Backtab": "OutdentSelection|OutdentLine", "CtrlO": "OpenFile", "CtrlS": "Save", "CtrlF": "Find", @@ -431,9 +447,12 @@ MouseWheelRight "CtrlEnd": "CursorEnd", "PageUp": "CursorPageUp", "PageDown": "CursorPageDown", + "CtrlPageUp": "PreviousTab", + "CtrlPageDown": "NextTab", "CtrlG": "ToggleHelp", + "Alt-g": "ToggleKeyMenu", "CtrlR": "ToggleRuler", - "CtrlL": "JumpLine", + "CtrlL": "command-edit:goto ", "Delete": "Delete", "CtrlB": "ShellMode", "CtrlQ": "Quit", @@ -441,6 +460,7 @@ MouseWheelRight "CtrlW": "NextSplit", "CtrlU": "ToggleMacro", "CtrlJ": "PlayMacro", + "Insert": "ToggleOverwriteMode", // Emacs-style keybindings "Alt-f": "WordRight", @@ -449,7 +469,6 @@ MouseWheelRight "Alt-e": "EndOfLine", // Integration with file managers - "F1": "ToggleHelp", "F2": "Save", "F3": "Find", "F4": "Quit", @@ -464,12 +483,11 @@ MouseWheelRight "MouseMiddle": "PastePrimary", "Ctrl-MouseLeft": "MouseMultiCursor", - // Multiple cursors bindings "Alt-n": "SpawnMultiCursor", "Alt-m": "SpawnMultiCursorSelect", "Alt-p": "RemoveMultiCursor", "Alt-c": "RemoveAllMultiCursors", - "Alt-x": "SkipMultiCursor", + "Alt-x": "SkipMultiCursor" } ``` From f8218e0648f1fbfc9dbce862bdc9a5368005e38f Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 25 Dec 2019 19:44:58 -0500 Subject: [PATCH 192/231] Fix bottomline when softwrap enabled --- internal/display/bufwindow.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index ac1305a0..3b478e7c 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -121,7 +121,7 @@ func (w *BufWindow) Bottomline() int { return h } - l := w.LocFromVisual(buffer.Loc{0, w.Height}) + l := w.LocFromVisual(buffer.Loc{0, w.Y + w.Height}) log.Println("Bottom line:", l.Y) return l.Y From a95dab078ec10ed0fc0001066233debcdc33a0a8 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 26 Dec 2019 12:25:42 -0500 Subject: [PATCH 193/231] Minor edit to statusline format Ref #1432 --- internal/config/settings.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/config/settings.go b/internal/config/settings.go index f8b42675..448c63ed 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -182,7 +182,7 @@ var defaultCommonSettings = map[string]interface{}{ "splitbottom": true, "splitright": true, "statusformatl": "$(filename) $(modified)($(line),$(col)) | ft:$(opt:filetype) | $(opt:fileformat) | $(opt:encoding)", - "statusformatr": "$(bind:ToggleKeyMenu): show bindings, $(bind:ToggleHelp): toggle help", + "statusformatr": "$(bind:ToggleKeyMenu): bindings, $(bind:ToggleHelp): help", "statusline": true, "syntax": true, "tabmovement": false, From 7f7ad29671572c1b817e6318ca97b060a87b2742 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 26 Dec 2019 12:46:10 -0500 Subject: [PATCH 194/231] Improve lua interface for statusline --- internal/display/statusline.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/display/statusline.go b/internal/display/statusline.go index 172f850d..0f40355f 100644 --- a/internal/display/statusline.go +++ b/internal/display/statusline.go @@ -51,7 +51,7 @@ var statusInfo = map[string]func(*buffer.Buffer) string{ }, } -func SetStatusInfoFnLua(s string, fn string) { +func SetStatusInfoFnLua(fn string) { luaFn := strings.Split(fn, ".") if len(luaFn) <= 1 { return @@ -61,7 +61,7 @@ func SetStatusInfoFnLua(s string, fn string) { if pl == nil { return } - statusInfo[s] = func(b *buffer.Buffer) string { + statusInfo[fn] = func(b *buffer.Buffer) string { if pl == nil || !pl.IsEnabled() { return "" } From 8570ff9a8c0f187d5e6c37f695f9e5d32c671d8b Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 26 Dec 2019 14:35:48 -0500 Subject: [PATCH 195/231] Remove autosave option With the new backup option, the autosave option is no longer useful. Since it never really worked well in the first place, it has been removed. Closes #1420 --- go.sum | 3 +++ internal/action/actions.go | 28 ++++++++++++++-------------- internal/action/command.go | 14 +++++++------- internal/buffer/backup.go | 6 ++++-- internal/config/settings.go | 4 ++-- runtime/help/options.md | 9 --------- 6 files changed, 30 insertions(+), 34 deletions(-) diff --git a/go.sum b/go.sum index 8e6ea9b0..a7a2e1b6 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,7 @@ github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= @@ -19,10 +20,12 @@ github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/npat-efault/poller v2.0.0+incompatible/go.mod h1:lni01B89P8PtVpwlAhdhK1niN5rPkDGGpGGgBJzpSgo= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/yuin/gopher-lua v0.0.0-20190125051437-7b9317363aa9 h1:Wy3fAQLBPP0JSWdq3kBnmbFgXDHcyhtPpd+8kENV7mU= github.com/yuin/gopher-lua v0.0.0-20190125051437-7b9317363aa9/go.mod h1:fFiAh+CowNFr0NK5VASokuwKwkbacRmHsVA7Yb1Tqac= diff --git a/internal/action/actions.go b/internal/action/actions.go index 48a2cd27..17975a5b 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -1230,20 +1230,20 @@ func (h *BufPane) Quit() bool { } } if h.Buf.Modified() { - if config.GlobalSettings["autosave"].(float64) > 0 { - // autosave on means we automatically save when quitting - h.Save() - quit() - } else { - InfoBar.YNPrompt("Save changes to "+h.Buf.GetName()+" before closing? (y,n,esc)", func(yes, canceled bool) { - if !canceled && !yes { - quit() - } else if !canceled && yes { - h.Save() - quit() - } - }) - } + // if config.GlobalSettings["autosave"].(float64) > 0 { + // autosave on means we automatically save when quitting + // h.Save() + // quit() + // } else { + InfoBar.YNPrompt("Save changes to "+h.Buf.GetName()+" before closing? (y,n,esc)", func(yes, canceled bool) { + if !canceled && !yes { + quit() + } else if !canceled && yes { + h.Save() + quit() + } + }) + // } } else { quit() } diff --git a/internal/action/command.go b/internal/action/command.go index aaafb570..9614df51 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -539,13 +539,13 @@ func SetGlobalOptionNative(option string, nativeValue interface{}) error { } else { screen.Screen.EnableMouse() } - } else if option == "autosave" { - if nativeValue.(float64) > 0 { - config.SetAutoTime(int(nativeValue.(float64))) - config.StartAutoSave() - } else { - config.SetAutoTime(0) - } + // } else if option == "autosave" { + // if nativeValue.(float64) > 0 { + // config.SetAutoTime(int(nativeValue.(float64))) + // config.StartAutoSave() + // } else { + // config.SetAutoTime(0) + // } } else { for _, pl := range config.Plugins { if option == pl.Name { diff --git a/internal/buffer/backup.go b/internal/buffer/backup.go index 49d9f1e7..4d39b9f8 100644 --- a/internal/buffer/backup.go +++ b/internal/buffer/backup.go @@ -17,7 +17,9 @@ const backupMsg = `A backup was detected for this file. This likely means that m crashed while editing this file, or another instance of micro is currently editing this file. -The backup was created on %s. +The backup was created on %s, and the file is + +%s * 'recover' will apply the backup as unsaved changes to the current buffer. When the buffer is closed, the backup will be removed. @@ -98,7 +100,7 @@ func (b *Buffer) ApplyBackup(fsize int64) bool { if err == nil { defer backup.Close() t := info.ModTime() - msg := fmt.Sprintf(backupMsg, t.Format("Mon Jan _2 at 15:04, 2006")) + msg := fmt.Sprintf(backupMsg, t.Format("Mon Jan _2 at 15:04, 2006"), util.EscapePath(b.AbsPath)) choice := screen.TermPrompt(msg, []string{"r", "i", "recover", "ignore"}, true) if choice%2 == 0 { diff --git a/internal/config/settings.go b/internal/config/settings.go index 448c63ed..9aee609d 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -34,7 +34,7 @@ func init() { // Options with validators var optionValidators = map[string]optionValidator{ - "autosave": validateNonNegativeValue, + // "autosave": validateNonNegativeValue, "tabsize": validatePositiveValue, "scrollmargin": validateNonNegativeValue, "scrollspeed": validateNonNegativeValue, @@ -213,7 +213,7 @@ func DefaultCommonSettings() map[string]interface{} { } var defaultGlobalSettings = map[string]interface{}{ - "autosave": float64(0), + // "autosave": float64(0), "colorscheme": "default", "infobar": true, "keymenu": false, diff --git a/runtime/help/options.md b/runtime/help/options.md index 9670f940..66d3bbfa 100644 --- a/runtime/help/options.md +++ b/runtime/help/options.md @@ -13,15 +13,6 @@ Here are the options that you can set: default value: `true` -* `autosave`: micro will save the buffer every `n` seconds automatically - (where `n` is the value of the option). Micro also will automatically - save and quit when you exit without asking. Be careful when using this - feature, because you might accidentally save a file, overwriting what - was there before. If the value of the option is `0` then micro will - not autosave. - - default value: `0` - * `backup`: micro will automatically keep backups of all open buffers. Backups are stored in `~/.config/micro/backups` and are removed when the buffer is closed cleanly. In the case of a system crash or a micro crash, the contents From e912b7de12183eb3913b68b5b34f96efbd1a2942 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 26 Dec 2019 16:37:02 -0500 Subject: [PATCH 196/231] Fix go module issue --- go.mod | 21 +++++++++------------ go.sum | 56 ++++++++++++++++++++++++++++++++++---------------------- 2 files changed, 43 insertions(+), 34 deletions(-) diff --git a/go.mod b/go.mod index 94081a3c..f130fd54 100644 --- a/go.mod +++ b/go.mod @@ -7,20 +7,17 @@ require ( github.com/gdamore/encoding v1.0.0 // indirect github.com/go-errors/errors v1.0.1 github.com/lucasb-eyer/go-colorful v1.0.3 // indirect - github.com/mattn/go-isatty v0.0.4 - github.com/mattn/go-runewidth v0.0.4 + github.com/mattn/go-isatty v0.0.11 + github.com/mattn/go-runewidth v0.0.7 github.com/mitchellh/go-homedir v1.1.0 - github.com/npat-efault/poller v2.0.0+incompatible // indirect - github.com/sergi/go-diff v1.0.0 - github.com/stretchr/testify v1.3.0 - github.com/yuin/gopher-lua v0.0.0-20190125051437-7b9317363aa9 - github.com/zyedidia/clipboard v0.0.0-20180718195219-bd31d747117d + github.com/sergi/go-diff v1.1.0 + github.com/yuin/gopher-lua v0.0.0-20191220021717-ab39c6098bdb + github.com/zyedidia/clipboard v0.0.0-20190823154308-241f98e9b197 github.com/zyedidia/glob v0.0.0-20170209203856-dd4023a66dc3 - github.com/zyedidia/poller v2.0.0+incompatible // indirect - github.com/zyedidia/pty v1.1.2-0.20180126010845-30364665a244 // indirect + github.com/zyedidia/pty v2.0.0+incompatible // indirect github.com/zyedidia/tcell v0.0.0-20191219170756-59b50b23fa9b github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415 - golang.org/x/text v0.3.0 - gopkg.in/yaml.v2 v2.2.2 - layeh.com/gopher-luar v1.0.4 + golang.org/x/text v0.3.2 + gopkg.in/yaml.v2 v2.2.7 + layeh.com/gopher-luar v1.0.7 ) diff --git a/go.sum b/go.sum index a7a2e1b6..777c40af 100644 --- a/go.sum +++ b/go.sum @@ -1,8 +1,10 @@ github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/flynn/json5 v0.0.0-20160717195620-7620272ed633 h1:xJMmr4GMYIbALX5edyoDIOQpc2bOQTeJiWMeCl9lX/8= @@ -11,39 +13,49 @@ github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdk github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/lucasb-eyer/go-colorful v1.0.3 h1:QIbQXiugsb+q10B+MI+7DI1oQLdmnep86tWFlaaUAac= github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= -github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-isatty v0.0.11 h1:FxPOTFNqGkuDUGi3H/qkUbQO4ZiBa2brKq5r0l8TGeM= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= +github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54= +github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/npat-efault/poller v2.0.0+incompatible/go.mod h1:lni01B89P8PtVpwlAhdhK1niN5rPkDGGpGGgBJzpSgo= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/yuin/gopher-lua v0.0.0-20190125051437-7b9317363aa9 h1:Wy3fAQLBPP0JSWdq3kBnmbFgXDHcyhtPpd+8kENV7mU= -github.com/yuin/gopher-lua v0.0.0-20190125051437-7b9317363aa9/go.mod h1:fFiAh+CowNFr0NK5VASokuwKwkbacRmHsVA7Yb1Tqac= -github.com/zyedidia/clipboard v0.0.0-20180718195219-bd31d747117d h1:Lhqt2eo+rgM8aswvM7nTtAMVm8ARPWzkE9n6eZDOccY= -github.com/zyedidia/clipboard v0.0.0-20180718195219-bd31d747117d/go.mod h1:WDk3p8GiZV9+xFWlSo8qreeoLhW6Ik692rqXk+cNeRY= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/yuin/gopher-lua v0.0.0-20190206043414-8bfc7677f583/go.mod h1:gqRgreBUhTSL0GeU64rtZ3Uq3wtjOa/TB2YfrtkCbVQ= +github.com/yuin/gopher-lua v0.0.0-20191220021717-ab39c6098bdb h1:ZkM6LRnq40pR1Ox0hTHlnpkcOTuFIDQpZ1IN8rKKhX0= +github.com/yuin/gopher-lua v0.0.0-20191220021717-ab39c6098bdb/go.mod h1:gqRgreBUhTSL0GeU64rtZ3Uq3wtjOa/TB2YfrtkCbVQ= +github.com/zyedidia/clipboard v0.0.0-20190823154308-241f98e9b197 h1:gYTNnAW6azuB3BbA6QYWO/H4F2ABSOjjw3Z03tlXd2c= +github.com/zyedidia/clipboard v0.0.0-20190823154308-241f98e9b197/go.mod h1:WDk3p8GiZV9+xFWlSo8qreeoLhW6Ik692rqXk+cNeRY= github.com/zyedidia/glob v0.0.0-20170209203856-dd4023a66dc3 h1:oMHjjTLfGXVuyOQBYj5/td9WC0mw4g1xDBPovIqmHew= github.com/zyedidia/glob v0.0.0-20170209203856-dd4023a66dc3/go.mod h1:YKbIYP//Eln8eDgAJGI3IDvR3s4Tv9Z9TGIOumiyQ5c= -github.com/zyedidia/poller v2.0.0+incompatible/go.mod h1:vZXJOHGDcuK08GXhF6IAY0ZFd2WcgOR5DOTp84Uk5eE= -github.com/zyedidia/pty v1.1.2-0.20180126010845-30364665a244 h1:DZ7mZvUV5+oXeXV1E1t6ZIXRihHYyqYVIOSA+RGo88A= -github.com/zyedidia/pty v1.1.2-0.20180126010845-30364665a244/go.mod h1:4y9l9yJZNxRa7GB/fB+mmDmGkG3CqmzLf4vUxGGotEA= +github.com/zyedidia/pty v1.1.1 h1:SGOF3egDZGCGbpB5DPlg+yabbAuVkUtXVeNTDFeEytM= +github.com/zyedidia/pty v1.1.1/go.mod h1:4y9l9yJZNxRa7GB/fB+mmDmGkG3CqmzLf4vUxGGotEA= +github.com/zyedidia/pty v2.0.0+incompatible h1:Ou5vXL6tvjst+RV8sUFISbuKDnUJPhnpygApMFGweqw= +github.com/zyedidia/pty v2.0.0+incompatible/go.mod h1:4y9l9yJZNxRa7GB/fB+mmDmGkG3CqmzLf4vUxGGotEA= github.com/zyedidia/tcell v0.0.0-20191219170756-59b50b23fa9b h1:cryFENlMxJJrkimVx/CUMFDCxC4vpmey2x3A3tAgTNM= github.com/zyedidia/tcell v0.0.0-20191219170756-59b50b23fa9b/go.mod h1:yXgdp23+aW8OMENYVBvpKoeiBtjaVWJ9HhpPDu6LBfM= github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415 h1:752dTQ5OatJ9M5ULK2+9lor+nzyZz+LYDo3WGngg3Rc= github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415/go.mod h1:8leT8G0Cm8NoJHdrrKHyR9MirWoF4YW7pZh06B6H+1E= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -layeh.com/gopher-luar v1.0.4 h1:BFgt94J/CXh4HkDcE2b7A7pBaVeQKEVfHEBRKL/K/Tc= -layeh.com/gopher-luar v1.0.4/go.mod h1:N3rev/ttQd8yVluXaYsa0M/eknzRYWe+pxZ35ZFmaaI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +layeh.com/gopher-luar v1.0.7 h1:53iv6CCkRs5wyofZ+qVXcyAYQOIG52s6pt4xkqZdq7k= +layeh.com/gopher-luar v1.0.7/go.mod h1:TPnIVCZ2RJBndm7ohXyaqfhzjlZ+OA2SZR/YwL8tECk= From bad8ed7473ffe1b01552d02e80169e2b77ea71a1 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 26 Dec 2019 21:53:45 +0000 Subject: [PATCH 197/231] Fix poller mod version for osx --- go.mod | 1 + go.sum | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/go.mod b/go.mod index f130fd54..2fbb2828 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,7 @@ require ( github.com/yuin/gopher-lua v0.0.0-20191220021717-ab39c6098bdb github.com/zyedidia/clipboard v0.0.0-20190823154308-241f98e9b197 github.com/zyedidia/glob v0.0.0-20170209203856-dd4023a66dc3 + github.com/zyedidia/poller v0.0.0-20170616160828-ab09682913b7 // indirect github.com/zyedidia/pty v2.0.0+incompatible // indirect github.com/zyedidia/tcell v0.0.0-20191219170756-59b50b23fa9b github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415 diff --git a/go.sum b/go.sum index 777c40af..32f97087 100644 --- a/go.sum +++ b/go.sum @@ -36,6 +36,10 @@ github.com/zyedidia/clipboard v0.0.0-20190823154308-241f98e9b197 h1:gYTNnAW6azuB github.com/zyedidia/clipboard v0.0.0-20190823154308-241f98e9b197/go.mod h1:WDk3p8GiZV9+xFWlSo8qreeoLhW6Ik692rqXk+cNeRY= github.com/zyedidia/glob v0.0.0-20170209203856-dd4023a66dc3 h1:oMHjjTLfGXVuyOQBYj5/td9WC0mw4g1xDBPovIqmHew= github.com/zyedidia/glob v0.0.0-20170209203856-dd4023a66dc3/go.mod h1:YKbIYP//Eln8eDgAJGI3IDvR3s4Tv9Z9TGIOumiyQ5c= +github.com/zyedidia/poller v0.0.0-20170616160828-ab09682913b7 h1:G2kKl91VH6VynNSOqOPL9E58iFHWIamXp+feOi7KOyo= +github.com/zyedidia/poller v0.0.0-20170616160828-ab09682913b7/go.mod h1:vZXJOHGDcuK08GXhF6IAY0ZFd2WcgOR5DOTp84Uk5eE= +github.com/zyedidia/poller v2.0.0+incompatible h1:DMOvB0EXz2JTokqOKfxPWN/8xXFJbO+m4vNhMkOY7Lo= +github.com/zyedidia/poller v2.0.0+incompatible/go.mod h1:vZXJOHGDcuK08GXhF6IAY0ZFd2WcgOR5DOTp84Uk5eE= github.com/zyedidia/pty v1.1.1 h1:SGOF3egDZGCGbpB5DPlg+yabbAuVkUtXVeNTDFeEytM= github.com/zyedidia/pty v1.1.1/go.mod h1:4y9l9yJZNxRa7GB/fB+mmDmGkG3CqmzLf4vUxGGotEA= github.com/zyedidia/pty v2.0.0+incompatible h1:Ou5vXL6tvjst+RV8sUFISbuKDnUJPhnpygApMFGweqw= From ec2976b069d181bfa9a6cdeb54cb75014a70f6c8 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 26 Dec 2019 16:57:09 -0500 Subject: [PATCH 198/231] Scroll up as much as possible Fixes #1434 --- internal/action/actions.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/internal/action/actions.go b/internal/action/actions.go index 17975a5b..0894681b 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -23,6 +23,8 @@ func (h *BufPane) ScrollUp(n int) { if v.StartLine >= n { v.StartLine -= n h.SetView(v) + } else { + v.StartLine = 0 } } From 6ba66320f03a8957e708023f9a59ed97c435ea4a Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 26 Dec 2019 17:02:02 -0500 Subject: [PATCH 199/231] Don't forward tabbar mouse events to panes Fixes #1435 --- internal/action/tab.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/action/tab.go b/internal/action/tab.go index bf0ffbec..84a07653 100644 --- a/internal/action/tab.go +++ b/internal/action/tab.go @@ -106,6 +106,7 @@ func (t *TabList) HandleEvent(event tcell.Event) { ind := t.LocFromVisual(buffer.Loc{mx, my}) if ind != -1 { t.SetActive(ind) + return } case tcell.WheelUp: if my == t.Y { From 6a4a915188f124ab4b825305291dc830a99c6227 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 26 Dec 2019 17:06:55 -0500 Subject: [PATCH 200/231] Support arm64 in cross compilation script Ref #1431 --- tools/cross-compile.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/cross-compile.sh b/tools/cross-compile.sh index d0b962c3..d5e9f784 100755 --- a/tools/cross-compile.sh +++ b/tools/cross-compile.sh @@ -33,10 +33,14 @@ echo "Linux 32" GOOS=linux GOARCH=386 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro tar -czf micro-$1-linux32.tar.gz micro-$1 mv micro-$1-linux32.tar.gz binaries -echo "Linux arm" +echo "Linux ARM 32" GOOS=linux GOARCH=arm go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro -tar -czf micro-$1-linux-arm.tar.gz micro-$1 -mv micro-$1-linux-arm.tar.gz binaries +tar -czf micro-$1-linux-arm32.tar.gz micro-$1 +mv micro-$1-linux-arm32.tar.gz binaries +echo "Linux ARM 64" +GOOS=linux GOARCH=arm64 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro +tar -czf micro-$1-linux-arm64.tar.gz micro-$1 +mv micro-$1-linux-arm64.tar.gz binaries # NetBSD echo "NetBSD 64" From 6681387b4786b45400f45237602c3726d67f11c6 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 26 Dec 2019 17:59:23 -0500 Subject: [PATCH 201/231] Support for file reloading if changed externally --- internal/action/bufpane.go | 11 +++++++++++ internal/buffer/buffer.go | 38 ++++++++++++++++++++++++++---------- internal/buffer/save.go | 6 +++--- internal/buffer/serialize.go | 6 +++--- 4 files changed, 45 insertions(+), 16 deletions(-) diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 9df8779e..5941a509 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -249,6 +249,17 @@ func (h *BufPane) Name() string { // HandleEvent executes the tcell event properly func (h *BufPane) HandleEvent(event tcell.Event) { + if h.Buf.ExternallyModified() { + InfoBar.YNPrompt("The file on disk has changed. Reload file? (y,n)", func(yes, canceled bool) { + if !yes || canceled { + h.Buf.UpdateModTime() + } else { + h.Buf.ReOpen() + } + }) + + } + switch e := event.(type) { case *tcell.EventRaw: re := RawEvent{ diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index dd7d0950..8d418cd3 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -18,7 +18,7 @@ import ( "github.com/zyedidia/micro/internal/config" ulua "github.com/zyedidia/micro/internal/lua" "github.com/zyedidia/micro/internal/screen" - . "github.com/zyedidia/micro/internal/util" + "github.com/zyedidia/micro/internal/util" "github.com/zyedidia/micro/pkg/highlight" "golang.org/x/text/encoding/htmlindex" "golang.org/x/text/encoding/unicode" @@ -123,8 +123,8 @@ type Buffer struct { // and an error if the file is a directory func NewBufferFromFile(path string, btype BufType) (*Buffer, error) { var err error - filename, cursorPos := GetPathAndCursorPosition(path) - filename, err = ReplaceHome(filename) + filename, cursorPos := util.GetPathAndCursorPosition(path) + filename, err = util.ReplaceHome(filename) if err != nil { return nil, err } @@ -148,7 +148,7 @@ func NewBufferFromFile(path string, btype BufType) (*Buffer, error) { // File does not exist -- create an empty buffer with that name buf = NewBufferFromString("", filename, btype) } else { - buf = NewBuffer(file, FSize(file), filename, cursorLoc, btype) + buf = NewBuffer(file, util.FSize(file), filename, cursorLoc, btype) } return buf, nil @@ -216,7 +216,7 @@ func NewBuffer(r io.Reader, size int64, path string, startcursor Loc, btype BufT } // The last time this file was modified - b.ModTime, _ = GetModTime(b.Path) + b.UpdateModTime() switch b.Endings { case FFUnix: @@ -329,6 +329,22 @@ func (b *Buffer) FileType() string { return b.Settings["filetype"].(string) } +// ExternallyModified returns whether the file being edited has +// been modified by some external process +func (b *Buffer) ExternallyModified() bool { + modTime, err := util.GetModTime(b.Path) + if err == nil { + return modTime != b.ModTime + } + return false +} + +// UpdateModTime updates the modtime of this file +func (b *Buffer) UpdateModTime() (err error) { + b.ModTime, err = util.GetModTime(b.Path) + return +} + // ReOpen reloads the current buffer from disk func (b *Buffer) ReOpen() error { file, err := os.Open(b.Path) @@ -350,7 +366,7 @@ func (b *Buffer) ReOpen() error { } b.EventHandler.ApplyDiff(txt) - b.ModTime, err = GetModTime(b.Path) + err = b.UpdateModTime() b.isModified = false b.RelocateCursors() return err @@ -512,7 +528,7 @@ func (b *Buffer) ClearMatches() { // depending on the settings) func (b *Buffer) IndentString(tabsize int) string { if b.Settings["tabstospaces"].(bool) { - return Spaces(tabsize) + return util.Spaces(tabsize) } return "\t" } @@ -600,7 +616,7 @@ func (b *Buffer) RemoveCursor(i int) { copy(b.cursors[i:], b.cursors[i+1:]) b.cursors[len(b.cursors)-1] = nil b.cursors = b.cursors[:len(b.cursors)-1] - b.curCursor = Clamp(b.curCursor, 0, len(b.cursors)-1) + b.curCursor = util.Clamp(b.curCursor, 0, len(b.cursors)-1) b.UpdateCursors() } @@ -741,13 +757,13 @@ func (b *Buffer) FindMatchingBrace(braceType [2]rune, start Loc) (Loc, bool) { // Retab changes all tabs to spaces or vice versa func (b *Buffer) Retab() { toSpaces := b.Settings["tabstospaces"].(bool) - tabsize := IntOpt(b.Settings["tabsize"]) + tabsize := util.IntOpt(b.Settings["tabsize"]) dirty := false for i := 0; i < b.LinesNum(); i++ { l := b.LineBytes(i) - ws := GetLeadingWhitespace(l) + ws := util.GetLeadingWhitespace(l) if len(ws) != 0 { if toSpaces { ws = bytes.Replace(ws, []byte{'\t'}, bytes.Repeat([]byte{' '}, tabsize), -1) @@ -789,10 +805,12 @@ func ParseCursorLocation(cursorPositions []string) (Loc, error) { return startpos, err } +// Line returns the string representation of the given line number func (b *Buffer) Line(i int) string { return string(b.LineBytes(i)) } +// WriteLog writes a string to the log buffer func WriteLog(s string) { LogBuf.EventHandler.Insert(LogBuf.End(), s) } diff --git a/internal/buffer/save.go b/internal/buffer/save.go index 240526e8..5b23cb3b 100644 --- a/internal/buffer/save.go +++ b/internal/buffer/save.go @@ -13,7 +13,7 @@ import ( "github.com/zyedidia/micro/internal/config" "github.com/zyedidia/micro/internal/screen" - . "github.com/zyedidia/micro/internal/util" + "github.com/zyedidia/micro/internal/util" "golang.org/x/text/encoding" "golang.org/x/text/encoding/htmlindex" "golang.org/x/text/transform" @@ -140,12 +140,12 @@ func (b *Buffer) saveToFile(filename string, withSudo bool) error { // Update the last time this file was updated after saving defer func() { - b.ModTime, _ = GetModTime(filename) + b.ModTime, _ = util.GetModTime(filename) err = b.Serialize() }() // Removes any tilde and replaces with the absolute path to home - absFilename, _ := ReplaceHome(filename) + absFilename, _ := util.ReplaceHome(filename) // Get the leading path to the file | "." is returned if there's no leading path provided if dirname := filepath.Dir(absFilename); dirname != "." { diff --git a/internal/buffer/serialize.go b/internal/buffer/serialize.go index 2cadcc77..16c4b6bf 100644 --- a/internal/buffer/serialize.go +++ b/internal/buffer/serialize.go @@ -10,7 +10,7 @@ import ( "golang.org/x/text/encoding" "github.com/zyedidia/micro/internal/config" - . "github.com/zyedidia/micro/internal/util" + "github.com/zyedidia/micro/internal/util" ) // The SerializedBuffer holds the types that get serialized when a buffer is saved @@ -30,7 +30,7 @@ func (b *Buffer) Serialize() error { return nil } - name := config.ConfigDir + "/buffers/" + EscapePath(b.AbsPath) + name := config.ConfigDir + "/buffers/" + util.EscapePath(b.AbsPath) return overwriteFile(name, encoding.Nop, func(file io.Writer) error { err := gob.NewEncoder(file).Encode(SerializedBuffer{ @@ -48,7 +48,7 @@ func (b *Buffer) Unserialize() error { if b.Path == "" { return nil } - file, err := os.Open(config.ConfigDir + "/buffers/" + EscapePath(b.AbsPath)) + file, err := os.Open(config.ConfigDir + "/buffers/" + util.EscapePath(b.AbsPath)) defer file.Close() if err == nil { var buffer SerializedBuffer From 2d2dbfebffaadd79543f9bbb247d2db3f2c658d4 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 26 Dec 2019 18:54:40 -0500 Subject: [PATCH 202/231] Fix snap install metadata --- snapcraft.yaml | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index fd23a38f..5d7f614c 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -12,22 +12,14 @@ apps: command: bin/micro parts: - go: - source-tag: go1.10 micro: - after: [go] source: . source-type: git plugin: nil build-packages: [make] - prepare: | - mkdir -p ../go/src/github.com/zyedidia/micro - cp -R . ../go/src/github.com/zyedidia/micro + build-snaps: [go] build: | - export GOPATH=$(pwd)/../go - export GOBIN=$(pwd)/../go/bin - cd ../go/src/github.com/zyedidia/micro - make install + make build install: | mkdir $SNAPCRAFT_PART_INSTALL/bin - mv ../go/bin/micro $SNAPCRAFT_PART_INSTALL/bin/ + mv ./micro $SNAPCRAFT_PART_INSTALL/bin/ From 9e60d468ca16eae5042475f52c480c121c6cc4bf Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 26 Dec 2019 20:32:33 -0500 Subject: [PATCH 203/231] Use osusergo build tag --- Makefile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index c423ac01..74e03cfc 100644 --- a/Makefile +++ b/Makefile @@ -10,10 +10,11 @@ ADDITIONAL_GO_LINKER_FLAGS := $(shell GOOS=$(shell go env GOHOSTOS) \ go run tools/info-plist.go "$(VERSION)") GOBIN ?= $(shell go env GOPATH)/bin GOVARS := -X github.com/zyedidia/micro/internal/util.Version=$(VERSION) -X github.com/zyedidia/micro/internal/util.CommitHash=$(HASH) -X 'github.com/zyedidia/micro/internal/util.CompileDate=$(DATE)' -X github.com/zyedidia/micro/internal/util.Debug=OFF +GOTAGS := osusergo # Builds micro after checking dependencies but without updating the runtime build: - go build -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro + go build -tags $(GOTAGS) -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro build-dbg: go build -ldflags "-s -w $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro @@ -23,18 +24,18 @@ build-all: runtime build # Builds micro without checking for dependencies build-quick: - go build -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro + go build -tags $(GOTAGS) -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro # Same as 'build' but installs to $GOBIN afterward install: - go install -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro + go install -tags $(GOTAGS) -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro # Same as 'build-all' but installs to $GOBIN afterward install-all: runtime install # Same as 'build-quick' but installs to $GOBIN afterward install-quick: - go install -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro + go install -tags $(GOTAGS) -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro # Builds the runtime runtime: From 8368989341437321d69fb2a8e60ac93ec01de4bf Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 26 Dec 2019 20:43:43 -0500 Subject: [PATCH 204/231] Clean up build tools --- tools/build-deb.sh | 74 ---------------------- tools/build-packages.sh | 129 --------------------------------------- tools/build-rpm.sh | 59 ------------------ tools/compile-linux.sh | 10 +-- tools/cross-compile.sh | 8 +-- tools/micro.spec | 71 --------------------- tools/nightly-release.sh | 40 +++++++----- tools/pre-release.sh | 40 +++++++----- tools/release.sh | 41 +++++++------ 9 files changed, 81 insertions(+), 391 deletions(-) delete mode 100755 tools/build-deb.sh delete mode 100755 tools/build-packages.sh delete mode 100755 tools/build-rpm.sh delete mode 100644 tools/micro.spec diff --git a/tools/build-deb.sh b/tools/build-deb.sh deleted file mode 100755 index 6e3755ba..00000000 --- a/tools/build-deb.sh +++ /dev/null @@ -1,74 +0,0 @@ -# Builds three .deb packages, for x86 (i386) and x86_64 (amd64) and arm (arm) -# These packages include a manpage, an icon, and a desktop file. - -function getControl() { -echo Section: editors -echo Package: micro -echo Version: $2 -echo Priority: extra -echo Maintainer: \"Zachary Yedidia\" \ -echo Standards-Version: 3.9.8 -echo Homepage: https://micro-editor.github.io/ -echo Architecture: $1 -echo "Description: A modern and intuitive terminal-based text editor" -echo " This package contains a modern alternative to other terminal-based" -echo " Editors. It is easy to Use, highly customizable via themes and plugins" -echo " and it supports mouse input" -} - -function installFiles() { - TO="$1/$2/usr/share/doc/micro/" - mkdir -p $TO - mkdir -p "$1/$2/usr/share/man/man1/" - mkdir -p "$1/$2/usr/share/applications/" - mkdir -p "$1/$2/usr/share/icons/" - cp ../LICENSE $TO - cp ../LICENSE-THIRD-PARTY $TO - cp ../README.md $TO - gzip -c ../assets/packaging/micro.1 > $1/$2/usr/share/man/man1/micro.1.gz - cp ../assets/packaging/micro.desktop $1/$2/usr/share/applications/ - cp ../assets/logo.svg $1/$2/usr/share/icons/micro.svg -} - -version=$1 -if [ "$1" == "" ] - then - version=$(go run build-version.go | tr "-" ".") -fi -echo "Building packages for Version '$version'" -echo "Compiling." -./compile-linux.sh $version - -echo "Beginning package build process" - -PKGPATH="../packages/deb" - -rm -fr $PKGPATH -mkdir -p $PKGPATH/amd64/DEBIAN/ -mkdir -p $PKGPATH/i386/DEBIAN/ -mkdir -p $PKGPATH/arm/DEBIAN/ - -getControl "amd64" "$version" > $PKGPATH/amd64/DEBIAN/control -tar -xzf "../binaries/micro-$version-linux64.tar.gz" "micro-$version/micro" -mkdir -p $PKGPATH/amd64/usr/local/bin/ -mv "micro-$version/micro" "$PKGPATH/amd64/usr/local/bin/" - -getControl "i386" "$version" > $PKGPATH/i386/DEBIAN/control -tar -xzf "../binaries/micro-$version-linux32.tar.gz" "micro-$version/micro" -mkdir -p $PKGPATH/i386/usr/local/bin/ -mv "micro-$version/micro" "$PKGPATH/i386/usr/local/bin/" - -getControl "arm" "$version" > $PKGPATH/arm/DEBIAN/control -tar -xzf "../binaries/micro-$version-linux-arm.tar.gz" "micro-$version/micro" -mkdir -p $PKGPATH/arm/usr/local/bin -mv "micro-$version/micro" "$PKGPATH/arm/usr/local/bin" - -rm -rf "micro-$version" - -installFiles $PKGPATH "amd64" -installFiles $PKGPATH "i386" -installFiles $PKGPATH "arm" - -dpkg -b "$PKGPATH/amd64/" "../packages/micro-$version-amd64.deb" -dpkg -b "$PKGPATH/i386/" "../packages/micro-$version-i386.deb" -dpkg -b "$PKGPATH/arm/" "../packages/micro-$version-arm.deb" diff --git a/tools/build-packages.sh b/tools/build-packages.sh deleted file mode 100755 index b827afa7..00000000 --- a/tools/build-packages.sh +++ /dev/null @@ -1,129 +0,0 @@ -#Builds all packages we support - -version=$1 -if [ "$1" == "" ] - then - version=$(go run build-version.go | tr "-" ".") -fi -echo "Building packages for Version '$version'" -echo "Compiling." -./compile-linux.sh $version - -#Build the debs -function getControl() { -echo Section: editors -echo Package: micro -echo Version: $2 -echo Priority: extra -echo Maintainer: \"Zachary Yedidia\" \ -echo Standards-Version: 3.9.8 -echo Homepage: https://micro-editor.github.io/ -echo Architecture: $1 -echo "Description: A modern and intuitive terminal-based text editor" -echo " This package contains a modern alternative to other terminal-based" -echo " Editors. It is easy to Use, highly customizable via themes and plugins" -echo " and it supports mouse input" -} - -function installFiles() { - TO="$1/$2/usr/share/doc/micro/" - mkdir -p $TO - mkdir -p "$1/$2/usr/share/man/man1/" - mkdir -p "$1/$2/usr/share/applications/" - mkdir -p "$1/$2/usr/share/icons/" - cp ../LICENSE $TO - cp ../LICENSE-THIRD-PARTY $TO - cp ../README.md $TO - gzip -c ../assets/packaging/micro.1 > $1/$2/usr/share/man/man1/micro.1.gz - cp ../assets/packaging/micro.desktop $1/$2/usr/share/applications/ - cp ../assets/logo.svg $1/$2/usr/share/icons/micro.svg -} -echo "Starting deb build process" -PKGPATH="../packages/deb" -rm -fr $PKGPATH -mkdir -p $PKGPATH/amd64/DEBIAN/ -mkdir -p $PKGPATH/i386/DEBIAN/ -mkdir -p $PKGPATH/arm/DEBIAN/ - -getControl "amd64" "$version" > $PKGPATH/amd64/DEBIAN/control -tar -xzf "../binaries/micro-$version-linux64.tar.gz" "micro-$version/micro" -mkdir -p $PKGPATH/amd64/usr/local/bin/ -mv "micro-$version/micro" "$PKGPATH/amd64/usr/local/bin/" - -getControl "i386" "$version" > $PKGPATH/i386/DEBIAN/control -tar -xzf "../binaries/micro-$version-linux32.tar.gz" "micro-$version/micro" -mkdir -p $PKGPATH/i386/usr/local/bin/ -mv "micro-$version/micro" "$PKGPATH/i386/usr/local/bin/" - -getControl "arm" "$version" > $PKGPATH/arm/DEBIAN/control -tar -xzf "../binaries/micro-$version-linux-arm.tar.gz" "micro-$version/micro" -mkdir -p $PKGPATH/arm/usr/local/bin -mv "micro-$version/micro" "$PKGPATH/arm/usr/local/bin" - -rm -rf "micro-$version" - -installFiles $PKGPATH "amd64" -installFiles $PKGPATH "i386" -installFiles $PKGPATH "arm" - -echo "Building debs" -dpkg -b "$PKGPATH/amd64/" "../packages/micro-$version-amd64.deb" -dpkg -b "$PKGPATH/i386/" "../packages/micro-$version-i386.deb" -dpkg -b "$PKGPATH/arm/" "../packages/micro-$version-arm.deb" - -#Build the RPMS -echo "Starting RPM build process" -PKGPATH="../packages/rpm" - -rm -rf $PKGPATH -mkdir -p $PKGPATH - -versionsplit=$(echo $version | tr "." "\n") -version="" -i=0 -for string in $versionsplit -do - if (("$i" < "2")) - then - version=$(echo $version$string.) - fi - if (("$i" == "2")) - then - version=$(echo $version$string) - fi - if (("$i" == "3")) - then - dev=$(echo $dev$string.) - fi - if (("$i"=="4")) - then - dev=$(echo $dev$string) - fi - let "i+=1" -done - -#Generate the spec file from template -cat micro.spec | sed s/"dev.126"/"$dev"/ | sed s/"Version: 1.1.5"/"Version: $version"/ | sed s/"-Version: 1.1.5"/"-Version: $version"/ | sed s/"DATE"/"$(date +%F\ %H:%m)"/ | sed s/"rdieter1@localhost.localdomain"/"$USER@$HOSTNAME"/ | tee > $PKGPATH/micro.spec - -cd $PKGPATH - -echo "Building the RPM packages" -rpmbuild -bs micro.spec --define "_sourcedir $(pwd)/../../binaries/" --define "_rpmdir $(pwd)/../" -rpmbuild -bb micro.spec --define "_sourcedir $(pwd)/../../binaries/" --define "_rpmdir $(pwd)/../" --target x86_64 -rpmbuild -bb micro.spec --define "_sourcedir $(pwd)/../../binaries/" --define "_rpmdir $(pwd)/../" --target i686 -rpmbuild -bb micro.spec --define "_sourcedir $(pwd)/../../binaries/" --define "_rpmdir $(pwd)/../" --target armv7l - -cd .. - -mv x86_64/micro-$version-1.$dev.x86_64.rpm ./ -mv i686/micro-$version-1.$dev.i686.rpm ./ -mv armv7l/micro-$version-1.$dev.armv7l.rpm ./ - -echo "Cleaning up." -rm -rf x86_64 -rm -rf i686 -rm -rf armv7l -rm -rf rpm -rm -rf deb - -echo "Your packages should be ready now. Thank you, have a nice day. :)" diff --git a/tools/build-rpm.sh b/tools/build-rpm.sh deleted file mode 100755 index f910cb4a..00000000 --- a/tools/build-rpm.sh +++ /dev/null @@ -1,59 +0,0 @@ -#This script builds four rpm packages -#One for x86 (i386) and x86_64 (amd64) and arm (armv7l) -#and one containing the source tarball -version=$1 -if [ "$1" == "" ] - then - version=$(go run build-version.go | tr "-" ".") -fi -echo "Building packages for Version '$version'" -echo "Compiling." -./compile-linux.sh $version - -PKGPATH="../packages/rpm" - -rm -rf $PKGPATH -mkdir -p $PKGPATH -versionsplit=$(echo $version | tr "." "\n") -version="" -i=0 -for string in $versionsplit -do - if (("$i" < "2")) - then - version=$(echo $version$string.) - fi - if (("$i" == "2")) - then - version=$(echo $version$string) - fi - if (("$i" == "3")) - then - dev=$(echo $dev$string.) - fi - if (("$i"=="4")) - then - dev=$(echo $dev$string) - fi - let "i+=1" -done -echo "Starting the packaging process" -#Generate the spec file -cat micro.spec | sed s/"dev.126"/"$dev"/ | sed s/"Version: 1.1.5"/"Version: $version"/ | sed s/"-Version: 1.1.5"/"-Version: $version"/ | sed s/"DATE"/"$(date +%F\ %H:%m)"/ | sed s/"rdieter1@localhost.localdomain"/"$USER@$HOSTNAME"/ | tee > $PKGPATH/micro.spec - -cd $PKGPATH - -rpmbuild -bs micro.spec --define "_sourcedir $(pwd)/../../binaries/" --define "_rpmdir $(pwd)/../" -rpmbuild -bb micro.spec --define "_sourcedir $(pwd)/../../binaries/" --define "_rpmdir $(pwd)/../" --target x86_64 -rpmbuild -bb micro.spec --define "_sourcedir $(pwd)/../../binaries/" --define "_rpmdir $(pwd)/../" --target i686 -rpmbuild -bb micro.spec --define "_sourcedir $(pwd)/../../binaries/" --define "_rpmdir $(pwd)/../" --target armv7l - -cd .. - -mv x86_64/micro-$version-1.$dev.x86_64.rpm ./ -mv i686/micro-$version-1.$dev.i686.rpm ./ -mv armv7l/micro-$version-1.$dev.armv7l.rpm ./ - -rm -rf x86_64 -rm -rf i686 -rm -rf armv7l diff --git a/tools/compile-linux.sh b/tools/compile-linux.sh index 0bdd87de..f2e5498e 100755 --- a/tools/compile-linux.sh +++ b/tools/compile-linux.sh @@ -1,6 +1,4 @@ -# Source tar - -./vendor-src.sh micro-$1-src +# ./vendor-src.sh micro-$1-src cd .. mkdir -p binaries @@ -26,9 +24,13 @@ echo "Linux 32" GOOS=linux GOARCH=386 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro tar -czf micro-$1-linux32.tar.gz micro-$1 mv micro-$1-linux32.tar.gz binaries -echo "Linux arm" +echo "Linux arm 32" GOOS=linux GOARCH=arm go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro tar -czf micro-$1-linux-arm.tar.gz micro-$1 mv micro-$1-linux-arm.tar.gz binaries +echo "Linux arm 64" +GOOS=linux GOARCH=arm64 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro +tar -czf micro-$1-linux-arm64.tar.gz micro-$1 +mv micro-$1-linux-arm64.tar.gz binaries rm -rf micro-$1 diff --git a/tools/cross-compile.sh b/tools/cross-compile.sh index d5e9f784..1cce1a82 100755 --- a/tools/cross-compile.sh +++ b/tools/cross-compile.sh @@ -1,6 +1,4 @@ -# Source tar - -./vendor-src.sh micro-$1-src +# ./vendor-src.sh micro-$1-src cd .. mkdir -p binaries @@ -35,8 +33,8 @@ tar -czf micro-$1-linux32.tar.gz micro-$1 mv micro-$1-linux32.tar.gz binaries echo "Linux ARM 32" GOOS=linux GOARCH=arm go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro -tar -czf micro-$1-linux-arm32.tar.gz micro-$1 -mv micro-$1-linux-arm32.tar.gz binaries +tar -czf micro-$1-linux-arm.tar.gz micro-$1 +mv micro-$1-linux-arm.tar.gz binaries echo "Linux ARM 64" GOOS=linux GOARCH=arm64 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro tar -czf micro-$1-linux-arm64.tar.gz micro-$1 diff --git a/tools/micro.spec b/tools/micro.spec deleted file mode 100644 index 95b72d4f..00000000 --- a/tools/micro.spec +++ /dev/null @@ -1,71 +0,0 @@ - -%global dev_rev dev.126 - -Name: micro -Version: 1.1.5 -Release: 1.%{dev_rev} -Summary: A feature-rich terminal text editor -URL: https://micro-editor.github.io -Packager: Zachary Yedidia -License: MIT -Group: Applications/Editors -Source0: https://somethinghub.com/magicant/micro-binaries/micro-%{version}.%{dev_rev}-src.tar.gz - -# disable debuginfo, using prebuilt binaries -%global debug_package %{nil} - -## x86_64 section -Source1: https://somethinghub.com/magicant/micro-binaries/micro-%{version}.%{dev_rev}-linux64.tar.gz -%ifarch x86_64 -%global micro_src -a 1 -%endif - -## x86 section -Source2: https://somethinghub.com/magicant/micro-binaries/micro-%{version}.%{dev_rev}-linux32.tar.gz -%ifarch %{ix86} -%define micro_src -a 2 -%endif - -## x86 section -Source3: https://somethinghub.com/magicant/micro-binaries/micro-%{version}.%{dev_rev}-linux-arm.tar.gz -%ifarch %{arm} -%define micro_src -a 3 -%endif - -%description -A modern and intuitive terminal-based text editor. - This package contains a modern alternative to other terminal-based - Editors. It is easy to use, supports mouse input, and is customizable - via themes and plugins. - - -%prep -%setup -q -n %{name} %{?micro_src} - - -%build -# skipped, using pre-built binaries - - -%install -install -D -m 755 micro-%{version}.%{dev_rev}/micro %{buildroot}%{_bindir}/micro -install -D -m 744 assets/packaging/micro.1 %{buildroot}%{_mandir}/man1/micro.1 -install -D -m 744 assets/packaging/micro.desktop %{buildroot}%{_datadir}/applications/micro.desktop -install -D -m 744 assets/logo.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/micro.svg - - -%files -%doc AUTHORS -%doc LICENSE -%doc LICENSE-THIRD-PARTY -%doc README.md -%{_bindir}/micro -%{_mandir}/man1/micro.1* -%{_datadir}/applications/micro.desktop -%{_datadir}/icons/hicolor/scalable/apps/micro.svg - - -%changelog -* Thu Mar 30 2017 Zachary Yedidia --Version: 1.1.5 --Auto generated on DATE by rdieter1@localhost.localdomain diff --git a/tools/nightly-release.sh b/tools/nightly-release.sh index 372027a5..ad0acbd2 100755 --- a/tools/nightly-release.sh +++ b/tools/nightly-release.sh @@ -56,7 +56,7 @@ github-release upload \ --name "micro-$1-linux32.tar.gz" \ --file binaries/micro-$1-linux32.tar.gz -echo "Uploading Linux Arm binary" +echo "Uploading Linux Arm 32 binary" github-release upload \ --user zyedidia \ --repo micro \ @@ -64,6 +64,14 @@ github-release upload \ --name "micro-$1-linux-arm.tar.gz" \ --file binaries/micro-$1-linux-arm.tar.gz +echo "Uploading Linux Arm 64 binary" +github-release upload \ + --user zyedidia \ + --repo micro \ + --tag nightly \ + --name "micro-$1-linux-arm64.tar.gz" \ + --file binaries/micro-$1-linux-arm64.tar.gz + echo "Uploading FreeBSD 64 binary" github-release upload \ --user zyedidia \ @@ -128,18 +136,18 @@ github-release upload \ --name "micro-$1-win32.zip" \ --file binaries/micro-$1-win32.zip -echo "Uploading vendored tarball" -github-release upload \ - --user zyedidia \ - --repo micro \ - --tag nightly \ - --name "micro-$1-src.tar.gz" \ - --file binaries/micro-$1-src.tar.gz - -echo "Uploading vendored zip" -github-release upload \ - --user zyedidia \ - --repo micro \ - --tag nightly \ - --name "micro-$1-src.zip" \ - --file binaries/micro-$1-src.zip +# echo "Uploading vendored tarball" +# github-release upload \ +# --user zyedidia \ +# --repo micro \ +# --tag nightly \ +# --name "micro-$1-src.tar.gz" \ +# --file binaries/micro-$1-src.tar.gz +# +# echo "Uploading vendored zip" +# github-release upload \ +# --user zyedidia \ +# --repo micro \ +# --tag nightly \ +# --name "micro-$1-src.zip" \ +# --file binaries/micro-$1-src.zip diff --git a/tools/pre-release.sh b/tools/pre-release.sh index a7219b28..e26b09e2 100755 --- a/tools/pre-release.sh +++ b/tools/pre-release.sh @@ -47,7 +47,7 @@ github-release upload \ --name "micro-$1-linux32.tar.gz" \ --file binaries/micro-$1-linux32.tar.gz -echo "Uploading Linux Arm binary" +echo "Uploading Linux Arm 32 binary" github-release upload \ --user zyedidia \ --repo micro \ @@ -55,6 +55,14 @@ github-release upload \ --name "micro-$1-linux-arm.tar.gz" \ --file binaries/micro-$1-linux-arm.tar.gz +echo "Uploading Linux Arm 64 binary" +github-release upload \ + --user zyedidia \ + --repo micro \ + --tag $tag \ + --name "micro-$1-linux-arm64.tar.gz" \ + --file binaries/micro-$1-linux-arm64.tar.gz + echo "Uploading FreeBSD 64 binary" github-release upload \ --user zyedidia \ @@ -119,18 +127,18 @@ github-release upload \ --name "micro-$1-win32.zip" \ --file binaries/micro-$1-win32.zip -echo "Uploading vendored tarball" -github-release upload \ - --user zyedidia \ - --repo micro \ - --tag $tag \ - --name "micro-$1-src.tar.gz" \ - --file binaries/micro-$1-src.tar.gz - -echo "Uploading vendored zip" -github-release upload \ - --user zyedidia \ - --repo micro \ - --tag $tag \ - --name "micro-$1-src.zip" \ - --file binaries/micro-$1-src.zip +# echo "Uploading vendored tarball" +# github-release upload \ +# --user zyedidia \ +# --repo micro \ +# --tag $tag \ +# --name "micro-$1-src.tar.gz" \ +# --file binaries/micro-$1-src.tar.gz +# +# echo "Uploading vendored zip" +# github-release upload \ +# --user zyedidia \ +# --repo micro \ +# --tag $tag \ +# --name "micro-$1-src.zip" \ +# --file binaries/micro-$1-src.zip diff --git a/tools/release.sh b/tools/release.sh index 8f39ef6b..853279b5 100755 --- a/tools/release.sh +++ b/tools/release.sh @@ -46,7 +46,7 @@ github-release upload \ --name "micro-$1-linux32.tar.gz" \ --file binaries/micro-$1-linux32.tar.gz -echo "Uploading Linux Arm binary" +echo "Uploading Linux Arm 32 binary" github-release upload \ --user zyedidia \ --repo micro \ @@ -54,6 +54,14 @@ github-release upload \ --name "micro-$1-linux-arm.tar.gz" \ --file binaries/micro-$1-linux-arm.tar.gz +echo "Uploading Linux Arm 64 binary" +github-release upload \ + --user zyedidia \ + --repo micro \ + --tag $tag \ + --name "micro-$1-linux-arm64.tar.gz" \ + --file binaries/micro-$1-linux-arm64.tar.gz + echo "Uploading FreeBSD 64 binary" github-release upload \ --user zyedidia \ @@ -118,19 +126,18 @@ github-release upload \ --name "micro-$1-win32.zip" \ --file binaries/micro-$1-win32.zip -echo "Uploading vendored tarball" -github-release upload \ - --user zyedidia \ - --repo micro \ - --tag $tag \ - --name "micro-$1-src.tar.gz" \ - --file binaries/micro-$1-src.tar.gz - -echo "Uploading vendored zip" - -github-release upload \ - --user zyedidia \ - --repo micro \ - --tag $tag \ - --name "micro-$1-src.zip" \ - --file binaries/micro-$1-src.zip +# echo "Uploading vendored tarball" +# github-release upload \ +# --user zyedidia \ +# --repo micro \ +# --tag $tag \ +# --name "micro-$1-src.tar.gz" \ +# --file binaries/micro-$1-src.tar.gz +# +# echo "Uploading vendored zip" +# github-release upload \ +# --user zyedidia \ +# --repo micro \ +# --tag $tag \ +# --name "micro-$1-src.zip" \ +# --file binaries/micro-$1-src.zip From 42af0816d520335500bb29539c17fde19c3de1e1 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 26 Dec 2019 21:41:19 -0500 Subject: [PATCH 205/231] No patchelf for snap build Ref #1078 --- snapcraft.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 5d7f614c..dc5a7262 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -18,8 +18,8 @@ parts: plugin: nil build-packages: [make] build-snaps: [go] - build: | + build-attributes: [no-patchelf] + override-build: | make build - install: | mkdir $SNAPCRAFT_PART_INSTALL/bin mv ./micro $SNAPCRAFT_PART_INSTALL/bin/ From 96322a6df9f7f18c60ba643f27f420ff1640d396 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 26 Dec 2019 22:03:30 -0500 Subject: [PATCH 206/231] Update makefile and vendor script --- Makefile | 11 +++++------ tools/compile-linux.sh | 4 ---- tools/cross-compile.sh | 4 ---- 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index 74e03cfc..d59695c5 100644 --- a/Makefile +++ b/Makefile @@ -10,32 +10,31 @@ ADDITIONAL_GO_LINKER_FLAGS := $(shell GOOS=$(shell go env GOHOSTOS) \ go run tools/info-plist.go "$(VERSION)") GOBIN ?= $(shell go env GOPATH)/bin GOVARS := -X github.com/zyedidia/micro/internal/util.Version=$(VERSION) -X github.com/zyedidia/micro/internal/util.CommitHash=$(HASH) -X 'github.com/zyedidia/micro/internal/util.CompileDate=$(DATE)' -X github.com/zyedidia/micro/internal/util.Debug=OFF -GOTAGS := osusergo # Builds micro after checking dependencies but without updating the runtime build: - go build -tags $(GOTAGS) -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro + go build -mod=readonly -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro build-dbg: - go build -ldflags "-s -w $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro + go build -mod=readonly -ldflags "-s -w $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro # Builds micro after building the runtime and checking dependencies build-all: runtime build # Builds micro without checking for dependencies build-quick: - go build -tags $(GOTAGS) -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro + go build -mod=readonly -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro # Same as 'build' but installs to $GOBIN afterward install: - go install -tags $(GOTAGS) -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro + go install -mod=readonly -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro # Same as 'build-all' but installs to $GOBIN afterward install-all: runtime install # Same as 'build-quick' but installs to $GOBIN afterward install-quick: - go install -tags $(GOTAGS) -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro + go install -mod=readonly -ldflags "-s -w $(GOVARS) $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro # Builds the runtime runtime: diff --git a/tools/compile-linux.sh b/tools/compile-linux.sh index f2e5498e..fca865dd 100755 --- a/tools/compile-linux.sh +++ b/tools/compile-linux.sh @@ -1,12 +1,8 @@ -# ./vendor-src.sh micro-$1-src cd .. mkdir -p binaries mkdir -p micro-$1 -mv micro-$1-src.tar.gz binaries -mv micro-$1-src.zip binaries - cp LICENSE micro-$1 cp README.md micro-$1 cp LICENSE-THIRD-PARTY micro-$1 diff --git a/tools/cross-compile.sh b/tools/cross-compile.sh index 1cce1a82..ad80af89 100755 --- a/tools/cross-compile.sh +++ b/tools/cross-compile.sh @@ -1,12 +1,8 @@ -# ./vendor-src.sh micro-$1-src cd .. mkdir -p binaries mkdir -p micro-$1 -mv micro-$1-src.tar.gz binaries -mv micro-$1-src.zip binaries - cp LICENSE micro-$1 cp README.md micro-$1 cp LICENSE-THIRD-PARTY micro-$1 From 185d54d664de5258f6ba8db06841cb08287551a5 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 27 Dec 2019 00:06:02 -0500 Subject: [PATCH 207/231] Search and replace fixes --- internal/action/command.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/internal/action/command.go b/internal/action/command.go index 9614df51..2656e1da 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -820,23 +820,23 @@ func (h *BufPane) ReplaceCmd(args []string) { nreplaced := 0 start := h.Buf.Start() - end := h.Buf.End() - if h.Cursor.HasSelection() { - start = h.Cursor.CurSelection[0] - end = h.Cursor.CurSelection[1] - } + // end := h.Buf.End() + // if h.Cursor.HasSelection() { + // start = h.Cursor.CurSelection[0] + // end = h.Cursor.CurSelection[1] + // } if all { - nreplaced = h.Buf.ReplaceRegex(start, end, regex, replace) + nreplaced = h.Buf.ReplaceRegex(start, h.Buf.End(), regex, replace) } else { inRange := func(l buffer.Loc) bool { - return l.GreaterEqual(start) && l.LessThan(end) + return l.GreaterEqual(start) && l.LessEqual(h.Buf.End()) } searchLoc := start searching := true var doReplacement func() doReplacement = func() { - locs, found, err := h.Buf.FindNext(search, start, end, searchLoc, true, !noRegex) + locs, found, err := h.Buf.FindNext(search, start, h.Buf.End(), searchLoc, true, !noRegex) if err != nil { InfoBar.Error(err) return @@ -853,6 +853,7 @@ func (h *BufPane) ReplaceCmd(args []string) { InfoBar.YNPrompt("Perform replacement (y,n,esc)", func(yes, canceled bool) { if !canceled && yes { h.Buf.Replace(locs[0], locs[1], replaceStr) + searchLoc = locs[0] searchLoc.X += utf8.RuneCount(replace) h.Cursor.Loc = searchLoc From b1efabaaeda8aa26bc63acfe613c2a20dc58665e Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 27 Dec 2019 00:43:45 -0500 Subject: [PATCH 208/231] Command binding fix --- internal/action/bufpane.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 5941a509..02b19e36 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -62,6 +62,8 @@ func BufMapKey(k Event, action string) { break } + // TODO: fix problem when complex bindings have these + // characters (escape them?) idx := strings.IndexAny(action, "&|,") a := action if idx >= 0 { @@ -74,7 +76,7 @@ func BufMapKey(k Event, action string) { } var afn func(*BufPane) bool - if strings.HasPrefix(action, "command:") { + if strings.HasPrefix(a, "command:") { a = strings.SplitN(a, ":", 2)[1] afn = CommandAction(a) names = append(names, "") @@ -86,7 +88,7 @@ func BufMapKey(k Event, action string) { a = strings.SplitN(a, ":", 2)[1] afn = LuaAction(a) if afn == nil { - screen.TermMessage("Lua Error:", action, "does not exist") + screen.TermMessage("Lua Error:", a, "does not exist") continue } names = append(names, "") @@ -94,7 +96,7 @@ func BufMapKey(k Event, action string) { afn = f names = append(names, a) } else { - screen.TermMessage("Error:", action, "does not exist") + screen.TermMessage("Error:", a, "does not exist") continue } actionfns = append(actionfns, afn) From 5fba432d7887c0b607b8c444a88e64ca98d8e8e1 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 27 Dec 2019 17:26:03 +0000 Subject: [PATCH 209/231] Use makefile to build for cross compilation --- tools/cross-compile.sh | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/tools/cross-compile.sh b/tools/cross-compile.sh index ad80af89..e80773c9 100755 --- a/tools/cross-compile.sh +++ b/tools/cross-compile.sh @@ -14,55 +14,66 @@ ADDITIONAL_GO_LINKER_FLAGS="$(go run tools/info-plist.go $VERSION)" # Mac echo "OSX 64" -GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE' $ADDITIONAL_GO_LINKER_FLAGS" -o micro-$1/micro ./cmd/micro +GOOS=darwin GOARCH=amd64 make build +mv micro micro-$1 tar -czf micro-$1-osx.tar.gz micro-$1 mv micro-$1-osx.tar.gz binaries # Linux echo "Linux 64" -GOOS=linux GOARCH=amd64 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro +GOOS=linux GOARCH=amd64 make build +mv micro micro-$1 tar -czf micro-$1-linux64.tar.gz micro-$1 mv micro-$1-linux64.tar.gz binaries echo "Linux 32" -GOOS=linux GOARCH=386 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro +GOOS=linux GOARCH=386 make build +mv micro micro-$1 tar -czf micro-$1-linux32.tar.gz micro-$1 mv micro-$1-linux32.tar.gz binaries echo "Linux ARM 32" -GOOS=linux GOARCH=arm go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro +GOOS=linux GOARCH=arm make build +mv micro micro-$1 tar -czf micro-$1-linux-arm.tar.gz micro-$1 mv micro-$1-linux-arm.tar.gz binaries echo "Linux ARM 64" -GOOS=linux GOARCH=arm64 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro +GOOS=linux GOARCH=arm64 make build +mv micro micro-$1 tar -czf micro-$1-linux-arm64.tar.gz micro-$1 mv micro-$1-linux-arm64.tar.gz binaries # NetBSD echo "NetBSD 64" -GOOS=netbsd GOARCH=amd64 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro +GOOS=netbsd GOARCH=amd64 make build +mv micro micro-$1 tar -czf micro-$1-netbsd64.tar.gz micro-$1 mv micro-$1-netbsd64.tar.gz binaries echo "NetBSD 32" -GOOS=netbsd GOARCH=386 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro +GOOS=netbsd GOARCH=386 make build +mv micro micro-$1 tar -czf micro-$1-netbsd32.tar.gz micro-$1 mv micro-$1-netbsd32.tar.gz binaries # OpenBSD echo "OpenBSD 64" -GOOS=openbsd GOARCH=amd64 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro +GOOS=openbsd GOARCH=amd64 make build +mv micro micro-$1 tar -czf micro-$1-openbsd64.tar.gz micro-$1 mv micro-$1-openbsd64.tar.gz binaries echo "OpenBSD 32" -GOOS=openbsd GOARCH=386 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro +GOOS=openbsd GOARCH=386 make build +mv micro micro-$1 tar -czf micro-$1-openbsd32.tar.gz micro-$1 mv micro-$1-openbsd32.tar.gz binaries # FreeBSD echo "FreeBSD 64" -GOOS=freebsd GOARCH=amd64 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro +GOOS=freebsd GOARCH=amd64 make build +mv micro micro-$1 tar -czf micro-$1-freebsd64.tar.gz micro-$1 mv micro-$1-freebsd64.tar.gz binaries echo "FreeBSD 32" -GOOS=freebsd GOARCH=386 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro +GOOS=freebsd GOARCH=386 make build +mv micro micro-$1 tar -czf micro-$1-freebsd32.tar.gz micro-$1 mv micro-$1-freebsd32.tar.gz binaries @@ -70,11 +81,13 @@ rm micro-$1/micro # Windows echo "Windows 64" -GOOS=windows GOARCH=amd64 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro.exe ./cmd/micro +GOOS=windows GOARCH=amd64 make build +mv micro micro-$1 zip -r -q -T micro-$1-win64.zip micro-$1 mv micro-$1-win64.zip binaries echo "Windows 32" -GOOS=windows GOARCH=386 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro.exe ./cmd/micro +GOOS=windows GOARCH=386 make build +mv micro micro-$1 zip -r -q -T micro-$1-win32.zip micro-$1 mv micro-$1-win32.zip binaries From b47cf33c3b9f192c739990e392855d7f4443ac43 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 27 Dec 2019 18:43:47 -0500 Subject: [PATCH 210/231] Update tcell version --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 2fbb2828..c55b02b1 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/zyedidia/glob v0.0.0-20170209203856-dd4023a66dc3 github.com/zyedidia/poller v0.0.0-20170616160828-ab09682913b7 // indirect github.com/zyedidia/pty v2.0.0+incompatible // indirect - github.com/zyedidia/tcell v0.0.0-20191219170756-59b50b23fa9b + github.com/zyedidia/tcell v0.0.0-20191227234059-2c574ec1b972 github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415 golang.org/x/text v0.3.2 gopkg.in/yaml.v2 v2.2.7 diff --git a/go.sum b/go.sum index 32f97087..d0bdad2a 100644 --- a/go.sum +++ b/go.sum @@ -46,6 +46,8 @@ github.com/zyedidia/pty v2.0.0+incompatible h1:Ou5vXL6tvjst+RV8sUFISbuKDnUJPhnpy github.com/zyedidia/pty v2.0.0+incompatible/go.mod h1:4y9l9yJZNxRa7GB/fB+mmDmGkG3CqmzLf4vUxGGotEA= github.com/zyedidia/tcell v0.0.0-20191219170756-59b50b23fa9b h1:cryFENlMxJJrkimVx/CUMFDCxC4vpmey2x3A3tAgTNM= github.com/zyedidia/tcell v0.0.0-20191219170756-59b50b23fa9b/go.mod h1:yXgdp23+aW8OMENYVBvpKoeiBtjaVWJ9HhpPDu6LBfM= +github.com/zyedidia/tcell v0.0.0-20191227234059-2c574ec1b972 h1:tqsPH3tvIF9LQMWQODln09mJEV1ZlwC1qc5dTplj+eI= +github.com/zyedidia/tcell v0.0.0-20191227234059-2c574ec1b972/go.mod h1:yXgdp23+aW8OMENYVBvpKoeiBtjaVWJ9HhpPDu6LBfM= github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415 h1:752dTQ5OatJ9M5ULK2+9lor+nzyZz+LYDo3WGngg3Rc= github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415/go.mod h1:8leT8G0Cm8NoJHdrrKHyR9MirWoF4YW7pZh06B6H+1E= golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= From 629f20720a755050e7345efe6207d78e127881b0 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 27 Dec 2019 20:28:25 -0500 Subject: [PATCH 211/231] Fix add runtime file for local plugins --- internal/config/plugin.go | 1 + internal/config/rtfiles.go | 32 +++++++++++++++++++++------ runtime/plugins/literate/literate.lua | 2 +- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/internal/config/plugin.go b/internal/config/plugin.go index f6599619..8cd933ac 100644 --- a/internal/config/plugin.go +++ b/internal/config/plugin.go @@ -65,6 +65,7 @@ func RunPluginFnBool(fn string, args ...lua.LValue) (bool, error) { } type Plugin struct { + DirName string // name of plugin folder Name string // name of plugin Info *PluginInfo // json file containing info Srcs []RuntimeFile // lua files diff --git a/internal/config/rtfiles.go b/internal/config/rtfiles.go index 2251d661..6c1d6103 100644 --- a/internal/config/rtfiles.go +++ b/internal/config/rtfiles.go @@ -1,6 +1,7 @@ package config import ( + "errors" "io/ioutil" "log" "os" @@ -140,6 +141,7 @@ func InitRuntimeFiles() { if _, err := os.Stat(initlua); !os.IsNotExist(err) { p := new(Plugin) p.Name = "initlua" + p.DirName = "initlua" p.Srcs = append(p.Srcs, realFile(initlua)) Plugins = append(Plugins, p) } @@ -155,6 +157,7 @@ func InitRuntimeFiles() { srcs, _ := ioutil.ReadDir(filepath.Join(plugdir, d.Name())) p := new(Plugin) p.Name = d.Name() + p.DirName = d.Name() for _, f := range srcs { if strings.HasSuffix(f.Name(), ".lua") { p.Srcs = append(p.Srcs, realFile(filepath.Join(plugdir, d.Name(), f.Name()))) @@ -182,6 +185,7 @@ func InitRuntimeFiles() { if srcs, err := AssetDir(filepath.Join(plugdir, d)); err == nil { p := new(Plugin) p.Name = d + p.DirName = d p.Default = true for _, f := range srcs { if strings.HasSuffix(f, ".lua") { @@ -226,28 +230,42 @@ func PluginListRuntimeFiles(fileType RTFiletype) []string { } // PluginAddRuntimeFile adds a file to the runtime files for a plugin -func PluginAddRuntimeFile(plugin string, filetype RTFiletype, filePath string) { - fullpath := filepath.Join(ConfigDir, "plug", plugin, filePath) +func PluginAddRuntimeFile(plugin string, filetype RTFiletype, filePath string) error { + log.Println("PLUGIN ADD:", plugin) + pl := FindPlugin(plugin) + if pl == nil { + return errors.New("Plugin " + plugin + " does not exist") + } + pldir := pl.DirName + log.Println("DIRNAME:", pldir) + fullpath := filepath.Join(ConfigDir, "plug", pldir, filePath) if _, err := os.Stat(fullpath); err == nil { AddRuntimeFile(filetype, realFile(fullpath)) } else { - fullpath = path.Join("runtime", "plugins", plugin, filePath) + fullpath = path.Join("runtime", "plugins", pldir, filePath) AddRuntimeFile(filetype, assetFile(fullpath)) } + return nil } // PluginAddRuntimeFilesFromDirectory adds files from a directory to the runtime files for a plugin -func PluginAddRuntimeFilesFromDirectory(plugin string, filetype RTFiletype, directory, pattern string) { - fullpath := filepath.Join(ConfigDir, "plug", plugin, directory) +func PluginAddRuntimeFilesFromDirectory(plugin string, filetype RTFiletype, directory, pattern string) error { + pl := FindPlugin(plugin) + if pl == nil { + return errors.New("Plugin " + plugin + " does not exist") + } + pldir := pl.DirName + fullpath := filepath.Join(ConfigDir, "plug", pldir, directory) if _, err := os.Stat(fullpath); err == nil { AddRuntimeFilesFromDirectory(filetype, fullpath, pattern) } else { - fullpath = path.Join("runtime", "plugins", plugin, directory) + fullpath = path.Join("runtime", "plugins", pldir, directory) AddRuntimeFilesFromAssets(filetype, fullpath, pattern) } + return nil } // PluginAddRuntimeFileFromMemory adds a file to the runtime files for a plugin from a given string -func PluginAddRuntimeFileFromMemory(plugin string, filetype RTFiletype, filename, data string) { +func PluginAddRuntimeFileFromMemory(filetype RTFiletype, filename, data string) { AddRuntimeFile(filetype, memoryFile{filename, []byte(data)}) } diff --git a/runtime/plugins/literate/literate.lua b/runtime/plugins/literate/literate.lua index 01fcba4b..92aec8cc 100644 --- a/runtime/plugins/literate/literate.lua +++ b/runtime/plugins/literate/literate.lua @@ -48,7 +48,7 @@ function onBufferOpen(buf) syntaxFile = syntaxFile .. " rules: []\n" syntaxFile = syntaxFile .. " - include: " .. codetype .. "\n" - config.AddRuntimeFileFromMemory("literate", config.RTSyntax, "literate.yaml", syntaxFile) + config.AddRuntimeFileFromMemory(config.RTSyntax, "literate.yaml", syntaxFile) config.Reload() buf:UpdateRules() end From 77460397241a1d0490c59db2bc6b8738d76c375a Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 28 Dec 2019 01:56:03 +0000 Subject: [PATCH 212/231] Fix windows compilation in auto-builder --- tools/cross-compile.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/cross-compile.sh b/tools/cross-compile.sh index e80773c9..ec4feac9 100755 --- a/tools/cross-compile.sh +++ b/tools/cross-compile.sh @@ -82,12 +82,12 @@ rm micro-$1/micro # Windows echo "Windows 64" GOOS=windows GOARCH=amd64 make build -mv micro micro-$1 +mv micro.exe micro-$1 zip -r -q -T micro-$1-win64.zip micro-$1 mv micro-$1-win64.zip binaries echo "Windows 32" GOOS=windows GOARCH=386 make build -mv micro micro-$1 +mv micro.exe micro-$1 zip -r -q -T micro-$1-win32.zip micro-$1 mv micro-$1-win32.zip binaries From bd0c172667d5be660fe8bd3047d7565c6dc0349d Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 28 Dec 2019 12:04:43 -0500 Subject: [PATCH 213/231] Improve mouse selection performance --- internal/action/actions.go | 1 - internal/util/profile.go | 8 +++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/internal/action/actions.go b/internal/action/actions.go index 0894681b..dc510080 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -88,7 +88,6 @@ func (h *BufPane) MousePress(e *tcell.EventMouse) bool { h.Cursor.AddWordToSelection() } else { h.Cursor.SetSelectionEnd(h.Cursor.Loc) - h.Cursor.CopySelection("primary") } } diff --git a/internal/util/profile.go b/internal/util/profile.go index d15655dd..04add2c7 100644 --- a/internal/util/profile.go +++ b/internal/util/profile.go @@ -16,14 +16,12 @@ func GetMemStats() string { return fmt.Sprintf("Alloc: %s, Sys: %s, GC: %d, PauseTotalNs: %dns", humanize.Bytes(memstats.Alloc), humanize.Bytes(memstats.Sys), memstats.NumGC, memstats.PauseTotalNs) } -var start time.Time - -func Tic(s string) { +func Tic(s string) time.Time { log.Println("START:", s) - start = time.Now() + return time.Now() } -func Toc() { +func Toc(start time.Time) { end := time.Now() log.Println("END: ElapsedTime in seconds:", end.Sub(start)) } From c2e7fd34a7007cc0f8ca1a958d8599627e560086 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 28 Dec 2019 15:56:56 -0500 Subject: [PATCH 214/231] Fix issues related to tabbar/infobar mouse events Fixes #1440 --- internal/action/bufpane.go | 37 ++++++++++++++++++++++++++----------- internal/action/tab.go | 13 +++++++++---- 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 02b19e36..451fc840 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -280,14 +280,27 @@ func (h *BufPane) HandleEvent(event tcell.Event) { h.DoRuneInsert(e.Rune()) } case *tcell.EventMouse: + cancel := false switch e.Buttons() { + case tcell.Button1: + _, my := e.Position() + if h.Buf.Settings["statusline"].(bool) && my >= h.GetView().Y+h.GetView().Height-1 { + cancel = true + } case tcell.ButtonNone: // Mouse event with no click if !h.mouseReleased { // Mouse was just released - mx, my := e.Position() - mouseLoc := h.LocFromVisual(buffer.Loc{X: mx, Y: my}) + // mx, my := e.Position() + // mouseLoc := h.LocFromVisual(buffer.Loc{X: mx, Y: my}) + + // we could finish the selection based on the release location as described + // below but when the mouse click is within the scroll margin this will + // cause a scroll and selection even for a simple mouse click which is + // not good + // for terminals that don't support mouse motion events, selection via + // the mouse won't work but this is ok // Relocating here isn't really necessary because the cursor will // be in the right place from the last mouse event @@ -295,20 +308,22 @@ func (h *BufPane) HandleEvent(event tcell.Event) { // events, this still allows the user to make selections, except only after they // release the mouse - if !h.doubleClick && !h.tripleClick { - h.Cursor.Loc = mouseLoc - h.Cursor.SetSelectionEnd(h.Cursor.Loc) - h.Cursor.CopySelection("primary") - } + // if !h.doubleClick && !h.tripleClick { + // h.Cursor.Loc = mouseLoc + // h.Cursor.SetSelectionEnd(h.Cursor.Loc) + // h.Cursor.CopySelection("primary") + // } h.mouseReleased = true } } - me := MouseEvent{ - btn: e.Buttons(), - mod: e.Modifiers(), + if !cancel { + me := MouseEvent{ + btn: e.Buttons(), + mod: e.Modifiers(), + } + h.DoMouseEvent(me, e) } - h.DoMouseEvent(me, e) } h.Buf.MergeCursors() diff --git a/internal/action/tab.go b/internal/action/tab.go index 84a07653..ba29a282 100644 --- a/internal/action/tab.go +++ b/internal/action/tab.go @@ -103,10 +103,15 @@ func (t *TabList) HandleEvent(event tcell.Event) { mx, my := e.Position() switch e.Buttons() { case tcell.Button1: - ind := t.LocFromVisual(buffer.Loc{mx, my}) - if ind != -1 { - t.SetActive(ind) - return + if len(t.List) > 1 { + ind := t.LocFromVisual(buffer.Loc{mx, my}) + if ind != -1 { + t.SetActive(ind) + return + } + if my == 0 { + return + } } case tcell.WheelUp: if my == t.Y { From 351c7b099ae6bcfb7e01aa5ffedd2d6318465ea1 Mon Sep 17 00:00:00 2001 From: Camille Date: Sat, 28 Dec 2019 22:38:41 +0100 Subject: [PATCH 215/231] Replace tab with spaces --- runtime/plugins/autoclose/info.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/plugins/autoclose/info.json b/runtime/plugins/autoclose/info.json index c9b72919..7e9fbdc6 100644 --- a/runtime/plugins/autoclose/info.json +++ b/runtime/plugins/autoclose/info.json @@ -2,7 +2,7 @@ "name": "autoclose", "description": "Automatically places closing characters for quotes, parentheses, brackets, etc...", "website": "https://github.com/zyedidia/micro", - "install": "https://github.com/zyedidia/micro", + "install": "https://github.com/zyedidia/micro", "version": "1.0.0", "require": [ "micro >= 2.0.0" From 8663014bbe9d7d5fdead5167bbcdf79c2545f880 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 28 Dec 2019 18:53:51 -0500 Subject: [PATCH 216/231] Add support for syntax headers and update tcell --- .gitignore | 1 + Makefile | 5 +++ go.mod | 2 +- go.sum | 2 + internal/config/rtfiles.go | 12 +++--- runtime/syntax/make_headers.go | 74 ++++++++++++++++++++++++++++++++++ 6 files changed, 90 insertions(+), 6 deletions(-) create mode 100644 runtime/syntax/make_headers.go diff --git a/.gitignore b/.gitignore index cf96d12a..32302828 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ tools/build-version tools/build-date tools/info-plist tools/bindata +*.hdr diff --git a/Makefile b/Makefile index d59695c5..ac1fb45c 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,9 @@ build: build-dbg: go build -mod=readonly -ldflags "-s -w $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro +build-mod: + go build -ldflags "-s -w $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro + # Builds micro after building the runtime and checking dependencies build-all: runtime build @@ -39,6 +42,7 @@ install-quick: # Builds the runtime runtime: git submodule update --init + go run runtime/syntax/make_headers.go runtime/syntax go build -o tools/bindata ./tools/go-bindata tools/bindata -pkg config -nomemcopy -nometadata -o runtime.go runtime/... mv runtime.go internal/config @@ -49,3 +53,4 @@ test: clean: rm -f micro + rm -f runtime/syntax/*.hdr diff --git a/go.mod b/go.mod index c55b02b1..8d1b4fa9 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/zyedidia/glob v0.0.0-20170209203856-dd4023a66dc3 github.com/zyedidia/poller v0.0.0-20170616160828-ab09682913b7 // indirect github.com/zyedidia/pty v2.0.0+incompatible // indirect - github.com/zyedidia/tcell v0.0.0-20191227234059-2c574ec1b972 + github.com/zyedidia/tcell v0.0.0-20191228235154-5b9bbc0d56c7 github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415 golang.org/x/text v0.3.2 gopkg.in/yaml.v2 v2.2.7 diff --git a/go.sum b/go.sum index d0bdad2a..f8a69fce 100644 --- a/go.sum +++ b/go.sum @@ -48,6 +48,8 @@ github.com/zyedidia/tcell v0.0.0-20191219170756-59b50b23fa9b h1:cryFENlMxJJrkimV github.com/zyedidia/tcell v0.0.0-20191219170756-59b50b23fa9b/go.mod h1:yXgdp23+aW8OMENYVBvpKoeiBtjaVWJ9HhpPDu6LBfM= github.com/zyedidia/tcell v0.0.0-20191227234059-2c574ec1b972 h1:tqsPH3tvIF9LQMWQODln09mJEV1ZlwC1qc5dTplj+eI= github.com/zyedidia/tcell v0.0.0-20191227234059-2c574ec1b972/go.mod h1:yXgdp23+aW8OMENYVBvpKoeiBtjaVWJ9HhpPDu6LBfM= +github.com/zyedidia/tcell v0.0.0-20191228235154-5b9bbc0d56c7 h1:Qw5255OIirY741L/Kt5KLitfzfhpk29x+A193zByTS0= +github.com/zyedidia/tcell v0.0.0-20191228235154-5b9bbc0d56c7/go.mod h1:yXgdp23+aW8OMENYVBvpKoeiBtjaVWJ9HhpPDu6LBfM= github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415 h1:752dTQ5OatJ9M5ULK2+9lor+nzyZz+LYDo3WGngg3Rc= github.com/zyedidia/terminal v0.0.0-20180726154117-533c623e2415/go.mod h1:8leT8G0Cm8NoJHdrrKHyR9MirWoF4YW7pZh06B6H+1E= golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/internal/config/rtfiles.go b/internal/config/rtfiles.go index 6c1d6103..ab55eeed 100644 --- a/internal/config/rtfiles.go +++ b/internal/config/rtfiles.go @@ -12,11 +12,12 @@ import ( ) const ( - RTColorscheme = 0 - RTSyntax = 1 - RTHelp = 2 - RTPlugin = 3 - NumTypes = 4 // How many filetypes are there + RTColorscheme = 0 + RTSyntax = 1 + RTHelp = 2 + RTPlugin = 3 + RTSyntaxHeader = 4 + NumTypes = 5 // How many filetypes are there ) type RTFiletype byte @@ -135,6 +136,7 @@ func InitRuntimeFiles() { add(RTColorscheme, "colorschemes", "*.micro") add(RTSyntax, "syntax", "*.yaml") + add(RTSyntaxHeader, "header", "*.hdr") add(RTHelp, "help", "*.md") initlua := filepath.Join(ConfigDir, "init.lua") diff --git a/runtime/syntax/make_headers.go b/runtime/syntax/make_headers.go new file mode 100644 index 00000000..4717a32b --- /dev/null +++ b/runtime/syntax/make_headers.go @@ -0,0 +1,74 @@ +package main + +import ( + "bytes" + "fmt" + "io/ioutil" + "os" + "strings" + "time" + + yaml "gopkg.in/yaml.v2" +) + +type HeaderYaml struct { + FileType string `yaml:"filetype"` + Detect struct { + FNameRgx string `yaml:"filename"` + HeaderRgx string `yaml:"header"` + } `yaml:"detect"` +} + +type Header struct { + FileType string + FNameRgx string + HeaderRgx string +} + +func main() { + if len(os.Args) > 1 { + os.Chdir(os.Args[1]) + } + files, _ := ioutil.ReadDir(".") + for _, f := range files { + fname := f.Name() + if strings.HasSuffix(fname, ".yaml") { + convert(fname[:len(fname)-5]) + } + } +} + +func convert(name string) { + filename := name + ".yaml" + var hdr HeaderYaml + source, err := ioutil.ReadFile(filename) + if err != nil { + panic(err) + } + err = yaml.Unmarshal(source, &hdr) + if err != nil { + panic(err) + } + encode(name, hdr) +} + +func encode(name string, c HeaderYaml) { + f, _ := os.Create(name + ".hdr") + f.WriteString(c.FileType + "\n") + f.WriteString(c.Detect.FNameRgx + "\n") + f.WriteString(c.Detect.HeaderRgx + "\n") + f.Close() +} + +func decode(name string) Header { + start := time.Now() + data, _ := ioutil.ReadFile(name + ".hdr") + strs := bytes.Split(data, []byte{'\n'}) + var hdr Header + hdr.FileType = string(strs[0]) + hdr.FNameRgx = string(strs[1]) + hdr.HeaderRgx = string(strs[2]) + fmt.Printf("took %v\n", time.Since(start)) + + return hdr +} From a61616d79e67a4c9bf267fa10fcd2689d5edd742 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 28 Dec 2019 21:26:22 -0500 Subject: [PATCH 217/231] More efficient loading for default syntax files This change introduces header files for syntax files. The header files only contain the filetype and detection info and can be parsed much faster than parsing a full yaml file. To determine which filetype a file is, only scanning the headers is necessary and afterwards only one yaml file needs to be parsed. Use the make_headers.go file to generate the header files. Micro expects that all default syntax files will have header files and that custom user syntax files may or may not have them. Resolving includes within syntax has not yet been implemented. This optimization improves startup time. Ref #1427 --- Makefile | 14 +- internal/buffer/backup.go | 2 +- internal/buffer/buffer.go | 124 +- internal/config/rtfiles.go | 17 +- internal/config/runtime.go | 2902 +++++++++++++++++++++++++++++++++++- pkg/highlight/parser.go | 106 +- 6 files changed, 3065 insertions(+), 100 deletions(-) diff --git a/Makefile b/Makefile index ac1fb45c..16b78b8c 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,14 @@ .PHONY: runtime -VERSION := $(shell GOOS=$(shell go env GOHOSTOS) GOARCH=$(shell go env GOHOSTARCH) \ +VERSION = $(shell GOOS=$(shell go env GOHOSTOS) GOARCH=$(shell go env GOHOSTARCH) \ go run tools/build-version.go) -HASH := $(shell git rev-parse --short HEAD) -DATE := $(shell GOOS=$(shell go env GOHOSTOS) GOARCH=$(shell go env GOHOSTARCH) \ +HASH = $(shell git rev-parse --short HEAD) +DATE = $(shell GOOS=$(shell go env GOHOSTOS) GOARCH=$(shell go env GOHOSTARCH) \ go run tools/build-date.go) -ADDITIONAL_GO_LINKER_FLAGS := $(shell GOOS=$(shell go env GOHOSTOS) \ - GOARCH=$(shell go env GOHOSTARCH) \ - go run tools/info-plist.go "$(VERSION)") +ADDITIONAL_GO_LINKER_FLAGS = $(shell GOOS=$(shell go env GOHOSTOS) \ + GOARCH=$(shell go env GOHOSTARCH)) GOBIN ?= $(shell go env GOPATH)/bin -GOVARS := -X github.com/zyedidia/micro/internal/util.Version=$(VERSION) -X github.com/zyedidia/micro/internal/util.CommitHash=$(HASH) -X 'github.com/zyedidia/micro/internal/util.CompileDate=$(DATE)' -X github.com/zyedidia/micro/internal/util.Debug=OFF +GOVARS = -X github.com/zyedidia/micro/internal/util.Version=$(VERSION) -X github.com/zyedidia/micro/internal/util.CommitHash=$(HASH) -X 'github.com/zyedidia/micro/internal/util.CompileDate=$(DATE)' -X github.com/zyedidia/micro/internal/util.Debug=OFF # Builds micro after checking dependencies but without updating the runtime build: @@ -53,4 +52,3 @@ test: clean: rm -f micro - rm -f runtime/syntax/*.hdr diff --git a/internal/buffer/backup.go b/internal/buffer/backup.go index 4d39b9f8..2574c7ad 100644 --- a/internal/buffer/backup.go +++ b/internal/buffer/backup.go @@ -36,7 +36,7 @@ func (b *Buffer) Backup(checkTime bool) error { if checkTime { sub := time.Now().Sub(b.lastbackup) - if sub < time.Duration(backup_time)*time.Millisecond { + if sub < time.Duration(backupTime)*time.Millisecond { log.Println("Backup event but not enough time has passed", sub) return nil } diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index 8d418cd3..d332aac6 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -25,7 +25,7 @@ import ( "golang.org/x/text/transform" ) -const backup_time = 8000 +const backupTime = 8000 var ( OpenBuffers []*Buffer @@ -113,7 +113,7 @@ type Buffer struct { Messages []*Message // counts the number of edits - // resets every backup_time edits + // resets every backupTime edits lastbackup time.Time } @@ -453,59 +453,91 @@ func (b *Buffer) UpdateRules() { if !b.Type.Syntax { return } - rehighlight := false - var files []*highlight.File - for _, f := range config.ListRuntimeFiles(config.RTSyntax) { + syntaxFile := "" + ft := b.Settings["filetype"].(string) + var header *highlight.Header + for _, f := range config.ListRuntimeFiles(config.RTSyntaxHeader) { data, err := f.Data() if err != nil { - screen.TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) - } else { - file, err := highlight.ParseFile(data) - if err != nil { - screen.TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) - continue - } - ftdetect, err := highlight.ParseFtDetect(file) - if err != nil { - screen.TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) - continue - } + screen.TermMessage("Error loading syntax header file " + f.Name() + ": " + err.Error()) + continue + } - ft := b.Settings["filetype"].(string) - if (ft == "unknown" || ft == "") && !rehighlight { - if highlight.MatchFiletype(ftdetect, b.Path, b.lines[0].data) { - header := new(highlight.Header) - header.FileType = file.FileType - header.FtDetect = ftdetect - b.SyntaxDef, err = highlight.ParseDef(file, header) - if err != nil { - screen.TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) - continue - } - rehighlight = true - } - } else { - if file.FileType == ft && !rehighlight { - header := new(highlight.Header) - header.FileType = file.FileType - header.FtDetect = ftdetect - b.SyntaxDef, err = highlight.ParseDef(file, header) - if err != nil { - screen.TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) - continue - } - rehighlight = true - } + header, err = highlight.MakeHeader(data) + if err != nil { + screen.TermMessage("Error reading syntax header file", f.Name(), err) + continue + } + + if ft == "unknown" || ft == "" { + if highlight.MatchFiletype(header.FtDetect, b.Path, b.lines[0].data) { + syntaxFile = f.Name() + break } - files = append(files, file) + } else if header.FileType == ft { + syntaxFile = f.Name() + break } } - if b.SyntaxDef != nil { - highlight.ResolveIncludes(b.SyntaxDef, files) + if syntaxFile == "" { + // search for the syntax file in the user's custom syntax files + for _, f := range config.ListRealRuntimeFiles(config.RTSyntax) { + data, err := f.Data() + if err != nil { + screen.TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) + continue + } + + header, err = highlight.MakeHeaderYaml(data) + file, err := highlight.ParseFile(data) + if err != nil { + screen.TermMessage("Error parsing syntax file " + f.Name() + ": " + err.Error()) + continue + } + + if (ft == "unknown" || ft == "" && highlight.MatchFiletype(header.FtDetect, b.Path, b.lines[0].data)) || header.FileType == ft { + syndef, err := highlight.ParseDef(file, header) + if err != nil { + screen.TermMessage("Error parsing syntax file " + f.Name() + ": " + err.Error()) + continue + } + b.SyntaxDef = syndef + break + } + } + } else { + for _, f := range config.ListRuntimeFiles(config.RTSyntax) { + if f.Name() == syntaxFile { + data, err := f.Data() + if err != nil { + screen.TermMessage("Error loading syntax file " + f.Name() + ": " + err.Error()) + continue + } + + file, err := highlight.ParseFile(data) + if err != nil { + screen.TermMessage("Error parsing syntax file " + f.Name() + ": " + err.Error()) + continue + } + + syndef, err := highlight.ParseDef(file, header) + if err != nil { + screen.TermMessage("Error parsing syntax file " + f.Name() + ": " + err.Error()) + continue + } + b.SyntaxDef = syndef + break + } + } } - if b.Highlighter == nil || rehighlight { + // TODO: includes + // if b.SyntaxDef != nil { + // highlight.ResolveIncludes(b.SyntaxDef, files) + // } + + if b.Highlighter == nil || syntaxFile != "" { if b.SyntaxDef != nil { b.Settings["filetype"] = b.SyntaxDef.FileType b.Highlighter = highlight.NewHighlighter(b.SyntaxDef) diff --git a/internal/config/rtfiles.go b/internal/config/rtfiles.go index ab55eeed..a8f16e0c 100644 --- a/internal/config/rtfiles.go +++ b/internal/config/rtfiles.go @@ -32,6 +32,7 @@ type RuntimeFile interface { // allFiles contains all available files, mapped by filetype var allFiles [NumTypes][]RuntimeFile +var realFiles [NumTypes][]RuntimeFile // some file on filesystem type realFile string @@ -85,6 +86,12 @@ func AddRuntimeFile(fileType RTFiletype, file RuntimeFile) { allFiles[fileType] = append(allFiles[fileType], file) } +// AddRealRuntimeFile registers a file for the given filetype +func AddRealRuntimeFile(fileType RTFiletype, file RuntimeFile) { + allFiles[fileType] = append(allFiles[fileType], file) + realFiles[fileType] = append(realFiles[fileType], file) +} + // AddRuntimeFilesFromDirectory registers each file from the given directory for // the filetype which matches the file-pattern func AddRuntimeFilesFromDirectory(fileType RTFiletype, directory, pattern string) { @@ -92,7 +99,7 @@ func AddRuntimeFilesFromDirectory(fileType RTFiletype, directory, pattern string for _, f := range files { if ok, _ := filepath.Match(pattern, f.Name()); !f.IsDir() && ok { fullPath := filepath.Join(directory, f.Name()) - AddRuntimeFile(fileType, realFile(fullPath)) + AddRealRuntimeFile(fileType, realFile(fullPath)) } } } @@ -127,6 +134,12 @@ func ListRuntimeFiles(fileType RTFiletype) []RuntimeFile { return allFiles[fileType] } +// ListRealRuntimeFiles lists all real runtime files (on disk) for a filetype +// these runtime files will be ones defined by the user and loaded from the config directory +func ListRealRuntimeFiles(fileType RTFiletype) []RuntimeFile { + return realFiles[fileType] +} + // InitRuntimeFiles initializes all assets file and the config directory func InitRuntimeFiles() { add := func(fileType RTFiletype, dir, pattern string) { @@ -136,7 +149,7 @@ func InitRuntimeFiles() { add(RTColorscheme, "colorschemes", "*.micro") add(RTSyntax, "syntax", "*.yaml") - add(RTSyntaxHeader, "header", "*.hdr") + add(RTSyntaxHeader, "syntax", "*.hdr") add(RTHelp, "help", "*.md") initlua := filepath.Join(ConfigDir, "init.lua") diff --git a/internal/config/runtime.go b/internal/config/runtime.go index f6e0a961..1eb51554 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -53,133 +53,259 @@ // runtime/plugins/literate/info.json // runtime/plugins/literate/literate.lua // runtime/syntax/LICENSE +// runtime/syntax/PowerShell.hdr // runtime/syntax/PowerShell.yaml // runtime/syntax/README.md +// runtime/syntax/ada.hdr // runtime/syntax/ada.yaml +// runtime/syntax/apacheconf.hdr // runtime/syntax/apacheconf.yaml +// runtime/syntax/arduino.hdr // runtime/syntax/arduino.yaml +// runtime/syntax/asciidoc.hdr // runtime/syntax/asciidoc.yaml +// runtime/syntax/asm.hdr // runtime/syntax/asm.yaml +// runtime/syntax/ats.hdr // runtime/syntax/ats.yaml +// runtime/syntax/awk.hdr // runtime/syntax/awk.yaml +// runtime/syntax/c++.hdr // runtime/syntax/c++.yaml +// runtime/syntax/c.hdr // runtime/syntax/c.yaml +// runtime/syntax/caddyfile.hdr // runtime/syntax/caddyfile.yaml +// runtime/syntax/clojure.hdr // runtime/syntax/clojure.yaml +// runtime/syntax/cmake.hdr // runtime/syntax/cmake.yaml +// runtime/syntax/coffeescript.hdr // runtime/syntax/coffeescript.yaml +// runtime/syntax/colortest.hdr // runtime/syntax/colortest.yaml +// runtime/syntax/conf.hdr // runtime/syntax/conf.yaml +// runtime/syntax/conky.hdr // runtime/syntax/conky.yaml +// runtime/syntax/cpp.hdr // runtime/syntax/cpp.yaml +// runtime/syntax/crontab.hdr // runtime/syntax/crontab.yaml +// runtime/syntax/crystal.hdr // runtime/syntax/crystal.yaml +// runtime/syntax/csharp.hdr // runtime/syntax/csharp.yaml +// runtime/syntax/css.hdr // runtime/syntax/css.yaml +// runtime/syntax/cython.hdr // runtime/syntax/cython.yaml +// runtime/syntax/d.hdr // runtime/syntax/d.yaml +// runtime/syntax/dart.hdr // runtime/syntax/dart.yaml +// runtime/syntax/dockerfile.hdr // runtime/syntax/dockerfile.yaml +// runtime/syntax/dot.hdr // runtime/syntax/dot.yaml +// runtime/syntax/elixir.hdr // runtime/syntax/elixir.yaml +// runtime/syntax/elm.hdr // runtime/syntax/elm.yaml +// runtime/syntax/erb.hdr // runtime/syntax/erb.yaml +// runtime/syntax/erlang.hdr // runtime/syntax/erlang.yaml +// runtime/syntax/fish.hdr // runtime/syntax/fish.yaml +// runtime/syntax/fortran.hdr // runtime/syntax/fortran.yaml +// runtime/syntax/fsharp.hdr // runtime/syntax/fsharp.yaml +// runtime/syntax/gdscript.hdr // runtime/syntax/gdscript.yaml +// runtime/syntax/gentoo-ebuild.hdr // runtime/syntax/gentoo-ebuild.yaml +// runtime/syntax/gentoo-etc-portage.hdr // runtime/syntax/gentoo-etc-portage.yaml +// runtime/syntax/git-commit.hdr // runtime/syntax/git-commit.yaml +// runtime/syntax/git-config.hdr // runtime/syntax/git-config.yaml +// runtime/syntax/git-rebase-todo.hdr // runtime/syntax/git-rebase-todo.yaml +// runtime/syntax/glsl.hdr // runtime/syntax/glsl.yaml +// runtime/syntax/go.hdr // runtime/syntax/go.yaml +// runtime/syntax/godoc.hdr // runtime/syntax/godoc.yaml +// runtime/syntax/golo.hdr // runtime/syntax/golo.yaml +// runtime/syntax/graphql.hdr // runtime/syntax/graphql.yaml +// runtime/syntax/groff.hdr // runtime/syntax/groff.yaml +// runtime/syntax/haml.hdr // runtime/syntax/haml.yaml +// runtime/syntax/haskell.hdr // runtime/syntax/haskell.yaml +// runtime/syntax/html.hdr // runtime/syntax/html.yaml +// runtime/syntax/html4.hdr // runtime/syntax/html4.yaml +// runtime/syntax/html5.hdr // runtime/syntax/html5.yaml +// runtime/syntax/ini.hdr // runtime/syntax/ini.yaml +// runtime/syntax/inputrc.hdr // runtime/syntax/inputrc.yaml +// runtime/syntax/java.hdr // runtime/syntax/java.yaml +// runtime/syntax/javascript.hdr // runtime/syntax/javascript.yaml +// runtime/syntax/jinja2.hdr // runtime/syntax/jinja2.yaml +// runtime/syntax/json.hdr // runtime/syntax/json.yaml +// runtime/syntax/julia.hdr // runtime/syntax/julia.yaml +// runtime/syntax/keymap.hdr // runtime/syntax/keymap.yaml +// runtime/syntax/kickstart.hdr // runtime/syntax/kickstart.yaml +// runtime/syntax/kotlin.hdr // runtime/syntax/kotlin.yaml +// runtime/syntax/ledger.hdr // runtime/syntax/ledger.yaml +// runtime/syntax/lfe.hdr // runtime/syntax/lfe.yaml +// runtime/syntax/lilypond.hdr // runtime/syntax/lilypond.yaml +// runtime/syntax/lisp.hdr // runtime/syntax/lisp.yaml +// runtime/syntax/lua.hdr // runtime/syntax/lua.yaml +// runtime/syntax/mail.hdr // runtime/syntax/mail.yaml +// runtime/syntax/make_headers.go +// runtime/syntax/makefile.hdr // runtime/syntax/makefile.yaml +// runtime/syntax/man.hdr // runtime/syntax/man.yaml +// runtime/syntax/markdown.hdr // runtime/syntax/markdown.yaml +// runtime/syntax/mc.hdr // runtime/syntax/mc.yaml +// runtime/syntax/micro.hdr // runtime/syntax/micro.yaml +// runtime/syntax/mpdconf.hdr // runtime/syntax/mpdconf.yaml +// runtime/syntax/nanorc.hdr // runtime/syntax/nanorc.yaml +// runtime/syntax/nginx.hdr // runtime/syntax/nginx.yaml +// runtime/syntax/nim.hdr // runtime/syntax/nim.yaml +// runtime/syntax/objc.hdr // runtime/syntax/objc.yaml +// runtime/syntax/ocaml.hdr // runtime/syntax/ocaml.yaml +// runtime/syntax/octave.hdr // runtime/syntax/octave.yaml +// runtime/syntax/pascal.hdr // runtime/syntax/pascal.yaml +// runtime/syntax/patch.hdr // runtime/syntax/patch.yaml +// runtime/syntax/peg.hdr // runtime/syntax/peg.yaml +// runtime/syntax/perl.hdr // runtime/syntax/perl.yaml +// runtime/syntax/perl6.hdr // runtime/syntax/perl6.yaml +// runtime/syntax/php.hdr // runtime/syntax/php.yaml +// runtime/syntax/pkg-config.hdr // runtime/syntax/pkg-config.yaml +// runtime/syntax/po.hdr // runtime/syntax/po.yaml +// runtime/syntax/pony.hdr // runtime/syntax/pony.yaml +// runtime/syntax/pov.hdr // runtime/syntax/pov.yaml +// runtime/syntax/privoxy-action.hdr // runtime/syntax/privoxy-action.yaml +// runtime/syntax/privoxy-config.hdr // runtime/syntax/privoxy-config.yaml +// runtime/syntax/privoxy-filter.hdr // runtime/syntax/privoxy-filter.yaml +// runtime/syntax/proto.hdr // runtime/syntax/proto.yaml +// runtime/syntax/puppet.hdr // runtime/syntax/puppet.yaml +// runtime/syntax/python2.hdr // runtime/syntax/python2.yaml +// runtime/syntax/python3.hdr // runtime/syntax/python3.yaml +// runtime/syntax/r.hdr // runtime/syntax/r.yaml +// runtime/syntax/reST.hdr // runtime/syntax/reST.yaml +// runtime/syntax/rpmspec.hdr // runtime/syntax/rpmspec.yaml +// runtime/syntax/ruby.hdr // runtime/syntax/ruby.yaml +// runtime/syntax/rust.hdr // runtime/syntax/rust.yaml +// runtime/syntax/scala.hdr // runtime/syntax/scala.yaml +// runtime/syntax/sed.hdr // runtime/syntax/sed.yaml +// runtime/syntax/sh.hdr // runtime/syntax/sh.yaml +// runtime/syntax/sls.hdr // runtime/syntax/sls.yaml +// runtime/syntax/solidity.hdr // runtime/syntax/solidity.yaml +// runtime/syntax/sql.hdr // runtime/syntax/sql.yaml +// runtime/syntax/stata.hdr // runtime/syntax/stata.yaml +// runtime/syntax/swift.hdr // runtime/syntax/swift.yaml // runtime/syntax/syntax_checker.go // runtime/syntax/syntax_converter.go +// runtime/syntax/systemd.hdr // runtime/syntax/systemd.yaml +// runtime/syntax/tcl.hdr // runtime/syntax/tcl.yaml +// runtime/syntax/tex.hdr // runtime/syntax/tex.yaml +// runtime/syntax/toml.hdr // runtime/syntax/toml.yaml +// runtime/syntax/twig.hdr // runtime/syntax/twig.yaml +// runtime/syntax/typescript.hdr // runtime/syntax/typescript.yaml +// runtime/syntax/vala.hdr // runtime/syntax/vala.yaml +// runtime/syntax/vhdl.hdr // runtime/syntax/vhdl.yaml +// runtime/syntax/vi.hdr // runtime/syntax/vi.yaml +// runtime/syntax/vue.hdr // runtime/syntax/vue.yaml +// runtime/syntax/xml.hdr // runtime/syntax/xml.yaml +// runtime/syntax/xresources.hdr // runtime/syntax/xresources.yaml +// runtime/syntax/yaml.hdr // runtime/syntax/yaml.yaml +// runtime/syntax/yum.hdr // runtime/syntax/yum.yaml +// runtime/syntax/zig.hdr // runtime/syntax/zig.yaml +// runtime/syntax/zsh.hdr // runtime/syntax/zsh.yaml // DO NOT EDIT! @@ -1008,7 +1134,7 @@ func runtimeHelpKeybindingsMd() (*asset, error) { return a, nil } -var _runtimeHelpOptionsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\x5f\x8f\xe4\x36\x72\x7f\x1e\x7d\x8a\xc2\x78\x81\x9d\x76\x7a\x7a\x8c\x3b\x3f\x18\xfd\x72\xf0\x9f\x64\xbd\xb8\xd8\x1b\x9c\xf7\x12\x1f\x72\xc1\x89\x92\x4a\x2d\xde\x50\xa4\x42\x52\xdd\xab\x35\x9c\xcf\x1e\x54\x15\x29\xa9\x7b\x7b\x66\x1c\x20\xe7\x07\xef\xb4\x44\x56\xb1\xfe\xff\xaa\xa8\xcf\xe0\xdd\x10\xb5\xb3\xa1\x28\x7e\xd0\xb5\x77\x10\xa2\xf3\x18\x40\x19\x03\xae\x85\xd8\x21\x8c\x01\x3d\xd4\xce\xb6\xfa\x30\x7a\x45\x8b\x41\x5b\xd0\x31\x5c\x3c\x6c\xb4\xc7\x3a\x3a\x3f\xed\x32\xad\x31\x60\x60\x12\xe5\xab\x9f\xbf\x7b\xf3\xb7\x6f\xdf\xfd\xf8\x2f\x6f\xdf\xfc\xed\xfb\x77\x3f\xfc\xf3\x43\x4f\x0b\x4a\x50\xf2\xfe\x29\x42\xf0\x75\x80\x01\x7d\x41\x6b\x7e\xfe\xee\x0d\x84\x01\xeb\x2d\xe8\xf6\x53\x82\x25\xe8\x00\xd6\x45\x08\x18\xb7\x50\xfe\xcf\xc3\x4e\x68\x66\x46\x3a\xd0\x69\x1a\x62\x58\x2c\x1c\xcf\xce\xfc\x3d\x7a\x04\xe5\x91\x4f\xe4\x44\x2b\x10\x3b\x15\x61\x72\x23\xd4\xca\x12\xed\x7d\x51\x7c\x0e\xa5\x1a\xa3\xd3\xb6\x41\x1b\xcb\x3d\x9c\x3a\xb4\x50\x7b\x54\x51\xdb\x03\x28\xb0\x78\x02\xa3\x2d\x6e\x89\x23\x13\x0b\xaa\x47\x90\xf5\x22\x61\x12\xbb\x00\x80\xc1\xe3\x51\xbb\x31\xf0\x96\x5d\x51\xdc\x34\xd8\xaa\xd1\x44\x38\x2a\x33\xe2\x1e\xca\xe8\x47\x2c\x67\xae\x41\x1d\xb1\xdc\x03\x4b\x05\x27\x6d\x0c\xd0\x13\xa6\x56\x8d\x6d\x8b\x1e\xf0\x88\x7e\x82\xd2\x96\x10\xb0\x76\xb6\x09\x40\xfb\x7a\x15\x75\xad\x8c\x99\x88\xe7\xdd\xa9\x23\x59\x69\x8d\x96\x93\x30\xb3\x6c\x70\x91\x7d\xb3\x03\xb1\xa2\x32\x21\xb1\xfa\x84\x10\xf3\x56\xb6\x81\xff\x1e\x75\x14\x45\x90\xae\xf0\x03\xfd\xd2\xb1\x73\x63\x04\x15\x1e\xb5\x3d\xec\xe0\x1b\x84\x5a\x79\x6c\x47\x23\x0b\xc7\x40\xea\x8a\x9d\x0e\x44\xa9\x45\x15\x47\x8f\x5b\xa8\xb0\x56\xa4\x37\xa2\xd3\xeb\x43\x17\x41\xd5\xb5\x66\xd5\x19\x33\x25\x8e\xd0\x6a\x83\x5b\x70\x47\xf4\x27\xaf\x59\xef\xa7\x4e\x45\x22\x74\x12\xdd\x7a\x84\x0a\x5b\xe7\x71\x07\x6f\xdb\xa7\x44\x24\xe9\xcb\x2f\x4a\x7a\x62\x57\x2a\x25\x32\xe4\x4a\x59\xdf\xd7\xac\xf2\x85\x98\xa4\x52\xf5\xe3\x38\x9c\x1b\xe4\x4c\x4b\xf0\x88\x38\x80\x2c\x0b\xc4\x9d\x03\x6b\x40\x9b\xcc\x15\x76\xf0\x8d\xbc\x24\xae\xe4\x7d\x1c\x80\x0d\x85\xd8\xa5\x17\x3f\x24\x32\x25\xab\x9c\xd6\x7a\xec\xdd\x11\x1b\x51\xe8\xca\x07\x44\xa7\xb5\x71\xe4\xf2\xb5\x41\x65\xcd\xb4\x83\xb7\xb2\xa6\x56\x81\xf5\xa0\x20\x4c\x21\x62\x0f\xb5\x57\xa1\x03\xe7\x41\x25\x31\xf8\xc1\x36\x47\x66\x44\x1b\x99\x5e\xd2\x5d\xe2\x41\x01\x51\xd1\x11\x6a\x32\x03\x85\xd6\x99\xdc\xd5\xc4\x62\x8a\x8d\x91\x0d\xc6\xc1\x94\x6d\x54\x21\xbd\xc2\x46\x47\x6c\x92\xa9\x84\xa1\xf0\x76\x1e\x7a\x65\xc7\x4c\x2a\xa0\xf2\x75\x47\x3b\x5a\xe7\xe5\x14\xac\x0b\xa2\xa6\xed\xea\xc1\x3a\x79\x24\xc5\xb2\xa6\x7a\xd5\xe0\x7a\xe5\xc1\xbb\xd1\x26\xc5\xa9\x73\xb5\xf5\xae\xd1\xad\x26\x81\x6c\xc3\xeb\x8d\x8a\x18\x62\x66\xa0\x03\xf4\x72\x58\x65\xe1\xab\x39\xc8\x9c\x69\xf8\xd4\xa7\xd9\x97\x88\x56\x83\x11\xeb\x18\x40\x89\x5c\x3b\x78\x1b\x89\x40\xa7\x0f\x9d\x99\x58\x77\x7d\x8f\xb6\xc1\x66\x49\x34\x06\x25\xa0\x75\xc8\x41\x01\x68\x55\x65\xb0\xd9\x15\x44\x12\x9e\x4e\x10\x95\x0a\x68\x55\x4f\x09\x22\x89\xaa\x6d\xeb\x2a\xe5\xb7\x10\x3a\x77\x02\x67\xcd\x94\x34\x20\x0b\xb3\x49\xd9\x3a\x6b\x8b\x10\x23\xaf\x28\x8e\x44\x4e\x5e\x34\x1a\x03\x83\x8a\xdd\x13\xe7\x68\x95\x09\xe9\x20\xb5\x33\xce\xd7\xce\x8c\xbd\xa5\xb3\xb4\x22\xce\x92\xa1\x21\x3a\xf8\x62\x0b\x9c\x25\x8c\x81\x46\x87\xc1\xa8\x89\xb4\xc4\x7b\x40\x45\xe2\x58\x00\x27\x7c\x31\x86\xbc\xd9\xc1\xfb\x44\x69\x0c\x9c\x4a\x74\xcb\x4a\x3b\x29\x1b\xf3\xe6\xaf\xbe\x20\xf2\x15\x8a\x96\x29\x85\xb0\x3c\x4c\x4a\x19\x76\x20\xfc\xa0\xfa\xc1\x3c\x17\xd8\x2c\x41\xa8\x3b\x64\x6d\x1a\xa7\x9a\x5c\xa9\xe6\xe7\xab\x48\x25\x7d\xbc\xba\x93\x58\xfd\x4e\xfb\xcd\xc3\x6a\x59\x78\x28\x25\xdb\x94\x3b\x76\x8b\xad\x88\x10\x30\x72\xde\xa2\x14\x74\x30\xae\x52\x86\xcd\x53\x5e\x3b\x53\xfa\x5d\x16\xc5\xcd\x8f\x2e\x4a\x1c\xf1\x69\xf2\xc2\x35\x3b\xb8\x4b\x4f\xb7\x10\x9c\x51\x5e\x7f\xc4\x66\xcb\xbe\x3c\xff\xbc\x8f\xf5\xa6\xb8\xa1\xb0\x20\x7b\x18\x57\xab\x28\x72\xcc\x12\x2c\x79\x38\x76\x38\x71\x04\x61\x5f\x61\xd3\xc8\x3a\xe2\x2d\xa9\xa2\xd2\x56\x71\xf5\xbc\x79\x7f\xa1\x9d\x94\x1f\x02\x1a\xac\x89\x7c\xeb\x5d\xcf\xd9\x2f\x3b\x5c\xc8\x94\x8a\x9b\xcb\x44\x77\xa6\xbe\x75\x48\x4b\x45\xaa\x1d\xc9\x59\x4d\xb3\xfc\x54\x6b\x20\x76\x1e\xb1\xb8\x59\xef\xdd\x17\xc5\xcd\x5f\x52\xf1\xf6\xa8\x1a\x89\x5c\x55\x51\x5d\x62\x4e\xaf\xc3\xb9\xee\xd2\x89\x92\xf9\x4b\xe8\xd0\x0c\x10\xdd\xa0\xeb\xe2\xe6\xae\xe4\x5f\xe9\xd5\x66\x27\x7e\x32\xfa\xe0\x3c\xd5\xee\x72\xbf\x38\x9c\xa4\x0d\x6d\x57\xa6\x92\x85\x64\x6e\xc1\x4f\x0a\x1a\x4d\x49\x07\x6d\x32\x1f\x17\xe6\xd9\xc5\x68\x61\x83\xad\xb6\x94\x1d\xa7\x4f\x5c\x8f\x7c\x9e\x8c\xc2\x45\x74\xf3\x3c\x6c\x40\x5b\xbb\x46\xdb\x43\xb9\x67\x32\xf9\x27\x05\x09\x17\x22\x76\x0d\xca\x39\x62\x14\xd2\xe5\x0e\x7e\x1a\x87\xc1\x79\xb2\x5b\x5e\x3f\x17\x28\xa3\x03\x3d\x57\x11\xba\x18\x87\xb0\x7f\x78\x38\x9d\x4e\xbb\xd3\xef\x77\xce\x1f\x1e\xde\xff\xe9\x21\x6f\x78\x78\x22\x4f\x8c\xb1\xbd\xff\x2a\x1d\xcd\xb5\x16\x4f\x49\x7b\x4f\x96\x50\xd5\x34\x02\xab\x44\xa3\x6e\xf6\xa0\x6b\x72\xaf\xb2\x50\xab\x42\x6c\xb4\x8f\x13\x4b\xce\x0a\x8d\xe8\x7b\x6d\x49\x4a\xb2\xcb\xa3\xb6\x8d\xd4\xe4\x83\xf3\x3a\x76\x7d\x3a\x83\xe0\x56\xb7\xac\x07\xdd\xb2\xf4\x4b\xa1\x58\xaa\x84\xf3\x14\x45\x3b\xf8\x0f\x4a\xfc\x2b\x9e\x62\xea\x6d\x22\xf9\xf7\x31\x44\xa1\xab\x88\x52\xe5\x1c\x55\x65\x28\x33\x99\x52\x3c\x45\x12\x03\xf1\x16\x03\x12\x52\x0c\x6e\x41\x8c\x8c\xc5\x7b\xf5\x48\x74\x2c\xe7\xea\x1d\x91\xcb\x49\x91\xb8\x6f\xa1\x1a\x63\x8e\x3e\x6d\x55\x5d\x13\xae\x16\x1c\x74\x79\xbc\xb6\xdd\x5e\x03\x3f\x1d\xe1\x81\xe4\xb4\xec\xa0\x49\x6c\x75\x50\xda\x86\x08\x4a\x56\x64\x2c\xe5\xf5\x41\x5b\xca\xac\x54\x45\xee\x18\x09\xaf\x30\x09\x8b\x2b\xfb\xa9\xee\x53\x2a\xc5\x66\xb3\x24\x72\x09\xc9\x74\x4a\x3e\xbb\xab\x18\x11\x9b\x49\xde\x79\x0c\x6e\xf4\x35\x4a\xad\x8f\x68\x83\x3e\x62\xda\xbf\xe0\x38\xae\x6d\x94\xdb\x07\x74\x83\x41\x38\x75\x8e\x42\x9e\xfc\x87\x60\x67\x0a\xfa\x4e\x1d\xb5\x3d\xb0\x2d\x33\xc7\xd9\x90\x21\xaa\x38\x86\xe7\x63\x89\x44\x6c\x9d\xef\x55\x7c\xc9\xa7\xd8\x57\xd1\x72\xe4\xac\x5d\x9b\x72\x6a\xc2\x30\x8c\x7b\xc9\x8d\xe1\xcf\x3f\xbe\xfd\xf9\x7c\x07\x1d\x99\x7d\xa6\xfc\xab\x2d\xe1\x8e\xde\xb5\x88\xcd\x06\x18\xba\xab\x00\x8d\x0b\x9f\xec\x20\x82\xe5\x5f\x3d\xef\xa8\x95\xf7\x5a\x1d\x48\x7d\x71\xf4\x16\xfe\x09\x66\x1a\xa4\x3b\x84\x78\x72\x30\xb8\x10\x74\x65\x12\x38\x0e\xe9\x60\xb3\x5e\x73\xc4\x97\xa3\xd5\x1f\x04\x75\x96\x8d\x0b\xa5\x10\x58\x74\x21\x92\x55\x78\x11\xb7\x02\x7e\xb0\xe1\x7e\x83\x3b\x03\x46\x91\x92\x73\xa8\x49\x08\x5c\x01\x89\xce\x86\x89\x27\x1c\x40\x41\x25\x79\x58\x4c\x22\xcd\x14\x79\x46\x3c\xb3\x39\x51\xbb\x80\x01\x6e\x34\x0d\x18\xfd\xc8\x69\xa2\xee\x94\x3d\xe0\x92\x8b\xb3\xa6\x28\xbb\xb6\x73\x0a\x0d\x51\x79\xe9\xdc\x18\xf7\xe3\xe9\xc9\xd4\xc2\x5a\x98\xdd\x20\x4e\x03\x65\xad\x80\x31\xcc\x09\x89\x9e\xcd\x08\xf5\x3c\x78\x76\x97\x65\x9f\x8d\x45\xb5\xf7\xe9\xc2\xcf\xe2\x5e\xd7\x2d\x65\x89\x06\x07\x11\x29\xab\x8b\x03\x90\xe4\xea\xd4\x11\x8b\x1b\xd2\x34\x1f\x57\x1f\xac\xf3\x48\xb8\xbf\xdc\x53\x3f\x4d\x56\xe3\x36\xe0\x5e\xdb\x40\xf1\x14\xf5\x11\x13\xc6\xc6\xab\x11\xb0\xca\xaa\xd2\xc7\xd6\x9d\xf2\x6b\xe9\xd7\xdd\x2d\xbd\x53\x75\x44\x7f\x8d\x12\x94\x70\x17\x06\x55\xe3\x26\x51\x63\x80\x5a\xee\x13\xc8\x0d\x8b\xb9\x52\xe1\xac\x5c\x8c\xae\xcf\xc9\x86\x52\x9e\xa0\x6c\x02\xf5\x18\x82\x3a\xe0\xec\xfb\x83\xa7\xfc\xd0\x7c\x92\x1b\x5e\x04\x58\x4b\x80\x53\xbb\xf6\x69\x77\x2f\xbd\xea\xf2\x7c\x0b\xa7\x4e\x47\x64\x39\x88\x81\x62\x60\x44\x86\x9f\xdc\x28\xec\xc5\xd5\x65\x9e\xb1\xa4\x08\xdd\x2e\x5d\x32\xb5\x6e\xb9\x9a\x59\xfc\x10\x45\xea\xb9\x6d\xb6\x13\x90\x75\xbc\x4c\x67\x00\x78\xdd\x8a\x2d\xd7\x0b\xca\xa8\xc2\x3c\x74\xec\xfb\x15\x81\x42\x83\x14\x75\xd1\xa5\xfe\x10\xa2\x57\xda\x48\x93\x9c\xb7\x73\xd9\xf8\x66\x46\x50\xd2\xec\x2d\x02\x5e\xc8\x97\x49\xea\x76\x31\x0f\x27\x73\x6c\x23\x60\x3f\xc4\xe9\x05\xa7\x79\xc4\xa9\x47\x3b\x96\xfb\x19\xeb\xb3\xd4\xca\xba\xfb\x10\x27\x83\xf0\x88\x13\xd0\x8a\xeb\x56\x0f\xb5\x47\xb4\x3b\x20\xf4\x2b\xaa\x50\x11\xde\xbb\xc3\xc1\xe0\x1f\x71\xfa\x81\xf6\xe9\x00\x15\xb7\x74\x54\x3b\xbf\x36\xf1\xfe\x50\xae\x11\xa2\xf4\x72\x52\x71\x96\x34\xa3\x6d\x56\xec\x92\x69\x76\xf0\xde\xd1\x12\xf2\x46\xde\xb2\x85\xa0\xfb\x41\xfa\xd0\x4c\x99\x98\xfc\xd9\x56\xda\x36\x7f\xc4\xeb\x2e\xb5\x12\xbe\x57\xb1\xee\x2a\xaf\x6a\x0a\xbf\xd1\x36\xc8\x78\x11\xf8\x31\x59\x85\x5f\x49\xf2\x7d\x7d\xb7\x79\xbd\x85\xd7\xbf\xfc\x4a\xff\xff\xcf\xff\x7a\xbd\x74\xf6\x82\x1f\xb9\x06\x32\x84\x54\xb2\xed\x2c\xd8\x9e\xef\x0e\xfb\xc7\x41\x51\x42\x0a\xd2\x92\xc9\x10\x85\xa9\x0d\x68\x25\xe7\x2a\xee\xef\x44\xbd\x8d\x43\xe9\xd7\x38\x51\x6f\x97\x04\x53\x2b\x6b\x1d\xf7\xf1\x04\xef\xd5\x91\xfb\xf7\xb9\x59\x00\x61\x32\x83\x76\x8d\x54\xab\xec\xeb\x44\xe7\x3c\x36\x0d\xa5\x8f\xb9\x59\x3e\xcf\x70\x82\x23\x9e\x22\xa9\x2d\x84\xb1\xee\x40\x41\xd0\x71\xe4\xbc\xf3\x72\x5b\xda\xbb\x91\x53\xe0\xa9\x43\x69\x6d\x5d\xca\x3a\xc0\x6f\x20\x08\xe8\x4d\x58\xee\xec\x59\xf2\x1b\xee\xc3\xb7\x52\x78\x64\x38\x41\xe7\x93\xf0\x56\x66\xc9\xd5\xec\x3b\x8e\x40\x06\x86\x90\x28\xe1\x91\x94\x4f\x91\x55\x77\x19\x9f\x49\xf9\x62\xab\xae\x1a\x59\xaa\x5d\x6e\x98\xa4\x65\x3a\x63\x40\xf0\x8b\xfa\x18\xd7\xca\x4b\x01\x16\x77\xba\xe5\x59\x18\x84\xd0\x91\x1b\x11\xbd\xd4\xe2\x9e\x35\x72\x0b\x9d\x8e\xf2\x86\x1c\x2e\x65\x20\xa9\x44\xb5\xd1\x43\xe5\x94\x97\xe1\xc7\x32\xc6\x48\xbe\xf0\x42\xa7\xe1\xfb\x9c\x69\x4e\xe1\x39\x40\x1f\xbd\xee\xaf\x25\xa5\x40\xd1\x8f\xce\xbc\x10\x4f\x7e\x34\xe8\x57\xa9\x84\xa3\xc9\x8e\x7d\x85\xfe\x05\xf8\x46\xde\x2a\x81\x54\xee\x29\x39\x52\x4f\x9b\x8b\xc9\xaa\x49\xe3\xd4\xa6\x42\x84\xa8\x7b\x5c\x1c\x9f\x1e\xa7\x58\x51\x96\x47\x24\xc3\x18\x41\xc7\x34\x6f\x9c\x13\x3b\x23\x9c\x79\x17\x83\xe6\x17\x24\xa2\x73\x75\x3a\x50\x8f\xbb\x3e\x58\xed\xfa\x9e\xec\x90\x5e\x41\x85\xf1\x84\x68\x79\xb0\xc7\x05\xc9\x36\xe0\xf1\x3e\xcd\xd9\x78\x76\x45\x2a\x7f\x31\x13\x10\xbb\xd1\x36\x2e\x97\xb7\x78\x09\xa5\xb7\x94\xa6\x1c\x77\x23\x1c\xdf\xe4\xba\xa0\xda\x88\x5e\x66\xe1\xc6\x85\x3c\x85\xe5\x31\xb0\xcb\xee\x9b\xde\xf0\xb9\x04\xe8\xa5\x51\x6d\x1e\xa1\xf3\x38\x94\x88\x6b\x7b\x78\x49\x29\xb5\x77\xc6\x08\x38\x58\x26\x44\xf2\x14\x2a\xe5\x5f\x0c\x77\x59\xda\x2b\x7f\xd0\xb6\xdc\x83\xea\xdd\x68\x63\xc6\xe6\xe1\x0a\x60\x0c\xc8\x7d\x42\x9a\x69\x57\x68\xdc\x29\xe3\x74\xf1\x8c\x6b\x27\xfe\xfd\x9a\x59\x18\x10\x9b\x2b\xbc\x88\xb8\x1c\x9c\xb2\xbc\xb3\x98\x7f\x72\x52\xb8\x46\xf6\x77\x89\x6c\xaf\x7c\x1c\x54\x88\x8c\x35\xa5\xc6\x4b\x5c\x51\x57\x6c\x50\x35\xe7\x21\x24\x06\xa5\x0d\xf4\xbc\x1f\x4d\xd4\xd4\x0d\xf1\x29\xfe\x30\xb7\x8a\x12\x93\x31\x52\xe9\xa6\xb3\x0d\x1e\x03\xfa\x23\x9e\xe1\xd6\x35\xa4\x33\x78\x44\x73\x4e\x5b\x71\xed\x1c\xad\x2c\xa3\x22\x60\x5c\xfd\xf8\x42\xfc\xb9\x36\x9e\xbc\x1a\x2e\x65\xa1\x67\x59\x53\x54\x7b\xf8\x16\xc6\x39\x30\x4e\xe6\x14\xad\x8e\x73\x4b\x20\x50\xe0\x05\xd7\x19\x8c\x8e\x02\x21\xb2\x8f\x2b\xe8\x9c\xd7\x1f\x9d\x8d\xca\x00\xbf\x27\xf7\x4e\xcd\xea\x36\x1f\x47\x47\xca\xca\xb9\x85\x65\x0f\xc8\x08\x21\xab\x85\xf7\xfe\xe1\x79\x31\x69\x89\xd7\x87\x2e\x2e\xdc\x8f\x84\xe4\xea\xdf\xce\x5b\xd2\x32\xcf\x61\x79\xa2\x94\x90\xd0\xff\xe5\x14\x0c\x69\xa4\x43\x33\xe5\x1e\x52\xaf\x16\xa2\x27\xf3\xf1\x70\x49\xb3\x71\x73\xc3\x42\x68\xee\x9e\x9a\x4e\xe9\x87\x07\xe5\x33\x5b\x0e\xf2\x15\x42\xfa\x29\xcd\x52\xa5\x22\xeb\x23\x86\x15\xfe\x1c\x8c\xaa\x19\x5b\x05\xdd\x20\x94\xaf\xee\x36\xe5\xbc\x83\x8b\xc9\xb2\x49\xdb\xda\x8c\x0d\x1b\x4f\x1b\x19\x5d\x6f\x57\x33\x91\x2d\x94\x3c\x1b\xda\xf2\x40\x8e\xfe\x71\x43\xa4\x7f\x08\x78\x95\x69\xf2\x81\xf2\x54\xba\x53\x7e\xb1\xe6\x10\xd5\x23\x02\x6a\x2e\xf7\xca\xe6\x24\xe7\xf8\x87\xaa\xe5\x32\x8e\xf2\xda\x49\x79\xce\xe8\x44\xa5\xa5\xe8\x48\x93\xc0\x6b\xb7\x46\x49\x5d\x04\x59\x67\xc8\xc9\xf0\xb9\x7e\x06\x86\xbc\xba\xcb\x22\x6e\xe0\xd5\x5d\x16\x71\x73\xf7\x8a\x7b\xfb\xcd\xf6\xd5\x5d\xed\xcc\x86\xde\xb9\x21\xee\x73\x33\xb9\x61\x5a\x97\xff\x2d\x6b\xc4\xa6\x79\x57\x9e\xbc\x6d\xfe\xd1\x0e\xf0\x94\x88\xa4\xfe\xfd\x19\x2e\xdf\xec\xe5\xea\x81\xde\x50\xf3\xbd\x85\xb3\x55\xdf\xa3\x19\x36\xfb\xab\x42\x46\x5e\xc0\x13\xd8\xb5\x38\x69\x58\xb8\x6e\x23\xe4\xc5\x33\x4d\xe3\xd3\x39\x63\x15\x2d\x63\xdd\x53\xe6\xce\x37\x0e\xd2\x88\x86\x71\x40\x9f\x6f\xc0\xb9\x18\xef\xe0\x1d\x41\xc3\x10\xd3\xed\x59\x98\xdb\x8a\xdb\x30\x36\xee\x16\xaa\x91\xb1\xb1\xb3\xf0\xcd\x4f\xdf\x51\x50\x27\xa8\x77\xdb\x38\x15\x76\xb7\x67\xf8\x37\xbd\xaa\xc7\x10\x5d\xaf\x3f\xa6\x3b\xa7\x3c\xcd\xe2\x0b\x6b\x4a\x1f\xe9\xaa\x95\x33\xbd\x8e\x1d\x84\xf1\x9a\x2c\xc4\x3e\xc9\x32\xd9\xa8\x3e\x94\x7b\x88\xa3\xb7\x01\xe4\x27\x88\xe7\xba\xb6\x7d\x5e\x11\x51\x55\xd4\x34\xf6\xd2\xfe\x5a\x75\xd4\x07\xc2\xe1\x0b\x40\x63\xfd\xe2\x41\x5b\xbe\xdc\x9b\x4b\x9c\x0a\xa9\x3d\x94\xeb\x82\xa8\x2a\xee\x5a\xef\x70\x77\xd8\x49\xaf\xcb\x10\xf5\xcb\x15\x25\x67\x6b\xdc\x9c\x77\x04\x2c\x38\xc3\x4d\x65\xa7\xc8\xed\x91\xcc\x5e\xe9\x5c\x21\x3a\xd9\x9c\x86\xab\x2f\x54\x01\xda\xa1\x3f\x9e\x0d\x69\xa2\xaa\x80\x9e\x71\x03\x97\xae\x65\xae\x10\xf9\x72\x21\x30\xb3\xdc\xf3\xe8\x2e\x1d\x7e\x85\xc3\x59\xd0\xe7\xcf\x81\xbe\x8f\x3a\x1a\xf6\x5b\x9e\xe9\x87\xb9\x05\x91\xe9\x31\x61\x11\x3f\xa3\xf3\xd7\x01\x78\xf9\xdc\x4e\x04\x8c\xd4\x7c\xce\x70\x9c\x4b\x8a\x20\xd1\x17\x54\x30\x06\x1c\xbc\xee\x95\x9f\x4a\xb8\xcb\x4e\xd5\x8e\x86\x9c\xe1\x73\xab\x3f\x6c\x9e\x3c\xd1\xc5\xc8\x32\xe5\x80\x44\x6c\xd5\x27\xe4\x5e\x45\xee\x79\xf8\x9b\x89\x4f\xae\x59\x93\x89\xe7\x8e\x52\xb5\x2d\xd6\x31\x17\x56\x4b\x69\x69\xdd\x7a\xc8\xb4\xe5\xdb\xe8\xcd\xfd\xb7\x1c\x10\xfc\xe7\xbf\x3f\xe3\xb6\xf7\xf7\xf7\x45\xf1\x6f\x66\x3c\xe8\x9c\xe2\xc3\x9e\xef\x9a\x06\x7e\x16\xf8\xc6\x48\x62\x47\xcd\x17\x81\xc9\xe3\x96\x26\xd0\xf9\x55\xdf\x8f\xfd\x0e\xde\x7f\x9f\x73\x7e\xa1\x03\x75\xdc\x69\x6a\x9f\xae\x9b\xd2\x87\x1d\x7c\x91\x9a\xe6\xf3\xc2\x0f\x74\x0c\x68\x28\xce\xbe\xb6\x53\xe6\x43\x70\x93\x0c\x99\xb4\x93\x07\x59\xd9\xc4\x8c\xb3\x57\x77\x1b\x50\x5c\x5e\x8a\xa5\xd1\x61\xd8\xfd\x3d\x38\x0b\xc1\x6d\x89\x14\xb2\x2a\xb7\xe2\x40\xe7\x9f\xd1\x48\xcf\x92\xe8\x17\x19\x57\xcc\x43\xaa\xb7\x8c\xd8\x5f\x2f\xe8\x97\x4b\xe5\x15\x3a\x2c\x2d\x9d\x9e\x1a\x5a\xeb\xc8\x49\x8a\x5e\xd5\x1d\x4f\x65\xd3\x68\x84\x5d\x80\x35\x72\x76\xc8\x24\x0f\xef\x81\xb4\x67\x57\x14\x9f\x7d\x06\x6f\x64\x22\x47\xd6\x95\xce\x33\x6f\x2c\x8a\xbf\x2c\x5f\xdb\xd0\xee\xb0\x10\xcd\x85\x5c\xc6\x79\x66\x22\x8b\xf1\x6e\x33\xed\xe0\x5f\xe5\x0f\xe8\x51\xe5\xef\x76\xc8\x69\xf3\xc0\xf5\xc4\x33\x88\xb5\xa6\x3f\xf9\xbc\xe2\xec\xec\x65\x1a\x19\xa9\x38\x5f\x53\x53\xfc\x14\x29\x1c\xb5\xbd\x3a\xe3\xfd\x29\x71\x5b\xa0\xc6\x7c\xd6\xf4\xa5\xcd\x3c\x70\xa3\x16\x52\x3e\xe0\x11\x39\xe7\x06\xcc\xb2\xe7\xe6\xcf\x43\x8a\xe2\xfd\x72\x21\x29\xf7\xd1\xab\x56\x6d\x35\xd8\xdc\xce\xdf\x2b\x2c\xe3\xe9\xd5\x4a\xd6\x53\xe1\xf8\x43\x90\xf7\x8e\x99\x2e\x87\x4c\x4a\x94\x2f\x96\xca\x80\x91\x1f\x94\xeb\x34\x47\x4f\xcb\x5d\x51\xa4\x8f\x48\xca\x0b\x65\xcd\xa3\x67\xb2\x1c\x7f\x31\x44\xbd\x31\x71\xc9\x5f\x52\x25\x1e\xfc\x35\x07\xd7\xd8\x89\x3f\x37\x60\x8b\x16\x8a\x25\x91\x6f\x50\xf2\xe9\x77\xc0\x5f\x64\x69\xb9\xea\x92\x71\x46\x9a\x9e\x74\x2a\x5c\x16\x84\x04\x63\x48\x75\x72\x8f\x89\x1f\x6a\x1c\x22\xbc\x71\x05\xff\x16\xf5\xcc\x35\x01\xbe\xbc\xbe\xfc\x4f\x63\x35\xc9\x93\x7d\x51\x94\x65\x49\xd2\x15\xbf\x14\x37\xb7\x6d\xdc\x1f\xdc\xed\x1e\x7e\x29\x6e\x6e\x6e\xd7\xac\x6f\xf7\xc0\x09\xb7\xb8\xf9\x75\x2b\xeb\xfc\x58\x4d\xeb\x95\xfa\x23\xde\xee\xe1\x77\x69\xc1\xc5\x5e\xca\x60\xf9\xb1\x2c\xfc\xb2\xf8\x95\x38\x17\xc5\x3b\x4f\xe1\xa5\x8d\xf2\x66\x9a\x75\xcb\x53\x43\x89\x49\x52\xd9\xe5\x31\x3f\xdf\xfd\xa6\x53\x7e\xbe\xf3\xd5\xff\xc3\x11\xff\x37\x00\x00\xff\xff\x06\x5b\xc5\x78\x3e\x28\x00\x00" +var _runtimeHelpOptionsMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\x5f\x8f\xe4\x36\x72\x7f\x1e\x7d\x8a\xc2\x78\x81\x9d\x76\x7a\x7a\x8c\x3b\x3f\x18\xfd\x72\xf0\x9f\x64\xbd\xb8\xd8\x1b\xdc\xee\x25\x3e\xe4\x82\x13\x25\x95\x5a\xbc\xa1\x48\x81\xa4\xba\x57\x6b\x38\x9f\x3d\xa8\x2a\x52\x52\xf7\xf6\xcc\x5c\x80\xc4\x0f\xde\x69\x89\x2c\xd6\xff\xfa\x55\x51\x5f\xc0\xbb\x21\x6a\x67\x43\x51\xfc\xa4\x6b\xef\x20\x44\xe7\x31\x80\x32\x06\x5c\x0b\xb1\x43\x18\x03\x7a\xa8\x9d\x6d\xf5\x61\xf4\x8a\x16\x83\xb6\xa0\x63\xb8\x78\xd8\x68\x8f\x75\x74\x7e\xda\x65\x5a\x63\xc0\xc0\x24\xca\x57\xbf\xfc\xf0\xe6\x6f\xdf\xbf\xfb\xf9\x5f\xde\xbe\xf9\xdb\x8f\xef\x7e\xfa\xe7\x87\x9e\x16\x94\xa0\xe4\xfd\x53\x84\xe0\xdb\x00\x03\xfa\x82\xd6\xfc\xf2\xc3\x1b\x08\x03\xd6\x5b\xd0\xed\xe7\x04\x4b\xd0\x01\xac\x8b\x10\x30\x6e\xa1\xfc\xef\x87\x9d\xd0\xcc\x07\xe9\x40\xdc\x34\x74\x60\xb1\x9c\x78\xc6\xf3\x8f\xe8\x11\x94\x47\xe6\xc8\x89\x56\x20\x76\x2a\xc2\xe4\x46\xa8\x95\x25\xda\xfb\xa2\xf8\x12\x4a\x35\x46\xa7\x6d\x83\x36\x96\x7b\x38\x75\x68\xa1\xf6\xa8\xa2\xb6\x07\x50\x60\xf1\x04\x46\x5b\xdc\xd2\x89\x4c\x2c\xa8\x1e\x41\xd6\x8b\x84\x49\xec\x02\x00\x06\x8f\x47\xed\xc6\xc0\x5b\x76\x45\x71\xd3\x60\xab\x46\x13\xe1\xa8\xcc\x88\x7b\x28\xa3\x1f\xb1\xe4\x53\x2b\x55\x3f\x8e\x43\xb9\x07\x96\x09\x4e\xda\x18\x20\x4e\x7a\x15\x75\xad\x8c\x99\xe0\x11\x71\x00\x59\x16\xc8\x7c\x6c\xc5\x01\x2d\x54\x63\xdb\xa2\x0f\x3b\xf8\x4e\x5e\xd2\xc9\x24\x2a\x5b\xbb\x21\x7b\x5e\xaa\xec\x21\x91\x29\x41\xd9\x86\xd7\x7a\xec\xdd\x11\x1b\x91\x97\xd8\x17\xa2\xa0\x99\x5a\x6d\x1c\xe9\xb7\x36\xa8\xac\x99\x76\xf0\x56\xd6\xd4\x2a\x20\x73\x02\x61\x0a\x11\x7b\xa8\xbd\x0a\x1d\x38\x0f\x2a\x89\xc1\x0f\xb6\xd9\x0d\x22\xda\xc8\xf4\x92\xf3\xa5\x33\x48\xfb\x15\xb1\x50\xbb\x23\x12\xc7\xe7\x72\x57\x13\x8b\x49\xfa\xa7\x4d\xad\x36\xc8\x96\x23\x42\x27\x15\xa0\x42\x7a\x85\x8d\x8e\xd8\x40\x85\xad\x4b\x56\x4e\x67\x3b\x0f\xbd\xb2\x63\x26\x15\x50\xf9\xba\xa3\x1d\xad\xf3\xc2\x05\xeb\x82\xa8\x69\xbb\x7a\xb0\xf6\xd4\xa4\x58\xd6\x54\xaf\x1a\x5c\xaf\x3c\x78\x37\xda\xa4\x38\x75\xae\xb6\xde\x35\xba\xd5\x24\x90\x6d\x78\xbd\x51\x11\x43\xcc\x07\xe8\x00\xbd\x30\xab\x2c\x7c\x03\x01\x6b\x67\x9b\x00\xce\x34\xcc\x35\x53\x64\x35\x12\xad\x06\x23\xd6\x31\x80\x12\xb9\x76\xf0\x36\x12\x81\x4e\x1f\x3a\x33\xb1\xee\xfa\x1e\x6d\x83\xcd\xe2\xd5\x06\xd5\x91\xa8\xeb\x00\x2d\xaa\x38\x7a\x04\xb4\xaa\x32\xd8\xec\x0a\x22\x09\xcf\x79\x63\x40\xab\x7a\x2c\xf7\x59\x54\x6d\x5b\x57\x29\xbf\x85\xd0\xb9\x13\x38\x6b\xa6\xa4\x01\x59\x98\x4d\xca\xd6\x59\x5b\x84\x0e\xf2\x2a\x76\xe8\x45\x4e\x5e\x34\x1a\x03\x83\x8a\xdd\x13\x7c\xb4\xca\x84\xc4\x48\xed\x8c\xf3\xb5\x33\x63\x6f\x89\x97\x56\xc4\x59\xd2\x01\x44\x07\x5f\x6d\x41\x47\x89\x98\x46\x87\xc1\xa8\x89\xb4\xc4\x7b\x40\x45\x3a\xb1\x00\xce\x2e\x62\x0c\x79\xb3\x83\x0f\x89\xd2\x18\xb0\x1d\x0d\xd1\x26\xa5\x9d\x94\x8d\x79\xf3\x37\x5f\x11\xf9\x0a\x45\xcb\xfa\xd0\x89\x3c\x4c\x4a\x19\x76\x20\xfc\xa8\xfa\xc1\x5c\x8d\xed\xaf\x56\x12\x84\xba\x43\xd6\xa6\x71\xaa\xc9\x69\x71\x7e\xbe\x8a\x54\xd2\xc7\xab\x3b\x89\xd5\x1f\xb4\xdf\x3c\xac\x96\x85\x87\x52\x32\x57\xb9\x63\xb7\xd8\x8a\x08\x01\x23\x27\x27\x1d\xa0\x3c\x18\x57\x29\xc3\xe6\x29\xaf\xf1\x94\x7e\x97\x45\x71\xf3\xb3\x8b\x12\x47\xcc\x4d\x5e\xb8\x3e\x0e\xee\xd2\xd3\x2d\x04\x67\x94\xd7\x9f\xb0\xd9\xb2\x2f\xcf\x3f\xef\x63\xbd\x29\x6e\x28\x2c\xc8\x1e\xc6\xd5\x2a\x8a\x1c\xb3\x04\x5b\xa8\xb0\x56\x29\x59\x4e\x1c\x41\xd8\x57\xd8\x34\xb2\x8e\xce\x96\x54\x51\x69\xab\x38\x55\xdf\x7c\xb8\xd0\x4e\xca\x0f\x01\x0d\xd6\x44\xbe\xf5\xae\xe7\xec\x97\x1d\x2e\x64\x4a\xc5\xcd\x65\xa2\x3b\x53\xdf\x3a\xa4\xa5\x88\xd5\x8e\xe4\xac\xa6\x59\xfe\x93\x8e\x1d\xc4\xce\x23\x16\x37\xeb\xbd\xfb\xa2\xb8\xf9\x4b\xaa\x14\x1e\x55\x23\x91\xab\x2a\x37\x46\xe1\xff\x75\x38\xd7\x5d\xe2\x28\x99\xbf\x84\x0e\xcd\x00\xd1\x0d\xba\x2e\x6e\xee\x4a\xfe\x95\x5e\x6d\x76\xe2\x27\xa3\x0f\xce\x53\xa1\x28\xf7\x8b\xc3\x49\xda\xd0\x76\x65\x2a\x59\x48\xe6\x96\x62\xad\xa0\xd1\x94\x74\xd0\x26\xf3\x91\x0f\xdd\xcd\x2e\x46\x0b\x1b\x6c\xb5\xa5\xec\x38\x7d\xe6\x7a\xe4\xf3\x64\x94\x31\x68\x7b\xd8\x3c\x5f\xa3\xd0\xd6\xae\xd1\xf6\x50\xee\x99\x4c\xfe\x49\x41\xc2\x85\x88\x5d\x83\x72\x8e\x18\x85\x74\xb9\x83\xf7\xe3\x30\x38\x4f\x76\xcb\xeb\xe7\x02\x65\x74\xa0\xe7\x2a\x42\x17\xe3\x10\xf6\x0f\x0f\xa7\xd3\x69\x77\xfa\xfd\xce\xf9\xc3\xc3\x87\x3f\x3d\xe4\x0d\x0f\x4f\xe4\x89\x31\xb6\xf7\xdf\x24\xd6\x5c\x6b\xf1\x94\xb4\xf7\x64\x09\x55\x4d\x23\x35\x5c\x34\xea\x66\x0f\xba\x26\xf7\x2a\x0b\xb5\x2a\xc4\x46\xfb\x38\xb1\xe4\xac\xd0\x88\xbe\xd7\x96\xa4\x24\xbb\x3c\x6a\xdb\x48\x4d\x3e\x38\xaf\x63\xd7\x27\x1e\x04\x24\xb9\x65\x3d\xe8\x96\xa5\x5f\x0a\xc5\x52\x25\x9c\xa7\x28\xda\xc1\x7f\x50\xe2\x5f\x9d\x29\xa6\xde\x26\x92\x7f\x1f\x43\x14\xba\x8a\x28\x55\xce\x51\x55\x86\x32\x93\x29\xc5\x53\x24\x31\xd0\xd9\x62\x40\x82\x25\xc1\x2d\xf0\x84\x81\x5f\xaf\x1e\x89\x8e\xe5\x5c\xbd\x23\x72\x39\x29\xd2\xe9\x5b\xa8\xc6\x98\xa3\x4f\x5b\x55\xd7\x04\xe2\x70\x07\x6f\xdb\xcf\xd8\x6b\x5b\xae\xf2\x76\xa5\x7b\x22\xd7\x11\x1e\x48\x4e\xcb\x0e\x9a\xc4\x56\x07\xa5\x6d\x88\xa0\x64\x45\x2a\x1e\xce\xeb\x83\xb6\x94\x59\xa9\x8a\xdc\x31\xec\x5a\x61\x12\x16\x57\xf6\x53\xdd\xa7\x54\x8a\xcd\x66\x49\xe4\x12\x92\x89\x4b\xe6\xdd\x55\x0c\xbf\xcc\x24\xef\x3c\x06\x37\xfa\x1a\xa5\xd6\x47\xb4\x41\x1f\x31\xed\x97\xcc\x2a\xaa\x36\x13\xe7\xf6\x01\xdd\x60\x10\x4e\x9d\xa3\x90\x27\xff\xa9\xd5\x1c\xf4\x9d\x3a\x6a\x7b\x60\x5b\xe6\x13\x67\x43\x86\xa8\xe2\x18\x9e\x8f\x25\x12\xb1\x75\xbe\x57\xf1\x25\x9f\x62\x5f\x45\xcb\x91\xb3\x76\x6d\xca\xa9\x09\xc3\x10\x1b\xec\xc6\xf0\xe7\x9f\xdf\xfe\x72\xbe\x83\x58\x66\x9f\x29\xff\x6a\x4b\xb8\xa3\x77\x2d\x62\xb3\x21\xb5\x7a\x54\x01\x1a\x17\x3e\xdb\x41\x04\xcb\xbf\x7a\xde\x51\x2b\xef\xb5\x3a\x90\xfa\xe2\xe8\x2d\xfc\x13\xcc\x34\x48\x77\x08\xf1\xe4\x60\x70\x21\xe8\xca\xa0\x48\x1a\x12\x63\xb3\x5e\x73\xc4\x97\xa3\xd5\x1f\x05\x75\x96\x8d\x0b\xa5\x10\x58\x74\x21\x92\x55\x78\x11\xb7\x02\x7e\xb0\x81\x3b\xf6\x85\xc9\x8d\x8c\x22\x25\xe7\x00\x7e\xd4\x81\x2b\x20\xd1\xd9\x30\xf1\x84\x03\x28\xa8\x24\x0f\x8b\x49\x04\xb9\x93\x67\xc4\x33\x9b\x13\xb5\x0b\x18\xe0\x46\xd3\x80\xd1\x8f\x9c\x26\xea\x4e\xd9\x03\x2e\xb9\x38\x6b\x8a\xb2\x6b\x3b\xa7\xd0\x10\x95\x97\x36\x81\xe8\x51\xa7\xf0\x54\x6a\x61\x2d\xcc\x6e\x10\xa7\x81\xb2\x56\xc0\x18\xe6\x84\x44\xcf\x66\x84\x7a\x1e\x3c\xbb\xcb\xb2\xcf\xc6\xa2\xda\xfb\x74\xe1\x67\x71\xaf\xeb\x96\xb2\x44\x83\x83\x88\x94\xd5\xc5\x01\x48\x72\x75\xea\x88\xc5\x0d\x69\x9a\xd9\xd5\x07\xeb\x3c\x12\xee\x2f\xf7\xd4\xbc\x91\xd5\xb8\x0d\xb8\xd7\x36\x50\x3c\x45\x7d\xc4\x84\xb1\xf1\x6a\x04\xac\xb2\xaa\x34\x4d\x75\xa7\xfc\x5a\xfa\x75\x2b\x45\xef\x54\x1d\xd1\x5f\xa3\x04\x25\xdc\x85\x41\xd5\xb8\x49\xd4\x18\xa0\x96\xfb\x04\x72\xc3\x62\xae\x54\x38\x2b\x17\xa3\xeb\x73\xb2\xa1\x94\x27\x28\x9b\x40\x3d\x86\xa0\x0e\x38\xfb\xfe\xe0\x29\x3f\x34\x9f\xe5\x86\x17\x01\xd6\x12\xe0\xd4\xae\x7d\xde\x4a\x72\x99\x85\xe5\xf9\x16\x4e\x9d\x8e\xc8\x72\xd0\x01\x8a\x81\x11\x19\x7e\x72\xa3\x1c\x2f\xae\x2e\xcd\xf3\x92\x22\x74\x0b\x39\x16\x80\x5a\xb7\x5c\xcd\x2c\x7e\x8c\x22\x35\x95\x5f\xca\x54\xca\x4e\x40\xd6\xf1\x32\x0a\x00\xe0\x75\xab\x63\xb9\x5e\x50\x46\x95\xc3\x43\xc7\xbe\x5f\x11\x28\x34\x48\x51\x17\x5d\xea\x0f\x21\x7a\xa5\x0d\x49\xb0\x6c\xe7\xb2\xf1\xdd\x8c\xa0\xa4\xd9\x5b\x04\xbc\x90\x2f\x93\xd4\xed\x62\x1e\x4e\xe6\xd8\x46\xc0\x7e\x88\xd3\x0b\x4e\xf3\x88\x53\x8f\x76\x2c\xf7\x33\xd6\x67\xa9\x95\x75\xf7\x21\x4e\x06\xe1\x11\x27\xa0\x15\xd7\xad\x1e\x6a\x8f\x68\x77\x40\xe8\x57\x54\xa1\x22\x7c\x70\x87\x83\xc1\x3f\xe2\xf4\x13\xed\xd3\x01\x2a\x6e\xe9\xa8\x76\x7e\x6b\xe2\xfd\xa1\x5c\x23\x44\xe9\xe5\xa4\xe2\x2c\x69\x46\xdb\xac\xd8\x25\xd3\xec\xe0\x83\xa3\x25\xe4\x8d\xbc\x65\x0b\x41\xf7\x83\xf4\xa1\x99\x32\x1d\xf2\x67\x5b\x69\xdb\xfc\x11\xaf\xbb\xd4\x4a\xf8\x5e\xc5\xba\xab\xbc\xaa\x29\xfc\x46\xdb\x20\xe3\x45\xe0\xc7\x64\x15\x7e\x25\xc9\xf7\xf5\xdd\xe6\xf5\x16\x5e\xff\xfa\x1b\xfd\xff\x3f\xff\xeb\xf5\xd2\xd9\x0b\x7e\xe4\x1a\xc8\x10\x52\xc9\xb6\xb3\x60\x7b\xbe\x3b\xec\x1f\x07\x45\x09\x29\x48\x4b\xa6\x24\x5d\x70\xa0\xa0\x95\x9c\xab\xb8\xbf\x13\xf5\x36\x0e\xa5\x5f\xe3\x44\xbd\x5d\x12\x4c\xad\xac\x75\xdc\xc7\x13\xbc\x57\x47\xee\xdf\xe7\x66\x01\xe4\x90\x19\xb4\x6b\xa4\x5a\x65\x5f\x27\x3a\xe7\xb1\x69\x28\x7d\xcc\xcd\xf2\x79\x86\x13\x1c\xf1\x14\x49\x6d\x21\x8c\x75\x07\x0a\x82\x8e\x23\xe7\x9d\x97\xdb\xd2\xde\x8d\x9c\x02\x4f\x1d\x4a\x6b\xeb\x52\xd6\x01\x7e\x03\x41\x40\x6f\xc2\x72\x67\xcf\x92\xdf\x70\x1f\xbe\x95\xc2\x23\xc3\x09\xe2\x4f\xc2\x5b\x99\x25\x57\xb3\xef\x38\x02\x19\x18\x42\xa2\x84\x47\x52\x3e\x45\x56\xdd\x65\x7c\x26\xe5\x8b\xad\xba\x6a\x64\xa9\x76\xb9\x61\x92\x96\xe9\xec\x00\x82\x5f\xd4\xc7\xb8\x56\x5e\x0a\xb0\xb8\xd3\x2d\xb8\x23\x7a\x08\xa1\x23\x37\x22\x7a\xa9\xc5\x3d\x6b\xe4\x16\x3a\x1d\xe5\x0d\x61\x2e\x65\x20\xa9\x44\xb5\xd1\x43\xe5\x94\x97\xe1\xc7\x32\xc6\x48\xbe\xf0\x42\xa7\xe1\xfb\x9c\x69\x4e\xe1\x39\x40\x1f\xbd\xee\xaf\x25\xa5\x40\xd1\x8f\xce\xbc\x10\x4f\x7e\x34\xe8\x57\xa9\x84\xa3\xc9\x8e\x7d\x85\xfe\x05\xf8\x46\xde\x2a\x81\x54\xee\x29\x39\x52\x4f\x9b\x8b\xc9\xaa\x49\xe3\xd4\xa6\x42\x84\xa8\x7b\x5c\x1c\x9f\x1e\xa7\x58\x51\x96\x47\x24\xc3\x18\x41\x73\xc2\xf2\xb8\x24\x76\x46\x38\xf3\x2e\x06\xcd\x2f\x48\x44\x7c\x75\x3a\x50\x8f\xbb\x66\xac\x76\x7d\x4f\x76\x48\xaf\xa0\xc2\x78\x42\xb4\x3c\xd8\xe3\x82\x64\x1b\xf0\x78\x9f\xe6\x6c\x3c\xbb\x22\x95\xbf\x98\x09\xe8\xb8\xd1\x36\x2e\x97\xb7\x78\x09\xa5\xb7\x94\xa6\x1c\x77\x23\x1c\xdf\xe4\xba\xa0\xda\x88\x5e\x06\xaf\xc6\x05\x4c\x09\x84\x8e\x0a\x2e\xbb\x6f\x7a\xc3\x7c\x09\xd0\xe3\x45\xdb\x79\x5e\xcb\xe3\x50\x22\xae\xed\xe1\x25\xa5\xd4\xde\x19\x23\xe0\x60\x99\x10\xc9\x53\xa8\x94\x7f\x31\xdc\x65\x69\xaf\xfc\x41\xdb\x72\x0f\xaa\x77\xa3\x8d\x19\x9b\x87\x2b\x80\x31\x20\xf7\x09\x47\x91\xa0\x42\xe3\x4e\x19\xa7\x8b\x67\x5c\xe3\xf8\xf7\xeb\xc3\xc2\x80\xd8\x5c\x39\x8b\x88\x0b\xe3\x94\xe5\x9d\xc5\xfc\x93\x93\xc2\x35\xb2\xbf\x4b\x64\x7b\xe5\xe3\xa0\x42\x64\xac\x29\x35\x5e\xe2\x8a\xba\x62\x83\xaa\x39\x0f\x21\x31\x28\x6d\xa0\xe7\xfd\x68\xa2\xa6\x6e\x88\xb9\xf8\xc3\xdc\x2a\x4a\x4c\xc6\x48\xa5\x9b\x78\x1b\x3c\x06\xf4\x47\x3c\xc3\xad\x6b\x48\x67\xf0\x88\xe6\x9c\xb6\xe2\xda\x39\x5a\x59\x46\x45\xc0\xb8\xfa\xf1\x85\xf8\x73\x6d\x3c\x79\x35\x5c\xca\x42\xcf\xb2\xa6\xa8\xf6\xf0\xc8\xdf\x39\x30\x4e\xe6\x14\xad\x8e\x73\x4b\x20\x50\xe0\x05\xd7\x19\x8c\x8e\x02\x21\xb2\x8f\x2b\xe8\x9c\xd7\x9f\x9c\x8d\xca\x00\xbf\x27\xf7\x4e\xcd\xea\x36\xb3\xa3\x23\x65\xe5\xdc\xc2\xb2\x07\x64\x84\x90\xd5\xc2\x7b\xff\xf0\xbc\x98\xb4\xc4\xeb\x43\x17\x97\xd3\x8f\x84\xe4\xea\x7f\xfc\x6c\x49\xcb\x3c\x87\xe5\x89\x52\x42\x42\xff\x1b\x2e\x18\xd2\x48\x87\x66\xca\x3d\xa4\x5e\x2d\x44\x4f\xe6\xe3\xe1\x92\x66\xe3\xe6\x86\x85\xd0\xdc\x3d\x35\x9d\xd2\x0f\x0f\xca\xe7\x63\x39\xc8\x57\x08\xe9\x7d\x9a\xa5\x4a\x45\xd6\x47\x0c\x2b\xfc\x39\x18\x55\x33\xb6\x0a\xba\x41\x28\x5f\xdd\x6d\xca\x79\x07\x17\x93\x65\x93\xb6\xb5\x19\x1b\x36\x9e\x36\x32\xba\xde\xae\x66\x22\x5b\x28\x79\x36\xb4\xe5\x81\x1c\xfd\xe3\x86\x48\xff\x10\xf0\x2a\xd3\xe4\x03\xe5\xa9\x74\xa7\xfc\x62\x7d\x42\x54\x8f\x08\xa8\xb9\xdc\x2b\x9b\x93\x9c\xe3\x1f\xaa\x96\x9b\x1f\xca\x6b\x27\xe5\x39\xa3\x13\x95\x96\xa2\x23\x4d\x02\x59\xad\xf3\xa4\x63\xde\x4d\xbf\x08\xb2\xce\x90\x93\xe1\x73\xfd\x0c\x0c\x79\x75\x97\x45\xdc\xc0\xab\xbb\x2c\xe2\xe6\xee\x15\xf7\xf6\x9b\xed\xab\xbb\xda\x99\x0d\xbd\x73\x43\xdc\xe7\x66\x72\xc3\xb4\x2e\xff\x5b\xd6\x88\x4d\xf3\xae\x3c\x79\xdb\xfc\x7f\x3b\xc0\x53\x22\x92\xfa\xf7\x67\xb8\x7c\xb3\x97\xab\x07\x7a\x43\xcd\xf7\x16\xce\x56\xfd\x88\x66\xd8\xec\xaf\x0a\x19\x79\x01\x4f\x60\xd7\xe2\xa4\x61\xe1\xba\x8d\x90\x17\xcf\x34\x8d\x4f\xe7\x8c\x55\xb4\x8c\x75\x4f\x99\x3b\xdf\x38\x48\x23\x1a\xc6\x01\x7d\xbe\x6e\xe5\x62\xbc\x83\x77\x04\x0d\x43\x4c\xb7\x67\x61\x6e\x2b\x6e\xc3\xd8\xb8\x5b\xa8\x46\xc6\xc6\xce\xc2\x77\xef\x7f\xa0\xa0\x4e\x50\xef\xb6\x71\x2a\xec\x6e\xcf\xf0\x6f\x7a\x55\x8f\x21\xba\x5e\x7f\x4a\x77\x4e\x79\x9a\xc5\xb7\xa3\x94\x3e\x58\xfb\x3c\xb9\x92\x49\x77\x18\xaf\xc9\x42\xc7\x27\x59\x26\x1b\xd5\xc7\x72\x0f\x71\xf4\x36\x80\xfc\x04\xf1\x5c\xd7\xb6\xcf\x2b\x22\xaa\x8a\x9a\xc6\x5e\xda\x5f\xab\x8e\xfa\x40\x38\x7c\x01\x68\xac\x5f\x3c\x68\xcb\x97\x7b\x73\x89\x53\x21\xb5\x87\x72\x5d\x10\x55\xc5\x5d\xeb\x1d\xee\x0e\x3b\xe9\x75\x19\xa2\x7e\xbd\xa2\xe4\x6c\x8d\x9b\xf3\x8e\x80\x05\x67\xb8\xa9\xec\x14\xb9\x3d\x92\xd9\x2b\xf1\x15\xa2\x93\xcd\x69\xb8\xfa\x42\x15\xa0\x1d\xfa\xd3\xd9\x90\x26\xaa\x0a\xe8\x19\x37\x70\xe9\x5a\xe6\x0a\x91\xaf\x17\x02\xf3\x91\x7b\x1e\xdd\x25\xe6\x57\x38\x9c\x05\x7d\x9e\x0f\xf4\x7d\xd4\xd1\xb0\xdf\xf2\x4c\x3f\xcc\x2d\x88\x4c\x8f\x09\x8b\xf8\x19\x9d\xbf\x0e\xc0\xcb\xe7\x76\x22\x60\xa4\xe6\x73\x86\xe3\x5c\x52\x04\x89\xbe\xa0\x82\x31\xe0\xe0\x75\xaf\xfc\x54\xc2\x5d\x76\xaa\x76\x34\xe4\x0c\x5f\x5a\xfd\x71\xf3\x24\x47\x17\x23\xcb\x94\x03\x12\xb1\x55\x9f\x90\x7b\x15\xb9\xe7\xe1\x0b\xfa\xcf\xae\x59\x93\x89\xe7\x8e\x52\xb5\x2d\xd6\x31\x17\x56\x4b\x69\x69\xdd\x7a\xc8\xb4\xe5\xfb\xe8\xcd\xfd\xf7\x1c\x10\xfc\xe7\xbf\x3f\xe3\xb6\xf7\xf7\xf7\x45\xf1\x6f\x66\x3c\xe8\x9c\xe2\xc3\x9e\xef\x9a\x06\x7e\x16\xf8\xc6\x48\x62\x47\xcd\x17\x81\xc9\xe3\x96\x26\xd0\xf9\x55\xdf\x8f\xfd\x0e\x3e\xfc\x98\x73\x7e\xa1\x03\x75\xdc\x69\x6a\x9f\xae\x9b\xd2\x57\x04\x7c\x91\x9a\xe6\xf3\x72\x1e\xe8\x18\xd0\x50\x9c\x7d\x6b\xa7\x7c\x0e\xc1\x4d\x32\x64\xd2\x4e\x1e\x64\x65\x13\x33\xce\x5e\xdd\x6d\x40\x71\x79\x29\x96\x46\x87\x61\xf7\xf7\xe0\x2c\x04\xb7\x25\x52\xc8\xaa\xdc\x8a\x03\x9d\x7f\xb3\x21\x3d\x4b\xa2\x5f\x64\x5c\x31\x0f\xa9\xde\x32\x62\x7f\xbd\xa0\x5f\x2e\x95\x57\xe8\xb0\xb4\xc4\x3d\x35\xb4\xd6\x91\x93\x14\xbd\xaa\x3b\x9e\xca\xa6\xd1\x08\xbb\x00\x6b\xe4\x8c\xc9\x24\x0f\xef\x81\xb4\x67\x57\x14\x5f\x7c\x01\x6f\x64\x22\x47\xd6\x95\xce\x33\x6f\x2c\x8a\xbf\x2c\x9f\x76\xd0\xee\xb0\x10\xcd\x85\x5c\xc6\x79\x66\x22\x8b\xf1\x6e\x33\xed\xe0\x5f\xe5\x0f\xe8\x51\xe5\x8f\x44\xc8\x69\xf3\xc0\xf5\xc4\x33\x88\xb5\xa6\x3f\xfb\xbc\xe2\x8c\xf7\x32\x8d\x8c\x54\x9c\xaf\xa9\x29\x7e\x8a\x14\x8e\xda\x5e\x9d\xf1\xbe\x4f\xa7\x2d\x50\x63\xe6\x55\x87\xf5\x95\x2d\xdf\xc8\x16\x4c\x36\xc9\x39\x37\x60\x96\x3d\x37\x7f\x1e\x52\x14\x1f\x96\x0b\x49\xb9\x8f\x5e\xb5\x6a\xab\xc1\xe6\x76\xfe\x5e\x61\x19\x4f\xaf\x56\xb2\x9e\x0a\xc7\x1f\x82\x7c\x70\x7c\xe8\xc2\x64\x52\xa2\x7c\x1e\x53\x06\x8c\xfc\xa0\x5c\xa7\x39\x7a\x5a\xee\x8a\x22\x7d\x44\x52\x5e\x28\x6b\x1e\x3d\x93\xe5\x94\x09\x8e\x7b\x63\x3a\x25\x7f\xb6\x93\xce\xe0\xaf\x39\xb8\xc6\x4e\xfc\xb9\x01\x5b\xb4\x50\x2c\x89\x7c\x83\x92\xb9\xdf\x01\x7f\xfe\xa3\xe5\xaa\x4b\xc6\x19\x69\x7a\xd2\xa9\x70\x59\x10\x12\x8c\x21\xd5\xc9\x3d\x26\x7e\xac\x71\x88\xf0\xc6\x15\xfc\x5b\xd4\x33\xd7\x04\xf8\xfa\xfa\xf2\x3f\x8d\xd5\x24\x4f\xf6\x45\x51\x96\x25\x49\x57\xfc\x5a\xdc\xdc\xb6\x71\x7f\x70\xb7\x7b\xf8\xb5\xb8\xb9\xb9\x5d\x1f\x7d\xbb\x07\x4e\xb8\xc5\xcd\x6f\x5b\x59\xe7\xc7\x6a\x5a\xaf\xd4\x9f\xf0\x76\x0f\xbf\x4b\x0b\x2e\xf6\x52\x06\xcb\x8f\x65\xe1\xd7\xc5\x6f\x74\x72\x51\xbc\xf3\x14\x5e\xda\x28\x6f\xa6\x59\xb7\x3c\x35\x94\x98\x24\x95\x5d\xb2\xf9\xe5\xee\x1f\xe2\xf2\xcb\x9d\xaf\xfe\x0f\x58\xfc\x9f\x00\x00\x00\xff\xff\x76\xf4\x4a\xef\xab\x26\x00\x00" func runtimeHelpOptionsMdBytes() ([]byte, error) { return bindataRead( @@ -1268,7 +1394,7 @@ func runtimePluginsLiterateInfoJson() (*asset, error) { return a, nil } -var _runtimePluginsLiterateLiterateLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x55\x4d\x8f\xe2\x38\x10\xbd\xf3\x2b\x4a\xde\x5d\x75\xb2\x9d\x64\xc5\x1e\x91\x22\x65\xf7\xd0\xa7\xfd\x12\xbd\x73\x02\x1a\x99\xb8\x02\x16\x8e\x1d\xd9\x95\x61\x50\xd3\xff\x7d\xe4\x38\x84\x34\x6a\x69\xa0\x73\x89\xab\xfc\xea\xbd\x2a\x97\x3f\x94\x29\xb9\x82\xd2\xe8\x4a\x6e\x21\x07\x59\x37\xc6\x52\xc4\x6a\x59\x5a\xf3\x5b\x70\xb3\x78\x32\xa9\x5a\x5d\x92\x34\x1a\x1c\x71\x4b\xee\x20\x69\x17\x39\xb2\x49\xb0\xe3\x09\x00\x58\xa4\xd6\x7a\x80\x95\x7a\x9b\xb9\x76\xd3\x01\xa6\x49\xef\x50\xa8\xa3\x00\x8e\xf3\xbc\x1b\x4c\x50\x8b\x11\x33\x6a\x31\xe2\x45\x2d\x9e\xc9\x8e\x89\x83\x27\xcf\x1f\x1e\xc0\xd8\x6b\x99\x74\xa4\xd2\x87\xc6\x79\x1e\x46\x57\x3a\xae\x51\x92\xa2\x80\x4f\xc0\x61\xd3\x89\x40\x58\x08\x87\x4d\x02\x95\x44\x25\x1c\xe4\xde\xf2\x5a\x6c\xc6\x12\x78\x7d\x1b\xc1\x1a\x4e\x84\x56\x7b\x48\xd0\xad\x8c\xad\x39\x45\x2c\x5a\xbc\xfc\xe2\x56\x8f\x31\x1b\x31\x07\xc8\x6c\xeb\x73\xed\x03\x13\x38\xa7\x13\x95\x71\xaf\xb7\xf8\x29\xfc\x1f\xa7\x2b\xc8\xa1\xf4\xf5\x86\xf8\xbe\xfe\x30\x7b\x55\x8c\xd1\x7f\xb6\x55\x85\xf6\xdf\x06\x75\xb4\x69\xab\x10\x21\x2b\xd0\x86\x2e\x2b\xba\x69\xab\xec\x3f\x4e\xbb\x04\x58\xa6\x24\xb1\x18\x68\x87\xba\x83\x5e\x04\x3a\xb3\x63\xbf\xd4\x59\x1a\x81\x74\x6c\x10\x72\x60\xad\xde\x6b\x73\xd0\xac\x9b\xae\x8c\x05\x99\x4f\x93\x4d\x5b\xcd\xfe\x92\x1a\xdd\x3f\x6d\x1d\xc5\x20\xcc\x40\x1a\x08\x94\xd4\x3e\xf8\x0c\x8b\x64\x3a\x8d\x07\x88\xac\xc6\xdb\xc9\x43\x13\x60\x85\xd7\x5c\x7b\xd1\xeb\x34\xfd\x37\x4a\x28\xf4\xb1\x8f\x02\x16\x2f\x7e\x5f\xbd\x83\x6e\x2c\xf2\xfd\xe0\xf1\x85\x7d\x50\xa0\x3b\x6a\xe2\xdf\x9e\xa4\xea\x4a\x0c\xb5\xbd\xf3\x8d\x8c\x2c\x03\x56\x49\xd5\xe9\xcf\x40\x49\x42\xcb\x09\x53\xe6\x27\x86\xbc\x3c\x68\xa9\x7f\x4c\x24\x90\xb0\xa4\xd9\x2d\xd0\x6e\xbd\xa5\x42\xcd\x6b\x9c\xc1\x92\x2d\x97\xcb\xa5\x6f\xe3\xcf\xcb\x9b\x94\x6c\xab\xd0\xdd\x2c\x94\x82\xd4\xa5\x6a\x45\xa7\x54\x73\xbb\x17\xe6\xa0\x6f\x13\x0a\xe1\xae\xc1\x52\x72\xe5\xc3\x5f\xa2\xc2\x9d\x0a\x92\xa4\xf0\x74\x69\xab\x1f\xd6\x35\x6a\xea\xad\x5e\xef\x54\x94\x3b\xae\xb7\xc3\x7f\xed\xf7\xff\x27\x85\xa3\x82\x0b\xb1\x2e\x9d\x3b\x15\xe6\x2b\xda\x83\x95\x84\xc1\x2c\x8d\x32\xd6\x95\x3b\xac\x43\x1e\x8d\x54\x68\x4f\x05\x5a\x6b\xec\x3a\x1c\xe2\x53\xb1\x31\x66\x7f\x97\xb4\xc0\x8a\xb7\xea\xf6\x6e\x86\x5b\x81\x5b\xf2\xc9\xa6\x69\x9a\xfd\x7a\x63\x2f\x47\xbb\xb9\x0f\xbd\x33\x50\xc9\x5a\x52\xba\xb5\xa6\x6d\x3c\x81\x14\xa8\x49\x56\x12\xed\x7d\x34\xf7\xed\xa9\xf3\x77\xe9\xd1\xbd\x91\xef\x16\xac\xf0\x07\xe0\xf5\xbe\x84\xaf\x16\xce\x33\xbc\x7d\x8e\x21\x94\x0e\x8b\xd5\xfd\xd5\x0f\x27\xeb\xe3\x2b\x63\x12\x2e\x38\xff\xe4\x66\x7f\x08\x31\x6f\x35\xc9\x1a\x3d\xd7\x93\x35\xf5\xdf\x58\x1b\x7b\x8c\xd8\xf9\xde\x61\xc9\x19\x3b\xff\xff\xb9\x53\x4d\x60\x98\xcc\x8e\xbc\x56\xfe\x0d\x1a\xd2\x89\xc7\xec\x73\x54\x86\x8b\x28\xf8\xfc\xdd\xfc\xa5\x11\x9c\x70\xee\x4b\x8b\xe2\xee\x89\xf9\x1e\x00\x00\xff\xff\x27\x3a\xf6\x67\x18\x08\x00\x00" +var _runtimePluginsLiterateLiterateLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x55\x4d\x8f\xe2\x38\x10\xbd\xf3\x2b\x4a\xde\x5d\x75\xb2\x9d\x64\xc5\x1e\x91\x22\x65\xe6\xd0\xa7\xf9\x12\x3d\x73\x02\x1a\x99\xb8\x02\x16\x8e\x1d\xd9\x95\x61\x50\xd3\xff\x7d\xe4\x38\x40\x1a\xb5\x34\xd0\xb9\xc4\x55\x7e\xf5\x5e\x95\xcb\x1f\xca\x94\x5c\x41\x69\x74\x25\xd7\x90\x83\xac\x1b\x63\x29\x62\xb5\x2c\xad\xf9\x2f\xb8\x59\x3c\x1a\x55\xad\x2e\x49\x1a\x0d\x8e\xb8\x25\xb7\x93\xb4\x89\x1c\xd9\x24\xd8\xf1\x08\x00\x2c\x52\x6b\x3d\xc0\x4a\xbd\xce\x5c\xbb\xea\x00\xe3\xa4\x77\x28\xd4\x51\x00\xc7\x79\xde\x0d\x46\xa8\xc5\x80\x19\xb5\x18\xf0\xa2\x16\x8f\x64\x87\xc4\xc1\x93\xe7\x77\x77\x60\xec\xa5\x4c\x3a\x50\xe9\x43\xe3\x3c\x0f\xa3\x0b\x1d\xd7\x28\x49\x51\xc0\x27\xe0\xb0\xe9\x44\x20\x2c\x84\xc3\x26\x81\x4a\xa2\x12\x0e\x72\x6f\x79\x2d\x36\x61\x09\x3c\xbf\x0c\x60\x0d\x27\x42\xab\x3d\x24\xe8\x56\xc6\xd6\x9c\x22\x16\xcd\x9e\xfe\x71\x8b\xfb\x98\x0d\x98\x03\x64\xb2\xf6\xb9\xf6\x81\x09\x1c\xd3\x89\xca\xb8\xd7\x9b\xfd\x15\xfe\xf7\xe3\x05\xe4\x50\xfa\x7a\x43\x7c\x5f\x7f\x98\xbd\x28\xc6\xe8\x8f\x6d\x55\xa1\xfd\xda\xa0\x8e\x56\x6d\x15\x22\x64\x05\xda\xd0\x79\x45\x57\x6d\x95\x7d\xe3\xb4\x49\x80\x65\x4a\x12\x8b\x81\x36\xa8\x3b\xe8\x59\xa0\x33\x3b\xf6\x73\x9d\xa5\x11\x48\xfb\x06\x21\x07\xd6\xea\xad\x36\x3b\xcd\xba\xe9\xca\x58\x90\xf9\x38\x59\xb5\xd5\xe4\x93\xd4\xe8\xbe\xb4\x75\x14\x83\x30\x27\xd2\x40\xa0\xa4\xf6\xc1\x47\x58\x24\xd3\x71\x7c\x82\xc8\x6a\xb8\x9d\x3c\x34\x01\x56\x78\xcd\xa5\x17\xbd\x4c\xd3\x7f\x83\x84\x42\x1f\xfb\x28\x60\xf1\xec\xff\xc5\x2b\xe8\xca\x22\xdf\x9e\x3c\xbe\xb0\x37\x0a\x74\x7b\x4d\xfc\xd7\x83\x54\x5d\x89\xa1\xb6\x57\xbe\x81\x91\x65\xc0\x2a\xa9\x3a\xfd\x09\x28\x49\x68\x39\x61\xca\xfc\xc4\x29\x2f\x0f\x9a\xeb\x3f\x13\x09\x24\x2c\x69\x72\x0d\xb4\x5b\x6f\xa9\x50\xf3\x1a\x27\x30\x67\xf3\xf9\x7c\xee\xdb\xf8\xf7\xfc\x2a\x25\xdb\x2a\x74\x57\x0b\xa5\x20\x75\xa9\x5a\xd1\x29\xd5\xdc\x6e\x85\xd9\xe9\xeb\x84\x42\xb8\x6b\xb0\x94\x5c\xf9\xf0\xa7\xa8\x70\x87\x82\x24\x29\x3c\x9c\xdb\xea\x87\x75\x8d\x9a\x7a\xab\xd7\x3b\x14\xe5\x86\xeb\xf5\xe9\xbf\xf4\xfb\xff\x9d\xc2\x51\xc1\x85\x58\x96\xce\x1d\x0a\xf3\x13\xed\xce\x4a\xc2\x60\x96\x46\x19\xeb\xca\x0d\xd6\x21\x8f\x46\x2a\xb4\x87\x02\xad\x35\x76\x19\x0e\xf1\xa1\x58\x19\xb3\xbd\x49\x5a\x60\xc5\x5b\x75\x7d\x37\xc3\xad\xc0\x2d\xf9\x64\xd3\x34\xcd\xfe\xbd\xb2\x97\x83\xdd\xdc\x87\xde\x18\xa8\x64\x2d\x29\x5d\x5b\xd3\x36\x9e\x40\x0a\xd4\x24\x2b\x89\xf6\x36\x9a\xdb\xf6\xd4\xf1\x3b\xf7\xe8\xd6\xc8\x57\x0b\x56\xf8\x03\xf0\x7c\x5b\xc2\x17\x0b\xe7\x19\x5e\xde\xc7\x10\x4a\x87\xd9\xe2\xf6\xea\x4f\x27\xeb\xed\x2b\x63\x14\x2e\x38\xff\xe4\x66\x1f\x84\x98\xb6\x9a\x64\x8d\x9e\xeb\xc1\x9a\xfa\x33\xd6\xc6\xee\xa3\x7e\x7e\xfa\xfd\xb1\x53\x4a\x80\x1d\x2f\xa2\x6c\xcf\x6b\xe5\xdf\x9d\x53\x0a\xf1\x90\x71\x8a\xca\x70\x11\x05\x9f\xbf\x8f\x7f\x34\x82\x13\x4e\x7d\x39\x51\xdc\x3d\x2b\xbf\x03\x00\x00\xff\xff\x1e\xba\xd6\x49\x0c\x08\x00\x00" func runtimePluginsLiterateLiterateLuaBytes() ([]byte, error) { return bindataRead( @@ -1308,6 +1434,26 @@ func runtimeSyntaxLicense() (*asset, error) { return a, nil } +var _runtimeSyntaxPowershellHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\xc8\x2f\x4f\x2d\x2a\xce\x48\xcd\xc9\xe1\x8a\xd1\x2b\x28\xd6\x30\xac\xc9\x35\xac\x49\x31\xd4\x54\xe1\xe2\x02\x04\x00\x00\xff\xff\xa5\x59\x84\xcc\x1b\x00\x00\x00" + +func runtimeSyntaxPowershellHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPowershellHdr, + "runtime/syntax/PowerShell.hdr", + ) +} + +func runtimeSyntaxPowershellHdr() (*asset, error) { + bytes, err := runtimeSyntaxPowershellHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/PowerShell.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPowershellYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x58\x6f\x73\xdb\xb8\xd1\x7f\xaf\x4f\x81\x93\xf2\x3c\x91\x62\x4b\x4e\x3a\x9d\xce\x1c\x27\x8d\xcf\x91\xed\xd4\xad\x5d\x7b\x4c\xab\xc9\x54\xd4\x64\x40\x72\x25\xa2\x02\x01\x1e\xb0\xb4\xac\xcb\xa6\x9f\xbd\x03\x90\x92\x68\x49\x76\x3c\x37\x7d\x53\xcf\x98\x20\x17\xbb\x8b\xdf\x2e\xb0\x7f\xa0\x0e\xbb\xd1\x0b\x30\x61\x06\x52\x32\xbb\x54\xc8\x1f\x58\x26\x66\x99\x14\xb3\x0c\x85\x9a\xb1\xa9\x90\xc0\xa6\xda\xb0\x5c\x24\x46\xb3\x3e\xcb\x10\x0b\x1b\x1c\x1d\xf9\xef\x3e\xa4\x02\xb5\x19\xcc\x04\x66\x65\x3c\x10\xfa\xa8\xb5\x4f\x23\xf2\x39\x28\x36\x35\x3a\x0f\xd6\xf2\xb5\x48\xa2\xf3\xa3\x8d\xc0\xd1\x99\xd7\x17\x7a\xb1\x56\xcb\x2d\x8e\xcb\x02\x02\x56\x38\x16\xeb\x58\x5a\xad\x14\x10\x12\x0c\x5a\x8c\x31\x0f\x4f\xf1\x1c\x02\xd6\x8e\xa2\x41\x61\xbb\xef\x28\x7f\x47\xe9\xbb\xde\xab\xb6\x9f\xef\x64\xc0\x53\x30\x01\x6b\xb7\x5b\x2d\x53\x4a\xb0\x95\x5c\x87\xf5\x59\xa2\xf3\x1c\x14\x0e\x62\xa9\x93\x79\xc0\x36\x7f\x1d\xf6\xd1\x91\xd8\xb0\x62\xd8\x11\x48\x75\xd2\x64\x77\x93\xa7\x3a\x79\x92\x5d\x0a\x05\xc1\x63\xf6\x4b\xa1\xe0\x49\x7e\x9b\x41\xcc\xd5\x2c\x68\xf0\x87\x15\xc9\xcb\xb5\x1a\x02\xca\x22\x57\xf8\x18\x8c\x9f\x1c\xd6\x53\x3b\xbc\x83\x58\x6b\x19\xec\xe5\x65\x5d\x34\x25\x1c\xb2\x29\x97\x16\x7a\xbb\x92\x42\x21\x98\x42\x4b\x8e\x42\xab\x60\x77\x5e\x95\x79\xec\x5c\xbd\x4f\xb3\x2a\xa5\xdc\xa3\xd2\x16\x90\x08\x2e\x87\x19\x37\x7b\x14\x5a\x34\x62\xcb\x0f\x9e\xf2\x14\xe7\x20\x79\x4e\xcf\xa0\x34\xb5\xe1\x1d\x36\x32\x62\x97\xad\x54\x22\xd1\x29\x04\x1b\x07\x8b\x14\x14\x8a\xa9\x68\x5a\x55\x6b\x38\x91\x56\xb3\xd2\x42\xea\x83\x63\x5a\xaa\xc4\x79\xc5\xee\x11\x1d\x24\x92\x5b\x1b\xfc\x2e\xd1\x9c\x27\x46\x07\xfb\x66\xee\x9d\xa5\xeb\x89\xc2\x40\x61\xb6\x4f\x65\x35\x79\x53\x4d\x81\xb5\xda\x6c\xf3\x0f\x4e\x21\x2e\x67\x17\x0d\x2b\x7f\xc0\xbf\xe7\x68\xde\x65\xc0\x3a\x3f\x31\x8e\x0c\x33\x60\x31\xcc\x84\x52\x2e\x71\xe8\x29\xe3\x55\xf6\xc0\xcc\x4d\x82\x94\xd6\xb3\x68\xcb\x16\x8e\x62\x13\x23\x0a\x64\xd5\xa9\x32\x80\x60\x18\x7a\xbf\x6c\xcc\xaa\x8f\xc7\x3e\xb3\xc2\x6a\x8a\x75\x67\x52\xc7\x5c\x92\xd4\x09\x97\x54\x18\x71\xcf\x11\xa8\xd2\x4d\xa5\x15\x6a\x46\x0b\x6d\xe6\x53\xa9\x17\xbd\x86\x62\xe4\x08\x2e\xd8\xb6\x55\xbb\x23\x56\x4f\x59\xf6\x37\x58\x2e\xb4\x49\xed\xae\xd8\x20\x2e\x85\xc4\xaf\xa2\x11\x06\x9b\xb9\x14\x12\xc9\x4d\x15\x25\x55\x72\xd8\x10\x9e\xd3\x99\x03\xf2\xa0\x09\xe5\x0a\x90\xef\xe1\x33\x60\xc1\xdc\x43\x1a\xac\xf8\x6e\x6b\xc2\x46\xf9\x46\x6a\x99\xc7\x5a\x6e\x7d\x0e\x62\xc3\x93\x39\xa0\x6d\xee\xe3\xb7\xef\xdd\xde\x78\xc2\xb8\x4a\x99\xd5\x39\xa0\xc8\xc1\xb2\xf7\x1f\xb6\x45\x75\x01\x86\xa3\x7e\x14\xe6\xd7\x35\xcd\x6e\x33\x23\x9f\xed\x04\xce\xb9\x36\x2c\xc3\x5c\x32\xe4\x33\x7b\xc8\x78\xae\xdd\x61\xc1\xcc\x6d\x7f\x26\xd4\xac\x01\xde\xa5\xfe\x47\x1f\x83\x44\x4b\x09\x55\xb8\x34\x02\x6a\xb8\xa1\xb2\x2e\x37\x86\x2f\x0f\x59\xc6\x6d\x86\x3c\x96\x8d\x44\x56\x69\x70\x4f\xbb\x9d\xbe\x87\x77\x8e\xca\xba\xc3\x8f\x5a\xcb\x43\x36\x74\x09\xe9\x90\x01\x26\x83\x2d\xf1\x79\xe5\xe1\xad\x74\x7e\x31\x65\x4b\x5d\xb2\x85\x4b\x75\x7c\x75\x6a\x37\x75\xd4\xc7\x79\x2d\x69\x99\x14\x73\x60\xaf\xeb\x93\xfa\xfa\xb1\x7a\x8b\xda\xf0\xd9\x76\xb5\x08\x2b\x2a\xab\x41\x0a\x85\x87\xac\xf4\xcf\x2a\xb3\xad\x90\xd6\xba\x86\x2e\xdf\xf8\xf7\x7d\x69\xa8\xed\x47\x76\x30\x3e\xe9\xff\x93\xf7\x7f\x7b\xdb\xff\x79\x72\xc0\xde\x74\xbb\x41\xaf\x49\x1b\x4c\x0e\x7a\xc7\xed\xa7\x95\x74\x57\x69\xab\xd7\x3d\x0e\xba\xe3\x71\x60\x0b\x9e\x40\x30\x99\x34\xd5\x36\xc8\x6f\x7a\xbd\xf6\x0a\xdf\x3f\xc0\xc4\xb6\xd1\x13\xb0\x9b\x45\x98\xb1\x3f\x0d\xde\x0e\xfe\xb0\xb3\xa0\x5b\xea\x24\x4d\xe9\xa4\x28\x8c\xbe\x07\x3a\xb1\x16\x0c\xd2\x47\x9e\xcc\xcb\x82\x7c\x99\xa6\x8f\xa5\x90\x29\x0d\x33\x48\xe6\x85\x16\x0a\x69\x28\x81\x1b\x1a\x4a\x6d\x81\x86\x3a\x2f\xb8\xa9\x46\x09\x58\xbd\x18\xb0\x96\x86\x5a\x4d\x85\xc9\xdd\xa8\x20\x41\x37\xde\x3b\xdd\xf5\x78\x6e\x74\xbe\x7a\xbf\xd3\x34\xd4\xc5\xb2\x37\xee\x3f\xb2\x6f\xd7\x3f\x0e\xae\xcf\xa9\x74\x0a\x6a\x49\xa7\x50\x48\xbd\xa4\x53\x61\xdd\x49\x74\x63\x52\x2f\x76\x2a\x6c\xae\x4b\x85\xe4\x1a\x1e\x3a\x53\x7e\xfe\xcc\xa5\x42\x3a\x7b\x70\x94\x87\x82\xab\xd4\x0d\xda\x20\x9d\x0b\x95\xd2\xb9\x36\x39\x47\xfa\x04\x48\x9f\x0c\x57\xee\xa9\xcb\x82\xfe\x22\x52\x78\x19\xb0\x8b\xdc\x2b\xbb\x50\x02\x05\x97\xe2\x37\xa0\x0b\x57\xf9\xa4\xa4\x0b\x75\xaf\xe7\x40\x7f\xd5\x42\xd1\xa5\xc8\x05\xd2\xa5\x73\xec\x15\x70\x5b\x1a\xa0\x2b\x30\x33\xa0\x2b\x8f\xf7\xca\xed\xc2\xdf\x61\x41\xd7\x05\x28\xba\x2e\x50\xe4\x4e\xd3\x75\x89\x74\xe3\x92\xed\x8d\x2e\xe8\xc6\x68\xd7\xa1\xd1\x4d\x19\x4b\x61\x33\xba\x29\x6d\xf6\x32\x88\xb7\xc0\x53\xba\x85\x04\xc4\x3d\xd0\x2d\xa4\x9a\x6e\x61\x26\xac\x73\xcb\x2d\xe4\xda\x13\x5d\xbb\x47\xb7\x50\x70\xe1\x88\xbf\x96\x60\x91\x5c\x06\xf4\x4f\x87\xe5\x16\xac\x96\x9e\xd5\x22\x37\x9e\x8c\xda\xf8\xef\xd2\x8b\x3a\x63\x5f\x86\x27\xe4\xf7\x40\x21\x70\x93\x64\x14\x82\x4b\x32\x14\x82\x4a\x29\x04\xa4\x30\xd3\x0b\x0a\xe7\xa2\xa0\xb0\x90\x02\x29\xf4\x8b\x85\x08\x05\x85\xa8\x0b\x0a\xcb\xd8\x79\x32\x2c\x6d\xe1\x45\x16\x02\x9d\x96\xa5\x4a\xe8\xce\x61\xbe\x33\x3c\x79\x21\x8c\x91\xf2\x3d\x2a\x8d\x54\xaa\x69\xa4\x44\xbd\x6d\x23\x55\x53\x8b\xda\xe1\x23\x55\xd4\x2e\x1f\x29\xb3\x72\xdc\xa8\x48\x5d\x49\x1c\x59\xa0\xcf\x5c\x20\x7d\xe6\x0e\xc7\x67\x23\xf0\x05\xab\xfb\x3e\xc3\xf5\xd6\xaf\xba\xc7\xa2\xd7\xed\x7e\xaa\xaa\xed\xa5\xaf\xb6\x37\x75\xb5\x0d\xab\x6a\x3b\xf2\xd5\xf6\xf3\xaa\xda\x8e\x83\x49\xef\xb8\xa1\xfd\x4d\xbb\xb5\xca\x00\x67\x0f\x3e\x04\x5d\x3d\x74\xf5\xc6\xa7\xe4\x7a\xe9\xaa\xdd\x6f\x47\xd1\x38\x8a\xe2\x6e\x2d\x3e\x39\xa0\xf5\xdb\xd8\x23\xed\x45\x51\x1c\x45\x93\x75\x4e\x79\x54\x56\x1f\xd5\xf7\xb6\xd3\xc3\xa5\xe0\x96\xb8\x25\xdf\x9f\x50\x6c\x80\xcf\x29\xf1\x8e\x48\xb4\x42\xa1\x4a\xa0\x94\x23\xa7\x14\xa6\xbc\x94\xe8\x46\xa1\x80\x52\x4d\xe9\x52\xf1\x5c\x24\x05\x37\x3c\x77\xab\xb6\x9f\x58\x02\xa4\x05\x72\x0f\x31\x25\xb7\xdf\xe0\xc2\x78\x2a\x14\x97\x72\x49\x53\x6d\xdc\x3f\xf0\x24\x5b\x8d\x7d\x1d\xff\xcb\xed\x99\xcb\x80\x24\xa6\x24\x14\x09\xe5\xae\x0a\x55\xef\xf2\xdc\x52\x0e\x8b\x94\x20\xc9\x83\xa2\xba\x5d\x23\x03\x58\x1a\x45\xb6\x3a\x68\x98\x19\xbd\x20\x34\xbc\x20\x34\x4b\x2a\x15\x0a\x59\x37\x44\xf7\xdc\xd0\x22\x03\x03\xd5\x73\x85\x64\x91\x09\x09\xd5\xba\xad\xc7\x4d\xd6\xb6\x77\x57\x6d\x99\x47\x53\x3b\x73\xe5\x46\x67\x77\x43\xc9\x9e\x9e\xa3\xdd\x8d\xa2\x6f\x14\x45\xdf\x7b\xed\xe7\x58\xba\x14\x45\xbd\xe7\x59\xc6\x14\x45\x93\x6d\x96\x4d\x87\xd2\x1e\x47\x51\xff\xe0\xe8\xcd\x9f\xdf\x7f\x38\x0e\x7e\xfa\xf7\xff\xfd\x3f\x4d\x9e\xe1\x6d\xd4\xb0\xfe\xa4\xab\x80\xe0\x57\x9a\x21\xcd\x80\x24\x92\x04\x72\x75\x9b\x94\x46\x3f\xe6\xfe\xec\x28\x8d\xf9\xfa\x10\x71\xa1\xac\xa3\xac\xdf\x85\x72\x9f\x42\x91\x81\x42\xf2\x04\x48\x58\x12\x56\x69\xec\x35\xd6\x5a\xfb\x7a\x75\x57\x5a\x39\x79\xeb\xc2\xd6\xf6\x07\xfe\x95\xbf\xa2\x91\xbf\xa1\x91\xbf\x53\x35\x8e\xc9\xce\x45\xcc\x6f\x8f\x8b\x97\xc1\xd7\xc9\x01\xbd\x7d\x18\x9f\xf4\xcf\x79\x7f\xfa\xb6\xff\xb3\xff\x8e\xc7\x6f\xfb\xef\xbe\x4e\x0e\x7a\xe3\xf3\xcb\xc9\x71\x73\xdf\x1b\xf1\x79\xa5\x53\x68\x5e\xbb\x76\xaf\x67\xad\x55\xa3\xe2\xb3\xad\x5b\xb5\xdd\x5e\xd3\x40\xa5\x5b\x94\x8e\x9d\x8b\xc2\x63\x8b\xa2\xc1\x86\xdc\xb8\x9b\xaf\xfe\x9e\xb8\x27\x56\xa2\xdd\x71\x8c\x6a\x6a\x26\xf4\x9a\xa2\x28\x6a\xbb\x47\xd4\x6b\xbf\x5c\xbe\xdc\x38\x63\xf2\xed\x8f\xdf\xd7\xa6\x9f\x98\x59\xe9\x42\xed\xf7\x18\xfe\x7a\xdb\xee\xd7\xff\x33\x66\xef\xfc\x20\xb1\xfe\x39\x62\xd7\xcc\xce\xb6\x99\xaf\x7e\x60\x0f\xea\x54\xbb\x80\xbd\xbb\x3e\xbd\xa6\x2f\x5f\xbe\xd0\xf9\xc5\x97\xab\x33\xfa\x38\xfa\xd4\x0b\x8e\xd7\x10\x76\x7f\x73\x79\x06\xc3\xfb\x1d\x10\x9d\x0f\xff\x15\x14\x67\x79\x0c\x69\x0a\x29\x1b\x76\x6a\x0c\x75\x49\xd8\xc5\xf0\xcb\xbe\x83\xfe\xcb\x0f\x50\x08\x95\xc8\x32\x75\x25\x2e\xb1\x19\x37\xc5\x7a\xe1\x3b\x9d\xea\xd6\x8b\x90\xfe\x27\x00\x00\xff\xff\x5e\xc4\xe1\x21\xb4\x13\x00\x00" func runtimeSyntaxPowershellYamlBytes() ([]byte, error) { @@ -1348,6 +1494,26 @@ func runtimeSyntaxReadmeMd() (*asset, error) { return a, nil } +var _runtimeSyntaxAdaHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x4c\x49\xe4\xd2\x88\xd1\x4b\x4c\x29\x56\xa9\x01\x51\x49\x10\x2a\x51\x45\x93\x8b\x0b\x10\x00\x00\xff\xff\x47\x29\x8c\x94\x1c\x00\x00\x00" + +func runtimeSyntaxAdaHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxAdaHdr, + "runtime/syntax/ada.hdr", + ) +} + +func runtimeSyntaxAdaHdr() (*asset, error) { + bytes, err := runtimeSyntaxAdaHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/ada.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxAdaYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x54\x6d\x6f\xdb\x36\x10\xfe\xee\x5f\xa1\x79\xdd\x62\x27\x8b\xd6\xaf\xd3\x5e\x0a\xc3\x73\xd2\x00\x59\x3c\x38\xea\x10\xc0\x34\x86\x93\x78\x96\x89\x48\xa4\x76\xa4\x92\x78\x7d\xfa\xdf\x07\xca\x2f\x6b\xb3\xb5\x31\x60\x9d\xee\xed\x79\x8e\xd4\xdd\xad\x4d\xcd\x61\xdb\x72\x96\x90\xa6\xc1\x40\x73\xe0\x32\x64\x83\x24\x49\x92\xe8\xb2\xd4\x70\x96\x0c\x47\x4a\xa5\xa4\xfd\x2b\xf4\xb2\xd8\x4b\x7a\x35\x1e\x0e\x06\xd2\xd5\xec\xb3\x24\x49\xfa\xa4\xaf\x93\x79\xcb\x42\xc1\x89\xef\xf5\xf3\xc4\x6f\x9b\xc2\xd5\xa9\xdb\x9b\xb3\x64\xb4\x4c\xb3\x1f\xbf\x3b\x3b\xc5\xcf\x5f\xbd\x51\xea\x9b\x15\x7e\xc2\x2f\xf8\x1e\xe7\xf8\x76\xfc\x69\x4a\x21\x54\xde\x73\xf0\x59\x32\x5c\x8e\xc6\xef\x3f\xac\xa0\xd4\x12\x4a\xad\x86\x7b\xaa\x7b\xde\x3e\x3a\xd1\xa9\xb0\x67\x79\x60\x7d\x48\x0f\x14\xb8\x61\x1b\x8e\x8e\x2c\x51\xc5\x88\x0a\x27\x01\x54\xf8\xf8\x0f\x42\x65\x00\x95\x25\xb7\x3b\xe1\x3d\xa8\x36\xe4\x59\x83\xea\x1a\x64\x35\x48\x84\xb6\xa0\x80\x82\x2b\x63\x51\x38\xbd\x45\x49\x9e\xc7\xaa\xf8\x32\x53\xe9\xac\x0f\x64\x03\x34\x97\x35\x09\x43\x73\x4d\xdb\xf8\x0c\x04\x6d\x2a\x13\x3c\xb4\x03\xd7\x9e\xe3\xc3\xac\xc1\x56\x83\x6d\x90\x2d\xf8\x29\x96\x64\x9c\x05\x3f\x99\x80\xb5\x13\xac\x3b\x5b\x46\xcb\x8b\xbc\x15\x5b\x16\x53\xa2\x72\xc1\xc1\xac\x61\x2c\x8c\x0d\x2c\x6b\x2a\x19\xc6\xa3\x36\x8d\x09\xac\x51\x3b\xd7\xa2\x71\x1a\x96\x1f\x61\x5d\x80\xed\xea\x1a\x6e\x0d\x27\x70\x61\xc3\xe2\xe1\xba\x00\xf7\xc0\x22\x46\x1b\x5b\xbd\xc8\xdc\x52\x79\x4f\x15\xa3\x15\xaa\x1a\x42\x2b\xe6\x81\x42\x54\x5d\xc9\xba\x93\xfe\x2d\x76\x16\x6b\x08\x19\xcf\x10\xb2\x15\x43\xb8\x74\xa2\x21\xdc\x40\xfa\x5e\xf3\x10\x0e\x9d\x58\x08\xff\xd5\x71\xf7\xf2\x55\x0b\x3f\xb0\x78\x86\xe7\x9a\xcb\x00\xcf\x2d\x49\x64\xf6\xae\x61\xf8\xae\x88\xbd\x0d\xbf\xb5\xe5\x46\x9c\x35\x7f\xb3\x46\xa0\xaa\xea\x85\xbf\x47\x60\x69\x8c\x8d\xf1\x61\xc3\x16\x7d\x70\x67\x83\xa9\x5f\xe4\xed\x3c\xe3\x31\xe6\x3c\x6e\x4c\xcd\x78\x34\x61\x83\x27\x27\x31\x6f\xdf\x9c\xd3\x7d\x13\xec\x71\x0e\x3d\x91\x16\xce\xd5\x3d\x44\xbe\x78\x37\xc3\xc5\xe4\xfa\x76\x36\x7e\x1e\x63\xbb\xa6\xe0\x7e\x54\x5e\x9f\xff\xb0\x3a\xdb\xf9\xf7\xb8\xb7\xc1\x09\x55\x9c\xe4\xdb\x96\x0f\x33\x16\x0b\x4f\xfd\xce\xd1\x63\x5f\xdd\xe4\xb3\xcb\xd9\x02\x37\x93\xfc\xdd\x62\x72\x8d\xdf\xe7\xb7\x57\xf9\xd5\x1f\x33\x5c\x5c\xcf\x27\x39\xa6\x6f\x27\x8b\xc9\x34\x9f\x2d\x70\x9b\x2f\xae\x6e\x2e\xff\x3d\xee\x7f\x90\xae\xe7\x37\x97\x7f\x1e\xe0\x6e\xdf\xce\x17\xf9\x51\xeb\x5d\x3b\xc0\x9d\xa3\x7f\x3f\x60\xed\xca\x9d\x6e\x28\x4e\x1a\xcb\xf3\x23\xfa\x20\xc6\x56\x69\xb9\x21\xc9\x12\x75\x92\xaa\x93\xc1\xf1\x80\xd1\xf3\xff\xf1\xbb\xcd\x14\x7f\x3e\x90\x84\x2c\x51\xc3\xa3\x85\xad\xfe\x44\xf7\xf7\xa6\xcd\x12\xa5\xd2\xa3\x65\xb7\xaa\x8e\xea\x73\x86\x96\x4b\x43\xf5\xb4\xaf\x68\xa4\xd4\x6b\x28\xa5\x14\x94\x0a\x50\xca\x42\x29\x81\x52\x43\x28\x75\x32\xfe\x1c\x44\x3f\x6d\xad\xab\x29\x8e\x6b\xe4\x56\xa3\xe5\x32\xab\x84\xda\x4d\xb6\x5a\x9d\xaa\xcf\x26\x76\xd6\x94\x4e\xc7\x1b\x57\x9d\x7a\xbf\x5c\x66\x4f\xfd\x9a\xc8\x56\xab\xb3\x0f\x83\x8f\xbf\xfe\xb5\xb1\x9c\x4c\x5d\x13\x3b\xf2\x78\x45\xbd\x96\xd6\xc6\xc6\x5d\x7d\x7e\x9e\x9e\x0e\x3f\x4e\xc9\x9d\x76\x87\xaf\xeb\xb4\x8b\xeb\x3c\x9f\xff\x3a\xc7\xdd\xdd\x1d\x2e\xae\xee\x7e\x9b\x8d\xb3\x37\xc3\xc1\x3f\x01\x00\x00\xff\xff\x2d\xaf\x92\x76\x09\x06\x00\x00" func runtimeSyntaxAdaYamlBytes() ([]byte, error) { @@ -1368,6 +1534,26 @@ func runtimeSyntaxAdaYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxApacheconfHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x14\xc6\x31\x0a\x80\x30\x0c\x05\xd0\xbd\x47\x71\xc8\x89\xfe\x12\xd2\x48\x1c\x6a\x03\xf9\x08\x42\x0e\x2f\x6e\x4f\x53\x2d\xdc\xf6\x7d\x8e\x20\x73\x42\x7e\xf7\xba\x96\x43\xf8\xa6\x57\x3f\xb1\x8b\x05\x99\xc0\xd1\x90\xa0\x9a\x79\xd5\x18\x5f\x00\x00\x00\xff\xff\x8c\x53\x79\x6f\x3c\x00\x00\x00" + +func runtimeSyntaxApacheconfHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxApacheconfHdr, + "runtime/syntax/apacheconf.hdr", + ) +} + +func runtimeSyntaxApacheconfHdr() (*asset, error) { + bytes, err := runtimeSyntaxApacheconfHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/apacheconf.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxApacheconfYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x59\xdb\x8e\xe3\x36\xd2\xbe\xef\xa7\x68\xf4\xff\x5f\x6c\x36\x48\x27\xc8\xde\x35\x06\x09\x7c\xea\x19\x21\x92\xed\x58\xee\xc9\x60\xe3\x6c\xc0\x11\xcb\x12\xd7\x12\xa9\x25\x29\xb7\x1d\xf0\xe1\x17\xc5\xa2\x0e\xb6\x5b\xbd\x03\x8c\x55\xdf\xa7\x22\x55\x24\xeb\x24\xf5\x5e\x94\x60\xcf\x35\x3c\xdd\xb3\x9a\x65\x05\x64\x4a\xee\xef\xee\x38\x58\xc8\xec\xd3\xdd\xfd\xfd\xfd\x3d\x6a\x48\x56\xc1\xd3\xfd\x43\x61\x6d\xcd\x77\xbb\x47\x54\x72\x95\xa8\x60\xb7\x7b\xc4\xc1\xc6\x1d\x0b\x65\xac\xd9\xed\x1e\xf9\x6e\xb7\xdb\xfd\xdd\xed\x76\x8f\x85\x65\x59\x06\xc6\x3c\xdc\xdd\xe9\xa6\x04\x43\xb3\x7d\x77\x2f\x38\x48\x2b\xf6\x02\xf4\xd3\xfd\xc3\xdf\x26\x59\x06\xb5\x4d\x1a\x0b\x27\x47\xf2\x9a\xd9\x22\x92\x7b\xe5\xa1\x31\xcf\xa2\x84\x25\xab\xc0\x4d\x32\x2b\x94\x74\x13\xce\x27\xa5\x0d\x97\xe9\x79\x21\x33\xc5\x85\xcc\x3b\x62\x7b\xae\x01\xc1\xac\x60\xda\x80\x57\x9c\xc3\x9e\x35\xa5\xbd\x60\x4c\xa6\x45\xdd\x4e\xd8\x4e\xf2\xcd\xc3\xdb\x36\x72\xfe\x89\x49\x5e\x82\x46\xe5\x28\xa3\x41\x78\xbd\x7c\x3e\x31\xad\x01\x91\xac\x1b\xfb\x2c\x4a\x4b\xc3\x62\x26\xf3\x86\xe5\xfe\x56\xa2\x78\x53\x02\x2d\x92\xf3\x55\x63\x2f\x34\x87\xb8\x9f\x8e\xae\xa5\x60\x86\x7e\x13\x66\xb3\x62\xcc\xe0\xb2\x54\xaf\xce\xff\xce\x56\xcb\xe5\x62\xb6\x25\xe0\x8d\x05\x9e\x96\xcc\x14\x60\x88\x5b\x1d\x41\x6b\xc1\xc1\x4d\xa4\x92\xe7\x4a\x35\xa6\x97\xfe\x9c\x34\xb6\x50\x5a\x58\x66\xc5\x71\xa0\xf1\x67\xac\xf2\x45\xc5\x44\x39\xa0\x92\xc6\xd8\x8f\xe2\x08\xd7\xfc\x52\xbd\x18\xd0\xd1\x7c\xcc\xd4\x4e\xf1\x33\x68\xb1\x3f\x87\xe1\xc6\x88\x5c\xd2\x40\x87\x46\x5c\x19\xd2\xd8\x62\x3e\x4d\xde\x24\x3f\x6a\xd5\xd4\xe8\x34\x2d\x41\x1b\x47\x32\xce\xd8\xdf\x13\x39\x18\x3b\x29\x73\x9c\xa3\xa8\xc6\x0c\xec\x34\xe7\xaa\x62\x42\x0e\x86\x5e\xcd\x74\xf5\x64\xcf\x2d\xb3\x59\x01\xd9\x61\xc8\x28\x99\xc1\xb3\xd2\x15\xb3\xd7\x6c\x2c\xf6\x60\x45\x35\x1c\xff\xab\xaa\x07\x28\x2d\x2a\xa8\x52\xf1\x17\xbc\x63\xeb\xa5\x15\xf1\x7c\xb2\xbe\xdd\x26\x64\xa7\x42\xf2\xf9\xf2\x02\xae\x99\x31\xaf\x4a\xf3\x8e\x0c\x11\x33\x53\x72\x2f\xf2\x9e\x55\x55\xcd\x34\xcc\x97\x2b\x99\x82\x3e\xa2\xd3\x86\x3b\x73\xd0\xb0\x07\x0d\x32\x03\xef\xa3\x60\xde\x31\x14\x07\x2c\x24\xfb\x5a\x42\xff\xc0\x67\xad\xa4\x5d\xb3\x1c\x3e\xb1\xb0\x69\xc8\xfa\x25\x4d\xac\xd5\xe2\x6b\x63\x61\x84\x8e\xcc\x60\x35\x1b\xa8\x94\x05\xef\x3f\x43\xfa\x45\x97\x5e\xa6\x7c\xd2\xd8\xa2\xf3\x8d\xd6\x31\x46\xec\x9d\x6a\xf5\x6a\x40\xfb\x98\x73\x43\xb0\x54\x33\x66\xc0\x4d\xd3\x1f\x7f\xf8\xe1\x87\x49\x96\xa9\x46\x5a\x37\x6d\xf6\xb8\x0b\x3c\x56\xb9\x71\x33\xcc\xaa\x21\x03\x2d\x4e\xb5\xd0\x10\x28\xa1\x63\x90\xb9\x2d\x06\xf0\x08\x65\x3b\x40\x18\xdc\x19\x02\xb4\x4b\x41\xc6\x29\xce\xde\xa9\x46\x6c\xf5\x6a\xde\x01\x48\x52\x3a\x03\x3c\xb2\x12\x7c\xba\xf3\xe4\xc7\x6c\x56\x02\xeb\xc0\x9c\x89\xf2\xdc\x82\x48\x5a\xd0\x47\x56\xb6\x38\x81\xea\xc5\x60\xe2\x0a\xf8\x45\x36\x06\x38\xa1\x28\x97\x4a\x83\x17\x67\x4a\x5a\xad\xca\x21\xff\x09\x18\x07\x3d\xe6\x03\x03\xc5\xa5\x8a\x99\xb1\x89\x0a\xb3\x06\x80\x9a\xfc\x99\x65\x56\x69\xe2\x13\x76\x1a\xee\x60\xc2\x4e\xb8\x4c\x8c\x87\x40\x08\x79\x49\x2c\x21\x57\x56\x30\x0b\x7c\xae\xb2\xb0\xb3\x1b\xa5\x2c\x49\xbd\xde\x56\x54\x90\x30\x9d\x0b\x39\x66\xeb\xc7\x28\x61\xf5\xe2\x64\x41\x1a\xbf\x89\x14\x18\xe1\x58\x5b\xb8\xf2\x05\xc5\xb4\x30\x55\x8d\xce\x60\x21\x33\xe7\x8f\x2b\xad\xa1\x2c\xb1\x52\xcc\x0a\x51\xf2\x35\xe8\x90\xde\x70\xe3\x40\x5a\x8a\x70\x37\x53\xea\x20\x20\xa4\x1a\x02\xb4\x66\x13\x50\xac\xf2\x20\xa1\x17\x8f\xd9\xeb\x15\x52\x7b\x46\x2f\xf0\xf2\x56\xb3\xec\xe0\x9f\xae\x34\xcc\x9b\xaa\x9e\x0b\x0d\xb8\xb5\x67\x37\x6b\x8c\x55\x15\xce\x3b\x67\x47\xfc\x3f\x87\xda\x97\x60\x21\x85\x3d\x23\x11\xab\xec\x30\x9f\xa2\x94\x08\x89\x9b\xa5\x1a\xeb\xc2\xe2\x7d\x39\x0c\x72\x57\xe3\x02\xc6\xf0\x1a\xb1\x70\x0e\xfb\x92\x59\xa0\x50\xf1\x27\x11\x18\x74\x55\x0d\x06\xb7\xd9\x07\x44\xcb\x53\x3d\x5c\x2a\xdb\x69\x26\x50\x5d\x68\xfc\x26\x24\x57\xaf\x61\x2e\x79\x76\xfd\x0a\x3b\x29\x92\x1c\x4e\x3d\xa4\x78\xee\xa0\xaf\x8b\x63\xf6\xaa\xac\xa9\x40\x5a\xef\x3e\xb8\x7f\xd1\xca\x17\xf8\x20\x53\xcd\x76\x14\xa9\x8b\x13\xf6\x31\x42\xc9\x4f\x4a\x1d\x02\x97\x24\x93\x75\x10\x53\x90\x1c\x9b\x2a\xb7\xd0\x5a\xe9\x76\x62\x42\x78\x0a\x8b\x13\xc3\x68\x75\xe1\xdc\xb1\xef\x39\x76\x88\x1a\x82\x11\x23\x83\x4e\xeb\x96\xde\x5f\xb1\xde\x5b\x66\x1b\x83\x90\x36\x71\x0e\x7b\x21\xa1\xc7\xad\xdf\x62\xf0\x2c\xb6\x2c\xf7\x02\x41\x6a\x33\x9c\x4f\x22\xed\xe9\xae\xb5\xc0\x72\x72\x26\xd6\xa7\xd0\x67\xa5\x31\x32\x32\x34\xdf\xa7\x65\x47\xb1\x3f\x62\x27\xdd\xf4\x59\xf8\x93\x32\x16\xbb\xcb\x58\xa9\x43\x53\x1b\x17\x79\x45\x4b\x19\xce\x45\xfb\x60\x6b\xb4\xa7\x9e\xc9\x45\xfb\xcf\xa0\x7d\x0c\x46\x15\xab\xa7\x98\x7c\x51\x68\x97\x8c\x72\x02\xb2\x71\x91\xcc\xca\x86\x83\xf3\x27\x4e\x59\x86\xe4\x76\xb1\x04\x34\xf7\xdb\x81\x63\x47\x6c\x8d\xd2\xc9\x3a\x9a\xd4\x35\x48\xcc\xe7\x5b\xe5\x8f\xc9\xb8\x6b\xfa\xd7\x06\xf4\x99\xd8\x3e\x01\x7b\xf8\xcc\x0e\x30\x31\x67\x99\x11\x8c\x55\xbe\x54\x36\x6d\xea\x5a\x69\x0b\x9c\xc8\x0d\x30\x3e\x29\x80\x71\x8a\x07\xf7\x0b\x40\x3d\x29\xf1\xd8\x3b\x29\x84\xdd\x88\x95\x37\x67\xe3\x0b\x35\x15\x0f\xab\x05\x98\x9e\xd8\x6e\x63\x02\x4a\x4a\xf0\x3d\x75\x1b\xd1\xc8\xae\xea\x9b\x51\x81\x6a\xc7\xa5\x05\xd3\xc0\xfb\x45\x5e\x71\xef\xb4\x27\xa8\xb9\xd5\x8d\xb1\xc0\x67\x13\x77\x81\xbc\x17\xc5\xa2\x12\x96\x7e\x29\x84\x48\xf6\x05\x49\xb2\x72\x03\x59\x43\x47\xef\xe9\x0d\xfc\xa7\x01\x63\xa7\x8a\x9f\x2f\x88\x67\x01\x25\x37\xb7\x94\x4f\x0c\x43\x36\x16\x72\xd4\x52\x54\xfb\x92\xc4\x97\xcf\x30\x16\x64\xb8\x4c\x59\x76\x40\x67\x8f\x15\xe3\xb4\x0b\x8a\x85\xb6\xde\xc5\x2a\x63\xbe\xd4\xb6\x02\xc5\x10\x26\xd1\xa0\x9a\x87\xfe\x2f\x56\x39\x65\xb0\x84\x9d\x66\xa5\x00\x69\x0d\x8a\xdd\x99\x87\xc7\x8f\x55\xd0\x84\x9d\x12\xa8\x9e\x35\x00\x8e\x6a\x95\xd7\xa0\x7d\x85\xb9\xe2\xb6\x85\x06\xe6\xc9\x14\xbb\x37\xea\xdc\x4c\x87\xe9\xb6\xc7\xb7\x62\x3f\x65\x5b\x78\x57\x5f\xff\x0d\x99\x9d\xf9\x76\xe7\x8a\x7c\xc7\x01\x3a\xcd\xd4\x6a\x60\x95\x90\x79\xf0\xf7\xa4\xad\xdf\xfd\x14\x81\xc3\x4e\xee\xc8\xca\xae\x4b\x0f\x34\x69\x80\x65\x73\xa1\xfd\x95\x52\x16\x4a\x69\xb3\xdf\x8b\x93\x4b\x7c\x4d\xcf\x45\xe6\xf7\x3c\x11\xf2\x72\xd9\x01\x87\x05\x8e\xd9\x9b\x30\x6a\xa5\x13\xc5\x71\xbe\x17\x03\xdd\xdb\x69\xd2\x94\x56\x1c\x05\xbc\x86\x14\x89\xd9\xec\xb3\xd0\xb6\x61\x25\xe6\x34\xb7\x54\x6b\xad\x4e\x67\xb7\x6c\xaa\xf6\xa1\xcb\xdf\xd2\x34\x6e\x5d\x1e\xb4\x0d\xcc\x4b\x9d\x6b\xc6\xc1\xf7\x78\x6d\x76\xf2\x89\xc9\x61\x43\xbe\x90\x47\xb7\x16\xfc\x9d\xe6\x74\xad\x95\x55\x99\x2a\x17\x59\xa1\x1c\x3d\xd4\xff\x4e\x19\xa7\x44\x1b\x60\xa9\xb2\x03\x89\xa1\xbd\xf0\xb2\xcf\x67\xdd\x4b\xa0\xa7\xa2\xd5\xa0\x2c\x7b\x86\x96\x18\xc4\xd3\xb3\xd2\xaf\x4c\x73\x43\x04\x1a\xd9\x4b\x1b\xc0\xa5\xbe\x63\xea\xe9\xbc\xd6\x60\x70\x47\xfc\x36\x79\x66\x03\x19\x88\x23\x5c\x3f\x95\xba\xf8\xa1\x3c\xb0\xa3\x75\x6d\x42\x6d\x0a\xf3\xe0\xb3\x60\x0e\x33\x6a\x45\x1f\x0e\x36\xc0\x7d\x85\xef\x84\xf7\x5e\x9d\x5b\x9d\x35\xe8\x8a\x49\xac\xcb\x2d\xb3\x85\xaa\x76\xde\x1d\xa1\xfd\x92\x40\xa8\xfb\x04\x40\xb0\xfd\x54\x40\x68\xf8\x15\x80\x98\xae\x49\x22\x78\xf1\xf6\x4f\x94\x4f\x86\x61\x7d\xef\xd6\x51\xd4\xc1\x76\x78\x03\xaf\x5a\x58\xf0\xd5\x30\xc8\x33\x25\x79\x2b\x2f\x64\x8e\x35\x34\x20\xcc\x43\xbd\x9c\x0f\x44\xca\x45\x01\x27\xac\x6e\xc5\xd6\x29\x03\xdc\x60\x92\xdb\xf8\x14\x39\x5b\xbf\x04\x29\x59\x24\x41\x5a\xae\x37\xab\xd9\x88\xc1\x29\xb3\xc2\xec\xcf\x2e\xcd\x94\x86\xa9\x62\x9a\x92\x67\xea\x3f\xc6\x84\x0b\x7d\xe3\x18\xc8\x74\xe8\x44\xf8\x5a\x50\x6b\xb0\xa0\xa9\xbd\x0e\x3c\x2e\xa4\x93\x42\x52\xe9\x70\x78\xcf\x22\x9c\xe2\xf2\x53\x2c\x25\x40\xa9\x7c\xcc\x54\x90\x7c\xe0\x90\x14\xc3\x13\x5e\x09\xd9\xca\x64\xa7\x97\xa9\x72\x91\xec\x7d\x8e\x44\x4c\x16\x41\xf4\x7d\x23\x89\xa9\xc8\x25\xb3\x8d\x6e\xb5\xb6\xea\x00\x12\x67\xb2\x18\xeb\x74\x89\xf6\x9d\x10\x5e\x31\x53\xb0\xc1\xb3\x46\x0d\xb6\x43\x67\x4b\xc1\x5e\xb8\x56\x9a\x46\x0b\xc9\xb1\xbb\x43\x09\x83\x3e\x31\x5e\x4e\x2d\xd3\x36\xf0\x18\x46\xa1\x36\xa5\x69\xf4\x22\xb9\xef\xbe\xb8\xcf\x2c\x69\x1a\xcf\x26\x98\xb6\xc4\x5e\x64\xd4\x90\xc3\x0d\x89\x2b\x1e\xb3\x0f\x55\x37\x70\x0c\x45\xb1\x1f\xde\x73\xb4\x5f\x69\x3c\x98\x70\x56\x30\xd1\xeb\xbe\xf1\xf4\x9e\xfa\x05\xce\x1d\x2b\xea\x02\x74\xda\x08\xeb\x61\x08\x80\x34\x8d\xe9\x43\x63\x9a\xc6\xc1\xa7\xc7\x6d\xc5\x64\xb6\x2e\x34\x33\x30\x17\xac\x44\xf7\x4a\xe3\x36\xd3\x06\xf9\x74\x7e\x73\x43\x6e\xef\xb4\xeb\x0a\x77\x6e\x37\xe1\xe6\xc6\xe5\x88\x7e\x35\xef\xd8\xeb\x93\x79\xb7\xd0\x90\xab\xb3\x42\x48\x18\xb3\xf1\xf6\xf6\xc5\x63\x6f\x56\x4b\x5f\xe8\xae\xa0\x7f\x59\x44\x6e\xc3\x24\x57\x55\x0a\xc0\x3d\xa2\xd4\x34\x6e\x6f\x50\x48\xd3\x18\xd5\x53\x7a\xe3\xf3\xb5\xfd\x1a\xb7\xb9\x1d\x4b\xa5\x69\xe3\x2b\x8d\xe9\xf1\xd4\x36\xf5\x38\x98\x83\x3e\xdd\x96\x5d\x72\xf0\xd0\xd4\xa4\x0d\x9c\x20\xc3\x79\xe8\x3d\x85\x78\x1f\xbf\x23\xb6\x5e\xf7\x40\x84\x53\xcb\xb2\x83\xcf\x0c\x68\xde\xaa\xb1\x0e\xdf\xb0\xdb\x4f\x35\x5b\xcd\xa4\xd9\x83\x7f\x9d\xc3\x6c\x6e\xc2\x27\xb4\x17\x69\x28\xca\x5f\x0c\xcc\x98\x54\x52\x64\xac\xf4\x0b\x42\x8b\xfc\x0f\x36\x34\xa1\x8f\x18\xbe\x73\x8e\x18\xf7\x86\x66\xb4\x76\xc3\x3e\x24\xc8\xc3\xdc\x7a\x4b\x45\x6b\xf7\x9b\x90\xff\xf8\x31\x7c\x76\xa2\x0f\xf1\x8b\x93\xfb\x32\x15\xf6\x13\x1b\x7c\x6a\x32\xe7\xea\xab\x2a\x1f\x2d\xcb\x9f\xee\x1f\x3e\xfc\xfe\xaf\x9f\xfe\xf8\xf6\xa7\x37\x2d\xfb\xf0\xfd\xcf\xbf\x4f\xbe\xfb\x27\xfb\xee\xaf\x3f\xbe\x7d\xdb\xf4\x0f\xee\xc3\xf7\xee\xa7\x6f\x1e\xee\xc2\xdd\x4c\x49\x63\x99\xb4\x8f\xc6\x6a\x21\x73\xfa\x73\x01\xfe\x33\x78\x7e\x4f\xf7\x0f\xbb\x87\x87\x8e\x03\xc9\xaf\x18\x73\x10\x35\x52\xbb\xdd\xee\xb1\x67\x07\x7f\x79\x68\xff\x0d\x9f\x54\x43\x26\x58\x89\xe5\xbc\x1f\xda\x99\x53\xe1\x8e\xde\x9a\xf1\x7f\xd7\x56\xfc\xff\xff\x78\x9c\x55\x5c\x79\x47\x5a\xcd\x57\xee\xcb\x97\x2f\xee\x39\xfa\x92\x2c\xbe\x79\xfa\xf9\xe1\xee\xee\xbf\x01\x00\x00\xff\xff\xbb\xb1\xb0\x1d\x7f\x19\x00\x00" func runtimeSyntaxApacheconfYamlBytes() ([]byte, error) { @@ -1388,6 +1574,26 @@ func runtimeSyntaxApacheconfYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxArduinoHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\xcc\xcb\xe7\x8a\xd1\xb3\xcf\xcc\xcb\x57\xe1\xe2\x02\x04\x00\x00\xff\xff\xeb\x53\x0c\xfa\x0d\x00\x00\x00" + +func runtimeSyntaxArduinoHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxArduinoHdr, + "runtime/syntax/arduino.hdr", + ) +} + +func runtimeSyntaxArduinoHdr() (*asset, error) { + bytes, err := runtimeSyntaxArduinoHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/arduino.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxArduinoYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x56\x71\x4f\xdb\xc8\x12\xff\x9f\x4f\x61\x85\xea\xd5\x6e\x55\x78\xd0\xf7\xaa\xbb\x48\x55\x04\x21\x80\x25\x48\x10\x31\x2d\x77\xb8\xb5\x36\xde\x71\x3c\x62\xb3\xeb\xee\x8e\x09\x9c\xe6\xc3\x9f\xd6\x09\x90\x73\x1a\x5a\xf5\xf2\xc7\xce\xec\x7a\xf6\x37\xbf\x9d\x9d\x99\x4d\x81\x0a\xe8\xa1\x82\x6e\x80\xda\x6c\x6d\x49\x20\xc8\xa9\xbb\x15\x04\x41\xe0\x3f\x69\x31\x83\x6e\xd0\x49\xd3\x9d\x1e\x6a\xf3\xaa\xb3\xb5\x65\x6b\x05\x6e\x61\xf0\x2e\x40\x09\x9a\xb0\x40\xb0\x8d\xd1\xe4\xe6\xe0\xdd\x9f\xd9\x97\x9b\xff\xbe\xfb\xbd\x51\xde\xa6\xe9\xa4\x13\x6c\x35\xc6\x41\xb0\xbd\x1d\x2c\xb7\x2d\x1c\xfa\x0d\x61\xe8\x7a\x0e\xff\x82\x88\xc3\xb0\xce\x7a\x51\x0f\x35\x85\xbf\xf1\xde\x07\x7e\xbf\xcf\x1f\xfe\xc7\x15\xd9\x28\x8a\x32\xf2\x40\x2b\x38\x7d\xa3\x1d\x09\x4d\x6e\x09\x98\x2f\xe7\xdd\xa0\x13\xf6\x30\xf2\xc0\xa7\xf1\xc9\x29\x9f\x8d\x3e\x73\x3c\xbc\xb8\x4a\x78\x74\x95\x5c\x5c\x25\x51\x0b\x67\x0c\x16\x85\x0a\x2e\x2c\x6a\xda\x0c\x75\x34\xe8\xf3\x61\x3c\xe4\xd3\xc1\x35\x8f\xfa\x09\x1f\xfe\x91\x0c\xda\x48\x17\xf1\xcf\x90\xba\x88\xf9\xf4\xe0\xec\x38\xbb\x88\x39\xf9\x3c\xca\x2e\xe2\x35\x42\x25\x16\x34\xaa\x5f\x20\x73\x36\x3e\x3c\x8e\x2f\xc7\x09\x9f\x2f\x95\x36\xc4\x01\x91\xc8\xcb\x20\xd6\x04\xd6\xd6\xd5\x0b\x50\xfd\xd3\x83\xe1\xc9\x80\x8f\x0f\xce\xce\xe2\xe1\x09\x5f\xc6\xe3\x78\x78\xb2\x06\xa7\x85\x32\xd3\xe0\x12\x0a\xb0\xa0\x73\x78\x29\x4c\xc7\x07\x57\x67\x09\x0f\xae\x93\xc1\xe5\xf0\xe0\x8c\xe3\x61\x4b\xd9\xfb\xb4\xf7\xa4\xef\x7f\xfa\xff\x87\xb6\xaf\x8f\x1f\x3f\x06\xc7\x57\xc3\x7e\x12\x8f\x86\xe3\x66\xb6\xbd\xbd\xf2\xf9\x48\x90\x08\x92\x87\x0a\xdc\x7a\x1e\x4d\x8c\x51\x20\x34\x4f\x1e\x08\x38\x2f\x85\xe5\x42\x19\x41\x8c\x9a\x58\x19\x3d\xe5\xb9\xb1\xb2\xed\xaf\x6f\x34\x59\xa3\x82\x31\xd9\x3a\x27\x34\xfa\x11\xd8\x91\x20\x98\x41\x73\x3c\x8f\x9e\x0b\x07\x9c\x2b\xe1\x1c\x4b\x28\x44\xad\x88\xa5\x61\x69\xea\x89\x02\x06\xe5\x80\x0b\xd1\x8c\xc6\x32\x16\xac\x61\xce\xba\x56\x8a\x2b\x8b\x77\x82\x80\x2b\x6b\x7c\x5d\x81\xe4\xaa\x9e\x28\xcc\xd9\x95\xc6\x12\x3b\x9c\x6a\x90\xec\xbd\x61\xce\x63\xb2\xa8\xa7\xec\xe6\x48\x79\xc9\x54\xa2\x63\x2a\xad\x99\x33\xd9\x07\x26\x5b\x03\xd7\x7a\xb9\xe3\xce\xa0\xe4\x79\x89\x0a\xa2\x45\x89\x7d\x9f\xf6\xd4\x90\xe1\xdc\x68\x42\x5d\x03\x4f\x2c\x88\x5b\xb6\x40\xb5\xd5\xed\x48\x9c\x0b\x2a\x37\xd4\x74\x28\x26\x8e\x45\x6e\x1c\x0b\x87\x9a\x05\x89\xc5\xb0\xcf\x39\xa0\xe2\x26\x11\xac\x40\xcd\xde\x44\xc2\xd4\x02\x38\x86\xfb\xca\x5f\x80\xb1\xac\xcc\x94\x67\xa2\xe2\x99\xb8\xe7\x19\x6a\xb6\x42\xa2\xd0\x8e\xad\xd0\xd2\xcc\x96\x62\x0c\x20\xd9\x9a\x5a\x4b\xf6\x3e\xdc\x37\x76\xdf\x2c\x31\x89\x35\xa2\x87\x48\x2e\xf8\x4f\x70\xf8\x40\x4f\x59\xb0\x46\x78\x82\x74\x09\x42\xf2\x04\xe9\xb3\x45\x02\xaf\x8c\x81\xbc\xe8\x2b\x10\xd6\x2b\x5c\xe2\xb4\xf4\x28\xac\xcc\xdc\xcb\x0d\x79\x1f\xef\x8e\x36\xc6\xa5\xb1\x78\x2a\x0c\x7e\x9c\x0b\xb9\x54\x1b\xe7\x6d\xdc\xc1\x3d\x81\xd5\x42\x3d\x17\xe8\xc6\x73\x88\xa6\x92\x9f\xec\x58\xc2\x3f\xe6\x6d\xe4\x04\x67\xb0\x09\x4a\x82\x12\x0f\xdc\x8c\xe7\x98\x5b\xe3\x20\x37\x5a\x3a\x9e\xa1\x52\xe8\x85\x5f\x6b\x03\x1e\xe1\x14\xc9\x33\xdd\x1c\x83\x0a\xf5\xb9\x91\xc0\x72\x61\xba\x08\xf7\x72\xe2\x23\xd1\x86\xfc\xf1\xa1\xf1\xc9\x82\xb5\x79\x36\x5f\xbb\x1e\x79\x27\x74\x0e\xf2\x25\x72\xda\x24\x46\x03\x57\xb5\x72\x10\x6b\x76\xbe\xb7\x3e\xca\x51\x4d\x4c\x46\xaf\x5d\xcf\xe2\x45\xd8\x84\xb8\xf8\xca\x0b\xb1\xb7\x94\xfb\x4b\xf9\x9e\x27\x30\x45\xcd\xa0\x25\x57\x00\xbe\xd4\x84\xf4\x2d\x40\xd3\x62\x54\x9a\xc5\x9d\x40\x25\x7c\xd7\x28\x54\xed\xca\x35\xef\x4d\x23\xaa\xed\xc6\x7b\x74\x40\x75\xc5\xca\x98\xaa\xbd\xf5\x3b\x2d\xe0\xeb\xcd\x4d\xd7\x55\x22\x87\xee\x97\x2f\x6f\xb6\x57\x27\xa1\x84\x02\x35\x30\xea\x5c\xd5\x12\xc2\x4c\xc3\x3d\x45\x3d\x0e\x6b\xcd\x58\xe8\x5e\x24\xa1\xf0\xe7\xc0\x82\x41\x85\x58\xb0\x83\xc8\x37\xb6\xb9\xb0\xda\xf7\x28\xb0\xd6\x58\xae\xac\x98\xce\x44\xb4\xca\xe2\xa4\xdf\x0f\x26\x35\x2a\x42\xfd\xbd\x67\x30\xcb\x04\x91\xc5\x49\x4d\x90\x65\xab\x84\xd2\x34\x4c\xd3\xf0\xe6\x6b\xe4\xd5\x28\x4d\x23\xce\xb2\x50\xa8\x45\xb7\x13\x6e\xc6\x4b\x50\x2e\x51\x4a\xd0\x8c\x5a\x79\xfe\x95\xc8\x6f\x7d\xe7\x00\x47\x16\x73\x62\x07\x4d\x1b\x67\xff\x30\x98\x82\xe7\x20\x6e\xa3\x2c\x7b\x64\xf8\xcc\x65\xc7\x35\xbd\xb6\xbb\x24\x1e\xf8\xb0\xd9\xa6\x6b\x76\x3a\x4f\x6b\xa0\x65\x6b\xc5\xdd\x62\xd5\x5c\x44\x9a\xee\x3c\xaf\xae\xfc\x23\x7a\xfc\xad\x7a\xaa\x20\x47\xa1\xfa\xa5\xb0\xcf\x5b\x7f\x96\xce\xeb\x36\x9b\xd7\xbf\x44\xa6\xb2\x50\x59\x93\x77\x83\xce\xce\xce\xdb\xce\xaf\x31\x9d\x35\x49\xb5\xc6\x70\x77\xb7\x4d\xf1\xd5\x0f\xc8\x90\x91\xc6\xe7\x42\x32\x3a\x1a\xf1\xf5\xf5\x35\x1f\xc7\xd7\xe7\x83\xa8\xdb\xfb\x09\x67\x69\xfa\x66\xed\x7e\xd2\x37\xbb\xff\xc2\xe3\xdf\x01\x00\x00\xff\xff\x21\xfd\xe0\xed\x00\x0b\x00\x00" func runtimeSyntaxArduinoYamlBytes() ([]byte, error) { @@ -1408,6 +1614,26 @@ func runtimeSyntaxArduinoYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxAsciidocHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x2c\x4e\xce\xcc\x4c\xc9\x4f\xe6\x8a\xd1\xd3\x48\x2c\x4e\xae\x81\xf1\x6b\x12\x53\xf2\x93\x35\x55\xb8\xb8\x00\x01\x00\x00\xff\xff\xe1\x70\xa5\x8c\x21\x00\x00\x00" + +func runtimeSyntaxAsciidocHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxAsciidocHdr, + "runtime/syntax/asciidoc.hdr", + ) +} + +func runtimeSyntaxAsciidocHdr() (*asset, error) { + bytes, err := runtimeSyntaxAsciidocHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/asciidoc.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxAsciidocYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\x5d\x6f\xda\x30\x14\x86\xef\xf3\x2b\xac\xac\x12\x6d\x42\xac\x51\xad\x17\x8b\x4a\x25\x34\x4d\x13\x17\x03\x54\x65\xda\x85\x8f\x03\xc6\x31\x25\x6a\xbe\xe4\x38\x9a\x18\x21\xbf\x7d\xca\x67\x43\x21\xd5\x90\x2f\x90\xcf\xc3\xe3\xe3\xf7\x98\x9d\x1f\x08\x75\x48\x84\x8d\x58\xca\x7d\xdf\x8b\xb9\xa6\x79\x42\x09\xae\x6c\x0d\x21\x84\xca\x7a\xc4\x42\x61\x23\x1d\x00\xdf\xb2\x94\xe7\x2d\x98\x33\x2f\xe6\x77\x37\xba\xa6\xc9\x2c\x10\x69\xcd\x7f\x42\x21\xf3\x23\xb4\x17\xcc\x13\xb2\xda\xb1\x50\x22\x45\x22\x63\x6e\x23\xdd\x9d\x4e\xa7\x53\xf3\x46\xaf\x0a\x25\xbc\x9f\x34\x4c\xaa\x98\x12\xa1\x88\x54\x4d\x11\x62\xa7\x09\xe3\xc2\xa6\x14\x1b\x0d\xff\x0e\xb2\x2c\xcb\x3a\x53\xdd\xb7\xd4\x21\xdc\xc6\x41\x73\xda\x80\xa8\x43\x8a\xa2\x28\xce\x2c\x5f\x1a\xa4\x0e\xa5\xee\xf8\xba\xa4\x25\x00\xde\xd6\x99\xea\xa1\x01\x79\x1c\xa5\x8a\xb5\x57\x1b\xf4\xf5\x31\x00\xb3\x5b\xa5\xb3\x93\x32\xa5\xa4\xbf\xcd\x94\x48\x7b\x5d\xe0\x57\x71\xf8\x13\x4b\xcf\x46\xba\x8d\x0d\xbb\x15\xfa\x9e\x88\x94\xbf\xf3\x85\xc4\x21\xe3\x32\xae\x66\x78\x24\xcc\xfa\xfb\xd9\xfa\x4a\x0d\x80\xd3\x25\x59\x31\xe5\xe7\x7f\xb8\xae\xc7\x33\xb8\xdb\xef\xb5\xbd\x62\x92\xbd\x48\x96\xec\x91\xe3\xab\x40\x5c\x9b\x27\x00\xae\xc2\xe8\x7e\x93\xc6\x99\xe4\x02\x5d\x3b\xda\x05\x20\xb7\x75\x7d\x8c\xcd\x7c\xb1\x74\xbe\xe7\xce\x7c\x95\xcf\x7f\xae\x96\xcf\xce\x6c\xe1\xe4\xbf\x67\xcf\x8b\xf9\xe2\x47\xfe\x6d\xf6\xcb\x99\x2f\x17\x77\x00\xb4\xa7\x5e\xaa\xbd\x90\x28\x64\xf2\x35\x4b\xde\xa5\x8f\x53\x25\xfd\xe8\xc5\x46\x3a\x36\x7a\x73\x02\x30\x2f\x06\xf5\x86\xae\x89\xbb\xa6\xe6\x7a\x18\x00\x30\x88\x0b\x60\x50\x13\xc0\xf8\x08\x33\x4b\xcc\xa4\x75\x7c\x43\xd8\x86\xb8\x1b\x6a\x6e\x3e\xf2\xb8\xa5\xc7\x2d\x3d\xee\x30\x56\x10\xb7\xa0\x66\x31\x0c\x8c\x88\x3b\xa2\xe6\xa8\x49\xee\xec\x89\x6e\x8e\x93\xf1\xfd\xa9\xae\x57\x5f\x7b\xf1\x6e\xb3\x20\x10\x2a\xbd\xf8\xb3\xf5\xf2\x34\x08\x80\x01\x80\x2d\x7a\x9c\x8c\x1f\x4e\xbd\x4a\xff\xb1\x47\x7c\x1f\xcb\xd6\xa3\x6f\xe3\xc0\x43\x9e\xd8\xb1\x2c\x50\x7a\x75\x4b\x02\x40\xb0\x01\x40\xab\xf1\x0e\x60\x8f\x8f\xd8\x78\x7a\xd2\xb5\x7f\x01\x00\x00\xff\xff\x85\x03\x17\x35\xeb\x04\x00\x00" func runtimeSyntaxAsciidocYamlBytes() ([]byte, error) { @@ -1428,6 +1654,26 @@ func runtimeSyntaxAsciidocYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxAsmHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x2c\xce\xe5\x8a\xd1\xd3\x08\xae\x29\xae\x49\x2c\xce\xd5\x54\xe1\xe2\x02\x04\x00\x00\xff\xff\x12\x07\x9a\x53\x12\x00\x00\x00" + +func runtimeSyntaxAsmHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxAsmHdr, + "runtime/syntax/asm.hdr", + ) +} + +func runtimeSyntaxAsmHdr() (*asset, error) { + bytes, err := runtimeSyntaxAsmHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/asm.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxAsmYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\xe1\xaf\xdc\x36\x8e\xff\x9e\xbf\x62\x90\xee\x61\x93\x0b\xd2\xcd\xcc\x4b\xd2\x24\xf7\xa1\x28\xba\xb7\x40\x3f\xb4\x3d\x5c\xf7\x80\xe2\xfa\x8a\x42\x16\xe5\xb1\xe6\xc9\xb2\x46\x94\xc7\x9e\x01\xff\xf8\x03\x49\x79\xde\x24\x0d\x72\xfe\xb2\x01\xe6\x47\x8a\xa6\x44\x8a\xa2\x24\xda\x79\xad\x0f\xae\x9c\x93\xfb\xb0\x31\xd8\x3f\x79\x02\xae\x38\x5b\x3e\x3c\xd9\x6c\x36\x1b\x7e\x14\x4d\xef\x3e\x6c\x9e\xde\xdf\x7f\xfd\xec\x17\x42\x32\xd8\x3f\xff\xcb\xd3\x27\x4f\xf2\x18\x1c\xaa\xd6\x57\x9b\x7f\x76\x1e\x45\x79\xe3\x71\xd3\x1b\x70\x9b\x76\xc8\x9b\x9f\xbe\xfb\xe5\xc7\x8d\x41\x74\x7d\x13\xce\x4f\x54\xf5\xab\xcd\x0f\x11\x4b\x1e\x6d\xf1\x43\xc4\xda\x7d\x7e\xf7\x56\xb8\x97\x1b\x2c\xa6\xb8\xde\xc5\x22\x16\x9b\x67\xdf\xfa\xe7\xcf\xfa\xe1\x44\xc6\x18\x32\x06\xc8\x98\x9e\x8c\x41\x32\x60\xc9\x00\x90\x89\x40\xd6\x84\x40\xb6\x99\xc8\x06\x4b\x36\x00\xd9\xe0\xc9\xf6\x96\x6c\x9f\xf8\x87\x8d\xe0\x44\x76\x02\x02\x63\x08\x0c\x12\x38\x4b\xe0\x4f\xe4\xd0\x52\x17\x0a\x79\x6e\xf8\x7e\x0c\xe4\x23\xf9\x68\xc9\xc7\xc2\xbf\x81\x7c\x76\x85\x0e\x86\x0e\xc6\xd1\xa1\xa1\x43\xe3\xe8\x60\xe9\xe0\xe8\xb0\xa7\xc3\xde\xd1\x21\xd0\x21\x38\x3a\x44\xc3\x3f\x66\x1a\xfe\x31\x63\xe9\x10\x99\xee\xf9\xc7\x4c\xe0\x1f\x33\x03\x1d\x62\xa2\x43\x44\x3a\xc4\x0b\x1d\x06\x3a\x24\x3a\x24\x47\x87\x34\xd0\x01\xe9\x70\xa1\x83\x9d\x2f\x74\xe8\x13\x05\xd3\xb5\x14\x00\x29\x38\x43\xc1\x21\x85\xc1\x3e\x50\x18\x00\x1b\xc1\x89\xc2\x30\x24\x01\x27\x18\x2b\xb9\x08\xb9\x50\x3f\x9c\xb0\x11\x9c\x88\x27\x18\xdd\x9e\xe2\x90\x68\xc8\x94\x86\xc4\xbf\x96\xd2\x88\x9d\x40\x4b\xd9\x06\xca\x36\x53\x76\x89\x7f\x8e\x21\x2a\x5e\x18\x19\x0a\xff\x22\x43\x4b\x79\x08\x94\x87\x4c\xc8\x7e\xa2\x09\x84\x26\x13\x36\x0d\xa1\x35\xa8\x38\x11\x76\x81\xb0\xcb\x84\xc5\x12\x16\x20\x2c\x9e\xb0\x0c\xfc\xbc\x0c\xfc\x7c\x6c\xa8\x38\x2c\x34\x19\x5f\x68\xb6\xdd\x9e\xe6\x60\x0a\xcd\x43\x7e\xfe\xec\xdb\x97\xfe\xf9\xfd\x7d\xf3\xf4\x0b\x39\xd2\x0c\x63\x04\x72\xb1\xb8\x4c\x3e\x4a\xac\x4e\x8e\x86\xb1\x20\xcf\xcf\xc8\xd4\xcc\xaa\x91\x4c\x4e\x81\x6c\x28\x48\xc1\x64\x0a\x7b\x28\x14\x3c\x43\x60\xe8\x25\xdc\x06\x38\xe5\x02\x06\x0a\x25\x13\xb2\x0e\xb2\x0e\xb2\x0e\xb2\x0e\x96\x4c\x27\x97\x05\xa6\x75\x33\xc0\x96\x1a\xcc\xd4\x14\x6a\x8a\xa5\xa6\x30\x8b\x64\xe1\x28\xd9\x0b\x9c\xbd\x8e\xe7\x06\x9a\x91\x0c\xca\xb6\x74\x70\x9c\x2c\xa1\x45\x0a\x7b\xa4\x80\x28\x89\x01\xb2\xfe\x9a\x1e\x6e\xaa\xa9\x51\xe9\x45\x69\x25\xaa\xe9\xa0\xea\x54\x7a\x51\x7a\x01\xb2\x99\x4a\x26\xc8\x92\x44\x20\x38\x33\x5e\x66\x09\x31\x48\x8c\x05\x5b\xd0\x50\x2b\x69\x41\x96\x1f\x08\x5d\x31\x02\x8e\xb1\x11\x10\xd6\x32\x08\xb7\x17\x10\x36\x08\x08\x1b\x8d\xa2\x36\x1a\x45\x6d\x48\xd7\xa8\xfc\x5e\x51\x1b\x41\x51\x1b\x83\x60\x12\x44\xc1\x0b\xa3\x88\x45\x9a\x44\x2f\x89\x40\x14\x2e\x84\x1d\x48\xb6\x82\x24\x27\xac\x5c\xbe\xc9\xc8\x69\x33\xdb\x7d\x47\x3e\x9e\x80\x21\xa4\x3d\x4d\x8d\xb4\x66\x03\xeb\x46\xb2\x69\xf4\xa0\x23\x75\xfb\x77\x0d\x65\xe8\x31\x53\x86\x82\x96\xa6\x2c\x3c\xf6\xab\x46\xca\x90\x7a\xbb\x4a\x13\xcf\x28\xa7\x28\x9e\x31\xbb\xb2\xce\xcd\x7e\x38\x19\x12\x74\x42\x1a\x45\x6d\x58\x41\xe5\xf7\x8a\xda\x08\x8a\xda\x88\xa6\x92\xda\x6c\x2a\xa9\x4d\x1d\x24\xd6\xd6\xbe\x92\xda\x5c\x86\x18\x84\xa4\xa8\x2d\x54\x72\x11\x52\x1f\x29\xaa\x7a\x52\x99\xaa\x5d\x78\xbe\x7a\x66\x30\x33\xfb\x42\x23\xec\x56\xcd\xbe\x37\xf8\xd0\x0f\xa7\x23\xef\x82\x58\x12\x2a\x3d\x52\xca\xae\x75\xc5\x76\xaf\xae\xdc\xf6\xca\xed\xae\x5c\xe4\xdd\xd0\xba\x68\xdd\xba\x50\x87\x36\xf0\xf9\x1c\xa4\x0b\x55\xdb\x70\x1c\xa9\xaf\x12\x36\x0e\xd5\x19\x5f\x7d\x02\x4a\x66\xc4\x75\x16\xfa\x21\xfa\x32\x64\xea\xf9\xf8\x5d\xe7\x13\x1c\x1d\xd9\xe3\x20\x87\xd3\x71\x49\xd7\xed\xdb\x46\x8e\xa4\x23\x1d\xb2\x1c\x49\x03\xe0\x51\x4f\x8d\x59\x8e\x87\xa3\x9e\x0b\x47\xcd\xe7\x24\xc7\xc3\x51\xb6\xd9\x91\x78\x07\xed\x71\x65\x44\xf6\xbe\xee\x2f\x43\xf8\xe0\xa3\x2f\x84\x65\xef\xe9\xd4\xf3\xe9\x4c\xa7\xbe\x97\x7c\x3e\xf5\x79\x8c\x74\xea\xd1\x9c\xd6\x05\xe2\xd4\xa7\x92\x81\x3b\xa6\x92\xb1\xd0\xa9\xb7\xc1\x99\xcc\x03\x39\x19\x77\xca\xbe\x38\x16\xeb\xf0\xc1\x8c\xd1\x76\xf2\x18\xc7\x9e\x1f\xcc\x43\xdb\x0a\x89\xab\x0c\x86\x8b\x8d\x85\x43\x63\xe3\xba\xc0\x37\x6e\xe6\xab\x21\xd8\xd6\x87\xc0\xd4\x0b\x58\x46\xce\x0c\xa6\x48\x4d\xc0\xfa\x1c\xbd\xa5\xb2\xed\xf1\xc1\x52\xb9\xf4\xf8\x70\x63\x44\xac\x68\xfd\xf5\xcd\x17\x2c\xb6\xbb\xb9\xdf\x52\x6b\x1a\xa4\x96\x6b\x2e\x86\x44\x6d\x13\x80\xda\x06\x4b\xa2\xd6\x76\x48\xad\x0d\x6e\xa6\xd6\x0e\xbd\x40\x52\x4c\xd4\x82\xb3\xa2\x04\x1e\x3d\xe3\x89\xda\x93\x07\x11\x9c\xb2\x62\xa2\xd6\x45\x4f\x6d\x9b\x9d\xa3\xd6\x8b\x11\x2f\x23\x79\x1d\x4a\xaa\x33\xc1\x4c\xad\x67\xc3\x52\xaa\xb5\x3e\xea\xd8\x92\x00\xad\x47\x05\x16\x70\x41\x21\x98\xa9\x65\xfd\x00\x5b\x06\x3b\x31\xba\x78\xaa\x44\x9a\x61\xe7\x94\x14\x21\xfb\x9d\x90\x28\x24\x79\xc6\x0b\xb5\x62\xaf\x1f\x43\xa2\x36\xea\x54\xa3\xce\x28\x8a\xeb\x51\x5d\xe0\xba\xaa\x8d\x9c\x6e\x95\xf0\x8d\xdb\x46\x2c\x56\x89\x58\x56\xaa\x02\x9c\xa8\x4d\xa6\x98\x48\x6d\xca\xae\xa7\x36\x09\x9f\x23\x70\x01\xda\x66\xe4\x6d\xa9\x64\xa2\x56\x07\x66\xe4\x86\x35\x81\x5b\xc7\x5c\xa8\x45\xf9\xb1\x95\x6a\x64\xb1\x21\xe1\xc0\xc2\xf5\x6f\x2b\x41\xc1\xb1\x49\x82\x59\x31\x51\x5b\xb8\xb7\x54\x5e\xed\x6c\x7a\x6a\x67\xdb\x51\x3b\x97\x6c\x6c\xa1\xf6\x1c\x76\xb3\x62\xda\xae\xca\xd0\x96\xef\xd3\x75\x37\x54\x6b\x07\xac\x2b\x01\x3a\x2f\xa8\x9e\x83\xc6\x63\x5b\xe7\xce\x62\x1f\x05\xa4\xcb\xa2\x33\x4a\x96\x8c\x9a\x25\x42\xd2\x4a\xc3\x72\x63\xb5\xf5\xca\x6a\xf5\xb6\xba\x25\xb1\x59\xe8\x22\x58\xe8\xa8\x74\x5c\x3b\xc3\xde\xcb\x5e\xf0\xd5\x43\x5f\xc9\x4a\x47\xe7\x9a\x02\xf3\xea\x33\x8c\xb7\x40\x59\x39\x3a\xef\xb8\xf4\xb9\x23\xe1\x97\x1f\x7e\xfc\xfb\x17\x3a\xba\xbe\x97\x3b\x4f\x8a\xc1\x23\x25\x63\x1f\x10\x61\xaa\xcc\xd4\x08\x33\x2a\x03\xa0\x38\x09\x82\x20\xaa\x08\x55\x36\xd6\xe6\x28\xed\x08\x02\x91\x12\xbf\xa1\xcc\x0c\xb6\x4f\xee\xd8\x54\x3a\x55\x0a\x42\xf7\xa5\xa9\x74\xaa\x14\x28\xf5\x6c\x8e\xe9\x18\xba\x49\x48\x98\x28\xe1\x82\x20\x78\xa4\x84\x99\x2b\x55\xcc\x86\xe5\x39\x28\x8a\x44\x9e\x8e\x4d\x23\x38\x09\x82\x20\xaa\x08\x55\x26\x9e\x8f\x31\xd9\x87\x8e\xb5\x94\x63\xcb\xca\x01\xdf\x77\xf1\xc1\x3e\x84\xeb\xd3\xa0\x32\xe6\xa6\x75\x05\x61\x32\x27\x57\xc3\xe5\x79\x32\x66\x3f\x51\x02\x8f\xc5\x57\x57\x44\x3a\x5d\x1a\x9d\x6f\xe6\xd6\x29\x4a\xf3\x14\x94\xec\xdd\xf5\xa9\x0e\x61\x99\x59\x97\x22\xb2\xd4\xc9\x9c\xf6\x32\xd7\x76\xe7\x81\x52\x6b\xac\x65\xe4\xd5\x6c\x65\x31\x94\xee\x5d\xa5\x85\x52\xdb\x9b\x99\xd1\x47\xc6\x31\x50\x6a\xb3\x4d\x8a\xbe\x6c\x17\x66\xc7\x0c\x1e\xab\x44\x0e\xb3\x24\x07\x55\xd2\x33\x2a\xf9\x5d\x0b\x8f\x33\xab\x15\xd4\x95\x59\x37\x09\x76\x7b\xa2\xd4\x46\xf5\x3b\x29\xf5\xbb\x96\x57\x71\x32\x69\xe5\x42\xa8\x7f\x27\x75\xfd\xb4\xee\x75\x12\x20\x21\xf1\xda\x71\xcd\x99\x92\x20\xf3\x43\xef\x99\x9c\x4a\xf2\xbb\xa4\x0c\xee\x92\x67\x06\xfd\x4e\x1f\x21\xee\x50\x24\x8f\xcf\xaa\x0c\xfc\x29\x21\x23\xbf\xeb\x41\x3f\x5b\xcc\xd4\x9b\x99\x0b\x51\x33\x23\x52\xef\x63\x12\x44\xd9\xa6\x46\x2b\xd4\x2e\x54\xaa\x24\x2c\x54\x49\x8f\x0f\x4b\x21\xab\x54\xfb\x8e\xdc\x18\x83\x22\x22\x65\xcb\xb3\xc8\x96\x67\x21\xf1\x48\x95\x22\x12\x76\x63\x9b\x90\xaa\x74\x11\x16\xf5\x8f\x2f\x1e\x64\x44\xa4\xb1\xce\x5f\xb7\x49\xaa\x4c\x48\xeb\xca\x3f\x3e\x1d\x38\xaa\x91\x63\x3b\xe4\xa4\xf9\xd9\x08\x4e\x94\xb8\x42\x9a\x28\xf9\x88\xb2\x17\xcc\x8c\x4a\x38\xa9\x38\x24\x93\x10\x69\xc9\xac\xeb\xd6\x18\x39\x19\x0c\xc8\x6e\xef\xc6\x76\xa2\x99\x87\x5e\x59\x3f\x6b\x98\x96\x98\x85\x8f\xe3\x1d\x6e\x26\xf8\x38\xe5\x4f\x16\xe2\xf6\xe5\xe0\xcb\xaf\x11\x5c\x64\xd4\x45\xbd\xcd\x9f\x6b\xda\x7c\x9a\x2c\x1f\xe5\x96\x48\x96\xf0\x57\xf2\xf1\x7a\x7d\xba\xa8\xba\xe0\x37\xc1\x96\xb8\xd0\x6d\x66\xdf\xe6\xc7\xed\x32\xdf\xa6\xe1\x6d\xca\xde\xa6\x6a\x0d\xf6\x92\xc5\xd7\x6c\xd1\x57\x9b\xdb\x3d\xb3\xac\xa8\xae\x6f\xcd\xb5\x9b\x35\xac\x6b\xaa\x0b\x7d\x9b\x10\x75\x75\x97\x77\xb4\x25\x07\x34\x31\x74\xc9\x97\x17\xba\xd5\x9b\x1a\x64\xea\x82\x31\xc9\xfb\xba\xe2\xca\xef\x05\x1f\x0d\x11\x65\x08\x8e\xf0\x47\x03\xe9\xf2\x00\x2f\x1b\x1c\x77\xe9\xca\xe8\x22\xc3\x0e\x8e\x95\xd1\xa5\x65\xe6\x9a\x11\x50\x57\xbd\xea\x60\x95\x20\xd4\x84\x60\xe6\x9a\x35\xb0\x64\x06\xe8\x61\xb3\x0c\xfd\x38\xf6\xe3\x50\x75\x08\x5e\x4d\x90\xd5\x04\x59\x4d\x41\xe6\x3d\x4f\xa5\x97\xef\x54\x92\xa3\xa0\x79\x0e\xba\x0f\x60\x39\x68\xe0\xf1\x5b\xd2\xc8\x8d\x31\x28\x22\x70\x8e\x81\xae\x2e\x68\x66\x2a\x41\x90\xd4\x12\x44\xa8\x29\x0c\xcb\x76\x82\x65\x83\x81\xa4\xe7\xba\x45\x90\xb7\xe8\x9d\xbc\xa0\xc2\xd1\xd0\xf2\x52\x3d\x9c\x8e\x3c\x59\xbe\x71\xb5\x0a\x38\x4a\x0a\x8d\xd2\xea\xc6\xb6\xab\x27\x44\xa8\x54\xcb\x09\x79\x9a\x1f\xaf\xf7\xee\xf8\x78\xd3\x1f\x61\x75\x62\xe9\x1c\x2b\x83\xd4\x69\xa2\x74\xba\xdb\x3a\x7d\xda\xe9\x33\xf6\x17\x46\x39\x0b\xb0\x5b\x98\x00\xeb\x0a\xd3\x00\x70\x5c\xa7\x99\xd0\xef\x23\x4f\xd5\xef\xb9\x34\x63\xd2\xe8\xc4\x97\x9a\x42\x77\x13\x80\x96\x45\x9d\x56\x4c\x1d\x3e\x36\x81\x52\xa7\x15\x60\x57\xab\xbe\xae\x96\x82\xc1\xef\x63\xa6\x64\x44\xd5\xf0\xc2\x32\x36\xab\x1c\x03\x3e\x1a\x80\xb7\x4b\x13\x9c\x1c\x4f\x4a\x6b\xfb\xb4\x08\x38\x53\xf3\x30\x8a\x86\x50\xac\x74\x91\x23\x90\x8f\xe8\xe4\xd4\x73\xfa\xde\xb3\xf6\xe0\x5f\x6e\x8c\x8e\x13\x7f\xc0\xb1\x56\x9b\x5a\xb1\x70\x02\xa8\x07\x4d\x65\xf4\xea\x41\x3d\xa6\xb0\x1e\x5a\xf5\x76\xaa\xd7\x12\x68\x0b\x54\x53\x5b\x4c\xf8\xf0\x6b\x94\xc0\xdf\x84\x1c\xf5\x28\x6c\xae\x37\x1e\x13\xf8\x9b\x90\xa3\x1c\x8c\x38\xb3\x6f\xf2\xa5\xb6\x32\x38\xf3\x62\xa8\x04\x16\xc9\x71\x91\x2c\xbd\xa6\x45\x67\x5a\x74\xa6\x45\x67\x5a\x74\x60\x91\x30\x23\xdf\xee\xb5\x2c\x3f\xd6\xda\x1f\xa6\xe5\xbb\xd4\xba\x0f\xef\xea\xb5\xae\x43\xfd\x94\xa5\xe7\x43\x2c\xb8\xf2\xab\x50\xb6\x77\x3b\xf5\x02\x4b\xf6\x57\xae\x17\xce\x5f\x65\xfe\x2a\xdb\x97\x75\xfb\xf2\xd4\xf6\xba\x0f\x2b\x83\x95\xc1\x45\x82\x57\x89\x6c\xd0\x47\x5e\xe4\x38\x36\xd7\xee\x95\x5f\xe4\x57\xe1\x55\x82\x8b\x44\xc6\x8c\x57\xc3\xf1\x6a\x39\x5e\x4d\xc7\xab\xed\x78\x1d\x23\x5e\x07\x51\x0e\x3f\xf7\x7a\xf7\x7d\x3e\xa7\x32\x7c\xe9\x24\x72\xe8\xa2\x25\x25\xc1\x60\x61\x16\x9c\xad\x64\x91\x3c\xb8\xf3\xde\x45\x83\xe8\xb5\xed\xd7\x7e\x70\xee\xcc\x36\x47\xc0\xd7\xc4\x5c\x74\x73\x71\xc2\xf5\xb8\xdf\x2e\xcc\x8e\x99\xdd\x9b\xb7\xac\xb7\xf0\xcb\x73\x65\x77\x9f\x9b\xda\xff\x44\x18\xec\xc8\xf6\x1c\x7c\x69\x82\xf2\x3f\x89\x40\x68\x82\x25\x6f\x5d\x93\x1e\xff\x63\x47\x29\xd0\x08\xdb\xcf\x58\xf8\x6a\xf3\xdf\x6e\xef\xb1\xb8\x8c\x75\x7c\x0f\x2e\x16\xdf\x7a\x97\x6f\x0d\x04\x32\x1d\x35\x81\x9a\x8e\x6c\x20\xdb\x11\x04\x82\x8e\x9a\x14\x08\x7d\xa0\xfc\xae\xa1\xfc\xbe\xa1\xbc\x7d\xc5\xb0\x6d\x08\x7c\x20\x4c\x81\xf2\x76\xc7\x92\x3b\x86\xd7\x0c\x6f\xfe\x14\xd3\xcf\x5a\xb4\x13\xe1\x44\x65\xa2\x36\xfd\x01\xc8\x38\x24\xcb\xc4\x27\x11\x09\x5a\x24\x8b\xc4\xf5\x18\x92\x43\x6a\x91\xf6\x48\x7b\x28\x99\x3c\x43\xc9\x14\x98\x9a\x99\x9a\x99\xec\x4c\x30\x53\x93\x08\x3d\xe5\x77\x13\xe5\xf7\x13\xfb\xcb\xb0\x9d\x08\x3c\x61\x62\x6f\xb9\x7d\xc7\xf0\x9a\xe1\xcd\x44\x9f\xf9\xb8\xf1\x59\x8f\xaf\x5e\xf9\x44\xce\xcc\xe4\x9a\x99\x9c\x9d\xc9\x01\xf3\x89\x9c\xd8\x05\xca\xef\x81\xed\x32\x6c\x81\x1c\x78\x72\x6a\x99\x25\x77\x0c\xaf\x19\xde\x00\x39\x1e\xa9\x0d\x66\x8f\x24\x75\xe4\x3a\x3f\xfa\xfe\x15\xf5\xfd\x96\xfa\x7e\x47\x7d\x7f\x47\x7d\xff\x9a\xfa\xfe\x0d\xf5\xfd\x5b\xea\xfb\x6f\x28\x9b\x99\x72\x33\x53\xb6\x33\x65\x60\x3e\x51\x16\xdf\x28\xbf\x67\xcf\xd8\x31\xca\xe0\x29\xab\x5f\xec\x16\x7b\xc5\x4e\x51\xf6\x89\xb2\xfa\x64\xf3\x2b\xb2\x79\x4b\x36\xef\xc8\xe6\x3b\xb2\xf9\x35\xd9\xfc\x86\x6c\x7e\x4b\x36\x7f\x43\x36\xbf\x23\x9b\xdf\xb3\x8e\x28\xb2\xe6\x96\x55\xb7\xac\xbb\x65\xe5\xed\x1b\xea\x71\x22\xc8\xaf\x08\xf2\x96\x20\xef\x08\xf2\x1d\xe5\xd7\x04\xf9\x0d\x41\x7e\x4b\x90\xbf\x21\xc8\xef\x08\xf2\x7b\x56\x11\x3d\x56\xdc\xb2\xe6\xf6\x8e\x81\x95\xd7\xa6\x15\x96\x57\x84\x65\x4b\x58\x76\x84\xe5\x8e\xb0\xbc\x26\x2c\x6f\x08\xcb\x5b\xc2\xf2\xcd\xba\x41\x66\x0e\xf1\xcc\x31\x9e\x39\xc8\x33\x47\x79\xe6\x30\xcf\x1c\xe7\x99\x03\x3d\x73\xa4\xe7\xbe\x7f\xc7\xf0\x5e\x94\xb5\x8b\xf4\xd9\x4a\xa7\xad\xf4\xda\x4a\xb7\xb5\xfe\x9f\xd9\xf4\x99\x4d\x9f\xd9\xf4\x99\x4d\x9f\xd9\xf4\x99\x4d\x9f\xd9\xf4\x99\x4d\x9f\xd9\xf4\x99\x4d\x9f\xc5\xf4\x59\x4c\x9f\xc5\xf4\x59\x4c\x9f\xc5\xf4\x79\xbd\xe9\x0b\x9b\xbe\xb0\xe9\x0b\x9b\xbe\xb0\xe9\x0b\x9b\xbe\xb0\xe9\x0b\x9b\xbe\xb0\xe9\x0b\x9b\xbe\xb0\xe9\x8b\x98\xbe\x88\xe9\x8b\x98\xbe\x88\xe9\x8b\x98\x66\x94\x7e\x5b\xe9\xb8\x95\x9e\x5b\xe9\xba\x95\xbe\x3b\xe9\xbb\x53\x7b\xd2\x77\x27\x7d\x77\xd2\x77\x27\x7d\x77\xd2\x77\x27\x7d\x77\xd2\x77\x27\x7d\xef\xa4\xef\xdd\xe7\x8f\xbc\xef\x87\x88\xc5\xc4\x82\xd7\x73\xf6\xa7\xb1\x6f\x5c\xe6\x99\x97\xcd\x34\xe4\x87\xe5\x30\xb4\x55\xf3\xeb\x28\x0a\x35\x1a\xd4\xd1\x77\xf4\x6a\x7e\xfe\xe2\xb7\x57\x2f\xdf\xff\xfe\x42\xda\xcf\x5f\xdc\xc4\xef\xb3\xdd\x5e\xcd\xac\xbe\x31\x2f\xdb\xcd\x77\x2f\xff\xf1\xfb\x8b\x4f\x9c\xfa\xaf\xec\x52\x1e\xac\x43\x1c\xf2\xe6\xd9\x4f\xdf\xfd\xf2\xe3\xf3\x3a\x5a\xd2\x27\x1f\x36\x4f\xff\xed\xc5\xb3\xfb\xfb\x17\x74\x7f\xff\x2d\xff\x98\x3c\xff\xcd\xbc\xbc\x6c\xbe\x7b\xf9\xbf\x1b\x71\xe5\xe9\x9f\xbb\xdc\xdf\xff\xf6\xdb\xd7\x9b\x5b\xad\x7f\xbf\xbf\xff\xfd\xd6\xf2\xcf\xa5\x73\xf9\xcb\xc5\x8c\xcb\x91\xf6\x61\x68\x4c\x20\x74\xf2\xe7\x2e\x84\x6e\xcf\x7a\xf4\x07\x16\x93\x0b\xdd\xdf\x7f\x5d\xdc\x2c\x14\x4c\x31\x4c\x9b\x95\xa5\x0e\x34\x04\x13\x01\x10\x1c\x09\x0a\xf1\x8b\x0a\x0c\x5f\xce\xc9\xdb\x59\x6f\xfe\xf8\xfd\xc5\x87\x3a\x9f\x9b\xd0\x73\x85\x14\xf7\x1f\xea\x34\x37\x1b\x71\x93\xad\x3e\x7d\x7a\x95\xb9\x08\x9f\x48\xf0\xc1\x27\x71\xed\xfe\xfe\xeb\x47\xe9\xcd\xdf\x07\x2d\xff\x6e\x2d\x25\x67\xbd\x09\xdf\x77\x26\x3f\x76\x5d\xeb\xce\x5f\x3f\xf5\xe6\xaf\xff\x4a\x67\x7a\x09\xfd\x9f\x9c\xf8\x8f\x4f\x9d\xf8\xcb\xff\x63\xae\x0c\x30\x7c\xd8\x3c\x7d\xf6\xcf\x9f\xff\xfe\x33\xfd\xfa\xeb\xaf\xf4\x8f\x1f\x7e\xfd\xf1\x3f\x9f\x7f\xf8\xf6\xe9\x93\x27\xff\x17\x00\x00\xff\xff\xc4\x3e\x7c\x48\x83\x25\x00\x00" func runtimeSyntaxAsmYamlBytes() ([]byte, error) { @@ -1448,6 +1694,26 @@ func runtimeSyntaxAsmYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxAtsHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x72\x0c\x09\xe6\x8a\xd1\xd3\x48\xa9\xc9\xa8\x29\xd6\x4c\x2c\x29\x56\xe1\xe2\x02\x04\x00\x00\xff\xff\x46\xc8\x8b\xf6\x13\x00\x00\x00" + +func runtimeSyntaxAtsHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxAtsHdr, + "runtime/syntax/ats.hdr", + ) +} + +func runtimeSyntaxAtsHdr() (*asset, error) { + bytes, err := runtimeSyntaxAtsHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/ats.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxAtsYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x17\x7f\x73\xdb\xba\xed\xff\x7c\x0a\xd6\x69\x57\x29\xa9\x9d\xec\xed\xaf\xe7\xfd\x90\xbb\xae\xbd\xdb\xae\xef\x75\x77\xed\xee\x7a\xb3\x9c\x8c\x96\x40\x9b\x0b\x45\x6a\x24\xa4\xd8\x19\xde\x3e\xfb\x0e\x94\x64\x39\x6d\xbc\xeb\x75\xbe\xb3\x08\x40\x20\x00\xe2\x07\x01\x29\x6d\x00\xf7\x35\xcc\xc5\xeb\x4f\x1f\xcf\xce\x4a\x40\x28\x70\x7e\x26\x84\x10\xfc\xca\xca\x0a\xe6\x62\x92\xe7\xb3\xa4\xa4\x2d\x85\x54\x62\x78\x3e\x39\x3b\xf3\x8d\x81\xd0\xb1\x4d\x45\x09\x4a\x36\x06\xe7\x22\x5f\x2f\x97\x73\x69\x6c\x53\xcd\x57\xab\xcb\xe5\xcd\xf5\xf4\xc7\xd7\xd3\xbf\xcb\xe9\xc3\xea\x2c\xb2\x9e\x8b\x0f\x35\x78\x89\xce\x87\x7e\x6b\xd8\x57\x6b\x67\x66\xae\x27\xcf\xc5\x64\x39\x9b\xff\xf6\xf2\x1f\xf4\x9f\xdf\xfd\x21\xfb\xfd\xcb\x3c\xff\xd5\x8a\xae\xe8\x05\x4d\xe9\x15\x3d\xa3\x3c\xbf\xa0\x05\xe5\xf9\xf9\xe4\xd4\xf6\xfc\x66\xd0\xf4\x69\x5f\x43\x78\x25\xe4\x3a\xa0\x97\x05\x0a\x3e\x64\x10\xd2\x96\x22\xb8\x0a\x44\xed\xa1\x04\xa5\x2d\x30\xee\x71\xb0\xa7\x73\x45\xbe\x4e\x64\x59\x7a\x92\x1b\xc8\x1e\x68\xed\x9c\xa1\x62\x2b\x3d\x15\x26\x50\x88\x50\x13\x9f\xa5\x6b\xd6\x06\xc8\xf4\x2b\x28\x45\xb0\xb3\xa4\x8c\x93\x48\xda\x62\x52\xa3\x4f\x33\x32\xda\x16\xc6\xd5\xe8\xa9\xd1\x16\xd3\x7c\xfd\xa5\x32\xa3\x2d\x52\x13\x9f\xa6\x87\xe3\x62\x25\x12\x6f\xf3\x20\x0d\x79\x50\x14\xf4\x03\xdc\x22\x85\x61\x8d\xbc\xf1\x19\xd0\x6b\xbb\x21\xbc\xd3\xb6\xa4\x56\xc3\x3d\x52\x9b\xe1\x75\x4d\x2d\x52\xeb\x74\xf9\x84\xd6\xda\xbb\x9a\x70\xb9\xb8\x5e\xed\x6b\x20\x26\x77\x1b\x07\x4a\x44\x22\x30\x92\x0e\x5c\x27\xe4\x2d\x2f\xa7\xab\x83\xcc\x0e\x19\x80\x63\xd9\x23\xe1\x80\x3c\x7e\xf5\x68\x17\x03\xe9\x10\xd7\x8f\x28\x11\x2a\xb0\x87\x90\x85\x81\xd0\xc5\x6d\x1d\xa2\x8d\xbc\xf2\x23\x1e\x52\xae\x43\xe7\x12\x06\x30\xd9\xd7\x90\x66\x03\x91\xa4\x2d\xf9\x2f\x4d\x70\x24\x03\x25\x1e\xd2\x4c\x86\xd0\x54\x40\x6b\xd8\x68\x4b\x49\xed\xd3\xac\x90\x01\x28\xc4\x65\x3c\xfa\x63\xd5\x85\x91\x21\x94\x50\x50\x29\x51\x46\xbd\x0c\x24\x6d\xe7\xaf\x2c\x9a\xc5\x94\xa8\x95\x01\x4e\x3c\x2a\x1d\x95\x7b\x6b\x9c\x2c\x09\x4c\x00\x02\x5b\x12\xec\x0a\xa8\x51\x3b\x4b\xb0\x8b\xdb\x60\x87\xad\x4c\x3c\x99\x94\x42\xa6\xd5\x29\x0b\xb4\x8a\x66\xea\xaa\x66\xc9\xca\x79\xd2\x96\xb4\x55\x7a\x97\x18\x8a\x99\x08\x48\xc6\x15\xd2\x50\x25\x0b\xef\x4a\x50\x0c\xf0\x62\x1d\x92\x53\xe4\x6a\x72\x9e\x9c\x8f\xa6\xb8\x16\x7c\x34\x2c\xa9\x3d\x50\xed\x02\x92\x75\x36\x55\x7a\x77\xca\x00\x3e\x35\x4b\xf3\x50\x10\x9f\x8e\xe1\x80\xb2\x08\x9c\xa0\xb2\xc7\xa2\xc8\x80\xb2\x95\x9e\x97\x04\x75\x91\x66\x14\xf6\x15\x18\x5d\xf1\xaa\x2d\xfa\x2e\x93\x41\x11\x6e\xc1\x12\xfa\x7d\xf4\x22\x13\xda\xe8\xc9\x12\x4e\x7a\x61\xc8\x2b\x66\x8e\xb1\x6b\x65\x3c\x3e\xdd\xb3\xa8\xfb\x2d\x78\xa0\xfb\xad\x36\x40\xf7\x1a\xb7\xf1\x11\x9d\xcc\x40\x0c\x1b\x03\x6d\x32\x06\x2d\xe2\x8f\x72\xfe\xeb\x9c\x1b\x2a\x64\x48\x35\xc6\xb3\x81\x70\xfc\x16\xd7\x6e\x17\x57\x65\x64\x9f\x90\x3d\xa5\x3d\x90\x74\x55\x1b\x5e\x3d\x0c\xd0\xc9\x9c\x93\xa1\xab\x93\xe3\x83\x46\x82\x72\x3e\xbf\xe8\xce\x99\x5f\x1c\xaa\xe7\xe7\xa6\x5a\xc3\xe1\xf6\x2d\x9c\x0d\x28\x2d\xce\x6c\x24\xc7\x0b\xfc\x7a\xfa\xe3\x6c\x75\x99\x2c\xe1\xed\x8a\xe5\x64\x4c\x58\x5d\xa6\xd9\x52\xbd\x33\xef\x57\xd9\xc1\x8e\x27\xf6\x5e\x2f\x77\x9f\x57\xcb\x78\xe9\xbf\x93\x53\xb5\xba\x48\xf2\xd9\x31\x9a\x66\xcb\xfa\xaf\xc7\x52\xbf\x41\x66\xd2\x71\xd2\x97\xb2\x2f\xd3\xa5\x79\xdf\xfc\x6d\x75\x91\xaf\x87\xb3\xbd\x6b\x6c\xc1\x45\x33\xf5\x60\x24\x42\x29\xee\x60\x7f\xef\x7c\x19\x5e\x89\x50\x43\xa1\xa5\x11\xaa\x67\xe9\x1a\x01\x37\xb7\x50\xcb\x02\xc2\x4c\xfc\xec\x50\xf0\x35\x6b\xf6\x42\x97\x60\x51\x2b\x3d\xfa\x69\xa4\x44\x93\x94\xde\x75\xfe\x56\x4d\x66\x49\xd9\x1d\x15\x32\xa0\xb2\x54\x7b\xb9\xd3\x5c\xac\xe0\x2d\x19\x59\x91\xe1\x47\x64\xe5\x40\xc6\xb0\x8d\x68\x75\xdc\x0b\xbe\x56\xb1\x20\xe5\x4c\xb9\x20\xe5\x01\x16\x2c\x6d\x11\xc5\x2d\x88\x5b\xd3\x22\x96\xc3\x82\x9b\xc2\x82\x94\xe5\x08\x3f\x21\xe7\x79\x7e\x7f\xe4\x9f\x0f\xb8\x05\x7f\xe4\x94\xc1\x19\x02\x94\x82\x02\xc3\x6c\x36\x1b\x72\xac\x73\xd7\x5c\x24\xf9\xf3\x44\x7a\x5f\x87\x07\xe2\x05\x3d\x37\x1e\x5a\x7b\x90\x77\x54\x38\x8b\xda\x36\x40\xe5\x0f\x45\x77\xb7\x81\x91\x7b\x6e\x82\x95\x0c\x77\xb7\x89\xc5\x2a\x76\x43\xee\x5b\xf7\x1e\x49\x1a\x93\xa6\x47\x79\x7c\xac\xa3\xdf\x34\xb8\xae\xbb\xf5\x6e\x03\xfa\xa6\xc0\xa3\x3b\x30\x36\xb7\x78\x17\x1a\x5e\x54\x21\x4d\x04\xaa\x08\x98\xce\x00\xa3\x11\xbc\x34\xa7\x54\x19\x9d\x05\xbc\x6d\x91\x3a\xa0\x5f\xa9\xda\x0f\xe3\x0e\x83\xbd\x67\xa8\xda\xf3\x6d\x19\x41\x2f\x75\x00\xbe\xd8\x12\xe7\xcb\x34\xbb\x6d\xf1\x94\x86\x91\x07\x47\x7e\x0a\x5b\xd7\x75\xd3\xe0\x4c\x0b\xfe\x56\x86\x00\x1e\x07\xac\x05\xaf\xd5\x9e\x10\xaa\x1a\x6c\x0b\xfe\x94\x6c\x6c\xea\xc4\x40\x54\x4f\x07\x78\x04\x09\xf7\x1e\x6a\x6a\xa5\x97\x7e\x43\x6d\xe1\xea\x3d\xd8\x96\x99\x47\xf8\x29\xd1\xf9\xb3\x84\x43\x04\x3b\xcb\xd1\x82\x9d\xed\x31\x0e\x1e\x83\x4c\x65\x17\x73\x4c\x8d\x7c\x78\x4a\xc2\x3a\x51\x8d\x4d\xae\xe9\xd7\x29\xf1\x3c\x93\x66\xdd\xc8\x13\x29\x19\x15\xc6\x79\x50\x23\xd2\x43\x46\x73\xd1\xa8\x13\xf2\xb2\xda\xf3\x10\x65\x6c\x9a\x3d\xa3\xda\x83\xf7\x3d\x8c\x4d\xfd\xf0\x6c\x9c\x08\x78\x9e\x7b\x23\x62\x47\xeb\x0a\xdb\xc5\x4c\x7f\xfd\xe9\x63\x4f\xec\x85\xd7\x1e\x6a\xef\x8a\xb9\xb8\x59\x2e\xe7\xb1\xf0\xe7\xab\xd5\xc5\xf9\x31\x92\x74\x43\x21\x57\xf2\xa6\x92\xc4\x83\x5b\x53\x02\x25\x8d\x25\xad\x6c\x96\x72\x4f\x01\x5b\x6a\x45\x60\x12\xad\x28\x40\x4a\x5a\xd1\xbd\xf4\x96\xc7\x2f\xf0\xde\x79\xea\x42\x3b\x1e\xea\x5b\xf4\x16\xae\x84\x0d\xd8\x1f\xa8\x07\x7e\x43\x60\xb4\x8a\xea\x8c\x56\xb1\x13\x46\x0f\x50\xf4\x09\x79\xf8\x57\xa3\x3d\x74\xdd\x71\xe8\xa9\xfd\x1c\x91\x8e\x25\xff\x47\xe7\x0c\x48\x2b\x5a\x69\x1a\xf8\xea\xd6\xe7\xc1\x36\x7a\x1a\x7d\x03\xa4\x24\xf7\x7c\xdb\x18\x13\x05\x0c\x63\xf4\x16\xc4\xe4\xc5\xbf\xc5\x6c\x36\x13\x2f\x7e\x99\x88\xb5\x71\xc5\x9d\xd0\x96\x4f\x18\x84\x72\x1e\xf4\xc6\x0a\x36\x5a\x68\x8b\x2e\x3a\x5d\xa2\x28\x5c\x55\x6b\x03\x53\xd4\x15\xf4\x92\xde\x74\x3c\x41\x97\x20\x9c\x12\x1a\x85\x0e\x62\x03\x96\x8b\xd5\xec\xc5\x1b\xe1\xbc\xf8\x8b\x6c\xe5\xc7\xc2\xeb\x1a\xbf\xf8\xb4\x88\x28\xff\x02\x4a\x8f\x73\x36\x69\x79\x7e\xf3\x7c\x95\x4d\x0e\x6f\xc0\x96\x4c\xff\x65\xa4\x84\x3b\x5d\x77\x1f\x2f\x23\xcd\xe8\x4a\xe3\x74\xe3\x5d\x53\xcf\xbf\xfc\x7c\x38\x30\x1d\x7d\xdd\x0c\xbf\xa9\xe8\x73\x61\x2e\x26\xc5\xe4\xe4\xab\x7f\xca\x56\x86\x78\x80\xc9\xd9\x38\xb1\xf2\x68\xde\x65\x26\x7f\x36\x7c\x15\x87\x6e\x76\x9f\x8b\x7c\xb2\xbc\x99\xac\x2e\xf2\xc9\x49\x86\x97\xcb\x9b\x97\xab\x8b\xfc\xe5\x41\xf6\x1b\x57\x8d\xb3\xf0\xb9\x98\x5c\x5d\x5d\x5d\x4d\xd8\xfb\x91\x2a\xa0\x05\xbf\xc7\xad\xb6\x1b\xd1\x58\xd4\x86\xbd\xee\x41\x16\x5b\x08\xe2\xed\x87\x77\x07\x3d\x91\x7d\x16\x63\xfb\x95\xab\x59\xe4\x63\x27\x3f\x97\xff\xdb\x53\xe8\x4a\x37\x17\xc9\xa7\x0f\x7f\xfa\x40\x9f\x3f\x7f\xa6\x77\x7f\xfe\xfc\xd3\xdb\xbe\x5c\x47\x6d\x46\x5b\x78\x42\xd9\x17\xaa\xbe\x5f\xd3\xb9\xf8\xe9\xfd\xd4\xe8\x3b\xe8\x73\xb6\xd7\xfb\x4d\x67\xce\x93\xfc\xe2\xb1\x21\xf9\x45\x9e\xfe\x3f\xb6\xbc\xf9\x5e\x53\xae\x9e\xb0\xe4\xea\xbb\x2c\xf9\x6f\x00\x00\x00\xff\xff\xdb\x34\xe9\x45\xeb\x0f\x00\x00" func runtimeSyntaxAtsYamlBytes() ([]byte, error) { @@ -1468,6 +1734,26 @@ func runtimeSyntaxAtsYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxAwkHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x2c\xcf\xe6\x8a\xd1\x4b\x2c\xcf\x56\xe1\x8a\x53\x56\xd4\xd3\x4a\xca\xcc\xd3\xd7\x48\xcd\x2b\x53\xd0\xd6\xb4\x4f\x2c\xcf\xd6\x50\xa8\x51\xd1\xe4\x02\x04\x00\x00\xff\xff\xd4\xba\xfa\xcf\x25\x00\x00\x00" + +func runtimeSyntaxAwkHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxAwkHdr, + "runtime/syntax/awk.hdr", + ) +} + +func runtimeSyntaxAwkHdr() (*asset, error) { + bytes, err := runtimeSyntaxAwkHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/awk.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxAwkYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x94\xdd\x72\xea\x36\x10\xc7\xef\x79\x0a\xc7\xa1\x3d\xf9\x18\x48\xa7\x77\xa5\x1f\x29\x01\x9b\xe3\x99\x20\x9f\x31\x6e\xca\x34\x4a\x3a\xc2\x5e\x83\x06\x59\x72\xa5\x75\x21\x9d\x7d\xf8\x8e\x20\x39\xe1\xa4\x19\xda\x9b\xfa\x62\x77\xb5\xd2\xfe\xf6\x2f\x4b\xa3\x4a\x2a\xc0\xa7\x06\x06\x81\xd8\xac\x3b\x9d\x12\x10\x0a\x1c\x74\x82\x20\x08\xfc\x94\x16\x35\x0c\x82\x90\xf3\xbe\xd8\xac\xbb\xe1\x2e\xbf\x02\x51\x82\x1d\x04\xe1\xe3\xe9\x49\xff\x62\x21\xf5\xd5\x19\xe8\x3f\x83\xcb\xf3\x6b\xb1\x59\x9f\x05\xd4\x3d\x0f\x3b\x1d\xdb\x2a\x70\x7b\x4e\x2f\x68\x2c\x34\xd6\x14\x3b\x50\xf7\x7e\xd8\xfb\x4d\xf4\xfe\xfa\xa6\xf7\xdd\xef\x27\x3f\x9f\x76\x2f\xae\x39\xef\x3d\x5c\x86\xef\x2c\x5d\x9c\x0d\xb3\xc9\x88\x86\xd9\x24\x61\x63\xef\xee\xe8\x26\x61\xd3\x74\x1c\xd1\x28\x65\x77\xf1\x34\xa7\x88\xdd\x25\x59\xca\x28\xca\x32\x96\x52\x9c\x44\xb7\xe3\x5f\x93\x71\xfe\x71\x76\xce\xf9\xe2\x7d\x66\x9c\xdc\x46\x6c\x38\x8d\x28\x66\x19\xc5\x33\x4a\x26\x2c\xcd\xa2\xd1\x70\x16\xd1\x6d\xc2\x72\x62\x31\xb1\x8c\x52\x4f\x4f\xe3\x19\xa5\xd9\x11\xd6\xa7\x2c\x1d\x25\x2c\x4e\x29\x9b\x51\x96\x53\x36\xcb\x87\xde\xdd\x46\x6c\x92\x7f\xa4\xd9\x2f\x37\xb3\xe8\x13\xe5\xd1\x3c\x1f\xa7\xd3\x61\xc2\x0e\x41\xb2\x04\x8d\xb2\x92\x60\xfb\x85\x12\xce\x3d\x13\xab\x56\x17\x28\x8d\x26\xd8\x22\x68\xe7\xa3\x9b\x68\x92\x30\x8a\xd8\xf8\xb0\xdc\x3d\xd5\x0b\xa3\xfa\xa6\x01\x2b\xd0\xf8\xd3\xb8\xe7\xbc\x77\x79\x71\xf5\xd5\x23\x9d\xfc\xf8\xf5\x0f\x3f\x5d\x7f\x3f\x78\x20\xce\x39\x27\xce\xef\x89\xf3\x87\xcf\x95\x28\x10\x6a\xd0\x38\x08\x9e\x5b\x1a\x4b\xb2\xa2\xcd\x4a\x2a\xa0\xd2\x10\x28\x07\x24\x35\x95\xa0\x00\x81\x60\x2b\xf1\x8b\xce\x0d\x14\x52\xa8\x97\xea\x85\x05\xb1\xa6\xc2\x68\x94\xba\x05\xb2\x80\xad\xd5\x5f\xac\x7f\xed\xb7\x2b\x28\x94\x71\x40\x4b\x40\x25\x35\x90\x86\x2d\xee\x8c\xbf\x6d\xd4\x58\xa9\x71\x6f\x2b\x72\x4f\x0e\xa1\xa6\xaa\x52\xad\x5b\x1d\x23\x0a\x14\xfa\x5b\x2a\x8c\x23\xd8\x36\xe4\x09\xca\x2c\xc9\x0a\x5d\x92\x93\x9a\xdc\x1f\x16\xc9\xf9\xe1\x51\x88\x33\x16\x69\x67\x25\x2d\x41\xbb\x76\x41\x4b\x6f\xa4\x2e\x61\x4b\x0a\xf4\x12\x57\x54\x0b\x2c\x8e\x6a\x71\x8d\x92\x48\xee\x65\x0b\x68\xd1\xe8\xb6\x26\x0f\x72\xed\xc2\xa1\x25\x34\xca\x6c\xc0\xfb\xb6\x69\xc0\x1e\x83\xd5\x6b\x94\x35\x78\x4a\xb5\x0f\x9e\x9c\xf7\x47\xb7\xa1\x4b\x2a\x4c\xdd\x28\x52\x6e\x25\x2b\x24\x63\xc9\xee\xa3\xad\x39\xda\x6c\x21\x75\x89\xb0\xc5\xd2\xd4\xc2\x9f\x7e\xb1\x04\xf4\x63\x2a\x0b\xfd\x1c\xbe\x7f\x0d\x82\xf0\xaa\x7f\x71\xff\xe8\xef\xda\xc3\x55\xd8\x79\x9e\x2f\x8c\x76\x28\x34\xf6\x1d\x5a\xa9\x97\xfb\xa7\xc0\x7f\x0e\x85\xdd\xf5\x0c\xc3\xcf\x39\xd0\xe5\x9b\x8c\x5b\xcb\x66\x27\x8c\xf3\xfe\x6b\xf6\xe0\x55\x79\xf9\x0e\x3b\xed\x25\x8d\x56\xc2\xbe\x96\xfe\x57\x39\x1f\xde\xaa\xf9\xf0\x7f\x8a\xa9\x77\x3f\xfe\x1f\x22\x4e\xdf\x8a\xe8\xfe\x4b\x3b\x34\xa5\x19\x04\xe1\x59\x9e\x8e\x53\x9a\xcf\xe7\x14\x27\xf3\x69\x74\x3e\xb8\x0e\x3b\x9d\xbf\x03\x00\x00\xff\xff\x75\x88\x25\x4c\xdb\x05\x00\x00" func runtimeSyntaxAwkYamlBytes() ([]byte, error) { @@ -1488,6 +1774,26 @@ func runtimeSyntaxAwkYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxCHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xd6\xd6\xe6\x8a\xd1\x4b\xd6\x48\xae\x29\x28\xa8\xa9\xa8\xd0\x54\xa9\x89\xd1\xcb\xd0\xc8\x40\xe2\x65\x66\xda\x83\x28\x8d\x94\xd4\x34\x4d\x15\x2e\x2e\x40\x00\x00\x00\xff\xff\x05\x31\xf3\x95\x31\x00\x00\x00" + +func runtimeSyntaxCHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCHdr, + "runtime/syntax/c++.hdr", + ) +} + +func runtimeSyntaxCHdr() (*asset, error) { + bytes, err := runtimeSyntaxCHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/c++.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxCYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x54\x4d\x93\xdb\x36\x0c\xbd\xfb\x57\xa8\x6a\x5a\x8b\x76\xec\x75\x92\x4e\xda\xb8\x1f\x9e\x5e\x7a\xca\xf4\xd6\x4b\x45\xad\x86\xa2\x20\x0b\xb3\x14\xa9\x21\x41\xdb\xdb\x20\xff\xbd\x43\xd9\xeb\x75\xb7\x99\xe8\x20\x89\x04\x1e\x01\x3c\x80\xaf\x43\x03\xf4\x38\xc2\x36\xd3\xcb\xe5\x6c\xd6\x02\x81\xa6\x6d\x36\xcb\xb2\x2c\x4b\x36\xab\x06\xd8\x66\xb9\x94\x6b\x5d\x68\x1e\x47\x3e\x9d\xc4\x2b\x96\x72\xdd\x17\xfd\xed\x12\x71\x37\x7d\x8b\x16\x3a\xf1\x2a\x9f\xcd\x7c\x34\x10\xb6\xd3\x39\xab\x0c\x5b\xb0\x84\x1d\x82\x9f\xce\x6a\xca\xdf\x57\x7f\xd7\x55\xb9\x59\x7d\x98\x7e\x96\x52\x36\xf9\xc5\xf5\x9c\x4c\x72\x2a\x54\x24\xc7\x9d\x71\x8a\xb8\x75\xb1\x31\xc0\x8d\x73\x86\x75\xaf\x3c\xa3\x25\x0e\xbd\xf3\xc4\xc6\xd9\x3d\x07\xfc\x07\x5c\xc7\x60\xe3\xc0\x07\x87\x2d\x07\x52\x84\x9a\xb5\xb3\x81\xce\x6f\x38\x8d\x9e\x03\xf9\xa8\x89\xa3\x45\x67\x39\x85\x6a\xa1\x63\x38\x11\x78\xcb\x45\xb4\x62\x17\x70\x6f\xa1\x65\xb4\x06\x2d\x88\x2f\xe7\x55\x84\x5d\x8a\x27\xb8\x28\x62\xbd\x13\x3b\xb4\x54\xfc\xc4\x6f\xde\xf3\xbb\xb7\xfc\xfe\x07\x1e\xc9\x0b\x21\x6a\xba\x01\xa7\x6c\x60\x00\x4b\x97\x13\xb4\x51\x21\x70\xe2\x36\x8c\x4a\x03\x13\x0c\xa3\x51\x04\x3c\xc6\xc6\xa0\xe6\xd1\xbb\xd4\x07\x68\x79\xf4\x78\x48\x86\x14\x3e\xf9\x33\xf5\x18\xb8\xf3\x08\xb6\xe5\x03\x7a\x8a\xca\x70\x0c\x68\xf7\x3c\x44\x52\x89\xa4\x83\x33\x8a\xd0\x00\x7b\xd8\x63\x20\xf0\x0c\xa7\xd1\xa0\x46\x12\x5f\x49\xa9\x73\x9e\xb1\xe3\x63\x9f\x90\xad\x63\x30\x01\x58\xab\x00\xdc\x42\xa7\xa2\x21\x0e\x47\x24\xdd\x7f\xed\x0c\xf2\x8f\x4c\xbd\x77\x47\xd6\x8a\x74\xcf\x6e\x04\xaf\xc8\x79\xb6\x70\xe4\x16\x0c\xd0\x7f\x28\x0d\x23\x68\x54\xe6\x02\xde\x3b\x72\xa9\x53\x84\x36\x02\x37\x1e\xd4\x03\x7b\xa0\xe8\xed\x2d\x66\xf4\x30\x7a\xa7\xb7\x59\x7e\x5f\x96\xdb\x89\xbd\x6d\x55\x2d\xbe\xbd\x5d\xa4\x19\x44\x0b\x3c\x7a\xb5\x1f\x14\xa3\xd5\x26\xb6\x90\xfa\xcb\xd8\xd9\x9d\x98\x7a\x6e\x5b\xec\x18\x4c\x81\x1d\x07\x10\x53\xe9\xca\xdb\xc4\x23\x78\xef\xbc\x78\x0a\x38\xcd\x8e\x9a\x4a\x9c\x17\xe5\xfd\x5c\x4a\x29\x2b\x2e\xd2\xa7\x94\xf9\x5c\x35\x9d\xf5\x74\x98\x76\x85\x98\xf3\x64\x2f\x8a\x72\xb3\x7a\x57\xed\xca\xcd\xea\xc7\xea\xd3\x9b\xd7\x6f\x3f\x5f\x4d\xa7\xf3\xd0\xff\xa1\x56\xdd\xd9\x32\xff\x12\x99\x75\xad\x88\x3c\x36\x91\xa0\xae\x6f\x4b\x93\xb2\x90\xb2\x28\xef\x45\xfa\x15\x52\x0a\xae\xeb\x42\x99\xf3\xd0\xaa\x30\x70\x13\xd1\x10\x5a\xee\xb1\x6d\xc1\x5e\xe6\x98\x47\xa5\x1f\xa0\x65\x0f\x81\x3c\x6a\xe2\x00\x9a\x9e\x6e\x80\xeb\xf8\x08\xea\x41\xd4\xf5\x35\x93\xc7\xa1\x71\x66\xfd\xd4\xbd\x6d\x96\x97\xeb\xed\xcf\xaf\x97\x0b\xfe\xf5\x1b\x29\xbf\xab\xf8\x17\xfe\x8d\xef\x78\xc5\xdf\xbf\x40\x34\x3e\xc5\xa1\x90\x10\x85\xf8\xf4\xb9\x62\x29\x4b\x96\xb2\x7a\x49\xe6\xda\xc6\xa1\xb9\x8a\xc1\x66\xf5\x61\x92\x00\x96\xb2\xd9\xdc\x12\x74\xab\x0b\x57\x68\xd2\x80\xeb\xbc\x45\xe0\x4e\x99\x30\x8d\x15\xff\xf9\xd7\xc7\x8f\xff\x73\x4f\x15\xdb\x7d\x02\xe4\x53\xd3\xd6\x5c\xde\xcb\xbc\x12\x0b\x99\x3f\xfb\x0e\x17\xde\xef\xee\xd6\x8b\x97\xbb\xd3\x32\x3d\x81\x94\x9f\x9c\xa4\xbc\x38\xa5\x07\x6c\x3b\x65\xb3\xb8\x7b\xde\x3b\x6b\x5f\x56\x56\xb3\x27\xfd\xb3\x49\x00\x57\x49\xb9\xd6\xc7\x1e\xe9\x7c\xed\x13\x4d\xcf\xbd\x5d\xbe\xca\x67\xff\x06\x00\x00\xff\xff\xa1\x4e\x79\xc7\x8e\x05\x00\x00" func runtimeSyntaxCYamlBytes() ([]byte, error) { @@ -1508,6 +1814,26 @@ func runtimeSyntaxCYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxCHdr2 = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xe6\xd2\x88\xd1\xd3\x48\xae\x71\xd6\x54\xa9\x89\xd1\xd3\xc8\xa8\xf1\x00\x33\x32\x33\xed\xc1\xfc\x94\xd4\x34\x4d\x15\x4d\x2e\x2e\x40\x00\x00\x00\xff\xff\x62\x51\x8f\x94\x27\x00\x00\x00" + +func runtimeSyntaxCHdr2Bytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCHdr2, + "runtime/syntax/c.hdr", + ) +} + +func runtimeSyntaxCHdr2() (*asset, error) { + bytes, err := runtimeSyntaxCHdr2Bytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/c.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxCYaml2 = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x54\xef\x6f\xdb\x36\x10\xfd\xee\xbf\x42\x53\xb3\x99\x4c\x6a\xc7\x6d\x87\x6e\xd5\x7e\x18\x83\xb7\x6e\x03\xba\xe5\xcb\x06\x04\x13\x15\x81\x22\x4f\x36\x11\x9a\x14\xc8\x53\xd2\xae\xd7\xff\x7d\xa0\xec\xcc\x86\x63\xa4\x41\xfc\xc5\xf4\xdd\x3d\xbe\xc7\x77\x77\x6e\x8d\x05\xfc\xd0\x41\x91\xa9\xd1\x48\x03\x82\xc2\x62\x94\x65\x59\x96\x12\x4e\xae\xa1\xc8\x72\x26\xc4\x94\x29\x5a\xf0\x13\x4a\xa7\x15\xfd\xb6\x39\x19\x33\xdf\x44\x34\xb4\xfc\x84\xe7\xa3\x51\xe8\x2d\xc4\x0d\x7e\x92\x19\x0d\x0e\x4d\x6b\x20\x14\x59\x2e\x44\x53\xfe\x34\xf9\xa7\xae\xca\xd9\xe4\xcd\x70\x38\x13\xa2\xc9\xb7\xa5\x1b\x05\xa9\x88\xb5\xd6\x4b\x24\xed\xfb\xc6\x02\xa9\x95\x0c\x64\x1c\x52\x5c\xf9\x80\x64\xbd\x5b\x52\x34\xff\x82\x6f\x09\x5c\xbf\xa6\x1b\x6f\x34\x45\x94\x68\x14\x29\xef\x22\x52\xc4\xd0\x2b\xa4\xde\x19\xef\x28\x5d\xab\xa1\x25\x78\x8f\x10\x1c\xb1\xde\xf1\x79\x34\x4b\x07\x9a\x8c\xb3\xc6\x01\x3f\xae\x81\xc5\x79\x62\xe1\xc4\x58\x5f\xcf\xf9\xdc\x38\x64\xdf\xd2\x8b\xd7\xf4\xea\x25\xbd\xfe\x9a\x3a\x0c\x9c\xf3\x1a\x0f\xc0\xd3\x44\xe3\x34\xe8\xed\x2d\x8d\xf7\x76\x9f\x20\xe9\x84\x35\x38\xdc\xe6\x6f\xbc\x95\x68\x2c\x50\x80\xa5\x89\x08\xe1\xa1\xe2\xd6\x07\x32\x2d\xdd\xae\x12\x40\x7b\x02\x1b\x81\x94\x8c\x40\x1a\x5a\xd9\x5b\xa4\x78\x6b\x50\xad\x1e\xba\x63\xe9\xd1\x27\x9b\xd0\xb8\x1e\xa8\x09\x20\xaf\x29\x00\xf6\xc1\xed\xa3\xba\x00\x5d\xf0\xaa\xc8\xf2\xab\xb2\x2c\x62\x27\x15\x14\x55\x75\xfa\x6c\xff\x47\xea\xb8\x71\x40\x5d\x90\xcb\xb5\x24\xe3\x94\xed\x35\x24\x83\xc9\xb4\x6e\xce\x07\xd3\x9d\x36\x2d\x81\x65\xa6\xa5\x08\x7c\x50\x2f\x83\x33\x6e\x49\x10\x82\x0f\xfc\x8e\x70\x68\x9c\x1c\x54\x8e\x59\x79\x35\x16\x42\x88\x8a\x58\xfa\x2a\x45\x3e\x96\x4d\xeb\x02\xde\x0c\x51\xce\xc7\xc7\x50\x29\xc7\x58\x39\x9b\xbc\xaa\xe6\xe5\x6c\xf2\x4d\xf5\xf1\xc5\xf3\x97\x9f\x1e\x28\x7e\xbf\x99\xc2\xb7\x72\xd2\x6e\x6a\xb7\x95\x59\xf6\x2c\xfb\x75\xb1\xc8\x9a\xde\x58\x34\x2e\x1e\x31\xb2\xae\x25\x62\x30\x4d\x8f\x50\xd7\xfb\x9e\x08\xc1\x84\x60\xe5\x15\x4f\x47\x2e\x04\x3f\xd6\x86\xba\x66\xd2\x6e\x26\x50\xc6\x35\x6d\x79\x68\x65\xb4\x06\xb7\x1d\x4a\xea\xa4\xba\x06\x4d\x01\x22\x06\xa3\x90\x22\x28\xbc\x1b\x67\xdf\xd2\x2d\xc8\x6b\x5e\xd7\x3b\xc5\x17\x1d\x04\x89\x3e\x64\x0b\x6f\x7d\xb8\x63\xfd\xb0\x6e\xbc\x9d\xfa\x6d\x2e\xad\x71\x39\x2d\xbe\x7b\x7e\x76\x4a\x3f\x7c\x21\xc4\x97\x15\x7d\x4f\x3f\xd2\x39\x4d\xe8\xab\x9d\xd2\x0d\xa6\x09\x49\x00\xc6\x22\xcb\x4b\xc6\x3f\x7e\xaa\x48\x88\x92\x84\xa8\x0e\xed\x9c\xba\x7e\xdd\x0c\xeb\xcd\xd2\x7e\xcf\x26\x6f\x86\xad\x26\x21\x9a\xd9\xbe\xc5\x29\x78\xaf\xdd\x3b\xf0\x9f\x7f\xbf\x7b\x97\x8f\x0e\xd3\xe9\xf1\x6e\x59\x6c\x5f\x99\x25\x1b\xc3\x30\xc9\x79\xfe\x7f\x0c\x9c\x3e\x88\xc4\x6b\xd3\x0d\xe3\x2e\xc4\x74\x17\xdd\xfb\x5f\xba\xfb\xec\x33\x75\xa0\x8c\xb4\x8b\x95\x0c\x3b\xe8\x63\xe5\x8c\x0f\xd5\x8c\x9f\x24\x66\xb7\x75\xd3\xe9\x59\xfe\x34\xa5\xeb\x61\xc8\xee\x29\x3c\x3f\x3f\x94\x78\xf2\x19\x31\xe8\xb5\x4f\x4d\xfd\xeb\xe2\xe7\x0b\xba\xbc\xbc\xa4\xb7\xbf\x5f\xfe\xf1\x0b\x2f\xe6\x8f\x20\x13\xe2\xf4\x5e\x7f\xc4\xe9\xf9\xd3\x19\xff\x0b\x00\x00\xff\xff\x70\x80\xff\x83\xa2\x06\x00\x00" func runtimeSyntaxCYaml2Bytes() ([]byte, error) { @@ -1528,6 +1854,26 @@ func runtimeSyntaxCYaml2() (*asset, error) { return a, nil } +var _runtimeSyntaxCaddyfileHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x4e\x4c\x49\xa9\x4c\xcb\xcc\x49\xe5\x72\x86\xb3\xb8\x00\x01\x00\x00\xff\xff\xd5\x4d\x82\x4b\x15\x00\x00\x00" + +func runtimeSyntaxCaddyfileHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCaddyfileHdr, + "runtime/syntax/caddyfile.hdr", + ) +} + +func runtimeSyntaxCaddyfileHdr() (*asset, error) { + bytes, err := runtimeSyntaxCaddyfileHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/caddyfile.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxCaddyfileYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x8f\x41\x6e\x83\x30\x10\x45\xf7\x3e\xc5\xc8\x25\x12\x94\x84\xee\xd9\x64\x91\x23\x74\xc9\x10\xc9\xc2\x93\xd6\x2a\x38\x96\x3d\x55\x14\x91\xdc\xbd\xb2\x09\x4d\x45\xab\x66\x16\x20\x7f\x3d\xcf\x7f\x3e\x98\x9e\xf8\xec\xa8\x86\x4e\x69\x7d\x8e\x47\x21\x34\x31\x75\x5c\x0b\x00\x80\x98\x58\x35\x50\x0d\x72\x37\x13\x52\x08\xff\xd9\x53\x98\x88\x0d\x18\x4d\x96\xcd\xc1\x90\xaf\x41\xee\x11\xc3\x33\xe2\x6b\x99\x23\x86\x4b\x56\xc8\x1b\x34\xb5\xc8\x7d\xde\x20\x9e\xaa\xfa\x65\xd3\x96\xeb\x2d\x6c\x8b\xb2\x59\x8f\x6d\x36\x53\xdd\xd1\x06\x56\x96\xab\xe0\xa8\x33\xaa\xdf\xbd\xab\xb8\x14\x31\x8c\x8f\x98\x54\x7c\xfd\x83\x62\x6f\xec\xdb\xe4\x1a\x27\xb0\xf2\x1c\x77\x4a\xf9\x9d\x91\xd5\x8b\x24\x7c\x18\x97\x8a\x11\xab\x7b\xfa\xe3\xd9\xf3\xfc\xe3\x9c\xae\xde\x74\x9c\x27\xe7\x8f\x5d\xca\xc7\x1c\xf1\x54\x5e\x10\xb3\xf4\x5f\xc5\xef\xaa\x40\xbc\xde\xdd\x87\x81\x2c\xff\x76\x7e\x5a\x2a\x67\x4b\x37\x68\x5a\x21\xbe\x02\x00\x00\xff\xff\xde\x9c\x93\x00\xd6\x01\x00\x00" func runtimeSyntaxCaddyfileYamlBytes() ([]byte, error) { @@ -1548,6 +1894,26 @@ func runtimeSyntaxCaddyfileYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxClojureHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xce\xc9\xcf\x2a\x2d\x4a\xe5\x8a\xd1\xd3\x48\xce\xc9\x8a\x2e\x4e\x8e\xb5\xaf\x49\x4d\xc9\xd3\x54\xe1\xe2\x02\x04\x00\x00\xff\xff\x82\xd0\x0b\x85\x1b\x00\x00\x00" + +func runtimeSyntaxClojureHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxClojureHdr, + "runtime/syntax/clojure.hdr", + ) +} + +func runtimeSyntaxClojureHdr() (*asset, error) { + bytes, err := runtimeSyntaxClojureHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/clojure.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxClojureYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x53\x51\x6f\xd3\x30\x10\x7e\xcf\xaf\xb0\xc2\x24\x12\x46\xba\xb2\x4d\xa0\x05\x41\x34\x15\x26\xed\x01\xed\x81\x09\x55\xc4\x79\xb0\x9d\x4b\xea\xcd\xb1\x23\xdb\x01\x0a\xe6\xbf\x23\x3b\xa1\x8d\xda\x49\xeb\x8b\xfd\x5d\xbf\xfb\xee\xbb\xbb\xb8\xe1\x02\xec\xb6\x87\x1c\x31\xa1\x1e\x06\x0d\x51\x54\x83\x05\x66\xf3\x08\x21\x84\xfc\xdf\x92\x74\x90\xa3\x18\xe3\x45\xc2\xc4\x43\x69\x58\x55\x38\xa8\x65\x7a\x12\x47\x91\x1e\x04\x98\x3c\x0a\xdc\x17\x68\xa5\xa4\xb1\x44\x5a\x13\x70\x86\xd8\x84\x17\x54\x29\x11\x24\x68\x62\xf5\x00\xae\x21\xc2\x40\x8a\x31\x8d\x0f\x99\x1d\x61\x5a\x4d\x54\xc9\xc5\x9e\xe3\xf5\xbf\x11\xc1\x6b\x24\x87\x8e\x82\x3e\xaa\x31\x86\x73\x14\x97\x18\x67\x55\x51\x2e\xb3\xab\xea\xb4\x78\xaa\xc6\x8e\xb9\xfc\x15\x58\xe5\x75\x76\x43\xb2\xe6\x39\xf6\xa8\x9b\x5c\x94\xcb\xec\x6d\xe5\xce\x43\xaa\x7b\x33\x1e\xe5\x79\x76\x55\xa5\xda\x83\xeb\xec\xfb\x5c\xc9\xfb\xbe\x95\x3f\x9e\x70\x0e\x5a\xab\x99\x6e\x79\xe9\xad\x04\xb5\x8b\xf2\x5d\xd0\x76\xcb\x23\xc9\x9d\xe6\xd7\x6d\x47\x95\xf8\xaf\x65\x02\x5a\xa8\x1e\x34\xb1\xa3\xea\x87\x8f\xa7\x18\x67\xaf\xce\x5e\x16\xd5\x2c\xed\x7e\xdb\x83\x39\x63\xc4\x58\x2e\xdb\x29\x79\xdc\x7f\x18\x39\xdd\x5a\x70\x66\xa3\xb4\x75\x09\xe5\x6d\x5a\x70\x69\x13\x68\x41\xa7\x85\x13\x4a\xb6\xae\x11\x8a\x58\x27\x87\xce\x51\xde\xd6\xc0\x9c\x26\x96\x2b\x49\x04\xff\x3d\x2d\x74\xef\xd0\x6a\x2e\x5b\xb4\xe1\xed\x46\xf0\x76\x33\x2b\xb8\x9b\xad\x09\x94\x7c\x4a\x41\xc8\x58\xa2\xad\xb7\x12\xc7\xbb\x18\xc8\xfa\x20\x62\x1e\x79\x1f\xfc\x62\xbc\xd8\x47\xa7\x4f\x11\xcd\x7e\xf3\x4a\x3d\x30\x4e\xc4\x6a\x43\xfc\x70\x12\x9f\x3b\x8c\xa3\x6d\xfc\xea\xff\x5c\xbe\xbe\xfc\xeb\x7c\x54\xc2\x4f\xc1\x25\x84\xbb\xe9\x09\x1b\x6f\x96\xd0\x70\x36\x4a\x77\x0d\x40\x1d\x00\x25\xec\x71\x4f\xd1\x60\x07\x2d\xc3\x75\x91\xce\xc6\xb0\x52\x5d\x07\xf3\x37\x11\xe0\x71\xcf\xef\x0f\x5b\x3e\x79\xa6\x37\xab\x6a\xff\x52\x92\xfb\xbb\x4f\x77\x6e\xbd\x5e\xbb\x9b\xdb\xf5\x97\xcf\x69\x5e\xc4\x51\xf4\x2f\x00\x00\xff\xff\x9a\x5d\xd4\x68\xd7\x03\x00\x00" func runtimeSyntaxClojureYamlBytes() ([]byte, error) { @@ -1568,6 +1934,26 @@ func runtimeSyntaxClojureYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxCmakeHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xce\x4d\xcc\x4e\xe5\xd2\x70\xf6\x4d\xcc\x4e\xf5\xc9\x2c\x2e\x29\x8e\xd1\x2b\xa9\x28\xa9\x89\xd1\x03\x4b\x68\xaa\x70\x71\x01\x02\x00\x00\xff\xff\x50\x65\xaf\x78\x22\x00\x00\x00" + +func runtimeSyntaxCmakeHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCmakeHdr, + "runtime/syntax/cmake.hdr", + ) +} + +func runtimeSyntaxCmakeHdr() (*asset, error) { + bytes, err := runtimeSyntaxCmakeHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/cmake.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxCmakeYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x53\xdf\x6f\x9b\x3c\x14\x7d\xe7\xaf\x40\x7c\x95\x0a\xdf\xa7\x46\xf9\x36\x69\x5b\x79\x89\x28\x71\x53\x24\x7e\x64\x40\x9b\x64\x71\x86\xa8\xb9\x59\xbd\x10\x83\x8c\xb3\x75\xea\xdd\xff\x3e\x41\x92\x2e\x4b\x2a\x6d\x2f\xf3\x0b\xf8\xda\xf7\x9c\xa3\xe3\x73\x97\xbc\x04\xf5\xad\x06\x5b\x67\xeb\x7c\x05\x9a\x56\x80\x02\xa6\x6c\x4d\xd7\x75\xbd\x3d\x14\xf9\x1a\x6c\xdd\x30\xdd\x20\x5f\x81\xcf\x1b\xd5\x50\xda\x53\x8f\x0a\x29\xed\x75\x2d\xd6\x99\xa1\x69\x72\x53\x42\xb3\x6d\xba\xd0\x79\x01\x42\xf1\x25\x07\xd9\xfb\x92\x4b\x5b\x37\x3e\xce\xe7\x76\x53\xe7\x0c\xec\xc5\xe2\xdf\xb9\x73\xf1\xa1\x7f\x71\x99\x2d\xfe\x33\x76\xf7\x6b\x09\xb5\xac\xd8\xf1\x45\x93\x0b\x56\x6e\x0a\xc0\xdd\x37\x2b\xb8\x04\xa6\x2a\xc9\xa1\x79\xae\xc1\xa3\x02\x29\xf2\x32\x5b\x37\xb5\xac\x3e\x03\x53\x16\xa5\xf7\x86\xb6\x83\x6e\x54\xae\x60\x0d\x42\x1d\x83\x53\x7a\x6f\x9a\x50\x36\x80\x20\x0a\x6b\xc0\x97\xd8\x6d\xcc\x6e\xf7\xf5\x81\x97\xfb\xff\x65\x25\x21\x67\x0f\x78\x2f\x21\x5f\x6d\xb1\x4f\xa1\x5b\x34\x37\x1a\xcf\x30\x8c\x52\x74\xa3\x20\x70\xc2\x21\x8e\xe3\x68\x4c\xe2\x74\x86\xe3\xc8\xf7\xdc\x19\xa6\x4e\x3c\x22\x29\x92\xa9\x97\xa4\x09\x7a\x49\x66\x0e\xbd\x98\xb8\x69\x14\xcf\xd0\xb9\x4a\x22\xff\x36\x25\x16\x0e\xc9\xb5\x17\x92\x61\xcb\x74\xa0\xf7\x25\xd2\x83\xe3\x96\x3f\x8a\xb1\x65\xf5\x92\x2c\x24\x13\x12\x67\xe9\x8d\x13\x62\xe0\xa4\xee\x0d\x49\xd0\x4c\xd2\x18\xef\x48\x9c\x78\x51\x98\x59\x03\xd3\x27\x49\x82\xa3\x98\x38\x29\x89\x91\xbc\xbf\x75\x7c\xeb\x84\x71\x4f\x59\x03\xe3\x79\xf9\xb2\x81\xad\x43\xe6\x72\x23\x98\xe2\x95\xc0\x75\xce\x64\x65\xa1\x04\xb5\x91\xc2\x7a\x46\x60\x95\x68\x54\x2e\x54\xaf\x51\x92\x8b\x4f\xdb\x98\xb4\xab\x51\xb9\xec\xec\x33\x8c\xe7\x1a\x88\xe2\xa8\xd2\xac\x78\xdd\x79\x4c\x69\xef\x67\xf5\x20\x71\xfb\x75\xc8\xb4\x15\xed\x3e\x74\xf9\xdb\xb5\xfe\xa9\x9c\xf3\x63\x35\xe7\x7f\x4f\xcc\x3e\xfb\xa7\x9e\xd0\x33\x93\xd2\x27\x24\xe1\x1d\xa5\x4f\xd6\x89\x41\xf4\xfb\x31\xbd\x3e\x5f\x68\xa7\x13\xd8\xbd\xc9\x2e\xa2\xce\x78\xec\x13\xbc\x0d\xbd\x29\x4e\xbc\xf0\xf5\x2b\x74\x67\xa3\x89\x17\xe2\x55\x14\xfb\x6d\x76\x02\x2f\x1c\x4d\x30\x48\xee\x5c\x33\xf3\x86\x04\xdf\xf4\xf1\xed\xff\xf8\xae\x8f\x97\x7d\x6b\xf0\xcb\x5c\xb1\x6a\xdd\xa5\xf0\x44\xf6\x3f\xc7\x42\xcf\x7e\xe3\x92\xaa\x8a\x56\x9e\x99\x46\xc3\x08\xa7\xd3\x29\x5e\x7b\xd3\x80\x58\xf6\xc0\xd0\xb4\x1f\x01\x00\x00\xff\xff\x28\x8d\x1c\xb5\x9d\x04\x00\x00" func runtimeSyntaxCmakeYamlBytes() ([]byte, error) { @@ -1588,6 +1974,26 @@ func runtimeSyntaxCmakeYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxCoffeescriptHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xce\x4f\x4b\x4b\x4d\x2d\x4e\x2e\xca\x2c\x28\xe1\x8a\xd1\x83\x70\x55\xb8\xb8\x00\x01\x00\x00\xff\xff\xa2\x22\xc2\xb2\x18\x00\x00\x00" + +func runtimeSyntaxCoffeescriptHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCoffeescriptHdr, + "runtime/syntax/coffeescript.hdr", + ) +} + +func runtimeSyntaxCoffeescriptHdr() (*asset, error) { + bytes, err := runtimeSyntaxCoffeescriptHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/coffeescript.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxCoffeescriptYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x52\xcd\x8e\xd3\x4c\x10\xbc\xfb\x29\xfc\xf9\x5b\x21\x67\x91\x03\x57\x46\xb0\x80\xf8\x91\x38\xa0\xbd\x70\x88\x88\xad\xd5\x78\xa6\x27\x1e\x65\xd2\x6d\xcd\xb4\x15\x8c\xfa\xe1\x91\x93\x6c\xfe\x16\x2d\x7d\xb2\xda\x3d\xd5\x55\xd5\xe5\x7c\x00\x1e\x7b\x50\xb9\x21\xe7\x00\x92\x89\xbe\xe7\x2c\xb3\xc0\x60\x58\x65\x79\x9e\xe7\xd3\x0c\xea\x0d\xa8\xbc\xa8\xeb\xf9\x7e\xee\xa6\xc8\xb2\x38\x04\x48\xfb\x91\x2a\x4f\xe3\xa6\xa5\x30\xa7\x1e\xa2\x66\x8a\x2a\x2f\x96\xff\xbd\x90\x77\xaf\x6e\x5f\x56\x6f\xef\x1a\xa9\xeb\xb6\xd4\x68\x85\xa2\xf8\x24\x3e\x21\x0b\x12\xcf\xea\xba\x2d\x0e\x00\xde\x02\xb2\x77\x1e\xe2\xdc\x04\x9d\x92\xca\x8b\x72\xf9\xb1\xfa\xa9\xab\xdf\x0f\xcd\xe1\xe3\x75\xf5\xe6\xa1\xb9\x55\xcb\xa5\x4a\xbd\x36\xa0\x9a\xe6\xb6\xac\xee\xa4\xae\xcb\x99\x54\x77\xb3\xe2\x92\x4b\x1b\xb5\x59\x03\x4f\x48\xcb\x72\xd6\x1c\xff\xb2\x66\xd8\x00\xb2\xca\x27\x41\x6d\xe9\x28\x0a\x39\x31\x84\xec\x71\x00\x69\x23\xe8\xf5\x81\xe3\x10\x82\x0c\x18\x20\x25\xe1\xce\x27\x81\x90\x40\xbc\x93\x08\x3c\x44\x3c\xe7\xff\x04\x96\xe3\x28\x46\xb3\xe9\xc4\x79\xd4\x21\x8c\xc2\x5d\xa4\xad\x20\x6c\xc5\x42\x00\x06\x99\x9c\x27\x27\x1e\xc5\x63\x62\x8d\x06\xc8\x3d\x8b\x69\xa1\x1d\x56\x2b\x88\x92\xb6\x7e\x42\xde\x76\x3e\x80\x58\x92\x9d\x65\x02\xbf\x18\xd0\x26\x49\x43\x0f\xf1\x59\xa0\x01\x2d\x38\x8f\x60\x85\x3b\xc0\x47\x89\x03\xb2\x0f\x12\x88\xfa\xc9\x90\x76\x94\x6d\x07\x17\x22\x0d\xed\x78\xf2\xbc\x25\x0a\x27\xa1\x03\x88\xd3\x93\x33\x23\x24\x41\x12\x42\x21\xe7\xfe\x7e\x5d\x95\x17\x1f\x2e\xce\x59\x64\xd7\xe0\x89\xa3\xc7\xd5\x3e\x59\x53\x25\xd6\x91\xa7\xf4\x15\xc5\xb1\x07\x68\xaf\x3a\x69\xed\xfb\x5d\x44\xeb\x7a\x7e\xea\x9e\x85\xf4\xb1\xce\x37\xf5\x60\xbc\x0e\x9f\x3a\x1d\x4f\x4f\x8f\x74\x36\x3b\xc7\x9e\xd0\xf8\xff\x9a\xc5\xcd\x3f\xd6\x31\x59\x9a\xe2\xfc\xe3\xfe\xf3\xbd\x2c\x16\x0b\xf9\xfa\x6d\xf1\xfd\xcb\x4c\xbd\x2f\xb2\xec\x4f\x00\x00\x00\xff\xff\x82\xe2\xd1\x55\x81\x03\x00\x00" func runtimeSyntaxCoffeescriptYamlBytes() ([]byte, error) { @@ -1608,6 +2014,26 @@ func runtimeSyntaxCoffeescriptYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxColortestHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xce\xcf\xc9\x2f\x2a\x49\x2d\x2e\xe1\x72\x06\xb1\x42\x52\x8b\x4b\x54\xb8\xb8\x00\x01\x00\x00\xff\xff\x45\x0d\x6f\xbc\x16\x00\x00\x00" + +func runtimeSyntaxColortestHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxColortestHdr, + "runtime/syntax/colortest.hdr", + ) +} + +func runtimeSyntaxColortestHdr() (*asset, error) { + bytes, err := runtimeSyntaxColortestHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/colortest.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxColortestYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x64\x8f\x31\x8a\xc3\x30\x10\x45\x7b\x9d\x62\x10\xdb\xee\x05\xd4\x2d\x5b\x2d\x2c\x21\x45\x4a\x35\x92\xfc\xe3\x98\xc8\x76\x90\xc7\x04\xdf\x3e\xc8\x32\xf6\x18\x75\xf3\xff\x7b\x48\x33\xf7\x2e\x82\x97\x17\x0c\x85\x31\x8e\x89\x31\xb1\x52\x0d\x18\x81\x8d\x22\x22\xca\xc2\xe0\x7a\x18\xd2\xbf\xd9\xb8\x61\xe2\x2f\xad\x54\x9a\x23\xa6\xa2\x7c\x93\x8f\x2e\x3c\x0d\x69\x6b\xfd\xf5\xff\xe7\xef\x62\xad\xd7\x1b\x4a\x68\x0a\x48\x68\x44\xdd\x26\x60\x28\x60\x1d\x05\x5a\x10\xe3\xf8\x2e\xac\xcc\x02\xfa\x38\xa3\xa0\x3c\x09\xd0\xbb\x16\x03\xbb\xc2\xb6\x20\x70\x58\xdc\xf6\x5d\x9e\xe4\x83\xa9\x6b\x1f\xbc\x6f\xb9\xc7\x4a\x11\x1b\x8b\xa2\xd2\xe4\xf6\xb2\xa9\x44\x71\xc9\x9e\x2b\xe9\x74\xd5\xa9\xaa\xd4\xe3\xc2\x23\xaf\xd2\x27\x00\x00\xff\xff\xcc\x8b\xc4\xc2\xe3\x01\x00\x00" func runtimeSyntaxColortestYamlBytes() ([]byte, error) { @@ -1628,6 +2054,26 @@ func runtimeSyntaxColortestYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxConfHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xce\xcf\x4b\xe3\x8a\xd1\x4b\x8e\xce\x8f\xb5\xcf\x4b\x53\xe1\xe2\x02\x04\x00\x00\xff\xff\x62\x3a\xae\x3b\x11\x00\x00\x00" + +func runtimeSyntaxConfHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxConfHdr, + "runtime/syntax/conf.hdr", + ) +} + +func runtimeSyntaxConfHdr() (*asset, error) { + bytes, err := runtimeSyntaxConfHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/conf.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxConfYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8d\x31\x0e\xc3\x20\x0c\x45\x77\x9f\xc2\xa2\x59\xcb\x01\x58\x7a\x90\x90\x01\x11\x53\xa1\x06\x27\xc2\xee\xd0\xdb\x57\x14\x29\x95\x68\x19\x1f\xfe\xef\xa5\xbc\x91\xbe\x0e\x72\x18\x77\x4e\x00\x2b\x29\x45\x75\x80\x88\xd8\xfe\x38\x14\x72\x68\xbc\xb7\x71\xde\x97\x1b\xa7\xc9\x00\xd4\xe7\x46\xd2\x6f\xae\x6d\x27\x1a\x58\xad\x68\xcd\x7c\xef\xb8\x3d\xd1\x50\xb5\x6d\x8d\x39\x19\xf1\x3a\x10\x79\xe4\xe3\x13\xf0\xde\x7e\x69\x2f\xe0\xbc\xc0\x59\x29\x85\x58\x7f\xed\x97\x51\x3e\xfd\xb5\xbc\x03\x00\x00\xff\xff\x7f\xd4\x74\x86\xe8\x00\x00\x00" func runtimeSyntaxConfYamlBytes() ([]byte, error) { @@ -1648,6 +2094,26 @@ func runtimeSyntaxConfYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxConkyHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xce\xcf\xcb\xae\xe4\xd2\x88\xd1\xd3\x02\xb3\x8a\x92\xf5\xb4\x54\x6a\xc0\x4c\xbd\xe4\xfc\xbc\x34\x4d\x2e\x2e\x40\x00\x00\x00\xff\xff\x5a\x1e\x47\x5c\x22\x00\x00\x00" + +func runtimeSyntaxConkyHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxConkyHdr, + "runtime/syntax/conky.hdr", + ) +} + +func runtimeSyntaxConkyHdr() (*asset, error) { + bytes, err := runtimeSyntaxConkyHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/conky.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxConkyYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x59\x49\xaf\x1c\xb7\x11\xbe\xeb\x57\x8c\x9f\x85\xc0\x72\x20\xc1\x96\x37\x59\x59\x9c\x20\xc8\x35\x27\x23\x08\xe2\x76\x98\x6a\xb2\xba\x9b\x18\x6e\xe2\x32\x8b\x4d\xff\xf7\xa0\x8a\x64\xcf\x8c\xe4\xdc\x82\x1c\x5e\xd7\x57\x1f\xd7\x61\x17\x6b\xe9\xb7\x68\x83\xf9\x1a\xf0\xed\x41\x7a\x77\xbc\x3e\x7b\xa6\x30\xa3\xcc\x6f\x9f\x1d\x0e\x87\x03\x35\x3a\xb0\xf8\xf6\xf0\xf4\xc9\x34\xbd\xfa\x94\xbb\x44\xf9\xea\xd3\xe7\x95\xe1\x2b\xe9\xdd\xf2\xe2\xe9\xd9\xb3\x58\x0c\xa6\x36\xe6\xe5\xa1\x4d\xf7\x34\x4d\xf3\x27\x60\xf4\xea\x2c\xba\x5c\x21\x04\x74\x4a\xd0\x8c\x75\x06\x79\x5c\xa3\x2f\x4e\xd5\xd9\x47\x85\x51\x68\xe7\x30\x0a\x0b\x71\xd5\x6e\x70\xbe\xe4\x0f\xb8\xb3\x56\x79\xab\xd2\x1b\x1f\x3f\x6b\xe2\xf3\x26\x5e\x37\xf1\x45\x13\x5f\x36\xf1\x55\x13\x5f\x37\xf1\x4d\x13\x6f\x9a\xf8\xb6\x89\xbf\x55\x19\x8a\x80\xd3\x2a\x12\xd8\x60\x30\x55\x85\x0b\x14\x93\xc5\x0c\x51\x6c\xa8\xd7\x2d\x3f\x50\x6d\x07\x83\xe1\x39\x76\x6d\x85\xb2\xe2\xfb\x83\x1a\xf9\x38\x6c\x8d\x10\xb6\x0f\x3a\x32\xf9\xd8\xd1\x97\x6c\xb4\xc3\xf7\xd6\x49\x1b\xa8\x9d\xd3\xe9\xa8\xfd\xe3\x2f\xd0\x29\x18\xb8\x56\xe5\xcb\x6c\x50\xcc\x65\x59\x30\x56\x15\xe1\x2c\xda\x31\xa6\xa6\xb4\x05\x1f\xa8\xbe\x5e\x53\x78\x99\x54\xf1\x92\x23\x08\x87\x67\x6e\x59\xbc\xcb\x75\xf1\xd1\x42\x16\x5b\xb1\xe0\x44\x44\x50\x30\x1b\xac\x2b\x04\x71\xe1\xe7\xb5\x6e\x39\x07\x11\x71\x89\x98\xb6\xaa\x17\x51\x82\x48\x39\x6a\x99\x1d\xa6\x54\xb5\x85\x50\xb5\x35\x7a\x16\x12\xe4\x86\x62\x31\x25\x6d\x42\xbb\x8c\xf1\x04\xe6\xa1\x29\xe9\x9f\xb0\x9a\x02\x82\xf7\xb4\x79\x7f\x14\xc1\xa7\xfc\x3e\x15\x5b\x27\xe3\x41\x31\x48\x5b\xc9\xca\x9f\x1d\x37\x37\x26\x43\xcc\x25\x34\xc2\x82\x36\x22\x05\xef\x4d\xb5\x70\x11\xc1\xc7\x2c\xac\x77\x3a\xfb\x28\xa4\x77\x0e\x65\xd6\xde\x25\x6e\xcc\x78\xc9\xfd\xbd\x90\x5a\x12\x46\xe6\x48\xd3\xb6\xd8\xd1\xa6\x1d\x6b\xfd\xb5\x0e\xb5\x37\x06\x25\x36\xda\x36\x81\x00\x29\x9d\x7d\x54\x4d\xf1\x31\x57\x5b\x92\x96\x82\xde\x1a\x5f\x86\x7e\x0c\xf6\x9a\xde\x99\x3e\x8c\x61\xeb\xcb\x90\x76\x31\xd8\x7d\x3a\x56\xd5\x5c\x1d\xe6\x07\x8b\x70\xbe\x5b\x41\xaa\xee\xa4\x95\x06\x31\x6c\xc4\x97\x2c\xb2\xa7\x9f\x9c\xbc\xc1\xa1\xd2\xdb\x1b\xd8\xc9\x12\x13\xa6\xa1\xa6\xac\x30\xc6\xa1\x5d\xaa\x3f\x61\x8c\x5a\xa1\x28\x79\x79\x23\x8c\x97\x40\xd3\x9c\x30\x9e\xa3\xce\xd8\xee\x3b\xbd\x86\xb3\x76\xca\x9f\xef\xa0\x90\x06\x52\x7a\x20\xbc\xf1\x25\xde\x33\x9b\x76\xf9\xa1\x4b\xd6\xf9\x61\x3e\x91\x23\xb8\x14\x20\x92\x8b\xb9\xa7\xaf\x01\x6b\x00\x25\x02\x46\x89\x34\x49\xf0\xe1\x8b\x9a\xd0\x25\x1f\x85\xc2\x93\x96\x58\xd3\x46\x6f\xbd\x38\x9d\x13\xe1\x71\x21\x22\xb8\x15\xef\x89\xc4\xbf\x29\x65\x1d\x82\x41\xb5\x5f\x98\x8c\x36\x60\x84\x5c\x22\xf2\x24\x4c\x18\xc8\xb8\x83\xcf\x76\xf4\xf9\x8e\x5e\xef\xe8\x8b\x1d\x7d\xb9\xa3\xaf\x76\xf4\xf5\x8e\xbe\xd9\xd1\x9b\x1d\x7d\x5b\xd9\x00\xd9\x32\xdb\x9b\x6d\xf7\x24\x6b\x8b\x49\x68\x27\x12\x4a\xef\x54\xaa\xd9\x07\x41\x1e\x2e\x61\x80\xc8\x7b\xf3\x41\x90\x4b\xef\x76\x99\x7d\x06\x23\x62\x71\x82\x87\xd6\x12\x14\x64\xbc\x99\xe0\x7b\xba\xf0\x4e\xcc\x90\x33\xc6\x6b\x2d\x81\x0e\x17\x12\xd6\x92\x50\xa4\x00\x12\x23\xc3\xcb\x92\xeb\x65\xc9\x60\xc2\x06\x04\xc8\x65\xbc\x98\xa6\xf9\xe9\x19\x07\x88\xc3\xe1\xe3\xc3\x5f\xbc\x5b\xf4\x5a\x22\xd0\x2d\x3b\xe8\x8c\x96\xc2\x4f\xca\xe0\x72\xea\x51\x24\x65\xc8\x48\xa1\x63\x84\x92\xd9\x9f\xb0\xce\x68\xfc\xb9\xce\x3e\x67\x6f\x85\xc1\x25\x0f\x1c\xf9\xd2\x75\xc5\x6a\xa5\x0c\x56\x85\xe9\x98\x7d\xa8\xca\xcb\x63\x75\xbe\x3a\xef\xb0\x3a\xf2\x5d\x66\xb7\xdb\x9a\x8e\x3a\x88\x00\x2b\xc6\x06\x33\xa4\xe3\x0c\x91\xde\xb7\x3c\x5e\xf9\xbc\x78\x1d\x02\x6d\x11\x42\x7d\x85\x26\x5a\x87\x8e\x63\xbf\xfd\xac\xf4\x6e\xc5\x29\x94\x9e\xce\x5f\xd5\x2b\xa6\xf7\x0e\xe3\xef\x10\x35\x39\xd0\xf1\xcb\x43\xc4\x10\xbd\x1c\xbf\x5b\x06\x0d\x12\x14\x84\x8c\xb1\x92\xb6\x80\x63\x49\xc6\x50\x41\xa9\xc8\x8f\x54\x39\xd8\xca\x26\x62\x85\x20\x4b\x48\x6a\x48\x21\xd9\x47\xef\xda\x06\x71\xbd\xa9\x06\x52\xbe\x50\x94\xd8\x09\xed\xf0\x74\xd3\xc8\xab\xde\x2b\x74\x40\xf7\x3a\x07\xb9\x47\x86\xae\xce\xce\x58\xaf\xd0\xec\x1a\xd9\xdf\xae\xd0\x7b\x2e\x69\x57\xdb\x8f\x1a\x8a\xb6\xc8\x67\x3b\x88\x12\x12\x4d\x55\x21\x58\xb1\x1f\x49\xb0\xc3\x26\x85\xd1\x0b\x3e\x10\x34\x43\x85\xa2\x40\x6a\x5f\x92\xe0\x7d\xdf\x34\x9d\xf9\x4e\xdc\x18\xb9\x81\x73\x68\xd2\x1d\x35\x72\xa0\x7b\x2a\xe2\xbb\x82\x4e\x5e\xef\x38\x83\x6e\xcd\xdb\x07\xc4\x7e\x11\x6f\x0d\x16\xb4\x13\x27\x6f\xca\xc3\x9c\xe4\x8d\x8d\x4e\xf9\xc3\x89\xf6\x96\xe0\x93\xa6\xfb\x72\xdf\xf6\xdf\xa9\x5f\x59\x79\x1c\xf5\x4e\x34\x77\x3a\x2e\xf4\x38\x33\x3a\xa4\x81\xbb\xff\xdc\x75\xf6\x99\xf5\xe1\x74\x67\xa3\xdd\xb1\xce\x36\x5c\x04\x98\xb9\xd8\x0e\x63\xd6\x29\x37\x3c\xce\x99\x95\xbe\x26\xc3\x08\xb2\x8f\x2c\x51\xd7\x11\xa2\x38\xee\xab\x2a\xad\xe2\xdc\x27\x7b\x11\xb4\x6a\xe9\xda\xff\x2c\xf5\xb3\x33\x25\x33\x9c\xc4\x8a\xb9\x68\xa3\x04\x44\xb9\x3d\x10\xe4\xf8\x3a\x71\xc2\x98\xe8\x94\x65\x28\xf4\x47\x07\x24\x43\x69\x46\x4f\x80\x6d\x5d\x96\x68\x6e\x2e\xa7\xc9\x66\xea\xbb\x52\xec\x8c\x2d\x65\x13\x21\x7a\xca\xb3\x7b\xfe\x36\xd2\x38\xca\xa5\x06\xe6\x00\xda\x95\xb6\xc2\x1d\xbe\xef\xd9\x13\xc7\xd1\x3d\x47\x3d\x17\x36\x0a\xca\x7f\x52\x40\x54\x37\xb4\xdc\x60\x9f\x33\xc2\x92\xc9\x26\x4d\xaa\x68\x12\x56\x74\x4a\x2f\x15\x5d\x8e\x3e\x5c\x05\x9c\x40\x9b\x5d\xa3\x1f\x3e\x30\x59\xc6\x4d\xf1\xde\x70\x00\x42\x0a\x1a\x78\xc2\x8a\x17\x94\xfc\xe0\x31\x17\x94\xed\xb4\x18\xf1\xc2\x84\x74\x7b\x8e\x2e\xfa\xd6\x47\xdf\x3a\x85\xf6\xd4\x75\x31\xb0\xae\xa8\xfa\x66\xef\x13\x51\xb6\xc3\xc5\xc7\x33\x44\x75\xeb\x10\xf1\x1d\x3f\xc4\x5a\x97\x76\xf5\x9b\xa0\xfb\x8b\x84\xef\x65\xfb\x3d\x4b\x6a\x71\x74\x49\x2d\x85\x58\x12\x25\x5a\x6a\xc8\xd6\x69\xf5\xd9\xd7\xf5\x2c\xf4\x02\x12\x19\x84\xba\x29\xc5\x9e\x6b\xa3\xd7\xb2\xc5\xba\x9d\xad\x77\x55\xbf\x96\x55\xbf\x39\x0a\x90\xe3\xee\x91\x36\x6b\xdf\x41\xc9\xd9\xbb\x74\xdf\x46\xb1\x9a\x27\x22\x85\x5c\x9f\x58\x28\xc5\x0e\xf6\x91\xb8\x1b\xc1\xf1\xe6\xa1\xd7\x8d\xb9\xeb\x96\x30\x6a\xca\xac\xdf\x1c\x77\x6b\xd6\xb3\x15\x33\x77\x6e\x49\xf9\x6c\x69\x10\x4b\xda\x42\x63\xba\xa3\xd2\x92\x06\x4b\xef\x4e\x2d\x8f\xde\xb1\x0f\x94\xde\xa3\x0d\xf9\xca\xe0\xa2\x53\xd6\x6e\x25\xbc\x9e\xe9\x69\x21\x4b\x2e\x01\xac\xbe\x50\x3d\x57\x32\xb2\xe6\x8b\xa3\x70\x48\x90\xb2\x60\x03\xd7\x3e\x2c\x16\xe7\x3a\x4c\x16\x82\x26\x5f\x2e\x34\x25\x07\xc6\xb4\x01\x25\xb4\x27\xdd\x50\x17\x09\x5f\xac\x4d\xaf\x47\xe2\x4e\x9d\x2c\xac\xc8\x65\x86\xb0\x98\x12\xac\xd8\x8a\x0e\x51\x5c\x42\x74\x55\xfb\x44\x3e\xa6\x18\x8c\x55\x47\x59\x8f\x18\x1d\x9a\x6a\x20\x70\x70\xa7\x10\x43\xbe\x27\x55\x0a\x65\x70\x5a\xeb\x2d\xa4\x99\x02\x5c\x4e\x90\x3d\x91\x6c\x36\xcb\x68\xb4\x8b\x00\x31\x61\xb5\x20\x37\xf2\x32\xcd\x1c\xed\xec\x2f\x49\x82\xab\x16\x2d\xfd\x9d\x75\xde\x86\xc7\xb3\x68\x69\xba\x47\xb6\x33\x08\xe9\xca\x86\x6a\xd1\x0e\xd9\xd6\x24\xc0\x4b\x5a\xb4\x16\x2e\x24\xd8\x3e\xf9\xa0\xdb\x93\xe7\x20\x60\xba\xd8\x89\x21\x98\xf0\xb2\xbb\x6e\x46\xcd\x73\x13\x1c\x8e\x9b\xb0\x2c\x91\xaf\x19\x61\xce\xea\x09\xec\xad\xc9\xbb\xb5\x81\x3c\xa8\x3d\x78\x37\x25\xf7\x21\x9c\x71\xf6\x99\xb8\xde\x1a\x72\xb8\x47\x32\x87\xbe\x1b\x42\x7d\x37\x41\xf1\x89\xb3\x1c\xbb\x0a\x4a\xa0\x81\x40\x17\x94\x70\xdb\x55\x50\x23\x84\x12\x64\xff\xcb\x06\xd6\x03\x19\xe1\x08\x4e\xf9\x36\x7d\xc4\x80\xd0\xd8\x64\xc9\xae\x19\xb5\x6b\x43\xb0\xef\x9b\x10\x07\x2b\x42\x27\xdf\x4b\xb3\x4a\xb3\x27\x8c\x27\x8c\xd5\xe1\xb9\xfb\x1d\xe7\x55\x4b\x18\x06\xe8\x41\xd3\xf9\x6e\xb2\xbd\x06\xab\x7e\x4e\x8a\xe2\x80\x2a\x32\x37\xa5\xd5\x27\x89\xaf\xe1\x03\xc1\x2e\xe1\x81\x39\x79\xd3\x07\x9d\xd0\x29\x1f\xab\x5f\x96\x84\xb9\xf6\x0a\xbe\x45\xcb\x30\xef\xd9\x7a\xd0\x94\xf4\x45\xef\x73\x83\x2d\xb8\x36\x7c\x56\x2c\xd1\x9d\x74\xf4\xee\x1e\x0b\x4a\x3c\x1a\x71\x69\x9d\x1d\x55\x4e\x04\x7c\x40\x47\x27\x9e\x58\xeb\x25\x18\xc3\xa8\x7d\xd4\xb9\x2d\xd9\xcc\x61\x47\xfd\x28\x9a\xce\x85\x64\x87\xda\x0d\xe4\x4b\x6b\xcf\x1b\x85\xb8\x74\x87\x6f\x9b\x21\xf3\x11\xed\xce\xf2\x5d\xdd\x39\xaa\x8a\x1f\x18\x06\x45\xf7\x1f\x38\x40\x1a\x60\xd9\xd1\x3a\xfa\x0c\x90\xd6\xbd\xcf\x40\x1c\x73\x09\x9c\x6c\x40\x38\x76\xc8\x01\xa3\x41\x23\x07\xb9\x9d\x6d\x47\x31\xa5\x8e\x14\x64\x18\x63\xf2\xe8\x38\xce\xf5\x64\x8d\x9e\xc7\xe4\xfd\xc8\x5a\x48\xa7\x82\x8f\xe2\x1c\x97\xb0\xc3\x81\x35\x4c\x96\x4f\xa5\x02\x26\xaa\xd0\xf9\x8c\xb2\x0c\x0d\x14\x45\x20\x18\xbd\x07\x44\xda\x49\x77\xae\xe2\x6e\x54\x67\xc6\x79\x27\x19\xbd\x31\x95\x56\xe9\xe3\xf8\x3b\x50\x33\x28\x76\xc8\xf5\xe6\x96\xb9\x50\xda\x35\xf6\x3e\x77\xaa\x3f\xe3\x7d\x33\x1b\x71\xf2\xee\x4a\xf6\xdd\xf2\x92\xbd\xa8\xde\xa8\xe0\xa2\x32\x2d\x9d\x21\xf0\x83\xa7\x3e\x43\x60\x9f\x47\x80\x5c\x1c\xc9\xb6\xca\x35\xf1\x1d\xcb\x30\xd7\x4c\x29\x4a\x96\x41\x04\x0a\x1b\x0c\x7c\xcc\x14\x7f\xff\x4f\x85\x38\x25\x32\xb9\x27\x29\xe3\x18\xd9\xf8\xb2\x17\xf3\x35\x23\x97\xe1\x5c\x36\x6a\xdf\xaa\x47\xb4\x2c\x7b\xa7\x0c\x86\xb2\xb2\x86\x4a\xa8\x39\x42\xda\xf6\xd7\x96\x7f\xe2\x6e\xab\xee\xde\xac\xec\xc0\x3d\x66\x44\xc5\xbd\x9f\x02\x15\xf7\x68\x01\xcd\x78\x86\xc2\xce\x88\x64\x7b\x17\x5d\x2e\x03\xb4\xd8\x52\x02\xaf\xde\x44\xbf\xbe\xfc\x05\x8c\x7d\x5f\x87\xcd\x71\xf7\x0f\x63\xd1\x76\xba\x7f\x51\x18\xb0\x16\x7e\x9e\xba\xa3\x22\x07\x06\x2b\x0a\x7b\xda\xe1\xa9\x9e\x11\xf2\x86\xb1\x9e\x75\x44\x83\x29\x09\x08\x37\x3c\xfc\xfe\x4e\x60\x4a\x5a\xdd\x54\xaa\x43\xd8\x22\x1f\x99\x77\x05\xcc\xaf\x50\x82\xec\xe9\x57\x68\x36\xaf\x9d\x67\x67\x72\xf6\x51\xa5\xda\x72\x8c\x16\x99\x3a\x6e\xb1\xa9\x29\xb4\x70\x47\x7d\x9f\x23\x29\xb1\xfc\x01\xbc\x69\xea\xd6\xa0\xfa\xe7\x8f\xae\x8e\x48\xd6\xb4\x15\x5d\x1c\x1d\xf5\x20\x47\x0c\xeb\x5a\xaf\x0b\xbb\xca\x6e\xa8\x43\x8e\x64\x1d\xb7\x58\xd6\x14\x7e\x23\xfc\x95\x51\xed\x0c\xc5\xb7\x8e\x29\xc2\xb9\xf1\x2b\x4a\x34\x77\xdf\x29\x5e\x1e\xb4\x42\x97\xf5\xa2\x31\xbe\x3a\x41\xe4\x8f\x13\xcf\xa7\xe9\xe7\xef\x7e\xf8\xec\xe5\xb7\x7f\x7e\xf9\x4f\xf1\xd1\x9f\x3e\x7e\xfe\xe9\x77\x2f\x7f\xfc\xed\x34\xfd\xf2\xdd\xd3\xf8\x88\x73\xb5\xb3\x37\xaf\x3c\x7f\x28\xf3\xb1\xfd\x1f\xe1\xe7\x3a\x4d\xbf\xd4\x69\xfa\xa4\x4e\xd3\x8b\x3a\x4d\xbf\xab\xd3\xf4\x63\x9d\xa6\x1f\xea\xbf\xeb\x34\x4d\x53\x9d\xa6\xe7\xf5\xf7\xf5\x8f\xf5\xa3\xfa\x87\xfa\x9b\x3a\x4d\xf5\xc5\x98\x6f\x7c\x24\x7a\x65\x41\x46\xff\xf6\xf0\xf4\xaf\xef\xff\xfa\x8f\xef\x9f\x3f\x3d\xfb\x4f\x00\x00\x00\xff\xff\x83\x4d\x49\xe6\xc7\x18\x00\x00" func runtimeSyntaxConkyYamlBytes() ([]byte, error) { @@ -1668,6 +2134,26 @@ func runtimeSyntaxConkyYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxCppHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xd6\xd6\xe6\xd2\x88\xd1\x4b\xd6\x48\xae\x29\x28\xa8\xa9\xa8\xd0\x54\xa9\x89\xd1\xcb\xd0\xc8\x40\xe2\x65\x66\xda\x83\x28\x8d\x94\xd4\x34\x4d\x15\x4d\x2e\x2e\x40\x00\x00\x00\xff\xff\x34\xff\x51\x82\x33\x00\x00\x00" + +func runtimeSyntaxCppHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCppHdr, + "runtime/syntax/cpp.hdr", + ) +} + +func runtimeSyntaxCppHdr() (*asset, error) { + bytes, err := runtimeSyntaxCppHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/cpp.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxCppYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x54\xdf\x6f\xdb\x36\x10\x7e\xf7\x5f\xa1\xa9\xd9\x4c\x26\xb5\x93\xb6\x43\xb7\x6a\x3f\x8c\x21\x5b\x87\x01\xdd\xb2\x87\x0d\x08\x26\x3a\x02\x45\x9d\xac\x43\x68\x52\x20\x4f\x89\xb3\x5e\xff\xf7\x81\x8a\xd3\x18\x71\x91\x15\xad\x1e\x24\xf1\x8e\x77\xf7\xf1\xbe\x8f\xd7\xa2\x05\xba\xe9\xa1\xc8\xcc\xd1\xd1\x64\xd2\x00\x81\xa1\x62\x92\x65\x59\x96\x5c\x4e\xaf\xa1\xc8\x72\xa1\xd4\xdc\x08\xc3\x7d\xcf\x9b\x8d\x3c\x60\xa5\xe6\x9d\xe8\x76\x97\x88\x8b\xf1\x2b\x1a\x68\xe5\x81\xcc\x27\x93\x30\x58\x88\xc5\x64\x4c\x35\xcb\xb0\x01\x47\xd8\x22\x84\x22\xcb\x95\xaa\xcb\x9f\x66\xff\x54\xcb\xf2\x64\xf6\x6a\xfc\x39\x52\xaa\xce\xb3\xed\xde\x5b\x3c\x69\x97\xd0\x03\x79\x6e\xad\xd7\xc4\x8d\x1f\x6a\x0b\x5c\x7b\x6f\xd9\x74\x3a\x30\x3a\xe2\xd8\xf9\x40\x6c\xbd\x5b\x71\xc4\x7f\xc1\xb7\x0c\x6e\x58\xf3\x95\xc7\x86\x23\x69\x42\xc3\xc6\xbb\x48\xb7\x6f\xd8\xf4\x81\x23\x85\xc1\x10\x0f\x0e\xbd\xe3\x54\xaa\x81\x96\x61\x43\x10\x1c\x8b\xc1\xc9\x45\xc4\x95\x83\x86\xd1\x59\x74\x20\x13\xb0\x7d\x5c\x22\x2e\x52\x3d\xc9\x42\x0c\xd5\x42\x2e\xd0\x91\xf8\x96\x9f\xbd\xe4\x17\xcf\xf9\xe5\xd7\xdc\x53\x90\x52\x56\xb4\x13\x9c\xd0\xc0\x1a\x1c\x6d\x33\x18\xab\x63\xe4\xd4\xdf\xd8\x6b\x03\x4c\xb0\xee\xad\x26\xe0\x7e\xa8\x2d\x1a\xee\x83\x4f\x54\x40\xc3\x7d\xc0\xab\xe4\x48\xe5\xd3\x7e\xa6\x0e\x23\xb7\x01\xc1\x35\x7c\x85\x81\x06\x6d\x79\x88\xe8\x56\xbc\x1e\x48\xa7\x26\x5d\x79\xab\x09\x2d\x70\x80\x15\x46\x82\xc0\xb0\xe9\x2d\x1a\x24\xf9\x08\xa4\xd6\x07\xc6\x96\xaf\xbb\x14\xd9\x78\x06\x1b\x81\x8d\x8e\xc0\x0d\xb4\x7a\xb0\xc4\xf1\x1a\xc9\x74\x8f\xe5\xa0\x70\xc3\xd4\x05\x7f\xcd\x46\x93\xe9\xd8\xf7\x10\x34\xf9\xc0\x0e\xae\xb9\x01\x0b\x04\x8f\x85\xaf\x3c\xf9\xc4\x15\xa1\x1b\x80\xeb\x00\xfa\x92\x03\xd0\x10\xdc\x6e\x54\x1f\xa0\x0f\xde\x14\x59\x7e\x51\x96\xc5\xd8\xbf\x62\xb9\x3c\x7c\xb2\xbb\x48\x42\x44\x07\xdc\x07\xbd\x5a\x6b\x46\x67\xec\xd0\x40\x62\x98\xb1\x75\x0b\x39\xb2\xee\x1a\x6c\x19\xac\xc0\x96\x23\xc8\xf1\xf0\x3a\xb8\xd4\x49\x08\xc1\x07\x79\x57\x70\x54\x8f\x1e\x51\x8a\xa9\x28\x2f\xa6\x4a\x29\xb5\x64\x91\x3e\xa5\xca\xa7\xba\x6e\x5d\xa0\xab\xd1\x2a\xe5\x94\x47\xbf\x10\xe5\xc9\xec\xc5\x72\x51\x9e\xcc\xbe\x59\xbe\x7d\xf6\xf4\xf9\xbb\xf7\xae\xcd\xad\xf0\x5f\xeb\x59\x7b\xeb\x99\xa6\x1b\x93\x8d\xcf\x93\xec\xd7\xd3\xd3\xac\x1e\xd0\x12\xba\xf8\x81\x3e\x89\xaa\xd2\x44\x01\xeb\x81\xa0\xaa\x76\xcf\xac\x94\x50\x4a\x94\x17\x32\xfd\x4a\xa5\x24\x57\x95\xd0\xf6\x56\xcf\x3a\xae\x79\x9b\x95\x3b\x6c\x1a\x70\x5b\x89\x73\xaf\xcd\x25\x34\x1c\x20\x52\x40\x43\x1c\xc1\xd0\xdd\xe5\xf0\x2d\x5f\x83\xbe\x94\x55\xb5\x8b\xf0\x6c\xcb\x6a\x76\xea\xad\x0f\x77\x18\x6f\xd6\xb5\xb7\xf3\x3b\xc6\x13\xd2\x72\x5e\x7c\xf7\xf4\xe8\x90\x7f\xf8\x42\xa9\x2f\x97\xfc\x3d\xff\xc8\xc7\x3c\xe3\xaf\xe4\xf6\xae\xa7\x5c\x7f\xea\x00\x8e\x3a\x20\x34\xda\x7e\x28\x61\x1d\x12\x3e\x8a\x45\x96\x97\x42\xbe\x7d\xb7\x64\xa5\x4a\x56\x6a\x99\x4f\x1e\xd0\x33\x77\xc3\xba\x1e\x27\x8c\x48\x23\xe6\x64\xf6\x6a\x1c\x2c\xac\x54\x7d\xb2\xdb\xf2\x64\xdc\xe3\x76\x9e\x26\xcb\x36\x54\x50\x18\x80\x5b\x6d\xe3\xa8\x56\xfe\xe3\xef\x37\x6f\xe4\x7e\xb9\xd4\x2f\xb7\x2a\xb6\x47\xc9\x12\x4b\x61\x54\x72\x9e\xbf\xb7\x81\x6b\x1e\x58\xe2\x25\xf6\xa3\xdc\x95\x9a\xdf\x5b\xb7\xe3\x32\xdb\x79\x76\x2b\xf5\x60\x50\xdb\xd3\x4e\x87\xfb\xd0\x8f\x85\x33\x7d\x88\x66\xfa\x49\x60\xee\x6f\xdd\x7c\x7e\x94\x7f\x1a\xd2\xf5\xa8\xe1\x3d\x84\xc7\xc7\x0f\x21\x1e\xfc\x0f\x18\xf2\x8d\x4f\x64\xfd\x75\xf6\xf3\x19\x9f\x9f\x9f\xf3\xeb\xdf\xce\x7f\xff\x45\x16\x8b\x8f\x28\xa6\xd4\xe1\x1e\x3f\xea\xf0\xf8\x33\x2a\xfe\x17\x00\x00\xff\xff\xe1\x82\x69\x3f\x46\x07\x00\x00" func runtimeSyntaxCppYamlBytes() ([]byte, error) { @@ -1688,6 +2174,26 @@ func runtimeSyntaxCppYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxCrontabHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x2e\xca\xcf\x2b\x49\x4c\xe2\x82\xd2\x2a\x5c\x71\xca\x7a\x5a\xf6\xfa\xa9\x25\xc9\xfa\x30\x29\x40\x00\x00\x00\xff\xff\x10\x7a\x06\x47\x23\x00\x00\x00" + +func runtimeSyntaxCrontabHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCrontabHdr, + "runtime/syntax/crontab.hdr", + ) +} + +func runtimeSyntaxCrontabHdr() (*asset, error) { + bytes, err := runtimeSyntaxCrontabHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/crontab.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxCrontabYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x54\x4b\x4f\xdb\x40\x10\xbe\xfb\x57\x4c\x4d\x54\xc5\x80\x21\x80\x2a\x84\x5b\x4a\xab\x3e\xa4\x1e\x10\x07\x50\x15\x95\x01\x75\xe3\x9d\x60\xc3\x7a\x37\xda\x07\x91\xd5\xe9\x7f\xaf\xd6\x09\x86\xa0\xd0\x5b\x3b\xb7\x99\xfd\xe6\x9b\xd7\x67\x4f\x6b\x45\xbe\x9d\x51\x01\xa5\x35\xda\x8b\x49\x92\x48\xf2\x54\xfa\x22\x01\x00\x88\xcf\x5a\x34\x54\x40\xba\x7c\x1f\xa4\xdd\x43\x45\x42\x92\x2d\x20\xbd\xde\xd8\xd9\x3c\xd9\x25\x5f\xee\x2e\x01\x69\x92\xd8\xa0\xc8\x2d\x08\x00\x36\x60\xc5\x2e\x2a\x02\x5f\x37\x04\x42\x4b\x90\xc2\x13\x4c\x6b\x52\xd2\x81\xb0\xf4\x42\x4a\x07\x78\x74\x85\x52\x66\x4e\x12\xee\x85\x0a\xe4\xd6\xa7\xe4\xd1\x9e\xb9\xbd\xad\x4f\x69\x6a\x1d\x3c\xf5\xee\x28\x7f\x73\xb4\x1e\x58\x99\x60\x9f\xb8\xa3\x7c\xff\x60\x3d\x50\x8a\x16\xcc\x14\x1a\xa3\x7d\xd5\x01\x0f\xf6\x5e\x28\xbd\x44\xf4\x8c\x7b\xfb\x30\x34\x16\xe2\xe6\xdd\x36\x38\x22\x98\x90\x32\xf3\xec\xaf\x75\xe6\x44\x77\x8b\xf4\x43\x18\x8e\xc0\x58\x38\x84\xda\xc1\x79\xd0\xdb\xd1\x09\x8e\x16\x84\x59\xd2\xd1\xe4\xe0\xbc\xf0\xd4\x90\xf6\xf1\x8c\xc3\x4b\xc4\xcd\x51\x7e\xb4\x8d\x98\x23\xee\x5e\x6d\x65\x88\x6e\xeb\x9f\x45\x77\x36\xb3\x01\xa2\x3e\x49\x97\xbd\x94\x46\x3b\x2f\xfe\x77\x2b\x8b\xea\xfd\x56\xcf\x2b\x52\x0a\xbe\x3f\xea\x2a\x87\xc5\xb7\x91\x5e\x5f\x7e\xcc\x7f\x5c\x6d\x21\x1e\xa7\x49\x0f\x3f\x8d\x67\x73\x9d\x90\xe3\xee\xe3\x19\xee\xa8\x9d\x1b\x2b\x9f\x65\xdf\x0a\xcd\x53\x9a\x70\x23\x2c\x8b\x99\xe5\x46\xb4\x7c\x1b\x34\xdf\x06\xc5\x22\xdc\xb0\xa3\x19\x9b\xd2\xb3\x36\xf7\x2c\xa9\x5c\xb3\x13\x17\x34\x37\x46\xb3\x0f\xc4\x73\x92\xec\xab\xc0\x53\x5b\xb3\x13\x3e\x5d\xad\x85\xf8\x61\x68\x69\x62\x8c\xe7\x96\x84\x55\x2d\x0b\xad\x83\x50\xaa\xe5\x4e\x66\xaa\xe5\xd8\xac\x6a\x59\x8a\x3a\x06\x6b\xa9\xeb\x9b\xca\x73\x94\xb5\x6a\xb3\x27\xf3\x7d\x32\x5a\xd6\xbe\x36\x5a\xa8\x87\x81\xdc\x8c\xca\x5a\xa8\x02\xd2\x21\xe2\x2f\x46\xfc\xcd\x88\x43\x46\xcc\x18\xf1\x2d\x23\x5e\x31\xe2\x25\xff\x64\x44\x44\x46\x1c\xf0\x3b\x7e\xcf\xd7\xfc\x8a\x8f\xf9\x35\x23\xf2\x03\x7f\x9c\xae\xe9\xb4\x97\x3c\xc8\xd8\x79\x61\xe3\xac\x1b\x69\x1f\x22\x2d\x0b\x48\x07\x8f\x81\x95\x3f\xcb\xc2\x72\xf0\x46\x9a\xd8\xd1\xc5\xd9\xe7\x33\x1e\x8f\xc7\xfc\xf5\xdb\xf8\xf4\x4b\x56\x9c\xa4\x49\xf2\x27\x00\x00\xff\xff\x30\xbd\xe9\x40\xe0\x04\x00\x00" func runtimeSyntaxCrontabYamlBytes() ([]byte, error) { @@ -1708,6 +2214,26 @@ func runtimeSyntaxCrontabYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxCrystalHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x2e\xaa\x2c\x2e\x49\xcc\xe1\x8a\xd1\x4b\x2e\x52\xe1\xe2\x02\x04\x00\x00\xff\xff\x1d\x33\x64\x59\x0f\x00\x00\x00" + +func runtimeSyntaxCrystalHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCrystalHdr, + "runtime/syntax/crystal.hdr", + ) +} + +func runtimeSyntaxCrystalHdr() (*asset, error) { + bytes, err := runtimeSyntaxCrystalHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/crystal.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxCrystalYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x54\x4d\x6f\x1b\x37\x10\x3d\x57\xbf\x62\xb0\xb6\x61\x49\x81\xe4\x5e\x2b\x04\x90\xdd\x44\x29\x0c\xa4\x36\xd0\xfa\x60\x44\xd4\x07\x77\x39\x2b\x0d\xc4\x25\xd7\xfc\x88\x24\x7b\xfc\xdf\x0b\x4a\x8a\x5b\xaf\x0c\x34\x08\x90\x83\x28\x90\x33\xf3\xde\xe3\x9b\x59\x96\xa4\x31\x6c\x6b\x1c\x40\xe1\xb6\x3e\x48\xdd\x6a\x29\x0c\x58\x84\x41\x0b\x00\x20\x85\x8d\xac\x70\x00\x99\x10\xfd\xc2\x9d\x66\xad\x96\x8b\x1a\xfd\x3e\x7c\x02\x57\xbe\x20\xca\x31\x50\x21\x35\x68\xf2\x01\x6c\x09\x0e\x3d\xba\xaf\xa8\x60\x6d\x9d\xf2\xbb\xcc\x1e\xf8\x20\x03\x56\x68\xc2\x0e\x2b\x6f\xff\x3e\xfa\xe3\xfa\x86\x47\x37\x1f\x59\xe6\x3e\x38\x59\x04\x96\x9a\xa4\x67\x69\x14\xe7\xb8\x20\xc3\xb9\x43\xb9\xe2\x42\x7a\xe4\x42\x4b\xef\x59\x61\x99\x7e\x64\x50\x09\x31\x64\x65\x19\xb5\xc7\xb4\x50\xc9\x68\x14\xa3\xf1\xd1\x21\xa3\x89\x15\x97\x32\xc5\x4a\xeb\xb8\x8c\x86\xa9\x64\x32\x4c\xa6\xd0\x51\x21\x6b\xca\x59\x5b\x5b\x73\x25\x0b\x67\xb9\xb2\x2a\x6a\x64\x83\x9b\xc0\x86\x34\x1b\x1b\xd8\x96\x6c\x1d\xd7\x96\x4c\x40\x67\x4b\xae\x1d\x7d\x95\x01\xb9\x76\x36\xf9\x83\x8a\x9d\x24\x8f\xec\x50\x59\x76\xf8\x10\xc9\xa5\x8d\x2f\x62\xfa\x0b\x6e\x9b\xd6\xe8\x0c\x7b\xd4\x25\x7b\x7a\x44\x5b\xb2\xaf\xe5\xda\xb0\x0f\x2e\x16\x81\x7d\xac\xd1\x71\x58\xa2\xe1\xe0\x22\x72\xea\x03\x47\x93\x2e\x19\x0d\x59\x93\x56\x43\x81\xa4\xa6\x47\x54\x1c\x8d\x46\xef\x39\x9a\x40\x9a\xd7\xa9\x6a\xbd\x24\x8d\xbc\x25\xd4\xaa\x23\x44\x9e\xed\x9c\x4e\x5d\xf9\x60\x8d\x0f\xd2\x84\x6f\xde\x17\x87\xfd\x00\xb2\xb6\x10\xa7\x7c\xc9\x97\x97\x9d\xa1\x10\xf9\xf8\xaa\xf7\x65\xf2\x6e\xfc\x6b\xef\xb7\xab\xde\x97\x99\xec\x3d\x4e\xba\x59\xa3\xa6\x6f\x62\x95\xa3\xdb\x77\x2d\x65\x4e\xde\xbd\xe6\xda\xcf\x0d\x64\x7e\x5b\xe5\x56\xfb\x66\xfd\x00\x20\x6b\x8f\xe1\x97\x09\x4f\x3b\x83\x6f\x4c\x0d\x8c\xbf\x6d\x85\x10\x0d\x3d\x44\x84\xb0\x24\xb3\xf0\xb0\x46\x58\x4b\x13\x20\xd8\x34\x39\x46\x81\x8d\xe1\xf8\x36\x69\x90\x66\xb3\x4f\xd7\x9f\x47\xb3\x19\xcf\x66\x9f\xaf\x6f\x46\xb3\xd9\x6b\x2f\xfe\xc2\x45\xd4\xd2\x01\x6e\x6a\x87\xde\x93\x35\x6f\xb8\x72\xd1\x1e\x4f\x2f\x26\xdc\x16\x42\x88\x8b\x4e\xa7\x7b\x31\x26\x5b\x6d\x26\x5d\x3e\x73\x42\x3c\xb5\xc7\xd3\xe7\x43\xf0\xb9\xd3\xe9\x0a\xf1\x7c\x08\x67\xad\x7f\xaf\xb0\x44\xad\xa1\xb0\x55\x95\xc4\xe2\xa6\x96\x26\x71\x01\x79\x20\x03\xf3\x5c\x16\xab\x40\xc5\xca\xcf\xc1\x3a\xd0\xb4\x42\x38\xdb\x3c\x85\x25\xf9\xe7\x3e\xc0\xdd\x12\x3d\x82\x74\xf8\x02\x97\x29\x1b\x73\x8d\xbd\x87\x68\x03\xf9\x65\x06\xed\x60\x21\xa6\x24\xa8\xd1\x69\xf2\x55\xa7\xdf\x6c\x94\x0f\x8e\xcc\x62\x00\xd9\x7c\x3c\x9d\x4f\xba\x73\x3e\xdb\x08\xf1\x94\xb4\x27\xc9\x07\xad\xc7\xf9\x07\x4e\x48\x3e\xbb\x64\xc6\x3c\x7b\x39\x42\xa3\x5e\x1f\xec\x3f\x7e\x18\x4f\xbe\x1b\x6d\x27\xa2\x89\xb8\xd3\xf3\xe3\x98\x22\x3b\x02\xfc\xcf\x89\x5f\x51\xbd\xe3\x10\xa2\xdf\x64\x79\xd9\x36\x99\x6a\x2c\x48\xea\x0f\x4b\xe9\x8e\x4b\x0f\x0f\xd8\x3e\x65\x00\xd9\xc9\x0f\xd9\x7a\xde\xd4\x7c\xfe\x13\x24\xbf\x88\xa9\x76\x4f\xed\x91\x88\x93\xa6\x88\xd3\xff\xa1\x0b\x56\xd9\xf4\x6c\xdc\xdd\x7e\xbc\xe5\xfb\xfb\x7b\xfe\x74\x7d\xff\xe7\xa8\x33\x18\x36\xb9\xfa\xb9\xa3\xc5\xf2\x2d\xca\x9f\xc2\x79\xf8\x74\x8f\xd8\xde\xbf\xef\x0d\xcf\x87\xa3\xdb\xbb\xf3\x61\x93\x76\x3a\xba\xbd\x7b\x73\xea\xfe\x09\x00\x00\xff\xff\xd9\xcb\x71\xc4\x05\x07\x00\x00" func runtimeSyntaxCrystalYamlBytes() ([]byte, error) { @@ -1728,6 +2254,26 @@ func runtimeSyntaxCrystalYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxCsharpHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x2e\xce\x48\x2c\x2a\xe0\x8a\xd1\x4b\x2e\x56\xe1\xe2\x02\x04\x00\x00\xff\xff\x0b\x10\x57\x51\x0e\x00\x00\x00" + +func runtimeSyntaxCsharpHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCsharpHdr, + "runtime/syntax/csharp.hdr", + ) +} + +func runtimeSyntaxCsharpHdr() (*asset, error) { + bytes, err := runtimeSyntaxCsharpHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/csharp.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxCsharpYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x54\xdf\x6f\x23\x35\x10\x7e\xcf\x5f\x61\x96\x83\xe6\x87\x36\x2d\x12\x2f\xac\x80\x52\x1d\x54\xaa\x74\x70\x20\xf1\x50\x91\x5d\x55\xb3\xf6\x6c\xd6\x17\xaf\xbd\x67\x8f\x93\xee\x31\xf0\xb7\x23\x6f\x12\x9a\xb6\x02\x2a\xf1\x74\x91\x62\x8f\xc6\x3b\xf3\x79\xe6\xfb\xc6\x8d\x36\x48\x43\x8f\x85\x90\xa1\x05\xdf\x4f\x26\x0a\x09\x25\x15\x13\x21\x84\x48\xa7\x16\x3a\x2c\x44\x56\x96\x4b\x19\x5e\x65\x93\x89\x8f\x06\xc3\xfe\xf8\x53\xf1\xda\x40\x08\xa3\x9d\x0b\xad\xd0\x92\x6e\x34\xfa\xa5\x4c\xee\x42\x64\xe3\x2e\x16\xab\xab\xfc\x37\xc8\x3f\x5c\xe4\x5f\x55\x0b\x31\x9f\x4e\x8b\xd9\xa9\x6f\x59\x2d\x66\x97\xd9\x64\xcc\x92\x72\x5e\x59\xeb\x08\x48\x3b\xfb\x3c\xf1\x16\x7c\x21\xb2\xef\x0e\xc1\xd5\xe2\x10\x76\xfa\x4d\x21\xb2\xc3\xf1\x5d\xf5\x00\x72\x57\xcd\x57\xab\x22\xf4\x20\xb1\xa8\xaa\xf9\x6a\x3a\xab\xb2\x43\xe8\xbe\xfc\xac\x2c\xeb\x69\xed\x9c\xe1\x7a\x20\xe4\x30\xae\xb2\x05\xcf\x0a\xa5\xee\xc0\xb0\x72\xb1\x36\xc8\x8d\x71\x40\x7c\x63\xe9\x67\xf2\xac\x2d\x71\x4c\x8b\x71\x76\xcd\x71\x5c\x5d\xfd\x0e\x25\x71\x68\x9d\x27\x8e\xfb\x2d\x90\xd7\x76\xcd\x35\x04\x64\x6a\x75\xe0\x2d\x78\xde\x3a\xad\x66\x65\x59\x1f\x2f\x12\x08\x08\x3b\xb4\x74\xb8\x0d\x18\x0d\x81\x21\xb0\x4c\x61\x12\x48\xb6\x2c\x5b\x94\x1b\x54\xac\xb0\x81\x68\x88\x95\x63\x35\x58\xe8\xb4\x64\x34\x01\xb9\xd1\x16\x8c\x19\xb8\xd1\xf7\xa8\xb8\x71\x3e\xfd\x11\x64\xcb\x6b\x47\x8e\x75\xc3\x3a\xb0\x71\x72\xc3\x16\x77\x6c\xa3\x31\xec\x91\xa2\xb7\x1c\x76\x3a\x01\x50\xeb\xdd\x8e\xc9\x0f\x1c\xed\x11\x6c\xd7\x6a\x83\xff\x7a\xd3\x3a\x90\x07\x49\x0c\x61\xb0\x92\x47\xda\x59\x3a\x1b\x88\x15\x1a\x5c\x03\x21\xa3\x8d\x1d\xe3\x16\x2d\x31\xde\xf7\x46\x4b\x9d\x0c\x42\x6f\x79\x8d\xc4\xba\x3b\xf8\xb4\x4d\x5d\x45\x6f\xc1\xec\x8d\x06\x24\x72\x52\xe1\xc8\x1e\xbb\x1e\x3d\x90\xf3\xec\x22\xb1\xdb\xa2\xf7\x5a\x21\xf7\xe0\xa1\x0b\x69\x23\x0d\x86\x7b\xaf\xb7\x09\xb4\xf7\x2e\xa9\x19\x15\xf7\xb1\x36\x5a\xb2\x47\x50\xce\x9a\x81\x3d\x36\x1c\x10\x0c\x2a\x0e\x48\x1c\xf4\x07\x74\x0d\x07\x02\xb9\x01\x63\x9c\x4c\x26\xe9\xb4\xf9\x28\x89\x93\x48\x5c\xc3\xd1\x06\x68\x90\x63\x48\x6c\x6e\xc1\x44\xe4\xad\xf6\x14\xc1\xf0\xd6\x19\x20\x6d\x90\x07\x8d\xe6\x84\xd7\x24\xe9\x37\x37\x3f\xfd\x92\x27\x58\xb1\xc1\x61\xe7\xbc\x0a\x62\xea\x2c\x06\x41\x2d\x90\x90\x90\x14\x2f\x6a\x14\x31\xa0\x12\x2e\x52\xd0\x0a\x85\x6b\x04\x8c\x91\xe2\x7d\x44\x3f\x88\x5c\x18\x47\x41\x38\x6a\xd1\x87\x14\x34\xfb\x07\x36\x1a\xef\x3a\xde\xb5\xe8\x91\x03\x9a\xa4\xc5\xb5\x77\xb1\x67\x6d\x1b\xc7\xce\x2b\xf4\xf5\xc0\xef\x9c\xb6\x6c\x70\xec\xb7\xb3\x8c\xef\x23\x98\xc0\xf5\xc0\x10\x24\x5a\x95\xea\x53\x78\x34\x1f\x71\xdf\xa3\xd4\x60\x8e\x13\xe3\x11\x36\x89\x6a\xd2\x36\x3e\xd2\xc8\x48\x3f\x58\x5a\xa6\xa1\x3a\x7c\x4d\x3e\x22\x37\x60\xc2\x63\x35\x0d\x5d\xed\xcc\xf2\x48\x6c\x1a\xe0\xb2\xcc\x17\xe7\xf3\x6f\xbe\xfe\xf6\xb2\xf8\xe4\xcf\xcf\x3e\xe7\xea\x59\x56\x1b\xbb\x7a\x1c\xf6\x94\x77\x95\x9e\x91\xbb\x6a\xc1\x17\xf7\xab\xab\xfc\x1a\xf2\x66\x1c\xf9\x05\x5f\xd4\xab\x8b\xfc\x8b\xbb\x6a\x31\x5b\x5d\xbf\xa9\x2e\x47\xd0\xa7\x99\xf6\xb3\x59\x1c\xc8\x12\xa9\x9d\x7e\x6c\x65\x96\xfd\xed\x43\xab\x9e\x78\xc2\x46\xf7\x23\x7a\x59\x2e\x1f\xbc\x27\x8f\xe3\xf1\x77\x8a\xb4\x6f\xdd\xeb\x16\xfc\x21\x74\xba\xaa\xc9\x36\xbe\xe2\x33\x2e\xcb\x32\x4b\x4b\x39\xcb\x5e\x1e\x1f\x1f\xca\xad\x7e\xff\xf2\x8f\x97\x17\x77\xf6\xb4\xb6\xb3\x8f\xa7\xb4\x6e\xd4\xfa\xb3\x92\xce\xcf\x9f\xd6\xf4\xea\x3f\x6e\x4f\x4e\xb9\x42\x64\xd3\x5f\xdf\x7e\xff\x96\x6f\x6f\x6f\xf9\xfa\xe6\xf6\xc7\x1f\x66\xc5\xe5\x0b\xc0\xca\x72\xfe\x4c\x1e\xe5\xfc\xfc\x7f\x20\xfe\x15\x00\x00\xff\xff\x5f\x37\x1f\xac\x8b\x07\x00\x00" func runtimeSyntaxCsharpYamlBytes() ([]byte, error) { @@ -1748,6 +2294,26 @@ func runtimeSyntaxCsharpYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxCssHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x2e\x2e\xe6\x8a\xd1\xd3\x48\x2e\x2e\xae\x29\x4e\x2e\x2e\xd6\x54\xe1\xe2\x02\x04\x00\x00\xff\xff\x2a\xe5\xab\xb6\x13\x00\x00\x00" + +func runtimeSyntaxCssHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCssHdr, + "runtime/syntax/css.hdr", + ) +} + +func runtimeSyntaxCssHdr() (*asset, error) { + bytes, err := runtimeSyntaxCssHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/css.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxCssYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x59\x4f\x8f\xe4\xb6\xf1\xbd\xcf\xa7\xe8\x5f\xff\x8c\x78\xc7\x08\xd7\xf7\x76\x10\x2f\xb0\x4e\x00\x1f\x02\x1f\x36\x08\x16\xb0\x36\x40\xb5\x54\x6a\x71\x9b\x22\x65\x92\x9a\x9e\xde\xa5\xf3\xd9\x83\xaa\x22\x25\xaa\xa7\x07\xc9\x25\x73\x50\xbf\xf7\x48\x91\x54\x91\xf5\x47\x9a\x5e\x1b\x8c\xd7\x09\x0f\xbb\x36\x84\x87\x87\x0e\x23\xb6\xf1\xf0\xb0\xdb\xed\x76\xd4\x64\x61\xc4\xc3\x6e\xdf\x34\x6f\xdf\xb4\x21\xa4\xd0\x86\xf0\xf8\xcd\xfe\xe1\xc1\xcf\x06\x83\x74\xfb\xff\xdd\x7b\x03\x21\x60\xd8\x81\xed\x76\x3f\xff\x14\x58\x55\xbb\x10\x21\xe2\x88\x36\x1e\x76\xfb\x37\x3f\xea\xc7\xb7\xfb\xdc\x5d\xed\xac\xf3\x23\x98\x72\x3b\xfd\x85\x08\x3e\xf2\x44\x5f\xf7\x95\x8c\xb6\x63\xf1\xf7\x5a\x94\xb9\x77\xbf\x7e\xca\x5a\x1b\xc2\xae\x75\xe3\x08\xb6\x2b\x73\xcb\x13\xed\xdf\x80\xd1\x27\xab\x5a\x67\x23\xda\x98\x84\xe9\x88\x63\x10\x4c\xab\x53\x47\x08\x68\xb4\xc5\xdc\x1c\xd0\xf4\x09\x8c\x49\x60\xf5\x08\x51\x3b\xbb\x22\xd5\xa1\x81\x6b\xcd\xb5\xc7\xf6\xb6\xcf\xec\x6f\x6f\xeb\xb5\x31\x6a\x74\x1d\x56\x9a\x8e\x28\xfd\x54\xeb\x66\x5a\xdc\xd2\x42\x36\xaf\xe8\x64\xe0\xaa\xd8\x98\x95\x18\xf5\xa8\xed\x49\xf5\xb3\xcd\xd3\x4f\x13\x82\x07\xdb\x62\x82\x2f\x7a\x9c\xe3\x90\x8e\xd0\x9e\x7b\x68\x51\x3d\xe9\xa0\x8f\xda\xe8\x78\x65\xed\xe4\xdd\x6c\xbb\x0a\x2a\x88\x11\xda\x81\x8c\x51\xab\x47\x83\xb6\x93\x55\x57\x6a\x6b\xf4\xb4\xe1\xce\x38\x5f\x0b\x7a\x84\xd3\xe6\x0e\xe7\xf5\x49\xdb\x5a\x99\x5c\xd0\xbc\xea\x4a\xf3\x38\x21\x6c\xe6\x0f\xfa\x0b\x8d\x23\x9b\xa3\xc2\xa0\xfb\x98\x8e\xce\x9d\x47\xf0\x67\x65\xe0\x88\xa6\xa2\xf8\x54\x53\xb1\xd6\xd1\xf9\x0e\x7d\xfe\x51\x47\x17\xa3\x1b\xb7\xac\xac\x7e\xa3\x19\xec\xa3\xf2\xd0\xe9\x39\xdc\xb4\x78\x7d\x1a\x5e\x69\x0a\xf1\x6a\xf0\x46\xbb\xe8\x8e\xb6\xa1\x68\xb3\xed\xc0\x5f\x0b\x6f\x9d\x31\x30\x05\xac\xf8\xba\x92\x6c\xc3\x8a\x28\x37\xc7\x80\x71\xab\x15\x9b\xd5\x5a\x30\xba\xbd\xb9\x35\xb8\xd9\xdf\x6a\x9b\xb5\xd1\x13\xd7\x78\xbb\x18\x56\x36\xcf\xc7\xca\x66\x84\xad\x4d\xd8\x4e\x1b\xb2\x1d\x51\xa4\xcd\x90\x22\x6d\xc6\x0c\x13\xb4\xda\x9e\x16\x5a\x77\x8f\x6e\xaa\xe0\x76\x74\x12\xee\xec\x21\xc9\xf7\x36\x90\xf4\xdb\xb1\xb7\x0b\x29\x24\x9f\x9f\x67\xd5\x61\xeb\xb2\xef\x1e\x3d\xc2\x99\xc5\x30\x40\xe7\x2e\x02\xf5\x17\x59\xf8\xb3\x0a\x16\x26\x01\xf3\x34\x79\x0c\x21\xf1\x1d\x0a\xfa\x48\x47\x93\xf1\x11\x7b\xe7\x31\x13\x6d\x83\xee\x30\xb5\x30\xf1\xf8\x99\x78\x8c\x72\x55\x6b\x54\x12\x2e\x8f\x2e\x38\x0c\x30\x61\x6a\x07\xd0\x36\xa4\xd6\x20\xf8\xc4\xee\x4a\x17\x35\x41\x1c\x04\x51\xfc\x4c\xf9\x3e\xba\x2a\x6d\x23\xfa\xc9\x99\x25\x58\x45\xf4\x81\xda\xe6\xb1\x44\xa7\x4c\x28\x90\x15\x7c\x82\xa9\xc0\x32\x62\xc1\x6a\x19\x7d\x51\xc4\xc4\xb5\x22\x66\x15\x65\x99\x2d\x4c\x60\x0b\x2e\x1d\x24\x78\xd3\xaf\xb6\x33\x8d\x31\xd3\x7a\x95\xb6\xad\xe7\xfc\xb2\x28\x1e\xc9\x45\x0a\x63\x4c\xfd\x67\xcc\xe6\x26\x94\x8d\xdd\xce\x3e\x38\x9f\xd6\xf8\xdd\xe9\x40\x81\x36\x75\x6e\xd4\x16\xea\xb4\x80\x06\x9f\xc4\xe2\x38\x4e\xf1\xaa\x5a\x34\x26\x24\xb1\x52\xea\x0d\x3e\xf3\x85\xfa\xeb\x20\x70\x1d\x95\x69\x6f\xdc\x45\xd0\xc9\x17\x14\x06\xaf\xed\x59\xf0\xc5\xc3\x94\x7a\xe3\x20\xca\x55\x75\xd8\xf3\xd0\x84\x5d\xdf\xd3\x83\x08\xf1\xd4\x80\x14\xe4\x7b\xe3\x5c\x09\xbe\x82\x1d\xb9\x4b\xbc\xa6\x3c\x9b\xbb\xa8\xde\xbb\x51\x90\xb6\xd1\xa5\xde\xd9\xc8\x17\xd5\xc3\xa8\xcd\x35\x63\x84\x38\x7b\x24\x6b\x45\x6d\x4f\x41\xd4\x33\x7a\x4b\x47\x98\x89\x01\x7b\x9a\x39\x06\x3d\xa1\xf7\x74\x20\x59\xe6\xf8\xbc\x20\x05\xdd\xe7\x39\xe4\x09\x42\xf4\x18\xdb\xa1\x10\xda\x79\x81\x57\x1b\x07\x64\x3b\x11\x7d\x02\xaf\xa1\x2c\x2a\x13\x05\x64\x57\x0b\x11\xb7\x9d\x54\x0b\xd3\x8d\x82\x10\xa2\x82\xa0\xc1\x6e\x75\xa3\x4f\xfc\x4c\x37\xdd\xed\x3c\xa2\xd7\xed\x56\x5c\x52\x11\xab\x17\xe4\xc8\xd5\x3b\x17\xad\x8b\xa8\xca\xa1\x58\x84\xc9\x19\xdd\x5e\xd3\xc9\x5c\xa7\x81\x12\x1b\xda\x28\x4e\xf3\x84\x3e\xea\x16\x4c\x3a\x79\xdd\xf1\x45\x81\x47\xc8\x68\x8e\x4e\x95\x83\xbe\x2a\xbc\x53\x2b\xf5\xee\x92\x5b\xa5\x6b\x8d\x15\xda\x6e\xc3\xc9\xf9\x6a\xce\xf5\x93\x28\x4b\x93\x2f\xc3\x7b\x77\x59\x07\x20\x52\x77\xa9\x6f\x8d\x38\x4e\x86\x52\xe7\x86\xf1\x93\x84\x1b\x6d\xf3\x38\x8b\xca\xcf\x30\x80\x3d\x51\x71\x32\x51\x71\x32\x8b\xeb\x0c\x62\xd9\xe1\x3a\x0d\x68\xf9\xfe\x01\x3c\xb4\xe4\x42\xab\x66\xf4\xa8\x23\xb7\x84\x17\xaa\x81\x10\x5f\x8a\xda\xe2\xcb\xae\x5f\x9c\xc5\x2c\x86\x94\xb3\xe7\xba\x55\xa9\xe4\x4e\xdb\xa1\xa7\x33\x5e\x78\x70\x66\x96\x0e\x56\x47\x0d\x46\x19\x8c\xb4\xbe\x2d\x55\x5c\x25\xde\x8a\xec\xc2\x3a\xe4\x10\x9a\xc8\x13\x74\x7f\x5d\x0a\xcf\xc2\xa5\xf4\x2c\x8c\x2b\x4d\xce\xbd\x79\x94\x92\xf1\x0c\xd9\x8a\x2c\x28\xfe\xcd\xf5\x8f\x24\x1a\x86\x7c\xc4\x18\x65\xab\x4a\x81\x44\x99\xc6\xe8\x50\x1c\x6e\x85\xb9\x9c\xa8\x84\xe5\xd4\x57\x1a\x95\xcc\x69\x04\x4f\xb5\x9a\xfc\x94\x92\x29\x33\x5e\x69\xc6\x92\xe1\x33\xa1\x64\x4c\x65\x17\xfa\xfc\xc3\x87\x2d\xc3\xb3\x75\xed\xd9\xcd\x71\xb9\x7d\x23\x2e\xe3\x90\x3a\xea\xe5\xae\x09\xc8\x20\xb6\xd0\x80\x27\x0e\xf4\x85\x52\x0c\x2a\x98\x4f\xef\x08\xfe\xb7\x19\xb1\x8a\xbc\x45\x31\x4e\x56\xc7\x24\x4c\x88\xdd\xca\xd8\x4e\x23\x84\x33\x5f\x54\xae\x17\x2b\x2c\xd5\x6f\x2d\xe4\x32\xac\x96\x72\x15\x56\x4b\x52\x84\x6d\x14\xa9\xc1\x6a\x49\xd2\x1b\x2b\x9c\xa5\x05\xb9\x91\x37\x27\x77\x95\x9d\x63\xb8\x2e\x25\x17\xd4\x8c\x97\x9d\x64\x56\x2f\x85\xc3\x33\xa3\xbc\xb3\xcf\xe5\xb8\x10\x14\xcf\x21\x94\x97\xa1\xed\xd2\xac\xed\x22\x3e\xd7\x6f\x01\xa3\x93\x99\xf8\xa7\x24\xa6\xcc\xb8\xba\xc8\xd8\xbb\xec\x69\x16\x9e\x54\xe7\x2e\x02\x78\xff\x09\xc8\x9e\x13\x9a\xa7\xe4\x8e\x9f\xb1\x8d\xaa\xd7\xb1\xc0\xe5\x89\x64\x82\x9c\xba\x33\xc9\xd9\x3b\x33\x3a\x66\x19\xca\x31\x28\x39\x50\x36\xd2\xf9\x69\x00\x1b\x92\x9b\x23\x27\xf2\xfc\x9b\xbd\xaa\xb0\xfc\x1c\x85\xca\xa1\x28\x4c\xec\x40\x79\x8f\x83\x75\x01\xa5\x57\xa1\xec\xfe\x0b\x7b\x5e\xe1\x35\x4d\xd0\x75\xe4\xd3\xf9\xb7\xf8\x54\xa1\x6c\x95\x42\xc4\x32\x85\x91\x5b\x4d\xb4\xfd\x74\x51\x75\xd9\x58\x09\xd9\x20\x95\x92\x0b\xc8\x09\xe6\x90\xaf\xcb\x5d\x84\xcb\x0d\xe8\xc3\x44\xae\xf2\xb4\xc1\xe5\x6c\x4d\x9a\xd2\x37\x5f\x95\x07\x4b\x8b\xa0\xb7\xd0\x6e\xe6\x88\x49\xa5\xa2\x57\x60\xdb\xc1\xf9\x85\x9c\x0c\x66\xdc\xe9\x10\xf9\x4d\x54\x68\x19\xb2\xec\x2b\x95\xc1\x4b\xde\x94\x17\xb7\xdf\x66\x47\xf9\xde\xe3\x89\x0b\x50\x0f\xe2\xee\x1e\xf9\x10\x7b\x0c\x8c\xcb\x59\x60\x98\x9f\xc3\xeb\x76\xb0\x54\x56\x8b\xed\x96\xa3\x57\x80\x9a\x9c\xa6\x91\xe6\xe3\x35\x47\x6e\x86\x23\xfa\x13\x0a\x5c\xd6\xe5\x67\xcb\x35\x4f\x68\xbd\x33\x46\x1d\x71\x80\x27\xed\x7c\xe1\x14\x5f\xf3\x10\xb5\x92\x23\xe6\x4b\x49\x1d\x8d\x6b\xcf\xaf\x36\xf0\xe1\x7d\xb5\x51\x8e\xf3\xbd\x66\x39\x3e\x77\x5a\xb4\xe5\x43\xfe\x6a\xcb\x6b\x13\xe6\xd6\x57\x67\xe4\x13\x7a\x47\x17\x83\xdf\x69\xa0\x73\x5b\xcb\xc5\x03\xee\x68\x77\x6c\xb4\x69\x79\xb1\xe6\x6d\xeb\xcb\x35\xdf\x78\xd9\xbd\xa6\x3b\x76\xda\x36\xbd\x3a\xe9\xab\x96\xda\x38\xf3\xbd\x86\x97\xb6\xaa\x9d\xbc\xd6\x39\x56\xf3\x7b\x5c\x7e\x51\x8f\x83\xc7\x30\x38\xd3\x15\x55\xdc\x5b\x48\x39\x7c\x4c\x28\x35\x71\x13\xf9\x4c\x98\xa8\x5c\xe0\xab\x82\x90\xc1\x80\x40\x71\x51\x08\x97\xc3\x60\x32\xab\x6b\x35\xca\x92\xec\xf7\x11\x13\x55\xf2\x21\xd0\x0f\xad\x96\x02\x65\x88\xde\x9d\x31\xff\xa8\xe5\x33\x5a\x11\x3a\xa0\x17\x61\x7e\x15\xa8\x15\xef\xe1\x5a\x0b\xad\xf3\x96\x96\xb2\x2a\x39\x0e\x67\x85\x2c\xdd\xc2\x54\xd3\xcf\x8e\x1e\x55\xf8\xa8\x23\x7a\xae\xf6\x8a\x52\x42\x7f\xa6\x12\xb8\x23\x1c\x0d\x2a\x03\x57\x37\x47\x22\x92\x14\x23\x3e\xc7\xec\xc9\x2b\x54\x60\x4c\x4d\xb9\xde\x64\xde\xba\xf1\x48\xfb\x3e\x4f\xb2\x8d\x2c\xae\x9f\x00\x6e\x79\x4e\x2f\xb7\x2a\x1f\xba\x5b\x31\x9c\xf5\xf4\x52\xe4\xdc\xc2\x2a\x8e\xd3\xc0\xaf\x95\x1b\x56\xcf\xb0\x68\x4b\x18\xdb\xca\xd5\x60\xda\x76\xb4\x4f\x8c\x73\x09\x2a\xa4\x2e\x8e\x45\x28\xf9\x8e\x59\xfe\xb0\x21\x78\x82\x16\xd7\x6f\x57\x95\x16\xbd\x1e\x57\x4e\xfe\xce\x24\x7a\xb0\xa1\x77\x3e\xb7\xcd\x54\x74\xb3\x17\x6d\xd7\xcb\x09\x94\x7c\xa1\xea\x5f\x90\x3a\xba\xe7\x8a\xe5\x74\xb2\x0a\xf9\x11\x89\xe7\x11\x17\x98\xbf\xd7\xd6\x42\xf9\x38\x5b\x69\x93\x77\x13\xfa\xb8\xe9\x77\xfb\x7d\x75\xb6\xba\x75\x1d\xaa\xa3\xee\x74\x9a\x03\xd7\xa4\x06\xdb\x98\xca\x8b\x5f\x3e\x50\xd5\xb7\xd6\x27\xa7\x5b\x54\x47\x30\x9c\x0b\x85\x2d\xd3\x0b\xcd\x2f\xe2\x42\x24\xe7\x0a\x96\x9c\x5b\x70\x2c\x30\x7b\xa3\x90\x27\x7a\x03\xa3\x16\xfe\xb9\x0c\x3a\xa2\xec\x45\xba\xe8\x8e\xde\xc3\xc4\x07\x2e\xda\x18\x7a\xa7\xa2\x01\x2f\xce\x77\xf9\x4d\x82\x61\xd9\x2a\x26\xbc\x07\x74\xc9\x69\x96\x61\x4e\xb3\x8c\xf9\x48\x30\xca\x41\x88\x71\x1c\xbc\x9b\x4f\x43\xba\x78\xcd\xef\x2c\x5c\x2a\x7e\xe1\xd3\xf6\xfc\x78\x58\xbf\xf9\x77\xd8\xc3\x6c\xe2\xbd\x8f\xfe\x87\x97\x9f\xfc\x7f\xfd\xe1\x9f\x4d\xf3\xf5\xd3\xeb\x9f\xfd\xd5\x8e\x6a\x16\x0d\xe6\xb0\xdb\xff\x9f\x1e\x27\xe7\x23\xd8\xb8\xcf\x6d\x9a\x8e\xba\xee\x35\x7a\x1a\x1e\xa4\xce\x39\xf4\xae\x9d\x43\x3a\x0c\x74\xbe\xd3\xc1\x68\x7b\x4e\x07\xda\xb0\x88\x5d\xa1\xf2\xe8\x87\xfc\xd8\xdf\xec\x5f\xcc\xf5\xa6\x69\xbe\xa6\xa6\xf9\x3d\x35\xcd\x9b\xd4\x34\x8f\xa9\x69\x7e\x48\x87\xd4\x34\x9f\xd2\xbf\xd2\x9f\xd2\x9f\xd3\x1f\x1f\xcb\xa2\x3f\xbc\xff\xf0\x61\xf7\x0f\xf0\xa0\x8f\x06\xef\xfd\x57\xe4\x9d\xac\x3b\xbd\x1b\xf5\xb3\xb6\xe9\x1d\x3e\x47\xb4\xdd\x72\x3b\xc7\xdc\x72\x5f\xeb\x2c\x55\x55\xf1\xad\x84\x62\x31\xe3\xe6\x3f\x27\xfb\xfd\xa2\xe5\x7f\x9b\x54\x0a\x45\x1a\xfe\x4f\x4a\xd3\xbc\x5d\xd5\xea\xbf\x38\xe5\xaf\x9e\x49\x1e\xfa\xfd\x00\x7e\x7b\xeb\x7f\xb1\x9a\x6f\x6f\x17\xf3\xed\xff\x6c\x2d\xeb\xde\x34\xfb\xf4\x6d\xb1\xde\x7b\x37\x92\x95\xc3\xee\x0f\xbb\xbf\xff\xf2\xd3\x2f\xab\x19\x59\xbe\x63\xbe\xe6\xfb\xa6\xf9\xee\x85\x09\x9b\xef\x9a\xe6\xfb\xff\xb0\xc8\xe8\x3a\x47\x27\x83\xe6\x49\x1f\x3f\x7e\x4c\x7f\xfd\xf9\xe3\xdf\xfe\xf2\x78\xf8\x71\xbf\xe9\xf8\xf0\xef\x00\x00\x00\xff\xff\x7e\xdc\x51\x61\x6b\x1b\x00\x00" func runtimeSyntaxCssYamlBytes() ([]byte, error) { @@ -1768,6 +2334,26 @@ func runtimeSyntaxCssYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxCythonHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xae\x2c\xc9\xc8\xcf\xe3\x8a\xd1\x2b\xa8\xac\x50\xa9\x89\xd1\x2b\xa8\x48\x01\x53\x95\x99\x2a\x5c\x5c\x80\x00\x00\x00\xff\xff\x1c\x17\xef\x77\x1d\x00\x00\x00" + +func runtimeSyntaxCythonHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxCythonHdr, + "runtime/syntax/cython.hdr", + ) +} + +func runtimeSyntaxCythonHdr() (*asset, error) { + bytes, err := runtimeSyntaxCythonHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/cython.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxCythonYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x94\x4d\x4f\xdc\x3e\x10\xc6\xef\xf9\x14\xf9\x2f\xfc\x0b\xb4\x65\x7b\xdf\xbe\x1d\x60\x57\x42\xa5\x02\xa9\x3d\xac\x44\x38\x38\xf6\x84\xb5\x70\x6c\x6b\x3c\x29\x1b\xf5\xe9\x77\xaf\x9c\x2c\x65\x79\xa9\xda\x0b\x4d\x0e\x96\xc7\xd6\x6f\x9e\x79\x66\x92\xc6\x3a\x92\x3e\xd2\xac\xd4\xbd\xac\x82\x2f\x0a\x43\x42\x5a\x66\x45\x59\x96\x65\x3e\xf5\xaa\xa5\x59\x39\xa9\xaa\x69\xec\xd7\xbb\xc8\xeb\xda\x8c\x6b\x6f\x77\x27\x45\xc1\x9d\xa3\x34\xde\xdf\x29\xcf\x07\x4a\xf9\x89\xfa\x9b\xc0\xa6\x3c\x0a\x2e\xf0\x70\x74\x58\x26\x51\x42\x2d\x79\x19\x68\xf5\xbe\xf2\x06\x2a\x41\xa5\x44\x2c\xd0\x4e\xa5\x04\x43\x0d\x8e\xe7\x0b\x18\x72\x20\x67\x1b\xcc\x4f\x4f\x16\x20\x97\x08\xf3\xd3\x2f\x73\xd0\x5a\x53\x14\xd0\x9a\x34\x1a\xeb\x95\x73\x3d\x9a\xc0\x68\x38\xb4\xb8\x72\xa1\x56\x0e\xb6\xc1\xc9\x02\xb6\x8d\x81\x05\xd6\xc3\x26\x38\xd5\xd6\x46\xa1\x55\x11\x3e\x08\x02\x23\xe6\x6c\x91\xad\x17\xb0\xb2\x89\x20\xdc\xe3\x66\x65\x1d\xe1\xc6\xca\x0a\xbd\x25\x67\x0e\xaa\xaa\x9e\xdc\xaa\x8f\xa4\xad\x72\x1b\xed\x3a\x78\xb1\xbe\x23\xd4\x4c\xea\x1a\x4c\xd2\xb1\x1f\xaf\x0f\xf7\xb3\x15\x47\xbf\xb7\xc2\x1a\xf2\x62\x1b\x4b\x3c\x6d\x95\xe6\x70\x4b\xcd\xe5\xeb\x8d\x72\x1d\x87\x5d\x8c\xa3\x33\x3a\x77\x29\x47\x68\x2d\xc4\x1e\xd6\x6b\xd7\x19\x42\x6e\x4f\x8a\x4a\x13\x22\x87\x48\x2c\x3d\x92\x70\xa7\x65\x5b\xfc\xd8\xe1\x21\x47\x9d\x4b\xd6\x2b\xc5\x30\xa1\xab\x1d\x21\xef\x63\x57\x3b\xab\xf1\x2d\x58\x83\xce\x27\x7b\xe5\xc9\x3c\xa8\xe6\x2c\x12\x2b\x09\x7c\xbf\xa5\x7d\x5b\x87\xec\xc9\xc5\x74\xf6\xf6\xf5\xab\x97\x78\xff\x5f\x55\xfd\x7f\x89\x77\xf8\x80\x37\x38\xc4\x8b\x2d\xc0\xb9\x62\xf2\xb2\x22\xb1\x5a\xb9\x27\x28\xd3\x9a\x95\xbe\x26\x49\x19\xb7\x7f\xf0\xfd\xc7\x25\xaa\xea\x02\x55\x75\xb9\x81\x1c\x96\x3a\xf8\x24\xca\xcb\x34\x09\x5b\x7f\x35\xdb\xb0\xcb\x3c\x5a\x3c\x8c\xd5\xf0\x4e\x7e\xc5\xc9\x9b\x27\xa2\x5b\x03\x7b\xfb\x6c\xb3\xc7\x46\x1f\xad\x14\x0f\x96\x55\xd5\xf4\xef\x05\xec\xed\xed\x3d\xcc\x7e\x2f\xf4\x8c\xa9\x9f\xaa\xfb\x2e\x92\xae\x6d\xbc\x63\xfe\x0b\x27\x1e\xf9\xf0\x9c\x62\xda\xe1\xbf\xf2\x48\xc4\xce\x43\x11\xbb\x7f\x48\x27\xc1\xe4\x8f\x71\xff\xeb\xd9\xf1\x19\x96\xcb\x25\x16\x27\xcb\xcf\xf3\x83\xd9\xc7\x49\x51\xfc\x0c\x00\x00\xff\xff\x14\x89\xfe\x81\x2b\x05\x00\x00" func runtimeSyntaxCythonYamlBytes() ([]byte, error) { @@ -1788,6 +2374,26 @@ func runtimeSyntaxCythonYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxDHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xe1\x8a\xd1\xd3\x48\xd1\xc8\xac\x49\xd1\xb4\xd7\x54\xe1\xe2\x02\x04\x00\x00\xff\xff\x4d\x4e\x48\x0f\x10\x00\x00\x00" + +func runtimeSyntaxDHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxDHdr, + "runtime/syntax/d.hdr", + ) +} + +func runtimeSyntaxDHdr() (*asset, error) { + bytes, err := runtimeSyntaxDHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/d.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxDYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x96\x6d\x53\x1b\x39\x12\xc7\xdf\xf3\x29\xe6\x4c\x92\xf3\x40\x19\xc8\xab\xab\x70\x1c\xae\x24\xc0\x85\x3a\x02\x5c\x42\xee\x76\x6b\x34\x4c\xe4\x51\x8f\xad\x42\x23\xcd\x4a\x2d\x1b\x27\xbd\xf9\xec\x5b\x9a\xb1\xc1\xc6\xe6\x71\x37\x50\x85\x1e\x7b\xfe\xfd\x93\x5a\x6a\xb9\x90\x0a\x70\x5c\xc1\x76\x24\x56\x56\x04\x20\xe4\xb8\xbd\x12\x45\x51\x14\x26\x34\x2f\x61\x3b\x6a\x31\xb6\xd1\x16\x6d\x49\x22\xee\xc6\x2f\x5a\x2b\x2b\xd6\x2b\x70\x8d\xd5\x6a\x74\x52\x81\xe5\x68\xac\x8b\xb8\x16\x51\xe5\x75\x8e\x9e\xa3\x34\xba\x9e\xef\x44\x0e\x39\x42\x09\x1a\xb7\xa3\x56\x9b\xb1\x35\xda\xa4\x97\xc4\xd8\x3a\x75\x68\x77\x97\x76\x76\x68\x77\x77\x97\x5e\x11\x63\xe7\x6d\xc6\xce\xe3\x2e\x31\x46\xf4\x23\xee\xfe\xab\xb5\x44\x80\xb1\x8d\x00\xc3\xd8\x46\xdc\xa5\xbf\x51\x90\x7b\x45\x3f\x88\xb1\x36\x31\x16\x13\x63\x09\x31\x96\x12\x63\x8c\xd1\xe6\xc4\xcb\x4b\xda\xa1\x5d\x62\xac\x4b\xdb\xf4\xcf\xd6\x94\x3a\x47\xae\x22\xa9\x11\xfa\x60\x23\x25\x11\x2c\x57\x2e\xe2\x16\x22\x01\x95\x85\x9c\x23\x88\x09\x00\x58\x6b\x6c\xa0\xdf\x4a\xb6\x3a\xff\xc8\xd2\xb5\xb8\x7d\x94\xf8\x2f\x69\x97\x42\x79\xd4\x8d\xbb\x53\xd5\x3d\xc8\x65\xb9\x44\x77\x22\x94\x1b\xed\x90\x6b\xdc\xd0\xbe\xec\x41\x2d\x99\x6c\x75\xde\xa4\x94\xbc\xee\xbc\x49\x43\xf3\x2e\xf1\x77\x52\x73\x3b\xbe\x4f\xbb\xe1\xec\xbd\x4b\x93\xad\xd7\x0f\x41\x2d\x94\xe1\x78\x3f\x68\xcd\x39\x21\x0c\x11\x98\xed\xc7\xed\x04\xf6\xd3\x64\xbd\x93\x76\xe7\xc7\xe3\x6e\x52\x1c\x1c\xa5\x5d\xd9\x6d\x3d\x48\xf8\x56\x9d\x07\xc8\x9c\x6f\xa4\x3f\x91\xab\x31\xa7\xa4\x38\x48\xe3\xe9\x0e\x7e\x80\x4b\x2e\x1e\x1d\xf0\xad\xe4\xf2\x97\xb4\xc6\xe1\x9d\xe2\x6d\xe7\x20\xbd\x6e\x66\xe9\x1a\xcd\xf5\x66\xac\xe2\x5b\x03\x39\x8b\xf1\xc0\x60\x3e\x95\x21\xdc\xbb\xc7\x7f\xd5\x4d\xaa\xd3\x65\x51\xb8\x3f\x06\x35\xe7\x34\xaa\x8f\x73\xfa\x20\x9f\xab\xd1\xfb\x01\xb7\x3c\xc7\x3b\x22\xe7\xd0\x4a\xdd\x6f\x92\x5d\xf8\x73\xc8\x6d\xb8\x64\x7f\x6f\x5d\x0d\x81\x16\xf3\x03\xee\x42\x56\x75\xb2\x62\x6c\xe3\x7a\x74\x26\x6b\x4e\xff\x66\xfd\x54\x90\x4b\xae\x02\xd0\xfc\xa7\xab\xd1\x7f\x60\x3c\x32\x56\xb8\x49\x97\x77\x60\x69\x66\xec\xb5\x79\xcf\x61\x58\x0e\x71\x25\xb9\x0b\x65\x5f\x13\x77\x25\x71\xe7\xc0\x22\x71\x8f\x86\x7a\x46\x8c\xa9\x67\x81\x5f\x50\xce\x1d\x84\x02\x29\xe7\x98\x0f\x28\x57\xdc\x39\xaa\x91\x42\x89\x52\x7b\x20\x01\x3d\xdf\x27\x01\x05\xf7\x0a\x49\x80\x82\x3e\x47\x20\x61\x08\x94\x03\x02\xed\x4b\x82\xcb\xca\x58\x24\xb8\x44\xb0\x3a\x66\xac\x37\x45\x2f\x3a\xea\x16\xd6\x82\x87\xaf\x0b\xa9\xb9\x6a\x4a\x35\xa6\xc2\xd8\xf0\x0f\x3c\x1f\x4c\xeb\xcc\xc2\x10\x6c\xb0\x0c\x0f\x8b\x34\x9a\xfa\x06\x0d\xc9\x82\x64\x59\x7a\xe4\x3d\x05\x24\xcb\xda\xbb\xd4\x24\xb5\xf1\xa1\x81\x60\x0b\x9e\x03\x49\x3d\xe4\x56\x72\x8d\x24\x1d\x29\xfe\x6d\x3c\xcb\x56\x76\xec\x2d\x6c\x25\xcf\xad\xa1\x52\x5e\x4a\x4d\xa5\x11\x5e\x01\x69\x18\x91\x36\x38\xb0\x66\x44\xda\x2b\x45\xc1\x91\x19\x82\xb5\x52\x00\x55\x3c\xbf\xe0\x7d\xa0\xca\xf2\x7e\xc9\xa9\xb2\x72\x18\xf6\xa8\xb2\x26\xbc\xa7\x20\xa8\xf2\x3d\x25\x73\xaa\xbc\x05\xb2\x50\x90\x05\xf4\xf3\x3b\xe5\x3a\xa3\x5b\x68\x5c\x6e\x2a\x20\x37\xe0\x16\x04\x85\x49\x99\x93\x43\xeb\x73\x24\xe7\x2b\xb0\xe4\x46\x32\x44\xcf\x8d\x75\x3e\xb0\x46\xcb\x6f\x20\x08\xa1\xac\x54\x60\xc0\x81\x74\xd4\x70\xa3\xf5\x40\x68\xc7\x14\xde\x7b\x29\xea\xca\x14\xe4\x75\xd8\x56\xaf\x25\x22\x38\xa4\xb0\xdd\x61\x60\x34\x90\x0a\x68\x24\x71\x30\x8b\x99\x65\xb7\x50\x66\xd9\xc1\xe1\xd1\x7e\x96\x51\x96\x7d\x3c\xd9\xfb\x32\x69\x1e\x1d\x1e\x37\x8d\x83\x2f\xc7\xef\xcf\x0e\x4f\x8e\xeb\xce\xe9\xa7\xfd\xb3\xb3\x5f\xe7\xc7\xfa\x93\x05\x66\x19\x5a\x2e\xd1\x51\x96\x0d\x21\x47\x63\x29\xcb\x2a\x6e\x79\x09\x08\xd6\xcd\xa2\xec\x5d\xbd\xd3\xd1\xc5\xec\x0d\xb9\x7e\xb0\x03\x57\x38\xb0\xe1\xb8\x5e\x19\xd7\xcb\x16\x50\xd0\xd0\x28\x8e\x52\xc1\xac\xe6\xa9\x95\xa5\x44\x39\x84\x28\x58\x4d\xf5\x9a\xdf\x47\xb5\x5c\xcf\x18\x45\xbd\x31\x02\xe5\xc2\xf8\x70\xfa\x72\xd0\x48\x79\x9d\x79\x29\x1f\x70\x4b\xb9\x05\xae\x48\xd4\xed\x89\x4d\x33\x2b\x27\x3d\x39\xe9\x86\x63\x59\xdb\x2a\xa3\xfb\x54\xb7\xdc\x20\x9c\x64\x5f\x3b\xf0\xb5\xb2\x0f\x66\xbe\xb6\xf0\xcd\xec\xd0\x48\x41\xa3\x20\x3f\x4b\xfe\x6f\x65\x7a\xe1\x12\x45\x02\x0a\xa9\x41\x44\x6e\x5c\xf6\x8c\x5a\xb2\x84\x26\xa3\xd1\x68\x52\x8b\x49\xed\xe4\x37\xc8\x90\x2a\xb4\x42\x16\x45\x86\xb3\xe2\x9f\x9b\xe4\x14\xa1\xb9\x00\xbd\xe4\x17\x47\x73\x00\xf6\xde\x9e\x35\xc1\xde\x3f\x39\xa8\xeb\xb3\xc3\x8f\xfb\x57\x8d\xcf\x67\x6f\x3f\x9e\xd6\xbd\xff\xed\x1f\xef\x9d\x7c\x9a\x34\x3f\x7d\xae\x4f\xc0\x9c\xb7\x1a\x68\x3e\x23\xaf\x46\x7b\xf5\xe6\xfd\xd7\x1b\x04\xd1\x58\xdc\x92\xaa\xa3\x85\x5c\xcd\x5a\x37\x93\xf5\xec\xc8\x5d\xd9\x3a\x7a\x42\xba\xfe\xff\xd8\xc9\xd1\xb8\x7f\x27\xe3\x02\xa2\xbd\x9b\xf1\x89\x6f\xc7\x03\x1c\x7f\xbd\xe9\xf6\xeb\x5f\xf0\x62\x7d\x80\xcb\xc7\x2d\xff\xf2\xa7\x2c\x3f\xe4\x08\x15\x2e\xf4\x3d\x27\x66\x01\xe7\x37\xd6\x62\xac\xbd\x40\xc4\xe2\xe7\x89\x49\xed\xfe\xfb\x4d\xf7\xf5\xe8\xef\xcf\xe6\x3f\x59\xea\x3f\x7d\x26\xff\x3b\x4b\xbc\xef\xfe\xf9\xdb\xf9\x30\xe7\xc9\x79\xfb\x7b\xb2\xc3\x5a\x69\x72\xce\x5a\xe9\xda\x8b\x9b\x2c\xe7\xf5\xf8\xfa\xb3\x1d\x86\xf6\x15\x50\xfc\x53\x6e\xc9\x7b\x53\x86\x97\xfc\x3a\xb1\x97\xcd\xc3\xbe\xc0\xb2\xb9\x79\xd3\xff\x8b\x85\x98\x24\xe9\x0d\x99\x45\x15\xc6\xd6\x16\xef\xd6\xda\xe6\xd3\xa4\xd6\x17\xa5\xd6\x97\x4a\xad\xfc\x11\x00\x00\xff\xff\xb7\xae\x06\xa1\xeb\x10\x00\x00" func runtimeSyntaxDYamlBytes() ([]byte, error) { @@ -1808,6 +2414,26 @@ func runtimeSyntaxDYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxDartHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x49\x2c\x2a\xe1\x8a\xd1\x03\x51\x2a\x5c\x5c\x80\x00\x00\x00\xff\xff\x3e\xc9\xfd\x80\x0e\x00\x00\x00" + +func runtimeSyntaxDartHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxDartHdr, + "runtime/syntax/dart.hdr", + ) +} + +func runtimeSyntaxDartHdr() (*asset, error) { + bytes, err := runtimeSyntaxDartHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/dart.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxDartYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x93\x41\x6f\xdb\x3a\x0c\xc7\xef\xf9\x14\x7e\x46\xdf\x6b\xe2\xc0\x71\xde\x69\xa8\xb1\xcd\x28\xb6\xf5\x54\xa0\x03\xb6\x5d\x26\xa9\x85\x6c\xd3\x8d\x50\x59\x36\x24\xba\x69\x06\x62\x9f\x7d\x90\xe2\xb6\x59\xda\x6e\xc1\x80\xf9\x40\x49\x14\xf9\xff\x51\x92\xd9\x28\x0d\xb8\xe9\x21\x8f\x6a\x69\x71\x32\xa9\x01\xa1\xc2\x7c\x12\x45\x51\xe4\xf7\x8c\x6c\x21\x8f\x62\xce\x17\x7e\xff\x28\x9e\x4c\xec\xa0\xc1\x6d\x03\xd2\xa8\xea\x8c\x43\x69\x70\x61\x86\xb6\x04\x1b\x22\x4b\x96\xce\x45\x31\x65\xff\xa7\x27\x82\x2d\xd3\x13\x91\xd0\x92\x2d\xd3\x57\x7e\xbc\xf3\x0e\x99\x36\xa7\xe9\x99\x98\xcf\xa6\x6c\xf8\x22\x98\x3e\x17\x05\x79\xeb\x57\xc5\xac\xe0\xbc\x8c\x0f\x90\xf7\xca\x73\xce\x17\x23\x62\x3b\xdc\xaf\xbd\xf6\x07\xf8\xd8\x0b\x36\x4f\x45\x31\xba\x0a\xd6\x9c\x79\xd8\xc1\xea\x4f\x25\xf6\x14\x54\x0d\x06\x55\xa3\x42\x32\x3b\x4d\xbf\xca\xf4\xdb\x95\x18\x27\xcb\xf4\xe4\x4a\x24\x8c\xe5\xae\x97\x15\xe4\x42\x24\x6c\x2a\xee\x33\x1d\x4a\x84\x16\x0c\x6e\xa9\xd3\xd2\x82\xbc\xa1\x4a\x3a\xa0\x4a\x62\xb5\xa2\xaa\x33\xa8\xcc\x00\x54\x43\x23\x07\x8d\x04\xda\x01\x35\xca\x48\xad\x37\xb3\x9d\x3b\xda\x57\x6a\x3a\x4b\xcd\x60\x2a\x54\x9d\xa1\x6b\x40\x52\x0d\x29\x43\xd2\x91\x72\x64\x60\x4d\x16\x70\xb0\x86\x1c\x20\xb9\xb5\xf2\xac\xa0\x4a\x72\x2d\x15\x92\x74\x1b\x53\x91\x37\xbf\x82\x8c\x89\xb8\x52\x8e\x70\x65\xbb\x35\xa1\xdd\xd0\xad\xb4\x74\xdb\xa9\x9a\xd6\x2b\xa5\x81\xd6\x0a\x57\xa4\xda\xbe\xb3\x48\x5a\x95\x56\xda\x0d\xf5\xd2\x22\x85\x8b\x27\xb8\xf3\x3b\xb3\x67\x9e\x7b\x84\xa0\x1d\x80\x1a\xe9\xcf\x6d\x06\xad\x77\x23\xb7\xbf\x6c\x88\x3a\x57\x0e\xe9\x13\x5a\x65\xae\x5f\x88\x50\x06\xc9\x0c\x2d\xd5\xdd\x50\x6a\xa0\xb2\xeb\xf4\x4b\x67\x63\xe9\x3c\x4b\xde\xbc\x7e\xfb\xcf\xf7\x7f\x8b\xfc\x3f\x12\xcf\x54\x96\xb1\xcb\x44\x4c\xd9\x65\x26\x68\xca\x39\xe7\xd9\x6c\x96\xb0\x4b\x3f\x13\x19\xbb\x56\xad\x48\x9e\x3d\x0e\xe7\xa1\x07\x82\x29\xb6\x96\xbc\xf7\xa7\x8e\x08\x1e\x56\x36\xc6\xe2\x31\x8f\x39\x2f\x82\x6c\x3c\x79\x10\x6c\x43\x9d\x61\xe9\x3f\x87\xd2\x86\x9a\xb2\xf8\xc1\x07\xa6\xce\xa3\xf8\xe8\xd1\xb1\xd3\xb0\xf7\x5f\x1a\x61\x57\x77\x79\x14\x7f\xbe\x78\x7f\x91\x17\x07\x00\x38\x4f\xf6\x11\x9c\x27\xd9\x1f\x52\xc6\xbe\x73\xe1\xd5\x9e\xd2\x78\xfc\x84\xb5\xe3\x71\x37\xaa\x1f\xaf\x74\xf1\x1b\xfe\x23\xa9\x87\x4a\x49\xfd\x6e\x25\xed\x63\xea\xa1\xe5\x1c\xef\x57\x73\xfc\x37\x8a\xf9\x11\x00\x00\xff\xff\x7a\xf4\xbf\x0c\x8a\x05\x00\x00" func runtimeSyntaxDartYamlBytes() ([]byte, error) { @@ -1828,6 +2454,26 @@ func runtimeSyntaxDartYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxDockerfileHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xc9\x4f\xce\x4e\x2d\x4a\xcb\xcc\x49\xe5\xd2\x70\x81\xb3\xa3\xe3\xf4\x63\xb5\x54\x6a\x62\xf4\x10\xd2\x2a\x9a\x5c\x5c\x80\x00\x00\x00\xff\xff\x2c\x4e\xd6\x72\x2d\x00\x00\x00" + +func runtimeSyntaxDockerfileHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxDockerfileHdr, + "runtime/syntax/dockerfile.hdr", + ) +} + +func runtimeSyntaxDockerfileHdr() (*asset, error) { + bytes, err := runtimeSyntaxDockerfileHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/dockerfile.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxDockerfileYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x90\x51\x6f\xda\x30\x10\xc7\xdf\xf3\x29\xac\x80\x28\x99\x54\xf6\x9e\x97\x2a\x24\x6e\x89\x48\x62\xe4\x84\x2e\x15\xa6\x92\x97\xdc\xd6\x08\x70\x22\xdb\xd5\x54\xe9\x3e\xfc\x64\x28\x05\x75\x0f\xdb\xcb\xfc\x76\x7f\xdd\xdd\xef\xe7\xfb\xd1\xed\xc1\xbe\x0d\x10\x92\xb6\x6f\x76\xa0\x5d\xed\x79\x2d\x58\x68\x6c\xe8\x11\x42\x88\x4b\x94\x3c\x40\x48\xfc\x69\xf2\xd1\xb3\x79\xfe\xba\xfd\x32\x46\x21\x66\x97\xb9\x71\xe0\x7b\x9e\x7e\xdd\x83\x39\x4d\x8e\x46\x64\x09\x6f\xbf\x7a\xdd\x9a\x63\x7d\x4b\x1c\x69\xb6\x3b\x65\x6e\xdf\x5d\x17\x3c\x4f\xef\x39\xcb\x31\x8f\xd2\xa2\x8a\xd2\x82\x72\xe4\xeb\x02\xe3\x3c\xc1\x2c\x9a\xd3\x0c\x69\xbd\x62\x25\x45\x5a\x3c\x62\x94\x24\x18\xb3\xd5\x13\xd2\xa2\xe2\x4f\x2b\x96\x16\x15\x3e\xb2\x6c\x9d\x53\x5c\x97\x94\xe3\x37\xc6\x97\x49\xca\x91\x15\xf3\x75\x9a\x25\x18\xf1\x07\x5c\xd0\x28\xab\x16\xf1\x82\xc6\x4b\x2c\x2b\xb6\x2a\xd3\x87\x22\xca\xb0\x5c\xd0\x2c\x0b\x36\x9b\xd0\x0c\xb2\x81\x70\xbb\xf5\xbd\xa3\xe2\x51\x7a\xae\x65\xb3\x03\x6b\xc8\x84\x0c\x52\x83\xb2\x2f\x60\xba\xf3\x17\x8c\x95\x16\x0e\xa0\xac\xf3\x17\x62\x8a\x42\x04\x28\xc4\x06\x85\xd8\x06\xd7\x5b\x92\xfe\xf5\xfb\x1e\x88\x3c\x0c\xa0\x8d\x54\xed\x79\x7e\x80\xa6\x93\xfb\x90\xf8\x93\xc9\x75\x7b\xdc\x1f\xdc\xd6\x33\xa6\x39\x95\xe1\x7b\x03\x71\x5c\xed\x98\x23\xff\x23\x02\xe5\x8e\x38\xbe\x04\x57\xb7\x3f\xbf\x5b\x62\xfb\xb6\x77\xae\x15\x4b\x18\xd6\x75\x8d\xf7\x69\x9d\xd3\x20\xbc\x7b\xa7\x3b\x96\x32\x56\x2a\x3b\x33\x56\x77\xea\xe7\x9f\x4c\xe1\x7f\x86\x5e\x27\x66\xd7\x0d\x2e\x12\x42\xcc\xfe\xe2\x72\x21\x9d\xae\x10\xbf\x48\x7d\x19\xfd\x57\x9d\x9b\xcf\x36\x37\xff\x43\xe6\x77\x00\x00\x00\xff\xff\xda\x2b\xb9\x29\x1a\x03\x00\x00" func runtimeSyntaxDockerfileYamlBytes() ([]byte, error) { @@ -1848,6 +2494,26 @@ func runtimeSyntaxDockerfileYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxDotHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xc9\x2f\xe1\x8a\xd1\xd3\x48\xc9\x2f\xa9\x49\x2f\xd3\x54\xe1\xe2\x02\x04\x00\x00\xff\xff\xb0\x0c\xf2\xbd\x11\x00\x00\x00" + +func runtimeSyntaxDotHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxDotHdr, + "runtime/syntax/dot.hdr", + ) +} + +func runtimeSyntaxDotHdr() (*asset, error) { + bytes, err := runtimeSyntaxDotHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/dot.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxDotYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x52\x4d\x8b\xdb\x40\x0c\xbd\xfb\x57\x18\xb3\x07\x7b\x21\x9b\xbb\xa1\xf5\xa1\x1f\x50\x68\xd9\x52\x5a\xc8\xc1\xb0\xc8\x1e\xc5\x16\x19\xcf\x0c\x1a\xa5\x21\x45\x3f\xbe\x8c\x67\x9b\xec\xc7\xa1\x85\xfa\xe4\x91\xf4\xf4\x9e\x9e\xb4\x27\x8b\x72\x0e\xd8\x96\xc6\x4b\x51\x18\x14\x1c\xa5\x2d\xca\xb2\x2c\x53\xca\xc1\x82\x6d\x59\xf5\xfd\x5d\x6d\xbc\xe8\xf4\xb3\xb9\xa9\x8a\x82\x8f\x16\x63\x2e\xda\x94\x19\x5d\xa6\xa2\xa1\x36\x34\x31\x84\x59\xd1\x4c\xa8\xf9\xd7\x79\x83\x1a\x8f\xc3\xfa\x6a\xfa\x7e\xa8\x1e\x81\x51\x40\x70\x41\x27\x6d\xc6\x02\xb3\x3f\xd5\x33\x82\xd1\x48\xbf\x50\x05\xc8\x36\x5a\x0f\x93\xee\xc9\x5a\xdd\x7b\x27\x4d\x37\x7a\xeb\x59\x47\x74\x82\xac\xa3\x77\x51\x18\xc8\x89\x1a\x1c\x3d\x83\xe0\x57\x35\xc4\x6a\x28\x8a\x67\x21\xef\x56\x58\x9d\xc6\x58\x9b\x36\x9a\xfa\xd7\xa3\xa5\xa0\x16\x06\xb4\x29\x40\xd3\x2c\xf9\x55\x83\x9b\x2c\xae\x70\x70\x23\x66\x70\xa6\xbc\xb6\x68\x3a\xb5\x70\x46\xae\x63\xd3\xe9\x02\x3c\x91\xd3\x65\xb4\xb4\x90\xe8\x42\xce\xa2\xcb\xc5\x69\xf0\x88\x41\x5d\xcc\x39\xcf\x06\x99\xdc\xa4\x9e\x09\x9d\xc0\x2a\x2f\xc0\x84\xb5\x21\x6e\x3a\x0d\xc8\x14\x66\x64\xc2\xa8\xc1\xb3\x3c\xac\x92\x1e\x2e\x62\x18\xdc\x21\x95\x6a\xc4\xd0\x74\xca\xa9\x81\x32\x4e\x47\x0b\xac\xec\x93\x9b\x1a\x61\xc1\x6c\x61\x76\x2f\xce\x10\xb0\x4e\x9b\x6c\x3a\x8d\x64\x30\x66\x6f\xe3\x01\x4f\x1a\xe5\x6c\xb3\xcd\xcf\x0c\xf9\xf1\xed\xb3\x9e\xb2\x29\x27\x32\xf2\x7c\x67\xe7\x65\xf0\xb6\x2d\xcb\xea\x8d\x6e\xde\xea\x66\x53\x15\x8f\x99\x75\x17\xe0\xe4\x2e\x4a\x1a\x32\x5f\x47\xfa\xa2\x00\xaf\x2b\xae\xaa\x4b\x0c\x9d\x79\x11\x89\x07\x0a\xeb\x1d\xf4\xfd\xdd\x35\xfa\xe4\xd0\xfe\x7c\x4f\x99\x02\x8e\x04\xf6\xdd\x0c\x7c\x85\x5e\xe4\x2c\xeb\x69\xbd\x92\xb1\xdd\xbe\x94\x71\xf3\x17\x3e\xf1\xc6\xb7\x65\x55\x7f\xbf\x7f\x7f\xaf\xbb\xdd\x4e\x3f\x7e\xda\x7d\xf9\xd0\xb4\xdd\x3f\x90\xf5\xfd\xed\xab\xa9\xfb\xdb\xed\x7f\x30\xfe\x0e\x00\x00\xff\xff\xd2\x53\x55\xa9\xb1\x03\x00\x00" func runtimeSyntaxDotYamlBytes() ([]byte, error) { @@ -1868,6 +2534,26 @@ func runtimeSyntaxDotYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxElixirHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xcd\xc9\xac\xc8\x2c\xe2\x8a\xd1\x4b\xad\x50\xa9\x01\x91\xc5\x2a\x5c\x5c\x80\x00\x00\x00\xff\xff\x2e\xb5\x63\xa5\x15\x00\x00\x00" + +func runtimeSyntaxElixirHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxElixirHdr, + "runtime/syntax/elixir.hdr", + ) +} + +func runtimeSyntaxElixirHdr() (*asset, error) { + bytes, err := runtimeSyntaxElixirHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/elixir.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxElixirYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x54\x7f\x6f\xdb\x36\x10\xfd\xdf\x9f\xc2\x71\x5d\x44\x72\x11\xa3\xff\x36\x18\x9a\x15\x4d\x06\x14\xe8\x0f\xac\xeb\xd6\x60\xa2\xc4\x50\xe2\xc9\x26\x4c\x91\xca\xf1\x14\xdb\xcd\xf5\xbb\x0f\x94\x14\xc7\xd9\x16\xc3\xd0\x51\xef\x9e\x8e\x8f\xc7\xbb\xab\x8d\x05\xda\xb7\x70\x3e\x05\x6b\x76\x06\x27\x13\x0d\x04\x15\x9d\x4f\xa6\xd3\xe9\x34\x7a\x9d\x6a\xe0\x7c\x3a\x13\x62\x09\xbb\x39\xf7\x26\xcc\x67\x93\x09\x76\x16\xc2\x40\x3b\x9b\x06\x52\x04\x0d\x38\xea\x99\x65\xa2\xca\xc0\x84\x9d\xab\x18\xa1\x61\x6d\xee\x18\x7d\xe7\x34\x37\x6a\xc7\x8d\x71\xac\x9c\x66\x8f\xec\x3c\x31\xad\xd1\x6f\x19\x95\x09\xc0\x08\x83\x5d\x6b\x26\xcb\xc6\xb1\x05\xb7\xa2\x35\x83\x85\x86\xdb\x8e\x64\xbf\xd0\x10\x08\xbb\x8a\x3a\x04\x26\x2f\x93\x40\x68\xdc\x8a\xab\xb5\x42\x6b\x02\xa5\x6c\x82\x4c\x14\xf9\x86\x4b\xe3\x14\xee\xb9\x34\x34\x72\x4a\xef\x2d\x28\xc7\xb5\xf5\x8a\xb8\xee\x5c\x45\xc6\x3b\x36\x8e\x60\x05\xc8\xf1\x73\x6e\x54\xcb\xce\x58\x76\x5d\x53\x02\x72\x6b\x34\xb7\x1e\x89\x11\x6a\x40\x70\x15\x30\x75\xad\x85\x94\x93\xd2\x10\x97\x7b\x82\xfe\x93\x01\x94\xc1\xfc\x80\x71\x5f\xd9\x2a\x24\xd6\x50\x27\x1a\x2c\xac\x14\x01\xc3\xae\x82\xb6\xdf\x72\xd5\x29\xd4\xc3\xb3\x65\xd3\xb4\x96\x1b\x55\xa1\x1f\x9e\x2d\x37\x5e\x77\x16\xd8\xdf\x01\xa2\xd1\xaa\xb4\xc0\x2d\xb7\xe8\xc9\x57\xde\xf2\x70\xfe\xf4\x82\x83\x59\x19\x2b\xb3\x0a\xc3\xf6\xfd\xd7\x3f\xbe\x5f\x7e\xfe\x96\xb3\xa9\x19\x6c\x00\xee\x9c\x85\x10\xb8\xf2\x4e\x47\x41\x3a\x9e\xdf\x79\x0d\x1c\xc0\xd6\x1c\x5a\xb5\x75\xc3\x53\x5a\xe3\x36\xe3\xb2\xf1\xce\x90\x47\x0e\xe0\x34\xc3\xce\xd0\xb8\x17\xaf\x80\xa4\x72\x5a\x76\xad\x56\x04\xd2\xb8\x1e\x31\xae\xbf\x96\x68\x7c\x1b\xcd\xa3\x5b\xb5\xad\xdd\xb3\x71\xa1\x85\x2a\x26\x75\x03\x12\xa1\xe6\x2e\x00\x6b\xcf\xe0\x74\x2a\x44\x39\x7b\xae\x7e\xac\x51\x21\xa6\x65\x48\xfc\x6d\x67\x10\xb8\x52\x01\xb8\x76\x8c\x50\x81\xb9\x03\x56\x35\x01\x32\xe1\x9e\x2b\x45\xd5\x9a\x11\x42\xd5\x01\x87\xae\x05\xe4\xdb\xce\x53\xcc\xc1\x13\x2b\x43\x6b\x4d\x15\x13\x51\x7b\xe4\xad\xa1\xf5\x20\x62\x54\x51\x79\x17\x48\x3d\x88\x10\x22\x7b\x77\xf6\x77\xfe\xea\x48\xe6\x03\x61\x39\xd4\xc6\xc0\xcb\x5e\x9f\xbd\x19\x59\xff\xa6\x0d\x55\x77\x3e\x9d\xdd\x64\xc5\x4d\xbe\xb8\xe1\x97\x3b\x21\xee\xb3\xe2\x67\xbe\x10\xe2\xe7\x7f\xa2\x1e\xe8\x62\x96\x64\x85\x98\xe5\x9c\x88\xf8\x9b\xa5\xe9\x42\xcc\xf8\x65\xf6\xfb\xf7\xfc\xe2\x28\xc0\x01\x49\xb2\x22\x8d\x48\x3a\x22\xbf\x64\xc5\xdb\x7c\xf1\xf6\xe0\xcf\xb2\x22\x8f\xfe\xfc\x80\xcc\xb3\x62\x1e\x91\xf9\x01\x29\xb2\xa2\x88\x48\x31\x22\x27\x59\x71\x92\x2f\x4e\x9e\x17\x79\x9a\x64\xc5\xe9\x28\xf1\x34\x4d\x17\xa7\xfc\x32\xbb\xdd\xe6\x4f\xf5\xf5\xc0\xb1\xbc\xdb\x6d\xfe\xa8\xae\xf7\x1e\x8b\xeb\x81\x63\x6d\x3d\x70\x2c\xed\x76\x9b\x1f\x94\x3d\x14\xcf\xbe\x29\xbd\x5d\x96\xa8\xaa\x0d\x50\xe8\x6f\xe5\x9e\xe3\xfe\x42\x64\x1c\x03\x0b\x91\xb0\x10\xe9\xd1\x05\x35\x63\xb1\xbd\xc8\x8a\xfb\x7c\xb9\x98\xf3\x8b\xf9\xec\xa9\x73\x59\xa2\x59\xad\x7b\xce\x23\x29\xb2\x46\x5a\x9c\x9a\xcb\x0d\xec\xb7\x1e\x75\xbf\xe5\x79\xa6\xce\x7e\xc4\x8a\x19\xed\xeb\xb3\x37\x32\x5f\xcc\x9e\xa3\x97\x89\x86\x50\xa1\x29\x81\x09\x02\xa5\xcf\xb5\x02\xec\x62\x03\x81\x66\x15\x02\x20\x8d\x46\x0e\x83\x72\x7c\x31\x4e\x6a\xb0\xa4\x0e\xce\xa1\x43\xf4\xd0\x18\x12\x10\x3d\x8e\xeb\x61\xdc\xd6\xb6\x73\x9b\x38\xd1\x3a\x82\xd1\x3c\x06\x19\xdf\x1f\x82\x3c\xe9\xd3\x21\xd5\xa4\x62\x01\x14\x42\x84\x85\x10\xbf\xfe\xef\xb9\x8f\xfb\xc1\x68\x70\x64\x6a\x03\xb8\xec\xc7\xdb\x78\x32\x29\xdf\xbf\xfb\xf8\xf1\xea\xab\x94\x2c\xe5\xe5\x87\xc1\x5e\x7d\xfe\xab\xb7\x9f\xbe\x5c\xfe\xf9\xf1\xaa\x5f\xf6\xc3\x00\x42\xbf\x2e\xad\xaf\x36\x52\xc6\xa9\xda\x87\x7a\xd2\xbf\xe4\x75\x8c\x9d\x5c\x5f\x5f\xf3\xb7\x2f\x97\x5f\xf8\xb7\x0f\xd7\x9f\xae\x58\x88\x8b\xe1\x7f\xc8\x71\x8b\xd0\xa2\xaf\x96\x61\x0d\xa5\x1a\x3a\x4e\x7c\x5f\xbc\x38\x59\xbe\xba\x48\xa6\x3c\x4f\x67\x93\x7f\x02\x00\x00\xff\xff\x5b\x2b\xa6\x36\x18\x07\x00\x00" func runtimeSyntaxElixirYamlBytes() ([]byte, error) { @@ -1888,6 +2574,26 @@ func runtimeSyntaxElixirYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxElmHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xcd\xc9\xe5\x8a\xd1\x4b\xcd\xc9\x55\xe1\xe2\x02\x04\x00\x00\xff\xff\x4d\xbc\x1f\x55\x0c\x00\x00\x00" + +func runtimeSyntaxElmHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxElmHdr, + "runtime/syntax/elm.hdr", + ) +} + +func runtimeSyntaxElmHdr() (*asset, error) { + bytes, err := runtimeSyntaxElmHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/elm.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxElmYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x92\xdd\x4a\x33\x31\x10\x86\xcf\xf7\x2a\xc2\x52\x68\xfb\x41\x7a\x01\x0b\x9f\x22\xfe\x80\x07\xd2\x13\x0f\x16\x3b\x15\xd2\xdd\xd9\x36\x98\x9f\x65\x33\x05\xad\xe3\xbd\x4b\x52\xaa\xb5\x5b\x29\x08\x3a\x81\x39\x78\x67\x92\xf7\x99\x30\x8d\x36\x48\x2f\x2d\x16\x02\x8d\xcd\xb2\x1a\x09\x2b\x2a\x32\x21\x84\x88\x25\xa7\x2c\x16\x22\x07\x98\xa0\xb1\x83\x3c\xcb\xba\xb5\xc1\xb0\xad\x4b\x11\x48\x11\x5a\x74\x94\x5a\x16\x23\x15\x58\x19\xad\x02\x57\x2a\x20\xa3\x89\xe9\xb9\xf5\x41\xbb\x25\xeb\x86\xb5\x6d\x7d\x47\xac\x1d\x1b\x24\xb6\xbe\x5e\x1b\x64\xdf\x70\x52\x69\x85\x8e\x23\x09\x8f\x01\x16\xf9\x11\x87\x11\xc0\x7f\x06\x28\x18\x40\x9e\x8d\x77\x1d\x5b\xf8\x64\x3f\xbb\x90\x0f\xf3\x98\x94\xdc\x00\xd4\xf3\x7f\xfb\x2f\xe9\x1a\x1d\xe9\x46\x63\x57\x88\xfc\x71\x34\x53\x72\xf3\x6d\x6f\xe5\x5d\x20\xe5\x68\x12\xa8\xd3\x6e\xb9\x1d\x37\x46\x20\xd5\xa5\x61\xd3\xc9\x3f\x74\x74\xf5\x11\x35\x3c\xe9\x36\xa1\x01\x4c\x3e\xd5\xbd\x1f\xdc\xc5\xbe\x63\x8b\x95\x56\xe6\x72\xa5\xba\xaf\x57\xfb\x54\xe2\x08\x56\x1f\xe9\xcf\x70\x7a\x34\xc3\x43\x98\xe1\x2f\xb2\xd8\xb4\x24\x3d\x06\x29\x0f\x21\x06\x27\xec\xc8\xd7\x3e\x2e\xdb\xfd\xf4\x6a\xca\x65\x59\xf2\xcd\x6d\x79\x77\x3d\x2e\xce\x4f\x7a\x01\xbc\xf6\xdc\x24\xc0\xdb\xcf\x0d\xdf\x03\x00\x00\xff\xff\x24\x7c\xac\xca\x9d\x03\x00\x00" func runtimeSyntaxElmYamlBytes() ([]byte, error) { @@ -1908,6 +2614,26 @@ func runtimeSyntaxElmYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxErbHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x2d\x4a\xe2\x8a\xd1\x4b\x2d\x4a\x52\xa9\x89\xd1\x2b\xca\x28\xc9\xcd\x51\xe1\xe2\x02\x04\x00\x00\xff\xff\xf9\x74\xbd\xae\x15\x00\x00\x00" + +func runtimeSyntaxErbHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxErbHdr, + "runtime/syntax/erb.hdr", + ) +} + +func runtimeSyntaxErbHdr() (*asset, error) { + bytes, err := runtimeSyntaxErbHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/erb.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxErbYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x55\x7f\x6f\xdb\xc8\x11\xfd\xbb\xfe\x14\xb4\x22\xd5\xbb\x72\x25\xb7\xff\x04\xa8\xce\x67\xe6\xda\x28\x45\x80\x6b\xdc\x02\x01\x9a\x1e\x7f\x28\x4b\x72\x48\x2d\xb4\xdc\xa5\x77\x97\xb2\x75\x79\xfe\xee\xc5\x52\xb2\x65\xc7\x6e\x0c\x7a\x21\xbc\x19\xce\xbc\xd9\x79\x33\xac\xa5\x22\xbf\xeb\x68\x11\x91\x2d\x4e\x4e\x2a\xf2\x54\xfa\x45\x74\x12\x45\x51\x14\x6c\x5a\xb4\xb4\x88\x46\x69\x3a\x27\x5b\x8c\x91\xa6\x73\xbb\xf6\xad\x1a\x8f\x4e\x4e\x6c\xaf\xc8\x2d\x06\xcf\x59\x44\xd6\x1a\xbb\x88\x46\x97\x49\x7e\x9a\xcd\xa7\xf1\xd5\xe8\x60\x70\xbb\xb6\x30\x6a\xee\x45\xb3\x88\x46\x2c\x96\xfc\x32\xb9\xc8\x62\x26\x58\x51\x58\x94\xd6\xe8\x5d\x8b\xaa\xb2\xe4\x1c\xba\x4e\x91\x87\x25\x01\xeb\x65\xa9\x08\x4e\x56\x84\xbe\x92\x86\xc7\x28\x98\x70\xc4\x6a\xa3\x3d\x8f\x51\x31\x09\xc3\x21\x1b\x28\x53\x6e\x6e\x7a\xe3\x09\x96\xc7\x28\x05\xd3\x5b\xe1\xd0\x79\x69\x34\x47\x49\xda\x93\x45\x29\x3d\xa1\x34\xac\x22\x28\xa8\xc6\x9a\xbe\xe3\xa8\x98\xf0\x82\x29\xe9\x86\x78\x20\x05\xf2\x42\x2a\x87\x5a\x43\x0a\x65\x1a\x48\x0b\x05\xcf\x41\x2d\x2b\xa8\xe2\x31\x6a\x49\xaa\x72\xe4\x51\xcb\x86\x95\x62\x48\x82\xde\x12\x47\xa0\x85\xda\xd8\x16\x4c\xf2\xb8\xb6\xa2\x25\x0c\x67\xf0\x5e\x27\x7f\x99\xbd\xcd\xb0\xb6\x90\x90\x6d\x03\xa9\x59\xd7\x7b\x38\x8e\x4d\x51\x61\x43\xbb\x86\x34\x94\x28\x48\x41\x51\x43\xba\x82\x92\x4c\x6f\x78\x8c\x56\x30\xa9\xd1\xc1\x6e\x38\x5a\xd2\x3d\x93\x9e\xda\x80\x93\x67\x02\x64\x39\xb4\xd8\x42\x1b\xb6\xcf\x05\x57\x5a\xd9\x79\x0e\xc3\x14\x3a\xcf\x86\x4a\x31\xdc\x44\xef\xbb\xde\x73\x74\x4c\x58\xd1\x42\x96\xbe\xb7\x84\xf0\x98\x26\x5c\x3d\x8f\x71\x03\xcb\x3a\x78\xf4\xc5\x8e\xc3\x31\x6f\xe5\x86\x78\x0c\x27\xda\x0e\x8e\x58\x39\x14\xab\xa8\xf4\x1c\xae\x15\x4a\xc1\x99\xde\x96\x04\xd7\x09\x0d\xe7\xad\xd1\x0d\x5c\xcf\x0a\x74\x68\x5b\x61\x77\x1c\x9e\xee\xbc\x08\xdd\xf4\xb2\x25\x78\x2b\xca\x0d\x7a\xa6\x78\x8c\xad\xb0\xd8\xca\x8a\x0c\x6e\x0b\xcb\x59\x34\x9f\xe2\x8a\xbf\xaa\x99\x39\xdd\x79\xd2\x15\x55\xcf\xc4\x53\x98\x6a\x87\x4a\x6e\x11\xa4\x88\x35\x89\x8a\x51\x68\x7f\x6d\x4c\xe8\xb7\x97\x5e\x11\xbc\x28\xc2\x79\x70\xc6\x9a\x91\x08\x4d\xb4\x83\x17\x7f\x25\x6b\x67\xa9\xb3\xa6\x7c\x96\x69\x7f\xa3\x70\x7e\xa7\xe8\x35\xa2\x1d\x95\x52\xa8\x45\x34\xfa\x63\x92\xff\x94\x24\x0b\xd7\x89\x92\x16\x59\x96\x4d\x7f\x7a\x5e\xcc\x22\x1a\x25\x8b\x9f\xb3\x07\x50\x56\xa4\xbd\xac\x25\x85\x99\x61\x42\x79\x14\x4d\x69\x94\xb1\x58\x93\x6c\xd6\x1e\x6b\x4b\x35\x64\xf5\xa0\x0b\xa3\x9b\x8a\x5c\x89\x30\x8e\x30\xba\x54\xb2\xdc\xc0\xe8\xda\x94\xbd\x83\xd1\xca\x88\x0a\x46\xb7\xa6\x77\x64\xb6\x64\xe1\xe4\xef\x0f\xad\xb1\xe5\x9e\x3e\xbc\xb0\x0d\x79\x84\x69\xc7\x56\xa8\x9e\x70\x2b\x2b\xbf\xe6\x3f\x3f\x90\x2a\x8d\x76\x5e\x68\x3f\x77\xde\x4a\x1d\xe6\x35\x1d\x25\x79\x3a\xca\xa6\xe9\xe8\x85\x8f\xee\xdb\x62\xcf\x3e\x96\xfc\x4d\xf2\xe7\xd9\x5f\x7f\x99\x7d\xc8\xbe\xbd\xfd\xd3\xdb\xfb\xff\x13\x6f\xde\xdb\x70\x0d\xac\xf6\x1d\x0b\x8a\x5b\xfb\xc3\x8f\x46\x7a\x94\x6b\x6b\x5a\xe2\x8b\x8b\x8b\x24\x8f\xfe\x90\x9d\x1f\x63\xb4\x2d\x69\x1f\x36\xcb\xe9\x6c\x36\x3f\x8f\x67\xb3\x57\x1a\x76\x79\xfa\xfe\xfa\xef\x9f\xff\xfb\xaf\xe5\xfc\xfc\xd8\x9c\x8a\x6a\xd1\x2b\xbf\xdf\x50\xe1\xcf\x79\x61\x87\x48\x93\xd1\x23\x46\x3a\x48\x6b\x72\x75\x44\xf6\x6b\x2d\x4a\xb2\x93\x97\x69\x26\x98\x3c\x86\xb7\x83\x28\x7f\xd0\x77\x2f\x3c\x1d\xb8\xa7\x69\xc1\xfe\xb6\xfc\xc7\xc7\x4f\x58\x7e\x7a\x0f\xa1\xa4\x70\x10\xba\x42\x41\x8d\xd4\x28\x2c\x89\x0d\x4a\xe1\x08\xa5\x12\xce\xa1\xa2\x3a\xfc\x4b\x4d\x55\x9a\xc6\xa8\x0c\x48\x39\x0a\x87\xac\x11\x16\x04\x69\x17\x06\xb8\x16\x01\xae\x8d\x85\xac\x21\x35\x5a\x53\xf5\x8a\xa0\xe9\xce\x43\x4b\x05\x6d\x3c\x8c\x85\xa5\xca\xc0\x92\x2b\xfb\x30\xf3\xde\xee\xc2\xd9\x5b\x0d\x47\xaa\x86\xeb\xbb\x30\x33\x6b\xd2\xf0\xb6\x27\xf4\x3a\xa4\xef\xb5\x0a\x2b\xb9\xd7\x5e\x2a\xdc\x06\xe3\xed\x5a\x2a\xc2\x2e\xec\x40\x9e\xa6\xc5\x4b\x25\xcf\xb7\x62\xd0\x43\x9a\x8e\xf1\x0e\xef\xde\xf1\x38\x4d\x8b\xe4\x97\xd9\x6f\xd9\xf9\x5e\x1e\xbf\xad\xc4\xec\xf7\x6c\xfa\xf0\x66\x2b\x1a\xd2\x5e\x1c\x24\xc4\x92\x28\xca\x90\xf3\xc5\x83\x6f\x76\xfe\x7a\x96\x56\x94\xd6\x1c\xee\x74\xb5\xfa\xf0\xf1\xd7\xe5\x6a\x85\xd5\xea\xd7\x8f\x9f\x96\xab\xd5\x53\x66\x85\x0d\x93\x74\xcc\x72\x7a\xc1\x92\xfc\x22\x03\x4b\xd3\x34\xbd\xe0\x7c\x7a\x91\x48\xd3\xde\x65\x53\x4c\x6c\x9a\x7e\x63\x49\x7e\x7f\x30\xde\x73\x3e\x4d\xd3\xfb\x83\xf9\x79\xbc\x42\xf5\xe1\x83\xf8\x35\xc9\xbf\x66\xd3\xaf\x98\xdc\xa5\xe9\xb7\xf0\x66\x78\xe1\x47\x83\xc4\x86\x49\xda\xc7\x4f\x47\x21\xc1\x08\x93\xe4\xdf\xff\xc9\xe2\x27\x01\x1e\x11\x96\xe4\x3c\x20\xfc\x80\x5c\x26\xf9\x55\x36\xbd\x7a\xb4\x27\x49\x9e\x05\x7b\xf6\x88\x8c\x93\x7c\x1c\x90\xf1\x23\x92\x27\x79\x1e\x90\xfc\x80\x9c\x86\x4f\xf3\xf4\xf4\x79\x39\x8d\x25\xd2\x8b\x68\xf4\xe6\x95\x32\x1e\x6c\x67\x2c\xc9\xcf\x0e\xd4\xcf\x38\x9f\x9e\x61\x92\xdc\xdc\x66\xcf\x79\x0f\xc0\x53\xda\x37\xb7\xd9\x91\xf5\x60\x7d\x4a\x7a\x00\x9e\x72\x1e\x80\xa7\x94\x6f\x6e\xb3\xef\x18\x1f\x77\xc1\x9b\x24\xff\x96\xcd\xa7\x63\xbc\x19\x7f\x67\x9c\xef\xcb\x0a\x3e\x47\xa7\xa3\xd7\x0b\x1d\xbd\x5c\x0e\x97\xb3\xf8\x2c\x5e\x5e\x7f\x3e\x8b\xbf\xdf\x12\xf9\xf2\xfa\xf3\x0f\xf6\x84\x37\x55\xd0\x25\xfb\xf2\xe5\x0b\x3e\x5f\xbf\xbf\xc6\x87\x8f\x5f\xfe\xb9\x44\x9a\xc6\xfb\x87\x8f\x4e\xfe\x17\x00\x00\xff\xff\x6d\x99\xea\xb9\x6e\x09\x00\x00" func runtimeSyntaxErbYamlBytes() ([]byte, error) { @@ -1928,6 +2654,26 @@ func runtimeSyntaxErbYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxErlangHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x2d\xca\x49\xcc\x4b\xe7\x8a\xd1\x4b\x2d\xca\x51\xe1\xe2\x02\x04\x00\x00\xff\xff\x11\xca\xcc\x3c\x0f\x00\x00\x00" + +func runtimeSyntaxErlangHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxErlangHdr, + "runtime/syntax/erlang.hdr", + ) +} + +func runtimeSyntaxErlangHdr() (*asset, error) { + bytes, err := runtimeSyntaxErlangHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/erlang.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxErlangYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x56\x5f\x8f\x13\x37\x10\x7f\xcf\xa7\x88\x72\x54\xec\xd2\x26\x07\xb4\x52\xcb\xbd\x44\x27\x0a\x2a\xaa\xca\x3d\x40\x55\x44\x7c\xb2\xbc\xf6\xec\xc6\x3a\xaf\xbd\x1d\xcf\xde\x25\x30\xf9\xee\x95\xbd\xd9\x5c\xe0\x10\x50\x2a\x35\xd2\xee\xac\xff\x8c\x67\xe6\xf7\x1b\xcf\xa4\xb6\x0e\x68\xdb\xc1\xd9\x14\xd0\x29\xdf\x4c\x26\x06\x08\x34\x9d\x4d\xa6\xd3\xe9\x34\xad\x7a\xd5\xc2\xd9\x74\x26\xc4\x02\xd0\xdd\x9b\x4d\x26\xd8\x3b\x88\xc3\xfa\x7c\x6a\x0d\x78\xb2\xb5\x05\xcc\x7b\xaa\xd5\xf9\xfc\xed\xe5\xea\xe1\xfc\x89\x9a\xbf\x93\x97\x0f\x84\xa8\x66\x79\xe7\xc9\xf4\x15\xc0\xd9\x74\x4d\xd4\x9d\x9d\x9e\x0e\xb6\x16\x01\x9b\x53\x13\xf4\x29\x42\x0d\x08\x5e\x83\x6c\x95\xef\x95\x3b\x35\x8a\x94\x4c\x6e\xc5\xc5\x9a\x5a\xb7\xb7\xa5\x83\x8f\xa4\x3c\x2d\x7c\xdf\x56\x07\x83\x0f\xe7\x4f\x2e\xbf\x2f\x84\x58\x0c\x5f\xe5\xb2\x80\xf9\x72\xfc\x3e\xd8\xff\x9c\xf6\xfb\x47\x3f\x3c\xde\x09\x71\xb2\x52\xf3\x77\xe7\xf3\xb7\x59\xf5\x53\x8a\x55\x08\x6e\x50\x2b\x08\x7b\xe0\x5a\xb9\x08\xe5\x17\x4c\xdc\x13\x42\x88\xa5\x10\xaf\xde\x3f\xda\x7d\x0b\x14\xd6\x13\x06\xd3\x6b\xb2\xc1\x1f\x83\x11\x49\x11\xb4\xe0\x69\xef\x91\xaa\x09\x90\x95\x37\xe9\x51\x2e\x06\xae\xd2\xa0\x82\xc6\x7a\xae\x7c\x20\xae\x02\x72\x15\x1d\x57\x11\xb9\xda\x04\x64\xad\x22\xb0\x56\xa4\xd7\xac\x83\x37\x6c\xec\x35\x83\x37\x5c\xf7\x9e\x6d\xcd\x0e\x88\x93\x5e\xa8\x39\x20\x07\x04\x17\x81\x11\x34\xd8\xeb\x24\x5b\x26\xdc\xf2\xcd\x1a\x3c\x6f\x02\x96\xdf\xc8\x74\xab\x34\x86\x0f\x58\xee\x10\x3a\x0c\x3a\x87\x35\x2f\xda\x60\x7a\x07\x0c\x9b\x2e\x20\x25\xeb\x01\x0d\x5b\xaf\x5d\x6f\x60\x94\xd2\xd9\x8a\x0d\xd4\xd6\x03\xf7\xde\x40\xcd\xb6\x1e\xde\x79\x90\xfd\x06\x6f\x6c\x9a\x61\x70\xe9\x85\x18\x90\x6f\x14\x7a\xeb\x9b\x63\x06\x6f\xd3\x79\x91\x3d\xcb\x5e\x2c\x57\x43\x56\xc8\xa3\xb4\xf8\x6c\x94\xad\xf2\xe3\xd4\x31\x63\x1d\x68\xab\xc6\x0c\x82\x0d\xc9\xca\x7a\x85\x5b\xde\x0b\x1b\xae\x41\x73\x0b\x31\xaa\x06\xe4\xdf\x3d\xf4\x20\xd3\x45\x60\xb2\x2d\x14\xb2\xf7\x96\x38\x92\x6a\xbb\x92\x55\x15\x59\x75\x9d\xdb\xb2\xa2\xd0\x16\x92\xc2\x78\x56\xfa\x74\x36\x52\xb9\x3f\x55\x16\x9d\x42\x62\x0a\x32\xed\x4c\x12\x36\x36\x92\xf5\xcd\x61\xa2\x76\x41\xe5\x1d\xd6\x13\x34\x80\xbc\x3f\x22\x49\x02\x6c\xd3\x51\x54\xc8\x68\xdf\x01\x47\xc2\xa4\x7a\x6b\x64\x4b\x30\xac\x68\xb0\x8e\xf5\x1a\xf4\x95\x2c\x82\x33\x52\x07\x03\x9c\x88\x84\x18\xf3\xa0\x64\xa3\x08\xd8\x80\x03\x02\xb9\xe7\xd5\x40\x1b\xbc\xa5\x80\x6c\x6c\xd4\xc1\x7b\xd0\x24\x7d\x52\x05\x97\xb3\x9b\x01\x53\x96\x0e\x84\xc1\xc6\x12\x67\x77\x3f\x19\xf2\x32\xad\x05\xe4\x46\x61\x95\x20\xd4\xc1\x39\xd0\xc4\x0d\x10\x37\x18\xfa\x4e\x3a\x50\x06\x90\xd7\xca\x11\xef\xa3\x3d\x3e\xe9\x10\x96\x0d\x49\xca\x22\x47\x76\x58\x2f\xd9\x46\x59\x28\x97\xf2\x3f\x83\x77\xe0\x8f\x06\x5c\x38\x55\x08\x50\x7e\xf0\x31\xdd\xa3\x7c\x6d\x47\x53\x9c\x51\x6d\x55\x97\x1e\x79\x05\x5b\x1e\xea\x04\x77\xd6\x70\xce\xef\x11\xaf\xc1\xc6\x3e\xdb\x0f\x77\x86\xa9\xef\x1c\xb0\x03\xdf\xd0\xba\x64\x67\xfd\x55\x3e\x32\x45\x50\x7c\xda\xa1\x0f\xc9\x1e\xdc\x1a\xbd\x39\x58\x45\xa8\x87\xa3\x4b\x76\x41\x99\x91\x9b\x56\x5d\x81\x4c\x6b\xc9\xdb\x22\x81\x98\xe0\x28\xb9\x55\x1b\x6e\xad\xe7\x61\x9b\x4c\x2a\x60\x78\xcf\x63\x91\xd9\x2b\x97\x9c\x44\x4c\xe2\x86\x43\x07\x5e\x0e\xf1\x59\x33\xb2\x95\x4d\x17\x52\xbb\x90\x8a\x50\x68\xdb\x54\xad\xf6\x19\x90\x24\x61\x70\xb7\x84\x74\x78\x30\xb4\xc7\xa8\x90\xb5\x53\x0d\x4b\xeb\xeb\xc0\x10\x4b\xee\x7a\x6c\x0e\x79\xd5\xf5\x29\xac\xc6\x46\x02\x2c\xc0\x94\x4b\xc6\xd0\x7b\xc3\x11\x5c\xcd\x11\x68\xcc\xae\x21\xa9\x3b\x75\xe3\x0b\x99\xf1\x94\x63\x3e\xca\xd0\x11\x8f\xc4\x2f\xd3\xc5\xa3\x04\xa5\x8e\x4c\xd8\x7b\x3d\x00\x76\x9b\x21\x83\x9b\xbd\xcf\x87\xf4\x7e\xb4\x9d\xea\x23\x82\x8d\xdf\x5a\x1e\x3f\x6a\x84\x27\x89\xc6\xb1\x9c\x6c\xdb\x2a\xb8\xa1\x0f\xa7\x5f\x24\x85\xa9\x19\xdc\x9f\x1d\xa6\xc0\x9b\x0f\x27\xe2\x95\xed\x72\xfd\x11\x62\x71\x3b\x3b\x34\xf4\xe9\xea\x72\x72\x32\x3d\xfa\x1d\xf5\xb3\x7d\xe9\x7a\xba\x56\xa9\xa9\x7d\xb7\x98\x7d\xe5\xce\x64\x68\xa5\xaa\xda\x23\x5d\xdf\x17\x42\xe4\x89\xcb\x7f\xa3\x5d\xac\x1e\xce\x7f\xbe\x7c\xff\xe3\x8e\x37\xab\xf3\xf9\x73\x35\xaf\x73\xc7\x7e\xbc\xe3\xfe\x78\xfc\xd3\x8e\xff\x3c\x1e\xff\xb2\x2b\xef\x34\xe5\xe1\x4a\xdc\x05\x4c\xcc\x3e\x46\xec\x78\xe6\x73\x90\x4d\xbe\x1a\xae\xff\x84\xd6\xff\x0a\x56\x9b\xff\x53\xdc\x05\x49\x14\x42\x3c\xb8\x03\x94\x78\x20\x44\xf9\x05\x58\x28\x98\xd4\x47\x8b\xd7\x17\xbf\x5e\xf0\xf3\x17\x6f\xfe\x78\xc6\x7f\x5d\xbc\x7c\xfd\xfc\xc5\x1b\x7e\x79\xf1\xfa\x19\xff\x76\xfe\xf4\xf7\xf2\x6c\x39\xfb\x27\x00\x00\xff\xff\x80\xeb\x8d\x34\x8b\x0a\x00\x00" func runtimeSyntaxErlangYamlBytes() ([]byte, error) { @@ -1948,6 +2694,26 @@ func runtimeSyntaxErlangYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxFishHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xcb\x2c\xce\xe0\x8a\xd1\x03\x51\x2a\x5c\x71\xca\x8a\x7a\x5a\xfa\x1a\xa9\x79\x65\x0a\xda\x9a\xf6\x20\x31\x0d\x85\x1a\x15\x4d\x2e\x40\x00\x00\x00\xff\xff\xb7\x31\x12\xaf\x25\x00\x00\x00" + +func runtimeSyntaxFishHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxFishHdr, + "runtime/syntax/fish.hdr", + ) +} + +func runtimeSyntaxFishHdr() (*asset, error) { + bytes, err := runtimeSyntaxFishHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/fish.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxFishYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x55\x5b\x73\x54\x37\x12\x7e\xf7\xaf\x38\x8c\x5d\xcb\x0c\xec\x78\x81\x05\x6a\xd7\x7b\x71\x52\x24\x54\xe5\x21\xe1\x25\x0f\xae\x58\xc6\xd1\x48\x7d\x46\xe2\xe8\x86\xd4\x9a\xb1\xc3\xc7\x7f\x4f\x49\x33\x36\x60\x28\x82\xcb\xba\x4c\xf7\xd1\xd7\xdd\x5f\xb7\x5a\xa3\x75\xc4\xd7\x89\x4e\x86\xd1\x16\x73\x70\xa0\x89\x49\xf1\xc9\xc1\x30\x0c\x43\xd3\x05\xe9\xe9\x64\x98\x09\x71\xdc\xf4\x47\xb3\xae\x30\x24\x35\xe5\x93\x61\xf6\xfa\xf0\xde\xf1\x83\x7f\xcc\x29\x6c\x86\x87\x8b\xd3\xf6\xc5\x7c\xc0\xd1\x62\x76\x70\x90\xab\xa3\xb2\x83\x19\x86\xc3\xe1\x97\xea\x57\x94\x4b\xff\xbd\x1c\x54\x0c\x85\x65\xe0\x0e\xbc\x3a\x7f\xb4\xfc\xf7\xc5\x43\x21\x56\xb3\x83\xdb\xef\x5f\xc4\xa0\x2d\xdb\x18\xa4\x2b\x83\x0c\xba\x1d\xe1\x1c\xdd\x30\xba\xb8\xdd\xa3\x14\x96\x4c\x9e\x6e\x60\xe6\x32\x68\xac\x68\x6d\x03\x56\x99\xe4\x04\x25\x0b\xa1\x9d\xb3\xa1\x12\xc8\x15\x02\x05\x8d\x31\x66\x8c\x35\xa8\x86\x0e\x3b\xc2\x06\x84\xc8\x88\x19\x99\xb8\xe6\x80\x42\x8e\x14\xa3\x18\x3b\x32\xca\xd6\xb2\x32\xd8\x1a\xeb\x68\xd1\x7d\xdc\x1b\x4f\xa4\xac\x74\x27\xc3\x6c\x2e\xc4\x3b\x08\xf1\x1e\x42\xcc\x21\xc4\x02\x42\xfc\x07\x42\x5c\x40\x88\x73\xfc\x0e\x21\x84\x80\x10\x47\xf8\x2f\xfe\x8f\xd7\xb8\x87\xff\xe1\x6f\x10\x02\x8b\x8f\xa2\x7d\x69\x8b\x19\x54\xf4\x5e\x06\x7d\xc3\xd1\x2e\x29\x3d\xb0\xd5\x1a\x2b\xdb\x82\x73\x51\x4d\xbb\xe0\x52\xb4\x81\xb1\xaa\xd6\xb1\x0d\x50\x1a\x2a\xd6\xc0\xd8\x63\xdc\xac\xce\x86\xc6\x80\x4f\x8e\x98\xa0\x6d\x36\x6d\x2a\x20\x65\x22\xc8\x5b\x06\x6d\xa4\x03\x5d\x91\x02\x5d\x59\xc6\xb8\x46\x4b\x62\x9f\x2e\x55\x0c\xa3\xdd\x09\x2e\xad\xa6\xc0\xbb\x6d\x92\x6b\xca\xfb\x6d\x8e\x3e\xed\xc5\xd9\xae\x0d\x7f\x22\xa9\x49\x4b\xa6\xcb\xbd\x7d\x1b\x43\xe9\x72\xdd\xd9\xa7\xdd\x52\xe4\x86\x6e\xb3\x51\x60\xc8\x25\x18\x5b\x38\xe6\x6b\xbc\x89\xab\x02\x2f\xd9\xc0\x5b\x4f\x7a\x85\x40\x57\xac\x11\x13\x05\xa4\x98\x34\x52\xa6\x8d\x46\x2a\x75\x85\x54\x1b\x70\xda\x6a\x64\x19\x74\xf4\xc8\x24\x35\x0a\x71\x1b\x97\x2a\xba\x98\x51\x62\xcd\x8a\xd0\xca\xa6\x16\x14\xce\x36\xac\xc1\x59\x26\x34\xae\x51\x9d\x6d\x8c\x54\x2f\xcb\x84\x8d\xcc\xa4\x17\x77\x6b\xd2\xfb\x18\x06\x67\x43\xbd\xfa\x4a\xb6\xe6\x6b\xd8\xf5\xe2\x54\x6e\x27\xac\x64\x31\xd0\xb2\x13\x1a\x34\x84\xd8\xbe\x7b\xf4\xf7\xa7\xef\xd7\x99\x12\x26\xeb\x5c\x9f\xa4\x73\xb7\x1a\x47\xa5\x85\x3c\x11\x52\xd7\x17\xd2\x28\x06\x2c\xf3\x67\xbe\x64\xaa\x6c\x5d\xf9\x5a\xd9\xc8\x42\xcf\x9f\x36\x27\xfa\x2d\x86\x92\x0c\x65\x54\x0c\x50\x66\x9d\x13\x94\xf1\x51\x43\x99\xb8\x6d\x92\x1c\x23\x43\x4d\xa5\xfa\x5e\x3d\x50\x09\xaa\x24\x67\x19\xaa\x32\x5a\x26\xa1\x35\xf4\xd8\x2a\xa8\x8d\xce\x69\x69\xbb\x0e\xae\x2b\x28\x6c\x40\x57\xa9\xd5\x1f\x5d\xa5\x8c\x51\x2a\x6e\x77\x4d\xb6\x9b\x37\x7a\xc6\x18\x9d\x46\xeb\x1d\x30\xb1\xb0\xd5\x68\xff\xad\x13\x38\x87\x37\xd1\x06\x38\x1b\x26\xb8\x00\x17\xd7\x1d\xd4\x15\x78\xfd\xac\xb9\xe4\xa7\x66\xd6\x4f\xa3\x1d\x23\xfc\x14\xa2\x86\x9f\x98\x7c\x82\xdf\x20\x58\x45\x08\x0e\x21\x9a\x9a\x10\x52\x8e\x0a\xa1\xfa\x66\x32\x6a\x24\x59\x98\x90\x24\x1b\x65\x26\x24\x1b\xa6\x6b\xa4\x8c\x94\x6d\xe0\xe6\x72\xdf\x8c\x48\x7c\xb5\xab\x1f\x92\xba\xfb\x91\x49\xba\x76\x0a\xd9\x23\xfb\x66\x3e\xd7\xd0\xd8\x2b\xf4\x16\xf3\x62\xe4\x63\x14\x23\x9f\x3c\x79\xda\x97\x67\xcf\xdb\xf2\xcf\x7f\xf5\x5f\xcf\x1e\x3f\x59\x34\xaf\x8b\xc9\x3d\x81\x75\x44\x71\x44\x09\x25\x66\xc6\x8e\xd5\x56\x86\x28\xac\x57\x4d\xc9\x7c\x8d\x7e\xe0\x3a\x28\xb0\x6c\xc3\x3a\x30\x11\x98\x0a\x83\xad\xa7\x3e\xc5\xca\xe0\x58\x95\x01\x67\x70\xae\xd4\xa6\xa0\x5a\x72\xb8\x63\x37\xa0\xda\xb9\xab\x61\x9f\x8b\x1a\xec\x5b\xd4\xd0\x63\xaa\x85\x72\xc1\xa6\x05\xb3\x55\xd8\x9a\xd8\x86\xf4\x16\xd7\x54\x3e\xab\xb0\xdb\x0e\x3c\x8c\x4e\xae\xcb\x17\xba\xee\x72\x79\x2e\x97\x7f\x2c\x2f\x1e\xce\xbe\xd8\x92\x87\xae\x6e\xda\xbd\xba\x77\x11\x3b\xda\xfe\x76\xcc\x4f\xed\x42\x88\x23\x21\xde\x9d\xb6\x17\xe0\xfb\xe5\x6f\x97\xf7\xbe\x3b\x3c\x7a\x70\xba\x6c\x8f\xc1\xfb\xd3\xdb\x53\x37\xaf\xc5\xf1\xee\xca\xde\x3c\x2a\x43\xb3\x96\xbb\xa5\xd9\xec\x56\x46\x41\xdf\x91\x94\xc9\xa6\xee\x8e\x10\xc7\x1f\xa4\x9f\xbc\x4f\xbb\xbf\x8f\x2d\xed\xba\xfb\x0b\x23\xf3\x87\xa3\xdf\xea\xce\xfd\xbb\xde\xdc\xff\x36\x67\x86\xf3\x8b\x0f\x36\x7c\x67\xf1\x33\xec\xc3\xbb\xd8\x47\x7f\x11\x12\x47\x1d\x1b\xd9\xbf\xbe\xfa\xe1\x15\xce\xce\xce\xf0\xf2\xa7\xb3\x9f\x7f\x5c\x9c\x34\x7a\xff\x0c\x00\x00\xff\xff\xd8\xe9\x5d\x6d\xfc\x07\x00\x00" func runtimeSyntaxFishYamlBytes() ([]byte, error) { @@ -1968,6 +2734,26 @@ func runtimeSyntaxFishYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxFortranHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xcb\x2f\x2a\x29\x4a\xcc\xe3\x8a\xd1\xd3\x88\x76\x4b\x8b\xad\x01\x11\x96\x06\x10\xca\x14\x4c\x45\xfb\xe7\xc7\x46\x07\x15\xc5\x6a\xaa\x70\x71\x01\x02\x00\x00\xff\xff\xec\xb9\xd8\x96\x2e\x00\x00\x00" + +func runtimeSyntaxFortranHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxFortranHdr, + "runtime/syntax/fortran.hdr", + ) +} + +func runtimeSyntaxFortranHdr() (*asset, error) { + bytes, err := runtimeSyntaxFortranHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/fortran.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxFortranYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x96\xdf\x8f\x23\x35\x0c\xc7\xdf\xf7\xaf\x98\xeb\x1d\xdc\xf6\xe0\x0a\x2f\x3c\x50\x84\x56\xe8\xe0\x24\x1e\xd0\x22\xc4\xc3\x4a\x6d\xa9\xdc\xc4\x33\x35\x9b\x71\xb2\x89\xb3\xdb\x82\xf9\xdf\x91\x67\xba\x3f\xee\x07\xed\xbd\x50\xa9\xf1\x24\x93\x7c\xea\xc4\xdf\xd8\x6d\x29\xa0\xec\x13\xce\x9b\x36\x66\xc9\xc0\x67\x67\x1e\x05\x9d\xcc\xcf\x9a\xa6\x69\xec\x35\x43\x8f\xf3\x66\xb2\x5c\xce\xce\x17\x6f\xdb\x95\x5a\xf3\xed\xd7\xa3\xf9\x66\x30\x8b\xcb\xb8\x5a\xfc\x96\x57\xd3\x17\x93\xb3\xb3\x5c\x03\x96\x71\xf5\xeb\x66\x44\x37\x93\xf3\x0b\x9a\x2e\x97\x9b\x73\x70\x42\x91\x15\xfc\x2d\xb0\x43\x85\x10\xec\x1b\x1d\x08\x6c\x02\xde\x3f\xa3\x57\xe0\xbd\x42\x8a\x45\x72\x4c\x5b\xb4\xb5\x93\xff\x42\xa6\x84\xec\x15\x0a\x15\x85\x52\xa8\xe3\x83\xe9\x91\xc5\x1e\xa3\xa3\x01\xe9\xb6\x90\xc1\x09\x66\x75\xb1\xef\x23\x1f\x83\xba\xd8\xa7\x80\x3b\xf5\x20\xa0\x1e\x5b\xa8\x41\xd4\x63\xa0\x5e\x3d\xf5\xc8\xc5\x76\xe1\x63\xdd\x04\x6c\x52\x46\x47\x36\x70\x0c\x88\x01\xcd\x1f\x08\x8a\xa9\x50\x88\xac\xb8\x13\xcc\x0c\x41\xed\x8c\xb5\xed\x45\xdb\x98\xfb\xa1\x01\xd1\x6d\xed\x8e\xee\x9a\xfa\x14\xc8\x91\x28\xb1\x0b\xd5\xa3\x12\x7b\xdc\x29\xf1\x4d\xa5\x6c\x3d\xc1\x0e\xf3\x60\x59\x06\x93\x5b\x70\xc7\x91\x2c\x99\xb8\x90\x53\x8a\x45\x40\xf4\x9a\xd8\x6b\x88\x1d\x39\x08\xda\x47\x5f\x03\x2a\x47\x46\xe5\x1a\x82\x46\x0e\xfb\xe9\x72\x79\x04\x18\x13\x66\x90\x98\x35\x26\x8b\x3a\x04\x4d\xe0\xae\x35\x41\x86\x1e\x2d\x0e\x29\x0e\x8e\x69\x8a\x85\x06\x5d\xa4\x4c\xb7\x20\x47\xbd\x4c\x39\x76\x19\x7a\x4d\x75\x13\xc8\x69\x46\x08\x9a\xd1\x0d\x4d\xcd\x85\x6e\x51\x0b\x06\x74\x82\x7e\x4d\x2c\x6b\xdb\xc4\x31\xde\xc3\x64\x23\x0d\xb3\xb5\xd4\x4d\x8e\x55\x88\x51\xed\x1c\x6a\x19\xd7\x1f\x00\x2e\x72\x11\x60\x79\x47\x83\x9b\xa2\x60\xfa\x52\xf0\x7f\xd6\x22\xe1\x60\xf3\x83\xa2\x75\x43\xb2\x2e\xf4\x17\xaa\x33\xd1\xdb\xdc\x81\xda\x1c\xa1\xba\x10\x0b\xaa\x8b\x2c\x40\x5c\xd4\xc5\xca\xa2\x2e\xd5\xb5\x50\x8f\xea\xca\x96\x5a\x31\x85\xe2\x1a\xd8\x0f\x83\x27\x91\x1e\x1f\x1c\xf2\xd4\x91\x14\xf5\x51\xd6\x29\x47\x5f\x9d\x28\xc6\xac\x18\x47\x6e\x5b\x79\xbc\xab\x04\x9f\xe4\x2c\x01\x7b\xa5\x8d\x0b\x59\x69\x63\x60\xda\x14\x14\xa5\xe1\x54\xc8\xc8\x14\x03\x72\x27\x5b\x25\xeb\x94\x6d\x2b\x63\xeb\x4e\xb2\xc3\x26\x56\x93\x22\xb2\x7d\xd7\x92\xa9\xd7\x1e\xa4\xaf\x41\x7b\xd8\xe1\x2e\x45\x36\x95\xf7\xb0\x0b\xd1\x99\xb9\x35\xc1\x62\xee\x4e\x1f\x48\x4f\xfc\xb8\x9e\x78\x58\x4f\x3c\xac\xbf\x1d\xb6\x61\xd9\x2f\x50\x11\x65\x84\x8c\x66\x6b\x08\xd4\xee\x4f\x92\x63\x42\xd6\x04\x5e\x53\xc6\x62\xf8\x94\x69\x68\xc7\xb3\x4e\x35\xa3\xde\xd4\x28\xa8\x19\x3c\xed\x4e\xf2\x32\xb0\x8f\xfd\x9a\x6b\xbf\xc1\xac\x87\x5e\x41\xf4\xf6\xdc\xa1\xdd\x04\x3f\x34\x77\x99\x0c\x8a\x29\xdc\x5f\xf8\xa3\x58\x2c\x5b\x48\x36\xff\x6e\xd0\x3e\xd8\x05\x72\xc0\x5a\xf0\xa6\xa2\x25\xe9\xf1\xfd\x90\x58\x07\x01\x97\x04\x8e\xb8\x3b\x49\x2e\x69\x70\xa9\xd4\x5e\xcb\xbe\x08\xf6\x6b\x17\xa2\xbb\x56\x81\xdc\xa1\xa8\x15\x9b\xd2\x62\x1e\x1f\x92\x49\xdd\x02\x7b\x12\x5b\x47\x31\x54\x1e\x92\xc9\x2d\x66\x6a\xf7\x3a\xee\x59\x88\xf7\x6a\x17\x5c\x6b\x41\xdd\xe3\xbb\x17\xd7\xee\xf2\x90\x84\xe7\x8f\xb0\x19\xb0\x9f\xa9\x83\x82\xea\xa3\x62\x28\x38\x34\x17\xd4\x8e\xf6\x6e\x8b\x19\xd5\xea\x0b\xb2\xbf\xb0\x29\xec\x2f\xa8\x7d\x9a\x50\x3e\x86\xb5\x59\x63\x62\xd1\x19\xde\xdc\xce\x2c\xab\xdb\xb5\xa7\x56\x43\x87\x1a\x3a\xd1\x10\x50\x43\x10\x9d\xf1\x30\x61\xc6\x51\x66\xa7\xb0\xb3\x98\x67\x16\x58\x04\x39\x24\xb9\x66\x70\x5d\xb6\xc8\x3a\xba\x7a\xb7\xa5\x80\xef\x6e\x3b\xa1\x23\x08\xf3\xa7\xc5\x8d\x85\xb8\xa2\xba\xbd\x0b\xa8\xb8\x23\xd1\x2e\x5e\x48\xd4\x8c\xc5\x0a\x5d\x46\xa9\x99\x9f\x50\x9a\xe6\xf9\xe5\x21\x99\x37\x6f\x62\x88\xf9\x9e\xbd\xef\x37\x31\xcc\xee\x13\xfd\xbc\x99\x2c\x66\xf3\xef\xbe\xfc\xe2\x95\x7e\xff\x6c\xb9\xfc\x6c\xa5\x5f\xe9\x6b\xfd\xfc\x11\xf2\x2b\x64\x64\xd9\xa2\x58\x49\xf9\x18\x69\x93\xc1\x5d\xa3\xed\x79\x71\x3e\xfd\xfb\x9f\x95\x2e\x97\x0b\x5d\x2e\x57\x8f\x88\xe6\x07\xef\xad\xe4\xa6\x1c\x1d\x96\x12\x73\x63\xd5\x1c\xd8\x97\xd9\x01\x75\x78\x39\x6f\x26\x7f\x2c\x16\x73\x53\x2b\xce\x57\xab\x57\xcf\x9f\x76\xce\x3d\xb6\x96\xdf\xef\xab\xe7\x79\x65\xa5\x96\x2f\xa6\x1e\x5b\x8b\xf1\x10\xff\x73\x6a\xb5\xe0\xd4\xa2\x76\x07\x99\x89\x3b\xc5\x9c\x63\x9e\x7e\x50\x0b\x66\xc5\x4a\x67\x37\x3f\x38\xd9\x58\xf4\xb2\xed\x62\x39\x99\x3c\x8c\x21\xfb\xf7\x46\xca\x35\xa5\xe1\x9f\xd5\x72\x39\x7b\x1c\x7d\xf2\x07\xea\xfe\xf3\xf4\x97\xc6\x70\xbe\xd9\x42\x7e\x5c\xfa\xa9\xee\xbc\x7c\xdf\x9b\x97\xff\xa7\x33\xfd\x20\xdf\x0f\x9c\x78\xf6\xbe\x13\x2f\x4e\xfc\x9c\x44\x1f\x4d\xbe\xbf\x5f\xfe\x78\xa9\x57\x57\x57\xfa\xf6\xe7\xab\x5f\x7e\x9a\xce\x2f\x26\x67\x67\xff\x06\x00\x00\xff\xff\x80\x03\x11\xed\xc0\x0a\x00\x00" func runtimeSyntaxFortranYamlBytes() ([]byte, error) { @@ -1988,6 +2774,26 @@ func runtimeSyntaxFortranYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxFsharpHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x2b\xce\x48\x2c\x2a\xe0\x8a\xd1\x4b\x2b\xb6\x57\xe1\xe2\x02\x04\x00\x00\xff\xff\x47\x1c\xd5\x73\x0f\x00\x00\x00" + +func runtimeSyntaxFsharpHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxFsharpHdr, + "runtime/syntax/fsharp.hdr", + ) +} + +func runtimeSyntaxFsharpHdr() (*asset, error) { + bytes, err := runtimeSyntaxFsharpHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/fsharp.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxFsharpYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x94\xcd\x6e\x23\x37\x0c\xc7\xef\x7e\x0a\xc5\x6d\x91\x64\xd1\x49\x83\x6d\x81\x76\x73\x29\x16\x05\xfa\x06\xbd\xd4\x63\x14\x1c\x89\xf2\xb0\xab\xa1\x06\x12\xe5\x8f\x84\x7e\xf7\x42\x63\x3b\x6b\x27\xd9\x45\x7b\xae\x01\xcf\x68\x28\xf1\x4f\xea\x47\x4a\x9e\x02\xca\x6e\xc4\x07\xe3\x73\x0f\x69\x9c\xcd\x1c\x0a\x5a\x79\x98\x19\x63\x4c\x9d\x65\x18\xf0\xc1\xcc\xdb\xf6\xce\xe7\x5f\xbf\x9d\xcf\x66\xa9\x04\xcc\x87\xf9\xc6\x90\x43\x16\xf2\x84\x69\x5a\xd3\x2d\x3e\x36\x7f\x2e\x17\xf7\xcd\x07\x68\x1e\xff\x5a\x3e\xbd\xff\x7e\xdf\xb6\xdd\x7c\x5a\x6c\xcc\x37\x0e\x6d\x80\x04\x42\x91\xf3\x51\x20\x0b\x08\x0e\xc8\x72\xf0\xbf\x09\x28\xba\x86\xa0\x03\x4a\x1f\x9d\x12\x2b\xb0\xd3\x84\x56\xc7\x44\x6b\x10\xd4\x35\x25\x29\x10\xd4\x46\xce\x92\x80\x58\x6e\xcf\x63\x64\x49\xc5\x4a\x49\x68\x48\x70\x38\x85\x39\xec\x71\x8a\x50\x87\x1a\x47\x64\xb5\x01\x72\xd6\x21\xba\x12\x50\x71\x6b\x71\xac\x99\x29\x6e\x05\x13\x43\xb8\x90\x1d\x41\xaa\xf5\x4b\x69\xfb\xc2\xea\x0b\xdb\x49\x60\x1a\xc4\xa4\x03\x88\xed\x55\xd2\x4e\x37\x24\xfd\x9b\x72\xcd\x10\xdd\x84\xef\x4b\xc2\x90\x75\xd3\x23\x6b\xf4\x93\xbf\x39\x09\xd8\xc8\x8e\xbe\x06\x92\xbc\x4a\x75\xc4\x90\xf1\x22\x74\x17\xa2\x7d\x03\x4b\x87\x2b\x62\x45\x76\x1a\xbb\xbf\xd1\x8a\x1e\x40\x6a\xa6\x95\xfa\x98\x74\xd3\x53\x40\x75\x51\x5d\x64\x54\xa9\xef\x0d\x4b\xbc\x90\x9e\x4a\x02\x2c\x78\xd2\x3f\x19\xee\xba\x18\xc3\x89\x7f\x2a\xa8\x1e\x5e\xa6\x75\x28\x43\xfe\x61\x2a\xca\xb3\x40\x1e\xd1\x12\x9c\x5c\x89\x6d\x28\x0e\x95\xb8\xc7\x44\xa2\xc4\x24\x04\x81\x1e\x31\x5d\x68\xe1\x76\x4c\xe6\x15\xd9\x0b\x29\xc6\x8d\x26\xf4\x3a\x14\x81\x2e\xa0\x06\x78\xdc\x69\x8d\x9c\x44\x13\xd0\x8b\xe4\x3e\xe1\x6e\x13\x93\xcb\x66\xd3\x93\xed\x8d\x8b\x7c\x2d\x06\xb7\x94\xc5\x10\x9b\x68\x61\x08\x6f\x10\x85\x8c\xea\x30\xe0\xaa\xb6\x6d\xc5\x65\x21\xcb\xb1\xbd\xd4\x13\x43\x08\x3b\xf5\xb4\x45\xa7\xab\x10\x3b\x08\x4a\x1c\x88\xeb\xfe\x04\x93\x07\x7b\x1c\x31\x04\x0d\x28\x57\x3a\xe0\xd0\x61\xd2\x7a\x24\xf3\x58\xa7\xb9\x84\xa0\x71\x8d\x29\x91\xc3\xe7\x13\x32\x96\x2e\x90\xfd\xbc\x81\x8b\xac\x12\x4a\x49\xac\x87\xd7\x95\x66\x0c\x87\x62\x83\x90\xd5\x32\x4e\x29\x96\x8c\xf5\x7f\xa5\xeb\x48\x4e\x77\x84\xe1\xf8\xbc\x3a\x17\x7d\x2e\x6e\x96\x44\xbc\x7a\x38\xc2\x32\xb5\x15\x53\x6d\xc3\xeb\xf9\xb3\x09\xd9\x5d\x1a\xf2\x27\x1a\xa7\x8c\xda\xf6\xee\xb3\xf5\xec\x6e\x39\xfd\xce\xe3\x1c\x2a\xf8\x5b\x0f\xf5\xb6\xf9\xee\xcc\xef\xab\x0b\x6b\x8c\x05\x74\x9e\x93\xac\xaf\xdb\xb6\x9d\x0c\xcb\xff\xe0\x7c\xb3\xb8\x6f\x7e\x5e\x3e\xfd\xb8\xd7\xed\xe2\x63\xf3\x3b\x34\xfe\xbe\xf9\xb0\x7c\x7a\xbf\xd7\x72\xfe\xfd\xd3\x5e\xff\x38\xff\xfe\x65\x7f\xfb\xaf\x51\xb5\xf3\x97\xac\xce\x2d\xff\x37\x58\xc3\x74\x8f\xbd\x86\xd4\xde\xb4\xed\xbb\x57\xa0\xda\x77\x6d\x7b\xfb\x12\x8b\x59\x2c\x67\xff\x04\x00\x00\xff\xff\x83\x0b\x31\xb7\xdd\x06\x00\x00" func runtimeSyntaxFsharpYamlBytes() ([]byte, error) { @@ -2008,6 +2814,26 @@ func runtimeSyntaxFsharpYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxGdscriptHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x4f\x29\x4e\x2e\xca\x2c\x28\xe1\x8a\xd1\x4b\x4f\x51\xe1\xe2\x02\x04\x00\x00\xff\xff\x52\x41\xa3\x8f\x10\x00\x00\x00" + +func runtimeSyntaxGdscriptHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGdscriptHdr, + "runtime/syntax/gdscript.hdr", + ) +} + +func runtimeSyntaxGdscriptHdr() (*asset, error) { + bytes, err := runtimeSyntaxGdscriptHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/gdscript.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxGdscriptYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x55\xff\x4f\x1b\xc7\x12\xff\x9d\xbf\xc2\x8f\xe4\x3d\x42\xf2\x4c\xa3\x4b\xa5\xb6\xf4\xab\xc1\x41\x45\x6d\xc0\x05\xa7\x42\xc5\x28\x1a\xdf\xce\xd9\x5b\xf6\x66\x2f\xbb\x73\x80\x93\x0f\xff\x7b\xb5\x77\x87\x4d\x89\xa3\x54\xf9\xa9\x87\x98\x9d\xaf\x3b\x3b\x33\xfb\x59\x17\xd6\xb1\x2e\x2a\xde\xed\xcd\x4c\xcc\x83\xad\x74\x63\xc3\xb0\x72\xae\xbb\x1b\xbd\x5e\xaf\x97\xec\x42\x25\xef\xf6\x36\x27\x93\x9d\x99\x79\xbc\xb9\xb1\x11\x6a\xc7\xb1\x35\x3f\xea\xed\xd5\xd6\x69\xdf\x4a\x2f\xf7\x12\x95\x44\x63\x63\xe8\x2f\xe5\x26\x72\xfa\xe4\xf0\xe8\x00\x47\x83\x23\x8c\x0e\x31\x1e\xbc\xde\x9e\x4c\xa6\x9b\x0f\x1c\x77\xa6\xde\xbb\xce\x5b\x6a\xe7\xa0\xa1\x66\x14\xe4\x22\xaf\xdc\xef\x25\x2c\x6a\xc9\xd5\x7a\xb9\x4b\x68\x0d\x8b\xda\xc2\x72\xe8\x36\xa1\x69\x04\xe5\x3e\x82\xa2\x15\x90\x52\x4b\x32\xe4\x6c\x1d\x72\x47\x65\x85\xdc\xcb\x15\x07\x45\x72\xcb\x7d\x9c\xc3\x4c\x33\x67\x85\x29\xc0\x70\x6e\x4b\x72\x11\x86\x67\x59\x20\x03\xa6\xc8\xe0\x9b\x0a\x85\xf3\xa4\x89\xfa\x80\xa2\xf4\x06\x45\xe5\x63\x5a\xe7\x14\xe7\xb0\xa2\xb0\xd1\x4a\x01\x1b\x85\x04\x8e\x43\x85\x76\xcf\xcc\x4c\xe1\x3c\x19\x38\x3f\x43\x49\x37\x28\xad\x20\x19\x38\xea\x9b\xca\x67\xa8\xfc\x35\xaa\xc0\x8d\x4f\x15\xd2\x4e\x0d\xe5\x10\x5a\x26\xd0\x75\xcb\xc4\x76\x51\x04\x32\x99\xe1\x19\x02\x89\x79\x13\x48\x66\xdc\xb2\x91\xd9\x34\x9c\x2f\xed\xbb\x56\x67\x1b\x5a\xa0\xf3\xf2\xb5\x18\x34\x6e\xa9\x3d\xb1\x39\x66\x7c\x1b\x14\x51\x43\xfa\xcf\xae\x28\x20\x35\x2d\xdd\x0f\x5f\xe0\x8a\x42\x96\x4c\xd7\x4c\x97\x81\x8b\xb5\x33\x11\x6f\xb8\x97\xee\xcb\x47\x87\x32\x10\x5b\x52\x1a\xdb\xc8\xd1\x82\x03\x96\xf2\x38\x30\x77\xba\xbd\x5a\xd5\x0b\xf6\xbd\x68\xf0\x0e\x2f\x65\x66\x85\xf1\xf3\x78\x3c\xda\x77\x96\x45\x1b\xf6\x84\xdf\xd6\x1c\x15\x87\x52\xd5\x1d\x7d\x79\x95\x8c\xaf\xc8\xca\xaf\xde\x57\x38\xf2\x86\x1b\x92\x0d\x71\x7c\x8a\xd3\x9c\x85\x53\x16\x9c\x56\xa4\x96\x1c\x4e\x35\x30\x95\x23\xe6\x80\x11\xe5\x97\xac\x0f\xd8\xd7\xc3\x11\xc6\xb6\xe4\x80\xf1\x35\xb3\xdc\xaf\x78\xbc\xa8\x96\x35\xb6\xf8\x69\xab\x1b\xec\xed\x61\x10\x02\x2d\xb0\x47\xd1\x46\xec\x7b\xe7\x03\x86\xb6\xb9\xa9\x14\x16\xcd\x79\x46\xa4\x73\x1c\x4f\xff\xe4\x5c\x31\x72\x24\x8c\x91\xf7\x6e\x6f\xa1\xdc\x86\x26\xa9\x09\x5c\x89\x87\xa2\x2b\xe1\x84\xc9\xad\xa4\xdf\x39\x57\x1f\xb2\x87\x8a\x17\xad\xe2\xb7\x9a\x14\x27\x9c\x6b\x86\x93\xc3\x61\x2a\xd9\xca\x0c\xe3\x40\x12\x0b\x1f\xca\x15\x97\x0d\xd1\xed\xd4\xad\x2f\xee\xd7\x3b\xe4\xc2\x8a\xfd\x28\xdc\x12\x16\x7b\xe7\xd4\x7f\x37\xe8\xff\xf1\xe6\x79\xff\x9b\x8b\x67\x77\x81\xbf\xf0\xe2\xda\x07\x73\x17\x15\x95\x94\x4b\x5e\x3e\x0b\x24\x06\x94\x10\x1a\x13\x0a\xa7\x81\xe9\xb2\xa5\x95\x4f\xb7\x3f\x77\x14\x13\x30\x25\x26\x88\x8a\x5a\xa9\x19\xec\x6c\x01\x76\x09\x8c\x52\x97\x09\x91\x3e\x28\xf8\x46\x59\x4c\x44\x91\x40\x59\x4b\x0e\x5b\xc0\x0a\x6c\x44\x49\x15\x4a\x8a\xca\xa1\x5b\xe2\x42\x72\x94\xa4\xf9\x1c\xe2\x15\x5e\x02\x93\x59\xc0\x07\x54\x29\x5d\xe0\xd2\x2b\x77\x4b\xe3\x1b\x58\xeb\x20\x88\xec\x0a\x44\xd6\x19\x2b\xa2\xa3\x2b\x6e\x69\xe3\x12\xed\x4c\xc8\xa1\xe1\xd5\x7b\x97\xe0\x82\xeb\xb9\x75\x8c\x85\x65\x67\xda\x66\x76\x4d\x39\xae\x38\x90\xfa\xb0\xae\x2b\xe7\x3b\xbb\xdf\xfe\xff\xd9\x53\x7c\xff\x9f\xc9\xe4\xbf\x3f\x5d\xe0\x3b\xfc\x80\x2f\xd0\xc7\xff\x96\xd1\x23\x0a\x2c\x3a\xe7\xc8\x6b\xe3\x9f\x6c\xbf\xbf\xbd\xc0\x64\x72\x8e\xc9\xe4\x62\x19\x74\x54\x97\x53\x0e\xeb\x1f\xe7\xf3\x66\x62\xeb\x9e\x64\x69\xa2\xba\x59\xb5\x6e\x78\x7e\x93\x18\xea\x17\x83\xfe\xc1\xc5\xd3\x54\x17\xb6\x76\xb6\xba\x44\x29\xb6\x6c\x4e\xd2\x88\xe9\x8b\x4a\xa1\x49\xd4\xfc\x6d\x2e\xf5\x2c\x66\x8d\xf6\xde\x8f\xcb\xdd\xd7\xef\xa9\x37\x7e\xb7\xb7\xf9\x64\x7c\x3c\x3c\xc6\xd9\xd9\x19\x0e\x0e\xcf\x5e\xbd\xdc\xde\xfd\xf1\xd3\x59\xb7\xb6\xb6\x1e\xa6\xfc\x9b\xea\xb3\xf3\x75\x1d\x8a\x0d\xa0\xd6\x55\xfb\x61\xa5\x2b\x4d\xbc\xb4\x55\xd3\xd5\xc9\x64\xe7\x13\x67\x59\x65\xaa\x38\xb7\xe4\xf6\xe7\x14\xba\xd0\x34\x91\xaf\x2e\xde\xbf\xb8\xc5\xcd\xf9\xa0\x7f\x40\xfd\x22\x4d\xe8\x7d\x76\x8b\xfa\xbe\xfc\xe5\x2d\x5e\xdf\x97\xbf\xbe\xdd\xfe\xe7\x75\x7c\xd8\xbd\x7f\x65\x15\x1f\x99\xfe\xa3\x87\xa7\x7f\xfc\xf9\x93\xff\x2b\x00\x00\xff\xff\x87\x84\xe4\x7b\x2b\x09\x00\x00" func runtimeSyntaxGdscriptYamlBytes() ([]byte, error) { @@ -2028,6 +2854,26 @@ func runtimeSyntaxGdscriptYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxGentooEbuildHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x4d\x2a\xcd\xcc\x49\xe1\x8a\xd1\x4b\xd5\x00\xb3\x6a\x92\x73\x12\x8b\x8b\x35\x55\xb8\xb8\x00\x01\x00\x00\xff\xff\xc4\x91\x08\xd1\x1a\x00\x00\x00" + +func runtimeSyntaxGentooEbuildHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGentooEbuildHdr, + "runtime/syntax/gentoo-ebuild.hdr", + ) +} + +func runtimeSyntaxGentooEbuildHdr() (*asset, error) { + bytes, err := runtimeSyntaxGentooEbuildHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/gentoo-ebuild.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxGentooEbuildYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x55\x5d\x73\xdb\xb6\x12\x7d\xf7\xaf\x60\x14\xcf\x0d\x99\x5c\x69\xf2\x1a\xdf\xdb\x6a\x54\x89\x8e\x35\x51\x2c\x8d\x24\x27\x6e\x83\x44\x05\x89\xa5\x88\x0a\x04\x58\x00\xb4\xec\xe4\xe4\xbf\x77\x40\x49\xce\x47\xad\xb6\x2f\xf5\x8c\x25\x61\xb1\xc0\x9e\x3d\x7b\x76\x51\x48\x45\xfe\xae\xa6\xb3\x88\xb2\x46\x2a\x71\x72\x22\xc8\x53\xee\xcf\x4e\xa2\x28\x8a\xc2\xae\xe6\x15\x9d\x45\x1d\xc6\x7a\x14\xb7\x2e\xc8\x15\x77\x2e\x39\xed\x9c\x9c\xd8\x46\x91\xdb\xb9\x3e\x8e\x06\x4a\x45\xbe\xa4\xc8\x79\xae\x05\xb7\x22\xaa\x8d\xf5\x7c\x4d\x51\xd1\xe8\xdc\x4b\xa3\x5d\xeb\xd8\x8d\xa4\x20\xed\x65\x21\xc9\x9e\x45\x9d\x0f\xce\xe6\xab\xb8\xd1\x35\xcf\x37\xc8\x4d\x55\x4b\x45\x90\xda\x79\xae\x14\x3c\x39\x9f\xe0\x43\xbd\x59\xaf\xe2\xdc\xe8\x42\xae\xa1\x4d\x41\x3e\x2f\xe1\xc8\x37\x35\xe2\xda\x12\x6a\xe3\x7c\x12\x87\x33\xb0\x55\x92\x74\xda\x30\x01\xd1\x85\x5c\x97\x4a\xae\x4b\x1f\x65\xdc\x95\x91\x25\xc5\x3d\x89\xc8\xdd\x69\xcf\x6f\xf7\x60\x9c\xe7\x9e\x2a\xd2\xbe\xcd\x31\x8b\x73\xee\x08\xc2\x40\x18\x4d\x20\x25\x0b\x90\x72\x04\x72\x3c\x07\xdd\x4a\x8f\x42\xa2\x30\x16\x87\xa4\x20\x0b\x48\x0d\x65\x72\xae\x60\x89\x0b\x58\xf2\x8d\xd5\x70\xa4\x28\xf7\x70\xa5\x2c\x3c\x7c\x49\x1a\x5e\x56\x84\x46\x7b\xa9\xb0\x2d\x43\x9a\xb9\xd1\x5e\xea\x86\x90\x59\xe2\x9b\x84\xb1\xac\xf3\x00\xaa\x98\xb1\x4f\x60\xec\x33\x18\x8b\xc1\x58\x02\xc6\xfe\x07\xc6\xde\x83\xb1\x77\xf8\x15\x8c\x31\x06\xc6\x4e\xf1\x7f\xfc\x88\x47\xf8\x01\xff\x01\x63\x48\x1e\xba\xa9\x1b\x13\x04\x0a\x58\xac\xd1\x60\x8b\x5b\x4c\x8e\x05\xed\xc6\xf4\x3b\x34\x61\xed\xa1\x3c\xd6\x04\x45\x70\xd0\xf8\xf8\xe5\xc0\xb7\x0c\xdf\x70\x2b\x79\xa6\xc8\x45\xbd\x5e\x2f\x32\x45\x21\x73\xc9\xd5\xbd\x06\x8c\x26\x17\x49\x1d\x59\x12\xff\x8d\xb8\x52\x91\xf1\x25\xd9\xd6\x94\xd9\xf6\x02\x4b\x62\x8f\xa3\xb6\x54\x5b\x93\xb7\x05\x39\x65\xec\x53\xff\x1d\xef\x7e\x1c\x74\x7f\x59\x3d\xef\xbe\x78\xff\x8c\xb1\xcf\xfd\x7b\xc4\x35\x85\x28\xfb\xd2\x0d\xe6\xc3\x0b\x5c\x4c\x5f\xa7\xb3\xc1\xcb\x14\xa3\x74\x31\x9c\x8f\x67\xcb\xf1\xf4\x12\xe3\xab\x45\x8a\xc5\x7c\xb8\xba\x9a\x8f\x31\x19\x0f\xd3\xcb\xb0\x9e\x4c\x97\x78\x95\xfe\xfc\x76\x3a\x1f\x2d\x70\x3e\x9e\xa4\x8b\xd1\x78\x8e\xb7\xd3\xf9\xab\xf0\x1d\xcf\x30\x4f\xfa\xa3\x74\x96\x5e\x8e\x30\x9b\x4f\xdf\x8c\x47\x29\x46\xe3\xc5\x32\x6c\xce\xd3\xc5\x72\x3e\x1e\x2e\x71\xb5\x48\xe7\x93\xc1\xe5\xe8\x1b\x1e\xbf\x41\xb5\xc0\x08\x4b\xcc\xde\x60\x76\x8e\x19\x66\x97\x18\x04\x5f\x30\x96\x0d\xe3\xeb\xeb\xa4\x7f\x3e\x19\xbc\x5c\xec\x2d\x93\xd1\xd7\xab\x61\x7c\x31\x5d\x2c\xb1\x1c\xcc\x5f\xa6\x4b\xfc\x74\x35\x9e\x8c\x8e\xb1\x7f\xa0\x39\x37\x55\xc5\xb5\x78\xb0\xd3\x18\xcb\x1a\x47\xf1\x2a\xde\x4a\x5f\x82\x74\xa8\x56\x92\xf4\x19\xcb\xa2\x77\x8f\x76\x0c\x3f\xef\xbe\x58\x3d\x8b\xba\xef\x9f\x42\xea\x92\xac\xf4\xbd\xa7\x0f\x89\x83\xb1\x8c\xe2\x8c\xd6\x52\x83\xb4\x08\x32\x2e\xee\x5b\xb6\xe2\x1b\xc2\x96\x5b\x0d\xa9\x0b\xa3\xfb\x20\x6b\x8d\x85\x32\x6b\xd4\x3c\x34\xae\xa6\x6d\xbc\xb6\xa6\xa9\xd1\x38\xb2\xc9\x31\x01\x32\x96\x09\x49\x7b\x26\x8e\xe0\x0e\x5b\x7b\xa0\xfb\x55\xc9\xdd\xfe\x57\x5c\x72\x87\x2c\xcc\x8f\xd5\x0d\x59\x27\x8d\x3e\xdc\xd5\x8e\x9a\xe3\x51\x63\x61\x02\xc6\x76\xa0\xc0\xf5\x33\xa9\x21\x4c\x0e\x25\xb3\x98\xb1\x9e\x33\x60\xac\xc7\x13\x54\x7c\x97\x21\xe8\x36\xcc\x2b\xe9\x77\x3c\x08\x90\xbe\x11\xa8\x79\x85\x8a\x74\x03\x99\x1b\xfd\x57\x29\x9a\xb8\xbe\xf3\xa5\x09\xe3\x42\x40\x48\x8b\x92\x5b\x01\x77\x57\xa1\xf4\x95\xc2\x6f\xdc\xa2\x32\x07\xc1\x6c\x88\x6a\x21\xed\x91\xeb\x42\xdb\x70\xa5\x62\x61\x72\xb7\x83\x16\x30\x3a\x6f\x65\x9d\x20\x6c\xc6\xad\x51\xc9\x2c\xfc\x33\xd6\x8b\x9d\xc1\x3e\x93\x9d\xd7\x71\x46\xf2\x50\xdf\x90\x6a\x22\xb5\x37\x7b\x38\x45\x6c\xb6\x9a\xac\x43\x4d\xb6\x72\x07\x90\xf1\x8e\x10\x17\xb2\x49\x4c\xed\xdd\x11\xc9\x06\xa9\x1a\x7d\xaf\xd8\xa8\x71\x24\xc2\x38\xd8\xbd\x43\x07\x05\xef\xde\xa6\x80\x22\x08\xeb\x10\x22\xe7\x1e\xb9\x40\x5e\x56\x26\x7c\x9a\xad\x46\x5e\x83\xf2\xd2\x04\xfa\x41\xb7\xa1\x1f\xb0\xb6\x54\x43\x91\x87\xd2\xa8\x36\x81\xdc\xea\x06\xb6\x6a\xa9\x76\xe4\xe1\xb9\x85\x37\x4d\x5e\xa2\xd1\x8e\xfc\xae\x4c\xfb\xb8\xb9\x09\x7a\xd6\xbe\x17\x98\xd1\xeb\xb3\x7d\x02\x51\xe0\xc6\xb6\xbc\x74\x3a\xf7\x36\xd2\xe2\x3b\x8b\xdb\xc8\xba\x85\xcd\x58\xef\x8b\xf5\xab\xe7\xf2\xf0\xf7\x75\xa4\xdd\xd8\x18\x96\xdc\x7e\x39\xfa\x4f\xe1\x3c\xf9\x1e\xcd\x93\x7f\x13\x4c\xd5\x8a\xe3\x4f\x20\x1e\x7f\x0f\xe2\xf4\x6f\xc2\x79\x23\x4c\x78\xe1\x96\xd3\xd1\x14\xd7\xd7\xd7\x38\x1f\x5f\xbf\x4e\x93\xb3\x7e\xe7\xe4\xe4\x8f\x00\x00\x00\xff\xff\xe2\xea\x68\x25\x9a\x08\x00\x00" func runtimeSyntaxGentooEbuildYamlBytes() ([]byte, error) { @@ -2048,6 +2894,26 @@ func runtimeSyntaxGentooEbuildYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxGentooEtcPortageHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x2d\x49\xd6\x2d\xc8\x2f\x2a\x49\x4c\x4f\xe5\x8a\xd1\xd3\xc8\x4e\xad\x2c\xcf\x2f\x4a\x29\xae\xc9\x4d\x2c\xce\xae\x29\xcd\x83\x50\xc5\xa9\x9a\x1a\xfa\x7a\xda\x9a\xf6\x2a\x5c\x5c\x80\x00\x00\x00\xff\xff\x90\x22\x80\x75\x31\x00\x00\x00" + +func runtimeSyntaxGentooEtcPortageHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGentooEtcPortageHdr, + "runtime/syntax/gentoo-etc-portage.hdr", + ) +} + +func runtimeSyntaxGentooEtcPortageHdr() (*asset, error) { + bytes, err := runtimeSyntaxGentooEtcPortageHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/gentoo-etc-portage.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxGentooEtcPortageYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x92\x5b\x8b\xdb\x3e\x10\xc5\xdf\xfd\x29\x84\x93\x87\x5c\x90\x77\xe1\x1f\xc2\x7f\x45\x2e\x2c\xfb\xda\x3e\xf6\xa5\xb6\x5b\xc6\xf2\xc4\x11\x91\x25\xa1\x51\xda\xa6\x0c\xfb\xd9\x8b\x9b\xcd\x85\x65\xa9\x61\x30\x33\xe8\x77\xce\x61\x98\x9d\xb1\x98\x4e\x01\x95\xc0\xa4\x65\xf0\x31\x41\x87\x59\xd6\x62\x42\x9d\x54\x26\x84\x10\xc3\x13\x07\x3d\x2a\x91\x57\x55\x31\x39\xe0\xe9\xa7\x8f\x2d\x71\x0f\x74\xe0\xa3\x3b\xff\x08\xa7\x93\x87\x62\x3e\xdd\x8e\xf3\x2c\x8b\x47\x8b\x74\x86\x47\xe2\x0b\xa1\xd8\x59\xe8\xde\x06\x52\x68\xef\x28\x81\x4b\x45\xe3\xbd\x2d\x76\x60\x69\x90\x2e\x4b\x45\x01\x34\xaa\xba\x9e\x57\xd5\x7c\x5b\x82\xfc\xfd\x2c\xbf\x3e\xca\xa7\xef\xb2\x9e\xe7\x1f\xb2\x29\x1e\xdf\xa3\xf2\x23\x6e\x24\x3e\x99\x03\xda\x93\xf8\x81\x91\x8c\x77\xc2\x1d\xfb\x06\xe3\x35\x11\x05\xd4\x06\xac\x12\xb9\x2c\x4b\xd5\x9a\xce\x24\x55\xd7\xc5\x6c\x72\xa7\xcc\xe3\xe9\x45\xec\x59\x6b\x0c\x09\x5b\x01\x51\xef\xf1\xaa\x62\x5a\x74\xc9\xec\x0c\xc6\x42\x5b\x20\x1a\x92\xbd\xca\x7a\x5b\x55\xcd\x04\x6c\xd8\x03\x43\xdf\x2e\x17\x0c\xb1\xe7\x7d\x08\xc0\x06\x96\x0b\xee\x4d\x20\x0e\x41\x0f\xb5\x5c\x30\xfd\xf7\xf4\xc8\xb4\x67\x0a\x10\x35\xff\xfa\x7f\x39\x94\xdc\x35\xd4\x4e\xab\xaa\xc9\xff\x61\x75\x8b\xfa\xe6\x3a\xbb\xe4\x7d\x81\x84\x9d\x8f\xe6\x16\x95\x12\x24\xec\xd1\x25\x25\xf2\x6f\x77\xe4\xac\x98\x3d\x5c\xa8\xcf\x40\x07\xe3\x3a\x11\xb1\x3b\x5a\x48\xfe\x6e\x5d\xa7\xbe\xf1\xf6\x3d\x3a\x59\xf3\x2b\xaf\x78\xb5\xe6\xf5\x8a\x37\xbc\x59\xf3\x7a\x73\x5d\xd9\x8b\xef\x07\xbb\xbb\x1b\xf8\xdb\x9f\xdb\xe1\xa3\x04\x71\x48\x33\xca\xaf\x23\x74\xad\x12\xf9\xf8\x36\x38\x9f\x95\x28\xeb\xec\x4f\x00\x00\x00\xff\xff\x7c\x89\xb4\x8b\xb6\x02\x00\x00" func runtimeSyntaxGentooEtcPortageYamlBytes() ([]byte, error) { @@ -2068,6 +2934,26 @@ func runtimeSyntaxGentooEtcPortageYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxGitCommitHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xcf\x2c\xd1\x4d\xce\xcf\xcd\xcd\x2c\xe1\x8a\xd3\xd0\xd3\x8a\x8e\xd1\x8f\xd5\xb4\xd7\x70\xf6\xf7\xf5\xf5\x0c\x89\x77\x75\xf1\x0c\xf1\x0d\x76\xaf\x09\x71\x74\x87\xb1\x35\x55\xb8\xb8\x00\x01\x00\x00\xff\xff\x2e\x11\x61\xbe\x34\x00\x00\x00" + +func runtimeSyntaxGitCommitHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGitCommitHdr, + "runtime/syntax/git-commit.hdr", + ) +} + +func runtimeSyntaxGitCommitHdr() (*asset, error) { + bytes, err := runtimeSyntaxGitCommitHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/git-commit.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxGitCommitYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x92\x4f\x6b\xe3\x30\x10\xc5\xef\xfe\x14\x83\x13\x88\x94\x10\xef\x5e\x57\x17\xb3\x64\x77\x43\x0e\x21\x87\xcd\xa5\xc8\x76\xb1\xad\x71\x22\x6a\x4b\x41\x92\x49\x03\xfe\xf0\xc5\xff\xd2\x1c\x5a\x6a\xea\x93\x35\xfc\xe6\xbd\x27\xf1\x0a\x59\xa2\xbb\x5d\x90\xc1\x49\xba\x75\xae\xab\x4a\x3a\xcf\x13\xe8\x30\x77\xcc\x03\x00\x68\x09\x95\x56\xc8\xc0\x4f\x48\xb0\xe4\x51\xf4\x23\xa6\x21\xd9\x1c\xf6\xfb\xdd\xf1\xf9\xef\x9f\xdd\x71\xff\x7f\xdb\x1c\x7f\x6f\xc7\x7f\x3a\xf7\x3d\xcf\xd4\x25\xda\x5e\x60\x06\xff\x64\x89\x90\x9f\x53\x75\x42\xdb\x8d\xd6\xd0\x7a\x06\x2f\x78\xbb\x6a\x23\x18\xf8\x33\xce\x99\xbd\xa4\x39\xb2\x38\x26\x02\x4b\x74\x28\x9a\x4a\x0b\x59\x48\x14\x8d\xc2\x6b\x17\xa3\x31\x5d\x12\x41\xd9\x03\x1e\x2c\xfd\xaf\x35\x07\x49\x36\x01\x1d\x5d\xa7\xb0\x63\xb0\x29\xec\x90\xfd\x33\x34\x79\x64\x37\xfd\x5b\x05\x4b\xce\xe2\x29\xfc\x93\xae\x0d\x64\x26\x55\xf9\x19\x52\x25\x60\xc1\x93\x45\xbc\xfa\xd6\xe6\x94\xa5\x83\x1a\x57\x78\x02\xd3\x7c\xee\x2b\xfe\xd0\x89\x8d\x2e\xb5\x81\x81\xb6\x50\x68\x03\x79\xa9\xad\x54\x27\x90\xd6\xd6\x68\x81\xd8\xba\x0d\x65\x41\x2b\xd8\x4a\x77\xae\x33\xfa\xb1\x51\x14\x65\x24\x94\x94\x90\x42\xbe\x12\xb4\x0d\x0a\x1a\x36\xad\x18\x12\xdb\x08\x1a\x52\x98\xf1\x9f\xeb\x5f\xf1\x8a\x46\x51\xe6\x7b\xf7\x00\x55\x85\xca\x8d\x85\xcc\xfb\x63\x50\x4a\x85\x7d\x6f\xdb\xcf\xba\xd4\xb8\xee\x2e\xfe\x7d\x86\xaa\x35\x9d\xbf\x0f\xfa\xae\x03\x8f\xbd\xb7\x00\x00\x00\xff\xff\x3e\x9d\x3d\x2b\x4e\x03\x00\x00" func runtimeSyntaxGitCommitYamlBytes() ([]byte, error) { @@ -2088,6 +2974,26 @@ func runtimeSyntaxGitCommitYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxGitConfigHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xcf\x2c\xd1\x4d\xce\xcf\x4b\xcb\x4c\xe7\x4a\xcf\x2c\xd1\x80\x30\x6b\x72\xf3\x53\x4a\x73\x52\x8b\x35\x55\x6a\x62\xf4\xd2\x33\x4b\xf4\x21\xc2\x2a\x5c\x5c\x80\x00\x00\x00\xff\xff\x4b\xff\xb8\x40\x2f\x00\x00\x00" + +func runtimeSyntaxGitConfigHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGitConfigHdr, + "runtime/syntax/git-config.hdr", + ) +} + +func runtimeSyntaxGitConfigHdr() (*asset, error) { + bytes, err := runtimeSyntaxGitConfigHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/git-config.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxGitConfigYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8f\xd1\x6a\x84\x30\x10\x45\xdf\xf3\x15\xc3\x54\x50\x03\x6b\xdf\x43\xb7\x3f\x92\x89\x10\x74\x94\x50\x8d\x8b\x99\xa5\x2c\xe4\xe3\x4b\x70\x59\x29\x6d\x1e\x4f\xce\x5c\xee\x9d\xc2\xc2\xf2\xb8\xb1\x81\x39\xc8\x65\xd8\xe2\x14\x66\xa5\x46\x16\x1e\xc4\x28\x00\x80\x62\x44\xbf\xb2\x01\x9c\x83\x34\x87\x92\xd7\x6d\xbc\x2f\x9c\xda\x2a\x13\x75\x73\x90\xf7\x83\x57\xa8\xd4\x5e\x3e\x8e\xdb\x0b\x0c\x5b\x4c\xe2\xa3\x18\x40\xa2\x8f\x46\xf6\x3b\xe7\xc9\x2f\x89\x5b\xa2\x4f\x7c\x4a\xa5\x40\xf7\xc5\x8f\xef\x6d\x1f\x0d\x60\x6f\xad\x49\x37\x3f\xb0\x71\x4e\xdb\xfe\xea\xf4\x15\xff\xc6\xfd\xb2\x88\x6c\xa7\x89\x5c\xf5\x8f\x48\xd8\x10\x11\x75\xd9\xf6\x84\xae\xd5\x84\xb9\x7e\x91\xda\xb5\xba\x3e\x8f\xd6\x95\xe3\x73\x77\x79\x49\xfc\x5e\x22\xde\xf0\x85\x38\x96\x8a\xd5\x09\x8e\xb9\x60\x9d\xfa\x09\x00\x00\xff\xff\x9d\x79\x43\xdc\x4c\x01\x00\x00" func runtimeSyntaxGitConfigYamlBytes() ([]byte, error) { @@ -2108,6 +3014,26 @@ func runtimeSyntaxGitConfigYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxGitRebaseTodoHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xcf\x2c\xd1\x2d\x4a\x4d\x4a\x2c\x4e\xd5\x2d\xc9\x4f\xc9\xe7\x8a\xd3\xd0\xd3\x8a\x8e\xd1\x8f\xd5\xb4\x4f\xcf\x2c\x89\x81\x4a\xc5\x80\xe5\x54\xb8\xb8\x00\x01\x00\x00\xff\xff\xef\x2d\x8f\x29\x2e\x00\x00\x00" + +func runtimeSyntaxGitRebaseTodoHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGitRebaseTodoHdr, + "runtime/syntax/git-rebase-todo.hdr", + ) +} + +func runtimeSyntaxGitRebaseTodoHdr() (*asset, error) { + bytes, err := runtimeSyntaxGitRebaseTodoHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/git-rebase-todo.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxGitRebaseTodoYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x5c\x90\x41\x6f\xe3\x20\x10\x85\xef\xfe\x15\x23\x27\x07\xd8\x5d\x67\x73\xa8\x54\xd5\x17\x0e\xad\x54\xf5\xda\x6b\x70\x25\x6c\xc6\x09\x8a\x0d\x2e\x8c\x55\x47\xa5\xff\xbd\xc2\x76\x52\xa9\xdc\x78\xcc\x7b\x6f\xf8\x5a\xd3\x21\x5d\x06\x2c\xe1\x68\xa8\xf0\x58\xab\x80\x05\x39\xed\xb2\x4c\x23\x61\x43\x65\x06\x00\x90\xc6\xac\xea\xb1\x84\xfc\x8d\xed\xfe\x1c\xa4\xfc\x5f\x71\x71\x34\x24\xe5\x6a\x92\x72\xb6\x6d\xf3\x2c\xf3\x63\x87\x61\xf1\x6d\xe0\x75\x7e\x85\xc6\xf5\xbd\xb2\x3a\xcc\x6a\x01\x81\x14\x61\x8f\x96\xe6\xc0\x81\x99\xe6\xcc\x45\xf4\x0c\x3f\x9c\xd7\x5c\x44\x64\xda\x10\x17\x31\xb0\xf7\x51\x85\x13\x17\xb1\x65\x66\x1a\x07\x2e\xe2\x14\x71\xc2\x26\x6a\xe6\xdd\xc0\x05\x97\xb2\xce\xd7\xaa\x47\xd7\xf7\x86\xe0\xe5\xe9\xda\x62\x34\x5a\x32\xad\x41\x5f\x42\x2e\x65\xcd\x0e\xfb\xe2\x41\x15\x6d\xf5\x79\xff\xef\x6e\xff\xb5\x78\x6f\xe6\xce\x79\x38\xe3\x25\x6d\x10\xa0\x75\x1e\x9e\x0d\x9d\xc6\x1a\x98\xb2\x1a\x1c\x9d\xd0\x07\xbe\x06\x27\x62\xbb\x75\x76\x8d\x16\x86\x33\xd6\x9a\x89\x61\x88\x98\xbe\xd0\x74\x2e\x20\x0b\x51\x73\xc1\x61\x93\x9a\xab\xbf\xbf\x1a\xfb\x44\xe0\xba\x6c\xb3\x5c\x77\x9d\xb1\xb8\xc0\x4b\x27\x90\xf2\x33\xa4\x4d\x7e\xd3\xd0\xa6\xd2\xed\x8f\xb0\x00\x87\x43\x95\x7d\x07\x00\x00\xff\xff\x8f\x8c\x0f\x68\xcf\x01\x00\x00" func runtimeSyntaxGitRebaseTodoYamlBytes() ([]byte, error) { @@ -2128,6 +3054,26 @@ func runtimeSyntaxGitRebaseTodoYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxGlslHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xcf\x29\xce\xe1\x8a\xd1\xd3\x48\x2b\x4a\x4c\xaf\x29\x4b\x2d\x2a\xa9\x49\x2b\xa8\x29\x2b\xa8\x01\x89\x6b\xaa\x70\x71\x01\x02\x00\x00\xff\xff\x9c\x66\x9c\x6e\x20\x00\x00\x00" + +func runtimeSyntaxGlslHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGlslHdr, + "runtime/syntax/glsl.hdr", + ) +} + +func runtimeSyntaxGlslHdr() (*asset, error) { + bytes, err := runtimeSyntaxGlslHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/glsl.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxGlslYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x93\x4f\x6f\xd3\x4c\x10\xc6\xef\xf9\x14\x7e\xad\xbe\x28\x75\xe5\x24\x24\xbd\xd4\x02\xaa\x42\xe8\x89\xaa\x15\x85\x0b\x59\x13\x8d\xed\xb1\xb3\x62\xbd\x6b\xed\x8e\x53\x82\x46\x7c\x76\xe4\x75\xfe\xd1\x20\x24\xf6\x30\x9a\xf9\xf9\x19\x3f\xb3\x5e\x6f\x29\x15\xd2\xa6\xc1\x24\xa8\x94\x53\x83\x41\x81\x84\x39\x25\x83\x20\x08\x82\xee\x99\x86\x1a\x93\x20\x14\x62\x34\x2c\x2d\x54\xbc\x46\x4b\x5c\x36\xbc\x6e\xb8\x6b\x38\x3f\x0b\x07\x03\xdb\x2a\x74\x7d\x4b\x1c\xc8\x02\x35\xc9\x52\xa2\x4d\x82\x70\x71\x13\x7f\x81\xf8\xc7\x32\xdd\x26\x93\xf8\x6a\x99\x46\x8b\x45\xe2\x1a\xc8\x31\x49\xd3\x68\x31\x3c\x4f\xc3\x6d\x6b\x3f\x47\x28\x44\x36\x5c\x1b\x59\x70\x66\x8c\xe2\x6c\x8d\xf9\xd4\xc7\x99\x8f\x97\x2c\x35\xb1\xf4\x54\x7a\x2a\x3d\x2d\x95\x01\x62\x8f\x3d\xf5\xb0\x06\x9a\x76\x61\xd6\x85\x4b\x76\x64\xdb\x9c\xd8\x41\xdd\x28\xb4\x2f\xe7\xbb\x6c\xba\xcf\x66\xfb\xec\xdd\xe7\xb7\xef\x0f\xca\xc7\x15\x14\xe6\xe9\xa0\xef\xeb\x73\x21\xb2\xf0\x4f\xfb\x16\x22\xab\xd4\x72\x38\xc7\x86\x56\x1f\x41\x57\xf8\x00\x16\x6a\x24\xb4\x8e\x1f\x8c\xd4\x74\x54\xdf\x01\xa1\x95\xa0\x8e\xd0\x07\x59\xad\xe8\xd1\xb4\x36\xc7\xe7\xf4\xce\x14\x78\x22\xed\xa1\x35\x45\x9b\xd3\x16\xed\xab\x5b\x53\x1d\xe4\xc7\x03\x3b\x02\xc2\x1a\x35\x6d\x3f\x79\x6e\xb4\x23\x06\x22\x2b\xb3\x96\x90\xd7\x60\x37\x52\x57\xdc\x6a\x59\x1a\x5b\xb3\xd4\x6c\x5a\x62\xa9\x7d\x2c\x19\x95\x43\xb6\x48\xad\xd5\x5c\x48\x97\x83\x2d\xf8\x69\x25\x15\x72\x69\x2c\x17\xe6\x6f\x5e\x99\x45\xf8\xc6\xb9\xd1\x24\x75\x8b\xc7\x4a\x3f\x05\x68\x1a\x75\x87\xbf\x55\x93\x6d\x91\x4b\x50\xee\x37\xa5\xdb\xd4\x99\x51\x23\xd3\xa0\x05\x32\xfe\x6f\x8b\x2f\xc6\xd1\xeb\x57\x6f\xae\x93\xff\x7e\xfe\xff\x82\xbf\xa6\x27\x2f\xd5\x6d\x9d\xed\x0e\x68\xb8\x98\xc4\x57\xe9\x05\x4f\xbe\x77\x09\xc4\xe5\x4d\x7c\x9b\x46\xbd\xc3\xbe\xaf\xee\x87\xf6\x75\xb7\x1c\x81\xed\x36\x31\x1e\x87\x7b\x86\xba\x48\x82\xf0\xec\x00\x8e\xee\xc3\x6e\xc5\x01\x99\xc2\x24\x41\xf8\xe9\x7e\x7e\x9f\x5c\x9f\x38\x9c\x1a\x08\x11\x3d\xb7\x10\x22\x1a\xff\x9b\xcb\xaf\x00\x00\x00\xff\xff\xb8\x3f\xae\xfa\xde\x03\x00\x00" func runtimeSyntaxGlslYamlBytes() ([]byte, error) { @@ -2148,6 +3094,26 @@ func runtimeSyntaxGlslYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxGoHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xcf\xe7\x8a\xd1\x4b\xcf\x57\xe1\xe2\x02\x04\x00\x00\xff\xff\xe7\x61\x51\x76\x0a\x00\x00\x00" + +func runtimeSyntaxGoHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGoHdr, + "runtime/syntax/go.hdr", + ) +} + +func runtimeSyntaxGoHdr() (*asset, error) { + bytes, err := runtimeSyntaxGoHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/go.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxGoYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\x94\x5f\x4f\xdb\x30\x14\xc5\xdf\xfb\x29\xbc\x0c\xd6\xa6\xac\x29\xff\xc4\x58\x34\x86\x18\x1b\xd2\x1e\x36\x5e\x98\x54\xa9\xce\x84\x93\xdc\x04\xab\x89\x1d\x39\x37\x40\xc5\xed\x3e\xfb\xe4\x24\x40\x08\x12\x30\x1e\xd7\xa7\xfa\xfa\xf8\x1c\xdf\x5f\x7d\x9b\xc8\x0c\x70\x59\x80\xcf\x52\x3d\x18\xc4\x80\x10\xa1\x3f\x60\x8c\x31\xbb\xa3\x44\x0e\x3e\x73\x38\xf7\x52\xbd\xe6\x0c\x06\xa6\xca\xa0\x6c\xb6\xdf\xb2\x63\xad\x62\x89\x52\x2b\x91\x95\x4c\xa8\x98\x45\x5a\xa1\xd1\x19\x4b\x32\x7d\x55\x6b\x26\xac\x2c\x20\x92\x22\xab\x3d\xc2\x51\x68\x40\x2c\x28\x12\x25\x90\xd5\x4a\x55\x01\xc5\x90\x88\x2a\x43\x4a\x35\xa5\x1a\x35\x19\xa1\x52\x20\x03\x58\x19\xe5\x72\x1e\x3a\xb7\x4e\x28\x10\x72\x50\xd8\x7a\x41\x56\x02\x25\xda\x90\x4c\xa8\xbc\x92\x18\x5d\x74\xd5\x85\x81\xc2\xe8\xa8\xd5\x16\x22\x5a\x88\x14\x48\xe6\x85\x36\x68\xb3\x4b\xa4\x4b\x61\xc8\x76\x4e\x25\x9a\x2a\x42\x4a\x2a\x15\xd9\x5b\xc4\x90\x80\x21\xa9\x51\x3c\x88\x5f\xe6\xa1\xce\x3c\x5d\x80\x11\xa8\x8d\xcf\x9c\xf9\x64\x63\x3a\x3e\xf8\xf4\xf9\xcd\x9f\xf5\x77\xf4\x3b\x20\xff\xc0\x19\xd4\x62\xcb\xe6\x6c\x59\x40\xf9\xe0\xa8\xcf\x9c\xd1\x7b\xe2\xdc\x73\x6f\x2d\x1b\xec\xf5\x05\xab\x43\xa9\x70\xb4\x4f\x5b\x7b\xb4\xb3\x4d\x7b\xbb\xee\x21\x25\x99\x16\x38\x6a\x56\x14\xe9\xbc\xc8\xe0\x7a\xb4\xb7\x4b\x5b\xdb\xfb\x6e\xf7\x62\x5d\x17\xa9\xb0\x40\x43\xe1\x12\x81\x4c\xa5\xea\xd6\xa4\x4a\x49\x2a\x04\x93\x88\x08\x28\xd4\x3a\xa3\x5c\x14\x14\x5d\x08\x45\x60\x8c\x36\x7d\x33\x6f\x01\xcb\x2b\x6d\xe2\xd6\xb4\xa1\xd3\x15\xd5\xf8\x84\x42\xcf\x9a\xb5\x2a\x34\x15\x50\x22\xec\x6f\xa2\x64\xd6\xa8\xef\x60\x7c\x31\x22\x5a\x00\x3e\xe4\xe1\x85\x6d\xd5\x82\xe1\xfc\x86\x38\x5f\xb9\xce\x53\x92\x11\x71\xee\x3e\x2d\x99\x13\xe7\x81\xdb\x89\xfe\x59\xe5\x21\x98\xe6\x79\x36\x30\xca\x7e\x17\xaa\x96\xb4\x7d\xcc\x37\x27\x1f\x83\x0d\xda\xbc\xb6\x5f\xc4\x24\x39\x9a\x9c\x04\x63\xdb\x0e\x0d\xbd\x61\xeb\xdb\x39\xdb\x58\xfa\x6d\x1c\xb3\x8f\xd4\xd4\x0f\xd4\x71\xee\x6a\xa0\xe2\x5e\xa5\x5c\xc8\xa2\xce\xe3\xdc\xbb\xaf\x76\x66\xeb\xf6\xd3\x4d\x6a\x06\xe9\xf8\x42\xd8\xab\xae\x77\xce\x3d\x29\xb4\x19\x73\x11\x26\xca\xe0\xe5\x90\x73\x5e\x17\x82\x7f\x38\x6c\x89\x7c\x08\x6e\x76\x56\x74\x3d\x3f\x9a\x9c\x88\x49\x62\x09\xdd\x6c\xaf\xa8\xea\xae\x77\x57\xf4\xab\xbb\xde\x5f\xb9\x2f\xa7\x35\xec\xc3\x1a\xbe\x8a\x55\xfd\x9a\x7d\xe6\x78\xde\xc6\x0b\x1b\xfc\xbf\x30\x9e\xf7\x31\x9e\xf7\x81\xb1\x79\x70\xef\x96\xd7\x7f\xa6\x8f\x5c\xa6\xd3\xbe\xcd\xda\x33\xdc\x51\xc7\xda\x8e\xdf\xd9\xe9\xd7\x53\x9a\xcd\x66\x74\xf2\x7d\xf6\xe3\x9b\xeb\x1f\x3a\xcf\x87\x71\x3e\x7e\x34\x29\x7c\x3c\x7d\x7d\xe2\xdf\x00\x00\x00\xff\xff\xf4\x69\x51\x13\xd0\x06\x00\x00" func runtimeSyntaxGoYamlBytes() ([]byte, error) { @@ -2168,6 +3134,26 @@ func runtimeSyntaxGoYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxGodocHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xcf\x4f\xc9\x4f\xe6\x8a\xd1\x03\xd3\x2a\x5c\x05\x89\xc9\xd9\x89\xe9\xa9\x7a\x5a\x99\xb9\x05\xf9\x45\x25\x5c\x80\x00\x00\x00\xff\xff\x10\xe1\x31\x92\x1f\x00\x00\x00" + +func runtimeSyntaxGodocHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGodocHdr, + "runtime/syntax/godoc.hdr", + ) +} + +func runtimeSyntaxGodocHdr() (*asset, error) { + bytes, err := runtimeSyntaxGodocHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/godoc.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxGodocYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4c\x8d\x31\x4b\xc4\x40\x10\x85\xfb\xf9\x15\x8f\xb9\x2b\xf4\x20\xb9\x7e\x1a\x1b\x15\x2c\xe4\x1a\x8b\x80\xe7\xc1\xb2\x3b\xc6\xe0\x6e\x66\xd9\x5b\x41\x21\x3f\x5e\x12\xa3\xde\x2b\xdf\x37\xdf\xbc\x0d\x7a\x0b\xe6\x69\x03\xfd\x74\x29\x47\x15\xf4\x86\x60\x1e\x8d\x8b\x11\x13\xd2\xe0\x8b\x81\xe8\x75\x88\x5a\xbf\xf2\xc2\x67\x81\x82\x56\xf5\x55\x08\x00\x66\x38\xba\xa4\x02\x3e\x1e\xdb\xe5\x60\xcb\x0b\x79\x53\x17\xb4\x08\xb2\xf3\xef\xae\xd7\x76\x37\xa4\x6c\xa5\x12\x95\x8f\xa8\xe7\x1f\xbb\x41\x2e\x9a\x8b\x79\x01\x9f\x9e\x4f\x78\x69\x77\x4c\x2b\xf1\x96\x92\x8e\xeb\xcc\x9c\x73\x75\xa5\x0a\x78\xbf\xe7\xbf\x4e\xc7\x20\xe0\xed\x7f\x71\xf1\xfc\x37\x0d\xaa\x05\x13\xf0\xd5\xd3\xe1\xf6\x30\x75\x5d\x37\xdd\x3f\x74\x8f\x77\xd7\x72\xc3\xf4\x1d\x00\x00\xff\xff\x73\xe8\x65\xe9\x06\x01\x00\x00" func runtimeSyntaxGodocYamlBytes() ([]byte, error) { @@ -2188,6 +3174,26 @@ func runtimeSyntaxGodocYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxGoloHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\xcf\xcf\xc9\xe7\x8a\xd1\x03\x51\x2a\x5c\x5c\x80\x00\x00\x00\xff\xff\xa8\x1f\xae\x3d\x0e\x00\x00\x00" + +func runtimeSyntaxGoloHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGoloHdr, + "runtime/syntax/golo.hdr", + ) +} + +func runtimeSyntaxGoloHdr() (*asset, error) { + bytes, err := runtimeSyntaxGoloHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/golo.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxGoloYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x57\x5f\x73\x1c\xb7\x0d\x7f\xf7\xa7\x50\xd5\xb4\x8e\x93\x91\x9a\xd7\x6a\x9a\x76\x54\x5b\xd7\x51\x9b\x58\x19\xfb\xea\x78\xc6\xe7\xda\xd8\x25\xf6\x8e\x39\x2e\x41\x83\xe0\x9d\x36\x45\xfb\xd9\x3b\xe0\xde\xea\x6f\x3d\xd9\x3e\x54\x33\x22\x41\x2e\x01\x02\x20\xf0\x03\xae\xf3\x01\x65\x48\x78\x76\xb4\xa6\x40\x4f\x9e\x38\x14\x6c\xe5\xec\xc9\xd1\xd1\xd1\x91\x7d\x8b\xd0\xe3\xd9\xd1\xf1\x6a\x75\x6a\xdf\xbf\x38\x7e\xf2\x84\x4b\xc0\x3c\x1e\x38\x39\x1a\x59\x8f\x57\xab\xe6\xcb\xae\xc4\x56\x3c\x45\xed\x4a\xd4\x67\xab\x55\x73\xfc\xf8\x4c\x16\x2e\xad\xe8\x8b\x21\x42\xef\xdb\xab\xe6\x27\x6c\x45\x4b\x34\xae\x73\x07\x49\x90\x17\xd0\xb0\x6f\xa7\xd5\x74\xf2\x0d\xb0\x87\x26\xa0\x5e\x35\x19\x79\x67\xe4\x67\x6e\x08\x3e\x8b\x66\x14\x05\x66\x18\x74\x87\xad\x10\xab\x94\x14\x50\x7b\x48\x9f\xe1\xba\xda\xea\x05\x33\xb1\x5e\xf4\x49\x06\x7d\x49\x11\xf5\x35\xf5\xa8\x57\xa9\x9a\xf4\x0a\x73\x09\x72\x98\x4e\x69\x3b\x51\x1d\xf8\x30\xd1\x58\x05\x4c\x8b\x2a\x67\xe4\x86\xf0\x70\x49\xdd\xa8\xc7\x41\x11\xef\x30\x8a\xef\x3c\xf2\x69\x1b\x20\xe7\x83\x52\x50\xd6\x3d\x46\xd1\xe4\xfb\x7b\x7a\x7f\xe6\xb8\x8f\x82\xdc\x41\x8b\x59\x7d\x9f\x02\x1a\x6f\x56\xbc\x16\x8c\x2e\x2b\xed\x90\xd9\x3b\xcc\xda\xc3\x16\x59\x23\xee\x2f\x63\x16\x88\x2d\xce\x91\x9d\x47\xc7\xf8\x5c\x5d\xe3\xf3\x0f\x8c\xd9\x74\xf3\xb9\xba\xc9\x0b\x32\x98\xa3\xbb\x00\x22\x18\xd1\xa9\xd0\x77\xf6\x14\xb6\xf1\x3d\x24\xfd\x08\xd1\x29\xf1\x45\xc8\xf8\x17\x14\xfd\x68\x8f\x42\x07\xb7\x42\x4a\x61\x50\xf4\xb2\x41\x9e\xa1\x0c\x8f\x5c\x34\x3e\x8d\xf0\xe0\xe3\x5a\x19\x7c\xb6\x39\x96\x10\x7c\x37\x68\x0b\xd2\x6e\x7c\x5c\xcf\x90\x97\x98\x7a\x9f\xd1\xa2\x66\x51\xa4\x30\xaa\x3d\x2b\xba\xc3\x02\x42\x50\x88\xc3\xac\x17\xf0\xe2\x21\xf8\x9f\x51\x6f\xc9\x1f\xbd\x6c\x7c\x5c\x6e\x18\xc1\x69\x16\x60\xd1\x6e\xba\x25\x84\x06\xda\xed\x92\x94\xe2\x6b\x14\xa5\xb8\xb0\x78\x6a\xed\x51\x82\x62\xfc\x54\xb0\xcc\x79\x9d\xc4\x3e\x4a\x88\x5a\xe7\xea\x09\x54\xbb\x2e\xc4\x3a\xfd\x00\x39\xef\x89\x9d\x66\x6c\x0b\xe3\xab\xbb\x5b\x8c\x9f\x8a\x67\x7c\x49\xf2\xb2\x84\x30\x2d\x2d\x3a\x96\x43\x42\x77\x5e\x93\x88\x21\xae\x4d\xe2\x0e\x39\xa3\x7b\x55\x57\x3d\xa4\x8b\x28\x3c\x28\xe4\xcb\x29\xf0\xa6\x80\x52\xc8\x8b\x03\x18\x40\xb8\xf9\xaa\x3e\x3f\x0f\x94\xab\xe5\x3e\xe0\x92\x96\x78\x2d\x2a\x78\x2d\x4b\x5a\xf8\x30\xee\x5e\x5c\xfb\x2c\x59\xdb\xc2\x8c\x51\x5e\x78\xd6\x1c\x10\x93\x96\xe2\x9d\xfa\x3c\xea\x53\x53\xdb\xf4\xbb\xea\xb4\xdd\x00\xbf\x81\x50\xcc\xe5\x32\x12\x81\xe2\x7a\xa4\x1c\x95\x26\xe0\x48\x77\x81\xe0\x70\x80\xb1\xa7\x1d\xfe\x79\xb8\x8c\x0e\xaf\xb5\xa1\xeb\x19\x3e\x0e\x7e\x8b\x61\x78\x5d\x52\x22\x16\x34\xc7\x19\xc8\x34\x14\x9c\x96\xe8\x90\x73\x4b\x8c\xda\x04\x1f\xb7\x93\xa7\x3e\xec\xbc\x43\xd2\x96\x62\x8b\x10\xd0\x69\xb7\xfe\xd0\x04\x68\xb7\x46\xf0\xb8\x5e\x33\x62\x34\x62\xc0\x10\x68\x3f\x1e\x31\x6d\xd7\x1f\x7a\x58\x63\x14\x30\xb2\x1d\xa0\x1e\xda\x6f\xbc\xa0\x36\x93\x98\x66\x14\xd3\x4c\x62\x9a\x1b\x31\xcd\x41\x4c\x73\x2b\xa6\x39\x88\x69\x26\x31\x6d\xe1\x4c\xfc\x21\x51\xf6\x35\x91\x0e\xeb\x0c\x3b\x7c\xb4\xc9\x98\x85\xf8\xf1\x7e\x49\x13\xe5\x68\x7f\xb3\xdb\x11\xef\x81\xdd\xb4\xb4\x18\xaf\x6b\x64\xc8\xf8\xc1\xf9\x9c\x02\x0c\x87\x55\xf0\x71\x4e\x88\x57\x00\xad\x80\xd2\x52\xcc\x1a\xe0\xe7\x71\xd5\x31\xf5\x97\x56\x28\xd6\x18\x0f\x10\xc4\x98\x10\xe4\x00\x49\x73\x64\x43\xfe\xee\x46\x1c\x05\x17\xea\xc8\x2a\xb0\xc5\x3a\xfc\xb8\xb1\xe8\x74\x4c\xa9\x0e\xe3\x32\x97\xc6\x38\xe6\xa0\x42\x6f\x21\x33\xe3\x60\x4f\xae\x84\x39\x0a\xff\xf5\xf5\xd5\xcb\x19\xc7\xb2\xb0\x8f\x6b\x03\xc3\x04\x9c\x51\x85\x8c\x51\x85\x1e\x94\xdf\xe4\x40\x70\xc1\xd4\xcf\x94\x7b\xa7\x74\xa8\xc3\xce\x47\xd4\x35\xca\xdf\x70\xb0\x69\xcc\xb0\xc4\x94\x90\xc5\x63\xbe\x41\xb9\x19\x82\xc5\xf7\x98\xb5\xa4\x25\xa9\x85\xd3\x92\x66\xf0\x74\xc4\x3d\x88\x0a\x5d\xc6\xc3\x88\x6b\xb4\xda\xf2\xa2\xe6\xbe\x0a\x2d\x2c\xf1\xad\x1c\xd1\xac\x6a\xb0\x31\x9c\x16\xc3\xe1\xa9\xe8\x31\xba\xd2\xa2\x22\xb4\x1b\x6d\xa9\x44\x51\xac\x28\x35\xcf\x55\x86\xff\xaf\xa1\x47\xc3\x2b\x75\x78\xe8\x80\x20\x25\x8c\x4e\xc1\xd5\xff\xcb\xee\xbc\xa9\xe5\x34\x59\xf0\x46\xa7\x3e\x66\x64\xd1\x00\xd9\xda\xa3\x9e\x9c\xef\x6a\xff\xf3\xc6\xe3\x5e\x3b\x1f\x9d\x81\xa5\x85\x7d\x0f\x49\x7f\x22\x1f\x27\xcc\xb9\x41\x69\x25\x76\xc8\xe3\x58\xe1\xca\x20\xef\x5c\xd4\xc7\x36\x14\x87\x8a\xd7\xe3\x3c\x7e\x50\x87\x01\x05\x75\x03\xd9\x12\x4c\xc0\xc7\x6c\xaf\x79\x55\x0b\xb6\x0a\x55\xe0\x9d\x93\x4b\xa3\x41\x4b\xd2\x5c\xda\xd6\xec\x71\xda\x97\xa0\x11\xd7\x96\x32\xca\x36\x38\xbf\x53\xb6\xa1\x27\xa7\x6c\x43\xa2\xbd\xb2\x0d\x59\x58\x83\xe8\x5a\x14\x3f\x69\x0d\x2c\x0d\x38\x36\x0f\xd6\x32\x7c\x8c\x24\x7a\x4d\xac\xb8\xc3\xa8\xe4\xdc\xad\xb6\xd3\x6b\x7d\xf4\xd9\xfe\xa3\xf5\x18\x9d\xb5\x78\xc6\x78\xd9\xd5\xf2\xd6\x59\x6f\x18\x9d\x59\xe6\x05\x7b\xab\xf8\x75\x5e\xa3\x98\x33\x7d\x15\x97\x45\x17\x60\x56\x2f\xb9\xa0\x56\x3e\x2b\x47\x83\x96\x38\xcd\xc0\x83\xe6\x64\xb5\x15\x59\x77\xc0\xc0\xeb\xac\x79\x0f\xe9\x7c\x22\x9e\xd7\x93\x95\xa2\xda\x7b\x1a\xa9\x3e\xee\x68\x5b\x3b\x02\x4d\x3e\xa1\xb6\xd4\x27\xca\xa8\x9e\x14\xa2\x5b\x6e\x30\x6a\x89\xe2\xad\x0e\xb7\x85\x4d\x19\x37\x27\x6d\xe8\xef\x29\x21\x3f\x87\x8c\x8a\x9f\x0a\x84\x3c\xf6\x19\xd9\x2e\xba\xd7\x68\x66\x01\xa9\x7d\xe1\x04\x4d\x9d\x62\x7d\x5f\xbb\x79\x6f\x43\x6b\x42\x7a\xeb\x9d\x94\xac\x1d\xdb\xfb\x7c\x0f\x91\x72\xc2\xd6\x43\x38\xf0\xef\xcd\x92\x86\x11\xb6\xf5\x1d\x7c\xac\xc5\x55\x0a\xc7\xbb\x3c\xb5\x31\x9e\x74\xe5\x43\x6b\x66\x51\x0c\x21\x0c\x2a\x1b\xa6\xfd\x7f\xb7\x72\xc2\xb1\x92\x2c\xa3\x37\x3e\x6b\x40\x31\x7f\x6b\xa0\x16\xc2\x3d\xbd\x86\xbe\xa1\x70\xda\x30\xb4\x5b\x14\xf3\xcc\xbb\x2f\x9f\xfd\xf3\x5f\xef\x75\xb5\x7a\xa7\xab\xd5\xfb\xe3\xcf\x78\xa0\x23\xd6\x7d\x05\xf4\x8e\xb8\x66\xb8\xbf\xa7\x7b\x8d\x07\xb8\x39\x0e\x35\x37\xd5\x67\xb5\x40\x24\xd6\x1a\x68\x53\x7c\xdd\xf3\xf5\xc4\x79\xda\x10\x85\x1b\xeb\x4b\x6d\xfb\xee\xfb\xf4\xf6\x8e\x03\x68\x58\xc8\x59\x53\x61\xd0\xea\xee\x3f\xe0\x68\xa6\x81\xab\xd5\x3a\x33\x73\xb5\x3a\xf9\xfa\x77\x5f\x7d\xfb\x87\x3f\xfe\xea\xdf\xbf\xf9\xad\xfe\xe3\xbd\x9e\x7d\xfb\x50\xf0\x69\x2c\x7d\x63\xee\x3c\x5c\xf0\xee\x9b\x93\xdf\xbf\xff\x5a\xbf\xb9\x36\x02\x4e\xba\xf3\x93\xc5\xfb\xaf\xec\x1e\x7d\x7a\xfa\xf4\xb1\x01\x63\x1d\x19\x7f\xf1\xd9\x5f\x0d\x2e\xb3\xe8\xf8\xf8\x66\x0f\xa3\x7b\xb0\x93\xb7\x3e\x55\xb3\x57\xab\xd3\xdb\xdd\x3b\x3f\x1e\xa7\xbf\xbb\x37\x8d\xd1\xf5\x7c\x03\x7c\xcb\x3a\x57\x9d\xa7\x0f\xb5\x79\xfa\xff\x54\xa6\xaf\x41\xf4\x48\x89\x5f\x3f\x54\xe2\x8b\x5f\xb8\x4e\xc8\xd1\xd9\xd1\xf1\x97\xcb\xab\x17\x57\xfa\xf6\xed\x5b\x5d\x5c\xbe\xfd\xfe\xe2\xd9\xd9\x9f\x7e\xf9\xae\x93\x93\x93\x93\x87\xd7\xdd\xdf\xfb\x9f\x6f\xfc\x4f\x00\x00\x00\xff\xff\x8f\x72\x85\xf4\x0e\x10\x00\x00" func runtimeSyntaxGoloYamlBytes() ([]byte, error) { @@ -2208,6 +3214,26 @@ func runtimeSyntaxGoloYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxGraphqlHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x2f\x4a\x2c\xc8\x28\xcc\xe1\x8a\xd1\xd3\x48\x2f\xcc\xa9\x81\x72\x35\x55\xb8\xb8\x00\x01\x00\x00\xff\xff\xa8\xdb\x12\x45\x1a\x00\x00\x00" + +func runtimeSyntaxGraphqlHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGraphqlHdr, + "runtime/syntax/graphql.hdr", + ) +} + +func runtimeSyntaxGraphqlHdr() (*asset, error) { + bytes, err := runtimeSyntaxGraphqlHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/graphql.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxGraphqlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x53\xdd\x6e\x9b\x4c\x10\xbd\xf7\x53\xec\xe7\xf8\x02\xbe\x2a\x79\x00\xa4\xca\x25\x36\x4e\xa9\x6c\x92\x82\xa9\x54\x65\x22\x6b\x8d\x27\x0e\xea\xc2\xe2\xdd\x25\x6d\xd4\xe9\xbb\x57\x2c\xc6\x3f\xb8\xe1\x02\x69\x66\xcf\x9c\x33\x73\x76\xf6\x39\x17\x68\xde\x2a\xf4\xd8\x56\xf1\xea\x65\x27\x06\x83\x0d\x1a\xcc\x8c\x37\x60\x8c\xb1\xe6\xb8\xe4\x05\x7a\x6c\x08\x70\xe3\x6c\x77\x82\xf6\x38\x77\x34\x1c\x0c\x54\x2d\x50\xb7\xc8\x6b\xd6\xd2\x0c\x01\xd6\xce\xd8\x73\x76\x35\xaa\x37\x2a\x6a\xc3\x4d\x2e\x4b\xd2\xf5\x5a\x67\x2a\xaf\x6c\xd0\x20\xe9\x59\xf1\x6d\x81\xa5\x21\x9d\xbd\x60\xc1\xa9\x2e\x9b\x23\x59\x12\xfe\x32\x58\x6e\xf4\xd8\x75\x01\xd6\xc3\x81\x65\xbf\x62\x3a\xe3\x82\x2b\x2b\xa2\xf7\x82\xda\x70\x83\x0d\xc5\x5e\x35\x9c\x52\x58\x1a\x9a\x09\xc9\x0d\xdd\x4a\x29\x90\x97\x94\x18\x95\x97\x5b\x9a\x72\x83\x26\x2f\x90\xa2\x5a\x88\x33\xe2\xbc\x34\x4a\xea\x0a\xb3\xa6\xb5\x77\xf9\x9d\xd5\x0a\xe0\xe7\x07\xf7\x50\x56\x71\xc5\x0b\x34\xa8\xfe\x89\x76\x2c\xd8\x19\x7b\x00\x9e\xf3\x08\xa0\x9f\xfe\x77\xc7\x6d\x3c\x72\x8f\x24\x9b\x5c\x35\xba\xaf\xc8\x84\xcc\xac\x51\xef\xcd\xf6\x35\x0d\xe2\xef\xb4\x48\x97\xfe\x32\xbc\x8f\x28\x49\x6f\x93\x49\x1c\x3e\xd8\x60\x16\x06\xf3\x29\xcd\x62\xff\x6e\x11\x44\xcb\xd5\x34\x98\x85\x51\xd8\x9e\x74\xb9\xe4\x21\x0e\xfc\x29\x85\xd1\x3c\x8c\x82\x55\x97\xa6\x64\xf2\x39\x58\xf8\x94\x4c\xfc\xb9\x1f\xd3\xfd\xed\x97\x60\xb2\x6c\xe9\x4e\x59\xfc\xf8\x2e\xed\x33\x87\xd1\x32\x88\x67\xfe\x24\xa0\x34\x6a\xe2\x20\x4a\x17\xf6\xb7\xfa\xe6\xcf\xd3\x80\xc2\xe8\x21\x5d\xae\xf6\x8c\x6d\xd0\xe7\x3d\xbb\x85\x83\x13\x9d\x01\x99\x2c\xb5\xe1\xad\x9b\x9f\xce\xad\x57\x52\x9a\xb3\x8b\x3a\xc1\x5a\xaf\xec\xea\x2d\xba\xd5\x4b\x4e\x57\x2f\x69\x97\x2d\x96\xd2\x9c\xe9\xbf\x72\x95\xf3\xb5\x38\xde\x7d\x85\x59\xce\x45\xa3\x0e\x30\xea\xe9\xe3\xae\xce\x15\x6e\x98\x7e\x2b\xd6\x52\x5c\x56\xfc\xd7\x61\xaf\xf7\x90\x26\xe9\xd1\x47\x02\x20\x02\x70\x08\xc0\x25\x80\xdf\x04\xf0\x87\x00\x1e\x09\xe0\xe9\x58\xd2\x4d\x73\xb3\x96\xb6\xb2\x19\xc9\xa8\x1a\xe9\x99\x0b\x8d\xb6\x6b\xc6\x2e\xc0\xda\xee\x79\xfb\x16\x9b\x4f\x1b\xae\xac\x21\xc3\xe1\x21\x87\xe5\xa6\x97\xd1\x3f\xf2\xca\x4a\x00\xdc\x1c\xb3\x27\xcf\xba\xfb\x4e\x95\xda\x41\x27\x2f\x5c\x1d\x4b\x0f\xed\x14\x76\x69\x2f\xda\xb8\xea\x77\x31\xea\xcb\xb1\xc7\xa7\xbf\x01\x00\x00\xff\xff\x7f\xe6\xec\xe6\x8d\x04\x00\x00" func runtimeSyntaxGraphqlYamlBytes() ([]byte, error) { @@ -2228,6 +3254,26 @@ func runtimeSyntaxGraphqlYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxGroffHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4a\x2f\xca\x4f\x4b\xe3\x8a\xd1\xcb\x8d\x4e\xcd\x2d\x8e\x55\xa9\x89\xd1\x2b\xca\x4f\xab\x89\xd1\x2b\xc9\x4d\x4c\x56\xa9\x89\x03\x51\x7a\x5c\x5c\x80\x00\x00\x00\xff\xff\xc1\x42\xbc\xff\x26\x00\x00\x00" + +func runtimeSyntaxGroffHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxGroffHdr, + "runtime/syntax/groff.hdr", + ) +} + +func runtimeSyntaxGroffHdr() (*asset, error) { + bytes, err := runtimeSyntaxGroffHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/groff.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxGroffYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x52\xc1\x4e\xc3\x30\x0c\xbd\xf7\x2b\xac\xa8\x87\xb6\x68\x11\x1c\xc9\x85\x03\x9f\x11\x67\x52\xd4\xba\x23\xd2\x92\x56\x89\x39\x20\xf5\xe3\x51\xd2\x31\x26\xca\x06\xf3\xc5\x6d\xf2\x9e\xfd\xfc\x9c\xd1\x1d\x89\x3f\x66\x52\x70\x88\xd3\x38\x56\xd5\x40\x4c\x3d\x2b\xa8\x00\x00\xf2\x6d\xb0\x9e\x14\x08\x44\xe9\x35\xf9\x64\xea\x05\x51\xc6\x69\xcc\x89\xbd\xed\xeb\x65\x9f\x93\x14\x55\x15\xdf\x8f\x94\x54\x61\xee\x20\xb1\x65\xf2\x14\x58\x81\xd8\x23\xca\x66\x48\x4b\x88\x2d\xe8\xbd\xd6\x2a\xcd\xb6\x27\x65\x8c\xe9\xc4\x09\xde\x4f\x21\xb1\x0d\x2c\xd3\x4c\xbd\xb3\xc7\xd7\x37\x1b\x4b\x5b\x44\xf9\x0f\xcc\x28\x97\x92\x10\x1b\xb9\x7e\xa6\x06\xf1\x61\x41\xdc\xb5\x2f\xfa\x71\xf7\x6c\x7e\x16\x51\x20\x9a\x8c\x2b\xe0\x1c\x6d\x68\x32\xb3\x91\xb2\xdd\x60\xcb\x7f\x8e\xc4\x36\xfe\x46\x45\xd4\xe2\x0c\xa2\x30\x28\x10\xe6\xfb\x60\x35\x06\xb4\xa9\x4e\x85\x57\xcb\x8b\x2f\x17\x6e\x74\x57\xbd\xf1\x17\x46\x96\x8e\x42\x76\xf5\xd6\x16\x8e\x2e\x1c\xb6\xea\x10\xbb\xab\xa3\x7d\x91\xfe\x9a\x10\xb1\xbb\x73\xc6\x1b\xdb\x2a\x52\x6e\x6e\x75\x23\x67\xa5\xdd\x25\xc0\x0d\x14\xd8\x8d\x8e\xa2\xf4\xb6\x8f\xd3\xb9\x4a\x8e\x5a\x3f\x95\x47\xf1\x19\x00\x00\xff\xff\xb6\xd6\x2a\x2f\x01\x03\x00\x00" func runtimeSyntaxGroffYamlBytes() ([]byte, error) { @@ -2248,6 +3294,26 @@ func runtimeSyntaxGroffYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxHamlHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x48\xcc\xcd\xe1\x8a\xd1\x03\x51\x2a\x5c\x5c\x80\x00\x00\x00\xff\xff\x47\x1a\x0c\x70\x0e\x00\x00\x00" + +func runtimeSyntaxHamlHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxHamlHdr, + "runtime/syntax/haml.hdr", + ) +} + +func runtimeSyntaxHamlHdr() (*asset, error) { + bytes, err := runtimeSyntaxHamlHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/haml.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxHamlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x91\xdf\x6e\x82\x30\x14\x87\xef\x79\x8a\x5a\x31\x50\x0c\x64\xb7\x23\x93\xb9\x47\xd8\xd5\x92\x9d\x9e\x63\x3a\xad\x1b\x09\xe0\x1f\xea\x8c\x5a\xdf\x7d\x29\x43\x64\x73\xe3\xf2\xfb\x7d\xa1\x5f\xd3\x65\x5e\x68\x73\x58\xeb\x94\x7d\xa8\xb2\xf0\xbc\x85\x36\x7a\x6e\x52\xe6\x31\xc6\x98\x1b\x2b\x55\xea\x94\x71\x29\x13\x27\xf8\xdc\xf3\xb6\xbb\x42\xd7\x69\x23\xc4\xac\x3e\x94\x6f\xab\x22\x65\x3c\xb6\x13\xde\xb2\x85\x5e\xaa\x5d\x61\x1c\xcc\xec\x24\xbb\xe0\xf9\xaa\xaa\x8d\xaa\x1c\x0f\x81\x31\xb4\x24\x46\x70\x17\xdf\x3f\xc5\xaf\x2a\x3e\xce\x70\xdc\x99\xf5\x5a\xcf\x73\xe5\xfe\x9a\xfe\x2d\x7c\x17\xbb\x28\xb8\x1d\x2f\xe7\x24\xb5\xd9\xe6\xd5\xbb\xf3\x78\x08\x24\x39\xda\x50\xba\x8f\x0b\x11\x49\x6e\x47\xf0\xfc\x82\x8f\x52\x9e\x80\xce\x18\x49\x79\xee\x48\x08\x24\x1c\x11\x2d\x79\x00\xca\x30\xca\xba\xdd\x07\xf2\xdd\xee\x77\x84\x80\xc8\x11\x6a\xc9\x00\x68\x80\xd1\xe0\xff\xa4\x20\x04\x0a\xda\xa0\x40\x88\x28\xb0\x23\xd8\xec\xf1\x67\x4d\x03\xfa\x31\x9b\x3d\x5e\x5b\x9a\x15\x80\xd0\xad\x78\x01\xfd\xb6\x06\xf4\xd3\x36\x7b\xfc\x55\x96\x2f\x74\x65\xf2\x65\xae\xb7\x29\xe3\xc3\xde\xf1\xb7\x42\xf2\xa9\x9c\x14\x4e\xed\x74\x2a\xda\x77\x99\xa9\xf8\x88\xe3\xeb\x35\xcb\x52\x37\x0f\x3c\x04\x3a\x61\x12\xf9\x76\xe8\x73\xef\x2b\x00\x00\xff\xff\x82\x41\x7f\x6a\x64\x02\x00\x00" func runtimeSyntaxHamlYamlBytes() ([]byte, error) { @@ -2268,6 +3334,26 @@ func runtimeSyntaxHamlYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxHaskellHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x48\x2c\xce\x4e\xcd\xc9\xe1\x8a\xd1\xcb\x28\x56\xe1\xe2\x02\x04\x00\x00\xff\xff\xbf\xb7\xe2\xf8\x0f\x00\x00\x00" + +func runtimeSyntaxHaskellHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxHaskellHdr, + "runtime/syntax/haskell.hdr", + ) +} + +func runtimeSyntaxHaskellHdr() (*asset, error) { + bytes, err := runtimeSyntaxHaskellHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/haskell.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxHaskellYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x94\x6f\x6f\xdb\x36\x10\xc6\xdf\xfb\x53\x68\x1a\x51\xc4\xc0\xec\xbd\xf7\xe2\x6c\x58\x1b\x0f\xdd\xda\x66\x4b\x8d\x21\x40\x2e\x1a\x68\xf1\x64\x11\xa5\x48\x97\xa4\x96\x05\x7d\xb2\xcf\x3e\x90\x92\x1d\x2f\xde\x3f\x60\x86\x41\xe2\xee\x48\x3e\x8f\x7e\x3c\xa9\xd1\x86\xe3\xc3\x8e\x17\x45\x2b\xc3\x07\x36\x66\x32\x51\x1c\xb9\x8e\x8b\x49\x51\x14\x45\x2a\x5b\xd9\xf1\xa2\x28\x89\xe6\x6d\x10\xe5\x64\xe2\x7b\xc3\x61\x28\x7f\x5e\xfc\xc0\x0f\xf7\xce\xab\x90\xc3\x59\x11\xa2\x8c\xdc\xb1\x8d\x8b\xa2\xbc\x2d\xee\xce\x64\x40\x2d\x03\xc3\x35\xa8\x8d\x0c\x01\x4a\x46\x09\xc5\x8d\xec\x4d\x84\x62\xaf\x7f\xd5\x76\x0b\xe5\xd0\x38\x2f\x8d\x49\x13\xeb\xad\x45\xab\x55\x2a\xe8\x06\xb1\x65\x0b\x36\x81\xa1\xbb\x9d\xf3\x11\xda\x36\xfa\xb7\x61\x34\xc3\xe4\xa1\x6d\x88\xd2\xd6\x0c\xc3\x69\x01\x3a\xe5\xd0\x39\xd5\x1b\x86\xe5\xfb\xf4\x80\xf8\xd8\x4b\xa3\x1b\xcd\x0a\x39\xbc\x6f\xd9\xf3\xf4\xb6\xb8\x2b\xff\xc2\xfa\x59\x95\x7d\x56\x7b\x37\xd5\x28\x5d\x0d\xda\xd5\x28\x5e\x8d\xea\xd5\x41\xbe\x1a\x45\xab\xbd\x6a\x95\xc6\xbf\x93\x19\x08\x89\x8c\x48\xc0\x35\x62\x80\x24\x32\x25\xb1\xc7\x24\x0e\x9c\x04\x94\x13\x23\x29\xb1\x47\x25\x46\x56\x02\xba\x11\x99\x96\xc8\xb8\xc4\xc8\x4b\x0c\x8c\xc6\xc9\x8c\xb3\x17\x07\x66\x22\x41\x4b\xa1\x48\xd8\xc4\xc8\x4d\xec\xc1\x89\x27\x72\x02\x43\x22\xb3\x13\xd3\x72\x92\x9f\x29\xb5\xc1\xcf\xd2\x6b\xd7\x87\x22\x3c\x74\x1b\x67\x0e\xdd\x90\xa3\xc4\x93\x08\xf8\x06\x9f\x61\x81\x5f\xf0\x3b\x96\x20\x22\xc2\x57\x20\x3a\x23\x9a\xe2\x0b\x10\xdd\x82\xe8\x0e\x44\x9f\x40\xf4\x78\x7c\xf4\xd5\x8e\xbd\x8c\xce\xff\xf9\xd0\xb9\x1b\xd3\xe9\xf4\xe5\x12\x5f\x2e\xf1\xe2\x05\x88\xd2\x1f\xe7\xb8\xc0\xf9\x12\x17\xcb\xff\x60\x71\xc7\xb5\x96\xd9\xe3\xec\x02\xe7\xb3\x69\xf9\xdc\x3b\xd1\x1c\x44\xe2\xe8\xa4\x57\x32\xca\xa2\x76\x36\x44\xdf\xd7\x47\xce\x72\x4a\xda\x38\xdf\xb8\x71\xe7\xe6\x6c\xed\x7b\xc6\x4a\x9a\xc0\x53\xa2\x4d\xf9\x6c\x65\x92\x7d\xe7\x62\x9b\x5a\xfd\xfb\x3e\x44\xbc\xe1\x26\xe2\x5a\x6f\xdb\x88\x37\x6b\x5c\xfe\x84\xef\xd6\xd3\x13\xe5\xd4\x23\xbc\x17\xd5\x8a\x6d\x4c\xb7\xe3\xe7\xb9\x30\xb6\xd5\x35\x4b\x85\xf7\xad\xbb\xc7\xa5\xed\x3b\x5c\x7e\xc4\x95\x57\x48\xfb\xf1\xad\xeb\xad\x62\x85\xf5\xc3\x8e\xe5\xc6\x30\xde\xf5\x1d\xae\x59\x1a\xac\xbc\xac\xa3\x76\x56\x1a\xbc\xb6\x91\xb7\x5e\x9a\x5c\x48\x79\xac\x8c\x93\x31\x19\xcd\x99\x14\xe0\xad\xb3\x52\x0d\xe3\x8f\xa6\x0f\x58\xf5\x36\xf1\x38\x76\xfc\x3e\x7a\x6d\xb7\x27\x84\x42\x4e\x2f\xc6\x65\x45\x7a\x2b\x7c\xa2\x41\x65\x79\xc8\xb1\x55\xcf\x32\xe1\x83\xde\x65\xae\x44\xf3\xa7\xec\xd1\xf7\x68\xff\x3b\x56\x1a\x2e\xf8\x65\x2b\xfd\xd3\xd6\x83\xbd\x97\xae\x4b\xef\xe2\x93\xbf\x1c\x9e\xfa\x9a\xcd\x9e\xfb\x12\xff\x62\x20\x3a\xe5\xd2\xf5\xae\xaf\x5e\x5d\xe1\xe6\xe6\x06\xab\xd7\x37\x6f\x2f\xa7\x8b\xaf\x47\xf5\x7f\x10\x23\xfa\x74\x22\x37\x23\x7a\xfc\xdf\x8a\x47\xbd\xd2\xe9\xda\xa7\xd5\xa9\x15\x1a\x6d\x59\x95\x93\x3f\x02\x00\x00\xff\xff\xef\xe3\xd9\xc6\x0b\x06\x00\x00" func runtimeSyntaxHaskellYamlBytes() ([]byte, error) { @@ -2288,6 +3374,26 @@ func runtimeSyntaxHaskellYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxHtmlHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x28\xc9\xcd\xe1\x8a\xd1\xcb\x28\xc9\x8d\xce\x89\xb5\x57\xe1\xe2\x02\x04\x00\x00\xff\xff\x5c\xf7\x51\xaf\x11\x00\x00\x00" + +func runtimeSyntaxHtmlHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxHtmlHdr, + "runtime/syntax/html.hdr", + ) +} + +func runtimeSyntaxHtmlHdr() (*asset, error) { + bytes, err := runtimeSyntaxHtmlHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/html.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxHtmlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x54\x4d\x8f\xe3\x44\x10\x3d\x93\x5f\xe1\xf5\x22\xd4\xbd\x4b\x32\x70\x19\x09\x6f\x76\x2c\xb4\xc0\x15\x0e\x5c\x50\x26\x23\xb5\xbb\xcb\x76\x93\xfe\xf0\x76\x97\xb3\x1b\x78\xfc\x77\xd4\xce\xcc\x4e\x46\x3b\x20\x24\xac\xc8\x8a\x5e\x95\xab\x5e\xbd\xfa\xe8\xad\x23\x3e\x4d\xd4\x54\x23\x7b\xb7\x5a\x19\x62\xd2\xdc\x54\xab\xaa\xaa\xaa\x62\x0c\xca\x53\x53\xd5\xb7\xb7\x9b\x91\xfd\xce\xed\xdb\x2f\xeb\xd5\x2a\xcd\x8e\x72\xb3\xf8\xac\x2b\x4a\x29\xa6\xa6\xaa\xb7\xbb\xbb\x17\xfb\xcd\xab\xf6\xa6\xbe\x37\xe4\x93\xef\xa2\xdb\xb0\x1a\x9a\xaa\x16\xad\x95\xdb\xdd\xd5\xbe\x15\x4a\x74\x5d\x82\x4e\x31\x9c\x3c\x8c\x49\x94\x33\xa6\xc9\x11\x23\x91\x42\x62\xab\x1d\x21\x5b\x43\x98\x8d\x8d\xb2\x45\x27\x54\x26\xd1\xc7\xc0\xb2\x85\x11\x16\x51\xc2\x0e\x70\x51\x1f\xde\xcf\x91\x09\x49\xb6\xd0\x4a\x84\xa3\xca\x98\xd8\xc6\x20\xa1\x29\x30\x25\x68\xcb\x04\x1d\x85\x21\x38\xb8\x21\xc5\x79\x92\x30\x42\xb1\x12\xce\xe6\x25\x1e\xc8\x81\x58\x59\x97\xd1\x07\x58\xe5\xe2\x00\x9b\xe0\xc0\x12\xe4\x45\x47\x46\xb6\xe8\x2d\x39\x93\x89\xd1\xdb\x41\x68\xb5\x24\xc1\x9c\x48\xa2\xd0\x42\x1f\x93\x87\xb0\xb2\xed\x93\xf2\x84\xe5\x5d\xbc\xc7\xdd\xb7\xeb\xeb\x3d\xc6\x04\x0b\xeb\x07\xd8\x20\xa6\x99\x91\x25\x0e\x9d\xc1\x81\x4e\x03\x05\x38\xd5\x91\x83\xa3\x81\x82\x81\xb3\x22\x1c\x64\x0b\xaf\x84\x0d\x98\x90\x0e\x12\x9e\xc2\x2c\x2c\x93\x2f\x38\xb1\x50\xa0\x24\x11\xd4\x11\x21\x8a\x73\x2e\x64\x9d\xec\xc4\x12\x51\x38\x4c\x2c\x96\x4a\xb1\x28\x31\xf3\x34\xb3\xc4\x24\x54\x52\x1e\x56\xf3\x9c\x08\xe5\x17\x87\x22\xbd\x6c\xf1\x1e\x49\x4c\x60\xcc\xdd\x49\x22\x0b\x4e\xf6\x40\xb2\x45\x56\x7e\x42\x26\xa1\x97\x62\x1d\x69\x96\xc8\x5e\x39\x87\x1c\xe7\xa4\x09\x79\x52\x01\x99\x53\x0c\x03\xf2\x2c\x3a\x4c\xf0\x5e\xa5\x93\x04\xd3\x47\x56\xa5\x9b\x6c\x3d\x81\x93\xd2\x07\xcc\xc2\xc9\x16\x47\x95\x70\xb4\x86\x22\x3e\x74\x49\x8a\x6a\xf3\x0a\x37\xf2\xd9\x99\xd9\xd0\x47\xa6\x60\xc8\x3c\x19\x9e\x2e\x9a\x13\x8c\x3d\xa2\x8c\x2b\x46\x52\x46\x50\x69\x7f\x1f\x63\xe9\x37\x5b\x76\x04\x56\x5d\x79\xdf\x3b\x63\x14\xa4\x4a\x13\xd3\xe2\x25\x97\xac\x4f\x72\x4e\xa4\xad\x72\x4d\x55\x7f\xb5\xbb\x7b\xb3\xdb\x35\x79\x52\x9a\x9a\xfd\x7e\xff\xea\xcd\x53\x5e\x4d\x55\xef\x9a\xb7\xfb\x07\xd0\x1a\x0a\x6c\x7b\x4b\x65\xfc\x85\x72\x8c\x6e\xd0\xd1\xc5\x84\x91\xec\x30\x32\xc6\x44\x3d\xac\x79\x68\x71\x0c\x83\xa1\xac\x51\x76\x0a\x31\x08\xed\xac\x3e\xa0\x8f\x7a\xce\x70\x51\x19\xf8\x38\x67\x8a\xc7\xd2\xde\x6c\xff\x78\x50\x38\x69\xb0\x4a\x03\x31\xca\xa6\xe2\xa8\xdc\x4c\xf8\x60\x0d\x8f\xf2\xed\x03\x15\x1d\x43\x66\x15\x78\x13\x66\xdf\x9d\xf9\xb4\x56\xbe\xdc\x7d\xb3\xfe\xee\xfb\xf5\x4f\xfb\x3f\xaf\xbf\xbe\xfe\xeb\xec\xfb\xb2\x5a\x57\x86\x7a\x35\x3b\x6e\xee\x81\xf2\x64\x56\x89\x9b\xaa\xbe\xa9\x2f\x40\x0a\x45\xfd\xed\x25\x74\x5e\xfd\x6a\xb7\x5f\x3d\xb7\xe5\x5b\xdc\x7c\xc6\x28\x73\xb2\x61\xd8\xcc\xa9\xc8\x27\x7a\x9e\x44\x19\xba\x91\xef\xff\x0c\x96\xa1\xc7\x14\x3d\xc9\xe6\xea\x6a\x77\x57\x7d\xb1\x7f\xfd\x18\xc3\x7b\x0a\x85\xd6\xf6\xc5\x7a\xbd\x79\xdd\xae\xd7\x9f\xe2\x4f\x89\xa6\x14\xf5\x62\xfb\xe1\xe7\x77\xbf\xfe\xf6\xcb\x8f\x9b\xd7\xa5\xa9\xcf\xe7\x3f\xd7\x7a\x59\xe9\x6d\x5d\x7f\xc2\xce\x85\x5e\x22\xf9\x60\xa7\xe5\xee\xdd\xde\x6e\x1e\xd1\x8b\xc3\xf7\xf0\x5c\x66\x3a\x0f\xd2\xbb\x51\xa5\xc7\x4f\xef\xe9\x3c\x91\xfc\x92\xc6\xf6\xbc\xba\x8f\x87\xf3\x42\xf8\xab\xe7\x6c\xce\x7a\xcb\xeb\x65\xc3\x9b\x0b\xf5\xff\x9d\xa3\x0d\xda\xcd\xa6\x5c\xf2\xdf\xd5\x51\x9d\xc3\xfe\x17\x6e\x7c\x72\xf4\x0f\xd4\x3e\x37\xfd\x4f\x66\x3a\xe7\x7a\xb5\xfa\x3b\x00\x00\xff\xff\x01\xde\xaf\x06\x92\x06\x00\x00" func runtimeSyntaxHtmlYamlBytes() ([]byte, error) { @@ -2308,6 +3414,26 @@ func runtimeSyntaxHtmlYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxHtml4Hdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x28\xc9\xcd\x31\xe1\x8a\xd1\xcb\x28\xc9\x8d\xce\x89\xb5\x37\x51\xe1\xb2\x51\x74\xf1\x77\x0e\x89\x0c\x70\x55\xf0\x08\xf1\xf5\x51\x08\x08\x75\xf2\xf1\x74\x56\x50\xd2\xd5\xd7\x0f\x37\x76\xd6\xd7\x77\x09\x71\x81\x48\x98\xe8\x19\x18\xea\xeb\xbb\xfa\xd5\x64\x94\x94\x14\x58\xe9\xeb\x97\x97\x97\xeb\x95\x1b\xeb\xe5\x17\xa5\xeb\x87\x04\xe9\x83\xcd\xd5\x2f\x2e\x29\xca\x4c\x2e\xd1\x4b\x29\x49\x51\xb2\xe3\x02\x04\x00\x00\xff\xff\x48\xee\xe7\x28\x6b\x00\x00\x00" + +func runtimeSyntaxHtml4HdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxHtml4Hdr, + "runtime/syntax/html4.hdr", + ) +} + +func runtimeSyntaxHtml4Hdr() (*asset, error) { + bytes, err := runtimeSyntaxHtml4HdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/html4.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxHtml4Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x54\x71\x8b\xdc\xb6\x13\xfd\xfb\x77\x9f\xc2\xf1\xaf\x14\xe9\xd2\xb5\x13\x12\x02\x75\x2e\x67\xda\x24\xa5\x85\xb4\x0d\xe5\x4a\x29\xbb\x7b\x20\x4b\x63\xaf\x58\x59\x72\xa4\xf1\x6e\xb6\x7d\xfd\xee\x45\xde\x5c\xd3\x90\xab\x58\xc4\xa2\x19\xeb\x8d\xe6\xbd\x79\xbd\x75\xc4\xa7\x89\x9a\x62\xc7\xa3\x7b\x7a\x71\x61\x88\x49\x73\x53\x5c\x14\x45\x51\xe4\xa8\x57\x23\x35\x45\xb9\xd9\x54\x3b\x1e\xd7\x6e\xdb\x3e\xfd\xa2\x5c\x82\x3b\x52\x86\x62\x53\x94\x57\x0f\x5e\xfd\xfc\xf2\xe6\xf7\xb7\xaf\x8b\xef\x6f\x7e\x7c\x53\xbc\xfd\xf5\xdb\x37\x3f\xbc\x2c\x36\xe5\xaa\xae\x7f\x7b\xf2\xb2\xae\x5f\xdd\xbc\x3a\x47\x9e\x56\x8f\x1e\xd7\xf5\xeb\x9f\xb0\x63\x9e\x9a\xba\x3e\x1e\x8f\xd5\xf1\x49\x15\xe2\x50\xdf\xfc\x52\x2f\x05\xd4\x89\xa3\xd5\x5c\x19\x36\x9b\xf2\xba\xbc\xb8\x88\xb3\xa3\xd4\x2c\x80\xab\x82\x62\x0c\x0b\xe2\xfa\xf6\xc1\xb6\xba\x6c\xaf\xcb\x0f\x81\x74\x1a\xbb\xe0\x2a\x56\x43\x53\x94\xa2\xb5\xf2\x6a\x5d\x6f\x5b\xa1\x44\xd7\x45\xe8\x18\xfc\x69\x84\x31\x91\x52\xc2\x34\x39\x62\x44\x52\x88\x6c\xb5\x23\x24\x6b\x08\xb3\xb1\x41\xb6\xe8\x84\x4a\x24\xfa\xe0\x59\xb6\x30\xc2\x22\x48\xd8\x01\x2e\xe8\xfd\xbb\x39\x30\x21\xca\x16\x5a\x09\x7f\x50\x09\x13\xdb\xe0\x25\x34\x79\xa6\x08\x6d\x99\xa0\x83\x30\x04\x07\x37\xc4\x30\x4f\x12\x46\x28\x56\xc2\xd9\xb4\xdc\x07\x72\x20\x56\xd6\x25\xf4\x1e\x56\xb9\x30\xc0\x46\x38\xb0\x04\x8d\xa2\x23\x23\x5b\xf4\x96\x9c\x49\xc4\xe8\xed\x20\xb4\x5a\x40\x30\x47\x92\xc8\x65\xa1\x0f\x71\x84\xb0\xb2\xed\xa3\x1a\x09\xcb\x9e\xb3\x77\xeb\xc7\xab\x67\x5b\xec\x22\x2c\xec\x38\xc0\x7a\x31\xcd\x8c\x24\xb1\xef\x0c\xf6\x74\x1a\xc8\xc3\xa9\x8e\x1c\x1c\x0d\xe4\x0d\x9c\x15\x7e\x2f\x5b\x8c\x4a\x58\x8f\x09\x71\x2f\x31\x92\x9f\x85\x65\x1a\xf3\x39\xb1\x50\xa0\x28\xe1\xd5\x01\x3e\x88\x33\x16\x92\x8e\x76\x62\x89\x20\x1c\x26\x16\xcb\x4b\xb1\x74\x62\xe6\x69\x66\x89\x49\xa8\xa8\x46\x58\xcd\x73\x24\xe4\x5f\x18\x72\xeb\x65\x8b\x77\x88\x62\x02\x63\xee\x4e\x12\x49\x70\xb4\x7b\x92\x2d\x92\x1a\x27\x24\x12\x7a\x79\xac\x23\xcd\x12\x69\x54\xce\x21\x85\x39\x6a\x42\x9a\x94\x47\xe2\x18\xfc\x80\x34\x8b\x0e\x13\xc6\x51\xc5\x93\x04\xd3\x7b\x56\x99\x4d\xb6\x23\x81\xa3\xd2\x7b\xcc\xc2\xc9\x16\x07\x15\x71\xb0\x86\x02\x8e\x5d\x94\xa2\xa8\x2e\x71\x2d\xef\xd5\x4c\x45\xef\x99\xbc\x21\xf3\x89\x78\xba\x60\x4e\x30\xf6\x80\x2c\x4c\x64\xb5\x0b\xca\xf4\xf7\x21\x64\xbe\xd9\xb2\x23\xb0\xea\xf2\xfe\x21\x19\x3b\x41\x2a\x93\x18\x97\x2c\xb9\xa0\xfe\x1b\x73\x8a\x34\xc5\xa0\x3f\xc1\x39\xf7\x13\x89\x4f\x8e\x3e\xfb\x20\x4d\xa4\xad\x72\x4d\x51\x7e\xb9\xbe\x7d\xbe\x5e\x37\x69\x52\x9a\x9a\xed\x76\x7b\xf9\xfc\xd3\x87\x34\x45\xb9\x6e\x5e\x6c\xef\x0e\xad\x21\xcf\xb6\xb7\xcb\x84\x0a\xe5\x18\xdd\xa0\x83\x0b\x11\x3b\xb2\xc3\x8e\xb1\x8b\xd4\xc3\x9a\x3b\x4d\x04\x3f\x18\x4a\x1a\x79\xdc\x11\xbc\xd0\xce\xea\x3d\xfa\xa0\xe7\x04\x17\x94\xc1\x18\xe6\x44\xe1\x90\xf5\x90\xec\x1f\x77\x94\x44\x7d\x2e\x1c\xac\xe2\x40\x8c\xec\x25\x38\x28\x37\x13\x8e\xd6\xf0\x4e\xbe\xb8\x2b\x48\x07\x9f\x58\x79\xae\xf2\x84\xfb\x3c\xa7\x9b\x72\x7d\xbb\x29\xb7\x97\x9b\xf2\xb3\x1c\x3f\x8f\xdd\xb9\xf2\xd6\xca\xff\xaf\x1f\xad\xbe\xfe\x66\xf5\xdd\xf6\xcf\x67\x5f\x3d\xfb\xeb\x2e\xd7\x50\xaf\x66\xc7\x67\x6b\xc8\x2b\xb1\x8a\xdc\x14\xe5\x87\xde\xe5\x45\x3e\x53\x7a\xf5\xf1\xe0\xec\x26\xc5\x7a\x7b\x71\x9f\x71\x5c\xe1\xfa\x3f\xaa\xad\xe6\x98\x1b\x2c\x7a\x9e\x44\xd6\x71\x36\xb0\xe5\xcf\x60\x19\x7a\x17\xc3\x48\xb2\xa9\xeb\xf5\x6d\xf1\xbf\xed\xc3\x8f\x77\x8c\x23\x79\x5e\x1c\x72\xb5\xaa\x1e\xb6\xab\xd5\x3d\x42\xf8\xc7\x3d\xab\x87\x99\xf6\xbf\x03\x00\x00\xff\xff\x65\x55\x73\x5e\x91\x05\x00\x00" func runtimeSyntaxHtml4YamlBytes() ([]byte, error) { @@ -2328,6 +3454,26 @@ func runtimeSyntaxHtml4Yaml() (*asset, error) { return a, nil } +var _runtimeSyntaxHtml5Hdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x28\xc9\xcd\x31\xe5\x8a\xd1\xcb\x28\xc9\x8d\xce\x89\xb5\x37\x55\xe1\xb2\x51\x74\xf1\x77\x0e\x89\x0c\x70\x55\x00\xcb\xd9\x71\x01\x02\x00\x00\xff\xff\x12\x3e\x4e\x3a\x23\x00\x00\x00" + +func runtimeSyntaxHtml5HdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxHtml5Hdr, + "runtime/syntax/html5.hdr", + ) +} + +func runtimeSyntaxHtml5Hdr() (*asset, error) { + bytes, err := runtimeSyntaxHtml5HdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/html5.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxHtml5Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x54\x5d\x6f\xe4\x34\x14\x7d\x66\x7e\x45\x36\x20\x64\xb7\xcc\x14\x1e\xb6\x12\xd9\x6e\x47\x88\x8f\x57\x78\xe0\x05\xa5\xa9\xe4\xd8\x37\x89\x19\x7f\x64\xed\xeb\xd9\x1d\x38\xfc\x77\x94\x74\x86\x55\xd5\x62\x29\x56\xec\x7b\xe4\xfb\x75\xce\x1d\xac\x23\x3e\xcd\xd4\x54\x13\x7b\xf7\x76\xb3\x31\xc4\xa4\xb9\xa9\x36\x55\x55\x55\x8b\x35\x28\x4f\x4d\x55\x3f\x3c\xec\x26\xf6\xad\xeb\xf6\x6f\xbf\xaa\x57\xe3\x44\xca\x50\x6a\xaa\xfa\xee\xcd\x4f\xbf\xfe\xf8\xfb\x1f\xbf\xfd\xfc\xf4\xc6\x7d\xbd\xd9\xa4\xe2\x28\x37\x2b\x6c\x5b\x51\x4a\x71\xc5\xb5\x8f\x6f\xba\xdd\xd5\xfe\xbe\x3e\x1b\xf2\xc9\xf7\xd1\xed\x58\x8d\x4d\x55\x8b\xbd\x95\x77\xed\x4d\xb7\x17\x0a\x4a\xf4\x7d\x82\x31\x89\x72\x46\x22\x85\xc4\x56\x3b\x42\xb6\x86\x50\x8c\x8d\x12\x3d\x7a\xa1\x32\xc1\x08\x8b\x28\xe1\xa2\x3e\x7c\x28\x91\x09\x09\x85\x39\x06\x09\xad\x44\x38\xaa\x8c\x99\xed\x7a\xa4\xc0\x94\xa0\x2d\x13\x74\x14\x86\xe0\xe0\xc6\x14\xcb\x2c\x61\x84\x62\x05\xc5\xca\xd9\xcc\x30\x20\x07\x62\x65\x5d\xc6\x10\x60\x95\x8b\x23\x1c\x58\x82\x3c\xc8\xf7\x64\x30\x58\x72\x26\x13\x63\xb0\xa3\xd0\x6a\x75\x81\x92\x48\x62\x88\xc9\xc3\x0e\x49\x79\xc2\xd4\x7e\xb7\xbd\xed\x30\x25\x58\x58\x3f\xc2\x06\x31\x17\x46\x96\x38\xf4\x06\x07\x3a\x8d\x14\xe0\x54\x4f\x0e\x8e\x46\x0a\x06\xce\xc2\xd9\x70\x80\x57\xc2\x06\xcc\x48\x07\x09\x4f\xa1\xac\x9b\x65\xf2\xf0\xc4\x42\x81\x92\x44\x50\x47\x84\x98\x75\xb2\x33\x23\x8a\xfe\x4f\xd2\x0c\x87\x99\xc5\x9a\x15\xd6\xac\x0b\xcf\x85\x25\x66\xcc\x2a\x29\x8f\xd9\x6a\x2e\x89\x30\xaf\x5f\x1c\xd7\x02\x7f\x40\x12\x33\x18\xa5\x3f\x49\x64\x64\xe5\x67\x64\x12\x7a\x4d\xca\x91\x66\x89\xec\x95\x73\xc8\xb1\x24\x4d\xc8\xb3\x0a\xc8\x9c\x62\x18\x91\x8b\xe8\x31\xc3\x7b\x95\x4e\x12\x4c\x9f\x58\x2d\xfd\x62\xeb\x09\x9c\x94\x3e\xa0\xa0\x38\x1c\x55\xc2\xd1\x1a\x8a\xf8\xd8\x27\x29\xaa\xdd\x95\x7c\x95\x07\x3b\xfa\xc4\x14\x0c\x99\x67\x84\xe8\xa3\x39\xc1\xd8\x23\x16\x7e\x61\xe1\x9d\xa0\x24\xf7\x18\x62\x5c\x5a\xca\x96\x1d\x81\x55\xbf\xec\x67\x30\x26\x41\xca\xc8\x3d\xd2\x8a\x92\x2f\x7c\xce\x89\xe6\x14\xf5\x33\x3f\xe7\x5a\x66\x3e\x39\x7a\x19\xe4\x4c\xda\x2a\xd7\x54\xf5\xd7\xed\xe3\xbb\xb6\x6d\xf2\xac\x34\x35\x5d\xd7\x5d\xbd\x7b\x9e\x48\x53\xd5\x6d\xf3\xbe\xbb\x5c\x5a\x43\x81\xed\x60\x57\xad\x08\xe5\x18\xfd\xa8\xa3\x8b\x09\x13\xd9\x71\x62\x4c\x89\x06\x58\x73\x61\x42\x0c\xa3\xa1\xac\xb1\x08\x0f\x31\x08\xed\xac\x3e\x60\x88\xba\x64\xb8\xa8\x0c\x7c\x2c\x99\xe2\x71\xe1\x40\xb6\x7f\x5d\xfa\x91\xf4\x53\xe0\x60\x95\x46\x62\x2c\xaa\xc6\x51\xb9\x42\xf8\x68\x0d\x4f\xf2\xfd\x25\x20\x1d\x43\x66\x15\x78\x97\x39\xd9\xb0\x68\xef\xa1\x6e\x1f\x1f\xea\xee\xea\xa1\x7e\x81\x09\xc5\xf7\x4f\x91\xef\xad\xfc\xb2\xfd\x76\xfb\xfd\x0f\xdb\x5f\xba\xbf\x6f\xbf\xb9\xfd\xe7\x82\x35\x34\xa8\xe2\xf8\x49\xee\xcb\xca\xac\x12\x37\x55\x7d\xae\xdd\xb2\x28\x2c\x2d\xbd\xfb\x7c\xf1\x34\x21\xaa\xb6\xdb\xbc\x36\x0c\xee\x70\xff\x3f\xd1\xee\x4a\x5a\x0a\x2c\x06\x9e\x45\x96\x7b\x4c\x7c\xfe\x19\x2d\x43\x4f\x29\x7a\x92\xcd\xcd\x4d\xfb\x58\x7d\xd1\x5d\x7f\x7e\xc3\x7b\x0a\xbc\xce\xaa\xed\x76\x77\xbd\xdf\x6e\x5f\x21\xc2\x7f\x73\x6c\x77\xbd\xb4\xfd\xdf\x00\x00\x00\xff\xff\x14\x2c\xef\x1d\x1b\x05\x00\x00" func runtimeSyntaxHtml5YamlBytes() ([]byte, error) { @@ -2348,6 +3494,26 @@ func runtimeSyntaxHtml5Yaml() (*asset, error) { return a, nil } +var _runtimeSyntaxIniHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x04\xc0\xc1\x0e\xc2\x30\x08\x00\xd0\x7b\xbf\xa3\x87\x2d\x26\xf8\x43\xbd\x2c\x94\x4e\xb4\x2b\x04\x50\x2f\x7c\xfc\x1e\x2f\x2e\x0d\x36\x5e\x9c\x9d\xfc\x13\xa2\x39\xc7\x4c\xf9\x91\x19\x77\xca\x70\x5c\x19\x46\xbe\xd7\xdc\x2e\xbe\xe8\x50\xf5\x06\x93\x3d\x52\x79\x0d\x31\x4c\xa7\xf8\x6a\x03\x1c\x67\xaa\xc9\x9b\x30\x1a\x9c\xd2\x25\xf6\x9a\x7f\x22\x7c\x1d\xf1\x84\x47\x03\x94\x35\x6a\x29\x77\x00\x00\x00\xff\xff\x17\x9d\xbf\xed\x73\x00\x00\x00" + +func runtimeSyntaxIniHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxIniHdr, + "runtime/syntax/ini.hdr", + ) +} + +func runtimeSyntaxIniHdr() (*asset, error) { + bytes, err := runtimeSyntaxIniHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/ini.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxIniYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x90\xc1\x6b\xdb\x30\x14\xc6\xef\xfe\x2b\x84\x66\x88\xed\x11\xed\xae\x10\x76\xd9\x06\x3b\x8c\x5c\x76\x30\xf8\x39\xa0\xc8\xcf\x99\x56\x59\x12\xd2\x4b\x4b\x41\x7f\x7c\x71\xd2\xb8\xa1\x2d\xf4\xd2\x77\xfa\xf4\xe9\x27\x7d\x1f\x6f\x34\x16\xe9\x31\xa0\x64\xc6\x99\xa2\x18\x90\x50\x93\x2c\x18\x63\x6c\xbe\x72\x6a\x42\xc9\x38\x80\xa8\x8c\x33\x79\xc0\x74\x47\x3e\x64\x3b\xda\xec\xef\x31\x46\x33\x60\xa6\xa4\x5d\xa6\x88\xa9\x2e\x73\x35\x99\x09\x55\x08\x09\x40\x58\x93\x28\x07\xe3\x46\x1f\x75\x4e\x48\xa7\x00\x20\xf4\x78\xcc\x21\xfa\xff\xa8\x09\x40\x1c\xfd\xe0\xa9\x2e\xf3\x03\xa2\xfe\xa7\xe8\x9b\xf8\x3a\x23\xde\x8d\x25\x2f\x8a\x78\xb2\x98\x2e\x55\xd6\x4c\x7b\x97\x48\x39\x12\x07\xef\xad\xa0\x78\xba\xd4\x3a\xcc\x0a\xe0\xc0\xdf\xc5\x46\x65\xd3\x33\x77\x96\x37\xa0\x19\xd0\x91\x19\x0d\x46\xc9\xf8\xbe\xeb\x64\x0a\x4a\xa3\xec\xfb\xa6\xdb\x6f\xfb\x66\x7b\xe5\x52\x40\x6d\x94\x7d\x0d\x01\x74\xa2\x01\xe8\xcb\x85\x23\x45\x38\xa1\x23\xc9\x78\xb7\xdd\xf4\x6f\x0a\x25\x8a\xc6\x1d\xe7\x32\xbc\x02\x00\x10\xb9\xdb\x03\xef\xeb\x06\x78\x5e\x2d\xce\xaa\xaf\x9b\x15\x2f\x96\xc7\xd3\xf9\xcb\xf3\x71\x9e\x44\x2a\xce\x09\x5f\xf8\x62\xa1\x1b\x24\xe3\xe5\x8b\x71\xb3\xb6\xeb\xac\x19\xf9\xc1\x4b\xc6\xab\xbf\xbb\x1f\xbb\xdc\xb6\x6d\xfe\xf5\xbb\xfd\xf3\xb3\x96\xdf\xf9\x47\x51\x9b\x4f\x8c\x7a\x0a\x00\x00\xff\xff\xff\x58\x08\xe3\x6d\x02\x00\x00" func runtimeSyntaxIniYamlBytes() ([]byte, error) { @@ -2368,6 +3534,26 @@ func runtimeSyntaxIniYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxInputrcHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\xcc\x2b\x28\x2d\x29\x4a\xe6\x82\xd2\x2a\x5c\x5c\x80\x00\x00\x00\xff\xff\x16\x24\xb8\x80\x12\x00\x00\x00" + +func runtimeSyntaxInputrcHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxInputrcHdr, + "runtime/syntax/inputrc.hdr", + ) +} + +func runtimeSyntaxInputrcHdr() (*asset, error) { + bytes, err := runtimeSyntaxInputrcHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/inputrc.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxInputrcYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\xcd\x4f\x6a\xf3\x30\x10\x05\xf0\x75\x74\x8a\x41\x5f\x20\x76\x4c\x74\x00\x6d\xb2\xf8\x8e\xe1\x71\x40\x51\xc6\x8d\x40\x19\x09\x69\x4c\x29\xd5\xe1\x4b\xfe\xb4\x0d\x34\xdb\x79\xbf\x37\x6f\x0e\x91\xe4\x23\x93\x85\xc0\x79\x91\xe2\x95\x3a\x91\x90\x17\x0b\x0a\x00\xe0\x9a\xb3\xbb\x90\x05\xfd\x00\x6b\xad\x54\x59\x22\x55\x7b\x03\x3b\xf0\x89\xab\x38\x16\x73\x4c\x29\x9a\xd9\xc5\x7a\xd5\x88\xc7\x2e\xcd\x73\xe3\xc4\xd4\x23\x1e\xf5\x4b\x2d\x65\x79\xe0\xc4\x4f\x28\x17\xca\x25\xf9\x7b\x52\x49\x1a\xe2\x3a\xb0\x8f\xcb\x89\x5e\xbd\xaa\x52\x02\xbf\x5d\xb5\xee\x10\x11\x4d\x1b\x0f\xa8\xa7\x7e\x8b\xba\x6d\x7e\x2e\x9b\xa9\xdf\x6e\xfe\x76\x33\xf9\xe0\xe2\xff\xb3\x2b\xb7\x39\x44\xb3\xff\x45\x97\x0b\xb1\x58\xd0\xdd\xa1\x8d\xa3\xad\xd9\x79\xb2\xd3\xd4\xff\xeb\xc6\xc3\xe7\x64\xb6\xfd\x7e\xfd\x6d\x03\x9f\x88\x65\xe7\xcf\xae\x98\xf7\x73\x10\xba\x63\xd0\x4f\xbd\xe1\x95\xb6\xa0\x57\x03\x0c\x0d\x86\xd5\xa0\xd5\x57\x00\x00\x00\xff\xff\x33\x3d\x95\x68\x90\x01\x00\x00" func runtimeSyntaxInputrcYamlBytes() ([]byte, error) { @@ -2388,6 +3574,26 @@ func runtimeSyntaxInputrcYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxJavaHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x4a\x2c\x4b\xe4\x8a\xd1\x03\x51\x2a\x5c\x5c\x80\x00\x00\x00\xff\xff\x78\xb5\xb9\x55\x0e\x00\x00\x00" + +func runtimeSyntaxJavaHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxJavaHdr, + "runtime/syntax/java.hdr", + ) +} + +func runtimeSyntaxJavaHdr() (*asset, error) { + bytes, err := runtimeSyntaxJavaHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/java.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxJavaYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x92\xc1\x6e\xdb\x30\x0c\x86\xef\x79\x0a\xc3\x28\xd0\xad\x45\x93\x5d\x97\xeb\x1e\xa3\xea\x81\x96\xa9\x58\x8b\x4c\x09\x14\xe5\xcc\x03\x1f\x7e\x90\xbd\xac\x81\x5b\x60\x45\x75\x91\x41\x91\xff\xff\x91\xa6\xf3\x01\x65\x4e\x78\x6c\x7e\xc2\x04\xbb\x5d\x8f\x82\x56\x8e\xbb\xa6\x69\x9a\xfa\x46\x30\xe2\xb1\x69\x8d\xd9\xd7\xf7\xbb\x76\xb7\xe3\x12\x30\xaf\x09\x4f\xcd\x5a\xda\x1a\xd3\x7d\xe9\x62\x0c\x08\xa4\xdd\x2c\xa8\x76\x00\xd6\x3e\x96\x2e\xa0\xba\x10\x41\xd4\x93\x68\x88\x74\x52\xc2\x8b\xe6\x21\xb2\xa8\x0c\x3e\xab\x30\x50\xf6\x48\xa2\x53\xf4\xfd\x57\x63\xba\xf6\xaf\x76\x16\x10\x1c\x91\xe4\x6a\xc0\x08\x67\xb5\x90\x51\x2d\x88\x1d\xd4\x46\x12\x4f\x05\xb5\x47\x07\x25\x88\xf6\x51\x31\x64\x54\xe7\x09\x42\x98\xd5\x45\x56\xef\x94\x51\x0a\x93\xe6\x8b\xaf\x55\x32\x70\xbc\xa8\xf0\xac\x97\xc1\x07\xbc\x75\xbc\xe9\x06\xba\x2c\x0c\x56\xd4\x06\xc8\x59\xf1\x97\x20\xf5\x79\x55\x56\x3f\xa6\xb0\x90\xe5\xfa\x59\x5b\xf1\x94\x05\xc8\x62\x74\xb5\x51\x64\x07\x16\x95\x40\xfc\x84\x9a\xc0\x9e\xe1\x84\x9a\xd8\x4f\x20\xf5\x8e\x75\xc6\xd8\x6b\x2a\x5d\xf0\x56\x6b\xa3\xcb\xc5\xde\x8a\x4b\x9a\x4b\x42\xd6\x3c\x93\x1d\x38\x92\xff\x8d\xfd\x0a\x9d\x75\x8a\x01\x64\x03\x6d\xe3\xe2\x7d\x9d\x92\x70\x41\x75\x50\xc7\x40\x25\x84\xf7\x32\xf7\x54\xc6\x0e\x79\x2d\x78\xfe\xf6\xf4\xfd\xe5\x71\xc9\xda\xa6\x55\x20\x3a\xad\xbf\xba\x9e\x2c\xc0\x8b\x4d\xdb\xfe\x8b\x21\xf5\x9b\x48\x3e\xfb\xb4\x48\x1b\xb3\x7f\x8d\xde\x6c\xcd\xf5\xdc\x3a\x25\xb4\x1e\xc2\x8f\x01\xf8\xb5\xf4\xa3\x38\xf7\x5b\x9a\xfb\x4f\xc1\x24\xc6\xc4\xd1\x1e\x9b\x76\xbf\x7f\x6c\x3f\x47\x3a\x2e\xeb\xfa\x86\xf0\x70\xd8\x22\xde\x6d\x61\x9a\xe7\x97\xff\xcb\x18\xf3\xf0\x66\xf2\xe6\xe1\xf0\xae\xd6\x9f\x00\x00\x00\xff\xff\x38\x5c\x13\xf4\xd9\x03\x00\x00" func runtimeSyntaxJavaYamlBytes() ([]byte, error) { @@ -2408,6 +3614,26 @@ func runtimeSyntaxJavaYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxJavascriptHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x4a\x2c\x4b\x2c\x4e\x2e\xca\x2c\x28\xe1\xd2\x88\xd1\xcb\x2a\x56\xa9\x89\xd1\x4b\x2d\x8e\x36\x35\x33\xb7\x88\xb5\x07\x71\x72\xb3\x8a\x55\x34\xb9\xe2\x94\x15\xf5\xb4\xf4\x35\x52\xf3\xca\x14\xb4\x35\xed\xf3\xf2\x53\x52\x35\x14\x6a\x54\x34\xb9\x00\x01\x00\x00\xff\xff\x6d\x28\xf1\xe4\x3f\x00\x00\x00" + +func runtimeSyntaxJavascriptHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxJavascriptHdr, + "runtime/syntax/javascript.hdr", + ) +} + +func runtimeSyntaxJavascriptHdr() (*asset, error) { + bytes, err := runtimeSyntaxJavascriptHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/javascript.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxJavascriptYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x55\x6d\x6f\xe4\x34\x10\xfe\xde\x5f\xe1\xdb\x2b\x74\x5f\x94\xdd\xf2\x01\x8e\xae\x80\x55\xb9\x6b\xa5\x4a\x5c\x8b\xae\x77\x3a\x89\x38\xbd\x73\x9c\x49\xd6\xad\x63\x47\xf6\x64\xb7\x0b\x03\xbf\x1d\x39\x49\xbb\x2f\x2d\xa5\x48\x20\xf2\xc1\x1e\x8f\x9e\x79\x66\x9c\x79\x71\xae\x34\xe0\xaa\x82\x29\xbb\x16\x0b\xe1\xa5\x53\x15\xee\xed\x65\x80\x20\x71\xba\xc7\x18\x63\x01\x61\x44\x09\x53\xd6\xeb\x73\x3e\xbe\xf6\xfb\xc4\xf9\x18\x7c\xfc\xf5\x37\xaf\xbe\x4d\x66\xcd\xa9\xbc\xf6\xfb\x83\x5e\x03\x9f\x83\xc8\xc0\x4d\x59\xef\xea\xe5\x8b\xf1\x70\xd2\x07\xb3\x60\xa3\xc1\xcc\xd8\x0c\xfa\x8c\x02\x6a\xcf\xd5\x1a\x7c\x4b\x1e\x31\x69\x8d\x47\x61\x70\x6c\xea\x32\x6d\x0c\x39\x4f\xe3\x68\x94\xcc\xfa\xf1\x57\xd1\x51\x12\x1f\x46\x47\xc9\x90\x0e\xe3\xc3\xe8\x55\xd8\x6f\x83\x42\x44\xf9\x71\x74\x9a\x8c\x06\xfd\xb8\xfe\x90\xc4\xfa\xa7\x64\x46\x61\x0d\xa7\xd9\x60\xc6\x79\xda\x7b\x06\x7d\x60\x1e\x71\x3e\xee\x5c\xb4\xdb\xdd\x39\x70\x9f\xc0\xcf\x55\x12\x8f\xa2\x64\xd6\xa9\x66\x71\x7e\x1a\x9c\x3d\x9b\xfd\x21\xc5\x16\xc3\xcb\x88\xa9\x0c\x0c\xaa\x5c\x35\xd6\xf1\x71\xf4\x8b\x88\x7e\xfd\x94\x74\xc2\x61\x74\xf4\x29\x19\xc6\xf1\xd4\x57\x42\xc2\x34\x49\x86\x71\x3f\xe9\x4c\xd9\x15\xc3\xb9\xf2\x4c\x79\x66\x2c\x32\x69\x9d\x03\x89\xac\xf6\xa2\x00\x66\x73\x86\x73\xd8\x20\x67\xd2\x6a\xeb\xba\xb0\xfd\xaa\x4c\xad\x1e\xa7\x4e\xc8\x1b\x40\xdf\x66\xf6\x37\xe2\xfc\xf7\x41\xef\x29\x48\x9f\x38\x1f\x3c\x0d\x89\x89\xf3\xe4\x69\xc8\x7f\xe8\xc8\x56\xe0\x04\xda\xe6\x57\x46\xa3\xc9\xf0\xfb\xef\x7e\x78\xf1\xc7\x17\xb3\xe9\x97\x94\xdc\x23\x51\x20\x94\x60\xb0\x4d\x56\x5f\xf8\x95\x91\x24\x96\x42\x21\xa5\x0e\xc4\x0d\x49\xe1\x81\xa4\x40\x39\xa7\x26\xbf\x61\x45\x65\x6a\xa0\x0c\xd2\xba\x28\xc0\x51\x06\xb9\xa8\x35\x52\x06\x1a\x10\x28\xb3\x04\xda\x03\xc1\x6d\x65\x1d\x52\xae\x8c\xd0\x7a\x35\xd8\x28\xc3\x5d\xaf\xb9\x75\x94\xd7\x46\xa2\xb2\x86\xa4\x16\xde\x13\xdc\x22\x98\xcc\x53\x01\x48\x2a\x27\x55\xb6\x5c\xce\x96\xa4\x0c\xd9\x9c\x54\x53\x6b\x12\x6c\x4e\x1a\x90\x0c\x2c\xc9\x01\xd6\xce\x90\x07\x7c\xca\x99\xaf\x2b\x70\xe4\x97\x2a\x5c\x29\xd4\x0c\xe1\xdc\xd9\x25\xa1\x5b\x51\xe8\x7d\x9b\xd3\x42\x38\x5a\x58\x95\xd1\x72\xae\x34\xd0\x52\xe1\x9c\x56\x0a\x74\xb6\xe6\x7d\xc9\x1c\x78\x70\x0b\xc8\x58\x5a\x23\xab\x8d\xf0\x5e\x15\x06\xb2\xce\x2b\x38\x67\xbb\x0e\xe8\x83\xa9\xcb\x70\x03\xdd\x84\xe1\x49\x19\x04\x97\x0b\x09\x54\x09\x79\x23\x0a\xa0\xca\xa9\x85\xc0\xb0\xdb\x30\x6a\x20\xa3\xaa\x4e\xb5\x92\xf4\xfe\xe2\xcd\xc5\x60\xb7\xbf\x3a\xda\x42\xdb\x54\xe8\xf7\xe1\x06\x67\x26\x57\x46\xe1\x8a\x4c\xad\x35\xd5\x26\x83\x5c\x19\xc8\xe8\x5c\x9c\x0f\x1e\x69\xff\x8e\xe0\x1f\x81\xd1\xd5\x40\xb9\xd0\x1e\x36\x41\xed\xb0\x6c\x00\xc7\xce\x89\x15\xfd\x68\xad\x06\x61\xe8\x4d\xb8\xce\x89\xa9\xcb\xb6\x04\xe9\x24\xfc\x0f\x3a\xbd\x4b\xf2\x5b\x81\x73\x7a\x2b\x2a\xba\x04\xa4\x8f\x20\x6e\x82\x1c\xf6\xcb\xed\xe4\x6d\xf0\x9f\x37\x43\x85\x2e\xd2\x6b\x90\x48\xef\xa0\x38\xb9\xad\xe8\x12\x9d\x32\xc5\x66\x5a\xb6\x02\x9f\xc4\x57\xc3\xa4\x1f\x5f\x4d\x12\xea\x73\xce\xf9\x64\x30\x18\xc6\x57\x41\x4a\x26\x71\xa1\xca\x64\xf8\xe8\x6d\x39\x6f\xe6\x6b\xb3\xcc\xda\x95\x82\x76\x6b\xda\x36\x9a\x38\xcd\x8d\xc3\x03\xde\xe3\x7c\xd6\xd0\xae\xf9\xca\xae\xe6\xfe\x7a\xf2\xb7\xc8\xad\x91\xd7\xf4\xa0\x06\x17\x9a\x49\xda\x0c\x3e\xbc\x3b\x5b\x4b\xaf\x6d\x59\x59\x03\x06\x29\xb3\xb2\x0e\xf4\x04\xe6\x0e\x75\x2f\xad\x51\xe0\xa5\xa8\x80\x60\x21\x34\x29\x7f\x1a\x2a\x04\x48\xf9\x73\x71\x4e\x95\x70\x1e\x4e\xb5\x15\xd8\x8a\x67\x06\xa9\x36\x9d\x41\x6d\x1a\x93\xa5\x32\x99\x5d\x6e\x66\xe3\x41\xa8\x67\x06\x35\x7d\x84\xf4\xd8\x7b\x28\xd3\xed\x26\x7f\x00\x3e\x76\x45\x13\xb4\x6f\x51\x7b\xbb\xaf\x86\x6f\x72\xd9\xbe\x84\xe1\xf3\x28\x5c\x93\x8f\x5e\xef\x5e\x07\x26\xdb\xd1\xf8\x1b\x55\x75\x49\x1b\xaf\xb5\x1b\x8f\xea\xdd\xb7\xe9\xa9\x02\xa9\x84\x7e\x3d\x17\x6e\x6d\xfa\xdc\x70\x0e\x76\xa3\x39\xf8\x1f\x83\xf9\xbc\x1b\xcc\xe7\x7f\xc7\x6d\x5b\xbc\x0f\xdc\x4d\x26\xbb\xfe\xf6\x77\xfd\xb1\x38\xf9\x7b\x1a\xce\x87\x0f\x72\xca\x87\x93\x47\xb9\xfe\x0c\x00\x00\xff\xff\x7e\x39\x45\xc9\x94\x09\x00\x00" func runtimeSyntaxJavascriptYamlBytes() ([]byte, error) { @@ -2428,6 +3654,26 @@ func runtimeSyntaxJavascriptYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxJinja2Hdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\xca\xcc\xcb\x4a\x34\xe2\x8a\xd1\xcb\x28\xc9\xcd\x51\xe1\xe2\x02\x04\x00\x00\xff\xff\x6c\x91\x60\xd7\x10\x00\x00\x00" + +func runtimeSyntaxJinja2HdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxJinja2Hdr, + "runtime/syntax/jinja2.hdr", + ) +} + +func runtimeSyntaxJinja2Hdr() (*asset, error) { + bytes, err := runtimeSyntaxJinja2HdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/jinja2.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxJinja2Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x53\xc1\x8e\x22\x39\x0c\xbd\xf3\x15\x25\x66\x47\xea\x3e\x30\x87\x3d\x72\xe9\x0f\xd9\xde\x43\x2a\x79\x55\x98\x4d\x39\xc1\x71\xa0\x19\xcc\xbf\xaf\x12\x8a\xd1\x4c\xaf\xb4\x9a\x08\x61\x57\xfc\x12\xbf\x67\xc7\x13\x45\xe8\x35\x63\x3f\x1c\x89\x8f\xee\xcf\xcd\x26\x40\xe1\x75\xbf\x19\x86\x61\x68\x51\x76\x0b\xf6\xc3\xf6\xfd\xfd\xdb\x41\x97\xf8\xc7\x76\xb3\x91\x1a\x51\x1a\x60\x37\x10\xfb\x58\x43\x8b\xb7\xe0\xb6\xef\x95\x0c\x4f\x2e\xee\x87\xed\xcb\xed\x66\xf7\xbb\xdd\xbe\xee\xde\x6c\xf7\xf6\xf5\xfe\xfa\x00\x04\x4c\xae\xc6\x35\x45\x5b\x45\x9d\x68\xc7\x37\xe4\xed\xd6\x71\x8f\x05\x0e\x2d\xd0\x4e\xdb\xfd\xfe\x53\x20\xd2\x42\xba\x9b\x25\xd5\xbc\x7f\xa6\xfc\x11\xfc\xc1\xf0\xb9\x7e\x66\x9a\xaf\x7a\x48\xbc\xfd\x25\x5a\xd4\x29\x16\xb0\x76\xa5\xe3\x0b\xcd\x9c\x04\xc3\x42\xa5\x10\xcf\x76\x21\x3d\xbc\xa4\xaa\xaf\x6f\x83\x4f\xac\xf8\x50\x1b\x63\xf2\xff\x98\x77\x31\x1a\x38\x3c\xbe\xc0\xe1\xb9\x31\x51\x54\x48\xf7\x52\x37\x8b\xf3\x92\x9a\x23\xee\xd2\x4c\x81\x1a\x3e\xb4\x79\xb6\x82\x1b\x72\xa5\x69\x0f\x78\xc3\x0a\x7c\x95\x42\x67\x58\xf1\x29\x23\x58\x81\xbe\xbe\xbf\x8f\xbf\x0a\xa0\x00\x56\x9a\x08\xf2\x6d\xac\x14\x95\x78\xaa\xec\x57\x35\x4e\x55\x6c\x74\xea\x0f\xe6\x5d\x26\x75\x91\xbe\xc3\x3c\xb8\x65\xf5\xa9\xb2\x5a\xb0\xb5\x2b\x16\xc8\x6b\x49\xa2\x06\x43\xf1\x2e\xa3\xd1\x43\xa1\xef\x98\x92\x2c\x4e\x6d\x22\x29\xda\xc8\x7a\xac\x80\xde\x85\xf1\x6a\xc4\x8d\x85\x1d\x13\xb1\x45\x57\xd4\x22\x78\xd6\x83\xc5\x74\x81\x58\xce\x42\xac\x26\x8e\x43\x5a\x4c\x70\x84\xd7\xd5\x74\x82\x82\x1c\x9d\x87\x09\xce\x90\x02\x2b\x6e\x82\x15\xc4\x06\x7b\x98\x0e\x2b\x2a\x94\xd5\xcd\xc5\x94\x34\xc2\x34\x1d\x4b\x62\x53\xa1\xc5\x54\x2a\x7b\xa7\xb0\xca\x74\xaa\xb0\x9a\x33\xc4\xaa\x44\xb0\x4f\x01\xcd\x6b\xca\x2f\x49\xc2\x43\x76\xf3\x2e\xe2\xb2\x7d\x2c\xb1\xdd\xfe\x3b\x85\x55\x94\xe7\x33\x69\xdd\x76\x63\x44\x2b\x1e\x31\x82\x05\x3a\x53\xa1\x31\x62\xbc\x1a\x4e\x86\x53\x75\x51\xd3\x5a\xc8\x60\x38\x83\x6d\x86\xcd\x6a\xa4\x90\x7e\xb4\xfd\x7a\x7d\xa2\xda\xe2\x72\x6e\xef\x8d\x61\x9c\xda\x5f\x5d\x46\x88\xa5\x10\xac\xb8\x05\xae\x58\xc1\xa9\x82\x3d\x7a\x19\x78\xb6\xca\xcf\xd4\x5d\xeb\xff\xf2\x5f\x3b\x3c\xc7\x34\xf6\xf1\x6c\x0a\x22\xe5\x52\x17\xf3\x57\x1f\x21\xbd\x73\x10\x6b\x23\x5f\xb2\xf3\x78\x5e\xb7\x1b\x7c\x5a\xfa\x78\xfc\x67\x66\x6f\x5f\x3e\x0f\xeb\x97\xfb\xf6\xd3\x20\x0e\x7f\xfd\xbd\xf9\x37\x00\x00\xff\xff\x83\xe1\x3e\xeb\x69\x04\x00\x00" func runtimeSyntaxJinja2YamlBytes() ([]byte, error) { @@ -2448,6 +3694,26 @@ func runtimeSyntaxJinja2Yaml() (*asset, error) { return a, nil } +var _runtimeSyntaxJsonHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x2a\xce\xcf\xe3\x8a\xd1\x03\x51\x2a\x5c\x71\x31\xd5\x2a\x5c\x80\x00\x00\x00\xff\xff\x32\xc0\x2c\x31\x12\x00\x00\x00" + +func runtimeSyntaxJsonHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxJsonHdr, + "runtime/syntax/json.hdr", + ) +} + +func runtimeSyntaxJsonHdr() (*asset, error) { + bytes, err := runtimeSyntaxJsonHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/json.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxJsonYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x52\x3b\x6b\xf3\x30\x14\xdd\xfd\x2b\x84\x08\xf8\x85\xfc\xe5\x83\x42\x89\x16\x53\x4a\x33\x75\xe8\xd2\x49\x57\x01\xd9\xb9\x6e\xdc\x3a\x8a\x91\x64\x68\x89\xfb\xdf\x8b\x1c\xa7\xcd\xab\x90\xa5\x1a\x2c\xdf\x73\x74\x1e\x58\xae\xea\x06\xdd\x47\x8b\x9c\xbc\xda\x8d\x0e\x82\x25\x3a\x2c\x1d\x0f\x08\x21\xc4\x73\x5a\xad\x91\x13\x0a\x90\x79\x7e\x42\x07\x62\x85\x6a\x89\x86\x13\xba\x00\xd8\x4e\x68\x10\x98\xae\x41\xbb\x13\x31\x52\x6e\xb4\x75\x4a\xbb\x4c\x77\xeb\x62\x38\x06\x50\x08\x96\xca\x3c\x12\xff\xd9\x4c\x8a\x29\x9b\xc9\xa4\x9f\x8a\x29\xbb\xf5\xfb\xbb\x07\x14\xab\xee\xd8\x5c\xa6\x71\x24\xba\x67\x29\x9a\x47\x99\xf7\xfe\xe9\xa7\x3c\xce\x01\x0a\x7a\x85\xbd\x77\x4e\x01\xb2\x31\x62\xb7\xed\x67\xef\xfd\x80\x4f\xad\x14\x29\x93\xf9\x08\xe5\xa2\x9a\xfb\xb0\xab\xdd\xcf\x2d\x7e\x71\xd8\x49\x23\xdd\x35\x4d\x7c\xa1\xfe\x48\x3b\xd3\x61\x5f\xa9\xc6\xe2\xa5\x43\x99\x75\xa6\xd6\x2f\x9c\x0c\xb8\x5f\xd6\x29\x33\x68\x29\xfd\xc6\x50\x2f\x4f\x10\xfb\x56\xb7\x43\x00\x40\xf6\x83\x1e\xdc\xd2\x7e\x1d\x46\xb5\x58\xd6\xaa\xb9\x5f\x29\x73\x2c\x3d\xaf\x73\xd6\x26\x3c\x2d\x13\xfe\x41\x97\xb1\x8c\x75\xca\xe1\x1a\xc7\x2f\x08\x34\xf2\x34\xd0\x5e\x2c\x80\xca\x38\xf1\xef\x42\x70\xdb\xaa\x12\xb9\x94\x09\x07\x4a\x08\xd0\x30\x02\x08\x7b\xb1\x08\x65\x9c\x84\x47\xfc\xc5\x8b\x01\xe8\x0e\xfe\xca\xed\xcd\x67\xef\x31\x51\x54\xda\xb8\x10\xe8\x3f\x3f\x49\x1a\x7c\x05\x00\x00\xff\xff\x67\x47\xd8\x55\x3e\x03\x00\x00" func runtimeSyntaxJsonYamlBytes() ([]byte, error) { @@ -2468,6 +3734,26 @@ func runtimeSyntaxJsonYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxJuliaHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x2a\xcd\xc9\x4c\xe4\x8a\xd1\xcb\xca\x51\xe1\x8a\x53\x56\xd4\xd3\xd2\xd7\x48\xcd\x2b\x53\xd0\xd6\xb4\x07\xcb\x68\x28\xd4\xa8\x68\x72\x01\x02\x00\x00\xff\xff\x6f\x4a\x9c\x08\x25\x00\x00\x00" + +func runtimeSyntaxJuliaHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxJuliaHdr, + "runtime/syntax/julia.hdr", + ) +} + +func runtimeSyntaxJuliaHdr() (*asset, error) { + bytes, err := runtimeSyntaxJuliaHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/julia.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxJuliaYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\xdd\x72\x9b\x3c\x10\x86\xcf\x7d\x15\xfa\x48\xbe\x1a\xec\xc1\x71\x8e\x32\x61\xfa\x97\x93\x5e\x44\x81\x30\x42\x2c\xb6\x12\xb1\x72\xa5\xa5\xa9\x9b\x4d\xaf\xbd\x83\xb0\xe3\xda\x71\x67\x3a\x1c\x80\x5e\xe9\x7d\xf6\x47\x4b\xab\x0d\xd0\x76\x03\x99\x78\xe8\x8d\x96\x93\x49\x03\x04\x8a\xb2\x89\x10\x42\x0c\x9b\x28\x3b\xc8\x44\x54\x14\x8b\x07\x73\x19\x05\x79\x0d\xb2\x01\x97\x89\xe8\xfe\xe2\xbf\xc5\xec\x2a\x06\xfc\x2e\xe6\xc9\xa7\x00\x88\x05\x5f\x26\xd1\x64\xe2\x7a\x03\x3e\x9b\x84\xf3\x17\xa2\xee\xb5\xa1\x54\xa3\xb0\xf5\x03\x28\xf2\x41\x4e\x85\xb2\xe8\x49\x22\x2d\x6a\x6b\x4d\x08\x52\xc7\xe4\x7a\xe0\x56\x1a\x0f\x49\x51\xd4\x63\xc0\x23\x84\x24\x72\xba\xee\x09\x4e\x29\x99\x88\xaa\x2a\xbf\x4b\xbf\xca\xf4\xe7\x32\xbd\xad\xca\x79\x55\x1d\xfc\x0d\xb4\x1a\x35\x69\x8b\x7b\x9f\x6e\x00\x49\xb7\x3a\x94\xb2\xf3\x55\xe5\x9f\x80\x59\x9e\x67\x7e\x23\x15\x64\x65\x39\xcb\xe3\xf2\x40\x7b\x84\xed\x93\x75\xcd\x1e\xe5\x49\x12\x74\x10\x72\x18\x8a\xa8\x61\xa5\x91\x6b\x07\xf2\x91\x95\x24\xb5\x66\x65\x91\x34\x0e\xa5\xf5\xa8\x86\x2c\x18\x8c\x07\xdd\xb2\x27\xd7\x2b\x0a\x2b\x06\x6c\xb8\xd5\x28\x8d\xd9\x72\x6b\x1d\xaf\x8c\xad\xa5\x61\x63\x95\x34\x1c\xca\x64\xdd\xb2\x46\x65\xfa\x06\x58\x77\x1b\xeb\x88\x7b\xaf\x71\xc5\x0e\xbe\xf5\xda\x01\x77\x52\x39\xcb\x1b\xa7\x91\x0c\xb2\x03\xea\x1d\x32\xb9\x2d\x0f\x97\xcc\x4f\x6b\x6d\x80\x3b\xdb\xf4\xe6\xa4\xbd\x0d\x28\xeb\x24\x59\xf7\xb6\x3b\x8b\xc0\xcc\x44\xf4\xf9\xa8\xb9\x07\xaf\xdd\xc0\x91\xd5\x6f\xbb\xda\x9a\xc5\x5e\x1e\xba\x9b\xce\x67\x57\xfc\xe1\xff\xf7\x1f\xdf\xfd\xba\x2f\x79\x68\x91\xc4\x86\xd1\x12\x5b\xc7\xda\xb3\xc6\xe3\x74\x36\xd2\x01\xd2\x1a\x3c\x9c\x40\x6b\x27\xd5\x23\x90\xcf\x44\x14\xe7\x71\xf2\xfc\x32\xd0\x72\x2e\x8a\x32\x39\xb8\xb1\xef\x6a\x70\x6f\xa6\x6c\x94\x77\x57\x94\x2f\xd3\xdb\x72\x1e\x57\xe3\x3b\x99\xf1\xf2\xc7\xf0\x29\xd3\xf6\x2e\xfd\xb2\xdf\xd8\xaf\x86\xed\x3a\x5f\x5e\x8f\xfa\xf5\x28\xd8\x7c\x99\xde\xec\x4e\xde\x0c\xd2\x58\xc2\x69\x54\x4f\x4e\xe3\x6a\x88\x1a\xc5\x45\x51\x14\x0b\xce\xef\x8b\xa8\x4c\x66\x45\xc4\xd3\x57\x65\x5a\x26\xcf\xd7\x2f\xd3\xbf\xda\x77\xb5\x89\x61\xd4\x5c\x18\xb3\xf0\x44\xaf\x3a\x60\x73\x46\x1d\x7f\x43\x91\x97\xff\xcc\x9d\x4e\xa7\xa7\xd0\x23\xe9\x0c\xb1\x0b\x93\xff\x86\x74\x71\xca\xb9\x3c\x47\xf9\x1d\x00\x00\xff\xff\x4f\x10\x5c\xba\x81\x04\x00\x00" func runtimeSyntaxJuliaYamlBytes() ([]byte, error) { @@ -2488,6 +3774,26 @@ func runtimeSyntaxJuliaYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxKeymapHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x4e\xad\xcc\x4d\x2c\xe0\x8a\xd1\xd3\xc8\xae\xc9\x4e\xad\xd4\xb4\xcf\x4d\x2c\x50\xa9\x89\xc8\xcd\x4f\x01\x31\xb8\xb8\x00\x01\x00\x00\xff\xff\x2e\xbb\x4e\x47\x20\x00\x00\x00" + +func runtimeSyntaxKeymapHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxKeymapHdr, + "runtime/syntax/keymap.hdr", + ) +} + +func runtimeSyntaxKeymapHdr() (*asset, error) { + bytes, err := runtimeSyntaxKeymapHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/keymap.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxKeymapYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x90\xd1\x6a\x33\x21\x10\x85\xef\x7d\x0a\x7f\x09\x24\xe1\x27\x4b\x6f\xbb\x50\x7a\xd1\x97\x28\xc4\x14\x66\x75\xd2\x2c\xeb\xa8\xe8\xa4\xb0\xe0\xc3\x97\x5d\x69\xbb\xdd\x50\xe8\x4d\xe7\x66\x64\xf4\x9c\xf3\x39\xe7\xde\x21\x8f\x11\x5b\x39\xe0\x48\x10\x85\xb0\xc8\x68\xb8\x15\x52\x4a\x39\xdd\x7a\x20\x6c\xa5\xd2\xba\xd9\x0d\x65\xc0\x71\xff\x48\x10\x37\xe5\x99\x82\x9d\x0e\x4a\x88\x74\x75\x98\xab\xe0\x20\x33\x03\x23\xa1\xe7\x59\xd3\xed\xc0\xda\x62\x1c\x42\x2a\x26\x50\x0c\x19\x27\x0f\x13\xec\xdc\x09\x62\x9e\x7a\x1e\xa9\x24\xa4\xf0\x86\x25\x73\xea\xfd\xeb\x5e\xeb\x4e\xfd\xe0\x68\x82\xe7\x14\x5c\x01\xc7\x25\x5f\xfa\x33\x2f\x1f\x9b\xe0\x33\x83\xe7\xc6\x5f\xa9\xc3\x54\x25\xc7\xbb\xc3\xfd\xe9\xff\xd2\x32\xa2\xe9\xc1\xb5\x52\x3d\xdc\x08\x2b\x40\xfd\xce\x54\x99\x21\xcd\xd1\x4a\x7d\xce\xd0\xdb\xd5\x24\x0f\x7d\x9c\xc3\xb4\x6e\xbe\xa6\x8b\xcd\x7c\xd4\x32\xa9\x52\x3c\x5d\x20\x7d\x97\xfe\x82\x66\xbb\x86\xd9\xfe\x21\x0b\xcd\xdb\xbf\x61\x78\xf9\xb7\x86\xd8\xac\xe3\xe4\xf1\x24\xc4\x7b\x00\x00\x00\xff\xff\x2a\x3b\x25\xf2\x64\x02\x00\x00" func runtimeSyntaxKeymapYamlBytes() ([]byte, error) { @@ -2508,6 +3814,26 @@ func runtimeSyntaxKeymapYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxKickstartHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\xce\x4c\xce\x2e\x2e\x49\x2c\x2a\xe1\x8a\xd1\xcb\x2e\x56\xa9\x89\xd1\x83\x8b\xa8\x70\x71\x01\x02\x00\x00\xff\xff\xde\xfc\x28\xd1\x1e\x00\x00\x00" + +func runtimeSyntaxKickstartHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxKickstartHdr, + "runtime/syntax/kickstart.hdr", + ) +} + +func runtimeSyntaxKickstartHdr() (*asset, error) { + bytes, err := runtimeSyntaxKickstartHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/kickstart.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxKickstartYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x91\xe1\x6e\x9b\x30\x10\xc7\x3f\x97\xa7\xb0\x58\x26\x41\x90\xa3\x7d\x1d\xd2\xba\xf6\x35\x1a\x12\xe9\x30\x17\xb0\x30\x36\x3a\x1f\x49\xdb\xdd\xc3\x4f\x66\x45\x6b\xa5\x7c\xe1\xa4\xbb\xdf\x5f\xdc\xfd\x7c\xb1\x0e\xf9\x6d\xc6\x5a\x8d\xd6\x8c\x91\x81\x38\xcb\x3a\x64\x34\x5c\xab\x4c\x29\xa5\x12\xe1\x61\xc2\x5a\xe5\x4d\x73\x18\xe3\x4e\x52\xd9\xe0\x5d\x9e\x65\xb4\x38\x8c\xf5\x0a\x6b\x15\x67\x34\x16\x5c\xad\xf2\xef\x47\xd0\xef\xa7\x2a\xdf\x06\x0c\x8c\x13\x7a\xae\x55\x7e\x3e\x1e\xeb\x38\x83\xc1\xfa\x74\xda\x17\xd6\x47\x06\xe7\xc4\x74\x14\x26\x61\x7c\x65\xe9\x09\xe6\xc1\x1a\x70\x72\x0d\xae\xa7\xb0\xcc\xe2\x42\x7f\x0d\x4e\x08\xdb\x10\x58\xd8\x4e\xf8\x1e\x3c\x8a\x03\xdf\xcb\x88\x6f\x6d\x00\xea\x04\x16\x1e\x4c\xf0\x17\xdb\xcb\xc5\x52\xe4\x95\xa5\x10\x78\xbe\xc9\x12\x91\x52\x17\x6f\xe9\x67\x11\x9d\xf5\xcb\xab\x10\xce\x41\x66\x20\x5e\x3f\x96\x6d\xf0\x62\x1c\x02\xad\xbd\x94\x77\x01\x3a\xa4\x72\xbb\xc3\x84\xb4\xee\x7a\x86\xd6\x45\x32\x23\x93\x25\x0a\xe4\x6c\x64\x69\x21\xe2\x42\x4e\x16\x36\x65\xf1\x4b\x9a\xe6\xb1\xbc\x27\xa0\x69\x76\x05\xa1\x43\x88\x78\x45\x5a\x53\x40\x66\x28\x9b\xe6\x71\xc3\x5b\xb2\xfd\xc0\xad\x03\x33\x26\x63\x4f\xc7\x67\xfd\x92\x84\x7e\x54\x7d\xda\x7f\x25\x09\xbb\xc4\xe9\xa7\xa4\xfd\x59\xbf\xfc\xd0\x3f\xf7\xfa\xbf\xfe\x6d\x7c\x7f\x6a\xc2\xf4\xb1\x59\x71\x96\x4f\x8f\x53\x7e\x2b\x8e\xe7\x3f\xa7\xc3\xbe\xfc\xbd\xdb\x58\xeb\x3b\xf4\xac\xcd\x00\x74\xb8\x0d\x96\xf1\x1f\xac\xf2\x4f\xb9\xea\x1e\x5d\xab\xfc\xa1\x52\x95\xa8\xea\xa1\xca\xb3\xbf\x01\x00\x00\xff\xff\x96\xbc\x1a\x8d\x7a\x02\x00\x00" func runtimeSyntaxKickstartYamlBytes() ([]byte, error) { @@ -2528,6 +3854,26 @@ func runtimeSyntaxKickstartYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxKotlinHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\xce\x2f\xc9\xc9\xcc\xe3\x8a\xd1\xcb\x2e\x51\xe1\xe2\x02\x04\x00\x00\xff\xff\xe2\x6c\xde\x98\x0e\x00\x00\x00" + +func runtimeSyntaxKotlinHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxKotlinHdr, + "runtime/syntax/kotlin.hdr", + ) +} + +func runtimeSyntaxKotlinHdr() (*asset, error) { + bytes, err := runtimeSyntaxKotlinHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/kotlin.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxKotlinYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x54\xef\x6f\xdb\x36\x10\xfd\xee\xbf\x82\x75\xf7\xc3\x4e\x17\xa7\x5f\xa7\xfd\xe8\x96\xa4\x05\x8a\xb5\xcb\x87\x64\x40\x80\x30\x03\x4e\xd4\xc9\xe6\x4c\x1d\x85\xe3\xc9\x89\xb1\xdb\xff\x3e\x50\x92\xbd\xc4\x73\x37\x60\x98\x01\x0b\x22\xef\xf8\xee\xde\xbb\x47\xd5\x3e\xa0\x6c\x5b\x2c\xcc\x3a\x4a\xf0\x34\x99\x54\x28\xe8\xa4\x98\x18\x63\x4c\x8e\x12\x34\x58\x98\xa9\xb5\x8b\xb5\x7c\x36\x9d\x4c\xb8\x0b\x98\x86\xb0\xe9\x9f\x2f\xcd\x55\x8b\x0c\x12\x39\xf5\xeb\x53\x93\xb6\x4d\x19\xc3\x22\x8e\xdb\x85\x99\xdd\x2d\x8a\x6f\xbe\x7a\x75\xa2\xdf\xbd\x78\x63\xed\xe7\xf7\xfa\xad\x7e\xaf\x67\x7a\xaa\x5f\xcc\x07\xa0\x3d\xd4\xb5\x80\x60\x83\x24\xc9\xfc\x84\xdb\x87\xc8\xd5\x1e\x74\x17\x29\x8c\x2d\x67\x90\xb4\xdc\xaa\x0b\x90\x92\xba\x48\x49\xb8\x73\x12\x59\x5d\x6c\x5a\x20\x1f\x49\xeb\x8e\xd4\x37\x6d\x64\x51\x4f\xea\xa9\xf6\x8f\xea\x49\x90\x6b\x70\xa8\x9e\x82\x27\x54\x9f\x34\x76\xa2\xbb\x4e\xb5\x05\xb7\x86\x25\x2a\xa3\x74\x4c\x9a\xba\xd4\x22\x55\x9a\xba\x16\x59\x65\xe5\x93\x3e\xac\x90\x74\x03\x41\x37\xc0\x73\x5b\x1e\x36\xb7\x68\x39\x83\x89\xc7\xd4\xf7\xb9\x44\xd1\x84\x72\x2c\xd3\x45\x12\x8e\xa1\x4f\x2b\x19\x61\x9d\x89\x88\xa7\x0e\x15\x43\x42\xad\xa2\xfa\x5a\x85\xb7\xea\x40\xdc\x4a\x6b\x4f\x10\xc2\x56\xeb\xc8\xfa\xb0\xf2\x01\x8f\x82\x66\x45\x06\x85\xca\x24\x0c\x4e\x14\x88\xa2\x80\x64\x4d\x2a\x10\x50\xa4\xae\x19\xc0\x32\x6f\xd2\x84\x10\xb0\x3a\x06\xd6\x60\x53\x22\xf7\x68\x71\x83\xcc\xbe\x42\x0d\x20\xe8\xc9\x67\x51\xfd\x51\x5a\xe0\x1c\x8e\x2d\xf4\x72\xe7\x3a\x2d\xfb\x0d\x08\x6a\xcb\x31\x9b\x0b\x2b\x6d\xbb\x32\x78\x77\x54\x40\x60\x68\x50\xc6\xba\x8e\x63\x4a\xe3\xb0\x28\x8e\x2f\x8c\xbe\xf6\x58\xe5\x11\x00\x2f\x77\x20\xa3\x83\xde\x3e\xb6\x8c\x29\xf9\x48\x06\xa8\x32\xd9\xdc\x3b\x0b\x0d\x46\xb7\xe5\xac\xda\x12\x34\xde\x69\x2c\x7f\x43\x27\x2a\x2b\x8e\x0f\x9a\xa3\x10\x3c\xa4\xfe\x2d\xd6\x73\x5b\x9a\xc9\x08\xfa\x11\x05\x8e\xc8\x23\x50\x18\xfb\xc3\xcc\x96\xf9\xa2\x68\x85\x01\x97\x99\x66\xed\x31\x54\x9a\x47\x3f\xba\x61\xab\x8c\x0e\xfd\x06\x39\x9b\x21\xff\x7b\x96\x3a\x3c\x33\x81\xb1\xce\x45\xb6\x32\x90\x8c\xb5\xdc\xb8\xec\x9b\x16\xee\x50\x6b\xc8\xd6\xa0\x2e\x84\xf9\x41\xce\x82\xba\x61\x5a\xb3\xbb\xd7\xa7\x5f\xdf\xbf\x9a\x4f\x9e\x5d\xab\xc8\xb0\x44\x73\x73\xa0\xc6\x22\x0d\x81\xbe\xc0\xf9\x56\x50\x2f\x56\xc0\x7a\x19\xbb\x32\xa0\xbe\x0b\x11\x44\xdf\x93\xe8\x87\x48\x4b\xbd\x5e\xe5\xcb\x74\x1e\x63\x40\x20\xfd\x25\x9b\xe0\xe7\x28\x2b\x4f\x87\x23\xb8\x88\x21\xa0\xcb\x8e\x7b\x56\xcb\xfd\xb5\xdd\xd7\xfb\x91\x19\xb6\x7b\xf2\x7d\x97\xec\x69\x79\xc8\x2b\xf5\xbb\xc5\xee\x43\x91\x07\xc0\x59\x91\xe9\x7e\x07\xa9\x7a\xb6\x4e\x6b\xdf\x16\xc6\xda\xc5\x7e\xe7\xe9\x47\x6b\xfc\x3d\xad\xd0\xa2\xf3\x10\x32\xf5\xc2\xcc\xac\x7d\xad\xd6\x5a\xab\xd6\x8a\x5a\x4b\x6a\x2d\xab\xb5\x53\xb5\xf6\xcb\xf9\xa7\x20\x3a\xf2\x2e\x56\x59\x47\xdb\xd9\xdf\xef\xee\x8a\xc7\xca\x2f\xbd\x14\xf7\xf7\xaf\xfe\xd8\x0d\xf7\x7a\x85\x25\xd0\xd2\x7c\xf0\x84\x7b\x92\x4d\x6f\xa5\x34\x84\x0a\xf3\xeb\xec\xe5\x8b\xf9\xe2\xe4\xa9\x9a\x39\xdd\x5c\x0c\x89\x07\xc7\xf2\x6d\x28\xcc\xf4\xec\x6c\x71\x32\x7d\x7a\xe4\x3c\x44\xb7\xfe\xc4\x99\x32\xc7\xfe\xa6\xe6\xf4\xcc\xda\x93\x03\x45\xa7\xd6\x9e\x9c\x4d\xff\x59\x43\x89\x55\x2c\xcc\x74\x76\x73\x75\x79\xa5\xb7\xb7\xb7\xfa\xee\xfd\xed\xc7\xb7\xf3\xe2\xcd\xee\xdc\xd8\xd1\x65\x74\xff\xb5\xab\xff\xbd\xb1\xb1\xa5\x9b\x58\xc5\xc9\xbf\x25\xff\x19\x00\x00\xff\xff\xac\x74\xa1\x79\x20\x07\x00\x00" func runtimeSyntaxKotlinYamlBytes() ([]byte, error) { @@ -2548,6 +3894,26 @@ func runtimeSyntaxKotlinYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxLedgerHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x49\x4d\x49\x4f\x2d\xe2\xd2\x88\xab\x89\xd1\xab\xd1\xd7\xd4\x80\xf0\x6b\x72\x52\xd2\x8b\x6a\x92\x52\x13\xf3\x92\xf3\x4b\xf3\x4a\x6a\x92\xf2\x92\x4b\x34\x55\xb8\xb8\x00\x01\x00\x00\xff\xff\x53\x35\x53\x93\x2e\x00\x00\x00" + +func runtimeSyntaxLedgerHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxLedgerHdr, + "runtime/syntax/ledger.hdr", + ) +} + +func runtimeSyntaxLedgerHdr() (*asset, error) { + bytes, err := runtimeSyntaxLedgerHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/ledger.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxLedgerYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x90\xd1\x4a\xc3\x30\x14\x86\xef\xfb\x14\x67\xc5\x8b\xa4\x23\x9b\x88\x37\x46\x46\xf1\x35\x6c\x32\x49\xd3\xb3\x51\x68\xd3\x92\x9c\x09\xd3\xb8\x67\x97\xac\x8e\x75\x20\x78\xe1\x5d\x7e\xfe\x7c\xdf\xe1\x9c\x5d\xdb\x21\x1d\x47\x94\xd0\x61\xb3\x47\x9f\x65\x0d\x12\x5a\x92\x90\x01\x00\xa4\xda\x99\x1e\x25\xe4\x6c\x1b\x95\x5a\xc5\x35\x67\xd3\xcf\xd8\x35\x7b\x1f\x6b\x34\xce\x0e\x07\x47\xb1\x76\x96\xf8\x5d\x9e\x65\xfe\xd0\x61\x90\x67\x5c\x40\x18\xd1\xb6\xa6\x93\x90\x6f\x59\x75\x2f\x9e\xf4\xe7\xe3\x17\x5b\x47\xc1\xa7\xf0\x70\x1b\x62\xb5\x39\x69\x0e\xab\x22\xff\xc1\xed\xe0\x02\x19\x47\x89\xff\x1b\xbf\x50\x81\x0c\x61\x8f\x13\x76\x9a\xe9\xda\x06\x1d\xb5\xbb\x16\xfd\xea\xdd\xf8\xd4\x6e\x7e\x6d\xcf\xe3\x2a\x19\x46\x63\x51\x6a\xbd\x64\x8b\x79\xe2\xa5\x52\xac\xac\x5e\xc4\xab\x11\x1f\xa0\x97\x4c\x5e\xdf\xbc\x50\x8a\x97\xff\x32\xbe\x29\x25\x66\xd2\x29\xde\x7a\xc3\xb1\xaf\x87\x74\xd4\xaa\x58\xe8\xeb\xad\xfa\xcb\xce\x33\x77\xf1\x9c\x16\xfc\x0e\x00\x00\xff\xff\x6c\xff\x51\x0c\xe7\x01\x00\x00" func runtimeSyntaxLedgerYamlBytes() ([]byte, error) { @@ -2568,6 +3934,26 @@ func runtimeSyntaxLedgerYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxLfeHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x49\x4b\xe5\xca\x49\x4b\x55\xa9\x89\xd1\x03\x51\x5c\x5c\x80\x00\x00\x00\xff\xff\x33\x09\x01\x19\x11\x00\x00\x00" + +func runtimeSyntaxLfeHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxLfeHdr, + "runtime/syntax/lfe.hdr", + ) +} + +func runtimeSyntaxLfeHdr() (*asset, error) { + bytes, err := runtimeSyntaxLfeHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/lfe.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxLfeYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x90\xed\x6e\x82\x30\x14\x86\x7f\xcb\x55\x9c\x34\x26\x82\x4d\x99\x7f\xed\xd4\x65\xd9\x5d\x8c\x53\xb7\x02\x87\x49\x06\x85\x94\x92\xe9\xd2\x8b\x5f\x00\xdd\x97\xfe\x7a\xfb\xf1\x9c\x27\x6f\x4e\x51\x56\xe4\x4e\x2d\x49\xa8\x0a\x0a\x82\x9c\x1c\x65\x4e\x42\x00\x00\x30\xfc\x19\x5d\x93\x04\x56\x15\x34\xf7\x88\xf1\x90\x2c\x08\x6c\x5f\x51\x27\x47\x48\x40\x77\xaa\xd3\xa6\x8a\x53\xab\xb3\x77\x72\x9d\x04\x86\x18\x7a\xc4\x88\x9d\x81\xc9\xcf\x72\x2a\x7a\xe3\x73\x2a\x4a\x43\xa2\x3b\x19\xa7\x8f\xe7\xdb\x10\xb5\xce\x6c\x33\x1e\x9a\xbc\xaf\xc8\xd3\xb1\x6d\xac\xbb\x28\xb2\xc6\x74\x4e\x1b\x37\xca\x21\x79\x14\xcf\x5a\x7c\xaa\x73\xae\xc4\xfa\x45\x28\x8e\x08\xec\x6f\xa5\xa6\x25\xab\x5d\x63\xa7\x4a\x61\x82\x28\xf8\xf2\x6e\xb3\x53\x7e\xb3\xf5\xbb\x6d\xe4\x17\xff\xfd\xb1\xe9\xeb\x94\xa6\x81\x34\x59\x89\xf5\xa0\x4d\xaf\xa8\xce\xd9\xd2\xbc\x8d\x14\xb2\x10\x11\x31\xf6\xc9\x1e\x99\x8a\x96\xc3\xcb\x77\x8d\x96\xb2\x52\x57\x12\x58\xb2\xf0\xaf\xea\x46\x6d\x44\xa1\xf8\xb5\x7e\x9a\x7b\x3a\xe8\xa9\x09\x62\xfc\xf0\x03\xd5\x35\x8d\x8b\x08\xf7\x3e\x49\x64\xd7\xea\x8c\xa4\x52\xd1\x7d\xbc\xbc\x30\xa5\xc9\xc9\x38\x91\x1d\xb4\x8d\x3f\x0e\xa5\xa3\x09\x02\xf6\x8b\xe7\xf3\x1b\xb4\x04\x36\xe3\xc0\x3d\xf0\x19\x67\xc1\x57\x00\x00\x00\xff\xff\x83\x15\xa2\x2c\x1c\x02\x00\x00" func runtimeSyntaxLfeYamlBytes() ([]byte, error) { @@ -2588,6 +3974,26 @@ func runtimeSyntaxLfeYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxLilypondHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\xc9\xcc\xa9\x2c\xc8\xcf\x4b\xe1\x8a\xd1\xcb\xa9\x54\xa9\x89\xd1\xcb\x84\x50\x39\x39\x95\x2a\x5c\x5c\x80\x00\x00\x00\xff\xff\x45\xdd\x2b\xe6\x1e\x00\x00\x00" + +func runtimeSyntaxLilypondHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxLilypondHdr, + "runtime/syntax/lilypond.hdr", + ) +} + +func runtimeSyntaxLilypondHdr() (*asset, error) { + bytes, err := runtimeSyntaxLilypondHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/lilypond.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxLilypondYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x57\x71\x4f\x1c\xb9\x0e\xff\x9f\x4f\xb1\x0f\xb5\x7a\xf0\xde\x03\xa9\x7d\x55\x55\xa1\xd3\x21\x16\x5a\x7a\x6a\xa1\xa8\xa0\xfe\x71\xcc\x36\xf2\x64\xbc\x33\x11\x99\x64\xea\x64\x80\xa5\xe9\x77\x3f\x39\xd9\x65\x33\xb3\x7b\xba\x95\x0c\xf1\xcf\x9e\xc4\xb1\x1d\x3b\x99\x2b\x8d\x7e\xd1\xe1\xd1\x44\x2b\xbd\xe8\xac\xa9\x76\x76\x2a\xf4\x28\xfd\xd1\xce\x64\x32\x99\xb0\xdc\x40\x8b\x47\x93\xdd\xa2\x38\xd4\x8b\x17\xa1\x28\x0e\xd5\xf2\xbf\xd6\x8b\x17\xbb\x3b\x3b\xd4\x6b\x74\x49\xfd\x60\x22\xad\x71\x1e\x8c\x3f\x34\x7d\x5b\x22\xc5\xef\xaa\xff\xee\x2e\xa5\xaa\x42\xe3\xd5\x5c\x2d\x05\xe5\x9e\xf3\x30\x9f\x07\xd7\x81\x54\xa6\x0e\x4e\xd5\x06\x7c\x4f\x18\xc8\xf6\x5e\x19\x0c\xc6\x7a\x74\xa1\x01\x53\x69\xa4\x20\x2d\x11\x4a\x8f\x55\x28\x11\x5a\x17\x80\x3a\xac\x6b\x65\x5d\xf8\x66\xb5\x07\x81\xa6\x26\xb8\x47\x0a\xdf\xac\x92\x18\xbe\x21\x79\x25\x41\x0b\xd0\xaa\x36\x99\x14\x18\x36\x20\xb4\xaa\xe3\x72\x9b\xa2\xe5\x04\x4b\xee\x3a\x5a\x79\xf3\x80\x70\xb7\x56\xbd\xe9\x3b\x8d\x3e\xe3\x49\x69\x2d\x5c\x07\xc6\x20\x65\xb0\x6a\x95\xa9\x85\x27\x30\x4e\x83\xb7\x11\x41\xf1\xbc\x55\xd1\x21\xcd\x2d\xb5\xb8\x21\xc8\xa6\x18\x6a\xe5\x22\x7c\xf4\x5b\xd6\x64\x34\xe3\xda\xce\xe6\x13\x40\x29\xbc\x42\x31\xb7\x5a\xdb\x87\x4c\x0f\x4a\x11\xe3\x21\xdc\xa2\x2d\xad\x1e\x4a\x38\x12\xa2\x41\xa8\xdc\x00\x4f\x8e\xba\x81\x32\xf9\xe8\x7a\xe1\x3c\xb6\x3c\x0d\x79\x51\xa1\x56\xad\xf2\xb9\x65\xd7\x2c\xcd\x38\x30\x4f\x20\x52\xaa\xfc\x1d\x3c\x0a\xde\xf5\x56\x0b\x13\xba\xde\x63\xe2\xa5\xd5\x1a\xa5\x67\xff\x0f\x35\xcf\xc9\xf6\x5d\x58\x9a\xbc\xf4\x5e\x49\x1c\xde\xb9\xa5\x52\x55\x99\x7a\x07\x46\x94\x40\xc2\xf9\xbe\xdc\x02\x0f\x91\x55\x42\x0e\x60\x39\x5c\x5f\xf7\x94\x1b\xca\x6c\x26\x04\xd7\x08\xc2\x0e\x21\x0b\xe0\x35\x76\x40\x10\xb7\xa1\x95\x41\x51\xb3\xf5\x99\x58\x92\xea\xbc\xa0\x3c\x96\x4b\x6c\xcc\x4b\xab\xfb\x36\x77\xa6\xb4\x84\xe1\x6b\xb3\xf0\x4d\xab\xe4\x86\x78\x25\x48\x8e\xfa\x8a\x2e\x9b\x31\x72\xec\x60\xe5\x94\xcd\xbf\x49\xc6\xfb\x3c\x4b\x97\x18\xc8\x3b\x63\x1f\x34\x56\x75\x26\xbb\xe2\x54\x9f\x93\x6d\x85\x41\x55\x37\xa5\xcd\xdc\x71\xa5\xbc\x6c\xb0\x12\x3e\x1e\xad\x21\x2c\xdc\x8f\x9e\x9d\x95\xa1\x60\x38\xcd\x2b\xd0\x99\x7f\x73\x74\xab\xea\x28\xbd\xa2\x28\xed\xf7\xaa\x21\x70\xec\x74\x37\x88\xd1\x15\x7a\xea\xa5\x54\x29\xf3\x57\xdc\xf2\x13\x24\x89\xc6\x6f\x44\xf0\x8a\x8f\x83\xb4\x6d\xc9\xe1\xcb\x51\x34\xbe\x41\xa7\x5c\x0e\x76\x48\x1b\x91\xf8\xd2\xfb\xae\xf7\xa2\x23\xdb\x21\xf9\x45\x26\xf0\x1e\xee\x61\xb3\x04\x7c\x31\x98\x4c\xba\xec\xb5\x4e\xa6\x5e\xf2\x09\x76\xe3\x7c\x8c\xe8\xda\x5f\x91\xe5\x8a\x3f\xd2\x18\x9d\xfc\x67\x2c\x65\xe4\x00\xbf\x84\x16\x8b\x22\x0e\x3f\x22\x54\xe1\x12\x1f\xc4\x5c\x99\x1a\x69\xb0\xf0\x45\xaf\xbd\x12\x2d\x82\xe3\x0c\xa0\x41\x72\x5d\xa8\x4a\x09\x69\x8d\x27\xab\xc5\xbc\x37\xd2\x73\x8e\xad\xad\xbc\x40\x4f\xd6\xd8\x16\x45\x0b\x94\xd5\xe4\x0b\x34\xae\x27\xd0\x5b\x2a\xfb\x4a\x94\x7c\xb1\xe2\x92\x8f\x2e\x06\x93\x7c\x5e\x90\x92\x2e\xfd\xcb\xd6\x4c\xfc\x5a\x6b\xb5\x42\x49\x20\xef\xf2\x46\xf0\x99\x13\x9c\x46\x8e\xf9\x0c\xca\x39\x7c\x12\xf7\xaa\xa4\x3c\x4e\x9f\x14\xde\x83\xd9\x62\x6f\x12\x24\x6b\xd3\x38\xd9\xfa\x09\x17\x99\x51\xcc\xad\x3f\x41\xec\x38\x9f\xef\x51\x78\x5b\xa3\x6f\xf2\x85\xfe\x30\xce\x53\xdf\x72\x76\xba\x87\x78\x80\xb6\x89\x86\x91\xff\xb8\xe8\x1a\xcc\xb2\xf0\x9c\x6c\x29\xba\x1f\x39\x80\xb5\x25\x05\xe6\x86\xdb\x5b\xac\x31\xca\x2e\x8d\xde\x2e\x4b\x9b\x38\x27\x30\xd5\xf3\x50\x6e\x49\xcb\x04\x8f\x58\xee\xfa\x63\x0c\x7a\x6f\xc7\x02\x6d\x4b\xd0\xe1\x5c\x2b\xe7\xc0\x54\x59\x35\xfe\x40\xe8\x4b\x0b\x54\x0d\xa1\x29\x43\x2e\x7c\x48\xb5\x3f\x06\x2e\x75\x83\xb5\x96\xb5\x3e\x76\xc0\x0c\x61\x4f\xaa\xa7\x1c\xda\x4c\xf2\x35\x34\x3e\xd1\x1f\x54\xdd\x13\x56\xa2\x04\xe7\x44\x67\x9d\xf2\x83\x32\x3a\x10\x8f\xd1\x29\x38\x17\xde\x3f\x7a\x34\x55\x1e\xe2\xf7\x9d\x72\xd8\x66\xd7\xa0\xb3\x85\x81\x96\x73\x79\x39\xc8\x12\x67\x85\x8c\x75\xc7\xf5\xf0\x8c\xfa\x36\xf6\x7e\xb7\x05\xcb\xe7\xa3\xbe\x4d\x71\xe7\x51\x0a\xed\x99\xed\x4b\x1d\x95\xb6\x16\xc5\x33\xeb\xdd\x80\xdb\xf0\xd1\x19\xde\x9b\x5e\xeb\x70\x86\x73\xe8\xb5\x8f\x0d\x77\x78\xac\x4e\x7b\xe7\xad\xcb\x79\x14\x52\xe3\x7c\x80\x24\xbb\x4e\x97\xe5\xc4\xf3\x79\xcd\x2c\x3f\xb5\x46\xf6\xc4\x95\x58\x34\xa0\xa8\x53\x99\x01\xa7\x9b\xfd\xed\x54\xf7\x8e\xaf\x34\x1b\x15\xf7\x74\xb8\x6c\x63\x89\x1b\x17\xb6\x56\xdb\x31\x3c\x3c\x65\x11\xe3\xa2\xe9\x78\xa8\x28\x39\x6f\x4a\x08\xbe\x89\xed\x67\x10\x90\x69\x4c\xcc\x51\x94\xa6\x68\xaa\x9c\x83\x36\xdb\xe0\x74\x70\x38\x22\xb7\xa5\x6f\x4f\x81\x36\x2e\x62\xd3\xfc\x82\x73\xf2\xa8\xdc\xf8\xea\x71\xb2\x79\xf8\x4e\x36\xae\x40\x27\x52\xc6\x7b\x7f\xde\x81\xe3\xc5\x63\xbf\x28\xca\xd5\xcb\xc0\x79\xf0\xc8\x25\xe8\x68\xb2\x7b\x7b\x20\xbe\xcf\x8e\x8b\xa2\x28\x6e\x0f\x4e\x0e\xfe\x84\x83\x27\x31\x7b\x7e\x42\x74\x84\x1d\x59\xb9\x7c\x3f\xec\xed\xd5\xca\x29\x17\x6a\x26\x74\x18\xff\x86\x3a\xcc\x23\x3a\x67\x8a\xe8\x9c\x29\x60\x44\x91\x29\xa2\xc8\x14\xaa\x88\x56\x4c\x11\xad\x98\x82\x8c\xa8\x64\x8a\xa8\x64\x0a\x65\x44\x4b\xa6\x88\x96\x4c\x01\x22\x0a\x4c\x11\x05\xa6\xfd\xdb\xff\xfd\x7b\xf6\x9f\xdb\xe3\x7f\xcd\x8e\xf7\x83\x0b\x14\xbe\x86\x1f\xfb\x7b\xaf\x5e\xbf\x0b\x6f\xdf\x84\xff\xbf\x0e\xaf\xde\x86\x77\xe1\x4d\x78\x1d\x5e\x05\xde\x6a\x49\x78\x8f\x71\xa4\xad\xa9\x21\x8e\x5a\x78\x54\x2d\xec\x1f\xef\xdd\x7e\x2f\xe2\xef\x61\x16\x44\x28\x8a\x72\xff\xd9\x6d\x1d\x4a\x05\x9a\x9d\xb6\xb7\xff\xf3\xd7\x6f\xbf\xcf\x42\x51\xdc\x86\xa2\x98\xed\x8e\x1f\x64\xce\x73\x1d\x4a\xef\x34\xfe\xc5\x3b\x3a\xbb\x71\x77\xf7\x19\x43\x53\x8d\x10\x77\xa7\xba\xe8\xeb\xa2\x38\x5c\xa3\xd9\x93\x6f\xf5\xcb\x57\x4a\x46\x9d\x36\x40\xc3\x4f\x59\xa7\x8d\x41\xde\xb0\xe2\x65\x51\xfc\x1c\xdb\xf1\xb2\x28\x7e\x8d\xd7\x9c\xdc\xce\xfe\x71\xaa\xf1\x3c\x2f\xb6\x4d\xb2\xf3\x57\x00\x00\x00\xff\xff\x94\x50\x40\x16\xfb\x0e\x00\x00" func runtimeSyntaxLilypondYamlBytes() ([]byte, error) { @@ -2608,6 +4014,26 @@ func runtimeSyntaxLilypondYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxLispHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\xc9\x2c\x2e\xe0\xd2\x48\xcd\x4d\x4c\x2e\xae\xa9\xca\xcc\x49\xd5\x54\xa9\x89\xd1\xd3\x48\xcd\xa9\xc9\xc9\xb4\x2f\x2e\xa8\x29\x4e\xce\xad\x29\x2e\xd6\x54\xe1\xe2\x02\x04\x00\x00\xff\xff\x62\x95\xa0\x9d\x29\x00\x00\x00" + +func runtimeSyntaxLispHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxLispHdr, + "runtime/syntax/lisp.hdr", + ) +} + +func runtimeSyntaxLispHdr() (*asset, error) { + bytes, err := runtimeSyntaxLispHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/lisp.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxLispYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x90\x5d\x8b\xe3\x20\x14\x86\xaf\x9b\x5f\x21\x52\x68\x52\x31\xdb\xdb\xba\xfd\x60\xd9\xbf\xb0\x57\x9b\x63\x07\x63\x4f\xa7\x82\x5a\x89\x96\xa1\xc5\x1f\x3f\x24\xe9\x17\xcc\xcc\x95\xe0\xfb\x3c\xef\xd1\x73\x30\x16\xd3\x25\xa0\x20\xd6\xc4\x50\x14\x7b\x4c\xa8\x93\x20\x05\x21\x84\xf4\xa1\x57\x0e\x05\xa1\x25\x3a\xa5\x63\xbe\x1a\x8b\xd5\x34\x03\xd4\x25\xda\x6c\xcd\x36\x86\x1c\xb5\xcb\x31\x56\x53\x5a\x14\xdd\xd9\x62\x14\x83\xcb\xc9\x1e\x0f\xea\x6c\x93\x20\x14\xa0\x6c\x14\xbf\x72\xc9\xe8\x2d\x8b\x17\xd7\x9e\xec\x18\x95\x0d\x00\x67\xf3\x5f\xab\x8d\xcc\xab\x75\xde\xac\xab\x3c\xbb\x73\xfa\xe4\x63\x52\x3e\xd5\xfe\xec\x5a\xec\x06\xa1\x6d\x16\x7c\x29\x59\xbb\x79\x94\x05\xd4\x46\x8d\x6d\xad\x37\x16\xa0\xbd\x47\xa1\xc3\xd0\x9d\xf4\xcd\x4b\xff\xe4\xd3\x7a\x54\xc7\xd4\x19\xff\x3e\x20\x40\x4b\x00\x80\x3a\x37\x3b\xa0\xb2\x9a\xf7\x37\x5f\xf9\x71\xdc\xdf\xa3\xea\xdf\x33\x6b\xfe\xf0\xff\x8a\x5f\xe5\xed\x5c\xf0\xe5\xdb\xcb\x47\x7f\xb0\x86\x29\xdb\x27\xe4\x1c\xfa\x7e\x53\xe5\x2e\x37\x8d\x88\x41\x69\x14\x52\x56\xbf\xeb\xf9\x9d\x31\x7e\x8f\x3e\x71\x7d\x54\x5d\xfd\x71\x34\x09\x47\x88\xd0\x17\x9e\x4d\xbf\xa1\x05\xa1\x13\x46\x58\x26\x6c\xc2\x68\xf1\x19\x00\x00\xff\xff\x43\x3b\x48\x95\xf0\x01\x00\x00" func runtimeSyntaxLispYamlBytes() ([]byte, error) { @@ -2628,6 +4054,26 @@ func runtimeSyntaxLispYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxLuaHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x29\x4d\xe4\x8a\xd1\xcb\x29\x4d\x54\xe1\xe2\x02\x04\x00\x00\xff\xff\x9f\x87\x18\x07\x0c\x00\x00\x00" + +func runtimeSyntaxLuaHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxLuaHdr, + "runtime/syntax/lua.hdr", + ) +} + +func runtimeSyntaxLuaHdr() (*asset, error) { + bytes, err := runtimeSyntaxLuaHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/lua.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxLuaYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x56\x6f\x6f\x14\x37\x13\x7f\x9f\x4f\xe1\xe7\x20\x22\x01\x2e\xf0\xc0\x8b\xb6\x27\x42\x55\xd1\x50\xf1\x02\xa2\xb6\x08\x55\xca\x5e\x91\x77\x77\x76\xd7\x8d\xd7\x76\xc6\xe3\xdc\xa5\x0c\xfd\xec\xd5\x78\xef\x92\x4b\xca\xd2\x86\x20\x38\x25\xfe\x33\xb6\x67\x7e\x33\x9e\xf9\x79\x1b\x63\x81\xce\x02\xcc\x94\x4d\x7a\x6b\xab\x06\x82\x8a\x66\x5b\x4a\x29\x25\x4b\x4e\xf7\x30\x53\x93\xa2\xd8\xb3\x49\xdf\x9e\x6c\x6d\x61\xb2\x10\x87\xf5\xa9\x8a\xa4\x09\x7a\x70\x94\xb7\x94\x3b\xb5\x67\x70\x35\x2f\x3a\x63\x81\x11\x02\x68\xe2\xe4\xc8\x58\x36\x0d\x83\x8d\x60\x1a\xa6\x0e\x5c\x1e\x73\xe3\x91\x8d\xe3\x26\xb9\x8a\x8c\x77\x6c\x7d\xa5\x2d\x23\x50\x42\xb7\x5b\x14\xe5\x64\xc4\x8a\xf3\xc4\xda\xd5\xec\xf1\x63\xbb\x6a\x28\x53\xcb\x91\xd0\xb8\x96\x7b\x4d\x1d\x93\x2e\x2d\xb0\xf1\x5c\x79\xf4\x89\x8c\x03\xf6\x91\x13\x35\xdf\x72\x69\xe8\xf1\x23\xd1\x56\x14\x7b\x63\x0a\xdf\x1e\xbc\x7a\xc3\x6f\x7f\xe2\xb7\x6f\x0e\x7e\xf9\xf5\xc5\xe1\x2b\xd6\x31\x02\x12\x57\xde\x5a\xa8\xa8\xd5\x58\xea\x16\xb8\xf6\x12\x37\x06\x44\x8f\xdc\x02\x35\xe0\x4e\xa5\xef\x81\xf4\x0a\x41\xd0\x06\x23\x5b\xaf\xeb\xdc\xe4\xfd\xbd\xaf\x93\x05\x76\xb0\x24\x1e\xd6\x43\xa5\xad\xe5\x80\xc6\x11\xa3\x5e\xc0\x49\x92\xe8\xe8\x45\x0b\x79\x6e\xc1\x49\x17\x65\x06\x27\xc9\x20\x70\x04\x01\xc2\x71\x65\x34\x6e\x1a\x25\xef\x52\x5f\x02\x32\xf9\x55\x4c\xe4\xd6\x39\xb9\xa0\xab\x63\x5e\x66\x63\xbb\x45\x11\xef\x16\xc5\xce\x3a\x02\xa6\x06\x47\xa6\x31\x80\x33\x35\x31\xbe\x28\xf6\x24\x0e\x95\xf5\x72\x79\x36\xc5\x8e\x8d\x0b\x89\xd8\x1a\x07\x91\x7d\x00\xc7\x3e\x91\x48\x42\x9e\x20\xe8\x9a\xa9\x0f\xd9\xc1\x6c\x6e\x81\x86\x60\xf3\xd6\x2e\x99\x90\x5b\x5a\x19\xd1\x65\x64\x5d\xf9\xc8\x3a\x1a\xc7\x9a\xb4\x7b\x94\x5b\xae\xc0\x58\xae\x7c\xec\xa4\xe1\x1a\x5a\x86\x65\xe0\xc6\x7a\x8f\xdc\xf4\xbe\xe6\x06\x45\xd0\xa5\x16\xd8\xd6\x32\xb4\xbe\xfd\xff\x43\x69\xb9\xd7\x4b\xf9\x37\x8e\xa0\x05\xe4\xde\x38\xf9\x3f\x9f\xfa\xba\xe1\x60\x38\xf8\x05\xa3\xae\x19\xb5\xab\x7d\xbf\xea\x22\x40\xcd\xd1\xb8\x8e\xe3\x09\x12\x0b\x12\xf2\xeb\x93\x43\x24\x2d\x8d\x3a\xe6\xe3\x45\xec\xaa\x63\xae\x35\x01\xd7\xa6\x69\xc8\xf4\xc0\xb0\x84\x2a\x91\xf4\x86\x24\x51\xe4\xea\x10\x7a\x7f\x2a\x25\x24\xf5\x27\x17\x99\x6b\x03\x38\x1f\xa0\x3e\x88\x78\xd4\x9a\xdc\xa8\x6e\x61\x6d\xd2\xbb\xc6\xb4\x5c\x05\x29\x01\x49\x37\x18\xb2\xce\x9a\x92\xb3\x2c\x20\xe4\x54\x8c\x00\x92\x70\x11\x34\x56\x1d\x60\x5c\x8d\x64\xcf\xa8\xa9\x21\x95\x56\x96\xca\x33\x02\xae\x3a\x8d\x5c\xa7\x3e\x70\x63\x5c\x2d\x35\xde\x6b\xe2\xb6\xd7\x54\x75\xdc\xc6\x54\xb2\x24\xae\xf5\x0b\x89\x78\x16\xe6\x04\x94\x26\x9a\x3f\x33\x6b\x30\xc2\x29\x60\x04\x96\xdd\xab\x04\x4d\x21\x00\x8e\xc2\xc8\x29\x7e\xe1\x6f\xa5\x89\x8d\xcb\xc5\xd9\xeb\xa5\xe3\x1c\xcb\xac\x66\x15\xd7\xe8\x91\x56\x9a\x47\x75\x0a\x2f\xac\x55\x8a\x4f\xd2\x04\x4d\x04\xe8\xb8\xf2\x35\xc4\xdc\x06\x49\x82\xec\x92\x6f\x9a\x08\xe3\x29\x70\xce\x39\x6b\x9d\x08\x92\x05\x26\x9e\x19\xb0\x75\x2e\x51\x84\x98\x7a\x60\x4c\xce\x49\x7d\x0a\xff\xa4\xc8\x0b\xd4\x81\xf3\xa6\x51\xdd\x99\xea\x56\x7a\x07\xda\xdb\xe0\x9d\xce\xfb\x63\xe9\x8d\x6b\xbc\xf4\x03\xcb\x5e\x22\xa4\x16\x08\xa1\x35\x91\xf0\x4c\xc6\x29\x9c\x6a\x9b\xb2\x38\x45\xc0\x61\xb2\x41\x2a\x59\xe3\x3a\x27\x2f\xb3\x4c\xbc\x38\x1d\x37\x4f\x13\xea\x0a\xca\xe1\x22\xb3\xc4\xd4\xeb\xd1\x1f\xde\xb8\x51\xcf\x32\x2f\xaf\x29\x01\x63\x67\x1a\xe2\x52\xb8\xbf\x94\x47\xa0\xf4\xc8\x25\x41\x24\x2e\x97\x1e\x19\x96\x62\x46\xe8\x30\x58\x5d\x01\x5b\xf4\x42\xe1\x6c\x87\x73\xb8\x9a\x0e\x6a\x46\x4d\x16\xc5\xec\x2a\xcb\x0d\xfc\x96\xd9\x2c\x02\x64\xdf\x4f\xcb\xd4\x0c\x6c\xc6\x5f\x2f\xed\x05\x67\x04\xdb\xb0\xc6\x76\x73\x53\xe5\x5d\x24\x7d\xfe\x70\x35\x5a\x5e\x5b\x67\x2c\x13\x26\x18\x7b\x33\x77\x86\x07\xbc\x19\x9e\xee\xe1\x41\x31\xae\xb2\xa9\x86\x5d\xde\x3e\xe1\xed\xff\xf1\xf6\xcf\xbc\x8d\xbc\xbd\xfc\x90\xad\xbd\xe1\x79\x59\x99\x3c\x7a\x38\xfd\x6e\x7e\xef\x92\xa9\xb3\xbe\xf4\x76\xaf\x44\x5d\x1d\x03\xc5\x99\x9a\x1c\xed\xec\xbe\x7b\x5f\x14\x47\x45\x31\x9f\x5f\xde\x35\xa0\xb9\xcb\x0f\x1e\xf0\x03\xde\xe6\xa2\xb8\xc7\x53\x2e\x8a\xdf\xf9\x29\x3f\xdd\xe7\x27\xfc\x64\x9f\xff\xda\xe7\x7d\x3e\x2a\x8a\xbd\xf9\xbb\x47\xf7\x1f\xbf\xe7\x5b\xbb\x93\xad\xab\x88\x06\x72\x1a\xbe\x55\xe4\x17\x49\x63\x8e\xc9\x64\x72\x2e\x03\x57\x5f\x91\xc4\x63\x13\xb2\x17\xe7\x9f\x02\xf2\xdb\xf8\xec\x59\xff\x36\x2d\x05\xa8\x8c\xb6\xcf\x3a\x8d\x17\x47\xff\x2b\x9c\x3b\x57\xd1\xdc\xf9\x8a\x60\xf2\x7d\x1c\xfd\x23\x3e\xc5\xbc\x28\xe6\x37\x03\x70\x4b\xc5\x14\x82\x47\x52\x8d\xc1\x48\xaa\x81\x85\xb2\xe0\x5a\xea\xa2\xf2\x8d\x9a\x58\xef\x5a\xb5\x4e\x8f\x89\x82\x65\xb0\xa6\x32\x64\xcf\xb6\x6e\x9d\x8b\x95\x6c\x02\x54\xd4\x69\x27\x0d\xa9\x85\xb1\x56\xb5\xe6\x14\x54\xce\x72\x15\x7c\x34\x64\x4e\x21\x5e\xc7\xe3\xfd\x0f\xbb\xbc\x7f\x63\x9f\xaf\x01\x61\x0c\xc3\x97\x05\x31\x8a\xe2\x0b\xc3\xd8\xbf\x37\x0a\x44\x96\x3e\x0b\x94\xd5\xda\x4a\x7e\xf4\x70\xfa\xcd\xfc\xa2\x61\x91\x2d\x85\xc6\xf4\xb4\xf9\x61\xfa\x7c\xbe\x31\xcc\x6b\x47\xba\x84\xc6\x61\x9c\xf3\x8e\x4c\xab\x2c\x7c\x36\xcd\xdd\xcb\x75\x37\xc8\x76\x37\xdd\xef\x85\x6e\xf7\x4a\xf9\x0e\xfc\x90\xf3\xd3\xfc\xf7\xc9\x35\x48\xbe\xf6\xc2\x9e\xaf\x0f\x7f\x3c\xe4\x57\x87\xaf\x0f\xf8\xf9\x8b\xdf\x5e\x1e\xec\xce\xbe\xbf\x54\x81\x97\x6a\xed\xbe\x8a\xba\x07\xa5\xa3\x5a\x18\xea\x54\x9f\x2c\x19\x79\xf1\xd4\x70\x45\xf1\xba\xd8\x3f\xbd\x9a\x3e\x8a\xfe\x9a\x20\x6e\x50\x4f\x9f\x15\xc6\x4d\x2a\xea\xf3\x02\xb9\x61\x4d\xfd\x4b\x6a\x51\x67\xa2\xea\x74\x54\xe4\x55\xeb\x95\x6e\x08\x50\x65\x54\x6b\x8c\xca\x5f\x15\xd4\x1e\xa2\x72\x9e\xd4\xc2\xe3\xf1\x15\x8f\x66\x6a\xc4\x99\xab\x1e\xdc\xbe\x01\xee\xbf\x03\x00\x00\xff\xff\xd6\x9d\x54\x28\xfd\x10\x00\x00" func runtimeSyntaxLuaYamlBytes() ([]byte, error) { @@ -2648,6 +4094,26 @@ func runtimeSyntaxLuaYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxMailHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x4d\xcc\xcc\xe1\xd2\xd0\xd3\xd2\xcf\x2d\x2d\x29\xd1\xd5\xd3\xaa\x89\xd1\x4b\xcd\xcd\xd1\x54\xe1\x8a\x73\x2b\xca\xcf\x55\xd0\xd3\x52\x88\x49\xd1\xb6\x82\x62\x10\x9b\x0b\x10\x00\x00\xff\xff\xac\x1f\x13\x8d\x32\x00\x00\x00" + +func runtimeSyntaxMailHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxMailHdr, + "runtime/syntax/mail.hdr", + ) +} + +func runtimeSyntaxMailHdr() (*asset, error) { + bytes, err := runtimeSyntaxMailHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/mail.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxMailYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x90\xcf\x4b\xc3\x30\x14\xc7\xef\xfd\x2b\x42\xd9\x61\x3f\x58\xbd\x07\xd9\x26\x82\x28\x78\x10\xa6\xa7\xbe\x0e\xb2\xe4\xcd\x45\x92\xb4\x24\xaf\x82\xd0\x3f\x5e\xd2\xae\x71\x6e\x1e\xcc\xa1\xf4\xfd\xfa\xbe\xcf\xfb\x1e\xb4\x41\xfa\x6a\x90\x33\x2b\xb4\xc9\x32\x85\x84\x92\x78\xc6\x18\x63\xb1\xe6\x84\x45\xce\xf2\x69\x31\xbf\xb1\x2d\xd1\xb2\x98\x77\x00\x05\x5a\x33\x9b\xe4\x7d\xd3\x11\x85\x42\xcf\x59\xbe\x7b\xf0\xb5\x65\xc5\x9c\x01\xa8\x05\x4f\x9f\x3e\xcc\xb3\xcc\xb7\x06\xc3\xa0\xbb\x64\xc3\xc6\x34\x92\x9f\xd2\x5a\xa1\x23\x7d\xd0\x83\x5e\xb9\x2b\x79\x68\x84\x44\x5e\x55\x0b\x3e\xf6\x34\x1e\x1b\x5f\xcb\xd8\xf0\xac\x03\x2d\xa7\x4f\xaa\xbb\xf3\xf2\xa8\x3f\xb1\xdb\xb6\xfb\x20\xbd\xde\x63\xf7\xe6\x42\xfa\x7f\xa9\x03\x75\x8f\x68\x9a\x59\x12\x91\xb5\x0b\x24\x1c\x45\x95\xe9\x6b\xdd\x45\x8e\xeb\x6a\x11\xc8\x6b\xf7\x3e\x40\xc7\x17\x48\xf8\x7e\x66\xdb\xee\x3f\xa2\x4d\x23\x7a\x7c\xe8\x14\x67\xf9\xe4\x27\x31\x5c\xcc\x52\x7c\x29\xde\xa0\xd4\xc2\xdc\x1f\x45\xbc\x16\x00\xa0\x18\x01\x02\x09\x42\x8b\x3d\xdf\xed\xba\xdc\x6d\xce\x8c\xd8\xfc\xb2\x65\xb5\x1e\x67\x14\x1e\x44\x6b\xe8\x0f\x58\x00\x07\xe0\x2e\x41\xcf\xd1\x4f\xa4\x65\x95\x0c\xb0\xfd\xf6\x6b\xad\xd5\x7f\x2e\x2e\xab\xec\x3b\x00\x00\xff\xff\xb9\x78\x17\xdc\x57\x02\x00\x00" func runtimeSyntaxMailYamlBytes() ([]byte, error) { @@ -2668,6 +4134,46 @@ func runtimeSyntaxMailYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxMake_headersGo = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x54\xd1\x6a\xdc\x3a\x10\x7d\xd6\x7c\xc5\x5c\xc1\xbd\x91\xc9\x5e\xa5\x09\xf4\x25\xb0\x85\x92\x10\xf2\x14\x4a\xb6\xa5\x94\x4d\x48\x54\x5b\xb6\x45\x6c\x69\x19\x69\xb7\x09\x61\xff\xbd\x8c\xbc\x4e\x76\x37\x81\xf6\xc9\xb6\xe6\xcc\x99\x73\x66\x46\x5e\x98\xf2\xc1\x34\x16\x7b\xe3\x3c\x80\xeb\x17\x81\x12\x2a\x10\xf2\xe7\x53\xb2\x51\x82\x90\x75\x9f\xf8\xe1\xc2\x91\x0b\xcb\xe4\x3a\xfe\x08\x39\x12\x13\x39\xdf\xe4\xd7\xe4\x7a\x2b\x01\xc4\x93\xe9\x3b\x94\x4d\x58\x3c\x34\xda\xf9\x23\xfe\xd4\xab\x13\x09\x05\x40\x7a\x5a\x58\xbc\xb4\xa6\xb2\xf4\x83\x51\x31\xd1\xb2\x4c\xf8\x0c\xe2\xc2\x75\xf6\x2b\x47\x07\x42\xbc\xe7\xb4\x53\x59\xbb\xce\x72\x92\xbc\x07\x71\x6e\x93\x2d\x13\xe2\x56\x96\xb8\xb8\x32\xbd\xbd\x6e\x1e\xf1\x9d\x3c\x6f\xfa\x9c\x27\x86\x82\x8c\xda\x05\xb5\xf9\x9c\x21\xeb\xf1\xa8\xca\x35\xe4\x3d\xac\x77\xc4\xbe\x27\x74\x43\x06\x6f\x34\xc0\x9b\x82\xcc\x56\x2f\x7d\x99\x3b\xac\x0a\xa6\x71\x35\x76\xd6\xab\x10\xf5\x67\x6a\x62\x81\x9f\xf0\x38\x1b\x0a\x51\x9f\xb5\x95\xa3\x31\x32\x3f\xbe\x2d\x40\xac\x41\xb0\xa3\x38\xc1\x3b\x3c\x9d\xe2\x30\x04\x7d\x6d\x4d\x75\xee\x48\x49\x2d\x0b\x10\x75\x20\xbc\x9b\x60\xcd\x00\x32\xbe\xb1\x98\x53\x32\x6b\xcd\xbd\xe0\x40\xad\x59\xac\x2a\x40\xb0\x82\xcd\xf0\xf4\xa5\x89\xb3\x65\x5d\xbb\x47\x95\x81\x13\x94\x9a\xdb\x21\xb3\x52\x21\xca\xe0\x57\x96\xd2\x10\x9c\x9f\xb2\xee\xfc\x5a\xfc\xff\x91\xc5\xb1\xba\xf5\x8b\xc5\x11\x9c\x2b\x0e\x05\x32\xcd\x38\x11\x56\x91\x9f\x87\x63\x15\x10\x2b\x43\xd8\x56\xb4\xb5\x19\x20\x62\x58\x52\x69\x27\x68\x89\xf6\x2c\xf3\x04\xd4\x48\x57\xe4\x56\x32\xe8\x9f\x29\x7a\xd7\x65\xc5\x0b\xe3\x5d\xa9\x2c\xd1\xd0\x3a\x8e\x4e\x31\xef\xe1\x37\xdf\x1b\x8a\xad\xe9\xd4\xc8\xff\x5f\x5b\xd1\x5f\x91\xf8\x32\x54\x56\x0d\xfd\xc9\x39\xa3\xe3\xad\xc8\xc6\xf0\x04\xcb\x2d\x2f\x83\xfd\xcd\xe8\x78\xbe\x64\x4d\xda\xe0\xb9\x09\x6d\x45\x79\x7e\xfa\x3b\xb9\x64\x67\x99\x41\x95\xfa\x65\xd1\x0e\x51\xde\xf8\xf7\x10\xc3\x85\xd0\x2f\xfb\xf7\x27\xe0\xeb\x5a\x6e\x21\xcf\xba\x10\x79\x21\x46\x37\x95\xdd\x77\x53\x8c\x97\xe0\x19\x44\x4c\x86\x12\xfb\xe0\xcb\xae\xaf\xc2\x2f\x5e\xa5\xca\x24\xf3\x76\x33\xf3\x98\xf6\x4d\xc6\x44\x91\x71\xf9\xcf\xa2\x67\x8b\xce\x25\x35\xa4\xcf\x6f\xf9\xec\xf9\xe0\xc6\x1f\xac\x8b\xfd\x95\x00\xd1\x56\xf4\xda\x91\xe9\x46\x99\x62\xba\xf9\x07\x5e\xc2\x1c\x1f\x1b\xb1\x1b\x3f\x1e\xe3\xaf\xfe\x77\x01\x27\x0c\xa8\xfb\xa4\xbf\x90\xf3\xa9\x56\x32\x85\xf0\x80\xff\xae\x6e\xbc\x9c\x0c\x46\x67\xce\x97\x56\x65\xf3\x45\x01\x20\xc8\xa6\x25\x79\x16\x08\x6b\xf8\x1d\x00\x00\xff\xff\x87\x85\x4c\x11\x3f\x05\x00\x00" + +func runtimeSyntaxMake_headersGoBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxMake_headersGo, + "runtime/syntax/make_headers.go", + ) +} + +func runtimeSyntaxMake_headersGo() (*asset, error) { + bytes, err := runtimeSyntaxMake_headersGoBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/make_headers.go", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _runtimeSyntaxMakefileHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x4d\xcc\x4e\x4d\xcb\xcc\x49\xe5\xd2\x88\xf6\xcd\x8d\x85\x72\x6a\x62\xf4\x72\x13\xed\xb3\x35\x55\xb8\xe2\x94\x15\xf5\xb4\xf4\x35\x52\xf3\xca\x14\xb4\x35\xed\xa3\x93\xd2\x63\xed\x41\x3a\x34\x14\x6a\x54\x34\xb9\x00\x01\x00\x00\xff\xff\x15\xaf\xd5\xf2\x3c\x00\x00\x00" + +func runtimeSyntaxMakefileHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxMakefileHdr, + "runtime/syntax/makefile.hdr", + ) +} + +func runtimeSyntaxMakefileHdr() (*asset, error) { + bytes, err := runtimeSyntaxMakefileHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/makefile.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxMakefileYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x53\xd1\x6e\xdb\x3a\x0c\x7d\xbe\xfe\x0a\x5f\xd7\x6d\xed\xfa\x36\xf7\xdd\x68\x96\x01\x1b\xf6\xb6\x2f\x30\x1d\x40\xb1\xa8\x46\xab\x2c\x79\x94\x92\xb6\x18\xfb\xef\x83\x94\xac\x6d\xb2\x76\xc8\xcb\x04\xc3\xa6\x68\x9d\xa3\xa3\x43\x4a\x69\x83\xe1\x71\xc2\x36\x1f\xc5\x1d\xc6\x59\x96\x49\x0c\x38\x84\x36\xcb\xf3\x3c\x8f\x19\x2b\x46\x6c\xf3\xa2\xea\xbe\x8e\xfd\x7e\x11\x03\xcc\x46\xb1\xb8\xab\xcb\x22\x2d\x5b\xa3\x90\x48\x6d\x5e\x2c\xcf\xfe\x9d\x5d\xfd\x5f\xa1\xdd\xe6\x4d\xbd\xe8\x56\xb7\xfd\x22\x12\x57\x39\x97\x75\x91\x65\xb4\x31\xe8\x77\xcc\xd7\xf9\x44\x38\x91\x1b\xda\xbc\x00\xb8\xa9\xb4\xc2\xef\xac\x95\x44\xc5\x5a\xd9\x14\xdb\x38\x41\xe3\x91\xd1\x4a\xad\x6a\x80\x0f\xc5\x1e\xeb\x83\x08\x38\xa2\x0d\x71\xcf\x0a\x1f\x26\x47\x81\xb5\x1d\xcc\x46\x22\xbb\x2d\x12\x69\x89\x07\x80\xc7\x71\xe5\xcc\xcc\x4d\x48\x22\xb8\x24\xb5\x5b\xb6\xf3\x7f\xfa\xa6\x7d\x7f\x49\xd5\xcd\xff\x3b\xef\x19\xa0\x99\x33\xc0\x62\xce\xed\x9c\x2f\x2e\x18\x20\x3e\xf5\x5b\x5a\x00\x4a\x80\xaa\x12\x2b\x3f\x89\xb0\x66\x21\xe5\x44\xa8\xf4\x43\x8c\xfc\x46\xa5\xc8\x4a\x5e\x09\x9f\x6c\xe5\x41\x18\xc3\x52\x53\xdd\x75\xad\x9f\xc4\x80\x6d\xdf\xff\x81\x17\x89\x1c\x31\x6e\x85\x61\xa5\x4d\x40\xda\x7f\xae\xdd\x26\xb0\xd2\x56\xfa\x40\xda\xde\xb2\xd2\xe4\xc3\xbd\x23\x79\x22\xaf\x32\x62\xeb\x88\x95\x23\x14\xc3\x9a\xb5\x62\x6d\x95\xe3\x6f\x4e\x5b\x36\x62\x47\xc5\xd6\x05\xa9\x89\xdd\xa9\x62\x1d\xe9\x5b\x6d\x79\x12\xc1\x6f\x56\x3e\x30\xa1\x30\xc9\x15\xbf\x46\x63\xd8\xc7\x92\x45\xbd\x13\xef\x9c\x39\x91\x76\x2b\xcc\x06\xf9\x5e\x90\x8d\x27\xbd\xd7\x46\x0e\x82\x24\x27\x89\xf1\x65\xb4\x0f\x29\xf0\x6f\x11\x6a\x89\x36\x68\xa5\x77\xdd\x3a\x7b\xa9\xfe\xc1\x8f\xae\xaa\xcb\x67\xc8\xe0\xac\x0f\xc2\x86\xd9\xce\xdc\x5d\xfb\xc6\xe1\x83\xa0\x24\xac\x28\x9e\x73\x68\xe5\x51\xc6\xdf\xe9\x29\xa9\x07\x98\xbd\x64\x5f\xdd\x84\x5f\xe3\xf5\x4e\x13\x0e\x5a\x98\x4f\x6b\x41\x87\xd0\x13\xd4\x5c\x1e\x8b\xb9\xfc\x6b\x5a\x0e\x3c\x03\x28\x9b\x0a\xe0\x47\xb7\x7c\xca\xfb\x06\xe0\x89\x01\xaa\x6e\x59\xa7\x49\x5d\xbf\x87\xe9\x3e\x2e\x6f\xae\x16\xe7\xdc\xc4\x7b\x16\x0b\xbc\x4f\x34\xd7\x7d\xf7\xf9\x4b\x0f\xf0\x2e\x12\xa0\xe4\x24\x67\xf1\xe2\xcd\x98\x7a\xe5\x37\x4f\xce\x8e\x3d\x29\x8f\x4f\x9f\x77\x7d\x96\xfd\x0c\x00\x00\xff\xff\x85\xaa\x15\xc9\x0e\x05\x00\x00" func runtimeSyntaxMakefileYamlBytes() ([]byte, error) { @@ -2688,6 +4194,26 @@ func runtimeSyntaxMakefileYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxManHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x4d\xcc\xe3\x8a\xd1\x8b\x36\xd4\xb5\x8c\xad\xb0\x57\xe1\xe2\x02\x04\x00\x00\xff\xff\x03\x9c\x45\x64\x10\x00\x00\x00" + +func runtimeSyntaxManHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxManHdr, + "runtime/syntax/man.hdr", + ) +} + +func runtimeSyntaxManHdr() (*asset, error) { + bytes, err := runtimeSyntaxManHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/man.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxManYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x64\xcc\x3f\x6b\x84\x30\x18\x80\xf1\x3d\x9f\xe2\x25\x38\x34\x05\x85\x8e\xcd\x22\x88\x85\xba\x85\xe8\x66\x1c\xb4\xbe\xfe\x81\x68\x4b\x1a\xf1\x84\xf7\xc3\x1f\x77\x7a\x83\x38\x3f\x3f\x9e\x6e\xb4\xe8\xb7\x3f\x94\x30\xd5\x33\x63\x2d\x7a\xfc\xf1\x12\x18\x00\xc0\xa3\xcd\xf5\x84\x12\xb8\x31\x51\xf9\x11\x7e\x56\xb7\x38\xe0\x8c\xb9\xc5\xe2\xbf\x7c\x9a\x10\x7a\x87\x38\xef\xe4\x2d\xa7\x42\x7c\x47\xef\x01\x3f\x5a\xe3\xc6\x7e\xf0\x17\x41\xc6\x44\x85\x3a\x23\x87\xed\x41\x12\x1d\x53\x56\x2a\x5d\xc5\xe2\xb2\x6a\xec\x82\x17\x46\x4a\x89\x33\x5b\x87\xd1\xef\xce\x98\xae\x4c\x32\xa5\xab\x17\xd8\xd0\xda\xdf\xf5\x78\x34\x8e\xd2\x9c\x74\x4e\xfa\x8b\x54\x2a\x38\xbb\x07\x00\x00\xff\xff\x92\x65\x68\x09\x0f\x01\x00\x00" func runtimeSyntaxManYamlBytes() ([]byte, error) { @@ -2708,6 +4234,26 @@ func runtimeSyntaxManYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxMarkdownHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x4d\x2c\xca\x4e\xc9\x2f\xcf\xe3\x8a\xd1\xd3\xc8\x4d\xa9\xc9\xcd\x06\xe3\xbc\x1a\x98\xb8\xa6\x0a\x17\x17\x20\x00\x00\xff\xff\x3f\xa3\x50\xd9\x24\x00\x00\x00" + +func runtimeSyntaxMarkdownHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxMarkdownHdr, + "runtime/syntax/markdown.hdr", + ) +} + +func runtimeSyntaxMarkdownHdr() (*asset, error) { + bytes, err := runtimeSyntaxMarkdownHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/markdown.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxMarkdownYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\x4f\x6f\x9c\x30\x10\xc5\xef\x7c\x8a\x29\xd9\x83\x31\x65\xd3\xaa\x52\xa5\x22\x6d\x7a\xa8\xaa\x9e\x7a\x69\x73\xf3\x18\x96\x80\xb3\x58\x0b\x86\xda\x46\xfd\x13\x67\x3f\x7b\x65\x60\x23\xd8\x44\x55\x0f\xbb\x88\x99\x79\xbf\x79\x3c\xf0\xbd\x6c\x84\xfd\xdd\x8b\x14\xda\x42\x1f\xab\xee\xa7\x0a\x82\x4a\x58\x51\xda\x34\x00\x00\xf0\x7d\x55\xb4\x22\x85\x10\x71\x4b\xda\xca\xb5\xc7\xf1\xa7\xdc\x59\x10\x6d\xc2\x20\xd0\x43\x23\xcc\x24\xb9\x82\xdb\xe2\xae\x11\x06\xc8\x17\x69\xeb\xe1\x0e\xc4\x2f\x2b\x94\x91\x9d\x8a\xc6\x7e\x02\xd3\xc2\x70\x4b\x19\xa4\x1c\xd1\xf9\xcb\x96\x86\xc1\xd8\xf6\x80\x1f\x43\x67\x85\x99\xa7\x8d\x2d\xac\x68\x85\xb2\x29\x40\x98\xdd\xac\x06\x3f\xb7\x7d\x5d\x18\x69\xd6\x60\x92\x39\xc6\x52\xd3\x17\xa5\x48\x39\x8f\x48\xce\x32\xe0\x2c\xcb\x39\xcd\x1d\x22\x9d\xee\x28\xa7\x88\x34\x5a\xc0\xbe\x5b\xdd\xa9\x03\x88\xff\x63\x2e\xa0\x23\xf5\x02\x7c\xc1\x36\x56\xcb\xa3\x48\x6c\xad\xbb\xe1\x50\xff\x13\x7d\x3a\x4d\x9c\x13\xa7\xa7\xd3\x02\x51\x77\x5a\xfe\xe9\x94\x2d\x1a\x18\xd3\x3e\xc7\xd3\x8b\x52\x16\x4d\x0a\x61\x46\x92\x24\x89\xdd\x6e\xb7\x8b\x5d\x9e\xe7\xf1\xec\x0a\x91\xc6\x11\xa2\xa1\x9b\x25\x4c\x14\x55\x23\xd5\x73\x0a\x84\xd9\xd5\xc3\xdb\xd7\xef\x1f\x57\x39\x37\xd2\xd8\xf3\xa8\xac\x84\xb2\xf2\x5e\x0a\x9d\x82\x1f\x5f\x78\xa7\xcc\x2f\x4b\x38\xb8\x75\xf5\x4d\xf2\x81\xc7\x88\x5b\x58\x20\x5b\x69\xca\x99\xd8\x6b\xd1\xeb\xae\x1c\x71\x04\x91\x10\xf6\xa9\xfc\xa6\xb9\x63\xb7\x96\xb3\xaf\x2d\x8f\x10\x23\x87\xb8\x7d\x78\xf7\xe8\x2e\xc2\x42\x4c\x10\x13\xb2\x59\x15\xa3\x95\x73\x75\x3c\x3b\x2f\x3b\x65\x6c\xe1\x3f\xa4\x10\x91\xb1\x8c\x7b\x53\x3c\x7c\xb1\x4b\x58\xc6\x19\x77\xf3\x1c\x45\xe4\x91\xff\x43\x24\x2c\x8b\xbc\x6e\xb9\x44\xb6\xc5\xe1\x29\xca\x41\x55\x42\xfb\x6c\xab\x14\xc2\x57\x13\x80\x8d\x04\xb2\x50\xbb\x85\x83\x25\x6a\xd0\xcd\x8b\xa0\xda\xda\xde\x7c\x4c\xaf\xaf\x59\x06\xd1\x0d\x8f\x67\xc9\xea\xfd\xef\xf7\xfb\xcd\xb3\xfa\x4c\x06\x7f\x8e\xb4\x7f\xb8\x7d\xf8\x54\x12\xaa\x5a\x17\xa6\x63\x0c\x8c\x07\x7f\x03\x00\x00\xff\xff\x34\x33\xd2\x49\x19\x04\x00\x00" func runtimeSyntaxMarkdownYamlBytes() ([]byte, error) { @@ -2728,6 +4274,26 @@ func runtimeSyntaxMarkdownYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxMcHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x4d\xe6\x8a\xd1\xcb\x4d\x56\xe1\xe2\x02\x04\x00\x00\xff\xff\x23\xa5\x21\x87\x0a\x00\x00\x00" + +func runtimeSyntaxMcHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxMcHdr, + "runtime/syntax/mc.hdr", + ) +} + +func runtimeSyntaxMcHdr() (*asset, error) { + bytes, err := runtimeSyntaxMcHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/mc.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxMcYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x8e\xcf\x4a\xc4\x30\x10\x87\xef\x79\x8a\x21\xbb\xa0\x1e\xdc\x07\xe8\xad\xd0\x08\x01\xdb\x2c\x6d\x15\xc4\xf5\x4f\x48\xa6\x4b\xa0\x99\x95\x66\x14\x84\x3c\xbc\xb4\x0b\x2b\xe8\x82\x38\x97\x61\x7e\xf3\xcd\xc7\xac\x20\x21\xf9\x68\xc3\x08\xee\x40\x43\xd8\xc3\x10\x46\x4c\x42\xcc\x8d\x3f\xdf\xb0\x80\xe8\x84\xf0\xc8\xe8\xb8\x10\x00\xb0\x00\x64\x23\x16\x20\x77\xbb\x4d\x74\x6b\x29\xc4\xf4\x3e\x62\x3a\xae\xaf\x21\xb1\x65\x8c\x48\x5c\x80\x7c\xbe\xf4\xe1\x03\x27\xce\xf7\xaa\xed\xb4\x69\x74\x95\x4d\xd7\x3f\x6c\x55\xae\x4c\x5d\xea\x26\xdf\xa8\xb2\xbf\x6b\x55\xf6\x38\x04\xc2\x2b\x79\xd6\x51\x95\xaa\x36\xcd\x8b\xd9\xf6\xda\x34\x5d\xae\x4b\x7d\xab\xda\x13\xeb\x0e\x71\x21\x97\x71\xae\xc4\x76\x9a\x0f\x57\xf2\x14\x21\xf9\x02\xe4\xfa\x3b\x38\x7e\x0c\x8f\x4f\x7f\x49\x3c\x8d\xff\xd2\x50\x62\x4b\xbc\x49\x3c\x05\xda\xff\xd6\xbd\xfe\x94\x5d\x9c\x93\x89\xaf\x00\x00\x00\xff\xff\xaa\xc9\x8d\xf2\x98\x01\x00\x00" func runtimeSyntaxMcYamlBytes() ([]byte, error) { @@ -2748,6 +4314,26 @@ func runtimeSyntaxMcYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxMicroHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\xcd\x4c\x2e\xca\xe7\x8a\xd1\xd3\x00\x33\x34\x55\xb8\xb8\x00\x01\x00\x00\xff\xff\xbd\x2c\x66\xf3\x12\x00\x00\x00" + +func runtimeSyntaxMicroHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxMicroHdr, + "runtime/syntax/micro.hdr", + ) +} + +func runtimeSyntaxMicroHdr() (*asset, error) { + bytes, err := runtimeSyntaxMicroHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/micro.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxMicroYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x93\x31\x6f\xdb\x30\x10\x85\x77\xfd\x0a\x42\xc9\x20\xc1\x90\x91\x8e\x15\x10\x18\x41\x9b\x00\x1d\xda\x0c\xcd\x50\xa0\xcc\x70\xa2\x4e\x32\x61\x8a\x14\x8e\xa7\xc4\x46\xd9\xff\x5e\x50\x72\x63\xab\x6e\x6c\x6d\x3e\x7e\x8f\xf7\xee\xd1\xd7\x68\x83\xbc\xeb\xb1\x14\x9d\x56\xe4\x92\xa4\x46\x46\xc5\x65\x22\x84\x10\xf1\xd0\x42\x87\xa5\x48\xa5\x5c\x66\x23\x91\x5f\xa7\x49\x42\x83\x41\x3f\x31\x85\xf0\x0c\x8c\x1d\x5a\x1e\xb1\x2a\xf3\x3b\xcb\xb0\x0d\xca\x19\x47\x59\x61\xb4\xdd\xe4\xab\x5c\xca\x2a\x7d\x8f\x67\x20\xbe\x0d\x68\xeb\xdb\x03\x76\x25\xbe\xeb\xae\x37\x28\x9c\xc5\x78\x07\x92\xdf\xcb\x75\x8d\x96\x75\xa3\x91\xf6\xfa\x1a\x1b\x18\x0c\x07\x3b\x74\x15\x52\x78\xbb\x3e\x0c\xb6\x46\x8a\xda\x3a\x20\x91\xa3\xc0\xae\x76\xe3\xf9\xe0\x63\x39\x68\x1b\xef\x2a\xd4\x1a\x28\xa8\x81\xbc\x23\x29\xc7\x66\x93\x79\x29\x0b\xe5\xcc\xd0\xd9\xa0\x5b\xeb\x08\x43\xad\x5f\x74\x8d\x14\x18\xaa\x0a\x68\x66\x16\x7b\x20\x60\x3c\x72\xe7\x05\x3b\xb1\x41\xec\x45\xaa\x5c\x1c\x65\x9b\x0a\xc2\x16\xb7\x42\x19\x04\xfb\xde\x34\xbe\x47\xa5\xc1\x64\x9f\xd6\x40\xf3\xdc\x4e\xd0\x4c\x0d\x44\x68\x59\xca\x22\x5f\x45\xdb\x52\x16\x53\x08\x67\x65\xed\xc0\x8c\x71\xb8\x4c\xdb\xc6\xed\xa3\x79\x05\xb2\xda\xb6\xf9\xaf\x0f\xbf\xcf\x8a\x95\xeb\x62\xb6\x99\x94\xcb\x8a\x74\xbb\xe6\x0b\x1e\xfd\xae\xab\x9c\x89\x78\x56\x11\xa8\x0d\xb2\x0f\xae\x47\x02\x8e\xef\x01\x6d\x7e\x41\x7f\x28\x8c\x77\x28\x03\xde\x87\x0e\x14\xb9\xf0\x02\x74\x49\xad\x9c\xf5\x0c\x93\xdd\xac\x72\x7b\x23\x4c\x03\x86\x06\x8c\xc7\x71\xdc\xd5\xdb\x3f\x67\x8a\x3e\x26\x1f\x3c\x93\xb6\x6d\xc4\x07\x32\xf9\x6a\x02\xcf\xf6\xea\x09\x7b\x72\x2a\x4a\xfc\x1a\x2b\xb0\xed\x05\x41\x5c\xbb\x48\x6f\x70\xf7\xea\xa8\x9e\xd3\x7f\x9d\x2f\x27\x6f\x7b\x49\x58\x87\xbb\x70\xb3\xcd\x17\x3f\x6f\x8a\x8f\xcf\x8b\xf1\x77\xbe\xb8\x24\xbb\xd9\x46\x5c\x40\xd1\x88\xbb\xe2\xe1\x79\xce\x8f\xcf\x39\xad\x72\xfc\xc6\x65\x2c\x45\x7a\x95\xbe\x95\xd0\xd6\xa5\x48\xaf\x0f\x85\xa3\xed\x9f\xbe\x42\xc4\xcd\x2a\x45\x9a\x3d\x7c\xf9\xf1\xf5\x3e\x3c\x3d\x7e\x7e\x0c\xdf\x1e\x9f\xee\xf3\x72\x75\xe2\x6c\x4a\xf6\xb4\xa3\x4c\xff\x6d\x79\x5c\xf1\x1b\xdd\x8f\xd3\x48\xb9\x3c\xe3\x64\xde\xe9\xf0\x9e\x73\xe9\xff\x72\xba\x1a\x33\xba\x2b\x1e\x62\x4e\xcf\x8b\x34\xf9\x13\x00\x00\xff\xff\x39\xf1\xae\x51\x1a\x05\x00\x00" func runtimeSyntaxMicroYamlBytes() ([]byte, error) { @@ -2768,6 +4354,26 @@ func runtimeSyntaxMicroYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxMpdconfHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x2d\x48\xe1\xca\x2d\x48\x89\xd1\x4b\xce\xcf\x4b\x53\xe1\xe2\x02\x04\x00\x00\xff\xff\x86\x04\x46\xc3\x10\x00\x00\x00" + +func runtimeSyntaxMpdconfHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxMpdconfHdr, + "runtime/syntax/mpdconf.hdr", + ) +} + +func runtimeSyntaxMpdconfHdr() (*asset, error) { + bytes, err := runtimeSyntaxMpdconfHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/mpdconf.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxMpdconfYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x8f\x41\x8e\xdc\x20\x10\x45\xd7\xe3\x53\x20\x32\x52\x1b\x5b\xe3\x03\xb0\xc9\x41\x5c\xb6\x85\xa1\xc6\x8d\x62\x03\x82\x42\x51\x6b\x2a\x77\x8f\xdc\x49\x27\x1d\x29\xb3\x04\xde\x7f\xff\xf3\xee\x77\xa4\x5b\x42\x2d\x8e\xe4\x9a\xc6\x21\xa1\x25\x2d\x1a\x21\x84\x38\xdf\x82\x39\x50\x0b\x79\x24\x07\x30\xd8\x18\xde\x5f\x65\xd3\xe4\xba\x63\xd1\x77\xe6\x4d\x14\x32\x84\x07\x06\xd2\x42\x02\xac\x6d\x2d\x98\x79\xcb\xb1\x26\x5e\x7d\x70\x0b\xc5\xc5\x38\x97\xb1\x14\xbe\xc6\x42\x9c\x62\x26\x4e\x7b\xdd\x7c\xe0\xd3\xce\x67\xbd\x02\x58\xe5\x27\xc2\xf6\xa8\xc5\x5b\x4e\xbb\xb9\xed\xbe\x90\x5a\x9c\xcf\x68\x29\xe6\x1b\xb7\x6e\xe5\x3d\x6e\x7c\x8f\x70\xf2\x8e\x0b\x79\xfb\x0d\xb3\x5a\xce\xf1\xff\x58\x13\x5a\x6f\x76\x2d\xe4\xdc\xfa\x90\x2a\xb1\xa9\xce\xc7\x25\x56\x3a\x0f\x0e\x6d\x74\x98\xd5\x38\xea\x92\x8c\x45\x3d\x4d\x1d\xc0\x07\x03\xfc\x78\x18\x6c\x0c\x85\x4c\xa0\xa1\x50\xf6\x61\x3b\xd7\xc9\x16\x00\x60\xe0\x71\x06\x39\xa9\x0e\x24\x5f\xfe\xdc\x5c\x26\xd5\x5d\xfe\x66\x8f\xdf\x3f\x6a\x67\x7e\xea\x50\x5f\xda\x71\xfe\x98\x86\x4e\x7d\x7d\x7d\xb0\x3e\x38\x0c\xf4\x66\xaf\x26\x0f\xdf\xaf\x9e\xf0\x17\x2c\xe4\x53\xae\xff\x1f\xad\x85\x7c\xe9\x45\xcf\xa2\x7f\xe9\x65\xf3\x33\x00\x00\xff\xff\x32\x59\x3a\x12\xda\x01\x00\x00" func runtimeSyntaxMpdconfYamlBytes() ([]byte, error) { @@ -2788,6 +4394,26 @@ func runtimeSyntaxMpdconfYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxNanorcHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x4b\xcc\xcb\x2f\x4a\xe6\x8a\xd1\xb3\x87\xb0\x54\xb8\xb8\x00\x01\x00\x00\xff\xff\x9f\xc7\x64\x9d\x13\x00\x00\x00" + +func runtimeSyntaxNanorcHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxNanorcHdr, + "runtime/syntax/nanorc.hdr", + ) +} + +func runtimeSyntaxNanorcHdr() (*asset, error) { + bytes, err := runtimeSyntaxNanorcHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/nanorc.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxNanorcYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x93\x5f\x6e\xe3\x38\x0c\xc6\xdf\x73\x0a\x23\xdb\x07\xbb\xbb\x9b\x03\x04\xd8\xcd\x41\xaa\x16\xd0\x1f\xda\x16\x22\x93\x2a\x45\xc5\xcd\x80\x87\x1f\xd8\x49\x3b\xe9\xb4\x53\xcc\x3c\x29\x91\x7f\x24\x3f\x91\x1f\xfb\x98\x40\xce\x19\xf6\x0d\x5a\x24\xf6\x9b\x4d\x00\x01\x2f\xfb\x66\xd3\x34\x4d\xb3\x7c\x46\x3b\xc1\xbe\xd9\x1a\xb3\x3b\x5c\x98\xbb\xed\x66\xc3\x35\x41\xd9\xaf\xcc\xbf\x4d\x80\xde\xd6\x24\xfb\x66\xdb\x1e\x62\xf7\xf4\xf0\xb0\x2f\xd9\x7a\xd8\x3f\x3e\xde\xb7\x6d\xc5\xee\x50\x40\x34\xa2\x4f\x35\x80\x96\x33\x8a\x7d\xd1\x78\xf0\x94\x88\xbb\xdd\xfd\xdd\xf6\x9a\xe6\xa2\xe3\x93\x1c\x4b\x78\xc5\x02\xd2\xdd\x5c\xff\xdd\xda\x2a\x14\x31\x00\x8a\x3a\xeb\x8f\x35\x5f\x8f\x10\x79\xfd\x35\x5b\x0e\x45\x1d\xa5\x20\xf0\x22\xea\xd8\xfa\x23\x48\x51\x6f\x0b\x14\xc0\x12\x25\x9e\x40\x3d\x61\x11\xf5\x55\xb4\x8f\x29\xe9\x18\x8b\x10\x9f\x13\x0d\x3a\x59\xf1\xe3\x5b\xd4\x44\x0c\x6b\x6d\x9d\xa8\x16\xd0\xa9\x26\x89\xae\xf6\x3d\xb0\x22\x79\xc2\x13\xb0\x28\x52\x4f\x29\xd1\xac\x48\x23\xa4\xac\x48\x08\x73\x8a\x08\x45\x91\x66\xb6\x59\x29\x03\x5b\x89\x38\x2c\x32\x33\x43\x01\x3e\x81\xe6\x8a\x5e\x3a\x63\xfe\xd7\xdf\x7a\xfa\x73\x8d\xfe\xe8\x92\xc5\xa3\x3e\x57\x12\x28\xc2\xca\xe0\x22\x86\x00\x09\x04\xae\x7f\x8e\x70\xce\x36\x28\xc3\x00\x2f\x59\xcb\x64\x59\x46\x9a\x40\xcb\x44\x24\xa3\x96\x0c\x29\x01\x6b\xa9\x25\x03\x06\x15\xeb\x4a\xfc\x06\xeb\x29\xb4\x56\x2b\x2a\x30\xe5\xc5\x06\x5a\x31\x90\x9e\x22\xcc\x3a\x8f\x51\xae\xbd\x98\x89\x83\xa3\x8a\xa1\x74\xc6\xb8\xd7\x49\x66\x86\xcc\xe4\xbf\x1e\xe6\xcf\x8e\x18\xc1\x06\xe0\xdb\x34\xeb\x68\x2c\xca\xce\x11\xa5\x9d\x70\x7d\xb5\xc7\x92\xe4\xd7\x60\x6f\x53\x79\x23\x2f\xcd\xbb\x61\xe3\x62\x98\xd8\x47\xe0\x4f\xe5\xc5\xee\x62\xcc\x77\x97\x8e\xe3\x30\x4a\x77\x68\xd7\x97\xab\x4b\xd6\x1f\x95\x21\xa8\x4b\x15\x74\x60\x00\xd4\x33\xac\x73\x9f\xec\x00\x28\x56\xfd\xd9\x62\x77\x68\xff\xf9\xd3\x90\xee\x70\xa3\xb5\x64\xf0\xd1\xa6\x2f\x85\x1a\xe3\xd4\x18\xd7\x16\xb1\x2c\x0a\x18\xba\xff\x3e\xb4\xa5\x08\x47\x1c\x96\x25\xde\xb6\xc6\x18\xb3\xd3\x87\x27\xb3\x7d\xec\xee\xcd\xf6\x07\x3b\x4d\x80\xcb\x0e\xbf\x2b\xf3\xd7\xcd\x7e\x5e\x91\xdd\xa5\x1b\x1f\xc8\x0b\xfa\x3d\x00\x00\xff\xff\xa1\x3c\x8d\x21\x51\x04\x00\x00" func runtimeSyntaxNanorcYamlBytes() ([]byte, error) { @@ -2808,6 +4434,26 @@ func runtimeSyntaxNanorcYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxNginxHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x4b\xcf\xcc\xab\xe0\x02\x93\x7a\x5a\x31\x7a\xc9\xf9\x79\x69\x2a\x35\x31\x7a\x60\x01\x15\xae\x38\x8d\xe2\xd4\xa2\xb2\xd4\xa2\x9a\xd2\x82\xe2\x92\xa2\xd4\xc4\x5c\xcd\xe8\x44\xdd\x2a\x85\x58\xad\x98\x6a\x15\x2e\x40\x00\x00\x00\xff\xff\xa8\x3b\x93\xb7\x3b\x00\x00\x00" + +func runtimeSyntaxNginxHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxNginxHdr, + "runtime/syntax/nginx.hdr", + ) +} + +func runtimeSyntaxNginxHdr() (*asset, error) { + bytes, err := runtimeSyntaxNginxHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/nginx.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxNginxYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x58\xdd\x8e\xeb\x28\x12\xbe\x9e\x7e\x0a\x2b\xdb\xd2\xe9\x1f\x75\x6b\xa5\x9d\x9b\xcd\x5c\xac\xf6\x35\xb6\x93\x83\x08\x94\x63\x26\x18\x38\x14\x4e\xc7\x7d\x78\xf8\x55\x01\xb6\xb1\x3b\x91\x92\x54\x7d\xc5\x6f\xfd\xdb\xad\xd2\x10\x46\x07\xfb\xc6\x9c\x95\xb9\x3d\x3c\x48\x08\x20\xc2\xbe\x79\x68\x9a\xa6\x21\xa9\xe1\x3d\xec\x9b\x5d\x12\xbf\xbf\x1c\x0e\xef\xc2\x9a\xf6\x31\x1e\x0e\xef\x09\x7a\xdc\xa5\x91\x1d\x70\x09\x7e\xdf\xec\x7e\x3e\x21\xf8\x2b\xf8\x38\x38\x0c\x1e\x78\xff\xfc\xc1\xdf\xbe\x9a\xe3\xcb\xe1\xf0\xfb\x71\xf7\xf0\xe0\x07\x0d\xb8\x4f\x73\xde\x1a\xe7\xc1\x79\x2b\xf6\xcd\xee\x70\x38\x3d\xc1\x15\x4c\xc0\x58\xe6\x77\x21\xb8\xa8\xad\xe0\x41\x59\x53\xad\xf6\xb1\x47\xc7\x05\xec\x8f\x69\xc9\x5d\x59\x09\x03\x0f\xd0\x83\x09\xfb\x66\xf7\xf4\x33\x2e\xa3\x7e\xff\x75\x7c\x7e\xe2\x42\x00\x22\xd3\xf6\x1c\xb9\x94\x8c\xb7\x01\x3c\x3b\x59\x39\x26\xf6\x04\xad\xf5\xb0\xf0\xf9\x2e\x44\x2a\xda\x9b\x91\x7e\x30\x72\x65\x23\xd7\x8a\x63\xe4\x5a\xdb\xcf\xc8\x8d\x50\x60\x02\x3b\x79\xfb\x89\x34\x7c\xcd\xb3\x2b\xd7\x03\x44\x3e\x84\x8e\x9d\x38\x2a\x51\x91\x6c\xa0\x01\xa4\x5c\x02\xad\x32\x12\x6e\x0b\xc5\xe0\xc6\x45\x60\xa8\xbe\x2a\x31\x23\x4d\xe8\xa0\x7a\x88\x27\x0f\xfc\x12\x45\xc7\x3d\x42\x98\xfe\x59\xcf\xdd\x4c\xe7\x03\x8b\x6e\x30\x17\x90\x2c\x78\x6e\xb0\x05\xcf\xc0\x08\x2b\x95\x39\x47\xa1\xf3\x49\xad\x1c\xd9\x69\x68\x49\x96\x76\xab\x71\x65\xd2\x01\x99\x35\x7a\xdc\x0a\x50\x99\xb3\x86\x32\x75\x25\x0c\xd0\x3b\xe6\x78\xe8\xd6\xa8\xea\xc1\x0e\x61\xc2\xb2\x7e\xef\xed\x5c\x24\x9b\xf1\x3d\xbf\xe5\x75\xf2\x50\x6b\x0c\x88\x64\x18\x67\xad\x2e\xa0\x07\x1e\x80\xb5\x83\xd6\xcc\x0d\x21\x1f\x41\x72\xe8\xad\x89\x92\x5f\x59\x76\x80\x44\xf6\x10\x3a\x2b\x31\x4a\x68\xf9\xa0\xb3\xb2\xa2\x04\x33\x46\xa9\x7c\x5a\x78\x26\x18\xd7\xea\x6c\xc8\xab\xa2\x54\xc8\x4f\x1a\x18\x8e\xbd\x56\xe6\x82\x11\x7a\x17\x46\x76\x56\x6d\x04\x73\x8d\xe0\xbd\xf5\xc9\xbf\x32\xe5\xf8\x19\x22\xdc\x9c\xf2\x80\xb1\xe5\x18\xc4\x59\xad\x2e\xbc\xc6\xea\x31\x38\xd9\x04\xd7\x23\x05\x17\xdd\x86\x63\xa7\xd1\x71\xc4\x0d\x78\x81\x71\x83\x68\x2b\x2e\x77\xa0\x59\xcf\x6b\x51\xaf\x0c\x39\xe8\x76\xd9\xa4\xd2\x35\x34\x20\x30\x0c\x5c\x6f\x8f\x75\xe5\x5a\xc9\x05\xcb\x06\xfb\xb6\x5b\xa7\x24\x4c\xb1\x36\x61\xea\x6c\x28\x14\x8b\xe1\xf9\xc9\xfa\xb0\x95\xe5\x19\xcb\xe9\x72\xf4\x2c\x5c\x00\x2f\xc0\x05\x96\x0c\xb1\x0c\xbb\x00\xb8\x74\x94\x19\x21\xb7\x4a\xfe\x9a\xfc\x7c\xa5\x6b\x03\xb7\xc0\xa6\x94\xb3\xa0\x76\x63\x04\xc7\x7d\x25\x5e\x99\x82\x98\xed\xe5\x3c\x70\xf9\x4d\x0b\x08\xe6\x0e\xe8\xb4\xca\x4e\xcc\x94\x69\xed\x82\x07\xeb\x61\xcd\x4d\xae\x3d\x81\xcb\x8d\x3e\xbd\x0a\x9b\x7b\x2d\xe1\xd9\xea\x6b\x3c\x83\xa5\xaf\x72\x4c\xa8\x30\x4e\xa4\x1d\x4c\xf0\x63\x3c\x7f\x29\x97\x7e\x66\x17\x4d\x8c\xb0\xbd\x63\x1a\xae\xa0\x33\x5f\xe2\x22\x33\x94\xb2\xd9\x15\x3c\x52\xc6\x4e\x08\xf9\x92\x06\x73\x0e\x5d\xe6\x9d\xb7\x37\x05\x32\x33\x94\xb3\x95\xc8\x74\x4e\x59\x89\xbc\x72\x3f\x46\xd5\x46\xd5\xb2\xde\x4a\xd5\x2a\x90\x94\x71\x04\xc4\xe2\x01\xca\x24\x07\x9b\x3d\x41\xf5\xfc\x0c\x74\xe7\x00\x7e\xc5\x4c\x19\x6a\x85\xfd\xed\xe0\xcc\x7e\x0d\x5c\xd3\x9d\x57\x12\xec\xb8\x77\x60\xd6\x60\xca\x9e\x8e\x7b\x30\x62\x8c\xca\x08\x3d\x48\x88\xd9\xe7\x92\xaf\x19\xae\x23\x5d\x9d\x63\x17\xc9\xc7\xb8\x56\x57\x58\xa8\x59\x41\x0b\xe2\xe1\xd7\x00\x18\xb0\x82\x26\xfb\x6b\xee\xcf\xb3\xf7\xaf\xd2\x24\x46\xad\x7a\x15\xb2\x07\x2f\x24\xa5\x9c\x62\x8e\x0a\xfc\xb2\x06\x0a\x0f\x37\x0a\x86\xc2\x78\x1e\xa0\x22\x73\x1d\x9c\x00\xf8\xb5\x50\xdf\x96\x25\xac\x5a\xb5\x90\xe6\x0c\x5e\x99\x33\x13\xda\x62\xcd\xa7\x32\xb5\x66\xd3\xed\x14\x06\x30\x4b\x4d\xa7\x4d\x5a\xeb\x7b\x1e\x12\x69\x6c\x60\xad\x1d\x8c\x4c\x1c\x0e\xa7\xa2\xa8\x48\xa5\xad\xe7\x59\xc7\xec\x34\x88\x0b\x94\xea\x38\x83\x14\xca\x05\x41\x32\x1a\x35\x15\x14\x14\x84\x7b\x6e\xce\x80\xb1\x87\x3e\x05\xaf\x5c\xa5\xe1\x05\xdd\x66\xa9\x45\xb2\x4e\x06\x0b\x9e\xe2\x7d\x61\x57\xd1\xbd\xc0\xab\xf8\xee\x81\xec\x8b\x9a\x63\x47\x47\x52\x86\x49\xd0\x10\x80\x49\x70\xa1\x8b\xbd\x95\xe0\xcd\xdc\x51\xac\xd9\xd2\x50\xf4\xee\x4f\xfa\xae\x6f\xe1\xfe\xcc\x45\xb2\xc6\x50\x51\xce\x96\xa9\xe0\x27\xc6\x43\xeb\x01\xbb\x68\x1d\x94\xda\x9e\xb3\xd9\x86\x9f\x12\xe7\x16\x9e\xcb\xc2\x56\x90\xb3\x7d\x42\x93\x45\xeb\x95\x83\xea\xd5\x17\xb0\xdc\xd2\x31\x6a\x25\x31\xda\x2b\x78\x4f\xb9\x7f\x6a\x61\x9c\xf0\xc0\xfe\x56\x21\x3a\xf0\x3a\xfd\x50\xe0\x53\x9f\x98\x19\xf2\x03\xe5\x21\x33\x69\x82\x92\xd1\x59\x1f\xa8\x17\xf1\x90\xab\x75\x74\x16\x83\xb3\x06\x98\x1d\x82\x1b\x42\xa4\x54\xb3\x6e\x6f\x6a\x84\xb4\x52\xf3\x38\x73\xdb\xfa\x9b\xf1\x7c\xa1\x8a\x9e\x6a\x6f\x0d\x51\xe5\xad\xf9\x54\x77\xb7\xc0\xec\x0c\xb5\x60\x56\x6e\x0d\xa6\x44\x5d\x03\x4b\xbd\xad\xd1\xac\xff\x82\x6c\xbc\x78\x42\xed\x45\x01\x93\xb6\xe7\xca\xac\xb1\x6a\x8f\xba\x1e\x17\xa4\xce\xe7\x19\xba\x57\xa0\x57\x92\x29\x29\x17\x70\x5b\x8e\x33\x7c\xa7\xf4\x66\xc1\x3a\xd6\x0a\x66\x57\xda\xaf\xb4\x5e\x17\xd9\x8c\xac\x82\x70\x82\x26\x07\x49\xec\x2a\x1e\x27\x28\xac\x57\x41\x24\x3f\x43\xba\x36\xf3\x30\xe0\xb4\x75\x2e\xbf\x15\x3d\x15\xdf\x0c\xdd\x2d\xbd\x95\x28\xe9\xda\x73\x23\x6d\x5f\xba\x96\x74\x5c\x4e\x7b\x13\xa9\x19\x15\x92\x7c\x10\x0f\x62\xf0\x48\xb5\x61\x69\x28\x31\x96\x8c\x58\x35\xbe\x1e\x52\xc3\xaf\x7a\x90\x76\x08\x6c\x69\x8e\x49\x62\xf5\x35\x2d\x95\x89\xf9\xd6\x1e\xc2\xe0\x69\x40\x3a\x66\xf4\xd6\x86\x88\x3c\x28\x6c\xc7\xe9\x9f\x71\x33\x46\xa4\x33\x00\xa3\x7e\x97\x21\x08\x0f\x21\x26\xed\x69\xfb\xc9\x0b\x39\x2d\x49\x4c\x7a\x9e\x99\x88\x64\xe2\xf4\x04\x32\x3d\xcf\xad\xfe\x52\x2a\xa8\xe9\x55\x28\xd7\xe9\xe2\x7b\xd6\xff\x2e\x9d\xd3\x7f\x11\x05\x7b\x01\x43\x0f\x92\xb4\x14\x15\xaf\xac\xda\xd6\xdb\x3e\xa2\x1d\xbc\x58\x72\x4f\xee\xb4\xb2\x3b\x63\x44\x54\xf4\x65\x48\xcf\xbd\xb3\xcf\x12\x92\xfb\x13\x44\x4d\x5f\x26\xc0\x07\xd5\x2a\x41\xf5\x74\xc3\xa7\x24\x90\x30\xe5\x3a\x48\xb3\xf5\x14\x2e\xdf\xa6\xf9\xbc\x9c\xec\x72\x27\x49\x34\xd0\x53\x75\x16\x3b\x0f\x29\x77\xe5\x4b\xd5\xeb\x39\x6f\x83\x15\x56\x67\x6e\x72\xd5\x1c\x25\x35\x32\x9b\x07\x35\xc5\xb1\x6a\xc7\x72\x94\x1a\xc9\xb5\x07\x87\xd3\xd4\x42\x2d\x24\xb3\xd4\x76\x55\x7c\x56\x43\x10\x8e\x19\x2b\x41\xf3\xb1\xd0\x6e\xc0\x2e\xd2\x6e\x9e\x25\x77\x1b\x92\x0b\x06\x3f\xa6\x78\xc0\x58\xe6\xd1\xef\x77\x83\x56\xf0\x6c\xc9\xc1\x50\x16\x11\xd6\x03\x92\x6b\x4c\x59\x65\x30\xca\xa8\xa0\xb8\x56\x5f\x20\xa9\x53\x54\xe9\xa9\xec\x93\xfb\xe5\x15\x41\xa4\xa7\xeb\xf4\xa3\x64\xf9\x9b\x52\x5f\xe1\xa6\x07\xb3\xc2\x26\x5f\x2c\xb4\xfb\x97\x9b\x49\x0a\xd7\x42\x93\x0d\x94\x80\x98\x1b\xcf\x64\x17\x3a\xce\x74\x80\x3b\x97\xda\x88\xe6\x8b\x7d\x5a\x7f\x49\x1d\x8a\xb2\x9e\x3a\xd0\x99\x4f\x1d\x0b\xe0\x04\xf8\xa9\x9f\xf3\xb0\x81\x8c\x4d\x91\x46\x20\x75\x57\x39\x66\xac\x1f\xe3\xad\x27\xf7\x09\x2a\x28\xc0\x78\x43\x1d\x18\x86\x51\x03\x76\x00\x21\xf3\x49\xd3\xcf\x4f\xd5\x3b\x94\xf8\xf8\x3c\xbd\x42\x11\xd6\x60\xe0\x26\xbc\x9f\xac\xd5\xef\xc1\x0f\x50\xde\xcb\x58\xf3\x7c\x38\x9c\xee\x0f\x6b\xb9\xc6\x79\x5c\xdb\xd6\x03\x95\xa4\xc3\xb4\x2a\xbd\x16\x3a\x1c\x1e\x3f\xfe\xfb\xf6\x3f\xfe\xf6\x75\x2c\xff\xff\x7c\xfb\x37\x3b\xbe\xcc\xef\x6f\xc6\xfe\x64\xf5\xbe\xd9\x7d\xbc\x1c\xb7\x3b\xbd\x61\xa0\x7a\x4d\xab\xec\x9e\x0e\x87\xc3\xe1\x3d\x7e\xfc\x3c\xec\x8e\xcf\x2f\x87\x5d\xfc\x31\x23\x3f\x8e\xcf\x2f\x3f\xbe\x9d\xb2\xcc\x4d\x30\x7d\x30\x70\x1f\xf6\xcd\xee\x47\x79\x71\x45\x1f\x30\x92\x90\xbf\x2a\x28\xbf\xa6\x6a\x3e\x8e\x0f\xf3\x82\xfd\xbd\xd7\x4b\xc7\xe7\x7f\x3c\x7d\xfc\xfc\x7d\x7c\x7f\x79\xfe\xcf\xe3\x7c\x73\x43\x57\x7f\xa3\x1c\xf3\xfe\xd9\xa9\x00\x79\x70\xb3\xab\xe6\xbd\xde\x1b\xbd\x6f\x76\x7f\xbc\x36\xaf\xb1\x79\xfd\xe3\x75\xf7\xf0\xff\x00\x00\x00\xff\xff\xa1\x09\x81\xbe\x9c\x13\x00\x00" func runtimeSyntaxNginxYamlBytes() ([]byte, error) { @@ -2828,6 +4474,26 @@ func runtimeSyntaxNginxYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxNimHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\xcb\xcc\xe5\x8a\xd1\xcb\xcb\xcc\x55\xa9\x01\x53\xc5\x2a\x35\x79\x99\xb9\x7a\xc9\x69\xe9\x5c\x5c\x80\x00\x00\x00\xff\xff\x9a\xfa\xb5\x6e\x1c\x00\x00\x00" + +func runtimeSyntaxNimHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxNimHdr, + "runtime/syntax/nim.hdr", + ) +} + +func runtimeSyntaxNimHdr() (*asset, error) { + bytes, err := runtimeSyntaxNimHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/nim.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxNimYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x56\xeb\x6e\x1b\xc7\x0e\xfe\xef\xa7\xd0\x51\x7c\x8e\x25\xfb\x58\x8d\x9d\xc0\x4d\xd5\x8b\x9b\x26\x76\x11\xa0\x6d\x80\x3a\x05\x8c\xee\x6c\x52\xee\x0c\x57\x3b\xf1\x5c\xb6\x73\xb1\xad\x84\xe9\xb3\x17\x9c\x5d\xc9\x6e\x91\xa2\x11\x20\xce\x90\x9c\x1b\x3f\x7e\xa4\xd4\x6a\x83\x69\xdd\xe3\x72\xe2\xb4\xdd\xd9\x51\x98\x50\xa6\xe5\x64\x67\x32\x99\x4c\xd8\xe7\xc0\xe2\x72\x32\x15\x62\xe1\xb4\xdd\xa5\x61\x8c\xbb\xe4\xb4\x5d\xc8\x76\x35\xdd\xd9\x09\xd9\x60\x5c\x96\x0d\x87\x93\x3e\x60\x1f\xbc\x5c\x4e\xa6\x95\x10\xef\x85\xa0\x5a\x88\x66\x06\xc9\x5b\x32\x3a\x51\x5c\x5b\xd2\x0a\x5d\x22\x09\xc6\x90\xb9\x06\x93\x91\xa2\x56\x88\x6d\x8b\x32\x91\xf3\xf7\x94\x1e\x02\x58\x5a\xa1\xc3\xa0\xe5\xa0\x58\xaf\xb2\x41\xe2\x17\x93\xc1\x44\xd7\x10\x48\x7a\x17\x13\x05\x8c\xd9\x24\xe2\xdb\xc9\x62\xea\xbc\x22\x9d\x30\x40\xf2\x65\xc5\x35\x86\x84\x81\x2c\xc8\xe0\x29\xa1\xed\x0d\x24\xa4\x56\xa3\x51\x84\x2e\xdb\x61\xd6\xfa\xc0\x27\x1a\x68\xd0\x90\xbb\xaa\xe0\xf0\xdd\xd3\xc3\x5f\xeb\x03\x02\xa3\x21\x92\xf3\x65\x9c\x0b\xd1\x54\x42\x7c\xe0\xf0\xa6\x63\xe0\x31\x41\x42\x8b\x2e\x15\xb0\x9a\x19\x28\x15\x08\x9c\x22\x88\x04\xd1\x12\x43\xa0\x25\x35\xda\x29\x6a\x8c\x97\x57\xd4\x04\x84\x2b\x92\x10\x91\x45\xe2\x47\x4a\xec\xd3\x18\x8e\xf4\x2e\x69\x97\xf1\xde\xdb\x15\xb6\x2c\x75\x94\x10\x14\x8f\x49\x3b\x99\x48\xe9\x6b\x52\x9e\xd0\xe8\x96\xd0\x44\x24\x74\x43\x48\x84\xb7\xe5\x40\xbc\xed\x7d\x48\xd4\x6a\x07\xc6\xac\x39\x46\x6a\x83\xb7\xd4\x66\x27\x37\xe8\x92\x6e\x49\xdb\xb2\x4e\x3b\xd2\x4e\x9a\xac\x90\xb4\x4b\x18\x5a\x90\x48\x3a\x92\x8e\xce\xa7\x3b\x4c\x19\xfd\x01\xcd\x11\x6d\xab\x6f\xb5\xe3\x04\x91\xd3\x86\x78\xad\xf3\x49\x3b\xf2\xcd\x5b\x4e\xa6\x6f\xc9\x07\xf2\x79\x4c\x51\x9f\x02\x05\xd0\x11\x29\x60\x4b\x01\x53\x0e\x8e\x62\x67\x28\x76\x81\x18\x4c\x2d\xef\xd2\x94\xc2\x9a\x52\xee\x37\x89\xcf\x51\xbb\x55\x49\xfd\x4d\x87\x8e\x6e\x3a\x6d\x90\x6e\x74\xea\x8a\xe0\x2b\x6e\x7d\xa0\x35\x67\x94\x53\xf5\x4f\x29\x52\xd8\x07\x94\x90\x50\x91\xf3\x17\x5a\xe1\xd9\x40\xbb\x92\x80\x90\x25\x47\xa9\x70\x3b\xf5\xd7\x18\x82\x56\x58\xde\x3f\xf0\xce\xf6\xda\xe0\x2b\x6d\x91\x9c\xff\x79\x08\x01\xe4\x5a\x1a\x2d\x07\xb4\x29\x76\x60\x8c\xbf\xa1\x3e\x07\x64\x1a\xfc\xe4\x2f\x12\xc8\xab\xf3\x00\x16\x09\x43\xe0\x54\x40\x02\x43\x37\x10\x1c\x07\xd5\x69\x97\xc8\x68\x87\x45\x40\xb8\x90\xe0\xce\x9c\x2a\x77\xe5\x84\xea\x7b\x9f\x3c\x65\x17\xbc\x31\xa4\xad\x45\xa5\x19\x1f\xd9\xa1\xbc\x8a\xd4\xf8\xec\x54\x7c\x36\x28\xfc\xdc\xd6\xf8\x9b\x51\x75\xda\x8c\x33\x88\x11\x03\x03\xec\x5d\xdc\xdc\x1b\xcb\xc5\x91\x7c\x9f\xb4\xd5\xef\x8a\x93\x7a\x48\x09\x83\x8b\xa5\x56\x99\x86\xd4\xe7\xd8\x51\xef\x7b\x5a\x19\xdf\x80\xa1\x3e\xc0\xca\x02\x13\x0c\x83\x66\x64\xc1\x50\xa3\x53\xd4\xef\x90\xae\xbd\x81\xc4\x89\x71\xfe\x39\x4a\x43\x1d\x82\xc2\xc0\xd4\xf2\xb6\x37\x98\xf0\xa2\x00\xbb\x41\x91\xe3\xbd\xa2\x1e\x62\x7c\x56\xe4\x0f\x84\x56\xa7\x91\x93\x72\x33\xf6\xfd\x38\xf3\xcd\x5b\x49\xd2\x2b\x5c\xa1\x2b\xc7\x6b\xc7\x2c\xbb\x48\x96\x09\x9c\x14\xb6\x8c\x61\x4c\x61\x9c\x5d\x43\x80\xb0\x8a\x63\x2d\x48\xc2\x5b\x0e\x8d\x9a\xb5\xf4\xfd\x9a\x9a\x35\x93\x30\xbb\x21\x6a\x79\x85\x8a\xb2\x2b\xa0\xa2\x22\xb5\x76\x46\x37\x24\x15\x5f\x93\xba\x80\xa0\x68\x25\x23\xb4\x38\x6a\xcc\x85\x55\xe6\x9a\xe4\xba\x8e\xf7\x79\xf1\x17\xfa\xad\x6d\xe3\xcd\xc2\xf7\x43\x01\x71\x8b\xfc\x5a\x88\x03\x21\x0e\x85\xd8\xff\xec\xab\x6f\xbe\x15\x62\xf7\x8f\xff\xfd\x57\x08\xfa\x8f\x10\xa7\x42\xbc\x16\x62\xb1\x14\x42\x88\xfa\x60\x7b\x44\x8f\x52\x83\x29\xfc\x7d\x2f\xc4\x82\xdb\xb1\x10\x1f\x48\x88\x6a\xab\xd5\x24\xc4\x6c\xab\xcd\xe9\x4b\xfa\x3f\xfd\xf6\xf1\x12\x58\x08\xb1\xd8\x78\x86\xdf\x80\x52\x17\x4c\x41\xc9\x42\xbb\xf4\x84\xc5\xd1\x09\xcb\x47\xc7\x2c\x4f\x1e\x53\x66\x5f\x2e\xce\x3c\x78\xf3\xe0\xce\x83\xbf\x35\x1e\xd2\x20\x1f\x1d\x0f\xe3\xc9\x63\x6a\xbc\x37\x24\x3b\x08\x43\x6f\x8a\x29\x30\xdf\xe5\x38\x42\x08\xb0\x26\xdf\xa3\x1b\x66\x11\x7f\xdf\xe6\x6c\xa8\xfc\xb1\x8d\x44\x6e\xfa\x5e\x2b\x82\x9c\x3c\xc9\xd8\x71\xcb\x0a\xe0\x56\x58\xda\xce\x2b\xca\x8e\x43\x51\xa5\x53\x28\x8c\xf2\x7e\x0a\xc6\x20\xf7\x2a\xfd\xa2\x9e\x3d\xa1\xa3\x13\x7a\x74\x4c\x27\x8f\xe7\xa7\x42\x34\xb4\x57\xe5\x5f\x3e\x66\x6d\xcf\xeb\x59\x31\xd0\xd1\xf1\x93\x8d\x51\x3d\xaf\xef\x9d\x5b\x3a\x06\xb8\xb4\x70\xd9\x36\x18\x06\x1c\xab\x87\x87\x5f\xd4\x07\xff\xb6\xea\x61\x75\x7b\x59\xf3\xd2\xa7\x87\xe7\x70\xd8\x96\xe9\x9b\x71\xfe\x09\x9b\xbd\x7c\xc6\x5b\x3e\x2f\xe2\xcd\xa7\xec\x68\xbe\xab\xab\x87\x47\xfc\xfd\x84\xe5\xe5\x35\xf5\x8c\xf9\x74\x3a\x1f\x94\x83\xf9\x69\x85\x67\x75\xc5\xc4\x2d\xaf\xad\x47\xfb\xc7\xce\x1a\xb2\xcb\x67\x4d\x67\x4c\xe5\x05\x55\xaf\xc5\xb4\x9e\xef\x8b\x29\xed\x6d\x2d\x7b\xf5\x7c\x7f\xef\x6e\xaf\x1d\x09\x5a\x55\xcb\xd8\x83\xc4\x65\x5d\xef\x3f\x58\xec\xef\xfe\x7d\x45\x51\xf9\x13\x13\x84\x81\xd1\x0f\x84\xa8\xa6\x5b\x3b\x3a\x55\xac\xb5\x10\x0f\xee\xac\xc3\xff\x95\x49\x55\xef\x6c\x58\xe1\x95\x5f\x4e\xa6\xb3\x57\x2f\x9f\xbf\xa4\xf3\x17\x97\x3f\x9e\xd1\xe5\xe5\xe5\x7c\x79\x3a\xdd\xf9\x33\x00\x00\xff\xff\x36\xeb\x3a\xbe\x1e\x09\x00\x00" func runtimeSyntaxNimYamlBytes() ([]byte, error) { @@ -2848,6 +4514,26 @@ func runtimeSyntaxNimYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxObjcHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x4f\xca\x4a\x4d\x2e\xc9\x2c\x4b\xd5\x4d\xe6\x8a\xd1\xd3\xc8\xad\xc9\xcd\xad\xc9\xd0\x54\xe1\xe2\x02\x04\x00\x00\xff\xff\x6c\x8c\xff\xf1\x19\x00\x00\x00" + +func runtimeSyntaxObjcHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxObjcHdr, + "runtime/syntax/objc.hdr", + ) +} + +func runtimeSyntaxObjcHdr() (*asset, error) { + bytes, err := runtimeSyntaxObjcHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/objc.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxObjcYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x55\x6f\x6f\xdb\xb6\x13\x7e\x9f\x4f\xe1\x9f\x9a\xdf\x2a\xba\xb3\xd3\xfd\x41\xb1\x7a\x5d\x9c\xb4\x4b\x86\x02\x69\x32\x2c\x2d\x90\x55\x74\x05\x8a\x3c\xd9\x5c\x28\x52\x23\x8f\x49\x9d\x5d\xbf\xfb\x40\xd9\x4e\xec\xe6\xcf\x0a\x0c\x98\x5e\x58\xe2\xe9\xb9\xbb\x47\x77\xcf\x9d\x6b\x6d\x00\xe7\x2d\x8c\x7a\xae\xfa\x03\x24\xea\x0b\x18\xc8\xad\x2d\x05\x08\x12\x47\x5b\xbd\x5e\xaf\x97\x20\x56\x34\x30\xea\x65\x9c\x0f\xf3\x86\x9a\x86\x66\x6c\x3b\xdb\xda\xf2\xd1\x40\x58\x80\x06\xbd\x45\x94\x8c\xf3\x2a\xaf\x8d\x13\x48\xca\xc5\xca\x00\xbd\xfa\xe5\xb0\x3b\x6a\x45\x95\x73\x86\x5e\x9e\x9c\x1c\xd1\x4b\xe7\x0c\x08\x4b\x72\x26\x3c\x69\x8b\x14\x66\xce\x23\x19\x67\xa7\x14\xf4\x15\xb8\x9a\xc0\xc6\x86\x2e\x9c\x56\x14\x50\xa0\x96\x24\x9d\x0d\x48\x01\x7d\x94\x48\xd1\x6a\x67\x29\xe5\x54\x50\x13\x7c\x44\xf0\x96\xf2\x68\xd9\x38\xe8\xa9\x05\x45\xda\x1a\x6d\x81\x5e\x19\x11\x02\x9d\x1e\x1c\xd1\xeb\x37\xbf\xd2\xf1\x69\xfe\x8e\x8d\x5f\x5b\x84\x29\x78\xc6\x79\x95\xdd\x26\x9f\x87\x71\x62\xc0\x28\xcf\x63\x39\x66\x63\x6d\x31\xff\x81\xbe\x79\x46\xdf\x7d\x4b\xcf\xbe\xa7\x16\x3d\x63\xac\xc4\x3b\x9d\x8b\xfd\xc1\xfb\xc9\xe2\xa7\x18\x09\x63\x63\x33\x9a\x4c\xfa\xf7\x42\xc5\xe0\xea\xe9\xe0\x79\x39\xe9\xdf\x13\x4e\xe9\xd0\x0a\x94\xb3\xb2\x10\x83\xab\xfd\xc1\xfb\x0d\xf0\x12\x9d\x8a\x03\x0d\x58\x1c\xf5\xb2\xbc\x2c\x05\xa2\xd7\x55\x44\x28\xcb\xa2\x18\x85\x56\x48\x58\x50\xc8\x39\xcf\x8b\x0f\x2c\x3d\x32\xce\x19\x95\x65\x2e\xcc\xa2\x54\x22\x34\x54\x45\x6d\x50\x5b\x9a\x69\xa5\xc0\xae\xaa\xd7\x0a\x79\x0e\x8a\x3c\x04\xf4\x5a\x22\x85\xa4\x90\x65\xdd\x5d\x4d\x97\x20\xce\x59\x59\x52\x59\x46\x1b\x03\x28\x2a\x8f\x9d\xb5\xd1\x18\x2a\x8f\xa3\x31\x22\xb5\xbf\x2c\x2b\xe3\xe4\x79\xba\x2f\x52\x0c\xfb\x2c\xbb\x83\x7b\x2a\xbd\xec\x9a\x95\xb4\xd6\x11\x27\x84\xa6\x35\x02\x81\xda\x58\x19\x2d\xa9\xf5\x2e\xc9\x12\x14\xb5\x5e\x5f\xa4\x17\x89\x48\xc2\x13\xce\x74\xa0\xda\x6b\xb0\x8a\x2e\xb4\xc7\x28\x0c\xc5\xa0\xed\x94\x9a\x88\x1d\x91\x0b\x67\x04\x6a\x03\xe4\x61\xaa\x03\x82\x27\xf8\xd8\x1a\x2d\x35\xae\x0b\xe1\x73\x4a\xb5\xf3\xa4\x6b\xba\x9c\x25\x4f\xe5\x08\x4c\x00\x92\x22\x00\x29\xa8\x45\x34\x48\xe1\x52\xa3\x9c\x3d\x14\x03\xfd\x9c\x70\xe6\xdd\x25\xc9\xd4\x4d\x72\x2d\x78\x81\xce\x93\x85\x4b\x52\x60\x00\xe1\x21\xf7\xa9\x43\x97\xc4\x8f\xda\x46\xa0\xca\x83\x38\x27\x0f\x18\xbd\x7d\xc8\xcb\x3a\x2b\xd0\x35\x5a\xd2\xf2\xe6\x41\x28\x67\xcd\xbc\x7b\xb8\xf4\x1a\x21\xcd\x52\x1a\xb8\xd4\x46\x12\x21\x0d\xce\x7d\x11\xf7\x72\xb0\xd2\x29\xa0\x54\x5f\x6d\x11\x7c\x9d\x1a\xa4\x9b\xd6\x74\x10\xd1\xc9\x62\xd1\xbf\x00\x06\x64\xfa\xbc\xd4\x2e\x27\x9d\xa1\x30\xb7\x72\xe6\x9d\xd5\x57\xa0\x28\x55\x63\x51\x87\x5a\x5b\x61\xcc\x3c\xe1\x5a\xf0\x38\x27\xd7\xa6\x30\xc2\x90\x87\x3f\xa3\xf6\x69\x8a\x9b\x36\xed\x05\x11\xd1\x79\x30\x20\x02\xb4\xce\x19\x76\xad\xfe\xd6\x43\xeb\x9d\x1c\xf5\xb2\x0f\xeb\x72\x7f\xb4\x7e\xc8\x15\xd4\x49\xcc\xda\x4a\x13\x15\xac\x62\xe6\xd1\x92\xae\xed\x98\x75\x0b\xc4\x2a\x5d\x13\x98\x5c\xd7\x14\x80\x75\x2d\x17\xde\x26\xfd\x80\xf7\xdd\xb7\x88\x69\x23\xd8\xb0\xbf\x9d\xdd\x4a\x5d\x96\xc5\xcd\x70\x96\x37\x93\xd9\x82\xd4\xc2\x7c\xce\xad\x78\x44\x7b\x93\x0d\x7e\x4b\x42\x4b\x7e\x6c\x03\xcc\x33\x7a\x31\x19\xf6\x39\xdf\x19\x17\xbb\xc4\xb3\x0d\xcf\xed\xbb\xb7\x40\x31\x1c\xfd\xf8\xf5\x93\x3e\xfd\xf4\x3f\xce\xff\xcf\x79\xc1\xf9\x64\x42\x2f\x68\x97\x76\x68\x40\x5f\xdd\x14\xaf\x5b\xa8\xc2\xe2\xd0\xc6\xa6\x02\x9f\x5c\x93\x72\x06\x63\x36\x2e\x9e\x0e\x9e\x4f\x9e\x70\x5e\x11\xe7\x15\xe7\xab\xe3\x70\xc3\xfe\xf4\x63\x3a\xee\x0f\x0e\x3b\xcb\xf5\x54\xaf\xc2\xa6\x78\x7b\x9c\x17\x39\xe7\x9c\x0f\xa9\xf8\x90\x78\xb0\x3e\xe7\x13\xda\xe3\xfc\xaf\x35\xf3\xa7\xce\xfc\x29\x99\xf3\x35\x33\xeb\xcc\xec\xae\xc0\x9c\x57\x2f\x16\xc8\x04\xdc\xed\x80\xbb\x6b\xda\xdd\x84\xe6\x56\x1b\x3a\x7e\x77\x74\x44\xbf\x1f\x9c\xd2\xf1\x09\xbd\xfd\xed\xdd\x01\xa1\x8f\x40\x87\xfb\x47\xa7\x07\x54\x8b\x34\xd6\x01\x4c\xcd\xee\x0d\x72\xbe\x5a\xe9\x9b\x1b\xfd\xba\x88\x69\x45\xda\xe9\xa8\x97\x3d\x1e\x3e\xbe\x5d\xe2\xe5\xdb\xce\x9c\xae\x80\xc2\x77\x83\xc5\xb3\xec\xda\x08\x56\xa5\x5c\x6b\x96\x70\xae\xdb\x2e\x3d\xe7\xc3\x1b\xeb\xda\xff\xee\xea\x5a\x4f\xb5\xd0\xdd\xab\x99\xf0\x37\xae\x5f\xca\xe7\xbf\xa6\xd3\x74\xa2\xbd\x45\x63\x67\xe7\x73\x1a\xdb\xff\x90\x0f\x9d\x72\x49\x71\x6f\x4f\x7e\x3e\xa1\xb3\xb3\x33\x3a\x7c\x7d\xf6\xe6\x80\x8d\xc6\x5f\x90\x8c\xf3\xfe\xad\xaf\xe6\xfd\x9d\x7f\x91\xf1\xef\x00\x00\x00\xff\xff\x7d\xdf\x5a\xbd\x57\x09\x00\x00" func runtimeSyntaxObjcYamlBytes() ([]byte, error) { @@ -2868,6 +4554,26 @@ func runtimeSyntaxObjcYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxOcamlHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x4f\x4e\xcc\xcd\xe1\x8a\xd1\xcb\xcd\xc9\xb4\x57\xe1\xe2\x02\x04\x00\x00\xff\xff\x01\xe7\x74\xed\x0f\x00\x00\x00" + +func runtimeSyntaxOcamlHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxOcamlHdr, + "runtime/syntax/ocaml.hdr", + ) +} + +func runtimeSyntaxOcamlHdr() (*asset, error) { + bytes, err := runtimeSyntaxOcamlHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/ocaml.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxOcamlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x93\xcd\x6e\xdb\x3a\x10\x85\xf7\x7e\x0a\xc2\xf7\x5e\xe4\x07\x57\x69\x90\x16\x68\xe3\x4d\x11\x14\xe8\x1b\x74\x53\xd3\x28\x46\xe4\x28\x9a\x96\x1a\x0a\xe4\xc8\x76\x92\xf1\xbb\x17\x92\xa3\x54\xce\x1f\xda\x75\xbd\x31\x79\x34\x73\xce\xf0\x23\x58\x51\x40\xb9\x69\x71\x61\xa2\x83\x26\xcc\x66\x1e\x05\x9d\x2c\x66\xc6\x18\xd3\x7f\x64\x68\x70\x61\xe6\xd6\x9e\x35\x81\x3e\xfe\x3b\x9f\xcd\x52\x17\x30\xef\x0b\x0a\x43\x1e\x59\xa8\x22\x4c\x43\x51\xb9\xbc\x2a\xbe\xae\x96\xe7\xc5\x25\x14\xb7\xdf\x56\x77\x17\xff\xef\xac\x2d\xe7\x43\xb1\x31\xff\x78\x74\x01\x12\x08\x45\xce\xf7\x06\x59\x40\xb0\x41\x96\x7d\xff\x71\x40\xd1\x35\x04\x6d\x50\xea\xe8\x95\x58\x81\xbd\x26\x74\xda\x26\x5a\x83\xa0\xae\x29\x49\x07\x41\x5d\xe4\x2c\x09\x88\xe5\x64\x9a\x91\x25\x75\x4e\xba\x84\x86\x04\x9b\x31\x66\x7f\xc6\x21\xa1\x5f\x6a\x6c\x91\xd5\x05\xc8\x59\x9b\xe8\xbb\x80\x8a\x5b\x87\x6d\x3f\x99\xe2\x56\x30\x31\x84\x03\xdb\x16\xa4\x57\x5f\x1a\xbb\xea\x58\xab\x8e\xdd\x60\x30\x2c\x62\xd2\x06\xc4\xd5\x2a\xe9\x46\x37\x24\xf5\xb3\x76\x45\x13\xfd\x80\xef\x25\x63\xc8\xba\xa9\x91\x35\x56\x43\xbf\x19\x0d\x5c\x64\x4f\xaf\x81\xa4\x4a\xa5\x6f\xc4\x90\xf1\x20\xba\x0c\xd1\x3d\x83\xa5\xc4\x6b\x62\x45\xf6\x1a\xcb\xef\xe8\x44\xf7\x20\x35\xd3\xb5\x56\x31\xe9\xa6\xa6\x80\xea\xa3\xfa\xc8\xa8\xd2\xff\x6f\x58\xe2\x81\xf5\x70\x25\xc0\x82\xa3\xff\x28\x9c\x95\x31\x86\x91\x7f\xea\x50\x2b\x78\x3c\xd6\xfe\x1a\xf2\x9b\xe1\x52\x1e\x0c\x72\x8b\x8e\x60\x6c\x25\x76\xa1\xf3\xa8\xc4\x35\x26\x12\x25\x26\x21\x08\x74\x8b\xe9\xc0\x0b\xb7\x6d\x32\x4f\xc8\x1e\x58\x31\x6e\x34\x61\xa5\x4d\x27\x50\x06\xd4\x00\xb7\x37\xda\x27\x27\xd1\x04\x34\x1d\x6e\x72\x8c\x2c\x89\xf8\x7a\x71\x9f\x63\x7a\xe8\xa9\x07\x7e\x34\x7f\x90\x90\xfd\xa1\x90\x7f\x50\x3b\x84\x5a\x7b\xf6\x4b\x9d\xbc\xa2\xf1\x37\xcd\xd9\xcf\xfa\xa9\x86\xfe\x5d\xfd\x37\xe9\x7b\xb5\xb0\xcf\x58\x42\x59\x71\x92\xf5\x91\xb5\x76\x10\x56\x7f\xd0\x7c\xbc\x3c\x2f\xde\xaf\xee\xde\xee\x74\xbb\xbc\x2a\x3e\x43\x51\x9d\x17\x97\xab\xbb\x8b\x9d\x76\xd3\xfd\xbb\x9d\x7e\x99\xee\x3f\xec\x4e\x7e\x1b\x95\x9d\x3f\x66\x35\x55\xfe\x36\x58\xcd\xf0\x62\x9f\x42\xb2\xc7\xd6\x9e\x3e\x01\x65\x4f\xad\x3d\x79\x8c\xc5\x2c\x57\xb3\x9f\x01\x00\x00\xff\xff\xe2\xce\x5b\x59\xc7\x05\x00\x00" func runtimeSyntaxOcamlYamlBytes() ([]byte, error) { @@ -2888,6 +4594,26 @@ func runtimeSyntaxOcamlYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxOctaveHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\x4f\x2e\x49\x2c\x4b\xe5\x8a\xd1\xcb\x55\xe1\xe2\x02\x04\x00\x00\xff\xff\x7f\x6b\xa8\x5f\x0d\x00\x00\x00" + +func runtimeSyntaxOctaveHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxOctaveHdr, + "runtime/syntax/octave.hdr", + ) +} + +func runtimeSyntaxOctaveHdr() (*asset, error) { + bytes, err := runtimeSyntaxOctaveHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/octave.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxOctaveYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x56\xdf\x6f\xdb\x36\x10\x7e\xd7\x5f\x71\x93\x9b\x25\x6e\x26\x29\xed\x0a\x6c\x13\xd6\x15\x5d\xb6\x00\x79\x68\x02\xac\x1b\x10\x20\xf2\x02\x8a\x3a\x59\x44\x28\x52\x20\x4f\x51\xbc\xd0\xfb\xdb\x07\x4a\xb2\x13\xbb\x9d\x9b\x6c\xd8\x80\xea\x45\xe4\xfd\xf8\x3e\xf2\xbb\xf3\x59\x13\xf8\x05\x4b\x34\xa8\x38\xda\x60\x02\x15\x51\x63\xd3\x24\x99\x0b\xaa\xda\x3c\xe6\xba\x4e\xfe\x58\x60\x21\x0a\xc1\x92\x5a\x70\xa3\x93\x5c\xea\x3c\xa9\x99\x25\x34\x89\x69\x15\x89\x1a\x13\xbb\x50\xc4\x6e\x93\xb9\x8e\x17\xac\x96\x1f\x87\xb9\x11\x75\x64\xb9\x11\x0d\xd9\x44\x73\x62\x37\x18\x7b\x53\xb4\x01\x38\x02\xdd\xfb\x83\x49\x30\x81\x5f\xcf\x7f\x3a\x0f\x26\x20\x14\x97\x6d\x81\xa0\x95\x5c\x80\x42\x2c\xb0\x00\xdd\xa0\x61\xa4\x8d\x3f\x7b\x1c\xc7\x50\x89\x79\x25\xc5\xbc\x22\xa1\xe6\xc1\x04\xf2\x56\x48\x8a\x84\x82\xb2\x55\x9c\x84\x56\x1b\x01\x6f\xfc\x49\x57\x7b\xc0\xc6\x26\x8d\x48\x10\x90\x78\x0c\xcc\xae\x73\x2c\x74\x15\x2a\x28\xb5\x94\xba\xc3\x02\xf2\x05\x1c\x4c\x83\x09\x74\x15\x23\x60\x06\xc1\x5e\x8b\x06\x98\x2a\x00\x8d\xd1\x06\x4a\x81\xb2\xb0\x20\x14\x58\x32\x42\xcd\xad\xe7\xa9\x5b\x49\x42\x0a\x85\xc0\x75\x5d\xa3\x22\x0b\x4a\x13\x74\xda\x5c\xfb\xa3\x06\xa5\x90\x48\x8b\x06\x53\x18\x2e\x1f\x04\x05\x12\x72\x4a\x03\x00\x00\xef\x55\xac\xc6\x14\xc2\x2c\x8b\xeb\x67\x61\x10\x98\x56\xa2\x1d\xbc\x13\x78\x4f\x8c\x70\x40\x5d\x49\xdf\x75\x5d\x3c\x57\x6d\xac\xcd\x3c\xb1\xba\xa4\x8e\x19\x1c\x85\x4d\x0a\xcd\x93\x9b\x57\xf1\x51\x7c\x94\xdc\x67\xc6\x15\xd5\xb2\xc7\x8b\xc0\xae\xac\x3d\x61\x7e\xb0\x92\xc2\xa1\x2a\xd6\x6b\x83\xd4\x9a\xde\xe4\xe6\x52\xe7\x4c\xba\x06\x8d\x15\x96\x50\xd1\x34\xcb\xf2\xf0\x6f\xc0\x44\xe9\x50\x5a\x1c\x5f\x3e\x5f\x94\xce\x76\x82\x78\xe5\x38\xb3\xe8\x34\x55\x68\x3a\x31\xf8\x06\xc7\x2e\xbc\xae\x12\xb2\x0f\x1d\x16\x85\x76\xbe\x2d\xa5\x2b\xb5\xe9\xcf\xab\x8d\x6b\x98\x19\x77\xe3\x2a\x37\xc8\xae\x1d\xd7\x8a\x84\x6a\x71\x17\x7a\xab\x3a\xa1\x8a\xab\xc6\x68\x5f\x0e\xb7\xb9\xbd\xe2\x12\x99\x6a\x1b\x8f\x7c\xb5\x15\x49\x66\xe1\x38\xf3\x97\xf2\x4e\x32\x8b\xab\x7e\x37\x70\x8d\x75\x3b\x5f\xb7\xef\x48\xbe\xa8\x73\x2d\xe3\x55\x57\xa7\x10\x5e\x46\x87\xc9\xf3\xd7\xdf\xff\xf0\xc5\x9f\x7b\x5f\xba\xdf\x67\x2e\x7d\xbd\x4e\xfe\xd1\x30\x7e\x8d\xb4\x95\x9b\x8f\xd6\x14\xc2\x83\x2c\xbb\x73\x59\xb6\x9c\x86\xbb\x42\x0e\x5c\x96\x4d\x77\x87\x5c\xba\x2c\x9b\x4d\xd7\xc4\xc7\xba\xae\xd9\x26\x6d\x0a\xe1\x57\x6b\xff\x59\x5b\xe7\x68\x9e\xd8\x8a\x2f\x92\x77\x8c\x2a\xac\x19\x09\xce\x64\x74\xac\x95\x25\xb6\xd5\x96\x7c\x34\xc6\xaa\x67\x18\x2b\x74\x79\x14\x7d\x37\x3b\x74\x47\xb7\x7e\xc1\xa2\xf2\x6d\x74\x32\x7b\xee\x65\x76\xfb\xf1\x7e\xb8\x33\xb5\x11\x0e\xdd\xa9\x3b\x55\xa5\x3b\x63\x67\x0e\x1b\xeb\x0c\x32\x59\xb3\xdb\xe1\x2d\x54\x8f\x73\x2f\xb9\xd6\xbe\xe0\xdb\x98\xb9\xee\x15\xf0\x88\x64\x5a\x74\x25\x93\x16\x37\x0a\xfd\x7e\x98\x04\x4f\x95\x64\x4c\xfb\xa8\x06\xc3\x70\x19\x26\x80\x7f\x2c\x31\xd3\x37\x6d\x18\xae\x6d\xa8\x8a\x2d\x8b\x9f\x55\xfd\x51\xb3\x2c\xbe\xb7\x3e\x18\x26\xab\xe7\x21\x53\x83\x5c\x30\x79\x5c\x31\xaf\xdb\x5e\xf8\xb8\x38\x4f\x71\xc9\xf2\x52\x19\xba\xd9\xcf\xb2\xac\x37\xcc\x9e\x90\xec\x0b\xfb\xcd\xec\xee\xeb\xa5\xbb\xbd\x7c\x1b\x9d\xb0\xa8\xf4\x85\xbe\x7b\xb9\x74\xed\xc3\xfd\xab\xa5\xfb\xed\xe1\xfe\xdb\xe5\xaa\x53\x1f\x21\xd6\xfe\xb6\x56\xfb\xff\x48\xaa\x7e\xf0\xa7\x10\xc6\xf1\xe1\x23\x2f\xf8\xf9\xa8\x38\xfc\xde\x9f\xfa\xdf\xf2\x32\x7e\x91\xac\xf2\x36\xdb\xb7\xb7\x7d\x58\x89\xbd\xed\x4a\x3c\xfb\x84\xe6\xa4\x0b\xed\xc7\x93\xff\x3a\x70\x17\x17\x17\xee\xe4\xf4\xe2\xdd\xcf\xd3\xf4\x4d\xf8\x29\xaa\xc9\xff\x47\xb5\x77\xb7\xcd\xb5\xb7\xfc\xef\xee\xf5\x01\xd9\xe4\x5f\x90\xfd\x15\x00\x00\xff\xff\xc0\x0a\x9c\xc0\x1a\x0a\x00\x00" func runtimeSyntaxOctaveYamlBytes() ([]byte, error) { @@ -2908,6 +4634,26 @@ func runtimeSyntaxOctaveYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxPascalHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x48\x2c\x4e\x4e\xcc\xe1\x8a\xd1\x2b\x48\x2c\x56\xe1\xe2\x02\x04\x00\x00\xff\xff\x90\x29\x8f\x39\x0f\x00\x00\x00" + +func runtimeSyntaxPascalHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPascalHdr, + "runtime/syntax/pascal.hdr", + ) +} + +func runtimeSyntaxPascalHdr() (*asset, error) { + bytes, err := runtimeSyntaxPascalHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/pascal.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPascalYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x54\x6d\x8b\x23\x37\x0c\xfe\x9e\x5f\x11\xd2\x85\x26\xb7\xcd\x5e\x0b\xa5\xd0\x7c\x09\xa5\xd0\x3f\x91\x49\x41\x63\x6b\x32\xea\x7a\xec\x41\x92\xf3\xd2\xd5\xfd\xf7\x62\xcf\xde\xbe\x24\xd0\x3d\x2e\x84\xb1\x2c\xcb\xf2\xf3\x3c\xb2\xdc\x51\x40\xbd\x8c\xb8\x99\x8f\x20\x0e\xc2\x6c\xe6\x51\xd1\xe9\x66\x36\x9f\xcf\xe7\x65\x35\xc2\x80\x9b\xf9\xa2\x69\x1e\x46\x90\xbb\xc5\x6c\xc6\x39\xa0\x4c\xeb\xeb\xf9\xb4\x77\xd1\x34\xed\x72\x4b\x9b\xa5\x28\x53\x3c\x18\x44\xa1\x67\xf3\x44\x1e\x9f\x4d\xe9\x13\xeb\xb3\xed\x7a\xe0\x1a\x56\x8d\x12\x54\x8d\x36\xa5\x80\x10\xad\xbd\x28\x4e\xf1\x14\xd5\x4e\x89\xbd\xc9\x00\x21\x94\x59\x48\xf1\x50\x3d\x0e\xd8\x53\x84\x50\x3d\x65\x85\xa2\xe2\x01\xb9\x8c\xbf\xfd\x6a\x42\xf1\x10\xd0\x5c\x66\xc6\xe8\x2e\xe6\x53\x6e\x03\x1a\x9e\x15\xa3\x47\xbf\x5a\x35\x4d\xbb\x78\xa6\x21\x0a\x8a\x03\x46\x7d\xc3\x05\xa2\x37\x90\xc1\x80\x19\x2e\xd6\xe2\x81\xa2\xb5\x8c\xf0\x68\x0e\x04\xcd\xa5\x28\x3a\x7d\x39\x3b\x4d\x5c\x6c\xa5\x98\xd1\x2a\xe3\xc9\xe7\xe9\x68\x3e\x99\x4f\xa7\xa8\xc9\x30\x08\x1a\x46\x6f\x45\x58\xeb\x12\x5b\x97\xa3\x53\x4a\xd1\x0e\x49\x93\x51\x67\x34\x8c\xa1\x22\x81\xea\xa6\xf2\x0f\x14\xb1\x92\xe3\x0e\x1c\x5a\x80\x16\x83\x0d\xc9\x5b\x4c\x6a\xa9\xfd\x07\x9d\x5a\xea\x2c\x45\x4b\x23\x32\x94\x73\x13\xdb\x08\xee\x11\xbd\x8d\x9c\x1c\xfa\xcc\x58\xac\x03\xc3\x60\x8c\xae\xc8\xc7\x38\x22\xa8\x31\x4a\xca\xec\x5e\x8a\x84\x6a\xd2\x07\x93\x9e\x4d\x7b\x8c\xa6\xc9\x4a\x91\x2d\x47\x52\xcb\x51\x29\x58\x16\x14\x3b\x96\xba\xf5\x85\xc7\x89\xb4\xb7\x73\xe2\x8f\x15\x15\x73\x01\x44\xcc\x93\x8c\xa9\x48\x71\x76\x38\xaa\xe1\x99\xca\x67\x2c\xd7\xc3\xba\x52\x52\xfa\x77\xa2\x5f\x27\xe1\x62\x14\x7b\x64\x52\xf4\x46\x91\x94\x5e\x03\x48\x2c\x50\xcb\xc0\x17\x8b\x78\xaa\x12\x64\x2d\x4c\x47\x64\xbd\x18\x03\x09\x9a\x60\xe8\x4c\x7b\x46\xf0\x05\xb5\xf2\xe5\x63\xa8\xad\xa4\x90\x15\x0d\x5a\x51\x06\xa7\x06\x81\x40\x0c\x44\x70\x68\x03\xb2\x39\x8f\x2e\x98\x1b\xc7\x3a\x7a\xec\x20\x87\xaf\x2c\xea\x25\xe3\x72\x35\xbb\xc4\x27\x60\x6f\x07\x8c\xc8\xe4\x8c\xa2\xc7\xb3\x85\xe4\x20\x58\xe9\x2c\x8b\x49\x14\xdc\x63\xc7\x65\x92\x82\xef\x46\xe7\x20\x04\x4b\x47\x64\x26\x8f\x36\xf5\xa5\x8d\x4c\x47\xd0\x5a\xc4\xd2\x9f\xa5\xb0\xb9\x0d\xe4\xa6\x41\x7a\x2c\x05\x85\xf2\x39\x90\x28\xb2\x31\x52\x54\x4e\x3e\x3b\x34\x81\x0e\x6b\x56\x49\x9d\x76\x21\x81\x9a\x8c\xe8\xaa\x8e\x68\xa2\xbe\x2e\x1e\x89\x35\x43\xb0\x53\x51\xfa\x9d\x42\xf5\x96\xc3\x3b\x81\x3a\x28\x77\x59\x39\xa3\x45\x0a\xef\xf5\x9c\x52\x4f\x4f\x44\xf9\x89\x02\x97\xbd\x20\xc3\xe2\xc5\x89\xd1\x6f\xe6\x0b\x8c\xfe\xd5\x35\xbd\x2c\xf3\xdd\xfe\xea\xd8\x87\x98\x87\x16\xb9\x9e\x7e\xb7\xfb\x79\xfd\xfb\x1f\xeb\xbf\x60\xdd\xed\xef\xaf\xf1\xbd\x0d\x6c\x77\xf7\xeb\xfd\xb6\x44\xef\xef\x97\xbb\x87\xaf\xe6\x6a\x5b\xe0\xe3\x9b\xc5\xd5\xf6\x26\xcd\xd4\x0b\xb7\x04\x7e\xa8\x3b\x9e\x7e\xf9\xe9\xcb\x35\x8f\xbb\x1b\x16\x2f\xf3\xeb\xdc\x93\x3a\x7f\xf6\x30\xe1\x6c\x9a\x87\x6f\x3e\xff\xc7\xeb\x63\xdf\x38\xe4\x91\xc6\xf7\x09\x5f\xc1\x7c\x07\x96\x91\xb1\xbc\x1c\xb7\x18\x9e\x9a\xe6\xee\x1a\xc6\x97\xff\xab\xe1\x50\x5b\xeb\x26\xcf\xe7\xcf\x1f\x6b\xf8\x71\x96\xa6\x59\x36\xcd\xa7\xeb\x4c\x4d\xf3\xa9\x69\x56\xdf\x91\x6e\xf9\xb4\x5a\x6e\x37\xbb\xbf\xef\xf6\xab\x6f\xe2\x38\xfb\x2f\x00\x00\xff\xff\x99\x9e\xdd\x36\x40\x07\x00\x00" func runtimeSyntaxPascalYamlBytes() ([]byte, error) { @@ -2928,6 +4674,26 @@ func runtimeSyntaxPascalYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxPatchHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x48\x2c\x49\xce\xe0\x8a\xd1\xd3\x00\x33\x6a\x52\x32\xd3\xd2\x34\x55\xb8\xb8\x00\x01\x00\x00\xff\xff\x44\x40\x08\x3d\x17\x00\x00\x00" + +func runtimeSyntaxPatchHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPatchHdr, + "runtime/syntax/patch.hdr", + ) +} + +func runtimeSyntaxPatchHdr() (*asset, error) { + bytes, err := runtimeSyntaxPatchHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/patch.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPatchYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x5c\xce\x4d\x0a\xc3\x20\x10\x86\xe1\xbd\xa7\x18\xa4\x8b\xfe\x60\x0e\xe0\x2a\x07\x91\x80\x89\xa3\x11\x8c\x0d\x76\x42\x09\xf4\xf0\x65\x92\x16\x43\xc0\xd5\xfb\x7c\xa2\x3e\x26\xa4\x75\x46\x0d\xb3\xa5\x61\x14\xc2\x21\xe1\x40\x1a\x04\x00\x00\x6b\xb6\x13\x6a\x90\xc6\x34\xd7\x6d\xf2\x71\xd1\xfb\xdb\x45\x0a\x51\x96\x84\x2f\xbd\x0d\x15\xf4\x25\x86\x91\x42\x41\xcc\x1a\x64\x67\xcc\xa3\xb9\xcb\x9f\x1d\xeb\x7e\xaa\xed\xf7\xfa\xb4\xf0\x23\x1d\x9c\xa1\xa0\xe3\xae\x6a\xff\x17\xa5\xce\xdb\x15\x53\x7a\xbe\x19\xdb\xb6\xda\x64\x03\x66\xb2\x9c\xf9\xe7\x0c\xdf\x00\x00\x00\xff\xff\xef\xe3\x40\xbb\xf5\x00\x00\x00" func runtimeSyntaxPatchYamlBytes() ([]byte, error) { @@ -2948,6 +4714,26 @@ func runtimeSyntaxPatchYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxPegHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x48\x4d\xe7\x8a\xd1\xcb\xb1\x2f\x48\x4d\x57\xe1\xe2\x02\x04\x00\x00\xff\xff\x9a\xf4\x66\x7f\x0e\x00\x00\x00" + +func runtimeSyntaxPegHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPegHdr, + "runtime/syntax/peg.hdr", + ) +} + +func runtimeSyntaxPegHdr() (*asset, error) { + bytes, err := runtimeSyntaxPegHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/peg.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPegYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8f\x41\x6b\xc2\x30\x18\x86\xcf\xf6\x57\x7c\x0b\x6e\x6a\x43\x32\xaf\x06\x67\x19\xec\xee\x65\xa7\xe5\x4b\x47\xac\x9f\x1a\x68\xd3\xd2\xc6\x0d\x47\x7e\xfc\xa8\x53\x27\xe8\x29\x90\x3c\xef\x93\xf7\xdd\xb8\x92\xc2\xa1\x21\x05\x0d\x6d\x93\x64\x4d\x81\x8a\xa0\x20\x01\x00\xe8\xdf\xbc\xad\x48\x01\x43\x94\x65\xd6\xd0\x76\xc8\x92\xa4\xdd\x97\xd4\xa9\x23\x21\xc0\xad\xc9\x07\xb7\x71\xd4\x2a\x60\xb9\xd6\xaa\x6b\x6c\x41\xca\x98\x54\xbf\x8a\x0f\x2b\x7e\xcc\xe9\x9c\x8a\xd9\xa7\x49\xaf\x81\xb9\x60\x27\x49\x51\xfb\x2e\x58\x1f\xa4\xdf\x57\xab\xa3\x09\x31\xd7\x5c\x98\x4c\x4f\xc5\xcc\xf0\x33\xd7\x1d\xaa\x55\x5d\xca\xba\xa1\xd6\x86\xba\xe7\xb4\xe0\x69\x96\x3f\x3f\x3c\x99\x28\x16\x71\x2e\xe2\xcb\x82\xdd\x34\x93\x5f\xb6\x67\x1f\xef\x36\xba\xb8\x1b\x2a\x9c\x2d\x8f\x7f\x6b\x9d\x1b\x93\x22\x9a\x9b\x82\x5d\x68\x9d\xdf\xf6\x10\x1b\x23\x22\xca\xa8\x73\x64\x66\x92\x22\x8b\xa3\xcb\xcd\xc8\x4c\xd2\xd1\x7f\xb6\xaa\xc8\x07\x05\x6c\x9c\xc7\xab\xfd\x13\x44\x81\x28\x64\x3a\x3c\x93\xa1\x5e\xd7\x0a\xd8\xfb\xf2\x6d\xa9\xb2\xcb\x0c\xdf\xef\x10\xc5\xce\xb6\xf2\x7b\xe7\x02\xfd\xe5\x81\x5d\xa9\xf8\xf0\x0e\xad\x80\x0d\x38\xf0\x08\x7c\xc0\x59\xf2\x1b\x00\x00\xff\xff\x2d\xa9\x92\x64\xe8\x01\x00\x00" func runtimeSyntaxPegYamlBytes() ([]byte, error) { @@ -2968,6 +4754,26 @@ func runtimeSyntaxPegYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxPerlHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x48\x2d\xca\xe1\x8a\xd1\x2b\x88\xce\xc9\x8d\x55\xe1\x8a\x53\x56\xd4\xd3\xd2\xd7\x48\xcd\x2b\x53\xd0\xd6\xb4\x07\xc9\x69\x28\xd4\xa8\x68\x72\x01\x02\x00\x00\xff\xff\xdb\x1c\x3f\x2e\x26\x00\x00\x00" + +func runtimeSyntaxPerlHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPerlHdr, + "runtime/syntax/perl.hdr", + ) +} + +func runtimeSyntaxPerlHdr() (*asset, error) { + bytes, err := runtimeSyntaxPerlHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/perl.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPerlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x54\x5d\x6f\xe3\x36\x10\x7c\xcf\xaf\x50\x7d\x29\x8e\xbc\xf6\x1c\xa0\x8f\xe9\xa5\xee\x3f\x68\x81\x16\xe8\x43\x94\x00\x14\xb9\x92\x59\xf3\xcb\xe4\xca\x8e\xd0\xe9\x7f\x2f\x48\x25\x0e\x90\x1c\xee\xa1\x06\x2c\x50\xdc\xdd\xd9\xd9\x19\x8a\xa3\x75\xc4\x4b\xa2\xdb\x2e\x51\x76\x57\x57\x86\x98\x34\xdf\x76\x57\x5d\xd7\x75\x35\x18\x94\xa7\xdb\x6e\xd3\xf7\xdb\x74\xef\xfc\xc3\xf5\xa6\x45\xf6\xa4\x0c\xe5\xdb\x6e\xf3\xf8\xe1\xbb\xed\xa7\x1b\x41\xe1\xd4\xfd\x20\x77\x15\x43\x74\xb8\x96\x9b\xab\xab\x3c\x3b\x2a\xb7\x2d\xfb\x73\xb7\xb6\xd8\xf4\xfd\x20\x94\xd6\x94\x18\xca\xa9\xec\xa1\x58\x85\x9f\x30\xd8\x20\x0c\x7c\x34\x24\xa1\x85\x72\x8e\x32\xf6\xc2\xd8\x5c\xf7\x10\x13\xe2\x39\x20\xc7\xc8\x12\x2e\x16\xaa\x11\xb9\x43\x0c\x81\x34\x23\x16\xe4\x25\xb1\x84\x11\x83\x17\xba\x26\x20\x26\x0a\x12\x34\xda\x40\x06\xe4\x88\x09\x96\x10\x31\xfb\x24\x41\x42\xe9\x3d\xe2\x88\x93\x72\x78\x12\xa4\x61\x0b\x17\x58\x46\x92\x12\xa3\xd0\x81\x1d\xea\xe4\x11\x2e\xea\x03\x62\x3e\x48\xd9\xf7\x03\x2a\xfb\x89\x58\x68\xb8\x38\xd9\x80\x44\x94\xab\x3c\x48\x53\x4e\x48\xc9\x1a\xa4\x6c\x63\xb6\xbc\x20\x9d\x83\xf2\x10\xfb\x58\x18\x81\x18\x29\x47\x8e\x28\x94\x4f\x72\x58\xd6\xa2\xf3\x6c\x0d\xa6\x3c\x59\xf3\x9a\x27\x87\x45\x19\x93\xd7\xf4\x61\x09\xb3\x1f\x28\xb7\xb2\x61\x49\x31\xb3\x84\xb8\x9f\xca\x03\x31\x28\x18\x29\xd2\x19\x53\xc6\xd7\x9a\x50\x60\x4c\xc4\x25\xea\x83\x68\xed\x62\x95\x68\xf2\x6c\x3d\x61\xaa\x69\x53\xa6\x84\x3d\x3d\xc1\x06\xd3\x9e\x0c\x1b\x35\x3b\xfc\x1d\x6d\xb8\xcc\x7b\xa0\xa5\xe0\x60\x9d\x83\x53\x85\xe1\x28\x4c\xbc\x87\xb3\xe1\x00\x67\x0b\x53\xa8\x1a\x29\x27\x2a\xae\xdc\x55\x61\xe0\x0a\x2b\x86\x87\x3f\x34\x07\xcb\x24\x2a\xea\x44\x8c\x12\x0c\xb2\x3e\x49\x04\x7a\x62\xc4\x6a\x5e\xa2\xf0\x62\x67\x36\x48\x4a\x1f\x90\x6c\x22\xa4\x98\xaa\x98\x81\xc7\x1d\xd2\x5c\xf6\x38\xe2\x78\xc4\xf1\x09\x59\x55\x10\x12\xca\xb4\x03\x52\x99\xc8\x1d\xf4\x09\x26\xa2\x0d\x7a\x9c\x6d\x26\x14\x62\xf0\x9c\x03\x4e\x94\x0b\xe1\x6c\x83\xa9\x6d\x90\xd7\x69\xb3\xaf\xc5\x05\x45\xd7\x73\x88\x42\x74\x58\x69\x5c\x06\x2f\x24\x5c\x3d\x5e\xbe\x92\xf7\x95\xbd\x8f\x09\xc1\x80\x9b\xdb\x7c\x71\xba\x69\xdc\xd4\x2d\x7b\x3b\x32\xca\xde\x5f\x06\xce\xa4\x0c\xce\xd9\x32\xd5\xe8\xcc\xa6\x1e\xe4\x62\x03\x8a\x23\x4a\xa8\x95\xc4\x22\xa9\x26\x40\x89\x99\x51\x92\xb3\x42\x13\x2a\xdc\x3a\x3f\xca\xb1\xee\xb7\xb9\x9b\xb2\x85\x67\xb3\xa0\xcc\x43\xe1\x8c\xb2\xf8\x66\x46\x59\x8a\xd0\xca\xb9\xb5\x25\x93\x7f\x69\xcb\xe4\xdc\xb3\xc2\xcd\x7b\xce\x62\xa9\xeb\x3c\x07\xad\x98\x30\x7b\x55\x0e\x97\xa9\xe7\x20\x0c\x8d\xab\xbf\xcd\x8c\x36\x93\xc4\xdc\x6a\x4f\xca\xcd\x54\x70\x22\x8d\xb3\xb2\x2c\x92\x35\x72\x87\xb3\x0a\xac\x72\x56\x0b\xce\x2a\x87\xe7\xbe\x7d\x3f\x6c\x9e\xbf\xfd\x4a\x9a\x3c\x05\x7e\xbe\x00\x74\x0c\x6c\xc3\x4c\x20\x57\xda\xc3\x8e\xd5\xbc\x31\xe6\xfa\xa7\xfa\x71\xda\x11\x73\x70\x54\x0a\xe6\xc0\xd6\xe1\xbc\xb7\x8e\x40\x47\x04\x82\x63\x4c\xf5\x20\x62\x22\x68\x9f\xf0\x04\xdf\xd4\xc0\x5c\xa8\x71\x56\x35\xa0\x02\x6c\x51\x2b\x8d\x17\x1e\x89\xb4\x55\xae\xb1\xf8\xdc\xf7\xbf\x5c\xf8\x2d\x7e\x88\x75\x5b\xfc\x88\xbe\xdf\xca\x4b\x81\x35\x14\xd8\x8e\x96\xf2\x7a\x8d\xd5\x5f\x61\x95\xeb\x20\xf7\x7d\x7f\xfd\xeb\xf7\x0f\x9b\x4b\x80\x82\x69\xc8\x7f\xbd\x6e\xad\x37\x60\x77\xff\xf0\x02\xa8\x63\x28\xac\x02\x6f\x0b\x67\x1b\xa6\x9a\xbf\xe9\x7b\xb1\xfd\xd4\xf7\xb2\xdf\xe0\x78\xdc\xf5\x3d\xea\x1b\xd6\xf5\x3f\x75\xfd\xef\xba\xbe\xa9\xeb\x9b\x17\xce\x86\x46\x35\xbb\x46\xa4\xf8\x87\x9b\xed\xa7\x4b\x24\x65\x4a\x39\xea\xf7\x8c\xc5\x63\x15\xa8\xbb\xeb\x02\x9d\xe5\x5b\xde\x3f\x7f\x93\xb5\x6f\xee\xbd\x43\xfc\xf0\x16\xe5\xfa\xff\xa0\x3c\xde\xbd\x85\x79\xbc\xd3\x33\x7f\x03\xea\xd5\x97\xad\x57\x3a\xc7\xf7\x98\x5f\xbe\x74\x1f\xff\xf8\xf3\xb7\xdf\x3f\xbe\x85\xae\x9b\x5f\x43\xfe\x2f\x00\x00\xff\xff\xec\x33\x9f\xea\x07\x07\x00\x00" func runtimeSyntaxPerlYamlBytes() ([]byte, error) { @@ -2988,6 +4794,26 @@ func runtimeSyntaxPerlYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxPerl6Hdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x48\x2d\xca\x31\xe3\xd2\x88\xd1\x2b\x30\x53\xa9\x89\xd1\x2b\xc8\x81\x50\xb9\x66\x2a\x9a\x5c\x5c\x80\x00\x00\x00\xff\xff\x67\xf0\x75\x09\x1d\x00\x00\x00" + +func runtimeSyntaxPerl6HdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPerl6Hdr, + "runtime/syntax/perl6.hdr", + ) +} + +func runtimeSyntaxPerl6Hdr() (*asset, error) { + bytes, err := runtimeSyntaxPerl6HdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/perl6.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPerl6Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x54\x4d\x8b\x1c\x37\x13\xbe\xcf\xaf\x68\xe6\xf5\x0b\xea\x05\x8f\x21\x07\x1f\x36\x0e\x1b\x42\x72\x08\x18\x42\x08\x21\x07\xf7\x06\x34\x52\x75\xb7\x32\xfa\x1a\x55\xf5\xf4\x36\x3c\x3f\x3e\x48\x33\x6b\x3b\xbb\x21\x0b\xab\x1e\x54\xaa\x7a\x3e\xaa\xa4\xd1\x79\x92\x2d\xd3\x7d\x97\xa9\xf8\xf7\xbb\x9d\x25\x21\x23\xf7\xdd\xae\xeb\xba\xae\x46\xa3\x0e\x74\xdf\xed\xd5\x30\x1c\xf2\xfb\x37\xa8\x1f\x7f\xfb\x86\xf7\x6f\xfa\xfd\x6e\x57\x16\x4f\x7c\xdf\x12\xde\x76\xd7\x62\xfb\x61\x38\x2a\x6d\x0c\x65\x81\xf6\xba\x04\x68\xd1\xf1\x1b\x1c\x5d\x54\x16\x21\x59\xea\x61\x94\xf6\x9e\x0a\x66\x65\x5d\xa9\x7b\x48\x19\x69\x8d\x28\x29\x49\x0f\x9f\x98\x6a\xa4\x7f\x40\x8a\x91\x8c\x20\x31\xca\x96\xa5\x87\x55\xc7\xa0\x4c\x3d\x80\x94\x29\xf6\xa0\xd1\x45\xb2\x20\x4f\x42\x70\x84\x84\x25\xe4\x1e\xa4\xb4\x99\x91\x46\x5c\xb4\xc7\x93\x22\x03\xc7\xc2\x70\x82\xdc\xf7\x18\x95\x89\xe2\x51\x25\x26\xf8\x64\x4e\x48\xe5\xd4\x63\x22\x51\x06\x3e\x4d\x2e\x22\x13\x95\xaa\x1f\x79\x2a\x19\x39\x3b\x8b\x5c\x5c\x2a\x4e\x36\xe4\x35\xea\x00\x35\x27\x16\x44\x12\xe4\x92\x24\x81\xa9\x5c\xfa\xe3\x76\x4d\x5a\x17\x67\x31\x95\xc9\xd9\x2f\xe7\xfa\xe3\xa6\xad\x2d\xd7\xe3\xc7\x2d\x2e\xe1\x48\xa5\xa5\x1d\xb7\x9c\x8a\xf4\x50\x9f\x26\x7e\x24\x01\x45\xdb\xab\xbc\x62\x2a\xf8\x37\x10\x8a\x52\xb9\x72\x32\x27\xd5\xe0\x52\xb5\x66\x0a\xe2\x02\x61\xaa\xc7\xa6\x42\x19\x33\x3d\xc1\x45\xdb\x56\x81\x4b\x46\x3c\xfe\x4a\x2e\xe2\x44\x1b\xe3\xe4\xbc\x87\xd7\x2c\xf0\x14\x27\x99\xe1\x5d\x3c\xc1\x3b\x16\x8a\xd5\x13\xed\x55\xad\xd7\x3f\x54\x43\xe0\x59\xb4\x20\x20\x9c\x5a\xc7\x78\x52\xb5\xda\x44\x02\x8e\x16\xc5\x5c\x7a\x44\x7a\x12\xa4\xda\xac\x4c\xf1\xb9\x7d\xc5\x22\x6b\x73\x42\x76\x99\x90\x53\xae\x26\x46\x19\x1f\x90\x17\x9e\x71\xc6\xf9\x8c\xf3\x13\x8a\xae\x45\x48\x69\xdb\x06\xa2\x32\xe9\x1f\x60\x2e\xb0\x09\x4d\xe0\x79\x71\x85\xc0\x24\x90\xa5\x44\x5c\xa8\x30\x61\x75\xd1\x56\x18\x94\xab\xca\x12\x6a\x32\x83\x4d\x9d\x3b\x30\xd1\xa9\x2d\x6d\x97\x94\xaf\x83\x14\x2a\xed\x50\x79\x87\x94\x11\x2d\xa4\xf5\x57\x3e\xf7\xb6\xb9\xda\xfc\xe4\xd9\x8d\x02\x9e\xc3\x67\xa9\x85\xb4\xc5\x5a\x9c\x50\x8d\x2e\x62\xeb\xc8\xb2\x8b\x60\x4f\x94\x51\x33\x49\x54\xd6\x4d\x3a\xa7\x22\xe0\xec\x9d\x32\x84\x5a\xee\xaa\x1c\x7c\xae\xfb\x4d\x71\xf3\x94\x65\xb1\x1b\x78\x39\xb2\x14\xf0\x16\x5a\x1b\x78\x63\x65\xb4\xf7\x57\x48\xa1\xf0\x0c\x2b\xe4\xfd\xcd\xdb\xd6\x6d\x29\xd8\x20\x65\x89\x46\x0b\x61\x09\x9a\x4f\x58\xa2\xb2\x34\x5e\xfb\xd9\xcc\x6f\x4a\x7a\x2c\x2d\xe3\xa2\xfd\x42\x8c\x0b\x19\xac\xda\x89\xca\xce\xf6\x0f\x58\x75\x14\x5d\x8a\xde\xb0\xea\x12\x6f\x68\xc3\x70\xdc\xdf\xee\x76\xa5\x4a\x81\xa2\xdc\x2e\xb8\x49\x51\x5c\x5c\x08\xe4\xb9\x2d\x6e\xac\xcd\x1a\x53\xa9\xff\x54\x2f\x9f\x1b\xb1\x44\x4f\xcc\x58\xa2\x38\x8f\x75\x76\x9e\x40\x67\x44\x82\x17\x4c\x75\xf0\x30\x11\x4c\xc8\x78\x42\x68\x1e\x60\x61\x6a\x9c\x75\x0d\xe8\x08\xc7\xfa\x1f\x34\x32\x19\xa7\xfd\x8d\xc4\xac\x19\x8e\x61\xbc\x66\x46\x49\xb5\x9c\xbb\x50\xc4\x3a\x53\xc4\x0f\xbf\xff\xfc\xf1\x47\x84\xc5\x8b\x43\xa1\x3a\x36\x8c\x40\x32\x27\x5b\x81\x9e\x7f\xf9\xa5\x64\xb0\x6e\xe0\x5f\x03\x39\x4b\x51\xdc\xe8\xa8\x5c\x5f\xb7\xfa\xc7\xa2\x4b\xd5\xff\xe9\xcd\xf7\xff\x7f\xdc\x7f\xde\xa6\x68\xeb\x23\xd9\x61\x18\x86\xe1\x0f\xbc\xed\xbf\x84\xae\xcf\x63\xf7\xe9\x71\x77\x2b\x6b\x52\x64\xd1\x51\x0e\x2c\xc5\xc5\xa9\xea\xd8\x1f\xee\x86\x3d\xce\xe7\x61\xc0\xe1\x6e\x18\xf0\xcc\xc0\xd2\xa8\x17\xdf\xf0\x38\x3c\xbe\x3b\xdc\xbd\x7b\x8e\xe4\x42\xb9\x24\xf3\x9a\x98\xfa\xb3\xda\xd7\x7d\xd7\x45\x5a\xfb\x97\x04\xbf\xfd\x4f\x5a\xe1\xd6\xdb\xff\x1d\xee\x5e\x5b\x70\x08\xda\x94\xf4\x1a\xef\xc3\x87\x9f\x7e\xf9\xed\xd7\x8f\x2f\x91\x5e\x6c\x7e\x85\xf6\x77\x00\x00\x00\xff\xff\xd5\xbb\xe9\xc6\x73\x06\x00\x00" func runtimeSyntaxPerl6YamlBytes() ([]byte, error) { @@ -3008,6 +4834,26 @@ func runtimeSyntaxPerl6Yaml() (*asset, error) { return a, nil } +var _runtimeSyntaxPhpHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\xc8\x28\xe0\x8a\xd1\x2b\xc8\x28\x88\x36\x32\x36\x31\x2d\xae\x8b\xb5\x57\xe1\xe2\x02\x04\x00\x00\xff\xff\x60\x80\x05\xfb\x15\x00\x00\x00" + +func runtimeSyntaxPhpHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPhpHdr, + "runtime/syntax/php.hdr", + ) +} + +func runtimeSyntaxPhpHdr() (*asset, error) { + bytes, err := runtimeSyntaxPhpHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/php.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPhpYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x56\xef\x8f\xdb\xb8\x11\xfd\xdc\xfd\x2b\xbc\xbe\x43\x42\xee\xc6\xde\xeb\xaf\x00\xe7\xc4\x2b\x04\xd7\xdc\xa7\xa0\x2d\xda\xbb\x0f\x3d\x51\x1b\x50\xd4\xc8\x22\x4c\x91\x0a\x39\xf2\xc6\x77\x2f\xfd\xdb\x0b\xca\xde\x1f\xa9\x77\x71\x82\x20\x5b\xe4\x90\x33\xf3\xe6\xcd\xa3\x5a\xeb\x88\xf7\x03\xad\x66\x43\x37\x9c\x9d\x35\xc4\x64\x78\x35\x3b\x9b\xcd\x66\xb3\x3c\xe7\x75\x4f\xab\xd9\x5c\xa9\xe5\xd0\x0d\xe5\x9f\xfe\xfc\x97\xbf\xa6\xff\x56\xc5\xb7\xf3\xb3\xb3\x38\x3a\x4a\xab\xc9\x70\x31\x4b\xfb\xbe\x0e\x6e\x19\x06\x8a\x9a\x43\x5c\xcd\xe6\x6f\x71\x3d\x3f\x4e\x52\x8c\x87\xa1\xf2\xe6\xbc\x5a\x5e\x14\xf7\x13\xc7\x55\xac\x37\xab\xd9\x5c\x14\x56\xbe\x2d\xaf\xaa\x42\x68\x51\xd7\x11\x26\x06\xbf\xef\xd1\x34\x91\x52\xc2\x30\x38\x62\x44\xd2\x88\x6c\x8d\x23\x24\xdb\x10\xc6\xc6\x06\x59\xa0\x16\x3a\x91\x68\x83\x67\x59\xa0\x11\x16\x41\xc2\x6e\xe0\x82\xd9\x7e\x1a\x03\x13\xa2\x2c\x60\xb4\xf0\x3b\x9d\x30\xb0\x0d\x5e\xc2\x90\x67\x8a\x30\x96\x09\x26\x88\x86\xe0\xe0\x36\x31\x8c\x83\x44\x23\x34\x6b\xe1\x6c\x9a\xf6\x03\x39\x10\x6b\xeb\x12\x5a\x0f\xab\x5d\xd8\xc0\x46\x38\xb0\x04\xf5\xa2\xa6\x46\x16\x68\x2d\xb9\x26\x11\xa3\xb5\x1b\x61\xf4\xe4\x04\x63\x24\x89\x1c\x16\xda\x10\x7b\x08\x2b\x8b\x36\xea\x9e\x30\x3d\xb3\x75\x57\xfe\x71\xf1\xba\x42\x17\x61\x61\xfb\x0d\xac\x17\xc3\xc8\x48\x12\xdb\xba\xc1\x96\xf6\x1b\xf2\x70\xba\x26\x07\x47\x1b\xf2\x0d\x9c\x15\x7e\x2b\x0b\xf4\x5a\x58\x8f\x01\x71\x2b\xd1\x93\x1f\x85\x65\xea\xf3\x38\xb1\xd0\xa0\x28\xe1\xf5\x0e\x3e\x88\x83\x2f\x24\x13\xed\xc0\x12\x41\x38\x0c\x2c\xa6\x4c\x31\x21\x31\xf2\x30\xb2\xc4\x20\x74\xd4\x3d\xac\xe1\x31\x12\xf2\x1d\x36\x19\x7a\x59\xe0\x13\xa2\x18\xc0\x18\xeb\xbd\x44\x12\x1c\xed\x96\x64\x81\xa4\xfb\x01\x89\x84\x99\x92\x75\x64\x58\x22\xf5\xda\x39\xa4\x30\x46\x43\x48\x83\xf6\x48\x1c\x83\xdf\x20\x8d\xa2\xc6\x80\xbe\xd7\x71\x2f\xc1\xf4\x99\x75\xae\x26\xdb\x9e\xc0\x51\x9b\x2d\x46\xe1\x64\x81\x9d\x8e\xd8\xd9\x86\x02\x6e\xeb\x28\xc5\x6c\x79\x81\x6b\xf9\x24\x67\x96\xf4\x99\xc9\x37\xd4\x7c\x45\x9e\x3a\x34\x7b\x34\x76\x87\x8e\x7b\x87\x8e\x74\x23\x28\x97\xbf\x0d\x21\xd7\x9b\x2d\x3b\x02\xeb\x3a\x3f\x8f\xc6\xe8\x04\xe9\x5c\xc4\x38\x59\xc9\x27\xbc\x0e\x91\x86\x18\xcc\x57\x9e\x0e\x88\x22\xf1\xde\xd1\x53\x81\x0e\x64\xac\x76\xab\xd9\xfc\x45\x79\xf3\xa6\x2c\x57\x69\xd0\x86\x56\x55\x55\x5d\xbc\xf9\x3a\x99\xd5\x6c\x5e\xae\xd6\xd5\xdd\xa0\x6d\xc8\xb3\x6d\x2d\xe5\x9e\x11\xda\x31\xea\x8d\x09\x2e\x44\x74\x64\x37\x1d\xa3\x8b\xd4\xde\x91\x22\xf8\x4d\x43\xc9\x20\xf7\x29\x82\x37\xce\x9a\x2d\x82\x6f\x83\x19\x13\x82\x77\x41\x37\x08\xbe\x0f\x63\xa2\xb0\xa3\x88\x64\x7f\xbd\xab\x4b\x34\x87\xd8\xc1\x3a\x6e\x88\x91\x65\x00\x3b\xed\x46\xc2\xad\x6d\xb8\x93\xeb\xbb\x88\x4c\xf0\x89\xb5\xe7\x65\xe2\x68\x7d\x6e\x56\x35\x2f\x6f\xd4\xbc\xba\x50\xf3\x13\x1b\x3f\xf6\xf5\x21\xf4\xc2\xca\x6f\xca\xef\x16\xdf\xbf\x5b\xfc\x58\xfd\xf6\xfa\xd5\xeb\x2f\xcf\xec\xb7\x1c\x63\xc6\x40\xb4\x3c\x88\x4c\xb7\x8e\x8f\x7f\x36\x96\x61\xba\x18\x7a\x92\xab\xab\xab\xf2\x66\xf6\x87\xea\xf2\x61\x8f\xbe\x27\xcf\x59\x56\xce\x17\x8b\xe5\x65\xb1\x58\xdc\x43\xdf\x50\xab\x47\x37\xcd\x29\x55\x88\xa1\x1b\xb0\x96\x6a\x3e\x23\xdf\xac\xd5\x5c\xa9\x87\x22\x3d\x60\xbd\x34\x4e\xa7\x94\xc3\x28\xf5\xe2\xd7\x77\x8b\x5f\xbe\x5b\x7c\xff\x71\x51\x5d\x4a\xa5\xc4\x29\x0b\x94\xaa\x45\xa4\x4f\xa3\x8d\x04\xeb\x8d\x1b\x1b\x92\xe2\x63\xf0\x86\x64\xa1\x54\x7d\xb7\xe0\xa0\xac\x93\x75\xe6\xf5\xe4\x02\x07\xda\x26\xb4\xa3\x3f\x74\x0e\x99\x2e\xc0\xe8\x44\x38\x06\x0e\xfa\x6c\x19\xe9\xd6\xb2\xe9\xee\xcd\x75\xca\xd3\xd6\x13\x9a\x80\x86\x8c\xd3\x93\xef\xdc\x3c\x96\x61\xb3\x9a\xb5\xda\x10\xca\xf7\xa0\xea\xb3\xa1\x83\x04\xe9\x18\xf5\x3e\xcf\xe2\x80\x35\xea\x10\x1c\x2c\x53\x9c\x5a\x60\x17\x6c\x23\x1f\x05\xfc\x04\x1e\x47\x38\x94\x52\xaa\xba\x5c\xad\x9e\x64\x69\x4e\xb0\x7c\xb7\xf8\xa5\x7a\x84\xdd\x04\xdd\x13\x1b\x4f\x10\x3f\xd8\x94\x6f\xa0\x54\x82\x52\x12\xaf\xaa\xc7\xb8\x2d\xb7\xb4\xbf\x0d\x71\xea\xee\x8d\x0b\xb5\x76\x18\xc6\xda\x59\x83\x21\xda\x9d\x66\xc2\x10\x43\x3e\xad\xa8\x41\x62\xcd\xd6\x60\xe2\x95\xbc\x6f\x2e\xd6\x4c\x47\x8e\x08\xdb\x0f\x6e\x7a\x49\xd0\x75\xca\x82\x93\x31\xcb\x2c\x34\x14\x5a\xd8\x16\xe4\x12\x09\xdb\xca\x02\xe4\x1b\xdb\x4e\x1d\x35\xb5\x2c\xc6\x44\x19\x7d\x4f\xb7\xe0\x2e\x86\x5b\x18\x9d\x0b\xc3\x71\x8f\xdb\xce\xba\x1c\x48\x06\x58\x90\x6f\x64\x21\xda\x10\x49\x9b\x4e\x16\xcf\xa6\xef\xe9\x56\xa9\xf4\x88\x67\x07\x6c\xe5\xa9\x72\x88\x3a\x92\xde\xe6\xbc\xd8\xfa\x91\xb0\x09\x1c\x10\x89\xc7\xe8\xe5\x49\x33\xe5\xca\xe6\x35\x1c\x47\x42\xab\x5d\x22\xf8\xd1\x39\xfc\xf4\xaf\x9f\xdf\xe3\xc7\x77\x1f\xfe\xfd\x1e\x7f\xff\xf9\xc3\x87\x93\x85\xb9\xc6\xb9\x04\xeb\x63\x21\x04\xae\x70\x89\x05\x94\xba\x80\x52\x65\xf5\x7c\x87\xe7\xe6\x7e\x46\xb6\x94\xfa\x96\x3b\x9b\x30\xe8\x48\x99\x7c\xe4\x5a\x1c\xc7\x16\xd7\x72\xfe\xec\x67\x83\x58\x5f\x63\xbd\x5e\xe3\x7c\xbd\xc6\xf4\x83\x17\x2f\xa0\x54\xbe\xb1\x5a\x61\x8d\xc5\x35\x94\x3a\x97\x4f\x10\x76\xa7\xef\x3c\x3f\x46\x76\xf1\xf1\x31\xb2\x27\xfe\xca\x9c\x6f\x26\x5f\xce\x59\xa9\xfb\xac\xb1\xc4\x2b\xbc\x39\xcd\xfd\x91\x02\x8a\x5c\xb6\x25\x26\x21\x94\x17\x6a\x8e\x97\xf7\x23\x2f\x2b\x79\xf1\xf2\x74\xed\xa1\xae\x3f\x74\xfa\xd0\x33\x4a\x95\xba\x6e\x7d\xe4\xdd\x4b\xa5\xd4\x34\x50\xfd\x5f\xa4\x75\x3e\x19\x89\xd3\x21\xb1\x12\x4a\x55\x50\xea\x37\x28\xf5\x05\xa5\x90\x95\x3c\x95\x43\x71\x83\x47\x87\x8d\xbc\xba\x5a\x5e\xfc\xae\xd1\x37\xa7\x36\xd3\x6b\xbe\x12\xeb\x98\x97\x5c\x29\x75\x34\xca\x17\xf9\x66\xca\xe1\xe2\xea\x61\xec\xf0\x45\x38\x2b\xab\xb3\x13\xbd\x7c\xa4\xc3\xc5\x53\x6a\xfa\xd4\x49\xfb\xf6\xfc\x6f\xff\xf8\xe1\xa7\xff\xfc\xf3\xfd\xf2\x32\x4f\xff\x2f\x00\x00\xff\xff\x13\xf8\x60\xe7\xaa\x0a\x00\x00" func runtimeSyntaxPhpYamlBytes() ([]byte, error) { @@ -3028,6 +4874,26 @@ func runtimeSyntaxPhpYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxPkgConfigHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x48\xe6\x8a\xd1\x2b\x48\x56\xe1\xe2\x02\x04\x00\x00\xff\xff\x48\xfc\x01\xcd\x0a\x00\x00\x00" + +func runtimeSyntaxPkgConfigHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPkgConfigHdr, + "runtime/syntax/pkg-config.hdr", + ) +} + +func runtimeSyntaxPkgConfigHdr() (*asset, error) { + bytes, err := runtimeSyntaxPkgConfigHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/pkg-config.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPkgConfigYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8f\x4d\x4b\x03\x31\x10\x86\xcf\xcd\xaf\x18\xc2\x1e\xba\x2e\xbb\x78\x35\x20\x22\xf5\x58\x3c\x14\xf4\xe0\x66\x2d\x69\x3a\x6b\x07\x76\x37\x71\x92\x56\xaa\xf1\xbf\x4b\xaa\xf6\xd4\xdb\x03\xcf\xfb\xce\x47\x4f\x03\xc6\xa3\x47\x05\xde\x0a\xb1\xc5\x88\x36\x2a\x10\x00\x00\x59\x4d\x66\x44\x05\x52\xeb\xc6\xdb\x42\x0a\xc1\xfb\x01\x83\x3a\xe9\x1a\x3c\xa3\x67\x67\x15\xc8\xd7\xf9\xa3\x19\x31\x3d\x60\xb0\x4c\x3e\x92\x9b\xd2\xd3\x6a\x99\x9e\x91\x43\xe6\x85\x9b\xfa\x81\x6c\x0c\x69\xd1\x0f\xe6\x2d\x94\x4a\x5e\x18\xb1\xc2\xf7\x3d\x31\x86\xb4\xa4\x4d\x28\xe7\x79\x27\xd3\xc1\x44\x2c\xef\xce\xf9\x70\x1c\x37\x6e\x68\x9c\x47\x36\xd1\xb1\x02\x79\xfb\xaf\x68\x8b\x53\xa4\x9e\x90\x9b\x83\xe1\xd3\xd1\x85\xd6\x5f\xed\x7d\xfd\x62\xea\xcf\x75\xf7\x07\xd7\xf5\xcd\xba\xbb\xd2\xfa\xfb\xdc\x9b\x72\xb1\xb6\x3b\xc3\xcd\xc7\x8e\x22\x06\x6f\x6c\x7e\xba\x6d\xd5\x2f\x76\x5d\x55\x5c\x48\x2b\x90\xb3\x0a\xaa\x04\xd5\xac\x92\xe2\x27\x00\x00\xff\xff\x0d\x58\x66\xca\x49\x01\x00\x00" func runtimeSyntaxPkgConfigYamlBytes() ([]byte, error) { @@ -3048,6 +4914,26 @@ func runtimeSyntaxPkgConfigYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxPoHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\xc8\xe7\x8a\xd1\x2b\xc8\x2f\xb1\x57\xe1\xe2\x02\x04\x00\x00\xff\xff\x5e\x5b\xa5\x67\x0c\x00\x00\x00" + +func runtimeSyntaxPoHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPoHdr, + "runtime/syntax/po.hdr", + ) +} + +func runtimeSyntaxPoHdr() (*asset, error) { + bytes, err := runtimeSyntaxPoHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/po.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPoYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\xce\x4b\x6a\xc4\x30\x0c\x06\xe0\xf5\xf8\x14\x42\x2d\x4c\x1e\x8c\x0f\xe0\xcd\x1c\x24\x4a\xc0\xe3\xa8\x19\x43\xec\x18\x5b\xa5\x94\xfa\xf0\x25\x99\xbe\x16\xdd\x4a\xdf\x2f\xfd\x2f\x7e\x65\x79\x4f\x6c\x20\x6d\x4a\xcd\x2c\xec\xc4\x80\x02\x00\xd8\x57\xd1\x06\x36\x80\x44\x3a\x6d\x72\x7d\x46\xa5\xf2\xeb\xca\xc5\x1c\xe0\x02\x29\x73\xca\x9b\x3b\xc4\xad\x09\x65\xf1\x73\x0d\x65\x29\x92\x5b\xa2\x1b\x7e\x29\xb7\xc5\x22\x36\x8a\x2e\x92\x7d\x5c\x76\x8d\x0d\x11\x91\xae\xc3\x44\x38\xb6\x1d\x61\x3d\xff\x4c\xce\x63\xdb\x9d\xbf\xb3\x25\xb1\xf3\x76\x3d\x3e\x10\xe9\xeb\xef\xcd\x10\x38\x8a\x01\x6c\xa6\x3a\x0c\xa6\x24\xeb\xd8\x8c\x63\xfb\xd4\x0c\xd3\xc7\xa8\xbb\x76\x6f\xfb\xb0\x3e\xce\x1c\xe5\xe2\xee\x36\xeb\xb7\xbb\x17\x7e\x60\xc0\x3f\xb9\xfe\x3f\x6d\x00\x4f\x3d\xf4\x15\xfa\x53\x8f\xea\x33\x00\x00\xff\xff\x13\x06\x8b\x95\x2b\x01\x00\x00" func runtimeSyntaxPoYamlBytes() ([]byte, error) { @@ -3068,6 +4954,26 @@ func runtimeSyntaxPoYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxPonyHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\xc8\xcf\xab\xe4\x8a\xd1\x03\x51\x2a\x5c\x5c\x80\x00\x00\x00\xff\xff\x70\xe0\x62\x39\x0e\x00\x00\x00" + +func runtimeSyntaxPonyHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPonyHdr, + "runtime/syntax/pony.hdr", + ) +} + +func runtimeSyntaxPonyHdr() (*asset, error) { + bytes, err := runtimeSyntaxPonyHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/pony.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPonyYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x94\xcd\x72\x9b\x3e\x14\xc5\xf7\x3c\x05\x61\xfe\x1f\x40\x8a\xed\xae\x3a\x61\xfc\x31\x99\x69\xbb\xcd\xa6\xab\x20\xe2\x11\x70\x89\xd5\x82\xc4\x48\x17\x3b\xee\x9c\x87\xef\x80\x53\xbb\x69\x13\x0a\x0b\x24\x9d\x9f\x74\xc4\x11\x97\x5a\x35\xc4\xc7\x8e\x52\xbf\x33\xfa\xe8\x79\x15\x31\x95\x9c\xfa\x9e\xef\xfb\xfe\x20\x6a\xd9\x52\xea\x07\x42\xcc\x06\xe0\x9f\xc0\xf3\x6c\xdf\x90\x4b\x47\x20\xf1\x1d\x4b\xa6\x96\x34\x8f\x4c\x11\x0e\x6b\x41\x69\x26\x5b\xcb\x92\xc0\x56\x2a\x46\x67\x55\xab\x58\xed\x09\x65\x23\x9d\x83\x63\xdb\x97\x0c\x59\xb2\xb1\x91\x10\x45\xf0\xc6\x62\xa5\x69\x3b\xd5\x90\xdd\x2a\xcd\x56\x69\xa7\xca\x29\xba\x77\x34\x25\xef\xa5\x45\x43\x0c\x6a\x0b\xaa\xa6\x40\x4d\x07\x14\x84\xba\xd7\x53\x94\x72\x06\x6c\x35\x2c\xd5\xd8\xcb\x06\x85\x79\x02\xcb\x47\x94\x46\xbb\xbe\x9d\xdc\x49\x61\x49\x7e\x1b\x40\x56\xba\x27\x58\xe2\xde\x6a\x90\xb5\xd3\x69\xa8\x1a\xbc\x23\x0d\x6a\x1c\xa9\x7a\x7c\x80\x74\x85\x56\x72\xb9\xc3\x61\x47\x76\xc8\xfb\x88\x83\xe2\x1d\xa4\x83\xa5\xd2\xec\xc9\xc2\x14\x5f\xa9\x64\x34\xb2\x2d\x2a\x39\x08\x95\x7a\x24\xc7\xa6\x86\xaa\x2b\xaa\xa7\x2c\x0f\x3b\xd5\x10\x2a\x03\x4b\x1d\x49\x46\xaf\x59\x35\xa8\x8d\x85\x7a\x33\x9c\x50\x88\x0d\x56\xeb\xe8\x0d\x0d\x10\xe2\x3f\x08\xf1\x0e\x42\x3c\x5c\xa0\x63\x5b\x98\x66\x66\x3a\xb2\x92\x8d\x3d\xa1\x09\x84\xb8\x86\x10\x31\xe6\x10\xe2\x0a\xff\x62\xb9\xc4\x7a\x3d\x35\x69\xb5\xc2\xd5\x0a\xcb\x15\xd6\x2b\x2c\xf1\xfa\x26\x4e\xa7\x07\xe5\x34\x43\x1b\x86\xd4\x15\x8c\xc5\xd3\xcb\xf4\x4f\x45\x31\xc2\xdb\x38\xbb\x4d\xee\xf3\x6c\x2b\x93\xef\xb7\xc9\xfd\x22\xb9\x11\xe2\xff\x3c\xfe\x95\x1e\x4e\x9d\xe5\xa5\x0a\x76\xca\xbd\x26\xcf\x0a\x63\x9a\x9f\x8c\xed\x09\xb5\x6c\x5e\x7e\xb5\x67\x52\xf7\x6d\x41\xf6\x99\x0d\x17\x45\xb6\x48\xde\x6f\xf3\x38\x42\xb8\x30\xd9\x22\xf9\xf0\xdc\x7e\xca\x16\xc9\x8d\x4c\xea\xdb\xe4\xf3\x69\x64\xe8\x6f\xf3\xeb\x50\x88\xd9\x73\x33\xda\x84\x21\xe1\x53\x14\x0a\x31\xe4\x99\x44\x9b\xb3\x10\xbd\x6a\xed\x86\x62\x7b\x1c\xac\x83\x71\xce\x0c\xd9\x83\x08\xf2\x28\x16\xc1\x85\x6d\xc7\x34\xc7\xee\x70\x39\x96\x76\x7c\xfb\xf1\x1e\xf9\x38\x38\xab\xa4\xab\xb3\x76\x19\x3d\xfd\x48\xfc\x2c\xf7\x7e\x5b\xd5\x0f\xc2\x07\x64\x59\xea\x3a\x59\x52\x9a\xe7\xd1\x7c\x3e\x8b\xff\x6a\x3d\x17\xe2\x4f\x4b\x11\xcf\x27\x0c\xd9\x54\x26\xf5\x83\x2f\x77\x1f\xef\xd2\x4d\xe0\xfd\x08\x00\x00\xff\xff\xea\x67\x0e\xde\x0d\x05\x00\x00" func runtimeSyntaxPonyYamlBytes() ([]byte, error) { @@ -3088,6 +4994,26 @@ func runtimeSyntaxPonyYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxPovHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\xc8\x2f\xe3\x8a\xd1\xd3\x28\xc8\x2f\xab\x09\xf0\x0f\xab\x29\xc8\x2f\x2b\x4a\xac\x04\x31\x83\x1c\x23\x35\x55\xb8\xb8\x00\x01\x00\x00\xff\xff\x4e\x1a\x2e\x88\x20\x00\x00\x00" + +func runtimeSyntaxPovHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPovHdr, + "runtime/syntax/pov.hdr", + ) +} + +func runtimeSyntaxPovHdr() (*asset, error) { + bytes, err := runtimeSyntaxPovHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/pov.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPovYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x52\xdb\x8e\xd3\x30\x10\x7d\xcf\x57\x84\xb2\x42\x6d\x25\xda\xf7\x70\x91\xf8\x02\x10\x0f\x48\xa8\x53\xca\xc4\x99\xa4\x06\xc7\x63\x8d\x27\xd5\x46\x0c\xff\x8e\x9c\xad\xb4\x65\xa5\x5d\x3f\x1d\x4f\xce\x65\x72\x92\xde\x07\xd2\x39\x51\x53\x27\xbe\x54\x55\x47\x4a\x4e\x9b\xba\xaa\xeb\xba\x2e\xcf\x22\x8e\xd4\xd4\x2b\x80\xdd\x3a\xf1\xc5\xbe\x7c\xfe\x66\x89\x2f\x82\x73\x81\x5f\x3f\x7d\xdf\xdc\xad\xaa\x4a\xa6\x40\xb9\x59\x34\x6f\xeb\x24\x94\x84\x5d\x53\xaf\x7e\x1c\x0e\x4d\x4e\xe8\xa8\x39\x1e\xb7\xaf\x6f\x2f\xeb\x8e\x5c\x40\xa1\xcd\xea\x2a\xca\x8a\x4a\x23\x45\x5d\xb2\xda\x75\x4e\x67\x12\x32\x37\x07\x1f\x3b\x12\x53\xc1\x98\x03\x2a\xd9\x88\x2a\xfe\xde\x84\x8b\xc2\xb2\xc3\x40\x1b\x80\xf6\x39\x23\x16\x3d\xf3\x20\x98\xce\xde\x59\x60\x87\xea\x39\xda\x94\x4c\xfc\x70\x56\xeb\xbc\x90\x5b\x46\x2e\xf8\x94\xa8\x3b\xb5\xf3\x4b\x76\x3d\x0f\xa7\x52\x97\x15\xc0\x7d\x9f\x49\x17\x88\x41\x4d\x86\xd6\x3a\x9f\x15\xa3\xa3\x87\x85\x7b\x96\xf1\xd6\xcd\x77\x14\xd5\xf7\x9e\xa4\xb4\x53\xfc\x94\xee\x75\x12\x7a\x96\x54\x38\xa1\x6c\x7a\xca\x3c\x89\x23\x6b\xd1\xfd\x1e\x84\xa7\xd8\xbd\xa8\xe9\x79\x30\x6e\x7f\x91\x53\x73\x38\x92\xe0\x7f\x2f\x35\x8f\x2d\x87\x1d\x27\x12\x54\x2e\x92\x35\xc0\x1f\x03\xf8\x6b\x00\x6b\x03\xd8\x18\xc0\x3b\x03\x38\x1a\xc0\xc1\x7e\x1a\x00\x80\x01\xdc\xd9\x7b\xfb\x68\xaf\xec\x83\xbd\x31\x00\x7b\xfc\x78\x89\x9c\xc7\x70\x8d\x9e\x62\xa9\xb3\xec\x98\x2c\x4f\xed\x02\x6e\xd3\x1d\x8f\xd7\x42\xf7\xfb\xdd\xf6\xe9\x74\xb9\x96\x93\x15\x65\x21\x01\x5c\x49\xe5\x50\xec\x96\x98\xed\xfe\x71\xf6\xf0\xf7\xd5\x87\x63\x55\xfd\x0b\x00\x00\xff\xff\x47\x8d\xbf\x93\xce\x02\x00\x00" func runtimeSyntaxPovYamlBytes() ([]byte, error) { @@ -3108,6 +5034,26 @@ func runtimeSyntaxPovYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxPrivoxyActionHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x28\xca\x2c\xcb\xaf\xa8\xd4\x4d\x4c\x2e\xc9\xcc\xcf\xe3\x8a\xd1\x83\x30\x54\xb8\xb8\x00\x01\x00\x00\xff\xff\xfe\x61\x30\x6f\x1a\x00\x00\x00" + +func runtimeSyntaxPrivoxyActionHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPrivoxyActionHdr, + "runtime/syntax/privoxy-action.hdr", + ) +} + +func runtimeSyntaxPrivoxyActionHdr() (*asset, error) { + bytes, err := runtimeSyntaxPrivoxyActionHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/privoxy-action.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPrivoxyActionYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x54\x41\x6e\xdb\x30\x10\x3c\xc7\xaf\x20\xd4\x1c\x9c\x0a\xeb\x07\xe8\x92\x43\x9f\x61\x39\x00\x43\xae\xa4\x45\x28\xae\xb0\x5c\xd9\x31\xc2\xfe\xbd\xa0\x6d\x39\x49\x6b\x14\xe8\xa5\xa7\xdc\x8c\xe1\xec\x78\x67\x76\xa0\x8e\x02\xea\x71\xc2\xc6\x4c\x42\x7b\x7e\x3d\x82\x75\x4a\x1c\x57\x2b\x8f\x8a\x4e\x1b\xb3\x32\xc6\x98\x42\x8b\x76\xc4\xc6\x54\x6d\xbb\x39\x53\xee\xab\xd5\x4a\xe6\x80\xa9\x39\x51\xc0\x38\x8e\x49\x6d\xd4\xcd\x33\x73\xd8\x74\x36\xa4\xc2\xdf\xbe\x6d\x9b\x34\x59\x87\xcd\x6e\xd7\xb6\xf0\x1c\xd8\xbd\xac\xb7\x57\xec\xed\xe7\x2e\xdf\x3f\x54\x37\x25\x54\xe6\x3f\x15\xea\x7f\x51\x58\x96\x80\xb5\xf5\x1e\x06\xb4\x1e\x25\xbb\xc1\xc6\x1e\xe1\x15\x3a\x96\x83\x15\x8f\xbe\xfc\xca\x2e\x10\x46\xbd\x90\xa0\xa3\xa0\xf8\x3b\xa8\xb6\xef\x0b\xc8\x51\x0b\x5a\x82\x03\xde\xa3\x1c\x84\x14\xb3\x93\x39\xba\x01\x3e\x8d\x2c\x20\x75\x10\x39\x22\x8c\x56\xdd\x70\x05\xa3\xe3\x91\x62\x0f\x8e\xf9\x85\x30\x2d\x38\xcf\xda\xf3\x0d\x3c\xa1\xec\x51\x16\x65\x8f\x36\xd2\x68\x15\xa1\xa7\x2e\x65\xcf\x87\xd8\x8b\xf5\x08\x83\xea\x04\x7b\x94\x44\x1c\x73\x67\x93\x82\xa0\x27\x41\xa7\x29\x5f\x6c\x75\x2c\x0e\x41\xf1\x55\x61\x64\x8f\xf9\x92\xc4\xc9\x8c\x90\xc7\x3c\xd8\xe8\x03\x82\x4d\x80\xe3\xa4\x47\xf0\xec\xe6\x11\xa3\x7e\x78\xa0\xd1\xf6\x98\x07\xf2\x08\xd6\x39\x9c\x14\x82\x8d\xfd\x7c\x05\x97\x94\x3c\xa5\x89\x13\x95\xca\x9c\x1f\x3a\xe1\x71\x31\x71\x02\xa8\x2b\x5b\x50\x47\xe8\x21\x51\x74\x17\x01\xc1\x0e\x45\x16\xd2\x9c\x50\xc0\xf6\x65\x87\x40\x23\x69\xd1\x8f\xe8\x34\x5f\x0f\x00\xa1\x78\x5d\x94\xf2\x24\xb8\x2f\xff\xef\x78\x9c\x04\xd3\x29\x8d\x25\x88\xfc\x29\xca\xe5\xd8\x9f\xc1\xcb\xb1\xd3\x79\x74\xb9\x05\x70\x0c\xc7\x9c\x50\xcf\xfe\xcf\x7d\x46\xf9\x7b\x83\xdb\xb6\xfe\x2a\xe0\x57\x01\xff\x6f\x01\xd3\x84\x8e\x6c\xf8\x31\x58\x39\x55\xb0\x6d\x37\x8f\xef\xa4\xb1\x84\xd9\x98\x6a\xfd\x94\xdf\x3f\xa5\xbb\x87\x6f\xeb\xed\xd3\xdb\x6e\xf3\xfd\xe1\xf1\x7e\xe1\x52\xf4\x27\x17\x83\x95\xcd\x61\x20\xc5\x33\xd9\x54\x1f\xe6\xea\x5b\xec\xc6\x54\x77\xb5\xa9\xb3\xa9\xef\xea\x6a\xf5\x2b\x00\x00\xff\xff\x10\xd4\x24\x50\x6a\x06\x00\x00" func runtimeSyntaxPrivoxyActionYamlBytes() ([]byte, error) { @@ -3128,6 +5074,26 @@ func runtimeSyntaxPrivoxyActionYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxPrivoxyConfigHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x28\xca\x2c\xcb\xaf\xa8\xd4\x4d\xce\xcf\x4b\xcb\x4c\xe7\x82\x72\xf5\x21\x5c\x15\x2e\x2e\x40\x00\x00\x00\xff\xff\x25\x83\xf6\xe6\x20\x00\x00\x00" + +func runtimeSyntaxPrivoxyConfigHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPrivoxyConfigHdr, + "runtime/syntax/privoxy-config.hdr", + ) +} + +func runtimeSyntaxPrivoxyConfigHdr() (*asset, error) { + bytes, err := runtimeSyntaxPrivoxyConfigHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/privoxy-config.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPrivoxyConfigYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x52\xcb\x6e\xe4\x38\x0c\x3c\xa7\xbf\x42\xf0\xe6\x90\x6c\x83\xd9\xcb\xee\xc5\x97\xfd\x90\x20\x01\xd4\x52\xd9\x16\x42\x3d\x86\xa2\x3b\x69\x8c\x3e\x7e\x20\xa7\x9d\x64\x82\xb9\xe8\x41\x16\xc9\x62\x91\x53\x60\xe8\xa5\x60\x34\x45\xc2\x39\xbf\x5d\xc8\xe5\x34\x85\xf9\x70\xf0\x50\x38\x1d\xcd\xc1\x18\x63\x3a\x2c\xd9\x88\xd1\x0c\x57\xdc\x3f\xef\xb8\xdb\xe1\x70\x90\x95\x51\xc7\x0d\x47\xa6\xaa\x55\x44\x24\x1d\xcd\x70\x67\x9d\x43\x51\x0a\x49\x21\xfd\x05\x4f\x82\x1f\x2b\xaa\xd6\x66\x9d\x86\x9c\x6a\xcf\xdc\xac\x8f\x21\x91\xf5\x5e\x50\x6b\xb3\xcc\xf9\x95\xdc\x1c\x76\x30\x39\x59\x93\x5b\x42\x9a\xdb\x69\x9d\x26\x08\x71\x88\x41\x9b\xcb\xb1\xf4\x88\x90\x13\x31\xce\xe0\xd6\x49\xf9\x20\xfd\x4e\xd8\x0a\x50\x5d\xac\xf4\x48\x8f\xd3\xda\xcf\xc9\xae\xac\x54\x21\x67\x08\x69\x88\xc8\xab\x36\x8f\x74\xa1\xce\xb6\xd6\x86\x64\x4f\x0c\xfa\x92\x7c\x37\xc1\x07\xa5\x2b\xef\xdd\x26\x88\x59\x41\x8b\x6a\x21\xcd\xf3\xcc\xf8\xe6\xf9\x30\x4e\x59\x1c\xe8\xc4\xd9\xbd\xd4\x36\x05\x56\xc8\xd6\xfc\x94\xe5\xd5\x8a\xdf\x6f\x78\xba\xb2\x27\x81\x4a\x40\xdd\x3d\x54\x7b\xe8\xbf\xdf\xbe\xf6\xf7\xff\x7f\x6d\xb1\xc9\x33\xc8\x56\x42\x2c\x7a\x21\x9f\x5d\xcf\xb4\x4a\xaa\x94\x5f\xda\x92\xab\xf6\x51\xb6\x17\xa0\x90\xe5\x70\xc6\x87\x0c\x1c\xaa\xe2\x73\x10\x9c\xe7\x2e\x26\xe7\x79\x23\x1a\xed\x1b\x39\x0e\x48\x4a\x9f\xfa\xd6\x56\x20\x71\xd3\x65\x53\xaf\x48\x5f\xa2\x90\xa6\x4c\xab\x70\xab\x21\xcd\x0c\xd2\x45\x60\x3d\x7c\xeb\x1c\xa1\x1f\x05\x6b\xe1\xa0\xc4\x56\x66\xd0\x94\x25\xd6\xa6\x88\x85\x7b\xd5\xab\x6e\x9a\x19\x62\x15\x54\x42\x01\x87\xd4\x47\xa9\xb2\x56\xdd\x28\x6d\xaf\xcf\x6a\x6b\x85\x50\xb4\x69\xb5\x7c\xff\xf8\x38\xd6\x62\x1d\xc6\xa7\xa7\xe1\xba\x9b\x2e\xc7\x7d\x33\x9f\xdb\x17\xff\xfd\x5f\x77\x8f\xcf\x3f\x9f\x1e\xfe\xbe\xff\xff\x76\xc7\x86\xe4\xb7\x46\x17\x2b\x0f\xaf\x4b\x50\xbc\x83\xcd\xf0\x25\xee\xf8\x27\xf4\x68\x86\x9b\xa3\x39\x36\x73\xbc\x39\x0e\x87\x5f\x01\x00\x00\xff\xff\xcd\xb0\x1c\xf1\x60\x03\x00\x00" func runtimeSyntaxPrivoxyConfigYamlBytes() ([]byte, error) { @@ -3148,6 +5114,26 @@ func runtimeSyntaxPrivoxyConfigYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxPrivoxyFilterHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x28\xca\x2c\xcb\xaf\xa8\xd4\x4d\xcb\xcc\x29\x49\x2d\xe2\x8a\xd1\x83\x30\x54\xb8\xb8\x00\x01\x00\x00\xff\xff\x80\x7f\x47\x23\x1a\x00\x00\x00" + +func runtimeSyntaxPrivoxyFilterHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPrivoxyFilterHdr, + "runtime/syntax/privoxy-filter.hdr", + ) +} + +func runtimeSyntaxPrivoxyFilterHdr() (*asset, error) { + bytes, err := runtimeSyntaxPrivoxyFilterHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/privoxy-filter.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPrivoxyFilterYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\xd0\xcb\x6a\xc3\x30\x10\x05\xd0\x75\xf4\x15\x83\x9a\x85\x5d\x21\x7f\x80\x36\x21\xa4\x6a\x1a\x08\x5d\xb8\xa6\x1b\x3f\x40\x38\x63\x2c\xb0\x15\x23\x4d\x1f\x69\xfd\xf1\x25\x71\xfa\x24\xdb\x6e\x87\x33\x5c\xee\x6d\x6c\x87\x74\x18\x50\xc1\xe0\xed\xf3\xfe\xf5\x20\x1b\xdb\x11\x7a\xc6\x76\x48\x58\x93\x02\x06\x00\x70\x64\xce\xf4\xa8\x80\x17\x45\x32\x91\x39\x67\xcc\x3f\x75\x18\xd4\x89\x48\x08\x64\x08\x7b\x74\xa4\x80\x57\xd1\xed\x66\x9b\xe9\x74\x5c\x6d\x37\xfa\x3e\x93\x77\x7a\x79\xa3\x53\x79\xf1\x98\x2d\xd7\x6b\x9d\x8e\x0f\x3a\x7d\xd4\xe9\x1f\xf9\xfb\x38\xc9\x58\x41\x6e\xe4\x9b\x2c\x05\x3f\x27\xdb\x1d\x3a\xb2\x8d\x45\xff\xef\xd1\x9f\x91\xf5\xde\x05\x32\x8e\x92\x30\x60\x6d\x4d\xb7\x6a\x8d\x3f\xad\x53\x14\xc9\xe2\x1b\xf5\xe7\x3d\xa2\x6a\xcc\x73\x15\x06\x53\xa3\x2a\xcb\xf8\x2a\xca\xab\xf7\x32\xb9\x8e\x17\xf3\xaf\x0e\xee\x58\x42\xd6\xad\xf1\xc9\x4b\x6b\x09\x27\x0c\xfc\xc7\x9f\xb8\xa4\x15\xf0\x99\x00\x31\x82\x98\x09\xce\x3e\x02\x00\x00\xff\xff\x80\x28\x92\xe2\xd1\x01\x00\x00" func runtimeSyntaxPrivoxyFilterYamlBytes() ([]byte, error) { @@ -3168,6 +5154,26 @@ func runtimeSyntaxPrivoxyFilterYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxProtoHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x28\xca\x2f\xc9\xe7\xd2\x88\xd1\xd3\x00\xb3\x34\x55\x54\x34\xb9\xb8\x00\x01\x00\x00\xff\xff\xb6\x32\x61\x16\x15\x00\x00\x00" + +func runtimeSyntaxProtoHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxProtoHdr, + "runtime/syntax/proto.hdr", + ) +} + +func runtimeSyntaxProtoHdr() (*asset, error) { + bytes, err := runtimeSyntaxProtoHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/proto.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxProtoYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x92\xcf\x6e\x9c\x3c\x14\xc5\xf7\xf3\x14\x16\x1a\x69\x20\xf9\x60\x48\xf2\x29\x6d\xd8\x44\x55\xdb\x48\x5d\x54\xd9\x74\x31\x2a\x17\x55\x06\xee\xa4\xd6\x80\xed\xda\x97\x6a\x46\xb9\x79\xf7\x0a\xc8\x1f\x44\x54\x35\x1a\xaf\xe0\xfa\xd8\xbf\xa3\x73\xbc\x55\x0d\xd2\xc1\x62\x26\xac\x33\x64\x16\x8b\x1a\x09\x2b\xca\x16\x42\x08\xd1\x6f\x6a\xd9\x62\x26\x82\x10\x20\x09\x07\x49\xb4\x5c\x46\xc1\x62\xe1\xba\x06\xfd\x28\x8b\x85\xaa\x51\x93\xda\x2a\x74\x99\x08\x00\xca\xfc\x43\xfc\xfd\x47\x91\xa7\xf1\xd5\xf0\x71\x0a\x50\x06\x8f\xd2\x11\xd6\x8b\x42\xa5\x29\x7c\xcf\x67\x97\x7c\x71\xce\x97\xff\x47\x11\x7b\x72\x4a\xdf\x71\x79\x20\xf4\xec\xd0\xa2\x24\xac\xb9\x34\xa6\x61\x87\xbf\x3a\xe5\xb0\xe6\x56\x5a\x36\x96\x94\xd1\xb2\x61\xa3\xd1\x6c\xb9\xd3\xca\xe8\x09\xc2\x93\x24\x6c\x51\xd3\x13\xa7\xb5\xc6\x11\x7b\x74\xbf\x55\x85\x8c\xba\x6b\xd9\x1f\x34\xc9\x3d\x5b\x59\xed\xe4\x1d\x3e\xde\xc8\x2d\x7a\xdf\xff\x3a\x5b\xb1\x43\xea\x9c\xf6\x8c\x7b\x42\xed\x95\xd1\x9e\xc9\x44\x13\x4c\x65\xb4\x27\x39\x50\x56\x00\x00\x61\x98\xa7\xf1\x45\x71\x9d\xa7\xf1\xbb\xe2\xfe\xec\xbf\xf3\x87\x28\x5a\xfd\x4d\xbc\x1f\xc3\xb9\x91\xf1\x76\xd4\x3e\x2b\xfd\xa1\x2d\x4d\x93\x94\x4e\x56\x3b\x24\x9f\x89\x20\x0f\xa3\xfb\x87\x82\x01\x72\x06\x28\xe6\x37\x26\xba\x6b\xcb\x21\xf8\xb0\x4f\x3e\x8d\xaf\x86\xbc\x19\xa0\x4c\xa7\x94\x7e\xd8\x17\x37\x3b\x3d\x66\x3e\x16\xd9\x2f\x4f\xd2\x0d\xc1\x05\xc1\xf3\x0c\x75\x3d\x9b\xf8\x9d\xb2\x43\xba\x00\xc9\xcb\x74\xf2\x26\x9e\xd6\x94\x64\xb1\x52\xb2\xf9\xf8\x53\xba\x97\xa3\x6f\xb5\xb3\x9a\xbb\x59\x1d\x65\xc6\x3a\xb4\xce\x54\x99\x08\x92\xe4\x34\x38\xce\x69\x3b\x3c\xad\x57\x0e\xd7\xeb\xb9\xc5\xe5\x3f\xcc\x90\xa9\x4d\x5f\xdb\xb7\xdb\x4f\xb7\xbc\xd9\x6c\xf8\xe6\xcb\xe6\xeb\xe7\x28\xbb\x7e\x03\x0c\xe0\xe4\x55\x3f\x70\xb2\x3e\x9e\xf8\x27\x00\x00\xff\xff\x63\xdb\x6f\x09\x09\x04\x00\x00" func runtimeSyntaxProtoYamlBytes() ([]byte, error) { @@ -3188,6 +5194,26 @@ func runtimeSyntaxProtoYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxPuppetHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x28\x2d\x28\x48\x2d\xe1\x8a\xd1\x2b\x28\x50\xe1\xe2\x02\x04\x00\x00\xff\xff\x49\xdf\x66\x23\x0e\x00\x00\x00" + +func runtimeSyntaxPuppetHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPuppetHdr, + "runtime/syntax/puppet.hdr", + ) +} + +func runtimeSyntaxPuppetHdr() (*asset, error) { + bytes, err := runtimeSyntaxPuppetHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/puppet.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPuppetYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x54\xd1\x6e\xe3\x36\x10\x7c\xf7\x57\x28\x3a\x05\x91\x64\xd8\xb9\x97\x3e\x9c\xd0\x26\x39\xa0\x2d\xd0\x87\xe2\x50\xa0\x40\x83\x23\x29\x87\xa6\x56\x16\x61\x89\x54\x48\x2a\xb1\x9d\x4d\xbf\xbd\xa0\x2c\xdb\xb2\x83\x03\x1a\x04\x32\x39\x33\xdc\x19\x5a\xeb\x2d\x65\x0d\x6e\xdb\x42\x16\xb4\x5d\xdb\x82\x9b\x4c\x0a\x70\x20\x5c\x16\x4c\x82\x20\x08\x3c\xad\x78\x03\x59\x10\x52\x3a\x6f\xdb\x28\x9c\x4c\x4c\x57\x83\xcd\x7a\x7a\x16\x14\x50\xf2\xae\x76\x59\x10\xe6\x84\x64\xb6\xe5\x02\x32\xc6\x62\xc2\x67\x3b\xe6\x1f\x9f\x67\x5f\x16\x6c\x9a\x84\x83\x5c\x16\xa0\x9c\x2c\x25\x98\xf9\x0b\x37\x7d\xd5\xc8\xcb\xb2\xa3\x38\x63\xd3\x83\x78\x9f\x2b\xa4\x74\x19\xf3\x6e\x05\xdc\xa2\xd0\x4d\xdb\x39\x30\x28\x8c\x56\x08\x1b\x10\xe8\x13\xf6\x8f\x65\x27\xd6\xe0\x70\x65\x74\xd7\x62\xa5\xad\x43\xa9\x1c\x98\x92\x0b\xc0\xf5\x4f\xb5\x5e\x49\x85\x0d\x17\xbc\x73\x95\x36\x72\xc7\x9d\xd4\x1e\x90\x35\xaf\x25\xb7\xfd\xaa\x96\xd6\x61\x23\x36\xd8\xe8\x4e\x39\x54\x7c\x25\xb5\x5d\x08\xdd\x34\x5c\x15\xa7\xad\x72\x5c\xb8\x8b\xed\xde\x76\xc0\x7a\xf7\xd1\xba\x80\x16\x54\x01\x4a\x6c\xc7\x28\x58\xc1\xeb\x7d\x8c\x31\xba\x71\x52\x95\x7a\x0c\x9d\xd5\xb6\x60\x5e\xa4\x80\x8b\xed\x47\x87\x81\xf8\x68\x72\x20\xce\x7d\x06\xf4\xcc\xca\xc9\x06\x5a\x30\x52\x17\xa8\xb4\x93\xe5\x16\x5b\x2e\xd6\x7c\x05\x68\xc0\xea\xce\x08\xb0\x68\x74\xff\x3e\xac\xa8\xa0\xe8\x6a\x38\x2e\x8a\x85\xe3\x76\x8d\x16\xea\xa5\xd6\x35\x70\xe5\x97\x8d\xde\x6b\x86\x2b\x58\x5b\x2d\x0e\xaf\x03\x8a\xc5\x1a\xb6\x1e\xea\x3f\x9c\x77\x71\xb2\xd8\x62\x67\xc1\xe0\x4b\xcd\x15\x6e\xbb\xc6\x40\xab\x71\x57\x5a\xdc\x69\x05\xb8\x6b\xb5\xae\x91\x2b\x51\x69\x93\x50\xba\x3c\xf4\x8d\x75\xdc\x41\x03\xca\x0d\xcd\x23\x6a\x6e\x2d\x16\x50\x4a\x05\x28\x4b\x84\xda\x02\x76\xaa\x80\x12\xa5\xaa\xc0\x48\x67\xcf\x8e\x6f\x9b\xa5\xae\xb3\x20\x8c\x7f\xc1\x19\xfe\x8b\x77\x3f\xee\xde\x98\xd2\x08\x1f\xf0\xe1\x21\xb9\xa7\x74\x49\xbe\xce\xbe\xb3\x29\xf9\x3c\xfb\xf2\x75\xf6\x7d\xe1\x7f\x01\xe9\xc7\x9a\x24\xe8\xff\x18\xe6\x49\x76\x90\xb2\xe9\xc8\x5e\x68\x65\x1d\xef\xc3\xdf\xc6\x24\xbf\x65\x18\x53\x4a\xe9\x6d\x92\xa4\xb7\x44\xea\x66\xc3\x52\xbc\x36\x94\xbe\xc5\x24\x7f\x1f\xc8\xf7\x24\x49\x29\x7d\x1f\xe8\xcb\x4a\x73\xeb\x8c\x54\xab\x2c\x08\x9f\x48\xfe\xc4\xd2\x27\xbc\xde\x50\xfa\xe6\x8f\xfb\x53\x3f\x96\xd3\x30\x26\x39\x0d\x07\x13\x1a\x7a\x97\x10\xaf\xc9\x5f\xff\xb0\xfb\x51\x81\x23\x12\x93\x3c\xf1\x48\x32\x20\x3f\x93\xfc\x8e\xa5\x77\x47\x9e\x90\x9c\x79\x9e\x1d\x91\x88\xe4\x91\x47\xa2\x23\x92\x93\x3c\xf7\x48\x3e\x20\x57\x24\xbf\x62\xe9\xd5\xf1\x8b\x6c\x41\x48\x5e\xef\x27\xc7\xff\xba\xc4\x4d\x4c\xf2\x9b\xe1\x0a\x37\x49\x92\xde\xe0\x35\x79\x7e\x65\xe7\xf9\x7b\x60\x1c\xff\xf9\x95\x9d\xd2\xf7\xec\x38\x7c\x0f\x8c\xb3\xf7\xc0\x38\xfa\xf3\x2b\xbb\x48\xee\xc7\xc8\xbe\x27\x3f\x91\xfc\x8d\xcd\xd3\x08\x3f\x45\x17\xe4\x7c\x69\xe4\xaa\xea\x35\x27\xd1\x49\xe5\x74\xa1\x7d\x0f\x3d\x3e\x3e\xe2\xdf\xdf\x7e\xfd\x86\xbf\xff\xf1\xf8\xe7\x6f\x48\xe9\xfd\xfe\xff\xd4\xa8\x7e\x16\xb8\x99\xa8\xb8\x99\xbf\x56\xd2\xc1\x7e\x30\x07\xe1\x68\x46\x4f\xa3\x70\xf2\x5f\x00\x00\x00\xff\xff\x70\xcf\x41\x80\xfe\x05\x00\x00" func runtimeSyntaxPuppetYamlBytes() ([]byte, error) { @@ -3208,6 +5234,26 @@ func runtimeSyntaxPuppetYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxPython2Hdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\xa8\x2c\xc9\xc8\xcf\xe3\x8a\xd1\x2b\xa8\x54\xe1\x8a\x53\x56\xd4\xd3\xd2\xd7\x48\xcd\x2b\x53\xd0\xd6\xb4\x87\x48\x69\x28\xd4\xa8\x68\x72\x01\x02\x00\x00\xff\xff\x2c\x9b\xfd\x37\x27\x00\x00\x00" + +func runtimeSyntaxPython2HdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPython2Hdr, + "runtime/syntax/python2.hdr", + ) +} + +func runtimeSyntaxPython2Hdr() (*asset, error) { + bytes, err := runtimeSyntaxPython2HdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/python2.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPython2Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x55\x4d\x93\x23\x35\x0c\xbd\xe7\x57\xf4\x66\x17\x36\xb3\x4b\xb2\x5c\x09\x5f\x4b\x51\xc5\x91\x13\x27\xd2\xa1\xcb\x6d\xab\xd3\x66\xfc\x55\xb2\x3a\x49\x0f\xe2\xbf\x53\xb6\xbb\x93\x4c\x76\xa7\xe0\x42\x4d\x4d\xfc\xa2\x58\xf2\xd3\x93\x2c\x77\xda\x00\x8d\x01\xb6\x55\x18\xa9\xf7\x6e\xb1\x50\x40\x20\x69\xbb\xa8\xaa\xaa\x4a\xbf\x3a\x61\x61\x5b\x2d\xeb\x7a\x13\xc6\x37\xcb\x6c\xee\x41\x28\xc0\x6d\xb5\xfc\xe3\xf5\xab\xcd\xbb\x0f\x2b\x70\xc7\xea\xfd\xc3\x8f\x25\xc2\xaa\xe2\x37\x0f\xcb\xc5\x02\x07\x03\x71\xbb\xc8\x0e\xaf\xab\x76\xd0\x86\xd6\xda\x55\xbe\xfd\x13\x24\xc5\x6c\x5e\x57\xd2\xbb\x48\xc2\x51\x3e\xa0\x5d\xfd\xea\x1d\x70\x04\xd3\xf1\x6f\x38\x00\xff\x22\x4c\x84\x87\xba\x6e\xcb\xb1\xcf\xe2\x08\x22\xd4\xed\x40\xf0\x42\xa8\xa6\x69\x45\x84\xd8\x34\xdc\x34\xd9\x49\xbb\x8c\xa5\x11\xb1\x58\x15\xb4\xc3\xa1\x20\x2d\xa9\x00\x2f\xf3\x9a\xf2\xce\xc0\x82\x6d\x01\xe3\x84\xa9\xf7\xaa\xe0\x24\x4a\x06\x89\x6c\xd3\xbc\xc0\xb1\x1b\x9c\x24\xed\xdd\x4c\x51\x2b\x70\xa4\x3b\x9d\xb5\x4b\x24\x45\x1b\x59\x84\x60\x46\x96\xc2\x18\xd1\x1a\x60\xd9\x23\x4b\x1b\x58\x7a\x1b\xb4\x01\x56\x60\x52\xaa\xac\x74\xfa\x3f\x5a\xaf\x18\x8e\xc2\x30\x9c\x41\xe6\x8f\xc4\x95\x3b\x6d\x08\x90\x3b\x8f\x56\x10\x1f\x80\xb2\xcf\xc1\xf8\x56\x98\xc8\xbd\x88\xf9\x7b\x2f\x62\xcf\x3d\x98\xc0\x3d\x9c\x59\x2b\xd6\x2e\x0c\xc4\xda\x11\xa0\x63\x1d\x75\x56\x50\x02\xeb\x18\x87\x36\x2b\xc5\x06\x1c\x1b\x2f\x53\x18\x2b\xce\x6c\xb5\x63\x07\x67\x62\x2f\x89\x7d\x00\xc7\x1e\x15\x07\x7f\x62\x14\xee\x00\x8c\xe2\xd4\x94\xa8\x08\x6a\x90\xc0\x08\xc6\x0b\xc5\x08\x01\x19\xfd\xe0\x14\xc7\x89\xdd\xe0\x74\x4a\xf6\x28\x30\xf2\x93\x0e\xdc\x34\xda\x06\x8f\x74\x2f\x67\x0c\x20\xb5\x30\x55\xd1\xbf\x4a\xd2\xbf\x28\x68\xd3\x88\xb6\x54\x48\x28\x55\x56\x57\xd6\x24\x70\x01\x36\x94\xd5\x03\x4a\x98\xa0\x0d\x06\xce\x13\x76\x52\xd0\x0c\x49\x68\x37\x77\x8b\x99\xd7\xc4\x7e\xc6\x9a\xc0\xde\xf5\x10\x98\x68\xf4\x14\x59\xe9\xe3\xbc\x5a\x5f\x88\x74\xc6\x4f\xf1\xa7\x32\xcd\xf8\x12\xea\x00\x74\x8d\x90\x6a\x56\xc0\x44\x50\x3b\x4d\x13\x98\xd7\xe3\xbc\x02\x16\x93\x81\xd2\xec\xc6\xbb\xd2\xe1\x26\xf6\xba\x2b\xbf\xcd\x3c\xec\x50\x12\x72\x50\xb6\x38\xef\x9e\x00\x7d\xc6\x7e\xca\xc5\x17\x72\xc1\xc7\x69\x3d\xe5\x15\x67\x71\x71\x56\x17\x67\x55\x71\xce\x18\x6f\x52\x46\x08\x30\xe5\x9c\xfa\xa0\x80\x1b\x4a\x78\xd9\x38\x93\xc2\xe9\x64\xbc\x1c\x89\x37\xdb\x6f\xe1\xd0\x16\x70\x9e\x3c\xe2\x8d\xa8\xf1\x46\xd4\x78\x2b\x6a\x9c\x37\x4c\xde\xd9\xf9\x79\xd7\xa5\xa1\x38\xb7\x59\x19\x90\xb9\xc1\xf2\x50\x21\xd4\xee\xc0\xad\xf7\x86\xdb\xa1\xeb\x00\xb9\x1d\x09\x04\xa2\x18\x33\x8a\x9c\xef\x4e\x69\x58\x9e\xba\x8b\x53\x87\x30\xb8\xc1\x02\x0a\xca\x57\x16\x38\x37\x03\x77\xe8\x9f\xc0\x45\xc8\x57\x91\x8d\x8e\xc4\xa9\x72\x6c\x45\x60\x0b\xd6\xe3\x78\xd4\x70\xe2\x32\x3a\x39\xa0\x0f\x80\x34\x32\xc2\x11\x30\x42\xbe\x51\x9c\x93\xe3\x48\x82\xb4\x9c\x0e\x8e\x84\x1c\x87\x00\xc8\x34\x04\x03\x9c\xd2\xc8\xb7\xce\x2b\xe0\x73\xbe\xaf\xcf\x73\x56\xd0\xa5\xee\x7a\x69\x62\x29\xe8\xaa\x9d\x58\x3f\xfd\xb4\xfe\xbd\xf9\x7a\xfd\xcd\xfe\xfd\xd5\xf3\x11\xc6\x93\x47\x35\xbb\x25\x1a\x60\xe1\x32\x8c\x85\x53\x2c\x22\x8b\x18\x01\x89\x5b\x04\xf1\x58\x24\xe2\x74\xc7\xb4\x1b\xd2\x9c\xeb\xd2\xac\x63\x30\xba\x63\x30\x11\x18\xce\x12\x02\x71\xa7\x9d\x30\x66\x4c\xb3\x2d\x09\x65\xa7\xa9\xc6\xba\xe3\x32\x2f\x58\xa7\xd9\xc5\x46\xd8\x56\x09\x76\x9e\xd8\x23\x87\x14\x3c\x60\xd2\x13\x85\x8e\x69\x0e\xd1\x80\x8e\x09\x47\x3e\xf5\x49\xfa\x93\xa6\x9e\x47\x0d\x46\xdd\x8b\x20\x3d\x0a\xf2\x38\x27\xd3\xa2\x3e\xf4\x74\x40\x00\xb7\xad\x96\x1f\x37\xef\x76\xab\xfd\x75\x7b\xaa\xc5\xed\xee\x38\xda\xd6\x9b\xcd\x6c\xde\x56\xcb\xd5\x6e\xb3\xfd\xf6\xab\xf7\xef\xf8\xfb\x57\x75\xfd\xc5\xc7\x3d\x7f\xc7\x3f\xf0\x07\x5e\xf3\x97\x0f\xd7\x30\x41\x20\x38\xea\x21\xc2\x5d\xa0\x16\x85\x7c\x04\x8a\x39\xd0\xea\xe1\xaf\xbf\xf7\x5c\xd7\x3b\xae\xeb\xfd\x8d\xb7\x1b\xf2\x33\x75\xf7\x12\x6e\x8a\xb9\xd4\x60\x97\x2b\x96\x33\xbd\xdf\x56\xfa\x79\x3b\x45\xab\x52\xf5\x30\x57\x2e\xff\x2d\x2f\x76\x70\xea\x33\xd6\xf2\xce\x57\xbb\xfd\x35\xae\xcd\xa5\xff\x24\xde\xdb\xb7\x6f\xef\x83\x3d\x33\x7d\x26\xd2\xbf\x32\xfc\x94\xdd\xd5\x12\x1f\x75\xc8\xc9\xd7\xf5\xe6\xfe\x94\xcb\xd7\xfb\x93\xca\x63\xf3\x73\x2f\xf0\xea\xfa\x5f\xe9\x7c\x9a\xde\xff\x49\xe6\x05\x95\x5f\xdf\x93\x78\xf3\x59\x85\xff\x09\x00\x00\xff\xff\xdd\xb7\xca\x12\xf9\x09\x00\x00" func runtimeSyntaxPython2YamlBytes() ([]byte, error) { @@ -3228,6 +5274,26 @@ func runtimeSyntaxPython2Yaml() (*asset, error) { return a, nil } +var _runtimeSyntaxPython3Hdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe2\x8a\xd1\x2b\xa8\x34\x56\xe1\x8a\x53\x56\xd4\xd3\xd2\xd7\x48\xcd\x2b\x53\xd0\xd6\xb4\x2f\xa8\x2c\xc9\xc8\xcf\x33\x56\xe1\x02\x04\x00\x00\xff\xff\x4f\xbc\x3c\x13\x1f\x00\x00\x00" + +func runtimeSyntaxPython3HdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxPython3Hdr, + "runtime/syntax/python3.hdr", + ) +} + +func runtimeSyntaxPython3Hdr() (*asset, error) { + bytes, err := runtimeSyntaxPython3HdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/python3.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxPython3Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x56\x4f\x73\xe3\xb6\x0f\xbd\xe7\x53\x68\xbd\xfb\xfb\x6d\xb2\xdb\x78\x3b\xb3\xa7\xba\xff\xb6\xd3\x69\x8f\x3d\xf5\xd4\x28\xd5\x50\x12\x64\xa1\xa1\x48\x0e\x00\xd9\x56\x8a\x7e\xf7\x0e\x49\xc9\x76\xbc\xc9\xb4\x97\x4e\x26\x83\x67\x84\x7c\x00\x1e\x01\x38\x1d\x5a\x70\x66\x80\x4d\x11\x26\xe9\xbd\xfb\x78\x75\xd5\x82\x40\x23\x9b\xab\xa2\x28\x8a\xd3\x9f\x57\x65\xb9\x0e\xd3\xc7\x37\xab\xe4\xef\xc1\xb4\x40\x9b\x62\xf5\xfb\xeb\x57\xeb\x77\x1f\xae\xc1\xed\x8a\xf7\x37\xdf\xcf\x1c\x6f\x56\x57\x57\x34\x5a\xe0\x4c\xf2\xba\xa8\x47\xb4\x72\x8b\xae\xf0\xf5\x1f\xd0\x08\x27\xf7\x6d\xd1\x78\xc7\x62\x9c\x24\xf6\xfa\xfa\x27\x6b\x31\x30\xb2\xfe\xe2\x1d\x28\x83\xed\xf4\x57\x1a\x41\x7f\x36\x96\xe1\xa6\x2c\xeb\x1c\xfb\x09\xa1\x11\x21\xac\x47\x81\x17\x38\xab\xaa\x36\x0c\x5c\x55\x5a\x55\xe9\x12\xba\x84\x1b\x6b\x38\x7b\x5b\xa8\xc7\x6d\x46\xd8\x48\x06\xbe\x49\x36\x56\x9f\xc0\x00\x43\x0d\xc4\x33\x96\xde\xb7\x19\x47\x69\x12\x88\xc9\x56\xd5\x0b\x39\x76\xa3\x6b\x04\xbd\x5b\x52\xc4\x16\x9c\x60\x87\x49\xc0\x98\xa4\xa9\x59\x8d\xb5\x6a\xdc\xa4\x86\x1b\x44\xad\xd1\x69\xed\xbd\xd5\x9a\xc0\x3c\x04\x8f\x4e\xb4\x9e\x04\x0c\x91\x99\x12\x62\x6d\x8c\xb5\xa6\xb6\xa0\x4d\x4f\x9a\xea\xc9\xa9\x69\xe3\x87\x80\xd1\xef\x87\x60\xe1\xa0\x2d\xd8\x28\x93\xb6\x18\x7f\x77\x83\x6f\x15\x76\xc6\x2a\x1c\xa0\xd1\xce\xd3\x60\x44\xb7\x20\xe9\xcc\xd6\xfa\xda\x58\xd6\xde\x70\xfa\xdc\x1b\xee\xb5\x07\x1b\xb4\x87\x83\x62\xab\xe8\xc2\x28\x8a\x8c\x49\xe6\x06\x14\x99\xc7\x3a\x85\x57\x14\x20\xb5\xe0\xd4\xfa\x26\x92\x0c\xe6\xa0\x03\x3a\x75\x70\x10\x75\xde\x25\xb7\xfa\x46\xd4\x07\x70\xea\xa9\xd5\xe0\xf7\x1a\x28\x96\x47\x10\x48\xc9\x8f\xae\x55\x9e\x93\x61\x4f\x02\xad\xf2\x38\xe8\xce\x10\x6b\x55\xe1\x10\x3c\xc9\xa5\xd2\x1c\xa0\x41\x63\x8b\x5c\x7f\x11\x5f\xe5\x45\xad\xab\xca\xd4\xf9\xf1\x4c\xdb\x66\xeb\xb2\x8d\x7a\x66\x30\x84\x6c\x3d\x50\x03\x33\x4c\x52\xce\xd8\x35\x46\x16\x28\x06\xdd\xd2\x48\x76\xb1\x31\xfb\x05\xa3\xc0\xb0\x60\xb6\x38\x13\xb6\xb8\x5b\xec\xe0\x73\xfc\xce\xfa\x99\x76\x7e\x8c\x05\x1f\x19\xb6\x20\x27\x86\xf8\x32\x19\xcc\x79\xa1\x43\x99\xc1\x62\x77\x8b\x05\xca\x2e\x0b\xee\x69\xab\x5b\xef\x72\xf3\x5b\xee\xb1\xcb\xbe\x25\xa1\x61\xcc\x05\x39\xd8\xce\xf6\x90\x0f\x38\xef\x1e\x81\x7c\xc2\x7e\x26\xf2\x39\xdd\xe0\x79\xb6\xfb\x64\x69\x51\x99\x16\x99\x69\x91\x97\x16\x0d\xe8\x4c\x04\x82\x00\xb3\x0a\xb1\x21\x32\x38\xcb\x8d\x8e\x07\x97\xec\x68\x8e\x4c\xc7\x90\x74\x76\xfc\x1c\x8e\x75\x06\x87\xf9\x06\x9f\xc9\xcc\x67\x32\xf3\xb9\xcc\xbc\x1c\x98\x6f\xa7\xcb\x4f\xdb\x4f\xa6\x70\xec\xb7\x88\xe7\x4e\xcb\xf3\x7b\x39\xb4\x17\x73\x9a\xe6\x13\x1b\x51\x70\xe3\x00\x64\x04\xb4\x43\x1b\xe7\x28\xb5\x83\x76\xe4\x1f\xc1\x31\x88\xc6\x19\xb1\xc8\xa2\x83\x09\x3a\xc0\xe0\x69\xda\x21\xec\x35\xaf\x54\x0d\xe4\x03\x90\x4c\x4a\xc6\x6d\x41\x09\x76\x40\x0c\x69\x96\x34\x55\xa3\x2c\x46\xb0\x99\x63\x73\x1c\xaf\x31\x00\xa9\x8c\xc1\x82\xc6\xbc\xf5\x11\xc3\xd3\xca\x5a\xe8\x62\x57\xbd\xb4\xbb\x5a\xe8\x8a\x3b\x73\xfb\xf8\xc3\xed\x6f\xd5\x97\xb7\x5f\xdd\xbf\x3f\xdd\x7c\x80\x69\xef\xa9\x5d\xae\xc5\xd8\x30\xc0\x71\x2d\x1b\xd7\xaa\x61\x35\xcc\x40\xa2\x66\x6f\x50\xf2\xaa\xcb\x02\x69\x1c\x2c\x74\x23\x68\x0b\x5d\xdc\x5f\x0a\x16\x3b\x05\xcb\xa0\x70\x68\x20\x88\x76\xe8\x8c\xb5\x53\xdc\x5f\x51\xa4\x61\xde\x5c\x8a\x9d\xe6\x25\xa1\xe8\x14\x59\xad\x19\xea\xd6\x9c\xb6\x8f\xf3\xa2\x9e\x34\xc4\x28\x64\x90\xa3\x54\x32\x92\x53\xa1\x49\xf7\x7d\xdc\x9b\x7b\x94\x5e\x27\x04\xdb\x5e\xaa\xd1\x78\x32\xe2\x69\xa9\xaa\x26\xdc\xf6\xb2\x25\x00\xb7\x29\x56\x9f\xd6\xef\xee\xae\xef\x4f\xc7\xe3\x7b\x9c\x9f\xe6\x69\xa8\xbd\x5d\x2f\xee\x4d\xb1\xba\xbe\x5b\x6f\xbe\xfe\xe2\xfd\x3b\xfd\xf6\x55\x59\xfe\xef\xd3\xbd\x7e\xa3\xdf\xe9\x07\xbd\xd5\xff\xdf\x9c\x68\x82\x21\x70\xd2\x03\xc3\x05\x51\x4d\xa6\x79\x00\xe1\x44\x74\x7d\xf3\xe7\x5f\xf7\x5a\x96\x77\x5a\x96\xf7\x67\xb7\xdd\x98\xbe\xb9\x2e\xbe\x1c\xd7\xd9\x9d\x1f\xe3\x2e\x3d\x5d\xaa\xf4\xf2\x18\x0b\xa1\xdb\x6e\x66\xb6\x22\x3e\x23\xa5\x27\x4c\x3f\xab\xa3\x1f\x5c\xfb\x8c\x37\xff\x0b\x50\xdc\xdd\x9f\x78\x87\xd4\x03\x9f\xf1\xbd\x7d\xfb\xf6\x92\xec\x89\xeb\x19\xa6\x7f\xcc\xf0\xf3\xec\x4e\x1e\x7e\xc0\x90\x8a\x2f\xcb\xf5\x65\x94\xe3\xc7\xcb\x48\xf9\x4b\xe6\xc7\xde\xd0\xe9\xea\xbf\x4d\xe7\xf3\xf2\xfe\xcb\x64\x5e\x50\xf9\xf5\x65\x12\x6f\x9e\x55\xf8\xef\x00\x00\x00\xff\xff\x6b\x6c\x10\x41\x13\x0a\x00\x00" func runtimeSyntaxPython3YamlBytes() ([]byte, error) { @@ -3248,6 +5314,26 @@ func runtimeSyntaxPython3Yaml() (*asset, error) { return a, nil } +var _runtimeSyntaxRHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\xe2\x8a\xd1\xd3\x28\xaa\x09\xd2\x54\xe1\xe2\x02\x04\x00\x00\xff\xff\x9b\x58\x03\x2f\x0c\x00\x00\x00" + +func runtimeSyntaxRHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxRHdr, + "runtime/syntax/r.hdr", + ) +} + +func runtimeSyntaxRHdr() (*asset, error) { + bytes, err := runtimeSyntaxRHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/r.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxRYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x91\x6f\x6b\xdb\x40\x0c\xc6\xdf\xfb\x53\xdc\xbc\x6c\x8d\xd7\xd9\xeb\xdb\x79\xff\x08\x5d\x02\x85\xcc\x85\x2e\x85\x40\xd5\x85\xb3\x23\x37\x47\xed\xb3\xa7\x93\x69\x02\xfa\xf0\xe3\x6e\x5d\x52\xb2\xc1\xf6\x66\x07\x06\xe9\x91\xc4\xef\x91\x55\x9b\x06\x79\xd7\x63\xae\x28\x8a\xd6\xc8\x58\x71\x1e\x29\xa5\x94\x2f\x58\xdd\x62\xae\x62\x80\x6c\x4c\x72\x95\x8c\xe2\x28\xa2\xa1\x41\x97\x47\xa1\x25\x55\x8e\x35\x63\x8b\x96\x43\x57\x39\x6e\x4c\x49\x9a\x76\x42\xf8\x7d\x30\x84\x52\x12\xea\x7b\xc1\xc6\xa1\xd4\x1d\x49\x3d\xd8\x8a\x4d\x67\xc5\xd4\x62\xea\x20\x1b\x2b\x16\xb7\x2c\x1e\xe5\xc4\x3d\x18\xae\x36\x42\xd8\xa3\x66\xe9\xc9\x58\x16\xa6\x9d\xff\xce\xb5\xaf\x18\xb7\xb8\xba\x9e\x0a\x21\x0f\x64\xe5\x61\x63\x1a\x4c\x00\xca\xf8\xd1\x4f\xd5\x59\xc7\x7a\x6f\x67\x21\xa1\x7b\x26\xb3\xc9\xfc\xeb\x54\x8a\xeb\xf9\x5c\x2e\x6c\x2d\x85\x2e\xa4\x98\x48\x31\x59\x19\xcb\x78\x87\xb4\xf2\x31\xa1\x6e\x42\x50\x75\x6d\xdf\xe0\xf6\x67\xbc\xd1\xa4\x2b\x46\x5a\xfd\x89\x93\xd9\xa1\x2d\x91\x72\x15\x8f\x01\xca\x9b\xb3\xf4\xed\xed\x29\x40\x29\x00\xe5\xd9\xd6\xa7\x93\x74\xa6\xd3\x3a\x88\xc9\xaf\x61\xb7\x6b\xcb\xae\xc9\xba\x1e\x49\x73\x17\x86\x6f\xb2\xfc\xdd\xeb\xd3\x57\xf2\xe1\x19\xc0\x8b\x5b\x79\x2f\x1f\xe5\x8d\xa4\xf2\x52\x00\xbe\x09\xc0\x28\x89\x55\xb4\x47\xb7\xe1\x87\x87\xd4\x3f\xc7\x9a\xfc\xc2\xcf\xe3\xbd\x84\x76\x9d\xab\x78\x74\x10\x1e\xaf\xa6\x9e\xbc\x54\x71\xb7\xee\x3c\x7c\x71\xf9\xf9\x52\x96\xcb\xa5\xcc\x2e\x96\x5f\xa6\x49\xfe\x29\x8e\x8e\xd7\x74\x4c\xc6\xde\xfd\xce\x84\xf8\x18\xfa\x54\x71\xf7\xa6\x0f\x97\x00\xc8\xfe\xe2\xe5\x40\xea\xb1\x32\xba\x39\xdf\x68\x3a\x8c\xfe\xab\x9d\x93\x63\x37\x27\xff\xc3\xcc\x8f\x00\x00\x00\xff\xff\x74\xc8\xc8\xba\x33\x03\x00\x00" func runtimeSyntaxRYamlBytes() ([]byte, error) { @@ -3268,6 +5354,26 @@ func runtimeSyntaxRYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxRestHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x2a\x2e\xe1\x8a\xd1\x2b\x4a\x2d\x2e\x51\xa9\x89\xd1\x2b\x2a\x2e\x51\xe1\xe2\x02\x04\x00\x00\xff\xff\xb3\x85\x03\xda\x14\x00\x00\x00" + +func runtimeSyntaxRestHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxRestHdr, + "runtime/syntax/reST.hdr", + ) +} + +func runtimeSyntaxRestHdr() (*asset, error) { + bytes, err := runtimeSyntaxRestHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/reST.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxRestYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x90\x4d\x6a\xc3\x30\x10\x46\xf7\x3a\xc5\x20\x7b\x25\xd7\x82\x76\x39\xe0\x93\x64\xe2\x1f\x9c\x49\x11\x38\x8a\xd1\x4c\x17\xa5\xed\xdd\x8b\x6a\x9b\x16\x2a\x82\xb4\xf8\x78\xef\x6d\xa4\x6b\x58\x58\xdf\x57\x46\x48\xa2\xc6\x5c\x58\x79\x56\x34\x00\x00\x59\xc5\xe9\xc6\x08\x96\xc8\x27\x16\xad\x3f\xf3\x10\xad\xad\x31\xe9\x6d\x61\xd9\xc2\x16\x44\x27\xe5\x1b\x47\xfd\x69\x1d\x91\x3b\xf5\xee\xdc\x6c\xd3\xee\xd1\x9a\x78\x4d\xf7\x19\xc1\x22\x1e\x6c\xbe\x47\xd1\x29\xaa\x17\x4d\x21\xbe\x22\xd8\xf1\xd4\x8f\xe7\x66\x1c\x3e\x9e\x9f\x5e\xbe\x1e\x64\x7b\x37\x1e\x49\xb8\x70\xd4\x70\x0d\x9c\x10\x6c\x4f\xe4\x89\x3c\x78\x57\x97\xfd\x30\xfc\x75\xdb\x07\xd8\xbe\xaa\xaa\xe6\x1f\xdc\x1e\x41\xe4\x7e\x95\xac\x3c\x87\x69\xc9\xb6\xeb\xba\x22\x6f\xdb\xb6\xc8\x89\xf6\x5b\xb6\x36\x9f\xac\xbe\x03\x00\x00\xff\xff\x66\xfb\x63\xc1\x98\x01\x00\x00" func runtimeSyntaxRestYamlBytes() ([]byte, error) { @@ -3288,6 +5394,26 @@ func runtimeSyntaxRestYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxRpmspecHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x2a\xc8\x2d\x2e\x48\x4d\xe6\x8a\xd1\x03\x51\x2a\x35\x31\x7a\x50\x11\x15\x2e\x2e\x40\x00\x00\x00\xff\xff\xd9\xd5\x93\x8f\x1c\x00\x00\x00" + +func runtimeSyntaxRpmspecHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxRpmspecHdr, + "runtime/syntax/rpmspec.hdr", + ) +} + +func runtimeSyntaxRpmspecHdr() (*asset, error) { + bytes, err := runtimeSyntaxRpmspecHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/rpmspec.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxRpmspecYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x55\xdf\x6f\xdb\x36\x10\x7e\xae\xff\x0a\x41\x73\x11\xc9\x81\x0d\x03\x71\xdd\x44\x0f\x0b\xd2\x25\x18\x0a\x64\x71\x60\x37\x7d\x98\xe9\x18\x34\x75\x96\x89\x50\x24\xcb\xa3\xbc\x64\xbd\xfd\xef\x03\x25\xff\xc8\x1a\x7b\x03\x16\x20\x77\x1f\xc9\xef\x3e\xde\x91\x47\x79\x29\x15\xf8\x17\x0b\x59\xe4\x6c\x89\x16\x44\xab\x95\x83\x07\xe1\xb3\xa8\x15\x45\x51\x14\xd6\x35\x2f\x21\x8b\x62\xc6\x7a\x81\xd0\x26\xc6\x7a\x1b\x72\x3b\x6e\xb5\x5c\xa5\x00\xb3\x9a\xdc\x8d\xac\x03\xeb\x8c\xa8\xd9\x8b\xe4\xb3\x30\x9a\x6e\x9e\x85\xaa\x50\xae\x61\x84\x0d\xce\x61\x84\x69\x16\x1f\x8c\xf8\x54\x49\x95\x5f\x39\xb1\xa2\x1d\x92\x21\x9b\xca\x01\xee\x95\x6a\xc2\x46\x2b\xe0\x63\x6a\xbf\x18\xbd\x54\x52\x78\xa4\xd1\x02\x8d\x02\x0f\x48\xf7\xce\xac\x65\x0e\x48\x63\xf8\x56\x49\xf7\x0a\x30\x96\xf4\x3a\x8c\xa5\x74\xa3\x57\x5c\x0b\x40\x9a\x54\x45\x01\xe8\xb1\x49\x66\xaf\x56\x0f\x5f\xc5\x0b\x53\x96\xa0\xf3\x20\x0e\x63\xf8\x46\x93\xca\x5a\x05\x25\x68\x7f\xb4\xd0\x1b\x6b\xc4\x8a\x26\xe0\x24\x57\x74\x67\xd0\x54\x4e\x00\xdd\x19\xcb\xfd\xf1\x7a\xae\x2a\x6f\x82\x7e\xf0\xa1\x0e\xda\x4c\x04\x7c\xfc\x0c\xec\x8b\x93\xc5\xca\xd3\xad\x14\xa0\x11\x68\x52\x95\x25\x77\x2f\x5b\xbf\x2b\xfb\x5a\xa2\x77\x72\x51\x79\x69\x34\x7d\x05\x9d\x1b\x47\xf7\x5c\x3c\xf1\x02\x1c\xfd\xea\x4c\x65\x69\x52\xa7\x39\xed\x77\x2f\x66\x1d\xba\x0f\xa9\x6e\x70\x73\x22\xc6\xf8\x70\x04\x4b\xf9\x7c\x2c\x9b\x3b\x5e\x02\x7d\x05\x87\x61\x8f\x31\x28\xe0\x08\xf4\xe0\x14\x3d\x8c\x6f\xdf\xc6\xd4\xc3\xf0\x87\x9e\x3b\x9f\x45\xf1\x63\xd2\x64\xd0\xec\x9d\xc6\x3b\x02\xe8\x3c\x8b\xe2\x6c\x3f\xd1\x74\x65\x34\x9d\xb5\xde\xe4\x91\xc8\xb3\xf3\x21\xc9\x41\x30\x1f\x82\x19\x9e\x0f\x89\xfb\x95\x32\x9a\x24\x1f\x0e\x88\x2b\xbb\xe2\x8d\x85\xf5\x87\x1d\x18\x36\xc8\x0a\xbe\x85\xb0\xde\x83\x8f\x84\x96\x3b\xd1\xd8\xf5\x45\xe3\x87\x03\xee\xca\xf5\x99\xa2\xe0\x06\x8b\xc6\xa9\x92\xa4\x45\x2a\xa5\x45\x50\x64\xad\xa8\xff\x25\x82\x93\x80\x01\xdb\x3d\x1c\x0e\xa8\x1c\x9e\x3f\xd5\xa6\x94\xda\xd3\xa4\x90\xe4\x70\xd8\xef\xf7\x49\x9e\x7d\xec\x13\x9e\x5d\xf4\x9f\x6b\x4b\xda\x70\xb7\x3b\x94\x7f\x16\xbc\x0c\x2b\x24\x97\x7a\xe3\x0d\x86\x81\xc1\x1d\x59\x18\x8d\x9e\x6b\xdf\x0b\x2d\xa0\x8b\x70\x5b\x71\xc2\x18\x63\x3d\x9a\x3e\xb2\x78\x96\x76\x58\x4c\x27\xbb\x99\x93\x59\xda\x39\xd9\xc6\xa2\xe7\xbe\x6e\xf6\x2c\x8a\xdf\x27\x72\x49\xa0\x10\x08\x74\x2e\x97\x94\xc3\x52\x6a\xa0\x42\x99\x05\x57\x54\xe9\x66\x9c\x1e\x0c\x9d\x5f\x26\xd3\xab\xee\xef\x73\xde\xfd\x73\xde\xef\x5e\xcc\x67\x9d\x03\xbc\x37\x2d\xf1\x9e\xb1\xef\x3f\xf6\x01\x63\x7f\xfd\x4b\x27\xfc\x87\xd8\x7c\xfe\x7f\xe5\x02\xb3\x9d\x8c\xef\x7f\x9b\x7f\x7a\xf8\x7c\x7b\x3d\x1f\x8f\x46\x5f\x52\xc6\x7e\xde\x55\x61\x41\x48\xae\x42\x1f\xbf\x4f\x16\xe1\xc5\xb4\x49\xac\xb8\x2e\x40\x99\x82\xc4\x0a\xc4\x53\x9b\x84\x02\xae\xdb\x94\x03\x0a\x27\x6d\x78\x8b\xe9\xc1\xf8\xf0\x61\x46\x92\xe1\xda\x94\x6a\x93\x6d\x1e\x2a\x85\x5b\x6f\x1f\x8e\xb0\xae\x5e\xae\x74\xb0\xde\x71\x8d\x64\x0d\xfa\xda\x84\x49\x83\xbe\x9e\x3d\x1c\xed\x9d\x2c\xc2\x87\x60\xe3\xa5\xde\xa2\x4d\xf8\x66\x54\x69\x5a\x83\x93\xcb\x97\x26\xfd\x57\x0d\x56\x6e\xce\x28\x79\xa4\xe9\x34\x43\xcb\x05\x64\xb3\x59\xfa\x53\x32\x7d\xfc\x3e\xeb\x75\xd2\xcb\xf6\x8f\xcd\x18\x36\x66\xac\xd3\xeb\xec\x56\xa4\xce\x41\xfb\xae\x58\x71\xd7\xfb\x23\xfc\x32\x34\x32\x51\xfc\x4a\xf1\xf4\x10\x3b\x8b\xe2\x77\xa7\xd1\x29\x45\xa7\xef\x4e\xb7\xcb\xde\xe4\x26\x8b\xe2\x2f\xa3\xeb\x51\x76\x19\xb7\xfe\x0e\x00\x00\xff\xff\x1f\xe9\xab\x07\x0a\x07\x00\x00" func runtimeSyntaxRpmspecYamlBytes() ([]byte, error) { @@ -3308,6 +5434,26 @@ func runtimeSyntaxRpmspecYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxRubyHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x2a\x4d\xaa\xe4\x8a\xd1\x2b\x4a\x52\xa9\x89\xd1\x4b\x4f\xcd\x2d\x2e\x48\x4d\x56\xa9\x71\x4f\xcd\x4d\xcb\xcc\x49\xad\x49\xce\xcf\x4b\xcb\x4c\xd7\x2b\x2a\xad\x09\x4a\xcc\x4e\x05\x0b\x39\x27\x16\x80\xe9\xb0\xc4\xf4\xa2\xc4\xbc\x12\x10\x9b\x2b\x4e\x59\x51\x4f\x4b\x5f\x23\x35\xaf\x4c\x41\x5b\xd3\x1e\x64\xa4\x86\x42\x8d\x8a\x26\x17\x20\x00\x00\xff\xff\xff\x85\xa3\xe9\x5d\x00\x00\x00" + +func runtimeSyntaxRubyHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxRubyHdr, + "runtime/syntax/ruby.hdr", + ) +} + +func runtimeSyntaxRubyHdr() (*asset, error) { + bytes, err := runtimeSyntaxRubyHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/ruby.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxRubyYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x54\x7f\x6f\xa3\x46\x10\xfd\xbb\xfe\x14\x84\x10\x19\x88\x8c\xef\xdf\x43\xd1\x91\x6b\xcf\x77\x8a\x74\x4d\xd4\x2a\x6a\xad\xdb\x1f\x64\x81\xc1\x5e\x05\x16\x67\x77\xa9\xe3\x66\xf2\xdd\xab\x25\xc4\x71\x53\x59\xaa\x65\xaf\xd1\x7b\x6f\x66\xde\x8c\xd8\xa9\x65\x03\x76\xb7\x81\xd4\xd3\x7d\xb1\x9b\x4c\x2a\xb0\x50\xda\xd4\x9b\x78\x9e\xe7\x39\x52\x89\x16\x52\xcf\xa7\x34\xd1\x45\x80\x94\x26\x2b\x68\xcd\x06\xca\x00\xbf\x41\xeb\x04\x58\x76\xaa\x96\xab\x44\xf7\xf8\xbb\xb8\x87\x01\xfa\x45\x6c\x86\xff\x3f\xc4\x4a\x0b\x65\xdd\xb3\x3f\x64\x5c\x83\xa8\x40\xa7\x9e\xcf\x4f\x4f\x92\x78\x1e\x82\xfa\xcb\x3b\x8f\x32\x57\x3b\xf4\x30\x88\xfc\xc9\x44\xf7\x0d\x98\x74\x50\xcf\x3c\x63\x85\x85\x16\x94\x1d\x2c\x14\xe1\xcf\x8b\x6f\x57\xd7\xb8\xb8\xfe\x82\xa2\x91\xc2\xa0\x50\x15\x16\xb0\x92\x0a\x0b\x0d\xe2\x1e\x4b\x61\x00\xcb\x46\x18\x83\x15\xd4\xee\x27\x15\x54\x94\x66\x58\x75\x08\x8d\x01\x77\xc8\x1a\x41\x55\x08\xca\xf4\x1a\xb0\x16\x0e\xae\x3b\x8d\xb2\x46\xa9\xb0\xed\xaa\xbe\x01\x54\xf0\x68\x51\xc9\x06\x55\x67\xb1\xd3\xa8\xa1\xea\x50\x83\x29\x7b\x40\x0d\x56\xef\xdc\xd9\x6b\x85\x06\x9a\x1a\x4d\xbf\x01\x8d\x76\x0d\x0a\xad\xee\x01\x7b\xe5\xca\xf7\xaa\x01\x63\xb0\x57\x56\x36\xb8\x75\xe4\x76\xed\xc6\xb2\x93\xd0\x54\x11\xa5\x85\x3f\xb6\x59\x76\xca\x58\x31\x74\x19\x52\x1a\xe0\x25\x5e\x5e\x46\x19\xa5\x05\xf9\x3c\xfb\xc1\xce\xc9\x87\xd9\xc7\xcf\xb3\x1f\xb9\x98\xfd\xcd\xe2\xf7\x31\x89\xea\xdb\x62\x98\xa9\xd3\x7f\x98\x7d\x64\xe7\x47\x32\xcb\x2c\x0a\x89\xf7\x13\x43\x1e\xa5\xaf\x29\x8f\x89\xdd\xb0\xf3\xfc\xeb\xd5\xf7\x45\x9e\x63\x9e\x7f\xbf\xba\x5e\xe4\xf9\x11\xcb\xf3\x90\xf0\x39\xc3\x90\x52\x4a\xe7\x51\x14\xcf\x89\xec\xda\x47\x16\xe3\x99\xa6\xf4\x29\x24\xfc\x79\x24\x9f\xa3\x28\xa6\xf4\x79\xa4\xff\xd3\x88\xb1\x5a\xaa\x55\xea\xf9\x77\x84\xdf\xb1\xf8\x0e\xcf\x1e\x29\x7d\x72\xe1\x2e\xea\xb8\x9c\xfa\x21\xe1\xd4\x1f\x8b\x50\xdf\x55\xf1\xf1\x8c\xfc\xf6\x27\xcb\x0e\x12\xec\x91\x90\xf0\xc8\x21\xd1\x88\x5c\x10\xfe\x89\xc5\x9f\xf6\x3c\x21\x9c\x39\x9e\xed\x91\x80\xf0\xc0\x21\xc1\x1e\xe1\x84\x73\x87\xf0\x11\x39\x21\xfc\x84\xc5\x27\xaf\x26\xdd\x0d\x91\xa2\x49\x3d\xff\xf4\x7f\xb5\x30\x0d\x09\x9f\x8e\x0d\x4c\xa3\x28\x9e\xe2\x19\x79\xd8\xb2\x7f\xbb\x1f\x80\x43\xf3\x0f\x5b\xf6\xe6\x7d\x60\x0f\xad\x0f\xc0\xa1\xf3\x01\x38\x34\xfe\xb0\x65\xef\x7c\x97\x5d\x3b\xde\xb6\x53\xc2\x9f\x58\x12\x07\x78\x1a\xbc\x23\x93\x42\xcb\xd5\x7a\xd0\xbc\x89\x0e\x55\x63\x73\xad\x28\x75\xf7\x72\x91\xdd\xc7\x58\xa1\x5d\xd0\xc5\xc5\x2c\x9b\x66\x8b\x9b\xdb\x69\xe6\xef\x49\x50\x95\x5b\x0a\x8b\x9b\xdb\x37\xec\x65\x11\x78\x84\x4d\xc6\xcc\xb6\xab\x3a\xf7\x1e\x2f\x97\x4b\xbc\xbd\xf9\x72\x83\x5f\xaf\x96\xbf\x2e\x90\xd2\xec\xe5\x1b\xbd\x5a\xd8\x68\xd8\xe8\xae\x4c\xcc\x1a\x0a\x31\xcc\xd7\xad\x9b\xf3\x6c\x5c\x31\xff\x04\x00\x00\xff\xff\xfa\x5b\x59\x4a\xf4\x04\x00\x00" func runtimeSyntaxRubyYamlBytes() ([]byte, error) { @@ -3328,6 +5474,26 @@ func runtimeSyntaxRubyYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxRustHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x2a\x2d\x2e\xe1\x8a\xd1\x2b\x2a\x56\xe1\xe2\x02\x04\x00\x00\xff\xff\xcf\x23\x15\x1b\x0c\x00\x00\x00" + +func runtimeSyntaxRustHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxRustHdr, + "runtime/syntax/rust.hdr", + ) +} + +func runtimeSyntaxRustHdr() (*asset, error) { + bytes, err := runtimeSyntaxRustHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/rust.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxRustYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x52\x4f\x4f\x1b\x3f\x10\xbd\xe7\x53\x98\x0d\x07\x20\x4a\x96\x2b\x7b\xf9\xe9\x27\x4a\xa5\x1e\x5a\xa4\x96\x43\xd4\xec\x0a\x79\xbd\x63\x62\xe1\x3f\xab\xf1\x38\x40\x34\x1f\xbe\xf2\x26\x21\x90\x20\x51\xa9\x39\x38\xde\xf9\xf7\xde\x3c\x3f\x6d\x2c\xd0\x4b\x0f\x95\xc0\x14\x69\x34\xea\x80\x40\x51\x35\x12\x42\x88\x9c\xf3\xd2\x41\x25\x8a\xba\x9e\x61\x3c\x2d\x46\x23\x4c\x16\xe2\x26\x3d\x16\x3a\x79\x45\x26\x78\xd1\x81\x36\xde\xe4\xeb\x90\x99\x0a\xd3\x81\x27\xa3\x0d\x60\x25\x0a\xed\xc5\x42\x4e\xd7\x97\xd3\xab\xfb\x66\x52\x0c\x15\xb9\xfb\x27\x44\xc0\x15\x74\xe2\x29\x60\x17\xb7\x8d\x91\x24\x81\x03\x4f\x03\x68\x7b\x26\xdb\x48\x28\x15\xb1\xb4\xe6\xc1\x07\xcd\x32\x72\x0b\x2a\x38\xe0\x36\x3c\x73\x8b\x20\x1f\x59\x05\x1f\x29\x9f\x64\x7c\x02\x56\x28\x09\xb8\x0b\x0c\x36\x02\x83\x4f\x8e\xe1\x99\x00\x3d\x6b\x99\x23\xda\x78\x69\x59\x7b\xd6\x01\xd9\x68\x36\xae\xb7\x6c\x3c\x5b\x20\xb6\x21\xf4\xec\xa4\xc2\xc0\x4e\x92\x5a\xb2\x0b\x1d\xbb\xb0\x02\x76\x89\x38\x68\x1d\x81\x82\xe6\xb0\x02\x44\xd3\x01\xf7\x68\x56\xdc\xa7\x96\xfb\x84\xc0\x08\x9a\x11\x28\xa1\xe7\x68\xd6\x10\x34\xe7\x7d\x8c\xe2\x08\x36\xdf\x31\x29\xe2\x98\x7a\x40\x26\x4c\xc0\x84\xd2\x10\x67\xfd\x87\x23\x68\x4e\x3e\x4a\x0d\xf9\xcf\xac\xa1\xe3\x14\x81\x57\x06\x29\x49\xcb\x4f\x4b\x40\xe0\xa7\xa5\xb1\xc0\x2f\x06\x6c\x77\x5e\xd7\xed\x5e\xce\x81\xf4\xab\x8c\x3d\x28\x23\x6d\x25\x8a\xac\xfc\x7d\x33\x39\xd9\x17\x5e\x67\xb5\xa4\xa7\x5d\xad\xda\x7e\xe7\xe2\xff\xa7\xbf\x9b\x7c\xbc\x7b\xa8\x1f\xc9\xb5\x80\x87\xe5\x33\x3f\x84\x37\xef\xb4\xb8\x9c\x5e\x35\x93\x77\x7c\xee\xf2\x6e\xb1\xbc\xf1\xc9\xc5\xf2\xd7\xb0\x7a\x2c\xef\x5e\x7a\x88\x25\x90\x9a\x6d\xa7\x6d\xbc\xb7\x05\x96\xd3\x75\xc6\x3d\x04\x8a\x84\xc6\x3f\x54\xdb\xc9\x22\x7b\x04\x07\x7f\x14\xc5\x6b\x0c\x7c\x77\x10\x89\x8f\xa6\x1f\xc8\xd5\xf5\x6c\x1f\x7d\xe3\xdf\xdd\xef\x2d\xd2\x46\xb6\xeb\xa5\xc4\x7d\xeb\xdf\xd2\xc1\xf1\xe4\x23\x46\xe3\xc9\x21\xba\x58\x34\xfb\xa1\x6e\x30\xfb\xd1\xb0\xb2\x3c\x9c\x74\xfa\xc9\x12\x14\xba\x50\x89\xe2\xec\xee\xf6\xcb\x2d\xcf\xe7\x73\xfe\xfa\x6d\xfe\xfd\xe6\xbc\xfa\xaf\xf8\x1c\xac\xae\x2f\x8e\x88\xd7\x17\xe5\x3f\x23\xee\x6c\x78\x84\x38\x3e\xa9\xeb\xc5\x31\x64\xf3\xa1\x54\x7f\x02\x00\x00\xff\xff\x3f\xf7\x58\xfe\xa4\x04\x00\x00" func runtimeSyntaxRustYamlBytes() ([]byte, error) { @@ -3348,6 +5514,26 @@ func runtimeSyntaxRustYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxScalaHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x4e\x4e\xcc\x49\xe4\x8a\xd1\x03\xd3\x2a\x5c\x5c\x80\x00\x00\x00\xff\xff\xbc\xd0\x81\xd5\x10\x00\x00\x00" + +func runtimeSyntaxScalaHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxScalaHdr, + "runtime/syntax/scala.hdr", + ) +} + +func runtimeSyntaxScalaHdr() (*asset, error) { + bytes, err := runtimeSyntaxScalaHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/scala.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxScalaYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x52\x41\x8e\xdb\x30\x0c\xbc\xfb\x15\x86\xb1\x87\x76\x81\x26\xf7\x5c\xfb\x8c\xaa\x07\x5a\xa2\x62\x36\x8c\x64\x50\xb4\x5d\x2f\xf8\xf8\x42\x76\xda\xdd\x64\x81\x16\x5d\x5d\x04\x50\xc3\xe1\x70\x46\x91\x18\x75\x1d\xf1\xd4\x16\x0f\x0c\x4d\x13\x50\xd1\xeb\xa9\x69\xdb\xb6\xad\x8f\x09\xae\x78\x6a\x3b\xe7\x0e\x1b\xe0\xa9\x6b\x1a\x99\x18\xcb\x8e\xf8\xd2\xee\xcd\x9d\x73\xfd\xa7\x3e\x67\x46\x48\xd6\xaf\x8a\xe6\x07\x10\x0b\x79\xea\x19\x2d\x72\x06\x35\x4a\x6a\x9c\xd3\xd9\x12\x2e\x56\x86\x2c\x6a\x3a\x50\x31\x15\x48\x85\x30\xa9\xcd\x99\xc2\x67\xe7\xfa\xee\xc6\x5d\x14\x14\xaf\x98\xf4\x36\xe0\x0a\xea\x07\x9b\x81\x6d\x06\xb1\x5e\x10\x2e\xe6\xa1\xa0\xf9\xed\xc1\xe7\xa4\x94\x26\xb4\x80\x11\x26\x56\x0b\xd9\x90\x0b\x5a\xa4\x04\xcc\xab\xc5\x2c\x46\xd1\x04\x75\x92\x64\x65\xa1\xda\xa5\x83\xe4\xc5\x54\x56\x5b\x06\x62\xfc\xdb\xfc\x80\xd1\x72\xff\x03\xbd\xee\x63\x55\x80\xd4\x18\x5e\x56\xa3\xeb\xc8\xe4\x49\x0d\xfa\xa2\x02\x15\xc1\x50\x8a\xe1\x4f\xc5\x14\x8a\x2d\xa4\xc3\xae\x63\x83\x6e\xac\xc5\xf2\x8c\x22\x14\xb0\xd6\xaa\x1f\x94\x8a\x42\xf2\x98\x63\x75\x0b\x25\x82\x47\x4b\xa0\x34\xa3\x8d\xe0\x2f\x70\x46\x1b\x85\x66\xd0\x7a\xe7\x9a\x14\x06\x1b\xa7\x9e\xc9\x5b\x55\xbb\x5d\x42\x5e\xe3\x68\x65\x1a\x51\xac\xac\xc9\x0f\x92\x13\xbd\x60\xd8\x77\x2d\x36\x67\x06\x25\x46\x2b\x08\x8c\x77\x96\xfb\xbc\x49\xd0\x43\xa5\x49\xe7\x3d\xe5\x7a\x8a\x82\x6c\x3e\x74\xdd\x9f\x1a\xa6\xf0\x50\x29\x17\x1a\x37\xb3\x9c\x3b\xbc\x56\xdf\x7c\x98\xdf\xe7\xed\xa4\x11\x3d\x01\x7f\x1d\x40\xee\x5b\x5f\x31\x37\xff\x55\x26\xb4\x08\x35\xd2\x34\x31\xdf\xeb\xbe\x6e\x41\xbd\xd3\x7b\x3c\x3e\xea\x7d\x7a\x14\xd6\x7e\xfb\xfe\x4f\x16\xe7\x9e\xdf\xed\xed\x9e\x8f\x1f\xa4\xfa\x0f\xb6\xe6\x57\x00\x00\x00\xff\xff\xbd\xe3\xf3\xfb\xa2\x03\x00\x00" func runtimeSyntaxScalaYamlBytes() ([]byte, error) { @@ -3368,6 +5554,26 @@ func runtimeSyntaxScalaYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxSedHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x4e\x4d\xe1\x8a\xd1\x2b\x4e\x4d\x51\xe1\x8a\x53\x56\xd4\xd3\x4a\xca\xcc\xd3\xd7\x48\xcd\x2b\x53\xd0\xd6\xb4\x2f\x4e\x4d\xd1\x50\xa8\x51\xd1\xe4\x02\x04\x00\x00\xff\xff\x68\x89\x4c\x43\x25\x00\x00\x00" + +func runtimeSyntaxSedHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxSedHdr, + "runtime/syntax/sed.hdr", + ) +} + +func runtimeSyntaxSedHdr() (*asset, error) { + bytes, err := runtimeSyntaxSedHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/sed.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxSedYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\xcc\xc1\x4e\x84\x30\x10\x80\xe1\xf3\xf6\x29\xc6\x2e\x07\xa0\x52\xbd\xda\x0b\x07\x1f\x83\x96\xa4\xb4\x63\x68\x42\x0b\xa1\xb3\x9a\xcd\xe2\xbb\x9b\x65\x35\x9a\xb8\xa7\x49\x66\xbe\x7f\xde\xc2\x84\x74\x5e\x50\x41\x46\xcf\x98\x47\x42\x47\x0a\x18\x00\xc0\xf5\x96\x6c\x44\x05\x5c\x6b\x99\xd1\x17\x7c\xdf\x8f\x68\x3d\xae\x0a\x78\x7f\x7c\x90\xf5\x10\xd2\x53\x89\xe9\x1d\x44\xd5\x66\xf4\x25\x6c\x45\xc5\x19\x5b\x4f\x13\x66\xb5\xfb\x06\xf2\x39\x0e\xf3\x24\xe7\x05\x57\x4b\xf3\x35\xed\xb6\xbe\x90\xb5\x30\xfc\x5b\xb8\x39\x65\xb2\x89\x64\x3a\xc5\x61\x7f\xae\xf5\xa5\x7b\x6e\x5e\x8c\x78\x6c\xf7\x59\x6b\xfd\xf9\x4f\xe7\x05\x5d\xb0\xd3\xeb\x68\x6f\x89\xd6\xf2\xd7\xc4\x88\x89\x14\xf0\xb2\xdf\xba\x4e\xe5\xc5\x3a\x54\xc6\x54\xc7\xb2\xeb\x2f\x46\xd6\x55\x5b\xfc\xd8\x90\x3c\x26\x6a\xdc\x68\x57\xf9\x31\x06\xc2\x1b\x06\xfe\xa7\x13\xf7\xb4\x02\x7e\x10\x20\x36\x10\x07\xc1\xd9\x57\x00\x00\x00\xff\xff\xc4\xf3\x36\xcd\x4d\x01\x00\x00" func runtimeSyntaxSedYamlBytes() ([]byte, error) { @@ -3388,6 +5594,26 @@ func runtimeSyntaxSedYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxShHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\xc9\xb1\x0e\xc2\x20\x10\xc6\xf1\xbd\x4f\x51\x63\x07\xd0\xe4\x7c\x84\x46\x63\x62\x4c\x1d\xba\xb8\x11\x0d\x45\x5a\x48\x91\x1a\xce\x3a\xdd\xc3\x1b\x85\x6a\xba\xf0\xf1\xbb\x3f\x1a\xed\x5c\xc6\x04\xa0\x29\x48\x40\x23\xd1\x90\x80\xf8\x7e\x10\x14\xa5\x89\xbe\x4a\x67\x25\x6a\xa4\x19\x52\x6b\x47\xaf\x9e\x76\xf0\xa9\xfe\x99\xfa\x23\x0c\xad\x75\x9a\x66\x10\x30\xfd\xa6\xad\xfb\x2e\xba\xef\xee\x3d\xa8\xc1\xb7\xbf\x14\x54\x74\x5d\x1d\x76\xe7\xe3\x69\x4f\xa0\x9b\xd1\xba\x9b\x28\x68\x5b\x57\xdf\x13\xcf\x2e\xcb\x05\xac\x36\x4c\xfb\x57\xbe\xe6\x25\x6b\x24\x2f\x99\xe4\x25\x1a\x96\x53\xc1\xb3\x77\x00\x00\x00\xff\xff\x3c\x2e\x0b\xc8\xf3\x00\x00\x00" + +func runtimeSyntaxShHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxShHdr, + "runtime/syntax/sh.hdr", + ) +} + +func runtimeSyntaxShHdr() (*asset, error) { + bytes, err := runtimeSyntaxShHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/sh.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxShYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\x7f\x73\x1b\x45\x0c\xfd\x3f\x9f\xe2\xea\x64\xa8\xdd\x62\xd3\x96\xb6\x03\xe6\x87\x29\x2d\x30\x9d\x02\xed\x0c\x30\x93\x21\x9b\x96\xf5\xae\xce\xb7\xdc\xfe\xb8\xee\xea\xe2\x84\xbe\x7c\x77\x46\x67\x3b\x69\x4d\xa7\x40\x26\xb7\x3a\x49\x96\xf4\xa4\x7d\xa7\xda\x79\xe2\x8b\x8e\xe6\x55\x69\xc8\xfb\x83\x03\x4b\x4c\x86\xe7\x07\x55\x55\x55\xe2\x8c\x3a\xd0\xbc\x1a\x8d\x95\x9a\x95\xe6\x08\x4a\xcd\x96\xba\x34\x22\xb7\x42\xd4\x6c\xb0\x15\x5b\xc3\x2b\xed\x9d\x2e\x54\xf0\x8e\xb2\x73\xd6\x7d\x34\xec\x52\xdc\xba\xaf\xd5\xdd\x0f\xba\x9c\xa4\x36\xde\x51\x94\x9a\xed\x5e\x77\xf2\x45\xbb\xda\xe8\xed\x2a\xb4\x33\x93\x62\x7d\xe5\xca\x66\xa3\xbf\x78\xf6\xc3\xb7\xbf\x3d\xfd\xf1\x09\x66\xb4\xec\x9d\xb7\x4a\x1d\xe1\xd1\x8b\x67\x83\x6d\x32\x1a\xda\x6c\x48\x5b\xca\xf3\x6a\xf4\xf2\xf0\xc6\xec\xd6\x27\x63\x8a\x67\xd5\xed\xc9\x62\xbc\xd4\x93\xc5\x58\x4f\x16\xa5\x19\x57\x38\x9a\x8c\x0e\x0e\x72\xef\xa9\x6c\x66\x73\x58\xfd\xdc\x87\x25\xe5\x32\x68\xd3\xca\xa4\x58\x58\x47\x9e\xc5\xc1\x3c\xaf\x46\x4a\x2d\x4f\xee\x4c\x3f\x3f\xbd\xad\xd4\x72\x53\x48\xa2\x1e\xa7\x68\x9d\x74\xab\x7d\xa9\x74\xb4\x12\xc8\x39\xf9\xaa\xf6\x69\xbd\xcd\x55\x58\x33\x05\x8a\xbc\xc9\x32\x36\xba\x10\x6c\x82\x4d\x91\x40\xde\xd5\x20\x5f\x08\x54\xb4\x01\x9d\x3b\x46\xed\x50\xa7\x8c\xdd\x20\xe1\x6a\xb8\x08\x9f\x8c\xf6\xc8\xa4\x2d\x32\x71\x9f\x23\x0a\x79\x32\x8c\xd2\xb8\x9a\xc1\x0d\x45\xb0\x0b\x84\x3e\xb2\xf3\x58\x37\xce\xd3\xe4\x0a\xec\xb4\x2a\x1d\x19\xa7\xfd\xe6\xf6\xdf\x40\xa9\x4b\x28\x35\x86\x52\x13\x28\xf5\x05\x94\x3a\x85\x52\x27\xf8\x03\x4a\x29\x05\x19\xec\x97\xf8\x1a\x37\xf0\x15\x3e\x82\x52\x98\x5c\x37\xfd\x8b\x70\xab\x32\x29\x04\x1d\xed\x6e\x62\x1b\xda\x6d\x1a\xb4\x20\xd3\x24\xd0\x79\x97\x32\xc3\x13\xa3\x10\xa3\x0f\xba\xb4\xe8\x63\x21\x9e\xec\x0d\x31\x84\x14\x2b\xef\x62\x7f\xfe\x81\xb4\xe3\x15\xdc\x6a\xb2\xd0\xeb\x76\x60\x12\xac\x1c\xb5\x8b\x16\x4a\xad\xdf\xdc\xf9\xf8\xfe\xe5\x2a\x53\x87\xd6\x79\x3f\x1c\xda\xfb\x2b\x8f\xa7\x52\x10\x74\x2b\xe4\x12\x7f\x21\x8b\xd2\x80\x75\xde\x87\x92\xa9\x67\xe7\xcb\x07\x70\x2c\x75\xa1\x87\xf7\x05\xc3\xf0\x39\xc1\x68\x86\x69\x4c\x8a\x30\xcd\x2a\x77\x30\x4d\x48\x16\xa6\x49\x6b\xb1\xe4\x94\x18\xa6\x2d\x7d\x80\xa4\x84\xe9\x60\x4a\xe7\x1d\xc3\xf4\x0c\xab\x99\x60\x2d\x6c\x0d\xeb\xb2\x3c\x26\xf9\x94\x8b\xbc\x0d\xc9\x6d\x0f\x8a\x67\x32\x4a\x1d\xad\x88\x8c\x5a\x1b\x16\x7a\x68\x61\x4d\x1d\x18\x75\xf2\x16\x42\x7b\x34\xa9\xb0\xb3\x90\x7f\xe1\xaf\xf7\xf8\x33\x09\x75\x5c\x6c\xe1\x85\x42\xab\x21\xa9\x2f\x08\xf6\x81\x40\x0a\xad\x94\x0d\x6d\xed\xea\x84\xd0\xc6\x64\x11\x5a\xa6\xd0\x21\x9c\x21\x3a\x43\x88\x1e\x31\x35\x7d\x87\xd8\xe5\x64\x10\xfb\x20\x25\x93\x45\xa7\x0b\x13\x3a\xcd\x8d\x69\x5a\x74\x2e\xb6\x17\xe8\x32\xba\xec\x22\x0b\xe4\xe1\xa5\x46\xc7\xe7\xe8\xd6\x76\x20\xee\x80\x23\x93\xf6\x12\x85\x1c\x90\x83\x94\xcf\x7d\x94\xe9\x15\x7a\x8d\x71\x69\xf4\x5d\x94\x46\xdf\xbb\x77\x7f\x10\x0f\x1e\x8a\xf8\xf4\xb3\x41\x7b\x70\xf7\xde\x44\x50\x97\x26\x0f\xf7\xd7\xd7\x28\x9e\xa8\x43\x11\x9e\x6d\xa6\x2a\x5f\x1b\x0a\xdb\xa5\x38\x99\x2f\x30\x04\x5c\x44\x03\xd6\xf2\x38\x0f\x26\x02\x53\xe1\xcd\xe7\x22\x47\xea\x19\x9c\x7a\xd3\x80\x33\x38\xf7\x24\x47\x34\x72\x39\x3c\xe4\x96\x44\xfd\x30\xbb\x3e\x6e\xef\xa2\x8f\xee\x35\xfa\x38\xf4\xd4\x17\xca\x05\x67\xd2\xcc\xda\x60\xdd\x24\x79\x74\x70\xb8\xa0\xb2\x4f\xb0\xab\x85\x51\xd5\x5e\xaf\xca\x7b\x96\xc4\x74\x7a\xa2\xa7\x7f\x4d\x4f\x6f\x8f\xde\xbb\x41\xaa\xc1\x2d\xde\xad\xdb\x59\x8a\xec\x6a\xb7\xdd\x53\x47\x4a\xbd\x59\xc8\xae\x7a\x34\xfd\xfd\xd5\x8d\x6f\x0e\x8f\x6e\x2d\xa6\xb2\xb6\x2e\x17\xa3\xff\x1f\xb0\xbf\x0f\x0b\x67\x17\x57\xf3\x6d\x3f\x95\x40\xcb\x03\xac\xd1\xe8\xca\x46\xd1\xee\x59\x4a\xeb\xba\xa1\x94\x52\xb3\x6b\xeb\x5b\xfb\x77\xf7\xf7\x76\xa5\xcd\xbe\x7a\xdc\xe8\x7c\x1d\xfa\x5f\xe1\xdc\xdc\x47\x73\x73\xbf\x6c\x75\x72\x7a\x9d\x2d\x0c\xc3\xfd\x47\x96\xf1\x4b\x28\x55\x26\x87\xfb\xc9\x8e\xfe\xa5\x07\x4e\x36\x49\xf8\xaf\xcf\x9f\x3c\xc7\xf1\xf1\x31\xbe\x7f\x7a\xfc\xd3\x77\x93\xb9\xcc\xf3\xef\x00\x00\x00\xff\xff\xef\x45\x76\x90\xa3\x07\x00\x00" func runtimeSyntaxShYamlBytes() ([]byte, error) { @@ -3408,6 +5634,26 @@ func runtimeSyntaxShYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxSlsHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x4e\xcc\x29\xe1\x8a\xd1\x2b\xce\x29\x56\xe1\xe2\x02\x04\x00\x00\xff\xff\x9d\x7c\x74\x9b\x0d\x00\x00\x00" + +func runtimeSyntaxSlsHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxSlsHdr, + "runtime/syntax/sls.hdr", + ) +} + +func runtimeSyntaxSlsHdr() (*asset, error) { + bytes, err := runtimeSyntaxSlsHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/sls.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxSlsYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x8f\xdd\x6a\xc3\x30\x0c\x85\xef\xf3\x14\xc6\x2b\xb4\x0d\xd4\xdd\xed\xfc\x00\x7b\x82\xdd\xd5\xc9\x70\x62\xa5\x18\x1c\x39\x58\xca\x60\xa0\x87\x1f\x4e\xd7\xc2\x28\xbb\x11\xe2\x3b\x47\x3f\x67\x8a\x09\xf8\x7b\x01\xab\xc8\x27\x6e\x9a\x00\x0c\x23\x5b\xd5\x28\xa5\x54\x15\xd1\xcf\x60\x95\x76\xce\x50\xa2\x9d\x6e\x9a\xb2\x26\x20\xbb\xe9\x27\x15\x03\x20\xc7\x29\x42\x31\x5f\xbe\x58\xa5\xfb\x4b\xaf\x4e\x9d\x69\xed\x4e\xff\x67\x31\xad\xbd\x6b\x01\x26\xbf\x26\xb6\x4a\xd7\xeb\x0f\x3c\x66\x24\xf6\xc8\x06\xd7\x79\x80\x3a\x73\x6e\x2f\xaf\xa7\xb7\xee\xdc\x3e\x59\x86\x9c\xd3\xf6\xdf\x70\xf8\x28\x2b\xc8\xbb\x4f\x04\x47\xe7\x86\x27\x27\x71\x89\x78\xad\x5e\x7d\x70\xce\x39\x23\x97\xde\xe9\xee\xd8\x3a\x2d\xfb\x07\xd9\x77\xc7\x76\x7f\x9f\xa5\x05\xc6\xe8\xef\xfb\xaf\xc5\x47\x94\xad\x92\x8c\x79\x5e\xf2\x8a\x41\x96\xb1\xc0\x0d\x7e\x6e\x6d\x8a\xc4\xb2\xc4\x94\x7c\xf9\xfb\xc6\x3c\x03\xd6\xa8\xfd\x8b\x79\xc4\x20\xf6\x0c\xbf\xbc\x9e\x88\x93\x40\xda\x0a\x81\xe4\x22\x98\x59\x3c\x06\x01\x0c\x95\x62\xb8\xad\xfc\x09\x00\x00\xff\xff\x06\xf6\xfb\xa9\xb6\x01\x00\x00" func runtimeSyntaxSlsYamlBytes() ([]byte, error) { @@ -3428,6 +5674,26 @@ func runtimeSyntaxSlsYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxSolidityHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\xce\xcf\xc9\x4c\xc9\x2c\xa9\xe4\x8a\xd1\x2b\xce\xcf\x51\xe1\xe2\x02\x04\x00\x00\xff\xff\xdd\x6d\x43\x99\x11\x00\x00\x00" + +func runtimeSyntaxSolidityHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxSolidityHdr, + "runtime/syntax/solidity.hdr", + ) +} + +func runtimeSyntaxSolidityHdr() (*asset, error) { + bytes, err := runtimeSyntaxSolidityHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/solidity.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxSolidityYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x54\xc1\x8e\xe3\x36\x0c\xbd\xe7\x2b\xdc\x74\xdb\x9d\x64\x90\x99\x69\x8b\x2e\xd0\xa0\xed\x60\xd1\xa2\xd7\xbd\xf4\xd4\x38\x28\x68\x89\x8e\x89\xc8\x92\x41\xd2\xc9\x78\x41\xf4\xdb\x0b\xd9\x99\x9d\x34\xd9\xce\x6d\x73\x88\x28\xf9\x91\xef\x49\x4f\x54\x4d\x01\x75\xe8\x70\x5d\x48\x0a\xe4\x49\x87\xd9\xcc\xa3\xa2\xd3\xf5\xac\x28\x8a\x22\x7f\x8f\xd0\xe2\xba\x98\x97\xe5\x9d\xa4\xf0\x66\x3e\x9b\x71\x1f\x50\xa6\xef\xab\xa2\x63\xec\x38\xb9\x11\x50\xdd\xb8\x14\x95\xc1\xa9\x05\xaa\x18\x78\xb0\x8e\x61\xd7\xc2\xa2\x2c\xab\xf9\x29\xc1\xa5\x28\x0a\x51\xef\x62\xdf\x56\xc8\x53\xe2\x66\xb5\x7d\xbc\xd9\x3c\xac\x7e\xda\xde\xda\xc3\x53\x0e\x60\x55\xbf\x5f\xfd\xb1\xbd\x3d\x4f\x25\x8f\x51\xa9\xa6\x31\x6b\x03\xab\x8f\xef\x57\x7f\x6d\x37\x7f\x4f\x41\x4e\x5e\x6e\x36\x6b\xe9\xc0\xe1\x7a\xbb\x5d\x3e\x67\x89\x82\x62\x8b\x51\x4f\x1a\x41\x04\xdb\x2a\x0c\x56\x31\xc2\xde\xb2\x64\x8a\x3d\x9a\x4f\x56\x27\xb6\xba\x8f\x4e\x29\x45\xa3\xda\x30\x08\x5a\xc4\xa3\x31\x6a\xcf\xf1\x34\x88\x1d\x1b\x0a\x78\xae\x4c\x3a\x74\x04\xe1\xc4\x90\x8f\x0a\xa3\x37\x6d\x38\x1d\x47\x58\xf1\x75\xd1\xc2\x1e\x0b\xe9\x19\x0b\x6d\x70\x28\x80\xb1\x38\x20\x0f\xc5\x81\x84\xaa\x80\xa7\x42\xd9\x8c\xbb\x3d\x0e\xc7\xc4\xfe\x59\x6f\x4c\x71\x68\x53\x2f\xf6\x7c\x74\x46\xd1\xe3\x13\x7a\xeb\x60\x80\x2a\xa0\x75\x7d\x15\xc8\x59\xc7\x74\x00\x45\xc3\x27\x45\x8e\x10\x8c\xe2\x14\x7c\xee\xfc\x4f\xd5\xab\x90\xdc\x3e\x2b\x9e\xa2\x06\xa4\x31\x97\x28\x56\x20\x68\x9e\xea\x9a\x5c\x1f\x74\xb0\x1d\x48\xa0\x96\xd4\x26\xdb\x4c\xa9\x45\x51\x68\xbb\xc5\xe2\xd1\x5a\xd9\x8d\x25\x3c\x28\x64\xa4\xe5\xed\x23\xdb\x01\x42\x8f\x19\x10\xd3\xd1\xf4\x69\xc4\xec\x40\x3a\x26\x87\x96\x98\x76\x14\x17\x8b\xc7\x57\xd4\xed\xd1\x39\xd8\x7f\xff\xe3\x3b\x93\x06\x7e\xc8\x7f\x39\x66\xea\xb0\xf5\xdf\xbd\x7b\x30\x74\x8c\x2e\x1d\x90\x0d\xbc\x6f\x93\xb7\xb6\x0f\x79\xd0\x86\xc4\xa4\xef\x90\x4d\x30\xd4\x1e\x45\xb9\x77\x6a\x65\x79\x57\x41\x80\xe8\xf0\x15\x52\xe5\x1e\xad\x86\x20\xaf\x81\x8e\x48\x26\x1f\xa1\x4a\x56\x53\x8c\x38\x18\x6a\x33\xb2\xb9\x14\xbd\x58\x4b\xb1\x57\x14\x6b\x52\xcf\x62\x1e\x06\xb1\x23\xe2\x5e\x6c\x40\x60\x39\xaf\x3b\xb5\xdf\xe4\xb4\xf7\x8c\x22\x56\xa5\x14\xac\x85\xae\xa3\xb8\x33\x51\xce\xc3\x01\x38\xdb\x79\x53\x96\x7e\xb9\xb0\xfe\x25\xac\x06\xc5\x53\x58\xd3\x13\xfa\x67\xc4\xd9\xe4\x9c\x0e\x99\x13\x3f\xf3\x55\x32\x75\x2b\xd4\x8a\x6c\x2e\x5b\xee\x40\x5d\x63\x1e\x6b\xe8\x83\xe6\xbd\x8d\xd7\xc8\x28\x06\x8a\x38\x5d\xa8\x1a\x1c\x5a\x40\xb5\x76\xc4\xc6\x3e\x04\x4b\xb5\x75\x3d\xa3\x31\x86\xe4\x40\xc7\x5b\x99\x1b\x8f\x9c\xc9\x91\x32\x4c\x79\xb0\xbc\xd7\xf1\x2f\xd5\x76\x20\x3c\x9e\x0b\x4b\x1d\x32\xe8\xa8\x6d\xb3\xba\xbd\x5f\xfe\xf2\xf3\xaf\x5f\xfd\xf3\xcd\xe3\xfa\x5b\xdb\xbe\x58\xd0\x8e\x7d\x3c\x4e\xf3\x4f\x14\x38\x1b\x72\x7f\x3f\xff\xb4\x86\x31\x37\xce\x9b\x97\x85\xe9\xb9\x2a\x36\xdb\x8b\x2a\xc5\x75\x99\xb2\x5c\x5e\x16\x2a\xcb\xe5\xfd\xff\xd7\xd2\xe4\xd3\xba\x98\xff\xf9\xe1\xf7\x0f\xeb\xc7\xab\x17\x6e\xb2\xee\x33\x44\xe5\xfc\x8a\xe6\x6c\x45\xf6\xd4\x8d\xcc\x65\x79\x77\x49\xfd\x69\x7a\x49\x35\x3d\x40\xbf\x35\xc0\xff\x4d\xbd\x96\x73\xa5\xe6\xed\xa5\x98\xb7\x5f\x40\xcb\xec\xdf\x00\x00\x00\xff\xff\x28\x8c\x3d\xc3\x6b\x06\x00\x00" func runtimeSyntaxSolidityYamlBytes() ([]byte, error) { @@ -3448,6 +5714,26 @@ func runtimeSyntaxSolidityYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxSqlHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x2e\xcc\xe1\x8a\xd1\x2b\x2e\xcc\x51\xa9\x29\x2e\xcc\xc9\x2c\x49\x2d\x4a\x56\xe1\xe2\x02\x04\x00\x00\xff\xff\xd0\xdf\xe8\xd2\x16\x00\x00\x00" + +func runtimeSyntaxSqlHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxSqlHdr, + "runtime/syntax/sql.hdr", + ) +} + +func runtimeSyntaxSqlHdr() (*asset, error) { + bytes, err := runtimeSyntaxSqlHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/sql.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxSqlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x55\xdb\x6e\xe3\x36\x10\x7d\xde\x7c\x85\x61\x2c\xb0\xb9\x20\x41\x5f\xeb\x97\x05\x2d\x8e\x64\x36\x14\xa9\xf2\xe2\xcb\x46\xe9\xae\x62\xb3\xb5\x00\xdf\x62\xc9\xdd\x2d\x70\x3e\xbe\xa0\x72\xd9\x3c\xa4\xd5\x83\x34\x87\xc3\x33\x87\x9a\xe1\x60\xf4\x67\xbd\x09\xed\x3f\x87\x30\x1a\x34\x8f\x9b\xb3\xb3\x55\x68\xc3\xb2\x1d\x0d\xce\x06\x83\xc1\x20\xee\xed\xaa\x6d\x18\x0d\x86\x65\x79\xd3\x3c\x6e\x3e\xa2\x79\xdc\xd4\x6d\x38\x2e\x3f\x0e\xcf\xce\x8e\xa7\x4d\x68\x46\x1d\xf3\x7a\xd0\xb4\x55\x1b\xb6\x61\xd7\x8e\x06\xc3\xf3\xcf\xf5\x45\x59\x3e\x9c\x33\x29\xc1\x6c\x02\x66\xc1\xa4\x23\x03\xa6\x38\x18\xe7\x60\xde\xe9\xaf\x42\x25\x86\x72\x52\x2e\x72\x87\xff\x23\x33\x26\x37\x23\x52\x18\x0b\xc5\xcc\x02\x63\xed\x26\x18\x47\xab\x25\x31\xd5\x17\x9d\x4c\x98\xca\x08\xc9\x84\x92\x5b\x24\x5a\xfa\x5c\xd9\x67\x8b\xc4\x68\x6b\x91\x18\x62\x8e\xfa\x74\x38\x73\x6c\xcc\x2c\x59\xbc\xa0\x0e\x80\x93\x64\x0b\xe2\xe0\x64\x13\x23\xc6\xd4\x01\x70\x61\x9d\x50\x89\x8b\xdb\xe4\x08\xdc\xe8\x02\x9c\x52\xe6\x65\x6f\xbe\xa4\x12\xa9\x2d\x71\x90\x4d\x58\x11\xed\x5c\x58\x67\x41\xf3\x42\x32\xd1\x9b\x70\x2a\x48\x72\x8b\xce\x20\x95\xde\x4e\x90\x6a\x13\x1f\x12\x99\x42\xea\x55\xe2\x84\x56\x48\x8d\xce\xfb\xb4\x32\xa3\x7d\x81\xcc\x30\xe5\x30\x61\x53\xa1\xb2\xbe\x08\x91\x29\x6d\x08\x42\x71\x9a\x43\xa8\x54\xc8\xb8\xb0\x64\x1c\x84\x52\x64\x20\x94\xd3\x10\x9c\x94\x13\xa9\x20\x0e\xa1\x20\x2c\x44\xda\x27\xfc\x9b\x16\x0a\xb7\xb4\xb0\xb8\x15\x52\x46\xd4\x17\x21\x89\x71\xa1\x32\x48\x71\x4b\x90\x22\x17\x0e\x52\x28\xb2\x90\x9a\x71\x48\x9d\x30\x19\xdf\xb7\x90\x7a\xf6\xb5\x30\x42\x1b\xe1\x16\x90\x94\x3a\x48\xa6\x32\xcf\xb2\xde\xa6\xc8\x35\x17\xe9\x02\x8a\x39\x6f\x98\x84\xd2\x0e\xca\x4b\x09\x45\x73\x37\x65\xb2\x2f\x5c\x17\x4e\xe4\xe2\x0b\x21\x02\xad\x9e\x0d\x93\x72\x01\x6d\x38\x19\x68\xef\xba\x0a\xea\x0e\x46\x47\xef\xf5\x17\x46\x27\xc4\xbd\x21\xbc\x20\x26\x51\x18\x91\x33\xd3\x5b\x31\x43\x8c\xc3\x50\x4a\x86\x54\x42\x16\x86\x32\x9a\x17\x30\xa4\x58\x4e\x30\x54\x48\x96\x44\xeb\xbc\x51\x30\x34\xd5\xb7\x04\xd3\x95\xd7\x88\x6c\xd2\xdb\xd8\x76\xa2\x67\xb0\xba\x13\xb3\x8e\x39\x6f\x61\x9d\x61\x31\xf4\x6b\x77\xbd\x96\x24\x25\x0e\x96\x62\xf1\xa2\xe9\x53\x74\x6c\x2c\xc9\xc2\x91\xc9\x85\x62\x8e\x38\x9c\x46\x94\x94\xf1\xe2\x9d\xf1\x2a\x61\x8e\xd0\xd1\xe0\x28\x2f\xb4\x89\x23\xc4\x19\x91\x65\x64\x22\xc1\x3a\xe2\x7d\xa7\x78\x25\x7e\xf7\x04\xaf\xba\x6e\xf1\x96\xe0\x6d\xd4\xf7\x05\x8f\xea\x53\x26\x3d\x59\x4c\x99\x11\x4f\x9f\x33\x15\x34\xeb\xd3\x9c\x09\x37\xc1\xcc\x08\x47\x98\x4d\xc8\x10\xbe\x90\xd1\x69\xec\x6c\xb7\x28\x08\x73\x6d\xde\x2a\x3c\x4d\xe8\xd7\xe0\x29\x33\xc9\x84\x19\x38\xa1\x16\x42\x39\x38\x9a\x3b\x74\xdf\x62\x73\x26\x65\x74\xe5\xc4\x85\xcf\x23\x7a\x7e\x28\x26\x3c\x16\x59\x5c\xa6\x52\x33\x07\xae\x7d\x2c\x0b\xa7\x44\xe4\x4c\x76\xf1\x4e\xe4\x84\xf8\xb2\x8e\xe5\x45\x87\xb0\x20\x66\xe0\x95\x15\x99\x22\x8e\xd7\x73\xc7\x52\x8f\x3b\xd0\x1d\xde\xad\x9e\xce\x7c\x03\xbb\x2d\xa9\x55\xd6\xf9\x22\xe8\x3c\xa4\x7c\xde\x8d\xef\x97\x91\x3e\x65\xe6\x09\xbd\xcd\xf9\x70\x0c\x87\xe3\x7e\xf9\x9a\xf6\x4d\xcc\x7c\x55\xb5\xd5\x43\xd5\x84\x06\xab\xd3\xf6\x80\xb0\x5c\xef\x11\x7e\xd4\x2d\xc2\x8f\xc3\xa6\xaa\x77\x58\x87\x6a\x15\x8e\xe7\xcd\xc5\x67\xac\xc3\xe6\xd0\x2b\x58\x6f\x0f\xfb\x63\x8b\x7a\xb7\xaa\x97\xa1\xc1\x76\xbf\x0a\xd8\x9d\x36\x9b\xbf\xab\xcd\x29\x60\x7f\x6a\x0f\xa7\x16\x87\xe3\x7e\x7b\x68\xf1\x78\xaa\x5b\x1c\x43\xb5\xea\x55\x6d\x96\xeb\xb0\xad\xd0\x84\x43\x75\xac\xda\xfd\x11\xcd\x7a\xff\x1d\x6d\xf5\xb0\x09\x0d\xda\x7a\x1b\xf6\xa7\x16\xdf\xeb\x55\xbb\x7e\x2b\xb5\xdc\xef\x9a\xb6\xda\xb5\x37\x0f\xfb\xfd\xa6\xfb\xe9\x3e\x9c\xc7\xa9\x90\xa6\xef\xb2\x76\xa7\xed\x43\x38\x3e\xf3\xee\x7e\xb9\xfe\xf5\xfe\xea\x5d\x5e\xd3\x1e\xeb\xdd\x5f\x91\x37\x3c\x2f\xcb\xb2\xbc\xc1\xdd\x1f\xe5\xf0\xfe\xe2\xb2\x1c\xe2\xd3\xab\xe7\xd3\xfd\xc5\xe5\xa7\xff\x8e\xfd\xf6\x33\xb4\x2c\xcb\x6f\xf7\x17\x97\xdf\x7e\x92\xb7\xcf\xcd\x5d\x96\xd7\x65\x79\x7d\x73\xf9\xf1\x65\xab\xde\xad\xc2\xae\xbd\x5e\xae\xab\xe3\xcd\xf7\x75\xdd\x86\xe6\x50\x2d\x63\x27\xdf\xdd\x8d\x9e\xe0\xfd\xfd\xd5\x7b\xec\xd1\x60\xf8\xe1\x6a\x70\x85\xc1\xd5\x87\xab\xe1\xd9\xbf\x01\x00\x00\xff\xff\xfc\x6c\xf1\x96\xa5\x08\x00\x00" func runtimeSyntaxSqlYamlBytes() ([]byte, error) { @@ -3468,6 +5754,26 @@ func runtimeSyntaxSqlYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxStataHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x2e\x49\x2c\x49\xe4\x8a\xd1\x4b\xb4\x4f\xc9\x57\xe1\xe2\x02\x04\x00\x00\xff\xff\x52\x06\x9e\xcb\x0f\x00\x00\x00" + +func runtimeSyntaxStataHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxStataHdr, + "runtime/syntax/stata.hdr", + ) +} + +func runtimeSyntaxStataHdr() (*asset, error) { + bytes, err := runtimeSyntaxStataHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/stata.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxStataYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\xbc\x5b\xaf\x24\x37\x92\x1f\xfe\xae\x4f\xd1\xdb\xff\xf9\x7b\xa5\x99\x95\xd4\xe7\xe8\xd2\x3d\xc2\x6a\x05\xb8\xbd\xc2\xae\xb1\xc6\xbe\xf8\x61\x00\x95\x36\xcd\x24\x23\x33\xa9\xe2\xed\x90\xcc\xcc\xaa\x9e\x98\xf9\xec\x46\x44\x90\x59\x75\x4e\xb7\x31\x06\x0c\xbf\xb8\xd1\x8c\xdf\x2f\x78\xbf\x25\x19\x64\x66\x9d\xc9\x3a\xa8\xd7\x04\x3f\xbc\x2a\x55\x55\xf5\xd9\x67\x06\x2a\xe8\xfa\xc3\x67\xaf\x5e\xbd\x7a\x45\x81\x41\x79\xf8\xe1\xd5\xeb\xd3\xe9\x2b\xf5\x93\x89\xbf\x7b\xfd\xd9\x67\x79\x75\x50\x24\xc2\x97\xaf\x74\x0c\xa5\xaa\x50\xbf\x2a\x35\xdb\x30\x8b\x37\xfd\x2b\x55\xe5\xfa\xc3\xab\xd7\xff\xe3\xf4\xfa\xf5\xe1\x09\xc1\x50\x5e\xaf\xff\xfe\xe6\x75\x97\x5b\xff\xf7\xe5\x2b\x6b\x20\x54\x3b\x59\xc8\x5f\x79\xa5\x73\x7c\x1e\xfe\x2c\xfb\xd7\x1f\x05\x49\x21\x7f\xff\x71\x80\x14\xf5\xea\x97\x5f\xff\x56\x69\xd4\xdc\xdf\x9d\x4e\xfb\x1f\x5e\xbf\x88\x79\x6b\x6d\x02\x6d\x95\x7b\xbf\xa8\xcc\xb1\x4f\xa7\xaf\x5e\x7f\xf6\xbf\xdb\x25\x9f\xea\x91\xff\x77\x3b\xe4\xff\x7b\xf5\x9f\x57\xeb\xea\x97\x36\xbc\x9a\xd6\xa0\xab\x8d\xa1\x7c\xf6\xb2\x9c\x5b\x7b\x5e\x9f\x4e\xe3\xe7\x83\x56\xce\x41\x46\x35\x8e\x19\x36\x54\x63\x41\xa5\xa3\x88\x05\x55\xb1\x81\xc5\x82\xaa\xaa\xc0\xe2\x91\xe5\x82\x6a\xad\x51\x47\x03\x38\x42\x55\x06\x02\x8e\x36\x44\x6f\x95\x3b\x48\x3a\x58\x55\x56\xbc\xb3\xa7\xf0\x38\x19\x1c\xaf\x15\x62\x36\x90\x51\xa3\x56\xab\x5e\xae\x0d\x28\x2b\x61\x9c\xea\xbd\x59\x7c\x41\x0d\xd6\xa1\x5e\x54\x46\xbd\xd8\x47\x16\x1c\x6f\xb1\x8f\x12\x8b\x23\x2d\xd1\x41\x39\x5f\x89\x24\xd4\xce\x26\x7c\xef\xa2\x3e\xa3\x76\x71\x76\x71\xc6\xf7\xde\x5c\x29\xe2\xfb\x38\x69\x12\x06\x75\x74\xf0\x14\x56\x3f\x12\x73\xaa\xc6\xec\xa2\x56\x0e\x0e\x75\x83\x5c\x6c\x0c\xa4\x87\x29\x03\x24\x95\xa9\xa4\xe8\x7a\xa2\x12\x27\xd4\x91\x79\xa0\xfc\x72\x46\xea\x3f\xee\x3e\xa3\x2a\xa0\x51\x57\x34\x50\xd1\xcc\xca\x7b\x95\x8c\xba\xb1\x67\xfc\x72\xf0\x3b\x46\x9c\x6a\x6c\xac\x9a\x59\xbc\xd1\xa1\xa2\xb1\x1c\x8e\x26\x4e\x23\x89\xf7\x24\x16\x12\x9e\xc4\x13\x89\x9d\xc4\x15\x4d\x24\x72\x45\xb3\x86\x00\xb5\xa6\x1c\x47\x04\x04\x87\x90\x8a\x89\xeb\xe8\x80\xd8\xe4\xa2\xaa\x08\x97\x44\x2e\x06\x9a\x2b\xca\xdd\x73\xea\xec\x3b\x95\xfb\xfc\x67\xfc\x99\xbc\x69\xe9\x82\x8b\x2d\xb5\x30\xcd\xa0\xcc\x41\x20\xe7\x98\x59\xdb\xb3\xad\x80\x52\xce\xe4\x22\xf9\xfa\xba\x5b\x53\x17\xfc\x99\x73\xe3\x16\x51\x7e\xd2\xf4\x06\x1c\xb4\x28\xa3\xbc\xca\x06\x17\xe5\xa6\x2b\xa8\x7c\x10\x77\xc5\x45\x95\x01\x52\x8e\x09\x97\x05\x97\xe5\x3d\x52\x77\x2d\x34\xb6\x4b\x5c\x73\xc1\xe5\x9a\x20\xcf\x10\x3d\xd4\x6c\xf5\x0b\x35\xe1\xbf\xa2\xa5\xf9\x2b\x92\x4b\xb3\xb3\x5a\x4b\xb1\x2a\xdc\x18\x55\xeb\x50\x24\x52\x30\x70\x09\xb1\xa2\x0d\xce\x16\x82\xac\xc2\x0c\x68\x03\xf1\x8d\xdc\xf1\x38\xdc\xf1\x96\x76\x6b\x13\xfe\x60\x87\x3f\x4d\xee\x86\x87\x5f\x9b\xbc\x36\x6c\xf7\x83\x68\xc3\x76\x3f\x56\xcf\xd5\x9e\xf6\x67\x16\x5d\x6b\x3d\x7b\xb0\xee\xdf\x7a\xa0\x91\xc3\xf7\xd6\x0f\x77\x4a\x0f\x75\x2a\x39\xa5\xe1\x8e\x1e\x21\x71\xb6\xa5\x5a\x7d\xcf\xef\xc3\xb8\x83\xc2\x7d\xef\x84\x97\xdd\x13\x7a\x3f\x84\xfb\x8e\x08\x3f\x8b\x3c\xf4\xa3\xde\x6d\x5d\x21\x26\xb9\xd7\x1e\x27\x45\x5b\x4a\x0c\x77\xb4\x87\x94\xab\x27\xe0\xf8\x47\xf4\xba\x9e\xe1\xda\xbb\x77\x07\x3b\xae\xce\xdd\xd1\xb4\x3c\x53\x7a\xaa\xe6\x21\x6a\x06\x5e\x14\x6d\x29\x57\xdf\xe6\xdc\x7f\xc5\xde\x5b\x0d\x69\x3e\xdd\xf7\x9a\x0b\xe8\xc2\x6d\xf5\x73\x61\x52\xba\xc6\x4c\xdd\xe3\x82\x3c\xea\x2e\xd8\xe3\x09\x61\x7e\x9b\x99\x2e\xd8\xdd\x96\x45\xe5\x2a\xda\x7d\x21\xc1\xb7\xce\x11\xad\x75\x54\x27\xe2\x79\x9f\x38\xce\xe4\x1e\xde\xe0\x31\x8a\x9d\xb4\xe0\xdb\x70\xca\x58\x7a\x55\xbd\x2d\xc5\x86\x99\x68\xb6\x17\x82\x35\xd8\x29\x66\x8f\x5e\x91\x7a\xa1\xa5\x9e\xb0\xad\x37\x5e\x5d\x64\x1d\xf0\xea\x42\xcf\x8b\x57\x17\x17\x29\xbd\xb9\x62\x5b\xa0\x8f\x2c\x6d\x20\x27\x19\xd8\xd0\x33\xb0\xa1\x65\x60\x03\x67\x60\x83\x64\x60\xc3\x5a\xa1\xa0\xf7\xe8\xfd\x7b\xf4\xd1\xa0\xa7\x85\xc0\xc7\x50\x17\x91\xee\x8a\x3e\x83\x33\x76\x42\x5f\xe2\x24\x4b\x04\xb1\x23\x6d\x89\x53\x01\x5a\xcb\x0b\x86\xbe\xb3\xdd\x66\x6b\xb8\xed\x6d\xcf\x67\xad\x4c\xd9\xd0\x37\xa6\xdb\xc4\x0d\x3f\x63\xe0\x75\xb2\x4d\xdc\x36\x6b\xdb\x48\xdc\xc6\x21\xa4\x96\x45\xa2\x14\x29\x54\xe4\xff\x1c\x24\xf3\x33\xac\xce\x79\x55\x31\xb9\x35\x2b\x87\x7d\x6a\x37\x4c\x78\x3f\xc1\x9f\xa8\xdd\x4f\xab\xca\x15\x72\x47\x77\xc5\x8c\x99\x4b\xcf\x47\x83\x72\x5b\x8a\x32\x17\x9e\x81\xbc\x64\x06\x67\x98\xe1\xe2\x05\xb2\x40\xc1\xd6\x77\x19\x92\x53\x57\xcc\x50\xd7\x1c\x30\xdf\x2f\x44\x59\xe6\x6b\x7e\xb1\xee\xe6\xdb\x72\x92\xfb\xd3\x90\x8f\x49\x96\x6f\x3d\x9c\x5b\xcf\xe4\xb8\x06\x83\x39\xee\x6d\x7f\xce\x71\xbf\xdb\x80\x49\x6b\xbe\xb4\x01\xe7\xde\x19\xb9\x62\xee\xb3\xaf\x13\x9a\x22\xb9\x3f\xcc\xf9\xf6\x28\x17\x2c\x5a\x39\x95\xb1\x8f\x77\xb1\x73\x40\xb2\x78\xd8\xe0\x29\x9e\x2c\xa3\x52\xdb\xa4\x2b\x54\x1f\xb8\x60\x79\xca\x15\x4b\xc1\x52\xde\x63\xa9\x59\xab\x4a\x60\xd6\x44\x10\x27\xee\x41\x31\x47\x09\x6a\xb6\x9e\xd5\x4e\x5c\x27\x47\x90\x83\x40\xb0\xa6\x04\x99\xf5\xb8\x0b\xa1\x4d\x4d\x98\x57\x55\x2f\xec\x15\x0b\xa7\xed\x08\x64\x9e\x00\x17\x14\xe9\xf8\x80\x65\x1d\x6d\x28\x35\x0b\xd9\x63\x36\xc4\xc4\xc3\x63\xd9\x01\x12\x56\x24\x53\x8e\x6d\xb8\xfa\x1e\xab\x41\x9e\x64\x75\xc1\x6a\x03\x56\x8f\x35\xd2\xf3\x56\xb0\x3e\x61\xcd\x34\x4e\x35\x37\x7b\x43\xe6\xe1\x6d\x91\xac\x3b\xd6\xdd\xd6\xc5\x06\x5c\xd9\x38\x5b\x4d\x6b\xd0\x6a\x5a\xb1\xab\x2d\xc6\xd2\x42\xb1\xda\xe2\xa0\xd2\x74\x5c\xa9\xdb\xa2\x4f\x2a\x03\xf3\x12\x73\x3d\xc3\xf5\xde\x1f\x2e\xf7\x21\x4d\x9b\xac\x60\x8d\xa2\xe6\xe8\x99\x70\x79\xdc\xe5\x9b\x72\xd6\x90\x81\xb4\xf6\xd2\x39\x78\xaa\x4c\xb2\x9d\x17\x61\xd2\xd7\xeb\xd1\xd9\x9c\xab\xad\x4e\xea\xc3\x03\xb3\x1e\x63\xb5\x1e\x83\x45\x4c\x66\xa7\xfd\x20\x51\x69\x1c\xd6\x3e\x20\x4c\xe4\xa1\x39\x68\x9e\xee\xb8\xba\xf1\x1e\x5b\xc6\x8f\xeb\x14\xa0\x68\x95\x5a\x15\xe2\x02\xbd\xb1\x3c\xae\x44\x79\x34\x3b\xd1\x71\x6d\xed\x94\xf1\xde\x40\x93\x63\x3b\x71\x07\x38\xb3\x70\x57\xec\xf3\xbe\x21\x8d\xf4\xed\x09\x38\xd8\x33\x6f\x1e\xe4\xfb\x3d\x6d\xa7\xc5\x84\x4b\x27\x31\x66\x50\xe7\x66\x25\xb3\x31\xd6\x0c\xb1\xeb\x82\x57\x8f\x57\x8a\x7b\x7d\xc2\xeb\xfe\xc5\xe9\x34\xbe\x7e\x79\x2e\xd1\xd1\x7b\x15\x4c\x3f\x96\xd0\x49\x18\x3c\x84\xfa\xe2\x54\x62\x27\x04\x57\x80\xc5\xe9\x54\xfe\x60\x27\xb4\x01\xa7\x98\x41\xe9\x85\x90\xdc\xc6\x42\x89\x74\x0d\xd6\x8e\x70\x90\x82\xe3\x15\xc7\x2b\x01\x4d\x28\x7c\x5a\x2d\x54\x77\x25\x44\x35\xc6\xb5\xa2\xd2\xa8\xf4\xf0\x16\x95\x4e\x39\xb9\x58\x0f\x42\x7e\xe6\xb7\xb5\x54\x54\x26\x92\x4b\xaa\x2e\x84\x6b\x62\xdb\x5e\xb9\xb4\x28\x54\x1e\x54\x28\x48\xe7\xa3\x10\xc9\x6d\x2c\x94\xc8\x01\xa8\x95\x8d\x57\xa0\xd5\x8b\xb9\x81\x09\x95\x9c\x80\x54\x42\x95\xd8\x01\x8b\x20\xd2\xa0\xca\x7a\x61\x31\x98\x2c\xd8\x32\x23\x9a\x18\x9c\x47\x95\x61\x66\xc1\x5e\x73\x41\x95\xad\x57\x22\x25\x21\x91\x9e\x92\x78\x42\x55\x50\x15\x4f\x4f\xb1\xad\x37\xd6\x23\x1d\xba\x9b\xee\x14\x3f\x5d\x86\xc1\xb8\xf9\xce\x8b\x32\xa2\x9c\x0a\xb0\xc8\x22\x2b\xaa\x4d\xfa\x71\xeb\xbd\xc8\xa4\x74\x1c\xde\xe2\xa8\xcb\x19\xf6\x37\x38\xce\xd1\x4c\x19\xae\x74\x3c\xa4\x76\x8c\x36\xbd\xa1\x62\x47\xcb\x39\x8c\x36\xa5\xa6\xe6\x03\x13\x03\x57\x7d\xb4\x15\x4a\x07\x4b\x18\xf7\x8a\xa3\x18\x27\xa3\x07\x5f\xe8\x59\x1d\x23\x65\x15\x63\x2d\xca\x27\x21\x35\xab\x3b\x36\xbc\xc3\x31\x5e\x74\x1c\x5c\xc3\x24\x78\x69\x30\x7c\xdf\x49\xc2\xb1\x17\x9d\x91\x9f\x05\x1c\xb3\x05\xe2\x91\xdc\xce\xa2\x88\x04\x1c\x33\x85\x64\xee\xd6\xb1\xe0\xc8\x4d\xa7\x5a\xb8\x61\x6f\x04\x3a\x72\xd0\x13\x77\x42\x8b\x5f\x55\x65\x4f\xc2\x77\x84\x5c\x69\xa9\xf1\x5b\xd4\x0a\x75\x1f\x57\x4d\x83\xaa\x55\xeb\x35\xad\x3c\xfb\x05\x3a\xb9\x92\x1c\xde\x75\xe4\x68\xc4\x7a\x3a\xe2\xe4\xc7\x2e\xc7\xdf\x80\x2f\x0e\x48\xa9\x2c\x56\x91\xb9\x01\x20\x6d\x79\x5a\xa3\xa6\x15\xbf\x36\xa0\xda\x68\x8b\xda\xa0\x86\x50\xe2\x58\x86\xaa\x68\xd7\xd4\x64\x15\x10\x4e\xfd\xf4\x6e\x2c\x49\xd0\x67\xe3\x66\x3a\x18\x16\xd1\x68\xf4\xbc\xe2\x2b\x0b\xe9\x13\xf6\x5d\x5c\xba\x8b\x43\x5b\x98\x5e\xc0\x25\xa4\xa2\xac\x45\xed\x50\x3b\x9a\x80\x2c\xd7\x6a\x49\xa7\x25\x49\x3b\x0a\xb4\x85\x45\xa5\xf3\x3f\xdf\x01\xb0\xa0\x59\xc4\x98\x18\xac\xc8\xa1\xec\x42\x6a\x83\x1e\x8d\x27\xb9\x10\x41\xd7\xa3\xb6\x0c\x03\x6c\x5c\x62\xa1\xa2\x54\xce\xea\x8a\xda\xad\x85\x76\xba\x86\x83\x07\x55\xd6\x4c\xcd\x68\x1e\xa5\xf2\x05\x85\x28\x35\x03\x3c\x53\x68\xb0\x44\xe5\x51\xf4\x86\x4b\x0a\x99\x1c\xb0\x98\x45\x52\xcd\x18\xa9\x46\xa1\xb0\x7f\x34\x30\xc6\x78\x96\x0b\x8c\x54\xbe\xed\x84\xaf\x34\x62\xf6\xab\xab\x43\x18\xef\x95\x1d\xfb\x6e\x4c\x98\x81\xfa\x33\x86\x89\x85\x15\x99\x1b\x78\xc2\x0c\x81\x80\x63\x51\xe7\x46\xde\x80\x04\x54\x47\x7b\x90\x70\x63\x1c\xb9\xda\xb0\x02\x93\xac\x34\xf9\xa4\x2b\x0b\xd9\x9e\x89\x95\xb8\x66\x4d\x51\x28\xd7\xac\xfb\xa5\x4a\xce\x8f\x46\x55\xc5\x6c\x50\xa1\x5a\x61\x67\x1f\x85\x14\x2f\x51\x41\xa4\x6b\xa0\x3a\xd6\x83\x48\x8c\x39\x2b\x6a\xcf\x4a\x2e\xa0\x6c\xa8\xf4\xc4\xcb\x53\x4e\x92\xba\x35\x5e\x46\xc5\x9d\x77\x59\xd4\x07\x02\x1e\xed\xb6\x4f\xdc\xb6\x09\x4d\xf5\xcc\x50\x59\xac\x22\x73\x83\x80\x3a\x47\xea\x55\xfa\xaf\xb3\xa5\x07\x4b\x70\xe0\x91\x2d\x16\xa9\x23\xea\x40\x13\xb6\x16\xca\xa4\x96\x3a\x7c\x27\x40\x5d\x5c\x6b\x24\x58\x7d\x49\x22\xa9\xc4\xd5\xaf\x0e\xf5\xca\x4f\x05\x49\xf6\xa3\x67\xc0\x20\xf5\x53\xb1\x73\xc7\x70\x10\x75\x63\xf5\x8e\xae\xf7\x3c\x3f\x53\x80\x6f\xb1\x6a\x9c\xd0\x8c\x68\xf8\xf4\x60\x00\x0d\x68\x72\x91\x85\x11\x49\xbe\xd3\x84\x06\x0a\x39\xcd\x22\x8b\xb4\x0d\xc6\x8e\x14\xb7\x59\xc9\x66\x92\x4c\xa7\xd9\x15\x34\xd3\xca\xd7\x91\xc6\xa2\xb1\xc3\x8c\xb4\x5a\x18\xcb\xcb\x67\x41\x63\xd9\x69\x95\x0d\x61\x62\x31\xd0\x73\xc5\x44\xc0\x89\x54\x0d\xae\x84\xd5\x06\x5d\xd1\x44\x34\x11\xc8\x19\x16\x56\x24\x05\x54\x1e\xcd\x86\xc3\x5b\x34\x6d\x89\x37\x59\xed\x64\xf1\xa1\xc9\x31\xa1\x29\x68\xca\x20\x5d\x5c\xaa\xa1\x8d\xc5\xac\xc9\x59\xad\xc8\x5c\x36\x2b\x9d\xaa\x14\x9a\x9d\x17\x56\x73\x35\x17\x04\x04\x83\x54\x12\x97\x03\x33\x04\x04\xbb\xd1\x73\x0a\x9e\xf6\x7f\xda\xe3\xc9\x2f\x68\x72\x91\x85\x11\x09\x08\x4f\x08\x99\xe6\x1e\x70\x02\x7a\xce\xdd\x24\x98\x04\xca\xce\xb8\x40\xed\x38\xcc\x2d\x4a\xe3\x43\x59\x6e\x6a\x3a\xa8\xbd\x8b\x65\x9f\xc7\xb2\x1c\x8b\x33\xac\xab\xc8\xdc\x20\x20\x64\xe2\x39\xa2\x5c\xec\xd1\xce\x0b\xa5\x0e\x7a\xe2\x0b\xc0\xc6\xd9\x60\x65\xea\xac\x3e\xf3\x36\x40\x1a\x5c\x92\xa2\xe6\x96\x3a\x2c\xd1\x09\xa9\x47\xe8\x1a\x0e\x4f\xa1\xf1\x8c\xb2\x43\xb1\x1c\x0c\x4c\x6a\x75\x5d\x2b\xab\xf7\x8d\x6e\x1a\x86\x18\xdc\x15\x79\xff\x6f\xdb\x08\x14\x84\x1a\x4d\xdc\x91\x67\x2e\xd4\xe8\xcd\x15\xe1\x82\x70\xb1\xe4\xf8\xae\x93\x6b\xc3\xa0\x1d\x4e\x4a\x93\xab\x2c\xa2\xc8\xdc\xa0\x6d\x95\x4d\x49\x07\xd1\x6a\xc8\x91\x2c\x58\xd3\xbd\x44\x6d\x1a\x2d\xde\x93\x56\xa5\xc9\x81\x56\xd7\x95\x42\x59\x9b\xb3\x4a\x0b\x4e\x46\xd1\xf3\x22\xa0\x3b\xe6\x83\xd8\x1b\x1b\xef\x28\x10\x2f\x6a\x6b\xc0\xea\x5a\x00\xa7\x85\x96\x8b\x48\x16\x24\xdf\xc3\x6a\x17\xc9\x97\x76\x60\x12\x93\x75\xb4\x2d\x4d\xd6\x39\x32\xa7\x6d\x30\xc3\xe2\xd2\xd0\xc2\x83\x39\x88\xad\x0d\x86\xb7\x38\x91\xe2\x70\x72\x96\x5c\x61\x51\xc9\xb8\xfe\x6e\x78\x83\x7c\xd0\x26\xa1\x44\x56\x9c\x52\x06\x63\xa9\x23\xb3\xd2\xc3\xc3\x77\xdf\x0a\x51\xe6\x37\x21\x7a\x39\x37\x12\x2f\x42\x8c\x49\x8d\x50\xee\x4c\x36\x41\xaa\x24\xa1\x5f\x1b\x49\x2d\x66\x7a\x6a\xd8\x22\xee\x73\x2b\xef\x12\x19\xe9\x41\x23\xe4\xc7\xba\x13\x6a\x0b\xd1\xe8\xae\x42\x32\x0d\x5c\x26\x53\xe8\x22\xb8\x04\xc1\x24\x50\x43\xc7\x47\x26\x95\xcc\xbc\xa9\x46\x36\xfd\xa7\x1a\x59\xd0\xc4\x9a\x6a\xdc\xd9\x73\xc6\x59\xf9\xfe\x18\x76\x9a\x3a\xb3\x37\x4f\xdb\x2e\xb8\x45\x0e\xe6\xb1\x91\xe6\x4d\x4f\x36\x13\x7a\xb4\x67\x63\x87\x05\x2e\x6a\x8e\x81\x79\x49\xf1\x0c\x05\x67\x40\x6a\xe6\x0c\x81\x09\x64\x91\xaa\x41\xed\xc8\xa1\x59\x85\x33\x61\xa9\x86\x60\xa3\x13\x0b\xce\x50\x6b\x3c\x53\x1e\x0e\x67\xa7\x0c\x1d\x45\x1a\x0e\x6f\x71\x76\xd6\x0f\xee\xcd\x43\x27\x8f\x9d\x7c\xd3\xc9\xb7\x9d\x7c\xd7\xc9\xf7\x9d\x1c\xc9\xdf\x75\xf2\xc7\x46\x1e\xde\x74\xd2\x73\x7e\xe8\x39\x4f\x82\x7e\x15\x0c\xfb\x43\x27\x8f\x9d\xb4\xb2\x93\xc0\xd6\x22\x6c\x2d\x7c\x6b\xc1\x5b\xab\xd9\xd6\x2a\xb6\xb5\x7a\x6d\x54\x2d\x4f\x6e\xf8\x9e\x65\x62\x49\x9d\xed\x3c\x4f\x87\xd9\x45\x72\x23\x0b\x25\x92\x3a\x87\x0d\x43\x81\xe1\x5d\x27\x09\x67\x39\xf9\xcd\x61\xcc\xc0\xf5\x27\x32\x37\x18\xbe\xeb\x24\xe1\x1c\x3d\x1f\x63\x08\x81\x0b\x24\x92\x5b\x08\xe4\xfa\xe1\x20\x3c\xe4\xd1\xa7\x63\x1a\xdd\x38\xad\xd3\x87\x9a\x0e\x6a\xef\x62\xd9\xe7\xb1\x68\x9e\xa5\xc5\xc4\x4a\x40\xcb\x02\x41\x26\x4b\x6c\x4e\x19\xa6\x42\x10\x47\x4b\xf5\x68\x5b\x5e\x43\x6a\x65\xc6\x39\xbf\xc5\x39\x0f\x6c\xa3\x11\xae\x39\x03\xa5\xcd\x83\x19\x59\xf6\xe5\x88\xb8\xcd\x0c\x59\xed\x1d\x87\x76\x4f\xc8\x6a\x4c\x84\xbc\x11\x36\xdc\x2c\xec\x31\xd5\xc2\xfa\x45\xcc\xfe\x1b\x7d\x14\x9e\xe8\xc8\x3e\xe7\xa1\xd5\x3a\x0f\x4f\x45\x2f\xe0\x39\xe6\xd3\x0a\x99\x73\xe7\xc5\x8e\x91\x37\x1f\x66\xbd\x64\x5e\x1f\x09\xa1\x36\xb8\x65\x20\xfb\xcf\x9c\x87\x35\x98\xc8\x58\x48\xa5\x95\x99\x25\xb5\x1e\x46\x45\x0d\x03\xcb\x4f\x9b\xe0\xf0\xf6\x60\xd4\x4f\x34\x0b\xc6\xeb\x41\x28\xb4\xf0\xaa\x6a\xc3\x14\x3b\xaf\xd7\x04\xc4\x39\xe3\x1e\xc0\x1b\xcb\xcc\xd7\x12\xf3\x1e\xa3\xc1\x05\x17\x65\xac\xdf\x22\x2e\x7c\xac\x5f\xd4\x5a\xbc\x0a\xb8\xa8\x0d\x32\x2e\x80\x74\x10\xa2\xf5\x82\x90\x17\x0c\x21\x81\x91\xe7\x18\x93\xdc\x42\xf8\x9e\x6e\x01\x87\x7c\x6e\x5a\xd8\x94\x58\xa0\xca\x61\x5a\x48\x12\xe4\x78\x95\x4f\xd3\x0b\x5c\xcc\xea\x13\x2e\xd6\xd9\x0a\xb8\xd0\x82\x4f\x62\x78\xcb\x10\xd9\x72\x5e\xe4\xa1\x58\xdc\x8a\x8b\x3c\x06\x4b\xac\x54\x10\x49\x47\x96\xdd\xd2\xa6\xd4\xc2\x85\x16\xe0\xdb\x0c\xab\xcd\x1f\x59\x0c\xd3\xc4\x98\xd0\xda\x82\x56\xf6\x46\xeb\xb9\x02\x36\xb0\xd1\x6d\x83\x76\xab\x21\x9c\xc8\x59\x16\x4e\x24\xfb\xda\x0b\xda\x90\xc8\xad\x2c\x28\x65\x21\xb7\x00\x30\x4f\x2c\x40\xa4\x6e\x40\x21\x15\x66\x96\x81\x64\x16\x85\x1e\xd5\xb7\x9d\x24\x26\xf3\xe3\xc0\x6f\x80\x6a\x9e\xef\xc9\x23\xda\x14\xf9\x20\x61\xf9\xbc\x6e\x33\xda\x3c\x91\x1b\x74\x06\xf6\xcf\x93\x47\x9b\x2d\xda\x32\x94\xed\xda\x80\x6c\x75\x5b\xac\x41\xdb\xec\x47\xbb\x51\x1f\x0d\x0f\x34\x1a\x8d\x1f\xcc\xd6\x83\x50\x6d\xd8\x6c\x64\x39\x4c\x31\xd6\x10\xa9\x94\xad\xde\x52\xd7\x9e\xb8\xb6\xb4\xb5\x25\xfd\x4d\xe9\xf3\x39\xd8\x09\x98\x09\xb9\x87\xe1\xfb\x4e\xde\xe1\x6f\x67\x9e\x92\xbf\x45\x4b\x33\xfa\xac\x9c\xca\x5e\x3d\xe0\x59\x25\x72\xc3\x37\x24\x3d\xd0\x46\x78\x56\x29\x29\x92\xb4\xf9\x9e\x0d\x84\x62\xeb\xf5\x20\xc3\x5b\x3c\x03\x24\x3c\x17\x4f\xce\xe6\x10\x37\x3c\x57\xb5\xe2\x79\x57\x8e\xec\x08\x87\x4e\xa1\x53\x23\x39\x60\xe1\x44\xf2\xf1\xb5\x6d\x47\x0e\x36\x70\xa5\x41\x9c\x98\x64\x35\x03\x3a\x32\x4b\x48\x0c\x09\x9d\x45\x67\x83\x8e\x9e\x00\x48\x9c\x79\x16\x71\x29\x34\x77\x9d\x8b\x87\x71\x7c\xc7\x69\xa1\x3c\xd4\x74\x50\x7b\x17\xcb\x3e\x8f\x65\x25\x16\xdf\x16\x30\x29\x43\xf3\x69\xa5\xb4\x77\x66\x9d\xd1\x5a\xee\xe8\x00\x41\x03\x23\x84\x52\xf2\x25\x32\xa5\x3c\xde\xc7\x31\x1e\xb1\x8f\xba\xde\x29\x5c\x8d\x43\x4f\x37\x6e\xef\x23\xda\x17\x11\xa9\xc2\x41\x2e\xda\x5c\x54\xc6\x86\x99\x4d\x22\x17\x35\x39\xc5\xc2\xf5\xd7\x7e\x56\x5e\xf0\x71\x5d\x5f\xbe\xfe\xa3\xda\xf2\xf3\x2e\x5b\x9f\x58\xc4\x7d\x1b\x94\xcb\x90\x42\xc8\x86\x86\x8b\x01\x76\x75\x45\x17\xe3\x79\x8a\x99\x71\xa5\x68\x3b\x94\xd2\x60\x78\x8b\xae\x9b\x8a\x2e\x03\x19\xc7\xe8\x32\xd5\x2b\x47\x4d\x81\x59\xc6\xb0\xa0\x2b\x10\x9a\x24\x7f\xc6\x0b\x3a\xa9\x81\xac\xe0\x02\x14\x5a\xb3\x55\x61\x46\xb7\xa1\xdb\xf2\xa3\x34\xb6\x91\xe1\x2d\x7a\xf4\x0a\xbd\xd2\xe4\x32\x8b\x88\x5e\x9d\x41\x87\x82\xb4\x86\x7a\xb9\xb7\xf5\xf7\x17\xb7\x4d\x49\x8d\x70\xad\xbc\x0a\xb4\xd4\x79\x95\xcf\x2c\x6c\x60\x88\x6b\x65\x6c\x57\x58\x9e\x53\xd7\x41\xab\x94\x98\xc8\x6d\x2f\xb1\xb4\xd6\x21\x0b\xcd\x2d\x54\xb1\x18\xe4\x02\x8b\xe9\xb1\xbb\x8a\x46\x3b\x28\x33\xaf\xea\xf3\x20\xaf\x2a\xef\x72\x5d\xa1\x5d\x4c\x38\xf8\x98\xaf\x8d\x3b\x3b\x36\x16\x6f\xb1\xdb\x8e\xc9\x7c\x5f\xac\x5e\x98\xca\xd3\xe8\x55\xd5\x89\x86\xc4\xab\xca\xcf\x91\x57\xb5\xc7\xce\xf2\xba\xf7\xee\xa5\x6f\xb6\x97\x81\xd7\x60\xb9\x23\xa6\x3a\xd5\x6c\xcf\xe8\xb5\x26\x67\xd1\x9b\x37\x03\x7a\xf3\xc0\xc2\xc0\xb8\xce\xc4\x1e\x59\x1c\x6a\x21\xd7\x7b\xde\xd0\xe3\xe5\x4d\xe1\xcb\xa7\x99\x58\x7b\x51\x5c\xbc\x04\x97\x05\x92\xca\x06\xbd\xb9\x92\x39\xce\x30\xa1\x87\xc1\x00\xf9\x92\x91\x2b\x5b\x93\x07\x63\x59\x91\xfe\x68\xd7\xc2\x1e\x9e\x92\xca\xd4\x59\x34\x2c\x90\x67\x16\x80\x7e\x4a\xe8\xa7\x0b\x7a\xde\x34\xfd\x12\x0d\xd5\xcb\x86\x91\xdf\x49\x7a\x7b\x01\x43\xbb\x41\x27\x64\x6c\xa8\xec\xd1\x9f\xdb\xed\xb7\x3f\x93\x31\xe4\xcf\x5c\xcb\x73\x49\xbc\x2c\x79\x87\xde\x0d\xdf\x91\x50\xe6\xb7\x42\x38\x2e\xcb\xc2\x44\x0f\x86\x81\x76\x6c\x26\x32\x09\xdc\xa0\x43\x25\xe0\xee\x11\x32\x71\x4c\x78\x23\x72\x18\xa7\xb9\x34\xaa\xaf\x9a\x26\x1d\x73\x43\x2d\x20\x66\x19\x1e\x44\xde\x62\x3f\x70\xd9\x8d\xde\x12\x3e\x1c\x09\x1f\x45\xde\x85\x8d\xd3\xfc\xa6\x91\x7c\x10\xc9\x78\x5c\xde\x3c\x35\xb2\xb4\xa0\xa5\xc7\xc9\xad\x0a\xba\x13\x33\xa5\x37\x8d\xe4\x83\x48\x3e\xe6\x88\x23\xb5\x84\xae\xcf\x9d\xb8\xa9\xc1\xad\x29\xc4\x7b\x5b\xdc\x74\x57\x61\x37\x1d\xad\x71\x53\x4f\x2e\x69\x42\xcf\x2f\xe4\x56\x87\x6c\xd6\x1b\xb9\x65\x2e\x5a\xcf\xfe\xd0\x9e\x6e\xea\xad\x3c\x56\x7b\x89\xac\x84\x7c\x64\x74\x31\x1c\xe9\xd8\xb9\xbd\x1b\x66\x78\x0a\x3c\xc8\x73\x56\xe6\x4d\x23\x89\x4b\x5a\x7a\x91\x8b\x04\xf0\xdd\x88\x77\x83\x0d\xb6\x0a\x6e\x04\xb4\x6e\x7b\x37\xf0\x67\x16\x6e\xf0\x8e\xd7\x9f\x46\x86\x77\x4c\xa3\x01\x9e\x77\x61\xe4\x8c\x62\xe2\x18\x5c\x47\x5e\x1c\xbd\x6b\x56\xb4\x77\x43\x36\x73\xe6\x62\x32\xa4\xc8\x35\x2b\x03\xd7\xb4\xe8\x98\x85\x90\x0d\x47\xa4\x82\x5e\x82\x7d\x5a\xd9\xb7\xdd\xdd\x78\x07\x9b\xa2\xc2\xa6\x01\xbd\xf3\xaa\x8e\x6c\xef\x30\x15\xc2\xd5\xa5\x7d\xc6\xb7\x8f\x47\x64\x03\xb9\xeb\x94\xb6\xa1\x78\xc7\xe7\x02\xef\x24\xdd\x06\x9a\x49\x70\xb4\x82\x50\xd5\xb8\x3e\x71\x23\x07\xd8\x5f\x63\xdd\xbd\xb4\xba\xbd\x9f\xf2\x3c\x12\x0c\xb4\xf2\x6c\xed\xaa\xd2\x6f\xed\x96\xcd\xb3\x5d\xc5\xb2\x2d\x3b\x01\xe5\x14\x27\x67\x37\xfe\xe8\xa3\xdd\xbd\xf5\xd3\x9c\x60\xd9\x31\x40\x61\xe3\x31\x40\xc5\x00\x3b\x5c\x45\x0e\x6f\x1b\x26\xc2\x82\xc1\x61\x70\xe4\xe9\x86\x3f\xb2\xa0\x00\xd7\x04\xfb\x93\xf1\xc2\x92\x3d\xe1\x92\x1e\x1b\x70\x28\x11\xd5\xb1\xfb\x7c\xd3\x80\xf5\x39\xfa\x6f\x1a\x74\xfd\xdb\x06\xac\xf3\xc4\x09\x64\x97\x7c\xd3\x80\xbd\x5d\x9c\xbf\x6d\xc0\x7a\x9c\x87\x6c\x18\x39\x7a\x1b\x0d\x21\x74\xfc\x11\xc6\x2f\x2c\x02\xef\xde\x18\x22\x86\x28\xaf\xc1\x42\xb4\xe4\x0a\x0b\xa1\xd6\x35\xb8\x22\x0f\x30\x89\x22\x92\x37\x89\x90\x6a\x86\x60\x30\xac\x5e\xb6\x1c\x22\xb4\xd3\x44\x33\x6a\x8c\xce\x0c\x74\xea\x89\x2e\x92\x9b\x59\x58\x91\xd4\xfb\x51\xea\x19\x7b\x3d\x63\x7b\x4b\x13\x03\xc6\x00\xe4\x76\x16\x0a\x9b\x3d\x12\xd3\xa0\xa3\x0b\x5e\x88\x4f\x84\xc6\x4e\x13\x21\x3d\x52\x31\x0d\xa5\x66\x8c\x89\x5d\x64\x31\x8a\xe4\xf2\x78\x52\x35\xa0\xf2\xda\xbc\x6b\x48\x1e\xb5\x0c\x70\xd1\x6e\x2d\x76\x03\x94\xed\x3e\xe6\xba\x50\xdd\x73\x5d\xf8\xea\x29\xae\x48\xcf\x69\x5c\xeb\xc4\xc2\x8a\x74\x0d\x80\xb0\xb0\x58\x44\x42\x83\x03\x2b\xc6\x8d\xcd\x90\xa4\x34\xb9\xe1\x2d\x26\xc5\x1f\x57\xa0\x6c\x67\x2c\x07\x63\x4b\xb1\x1e\x13\xdf\x0c\x26\xad\xc8\x0d\xef\x58\xf6\xbb\xf1\x74\xbc\x3f\x4c\xfc\x02\xf1\x76\xa5\x49\x94\x3f\x36\x92\xb7\x7c\xa9\xbf\xe5\x4b\x7a\xb1\x2c\x98\xc7\x9c\x31\x69\x7e\xc3\x97\x20\x54\xbb\x7a\x4c\x20\x2f\x56\x1a\x52\x34\xc8\x9e\xce\x76\x0d\xa9\x0a\x90\x4b\x0c\xca\x61\x82\x1a\x07\x6a\xc8\xf9\x78\x4b\x95\xce\xf2\xb2\x24\x9d\xe1\x69\xb5\x1b\xe1\x45\x79\xda\x40\x0f\x46\x79\x9e\xcb\xa2\x12\xf9\xf1\x55\xb0\x00\xf9\x3b\x4c\x2e\x22\x2f\x6d\xc9\xad\xb3\x0d\x98\xf8\x02\x9f\x25\x45\x88\xb6\xcc\x71\x92\x8f\xa5\xe8\x99\x16\x52\xf6\xf6\xf9\xd4\x90\x5e\x7e\x58\xd5\x3b\x28\x16\x11\x72\xa7\x4a\x8c\x47\x8b\x08\xbf\x12\x48\x09\x72\xa6\x64\x19\x53\x56\xb6\x88\x1c\xa0\xe3\x63\x23\x09\xbb\xd9\xdb\x30\x38\x62\x05\xf2\x46\x71\x6d\xa0\x80\x88\x3c\xf5\x64\xc2\xb5\x69\xf6\xec\x15\xfd\xb1\xbe\x91\x81\x36\x54\xeb\x81\x59\xdc\x20\xf3\xc0\xe6\xa8\xf3\x5a\xe8\x69\xbb\xd1\x5b\xd2\xee\xc1\xc9\xf9\x63\x5d\x22\x33\x0b\xa1\x59\x35\xf0\xc8\x1f\xd7\x92\x88\x99\xdf\x0c\x27\xb1\xcc\x05\x2c\xa6\x5d\xa6\xc1\x6e\xf0\x09\x0b\x3e\x8d\x57\x72\x05\x9f\x68\xa6\x3c\xc9\x4c\x79\x6a\xc7\xb9\xa7\xe3\x76\xf1\x89\x47\xe5\xa9\x8d\xca\xd3\x13\x8f\x98\x00\xe9\xb4\xa8\x92\x18\xb4\x40\x12\x28\x3b\x3e\xad\xf8\xb4\x2a\xa3\x97\x33\xa1\xbc\x5d\xee\x84\x52\xae\xa4\xf2\x47\x6f\xb4\xab\xc9\x57\xb9\x74\x28\xa1\x0d\x24\xab\x6a\x23\x66\x99\xd2\xb9\x4f\xe9\xac\xe3\x84\x19\xf8\xa6\x3e\x83\xa6\xe3\xe3\xdd\x37\x70\xe4\xbe\x61\x31\x24\x02\xb3\x93\xe4\x0f\xe2\x32\x88\x1c\xd2\xa3\x90\xd2\x40\x62\xf2\x9b\xd4\x86\xad\xeb\x49\xb3\x1b\x07\x7b\x45\x32\x90\x53\x2c\x3c\x36\x5b\x3c\x43\x48\x93\xbd\x60\x86\x04\x9c\xa6\x7d\x2d\x07\x7c\x15\x96\x41\x66\x7e\x86\x52\x23\xd7\xa0\xf2\x77\x78\xf2\x31\xde\xf1\x49\x9e\xc7\xec\xc9\x08\xcd\x71\xdc\x14\x81\xe6\x05\xaf\x21\xb5\xba\xb1\x77\xc4\x26\x7a\x12\x08\x6d\x6d\x20\xfe\x33\xed\xeb\x39\xca\x3d\x7a\x43\x49\x5b\xd5\xd8\x80\x75\xb9\xf0\xc9\x6d\x45\xce\xc7\x92\x9c\x39\x5d\x55\x2c\x84\x56\x68\x40\xcb\x4b\xe6\x1e\x96\x11\xce\x2b\xe6\x35\x90\xe3\xf9\x95\xb7\x49\x8a\x15\xa4\x62\xb6\xd4\x7c\x52\xf3\x29\x0a\x8b\x9a\x80\xbf\x6d\x93\x33\x17\x41\xb1\x58\xd4\x86\x7c\xc8\x21\x61\x32\x94\xd5\xd5\xc2\x0a\xb5\xa8\x68\x2c\x5a\xf1\xe7\x7f\xf2\x0d\xe0\xf1\x25\xa0\x56\xfc\x89\x5a\xd1\x7e\xe0\x35\xa7\xe8\x48\x8e\x2f\x56\x18\x13\x03\x6f\x3f\x4c\x2a\x41\x46\xb1\x90\x58\x72\x15\x0f\x36\xf0\x11\xa2\x68\xda\x32\x59\xb6\xe0\xc6\x5a\xb0\xe1\x16\x0b\x58\x2c\x80\xed\xb2\xac\xd0\xc1\x82\x7a\xac\x40\x82\x46\x72\x1e\xf9\x9b\x45\x46\xea\x03\xc8\x05\x2a\x36\xd7\x5f\x94\x15\x2c\x53\x56\x41\x5b\x85\x65\x41\xda\x44\xca\x02\x8e\x05\xcb\x9d\x9f\x81\x4e\x28\x1b\x3b\x87\x8f\x3e\xc2\x20\x4f\x3e\xd1\x13\x91\x3a\x5a\xbf\x3a\x91\x9c\xc8\xaf\x7c\x0d\xd6\xc9\xf0\x0e\x8b\x5c\xbe\x14\x07\x90\xb0\xc8\x84\x10\x18\xcc\x63\x67\x09\x8b\x8f\xb1\x2e\x58\x82\x4a\x25\xa9\x80\x25\x62\xa1\x8e\xa4\x39\x5e\x12\xa8\x4c\xe7\xf1\x92\xec\xb9\xf5\x58\x67\x54\xaa\x70\xf2\xa4\x93\xd5\x70\x61\x52\x51\xbe\x9d\x29\x6d\xc1\x28\xf4\x64\x14\x7e\x34\x8a\x3c\x1b\xa5\x3d\x1c\x85\xc6\xbf\x62\xa9\x83\x66\xb9\x68\x91\xa6\xc1\x40\x3d\xc6\x6f\xe3\x59\x96\x2b\x13\x36\x60\x4a\x1d\x52\x8e\x3e\x12\xe1\x1e\xaf\x43\x59\xe2\xce\xe8\x93\x63\x5c\x47\x4b\x39\x29\x7d\x46\x7e\x6f\x3d\x5e\x3b\x52\xef\x54\xbe\xd9\x2c\x55\x5b\x16\xd4\x9c\xaa\xe3\x45\x64\x5b\x26\x84\x4f\xf9\x20\x74\xda\x14\x9e\x1a\xd2\xfc\x23\x72\xf6\x1d\x25\xa7\x9e\x7e\xcd\x5b\x03\xe8\xc8\x11\x0c\x50\x63\x80\x52\x41\xda\x2d\x57\x85\x2f\x85\x79\x3b\xa3\x52\x66\xfe\x1e\xd5\x52\xe1\xbf\x45\x4b\xdc\x53\xff\x78\xea\x93\xb4\xc8\x60\x34\xc2\x39\xa6\x45\xc6\xbb\x11\xf1\xe3\x0d\xa9\x54\x99\xb2\x0c\xec\x2f\x05\xb5\x95\x9c\x88\xf4\x21\x55\xa9\x70\x84\xa6\xcb\x70\xf2\xa9\xa1\xd4\x1a\xb5\x16\x20\xbf\x4d\x65\xea\xcf\x1d\xec\x88\x65\xc5\xb2\x72\xe1\x24\xa9\x77\x29\x01\x19\x04\x24\x94\xc8\xdc\xc0\x76\xfc\x70\x10\xc0\xb2\x86\xa9\x7d\x70\xbb\x72\xe5\xd6\xbc\x49\xdf\xad\x79\xe3\xdc\x68\xf5\x24\x41\x3d\xbf\xd1\x92\x55\xb6\x2b\x39\xb6\xa1\x84\x70\xc2\xed\x3a\x70\x4d\x04\xa9\x31\xc2\x24\xc5\x30\x43\xc3\x7e\x86\x20\x65\x01\x65\x0e\x42\x75\x60\xca\xd7\xf9\x47\x0c\xb9\xc2\x6f\xea\x71\x37\xcd\xca\x76\xe3\x77\xd7\x74\x5d\xad\x8d\xfb\x7b\xe5\xbe\xf4\x78\x1f\x10\x0f\x83\x82\xb4\x6e\xfa\x34\xed\x3e\xa8\x6f\x68\xa2\x95\x75\xec\xd8\x9a\x7c\x11\xd9\x35\x89\xc7\xb3\x8e\x81\x06\x69\xbb\xf2\x1c\xdb\xae\xed\x75\x59\xd9\xae\xfd\x25\x46\xa3\x6c\xfc\x94\xed\xda\xee\xe6\x0f\x26\xb9\xf2\x2d\x3c\x93\xad\x85\x3a\xcd\x32\xb6\xa6\xb5\x45\x67\xbb\xf6\x4b\xb9\x1b\x95\xf2\xf9\x66\x88\x90\x4e\x15\x0d\x25\xc5\x51\xa3\xd8\x82\xe2\x11\x14\x7b\xad\xba\xdd\xcf\xb4\x72\xcb\xa8\xc3\x3a\x4a\x25\xbb\x15\x49\xf4\x88\x4e\xac\x93\xd4\x51\xe2\x8b\x6d\x42\x44\xca\x3f\xc6\xa9\x5b\x12\x65\xbb\x16\x99\x44\xb4\xcc\xbf\xed\x84\xdb\x43\xbb\xb1\x80\x04\xd4\x36\x15\x6b\xac\xb4\xc5\xed\x58\x76\x8a\xb8\xcb\xb7\x63\x65\xe7\x05\x67\x97\xe7\x7e\xb7\xee\x8c\x65\xe7\x19\xd4\xb0\x62\xd9\xe3\x41\x52\xa6\x3a\xef\xd2\xc4\xbd\x37\x66\x97\xc5\x76\xaf\x4d\x95\x07\x52\x7e\xf3\x72\x65\x62\x49\xca\x7a\x21\x48\x75\xbb\x86\xaa\x2e\x58\xae\xe5\xb8\xc1\x24\x4e\xab\xcd\xb5\xd0\x39\xa5\x7c\xc8\x11\x68\x0b\xae\x0a\xa9\x55\x55\x8d\x0f\x24\x1e\x49\x0c\x91\xfc\x47\xc3\xc2\x8a\x2c\x0d\x12\x21\xfb\x39\x20\xc9\x77\x76\x0d\x87\xb7\xc4\xf8\x59\xac\x6a\x5c\x59\x38\x91\xaa\x41\xed\x08\xc8\xff\x3d\x7f\x78\xc8\x84\x8d\x32\x22\xb4\x14\xf0\x87\xf1\xd4\xbb\x24\x82\x63\xe0\xcb\x3f\x22\xa5\x1a\xac\x50\xb3\xd2\x4b\xcc\x56\x23\xad\x82\x83\xad\x8c\x19\x2b\xd5\x35\x8e\xe4\x2c\x4a\xb7\xf5\x37\x34\x82\x65\x47\x79\x1f\xcf\xd2\x36\xf8\xd0\x11\xb0\xc6\xf6\xcd\x94\x8c\x6b\xcd\x2a\x14\xa9\x72\x63\xd4\x3f\x44\xc9\xb8\xac\x19\x54\xa5\x8d\x83\x09\xad\x5f\x42\x60\x46\xfe\x9a\xbd\xe6\x30\x0e\xfc\x1d\x1f\x33\x7e\x24\xaa\xfc\x90\x82\x36\xea\x9a\xd7\xa0\x25\xf9\x1a\xb4\x24\x27\x42\xc9\x4b\xfb\x3c\x99\x97\xeb\x5a\x78\xe3\xa8\x85\x6f\x39\x05\x06\xb8\x60\x2d\xcd\x62\x25\xc2\x5d\x57\x72\x8b\x22\xc9\x9a\x05\x50\xcb\x1a\x68\xa0\xa5\x57\xc5\x02\xaa\x6b\xe5\x0f\x45\x08\x77\x45\x1d\xb5\xb6\xdf\x43\xf1\x4f\x0e\x54\x06\x3a\x35\xd6\x3d\x92\xa3\x93\xbd\xc0\x30\x4c\x89\x6c\xd7\x66\x12\x1d\x9e\xed\xc7\xb0\x03\x2d\x3b\xdd\xf3\x78\x91\xf9\xcc\xd7\xa6\x68\xc3\x47\x19\x88\x6f\x79\xe9\x7d\xbc\xeb\xba\xcf\xc1\x7d\xa2\x02\x74\xca\x99\xe1\x79\xf9\x49\xdb\x97\xd1\x9e\x3e\x91\xb4\x59\xa4\x1f\xc5\x3d\x36\xae\xfb\x4c\xcf\xc5\x1f\xf1\xae\x58\xaf\x09\xf9\xa5\x33\x89\x38\xe1\x8a\xdc\xd1\x24\xf8\xb7\xbe\x44\xb4\x37\xd8\xbe\x65\x5f\x0b\xae\xfc\x5b\x04\x90\xab\x18\x1a\x32\xda\xf7\xfc\x99\x3f\x0f\x0d\x74\xf4\x93\x7d\x70\x53\x79\x54\xc5\x6a\x22\xf2\x81\xd3\xa6\xe8\xb0\x1f\x66\xe0\x24\x36\x4f\x0d\x06\x65\x4c\xa7\x5a\x6e\x37\xbb\x26\xaf\x49\xbb\x26\x8f\x6d\xd3\x8e\xa5\xa1\xeb\x36\x1f\x94\xd6\xcd\xc6\xe5\xe3\xb8\xa6\x3c\xcb\x3c\x3e\xd3\xda\xb1\xaa\x69\xd4\x39\x8d\x1e\x85\xf2\x95\x13\xa1\x97\x36\xf3\xd9\x74\x53\xb9\x44\x6e\x63\x39\x22\x0a\x1b\xf6\x7b\xfe\x48\xca\x4e\xe1\x1a\xfa\xcf\x30\x86\x09\x36\xc3\xc4\x9f\xd3\x62\x99\x25\x91\x94\x18\xf4\x7d\x17\x80\x96\x72\x05\x25\x5c\x6a\x20\x28\x3e\x6c\x86\x6f\xa0\x7b\x65\x20\xdb\x40\xb5\x86\x5c\x58\x58\x91\x11\xfb\x2f\x96\x37\x0b\x3b\x8b\xf6\x39\xed\x66\x27\xdc\x76\x57\x70\xef\x1f\x74\xee\x30\x1e\x5d\xbd\xc3\x58\xe4\x67\x23\x23\xcd\x02\x5a\xcd\xf9\xb5\x32\x91\xc7\x4e\xee\xf0\x0d\x93\xfe\xa2\xf2\x8e\x93\xf1\x7c\xa7\xaa\x67\xca\xb3\xc0\x74\x50\x7b\x97\x85\x7d\x9e\x85\xbd\xcf\xc2\xbe\xc8\xc2\x4a\x16\x2b\xad\x9c\xf2\x83\x95\x21\xbd\xfc\xc5\xcb\xa0\x0f\x56\x3a\x5b\xa0\xe2\xbe\xe0\xce\x87\xaf\x7d\xb1\x28\x6f\xbe\xf6\xc5\x3a\x16\x80\xbb\x75\x9a\x96\x18\xc2\x78\x89\x01\x77\xcb\xce\xb0\x88\x22\x77\x02\xb8\x80\xc6\x9d\x0f\x47\x63\xc7\xe1\x6d\x63\x4f\x78\x91\xcb\x86\x4b\xbf\x6c\xb8\xf0\x65\x09\x4b\xd2\x2c\x5e\xec\xf0\x3d\x5e\xbc\xa3\x13\xab\x00\x10\xd2\x20\x5c\x52\x24\x59\x16\x72\x4c\xc0\x89\x74\x78\xa9\x83\xb5\x85\xa0\x32\x28\x32\x11\x09\x62\x30\x78\xa9\xa3\x0d\xac\xf3\x57\xef\x02\xcf\xd8\xf0\xee\x8e\x9b\xc7\x3b\x25\xa9\x23\x21\x5f\x07\x83\xa8\xa1\x0a\x72\xed\x2b\x7f\x87\x7d\xe1\xc3\xc4\xa5\xf2\xa7\x71\x1c\x7a\x7c\x24\x77\xa9\x33\x80\xc8\x01\xf8\x42\xa5\x71\xde\x83\x85\x7b\x75\x06\x4b\x8b\x8c\xa8\xa9\x63\x8f\xee\x8a\x48\x0e\x59\xd4\x5a\x1a\x90\x99\x78\xa9\x8b\x94\xb8\x54\x75\x75\x91\xf2\xa0\x51\xbb\x54\xdb\x6a\xd2\x0c\xc7\x4e\xb8\xb9\x8d\x72\x6b\x0f\x43\xfa\x52\xed\x96\x86\x87\x86\x1c\xb4\x49\x4a\xde\xab\x04\x68\x3b\xbb\x54\x31\x88\x1a\x72\x8e\xc7\xa9\xb6\xd3\x49\xda\xd1\x0c\x6b\x75\xa7\xb4\x7e\xe4\x57\x86\x1d\x8f\xee\x10\x8d\xc2\xc3\x38\x4c\x20\xe8\x26\x46\xa9\x4c\xb3\xdb\x55\x8b\x44\x4a\x86\x56\x5a\xd2\x34\x4b\x18\x44\x8f\x3c\x23\xba\x01\x7a\x30\xa9\xe8\x61\xda\xab\x23\x32\xa9\xb7\xdc\x32\x57\xb0\x99\x79\x9d\x70\x73\x1b\x95\x6c\x84\xb7\x66\xa5\x22\xd5\x4e\x45\xaa\x9d\x0a\xad\xba\x07\xe1\xd4\x99\xf7\x8e\x4b\xcd\x9a\x45\xe3\xcb\x42\xd0\x0b\x97\xc6\x52\xeb\x46\x68\x64\xea\xc4\xbb\x46\x5a\xcd\xa5\x0f\x84\xf0\x2c\xca\xd0\x6a\x43\x4b\xfc\xa5\x96\x69\xe0\xe7\x84\xb1\x5a\x62\xab\xc7\x4b\x25\xab\xf2\xc2\x76\xc6\x1b\xc2\xd6\xcc\x7a\xb4\xb2\xdb\x64\x97\xca\xa6\x14\x5e\x2f\x78\xbd\xd0\x3a\x3a\x0c\x23\x6d\x15\x67\x90\x6f\xdc\x9a\xa7\xca\xa0\x9e\x79\x8c\x2a\x3f\xd3\x4d\xac\xcf\xf5\x1c\xe5\xda\xe2\xde\xf3\x30\x51\xee\x3d\xad\xca\x39\xee\xcf\xbd\x78\x6f\x2e\xcf\xfc\xe4\xe3\x91\x67\x5e\x49\x7f\x9c\x34\xe9\xf1\x53\x9e\x5a\xa5\x72\xf5\x2f\x3c\x9b\xd5\xf1\xd2\x37\xbd\x6c\x7c\xfe\xa8\xf5\xf9\x65\xf3\xc9\xe3\x79\xf6\x59\xab\xf4\x91\xc7\xcb\x3a\x64\x1d\x43\x00\x5d\xc1\x3c\xf7\xfe\xa8\xe7\xf2\xa7\xea\x9a\x3f\xae\xea\x27\x7c\x0e\x13\x8a\x7d\x3f\xa8\x34\x14\xfc\x60\xc3\xc8\x62\x70\x6e\x12\x92\x98\x24\x72\xcd\x33\x0d\xa2\x71\x48\x1d\x74\x1d\xbe\x23\x5c\x74\x47\x23\xc4\x96\x8e\x8d\x94\x25\x36\xe2\x13\x93\x51\x15\x60\xa2\xe3\x85\x91\x8e\xc8\x84\x20\x1f\x90\x7e\xe0\x5b\x19\x26\x64\x40\x12\xda\xcc\xf0\x5b\xb4\xa2\x53\x7d\x69\xbd\x48\xf8\xa1\xb2\x63\x26\xb9\xd0\x01\x91\x31\x39\x2b\x64\xf5\x8c\x35\xb6\x4a\x6f\x2a\x5f\x99\xf0\xbe\xfe\xdd\xed\x47\x9b\x77\x7f\x71\x26\xac\x7e\x04\xf9\x63\x33\xe3\x2f\x7f\xf8\xf2\xd7\x9f\x3e\xff\xe5\xcd\x97\x7f\xfc\xf5\x0f\x9f\x9f\x4e\x5f\x09\xfb\xe2\x27\x3c\x38\xb1\x2f\x3e\xff\x05\xfe\xf9\x57\x8e\xdb\x23\xfc\x62\x7f\xfd\xe9\x2e\xf3\x72\xf5\x63\x74\x5f\x45\xbe\xd6\x8c\x94\xf9\x97\xf8\xe3\x8f\xf8\x8f\x3f\xe2\x3f\xfd\x88\xff\x88\xff\x84\xff\x09\xff\xee\xc7\xff\x75\xe4\xd3\xe9\xf7\x78\x3a\x51\x59\xff\x81\x5f\xe3\xdf\xe1\x5f\xf1\x47\xfc\xeb\xcb\xf8\x63\x56\xfa\x0c\xb5\xfc\xf0\xea\xf5\x2f\xa7\xd3\x9f\x4f\xa7\xbf\x9c\x4e\x9f\x9f\x4e\x5f\x9c\x4e\xbf\x9c\x4e\xbf\xfe\x7a\xfc\x19\xa1\xbb\x3f\x8e\xf3\xea\xf5\xff\xff\xe5\x4f\xa7\x93\xf9\xf3\xc3\x3f\x3c\xfe\x85\xda\xd7\xf9\x17\x3f\xfd\x32\x4f\xf0\xab\xfe\xe9\xf5\x27\x13\x7d\xfe\xf8\x70\xc1\x87\xef\xff\x05\x1f\xbe\xff\x37\x7c\xf7\x2f\xf8\xee\xdf\xbe\xf8\x74\xc4\x2f\x7f\xfa\xbc\xea\xfe\xbb\xeb\x9d\x7f\x6e\xfd\xc4\xbf\xbd\xbe\x62\x9d\xbf\xf8\xea\xcf\x6f\xfe\xe1\x9b\xc7\xbf\x7c\x3a\xe9\x2f\x5f\xfe\xf5\xd7\x56\xb7\x6f\xff\x52\x3e\x51\xfb\x17\x7f\x42\xe8\xcf\x0f\x9f\xce\xeb\xe5\xdf\x35\xfa\xc4\xdf\x33\xfa\xe8\xef\x18\xdd\xfe\x7e\xd1\x31\x39\xfc\xf3\xdf\xed\xf6\x5c\xbe\xfe\xfa\xeb\x9f\x5e\x66\xf4\xbb\xbf\xf1\x37\x97\x6a\x34\x54\xed\xcf\xff\xfb\xbf\xff\x97\x7f\xc7\x3f\xfd\xe9\x4f\xf8\xf3\xbf\xfe\xe9\xbf\xfd\xf3\x17\x3f\xfc\xf4\xfa\x6f\x17\x77\x3a\xfd\xfe\xa3\xbf\xf1\x74\xfa\xfd\xd7\xff\xf7\x4a\xfc\x8f\xd3\xa9\xfc\xfe\x13\xa5\xfe\x1f\x34\xf2\x7f\x06\x00\x00\xff\xff\x59\x2d\x62\xda\x1b\x4c\x00\x00" func runtimeSyntaxStataYamlBytes() ([]byte, error) { @@ -3488,6 +5794,26 @@ func runtimeSyntaxStataYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxSwiftHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x2e\xcf\x4c\x2b\xe1\x8a\xd1\x03\xd3\x2a\x5c\x5c\x80\x00\x00\x00\xff\xff\xd0\x4d\x97\xd4\x10\x00\x00\x00" + +func runtimeSyntaxSwiftHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxSwiftHdr, + "runtime/syntax/swift.hdr", + ) +} + +func runtimeSyntaxSwiftHdr() (*asset, error) { + bytes, err := runtimeSyntaxSwiftHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/swift.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxSwiftYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x37\x79\x53\x1b\xcb\xf1\xff\xf3\x29\xd6\xf8\xf7\x4b\x00\xc7\xe2\x1d\x29\x57\xb2\x39\x1c\x10\x90\x52\x85\xc3\x65\xc0\x76\x85\xe5\xa9\x46\x33\xbd\x52\xdb\xb3\x33\xe3\x39\x10\x72\x3a\xdf\x3d\xd5\xb3\xbb\x20\x09\x30\xa9\xd4\x53\x95\x76\x76\x7a\xfa\x3e\xa6\x7b\x6b\xd4\x10\x17\x0e\xca\x22\xcc\xb1\x8e\x1b\x1b\x0a\x22\xc8\x58\x6e\x14\x45\x51\xf0\xa1\x11\x0d\x94\xc5\x66\x55\x0d\x32\xc2\xff\x6d\x6e\x6c\xf8\xa4\x21\x94\x1b\x45\xc6\x79\x59\xbc\x13\x31\x82\x37\x21\x6f\x5f\x17\x2d\xb7\x6a\xb2\x35\xde\xae\x26\x19\xd6\xe1\x9d\x39\xf0\x22\x5a\xdf\x23\x86\x45\x33\xb1\x7a\x60\x3b\x70\x59\x6c\x5d\x0d\xca\x3f\xfd\xee\xd5\x0e\xfd\xe5\xc5\xdb\xaa\xfa\xff\x6b\xfa\x33\xfd\x95\x76\xe9\x35\xfd\x66\x7b\x99\xcf\x01\x48\x2d\xbc\x88\x68\x4d\xf1\x0f\x58\xcc\xad\x57\x77\x2c\xa3\x88\xd0\x80\x89\x03\x75\x8f\x94\x95\x11\x21\x58\x89\x22\x82\x62\xfd\x48\x6a\x11\x02\x29\x40\x83\x91\xc0\xa4\x86\xe0\x36\x82\x09\x68\x0d\xb1\xd5\xce\xe3\x8d\x88\x40\x75\x32\x92\xb0\x71\xd6\x47\x62\xdc\xde\xa4\xef\x89\x42\x63\x13\x63\xb3\x53\x84\x26\x0d\x91\xac\x03\x43\xbd\xa1\xd4\x33\x77\xde\x46\x2b\xad\x26\x97\x26\x1a\x25\x31\xcb\xbc\xf8\x24\x23\x85\x34\x09\xd2\xa3\x8b\xc4\x1a\x0b\x8d\x22\xd0\x8d\xf0\x6b\x4e\x3d\xef\xd5\x08\x4f\xfa\x22\x2b\x35\xf1\x20\xbe\x90\x14\x01\x48\x5a\x13\xd1\x24\x20\x05\xb5\x48\x3a\xf2\x0a\x9e\x94\x25\xd0\x01\xa8\x16\x5a\xc7\x99\xb7\x69\x3a\xa3\xda\x7a\x9a\x26\xe1\xd5\x23\x76\xb7\xb6\xd6\xec\x96\x9a\x3c\x38\x10\x91\x3c\xc4\xe4\x0d\x85\x39\x46\x39\xa3\xf9\x0c\x3c\xd0\x7c\x86\x1a\xd6\xb4\xfe\xd2\xaa\x3a\xf0\x10\xc0\xdf\x80\x7a\xe0\xd3\xfe\x60\x25\x76\x78\x83\x71\xc1\xea\xdf\x80\x41\x30\x12\x48\x2d\x8c\x68\x50\x92\x42\x75\x0e\x91\x6a\x64\x87\x4f\x81\xbd\x5f\xe3\x2d\xa1\x51\xe8\x41\x46\xd2\xe2\xdb\x82\x34\xd4\x91\x9a\xc4\x4e\x36\xd3\xc7\x02\xb9\x22\xd4\x58\x03\x64\xac\xe9\x09\xc8\xde\x80\xf7\xa8\x80\x9c\x0d\x91\xb9\x3b\x0f\x12\x54\xd6\xc3\x79\x60\xc8\xbb\x3e\xa0\x1e\xbe\x26\xf4\xf0\x98\xdb\x56\xa5\x78\x9c\xce\x22\x05\x88\x74\xc1\x69\x99\x8c\x9d\x1b\x50\x34\xe7\x60\xcd\x51\xeb\x73\x88\x6b\xae\x3b\xbc\x75\x1e\x02\x27\x6a\x21\x8c\xca\xd5\xf6\xa0\xf2\x44\xa0\x3d\xb3\x20\x29\x38\x0a\x18\x38\x2c\x33\x6f\xe7\x81\x42\x72\xe0\x29\x80\xae\x29\x43\xa8\x83\x47\xbf\x58\x11\xb3\xac\xef\x24\xa1\x8e\x63\xec\xca\x68\x12\x48\xa8\x1b\xc1\x46\x0b\x8d\x53\x63\xeb\x7e\xfd\x20\x74\x02\x12\x66\xf1\x77\x30\x5d\xa2\x8b\x10\xc0\xc7\x6e\x41\x6b\x8e\x04\xea\xe4\x81\x26\x1e\xd5\x14\x8e\xbc\x6d\xce\x26\x9f\x41\x46\xbc\x81\xe1\x63\xae\x5a\x11\xfd\x18\xd1\xa5\x91\xd6\x28\x64\xde\x42\x77\x6c\x2f\xec\xfd\xf9\x23\xa0\x55\x12\xae\x05\x81\x26\x3c\x2b\x5d\xda\x64\x22\xe5\xe7\xa1\x6e\x0b\xae\xdd\x1d\x83\x50\x68\xa6\xff\x04\x6f\xf9\x42\x99\xa4\xe9\x3b\x8f\x26\x2e\xbd\x6a\x43\x0a\x43\xcc\x3e\x53\xde\xba\x23\xf4\x21\xe6\xb7\x63\xc1\x2f\xa9\x71\x04\x46\x5a\x05\xfb\x18\xc3\x5e\xf8\xc8\x45\xfc\xac\x42\x7c\x69\xb1\x9b\x81\xe0\x6b\x12\x9a\x6a\x11\x85\x3e\xf4\xde\x7a\xbe\xc0\x22\xf0\x62\x14\x17\xc3\x7e\xf6\x81\xba\x77\x41\x4e\xb5\x29\xc4\x0f\xe2\x18\x43\xcc\x55\x22\x21\x10\x9a\x2e\x4c\xe7\xd6\x3f\x7a\xd1\xad\xc8\xc7\xd0\xf1\x5d\xf1\xf7\x1d\xf4\x03\xf8\x89\x88\xd8\xac\x9d\x5e\x1a\xfc\x9a\x40\x2f\xde\xf3\x95\xc3\xa5\xa3\x1e\x05\x9e\x5a\x73\x36\xf9\xfc\x7c\x4e\x7c\xb6\x68\x48\xc3\x2d\x4a\x3b\xf5\xc2\xcd\x50\x0a\x3d\xb4\x8d\x13\x1e\xa8\x11\x8e\x1a\x71\xcb\xff\x2e\x62\xd4\xa0\xe1\x7f\xbf\xcd\x1e\x44\x39\xe4\x28\x70\x75\x6b\xe1\x02\x39\xe1\x63\xce\x0e\xae\x73\xbc\x7d\x56\x05\xbe\x05\xfa\x84\xa2\xe5\x4d\x9f\xec\x2e\xa7\x83\xeb\x32\xe1\x6b\x42\xf9\x85\x1d\x4c\x1e\x84\x3a\x46\x03\xe4\x41\x25\xc9\x4b\xad\x41\x3e\xef\x78\x0f\xb9\xb5\x38\x0f\x91\x35\x7f\xe1\xe1\x06\x7c\x00\xf2\x36\x19\x75\xe9\x2e\xec\x1e\xd7\x63\x36\x30\xe0\x37\xb0\x75\xb7\xb4\xf5\x19\x58\x74\x70\x1a\x23\xb7\x1b\x1f\xc3\x47\x8c\x33\x6e\x39\xa8\xe0\x59\xd1\x2d\x1a\x73\xec\x5e\x3a\x9e\x73\xe1\x28\xda\xf3\xe8\xf9\x9e\x8c\x5e\x98\xc0\xd9\x4c\xc9\x28\xf0\x10\x22\x36\x22\xc2\x30\x17\x50\x32\x41\xd4\xb0\xa7\x14\xdf\x61\x67\x75\xb7\xdf\xc7\x6c\xca\xb3\xf2\x5b\xec\x03\x3b\x37\x92\x63\xd6\x6e\x2f\xcd\xdc\x0b\xd7\x6d\xde\xb7\x4e\xa4\x39\xc6\xd9\x21\x77\x74\x05\xea\x18\x6b\x88\xd8\x40\x06\xb6\xd9\xb8\x17\xdf\xe9\x14\xb8\x66\x33\xf0\x32\xd3\xbe\xb3\xd9\xb1\xcf\x6a\xf1\x80\xa2\xcf\xf1\x25\x5e\x27\x29\x8a\x89\xee\x11\x9e\x3c\x08\xbf\x86\xf8\x96\x49\x57\xcc\xdf\xd0\x31\x87\xae\x59\x9c\x40\x14\x0f\xb8\x35\x10\x45\x59\x54\x7f\xe3\xeb\x3c\x45\x2b\xb5\x0d\x9c\xa7\xe2\x46\xa0\x66\xdd\xba\x0e\x9b\x13\x1a\x6e\x79\xf4\x01\x45\xa3\xfd\x3d\x99\x21\xa3\xfd\x03\x08\x38\x35\x19\x73\xb4\x7f\x96\x22\x0f\x38\xa3\xfd\x91\x09\x0e\x64\x36\xae\xed\xbe\x8f\x19\xb2\x24\x3a\xb7\x64\x63\xbb\x89\xc1\x58\x08\x52\xb8\xdc\x71\xed\xe4\xb3\xa4\xd3\xf3\x3d\xe7\x34\xca\x3c\x56\x9d\x08\x34\x74\x7a\x3e\xb4\x6e\xc1\x19\x76\x7a\x7e\x22\x8c\x98\x82\xa2\x8c\xda\x35\xdf\xae\x2d\x3f\x23\xb6\xef\xcc\x14\x21\xb4\xca\xce\x85\x37\xe3\x64\x52\x00\x35\xf6\x10\x78\x20\xba\x1c\xad\x09\x6f\x99\xb6\x4e\x75\x1e\x9c\xb7\x12\x42\xb0\xbe\x93\xd4\x81\xca\xe2\x97\xab\xab\x32\x38\x21\xa1\xbc\xbe\xde\x79\xb9\xbc\xd9\x52\x50\x73\xb1\xe7\x11\x8b\x1f\x58\x13\x18\xc5\xf3\x53\xcd\x0d\x19\x64\xb4\x4b\xb1\xef\x38\x0e\x0e\xb8\x8b\x8c\x14\x47\xa3\x46\xf0\xed\x5c\x3d\x1e\x9e\x1d\x5f\x9e\x9c\x8e\xc7\x34\x1e\x1f\x8d\x8e\x0f\xdb\x97\xcb\xd3\xe1\xc5\xe8\xac\x85\x1e\x8f\x4e\x0f\xc7\xe3\xff\x82\xdd\x77\x14\x96\x56\xa7\xa6\x9d\x86\xf3\x18\x9c\xa3\xaf\xd1\xc0\x52\x7e\x0d\xad\xe1\xc6\x16\x3b\x31\xb2\xdb\x66\x35\xa3\x4f\x79\x98\x0c\x40\x06\xf5\xf6\x1a\xca\xc0\xa4\x66\x02\x79\xe8\xff\xe1\xf5\x1f\xaf\x5f\x6d\xaf\x0e\xb5\xd6\x8b\x29\x14\x17\x6b\xc3\xcd\x20\xb4\x07\x99\xff\xd6\xe5\xf6\xdb\x91\x89\x5b\x7f\xa0\x1f\xdf\xd0\xcf\x3f\xd1\x9b\xdf\x6f\xdf\x1b\xfc\x00\x7b\x64\x38\xac\x26\x52\x77\x4b\xed\x63\xa4\x7d\x6b\x35\x0d\x67\xc2\x0b\xc9\x45\x7a\x60\x13\xe7\xc3\x99\xeb\x66\x83\x23\x6d\x45\xa4\xf7\xc2\x4c\xe1\x3b\x8c\xf7\xcc\xa2\xad\xfe\xb5\x39\x6d\x68\x35\x07\x15\xed\xca\x87\xd1\x40\xde\x83\x5b\x72\xef\xc5\x82\x0e\x30\x83\x84\x5f\x50\x37\xf1\xf5\x5c\xd6\xe7\xbb\x81\xcc\x90\x4c\x3b\x6c\x0d\x60\x0b\x68\x78\x69\xb8\x2a\x41\xb5\xbb\xf3\x19\xdf\xf3\x77\xc0\x6e\xcb\xf6\xdf\xc1\xf2\xe6\xd8\x9a\xe9\x3d\xa8\xdd\xf1\xf3\x21\xbc\x85\x7c\x44\x05\xad\x04\x7e\xfe\xf8\xa6\x5d\x7f\xfe\x89\x86\xad\xb7\x86\xad\x13\x97\x2c\x68\xfd\xbd\x1e\xfd\x90\xa1\xed\x57\x26\xff\x72\x2f\x2a\x8b\x6a\xf3\x0e\x02\x46\xad\xec\xc3\x17\x74\x65\x51\x55\x83\x3b\x48\xff\x19\xba\xf4\x5b\x96\xe0\x40\xa2\xd0\xac\x5e\x59\x6c\x55\xd5\x0f\x54\x55\x55\x45\x55\x15\xa9\xaa\x0c\x55\x95\xa7\xaa\xda\xa4\xaa\xfa\xed\xf6\x53\x2c\xda\x3e\x6b\x75\xff\x69\x57\x55\x5b\x57\x57\x65\x1e\x34\xb8\x42\xaa\x27\x09\x93\x41\x6e\x80\x4c\x92\xaa\x7f\x5d\x5d\x95\xb7\x0a\xa7\x18\xcb\xeb\xeb\x57\xff\xbe\xf3\xcb\x0c\x26\xc2\x4c\x0b\x1e\x01\xee\xbc\xd3\xe4\xeb\x2a\xb4\x47\x65\xf1\xcb\xd6\xcb\x17\xdb\x83\x9d\x9e\xe4\xc0\xca\x62\xd8\xe2\xac\x51\x28\xbe\x7c\xb6\x76\x77\x77\x19\x7b\x29\x09\x99\xf9\x13\x24\x5c\xc9\x65\xb1\xb9\xbb\x3b\xd8\xd9\x5c\x26\xd9\xd7\x56\x7e\x79\x82\x66\xc2\x67\x0f\x82\xb6\xb9\x5b\x55\x3b\x6b\x81\xdb\xac\xaa\x9d\xdd\xcd\xef\x87\x2a\x5a\x65\xcb\x62\x73\xeb\xe2\xec\xe0\x8c\x3e\x7d\xfa\x44\x47\xa3\x4f\x27\x87\xdb\xe5\xdb\x9e\x6e\xc9\xec\xff\x51\xab\x5f\x5d\xb1\x4e\xa5\x0b\xab\xec\xc6\xb3\xc8\xff\x09\x00\x00\xff\xff\x39\x00\x1b\xee\x5c\x11\x00\x00" func runtimeSyntaxSwiftYamlBytes() ([]byte, error) { @@ -3548,6 +5874,26 @@ func runtimeSyntaxSyntax_converterGo() (*asset, error) { return a, nil } +var _runtimeSyntaxSystemdHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\xae\x2c\x2e\x49\xcd\x4d\xe1\x8a\xd1\xd3\x28\x4e\x2d\x2a\xcb\x4c\x4e\xad\x29\xce\x4f\xce\x4e\x2d\xa9\x29\xc9\xcc\x4d\x2d\xd2\x54\xe1\x8a\x8b\x89\x0e\xcd\xcb\x2c\x89\x89\x55\xe1\x02\x04\x00\x00\xff\xff\x60\xa0\xcf\x35\x2d\x00\x00\x00" + +func runtimeSyntaxSystemdHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxSystemdHdr, + "runtime/syntax/systemd.hdr", + ) +} + +func runtimeSyntaxSystemdHdr() (*asset, error) { + bytes, err := runtimeSyntaxSystemdHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/systemd.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxSystemdYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x58\x4d\x93\xe3\x28\x12\x3d\x4f\xff\x8a\x8a\xda\x3e\x74\x6f\xc7\xf4\x71\x0f\x15\xb1\xbb\x21\x4b\xb2\x8b\x29\xeb\x63\x84\x5c\x35\xb5\xed\x1e\x05\x96\xd2\x36\x6b\x0c\x1a\x40\xae\xf2\x2c\x3f\x7e\x03\xf4\xed\xe9\x8b\x9d\xef\x81\x00\x41\xe6\xcb\x14\x7b\xca\x40\x5f\x6b\x78\xb8\x53\x57\xa5\xe1\x5c\x7d\xf8\x50\x81\x86\x52\x3f\x7c\xb8\xbb\xbb\xbb\xb3\xcd\x9c\x9c\xe1\xe1\xee\x7e\xbb\xfd\xfa\x49\x81\xbc\xd0\x12\x8c\x12\xe5\x09\xb4\xd1\xf4\x0c\xf2\xf3\xc7\x7b\xd7\xf5\x08\xa4\x02\xf9\x70\x77\xff\xfb\x76\xfb\x6d\xc3\xa9\xde\x6e\xbf\x7f\xbc\xff\xf0\x41\x36\x0c\x54\x3b\xda\xcf\x77\x4a\x13\x0d\x67\xe0\xda\xf6\xfb\xe4\x95\x25\xd4\xda\x78\x7b\x0d\xd2\x78\x8c\x12\x65\x3c\xc6\xc4\x1b\x52\x82\x11\x0d\xc6\x63\x4a\x18\x2f\xc6\xa8\xf0\x93\x75\x92\x99\xc2\xdb\x04\x28\x2f\xd6\xc9\x0a\xc5\x1b\x14\xf4\x18\x87\x18\xa3\x24\x36\x0b\x52\x9e\x98\x38\x98\x05\xec\x85\x04\xb3\xa0\xbc\x42\xe9\xe5\x1f\x09\x67\x57\x07\x54\x2e\xdc\x7f\x2e\x02\x70\xaf\xb1\x60\xa2\x3c\xa1\x24\x03\x52\x2d\x08\xaf\xde\x68\xa5\x8f\x3d\xf9\x02\xf4\x70\xd4\x03\x92\x54\xc3\xd8\xa7\x58\x24\x49\x5e\xa0\xc0\x2c\xa4\x20\x55\x49\x94\x36\x8b\xcd\xaa\xc8\xc2\x34\xc9\xf2\x62\x93\xad\xcd\xa2\x51\x31\x39\x83\xf1\x49\x4d\x76\x94\x51\x4d\x41\x8d\xe0\xba\x10\x0d\xaf\x28\x3f\x60\xd0\xc6\x7f\xf4\x30\x46\xd8\x94\xb4\x3e\x82\x34\x25\x23\x4a\x99\xc2\x8f\x82\x35\x8a\x43\xe3\x27\x41\x58\x2c\xd1\xba\xb7\x36\xb1\xdf\x5a\xae\xb5\xf0\x93\x28\x32\xbe\x38\xd7\x12\x94\x32\xbe\xe0\x15\xd5\x54\x70\xcf\x4f\xc5\x1b\xc8\x91\x18\xa7\x1e\xb9\x80\x4a\x28\xb5\x90\xd7\x58\xe8\xf0\x5c\x4f\x9b\x96\x94\x01\x52\xe1\x3b\x94\x8d\x26\x3b\x06\xf3\x96\xbf\xf6\x7f\x14\x4a\x8f\xe8\x09\x24\x07\xe6\x8b\xf3\x99\xf0\x6a\x4d\xf9\xe4\xf1\xb8\x61\x6c\x44\x29\xd1\xc7\xf0\x9d\x2a\xad\x7e\xc4\xad\x98\xd8\xcd\x79\xa4\x86\x35\xdf\x36\x44\xa2\xe1\x3a\x15\x94\xeb\xdb\x16\x7b\xbc\xee\xfc\x6e\x1b\xf0\xf5\xbc\x13\x8c\x96\x6b\xca\x4f\x63\x1b\x86\xb2\x91\xb3\x7d\x7a\xa6\x52\x37\x84\xd1\x3f\x89\x45\x96\xdf\x33\x5a\xb6\x6b\xd6\x52\xb0\x95\x14\x4d\x3d\x03\x9e\xd6\x92\xee\x9a\x76\xca\x81\x8d\x44\x45\xf7\xd7\x19\x95\x82\x54\x54\x69\xe0\xda\x94\x2d\xcd\x40\x0e\x03\xb7\x76\x1a\x16\xb1\x17\x85\xc6\x4f\x37\xde\x7e\x4f\xb9\x5b\x5b\xba\xc1\xe5\x11\xaa\x86\x51\x7e\x48\xed\x4b\xdc\x72\x92\x0a\xf9\x97\x9e\x19\x28\xd0\x09\x5f\x0a\x79\x72\x0d\x47\x22\xad\x5b\x4a\xa2\x8e\xfe\xf1\x39\x6f\x2d\x7c\x04\xc6\x4c\x51\xf8\x9b\x0c\x27\x99\xa9\x60\xd7\x1c\x4c\x00\x7b\xd2\x30\x3d\x5d\x58\x47\x05\x50\x03\xaf\x80\x97\xd6\xc3\x3b\x6e\x4d\xcf\x54\x7b\x78\x06\xfd\x24\x0b\xe7\x44\xba\x99\xe1\xc0\xcb\xbd\x19\xb1\xc4\xe8\x3f\xf3\x47\xd6\x89\xff\x34\x1f\x35\x0a\x23\x4b\xce\x39\xbc\xfa\x75\x13\x6e\xe6\x8f\xc6\xc8\xbf\x21\x12\x17\x55\x33\x2a\xcd\x12\x7f\xc6\x64\x78\x3e\x5d\x96\xa7\x19\x4a\x6e\xa8\x1c\x45\xf3\x71\x30\x5a\xa5\x61\x1c\xa0\x78\x35\xa7\x73\x6f\x5c\x29\xd6\x84\x57\x44\x56\xa1\x94\x42\xde\x92\x49\xa3\xeb\x46\x9b\x00\x54\x29\x69\xed\xbc\xae\x95\x2c\x27\x8f\x9d\x1d\x00\xbf\x9a\x21\x1e\x22\x51\x81\xf9\x6b\x44\x07\xa2\x6c\xac\xde\xb6\xae\x1b\x34\xe7\xda\xb7\xda\x08\xf6\x18\xeb\xab\x09\xf9\x85\x4a\xc1\x6d\x8f\xa9\x6d\x83\xdc\x84\x59\x16\x27\x06\x2e\xc0\x75\x61\x95\x5e\x34\xda\x14\xe1\x6f\xa1\xb1\xb2\x90\x01\x13\xa4\x72\x26\xd6\x44\xea\xd1\x4a\xad\x14\x8c\x48\x42\x07\x44\x3d\x18\x93\x2e\xa2\xb6\x3d\xf6\x94\xd9\x14\xb0\x4c\xe2\xdc\xfd\x14\x91\x97\xb6\xc6\x26\x46\xce\x16\xf2\x8d\xc8\x2a\x17\xbe\xe0\x4a\x30\x18\x89\xa7\x48\x1d\x46\x84\xaf\xca\x66\x80\xa5\x04\xb0\x4a\x6f\xf6\x12\xfe\x30\x4b\x55\x9e\x52\xa2\x54\x2c\xcc\x5e\x69\xb2\x33\xc5\x0a\x05\xa6\x8d\xda\x55\x03\x4a\x45\x84\xf2\x14\x05\xe6\x91\xf0\x8a\xc1\x23\xdd\x81\xe4\x44\xc3\x13\x5c\x3b\x6a\x4d\x2b\xfc\x46\x75\x79\xec\xb0\x13\xd7\xb1\x19\x37\xca\xc6\x80\x25\x8e\x44\x1d\xcd\x74\x04\x74\xe0\x42\x02\xe2\x47\xba\xa3\x1a\x2a\xf3\x98\x44\xa1\xcb\x10\xc5\x63\x82\x73\x17\xd8\xc8\x4f\xe2\x36\xc4\x51\x60\x50\xc5\xc0\x2b\xdd\x69\x8d\x26\x86\xd2\xa0\xa0\x58\xa3\x27\xdb\xa7\x88\x92\x20\x5c\x0f\x46\xb1\xcc\x92\xa8\xb0\xd1\xb3\xf0\x70\x68\xda\x09\x13\xde\x27\xd1\x1e\x63\x4e\x6a\x75\x14\xba\x23\xac\x8f\xa2\x34\x34\x88\x93\xb2\x04\xa5\xe8\x8e\x41\xef\x3e\x36\x92\xbb\x15\x07\xc0\xc8\x35\x22\xef\x76\x05\x56\x7a\x0c\x4a\x46\x39\xf1\x5d\xaa\x9a\x32\x83\xec\xa0\x34\x4f\xb0\xfd\xcd\xd7\xe6\x17\xb1\xcb\x5b\xff\xb1\xa3\xfc\x22\x28\x9f\xca\xc8\x13\x40\xed\x31\x7a\x01\xf3\x14\xbe\xda\xb3\x6e\xff\x8a\x3c\x59\xad\xd6\xa1\x79\xa2\x8c\x85\xef\x25\x6b\x2a\xd8\x28\xd7\x9f\x32\xe6\x9c\xdd\x1a\x36\xb7\x8f\x34\xa6\x07\x4e\x98\x33\x2d\x99\x4a\x61\xdf\x0c\x94\x19\xce\xef\xf6\x34\x7a\xa1\x1a\x15\x6a\x90\xa6\x51\x93\x26\x62\x34\x51\xa1\x99\xfc\xcc\x75\x67\x14\x9c\xa9\xd2\x4c\x24\x66\xd0\x96\xa9\xa8\x4c\xd5\xe4\x56\x46\x26\xfa\xc1\x28\x3f\x15\x75\xbf\xcf\x17\xc2\x1a\x58\xbb\x14\x12\x10\x4d\x0e\x92\x9c\x4d\x0b\x97\x68\x99\x74\x66\x04\x4a\x91\x03\xfc\xda\x40\x03\x1d\x15\x83\xb6\x03\x75\x08\xc3\x1f\x0d\x70\x4d\x09\x4b\x89\xab\xec\x3a\xba\x86\x92\x12\xd6\x23\x2d\xc1\x8e\x2e\x0e\xbe\x60\x42\x5a\x63\x0d\x17\x60\xce\x10\x65\xab\x30\x6b\x71\xc8\x89\x3c\x80\x36\xac\x39\x29\x53\x44\x9e\xff\x88\xe2\xd0\xd6\x4a\x11\x39\xc1\x98\xbe\x23\x22\x4f\x26\x22\xef\xbe\xe0\x1c\x9c\x93\x2b\x0b\xad\xf2\x58\x2f\x89\xc8\xbb\x1b\xbc\x8f\xf7\x1e\xbb\x70\xef\x01\xd6\x56\xcb\x06\xd4\xc6\x7e\x44\xde\x33\xb0\x19\xb5\x8b\x9b\x08\xce\x42\x5e\xdd\x06\x76\x36\x16\x7b\xdd\xe1\x10\x63\x6f\x15\xf6\xff\x6e\x95\x93\xbd\x8a\xc8\x7b\x07\xd5\x9c\x6f\x6d\x4c\xff\x04\x53\x14\x51\x12\x27\x79\x12\x23\xbf\xb0\x47\x87\x73\x2f\x4a\x8d\xab\x46\x96\x8c\x1c\x94\x71\x81\x1d\x7b\x8d\x16\xcf\xb9\x32\xb1\xad\x3b\x63\xc1\x5d\x5d\x49\xf9\xc1\xc4\x22\x86\xb7\x54\xd2\x0b\x65\x60\xe7\x89\x85\xa6\xfb\xab\xe7\x62\xd2\x24\xdc\xc6\xff\xc5\xed\x48\xc2\x17\x42\xe8\xd6\xf2\x09\x03\x9b\x28\x4c\xc2\x97\x84\xb2\x46\xc2\x68\xf5\x71\x9f\x70\x27\xc0\x4d\xdd\x3e\x62\x2b\xf2\xe9\x60\x16\xdb\xd8\x1f\x98\x24\xc2\xa5\x90\xe0\x55\xff\x6d\x94\x36\x49\xdd\x1e\x89\x68\x33\x51\xea\x45\xae\x9c\x4d\x89\xd4\xc9\xde\x58\x35\xf5\x25\x54\xad\xcf\x28\x87\x87\xba\xc9\x16\x57\xfe\x91\xf0\x03\x54\x66\x52\xe0\xdd\xd4\x75\x16\xba\x82\x88\xda\x6e\x20\xcf\x54\x29\x3b\xa3\x5b\xb4\x2b\xd9\x0b\x2b\xc9\x29\x0a\x5c\x32\x4a\x69\xdd\xee\x77\x2f\xbd\xb7\x91\x9c\x66\x61\x9e\xbf\x8e\xa2\xda\xe1\xd6\xee\xa3\xc5\xc6\x59\x86\xf2\x57\xcb\x5c\x88\x86\x18\xf4\x9b\xad\x85\x3a\x98\x9f\x6b\x93\x4a\x51\x93\x03\xd1\xa0\xda\x14\x97\x0b\x53\x2b\x65\x32\xa2\xc1\xf9\xcc\xa2\x91\x4a\x8f\x10\x71\x0d\xf2\x42\x98\xb1\x55\xa6\x5d\xf6\x54\x43\x87\xca\x73\x4a\x16\x45\x16\x7a\x6b\xeb\x2a\x13\x7f\xc9\xa0\x04\x7a\x81\x45\xb3\xdf\x83\x34\x19\xec\x1b\x05\x11\xe1\x0d\x61\x6d\x76\x9d\x33\xa2\x36\x12\xec\x94\x76\x81\xc3\x82\xab\xa5\x14\x67\x93\xc1\x99\x50\xee\x3e\xa9\xc2\x77\x6a\x9f\xfc\xa3\xa1\x12\xaa\xc5\xb5\x37\xd5\x60\x38\x2f\x55\x4b\x21\x07\x26\xb9\x80\x94\xb4\x72\x25\xbf\xe3\x94\xad\x9b\x07\x6b\xde\x6c\xbf\x06\xe1\x39\x77\xd6\xac\x32\xcc\x40\x75\xab\x56\x5d\x0d\x60\x8b\x08\xbb\x1c\xac\x89\x6e\x86\x0e\xd6\xef\x32\x21\xf4\xa8\x0a\x33\x34\xba\x42\xd6\x70\x5b\x81\xd8\x54\x61\x53\x7b\x8f\x7b\xbd\xb0\x7e\x31\x52\x1b\x35\xa0\x17\xa2\xcb\x63\x25\x0e\x76\x22\x45\xce\x35\x03\x65\x54\x49\x18\x14\xef\xdd\xff\xd5\x60\x20\xcc\x38\xe7\x85\x05\xd5\xca\x14\x38\x5c\xa3\x78\xf3\x5b\xe1\x27\x71\x1e\xfe\x96\x1b\x0c\xbc\xea\x0e\xc6\x9a\x18\xad\x9e\xd0\x7a\x6d\x70\xf7\x2d\x8c\x8f\xe2\xad\x7b\x2d\x7c\x6c\x74\x25\xde\xf8\x6c\x5a\xbb\x38\x7c\x26\xe5\x69\x4d\x76\xc0\x26\x26\x4a\x11\x9f\xc1\xa4\xd1\x06\xbb\x2f\x6b\x97\xdf\x5a\x53\x19\x2c\x1a\x59\x82\x8d\x17\x53\xe0\x64\x93\xf9\xe1\x8f\x3c\x08\xd7\x8c\x76\xcf\xcd\x2a\xcb\x1e\x21\x6e\xe3\xf8\xa6\xc0\x74\x3b\xdc\xe6\xc0\xb6\xe4\x18\x89\xd6\xcf\x47\x3c\x38\xba\xfd\x84\xa7\x65\xc1\xdb\xa9\x44\xfd\x72\x04\xbe\xe1\x1c\xa0\x82\xca\x12\x92\x1c\xc0\x28\x2d\x29\x3f\x14\xa0\x4a\x52\x83\xe1\x82\x83\x91\x50\x33\x52\x02\x6e\x9c\xb4\x4d\x9c\x01\x37\x75\xcd\xdc\xa5\x00\x91\x57\x57\x95\x29\x83\x37\xe9\xf0\x29\x3d\x56\x57\xb7\x31\xdf\x2a\xfe\x92\x94\xed\x87\x2d\x7e\xc5\xeb\x64\x55\x2c\x3d\x1f\xad\x6d\x90\xb7\xcd\xc8\xa9\xd4\x9e\xda\xe3\x6b\x3b\xa0\x20\x8c\x73\xb4\x44\x61\xd6\x75\x69\xd3\xd8\xc4\x4e\x25\xec\xe9\x7b\xdf\xdf\xea\x10\x76\xb7\x23\x3e\x61\x6c\xd9\xd6\xaa\xf8\x15\xe7\x61\x14\x14\xde\x1a\x79\xd8\x14\x3d\xf4\x57\x59\xb2\x49\x47\x9c\xbc\xc4\x61\x56\x6c\xec\x08\x1d\x93\x85\x5e\xf0\x3a\x76\xe8\x2f\x2f\x06\x62\x13\xa3\x7c\x82\xb0\x7d\xdc\x52\x3d\xf3\xe2\xc5\x39\xee\xd6\x33\x04\x44\x0b\xa7\xf1\x30\x30\x36\x1c\xf0\x55\x3d\x77\xe5\x78\xa7\x84\xb9\x9f\xfa\x82\x1f\x40\xb9\x63\xcf\xfd\xf4\x45\x92\xda\x49\x7c\x5f\xea\x4f\x4a\xb6\xde\xec\x63\x76\xc0\xa2\xee\xa1\xc4\x8c\x94\xa7\xd8\x41\x49\xb8\xaa\x89\xb4\xdf\x14\x45\x9e\x79\x31\xb6\x47\x69\xb4\x53\xbf\x3c\x7f\x75\x9e\x9c\xe7\xaf\x4e\x36\xac\xf1\xfc\x48\xf8\xa1\xa9\x9d\x99\x07\x54\x11\xc6\x6c\x39\x01\x26\xbf\xd6\x60\xdc\xe6\x6d\x22\xa2\x4e\xc6\xe6\x2c\x63\x2b\x3b\xb3\xd1\xe7\x7a\x72\xb0\xcf\x61\xe6\x36\xb1\xfb\xb7\x79\xfc\x85\x70\xed\x54\xcf\x1a\xca\x4c\x43\xf2\xe5\x48\xb4\x79\x39\x82\x04\xf3\x22\xa4\xcd\xc2\x83\xe4\x7c\xfe\xe7\x7d\x77\x53\x55\x4b\xa8\xa5\x28\xdb\xfb\xac\xaf\x94\xbb\x0a\x74\xbb\xfd\x57\xdf\xae\xdc\xe5\xc1\xc3\xdd\xfd\xf0\x84\x6a\xab\xa5\xee\x06\xec\x93\x5b\x2c\xe2\x4a\x13\xc6\x46\xb1\x68\x2f\xce\xdc\x8e\x7d\xde\x6e\xbf\xf7\xcf\xd2\xe1\x5d\xbe\xba\xfb\x1f\x77\xdf\xf6\x31\xf2\x50\x9c\xa2\xa0\xef\x54\x0a\x3b\x1a\xd7\x5f\x77\xc2\xcd\xbc\xdd\xee\x3e\x69\xd9\x80\xd9\x13\xa6\xe0\xf3\x76\xbb\x1b\x7b\x9e\xbb\x4b\xb6\x4f\xbf\x9b\x6f\xdf\x1e\x54\x4d\x4a\x78\xf8\xfe\xfd\xf3\xdf\x3e\x7d\xfb\xfd\x7f\xdf\xbf\xfe\xfd\xf3\xbf\x3f\x0e\x53\xdb\x8f\x77\xfd\x73\x79\x24\xf2\xeb\xdb\x91\x6a\x68\x3b\xdf\xdd\x4f\x9e\xfb\xf2\xa3\xde\x0f\x77\xf7\x3f\x7d\xb9\xfb\x62\xee\xbe\xfc\xf4\xe5\xfe\xc3\xff\x03\x00\x00\xff\xff\xa4\x35\xde\xe0\x49\x14\x00\x00" func runtimeSyntaxSystemdYamlBytes() ([]byte, error) { @@ -3568,6 +5914,26 @@ func runtimeSyntaxSystemdYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxTclHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x49\xce\xe1\x8a\xd1\x2b\x49\xce\x51\xe1\x8a\x53\x56\xd4\xd3\xd2\xd7\x48\xcd\x2b\x53\xd0\xd6\xb4\x2f\x49\xce\x29\xce\xd0\x50\xa8\x51\xd1\xe4\x02\x04\x00\x00\xff\xff\x9b\x33\xdc\x22\x24\x00\x00\x00" + +func runtimeSyntaxTclHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxTclHdr, + "runtime/syntax/tcl.hdr", + ) +} + +func runtimeSyntaxTclHdr() (*asset, error) { + bytes, err := runtimeSyntaxTclHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/tcl.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxTclYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x55\xd1\x96\xdb\x26\x10\x7d\xdf\xaf\x50\x9c\x3d\x8d\xbd\x7b\xd6\xed\x6b\x9d\xb6\xdb\xbe\xf7\x0b\xba\x6c\x5c\x84\x46\x12\xf5\x08\xe8\x30\xb2\xad\x66\xf2\xef\x3d\x83\x64\xaf\x73\x4e\x9b\x07\xc1\x1d\x04\x03\x5c\x2e\x97\xd6\x23\xf0\x94\x60\x57\xb1\xc3\xbb\xbb\x06\x18\x1c\xef\xee\xaa\xaa\xaa\xf4\x57\xb0\x03\xec\xaa\x95\x31\x5b\x76\x78\xbf\x2a\xed\x3d\xd8\x06\x68\x57\xad\x3e\xbd\x7f\xb7\x7d\xf8\x7e\x0d\xe1\x58\x3d\x6e\x9e\xd9\x61\xee\xd7\x95\xdc\x6f\x56\x77\x77\x34\x22\xe4\x39\xcd\x53\x95\xd9\x32\x0c\x10\xb8\x64\xaa\xd7\xb6\x65\x20\xb1\x29\x41\x68\xc4\x12\xd9\x49\xec\xc8\x71\x0f\x67\x70\xf1\x30\x63\x3f\xa4\x48\x3c\x63\x8c\xb6\x79\x43\x7b\x1f\x1a\x38\xcf\xf1\xdf\xa3\x45\xdf\x4e\x52\xfb\x60\x69\x92\x9a\xc0\x1e\xc4\xd9\x0c\xe2\x2c\xbb\x5e\x5c\x23\x0e\xa3\x3b\x68\xa9\x8d\x31\x38\xcb\x5a\xb1\x0f\x23\x08\x60\x9e\x0b\xdf\x0a\x04\x17\x1b\x1f\x3a\x81\xd8\x0a\x10\x45\x12\x38\x5a\x14\x5d\x94\xc0\xd9\xb3\xc0\x39\x91\xb4\xb5\xe6\x83\x46\x5a\x17\x43\xeb\xbb\x91\x40\x61\x9a\x44\xe9\x2a\x05\x1c\x21\xb0\xb4\x38\xe6\x5e\xda\x48\xfa\x81\x75\x05\x0f\x96\xa5\x03\xce\xd2\x61\xac\x4b\x61\x51\x7a\x9f\x39\xd2\x24\xbe\x15\x1f\x1c\x89\x0f\x6d\x14\x1f\x18\x28\xc9\x5f\xd1\x07\xc1\x85\x2a\x9c\x77\x8e\x3e\x64\x20\x16\xf4\x99\x05\x11\x42\xc7\xbd\x14\x8e\x90\x6c\xe8\x40\x90\x20\xa1\x75\x20\x98\xc1\x92\xeb\xb5\x66\xc1\xac\x84\xea\x81\xe6\xa4\x3f\x63\x82\x20\xc9\xba\x83\xed\x40\x92\x6f\x24\x8d\x9c\x25\x9d\x1a\x21\xb0\x5a\x74\x70\x4e\x5a\xe5\xb1\x16\x2a\x4a\x10\x02\x1e\x29\x48\x76\x36\x48\x06\x38\x88\x26\xce\x4a\x88\x56\x23\x39\x90\x9c\xd0\xb3\x64\x26\xe5\x32\x8f\x75\x66\xc9\x27\xaf\x87\xc1\x0e\x7f\x8f\x9d\x30\x20\x0a\xfb\x01\x84\x49\xd7\x31\x86\x43\x88\xa7\x20\x63\xd0\x64\x63\x6a\x2c\x83\x8c\x09\xe1\x08\x28\x63\x3a\x5a\x92\xa3\x25\x6f\x6b\x04\x39\x9e\xac\x67\x39\xf5\x1e\x61\x63\x4c\xbd\xfa\x3f\x81\xa9\xa6\x2a\x1b\xa6\x21\x12\xcc\x0a\xab\x9a\x18\x60\xa1\x63\x6e\x80\xb3\xcf\x9c\x97\xa0\x03\x5e\x50\x21\xe8\x82\xe1\xcc\x80\x25\xf3\xd2\x92\xaf\xfd\xb2\xff\xe7\x92\x3a\xb3\x25\xfe\x2a\xb7\x2e\xc8\x67\xf6\xee\x92\xa9\x6c\xee\x5b\x4b\x9e\x09\xab\xea\x49\x27\x2c\x27\xba\xb4\xb8\x38\x24\x4b\x70\x09\x41\x25\x7f\x09\x5a\x4f\xf9\xc2\x75\x35\x8b\xe3\x12\xe4\x0b\x42\xfb\xd6\xe5\xeb\xcc\x83\x4d\x6f\x50\x0f\x68\x09\x66\x11\x5d\x02\x48\x60\xf9\x26\x2a\xc2\x5a\x42\x8e\x6f\x08\xe3\x09\xe8\x2d\x64\xcf\x78\xd3\x6f\x4c\xe9\xe6\x2f\xf9\xe1\x16\x23\xb4\x7c\x1b\x93\xef\xfa\x6b\xc3\xc9\xe3\x75\xbf\xa7\x48\x8d\x5e\x84\x9b\xb0\x70\xff\x4d\x2d\xa0\xa5\xe1\xc6\x3d\xd2\xa1\x93\x7a\x39\x2c\x35\x89\xd9\x18\x2c\x97\x6b\xe9\x2c\x97\x6b\xe1\x5c\x44\x54\x1d\xba\x8b\x65\xcc\xbc\xbb\xbe\xa3\x24\xae\x1f\x62\x23\xae\x57\xd5\xba\x9e\x62\x64\x71\x33\xfb\x6e\x61\xd8\x0d\xcd\x2c\x6e\x17\x87\xc1\x86\x06\x63\x4c\xe2\x66\x62\x5d\xb9\x14\x24\x8e\xe3\x41\xa7\x52\xf7\x95\x66\x4c\x02\xae\x8f\xc5\x6e\x50\x5a\x17\x18\xa5\x2d\xd6\xd5\x46\x3a\x48\xab\xdb\x92\x96\x69\xd4\xe5\x80\xb4\x63\x28\x3f\xfb\x98\x79\x3f\x1b\x46\x53\x8c\xe3\x2c\x07\x98\xb0\x01\x2c\xb5\xca\x5a\xeb\x03\x4c\xb9\x00\xd5\xef\x41\x19\x45\x9b\xb3\xef\x82\xa0\x9a\xa1\x55\x93\x81\x21\xf1\x24\x58\x78\x40\x1f\x0e\x82\xb3\x2a\x94\x35\xf4\xf5\xe2\x3d\xba\x11\x3c\x5a\x52\x52\xb4\x4e\x4b\x9c\xd4\xed\x06\x7b\x96\xc1\x07\x09\xde\xa9\xa5\x24\x90\x44\xb1\xf8\x22\xd9\xd0\xc4\xa1\x38\x4b\xe3\x49\x54\x47\xbe\x6c\x44\xad\x44\x97\x00\x67\x2e\xb8\xf4\x56\xb0\x48\x12\x10\x1c\x4b\x06\x3a\x02\xed\xad\x73\x90\xae\x91\x23\x28\x19\x7c\x17\xf4\x4a\x20\x40\x92\x3c\x05\x27\x79\xca\x0c\x83\xfa\xcd\x79\xdf\xfa\xd0\xf8\xe0\x79\x89\x94\xcb\x82\x8a\x16\x38\x34\xe7\x3c\xc7\xf3\xf0\x19\xde\x0c\x2f\x7e\xa3\x66\x95\xd5\xad\x42\x56\x6f\x63\x9a\xf6\xe5\x69\x18\x07\x9b\x0f\xa2\x5d\x6e\x05\xe8\x1b\x08\xec\x5b\x0f\xb4\x75\xca\xf2\xae\x5a\x25\x8a\xee\xe5\x65\x57\x7c\x77\xf7\xfa\x2a\x6b\x63\x3e\x8b\x31\x5f\x36\x57\xd1\x4e\x43\x1d\x71\x1b\x13\x90\xe5\xa8\x6f\xeb\xda\x98\xb5\x18\xb3\x11\x63\x3e\xca\x9f\x62\x8c\x31\x62\xcc\xbd\xfc\x24\xbf\xc8\x3b\xf9\x59\xbe\x13\x63\xe4\x3a\xde\xc5\x90\xd9\x06\xde\x86\x71\xa8\xcb\xdb\x6c\x4c\xfd\xf2\xc3\xd3\x8f\xaf\x8f\x6b\x63\xb6\x33\xda\x3c\xdf\xac\xf2\x3a\x62\xbe\x4b\x3a\x42\xe7\x34\x66\x2b\x2f\x9f\xcc\xea\x75\xf3\x60\x56\xf2\xe1\xda\xf2\xe1\x75\xf3\xf0\xe1\x3f\x76\x78\xb4\xf3\x64\xf7\xc6\x7c\x7e\xd6\x69\x7e\x7b\xfa\x63\xff\xee\xd7\xf7\xf7\x0f\xcf\x4f\xaf\x8f\xc6\x7c\x79\x7e\x9b\x70\x58\x6e\xe5\xfa\x93\x7c\xdc\xdc\xd0\xf1\xf0\x7e\xfb\x70\x4d\x1d\x34\xf7\x93\xeb\x2d\x6d\x4f\xbd\xe7\xf9\xad\xda\x55\xab\x9b\xfe\x8f\xf7\xab\xbb\x7f\x03\x00\x00\xff\xff\x1e\x2f\x55\x8f\xb7\x08\x00\x00" func runtimeSyntaxTclYamlBytes() ([]byte, error) { @@ -3588,6 +5954,26 @@ func runtimeSyntaxTclYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxTexHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x49\xad\xe0\x8a\xd1\x2b\x49\xad\x50\xa9\x89\xd1\x4b\xca\x4c\x02\x51\xc9\x39\xc5\x2a\x5c\x5c\x80\x00\x00\x00\xff\xff\x46\x27\xf3\x19\x1a\x00\x00\x00" + +func runtimeSyntaxTexHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxTexHdr, + "runtime/syntax/tex.hdr", + ) +} + +func runtimeSyntaxTexHdr() (*asset, error) { + bytes, err := runtimeSyntaxTexHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/tex.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxTexYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x92\x6f\x8f\x9b\x30\x0c\xc6\xdf\xf3\x29\x2c\xda\x9b\x5a\x9d\x40\x7b\x3b\x34\xad\xdb\xd7\x58\xcc\xa6\xfc\x31\x77\xd1\x48\x40\xc4\x9d\xba\x23\xfd\xee\x13\x81\x2b\xb7\x55\x48\xc7\x1b\xe0\xb1\xf3\x8b\xfd\xd8\x8d\x6d\x89\xff\xf4\x54\x01\xd3\x25\xcb\x0c\x31\x69\xae\x20\x03\x00\x98\x62\x5e\x3a\xaa\x20\x47\x2c\x99\x2e\xfb\x88\x58\x2a\xab\xd2\x5b\xb7\x61\x9f\x67\xd9\x70\x6e\x29\x54\x29\x7f\x07\xba\x6b\xbb\xc1\xbe\x10\xf0\x33\x81\x35\xe4\xd9\x36\x96\x86\x00\x5d\x03\xe3\xe7\x55\xf8\x72\x05\xe9\x0d\x88\xb7\x52\x9d\x18\xc5\x9b\x63\x33\x75\x7a\x02\xcb\x81\x53\x19\x63\x7e\x13\xc9\x9b\x24\x5d\x57\x69\x2e\x06\xc4\xfb\x58\xe2\x9e\x55\x6f\xb1\x76\xe0\xcf\x4e\xd1\x10\x16\xb2\xee\x7c\x60\xe9\xb9\x9c\xe5\x74\x58\x89\x8f\xc5\xa7\xfa\xf1\x80\x58\xce\x5f\xc7\xd3\x41\x88\x2a\xf4\x52\x53\x55\xd7\x87\x9e\xa3\x73\x51\xbb\x68\x7d\xa4\x4b\x24\x17\x55\x1f\x7b\x1d\x8d\x89\x5a\x47\x6f\xa2\xd7\x31\xf4\xc7\xe3\x09\x51\xe5\xcb\xad\x2d\x31\xa8\x41\xea\x5f\xc4\x01\x9e\xe5\xef\xd9\x5a\x43\x8d\x3c\xb7\x3c\xfb\x0d\xf2\x49\x5a\xbf\xd4\xb5\x44\x2a\xc8\xc5\x78\x45\x14\x88\xf5\xd2\x53\x01\xa1\x27\x6d\x65\x3b\xc5\x3e\x20\xde\x9a\xdd\x81\x93\x7a\xe8\x5e\x3b\x0b\x2c\x99\x1c\xf9\xd9\x23\xc4\xaf\x27\x21\x8b\x97\x6f\xc5\xf7\x9f\xf5\x63\xbe\x91\xf3\x90\xdf\x16\xc0\x4d\xf2\xea\x52\xfa\xbd\x37\x5f\xfc\x48\x05\x3c\xfc\x3f\x81\xfd\xf6\x2c\x37\x59\x13\x49\xd1\x93\xf5\x88\xe3\x92\xf4\xcf\x52\xbc\xce\x16\x91\xbc\xd9\xc8\x59\x2f\xfb\x1b\x00\x00\xff\xff\xd5\xe7\xc0\x26\x11\x03\x00\x00" func runtimeSyntaxTexYamlBytes() ([]byte, error) { @@ -3608,6 +5994,26 @@ func runtimeSyntaxTexYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxTomlHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\xc9\xcf\xcd\xe1\x8a\xd1\x03\x53\x5c\x80\x00\x00\x00\xff\xff\xbb\x01\x2b\x6e\x0d\x00\x00\x00" + +func runtimeSyntaxTomlHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxTomlHdr, + "runtime/syntax/toml.hdr", + ) +} + +func runtimeSyntaxTomlHdr() (*asset, error) { + bytes, err := runtimeSyntaxTomlHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/toml.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxTomlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x92\x4f\x6b\xe3\x30\x10\xc5\xef\xfa\x14\x83\xb2\xe0\x38\x8b\x4d\xd8\x5d\xd8\x5d\x41\x28\xe9\x9f\x40\x0f\x6d\x2e\x2d\x18\x2c\x43\x14\x7b\x92\x98\xd8\xb2\xb1\x14\x48\x89\xfc\xdd\x8b\x9c\xb8\x31\x0e\xb4\x3d\x14\xea\x93\x35\x33\x4f\xef\xa7\xc7\xac\xd2\x0c\xf5\x4b\x89\x0c\x74\x91\x67\x84\x24\xa8\x31\xd6\x8c\x00\x00\xd8\x9e\x14\x39\x32\xa0\x9c\xfb\xb6\x4f\x09\xa9\x76\x19\xaa\x63\xdf\x03\xa5\x85\xc6\x1c\xa5\x66\x40\x87\xfe\xc8\x0d\x43\xa6\x4a\x11\x23\x8b\xa2\x09\x6d\x67\x4a\x8c\x53\x91\x31\xa0\x13\x4a\x9a\x1a\xc0\x00\xae\x2b\x11\x6f\x51\x83\xde\xa4\x72\x9d\xa2\xba\x18\x1e\x72\x1e\x1a\xce\x23\xb7\x23\x7a\xdc\xe5\x4b\xac\x14\x08\x99\x80\xd2\x55\x2a\xd7\xad\x2e\x2e\xa4\xd2\x42\x6a\x5f\x36\x23\x0d\xf1\x72\x18\x8e\xbd\xff\xd1\x4f\x33\xde\xdb\x1f\xe1\xad\xa6\xde\x2c\x1a\xb9\x9c\x2f\x8d\xe3\x3b\xf4\x1d\x29\xe7\x56\xfb\x37\x3a\xfc\xae\xcd\x3e\x9c\x7a\x33\xe1\xad\xec\x5d\x87\x5f\xb5\xd9\x75\xcf\x7f\x6a\xf3\xdc\x3d\xff\xab\x5b\xde\xce\xc5\x47\x54\x76\x7a\x06\xd8\xd4\x2a\x9b\x18\xa7\xf4\xad\x86\x32\xe9\x55\xd4\x36\x2d\x4f\x30\xfe\xb9\xda\x89\xbf\xfd\xba\x4e\xc7\xf8\x6e\x36\xa2\x3a\x4b\x3f\x8b\xe3\xf4\x69\x9c\x6f\x84\x59\xf4\x61\x16\x5f\x63\x9b\x37\xdb\x7a\x61\x37\xe8\xdb\xfd\xf8\xc0\x4e\x17\x49\x61\xb7\xf4\x69\x7e\x3b\x37\x41\x10\x98\xd9\x7d\xf0\x70\xe7\xb2\x2b\x4a\xc8\x6b\x00\x00\x00\xff\xff\xf6\x17\xf4\x94\x54\x03\x00\x00" func runtimeSyntaxTomlYamlBytes() ([]byte, error) { @@ -3628,6 +6034,26 @@ func runtimeSyntaxTomlYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxTwigHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x29\xcf\x4c\xe7\x8a\xd1\x03\x51\x2a\x5c\x5c\x80\x00\x00\x00\xff\xff\xc7\x44\xfe\x5f\x0e\x00\x00\x00" + +func runtimeSyntaxTwigHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxTwigHdr, + "runtime/syntax/twig.hdr", + ) +} + +func runtimeSyntaxTwigHdr() (*asset, error) { + bytes, err := runtimeSyntaxTwigHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/twig.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxTwigYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x94\xdb\x6e\xf3\x36\x0c\xc7\xef\xf3\x14\x9e\xbb\x6e\xc9\xba\x64\xc5\xee\x96\x1d\x8a\x61\xc0\x5e\x22\x0a\x02\x5a\xa2\x1d\x35\x3a\x81\xa2\x93\x7a\x65\xdf\x7d\x70\x0e\x5f\x4f\x0e\xbe\xa2\xc0\x77\x17\xdd\x18\xd6\x9f\xa2\x7f\xa2\xc9\x7f\x6d\x1d\x72\x97\x70\x5e\xf0\xce\x36\xa3\x91\x41\x46\xcd\xf3\x51\x51\x14\x45\xaf\x05\xf0\x38\x2f\x4a\xa5\x66\xbd\xfe\x7d\x39\x1a\x51\xeb\x30\x1f\x02\xa6\x85\x0d\xda\xb5\xa6\x8f\x58\xb3\x77\xe5\x71\x37\x77\xbe\x8a\x6e\xc6\xd0\x1c\xe2\xfa\x95\x19\x88\xf7\x99\x1e\x95\x7a\x5c\x2c\xe6\x39\x81\xc6\xf9\x72\x59\x7e\x09\xc1\x60\xe6\x45\xf9\x42\x52\xea\x49\xa9\xa7\xe7\x80\x17\x9f\x3e\xad\x69\x61\x0d\x06\xb6\xb5\x45\xda\x67\xaf\xc6\x50\x65\xa9\x80\xf5\x5a\x34\x24\xcb\xe0\xec\x7f\x28\x3a\x86\x2d\x12\x0b\x06\x1d\x8d\x0d\x8d\x18\x60\x1c\xaf\x7c\x34\xb6\xee\x26\x77\x62\xb0\x86\xd6\xb1\x60\xd6\x90\x50\x6a\x4b\x99\xa5\x8e\xe4\x81\xe5\x3e\xda\x20\xf7\x39\x86\xd5\xfe\x34\xca\x06\xbb\x2c\x0e\x32\x8b\xc3\xd0\xf0\x5a\x5c\xdc\x21\x89\x47\x6a\x50\x82\xfb\xb5\x22\x09\xad\xaf\x90\x56\xc7\x0c\x04\x3b\x21\x4c\x0e\x34\x0a\xe1\x16\x29\xa3\x50\x6c\x83\x91\xec\xac\x46\xc9\x91\x58\x72\x72\x96\x25\x33\xd9\xc4\xd0\x64\x61\xcb\x0e\x85\xc9\x7a\x69\x53\x42\x92\x96\xdc\x91\x60\xa2\x54\x55\x9e\xad\xc3\x4c\x3b\xc8\xf9\x54\x0d\x66\xb2\x55\xcb\x28\x95\x8b\x7a\xd3\x17\x22\x33\x04\x16\xdd\x69\x87\xfb\x32\x88\x69\x7d\x92\xe3\xaf\x14\x0f\x0f\xe2\x6d\x90\x04\x84\xa1\x47\x0f\x26\xfa\xfe\xd1\xf4\x9c\x2d\x69\x14\x46\x9f\x1c\x30\xae\x6a\x8a\x7e\xd5\x13\x87\x66\x08\xa9\x6f\xac\xd9\x06\xbb\x5d\x24\x73\xc2\x09\x46\x20\x3f\x53\x18\xac\x6d\x40\x23\xc6\x6e\x6d\xb6\x95\xc3\xaa\x13\xf4\x89\x3b\xc1\x2d\x06\xa9\xc1\x65\x14\x1b\xc4\x66\xb1\x8c\x04\x95\x43\x09\x91\x25\xb4\xce\x49\x34\x46\x22\x49\x06\x8f\x63\xc8\x93\x3b\x61\x6a\x51\x76\x96\xd7\x43\x34\xc7\xae\x8c\x09\x09\x38\xf6\xdd\xb2\x98\xcd\x7f\xff\xf9\xe6\xa7\x3b\xf9\xf3\x3b\xa5\xae\x97\xf2\x87\xfc\x25\xbf\xc8\x54\x7e\x38\x73\xb4\x22\xd0\x1b\xe4\xbe\xb4\x8b\xf1\xe4\xf1\x69\x29\x4a\x2d\x44\xa9\xe5\xdb\xf8\xd3\xf5\x66\x87\x36\x38\xdc\x7d\x71\x3b\xfd\x6d\x79\xa3\x54\x25\x4a\x55\xb7\x0f\xfd\xeb\xdf\xd3\x7f\x61\x5a\xef\x37\xcf\xa6\x38\x94\xf7\x75\xd7\xbf\x1a\xa8\xb2\x7c\xa7\x1d\x26\x69\x48\xc9\x1b\x9b\xf6\x38\x4a\xbd\x17\x07\xe6\x6b\x08\x28\xa1\xb6\xe0\xfe\x59\x03\x1d\x33\xcd\x3e\x0d\xff\xe3\x39\xf6\x01\xe1\x5b\xa2\x7f\xd5\xb3\xae\x3f\xe6\x58\xd7\x17\xbf\xba\xf8\xd5\xc5\xaf\x2e\x7e\xf5\x79\xf4\x8f\xd9\x95\x8e\xde\x63\xe0\x41\xaf\xba\x7a\x6b\x50\x57\x03\xae\x54\x2c\x96\xa3\xff\x03\x00\x00\xff\xff\xea\x2f\x44\xaf\xfd\x09\x00\x00" func runtimeSyntaxTwigYamlBytes() ([]byte, error) { @@ -3648,6 +6074,26 @@ func runtimeSyntaxTwigYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxTypescriptHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\xa9\x2c\x48\x2d\x4e\x2e\xca\x2c\x28\xe1\x8a\xd1\x2b\x29\x56\xe1\xe2\x02\x04\x00\x00\xff\xff\xdd\x53\x6a\x8b\x12\x00\x00\x00" + +func runtimeSyntaxTypescriptHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxTypescriptHdr, + "runtime/syntax/typescript.hdr", + ) +} + +func runtimeSyntaxTypescriptHdr() (*asset, error) { + bytes, err := runtimeSyntaxTypescriptHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/typescript.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxTypescriptYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x54\xc1\x6e\xe3\x36\x10\xbd\xfb\x2b\x54\x63\xdb\xd8\x32\x14\xa7\xa7\x22\x42\x5b\x21\xed\x26\xa7\x36\x29\xba\xed\xa5\x24\xb3\xa0\xa8\x91\xcd\x86\x22\x55\x72\x18\xc7\xc5\xa0\xdf\x5e\x50\x72\x36\x5e\x3b\x9b\xcd\x65\x7d\x18\x92\x23\xbe\xf7\xc6\x0f\xc3\x69\xb5\x01\xdc\xf6\x50\x66\x29\x06\xe5\x75\x8f\x93\x49\x03\x08\x0a\xcb\x49\x96\x65\x59\xba\x61\x65\x07\x65\x36\xe5\xfc\x14\xc3\x9b\xe9\x64\xe2\xa3\x81\x30\x7e\x2e\x32\xe5\x6c\x40\x69\xf1\xd4\xc6\xae\x06\x3f\xdc\xab\x59\xb1\x10\xd5\x8c\x7d\x5b\x9c\x0b\x76\x56\x9c\x8b\x9c\xce\xd8\x59\xf1\x5d\x5a\x1f\x52\x42\x16\xed\x45\x71\x25\x16\xf3\x19\x8b\x7f\x0a\x66\x7e\x11\x15\xa5\x98\x4e\xd5\xbc\xe2\xbc\x9e\xbe\x82\x3e\x31\x2f\x38\x3f\xdd\x49\x8c\xcb\xe3\x39\x71\x5f\xc2\x6f\xbd\x60\x8b\x42\x54\xbb\x54\xc5\xda\xab\x24\xf6\x6a\xf6\x63\x8a\x03\x06\xdd\x80\x45\xdd\xea\x01\xcc\x2e\x8a\xbf\x64\xf1\xef\x7b\xb1\xdb\x9c\x15\xe7\xef\x45\xce\x58\x19\x7a\xa9\xa0\x14\x22\x67\x33\xf1\x88\x0c\x28\x11\x3a\xb0\x38\xaa\xce\x64\x1d\xd0\x4b\x85\x24\x03\xc9\xb0\xb5\x8a\xe4\x46\x6a\xa4\xda\x83\xbc\x23\x25\x03\x90\x92\xa8\xd6\xa4\x8c\x0c\x81\x86\xd2\xc7\xe8\xa3\x42\xe7\xd3\x1e\xb5\x8d\x30\xdf\xb3\xef\x50\xa4\x81\x3a\xae\x56\xe0\xa9\x01\x65\xa4\x07\x6a\xa0\x95\xd1\x20\x35\x60\x00\x81\x1a\x47\x60\x02\x10\xd8\xd8\x11\x3c\xf4\xce\x23\xc1\x03\x82\x6d\x02\xb5\xda\x4a\x63\xb6\xd4\x3a\x4f\xad\x77\xdd\x4b\x3a\x6d\xb4\x0a\xb5\xb3\xb4\x02\x24\xdd\x92\xee\x7a\x33\x7c\x0f\x69\x9b\x58\xb5\x25\x3d\x98\xaf\xc0\xb5\xa4\x2d\x82\x6f\xa5\x02\xd2\x81\x0c\x20\x75\xae\x89\x06\x28\xb5\xde\x60\xde\x4b\x62\x16\x36\xe4\x5a\xea\xa5\xba\x93\x2b\xa0\xde\xeb\x7b\x89\x69\x75\xa9\x8f\xa1\xa1\x3e\xd6\x46\x2b\xf2\xf0\x4f\xd4\x1e\xc8\x03\x46\x6f\x29\x00\x52\xa2\xd2\x8a\x42\xec\xc1\x53\xd8\x68\x54\xeb\x97\x94\x70\xad\x03\xe1\xda\xbb\x0d\xa1\xdf\x52\x7a\x34\x43\x70\x2d\xdd\x4b\x4f\xf7\x4e\x37\xb4\x59\x6b\x03\xb4\xd1\xb8\xa6\xad\x06\xd3\xcc\x9f\xe9\xe6\x47\x97\x64\xf2\x1a\x7d\x04\xb2\xd1\x18\x8a\xb6\x81\x56\x5b\x68\xe8\x5a\x5e\xef\xe3\xc6\x37\x3a\x60\x2e\xbc\x97\x5b\xfa\xc9\x39\x03\xd2\xd2\xdb\xf4\x47\x2f\x6d\xec\xc0\xcb\xd4\x03\x97\xde\x3b\x4f\x57\x8f\xee\xff\x2a\x71\xfd\x09\x9e\xeb\xa1\xe3\xe9\xa6\xfe\x1b\x14\xd2\xef\xb0\xba\x7c\xe8\xe9\x1d\x7a\x6d\x57\xf4\x6e\xdb\xd5\xce\x7c\x02\x28\xed\x96\xea\x9d\xbc\x85\x7b\xf0\x34\x3e\x1e\x0a\x23\x38\x1c\x81\xf7\x5d\x64\xc5\x62\x99\xff\xf0\xfd\x8f\x5f\xfd\xf7\x75\x55\x7e\x43\xe2\x19\x67\x96\xec\x36\x17\x33\x76\xbb\x14\x34\xe3\x9c\xf3\xe5\x7c\x9e\xb3\xdb\xb4\x13\x4b\xb6\xd2\x9d\xc8\x9f\xb5\x93\xf3\x61\xc4\x0c\xa1\x1a\x23\xa5\xec\x47\x03\x67\xc8\xb0\xba\xb5\x1e\x4f\xf8\x94\xf3\x6a\xa0\x7d\xe2\xeb\x86\x32\x87\x63\xfa\x05\x94\x7e\x28\x69\x39\xfd\x90\x03\xdb\x94\xd9\xf4\xcd\x53\x62\x1c\x87\x19\x13\x9f\x65\xe1\x3c\x3f\xe4\xe1\x3c\x5f\x1e\x52\x7d\x38\xee\xbc\x77\x8d\x2b\xb3\xe9\x1f\x37\x6f\x6f\xca\xe3\xc9\x35\xba\x7e\x2c\xc6\xa7\x47\x52\x7b\x99\x70\xa7\xfb\x9d\x6b\xa7\x9f\x91\x7f\x52\xea\x41\x69\x69\x7e\x5e\x4b\xff\x31\xf4\x15\xd5\x9c\x1c\x16\x73\xf2\x85\x6a\x99\xfc\x1f\x00\x00\xff\xff\x53\xad\xdd\x6c\xd3\x06\x00\x00" func runtimeSyntaxTypescriptYamlBytes() ([]byte, error) { @@ -3668,6 +6114,26 @@ func runtimeSyntaxTypescriptYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxValaHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x4b\xcc\x49\xe4\x8a\xd1\x03\x51\x2a\x5c\x5c\x80\x00\x00\x00\xff\xff\x3d\x64\xff\x75\x0e\x00\x00\x00" + +func runtimeSyntaxValaHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxValaHdr, + "runtime/syntax/vala.hdr", + ) +} + +func runtimeSyntaxValaHdr() (*asset, error) { + bytes, err := runtimeSyntaxValaHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/vala.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxValaYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x53\x5d\x4f\xdb\x30\x14\x7d\x26\xbf\xc2\x8b\xd8\x68\x13\x25\x65\x1f\x42\x23\xda\x88\x26\xed\x9d\x97\x3d\x2d\x0e\xc8\x71\x6e\x1a\x0b\xd7\xae\xec\xeb\x76\xa0\xab\xfd\xf6\xc9\x6d\x0a\x85\x21\xfc\x94\xd8\xe7\x1c\x9f\x7b\x7d\xee\xa0\x34\xe0\xfd\x1a\x2a\xb6\x11\x5a\x24\x49\x0f\x08\x12\x2b\x96\x30\xc6\x58\x3c\x34\x62\x05\x15\x4b\x39\x2f\x23\xe0\x34\x4d\x12\x17\x34\xf8\x6a\x07\x28\xd8\x9e\x9b\x72\xde\xcd\x06\x6d\x05\x52\x6f\x43\xa7\x81\x3a\x6b\x35\x85\x5a\x8e\xc2\x51\xa8\x95\xc1\xd9\x57\xfa\x78\x41\x9f\x3f\xd1\xc5\x97\x79\x4d\xa1\xf6\xa3\x75\x48\xa1\xd6\xd6\x2c\x69\x63\x55\x4f\xbe\xf6\xea\x01\x6e\x91\x82\x51\x91\x37\xe7\xbc\x4b\xa7\x6b\x54\x0f\x06\xd5\xa0\xc0\x95\x52\x0b\xef\x2b\x96\x36\x3f\x8a\xdf\xa2\x78\xb8\x6d\xa7\x8f\xf3\xe2\xf2\xb6\xcd\x9a\xa6\xf2\x6b\x21\xa1\x6a\xdb\xac\x99\xcd\xdb\x83\x80\x47\x81\xb0\x02\x83\x07\xb3\xd6\x91\x1a\x68\x3b\x2a\x0d\xd4\x5b\x02\xed\x81\xa4\xf0\x40\x3d\x0c\x22\x68\x24\xbf\x55\x28\x47\x42\x77\x4f\x38\x3a\xbb\x25\x29\x50\x8e\xc7\xa6\x5e\x6a\x2a\xa3\x95\x01\x8a\x2d\xe9\x61\x20\x8f\x2e\x48\x24\x30\x61\x15\x4b\xb2\x86\xe0\x0f\x82\x33\x14\x79\x4a\x92\xb4\xc6\xe3\x5b\x7a\x76\x0d\x4e\xa0\x75\x64\x60\x4b\x3d\x68\x40\x20\x07\x18\x9c\x21\x13\xb4\x7e\x8b\xba\x6b\x12\xd9\x0d\x38\xa7\x7a\xa0\xb5\x53\x1b\x81\x40\xeb\xd0\x69\x25\xc9\xab\xa5\x11\x9a\x70\x54\x9e\xb6\x20\xee\x9e\x29\xad\x41\x2a\xa1\x27\x9d\xa5\x45\x4b\x9d\x03\x71\x17\xed\xa2\x32\x01\x8e\xc1\xbb\x12\x84\xc1\x32\x3e\xf7\x44\x41\x17\x80\x06\xa1\xfd\xeb\x48\x13\x56\x1d\xb8\x09\xdb\x9c\x17\x97\x6d\xfe\xec\xfa\xfb\x55\x67\x75\x79\x28\x3d\xbe\x33\xe7\x45\xbe\xc8\xbe\x7f\xbb\xaa\xab\x77\x7f\xdf\x7f\xa0\x96\x8a\xab\xff\x64\x3d\x3a\x65\x96\x51\x36\x9d\x71\xce\x79\x49\xcd\x0d\x4f\xdb\x79\xc6\x53\x3a\x7b\xdc\x39\x6b\xe7\xd9\xd9\x13\x77\x35\x75\x6c\x76\x43\x47\xb9\x99\x2f\x16\x65\xf6\x12\xb4\xfb\x8d\xcb\xa3\x70\x91\xb3\xe0\x7c\x02\xc5\x05\xa6\xdf\x95\x94\x2d\x9e\xf6\xf6\x73\xc2\x9a\x36\x39\xcc\x8a\xed\x6d\xc5\xd2\x5f\xd7\x3f\xaf\xab\xfa\x31\xd9\x26\x46\xbb\x88\x81\x2f\xb7\xa3\x42\xd8\xdb\x60\xe9\x91\xa3\xfc\xf4\x15\x74\xc5\xd2\x93\x9c\xe5\xc4\xf2\x93\x3c\x4d\xfe\x05\x00\x00\xff\xff\xa8\xac\xa2\x52\xc8\x03\x00\x00" func runtimeSyntaxValaYamlBytes() ([]byte, error) { @@ -3688,6 +6154,26 @@ func runtimeSyntaxValaYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxVhdlHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\xcb\x48\xc9\xe1\x8a\xd1\x03\x51\xf6\x2a\x5c\x5c\x80\x00\x00\x00\xff\xff\x5e\x20\xa0\x34\x0f\x00\x00\x00" + +func runtimeSyntaxVhdlHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxVhdlHdr, + "runtime/syntax/vhdl.hdr", + ) +} + +func runtimeSyntaxVhdlHdr() (*asset, error) { + bytes, err := runtimeSyntaxVhdlHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/vhdl.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxVhdlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x56\xdd\x8e\xdb\x46\x0f\xbd\xf7\x53\x18\xc6\x87\x2f\x52\x16\x72\x93\xcb\x1a\x6d\x85\xdc\xf4\x21\x6a\xb9\x06\x25\x51\x12\x9b\x11\x47\xe0\x70\xfc\x13\xf0\xe1\x8b\x91\xd7\x86\x1d\x64\xd7\x6d\x6f\x76\x2d\x0c\x79\xf8\x77\xe6\x70\x3a\x72\xa8\xe7\x09\x37\xcb\xc3\xd0\xba\xc5\xa2\x45\xc5\x46\x37\xcb\xc5\x72\xb9\x5c\xa6\x43\x86\x11\x37\xcb\x55\x55\xad\x93\x41\xf9\xbf\xd5\x62\x21\xd1\x61\xd8\xcc\x16\xc5\xf2\xe2\xbc\xca\x28\xaf\xaa\x3a\x0b\x2a\xc4\xbd\x11\x2b\xf6\x28\xc6\xa0\x51\xc0\xd9\xe4\x03\x29\x1d\xd0\xb2\xc8\x79\x19\xa8\x67\x6c\x2d\x68\xbb\x8f\xa5\xf3\x3d\x35\xd9\xfe\x80\x8d\x7a\xc9\x4b\xab\x49\xef\xbf\xbc\x77\x08\x6c\xb1\x3c\x7d\xfa\xfc\xad\x34\x10\x81\xb3\x09\x70\x8f\x29\xde\xea\x35\x09\x6a\x91\x95\x3a\x42\x49\xa9\x94\x94\x3b\xaa\x05\xe4\xbc\xdd\x6e\xc2\x04\x0d\x6e\x76\xbb\x97\x2d\x14\xdf\xbe\x14\x7f\xec\x3f\x15\x3f\xef\x5e\xde\x74\x8c\x01\xdf\x70\xaa\xaa\xf5\x3b\x7e\x8d\x1f\x27\xcf\xc8\xfa\xef\x43\x66\x20\xcd\x40\xa9\xed\x51\xd0\x1a\xcf\x1d\xf5\x51\x40\xc9\x73\xfe\x26\xda\xfd\x81\xef\xfe\x43\xd0\xf4\xad\x67\x9b\xa0\xf9\x0a\x3d\xfe\xb3\x40\x14\xde\xc4\x43\x6e\xef\x2d\xb3\xc7\xa2\x5e\x83\xdd\x9a\x64\x93\xf8\x06\x43\xb8\x86\xb7\x1e\x19\x05\xf4\x31\x8f\xbc\xfc\x61\x2d\x41\x41\x71\x44\xd6\xd7\xd0\x89\x77\x50\x07\x83\x66\x86\x84\x4e\x51\x0c\x1c\x41\x30\x70\xce\x80\x5b\x7b\x48\x06\x42\x40\x51\x03\x55\xa1\x3a\xea\x03\x91\x7e\x84\x5d\x63\x4f\x6c\xb5\xf3\xcd\x57\xab\x7d\x7b\xb6\x3a\x76\x1d\x8a\xd5\x31\x58\x03\x01\xef\xca\x7a\x18\x5e\xfa\x0a\x0a\xac\xcf\x02\xb4\x14\x1a\xcf\x8c\x8d\x5a\xeb\x8f\xac\xde\xd0\x05\x4c\x7f\xa8\x33\xe4\xf6\xda\x3e\x3c\xd1\x53\xac\x74\x65\xad\xf3\x62\x5d\xe4\x66\xce\xe2\xda\xda\xcb\x0f\x6a\xac\x8f\x20\x2d\xb6\xcf\x90\xa8\x33\x1a\xa7\xd4\x30\x62\x23\x46\x51\x02\x67\xc4\x3e\xaa\x51\x78\xe6\xed\xa0\x46\x67\xaf\xd7\xd0\x1c\xf1\x3c\x66\x47\x8a\x49\x0f\x9c\xf7\x93\x8d\x30\xd9\xe8\x9f\xe6\xc1\x69\x80\x8c\x47\x63\x3c\xa9\xb1\x17\x63\xaf\xc6\xd1\x39\xf3\x9d\x79\x36\x3f\x21\x9b\x17\xf3\x3a\xa0\x04\xf3\xf1\x69\x93\xae\xac\x9b\xbc\x68\xd2\x26\x4d\xe3\x6b\x2f\xa4\x6c\x53\xc5\x37\x7a\x46\x79\x4a\x8f\x59\x8c\x4c\xb0\xf1\xd2\x9a\x60\x4f\x21\xf1\x4f\xf0\xaf\x34\x4f\xc1\xd1\x04\xe7\x38\x82\x1a\x85\x4d\xbc\x33\xf1\xf2\x0c\x35\xa0\x4b\xfe\x01\x0f\x28\x69\xf6\x61\x00\x49\x9a\x49\x3d\x83\xb3\xe0\xc0\x82\x73\x16\x04\x2c\x88\xb3\x10\xeb\xa4\xc3\xcf\x40\x75\x40\x36\xf5\xa6\x02\x1c\xe6\xa4\x92\x97\x45\x86\xae\xc3\x46\xb1\xb5\xc8\xa4\xc1\x22\x2b\x39\x8b\xe1\x29\xe0\x01\x84\xa0\x76\x68\x47\x20\xb5\x63\x82\x3f\x0e\x89\x81\x47\xd2\xc1\x4e\x69\x58\xa7\xf7\x6b\xfd\x90\xd5\xe9\x0a\x39\xec\xd4\x84\xfa\x41\x6d\xa0\x7e\x30\xe7\x8f\x69\x30\x76\x48\xc5\xc6\xa6\xb1\x29\x55\x9f\xac\x7c\x77\xb1\xf3\x89\x9e\x69\x88\x99\x83\xa0\xfb\xbc\x3c\x80\x8b\x98\xbf\x1d\x27\x93\xd4\xcb\x80\xfb\xbc\xbc\x8c\xcc\x21\xf7\x3a\x18\x84\x06\xb9\x4d\x5b\x0b\x0f\xe9\x0e\x07\x4d\x15\xbd\x03\x14\x68\x9c\x1c\xda\x04\x3a\x18\xcd\x37\xbc\xc1\x7c\x9f\xf6\xe4\xbb\x03\xd5\x76\x3f\x82\x36\x83\x65\x42\x21\x85\xeb\xc0\x39\xe2\x3e\xdf\x63\xdb\xa3\x51\xd8\x9f\x9e\xb4\x5b\xfd\x3e\x8b\x7c\xdd\x9e\x97\x7f\xd7\x4d\x7b\x5d\x90\x41\xdb\xeb\x4e\xbd\x2e\xd1\x07\xd4\xf3\x58\x7b\xb7\xf6\x53\x92\x04\x3f\x8b\x77\x55\xbd\x58\x61\x55\xf5\xd1\x7e\xb2\xff\xdb\x2f\xf6\x9b\xfd\x6a\x55\xb5\xb6\xcd\xad\x05\x57\x1d\x5b\x73\x1c\xeb\x9b\xe2\x7f\xc8\xb6\x9f\x8a\xcf\x3b\x8b\x76\xb2\x6f\x76\x34\x67\x83\x15\xf9\x07\xdb\xd6\xfe\xb4\x2b\xab\xd5\x7c\x0c\x45\xf7\xa5\xf8\xfd\x7b\xa3\x97\x6a\xf5\x3e\x76\x55\xd5\xdb\xcb\xca\xdd\xef\x5e\x32\xdc\x56\x55\xb1\x2b\xb7\xf3\x16\xc8\xcb\x6c\x59\x6e\xbb\x89\xe3\xb8\x2b\x43\x5e\xde\x15\x77\xc3\x4a\xaf\x86\x7b\xda\x4b\xc4\xd4\xed\x47\x3e\x5f\xad\xef\xa5\xc6\x6b\xa2\xb2\xf0\xcc\x06\x91\x24\xa3\x40\xee\x3b\x11\xb8\x85\xb9\x3c\x76\xd2\xe3\x68\xb5\xfd\xb3\x5a\xed\x3e\xde\x97\x35\xbe\xce\xae\x28\xd6\x1f\x57\x8b\xbf\x03\x00\x00\xff\xff\x82\x03\x0d\x07\x67\x09\x00\x00" func runtimeSyntaxVhdlYamlBytes() ([]byte, error) { @@ -3708,6 +6194,26 @@ func runtimeSyntaxVhdlYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxViHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\xcb\xe4\xd2\x88\xab\xd1\xaf\x89\xd1\xd3\xd4\x48\xad\xa8\x29\xcb\xcc\xd5\x2c\x4a\x56\xa9\x89\xd1\x2b\xcb\xcc\xe5\xe2\x02\x04\x00\x00\xff\xff\x51\x57\x94\xb1\x1e\x00\x00\x00" + +func runtimeSyntaxViHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxViHdr, + "runtime/syntax/vi.hdr", + ) +} + +func runtimeSyntaxViHdr() (*asset, error) { + bytes, err := runtimeSyntaxViHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/vi.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxViYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x90\xc1\xaa\xdb\x30\x10\x45\xf7\xfe\x0a\xd5\x84\xc6\x4e\x71\x9a\x6d\x0c\xc5\x94\xfe\x45\x25\x35\xc8\xf2\xb8\x15\x95\x46\x46\x92\x8d\x5b\xe6\xe3\x1f\x71\xf2\x92\x60\x08\x64\xf5\x66\x25\x5d\xe9\xce\x9c\xb9\xbd\xb1\x90\xfe\x0d\x50\xb3\xc9\x64\x59\x07\x09\x74\xaa\x33\xc6\x18\x3b\xbf\xa0\x72\x50\xb3\xbc\xf8\x45\x5f\x49\x88\x7d\x59\xc0\x4c\x93\x71\x65\xd0\x9b\xf3\x7d\x32\x2e\xcf\xb2\x30\x5a\x88\x17\x4f\xc5\x4c\x07\x98\x4c\x6f\x20\xd4\x2c\xe7\xdf\xab\x9f\xaa\xfa\x7f\x92\xd7\xc3\xa1\x3a\x9e\xe4\x8e\xf3\x3a\x0e\x4a\x43\x2d\xe5\x8e\x17\xa5\xcc\xaf\xd6\x98\x54\x02\x07\x98\x6a\x96\x0b\xd1\x16\x1c\xa7\x39\x7a\x63\xb5\x6c\x0a\xf4\x01\x68\xc4\xb2\x71\x6a\x20\x8e\x93\x9d\x25\x12\x37\xda\xcb\x06\x3d\x71\x6d\xac\x9f\x66\xc9\x47\x27\x29\x36\x23\xba\x52\x88\xf6\x59\xdf\x88\x3e\x10\x8e\x48\xe8\x28\x42\x22\xd3\x13\x60\x67\x7a\xb2\x90\x68\x44\x0b\xe9\x99\x9b\x7f\xfa\xfc\xed\x86\xab\x3d\xc6\xa4\x30\xed\x71\x74\xed\xb2\xae\x10\x2d\x3f\x54\x47\xf9\x65\xb1\xaf\xbf\xc5\x14\x0c\xfe\xbe\xe4\x74\xae\x98\x54\x58\x90\xf2\xfc\xa6\x01\x76\x2b\x25\xfe\x35\xc3\xd2\x5a\x88\xfd\x5d\x7d\x88\xfc\xbd\x1e\x27\x0d\xa0\x8d\xb2\x3f\xfe\xa8\x70\xb7\xbe\x8a\xb3\x5d\xd3\x6c\x3f\x00\x46\x7b\xb7\x44\xfc\x42\x38\x9b\xf5\x60\xc6\xe5\x4d\xc9\xb2\xb7\x00\x00\x00\xff\xff\x87\xcc\xe5\x31\xd0\x02\x00\x00" func runtimeSyntaxViYamlBytes() ([]byte, error) { @@ -3728,6 +6234,26 @@ func runtimeSyntaxViYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxVueHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2a\x2b\x4d\xe5\x8a\xd1\x2b\x2b\x4d\x55\xe1\xe2\x02\x04\x00\x00\xff\xff\xd2\x94\xf3\xc5\x0c\x00\x00\x00" + +func runtimeSyntaxVueHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxVueHdr, + "runtime/syntax/vue.hdr", + ) +} + +func runtimeSyntaxVueHdr() (*asset, error) { + bytes, err := runtimeSyntaxVueHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/vue.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxVueYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x90\xcd\xaa\xc3\x20\x10\x85\xf7\x3e\xc5\x20\x77\x75\xa1\xe9\xaa\x1b\x29\xed\x8b\x64\x23\x7a\x42\x53\x26\x21\xc4\x31\x90\xb7\x2f\x32\x25\xf4\xc7\x12\x77\xf2\xcd\x78\x3e\x4f\xd7\x33\x64\x9d\xe0\x68\xc9\x30\x26\x42\x10\xc4\x19\x22\xa2\x82\x46\x3f\xc0\x91\x6d\xdb\x66\xc9\xf8\xb3\xc6\xcc\x99\x91\x94\x1f\x28\xa2\xf3\x99\x9f\xe3\xe5\x24\xf1\xb3\x38\xb2\x67\xc1\x30\xb1\x17\x34\xff\xd7\x8b\xdd\x30\xc6\x58\xe0\xb1\x4e\xf5\x69\xda\xee\x9a\xd1\x8f\x81\x73\x2c\x12\x37\x19\xf8\x64\xdf\xf0\x87\x07\x7d\x8b\xa4\x30\xf7\x93\xd4\x35\x6a\xec\xe5\x7f\x35\x87\xbb\x5f\xbc\xae\xe9\xca\x6e\x11\x49\x56\xfe\xd1\x42\x05\xed\xa4\x87\x94\x74\xf6\x11\x00\x00\xff\xff\xe1\x4d\x6b\x0b\xb6\x01\x00\x00" func runtimeSyntaxVueYamlBytes() ([]byte, error) { @@ -3748,6 +6274,26 @@ func runtimeSyntaxVueYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxXmlHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xaa\xc8\xcd\xe1\x8a\xd1\xd3\xa8\xc8\xcd\xa9\x29\x4e\xcf\xcd\xb1\xaf\x29\xca\x4b\xaf\x29\xc8\xc9\x2c\x2e\xd1\x54\xe1\xe2\x02\x04\x00\x00\xff\xff\x86\x47\xb0\x14\x1e\x00\x00\x00" + +func runtimeSyntaxXmlHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxXmlHdr, + "runtime/syntax/xml.hdr", + ) +} + +func runtimeSyntaxXmlHdr() (*asset, error) { + bytes, err := runtimeSyntaxXmlHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/xml.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxXmlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\xcd\x31\x0b\xc2\x30\x10\x05\xe0\x3d\xbf\xe2\x3c\x44\xb4\x90\xba\xa7\x62\x07\x75\xd6\xc1\x45\xda\x0a\xa5\xbd\x96\x40\x12\x4b\x12\xa1\x42\x7f\xbc\x84\x56\x87\x22\xbe\xf5\xdd\xfb\xae\x91\x8a\xfc\xab\x23\x01\xbd\x56\x8c\xd5\xe4\xa9\xf2\x82\x01\x00\x84\xca\x94\x9a\x04\x60\x9e\xc7\xeb\x5e\xab\xc1\xb5\x5a\xa5\x83\x35\xed\xd0\x29\xe9\xfc\x66\x89\x8c\xd9\xa7\x22\x37\x2e\x38\xc8\x9a\x8c\x97\x8d\x24\x2b\x00\x77\x71\x94\xee\x71\x6a\xaa\x87\xd6\x64\x26\x3a\xc4\xf9\xd2\xfa\x70\xb5\x38\x9e\x0f\xd7\xdb\xe5\x84\xdf\x8a\x4c\x2d\x00\xb3\x6d\xf1\x99\x87\x8c\x7f\x20\x2b\x66\x20\xfc\x10\x39\x9f\x63\x9c\xff\xa1\x5c\x47\x95\x2c\x95\x00\x5c\x65\xf7\xa4\x88\x12\x64\xef\x00\x00\x00\xff\xff\x1f\x6d\x27\xb2\x18\x01\x00\x00" func runtimeSyntaxXmlYamlBytes() ([]byte, error) { @@ -3768,6 +6314,26 @@ func runtimeSyntaxXmlYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxXresourcesHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xaa\x28\x4a\x2d\xce\x2f\x2d\x4a\x4e\x2d\xe6\x8a\xd0\x48\x49\x4d\x4b\x2c\xcd\x29\x29\xae\x81\x0b\x6a\xaa\x70\x71\x01\x02\x00\x00\xff\xff\x1b\x8e\xfc\x39\x23\x00\x00\x00" + +func runtimeSyntaxXresourcesHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxXresourcesHdr, + "runtime/syntax/xresources.hdr", + ) +} + +func runtimeSyntaxXresourcesHdr() (*asset, error) { + bytes, err := runtimeSyntaxXresourcesHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/xresources.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxXresourcesYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\xcf\xdd\x4a\xc3\x30\x18\xc6\xf1\xe3\xe5\x2a\x5e\xc3\x0e\xda\x86\x15\x4f\x7d\x41\xbc\x0d\x21\xcd\x20\xcd\xde\xb2\x40\x3e\x4a\x3e\xd4\x61\x2f\x5e\x6a\xdd\x98\xe8\xf9\xef\xf9\xc3\x33\x59\x47\xe5\x32\x13\xc2\x47\xa2\x1c\x6b\x32\x94\x19\x3b\x51\x21\x53\x10\x18\x00\xc0\x4a\x82\xf6\x84\xc0\x5f\x9b\x13\x4d\xba\xba\x92\x97\x9b\x6e\xf7\x9c\xb1\x54\x1d\x65\xfc\xe6\x07\xc8\x33\x19\xab\x1d\x02\x3f\x4a\x89\xda\x85\xea\x51\x29\x31\x0c\x1d\xff\x11\xf6\x44\xa1\xd8\xc9\x52\xea\xdf\x74\x42\xe0\xc3\xd0\xfd\xa6\x78\xa5\x26\x86\x5c\x74\x28\x7d\xa8\x7e\xa4\xcd\x8e\xf2\xf1\xf0\xb4\xaa\xf1\xaa\xf2\xc5\x8f\xd1\xf5\x71\xa6\xa4\x4b\x5c\x95\xec\xf0\x59\xfd\x89\x8c\x31\xba\x2d\xd1\x94\x54\x69\x99\xb4\xcb\xd4\xde\x85\x4c\xf4\x9e\x42\x41\xe0\xcd\x71\x91\x12\xf3\xac\x0d\xa1\x52\xed\x43\x23\x8f\x9f\xaa\xef\xda\x97\xfd\xed\x45\x58\x6f\x1c\xcc\x59\xa7\xfe\xfd\x6c\x0b\x6d\x18\xf8\xdd\x4e\xfc\xa7\x11\xf8\x4e\x80\x58\x40\xec\x04\x67\x5f\x01\x00\x00\xff\xff\x03\xc7\xb0\x2d\x83\x01\x00\x00" func runtimeSyntaxXresourcesYamlBytes() ([]byte, error) { @@ -3788,6 +6354,26 @@ func runtimeSyntaxXresourcesYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxYamlHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xaa\x4c\xcc\xcd\xe1\x8a\xd1\xab\x4c\xb4\xcf\xcd\x51\xe1\x52\x8d\x74\xf4\xf5\xe1\x02\x04\x00\x00\xff\xff\xc3\x03\xef\xb8\x14\x00\x00\x00" + +func runtimeSyntaxYamlHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxYamlHdr, + "runtime/syntax/yaml.hdr", + ) +} + +func runtimeSyntaxYamlHdr() (*asset, error) { + bytes, err := runtimeSyntaxYamlHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/yaml.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxYamlYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x91\x41\x8f\xd3\x30\x10\x85\xef\xfe\x15\x5e\xb3\x4b\x93\xad\x1c\x71\xc5\x07\x50\x85\x5a\x2e\x4b\x2b\xb1\xe5\x50\x32\x89\xe4\xb6\x13\xd6\xc2\x71\x42\xec\x0a\x05\xcd\x8f\x47\x4e\x28\x0d\x5d\x2e\x48\x58\x95\x55\xbd\x89\xdf\x7c\x7a\xaf\x32\x16\x43\xdf\xa2\xe2\xbd\xae\x2d\x63\x47\x0c\x78\x08\x8a\x71\xce\x79\x9c\x39\x5d\xa3\xe2\x02\x20\xeb\xf5\xdb\xda\xde\x8a\x61\xf2\x84\xfa\x88\x9d\xe2\xe2\x6e\xb7\xf8\xf0\x20\x18\xeb\x4e\x16\xfd\xf8\x4a\xf2\xd1\x4f\x24\x25\xf1\xf4\xe6\x26\xd9\x1b\xa7\xbb\x9e\xf6\x4d\x63\xa9\xb2\x8d\x0e\x64\x5c\xa0\x5a\xb7\xe4\x4e\xd6\x52\x13\xff\x79\xfc\x46\x1e\x03\xf9\xd0\xa5\x5c\xfc\xf2\x39\x34\xce\x07\xed\x82\xe2\x11\x60\x9f\xec\x96\x8f\xd4\xa3\xa7\x1d\xf5\xb4\x59\x53\xe3\x68\xfb\xf1\xd3\x92\xb6\xdd\x09\x29\xc4\x6b\xbd\x21\xd7\xd0\x9a\x1c\x6d\x56\x2b\x6a\xaa\x8a\x56\x8b\x87\xc7\x25\xad\xb4\xf5\x48\x55\xbc\x53\x80\xfd\xd9\xdf\x07\x1d\xb0\xc6\xb8\x40\x24\x2a\xcf\x95\x6f\xf5\x01\x55\x51\x10\x40\x4e\x00\x05\x4d\xc5\x79\x4e\x6f\x0a\x2a\x27\xca\xbd\xe4\xe9\xd9\xcb\x1c\xd1\x05\x53\x99\x21\x95\xc9\x37\x39\xc0\xfd\xcb\x22\x5f\xc8\xcf\x5a\xfe\x78\x25\x5f\x17\x73\xf1\x67\x4a\xb9\xcc\x00\xbe\x17\x73\xf5\x37\xaa\x8b\xd8\xe2\xc1\x68\x1b\x93\x48\x4a\x29\x25\x95\x00\xd9\xf8\xa3\x72\x28\x81\xca\xbb\xed\xe2\x7d\x2a\xd8\x55\x78\x99\x0f\x9d\x71\x5f\xc6\x6e\xe2\xf1\x41\x77\xe1\x5c\x0f\x08\xf1\x7b\x80\xee\x18\x9b\x9e\x28\xfe\xab\x69\x87\xf2\x01\xb2\x8b\x3a\xe9\xfa\x7c\xa6\xeb\x46\xd2\x77\x4f\xba\xbb\x3c\xfd\x27\xa6\xd9\x35\xd2\xec\x19\x51\x32\xf8\xa6\x94\xcc\x66\xe9\xff\x01\xab\x87\xc4\x9f\x01\xbd\xb8\x66\xb9\xbd\x5e\xc7\xf3\x82\x31\xf6\x33\x00\x00\xff\xff\xd6\xcd\xd8\x11\x47\x03\x00\x00" func runtimeSyntaxYamlYamlBytes() ([]byte, error) { @@ -3808,6 +6394,26 @@ func runtimeSyntaxYamlYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxYumHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xaa\x2c\xcd\xe5\x8a\xd1\x2b\x4a\x2d\xc8\x57\xa9\xa9\x2c\xcd\xd5\xd3\x8a\xd1\x4b\xce\xcf\x4b\x53\xe1\xe2\x02\x04\x00\x00\xff\xff\x60\xc7\x8f\x6f\x1a\x00\x00\x00" + +func runtimeSyntaxYumHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxYumHdr, + "runtime/syntax/yum.hdr", + ) +} + +func runtimeSyntaxYumHdr() (*asset, error) { + bytes, err := runtimeSyntaxYumHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/yum.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxYumYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8f\x4d\x4b\xc4\x30\x10\x40\xcf\x9b\x5f\x31\xc4\x1e\xfa\x41\x83\x57\x03\x8b\x07\xcf\x1e\x3d\x48\x92\x42\x4c\xa7\x34\xd0\xa6\x25\x1f\x4a\x31\x3f\x5e\x5a\x57\x5d\x70\x6f\x03\xf3\x1e\x6f\x66\xb0\x13\xc6\x6d\x45\x0e\x5b\x9a\x09\xe9\x31\xa2\x89\x1c\x08\x00\xc0\xbe\x73\x7a\x46\x0e\x54\x4a\xe6\x71\x5d\x8a\xbc\xa5\x99\xd5\x52\x32\xb3\xb8\xa1\xa0\x84\xf8\x34\x61\xe0\x07\xde\x82\xed\xd1\x45\x3b\x58\xf4\x1c\x68\x27\x04\x0f\xab\x36\xc8\x95\xaa\x45\x77\x56\xf5\x99\x5e\x38\xb3\xb8\x10\xb5\x8b\x2c\xac\x68\xac\x9e\x9e\x46\xfd\xcf\x90\x52\xec\x21\x55\xfc\x48\x21\xea\x88\x33\xba\x78\x9c\x53\x94\x1e\x27\xd4\x01\xdf\xd1\x67\xed\xcd\x98\xdf\x74\xc0\x63\x48\xc9\xf6\xf9\xf5\xe5\x59\xdc\xb7\x0f\xaa\xfa\x6b\xce\x17\xb9\xec\xf2\x55\xa8\xba\x2b\x45\xf7\xa9\x58\x5d\x3d\xfe\xa6\xac\xdb\x1f\x69\xcd\xa8\x3d\xfb\x18\x6d\xc4\x6f\x18\xe8\x95\xd7\xdc\xa2\x39\xd0\x53\x03\x4d\x86\xe6\xd4\x50\xf2\x15\x00\x00\xff\xff\x86\x2c\x1d\xe7\x5c\x01\x00\x00" func runtimeSyntaxYumYamlBytes() ([]byte, error) { @@ -3828,6 +6434,26 @@ func runtimeSyntaxYumYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxZigHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xaa\xca\x4c\xe7\x8a\xd1\xab\xca\x4c\x57\xe1\xe2\x02\x04\x00\x00\xff\xff\x11\x2d\x3b\x18\x0c\x00\x00\x00" + +func runtimeSyntaxZigHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxZigHdr, + "runtime/syntax/zig.hdr", + ) +} + +func runtimeSyntaxZigHdr() (*asset, error) { + bytes, err := runtimeSyntaxZigHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/zig.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxZigYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x54\xcd\x8e\x1b\x37\x0c\xbe\xfb\x29\x84\x69\x0e\x76\x0c\xef\x3f\x8c\xcd\x5c\xd2\x20\xdb\x00\x3d\xb4\x29\x8a\x1c\x16\xdd\x31\x0c\x8e\xc4\xb1\x09\x6b\xa8\x81\x7e\xec\xb5\xc1\x87\x2f\x34\x1e\xaf\x37\x9b\x43\x8b\xcc\x41\x12\x29\x91\x1f\xc9\x8f\x9c\x86\x2c\xc6\x7d\x87\xa5\x3a\xd0\x6a\x34\x32\x18\x51\xc7\x72\xa4\x94\x52\xf9\x8a\xa1\xc5\x52\x15\x55\x75\x71\xa0\xd5\xbb\x62\x34\xf2\xc9\x62\x38\xde\xff\xa2\x9a\xc4\x3a\x92\x63\x65\xb0\x21\xa6\x7c\xec\x6f\x66\x8a\x0c\x72\xa4\x86\xd0\x97\xaa\x68\x58\x3d\xc1\xec\x70\x35\xfb\xb0\x5c\x4c\x8b\xfe\x45\xb6\xfe\x1b\x03\xfa\x2d\x1a\xb5\x73\xde\x84\xc1\x30\x44\x88\xd8\x22\xc7\x1e\xb5\x1e\x83\xa5\x15\x0b\xb0\x11\xb0\xd6\xed\x0e\xe8\x9d\x00\xef\xd1\x7b\xe7\x05\x42\x2b\x10\xf6\xac\x05\x76\x40\x51\x6a\x8f\xb0\x11\x0d\xac\xd1\x8a\x86\xa8\xd7\xa2\x5d\xdb\x45\x6a\x51\xb4\xe3\x10\xf3\x1a\x89\x13\x8a\xc1\x06\xbd\xa0\x0d\x28\xc8\xa9\x15\xf4\x7e\x50\xf5\x9e\xf1\xb9\x73\x3e\x0a\x3e\x47\xf4\x2c\x0d\xe4\x77\x0d\x4b\xe3\xbc\x50\x23\xc4\x96\x18\x85\x61\x83\x46\x6b\x61\x07\x96\x20\x08\x27\x6b\xc5\x79\x71\xbe\xf7\xdb\x81\xde\xa0\x91\xce\xbb\x96\xb2\x98\x6a\xf1\x18\x52\x8b\xe2\x31\x26\xcf\x62\x89\x37\x01\xfb\x0a\x4a\x88\x46\x83\xb5\x5a\x4b\x88\x3e\xe9\x28\x21\x85\x0e\xd9\x48\xd8\x51\xce\x23\x62\x88\x12\xd7\x1e\xc1\x58\xa7\xc1\x4a\xf4\x09\x25\xfa\xbd\x24\xee\xab\x8f\x46\x12\x67\x4f\x89\x3d\x82\x5e\x43\x6d\x51\x52\x40\xd9\x82\x97\xad\xb3\x10\xc9\xa2\xec\xd6\x64\x71\x52\x55\xf5\x99\x86\x3a\x91\x8d\xc4\x2f\x64\xbe\x30\xd1\xa1\x26\xb0\xa5\x2a\x7e\x9d\x66\xfa\xbe\xe3\xee\x73\xae\x26\x70\x3c\x3d\xd6\x83\x5c\xaa\xe2\xe9\xd3\xec\x9f\x45\x5e\x96\x8b\xe9\xf8\xe9\x6a\xf6\x61\x31\x9d\x7c\x3c\x5b\xfe\x99\xda\x1a\x7d\x50\xe3\x35\x3e\x83\x41\x4d\x2d\x58\x35\x55\xc3\x69\xf2\xc6\xdf\x05\xf7\xcf\x87\x66\xb8\x7a\x7e\xfa\x34\xfb\xd2\xbb\x94\xc1\xf3\x77\xa9\xfc\xe5\xa9\xa5\x48\x5b\x54\xdf\xf6\x1d\x06\x75\xa9\x1e\xd0\x53\x6e\xb1\x07\x88\x70\x54\x0e\x00\xc7\x9e\x2f\xc6\xc7\x68\x61\x76\x58\x4c\x65\x4c\xf7\x92\xee\x85\xae\xe7\x92\xae\xe7\x42\xb7\x37\x92\x6e\x6f\x84\xe6\x77\x92\xe6\x77\x42\xd7\x37\xf7\x92\xf2\x42\x81\x0e\xb9\xb8\x79\xd5\xcb\xb0\xce\xad\xa2\x97\xe9\x74\x20\xee\xc5\xe3\x66\x1d\xaf\xb2\x34\xec\x79\x7b\xad\x7a\xa5\x36\x2e\x65\xce\xf4\x72\xeb\xc8\x48\x73\x3d\x97\xe6\xf6\x46\x9a\xf9\x9d\x34\x19\xb4\x76\xce\x4a\x7f\xc5\x6e\x68\xa0\x9c\xc4\x79\x1a\x4e\xad\x7e\xc4\x3f\x09\x8d\x75\x10\x27\x93\x62\xf4\xb6\xb2\x21\x7a\xe2\x55\x39\x14\x4f\xe5\xc9\xf3\xfd\xd4\x15\xc5\x8b\x0e\xd9\xbc\xd1\x84\x0d\x75\x3d\x1b\x55\x75\x71\xd6\xbe\xfa\x2b\x9c\xbe\xd7\x48\xc7\x4e\xfa\xbc\x06\x7f\x36\x7d\x09\xa7\xed\xa7\xfd\x87\x30\x2e\x2f\xdf\x86\xf1\xee\x3f\xf0\xa2\x33\x2e\x53\xfa\xed\xeb\xc3\x57\x79\x7c\x7c\x94\x2f\xbf\x3f\xfe\xf1\xdb\xa4\xfc\xf8\x3f\xc0\xaa\xea\xfd\x0f\x59\x57\xef\x2f\x7f\x1e\xf1\xdf\x00\x00\x00\xff\xff\x3f\xc8\x6c\xd6\x58\x05\x00\x00" func runtimeSyntaxZigYamlBytes() ([]byte, error) { @@ -3848,6 +6474,26 @@ func runtimeSyntaxZigYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxZshHdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xaa\x2a\xce\xe0\xd2\x88\xd1\xab\x2a\xce\x50\xa9\x89\xd1\xb3\xd7\xa8\x2a\xce\x48\xcd\x2b\xab\xa9\x2a\x28\xca\x4f\xcb\xcc\x49\xad\xa9\x2a\xce\x28\x4a\xae\xa9\xca\xc9\x4f\xcf\xcc\x03\x53\xf9\xa5\x25\x9a\x2a\x9a\x5c\x71\xca\x8a\x7a\x5a\xfa\x1a\xa9\x79\x65\x0a\xda\x9a\xf6\x55\xc5\x19\x1a\x0a\x35\x2a\x9a\x5c\x80\x00\x00\x00\xff\xff\xe7\xaa\xc8\xe4\x4f\x00\x00\x00" + +func runtimeSyntaxZshHdrBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxZshHdr, + "runtime/syntax/zsh.hdr", + ) +} + +func runtimeSyntaxZshHdr() (*asset, error) { + bytes, err := runtimeSyntaxZshHdrBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/zsh.hdr", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxZshYaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x55\x5d\x6f\x1b\xb7\x12\x7d\xf7\xaf\xd8\xc8\xc6\x8d\x36\xbe\xf2\x4d\x72\x93\xa0\x75\x3f\xd4\x36\x40\xd1\x87\xa2\x2f\x05\xfa\x10\xd3\x6d\x29\x72\x56\x64\x96\x4b\x6e\x38\x43\xcb\x52\x4e\xfe\x7b\xc1\x95\xbf\xaa\x24\x68\x05\xed\x72\xf9\x31\x67\x86\x87\x73\x86\x9d\x0f\x24\xdb\x91\xce\x9b\x1d\xbb\xa3\x23\x4b\x42\x46\xce\x8f\x9a\xa6\x69\xea\x54\xd4\x03\x9d\x37\xb3\xb9\x52\x67\x3b\x76\x27\x50\xea\x6c\x39\xdf\xb1\xa3\x78\x85\xdd\x98\x53\x5d\x83\x1d\xbb\x6c\xb0\x0b\x69\xed\xe3\xd4\xa4\x22\xed\x49\x3b\x9b\x50\x1c\x69\x4b\xf9\xbc\x99\xfd\x7e\xfc\xe8\xec\xc9\xff\xe6\x14\xaf\x9a\xd3\x76\xb9\x63\x37\x6f\x50\x17\x1d\xe5\x12\x88\xf7\x2e\x8f\x8f\x9b\x5f\xca\xb0\xa2\xcc\x53\x77\xd1\x98\x14\x59\x74\x94\xb3\x38\x0d\x9f\x37\x33\xa5\x56\x17\x4f\x17\x5f\x5e\x9e\x2a\xb5\x9a\x1d\x4d\xcb\x26\xbb\xd7\x29\x5a\x2f\x3e\x45\x1d\xb8\xd1\xd1\x56\x53\xc9\x29\x34\x5d\x48\x9b\x1b\x34\x16\x2d\x34\x50\x94\x3d\xce\x5c\x87\x8d\xde\x32\x56\x99\x74\x8f\xd5\x96\x60\x34\x13\xaa\xa1\x8f\x85\x60\x3d\xa7\x4d\x84\x4d\xb0\x29\x12\x28\xf8\x0e\x14\x98\x40\xac\x0d\xe8\xda\x0b\x3a\x8f\x2e\x65\x74\x25\x9a\xea\x1b\xbe\x83\x8f\x08\xc9\xe8\x80\x4c\xda\x22\x93\x94\x1c\xc1\x14\xc8\x08\xd8\xf9\x4e\x20\x8e\x22\xc4\x0f\x84\x12\xc5\x07\x6c\x9c\x0f\xd4\xde\xef\xe7\xef\x81\xce\x95\x7a\x0f\xa5\x3e\x40\xa9\x39\x94\x6a\xa1\xd4\x57\x50\xea\x12\x4a\x5d\xe0\x4f\x28\xa5\x14\x94\x3a\xc1\xd7\xf8\x16\x8f\xf0\x0d\xfe\x03\xa5\x70\x43\xfe\x21\x33\x4d\x17\xf4\xfa\x96\x5b\x1e\xc9\x78\x1d\xce\x9b\xd9\xe2\xe2\x67\x4b\xdd\x3a\x97\xcd\xf5\xe5\x14\xc6\x47\x0b\xe6\xf4\x0e\x91\xb0\x16\x04\xc1\x9a\x10\x08\x8c\x88\x5d\x7b\x70\x0a\x3f\x68\x76\x0b\x1f\x1d\x65\x2f\x64\x3f\x43\xfb\xbc\xc4\x76\xa9\x83\xd7\x8c\x95\x8f\xb6\xa7\x2d\x56\xc5\x07\xf1\x11\xc6\xc2\x92\x09\x3a\x13\xe8\x4a\x07\xd0\x35\x55\xa6\xc7\x94\x05\x6f\xd3\x8a\x11\x48\x30\xa6\xd1\x62\x2c\xec\x2c\x98\x04\x9c\x4a\x36\x84\x9a\xc5\xb5\x5b\x06\xcd\x3d\x4a\x64\x92\xf6\x6e\x33\x53\x70\x6f\x7e\xfd\x69\x31\xed\xa9\xf3\xe6\x26\xb4\x7d\xea\xef\x93\xc1\xda\xc5\x8e\xdd\xc2\xa5\xd4\x43\x17\x49\x21\x69\x0b\xe3\xac\xcf\x30\x69\x18\x7d\xf4\x02\xeb\x33\x63\x6e\x3d\x83\x62\xab\x57\x81\x40\xc6\x25\x31\xa0\xa1\x04\x2d\x84\x31\xfb\x28\x18\x73\x1a\x46\x99\x57\x93\x76\x89\x69\xbf\x4c\x92\x46\xc1\xae\xea\x65\x48\x76\x02\xdf\xb1\x6c\x03\x61\xe3\x28\x1a\x3a\xa4\xf2\x75\x1a\x86\x14\x9b\xe0\x63\xb9\x6e\x4c\x1a\x06\x1d\x2d\x7f\x8e\xd1\x35\xfc\xba\x5d\xea\x4d\x8f\xce\x47\x0b\xa5\x36\xef\x9f\xfe\xf7\xc5\x87\x75\xa6\x11\xbd\x0f\x61\x7a\xe9\x10\xee\x66\x02\x31\x63\xd0\x3d\x61\x9c\xe6\x99\x2c\x44\xe7\x8f\x83\xc8\x54\xc4\x07\xfe\xa7\x08\x56\x9a\xe9\xd5\x0b\xd4\xa6\xd6\x0c\x18\x2d\x30\xce\xa4\x08\xe3\xd6\x79\x84\x71\x43\xaa\x6c\x56\x41\x19\x97\x53\x12\x98\x9e\xcb\x50\xa9\x1d\x60\x46\x18\x1e\x83\x17\x98\x22\xb0\x95\x48\x6b\x61\xbb\xca\x77\x7d\x4c\x0a\x29\x73\xfd\x9a\xc0\x6d\x99\x68\x47\xad\x42\x74\x3d\xea\x68\x6b\x93\xd1\x69\x23\x55\x8d\xba\x8a\xb4\x1b\x04\x5d\x0a\x16\xb5\x02\xc1\x25\x16\x6f\x51\xff\xb5\xa2\x84\x80\xb7\xa9\x2a\xd5\xc7\x1e\xa1\x2a\x76\x3d\x21\x07\xc6\x60\x5f\xd6\xb8\x86\xbe\xfa\x1e\xfa\xce\x77\x09\x43\x1f\x93\xc5\xd0\x0b\x0d\x23\x86\x2b\x44\x6f\x08\x31\x20\x26\x57\x46\xc4\x31\x27\x83\x58\x86\xea\x32\x59\x8c\x9a\x6b\x26\x68\x71\xc6\xf5\x18\x7d\xec\xb7\x18\xf3\x3e\x35\x6a\xc8\xd3\x47\x87\x51\xae\x31\x6e\xec\x54\x27\xa6\x38\x32\xe9\x50\xad\x90\x07\xe4\xa1\xba\xcf\x25\x56\x0a\x99\xde\x61\xce\x4e\x3f\x03\x3b\xfd\xfc\xf9\x8b\xa9\x79\xf9\xaa\x36\xff\xff\x62\xea\xbd\x7c\xf6\xbc\xad\x51\xb3\xcb\x64\xc1\xae\x74\xe0\x40\x34\x82\xab\x72\xf6\xd4\xd6\x23\x03\x8b\x5d\xd5\x49\x91\x2d\x26\x83\x6d\x34\x10\x5d\x1f\x1f\x20\x44\x10\x62\x99\xaa\x53\x2a\x02\x49\xc5\x38\x48\x86\xe4\x42\xf5\x15\x4d\x3d\x1c\x99\x60\x2b\x46\x99\x68\x2b\xf1\xe6\x18\x4a\xf4\xef\x50\xe2\xb4\x9d\xc2\x94\x19\x57\x75\x1f\x1b\x83\x8d\x4b\xf5\xd1\x83\xc7\x96\xf8\x30\xcf\x7e\xbc\x29\xa0\x8d\xa5\xae\xaa\xc6\xa7\x78\x93\x68\xde\x52\x14\xdf\xf9\xfd\x1d\xa2\x14\x9f\xce\x6f\xab\x6d\xed\xb4\xf5\x32\xf8\x7e\xf1\xe6\x8f\x7a\x21\xf0\xa9\x52\x73\xa5\xda\x59\x73\xdc\xcc\x7d\xfb\x00\xff\x37\x9d\x7d\x95\x2b\x7f\x0a\x55\xa9\x13\xa5\xde\x2f\x6f\x91\x1e\x7d\x77\x7c\xf2\x64\xb9\xa8\x80\x1f\x96\xb3\xe6\xf8\x0e\xe9\xc1\x75\xc4\x92\x7d\x5c\x9f\xdf\x38\x68\xaa\x1c\xf2\x24\x85\xd9\xec\x6e\x8c\xa2\x3d\x18\xe1\xde\x8f\x93\x3f\xa5\xce\xee\x47\x1f\xdc\x7f\xb7\xbf\x87\x9e\xf6\x45\xf8\xb5\xd3\xf9\xde\xf4\xdf\x86\xf3\xf8\x30\x9a\xc7\x87\x6e\x9b\x8b\xcb\x7b\xb4\x61\x12\xf4\x47\x28\xc7\x87\x28\x27\x9f\x44\xf9\x2b\x00\x00\xff\xff\x63\xe6\xa7\x7e\x4b\x08\x00\x00" func runtimeSyntaxZshYamlBytes() ([]byte, error) { @@ -3973,133 +6619,259 @@ var _bindata = map[string]func() (*asset, error){ "runtime/plugins/literate/info.json": runtimePluginsLiterateInfoJson, "runtime/plugins/literate/literate.lua": runtimePluginsLiterateLiterateLua, "runtime/syntax/LICENSE": runtimeSyntaxLicense, + "runtime/syntax/PowerShell.hdr": runtimeSyntaxPowershellHdr, "runtime/syntax/PowerShell.yaml": runtimeSyntaxPowershellYaml, "runtime/syntax/README.md": runtimeSyntaxReadmeMd, + "runtime/syntax/ada.hdr": runtimeSyntaxAdaHdr, "runtime/syntax/ada.yaml": runtimeSyntaxAdaYaml, + "runtime/syntax/apacheconf.hdr": runtimeSyntaxApacheconfHdr, "runtime/syntax/apacheconf.yaml": runtimeSyntaxApacheconfYaml, + "runtime/syntax/arduino.hdr": runtimeSyntaxArduinoHdr, "runtime/syntax/arduino.yaml": runtimeSyntaxArduinoYaml, + "runtime/syntax/asciidoc.hdr": runtimeSyntaxAsciidocHdr, "runtime/syntax/asciidoc.yaml": runtimeSyntaxAsciidocYaml, + "runtime/syntax/asm.hdr": runtimeSyntaxAsmHdr, "runtime/syntax/asm.yaml": runtimeSyntaxAsmYaml, + "runtime/syntax/ats.hdr": runtimeSyntaxAtsHdr, "runtime/syntax/ats.yaml": runtimeSyntaxAtsYaml, + "runtime/syntax/awk.hdr": runtimeSyntaxAwkHdr, "runtime/syntax/awk.yaml": runtimeSyntaxAwkYaml, + "runtime/syntax/c++.hdr": runtimeSyntaxCHdr, "runtime/syntax/c++.yaml": runtimeSyntaxCYaml, + "runtime/syntax/c.hdr": runtimeSyntaxCHdr2, "runtime/syntax/c.yaml": runtimeSyntaxCYaml2, + "runtime/syntax/caddyfile.hdr": runtimeSyntaxCaddyfileHdr, "runtime/syntax/caddyfile.yaml": runtimeSyntaxCaddyfileYaml, + "runtime/syntax/clojure.hdr": runtimeSyntaxClojureHdr, "runtime/syntax/clojure.yaml": runtimeSyntaxClojureYaml, + "runtime/syntax/cmake.hdr": runtimeSyntaxCmakeHdr, "runtime/syntax/cmake.yaml": runtimeSyntaxCmakeYaml, + "runtime/syntax/coffeescript.hdr": runtimeSyntaxCoffeescriptHdr, "runtime/syntax/coffeescript.yaml": runtimeSyntaxCoffeescriptYaml, + "runtime/syntax/colortest.hdr": runtimeSyntaxColortestHdr, "runtime/syntax/colortest.yaml": runtimeSyntaxColortestYaml, + "runtime/syntax/conf.hdr": runtimeSyntaxConfHdr, "runtime/syntax/conf.yaml": runtimeSyntaxConfYaml, + "runtime/syntax/conky.hdr": runtimeSyntaxConkyHdr, "runtime/syntax/conky.yaml": runtimeSyntaxConkyYaml, + "runtime/syntax/cpp.hdr": runtimeSyntaxCppHdr, "runtime/syntax/cpp.yaml": runtimeSyntaxCppYaml, + "runtime/syntax/crontab.hdr": runtimeSyntaxCrontabHdr, "runtime/syntax/crontab.yaml": runtimeSyntaxCrontabYaml, + "runtime/syntax/crystal.hdr": runtimeSyntaxCrystalHdr, "runtime/syntax/crystal.yaml": runtimeSyntaxCrystalYaml, + "runtime/syntax/csharp.hdr": runtimeSyntaxCsharpHdr, "runtime/syntax/csharp.yaml": runtimeSyntaxCsharpYaml, + "runtime/syntax/css.hdr": runtimeSyntaxCssHdr, "runtime/syntax/css.yaml": runtimeSyntaxCssYaml, + "runtime/syntax/cython.hdr": runtimeSyntaxCythonHdr, "runtime/syntax/cython.yaml": runtimeSyntaxCythonYaml, + "runtime/syntax/d.hdr": runtimeSyntaxDHdr, "runtime/syntax/d.yaml": runtimeSyntaxDYaml, + "runtime/syntax/dart.hdr": runtimeSyntaxDartHdr, "runtime/syntax/dart.yaml": runtimeSyntaxDartYaml, + "runtime/syntax/dockerfile.hdr": runtimeSyntaxDockerfileHdr, "runtime/syntax/dockerfile.yaml": runtimeSyntaxDockerfileYaml, + "runtime/syntax/dot.hdr": runtimeSyntaxDotHdr, "runtime/syntax/dot.yaml": runtimeSyntaxDotYaml, + "runtime/syntax/elixir.hdr": runtimeSyntaxElixirHdr, "runtime/syntax/elixir.yaml": runtimeSyntaxElixirYaml, + "runtime/syntax/elm.hdr": runtimeSyntaxElmHdr, "runtime/syntax/elm.yaml": runtimeSyntaxElmYaml, + "runtime/syntax/erb.hdr": runtimeSyntaxErbHdr, "runtime/syntax/erb.yaml": runtimeSyntaxErbYaml, + "runtime/syntax/erlang.hdr": runtimeSyntaxErlangHdr, "runtime/syntax/erlang.yaml": runtimeSyntaxErlangYaml, + "runtime/syntax/fish.hdr": runtimeSyntaxFishHdr, "runtime/syntax/fish.yaml": runtimeSyntaxFishYaml, + "runtime/syntax/fortran.hdr": runtimeSyntaxFortranHdr, "runtime/syntax/fortran.yaml": runtimeSyntaxFortranYaml, + "runtime/syntax/fsharp.hdr": runtimeSyntaxFsharpHdr, "runtime/syntax/fsharp.yaml": runtimeSyntaxFsharpYaml, + "runtime/syntax/gdscript.hdr": runtimeSyntaxGdscriptHdr, "runtime/syntax/gdscript.yaml": runtimeSyntaxGdscriptYaml, + "runtime/syntax/gentoo-ebuild.hdr": runtimeSyntaxGentooEbuildHdr, "runtime/syntax/gentoo-ebuild.yaml": runtimeSyntaxGentooEbuildYaml, + "runtime/syntax/gentoo-etc-portage.hdr": runtimeSyntaxGentooEtcPortageHdr, "runtime/syntax/gentoo-etc-portage.yaml": runtimeSyntaxGentooEtcPortageYaml, + "runtime/syntax/git-commit.hdr": runtimeSyntaxGitCommitHdr, "runtime/syntax/git-commit.yaml": runtimeSyntaxGitCommitYaml, + "runtime/syntax/git-config.hdr": runtimeSyntaxGitConfigHdr, "runtime/syntax/git-config.yaml": runtimeSyntaxGitConfigYaml, + "runtime/syntax/git-rebase-todo.hdr": runtimeSyntaxGitRebaseTodoHdr, "runtime/syntax/git-rebase-todo.yaml": runtimeSyntaxGitRebaseTodoYaml, + "runtime/syntax/glsl.hdr": runtimeSyntaxGlslHdr, "runtime/syntax/glsl.yaml": runtimeSyntaxGlslYaml, + "runtime/syntax/go.hdr": runtimeSyntaxGoHdr, "runtime/syntax/go.yaml": runtimeSyntaxGoYaml, + "runtime/syntax/godoc.hdr": runtimeSyntaxGodocHdr, "runtime/syntax/godoc.yaml": runtimeSyntaxGodocYaml, + "runtime/syntax/golo.hdr": runtimeSyntaxGoloHdr, "runtime/syntax/golo.yaml": runtimeSyntaxGoloYaml, + "runtime/syntax/graphql.hdr": runtimeSyntaxGraphqlHdr, "runtime/syntax/graphql.yaml": runtimeSyntaxGraphqlYaml, + "runtime/syntax/groff.hdr": runtimeSyntaxGroffHdr, "runtime/syntax/groff.yaml": runtimeSyntaxGroffYaml, + "runtime/syntax/haml.hdr": runtimeSyntaxHamlHdr, "runtime/syntax/haml.yaml": runtimeSyntaxHamlYaml, + "runtime/syntax/haskell.hdr": runtimeSyntaxHaskellHdr, "runtime/syntax/haskell.yaml": runtimeSyntaxHaskellYaml, + "runtime/syntax/html.hdr": runtimeSyntaxHtmlHdr, "runtime/syntax/html.yaml": runtimeSyntaxHtmlYaml, + "runtime/syntax/html4.hdr": runtimeSyntaxHtml4Hdr, "runtime/syntax/html4.yaml": runtimeSyntaxHtml4Yaml, + "runtime/syntax/html5.hdr": runtimeSyntaxHtml5Hdr, "runtime/syntax/html5.yaml": runtimeSyntaxHtml5Yaml, + "runtime/syntax/ini.hdr": runtimeSyntaxIniHdr, "runtime/syntax/ini.yaml": runtimeSyntaxIniYaml, + "runtime/syntax/inputrc.hdr": runtimeSyntaxInputrcHdr, "runtime/syntax/inputrc.yaml": runtimeSyntaxInputrcYaml, + "runtime/syntax/java.hdr": runtimeSyntaxJavaHdr, "runtime/syntax/java.yaml": runtimeSyntaxJavaYaml, + "runtime/syntax/javascript.hdr": runtimeSyntaxJavascriptHdr, "runtime/syntax/javascript.yaml": runtimeSyntaxJavascriptYaml, + "runtime/syntax/jinja2.hdr": runtimeSyntaxJinja2Hdr, "runtime/syntax/jinja2.yaml": runtimeSyntaxJinja2Yaml, + "runtime/syntax/json.hdr": runtimeSyntaxJsonHdr, "runtime/syntax/json.yaml": runtimeSyntaxJsonYaml, + "runtime/syntax/julia.hdr": runtimeSyntaxJuliaHdr, "runtime/syntax/julia.yaml": runtimeSyntaxJuliaYaml, + "runtime/syntax/keymap.hdr": runtimeSyntaxKeymapHdr, "runtime/syntax/keymap.yaml": runtimeSyntaxKeymapYaml, + "runtime/syntax/kickstart.hdr": runtimeSyntaxKickstartHdr, "runtime/syntax/kickstart.yaml": runtimeSyntaxKickstartYaml, + "runtime/syntax/kotlin.hdr": runtimeSyntaxKotlinHdr, "runtime/syntax/kotlin.yaml": runtimeSyntaxKotlinYaml, + "runtime/syntax/ledger.hdr": runtimeSyntaxLedgerHdr, "runtime/syntax/ledger.yaml": runtimeSyntaxLedgerYaml, + "runtime/syntax/lfe.hdr": runtimeSyntaxLfeHdr, "runtime/syntax/lfe.yaml": runtimeSyntaxLfeYaml, + "runtime/syntax/lilypond.hdr": runtimeSyntaxLilypondHdr, "runtime/syntax/lilypond.yaml": runtimeSyntaxLilypondYaml, + "runtime/syntax/lisp.hdr": runtimeSyntaxLispHdr, "runtime/syntax/lisp.yaml": runtimeSyntaxLispYaml, + "runtime/syntax/lua.hdr": runtimeSyntaxLuaHdr, "runtime/syntax/lua.yaml": runtimeSyntaxLuaYaml, + "runtime/syntax/mail.hdr": runtimeSyntaxMailHdr, "runtime/syntax/mail.yaml": runtimeSyntaxMailYaml, + "runtime/syntax/make_headers.go": runtimeSyntaxMake_headersGo, + "runtime/syntax/makefile.hdr": runtimeSyntaxMakefileHdr, "runtime/syntax/makefile.yaml": runtimeSyntaxMakefileYaml, + "runtime/syntax/man.hdr": runtimeSyntaxManHdr, "runtime/syntax/man.yaml": runtimeSyntaxManYaml, + "runtime/syntax/markdown.hdr": runtimeSyntaxMarkdownHdr, "runtime/syntax/markdown.yaml": runtimeSyntaxMarkdownYaml, + "runtime/syntax/mc.hdr": runtimeSyntaxMcHdr, "runtime/syntax/mc.yaml": runtimeSyntaxMcYaml, + "runtime/syntax/micro.hdr": runtimeSyntaxMicroHdr, "runtime/syntax/micro.yaml": runtimeSyntaxMicroYaml, + "runtime/syntax/mpdconf.hdr": runtimeSyntaxMpdconfHdr, "runtime/syntax/mpdconf.yaml": runtimeSyntaxMpdconfYaml, + "runtime/syntax/nanorc.hdr": runtimeSyntaxNanorcHdr, "runtime/syntax/nanorc.yaml": runtimeSyntaxNanorcYaml, + "runtime/syntax/nginx.hdr": runtimeSyntaxNginxHdr, "runtime/syntax/nginx.yaml": runtimeSyntaxNginxYaml, + "runtime/syntax/nim.hdr": runtimeSyntaxNimHdr, "runtime/syntax/nim.yaml": runtimeSyntaxNimYaml, + "runtime/syntax/objc.hdr": runtimeSyntaxObjcHdr, "runtime/syntax/objc.yaml": runtimeSyntaxObjcYaml, + "runtime/syntax/ocaml.hdr": runtimeSyntaxOcamlHdr, "runtime/syntax/ocaml.yaml": runtimeSyntaxOcamlYaml, + "runtime/syntax/octave.hdr": runtimeSyntaxOctaveHdr, "runtime/syntax/octave.yaml": runtimeSyntaxOctaveYaml, + "runtime/syntax/pascal.hdr": runtimeSyntaxPascalHdr, "runtime/syntax/pascal.yaml": runtimeSyntaxPascalYaml, + "runtime/syntax/patch.hdr": runtimeSyntaxPatchHdr, "runtime/syntax/patch.yaml": runtimeSyntaxPatchYaml, + "runtime/syntax/peg.hdr": runtimeSyntaxPegHdr, "runtime/syntax/peg.yaml": runtimeSyntaxPegYaml, + "runtime/syntax/perl.hdr": runtimeSyntaxPerlHdr, "runtime/syntax/perl.yaml": runtimeSyntaxPerlYaml, + "runtime/syntax/perl6.hdr": runtimeSyntaxPerl6Hdr, "runtime/syntax/perl6.yaml": runtimeSyntaxPerl6Yaml, + "runtime/syntax/php.hdr": runtimeSyntaxPhpHdr, "runtime/syntax/php.yaml": runtimeSyntaxPhpYaml, + "runtime/syntax/pkg-config.hdr": runtimeSyntaxPkgConfigHdr, "runtime/syntax/pkg-config.yaml": runtimeSyntaxPkgConfigYaml, + "runtime/syntax/po.hdr": runtimeSyntaxPoHdr, "runtime/syntax/po.yaml": runtimeSyntaxPoYaml, + "runtime/syntax/pony.hdr": runtimeSyntaxPonyHdr, "runtime/syntax/pony.yaml": runtimeSyntaxPonyYaml, + "runtime/syntax/pov.hdr": runtimeSyntaxPovHdr, "runtime/syntax/pov.yaml": runtimeSyntaxPovYaml, + "runtime/syntax/privoxy-action.hdr": runtimeSyntaxPrivoxyActionHdr, "runtime/syntax/privoxy-action.yaml": runtimeSyntaxPrivoxyActionYaml, + "runtime/syntax/privoxy-config.hdr": runtimeSyntaxPrivoxyConfigHdr, "runtime/syntax/privoxy-config.yaml": runtimeSyntaxPrivoxyConfigYaml, + "runtime/syntax/privoxy-filter.hdr": runtimeSyntaxPrivoxyFilterHdr, "runtime/syntax/privoxy-filter.yaml": runtimeSyntaxPrivoxyFilterYaml, + "runtime/syntax/proto.hdr": runtimeSyntaxProtoHdr, "runtime/syntax/proto.yaml": runtimeSyntaxProtoYaml, + "runtime/syntax/puppet.hdr": runtimeSyntaxPuppetHdr, "runtime/syntax/puppet.yaml": runtimeSyntaxPuppetYaml, + "runtime/syntax/python2.hdr": runtimeSyntaxPython2Hdr, "runtime/syntax/python2.yaml": runtimeSyntaxPython2Yaml, + "runtime/syntax/python3.hdr": runtimeSyntaxPython3Hdr, "runtime/syntax/python3.yaml": runtimeSyntaxPython3Yaml, + "runtime/syntax/r.hdr": runtimeSyntaxRHdr, "runtime/syntax/r.yaml": runtimeSyntaxRYaml, + "runtime/syntax/reST.hdr": runtimeSyntaxRestHdr, "runtime/syntax/reST.yaml": runtimeSyntaxRestYaml, + "runtime/syntax/rpmspec.hdr": runtimeSyntaxRpmspecHdr, "runtime/syntax/rpmspec.yaml": runtimeSyntaxRpmspecYaml, + "runtime/syntax/ruby.hdr": runtimeSyntaxRubyHdr, "runtime/syntax/ruby.yaml": runtimeSyntaxRubyYaml, + "runtime/syntax/rust.hdr": runtimeSyntaxRustHdr, "runtime/syntax/rust.yaml": runtimeSyntaxRustYaml, + "runtime/syntax/scala.hdr": runtimeSyntaxScalaHdr, "runtime/syntax/scala.yaml": runtimeSyntaxScalaYaml, + "runtime/syntax/sed.hdr": runtimeSyntaxSedHdr, "runtime/syntax/sed.yaml": runtimeSyntaxSedYaml, + "runtime/syntax/sh.hdr": runtimeSyntaxShHdr, "runtime/syntax/sh.yaml": runtimeSyntaxShYaml, + "runtime/syntax/sls.hdr": runtimeSyntaxSlsHdr, "runtime/syntax/sls.yaml": runtimeSyntaxSlsYaml, + "runtime/syntax/solidity.hdr": runtimeSyntaxSolidityHdr, "runtime/syntax/solidity.yaml": runtimeSyntaxSolidityYaml, + "runtime/syntax/sql.hdr": runtimeSyntaxSqlHdr, "runtime/syntax/sql.yaml": runtimeSyntaxSqlYaml, + "runtime/syntax/stata.hdr": runtimeSyntaxStataHdr, "runtime/syntax/stata.yaml": runtimeSyntaxStataYaml, + "runtime/syntax/swift.hdr": runtimeSyntaxSwiftHdr, "runtime/syntax/swift.yaml": runtimeSyntaxSwiftYaml, "runtime/syntax/syntax_checker.go": runtimeSyntaxSyntax_checkerGo, "runtime/syntax/syntax_converter.go": runtimeSyntaxSyntax_converterGo, + "runtime/syntax/systemd.hdr": runtimeSyntaxSystemdHdr, "runtime/syntax/systemd.yaml": runtimeSyntaxSystemdYaml, + "runtime/syntax/tcl.hdr": runtimeSyntaxTclHdr, "runtime/syntax/tcl.yaml": runtimeSyntaxTclYaml, + "runtime/syntax/tex.hdr": runtimeSyntaxTexHdr, "runtime/syntax/tex.yaml": runtimeSyntaxTexYaml, + "runtime/syntax/toml.hdr": runtimeSyntaxTomlHdr, "runtime/syntax/toml.yaml": runtimeSyntaxTomlYaml, + "runtime/syntax/twig.hdr": runtimeSyntaxTwigHdr, "runtime/syntax/twig.yaml": runtimeSyntaxTwigYaml, + "runtime/syntax/typescript.hdr": runtimeSyntaxTypescriptHdr, "runtime/syntax/typescript.yaml": runtimeSyntaxTypescriptYaml, + "runtime/syntax/vala.hdr": runtimeSyntaxValaHdr, "runtime/syntax/vala.yaml": runtimeSyntaxValaYaml, + "runtime/syntax/vhdl.hdr": runtimeSyntaxVhdlHdr, "runtime/syntax/vhdl.yaml": runtimeSyntaxVhdlYaml, + "runtime/syntax/vi.hdr": runtimeSyntaxViHdr, "runtime/syntax/vi.yaml": runtimeSyntaxViYaml, + "runtime/syntax/vue.hdr": runtimeSyntaxVueHdr, "runtime/syntax/vue.yaml": runtimeSyntaxVueYaml, + "runtime/syntax/xml.hdr": runtimeSyntaxXmlHdr, "runtime/syntax/xml.yaml": runtimeSyntaxXmlYaml, + "runtime/syntax/xresources.hdr": runtimeSyntaxXresourcesHdr, "runtime/syntax/xresources.yaml": runtimeSyntaxXresourcesYaml, + "runtime/syntax/yaml.hdr": runtimeSyntaxYamlHdr, "runtime/syntax/yaml.yaml": runtimeSyntaxYamlYaml, + "runtime/syntax/yum.hdr": runtimeSyntaxYumHdr, "runtime/syntax/yum.yaml": runtimeSyntaxYumYaml, + "runtime/syntax/zig.hdr": runtimeSyntaxZigHdr, "runtime/syntax/zig.yaml": runtimeSyntaxZigYaml, + "runtime/syntax/zsh.hdr": runtimeSyntaxZshHdr, "runtime/syntax/zsh.yaml": runtimeSyntaxZshYaml, } @@ -4217,133 +6989,259 @@ var _bintree = &bintree{nil, map[string]*bintree{ }}, "syntax": &bintree{nil, map[string]*bintree{ "LICENSE": &bintree{runtimeSyntaxLicense, map[string]*bintree{}}, + "PowerShell.hdr": &bintree{runtimeSyntaxPowershellHdr, map[string]*bintree{}}, "PowerShell.yaml": &bintree{runtimeSyntaxPowershellYaml, map[string]*bintree{}}, "README.md": &bintree{runtimeSyntaxReadmeMd, map[string]*bintree{}}, + "ada.hdr": &bintree{runtimeSyntaxAdaHdr, map[string]*bintree{}}, "ada.yaml": &bintree{runtimeSyntaxAdaYaml, map[string]*bintree{}}, + "apacheconf.hdr": &bintree{runtimeSyntaxApacheconfHdr, map[string]*bintree{}}, "apacheconf.yaml": &bintree{runtimeSyntaxApacheconfYaml, map[string]*bintree{}}, + "arduino.hdr": &bintree{runtimeSyntaxArduinoHdr, map[string]*bintree{}}, "arduino.yaml": &bintree{runtimeSyntaxArduinoYaml, map[string]*bintree{}}, + "asciidoc.hdr": &bintree{runtimeSyntaxAsciidocHdr, map[string]*bintree{}}, "asciidoc.yaml": &bintree{runtimeSyntaxAsciidocYaml, map[string]*bintree{}}, + "asm.hdr": &bintree{runtimeSyntaxAsmHdr, map[string]*bintree{}}, "asm.yaml": &bintree{runtimeSyntaxAsmYaml, map[string]*bintree{}}, + "ats.hdr": &bintree{runtimeSyntaxAtsHdr, map[string]*bintree{}}, "ats.yaml": &bintree{runtimeSyntaxAtsYaml, map[string]*bintree{}}, + "awk.hdr": &bintree{runtimeSyntaxAwkHdr, map[string]*bintree{}}, "awk.yaml": &bintree{runtimeSyntaxAwkYaml, map[string]*bintree{}}, + "c++.hdr": &bintree{runtimeSyntaxCHdr, map[string]*bintree{}}, "c++.yaml": &bintree{runtimeSyntaxCYaml, map[string]*bintree{}}, + "c.hdr": &bintree{runtimeSyntaxCHdr2, map[string]*bintree{}}, "c.yaml": &bintree{runtimeSyntaxCYaml2, map[string]*bintree{}}, + "caddyfile.hdr": &bintree{runtimeSyntaxCaddyfileHdr, map[string]*bintree{}}, "caddyfile.yaml": &bintree{runtimeSyntaxCaddyfileYaml, map[string]*bintree{}}, + "clojure.hdr": &bintree{runtimeSyntaxClojureHdr, map[string]*bintree{}}, "clojure.yaml": &bintree{runtimeSyntaxClojureYaml, map[string]*bintree{}}, + "cmake.hdr": &bintree{runtimeSyntaxCmakeHdr, map[string]*bintree{}}, "cmake.yaml": &bintree{runtimeSyntaxCmakeYaml, map[string]*bintree{}}, + "coffeescript.hdr": &bintree{runtimeSyntaxCoffeescriptHdr, map[string]*bintree{}}, "coffeescript.yaml": &bintree{runtimeSyntaxCoffeescriptYaml, map[string]*bintree{}}, + "colortest.hdr": &bintree{runtimeSyntaxColortestHdr, map[string]*bintree{}}, "colortest.yaml": &bintree{runtimeSyntaxColortestYaml, map[string]*bintree{}}, + "conf.hdr": &bintree{runtimeSyntaxConfHdr, map[string]*bintree{}}, "conf.yaml": &bintree{runtimeSyntaxConfYaml, map[string]*bintree{}}, + "conky.hdr": &bintree{runtimeSyntaxConkyHdr, map[string]*bintree{}}, "conky.yaml": &bintree{runtimeSyntaxConkyYaml, map[string]*bintree{}}, + "cpp.hdr": &bintree{runtimeSyntaxCppHdr, map[string]*bintree{}}, "cpp.yaml": &bintree{runtimeSyntaxCppYaml, map[string]*bintree{}}, + "crontab.hdr": &bintree{runtimeSyntaxCrontabHdr, map[string]*bintree{}}, "crontab.yaml": &bintree{runtimeSyntaxCrontabYaml, map[string]*bintree{}}, + "crystal.hdr": &bintree{runtimeSyntaxCrystalHdr, map[string]*bintree{}}, "crystal.yaml": &bintree{runtimeSyntaxCrystalYaml, map[string]*bintree{}}, + "csharp.hdr": &bintree{runtimeSyntaxCsharpHdr, map[string]*bintree{}}, "csharp.yaml": &bintree{runtimeSyntaxCsharpYaml, map[string]*bintree{}}, + "css.hdr": &bintree{runtimeSyntaxCssHdr, map[string]*bintree{}}, "css.yaml": &bintree{runtimeSyntaxCssYaml, map[string]*bintree{}}, + "cython.hdr": &bintree{runtimeSyntaxCythonHdr, map[string]*bintree{}}, "cython.yaml": &bintree{runtimeSyntaxCythonYaml, map[string]*bintree{}}, + "d.hdr": &bintree{runtimeSyntaxDHdr, map[string]*bintree{}}, "d.yaml": &bintree{runtimeSyntaxDYaml, map[string]*bintree{}}, + "dart.hdr": &bintree{runtimeSyntaxDartHdr, map[string]*bintree{}}, "dart.yaml": &bintree{runtimeSyntaxDartYaml, map[string]*bintree{}}, + "dockerfile.hdr": &bintree{runtimeSyntaxDockerfileHdr, map[string]*bintree{}}, "dockerfile.yaml": &bintree{runtimeSyntaxDockerfileYaml, map[string]*bintree{}}, + "dot.hdr": &bintree{runtimeSyntaxDotHdr, map[string]*bintree{}}, "dot.yaml": &bintree{runtimeSyntaxDotYaml, map[string]*bintree{}}, + "elixir.hdr": &bintree{runtimeSyntaxElixirHdr, map[string]*bintree{}}, "elixir.yaml": &bintree{runtimeSyntaxElixirYaml, map[string]*bintree{}}, + "elm.hdr": &bintree{runtimeSyntaxElmHdr, map[string]*bintree{}}, "elm.yaml": &bintree{runtimeSyntaxElmYaml, map[string]*bintree{}}, + "erb.hdr": &bintree{runtimeSyntaxErbHdr, map[string]*bintree{}}, "erb.yaml": &bintree{runtimeSyntaxErbYaml, map[string]*bintree{}}, + "erlang.hdr": &bintree{runtimeSyntaxErlangHdr, map[string]*bintree{}}, "erlang.yaml": &bintree{runtimeSyntaxErlangYaml, map[string]*bintree{}}, + "fish.hdr": &bintree{runtimeSyntaxFishHdr, map[string]*bintree{}}, "fish.yaml": &bintree{runtimeSyntaxFishYaml, map[string]*bintree{}}, + "fortran.hdr": &bintree{runtimeSyntaxFortranHdr, map[string]*bintree{}}, "fortran.yaml": &bintree{runtimeSyntaxFortranYaml, map[string]*bintree{}}, + "fsharp.hdr": &bintree{runtimeSyntaxFsharpHdr, map[string]*bintree{}}, "fsharp.yaml": &bintree{runtimeSyntaxFsharpYaml, map[string]*bintree{}}, + "gdscript.hdr": &bintree{runtimeSyntaxGdscriptHdr, map[string]*bintree{}}, "gdscript.yaml": &bintree{runtimeSyntaxGdscriptYaml, map[string]*bintree{}}, + "gentoo-ebuild.hdr": &bintree{runtimeSyntaxGentooEbuildHdr, map[string]*bintree{}}, "gentoo-ebuild.yaml": &bintree{runtimeSyntaxGentooEbuildYaml, map[string]*bintree{}}, + "gentoo-etc-portage.hdr": &bintree{runtimeSyntaxGentooEtcPortageHdr, map[string]*bintree{}}, "gentoo-etc-portage.yaml": &bintree{runtimeSyntaxGentooEtcPortageYaml, map[string]*bintree{}}, + "git-commit.hdr": &bintree{runtimeSyntaxGitCommitHdr, map[string]*bintree{}}, "git-commit.yaml": &bintree{runtimeSyntaxGitCommitYaml, map[string]*bintree{}}, + "git-config.hdr": &bintree{runtimeSyntaxGitConfigHdr, map[string]*bintree{}}, "git-config.yaml": &bintree{runtimeSyntaxGitConfigYaml, map[string]*bintree{}}, + "git-rebase-todo.hdr": &bintree{runtimeSyntaxGitRebaseTodoHdr, map[string]*bintree{}}, "git-rebase-todo.yaml": &bintree{runtimeSyntaxGitRebaseTodoYaml, map[string]*bintree{}}, + "glsl.hdr": &bintree{runtimeSyntaxGlslHdr, map[string]*bintree{}}, "glsl.yaml": &bintree{runtimeSyntaxGlslYaml, map[string]*bintree{}}, + "go.hdr": &bintree{runtimeSyntaxGoHdr, map[string]*bintree{}}, "go.yaml": &bintree{runtimeSyntaxGoYaml, map[string]*bintree{}}, + "godoc.hdr": &bintree{runtimeSyntaxGodocHdr, map[string]*bintree{}}, "godoc.yaml": &bintree{runtimeSyntaxGodocYaml, map[string]*bintree{}}, + "golo.hdr": &bintree{runtimeSyntaxGoloHdr, map[string]*bintree{}}, "golo.yaml": &bintree{runtimeSyntaxGoloYaml, map[string]*bintree{}}, + "graphql.hdr": &bintree{runtimeSyntaxGraphqlHdr, map[string]*bintree{}}, "graphql.yaml": &bintree{runtimeSyntaxGraphqlYaml, map[string]*bintree{}}, + "groff.hdr": &bintree{runtimeSyntaxGroffHdr, map[string]*bintree{}}, "groff.yaml": &bintree{runtimeSyntaxGroffYaml, map[string]*bintree{}}, + "haml.hdr": &bintree{runtimeSyntaxHamlHdr, map[string]*bintree{}}, "haml.yaml": &bintree{runtimeSyntaxHamlYaml, map[string]*bintree{}}, + "haskell.hdr": &bintree{runtimeSyntaxHaskellHdr, map[string]*bintree{}}, "haskell.yaml": &bintree{runtimeSyntaxHaskellYaml, map[string]*bintree{}}, + "html.hdr": &bintree{runtimeSyntaxHtmlHdr, map[string]*bintree{}}, "html.yaml": &bintree{runtimeSyntaxHtmlYaml, map[string]*bintree{}}, + "html4.hdr": &bintree{runtimeSyntaxHtml4Hdr, map[string]*bintree{}}, "html4.yaml": &bintree{runtimeSyntaxHtml4Yaml, map[string]*bintree{}}, + "html5.hdr": &bintree{runtimeSyntaxHtml5Hdr, map[string]*bintree{}}, "html5.yaml": &bintree{runtimeSyntaxHtml5Yaml, map[string]*bintree{}}, + "ini.hdr": &bintree{runtimeSyntaxIniHdr, map[string]*bintree{}}, "ini.yaml": &bintree{runtimeSyntaxIniYaml, map[string]*bintree{}}, + "inputrc.hdr": &bintree{runtimeSyntaxInputrcHdr, map[string]*bintree{}}, "inputrc.yaml": &bintree{runtimeSyntaxInputrcYaml, map[string]*bintree{}}, + "java.hdr": &bintree{runtimeSyntaxJavaHdr, map[string]*bintree{}}, "java.yaml": &bintree{runtimeSyntaxJavaYaml, map[string]*bintree{}}, + "javascript.hdr": &bintree{runtimeSyntaxJavascriptHdr, map[string]*bintree{}}, "javascript.yaml": &bintree{runtimeSyntaxJavascriptYaml, map[string]*bintree{}}, + "jinja2.hdr": &bintree{runtimeSyntaxJinja2Hdr, map[string]*bintree{}}, "jinja2.yaml": &bintree{runtimeSyntaxJinja2Yaml, map[string]*bintree{}}, + "json.hdr": &bintree{runtimeSyntaxJsonHdr, map[string]*bintree{}}, "json.yaml": &bintree{runtimeSyntaxJsonYaml, map[string]*bintree{}}, + "julia.hdr": &bintree{runtimeSyntaxJuliaHdr, map[string]*bintree{}}, "julia.yaml": &bintree{runtimeSyntaxJuliaYaml, map[string]*bintree{}}, + "keymap.hdr": &bintree{runtimeSyntaxKeymapHdr, map[string]*bintree{}}, "keymap.yaml": &bintree{runtimeSyntaxKeymapYaml, map[string]*bintree{}}, + "kickstart.hdr": &bintree{runtimeSyntaxKickstartHdr, map[string]*bintree{}}, "kickstart.yaml": &bintree{runtimeSyntaxKickstartYaml, map[string]*bintree{}}, + "kotlin.hdr": &bintree{runtimeSyntaxKotlinHdr, map[string]*bintree{}}, "kotlin.yaml": &bintree{runtimeSyntaxKotlinYaml, map[string]*bintree{}}, + "ledger.hdr": &bintree{runtimeSyntaxLedgerHdr, map[string]*bintree{}}, "ledger.yaml": &bintree{runtimeSyntaxLedgerYaml, map[string]*bintree{}}, + "lfe.hdr": &bintree{runtimeSyntaxLfeHdr, map[string]*bintree{}}, "lfe.yaml": &bintree{runtimeSyntaxLfeYaml, map[string]*bintree{}}, + "lilypond.hdr": &bintree{runtimeSyntaxLilypondHdr, map[string]*bintree{}}, "lilypond.yaml": &bintree{runtimeSyntaxLilypondYaml, map[string]*bintree{}}, + "lisp.hdr": &bintree{runtimeSyntaxLispHdr, map[string]*bintree{}}, "lisp.yaml": &bintree{runtimeSyntaxLispYaml, map[string]*bintree{}}, + "lua.hdr": &bintree{runtimeSyntaxLuaHdr, map[string]*bintree{}}, "lua.yaml": &bintree{runtimeSyntaxLuaYaml, map[string]*bintree{}}, + "mail.hdr": &bintree{runtimeSyntaxMailHdr, map[string]*bintree{}}, "mail.yaml": &bintree{runtimeSyntaxMailYaml, map[string]*bintree{}}, + "make_headers.go": &bintree{runtimeSyntaxMake_headersGo, map[string]*bintree{}}, + "makefile.hdr": &bintree{runtimeSyntaxMakefileHdr, map[string]*bintree{}}, "makefile.yaml": &bintree{runtimeSyntaxMakefileYaml, map[string]*bintree{}}, + "man.hdr": &bintree{runtimeSyntaxManHdr, map[string]*bintree{}}, "man.yaml": &bintree{runtimeSyntaxManYaml, map[string]*bintree{}}, + "markdown.hdr": &bintree{runtimeSyntaxMarkdownHdr, map[string]*bintree{}}, "markdown.yaml": &bintree{runtimeSyntaxMarkdownYaml, map[string]*bintree{}}, + "mc.hdr": &bintree{runtimeSyntaxMcHdr, map[string]*bintree{}}, "mc.yaml": &bintree{runtimeSyntaxMcYaml, map[string]*bintree{}}, + "micro.hdr": &bintree{runtimeSyntaxMicroHdr, map[string]*bintree{}}, "micro.yaml": &bintree{runtimeSyntaxMicroYaml, map[string]*bintree{}}, + "mpdconf.hdr": &bintree{runtimeSyntaxMpdconfHdr, map[string]*bintree{}}, "mpdconf.yaml": &bintree{runtimeSyntaxMpdconfYaml, map[string]*bintree{}}, + "nanorc.hdr": &bintree{runtimeSyntaxNanorcHdr, map[string]*bintree{}}, "nanorc.yaml": &bintree{runtimeSyntaxNanorcYaml, map[string]*bintree{}}, + "nginx.hdr": &bintree{runtimeSyntaxNginxHdr, map[string]*bintree{}}, "nginx.yaml": &bintree{runtimeSyntaxNginxYaml, map[string]*bintree{}}, + "nim.hdr": &bintree{runtimeSyntaxNimHdr, map[string]*bintree{}}, "nim.yaml": &bintree{runtimeSyntaxNimYaml, map[string]*bintree{}}, + "objc.hdr": &bintree{runtimeSyntaxObjcHdr, map[string]*bintree{}}, "objc.yaml": &bintree{runtimeSyntaxObjcYaml, map[string]*bintree{}}, + "ocaml.hdr": &bintree{runtimeSyntaxOcamlHdr, map[string]*bintree{}}, "ocaml.yaml": &bintree{runtimeSyntaxOcamlYaml, map[string]*bintree{}}, + "octave.hdr": &bintree{runtimeSyntaxOctaveHdr, map[string]*bintree{}}, "octave.yaml": &bintree{runtimeSyntaxOctaveYaml, map[string]*bintree{}}, + "pascal.hdr": &bintree{runtimeSyntaxPascalHdr, map[string]*bintree{}}, "pascal.yaml": &bintree{runtimeSyntaxPascalYaml, map[string]*bintree{}}, + "patch.hdr": &bintree{runtimeSyntaxPatchHdr, map[string]*bintree{}}, "patch.yaml": &bintree{runtimeSyntaxPatchYaml, map[string]*bintree{}}, + "peg.hdr": &bintree{runtimeSyntaxPegHdr, map[string]*bintree{}}, "peg.yaml": &bintree{runtimeSyntaxPegYaml, map[string]*bintree{}}, + "perl.hdr": &bintree{runtimeSyntaxPerlHdr, map[string]*bintree{}}, "perl.yaml": &bintree{runtimeSyntaxPerlYaml, map[string]*bintree{}}, + "perl6.hdr": &bintree{runtimeSyntaxPerl6Hdr, map[string]*bintree{}}, "perl6.yaml": &bintree{runtimeSyntaxPerl6Yaml, map[string]*bintree{}}, + "php.hdr": &bintree{runtimeSyntaxPhpHdr, map[string]*bintree{}}, "php.yaml": &bintree{runtimeSyntaxPhpYaml, map[string]*bintree{}}, + "pkg-config.hdr": &bintree{runtimeSyntaxPkgConfigHdr, map[string]*bintree{}}, "pkg-config.yaml": &bintree{runtimeSyntaxPkgConfigYaml, map[string]*bintree{}}, + "po.hdr": &bintree{runtimeSyntaxPoHdr, map[string]*bintree{}}, "po.yaml": &bintree{runtimeSyntaxPoYaml, map[string]*bintree{}}, + "pony.hdr": &bintree{runtimeSyntaxPonyHdr, map[string]*bintree{}}, "pony.yaml": &bintree{runtimeSyntaxPonyYaml, map[string]*bintree{}}, + "pov.hdr": &bintree{runtimeSyntaxPovHdr, map[string]*bintree{}}, "pov.yaml": &bintree{runtimeSyntaxPovYaml, map[string]*bintree{}}, + "privoxy-action.hdr": &bintree{runtimeSyntaxPrivoxyActionHdr, map[string]*bintree{}}, "privoxy-action.yaml": &bintree{runtimeSyntaxPrivoxyActionYaml, map[string]*bintree{}}, + "privoxy-config.hdr": &bintree{runtimeSyntaxPrivoxyConfigHdr, map[string]*bintree{}}, "privoxy-config.yaml": &bintree{runtimeSyntaxPrivoxyConfigYaml, map[string]*bintree{}}, + "privoxy-filter.hdr": &bintree{runtimeSyntaxPrivoxyFilterHdr, map[string]*bintree{}}, "privoxy-filter.yaml": &bintree{runtimeSyntaxPrivoxyFilterYaml, map[string]*bintree{}}, + "proto.hdr": &bintree{runtimeSyntaxProtoHdr, map[string]*bintree{}}, "proto.yaml": &bintree{runtimeSyntaxProtoYaml, map[string]*bintree{}}, + "puppet.hdr": &bintree{runtimeSyntaxPuppetHdr, map[string]*bintree{}}, "puppet.yaml": &bintree{runtimeSyntaxPuppetYaml, map[string]*bintree{}}, + "python2.hdr": &bintree{runtimeSyntaxPython2Hdr, map[string]*bintree{}}, "python2.yaml": &bintree{runtimeSyntaxPython2Yaml, map[string]*bintree{}}, + "python3.hdr": &bintree{runtimeSyntaxPython3Hdr, map[string]*bintree{}}, "python3.yaml": &bintree{runtimeSyntaxPython3Yaml, map[string]*bintree{}}, + "r.hdr": &bintree{runtimeSyntaxRHdr, map[string]*bintree{}}, "r.yaml": &bintree{runtimeSyntaxRYaml, map[string]*bintree{}}, + "reST.hdr": &bintree{runtimeSyntaxRestHdr, map[string]*bintree{}}, "reST.yaml": &bintree{runtimeSyntaxRestYaml, map[string]*bintree{}}, + "rpmspec.hdr": &bintree{runtimeSyntaxRpmspecHdr, map[string]*bintree{}}, "rpmspec.yaml": &bintree{runtimeSyntaxRpmspecYaml, map[string]*bintree{}}, + "ruby.hdr": &bintree{runtimeSyntaxRubyHdr, map[string]*bintree{}}, "ruby.yaml": &bintree{runtimeSyntaxRubyYaml, map[string]*bintree{}}, + "rust.hdr": &bintree{runtimeSyntaxRustHdr, map[string]*bintree{}}, "rust.yaml": &bintree{runtimeSyntaxRustYaml, map[string]*bintree{}}, + "scala.hdr": &bintree{runtimeSyntaxScalaHdr, map[string]*bintree{}}, "scala.yaml": &bintree{runtimeSyntaxScalaYaml, map[string]*bintree{}}, + "sed.hdr": &bintree{runtimeSyntaxSedHdr, map[string]*bintree{}}, "sed.yaml": &bintree{runtimeSyntaxSedYaml, map[string]*bintree{}}, + "sh.hdr": &bintree{runtimeSyntaxShHdr, map[string]*bintree{}}, "sh.yaml": &bintree{runtimeSyntaxShYaml, map[string]*bintree{}}, + "sls.hdr": &bintree{runtimeSyntaxSlsHdr, map[string]*bintree{}}, "sls.yaml": &bintree{runtimeSyntaxSlsYaml, map[string]*bintree{}}, + "solidity.hdr": &bintree{runtimeSyntaxSolidityHdr, map[string]*bintree{}}, "solidity.yaml": &bintree{runtimeSyntaxSolidityYaml, map[string]*bintree{}}, + "sql.hdr": &bintree{runtimeSyntaxSqlHdr, map[string]*bintree{}}, "sql.yaml": &bintree{runtimeSyntaxSqlYaml, map[string]*bintree{}}, + "stata.hdr": &bintree{runtimeSyntaxStataHdr, map[string]*bintree{}}, "stata.yaml": &bintree{runtimeSyntaxStataYaml, map[string]*bintree{}}, + "swift.hdr": &bintree{runtimeSyntaxSwiftHdr, map[string]*bintree{}}, "swift.yaml": &bintree{runtimeSyntaxSwiftYaml, map[string]*bintree{}}, "syntax_checker.go": &bintree{runtimeSyntaxSyntax_checkerGo, map[string]*bintree{}}, "syntax_converter.go": &bintree{runtimeSyntaxSyntax_converterGo, map[string]*bintree{}}, + "systemd.hdr": &bintree{runtimeSyntaxSystemdHdr, map[string]*bintree{}}, "systemd.yaml": &bintree{runtimeSyntaxSystemdYaml, map[string]*bintree{}}, + "tcl.hdr": &bintree{runtimeSyntaxTclHdr, map[string]*bintree{}}, "tcl.yaml": &bintree{runtimeSyntaxTclYaml, map[string]*bintree{}}, + "tex.hdr": &bintree{runtimeSyntaxTexHdr, map[string]*bintree{}}, "tex.yaml": &bintree{runtimeSyntaxTexYaml, map[string]*bintree{}}, + "toml.hdr": &bintree{runtimeSyntaxTomlHdr, map[string]*bintree{}}, "toml.yaml": &bintree{runtimeSyntaxTomlYaml, map[string]*bintree{}}, + "twig.hdr": &bintree{runtimeSyntaxTwigHdr, map[string]*bintree{}}, "twig.yaml": &bintree{runtimeSyntaxTwigYaml, map[string]*bintree{}}, + "typescript.hdr": &bintree{runtimeSyntaxTypescriptHdr, map[string]*bintree{}}, "typescript.yaml": &bintree{runtimeSyntaxTypescriptYaml, map[string]*bintree{}}, + "vala.hdr": &bintree{runtimeSyntaxValaHdr, map[string]*bintree{}}, "vala.yaml": &bintree{runtimeSyntaxValaYaml, map[string]*bintree{}}, + "vhdl.hdr": &bintree{runtimeSyntaxVhdlHdr, map[string]*bintree{}}, "vhdl.yaml": &bintree{runtimeSyntaxVhdlYaml, map[string]*bintree{}}, + "vi.hdr": &bintree{runtimeSyntaxViHdr, map[string]*bintree{}}, "vi.yaml": &bintree{runtimeSyntaxViYaml, map[string]*bintree{}}, + "vue.hdr": &bintree{runtimeSyntaxVueHdr, map[string]*bintree{}}, "vue.yaml": &bintree{runtimeSyntaxVueYaml, map[string]*bintree{}}, + "xml.hdr": &bintree{runtimeSyntaxXmlHdr, map[string]*bintree{}}, "xml.yaml": &bintree{runtimeSyntaxXmlYaml, map[string]*bintree{}}, + "xresources.hdr": &bintree{runtimeSyntaxXresourcesHdr, map[string]*bintree{}}, "xresources.yaml": &bintree{runtimeSyntaxXresourcesYaml, map[string]*bintree{}}, + "yaml.hdr": &bintree{runtimeSyntaxYamlHdr, map[string]*bintree{}}, "yaml.yaml": &bintree{runtimeSyntaxYamlYaml, map[string]*bintree{}}, + "yum.hdr": &bintree{runtimeSyntaxYumHdr, map[string]*bintree{}}, "yum.yaml": &bintree{runtimeSyntaxYumYaml, map[string]*bintree{}}, + "zig.hdr": &bintree{runtimeSyntaxZigHdr, map[string]*bintree{}}, "zig.yaml": &bintree{runtimeSyntaxZigYaml, map[string]*bintree{}}, + "zsh.hdr": &bintree{runtimeSyntaxZshHdr, map[string]*bintree{}}, "zsh.yaml": &bintree{runtimeSyntaxZshYaml, map[string]*bintree{}}, }}, }}, diff --git a/pkg/highlight/parser.go b/pkg/highlight/parser.go index 996cef58..621d465f 100644 --- a/pkg/highlight/parser.go +++ b/pkg/highlight/parser.go @@ -1,6 +1,7 @@ package highlight import ( + "bytes" "errors" "fmt" "regexp" @@ -41,6 +42,14 @@ type Header struct { FtDetect [2]*regexp.Regexp } +type HeaderYaml struct { + FileType string `yaml:"filetype"` + Detect struct { + FNameRgx string `yaml:"filename"` + HeaderRgx string `yaml:"header"` + } `yaml:"detect"` +} + type File struct { FileType string @@ -82,52 +91,67 @@ func init() { Groups = make(map[string]Group) } -func ParseFtDetect(file *File) (r [2]*regexp.Regexp, err error) { - defer func() { - if r := recover(); r != nil { - var ok bool - err, ok = r.(error) - if !ok { - err = fmt.Errorf("pkg: %v", r) - } - } - }() +// MakeHeader takes a header (.hdr file) file and parses the header +// Header files make parsing more efficient when you only want to compute +// on the headers of syntax files +// A yaml file might take ~400us to parse while a header file only takes ~20us +func MakeHeader(data []byte) (*Header, error) { + lines := bytes.Split(data, []byte{'\n'}) + if len(lines) < 3 { + return nil, errors.New("Header file has incorrect format") + } + header := new(Header) + var err error + header.FileType = string(lines[0]) + fnameRgx := string(lines[1]) + headerRgx := string(lines[2]) - rules := file.yamlSrc - - loaded := 0 - for k, v := range rules { - if k == "detect" { - ftdetect := v.(map[interface{}]interface{}) - if len(ftdetect) >= 1 { - syntax, err := regexp.Compile(ftdetect["filename"].(string)) - if err != nil { - return r, err - } - - r[0] = syntax - } - if len(ftdetect) >= 2 { - header, err := regexp.Compile(ftdetect["header"].(string)) - if err != nil { - return r, err - } - - r[1] = header - } - loaded++ - } - - if loaded >= 2 { - break - } + if fnameRgx == "" && headerRgx == "" { + return nil, errors.New("Syntax file must include at least one detection regex") } - if loaded == 0 { - return r, errors.New("No detect regexes found") + if fnameRgx != "" { + header.FtDetect[0], err = regexp.Compile(fnameRgx) + } + if headerRgx != "" { + header.FtDetect[1], err = regexp.Compile(headerRgx) } - return r, err + if err != nil { + return nil, err + } + + return header, nil +} + +// MakeHeaderYaml takes a yaml spec for a syntax file and parses the +// header +func MakeHeaderYaml(data []byte) (*Header, error) { + var hdrYaml HeaderYaml + err := yaml.Unmarshal(data, &hdrYaml) + if err != nil { + return nil, err + } + + header := new(Header) + header.FileType = hdrYaml.FileType + + if hdrYaml.Detect.FNameRgx == "" && hdrYaml.Detect.HeaderRgx == "" { + return nil, errors.New("Syntax file must include at least one detection regex") + } + + if hdrYaml.Detect.FNameRgx != "" { + header.FtDetect[0], err = regexp.Compile(hdrYaml.Detect.FNameRgx) + } + if hdrYaml.Detect.HeaderRgx != "" { + header.FtDetect[1], err = regexp.Compile(hdrYaml.Detect.HeaderRgx) + } + + if err != nil { + return nil, err + } + + return header, nil } func ParseFile(input []byte) (f *File, err error) { From 5b52b8a60f4b6f02a2eb845fb6456703462f4f68 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 28 Dec 2019 21:57:03 -0500 Subject: [PATCH 218/231] Support includes --- internal/buffer/buffer.go | 25 ++++++++++++++++++++++--- pkg/highlight/parser.go | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index d332aac6..a5eca5aa 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -533,9 +533,28 @@ func (b *Buffer) UpdateRules() { } // TODO: includes - // if b.SyntaxDef != nil { - // highlight.ResolveIncludes(b.SyntaxDef, files) - // } + if b.SyntaxDef != nil && highlight.HasIncludes(b.SyntaxDef) { + includes := highlight.GetIncludes(b.SyntaxDef) + + var files []*highlight.File + for _, f := range config.ListRuntimeFiles(config.RTSyntax) { + data, _ := f.Data() + header, _ := highlight.MakeHeaderYaml(data) + + for _, i := range includes { + if header.FileType == i { + file, _ := highlight.ParseFile(data) + files = append(files, file) + break + } + } + if len(files) >= len(includes) { + break + } + } + + highlight.ResolveIncludes(b.SyntaxDef, files) + } if b.Highlighter == nil || syntaxFile != "" { if b.SyntaxDef != nil { diff --git a/pkg/highlight/parser.go b/pkg/highlight/parser.go index 621d465f..9364218a 100644 --- a/pkg/highlight/parser.go +++ b/pkg/highlight/parser.go @@ -220,6 +220,40 @@ func ParseDef(f *File, header *Header) (s *Def, err error) { return s, err } +// HasIncludes returns whether this syntax def has any include statements +func HasIncludes(d *Def) bool { + hasIncludes := len(d.rules.includes) > 0 + for _, r := range d.rules.regions { + hasIncludes = hasIncludes || hasIncludesInRegion(r) + } + return hasIncludes +} + +func hasIncludesInRegion(region *region) bool { + hasIncludes := len(region.rules.includes) > 0 + for _, r := range region.rules.regions { + hasIncludes = hasIncludes || hasIncludesInRegion(r) + } + return hasIncludes +} + +// GetIncludes returns a list of filetypes that are included by this syntax def +func GetIncludes(d *Def) []string { + includes := d.rules.includes + for _, r := range d.rules.regions { + includes = append(includes, getIncludesInRegion(r)...) + } + return includes +} + +func getIncludesInRegion(region *region) []string { + includes := region.rules.includes + for _, r := range region.rules.regions { + includes = append(includes, getIncludesInRegion(r)...) + } + return includes +} + // ResolveIncludes will sort out the rules for including other filetypes // You should call this after parsing all the Defs func ResolveIncludes(def *Def, files []*File) { From bd83c6a8a9074466d0b38e070733dc3769c1d268 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 28 Dec 2019 22:27:44 -0500 Subject: [PATCH 219/231] Remove detect requirement and detect in jinja file Ref #1415 --- internal/buffer/buffer.go | 19 +++++++++++++++---- internal/config/runtime.go | 6 +++--- pkg/highlight/ftdetect.go | 2 +- pkg/highlight/parser.go | 8 -------- runtime/syntax/jinja2.yaml | 3 --- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index a5eca5aa..16bc28f7 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -532,18 +532,29 @@ func (b *Buffer) UpdateRules() { } } - // TODO: includes if b.SyntaxDef != nil && highlight.HasIncludes(b.SyntaxDef) { includes := highlight.GetIncludes(b.SyntaxDef) var files []*highlight.File for _, f := range config.ListRuntimeFiles(config.RTSyntax) { - data, _ := f.Data() - header, _ := highlight.MakeHeaderYaml(data) + data, err := f.Data() + if err != nil { + screen.TermMessage("Error parsing syntax file " + f.Name() + ": " + err.Error()) + continue + } + header, err := highlight.MakeHeaderYaml(data) + if err != nil { + screen.TermMessage("Error parsing syntax file " + f.Name() + ": " + err.Error()) + continue + } for _, i := range includes { if header.FileType == i { - file, _ := highlight.ParseFile(data) + file, err := highlight.ParseFile(data) + if err != nil { + screen.TermMessage("Error parsing syntax file " + f.Name() + ": " + err.Error()) + continue + } files = append(files, file) break } diff --git a/internal/config/runtime.go b/internal/config/runtime.go index 1eb51554..70007bdf 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -1214,7 +1214,7 @@ func runtimePluginsAutocloseAutocloseLua() (*asset, error) { return a, nil } -var _runtimePluginsAutocloseInfoJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x8f\xc1\x4e\xc3\x30\x0c\x86\xcf\xf4\x29\xac\x9c\xab\x74\x70\x9c\x04\x12\xcf\x81\x38\xb8\xae\x59\x2d\xd2\xa4\xb3\x1d\xd0\x40\xbc\x3b\x4a\x60\xf7\x1d\xfd\xff\xfe\xf4\xd9\xdf\x03\x00\x40\xc8\xb8\x71\x38\x42\xc0\xea\x85\x52\x31\x0e\xe3\x5f\xb1\xb0\x91\xca\xee\x52\x72\xeb\x9f\xab\x97\x0d\x5d\x08\x53\xba\xc0\x9e\x90\xd8\xa0\x01\x92\x4f\x40\x2b\x2a\x92\xb3\x1a\xbc\x15\x85\x73\x2d\xce\x36\xc2\x8e\xca\xd9\x57\xb6\x36\xcc\x8a\xf4\xce\x6e\x23\xb0\x53\x8c\xf1\xea\xf9\xe4\xd9\xc4\xfb\x0d\xab\xfb\x6e\xc7\x69\x3a\x89\xaf\x75\x8e\x54\xb6\xe9\xeb\xc2\x8b\x2c\x82\xd3\x26\xa4\x25\x8c\xc3\x5d\x90\x6c\x8e\x29\xdd\x0a\x74\xc9\x07\xab\xfd\x3f\x72\x1f\x0f\xf1\x70\xcd\x95\xcf\x55\xb4\xc9\x5f\x7a\xd0\xc3\x4e\xc2\xd3\x23\x3c\xf4\xd5\x5e\xbc\x0e\x3f\xc3\x6f\x00\x00\x00\xff\xff\xd9\xec\x80\xc2\x32\x01\x00\x00" +var _runtimePluginsAutocloseInfoJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x8f\xc1\x4e\xc4\x40\x08\x86\xef\x7d\x0a\xd2\x73\x33\x5d\x3d\x6e\xa2\x89\xcf\x61\x3c\x50\x8a\x5b\xe2\x74\xe8\x02\xa3\x59\x8d\xef\x6e\x3a\xda\x07\xf0\xc8\xff\xf1\xe5\x87\xaf\x0e\x00\xa0\x2f\xb8\x72\x7f\x86\x1e\x6b\x28\x65\x75\xee\x87\x5f\x30\xb3\x93\xc9\x16\xa2\x65\xe7\x4f\x35\x74\xc5\x10\xc2\x9c\x6f\xb0\x65\x24\x76\xd8\x05\x29\x17\xa0\x05\x0d\x29\xd8\x1c\x5e\xd5\xe0\x5a\x35\xd8\x07\xd8\xd0\xb8\xc4\xc2\xbe\x0f\x93\x21\xbd\x71\xf8\x00\x1c\x94\x52\x3a\x7a\x3e\x78\x72\x89\x76\xc3\x12\xb1\xf9\x79\x1c\x2f\x12\x4b\x9d\x12\xe9\x3a\x7e\xde\x78\x96\x59\x70\x5c\x85\x4c\x0f\x47\x8a\x07\xe6\xfc\x2f\xe7\x9d\xcd\xff\x7e\xb9\x4b\xa7\x74\x3a\x72\xe3\x6b\x15\xdb\xfb\x9f\x5b\xd0\xc2\x66\xc2\xe3\x03\xdc\xb7\xd5\x06\x5e\xba\xef\xee\x27\x00\x00\xff\xff\x1a\x2a\xb9\x2f\x35\x01\x00\x00" func runtimePluginsAutocloseInfoJsonBytes() ([]byte, error) { return bindataRead( @@ -3654,7 +3654,7 @@ func runtimeSyntaxJavascriptYaml() (*asset, error) { return a, nil } -var _runtimeSyntaxJinja2Hdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\xca\xcc\xcb\x4a\x34\xe2\x8a\xd1\xcb\x28\xc9\xcd\x51\xe1\xe2\x02\x04\x00\x00\xff\xff\x6c\x91\x60\xd7\x10\x00\x00\x00" +var _runtimeSyntaxJinja2Hdr = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xca\xca\xcc\xcb\x4a\x34\xe2\xe2\xe2\x02\x04\x00\x00\xff\xff\x15\x55\xdb\x7b\x09\x00\x00\x00" func runtimeSyntaxJinja2HdrBytes() ([]byte, error) { return bindataRead( @@ -3674,7 +3674,7 @@ func runtimeSyntaxJinja2Hdr() (*asset, error) { return a, nil } -var _runtimeSyntaxJinja2Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x53\xc1\x8e\x22\x39\x0c\xbd\xf3\x15\x25\x66\x47\xea\x3e\x30\x87\x3d\x72\xe9\x0f\xd9\xde\x43\x2a\x79\x55\x98\x4d\x39\xc1\x71\xa0\x19\xcc\xbf\xaf\x12\x8a\xd1\x4c\xaf\xb4\x9a\x08\x61\x57\xfc\x12\xbf\x67\xc7\x13\x45\xe8\x35\x63\x3f\x1c\x89\x8f\xee\xcf\xcd\x26\x40\xe1\x75\xbf\x19\x86\x61\x68\x51\x76\x0b\xf6\xc3\xf6\xfd\xfd\xdb\x41\x97\xf8\xc7\x76\xb3\x91\x1a\x51\x1a\x60\x37\x10\xfb\x58\x43\x8b\xb7\xe0\xb6\xef\x95\x0c\x4f\x2e\xee\x87\xed\xcb\xed\x66\xf7\xbb\xdd\xbe\xee\xde\x6c\xf7\xf6\xf5\xfe\xfa\x00\x04\x4c\xae\xc6\x35\x45\x5b\x45\x9d\x68\xc7\x37\xe4\xed\xd6\x71\x8f\x05\x0e\x2d\xd0\x4e\xdb\xfd\xfe\x53\x20\xd2\x42\xba\x9b\x25\xd5\xbc\x7f\xa6\xfc\x11\xfc\xc1\xf0\xb9\x7e\x66\x9a\xaf\x7a\x48\xbc\xfd\x25\x5a\xd4\x29\x16\xb0\x76\xa5\xe3\x0b\xcd\x9c\x04\xc3\x42\xa5\x10\xcf\x76\x21\x3d\xbc\xa4\xaa\xaf\x6f\x83\x4f\xac\xf8\x50\x1b\x63\xf2\xff\x98\x77\x31\x1a\x38\x3c\xbe\xc0\xe1\xb9\x31\x51\x54\x48\xf7\x52\x37\x8b\xf3\x92\x9a\x23\xee\xd2\x4c\x81\x1a\x3e\xb4\x79\xb6\x82\x1b\x72\xa5\x69\x0f\x78\xc3\x0a\x7c\x95\x42\x67\x58\xf1\x29\x23\x58\x81\xbe\xbe\xbf\x8f\xbf\x0a\xa0\x00\x56\x9a\x08\xf2\x6d\xac\x14\x95\x78\xaa\xec\x57\x35\x4e\x55\x6c\x74\xea\x0f\xe6\x5d\x26\x75\x91\xbe\xc3\x3c\xb8\x65\xf5\xa9\xb2\x5a\xb0\xb5\x2b\x16\xc8\x6b\x49\xa2\x06\x43\xf1\x2e\xa3\xd1\x43\xa1\xef\x98\x92\x2c\x4e\x6d\x22\x29\xda\xc8\x7a\xac\x80\xde\x85\xf1\x6a\xc4\x8d\x85\x1d\x13\xb1\x45\x57\xd4\x22\x78\xd6\x83\xc5\x74\x81\x58\xce\x42\xac\x26\x8e\x43\x5a\x4c\x70\x84\xd7\xd5\x74\x82\x82\x1c\x9d\x87\x09\xce\x90\x02\x2b\x6e\x82\x15\xc4\x06\x7b\x98\x0e\x2b\x2a\x94\xd5\xcd\xc5\x94\x34\xc2\x34\x1d\x4b\x62\x53\xa1\xc5\x54\x2a\x7b\xa7\xb0\xca\x74\xaa\xb0\x9a\x33\xc4\xaa\x44\xb0\x4f\x01\xcd\x6b\xca\x2f\x49\xc2\x43\x76\xf3\x2e\xe2\xb2\x7d\x2c\xb1\xdd\xfe\x3b\x85\x55\x94\xe7\x33\x69\xdd\x76\x63\x44\x2b\x1e\x31\x82\x05\x3a\x53\xa1\x31\x62\xbc\x1a\x4e\x86\x53\x75\x51\xd3\x5a\xc8\x60\x38\x83\x6d\x86\xcd\x6a\xa4\x90\x7e\xb4\xfd\x7a\x7d\xa2\xda\xe2\x72\x6e\xef\x8d\x61\x9c\xda\x5f\x5d\x46\x88\xa5\x10\xac\xb8\x05\xae\x58\xc1\xa9\x82\x3d\x7a\x19\x78\xb6\xca\xcf\xd4\x5d\xeb\xff\xf2\x5f\x3b\x3c\xc7\x34\xf6\xf1\x6c\x0a\x22\xe5\x52\x17\xf3\x57\x1f\x21\xbd\x73\x10\x6b\x23\x5f\xb2\xf3\x78\x5e\xb7\x1b\x7c\x5a\xfa\x78\xfc\x67\x66\x6f\x5f\x3e\x0f\xeb\x97\xfb\xf6\xd3\x20\x0e\x7f\xfd\xbd\xf9\x37\x00\x00\xff\xff\x83\xe1\x3e\xeb\x69\x04\x00\x00" +var _runtimeSyntaxJinja2Yaml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x53\xc1\x6e\xeb\x38\x0c\xbc\xe7\x2b\x8c\x14\x05\xda\x43\xf6\xb0\xc7\x5c\xfa\x21\x9b\x3d\xc8\xd2\xd8\x61\x56\xa6\x14\x8a\x4a\x9a\x86\xf9\xf7\x85\x1c\xa7\x68\xfb\x80\x87\x27\x04\x21\x2d\x8e\xc4\x19\x52\x1c\x28\x42\x2f\x19\xdb\xee\x40\x7c\x70\x7f\xaf\x56\x52\x23\xca\x76\xd5\x75\x9b\x8e\xd8\xc7\x1a\xb0\xed\xd6\x7b\x9d\xe2\x7a\xde\x2b\x19\x9e\x5c\xdc\x76\xeb\x97\xeb\xd5\x6e\x37\xbb\x3e\x6f\xde\x6c\xf3\xf6\x7c\x7b\xbd\x03\x02\x06\x57\xa3\xb6\x1b\xee\xab\xa8\x13\x9d\xf1\x0d\x79\xbd\xce\xb8\xfb\x02\x87\x16\x68\xa7\xed\x76\xfb\x12\x88\x34\x91\x6e\x46\x49\x35\x6f\x1f\x29\x3f\x83\x9f\x0c\x1f\xeb\x2b\xd3\x7c\xd1\x7d\xe2\xf5\xb7\x68\x51\xa7\x98\xc0\x8d\xc5\x6e\xd7\xbf\xd0\xc8\x49\xd0\x4d\x54\x0a\xf1\x68\x67\xd2\xfd\x4b\xaa\xfa\xfa\xd6\xf9\xc4\x8a\x77\xb5\x3e\x26\xff\x9f\x79\x17\xa3\x81\xc3\xfd\x0b\x1c\x1e\x1b\x03\x45\x85\xcc\x5e\x9a\xcd\xe4\xbc\xa4\xe6\x88\x3b\x37\x53\xa0\x86\x77\x6d\x9e\x2d\xe0\x86\x5c\x68\xda\x1d\xde\xb0\x02\x5f\xa5\xd0\x09\x56\x7c\xca\x08\x56\xa0\xaf\xbb\x5d\xff\x5d\x00\x05\xb0\xd2\x40\x90\xbf\xfa\x4a\x51\x89\x87\xca\x7e\x51\xe3\x54\xc5\x7a\xa7\x7e\x6f\xde\x65\x52\x17\xe9\x03\xe6\xc1\x2d\xab\x4f\x95\xd5\x82\x2d\x5d\xb1\x40\x5e\x4b\x12\x35\x18\x8a\x77\x19\x8d\x1e\x0a\x7d\x60\x48\x32\x39\xb5\x81\xa4\x68\x23\xeb\xb1\x00\xe6\x2e\xf4\x17\x23\x6e\x2c\xec\x90\x88\x2d\xba\xa2\x16\xc1\xa3\xee\x2d\xa6\x33\xc4\x72\x16\x62\x35\x71\x1c\xd2\x64\x82\x03\xbc\x2e\x66\x26\x28\xc8\xd1\x79\x98\xe0\x04\x29\xb0\xe2\x06\x58\x41\x6c\xb0\xbb\x99\x61\x45\x85\xb2\xba\xb1\x98\x92\x46\x98\xa6\x43\x49\x6c\x2a\x34\x99\x4a\x65\xef\x14\x56\x99\x8e\x15\x56\x73\x86\x58\x95\x08\xf6\x29\xa0\x79\x4d\xf9\x39\x49\xb8\xcb\x6e\xde\x59\x5c\xb6\xf7\x29\xb6\xdb\xff\xa4\xb0\x8a\xf2\x78\x26\xad\xdb\xae\x8f\x68\xc5\x23\x46\xb0\x40\x27\x2a\xd4\x47\xf4\x17\xc3\xd1\x70\xac\x2e\x6a\x5a\x0a\x19\x0c\x27\xb0\x8d\xb0\x51\x8d\x14\x32\x1f\x6d\xbf\xb9\x3e\x51\x6d\x72\x39\xb7\xf7\xc6\x30\x4e\xed\xaf\x4e\x3d\xc4\x52\x08\x56\xdc\x04\x57\xac\xe0\x58\xc1\x1e\x73\x19\x78\xb4\xca\x8f\xd4\xb3\xd6\xdf\xf2\x5f\x3a\x3c\xc6\xd4\xcf\xe3\xd9\x14\x44\xca\xa5\x4e\xe6\x2f\x3e\x42\xe6\xce\x41\x8c\xdd\x84\x92\x9d\xc7\xe3\xba\x4d\xe7\xd3\x34\x8f\xc7\x2f\x33\x7b\x7d\xfa\x39\xac\x4f\xb7\xf5\x8f\x41\xec\xfe\xf9\x77\xf5\x7f\x00\x00\x00\xff\xff\xb4\x53\x06\xfd\x47\x04\x00\x00" func runtimeSyntaxJinja2YamlBytes() ([]byte, error) { return bindataRead( diff --git a/pkg/highlight/ftdetect.go b/pkg/highlight/ftdetect.go index a8769cfa..580ade8f 100644 --- a/pkg/highlight/ftdetect.go +++ b/pkg/highlight/ftdetect.go @@ -6,7 +6,7 @@ import "regexp" // to determine the filetype of the file // It will return the corresponding syntax definition for the filetype func MatchFiletype(ftdetect [2]*regexp.Regexp, filename string, firstLine []byte) bool { - if ftdetect[0].MatchString(filename) { + if ftdetect[0] != nil && ftdetect[0].MatchString(filename) { return true } diff --git a/pkg/highlight/parser.go b/pkg/highlight/parser.go index 9364218a..b41c83c5 100644 --- a/pkg/highlight/parser.go +++ b/pkg/highlight/parser.go @@ -106,10 +106,6 @@ func MakeHeader(data []byte) (*Header, error) { fnameRgx := string(lines[1]) headerRgx := string(lines[2]) - if fnameRgx == "" && headerRgx == "" { - return nil, errors.New("Syntax file must include at least one detection regex") - } - if fnameRgx != "" { header.FtDetect[0], err = regexp.Compile(fnameRgx) } @@ -136,10 +132,6 @@ func MakeHeaderYaml(data []byte) (*Header, error) { header := new(Header) header.FileType = hdrYaml.FileType - if hdrYaml.Detect.FNameRgx == "" && hdrYaml.Detect.HeaderRgx == "" { - return nil, errors.New("Syntax file must include at least one detection regex") - } - if hdrYaml.Detect.FNameRgx != "" { header.FtDetect[0], err = regexp.Compile(hdrYaml.Detect.FNameRgx) } diff --git a/runtime/syntax/jinja2.yaml b/runtime/syntax/jinja2.yaml index 2a1141c6..5579ccd8 100644 --- a/runtime/syntax/jinja2.yaml +++ b/runtime/syntax/jinja2.yaml @@ -1,8 +1,5 @@ filetype: jinja2 -detect: - filename: "\\.html$" - rules: - include: "html" - special: "({{|}}|{%-?|-?%})" From 29a5cef559d98220292a171de74dc9b804c4d122 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 28 Dec 2019 22:39:57 -0500 Subject: [PATCH 220/231] Update default plugins slightly --- internal/config/runtime.go | 4 ++-- runtime/plugins/autoclose/autoclose.lua | 2 +- runtime/plugins/linter/linter.lua | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/config/runtime.go b/internal/config/runtime.go index 70007bdf..a3e98d33 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -1194,7 +1194,7 @@ func runtimeHelpTutorialMd() (*asset, error) { return a, nil } -var _runtimePluginsAutocloseAutocloseLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x55\xd1\x6a\xdb\x4a\x10\x7d\xf7\x57\x0c\xba\x0f\x96\x88\xe5\x8b\xef\xd3\x25\xa0\x42\x93\x42\x31\x98\xb6\x24\x85\xb4\x24\x81\xac\x56\xb3\xd6\x12\x79\x57\x8c\x66\xeb\x94\x90\x7f\x2f\x2b\xd9\x8e\xe4\x2a\xb2\x0d\xd1\xc3\xda\xd2\xce\xd9\x99\x3d\x73\x66\xa6\xb0\x52\x14\xe0\x1c\xeb\x02\x12\xd0\xab\xd2\x12\x87\xc1\x4a\x4b\xb2\xff\xfa\x8f\x41\x34\xda\x98\xb0\xfa\xbf\x65\xe1\x5f\x77\x7b\xc2\xb1\x95\x85\xad\xf0\x9b\xd0\x54\x41\x02\xcf\xc1\x5d\x70\x17\x04\x13\x08\xc6\x63\xbf\x3e\x3c\xf8\x35\x8c\xfc\xfa\xfc\xe2\xd7\xdb\xfb\xe0\xa5\x85\xfe\x82\xeb\x42\x9b\x16\xfe\x2f\xdb\x91\x72\x46\xb2\xb6\x06\x64\x2e\xe8\x23\x87\x15\xd3\x04\x74\x34\x02\x00\x88\x63\x28\x9c\x00\x6d\x32\x7c\xd2\x66\x09\xba\x02\x6b\x10\xac\x52\xa0\xc8\xae\x60\x69\x6b\x33\x42\x76\x64\x9a\xdb\x4e\xaf\x9c\xc1\xdd\x31\xf1\x2c\x1a\xa1\xc9\x5a\x5e\xac\xf1\x06\x61\x5a\x4e\x80\x1a\x27\xca\x12\x68\x48\x60\x36\x81\x7f\xf6\x6e\x9c\x35\xe7\xfb\x47\x2b\x20\x48\x92\x6d\x94\x5d\xc3\x5b\x7d\x3f\x81\xff\x22\xe0\x1c\xcd\x0e\xe1\x9f\x86\x09\xe9\x68\xa1\x0d\x42\x02\x69\x39\xbd\x70\xea\xdc\xbf\x85\x69\x39\xbd\x74\x54\x59\x9a\xfe\x8c\x46\x1d\x94\x56\x5b\x37\x1b\xe4\x04\x5e\x8d\x7f\x9c\xcd\xa2\xd3\x03\xf1\x4f\x5a\x9e\x5f\x08\xf9\x58\x95\x42\x62\x18\xf5\x6d\x37\x2e\xae\xf4\x32\xe7\x3e\x03\x42\xf1\xd8\xf9\x5a\x53\xbb\x17\x79\x2b\x52\xf8\x00\x33\x10\x26\x83\xb0\x49\xcd\xbc\xba\xb1\x94\x5d\xe6\x82\xc2\x81\xfb\xc5\xb3\x28\x02\x4b\x43\x14\xc4\x87\x28\xf0\x47\xf4\x73\xd0\x7b\x87\xbe\xff\x87\x13\x3e\x7b\xcf\x84\xb7\x69\x4b\x92\xba\x2c\x6b\x29\x5f\x5a\x67\x78\x6e\xae\x99\xb4\x59\x6e\xc9\xa8\xf9\x31\x96\xe1\x14\x5e\xcf\xde\x24\x25\x8e\xfd\x77\x18\xc7\x63\xc8\x91\xd0\x97\x19\x5b\xc8\x90\x50\xa1\x91\x58\x6f\x96\x56\x1b\x46\xf2\x1b\xaf\x67\x2e\xac\x84\x75\xae\x65\xee\x21\x9e\xa1\x95\x60\x2d\x45\x51\xfc\x86\x95\xc8\xb0\xcf\xd1\x3a\x47\x03\xd2\x9a\x5f\x48\xec\x4b\x7a\x69\xa1\x62\x72\x92\x6b\x9f\x85\x13\x7d\xa0\x39\x83\x41\xcc\x6a\x93\x14\x37\x91\x91\x8f\x2d\x83\x14\xa5\x70\x55\x13\xe4\xae\xca\xf1\xa9\x44\x7f\xa4\x00\x63\xcd\x2e\xf6\xc6\x51\x8f\xf0\xeb\x1c\xcd\x4d\x85\xc4\x61\xdc\xb9\xde\x64\xb0\xce\x06\x8a\x68\x81\xea\xf8\x1a\xda\xff\xbf\xfd\xdd\x34\x36\x25\x8a\x0a\xf7\xfa\x58\x49\xd8\x04\xbc\x69\xb1\x61\x5a\x36\xde\x8e\x56\x60\xc7\xd8\x4b\x0d\x92\xa1\x9a\x6b\x03\x0c\x3e\xf1\x61\xc4\xd9\xac\x8d\x59\xfb\x01\xd0\xe8\xf5\x33\xf2\x02\x45\xa6\xcd\xf2\x26\xd7\x8c\x4d\x43\xda\x4a\x7b\xd4\xdb\x94\x3b\x83\xa4\xdb\x96\x77\xd1\x77\x6a\xb5\x0d\x78\xb3\x5a\xb5\x6a\x5d\x65\x18\x3e\xd0\x54\xbb\x79\xe8\xd5\x44\x63\xf2\x5d\xa4\xbd\xdb\x43\xf2\x0b\xee\x4c\x00\xd3\x29\xac\xab\xde\x83\xaf\x59\x10\x7f\x55\x8b\x37\x3d\x0f\xaa\xb1\xa3\xaf\x63\x44\xd9\x56\x25\x93\xeb\x11\xe5\xeb\x84\xd9\x0a\xf2\xb8\xf9\x7a\x92\x6c\xe1\x5d\x86\xa4\x9f\x4c\x43\x82\x3f\xbd\xfb\xa7\xe5\xf9\x27\x2c\x90\xdb\xb9\x38\x48\xdf\x9f\x00\x00\x00\xff\xff\x80\x29\x13\xa7\xab\x09\x00\x00" +var _runtimePluginsAutocloseAutocloseLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x55\xd1\x6a\xdb\x4a\x10\x7d\xf7\x57\x0c\xba\x0f\x96\x88\xe5\x8b\xef\xd3\x25\xa0\x42\x93\x42\x31\x98\xb6\x24\x85\xb4\x24\x81\xac\x56\xb3\xd6\x12\x79\x57\x8c\x66\xeb\x94\x90\x7f\x2f\x2b\xd9\x8e\xe4\x2a\xb2\x0d\xd1\xc3\xda\xd2\xce\xd9\x99\x39\x73\x66\xb6\xb0\x52\x14\xe0\x1c\xeb\x02\x12\xd0\xab\xd2\x12\x87\xc1\x4a\x4b\xb2\xff\xfa\x8f\x41\x34\xda\x98\xb0\xfa\xbf\x65\xe1\x5f\x77\x7b\xc2\xb1\x95\x85\xad\xf0\x9b\xd0\x54\x41\x02\xcf\xc1\x5d\x70\x17\x04\x13\x08\xc6\x63\xbf\x3e\x3c\xf8\x35\x8c\xfc\xfa\xfc\xe2\xd7\xdb\xfb\xe0\xa5\x85\xfe\x82\xeb\x42\x9b\x16\xfe\x2f\xdb\x91\x72\x46\xb2\xb6\x06\x64\x2e\xe8\x23\x87\x15\xd3\x04\x74\x34\x02\x00\x88\x63\x28\x9c\x00\x6d\x32\x7c\xd2\x66\x09\xba\x02\x6b\x10\xac\x52\xa0\xc8\xae\x60\x69\x6b\x33\x42\x76\x64\x9a\x6c\xa7\x57\xce\xe0\xee\x98\x78\x16\x8d\xd0\x64\x2d\x2f\xd6\x78\x83\x30\x2d\x27\x40\x8d\x13\x65\x09\x34\x24\x30\x9b\xc0\x3f\x7b\x19\x67\xcd\xf9\xfe\xd1\x0a\x08\x92\x64\x1b\x65\xd7\xf0\x56\xdf\x4f\xe0\xbf\x08\x38\x47\xb3\x43\xf8\xa7\x61\x42\x3a\x5a\x68\x83\x90\x40\x5a\x4e\x2f\x9c\x3a\xf7\x6f\x61\x5a\x4e\x2f\x1d\x55\x96\xa6\x3f\xa3\x51\x07\xa5\xd5\xd6\xcd\x06\x39\x81\x57\xe3\x1f\x67\xb3\xe8\xf4\x40\xfc\x93\x96\xe7\x17\x42\x3e\x56\xa5\x90\x18\x46\x7d\xdb\x8d\x8b\x2b\xbd\xcc\xb9\xcf\x80\x50\x3c\x76\xbe\xd6\xd4\xee\x45\xde\x8a\x14\x3e\xc0\x0c\x84\xc9\x20\x6c\x4a\x33\xaf\x6e\x2c\x65\x97\xb9\xa0\x70\x20\xbf\x78\x16\x45\x60\x69\x88\x82\xf8\x10\x05\xfe\x88\x7e\x0e\x7a\x73\xe8\xfb\x7f\xb8\xe0\xb3\xf7\x2c\x78\x9b\xb6\x24\xa9\xdb\xb2\x96\xf2\xa5\x75\x86\xe7\xe6\x9a\x49\x9b\xe5\x96\x8c\x9a\x1f\x63\x19\x4e\xe1\xf5\xec\x4d\x52\xe2\xd8\x7f\x87\x71\x3c\x86\x1c\x09\x7d\x9b\xb1\x85\x0c\x09\x15\x1a\x89\xf5\x66\x69\xb5\x61\x24\xbf\xf1\x7a\xe6\xc2\x4a\x58\xe7\x5a\xe6\x1e\xe2\x19\x5a\x09\xd6\x52\x14\xc5\x6f\x58\x89\x0c\xfb\x1c\xad\x73\x34\x20\xad\xf9\x85\xc4\xbe\xa5\x97\x16\x2a\x26\x27\xb9\xf6\x59\x38\xd1\x07\x9a\x33\x18\xc4\xac\x36\x49\x71\x13\x19\xf9\xd8\x32\x48\x51\x0a\x57\x35\x41\xee\xba\x1c\x9f\x4a\xf4\x47\x0a\x30\xd6\xec\x62\x6f\x1c\xf5\x08\xbf\xae\xd1\xdc\x54\x48\x1c\xc6\x9d\xf4\x26\x83\x7d\x36\xd0\x44\x0b\x54\xc7\xf7\xd0\xfe\xff\xed\xef\x66\xb0\x31\x39\xdc\x1b\x63\x25\x61\x13\xef\x66\xc2\x86\x69\xd9\x38\x3b\x5a\x80\x1d\x63\xaf\x34\x48\x86\x5a\xae\x0d\x30\xf8\xc4\x87\x11\x67\xb3\x36\x66\xed\xe7\x7f\x23\xd7\xcf\xc8\x0b\x14\x99\x36\xcb\x9b\x5c\x33\x36\xf3\x68\xab\xec\x51\xef\x4c\xee\xdc\x23\xdd\xa9\xbc\x8b\xbe\xd3\xaa\x6d\xc0\x9b\xcd\xaa\x55\x2b\x95\x61\xf8\xc0\x4c\xed\xd6\xa1\x57\x12\x8d\xc9\x77\x91\xf6\x6e\x0f\xa9\x2f\xb8\x33\x01\x4c\xa7\xb0\xae\x7a\x0f\xbe\x66\x41\xfc\x55\x2d\xde\xf4\x3c\x28\xc6\x8d\xbc\x94\x28\x2a\x3c\x4a\x93\x87\x45\xf9\x7a\xc1\x6c\x05\x79\xdc\xf5\x7a\x92\x6c\xe1\x5d\xee\x48\x7f\x31\x0d\x09\xfe\xf4\xe1\x9f\x96\xe7\x9f\xb0\x40\x6e\xd7\xe2\x20\x7d\x7f\x02\x00\x00\xff\xff\x7d\xca\x8c\x58\xaa\x09\x00\x00" func runtimePluginsAutocloseAutocloseLuaBytes() ([]byte, error) { return bindataRead( @@ -1334,7 +1334,7 @@ func runtimePluginsLinterInfoJson() (*asset, error) { return a, nil } -var _runtimePluginsLinterLinterLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x59\x5f\x8f\xa4\xb8\x11\x7f\x9f\x4f\x61\xa1\x20\xd1\x3b\xc0\xec\x5e\x2e\x2f\x48\xad\xe8\xb2\xb9\x8b\x14\xed\x9f\x48\xbb\x51\x1e\x76\xf7\x22\xb7\x29\xba\x7d\x63\x6c\x62\x9b\xee\xe9\x8c\xf6\xbb\x47\x65\x1b\xda\xd0\x30\x3b\xb9\xbb\x96\x06\x8c\x29\xff\xea\x7f\xb9\xcc\x08\xc5\xa8\x20\x2d\x67\x5a\x91\x2d\xe1\x6d\xa7\xb4\xcd\x12\xf7\x9c\x6c\x6e\xfc\x5b\xdd\x4b\xcb\x5b\x88\xde\x87\x99\x91\xa2\xe1\x02\x3a\x6a\x0f\x11\x09\x3e\xde\x0d\xf3\x23\xa1\x39\x80\x10\x73\x46\x77\x6e\x76\xa4\xd9\xf5\x4d\x03\xfa\x8a\xc8\x4f\x8f\x54\x4c\xc9\x86\xef\xaf\xa8\xfc\x74\xb2\xb9\x09\x64\x82\x4b\x0b\xda\x90\x2d\x79\xfc\x7a\x73\x53\x14\x84\x69\xa0\x16\x0c\xa1\xe1\x15\x01\x69\xf5\x39\x27\x8c\x0a\x41\x1a\xad\x5a\x72\xe2\xf6\xc0\x25\xa1\x92\x70\xc9\x2d\xa7\x82\xff\x97\x5a\xae\x24\x69\x7a\xc9\x70\x90\x13\xa9\x2c\x62\xd5\x5c\x03\xb3\xe2\x4c\xa8\x1d\x68\x89\x50\xb4\x26\x68\x9c\x9b\xa2\x40\x1a\x49\x5b\xa8\xdc\x95\xa8\x86\xd8\x03\x04\xbe\xf8\x0e\xcd\x63\xcf\x1d\x54\xe3\x88\x58\x45\xd8\x01\xd8\x3d\x69\x94\xc6\x87\xde\xc4\x0b\x58\x5b\x57\xa4\xa5\x5c\x0e\xc2\x77\x5a\x31\x30\x86\xd8\x03\x8a\x60\x08\x3c\x00\xeb\x2d\xd4\x48\x4c\xf5\xde\x54\x78\xed\x5b\x90\xd6\x20\x5a\x47\x8d\xbb\x5f\xc4\x18\x10\x70\x01\xfe\x90\x5f\xda\x20\x8d\x06\xf4\x42\x20\x66\xbd\xd6\x20\xad\x93\xd3\x29\x33\xa1\xaf\x57\xe9\xbd\x85\x94\x3e\x8f\x8b\x40\x6b\xa5\x1b\xa5\x5b\x6a\x2b\x72\x50\x27\x2f\x96\x36\x10\x09\x75\xc7\x54\xdb\x71\x11\xe9\xa7\x7a\xdb\xf5\x76\x60\x9a\x36\xde\x62\x39\x49\x45\x85\x6b\x80\xc8\xbe\xdd\x81\xce\x49\xda\x56\x9e\xc5\xdd\x89\x6a\xc9\xe5\x9e\xb4\x60\x0c\xdd\x3b\xde\xca\x20\xb5\xb1\xe8\x89\xf7\x1f\xd0\x6a\xdc\x0c\x76\xe0\x86\x98\xbe\xc3\x50\x82\x9a\x28\x4d\x7a\x19\x3d\xca\x81\xb3\xea\x30\x00\xa8\x40\x91\x69\x9b\x93\x1a\x1a\xda\x0b\x5b\x61\x74\x15\x05\x39\x1d\xb8\x05\xe4\x50\x11\x73\x50\xbd\xa8\x9d\x52\xef\x3f\x78\xae\x3b\x20\x94\xec\x04\x65\xf7\xee\x31\xab\x15\x06\x12\xa6\x57\xec\x10\xe7\xf8\x03\x18\x5c\x67\x36\x03\xe3\xf0\x53\x9a\xd0\x0b\x17\x92\x29\x29\xce\xcf\x03\x58\x95\xbc\xa1\xc2\x00\xc9\x82\xbc\xa3\x78\x6e\x61\xad\x5a\x6a\xd9\x61\xa2\xcd\x18\xaa\x3b\x20\x8e\x61\xa7\x01\x8d\x44\x5d\x4e\xf5\x94\x74\xd4\x5a\xd0\x12\x1d\xeb\x56\xbb\x84\x9a\xe8\x81\x30\x94\xd9\x3e\x54\x0e\x44\xcb\x51\xb5\x88\x4b\xd0\xc5\xe9\x47\x99\xe5\x47\x6a\x81\x28\x97\x95\xf0\x40\x99\xf5\xd0\xcf\x55\x4e\xc3\x7f\x7a\xae\x21\x5e\xea\xf4\x13\xaa\x69\x0c\xd8\x10\x43\xfe\x81\x9c\xb8\x10\xce\x57\x75\x0d\x75\x94\x2d\x43\x90\x11\x0d\xb6\xd7\x12\x6a\xb2\x3b\xcf\x12\x7a\xfc\xf5\x06\x9a\x5e\x10\x1e\x67\x7c\x58\x67\xc8\xcb\x82\xcb\x1a\x1e\xa0\x76\xa8\xe6\x9b\x4a\xbc\x74\xa9\x3f\x88\xca\x94\xe8\x5b\xf9\xa4\xb0\x4c\x89\xdf\x5f\x56\xcf\xf7\x39\xd2\x0e\x75\x92\xb4\xf4\x1e\xde\x38\xbc\x0c\xd3\x3f\x8f\xbc\xcd\xda\x3a\x77\x15\x2a\x8f\x2b\x42\x4e\x94\xc9\x2f\xf1\x9d\x0f\x01\x98\x0f\x9e\xca\x07\x3b\x6c\x6e\x50\x08\xde\x0c\x05\xfe\x13\x32\xf8\x42\xb6\x5b\x22\xb9\x40\x45\xe4\xcd\xa0\xdf\x8c\x02\x53\x75\xf1\x55\x39\x46\xf6\x76\x14\x74\x85\x92\xb5\x35\xd9\xa2\x0e\x2b\xef\x51\x31\xb2\x75\xfa\xad\x50\x44\x4a\x93\x6d\x6c\x82\x15\x7a\x85\x78\xca\x60\x96\xac\xca\x7f\xa9\x0b\xdb\xa8\x46\x28\xed\xb3\x60\x65\x51\xb0\x30\xd9\x0e\xb6\xfe\xd6\x82\xe0\x09\xb2\x1d\x7c\x82\x0b\x5e\xae\x19\x6a\x24\x66\x73\x62\x90\xf5\x0d\xfe\x5d\xc2\x45\x43\xab\x8e\x71\xc0\x78\x27\xcf\xfd\x27\xb9\x98\x2d\xc4\xbd\x37\x0b\xc4\x6e\xd7\xaf\xe1\x28\x7b\xd7\x68\x24\x77\x35\x1c\xef\xf0\x21\x19\x22\x26\x34\x2f\xe5\xdf\xde\xbf\xff\x80\x01\x93\x9c\xb8\xac\xd5\xc9\x24\xd3\xb0\x89\x30\xde\xfd\xf3\x4d\x32\xca\xec\x06\x51\x64\x27\x7b\xc6\x92\x9c\x24\xee\xe2\xc7\x8f\x49\xd1\x98\xb3\xb4\xf4\xa1\xc0\x02\x86\x2f\x8a\x7f\x51\x21\xfc\x00\x1e\xac\xa6\x38\x4c\x9b\xe4\xab\xbb\x55\xa9\xa8\x52\x56\x95\xb7\x15\x49\xdb\x64\xb3\xca\xe1\xf6\xf6\x09\x1e\x49\x61\x6c\xbd\x65\xb7\xb7\xaf\xbe\xff\xcd\x0c\xeb\xb6\x46\x7a\x7f\x71\xe3\xc7\xa4\x60\x4a\x28\xbd\x55\x4d\xe3\x50\x55\xe1\x6e\x27\x7f\xe5\xee\xc6\x26\x4c\xd2\x2c\x15\xe9\xe6\x09\xad\xd4\xae\xe7\xc2\xf1\xd8\xab\xf1\xfa\x98\x8c\xb3\x05\x3e\x07\x37\x4c\xe4\xfe\xf3\x05\xb0\x28\x66\x98\x18\x2d\x31\x64\x78\x7e\xbc\x52\x7e\x59\xa8\x5f\xe8\x91\x3a\x35\x70\x30\xdc\x83\xbd\x9d\x50\x69\x7d\x65\x49\x9f\xbe\x6b\x80\xe6\x10\x24\x42\x24\xc3\x34\xef\xfc\xd3\x30\x1f\x4b\xe6\xb7\x99\x54\xe4\xe5\x6d\xbe\x0c\x27\xb8\x05\x4d\x2d\x20\xc4\x6c\x1c\xbc\x74\xed\xe8\x16\xdf\x7c\xcd\x7d\x56\xe7\xc4\xea\x1e\x16\x80\x7b\xea\x1a\x4f\x07\xd6\xd3\x70\x1b\xa6\x1e\x93\xa2\x90\xca\x87\xc0\x52\x24\x2d\x0b\x2b\x39\xb2\x9e\xde\x1e\x93\x91\x4d\x51\x60\x81\xfa\xa9\x17\xe2\x1f\xd4\x1e\x8c\x9f\x32\xb6\x56\xbd\xf5\x63\xb4\x90\xa9\x42\xc4\x8d\x2c\xcb\x54\xe4\x24\x65\xe5\x32\x4f\x26\xa8\xdc\x23\xbd\xda\xfd\x02\xd8\x38\x80\x37\xc9\x03\xd3\xbd\xf4\xfc\x07\x8a\xdf\x37\x49\xbb\x73\x23\xe8\x3d\x38\x35\xba\xb3\x3d\x28\xe9\x47\xe3\xec\x2c\x04\xcb\x22\x8e\xe3\x18\xa9\x3d\x77\xe7\x29\x4a\x98\x99\x21\xac\xc9\x31\xa4\x40\x2c\xc5\x98\x06\x45\xe1\x7b\xe9\xc2\x6f\x37\x5b\xd7\x7b\xd3\x9d\x00\x6f\x72\x0d\xd8\xf3\x9a\xad\x54\xd7\x61\xbe\xc8\xce\x1c\x9a\xd6\x71\xf3\x87\x38\x37\xf0\x33\xcf\x4d\x39\x73\xe2\x8d\x75\x3e\x72\xa3\xa9\xb3\x2e\x2f\x57\x1c\x81\x44\x35\xd5\x27\x2e\xf1\xf5\x72\x6c\xcf\x38\xb0\x45\xe1\x22\x3c\xc1\x65\xff\xb0\x0e\x77\xa6\xad\x53\x34\xbe\x47\xf6\xf5\x86\x75\x66\xa7\xda\x0c\xa6\xbd\x66\xe7\xad\xe1\xd0\xfd\xa9\xb5\x7c\x4b\xef\xe1\xb5\x6a\x5b\x2a\x6b\xcc\x74\xef\x45\xbf\xfd\x95\x78\x7b\xed\x4a\x71\x20\x7e\xa7\x5e\xab\xb6\x13\x60\x61\x33\xdb\x0e\x03\x69\xb6\xeb\x7c\x8b\xe5\x35\xd8\x75\xd5\x07\x7a\x84\xb0\x4f\xea\x5e\x06\x75\x76\x5d\xf9\x97\xbe\x99\x63\x30\x25\x2d\xe5\xd2\x64\xbe\x0f\x03\x01\x78\x88\xf4\x6b\xf1\x80\x71\x9f\x93\x23\xe1\x92\x74\x94\x6b\x4f\xb4\x21\xb5\x1a\x37\x4f\xde\x90\x23\xee\xad\x61\xdd\x74\x67\x75\xfc\x5d\x7f\xe9\x0c\x3c\xce\xa3\x04\xf1\x3d\xd0\xf8\x66\x64\xd6\x2a\x5c\xc4\x47\xd9\x2f\x3b\x7f\x83\xbd\xc6\xae\x6f\xaa\x9f\xb8\x80\x8f\xe7\x0e\x26\x7d\x81\x3b\xbe\xba\xf7\x25\x96\x9c\xb8\x63\xe0\x3a\xb4\x7d\x1d\xb5\x87\xf2\xaf\x5c\x67\xf8\x10\xfc\xb3\xa4\xb1\x6b\x4a\x26\x4a\x0f\x12\x0c\x0d\x15\xca\xb2\x25\xc7\xf2\xaa\x99\x44\xeb\x8c\x8d\xd7\x95\x69\x2e\x00\xc6\x6a\x2e\xf7\xa5\x7b\xcc\x1a\x9b\x47\x58\x9b\x89\xd5\x66\x22\x1c\xa8\xc1\xd6\xe6\xe2\xc4\x63\x89\x7d\x75\xdc\xf8\x6c\x62\x61\xf0\x14\xea\xd7\x50\x59\x93\x63\xd4\x48\x3e\x21\xdc\xb4\x47\x1c\x7c\x16\x10\x2f\x68\x88\xfd\xab\x11\x67\x7a\x85\xb6\x3a\x6a\x80\x83\x63\xa8\xde\x5f\x5c\x73\x74\xed\xf7\xc4\x33\xf8\xc3\xc9\x4f\xf7\x5f\x7c\x5b\x5e\xed\x4d\xbf\xcb\x92\x34\xc5\xad\xc5\x39\x7a\x9c\xc1\x14\xab\xb9\x5e\x31\x30\x6f\x46\x81\xaf\x34\xc1\x98\xc0\x78\xcc\x5d\xac\x94\xd1\x11\xe7\x58\x4e\x0e\x39\xc7\x72\x3c\xce\x1c\xcb\xc9\x81\x66\x9e\x06\xd3\xa8\x57\xd2\x65\xf0\xae\x5b\xcb\xe1\x6f\x64\xcd\x45\x40\x1f\xbe\xeb\xc7\x30\x94\xcf\x9f\xb5\x42\xf1\xe8\x9b\xea\xb5\x00\xaa\xdf\xfa\xaf\x29\x43\x02\x84\xfc\x70\xb5\xbf\xfc\xbb\xda\x7d\xe8\xe8\x49\x66\x11\x6a\x92\x84\xbf\x50\xc6\x94\xfc\xf1\xc1\xb5\x2a\x13\x31\x56\x79\xcf\xf5\xc7\xc5\x99\xdf\xc0\xe2\xda\x36\x7e\x38\xfc\x26\x64\x38\x95\x7d\x7a\xf5\xc5\xaf\xff\xf4\xdd\x30\xf8\xe3\x30\xf8\x7e\x18\xfc\xe9\x4b\x04\xee\x8e\xea\x98\x93\x9d\x88\x44\x48\x3e\xcb\xa1\x86\x87\x6f\xa5\xb0\x87\x87\xe9\x89\x6e\x12\x6b\x49\x56\x96\xc5\x26\xb9\x84\x9b\xdb\x41\xb2\xb4\xbe\x8d\x27\xd9\xd2\x64\xeb\x97\xe3\xdc\x58\x94\xfe\x9d\xbb\x8e\x91\x4b\xc2\xc7\xba\x04\xd3\xd8\x2f\x0a\xf2\x51\xf3\xd6\x9f\x08\x4d\x47\xd9\xe4\x60\x87\xe5\x10\x6f\x95\x2f\x32\xc9\xcf\xa9\x79\x81\x3c\x52\xf3\xe2\x0f\xc9\xa4\x48\x84\x62\xd4\x70\x59\x3b\x2e\xb9\xd7\x75\xb3\x90\x07\x63\xad\x75\xee\xc0\xd3\xbe\x12\x39\x69\xcd\x7e\x5e\xd3\x62\x9c\x05\x88\x03\x35\x4c\xe1\x09\x6c\xb2\x4d\x44\x45\x2b\x96\x69\xe2\x70\x67\xc3\x05\xd1\xf0\x37\xa2\x4e\xeb\xcd\xf0\xf3\x62\x32\x25\x26\x6f\x40\x18\xe0\x8d\xfb\xb2\xb2\xf4\x8d\xe1\x19\xd8\x71\x85\x74\x7c\x38\xd3\xaa\x7c\xa3\xf6\xd9\x8e\x1a\xc0\xc3\x6d\x36\xec\x4b\x9b\x9c\x8c\x73\xae\x38\x6d\xe6\xca\x5f\x2f\x41\xb1\xa6\x8b\x96\x25\x0c\xa9\xe2\xb5\xc4\xa3\xf4\x9c\xc0\x57\x6f\xd4\x62\x71\xfd\x05\xa3\x35\x96\xea\xb0\xdd\x36\xa0\xcb\x37\x8a\x65\x56\xf9\xef\x4e\x19\x53\xa2\x78\x75\xeb\x92\x38\x27\xe3\x2c\xfa\xbb\x78\x75\x8b\xe9\x38\xd3\x69\x06\x0d\xb2\x5e\x07\xfe\x15\xb0\x41\xdf\x00\xf8\x0e\x4e\xa1\x8e\x65\x43\xb9\x68\xcd\x3e\x0f\x1a\xe5\x8e\x7d\x3e\x10\xbf\xfd\xf8\x23\x46\xd6\x35\x2e\x2c\x45\xcf\x53\xcc\x7e\xb0\x6f\xb8\x9c\xb1\x9c\xe8\xe0\x35\x78\x06\xe7\x59\x28\x91\x50\xa1\x7f\xa8\xeb\x41\x2f\x94\x61\xb3\x1a\x7f\xeb\x5b\x8c\x2f\x6f\xc6\xea\x9c\x18\xe8\x36\x93\xca\x66\x7a\x61\x2f\xdb\xef\xb4\xde\x65\x49\xf6\xe9\xe7\xd4\x7c\x71\x15\xcb\x67\x61\x36\x02\x60\xa5\x02\xca\x0e\x58\xa7\x8c\xd5\xd5\xde\x67\x7f\xa8\x1f\x51\xad\xb2\xd8\x2d\x97\x5c\x1a\xd0\x36\xf3\x0c\x73\xb7\x72\xb3\xd4\x18\x7a\x82\x99\x02\xd3\x1c\x88\x24\x35\xd0\xb9\xef\x41\xff\xef\x77\xa0\xb0\xee\xf3\xe7\x64\x22\x83\x07\x75\xff\xd7\x19\x8b\x9a\xab\xd4\xbe\xee\x25\x59\xf9\x22\x21\x65\xe9\x96\x97\x25\x49\x36\x59\xf9\x62\xe3\x0e\x02\xdf\x25\x93\x8d\xda\xfd\x63\x04\x51\xff\x17\x00\x00\xff\xff\xb2\x3e\x43\x48\x8b\x1b\x00\x00" +var _runtimePluginsLinterLinterLua = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x59\x5f\x8f\xa4\xb8\x11\x7f\x9f\x4f\x61\xa1\x20\xd1\x3b\xc0\xec\x5e\x2e\x2f\x48\xad\xe8\xb2\xb9\x8b\x14\xed\x9f\x48\xbb\x51\x1e\x76\xf7\x22\xb7\x29\xba\x7d\x63\x6c\x62\x9b\xee\xe9\x8c\xf6\xbb\x47\x65\x1b\xda\xd0\x30\x3b\xb9\xbb\x96\x06\x8c\x29\xff\xea\x7f\xb9\xcc\x08\xc5\xa8\x20\x2d\x67\x5a\x91\x2d\xe1\x6d\xa7\xb4\xcd\x12\xf7\x9c\x6c\x6e\xfc\x5b\xdd\x4b\xcb\x5b\x88\xde\x87\x99\x91\xa2\xe1\x02\x3a\x6a\x0f\x11\x09\x3e\xde\x0d\xf3\x23\xa1\x39\x80\x10\x73\x46\x77\x6e\x76\xa4\xd9\xf5\x4d\x03\xfa\x8a\xc8\x4f\x8f\x54\x4c\xc9\x86\xef\xaf\xa8\xfc\x74\xb2\xb9\x09\x64\x82\x4b\x0b\xda\x90\x2d\x79\xfc\x7a\x73\x53\x14\x84\x69\xa0\x16\x0c\xa1\xe1\x15\x01\x69\xf5\x39\x27\x8c\x0a\x41\x1a\xad\x5a\x72\xe2\xf6\xc0\x25\xa1\x92\x70\xc9\x2d\xa7\x82\xff\x97\x5a\xae\x24\x69\x7a\xc9\x70\x90\x13\xa9\x2c\x62\xd5\x5c\x03\xb3\xe2\x4c\xa8\x1d\x68\x89\x50\xb4\x26\x68\x9c\x9b\xa2\x40\x1a\x49\x5b\xa8\xdc\x95\xa8\x86\xd8\x03\x04\xbe\xf8\x0e\xcd\x63\xcf\x1d\x54\xe3\x88\x58\x45\xd8\x01\xd8\x3d\x69\x94\xc6\x87\xde\xc4\x0b\x58\x5b\x57\xa4\xa5\x5c\x0e\xc2\x77\x5a\x31\x30\x86\xd8\x03\x8a\x60\x08\x3c\x00\xeb\x2d\xd4\x48\x4c\xf5\xde\x54\x78\xed\x5b\x90\xd6\x20\x5a\x47\x8d\xbb\x5f\xc4\x18\x10\x70\x01\xfe\x90\x5f\xda\x20\x8d\x06\xf4\x42\x20\x66\xbd\xd6\x20\xad\x93\xd3\x29\x33\xa1\xaf\x57\xe9\xbd\x85\x94\x3e\x8f\x8b\x40\x6b\xa5\x1b\xa5\x5b\x6a\x2b\x72\x50\x27\x2f\x96\x36\x10\x09\x75\xc7\x54\xdb\x71\x11\xe9\xa7\x7a\xdb\xf5\x76\x60\x9a\x36\xde\x62\x39\x49\x45\x85\x6b\x80\xc8\xbe\xdd\x81\xce\x49\xda\x56\x9e\xc5\xdd\x89\x6a\xc9\xe5\x9e\xb4\x60\x0c\xdd\x3b\xde\xca\x20\xb5\xb1\xe8\x89\xf7\x1f\xd0\x6a\xdc\x0c\x76\xe0\x86\x98\xbe\xc3\x50\x82\x9a\x28\x4d\x7a\x19\x3d\xca\x81\xb3\xea\x30\x00\xa8\x40\x91\x69\x9b\x93\x1a\x1a\xda\x0b\x5b\x61\x74\x15\x05\x39\x1d\xb8\x05\xe4\x50\x11\x73\x50\xbd\xa8\x9d\x52\xef\x3f\x78\xae\x3b\x20\x94\xec\x04\x65\xf7\xee\x31\xab\x15\x06\x12\xa6\x57\xec\x10\xe7\xf8\x03\x18\x5c\x67\x36\x03\xe3\xf0\x53\x9a\xd0\x0b\x17\x92\x29\x29\xce\xcf\x03\x58\x95\xbc\xa1\xc2\x00\xc9\x82\xbc\xa3\x78\x6e\x61\xad\x5a\x6a\xd9\x61\xa2\xcd\x18\xaa\x3b\x20\x8e\x61\xa7\x01\x8d\x44\x5d\x4e\xf5\x94\x74\xd4\x5a\xd0\x12\x1d\xeb\x56\xbb\x84\x9a\xe8\x81\x30\x94\xd9\x3e\x54\x0e\x44\xcb\x51\xb5\x88\x4b\xd0\xc5\xe9\x47\x99\xe5\x47\x6a\x81\x28\x97\x95\xf0\x40\x99\xf5\xd0\xcf\x55\x4e\xc3\x7f\x7a\xae\x21\x5e\xea\xf4\x13\xaa\x69\x0c\xd8\x10\x43\xfe\x81\x9c\xb8\x10\xce\x57\x75\x0d\x75\x94\x2d\x43\x90\x11\x0d\xb6\xd7\x12\x6a\xb2\x3b\xcf\x12\x7a\xfc\xf5\x06\x9a\x5e\x10\x1e\x67\x7c\x58\x67\xc8\xcb\x82\xcb\x1a\x1e\xa0\x76\xa8\xe6\x9b\x4a\xbc\x74\xa9\x3f\x88\xca\x94\xe8\x5b\xf9\xa4\xb0\x4c\x89\xdf\x5f\x56\xcf\xf7\x39\xd2\x0e\x75\x92\xb4\xf4\x1e\xde\x38\xbc\x0c\xd3\x3f\x8f\xbc\xcd\xda\x3a\x77\x15\x2a\x8f\x2b\x42\x4e\x94\xc9\x2f\xf1\x9d\x0f\x01\x98\x0f\x9e\xca\x07\x3b\x6c\x6e\x50\x08\xde\x0c\x05\xfe\x13\x32\xf8\x42\xb6\x5b\x22\xb9\x40\x45\xe4\xcd\xa0\xdf\x8c\x02\x53\x75\xf1\x55\x39\x46\xf6\x76\x14\x74\x85\x92\xb5\x35\xd9\xa2\x0e\x2b\xef\x51\x31\xb2\x75\xfa\xad\x50\x44\x4a\x93\x6d\x6c\x82\x15\x7a\x85\x78\xca\x60\x96\xac\xca\x7f\xa9\x0b\xdb\xa8\x46\x28\xed\xb3\x60\x65\x51\xb0\x30\xd9\x0e\xb6\xfe\xd6\x82\xe0\x09\xb2\x1d\x7c\x82\x0b\x5e\xae\x19\x6a\x24\x66\x73\x62\x90\xf5\x0d\xfe\x5d\xc2\x45\x43\xab\x8e\x71\xc0\x78\x27\xcf\xfd\x27\xb9\x98\x2d\xc4\xbd\x37\x0b\xc4\x6e\xd7\xaf\xe1\x28\x7b\xd7\x68\x24\x77\x35\x1c\xef\xf0\x21\x19\x22\x26\x34\x2f\xe5\xdf\xde\xbf\xff\x80\x01\x93\x9c\xb8\xac\xd5\xc9\x24\xd3\xb0\x89\x30\xde\xfd\xf3\x4d\x32\xca\xec\x06\x51\x64\x27\x7b\xc6\x92\x9c\x24\xee\xe2\xc7\x8f\x49\xd1\x98\xb3\xb4\xf4\xa1\xc0\x02\x86\x2f\x8a\x7f\x51\x21\xfc\x00\x1e\xac\xa6\x38\x4c\x9b\xe4\xab\xbb\x55\xa9\xa8\x52\x56\x95\xb7\x15\x49\xdb\x64\xb3\xca\xe1\xf6\xf6\x09\x1e\x49\x61\x6c\xbd\x65\xb7\xb7\xaf\xbe\xff\xcd\x0c\xeb\xb6\x46\x7a\x7f\x71\xe3\xc7\xa4\x60\x4a\x28\xbd\x55\x4d\xe3\x50\x55\xe1\x6e\x27\x7f\xe5\xee\xc6\x26\x4c\xd2\x2c\x15\xe9\xe6\x09\xad\xd4\xae\xe7\xc2\xf1\xd8\xab\xf1\xfa\x98\x8c\xb3\x05\x3e\x07\x37\x4c\xe4\xfe\xf3\x05\xb0\x28\x66\x98\x18\x2d\x31\x64\x78\x7e\xbc\x52\x7e\x59\xa8\x5f\xe8\x91\x3a\x35\x70\x30\xdc\x83\xbd\x9d\x50\x69\x7d\x65\x49\x9f\xbe\x6b\x80\xe6\x10\x24\x42\x24\xc3\x34\xef\xfc\xd3\x30\x1f\x4b\xe6\xb7\x99\x54\xe4\xe5\x6d\xbe\x0c\x27\xb8\x05\x4d\x2d\x20\xc4\x6c\x1c\xbc\x74\xed\xe8\x16\xdf\x7c\xcd\x7d\x56\xe7\xc4\xea\x1e\x16\x80\x7b\xea\x1a\x4f\x07\xd6\xd3\x70\x1b\xa6\x1e\x93\xa2\x90\xca\x87\xc0\x52\x24\x2d\x0b\x2b\x39\xb2\x9e\xde\x1e\x93\x91\x4d\x51\x60\x81\xfa\xa9\x17\xe2\x1f\xd4\x1e\x8c\x9f\x32\xb6\x56\xbd\xf5\x63\xb4\x90\xa9\x42\xc4\x8d\x2c\xcb\x54\xe4\x24\x65\xe5\x32\x4f\x26\xa8\xdc\x23\xbd\xda\xfd\x02\xd8\x38\x80\x37\xc9\x03\xd3\xbd\xf4\xfc\x07\x8a\xdf\x37\x49\xbb\x73\x23\xe8\x3d\x38\x35\xba\xb3\x3d\x28\xe9\x47\xe3\xec\x2c\x04\xcb\x22\x8e\xe3\x18\xa9\x3d\x77\xe7\x29\x4a\x98\x99\x21\xac\xc9\x31\xa4\x40\x2c\xc5\x98\x06\x45\xe1\x7b\xe9\xc2\x6f\x37\x5b\xd7\x7b\xd3\x9d\x00\x6f\x72\x0d\xd8\xf3\x9a\xad\x54\xd7\x61\xbe\xc8\xce\x1c\x9a\xd6\x71\xf3\x87\x38\x37\xf0\x33\xcf\x4d\x39\x73\xe2\x8d\x75\x3e\x72\xa3\xa9\xb3\x2e\x2f\x57\x1c\x81\x44\x35\xd5\x27\x2e\xf1\xf5\x72\x6c\xcf\x38\xb0\x45\xe1\x22\x3c\xc1\x65\xff\xb0\x0e\x77\xa6\xad\x53\x34\xbe\x47\xf6\xf5\x86\x75\x66\xa7\xda\x0c\xa6\xbd\x66\xe7\xad\xe1\xd0\xfd\xa9\xb5\x7c\x4b\xef\xe1\xb5\x6a\x5b\x2a\x6b\xcc\x74\xef\x45\xbf\xfd\x95\x78\x7b\xed\x4a\x71\x20\x7e\xa7\x5e\xab\xb6\x13\x60\x61\x33\xdb\x0e\x03\x69\xb6\xeb\x7c\x8b\xe5\x35\xd8\x75\xd5\x07\x7a\x84\xb0\x4f\xea\x5e\x06\x75\x76\x5d\xf9\x97\xbe\x99\x63\x30\x25\x2d\xe5\xd2\x64\xbe\x0f\x03\x01\x78\x88\xf4\x6b\xf1\x80\x71\x9f\x93\x23\xe1\x92\x74\x94\x6b\x4f\xb4\x21\xb5\x1a\x37\x4f\xde\x90\x23\xee\xad\x61\xdd\x74\x67\x75\xfc\x5d\x7f\xe9\x0c\x3c\xce\xa3\x04\xf1\x3d\xd0\xf8\x66\x64\xd6\x2a\x5c\xc4\x47\xd9\x2f\x3b\x7f\x83\xbd\xc6\xae\x6f\xaa\x9f\xb8\x80\x8f\xe7\x0e\x26\x7d\x81\x3b\xbe\xba\xf7\x25\x96\x9c\xb8\x63\xe0\x3a\xb4\x7d\x1d\xb5\x87\xf2\xaf\x5c\x67\xf8\x10\xfc\xb3\xa4\xb1\x6b\x4a\x26\x4a\x0f\x12\x0c\x0d\x15\xca\xb2\x25\xc7\xf2\xaa\x99\x44\xeb\x8c\x8d\xd7\x95\x69\x2e\x00\xc6\x6a\x2e\xf7\xa5\x7b\xcc\x1a\x9b\x47\x58\x9b\x89\xd5\x66\x22\x1c\xa8\xc1\xd6\xe6\xe2\xc4\x63\x89\x7d\x75\xdc\xf8\x6c\x62\x61\xf0\x14\xea\xd7\x50\x59\x93\x63\xd4\x48\x3e\x21\xdc\xb4\x47\x1c\x7c\x16\x10\x2f\x68\x88\xfd\xab\x11\x67\x7a\x85\xb6\x3a\x6a\x80\x83\x63\xa8\xde\x5f\x5c\x73\x74\xed\xf7\xc4\x33\xf8\xc3\xc9\x4f\xf7\x5f\x7c\x5b\x5e\xed\x4d\xbf\xcb\x92\x34\xc5\xad\xc5\x39\x7a\x9c\xc1\x14\xab\xb9\x5e\x31\x30\x6f\x46\x81\xaf\x34\xc1\x98\xc0\x78\xcc\x5d\xac\x94\xd1\x11\xe7\x58\x4e\x0e\x39\xc7\x72\x3c\xce\x1c\xcb\xc9\x81\x66\x9e\x06\xd3\xa8\x57\xd2\x65\xf0\xae\x5b\xcb\xe1\x79\x66\x5d\xd7\x05\x2f\x9f\x8f\xde\xf5\x53\x18\x8a\xe7\x8f\x5a\xa1\x76\xf4\x4d\xf5\x5a\x00\xd5\x6f\xfd\xc7\x94\x21\xfe\x43\x7a\xb8\xd2\x5f\xfe\x5d\xed\x3e\x74\xf4\x24\xb3\x08\x35\x49\xc2\x5f\xa8\x62\x4a\xfe\xf8\xe0\x3a\x95\x89\x18\xab\xbc\xe7\xea\xe3\xe2\xcc\xef\x5f\x71\x69\x1b\xbf\x1b\x7e\x13\x32\x1c\xca\x3e\xbd\xfa\xe2\xd7\x7f\xfa\x6e\x18\xfc\x71\x18\x7c\x3f\x0c\xfe\xf4\x25\x02\x77\x27\x75\x4c\xc9\x4e\x44\x22\x24\x9f\xe5\x50\xc2\xc3\xa7\x52\xd8\xc3\xc3\xf4\x40\x37\x09\xb5\x24\x2b\xcb\x62\x93\x5c\xa2\xcd\x6d\x20\x59\x5a\xdf\xc6\x93\x6c\x69\xb2\xf5\xcb\x71\x6e\xac\x49\xff\xce\x5d\xc3\xc8\x25\xe1\x63\x59\x82\x69\xe8\x17\x05\xf9\xa8\x79\xeb\x0f\x84\xa6\xa3\x6c\x72\xae\xc3\x6a\x88\xb7\xca\xd7\x98\xe4\xe7\xd4\xbc\x40\x1e\xa9\x79\xf1\x87\x64\x52\x23\x42\x2d\x6a\xb8\xac\x1d\x97\xdc\xeb\xba\x59\x48\x83\xb1\xd4\x3a\x77\xe0\x61\x5f\x89\x9c\xb4\x66\x3f\x2f\x69\x31\xce\x02\xc4\x81\x1a\xa6\xf0\x00\x36\xd9\x25\xa2\x9a\x15\xcb\x34\x71\xb8\xb3\xe1\x82\x68\xf8\x1b\x51\xa7\xe5\x66\xf8\x79\x31\x99\x12\x93\x37\x20\x0c\xf0\xc6\x7d\x58\x59\xfa\xc4\xf0\x0c\xec\xb8\x40\x3a\x3e\x9c\x69\x55\xbe\x51\xfb\x6c\x47\x0d\xe0\xd9\x36\x1b\xb6\xa5\x4d\x4e\xc6\x39\x57\x9b\x36\x73\xe5\xaf\x97\xa0\x58\xd3\x45\xcb\x12\x86\x54\xf1\x5a\xe2\x49\x7a\x4e\xe0\x8b\x37\x6a\xb1\xb8\xfe\x82\xd1\x1a\x4b\x75\xd8\x6d\x1b\xd0\xe5\x1b\xc5\x32\xab\xfc\x67\xa7\x8c\x29\x51\xbc\xba\x75\x49\x9c\x93\x71\x16\xfd\x5d\xbc\xba\xc5\x74\x9c\xe9\x34\x83\x06\x59\xaf\x03\xff\x0a\xd8\xa0\x6f\x00\x7c\x07\xa7\x50\xc7\xb2\xa1\x5c\xb4\x66\x9f\x07\x8d\x72\xc7\x3e\x1f\x88\xdf\x7e\xfc\x11\x23\xeb\x1a\x17\x96\xa2\xe7\x29\x66\x3f\xd8\x37\x5c\xce\x58\x4e\x74\xf0\x1a\x3c\x83\xf3\x2c\x94\x48\xa8\xd0\x3f\xd4\xf5\xa0\x17\xca\xb0\x59\x8d\xbf\xf5\x1d\xc6\x97\x37\x63\x75\x4e\x0c\x74\x9b\x49\x65\x33\xbd\xb0\x97\xdd\x77\x5a\xef\xb2\x24\xfb\xf4\x73\x6a\xbe\xb8\x8a\xe5\xb3\x30\x1b\x01\xb0\x52\x01\x65\x07\xac\x53\xc6\xea\x6a\xef\xb3\x3f\xd4\x8f\xa8\x56\x59\x6c\x96\x4b\x2e\x0d\x68\x9b\x79\x86\xb9\x5b\xb9\x59\xea\x0b\x3d\xc1\x4c\x81\x69\x0e\x44\x92\x1a\xe8\xdc\xe7\xa0\xff\xf7\x33\x50\x58\xf7\xf9\x73\x32\x91\xc1\x83\xba\x7f\xeb\x8c\x45\xcd\x55\x6a\x5f\xf7\x92\xac\x7c\x91\x90\xb2\x74\xcb\xcb\x92\x24\x9b\xac\x7c\xb1\x71\xe7\x80\xef\x92\xc9\x3e\xed\xfe\x2f\x82\xa8\xff\x0b\x00\x00\xff\xff\x75\x76\xba\x12\x8a\x1b\x00\x00" func runtimePluginsLinterLinterLuaBytes() ([]byte, error) { return bindataRead( diff --git a/runtime/plugins/autoclose/autoclose.lua b/runtime/plugins/autoclose/autoclose.lua index 05d64273..add8842d 100644 --- a/runtime/plugins/autoclose/autoclose.lua +++ b/runtime/plugins/autoclose/autoclose.lua @@ -36,7 +36,7 @@ function onRune(bp, r) end end end - return false + return true end function preInsertNewline(bp) diff --git a/runtime/plugins/linter/linter.lua b/runtime/plugins/linter/linter.lua index e94a0b58..b4f75943 100644 --- a/runtime/plugins/linter/linter.lua +++ b/runtime/plugins/linter/linter.lua @@ -125,7 +125,7 @@ end function onSave(bp) runLinter(bp.Buf) - return false + return true end function lint(buf, linter, cmd, args, errorformat, loff, coff) From 34619e111fb8fc06e78cbe966ef13c480558a353 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 28 Dec 2019 22:48:38 -0500 Subject: [PATCH 221/231] Add GetGlobalOption access for plugins --- cmd/micro/initlua.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/micro/initlua.go b/cmd/micro/initlua.go index 17d64cb6..e87c1b6e 100644 --- a/cmd/micro/initlua.go +++ b/cmd/micro/initlua.go @@ -72,6 +72,7 @@ func luaImportMicroConfig() *lua.LTable { ulua.L.SetField(pkg, "RTPlugin", luar.New(ulua.L, config.RTPlugin)) ulua.L.SetField(pkg, "RegisterCommonOption", luar.New(ulua.L, config.RegisterCommonOption)) ulua.L.SetField(pkg, "RegisterGlobalOption", luar.New(ulua.L, config.RegisterGlobalOption)) + ulua.L.SetField(pkg, "GetGlobalOption", luar.New(ulua.L, config.GetGlobalOption)) return pkg } From cf1f9fa0079107bec50bea82e3d6a8e0ab615a83 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 28 Dec 2019 23:10:51 -0500 Subject: [PATCH 222/231] Use MICRO_CONFIG_HOME before trying XDG_CONFIG_HOME --- internal/config/config.go | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/internal/config/config.go b/internal/config/config.go index 1233846f..5834d9a4 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -14,16 +14,21 @@ var ConfigDir string func InitConfigDir(flagConfigDir string) error { var e error - xdgHome := os.Getenv("XDG_CONFIG_HOME") - if xdgHome == "" { - // The user has not set $XDG_CONFIG_HOME so we should act like it was set to ~/.config - home, err := homedir.Dir() - if err != nil { - return errors.New("Error finding your home directory\nCan't load config files") + microHome := os.Getenv("MICRO_CONFIG_HOME") + if microHome == "" { + // The user has not set $MICRO_CONFIG_HOME so we'll try $XDG_CONFIG_HOME + xdgHome := os.Getenv("XDG_CONFIG_HOME") + if xdgHome == "" { + // The user has not set $XDG_CONFIG_HOME so we should act like it was set to ~/.config + home, err := homedir.Dir() + if err != nil { + return errors.New("Error finding your home directory\nCan't load config files") + } + xdgHome = home + "/.config" } - xdgHome = home + "/.config" + microHome = xdgHome + "/micro" } - ConfigDir = xdgHome + "/micro" + ConfigDir = microHome if len(flagConfigDir) > 0 { if _, err := os.Stat(flagConfigDir); os.IsNotExist(err) { @@ -34,9 +39,9 @@ func InitConfigDir(flagConfigDir string) error { } } - if _, err := os.Stat(xdgHome); os.IsNotExist(err) { - // If the xdgHome doesn't exist we should create it - err = os.Mkdir(xdgHome, os.ModePerm) + if _, err := os.Stat(microHome); os.IsNotExist(err) { + // If the microHome doesn't exist we should create it + err = os.Mkdir(microHome, os.ModePerm) if err != nil { return errors.New("Error creating XDG_CONFIG_HOME directory: " + err.Error()) } From f3778baaf456acb16d411362c585178a8b79278d Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 28 Dec 2019 23:40:44 -0500 Subject: [PATCH 223/231] SetGlobalOption access for plugins --- cmd/micro/initlua.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmd/micro/initlua.go b/cmd/micro/initlua.go index e87c1b6e..6363ddf3 100644 --- a/cmd/micro/initlua.go +++ b/cmd/micro/initlua.go @@ -73,6 +73,8 @@ func luaImportMicroConfig() *lua.LTable { ulua.L.SetField(pkg, "RegisterCommonOption", luar.New(ulua.L, config.RegisterCommonOption)) ulua.L.SetField(pkg, "RegisterGlobalOption", luar.New(ulua.L, config.RegisterGlobalOption)) ulua.L.SetField(pkg, "GetGlobalOption", luar.New(ulua.L, config.GetGlobalOption)) + ulua.L.SetField(pkg, "SetGlobalOption", luar.New(ulua.L, action.SetGlobalOption)) + ulua.L.SetField(pkg, "SetGlobalOptionNative", luar.New(ulua.L, action.SetGlobalOptionNative)) return pkg } From 1b73abcfd00ff6d553d8bc0a29ae5d3c68196d5f Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 29 Dec 2019 00:03:21 -0500 Subject: [PATCH 224/231] Fix formatting in plugin info.json --- runtime/plugins/comment/info.json | 2 +- runtime/plugins/ftoptions/info.json | 2 +- runtime/plugins/linter/info.json | 2 +- runtime/plugins/literate/info.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/runtime/plugins/comment/info.json b/runtime/plugins/comment/info.json index ec79adfe..7841e2cb 100644 --- a/runtime/plugins/comment/info.json +++ b/runtime/plugins/comment/info.json @@ -2,7 +2,7 @@ "name": "comment", "description": "Support for automatically commenting blocks of code. Extensible and multiple languages supported.", "website": "https://github.com/zyedidia/micro", - "install": "https://github.com/zyedidia/micro", + "install": "https://github.com/zyedidia/micro", "version": "1.0.0", "require": [ "micro >= 2.0.0" diff --git a/runtime/plugins/ftoptions/info.json b/runtime/plugins/ftoptions/info.json index 8419cc13..14da8947 100644 --- a/runtime/plugins/ftoptions/info.json +++ b/runtime/plugins/ftoptions/info.json @@ -2,7 +2,7 @@ "name": "ftoptions", "description": "Sets basic options based on the filetype (for example Makefiles require tabs).", "website": "https://github.com/zyedidia/micro", - "install": "https://github.com/zyedidia/micro", + "install": "https://github.com/zyedidia/micro", "version": "1.0.0", "require": [ "micro >= 2.0.0" diff --git a/runtime/plugins/linter/info.json b/runtime/plugins/linter/info.json index 37567391..d7986f1a 100644 --- a/runtime/plugins/linter/info.json +++ b/runtime/plugins/linter/info.json @@ -2,7 +2,7 @@ "name": "linter", "description": "Automatic code linting for a variety of languages.", "website": "https://github.com/zyedidia/micro", - "install": "https://github.com/zyedidia/micro", + "install": "https://github.com/zyedidia/micro", "version": "1.0.0", "require": [ "micro >= 2.0.0" diff --git a/runtime/plugins/literate/info.json b/runtime/plugins/literate/info.json index 4834d6cf..6db94443 100644 --- a/runtime/plugins/literate/info.json +++ b/runtime/plugins/literate/info.json @@ -2,7 +2,7 @@ "name": "literate", "description": "Highlighting and language support for the Literate programming tool.", "website": "https://github.com/zyedidia/Literate", - "install": "https://github.com/zyedidia/micro", + "install": "https://github.com/zyedidia/micro", "version": "1.0.0", "require": [ "micro >= 2.0.0" From cd6765673f53e61671bbad385bc7737308b9418a Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 29 Dec 2019 13:45:08 -0500 Subject: [PATCH 225/231] Support tcell EventPaste --- internal/action/bufpane.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 451fc840..08e657fb 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -268,6 +268,9 @@ func (h *BufPane) HandleEvent(event tcell.Event) { esc: e.EscSeq(), } h.DoKeyEvent(re) + case *tcell.EventPaste: + h.paste(e.Text()) + h.Relocate() case *tcell.EventKey: ke := KeyEvent{ code: e.Key(), From da643a0c1f06b22a539d654bda942e907efbdb36 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 29 Dec 2019 18:23:17 -0500 Subject: [PATCH 226/231] Run action completion on saves with prompts at the right time --- internal/action/actions.go | 13 +++++++------ internal/action/bufpane.go | 10 +++++++--- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/internal/action/actions.go b/internal/action/actions.go index dc510080..733321d1 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -638,10 +638,10 @@ func (h *BufPane) Save() bool { if h.Buf.Path == "" { h.SaveAs() } else { - h.saveBufToFile(h.Buf.Path) + h.saveBufToFile(h.Buf.Path, "Save") } - return true + return false } // SaveAs saves the buffer to disk with the given name @@ -655,16 +655,15 @@ func (h *BufPane) SaveAs() bool { InfoBar.Error("Error parsing arguments: ", err) return } - h.saveBufToFile(filename) - + h.saveBufToFile(filename, "SaveAs") } }) - return true + return false } // This function saves the buffer to `filename` and changes the buffer's path and name // to `filename` if the save is successful -func (h *BufPane) saveBufToFile(filename string) { +func (h *BufPane) saveBufToFile(filename string, action string) { err := h.Buf.SaveAs(filename) if err != nil { if strings.HasSuffix(err.Error(), "permission denied") { @@ -678,6 +677,7 @@ func (h *BufPane) saveBufToFile(filename string) { h.Buf.SetName(filename) InfoBar.Message("Saved " + filename) } + h.completeAction(action) } }) } else { @@ -687,6 +687,7 @@ func (h *BufPane) saveBufToFile(filename string) { h.Buf.Path = filename h.Buf.SetName(filename) InfoBar.Message("Saved " + filename) + h.completeAction(action) } } diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 451fc840..1e492d5e 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -361,8 +361,8 @@ func (h *BufPane) execAction(action func(*BufPane) bool, name string, cursor int _, isMulti := MultiActions[name] if (!isMulti && cursor == 0) || isMulti { if h.PluginCB("pre" + name) { - asuccess := action(h) - psuccess := h.PluginCB("on" + name) + success := action(h) + success = success && h.PluginCB("on"+name) if isMulti { if recording_macro { @@ -372,13 +372,17 @@ func (h *BufPane) execAction(action func(*BufPane) bool, name string, cursor int } } - return asuccess && psuccess + return success } } return false } +func (h *BufPane) completeAction(action string) { + h.PluginCB("on" + action) +} + func (h *BufPane) HasKeyEvent(e Event) bool { _, ok := BufKeyBindings[e] return ok From ff24ad5fa89764fb609bc618f23589ae4da2fd14 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 29 Dec 2019 18:53:59 -0500 Subject: [PATCH 227/231] Fix race condition with events channel --- cmd/micro/micro.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 94ea6383..1b28bde2 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -211,9 +211,10 @@ func main() { action.InitTabs(b) action.InitGlobals() + events = make(chan tcell.Event) + // Here is the event loop which runs in a separate thread go func() { - events = make(chan tcell.Event) for { screen.Lock() e := screen.Screen.PollEvent() From 9b03a3dc6d8dc930f4d4beb5c66fdcb766fa5b0b Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 29 Dec 2019 21:43:29 -0500 Subject: [PATCH 228/231] Add message if xclip/xsel not found Ref #1236 Fixes #1031 --- internal/action/actions.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/internal/action/actions.go b/internal/action/actions.go index 733321d1..85a62dde 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -810,7 +810,11 @@ func (h *BufPane) Copy() bool { if h.Cursor.HasSelection() { h.Cursor.CopySelection("clipboard") h.freshClip = true - InfoBar.Message("Copied selection") + if clipboard.Unsupported { + InfoBar.Message("Copied selection (install xclip for external clipboard)") + } else { + InfoBar.Message("Copied selection") + } } h.Relocate() return true From 3b66a3364cf7c865fd94464a0c49b8fba0f1f00d Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 29 Dec 2019 22:02:14 -0500 Subject: [PATCH 229/231] Fix some formatting --- internal/action/actions.go | 2 - internal/action/command.go | 66 +++++++++++++-------------- internal/action/infopane.go | 2 +- internal/action/terminal_supported.go | 3 +- internal/buffer/search.go | 2 +- internal/display/bufwindow.go | 8 ++-- 6 files changed, 40 insertions(+), 43 deletions(-) diff --git a/internal/action/actions.go b/internal/action/actions.go index 85a62dde..ed2ad367 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -614,8 +614,6 @@ func (h *BufPane) Autocomplete() bool { // InsertTab inserts a tab or spaces func (h *BufPane) InsertTab() bool { b := h.Buf - l := b.LineBytes(h.Cursor.Y) - l = util.SliceStart(l, h.Cursor.X) indent := b.IndentString(util.IntOpt(b.Settings["tabsize"])) tabBytes := len(indent) bytesUntilIndent := tabBytes - (h.Cursor.GetVisualX() % tabBytes) diff --git a/internal/action/command.go b/internal/action/command.go index 2656e1da..31fc9f9c 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -35,37 +35,37 @@ var commands map[string]Command func InitCommands() { commands = map[string]Command{ - "set": Command{(*BufPane).SetCmd, OptionValueComplete}, - "reset": Command{(*BufPane).ResetCmd, OptionValueComplete}, - "setlocal": Command{(*BufPane).SetLocalCmd, OptionValueComplete}, - "show": Command{(*BufPane).ShowCmd, OptionComplete}, - "showkey": Command{(*BufPane).ShowKeyCmd, nil}, - "run": Command{(*BufPane).RunCmd, nil}, - "bind": Command{(*BufPane).BindCmd, nil}, - "unbind": Command{(*BufPane).UnbindCmd, nil}, - "quit": Command{(*BufPane).QuitCmd, nil}, - "goto": Command{(*BufPane).GotoCmd, nil}, - "save": Command{(*BufPane).SaveCmd, nil}, - "replace": Command{(*BufPane).ReplaceCmd, nil}, - "replaceall": Command{(*BufPane).ReplaceAllCmd, nil}, - "vsplit": Command{(*BufPane).VSplitCmd, buffer.FileComplete}, - "hsplit": Command{(*BufPane).HSplitCmd, buffer.FileComplete}, - "tab": Command{(*BufPane).NewTabCmd, buffer.FileComplete}, - "help": Command{(*BufPane).HelpCmd, HelpComplete}, - "eval": Command{(*BufPane).EvalCmd, nil}, - "log": Command{(*BufPane).ToggleLogCmd, nil}, - "plugin": Command{(*BufPane).PluginCmd, PluginComplete}, - "reload": Command{(*BufPane).ReloadCmd, nil}, - "reopen": Command{(*BufPane).ReopenCmd, nil}, - "cd": Command{(*BufPane).CdCmd, buffer.FileComplete}, - "pwd": Command{(*BufPane).PwdCmd, nil}, - "open": Command{(*BufPane).OpenCmd, buffer.FileComplete}, - "tabswitch": Command{(*BufPane).TabSwitchCmd, nil}, - "term": Command{(*BufPane).TermCmd, nil}, - "memusage": Command{(*BufPane).MemUsageCmd, nil}, - "retab": Command{(*BufPane).RetabCmd, nil}, - "raw": Command{(*BufPane).RawCmd, nil}, - "textfilter": Command{(*BufPane).TextFilterCmd, nil}, + "set": {(*BufPane).SetCmd, OptionValueComplete}, + "reset": {(*BufPane).ResetCmd, OptionValueComplete}, + "setlocal": {(*BufPane).SetLocalCmd, OptionValueComplete}, + "show": {(*BufPane).ShowCmd, OptionComplete}, + "showkey": {(*BufPane).ShowKeyCmd, nil}, + "run": {(*BufPane).RunCmd, nil}, + "bind": {(*BufPane).BindCmd, nil}, + "unbind": {(*BufPane).UnbindCmd, nil}, + "quit": {(*BufPane).QuitCmd, nil}, + "goto": {(*BufPane).GotoCmd, nil}, + "save": {(*BufPane).SaveCmd, nil}, + "replace": {(*BufPane).ReplaceCmd, nil}, + "replaceall": {(*BufPane).ReplaceAllCmd, nil}, + "vsplit": {(*BufPane).VSplitCmd, buffer.FileComplete}, + "hsplit": {(*BufPane).HSplitCmd, buffer.FileComplete}, + "tab": {(*BufPane).NewTabCmd, buffer.FileComplete}, + "help": {(*BufPane).HelpCmd, HelpComplete}, + "eval": {(*BufPane).EvalCmd, nil}, + "log": {(*BufPane).ToggleLogCmd, nil}, + "plugin": {(*BufPane).PluginCmd, PluginComplete}, + "reload": {(*BufPane).ReloadCmd, nil}, + "reopen": {(*BufPane).ReopenCmd, nil}, + "cd": {(*BufPane).CdCmd, buffer.FileComplete}, + "pwd": {(*BufPane).PwdCmd, nil}, + "open": {(*BufPane).OpenCmd, buffer.FileComplete}, + "tabswitch": {(*BufPane).TabSwitchCmd, nil}, + "term": {(*BufPane).TermCmd, nil}, + "memusage": {(*BufPane).MemUsageCmd, nil}, + "retab": {(*BufPane).RetabCmd, nil}, + "raw": {(*BufPane).RawCmd, nil}, + "textfilter": {(*BufPane).TextFilterCmd, nil}, } } @@ -240,7 +240,7 @@ func (h *BufPane) RawCmd(args []string) { // TextFilterCmd filters the selection through the command. // Selection goes to the command input. -// On successfull run command output replaces the current selection. +// On successful run command output replaces the current selection. func (h *BufPane) TextFilterCmd(args []string) { if len(args) == 0 { InfoBar.Error("usage: textfilter arguments") @@ -691,7 +691,7 @@ func (h *BufPane) BindCmd(args []string) { // UnbindCmd binds a key to its default action func (h *BufPane) UnbindCmd(args []string) { if len(args) < 1 { - InfoBar.Error("Not enough arguements") + InfoBar.Error("Not enough arguments") return } diff --git a/internal/action/infopane.go b/internal/action/infopane.go index 33b40268..00dde633 100644 --- a/internal/action/infopane.go +++ b/internal/action/infopane.go @@ -147,7 +147,7 @@ var InfoNones = []string{ "SkipMultiCursor", } -// InfoOverrides is the list of actions which have been overriden +// InfoOverrides is the list of actions which have been overridden // by the infohandler var InfoOverrides = map[string]InfoKeyAction{ "CursorUp": (*InfoPane).CursorUp, diff --git a/internal/action/terminal_supported.go b/internal/action/terminal_supported.go index 50e0a75d..21a6de0e 100644 --- a/internal/action/terminal_supported.go +++ b/internal/action/terminal_supported.go @@ -18,9 +18,8 @@ func RunTermEmulator(h *BufPane, input string, wait bool, getOutput bool, callba t := new(shell.Terminal) t.Start(args, getOutput, wait, callback, userargs) - id := h.ID() h.AddTab() - id = MainTab().Panes[0].ID() + id := MainTab().Panes[0].ID() v := h.GetView() MainTab().Panes[0] = NewTermPane(v.X, v.Y, v.Width, v.Height, t, id) diff --git a/internal/buffer/search.go b/internal/buffer/search.go index 4382971d..0930ba2c 100644 --- a/internal/buffer/search.go +++ b/internal/buffer/search.go @@ -115,7 +115,7 @@ func (b *Buffer) FindNext(s string, start, end, from Loc, down bool, useRegex bo return [2]Loc{}, false, err } - found := false + var found bool var l [2]Loc if down { l, found = b.findDown(r, from, end) diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index 3b478e7c..39934166 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -45,12 +45,12 @@ func (w *BufWindow) SetBuffer(b *buffer.Buffer) { w.Buf = b } -func (v *View) GetView() *View { - return v +func (w *BufWindow) GetView() *View { + return w.View } -func (v *View) SetView(view *View) { - v = view +func (w *BufWindow) SetView(view *View) { + w.View = view } func (w *BufWindow) Resize(width, height int) { From e1c1e402a9e96f92a5c1a5ec8d3bc42963256e0e Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Mon, 30 Dec 2019 16:13:15 +0200 Subject: [PATCH 230/231] Add V syntax highlighting. V is a new general purpose language, inspired mainly by Go, Rust, Pascal and C. Main site: https://vlang.io/ Github: https://github.com/vlang/v --- runtime/syntax/v.yaml | 85 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 runtime/syntax/v.yaml diff --git a/runtime/syntax/v.yaml b/runtime/syntax/v.yaml new file mode 100644 index 00000000..6f1c96dd --- /dev/null +++ b/runtime/syntax/v.yaml @@ -0,0 +1,85 @@ +filetype: v + +detect: + filename: "\\.v$" + +rules: + # Conditionals and control flow + - keywords: "\\b(import|go|defer)\\b" + - special: "\\b(or|break|continue|match|case|goto|return|none)\\b" + - function: "\\b(fn)\\b" + - main_function: "\\b(fn main\\(\\))" + - optionals: "\\b(none|error\\()" + - statement: "\\b(if|else|for|match)\\b" + - assert: "\\b(assert)\\b" + - symbol.operator: "\\b([-+/*=<>!~%&|^])\\b" + - symbol.operator: "\\b(:=)\\b" + - symbol.operator: "\\b(\\|\\|)\b" + - symbol.operator: "\\b(\\&\\&)\\b" + + - compile_if: "\\b(\\$if|\\$else)\\b" + - oses: "\\b(mac|macos|linux|windows|freebsd|openbsd|netbsd|dragonfly|js|android|solaris|haiku)\\b" + + # Types + - symbol: "(,|\\.)" + - btype: "\\b(bool)\\b" + - ztype: "\\b(char|byte)\\b" + - itype: "\\b(int|i(8|16|64)|u(8|16|32|64))\\b" + - ftype: "\\b(f(32|64))\\b" + - ptype: "\\b(uintptr|charptr|byteptr|voidptr)\\b" + - atype: "\\b(array)\\b" + - stype: "\\b(string|ustring)\\b" + - mtype: "\\b(map)\\b" + - type.keyword: "\\b(pub|mut|struct|enum|interface|module|type|const)\\b" + - constant.bool: "\\b(true|false)\\b" + + # Brackets + - symbol.brackets: "(\\{|\\})" + - symbol.brackets: "(\\(|\\))" + - symbol.brackets: "(\\[|\\])" + + # Numbers and strings + - constant.number: "\\b([0-9]+|0x[0-9a-fA-F]*)\\b|'.'" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "%." + - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - error: "..+" + - constant.specialChar: "%." + - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + + - constant.string: + start: "`" + end: "`" + rules: [] + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - function.attribute: + start: "^\\[" + end: "\\]$" + rules: + - known: "\\b(deprecated|inline|typedef|if)\\b" + From f8743775730d89ab5de097b352719872edfe8025 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 30 Dec 2019 14:05:06 -0500 Subject: [PATCH 231/231] add system verilog syntax file --- runtime/syntax/verilog.yaml | 60 +++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 runtime/syntax/verilog.yaml diff --git a/runtime/syntax/verilog.yaml b/runtime/syntax/verilog.yaml new file mode 100644 index 00000000..97c41847 --- /dev/null +++ b/runtime/syntax/verilog.yaml @@ -0,0 +1,60 @@ +filetype: verilog + +detect: + filename: "\\.(vh|sv|svh)$" + +rules: + - preproc: "\\b(module|package|program|endmodule|endpackage|endprogram)\\b" + - type.keyword: "\\b(task|interface|class|endtask|endinterface|endclass)\\b" + # builtin functions like $display + - special: "\\$[0-9A-Za-z_]+" + + # Verilog keywords + - statement: "\\b(always|and|assign|automatic|begin|buf|bufif0|bufif1|case|casex|casez|cell|cmos|config)\\b" + - statement: "\\b(deassign|default|defparam|design|disable|edge|else|end|endcase|endconfig|endfunction|endgenerate)\\b" + - statement: "\\b(endprimitive|endspecify|endtable|event|for|force|forever|fork|function|generate)\\b" + - statement: "\\b(genvar|highz0|highz1|if|iff|ifnone|incdir|include|initial|input|instance|join)\\b" + - statement: "\\b(large|liblist|library|localparam|macromodule|medium|nand|negedge|nmos|nor|noshowcancelled)\\b" + - statement: "\\b(not|notif0|notif1|null|or|output|parameter|pmos|posedge|primitive|pull0|pull1|pulldown|pullup)\\b" + - statement: "\\b(pulsestyle_onevent|pulsestyle_ondetect|rcmos|realtime|reg|release|repeat|rnmos|rpmos|rtran)\\b" + - statement: "\\b(rtranif0|rtranif1|scalared|showcancelled|small|specify|specparam|strong0|strong1|supply0)\\b" + - statement: "\\b(supply1|table|time|tran|tranif0|tranif1|tri0|tri1|triand|trior|trireg|use|uwire)\\b" + - statement: "\\b(vectored|wait|wand|weak0|weak1|while|wor|xnor|xor)\\b" + + # SystemVerilog keywords + - statement: "\\b(alias|always_comb|always_ff|always_latch|assert|assume|before|bind|bins|binsof|break)\\b" + - statement: "\\b(chandle|clocking|const|constraint|context|continue|cover|covergroup|coverpoint|cross|dist|do)\\b" + - statement: "\\b(endclocking|endgroup|endproperty|endsequence|enum)\\b" + - statement: "\\b(expect|export|extends|extern|final|first_match|foreach|forkjoin|ignore_bins|illegal_bins|import)\\b" + - statement: "\\b(inside|intersect|join_any|join_none|local|longint|matches|modport|new)\\b" + - statement: "\\b(packed|priority|property|protected|pure|rand|randc|randcase|randsequence|ref|return)\\b" + - statement: "\\b(sequence|solve|static|struct|super|tagged|this|throughout|timeprecision)\\b" + - statement: "\\b(timeunit|type|typedef|union|unique|virtual|wait_order|wildcard|with|within)\\b" + + # types + - type.keyword: "\\b(int|integer|logic|wire|tri|unsigned|signed|inout|var|shortint|shortreal|real|void|string|bit|byte)\\b" + + # constants + - constant.number: "\\b[0-9]+\\b" + - constant.number: "\\b'[su]?[dboh][0-9xzXZa-fA-F]+\\b" + # .asdf(...) argument syntax + - special: "\\.((\\*)|([A-Za-z][A-Za-z0-9_]*))" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?"