!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}((function(e){"use strict";e.defineMIME("text/x-erlang","erlang"),e.defineMode("erlang",(function(t){var n=["-type","-spec","-export_type","-opaque"],r=["after","begin","catch","case","cond","end","fun","if","let","of","query","receive","try","when"],i=/[\->,;]/,o=["->",";",","],a=["and","andalso","band","bnot","bor","bsl","bsr","bxor","div","not","or","orelse","rem","xor"],c=/[\+\-\*\/<>=\|:!]/,u=["=","+","-","*","/",">",">=","<","=<","=:=","==","=/=","/=","||","<-","!"],s=/[<\(\[\{]/,l=["<<","(","[","{"],_=/[>\)\]\}]/,f=["}","]",")",">>"],p=["is_atom","is_binary","is_bitstring","is_boolean","is_float","is_function","is_integer","is_list","is_number","is_pid","is_port","is_record","is_reference","is_tuple","atom","binary","bitstring","boolean","function","integer","list","number","pid","port","record","reference","tuple"],m=["abs","adler32","adler32_combine","alive","apply","atom_to_binary","atom_to_list","binary_to_atom","binary_to_existing_atom","binary_to_list","binary_to_term","bit_size","bitstring_to_list","byte_size","check_process_code","contact_binary","crc32","crc32_combine","date","decode_packet","delete_module","disconnect_node","element","erase","exit","float","float_to_list","garbage_collect","get","get_keys","group_leader","halt","hd","integer_to_list","internal_bif","iolist_size","iolist_to_binary","is_alive","is_atom","is_binary","is_bitstring","is_boolean","is_float","is_function","is_integer","is_list","is_number","is_pid","is_port","is_process_alive","is_record","is_reference","is_tuple","length","link","list_to_atom","list_to_binary","list_to_bitstring","list_to_existing_atom","list_to_float","list_to_integer","list_to_pid","list_to_tuple","load_module","make_ref","module_loaded","monitor_node","node","node_link","node_unlink","nodes","notalive","now","open_port","pid_to_list","port_close","port_command","port_connect","port_control","pre_loaded","process_flag","process_info","processes","purge_module","put","register","registered","round","self","setelement","size","spawn","spawn_link","spawn_monitor","spawn_opt","split_binary","statistics","term_to_binary","time","throw","tl","trunc","tuple_size","tuple_to_list","unlink","unregister","whereis"],d=/[\w@Ø-ÞÀ-Öß-öø-ÿ]/,b=/[0-7]{1,3}|[bdefnrstv\\"']|\^[a-zA-Z]|x[0-9a-zA-Z]{2}|x{[0-9a-zA-Z]+}/;function g(e,t,n){if(1==e.current().length&&t.test(e.current())){for(e.backUp(1);t.test(e.peek());)if(e.next(),w(e.current(),n))return!0;e.backUp(e.current().length-1)}return!1}function k(e,t,n){if(1==e.current().length&&t.test(e.current())){for(;t.test(e.peek());)e.next();for(;01&&"fun"===e[t].type&&"fun"===e[t-1].token)return e.slice(0,t-1);switch(e[t].token){case"}":return U(e,{g:["{"]});case"]":return U(e,{i:["["]});case")":return U(e,{i:["("]});case">>":return U(e,{i:["<<"]});case"end":return U(e,{i:["begin","case","fun","if","receive","try"]});case",":return U(e,{e:["begin","try","when","->",",","(","[","{","<<"]});case"->":return U(e,{r:["when"],m:["try","if","case","receive"]});case";":return U(e,{E:["case","fun","if","receive","try","when"]});case"catch":return U(e,{e:["try"]});case"of":return U(e,{e:["case"]});case"after":return U(e,{e:["receive","try"]});default:return e}}(e.tokenStack))}(e,function(e,t){return S(t.current(),t.column(),t.indentation(),e)}(n,t)),n){case"atom":return"atom";case"attribute":return"attribute";case"boolean":return"atom";case"builtin":return"builtin";case"close_paren":case"colon":return null;case"comment":return"comment";case"dot":return null;case"error":return"error";case"fun":return"meta";case"function":return"tag";case"guard":return"property";case"keyword":return"keyword";case"macro":return"variable-2";case"number":return"number";case"open_paren":return null;case"operator":return"operator";case"record":return"bracket";case"separator":return null;case"string":return"string";case"type":return"def";case"variable":return"variable";default:return null}}function S(e,t,n,r){return{token:e,column:t,indent:n,type:r}}function z(e){return S(e,0,0,e)}function W(e,t){var n=e.tokenStack.length,r=t||1;return!(n>|\|+|\(/))&&0===o.index?o[0]:"",u=W(n,1),s=W(n,2);return n.in_string||n.in_atom?e.Pass:s?"when"==u.token?u.column+a:"when"===c&&"function"===s.type?s.indent+a:"("===c&&"fun"===u.token?u.column+3:"catch"===c&&(i=A(n,["try"]))?i.column:w(c,["end","after","of"])?(i=A(n,["begin","case","fun","if","receive","try"]))?i.column:e.Pass:w(c,f)?(i=A(n,l))?i.column:e.Pass:w(u.token,[",","|","||"])||w(c,[",","|","||"])?(i=function(e){var t=e.tokenStack.slice(0,-1),n=Z(t,"type",["open_paren"]);return!!M(t[n])&&t[n]}(n))?i.column+i.token.length:a:"->"==u.token?w(s.token,["receive","case","if","try"])?s.column+a+a:s.column+a:w(u.token,l)?u.column+u.token.length:(i=function(e){var t=e.tokenStack,n=Z(t,"type",["open_paren","separator","keyword"]),r=Z(t,"type",["operator"]);return M(n)&&M(r)&&n