function simpleUpload ( e , l , n ) { function t ( ) { if ( "object" == typeof n && null !== n ) { if ( "boolean" == typeof n . forceIframe && ( U = n . forceIframe ) , "function" == typeof n . init && ( I = n . init ) , "function" == typeof n . start && ( L = n . start ) , "function" == typeof n . progress && ( q = n . progress ) , "function" == typeof n . success && ( W = n . success ) , "function" == typeof n . error && ( _ = n . error ) , "function" == typeof n . cancel && ( M = n . cancel ) , "function" == typeof n . complete && ( D = n . complete ) , "function" == typeof n . finish && ( N = n . finish ) , "string" == typeof n . hashWorker && "" != n . hashWorker && ( S = n . hashWorker ) , "function" == typeof n . hashComplete && ( z = n . hashComplete ) , "object" == typeof n . data && null !== n . data ) for ( var e in n . data ) F [ e ] = n . data [ e ] ; if ( "number" == typeof n . limit && y ( n . limit ) && n . limit > 0 && ( w = n . limit ) , "number" == typeof n . maxFileSize && y ( n . maxFileSize ) && n . maxFileSize > 0 && ( x = n . maxFileSize ) , "object" == typeof n . allowedExts && null !== n . allowedExts ) for ( var e in n . allowedExts ) j . push ( n . allowedExts [ e ] ) ; if ( "object" == typeof n . allowedTypes && null !== n . allowedTypes ) for ( var e in n . allowedTypes ) k . push ( n . allowedTypes [ e ] ) ; if ( "string" == typeof n . expect && "" != n . expect ) { var t = n . expect . toLowerCase ( ) , o = [ "auto" , "json" , "xml" , "html" , "script" , "text" ] ; for ( var e in o ) if ( o [ e ] == t ) { E = t ; break } } if ( "object" == typeof n . xhrFields && null !== n . xhrFields ) for ( var e in n . xhrFields ) T [ e ] = n . xhrFields [ e ] } if ( "object" == typeof l && null !== l && l instanceof jQuery ) { if ( ! ( l . length > 0 ) ) return ! 1 ; l = l . get ( 0 ) } if ( ! U && window . File && window . FileReader && window . FileList && window . Blob && ( "object" == typeof n && null !== n && "object" == typeof n . files && null !== n . files ? b = n . files : "object" == typeof l && null !== l && "object" == typeof l . files && null !== l . files && ( b = l . files ) ) , ( "object" != typeof l || null === l ) && null == b ) return ! 1 ; "object" == typeof n && null !== n && "string" == typeof n . name && "" != n . name ? C = n . name . replace ( /\[\s*\]/g , "[0]" ) : "object" == typeof l && null !== l && "string" == typeof l . name && "" != l . name && ( C = l . name . replace ( /\[\s*\]/g , "[0]" ) ) ; var r = 0 ; if ( null != b ? b . length > 0 && ( r = b . length > 1 && window . FormData && $ . ajaxSettings . xhr ( ) . upload ? w > 0 && b . length > w ? w : b . length : 1 ) : "" != l . value && ( r = 1 ) , r > 0 ) { if ( "object" == typeof l && null !== l ) { var i = $ ( l ) ; J = $ ( "<form>" ) . hide ( ) . attr ( "enctype" , "multipart/form-data" ) . attr ( "method" , "post" ) . appendTo ( "body" ) , i . after ( i . clone ( ! 0 ) . val ( "" ) ) . removeAttr ( "onchange" ) . off ( ) . removeAttr ( "id" ) . attr ( "name" , C ) . appendTo ( J ) } for ( var s = 0 ; r > s ; s ++ ) ! function ( e ) { R [ e ] = { state : 0 , hashWorker : null , xhr : null , iframe : null } , A [ e ] = { upload : { index : e , state : "init" , file : null != b ? b [ e ] : { name : l . value . split ( /(\\|\/)/g ) . pop ( ) } , cancel : function ( ) { if ( 0 == u ( e ) ) d ( e , 4 ) ; else { if ( 1 != u ( e ) ) return ! 1 ; d ( e , 4 ) , null != R [ e ] . hashWorker && ( R [ e ] . hashWorker . terminate ( ) , R [ e ] . hashWorker = null ) , null != R [ e ] . xhr && ( R [ e ] . xhr . abort ( ) , R [ e ] . xhr = null ) , null != R [ e ] . iframe && ( $ ( "iframe[name=simpleUpload_iframe_" + R [ e ] . iframe + "]" ) . attr ( "src" , "javascript:false;" ) , simpleUpload . dequeueIframe ( R [ e ] . iframe ) , R [ e ] . iframe = null ) , P ( e ) } return ! 0 } } } } ( s ) ; var p = H ( r ) ; if ( p !== ! 1 ) { var f = r ; if ( "number" == typeof p && y ( p ) && p >= 0 && r > p ) { f = p ; for ( var m = f ; r > m ; m ++ ) d ( m , 4 ) } for ( var c = [ ] , v = 0 ; f > v ; v ++ ) X ( v , A [ v ] . upload . file ) !== ! 1 && ( c [ c . length ] = v ) ; c . length > 0 ? ( B = c . length , simpleUpload . queueUpload ( c , function ( e ) { a ( e ) } ) , simpleUpload . uploadNext ( ) ) : Z ( ) } else { for ( var m in A ) d ( m , 4 ) ; Z ( ) } } } function a ( e ) { if ( 1 == u ( e ) ) { var n = null ; if ( null != b ) { if ( void 0 == b [ e ] || null == b [ e ] ) return void K ( e , { name : "InternalError" , message : "There was an error uploading the file" } ) ; n = b [ e ] } else if ( "" == l . value ) return void K ( e , { name : "InternalError" , message : "There was an error uploading the file" } ) ; return j . length > 0 && ! c ( j , n ) ? void K ( e , { name : "InvalidFileExtensionError" , message : "That file format is not allowed" } ) : k . length > 0 && ! v ( k , n ) ? void K ( e , { name : "InvalidFileTypeError" , message : "That file format is not allowed" } ) : x > 0 && ! h ( x , n ) ? void K ( e , { name : "MaxFileSizeError" , message : "That file is too big" } ) : void ( null != S && null != z ? o ( e ) : i ( e ) ) } } function o ( e ) { if ( null != b && void 0 != b [ e ] && null != b [ e ] && window . Worker ) { var l = b [ e ] ; if ( void 0 != l . size && null != l . size && "" != l . size && y ( l . size ) && ( l . slice || l . webkitSlice || l . mozSlice ) ) try { var n = new Worker ( S ) ; n . addEventListener ( "error" , function ( ) { n . terminate ( ) , R [ e ] . hashWorker = null , i ( e ) } , ! 1 ) , n . addEventListener ( "message" , function ( l ) { if ( l . data . result ) { var t = l . data . result ; n . terminate ( ) , R [ e ] . h
case 92 : case 34 : case 47 : case 98 : case 116 : case 110 : case 102 : case 114 : value += Unescapes [ charCode ] , Index ++ ; break ; case 117 : for ( begin = ++ Index , position = Index + 4 ; Index < position ; Index ++ ) charCode = source . charCodeAt ( Index ) , charCode >= 48 && charCode <= 57 || charCode >= 97 && charCode <= 102 || charCode >= 65 && charCode <= 70 || abort ( ) ; value += fromCharCode ( "0x" + source . slice ( begin , Index ) ) ; break ; default : abort ( ) } else { if ( 34 == charCode ) break ; for ( charCode = source . charCodeAt ( Index ) , begin = Index ; charCode >= 32 && 92 != charCode && 34 != charCode ; ) charCode = source . charCodeAt ( ++ Index ) ; value += source . slice ( begin , Index ) } if ( 34 == source . charCodeAt ( Index ) ) return Index ++ , value ; abort ( ) ; default : if ( begin = Index , 45 == charCode && ( isSigned = ! 0 , charCode = source . charCodeAt ( ++ Index ) ) , charCode >= 48 && charCode <= 57 ) { for ( 48 == charCode && ( charCode = source . charCodeAt ( Index + 1 ) , charCode >= 48 && charCode <= 57 ) && abort ( ) , isSigned = ! 1 ; Index < length && ( charCode = source . charCodeAt ( Index ) , charCode >= 48 && charCode <= 57 ) ; Index ++ ) ; if ( 46 == source . charCodeAt ( Index ) ) { for ( position = ++ Index ; position < length && ( charCode = source . charCodeAt ( position ) , charCode >= 48 && charCode <= 57 ) ; position ++ ) ; position == Index && abort ( ) , Index = position } if ( charCode = source . charCodeAt ( Index ) , 101 == charCode || 69 == charCode ) { for ( charCode = source . charCodeAt ( ++ Index ) , 43 != charCode && 45 != charCode || Index ++ , position = Index ; position < length && ( charCode = source . charCodeAt ( position ) , charCode >= 48 && charCode <= 57 ) ; position ++ ) ; position == Index && abort ( ) , Index = position } return + source . slice ( begin , Index ) } if ( isSigned && abort ( ) , "true" == source . slice ( Index , Index + 4 ) ) return Index += 4 , ! 0 ; if ( "false" == source . slice ( Index , Index + 5 ) ) return Index += 5 , ! 1 ; if ( "null" == source . slice ( Index , Index + 4 ) ) return Index += 4 , null ; abort ( ) } return "$" } , get = function ( value ) { var results , hasMembers ; if ( "$" == value && abort ( ) , "string" == typeof value ) { if ( "@" == ( charIndexBuggy ? value . charAt ( 0 ) : value [ 0 ] ) ) return value . slice ( 1 ) ; if ( "[" == value ) { for ( results = [ ] ; value = lex ( ) , "]" != value ; hasMembers || ( hasMembers = ! 0 ) ) hasMembers && ( "," == value ? ( value = lex ( ) , "]" == value && abort ( ) ) : abort ( ) ) , "," == value && abort ( ) , results . push ( get ( value ) ) ; return results } if ( "{" == value ) { for ( results = { } ; value = lex ( ) , "}" != value ; hasMembers || ( hasMembers = ! 0 ) ) hasMembers && ( "," == value ? ( value = lex ( ) , "}" == value && abort ( ) ) : abort ( ) ) , "," != value && "string" == typeof value && "@" == ( charIndexBuggy ? value . charAt ( 0 ) : value [ 0 ] ) && ":" == lex ( ) || abort ( ) , results [ value . slice ( 1 ) ] = get ( lex ( ) ) ; return results } abort ( ) } return value } , update = function ( source , property , callback ) { var element = walk ( source , property , callback ) ; element === undef ? delete source [ property ] : source [ property ] = element } , walk = function ( source , property , callback ) { var length , value = source [ property ] ; if ( "object" == typeof value && value ) if ( getClass . call ( value ) == arrayClass ) for ( length = value . length ; length -- ; ) update ( value , length , callback ) ; else forEach ( value , function ( property ) { update ( value , property , callback ) } ) ; return callback . call ( source , property , value ) } ; exports . parse = function ( source , callback ) { var result , value ; return Index = 0 , Source = "" + source , result = get ( lex ( ) ) , "$" != lex ( ) && abort ( ) , Index = Source = null , callback && getClass . call ( callback ) == functionClass ? walk ( ( value = { } , value [ "" ] = result , value ) , "" , callback ) : result } } } return exports . runInContext = runInContext , exports } var isLoader = _ _webpack _require _ _ ( 9 ) , objectTypes = { function : ! 0 , object : ! 0 } , freeExports = objectTypes [ typeof exports ] && exports && ! exports . nodeType && exports , root = objectTypes [ typeof window ] && window || this , freeGlobal = freeExports && objectTypes [ typeof module ] && module && ! module . nodeType && "object" == typeof global && global ; if ( ! freeGlobal || freeGlobal . global !== freeGlobal && freeGlobal . window !== freeGlobal && freeGlobal . self !== freeGlobal || ( root = freeGlobal ) , freeExports && ! isLoader ) runInContext ( root , freeExports ) ; else { var nativeJSON = root . JSON , previousJSON = root . JSON3 , isRestored = ! 1 , JSON3 = runInContext ( root , root . JSON3 = { noConflict : function ( ) { return isRestored || ( isRestored = ! 0 , root . JSON = nativeJSON , root . JSON3 = previousJSON , nativeJSON = previousJSON = null ) , JSON3 } } ) ; root . JSON = { parse : JSON3 . parse , stringify : JSON3 . stringify } } isLoader && ( _ _WEBPACK _AMD _DEFINE _RESULT _ _ = function ( ) { return JSON3 } . call ( exports , _ _webpack _require _ _ , exports , module ) , ! ( void 0 !== _ _WEBPACK _AMD _DEFINE _RESULT _ _ && ( module . exports = _ _W
self . onError ( xhr . status ) } , 0 ) ) } , debug ( "xhr data %s" , this . data ) , xhr . send ( this . data ) } catch ( e ) { return void setTimeout ( function ( ) { self . onError ( e ) } , 0 ) } global . document && ( this . index = Request . requestsCount ++ , Request . requests [ this . index ] = this ) } , Request . prototype . onSuccess = function ( ) { this . emit ( "success" ) , this . cleanup ( ) } , Request . prototype . onData = function ( data ) { this . emit ( "data" , data ) , this . onSuccess ( ) } , Request . prototype . onError = function ( err ) { this . emit ( "error" , err ) , this . cleanup ( ! 0 ) } , Request . prototype . cleanup = function ( fromError ) { if ( "undefined" != typeof this . xhr && null !== this . xhr ) { if ( this . hasXDR ( ) ? this . xhr . onload = this . xhr . onerror = empty : this . xhr . onreadystatechange = empty , fromError ) try { this . xhr . abort ( ) } catch ( e ) { } global . document && delete Request . requests [ this . index ] , this . xhr = null } } , Request . prototype . onLoad = function ( ) { var data ; try { var contentType ; try { contentType = this . xhr . getResponseHeader ( "Content-Type" ) . split ( ";" ) [ 0 ] } catch ( e ) { } if ( "application/octet-stream" === contentType ) data = this . xhr . response ; else if ( this . supportsBinary ) try { data = String . fromCharCode . apply ( null , new Uint8Array ( this . xhr . response ) ) } catch ( e ) { for ( var ui8Arr = new Uint8Array ( this . xhr . response ) , dataArray = [ ] , idx = 0 , length = ui8Arr . length ; idx < length ; idx ++ ) dataArray . push ( ui8Arr [ idx ] ) ; data = String . fromCharCode . apply ( null , dataArray ) } else data = this . xhr . responseText } catch ( e ) { this . onError ( e ) } null != data && this . onData ( data ) } , Request . prototype . hasXDR = function ( ) { return "undefined" != typeof global . XDomainRequest && ! this . xs && this . enablesXDR } , Request . prototype . abort = function ( ) { this . cleanup ( ) } , global . document && ( Request . requestsCount = 0 , Request . requests = { } , global . attachEvent ? global . attachEvent ( "onunload" , unloadHandler ) : global . addEventListener && global . addEventListener ( "beforeunload" , unloadHandler , ! 1 ) ) } ) . call ( exports , function ( ) { return this } ( ) ) } , function ( module , exports , _ _webpack _require _ _ ) { function Polling ( opts ) { var forceBase64 = opts && opts . forceBase64 ; hasXHR2 && ! forceBase64 || ( this . supportsBinary = ! 1 ) , Transport . call ( this , opts ) } var Transport = _ _webpack _require _ _ ( 23 ) , parseqs = _ _webpack _require _ _ ( 34 ) , parser = _ _webpack _require _ _ ( 24 ) , inherit = _ _webpack _require _ _ ( 35 ) , yeast = _ _webpack _require _ _ ( 36 ) , debug = _ _webpack _require _ _ ( 3 ) ( "engine.io-client:polling" ) ; module . exports = Polling ; var hasXHR2 = function ( ) { var XMLHttpRequest = _ _webpack _require _ _ ( 19 ) , xhr = new XMLHttpRequest ( { xdomain : ! 1 } ) ; return null != xhr . responseType } ( ) ; inherit ( Polling , Transport ) , Polling . prototype . name = "polling" , Polling . prototype . doOpen = function ( ) { this . poll ( ) } , Polling . prototype . pause = function ( onPause ) { function pause ( ) { debug ( "paused" ) , self . readyState = "paused" , onPause ( ) } var self = this ; if ( this . readyState = "pausing" , this . polling || ! this . writable ) { var total = 0 ; this . polling && ( debug ( "we are currently polling - waiting to pause" ) , total ++ , this . once ( "pollComplete" , function ( ) { debug ( "pre-pause polling complete" ) , -- total || pause ( ) } ) ) , this . writable || ( debug ( "we are currently writing - waiting to pause" ) , total ++ , this . once ( "drain" , function ( ) { debug ( "pre-pause writing complete" ) , -- total || pause ( ) } ) ) } else pause ( ) } , Polling . prototype . poll = function ( ) { debug ( "polling" ) , this . polling = ! 0 , this . doPoll ( ) , this . emit ( "poll" ) } , Polling . prototype . onData = function ( data ) { var self = this ; debug ( "polling got data %s" , data ) ; var callback = function ( packet , index , total ) { return "opening" == self . readyState && self . onOpen ( ) , "close" == packet . type ? ( self . onClose ( ) , ! 1 ) : void self . onPacket ( packet ) } ; parser . decodePayload ( data , this . socket . binaryType , callback ) , "closed" != this . readyState && ( this . polling = ! 1 , this . emit ( "pollComplete" ) , "open" == this . readyState ? this . poll ( ) : debug ( 'ignoring poll - transport state "%s"' , this . readyState ) ) } , Polling . prototype . doClose = function ( ) { function close ( ) { debug ( "writing close packet" ) , self . write ( [ { type : "close" } ] ) } var self = this ; "open" == this . readyState ? ( debug ( "transport open - closing" ) , close ( ) ) : ( debug ( "transport not open - deferring close" ) , this . once ( "open" , close ) ) } , Polling . prototype . write = function ( packets ) { var self = this ; this . writable = ! 1 ; var callbackfn = function ( ) { self . writable = ! 0 , self . emit ( "drain" ) } , self = this ; parser . encodePayload ( packets , this . supportsBinary , function ( data ) { self . doWrite ( data , callbackfn ) } ) } , Polling . prototype . uri
global . JSON && JSON . parse ? JSON . parse ( data ) : rvalidchars . test ( data . replace ( rvalidescape , "@" ) . replace ( rvalidtokens , "]" ) . replace ( rvalidbraces , "" ) ) ? new Function ( "return " + data ) ( ) : void 0 ) : null } } ) . call ( exports , function ( ) { return this } ( ) ) } , function ( module , exports , _ _webpack _require _ _ ) { "use strict" ; function Socket ( io , nsp , opts ) { this . io = io , this . nsp = nsp , this . json = this , this . ids = 0 , this . acks = { } , this . receiveBuffer = [ ] , this . sendBuffer = [ ] , this . connected = ! 1 , this . disconnected = ! 0 , opts && opts . query && ( this . query = opts . query ) , this . io . autoConnect && this . open ( ) } var parser = _ _webpack _require _ _ ( 6 ) , Emitter = _ _webpack _require _ _ ( 43 ) , toArray = _ _webpack _require _ _ ( 44 ) , on = _ _webpack _require _ _ ( 45 ) , bind = _ _webpack _require _ _ ( 46 ) , debug = _ _webpack _require _ _ ( 3 ) ( "socket.io-client:socket" ) , hasBin = _ _webpack _require _ _ ( 47 ) ; module . exports = exports = Socket ; var events = { connect : 1 , connect _error : 1 , connect _timeout : 1 , connecting : 1 , disconnect : 1 , error : 1 , reconnect : 1 , reconnect _attempt : 1 , reconnect _failed : 1 , reconnect _error : 1 , reconnecting : 1 , ping : 1 , pong : 1 } , emit = Emitter . prototype . emit ; Emitter ( Socket . prototype ) , Socket . prototype . subEvents = function ( ) { if ( ! this . subs ) { var io = this . io ; this . subs = [ on ( io , "open" , bind ( this , "onopen" ) ) , on ( io , "packet" , bind ( this , "onpacket" ) ) , on ( io , "close" , bind ( this , "onclose" ) ) ] } } , Socket . prototype . open = Socket . prototype . connect = function ( ) { return this . connected ? this : ( this . subEvents ( ) , this . io . open ( ) , "open" === this . io . readyState && this . onopen ( ) , this . emit ( "connecting" ) , this ) } , Socket . prototype . send = function ( ) { var args = toArray ( arguments ) ; return args . unshift ( "message" ) , this . emit . apply ( this , args ) , this } , Socket . prototype . emit = function ( ev ) { if ( events . hasOwnProperty ( ev ) ) return emit . apply ( this , arguments ) , this ; var args = toArray ( arguments ) , parserType = parser . EVENT ; hasBin ( args ) && ( parserType = parser . BINARY _EVENT ) ; var packet = { type : parserType , data : args } ; return packet . options = { } , packet . options . compress = ! this . flags || ! 1 !== this . flags . compress , "function" == typeof args [ args . length - 1 ] && ( debug ( "emitting packet with ack id %d" , this . ids ) , this . acks [ this . ids ] = args . pop ( ) , packet . id = this . ids ++ ) , this . connected ? this . packet ( packet ) : this . sendBuffer . push ( packet ) , delete this . flags , this } , Socket . prototype . packet = function ( packet ) { packet . nsp = this . nsp , this . io . packet ( packet ) } , Socket . prototype . onopen = function ( ) { debug ( "transport is open - connecting" ) , "/" !== this . nsp && ( this . query ? this . packet ( { type : parser . CONNECT , query : this . query } ) : this . packet ( { type : parser . CONNECT } ) ) } , Socket . prototype . onclose = function ( reason ) { debug ( "close (%s)" , reason ) , this . connected = ! 1 , this . disconnected = ! 0 , delete this . id , this . emit ( "disconnect" , reason ) } , Socket . prototype . onpacket = function ( packet ) { if ( packet . nsp === this . nsp ) switch ( packet . type ) { case parser . CONNECT : this . onconnect ( ) ; break ; case parser . EVENT : this . onevent ( packet ) ; break ; case parser . BINARY _EVENT : this . onevent ( packet ) ; break ; case parser . ACK : this . onack ( packet ) ; break ; case parser . BINARY _ACK : this . onack ( packet ) ; break ; case parser . DISCONNECT : this . ondisconnect ( ) ; break ; case parser . ERROR : this . emit ( "error" , packet . data ) } } , Socket . prototype . onevent = function ( packet ) { var args = packet . data || [ ] ; debug ( "emitting event %j" , args ) , null != packet . id && ( debug ( "attaching ack callback to event" ) , args . push ( this . ack ( packet . id ) ) ) , this . connected ? emit . apply ( this , args ) : this . receiveBuffer . push ( args ) } , Socket . prototype . ack = function ( id ) { var self = this , sent = ! 1 ; return function ( ) { if ( ! sent ) { sent = ! 0 ; var args = toArray ( arguments ) ; debug ( "sending ack %j" , args ) ; var type = hasBin ( args ) ? parser . BINARY _ACK : parser . ACK ; self . packet ( { type : type , id : id , data : args } ) } } } , Socket . prototype . onack = function ( packet ) { var ack = this . acks [ packet . id ] ; "function" == typeof ack ? ( debug ( "calling ack %s with %j" , packet . id , packet . data ) , ack . apply ( this , packet . data ) , delete this . acks [ packet . id ] ) : debug ( "bad ack %s" , packet . id ) } , Socket . prototype . onconnect = function ( ) { this . connected = ! 0 , this . disconnected = ! 1 , this . emit ( "connect" ) , this . emitBuffered ( ) } , Socket . prototype . emitBuffered = function ( ) { var i ; for ( i = 0 ; i < this . receiveBuffer . length ; i ++ ) emit . apply ( this , this . receiveBuffer [ i ] ) ; for ( this . receiveBuffer = [ ] , i = 0 ; i < this . sendBuffer . length ; i ++ ) this . packet ( this . sendBuffer [ i ] ) ; this . sendBuffer = [ ] } , Socket . prototype . ondisconnect = function (
return o . appendChild ( a ) . id = u , ! n . getElementsByName || ! n . getElementsByName ( u ) . length } ) , c . getById ? ( d . filter . ID = function ( a ) { var b = a . replace ( _ , aa ) ; return function ( a ) { return a . getAttribute ( "id" ) === b } } , d . find . ID = function ( a , b ) { if ( "undefined" != typeof b . getElementById && p ) { var c = b . getElementById ( a ) ; return c ? [ c ] : [ ] } } ) : ( d . filter . ID = function ( a ) { var b = a . replace ( _ , aa ) ; return function ( a ) { var c = "undefined" != typeof a . getAttributeNode && a . getAttributeNode ( "id" ) ; return c && c . value === b } } , d . find . ID = function ( a , b ) { if ( "undefined" != typeof b . getElementById && p ) { var c , d , e , f = b . getElementById ( a ) ; if ( f ) { if ( c = f . getAttributeNode ( "id" ) , c && c . value === a ) return [ f ] ; for ( e = b . getElementsByName ( a ) , d = 0 ; f = e [ d ++ ] ; ) if ( c = f . getAttributeNode ( "id" ) , c && c . value === a ) return [ f ] } return [ ] } } ) , d . find . TAG = c . getElementsByTagName ? function ( a , b ) { return "undefined" != typeof b . getElementsByTagName ? b . getElementsByTagName ( a ) : c . qsa ? b . querySelectorAll ( a ) : void 0 } : function ( a , b ) { var c , d = [ ] , e = 0 , f = b . getElementsByTagName ( a ) ; if ( "*" === a ) { for ( ; c = f [ e ++ ] ; ) 1 === c . nodeType && d . push ( c ) ; return d } return f } , d . find . CLASS = c . getElementsByClassName && function ( a , b ) { if ( "undefined" != typeof b . getElementsByClassName && p ) return b . getElementsByClassName ( a ) } , r = [ ] , q = [ ] , ( c . qsa = Y . test ( n . querySelectorAll ) ) && ( ja ( function ( a ) { o . appendChild ( a ) . innerHTML = "<a id='" + u + "'></a><select id='" + u + "-\r\\' msallowcapture=''><option selected=''></option></select>" , a . querySelectorAll ( "[msallowcapture^='']" ) . length && q . push ( "[*^$]=" + K + "*(?:''|\"\")" ) , a . querySelectorAll ( "[selected]" ) . length || q . push ( "\\[" + K + "*(?:value|" + J + ")" ) , a . querySelectorAll ( "[id~=" + u + "-]" ) . length || q . push ( "~=" ) , a . querySelectorAll ( ":checked" ) . length || q . push ( ":checked" ) , a . querySelectorAll ( "a#" + u + "+*" ) . length || q . push ( ".#.+[+~]" ) } ) , ja ( function ( a ) { a . innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>" ; var b = n . createElement ( "input" ) ; b . setAttribute ( "type" , "hidden" ) , a . appendChild ( b ) . setAttribute ( "name" , "D" ) , a . querySelectorAll ( "[name=d]" ) . length && q . push ( "name" + K + "*[*^$|!~]?=" ) , 2 !== a . querySelectorAll ( ":enabled" ) . length && q . push ( ":enabled" , ":disabled" ) , o . appendChild ( a ) . disabled = ! 0 , 2 !== a . querySelectorAll ( ":disabled" ) . length && q . push ( ":enabled" , ":disabled" ) , a . querySelectorAll ( "*,:x" ) , q . push ( ",.*:" ) } ) ) , ( c . matchesSelector = Y . test ( s = o . matches || o . webkitMatchesSelector || o . mozMatchesSelector || o . oMatchesSelector || o . msMatchesSelector ) ) && ja ( function ( a ) { c . disconnectedMatch = s . call ( a , "*" ) , s . call ( a , "[s!='']:x" ) , r . push ( "!=" , N ) } ) , q = q . length && new RegExp ( q . join ( "|" ) ) , r = r . length && new RegExp ( r . join ( "|" ) ) , b = Y . test ( o . compareDocumentPosition ) , t = b || Y . test ( o . contains ) ? function ( a , b ) { var c = 9 === a . nodeType ? a . documentElement : a , d = b && b . parentNode ; return a === d || ! ( ! d || 1 !== d . nodeType || ! ( c . contains ? c . contains ( d ) : a . compareDocumentPosition && 16 & a . compareDocumentPosition ( d ) ) ) } : function ( a , b ) { if ( b ) for ( ; b = b . parentNode ; ) if ( b === a ) return ! 0 ; return ! 1 } , B = b ? function ( a , b ) { if ( a === b ) return l = ! 0 , 0 ; var d = ! a . compareDocumentPosition - ! b . compareDocumentPosition ; return d ? d : ( d = ( a . ownerDocument || a ) === ( b . ownerDocument || b ) ? a . compareDocumentPosition ( b ) : 1 , 1 & d || ! c . sortDetached && b . compareDocumentPosition ( a ) === d ? a === n || a . ownerDocument === v && t ( v , a ) ? - 1 : b === n || b . ownerDocument === v && t ( v , b ) ? 1 : k ? I ( k , a ) - I ( k , b ) : 0 : 4 & d ? - 1 : 1 ) } : function ( a , b ) { if ( a === b ) return l = ! 0 , 0 ; var c , d = 0 , e = a . parentNode , f = b . parentNode , g = [ a ] , h = [ b ] ; if ( ! e || ! f ) return a === n ? - 1 : b === n ? 1 : e ? - 1 : f ? 1 : k ? I ( k , a ) - I ( k , b ) : 0 ; if ( e === f ) return la ( a , b ) ; for ( c = a ; c = c . parentNode ; ) g . unshift ( c ) ; for ( c = b ; c = c . parentNode ; ) h . unshift ( c ) ; for ( ; g [ d ] === h [ d ] ; ) d ++ ; return d ? la ( g [ d ] , h [ d ] ) : g [ d ] === v ? - 1 : h [ d ] === v ? 1 : 0 } , n ) : n } , ga . matches = function ( a , b ) { return ga ( a , null , null , b ) } , ga . matchesSelector = function ( a , b ) { if ( ( a . ownerDocument || a ) !== n && m ( a ) , b = b . replace ( S , "='$1']" ) , c . matchesSelector && p && ! A [ b + " " ] && ( ! r || ! r . test ( b ) ) && ( ! q || ! q . test ( b ) ) ) try { var d = s . call ( a , b ) ; if ( d || c . disconnectedMatch || a . document && 11 !== a . document . nodeType ) return d } catch ( e ) { } return ga ( b , n , null , [ a ] ) . length > 0 } , ga . contains = function ( a , b ) { return ( a . ownerDocument || a ) !== n && m ( a ) , t ( a , b ) } , ga . attr = function ( a , b ) { ( a . ownerDocument || a ) !== n && m ( a ) ; var e = d . attrHandle [ b . toLowerCase ( ) ] , f = e && C . call ( d . attrHandle , b . toLowerCase ( ) ) ? e ( a , b , ! p ) : void 0 ; return void 0 !== f ? f : c . attributes || ! p
1 !== this . nodeType && 11 !== this . nodeType && 9 !== this . nodeType || ( this . textContent = a ) } ) } , null , a , arguments . length ) } , append : function ( ) { return Ia ( this , arguments , function ( a ) { if ( 1 === this . nodeType || 11 === this . nodeType || 9 === this . nodeType ) { var b = Da ( this , a ) ; b . appendChild ( a ) } } ) } , prepend : function ( ) { return Ia ( this , arguments , function ( a ) { if ( 1 === this . nodeType || 11 === this . nodeType || 9 === this . nodeType ) { var b = Da ( this , a ) ; b . insertBefore ( a , b . firstChild ) } } ) } , before : function ( ) { return Ia ( this , arguments , function ( a ) { this . parentNode && this . parentNode . insertBefore ( a , this ) } ) } , after : function ( ) { return Ia ( this , arguments , function ( a ) { this . parentNode && this . parentNode . insertBefore ( a , this . nextSibling ) } ) } , empty : function ( ) { for ( var a , b = 0 ; null != ( a = this [ b ] ) ; b ++ ) 1 === a . nodeType && ( r . cleanData ( ma ( a , ! 1 ) ) , a . textContent = "" ) ; return this } , clone : function ( a , b ) { return a = null != a && a , b = null == b ? a : b , this . map ( function ( ) { return r . clone ( this , a , b ) } ) } , html : function ( a ) { return S ( this , function ( a ) { var b = this [ 0 ] || { } , c = 0 , d = this . length ; if ( void 0 === a && 1 === b . nodeType ) return b . innerHTML ; if ( "string" == typeof a && ! za . test ( a ) && ! la [ ( ja . exec ( a ) || [ "" , "" ] ) [ 1 ] . toLowerCase ( ) ] ) { a = r . htmlPrefilter ( a ) ; try { for ( ; c < d ; c ++ ) b = this [ c ] || { } , 1 === b . nodeType && ( r . cleanData ( ma ( b , ! 1 ) ) , b . innerHTML = a ) ; b = 0 } catch ( e ) { } } b && this . empty ( ) . append ( a ) } , null , a , arguments . length ) } , replaceWith : function ( ) { var a = [ ] ; return Ia ( this , arguments , function ( b ) { var c = this . parentNode ; r . inArray ( this , a ) < 0 && ( r . cleanData ( ma ( this ) ) , c && c . replaceChild ( b , this ) ) } , a ) } } ) , r . each ( { appendTo : "append" , prependTo : "prepend" , insertBefore : "before" , insertAfter : "after" , replaceAll : "replaceWith" } , function ( a , b ) { r . fn [ a ] = function ( a ) { for ( var c , d = [ ] , e = r ( a ) , f = e . length - 1 , g = 0 ; g <= f ; g ++ ) c = g === f ? this : this . clone ( ! 0 ) , r ( e [ g ] ) [ b ] ( c ) , h . apply ( d , c . get ( ) ) ; return this . pushStack ( d ) } } ) ; var Ka = /^margin/ , La = new RegExp ( "^(" + _ + ")(?!px)[a-z%]+$" , "i" ) , Ma = function ( b ) { var c = b . ownerDocument . defaultView ; return c && c . opener || ( c = a ) , c . getComputedStyle ( b ) } ; ! function ( ) { function b ( ) { if ( i ) { i . style . cssText = "box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%" , i . innerHTML = "" , qa . appendChild ( h ) ; var b = a . getComputedStyle ( i ) ; c = "1%" !== b . top , g = "2px" === b . marginLeft , e = "4px" === b . width , i . style . marginRight = "50%" , f = "4px" === b . marginRight , qa . removeChild ( h ) , i = null } } var c , e , f , g , h = d . createElement ( "div" ) , i = d . createElement ( "div" ) ; i . style && ( i . style . backgroundClip = "content-box" , i . cloneNode ( ! 0 ) . style . backgroundClip = "" , o . clearCloneStyle = "content-box" === i . style . backgroundClip , h . style . cssText = "border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute" , h . appendChild ( i ) , r . extend ( o , { pixelPosition : function ( ) { return b ( ) , c } , boxSizingReliable : function ( ) { return b ( ) , e } , pixelMarginRight : function ( ) { return b ( ) , f } , reliableMarginLeft : function ( ) { return b ( ) , g } } ) ) } ( ) ; var Pa = /^(none|table(?!-c[ea]).+)/ , Qa = { position : "absolute" , visibility : "hidden" , display : "block" } , Ra = { letterSpacing : "0" , fontWeight : "400" } , Sa = [ "Webkit" , "Moz" , "ms" ] , Ta = d . createElement ( "div" ) . style ; r . extend ( { cssHooks : { opacity : { get : function ( a , b ) { if ( b ) { var c = Na ( a , "opacity" ) ; return "" === c ? "1" : c } } } } , cssNumber : { animationIterationCount : ! 0 , columnCount : ! 0 , fillOpacity : ! 0 , flexGrow : ! 0 , flexShrink : ! 0 , fontWeight : ! 0 , lineHeight : ! 0 , opacity : ! 0 , order : ! 0 , orphans : ! 0 , widows : ! 0 , zIndex : ! 0 , zoom : ! 0 } , cssProps : { float : "cssFloat" } , style : function ( a , b , c , d ) { if ( a && 3 !== a . nodeType && 8 !== a . nodeType && a . style ) { var e , f , g , h = r . camelCase ( b ) , i = a . style ; return b = r . cssProps [ h ] || ( r . cssProps [ h ] = Ua ( h ) || h ) , g = r . cssHooks [ b ] || r . cssHooks [ h ] , void 0 === c ? g && "get" in g && void 0 !== ( e = g . get ( a , ! 1 , d ) ) ? e : i [ b ] : ( f = typeof c , "string" === f && ( e = aa . exec ( c ) ) && e [ 1 ] && ( c = ea ( a , b , e ) , f = "number" ) , void ( null != c && c === c && ( "number" === f && ( c += e && e [ 3 ] || ( r . cssNumber [ h ] ? "" : "px" ) ) , o . clearCloneStyle || "" !== c || 0 !== b . indexOf ( "background" ) || ( i [ b ] = "inherit" ) , g && "set" in g && void 0 === ( c = g . set ( a , c , d ) ) || ( i [ b ] = c ) ) ) ) } } , css : function ( a , b , c , d ) { var e , f , g , h = r . camelCase ( b ) ; return b = r . cssProps [ h ] || ( r . cssProps [ h ] = Ua ( h ) || h ) , g = r . cssHooks [ b ] || r . cssHooks [ h ] , g && "get" in g && ( e = g . get ( a , ! 0 , c ) ) , void 0 === e && ( e = Na ( a , b , d ) ) , "normal" === e && b in Ra && ( e = Ra [ b ] ) , "" === c || c ? ( f = parseFloat ( e ) , c === ! 0 || isFinite ( f ) ? f || 0 : e ) : e } } ) , r . each ( [ "height" , "width" ] , function ( a , b )
} function d ( e ) { for ( var t = { } , n = 0 ; n < e . length ; n ++ ) e [ n ] && u ( t , e [ n ] ) ; return t } function p ( ) { } function v ( e ) { return e . reduce ( function ( e , t ) { return e . concat ( t . staticKeys || [ ] ) } , [ ] ) . join ( "," ) } function h ( e , t ) { return e == t || ! ( ! l ( e ) || ! l ( t ) ) && JSON . stringify ( e ) === JSON . stringify ( t ) } function m ( e , t ) { for ( var n = 0 ; n < e . length ; n ++ ) if ( h ( e [ n ] , t ) ) return n ; return - 1 } function g ( e ) { var t = ( e + "" ) . charCodeAt ( 0 ) ; return 36 === t || 95 === t } function y ( e , t , n , r ) { Object . defineProperty ( e , t , { value : n , enumerable : ! ! r , writable : ! 0 , configurable : ! 0 } ) } function _ ( e ) { if ( ! Sr . test ( e ) ) { var t = e . split ( "." ) ; return function ( e ) { for ( var n = 0 ; n < t . length ; n ++ ) { if ( ! e ) return ; e = e [ t [ n ] ] } return e } } } function b ( e ) { return /native code/ . test ( e . toString ( ) ) } function $ ( e ) { Hr . target && Ur . push ( Hr . target ) , Hr . target = e } function w ( ) { Hr . target = Ur . pop ( ) } function C ( ) { zr . length = 0 , Vr = { } , Jr = qr = ! 1 } function x ( ) { for ( qr = ! 0 , zr . sort ( function ( e , t ) { return e . id - t . id } ) , Kr = 0 ; Kr < zr . length ; Kr ++ ) { var e = zr [ Kr ] , t = e . id ; Vr [ t ] = null , e . run ( ) } Ir && Tr . devtools && Ir . emit ( "flush" ) , C ( ) } function k ( e ) { var t = e . id ; if ( null == Vr [ t ] ) { if ( Vr [ t ] = ! 0 , qr ) { for ( var n = zr . length - 1 ; n >= 0 && zr [ n ] . id > e . id ; ) n -- ; zr . splice ( Math . max ( n , Kr ) + 1 , 0 , e ) } else zr . push ( e ) ; Jr || ( Jr = ! 0 , Br ( x ) ) } } function A ( e , t ) { var n , r ; t || ( t = Gr , t . clear ( ) ) ; var i = Array . isArray ( e ) , a = l ( e ) ; if ( ( i || a ) && Object . isExtensible ( e ) ) { if ( e . _ _ob _ _ ) { var o = e . _ _ob _ _ . dep . id ; if ( t . has ( o ) ) return ; t . add ( o ) } if ( i ) for ( n = e . length ; n -- ; ) A ( e [ n ] , t ) ; else if ( a ) for ( r = Object . keys ( e ) , n = r . length ; n -- ; ) A ( e [ r [ n ] ] , t ) } } function O ( e , t ) { e . _ _proto _ _ = t } function T ( e , t , n ) { for ( var r = 0 , i = n . length ; r < i ; r ++ ) { var a = n [ r ] ; y ( e , a , t [ a ] ) } } function S ( e ) { if ( l ( e ) ) { var t ; return i ( e , "__ob__" ) && e . _ _ob _ _ instanceof ti ? t = e . _ _ob _ _ : ei . shouldConvert && ! Tr . _isServer && ( Array . isArray ( e ) || f ( e ) ) && Object . isExtensible ( e ) && ! e . _isVue && ( t = new ti ( e ) ) , t } } function E ( e , t , n , r ) { var i = new Hr , a = Object . getOwnPropertyDescriptor ( e , t ) ; if ( ! a || a . configurable !== ! 1 ) { var o = a && a . get , s = a && a . set , c = S ( n ) ; Object . defineProperty ( e , t , { enumerable : ! 0 , configurable : ! 0 , get : function ( ) { var t = o ? o . call ( e ) : n ; return Hr . target && ( i . depend ( ) , c && c . dep . depend ( ) , Array . isArray ( t ) && N ( t ) ) , t } , set : function ( t ) { var r = o ? o . call ( e ) : n ; t !== r && ( s ? s . call ( e , t ) : n = t , c = S ( t ) , i . notify ( ) ) } } ) } } function j ( e , t , n ) { if ( Array . isArray ( e ) ) return e . splice ( t , 1 , n ) , n ; if ( i ( e , t ) ) return void ( e [ t ] = n ) ; var r = e . _ _ob _ _ ; return e . _isVue || r && r . vmCount ? void 0 : r ? ( E ( r . value , t , n ) , r . dep . notify ( ) , n ) : void ( e [ t ] = n ) } function L ( e , t ) { var n = e . _ _ob _ _ ; e . _isVue || n && n . vmCount || i ( e , t ) && ( delete e [ t ] , n && n . dep . notify ( ) ) } function N ( e ) { for ( var t = void 0 , n = 0 , r = e . length ; n < r ; n ++ ) t = e [ n ] , t && t . _ _ob _ _ && t . _ _ob _ _ . dep . depend ( ) , Array . isArray ( t ) && N ( t ) } function D ( e ) { e . _watchers = [ ] , M ( e ) , P ( e ) , R ( e ) , B ( e ) , F ( e ) } function M ( e ) { var t = e . $options . props ; if ( t ) { var n = e . $options . propsData || { } , r = e . $options . _propKeys = Object . keys ( t ) , i = ! e . $parent ; ei . shouldConvert = i ; for ( var a = function ( i ) { var a = r [ i ] ; E ( e , a , Le ( a , t , n , e ) ) } , o = 0 ; o < r . length ; o ++ ) a ( o ) ; ei . shouldConvert = ! 0 } } function P ( e ) { var t = e . $options . data ; t = e . _data = "function" == typeof t ? t . call ( e ) : t || { } , f ( t ) || ( t = { } ) ; for ( var n = Object . keys ( t ) , r = e . $options . props , a = n . length ; a -- ; ) r && i ( r , n [ a ] ) || z ( e , n [ a ] ) ; S ( t ) , t . _ _ob _ _ && t . _ _ob _ _ . vmCount ++ } function R ( e ) { var t = e . $options . computed ; if ( t ) for ( var n in t ) { var r = t [ n ] ; "function" == typeof r ? ( ni . get = I ( r , e ) , ni . set = p ) : ( ni . get = r . get ? r . cache !== ! 1 ? I ( r . get , e ) : s ( r . get , e ) : p , ni . set = r . set ? s ( r . set , e ) : p ) , Object . defineProperty ( e , n , ni ) } } function I ( e , t ) { var n = new Zr ( t , e , p , { lazy : ! 0 } ) ; return function ( ) { return n . dirty && n . evaluate ( ) , Hr . target && n . depend ( ) , n . value } } function B ( e ) { var t = e . $options . methods ; if ( t ) for ( var n in t ) e [ n ] = null == t [ n ] ? p : s ( t [ n ] , e ) } function F ( e ) { var t = e . $options . watch ; if ( t ) for ( var n in t ) { var r = t [ n ] ; if ( Array . isArray ( r ) ) for ( var i = 0 ; i < r . length ; i ++ ) H ( e , n , r [ i ] ) ; else H ( e , n , r ) } } function H ( e , t , n ) { var r ; f ( n ) && ( r = n , n = n . handler ) , "string" == typeof n && ( n = e [ n ] ) , e . $watch ( t , n , r ) } function U ( e ) { var t = { } ; t . get = function ( ) { return this . _data } , Object . defineProperty ( e . prototype , "$data" , t ) , e . prototype . $set = j , e . prototype . $delete = L , e . prototype . $watch = function ( e , t , n ) { var r = this ; n = n || { } , n . user = ! 0 ; var i = new Zr ( r , e , t , n ) ; return n . immediate && t . call ( r , i . value ) , function ( ) { i . teardown ( ) } } } function z ( e , t ) { g ( t ) || Object . defineProperty ( e , t , { configurable : ! 0 , enumerable : ! 0 , get : function ( ) { return e . _data
"" === p [ 5 ] && delete p [ 5 ] ) ; var v = p [ 3 ] || p [ 4 ] || p [ 5 ] || "" ; f [ d ] = { name : p [ 1 ] , value : Xt ( v , t . shouldDecodeNewlines ) } } i || ( c . push ( { tag : n , attrs : f } ) , s = n , r = "" ) , t . start && t . start ( n , f , i , e . start , e . end ) } function a ( e , n , r , i ) { var a ; if ( null == r && ( r = f ) , null == i && ( i = f ) , n ) { var o = n . toLowerCase ( ) ; for ( a = c . length - 1 ; a >= 0 && c [ a ] . tag . toLowerCase ( ) !== o ; a -- ) ; } else a = 0 ; if ( a >= 0 ) { for ( var u = c . length - 1 ; u >= a ; u -- ) t . end && t . end ( c [ u ] . tag , r , i ) ; c . length = a , s = a && c [ a - 1 ] . tag } else "br" === n . toLowerCase ( ) ? t . start && t . start ( n , [ ] , ! 0 , r , i ) : "p" === n . toLowerCase ( ) && ( t . start && t . start ( n , [ ] , ! 1 , r , i ) , t . end && t . end ( n , r , i ) ) } for ( var o , s , c = [ ] , u = t . expectHTML , l = t . isUnaryTag || Or , f = 0 ; e ; ) { if ( o = e , s && Ja ( s ) ) { var d = s . toLowerCase ( ) , p = qa [ d ] || ( qa [ d ] = new RegExp ( "([\\s\\S]*?)(</" + d + "[^>]*>)" , "i" ) ) , v = 0 , h = e . replace ( p , function ( e , n , r ) { return v = r . length , "script" !== d && "style" !== d && "noscript" !== d && ( n = n . replace ( /<!--([\s\S]*?)-->/g , "$1" ) . replace ( /<!\[CDATA\[([\s\S]*?)\]\]>/g , "$1" ) ) , t . chars && t . chars ( n ) , "" } ) ; f += e . length - h . length , e = h , a ( "</" + d + ">" , d , f - v , f ) } else { var m = e . indexOf ( "<" ) ; if ( 0 === m ) { if ( /^<!--/ . test ( e ) ) { var g = e . indexOf ( "-->" ) ; if ( g >= 0 ) { n ( g + 3 ) ; continue } } if ( /^<!\[/ . test ( e ) ) { var y = e . indexOf ( "]>" ) ; if ( y >= 0 ) { n ( y + 2 ) ; continue } } var _ = e . match ( Aa ) ; if ( _ ) { n ( _ [ 0 ] . length ) ; continue } var b = e . match ( ka ) ; if ( b ) { var $ = f ; n ( b [ 0 ] . length ) , a ( b [ 0 ] , b [ 1 ] , $ , f ) ; continue } var w = r ( ) ; if ( w ) { i ( w ) ; continue } } var C = void 0 ; m >= 0 ? ( C = e . substring ( 0 , m ) , n ( m ) ) : ( C = e , e = "" ) , t . chars && t . chars ( C ) } if ( e === o ) throw new Error ( "Error parsing template:\n\n" + e ) } a ( ) } function tn ( e ) { function t ( ) { ( o || ( o = [ ] ) ) . push ( e . slice ( d , i ) . trim ( ) ) , d = i + 1 } var n , r , i , a , o , s = ! 1 , c = ! 1 , u = 0 , l = 0 , f = 0 , d = 0 ; for ( i = 0 ; i < e . length ; i ++ ) if ( r = n , n = e . charCodeAt ( i ) , s ) 39 === n && 92 !== r && ( s = ! s ) ; else if ( c ) 34 === n && 92 !== r && ( c = ! c ) ; else if ( 124 !== n || 124 === e . charCodeAt ( i + 1 ) || 124 === e . charCodeAt ( i - 1 ) || u || l || f ) switch ( n ) { case 34 : c = ! 0 ; break ; case 39 : s = ! 0 ; break ; case 40 : f ++ ; break ; case 41 : f -- ; break ; case 91 : l ++ ; break ; case 93 : l -- ; break ; case 123 : u ++ ; break ; case 125 : u -- } else void 0 === a ? ( d = i + 1 , a = e . slice ( 0 , i ) . trim ( ) ) : t ( ) ; if ( void 0 === a ? a = e . slice ( 0 , i ) . trim ( ) : 0 !== d && t ( ) , o ) for ( i = 0 ; i < o . length ; i ++ ) a = nn ( a , o [ i ] ) ; return a } function nn ( e , t ) { var n = t . indexOf ( "(" ) ; if ( n < 0 ) return '_f("' + t + '")(' + e + ")" ; var r = t . slice ( 0 , n ) , i = t . slice ( n + 1 ) ; return '_f("' + r + '")(' + e + "," + i } function rn ( e , t ) { var n = t ? eo ( t ) : Qa ; if ( n . test ( e ) ) { for ( var r , i , a = [ ] , o = n . lastIndex = 0 ; r = n . exec ( e ) ; ) { i = r . index , i > o && a . push ( JSON . stringify ( e . slice ( o , i ) ) ) ; var s = tn ( r [ 1 ] . trim ( ) ) ; a . push ( "_s(" + s + ")" ) , o = i + r [ 0 ] . length } return o < e . length && a . push ( JSON . stringify ( e . slice ( o ) ) ) , a . join ( "+" ) } } function an ( e ) { console . error ( "[Vue parser]: " + e ) } function on ( e , t ) { return e ? e . map ( function ( e ) { return e [ t ] } ) . filter ( function ( e ) { return e } ) : [ ] } function sn ( e , t , n ) { ( e . props || ( e . props = [ ] ) ) . push ( { name : t , value : n } ) } function cn ( e , t , n ) { ( e . attrs || ( e . attrs = [ ] ) ) . push ( { name : t , value : n } ) } function un ( e , t , n , r , i , a ) { ( e . directives || ( e . directives = [ ] ) ) . push ( { name : t , rawName : n , value : r , arg : i , modifiers : a } ) } function ln ( e , t , n , r , i ) { r && r . capture && ( delete r . capture , t = "!" + t ) ; var a ; r && r . native ? ( delete r . native , a = e . nativeEvents || ( e . nativeEvents = { } ) ) : a = e . events || ( e . events = { } ) ; var o = { value : n , modifiers : r } , s = a [ t ] ; Array . isArray ( s ) ? i ? s . unshift ( o ) : s . push ( o ) : s ? a [ t ] = i ? [ o , s ] : [ s , o ] : a [ t ] = o } function fn ( e , t , n ) { var r = dn ( e , ":" + t ) || dn ( e , "v-bind:" + t ) ; if ( null != r ) return r ; if ( n !== ! 1 ) { var i = dn ( e , t ) ; if ( null != i ) return JSON . stringify ( i ) } } function dn ( e , t ) { var n ; if ( null != ( n = e . attrsMap [ t ] ) ) for ( var r = e . attrsList , i = 0 , a = r . length ; i < a ; i ++ ) if ( r [ i ] . name === t ) { r . splice ( i , 1 ) ; break } return n } function pn ( e , t ) { Ta = t . warn || an , Sa = t . getTagNamespace || Or , Ea = t . mustUseProp || Or , ja = t . isPreTag || Or , La = on ( t . modules , "preTransformNode" ) , Na = on ( t . modules , "transformNode" ) , Da = on ( t . modules , "postTransformNode" ) , Ma = t . delimiters ; var n , r , i = [ ] , a = t . preserveWhitespace !== ! 1 , o = ! 1 , s = ! 1 ; return en ( e , { expectHTML : t . expectHTML , isUnaryTag : t . isUnaryTag , shouldDecodeNewlines : t . shouldDecodeNewlines , start : function ( e , a , c ) { function u ( e ) { } var l = r && r . ns || Sa ( e ) ; t . isIE && "svg" === l && ( a = En ( a ) ) ; var f = { type : 1 , tag : e , attrsList : a , attrsMap : On ( a , t . isIE ) , parent : r , children : [ ] } ; l && ( f . ns = l ) , Sn ( f ) && ( f . forbidden = ! 0 ) ; for ( var d = 0 ; d < La . length ; d ++ ) La [ d ] ( f , t ) ; if ( o || ( vn ( f ) , f . pre && ( o = ! 0 ) ) , ja ( f . tag ) && ( s = ! 0 ) , o ) hn ( f ) ; else { yn ( f ) , _n ( f ) , $n ( f ) , mn ( f ) , f . plain = ! f . key && ! a . length , gn ( f ) , wn ( f ) , Cn ( f ) ; fo
"options" === b ) return c ? this . each ( function ( ) { var b = a ( this ) , d = a . extend ( b . data ( "ssOpts" ) || { } , c ) ; a ( this ) . data ( "ssOpts" , d ) } ) : this . first ( ) . data ( "ssOpts" ) ; var d = a . extend ( { } , a . fn . smoothScroll . defaults , b ) , e = function ( b ) { var c = function ( a ) { return a . replace ( /(:|\.|\/)/g , "\\$1" ) } , e = this , f = a ( this ) , g = a . extend ( { } , d , f . data ( "ssOpts" ) || { } ) , h = d . exclude , i = g . excludeWithin , j = 0 , k = 0 , l = ! 0 , m = { } , n = a . smoothScroll . filterPath ( location . pathname ) , o = a . smoothScroll . filterPath ( e . pathname ) , p = location . hostname === e . hostname || ! e . hostname , q = g . scrollTarget || o === n , r = c ( e . hash ) ; if ( r && ! a ( r ) . length && ( l = ! 1 ) , g . scrollTarget || p && q && r ) { for ( ; l && j < h . length ; ) f . is ( c ( h [ j ++ ] ) ) && ( l = ! 1 ) ; for ( ; l && k < i . length ; ) f . closest ( i [ k ++ ] ) . length && ( l = ! 1 ) } else l = ! 1 ; l && ( g . preventDefault && b . preventDefault ( ) , a . extend ( m , g , { scrollTarget : g . scrollTarget || r , link : e } ) , a . smoothScroll ( m ) ) } ; return null !== b . delegateSelector ? this . off ( "click.smoothscroll" , b . delegateSelector ) . on ( "click.smoothscroll" , b . delegateSelector , e ) : this . off ( "click.smoothscroll" ) . on ( "click.smoothscroll" , e ) , this } } ) , a . smoothScroll = function ( b , d ) { if ( "options" === b && "object" == typeof d ) return a . extend ( c , d ) ; var e , f , g , h , i , j = 0 , k = "offset" , l = "scrollTop" , m = { } , n = { } ; "number" == typeof b ? ( e = a . extend ( { link : null } , a . fn . smoothScroll . defaults , c ) , g = b ) : ( e = a . extend ( { link : null } , a . fn . smoothScroll . defaults , b || { } , c ) , e . scrollElement && ( k = "position" , "static" === e . scrollElement . css ( "position" ) && e . scrollElement . css ( "position" , "relative" ) ) ) , l = "left" === e . direction ? "scrollLeft" : l , e . scrollElement ? ( f = e . scrollElement , /^(?:HTML|BODY)$/ . test ( f [ 0 ] . nodeName ) || ( j = f [ l ] ( ) ) ) : f = a ( "html, body" ) . firstScrollable ( e . direction ) , e . beforeScroll . call ( f , e ) , g = "number" == typeof b ? b : d || a ( e . scrollTarget ) [ k ] ( ) && a ( e . scrollTarget ) [ k ] ( ) [ e . direction ] || 0 , m [ l ] = g + j + e . offset , h = e . speed , "auto" === h && ( i = Math . abs ( m [ l ] - f [ l ] ( ) ) , h = i / e . autoCoefficient ) , n = { duration : h , easing : e . easing , complete : function ( ) { e . afterScroll . call ( e . link , e ) } } , e . step && ( n . step = e . step ) , f . length ? f . stop ( ) . animate ( m , n ) : e . afterScroll . call ( e . link , e ) } , a . smoothScroll . version = b , a . smoothScroll . filterPath = function ( a ) { return a = a || "" , a . replace ( /^\// , "" ) . replace ( /(?:index|default).[a-zA-Z]{3,4}$/ , "" ) . replace ( /\/$/ , "" ) } , a . fn . smoothScroll . defaults = d } ) , simpleUpload . maxUploads = 10 , simpleUpload . activeUploads = 0 , simpleUpload . uploads = [ ] , simpleUpload . iframes = { } , simpleUpload . iframeCount = 0 , simpleUpload . queueUpload = function ( e , l ) { simpleUpload . uploads [ simpleUpload . uploads . length ] = { uploads : e , callback : l } } , simpleUpload . uploadNext = function ( ) { if ( simpleUpload . uploads . length > 0 && simpleUpload . activeUploads < simpleUpload . maxUploads ) { var e = simpleUpload . uploads [ 0 ] , l = e . callback , n = e . uploads . splice ( 0 , 1 ) [ 0 ] ; 0 == e . uploads . length && simpleUpload . uploads . splice ( 0 , 1 ) , simpleUpload . activeUploads ++ , l ( n ) , simpleUpload . uploadNext ( ) } } , simpleUpload . queueIframe = function ( e ) { for ( var l = 0 ; 0 == l || l in simpleUpload . iframes ; ) l = Math . floor ( 999999999 * Math . random ( ) + 1 ) ; return simpleUpload . iframes [ l ] = e , simpleUpload . iframeCount ++ , $ ( "body" ) . append ( '<iframe name="simpleUpload_iframe_' + l + '" style="display: none;"></iframe>' ) , l } , simpleUpload . dequeueIframe = function ( e ) { e in simpleUpload . iframes && ( $ ( "iframe[name=simpleUpload_iframe_" + e + "]" ) . remove ( ) , delete simpleUpload . iframes [ e ] , simpleUpload . iframeCount -- ) } , simpleUpload . convertDataType = function ( e , l , n ) { var t = "auto" ; if ( "auto" == e ) { if ( "string" == typeof l && "" != l ) { var a = l . toLowerCase ( ) , o = [ "json" , "xml" , "html" , "script" , "text" ] ; for ( var r in o ) if ( o [ r ] == a ) { t = a ; break } } } else t = e ; if ( "auto" == t ) return "undefined" == typeof n ? "" : "object" == typeof n ? n : String ( n ) ; if ( "json" == t ) { if ( "undefined" == typeof n || null === n ) return null ; if ( "object" == typeof n ) return n ; if ( "string" == typeof n ) try { return $ . parseJSON ( n ) } catch ( i ) { return ! 1 } return ! 1 } if ( "xml" == t ) { if ( "undefined" == typeof n || null === n ) return null ; if ( "string" == typeof n ) try { return $ . parseXML ( n ) } catch ( i ) { return ! 1 } return ! 1 } if ( "script" == t ) { if ( "undefined" == typeof n ) return "" ; if ( "string" == typeof n ) try { return $ . globalEval ( n ) , n } catch ( i ) { return ! 1 } return ! 1 } return "undefined" == typeof n ? "" : String ( n ) } , simpleUpload . iframeCallback = function ( e ) { if ( "object" == typeof e && null !== e ) { var l = e . id ; if ( l in simpleUpload . iframes ) { var n = simpleUpload . convertDataType ( simpleUpload . iframes [ l ] . expect , e . type ,
t . sticky . container = this . getStickyContainer ( t ) , t . sticky . container . rect = this . getRectangle ( t . sticky . container ) , t . sticky . rect = this . getRectangle ( t ) , "img" === t . tagName . toLowerCase && ( t . onload = function ( ) { return t . sticky . rect = i . getRectangle ( t ) } ) , this . activate ( t ) } , t . prototype . activate = function ( t ) { var i = t . sticky . container . offsetHeight ; this . css ( t , { position : "fixed" } ) ; var e = t . sticky . container . offsetHeight ; this . css ( t , { position : "" } ) , e >= i && t . sticky . stickyFor < this . vp . width && ! t . sticky . active && ( t . sticky . active = ! 0 ) , this . elements . indexOf ( t ) < 0 && this . elements . push ( t ) , t . sticky . resizeEvent || ( this . initResizeEvents ( t ) , t . sticky . resizeEvent = ! 0 ) , t . sticky . scrollEvent || ( this . initScrollEvents ( t ) , t . sticky . scrollEvent = ! 0 ) } , t . prototype . initResizeEvents = function ( t ) { var i = this ; t . sticky . resizeListener = function ( ) { return i . onResizeEvents ( t ) } , window . addEventListener ( "resize" , t . sticky . resizeListener ) } , t . prototype . onResizeEvents = function ( t ) { this . vp = this . getViewportSize ( ) , t . sticky . rect = this . getRectangle ( t ) , t . sticky . container . rect = this . getRectangle ( t . sticky . container ) , t . sticky . stickyFor < this . vp . width && ! t . sticky . active ? t . sticky . active = ! 0 : t . sticky . stickyFor >= this . vp . width && t . sticky . active && ( t . sticky . active = ! 1 ) , this . setPosition ( t ) } , t . prototype . initScrollEvents = function ( t ) { var i = this ; t . sticky . scrollListener = function ( ) { return i . onScrollEvents ( t ) } , window . addEventListener ( "scroll" , t . sticky . scrollListener ) } , t . prototype . onScrollEvents = function ( t ) { this . scrollTop = this . getScrollTopPosition ( ) , t . sticky . active && this . setPosition ( t ) } , t . prototype . setPosition = function ( t ) { this . css ( t , { position : "" , width : "" , top : "" , left : "" } ) , this . vp . height < t . sticky . rect . height || ! t . sticky . active || ( t . sticky . rect . width || ( t . sticky . rect = this . getRectangle ( t ) ) , this . scrollTop > t . sticky . rect . top - t . sticky . marginTop ? ( this . css ( t , { position : "fixed" , width : t . sticky . rect . width + "px" , left : t . sticky . rect . left + "px" } ) , this . scrollTop + t . sticky . rect . height + t . sticky . marginTop > t . sticky . container . rect . top + t . sticky . container . offsetHeight ? ( t . sticky . stickyClass && t . classList . remove ( t . sticky . stickyClass ) , this . css ( t , { top : t . sticky . container . rect . top + t . sticky . container . offsetHeight - ( this . scrollTop + t . sticky . rect . height ) + "px" } ) ) : ( t . sticky . stickyClass && t . classList . add ( t . sticky . stickyClass ) , this . css ( t , { top : t . sticky . marginTop + "px" } ) ) ) : ( t . sticky . stickyClass && t . classList . remove ( t . sticky . stickyClass ) , this . css ( t , { position : "" , width : "" , top : "" , left : "" } ) ) ) } , t . prototype . update = function ( ) { var t = this ; this . forEach ( this . elements , function ( i ) { i . sticky . rect = t . getRectangle ( i ) , i . sticky . container . rect = t . getRectangle ( i . sticky . container ) , t . activate ( i ) , t . setPosition ( i ) } ) } , t . prototype . getStickyContainer = function ( t ) { for ( var i = t ; ! i . hasAttribute ( "data-sticky-container" ) && i !== document . querySelector ( "body" ) ; ) i = i . parentNode ; return i } , t . prototype . getRectangle = function ( t ) { this . css ( t , { position : "" , width : "" , top : "" , left : "" } ) ; var i = Math . max ( t . offsetWidth , t . clientWidth , t . scrollWidth ) , e = Math . max ( t . offsetHeight , t . clientHeight , t . scrollHeight ) , s = 0 , o = 0 ; do s += t . offsetTop || 0 , o += t . offsetLeft || 0 , t = t . offsetParent ; while ( t ) ; return { top : s , left : o , width : i , height : e } } , t . prototype . getViewportSize = function ( ) { return { width : Math . max ( document . documentElement . clientWidth , window . innerWidth || 0 ) , height : Math . max ( document . documentElement . clientHeight , window . innerHeight || 0 ) } } , t . prototype . getScrollTopPosition = function ( ) { return ( window . pageYOffset || document . scrollTop ) - ( document . clientTop || 0 ) || 0 } , t . prototype . forEach = function ( t , i ) { for ( var e = 0 , s = t . length ; e < s ; e ++ ) i ( t [ e ] ) } , t . prototype . css = function ( t , i ) { for ( var e in i ) i . hasOwnProperty ( e ) && ( t . style [ e ] = i [ e ] ) } , t } ( ) ; ! function ( t , i ) { "undefined" != typeof exports ? module . exports = i : "function" == typeof define && define . amd ? define ( [ ] , i ) : t . Sticky = i } ( this , Sticky ) , ! function ( e ) { if ( "object" == typeof exports && "undefined" != typeof module ) module . exports = e ( ) ; else if ( "function" == typeof define && define . amd ) define ( [ ] , e ) ; else { var t ; t = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this , t . SimpleMDE = e ( ) } } ( function ( ) { var e ; return function t ( e , n , r ) { function i ( a , l ) { if ( ! n [ a ] ) { if ( ! e [ a ] ) { var s = "function" == typeof require && require ; if ( ! l && s ) return s ( a , ! 0 ) ; if ( o ) return
for ( ; c ( t , s . from ) > 0 ; ) a . shift ( ) . clear ( ) , s = a [ 0 ] . find ( ) ; for ( c ( t , s . from ) < 0 && ( s . to . line - t . line < l ? ( a . shift ( ) . clear ( ) , r ( e , t , s . to , 0 ) ) : r ( e , t , s . from , 0 ) ) ; c ( n , u . to ) < 0 ; ) a . pop ( ) . clear ( ) , u = a [ a . length - 1 ] . find ( ) ; c ( n , u . to ) > 0 && ( n . line - u . from . line < l ? ( a . pop ( ) . clear ( ) , r ( e , u . from , n ) ) : r ( e , u . to , n ) ) } e . defineOption ( "styleSelectedText" , ! 1 , function ( r , a , l ) { var s = l && l != e . Init ; a && ! s ? ( r . state . markedSelection = [ ] , r . state . markedSelectionStyle = "string" == typeof a ? a : "CodeMirror-selectedtext" , o ( r ) , r . on ( "cursorActivity" , t ) , r . on ( "change" , n ) ) : ! a && s && ( r . off ( "cursorActivity" , t ) , r . off ( "change" , n ) , i ( r ) , r . state . markedSelection = r . state . markedSelectionStyle = null ) } ) ; var l = 8 , s = e . Pos , c = e . cmpPos } ) } , { "../../lib/codemirror" : 10 } ] , 10 : [ function ( t , n , r ) { ! function ( t ) { if ( "object" == typeof r && "object" == typeof n ) n . exports = t ( ) ; else { if ( "function" == typeof e && e . amd ) return e ( [ ] , t ) ; ( this || window ) . CodeMirror = t ( ) } } ( function ( ) { "use strict" ; function e ( n , r ) { if ( ! ( this instanceof e ) ) return new e ( n , r ) ; this . options = r = r ? Wi ( r ) : { } , Wi ( ea , r , ! 1 ) , d ( r ) ; var i = r . value ; "string" == typeof i && ( i = new Ca ( i , r . mode , null , r . lineSeparator ) ) , this . doc = i ; var o = new e . inputStyles [ r . inputStyle ] ( this ) , a = this . display = new t ( n , i , o ) ; a . wrapper . CodeMirror = this , c ( this ) , l ( this ) , r . lineWrapping && ( this . display . wrapper . className += " CodeMirror-wrap" ) , r . autofocus && ! Ao && a . input . focus ( ) , v ( this ) , this . state = { keyMaps : [ ] , overlays : [ ] , modeGen : 0 , overwrite : ! 1 , delayingBlurEvent : ! 1 , focused : ! 1 , suppressEdits : ! 1 , pasteIncoming : ! 1 , cutIncoming : ! 1 , selectingText : ! 1 , draggingText : ! 1 , highlight : new Ei , keySeq : null , specialChars : null } ; var s = this ; xo && 11 > bo && setTimeout ( function ( ) { s . display . input . reset ( ! 0 ) } , 20 ) , jt ( this ) , Ki ( ) , bt ( this ) , this . curOp . forceUpdate = ! 0 , Xr ( this , i ) , r . autofocus && ! Ao || s . hasFocus ( ) ? setTimeout ( Bi ( vn , this ) , 20 ) : yn ( this ) ; for ( var u in ta ) ta . hasOwnProperty ( u ) && ta [ u ] ( this , r [ u ] , na ) ; k ( this ) , r . finishInit && r . finishInit ( this ) ; for ( var f = 0 ; f < aa . length ; ++ f ) aa [ f ] ( this ) ; kt ( this ) , wo && r . lineWrapping && "optimizelegibility" == getComputedStyle ( a . lineDiv ) . textRendering && ( a . lineDiv . style . textRendering = "auto" ) } function t ( e , t , n ) { var r = this ; this . input = n , r . scrollbarFiller = ji ( "div" , null , "CodeMirror-scrollbar-filler" ) , r . scrollbarFiller . setAttribute ( "cm-not-content" , "true" ) , r . gutterFiller = ji ( "div" , null , "CodeMirror-gutter-filler" ) , r . gutterFiller . setAttribute ( "cm-not-content" , "true" ) , r . lineDiv = ji ( "div" , null , "CodeMirror-code" ) , r . selectionDiv = ji ( "div" , null , null , "position: relative; z-index: 1" ) , r . cursorDiv = ji ( "div" , null , "CodeMirror-cursors" ) , r . measure = ji ( "div" , null , "CodeMirror-measure" ) , r . lineMeasure = ji ( "div" , null , "CodeMirror-measure" ) , r . lineSpace = ji ( "div" , [ r . measure , r . lineMeasure , r . selectionDiv , r . cursorDiv , r . lineDiv ] , null , "position: relative; outline: none" ) , r . mover = ji ( "div" , [ ji ( "div" , [ r . lineSpace ] , "CodeMirror-lines" ) ] , null , "position: relative" ) , r . sizer = ji ( "div" , [ r . mover ] , "CodeMirror-sizer" ) , r . sizerWidth = null , r . heightForcer = ji ( "div" , null , null , "position: absolute; height: " + Da + "px; width: 1px;" ) , r . gutters = ji ( "div" , null , "CodeMirror-gutters" ) , r . lineGutter = null , r . scroller = ji ( "div" , [ r . sizer , r . heightForcer , r . gutters ] , "CodeMirror-scroll" ) , r . scroller . setAttribute ( "tabIndex" , "-1" ) , r . wrapper = ji ( "div" , [ r . scrollbarFiller , r . gutterFiller , r . scroller ] , "CodeMirror" ) , xo && 8 > bo && ( r . gutters . style . zIndex = - 1 , r . scroller . style . paddingRight = 0 ) , wo || go && Ao || ( r . scroller . draggable = ! 0 ) , e && ( e . appendChild ? e . appendChild ( r . wrapper ) : e ( r . wrapper ) ) , r . viewFrom = r . viewTo = t . first , r . reportedViewFrom = r . reportedViewTo = t . first , r . view = [ ] , r . renderedView = null , r . externalMeasured = null , r . viewOffset = 0 , r . lastWrapHeight = r . lastWrapWidth = 0 , r . updateLineNumbers = null , r . nativeBarWidth = r . barHeight = r . barWidth = 0 , r . scrollbarsClipped = ! 1 , r . lineNumWidth = r . lineNumInnerWidth = r . lineNumChars = null , r . alignWidgets = ! 1 , r . cachedCharWidth = r . cachedTextHeight = r . cachedPaddingH = null , r . maxLine = null , r . maxLineLength = 0 , r . maxLineChanged = ! 1 , r . wheelDX = r . wheelDY = r . wheelStartX = r . wheelStartY = null , r . shift = ! 1 , r . selForContextMenu = null , r . activeTouch = null , n . init ( r ) } function n ( t ) { t . doc . mode = e . getMode ( t . options , t . doc . modeOption ) , r ( t ) } function r ( e ) { e . doc . iter ( function ( e ) { e . stateAfter && ( e . stateAfter = null ) , e . styles && ( e . styles = null ) } ) , e . doc . frontier = e . doc . first , _e ( e , 100 ) , e . state . modeGen ++ , e
} function et ( e , t ) { var n = ti ( t ) , r = Qe ( e , n ) ; r && ! r . text ? r = null : r && r . changes && ( D ( e , r , n , P ( e ) ) , e . curOp . forceUpdate = ! 0 ) , r || ( r = Ze ( e , t ) ) ; var i = Xe ( r , t , n ) ; return { line : t , view : r , rect : null , map : i . map , cache : i . cache , before : i . before , hasHeights : ! 1 } } function tt ( e , t , n , r , i ) { t . before && ( n = - 1 ) ; var o , a = n + ( r || "" ) ; return t . cache . hasOwnProperty ( a ) ? o = t . cache [ a ] : ( t . rect || ( t . rect = t . view . text . getBoundingClientRect ( ) ) , t . hasHeights || ( Ke ( e , t . view , t . rect ) , t . hasHeights = ! 0 ) , o = rt ( e , t , n , r ) , o . bogus || ( t . cache [ a ] = o ) ) , { left : o . left , right : o . right , top : i ? o . rtop : o . top , bottom : i ? o . rbottom : o . bottom } } function nt ( e , t , n ) { for ( var r , i , o , a , l = 0 ; l < e . length ; l += 3 ) { var s = e [ l ] , c = e [ l + 1 ] ; if ( s > t ? ( i = 0 , o = 1 , a = "left" ) : c > t ? ( i = t - s , o = i + 1 ) : ( l == e . length - 3 || t == c && e [ l + 3 ] > t ) && ( o = c - s , i = o - 1 , t >= c && ( a = "right" ) ) , null != i ) { if ( r = e [ l + 2 ] , s == c && n == ( r . insertLeft ? "left" : "right" ) && ( a = n ) , "left" == n && 0 == i ) for ( ; l && e [ l - 2 ] == e [ l - 3 ] && e [ l - 1 ] . insertLeft ; ) r = e [ ( l -= 3 ) + 2 ] , a = "left" ; if ( "right" == n && i == c - s ) for ( ; l < e . length - 3 && e [ l + 3 ] == e [ l + 4 ] && ! e [ l + 5 ] . insertLeft ; ) r = e [ ( l += 3 ) + 2 ] , a = "right" ; break } } return { node : r , start : i , end : o , collapse : a , coverStart : s , coverEnd : c } } function rt ( e , t , n , r ) { var i , o = nt ( t . map , n , r ) , a = o . node , l = o . start , s = o . end , c = o . collapse ; if ( 3 == a . nodeType ) { for ( var u = 0 ; 4 > u ; u ++ ) { for ( ; l && zi ( t . line . text . charAt ( o . coverStart + l ) ) ; ) -- l ; for ( ; o . coverStart + s < o . coverEnd && zi ( t . line . text . charAt ( o . coverStart + s ) ) ; ) ++ s ; if ( xo && 9 > bo && 0 == l && s == o . coverEnd - o . coverStart ) i = a . parentNode . getBoundingClientRect ( ) ; else if ( xo && e . options . lineWrapping ) { var f = qa ( a , l , s ) . getClientRects ( ) ; i = f . length ? f [ "right" == r ? f . length - 1 : 0 ] : qo } else i = qa ( a , l , s ) . getBoundingClientRect ( ) || qo ; if ( i . left || i . right || 0 == l ) break ; s = l , l -= 1 , c = "right" } xo && 11 > bo && ( i = it ( e . display . measure , i ) ) } else { l > 0 && ( c = r = "right" ) ; var f ; i = e . options . lineWrapping && ( f = a . getClientRects ( ) ) . length > 1 ? f [ "right" == r ? f . length - 1 : 0 ] : a . getBoundingClientRect ( ) } if ( xo && 9 > bo && ! l && ( ! i || ! i . left && ! i . right ) ) { var h = a . parentNode . getClientRects ( ) [ 0 ] ; i = h ? { left : h . left , right : h . left + xt ( e . display ) , top : h . top , bottom : h . bottom } : qo } for ( var d = i . top - t . rect . top , p = i . bottom - t . rect . top , m = ( d + p ) / 2 , g = t . view . measure . heights , u = 0 ; u < g . length - 1 && ! ( m < g [ u ] ) ; u ++ ) ; var v = u ? g [ u - 1 ] : 0 , y = g [ u ] , x = { left : ( "right" == c ? i . right : i . left ) - t . rect . left , right : ( "left" == c ? i . left : i . right ) - t . rect . left , top : v , bottom : y } ; return i . left || i . right || ( x . bogus = ! 0 ) , e . options . singleCursorHeightPerLine || ( x . rtop = d , x . rbottom = p ) , x } function it ( e , t ) { if ( ! window . screen || null == screen . logicalXDPI || screen . logicalXDPI == screen . deviceXDPI || ! Qi ( e ) ) return t ; var n = screen . logicalXDPI / screen . deviceXDPI , r = screen . logicalYDPI / screen . deviceYDPI ; return { left : t . left * n , right : t . right * n , top : t . top * r , bottom : t . bottom * r } } function ot ( e ) { if ( e . measure && ( e . measure . cache = { } , e . measure . heights = null , e . rest ) ) for ( var t = 0 ; t < e . rest . length ; t ++ ) e . measure . caches [ t ] = { } } function at ( e ) { e . display . externalMeasure = null , Ui ( e . display . lineMeasure ) ; for ( var t = 0 ; t < e . display . view . length ; t ++ ) ot ( e . display . view [ t ] ) } function lt ( e ) { at ( e ) , e . display . cachedCharWidth = e . display . cachedTextHeight = e . display . cachedPaddingH = null , e . options . lineWrapping || ( e . display . maxLineChanged = ! 0 ) , e . display . lineNumChars = null } function st ( ) { return window . pageXOffset || ( document . documentElement || document . body ) . scrollLeft } function ct ( ) { return window . pageYOffset || ( document . documentElement || document . body ) . scrollTop } function ut ( e , t , n , r ) { if ( t . widgets ) for ( var i = 0 ; i < t . widgets . length ; ++ i ) if ( t . widgets [ i ] . above ) { var o = Lr ( t . widgets [ i ] ) ; n . top += o , n . bottom += o } if ( "line" == r ) return n ; r || ( r = "local" ) ; var a = ri ( t ) ; if ( "local" == r ? a += Ue ( e . display ) : a -= e . display . viewOffset , "page" == r || "window" == r ) { var l = e . display . lineSpace . getBoundingClientRect ( ) ; a += l . top + ( "window" == r ? 0 : ct ( ) ) ; var s = l . left + ( "window" == r ? 0 : st ( ) ) ; n . left += s , n . right += s } return n . top += a , n . bottom += a , n } function ft ( e , t , n ) { if ( "div" == n ) return t ; var r = t . left , i = t . top ; if ( "page" == n ) r -= st ( ) , i -= ct ( ) ; else if ( "local" == n || ! n ) { var o = e . display . sizer . getBoundingClientRect ( ) ; r += o . left , i += o . top } var a = e . display . lineSpace . getBoundingClientRect ( ) ; return { left : r - a . left , top : i - a . top } } function ht ( e , t , n , r , i ) { return r || ( r = Zr ( e . doc , t . line ) ) , ut ( e , r , Je ( e , r , t . ch , i ) , n ) } function dt ( e , t , n , r , i , o ) { function a ( t , a ) { var l = tt ( e , i , t , a ? "right" : "left" , o ) ; return a ? l . left = l . right : l . right = l . left , ut ( e , r , l , n ) } functi
i - n > s && ( i = n + s ) ; var u = e . doc . height + qe ( o ) , f = a > n , h = i > u - a ; if ( l > n ) c . scrollTop = f ? 0 : n ; else if ( i > l + s ) { var d = Math . min ( n , ( h ? u : i ) - s ) ; d != l && ( c . scrollTop = d ) } var p = e . curOp && null != e . curOp . scrollLeft ? e . curOp . scrollLeft : o . scroller . scrollLeft , m = $e ( e ) - ( e . options . fixedGutter ? o . gutters . offsetWidth : 0 ) , g = r - t > m ; return g && ( r = t + m ) , 10 > t ? c . scrollLeft = 0 : p > t ? c . scrollLeft = Math . max ( 0 , t - ( g ? 0 : 10 ) ) : r > m + p - 3 && ( c . scrollLeft = r + ( g ? 0 : 10 ) - m ) , c } function Wn ( e , t , n ) { null == t && null == n || _n ( e ) , null != t && ( e . curOp . scrollLeft = ( null == e . curOp . scrollLeft ? e . doc . scrollLeft : e . curOp . scrollLeft ) + t ) , null != n && ( e . curOp . scrollTop = ( null == e . curOp . scrollTop ? e . doc . scrollTop : e . curOp . scrollTop ) + n ) } function Bn ( e ) { _n ( e ) ; var t = e . getCursor ( ) , n = t , r = t ; e . options . lineWrapping || ( n = t . ch ? Bo ( t . line , t . ch - 1 ) : t , r = Bo ( t . line , t . ch + 1 ) ) , e . curOp . scrollToPos = { from : n , to : r , margin : e . options . cursorScrollMargin , isCursor : ! 0 } } function _n ( e ) { var t = e . curOp . scrollToPos ; if ( t ) { e . curOp . scrollToPos = null ; var n = pt ( e , t . from ) , r = pt ( e , t . to ) , i = Hn ( e , Math . min ( n . left , r . left ) , Math . min ( n . top , r . top ) - t . margin , Math . max ( n . right , r . right ) , Math . max ( n . bottom , r . bottom ) + t . margin ) ; e . scrollTo ( i . scrollLeft , i . scrollTop ) } } function Fn ( e , t , n , r ) { var i , o = e . doc ; null == n && ( n = "add" ) , "smart" == n && ( o . mode . indent ? i = je ( e , t ) : n = "prev" ) ; var a = e . options . tabSize , l = Zr ( o , t ) , s = Fa ( l . text , null , a ) ; l . stateAfter && ( l . stateAfter = null ) ; var c , u = l . text . match ( /^\s*/ ) [ 0 ] ; if ( r || /\S/ . test ( l . text ) ) { if ( "smart" == n && ( c = o . mode . indent ( i , l . text . slice ( u . length ) , l . text ) , c == Ha || c > 150 ) ) { if ( ! r ) return ; n = "prev" } } else c = 0 , n = "not" ; "prev" == n ? c = t > o . first ? Fa ( Zr ( o , t - 1 ) . text , null , a ) : 0 : "add" == n ? c = s + e . options . indentUnit : "subtract" == n ? c = s - e . options . indentUnit : "number" == typeof n && ( c = s + n ) , c = Math . max ( 0 , c ) ; var f = "" , h = 0 ; if ( e . options . indentWithTabs ) for ( var d = Math . floor ( c / a ) ; d ; -- d ) h += a , f += "\t" ; if ( c > h && ( f += Oi ( c - h ) ) , f != u ) return In ( o , f , Bo ( t , 0 ) , Bo ( t , u . length ) , "+input" ) , l . stateAfter = null , ! 0 ; for ( var d = 0 ; d < o . sel . ranges . length ; d ++ ) { var p = o . sel . ranges [ d ] ; if ( p . head . line == t && p . head . ch < u . length ) { var h = Bo ( t , u . length ) ; ke ( o , d , new fe ( h , h ) ) ; break } } } function zn ( e , t , n , r ) { var i = t , o = t ; return "number" == typeof t ? o = Zr ( e , pe ( e , t ) ) : i = ti ( t ) , null == i ? null : ( r ( o , i ) && e . cm && Ht ( e . cm , i , n ) , o ) } function jn ( e , t ) { for ( var n = e . doc . sel . ranges , r = [ ] , i = 0 ; i < n . length ; i ++ ) { for ( var o = t ( n [ i ] ) ; r . length && _o ( o . from , Ii ( r ) . to ) <= 0 ; ) { var a = r . pop ( ) ; if ( _o ( a . from , o . from ) < 0 ) { o . from = a . from ; break } } r . push ( o ) } At ( e , function ( ) { for ( var t = r . length - 1 ; t >= 0 ; t -- ) In ( e . doc , "" , r [ t ] . from , r [ t ] . to , "+delete" ) ; Bn ( e ) } ) } function Un ( e , t , n , r , i ) { function o ( ) { var t = l + n ; return ! ( t < e . first || t >= e . first + e . size ) && ( l = t , u = Zr ( e , t ) ) } function a ( e ) { var t = ( i ? fo : ho ) ( u , s , n , ! 0 ) ; if ( null == t ) { if ( e || ! o ( ) ) return ! 1 ; s = i ? ( 0 > n ? io : ro ) ( u ) : 0 > n ? u . text . length : 0 } else s = t ; return ! 0 } var l = t . line , s = t . ch , c = n , u = Zr ( e , l ) ; if ( "char" == r ) a ( ) ; else if ( "column" == r ) a ( ! 0 ) ; else if ( "word" == r || "group" == r ) for ( var f = null , h = "group" == r , d = e . cm && e . cm . getHelper ( t , "wordChars" ) , p = ! 0 ; ! ( 0 > n ) || a ( ! p ) ; p = ! 1 ) { var m = u . text . charAt ( s ) || "\n" , g = _i ( m , d ) ? "w" : h && "\n" == m ? "n" : ! h || /\s/ . test ( m ) ? null : "p" ; if ( ! h || p || g || ( g = "s" ) , f && f != g ) { 0 > n && ( n = 1 , a ( ) ) ; break } if ( g && ( f = g ) , n > 0 && ! a ( ! p ) ) break } var v = Ie ( e , Bo ( l , s ) , t , c , ! 0 ) ; return _o ( t , v ) || ( v . hitSide = ! 0 ) , v } function qn ( e , t , n , r ) { var i , o = e . doc , a = t . left ; if ( "page" == r ) { var l = Math . min ( e . display . wrapper . clientHeight , window . innerHeight || document . documentElement . clientHeight ) ; i = t . top + n * ( l - ( 0 > n ? 1.5 : . 5 ) * yt ( e . display ) ) } else "line" == r && ( i = n > 0 ? t . bottom + 3 : t . top - 3 ) ; for ( ; ; ) { var s = gt ( e , a , i ) ; if ( ! s . outside ) break ; if ( 0 > n ? 0 >= i : i >= o . height ) { s . hitSide = ! 0 ; break } i += 5 * n } return s } function Gn ( t , n , r , i ) { e . defaults [ t ] = n , r && ( ta [ t ] = i ? function ( e , t , n ) { n != na && r ( e , t , n ) } : r ) } function Yn ( e ) { for ( var t , n , r , i , o = e . split ( /-(?!$)/ ) , e = o [ o . length - 1 ] , a = 0 ; a < o . length - 1 ; a ++ ) { var l = o [ a ] ; if ( /^(cmd|meta|m)$/i . test ( l ) ) i = ! 0 ; else if ( /^a(lt)?$/i . test ( l ) ) t = ! 0 ; else if ( /^(c|ctrl|control)$/i . test ( l ) ) n = ! 0 ; else { if ( ! /^s(hift)$/i . test ( l ) ) throw new Error ( "Unrecognized modifier name: " + l ) ; r = ! 0 } } return t && ( e = "Alt-" + e ) , n && ( e = "Ctrl-" + e ) , i && ( e = "Cmd-" + e ) , r && ( e = "Shift-" + e ) , e } function $n ( e ) { return "string" == typeof e ? fa [ e ] : e } function Vn ( e , t , n , r , i ) { if ( r && r . shared ) return Kn ( e , t , n , r , i ) ; if ( e . cm && ! e . cm . curOp ) return Et ( e . cm , Vn ) ( e , t , n , r , i ) ; var o = new va ( e , i ) , a = _o ( t , n ) ; if ( r && Wi ( r , o , ! 1 ) , a > 0 || 0 == a && o . clearWhenEmpty !== ! 1 ) return o ; if ( o . repl
} , zeroWidthHack : function ( ) { var e = Eo && ! To ? "12px" : "18px" ; this . horiz . style . height = this . vert . style . width = e , this . horiz . style . pointerEvents = this . vert . style . pointerEvents = "none" , this . disableHoriz = new Ei , this . disableVert = new Ei } , enableZeroWidthBar : function ( e , t ) { function n ( ) { var r = e . getBoundingClientRect ( ) , i = document . elementFromPoint ( r . left + 1 , r . bottom - 1 ) ; i != e ? e . style . pointerEvents = "none" : t . set ( 1e3 , n ) } e . style . pointerEvents = "auto" , t . set ( 1e3 , n ) } , clear : function ( ) { var e = this . horiz . parentNode ; e . removeChild ( this . horiz ) , e . removeChild ( this . vert ) } } , m . prototype ) , g . prototype = Wi ( { update : function ( ) { return { bottom : 0 , right : 0 } } , setScrollLeft : function ( ) { } , setScrollTop : function ( ) { } , clear : function ( ) { } } , g . prototype ) , e . scrollbarModel = { native : m , null : g } , L . prototype . signal = function ( e , t ) { Ni ( e , t ) && this . events . push ( arguments ) } , L . prototype . finish = function ( ) { for ( var e = 0 ; e < this . events . length ; e ++ ) Pa . apply ( null , this . events [ e ] ) } ; var Bo = e . Pos = function ( e , t ) { return this instanceof Bo ? ( this . line = e , void ( this . ch = t ) ) : new Bo ( e , t ) } , _o = e . cmpPos = function ( e , t ) { return e . line - t . line || e . ch - t . ch } , Fo = null ; ne . prototype = Wi ( { init : function ( e ) { function t ( e ) { if ( ! Ti ( r , e ) ) { if ( r . somethingSelected ( ) ) Fo = { lineWise : ! 1 , text : r . getSelections ( ) } , n . inaccurateSelection && ( n . prevInput = "" , n . inaccurateSelection = ! 1 , o . value = Fo . text . join ( "\n" ) , Ua ( o ) ) ; else { if ( ! r . options . lineWiseCopyCut ) return ; var t = ee ( r ) ; Fo = { lineWise : ! 0 , text : t . text } , "cut" == e . type ? r . setSelections ( t . ranges , null , Wa ) : ( n . prevInput = "" , o . value = t . text . join ( "\n" ) , Ua ( o ) ) } "cut" == e . type && ( r . state . cutIncoming = ! 0 ) } } var n = this , r = this . cm , i = this . wrapper = re ( ) , o = this . textarea = i . firstChild ; e . wrapper . insertBefore ( i , e . wrapper . firstChild ) , No && ( o . style . width = "0px" ) , Ea ( o , "input" , function ( ) { xo && bo >= 9 && n . hasSelection && ( n . hasSelection = null ) , n . poll ( ) } ) , Ea ( o , "paste" , function ( e ) { Ti ( r , e ) || J ( e , r ) || ( r . state . pasteIncoming = ! 0 , n . fastPoll ( ) ) } ) , Ea ( o , "cut" , t ) , Ea ( o , "copy" , t ) , Ea ( e . scroller , "paste" , function ( t ) { Gt ( e , t ) || Ti ( r , t ) || ( r . state . pasteIncoming = ! 0 , n . focus ( ) ) } ) , Ea ( e . lineSpace , "selectstart" , function ( t ) { Gt ( e , t ) || Ma ( t ) } ) , Ea ( o , "compositionstart" , function ( ) { var e = r . getCursor ( "from" ) ; n . composing && n . composing . range . clear ( ) , n . composing = { start : e , range : r . markText ( e , r . getCursor ( "to" ) , { className : "CodeMirror-composing" } ) } } ) , Ea ( o , "compositionend" , function ( ) { n . composing && ( n . poll ( ) , n . composing . range . clear ( ) , n . composing = null ) } ) } , prepareSelection : function ( ) { var e = this . cm , t = e . display , n = e . doc , r = De ( e ) ; if ( e . options . moveInputWithCursor ) { var i = dt ( e , n . sel . primary ( ) . head , "div" ) , o = t . wrapper . getBoundingClientRect ( ) , a = t . lineDiv . getBoundingClientRect ( ) ; r . teTop = Math . max ( 0 , Math . min ( t . wrapper . clientHeight - 10 , i . top + a . top - o . top ) ) , r . teLeft = Math . max ( 0 , Math . min ( t . wrapper . clientWidth - 10 , i . left + a . left - o . left ) ) } return r } , showSelection : function ( e ) { var t = this . cm , n = t . display ; qi ( n . cursorDiv , e . cursors ) , qi ( n . selectionDiv , e . selection ) , null != e . teTop && ( this . wrapper . style . top = e . teTop + "px" , this . wrapper . style . left = e . teLeft + "px" ) } , reset : function ( e ) { if ( ! this . contextMenuPending ) { var t , n , r = this . cm , i = r . doc ; if ( r . somethingSelected ( ) ) { this . prevInput = "" ; var o = i . sel . primary ( ) ; t = rl && ( o . to ( ) . line - o . from ( ) . line > 100 || ( n = r . getSelection ( ) ) . length > 1e3 ) ; var a = t ? "-" : n || r . getSelection ( ) ; this . textarea . value = a , r . state . focused && Ua ( this . textarea ) , xo && bo >= 9 && ( this . hasSelection = a ) } else e || ( this . prevInput = this . textarea . value = "" , xo && bo >= 9 && ( this . hasSelection = null ) ) ; this . inaccurateSelection = t } } , getField : function ( ) { return this . textarea } , supportsTouch : function ( ) { return ! 1 } , focus : function ( ) { if ( "nocursor" != this . cm . options . readOnly && ( ! Ao || Gi ( ) != this . textarea ) ) try { this . textarea . focus ( ) } catch ( e ) { } } , blur : function ( ) { this . textarea . blur ( ) } , resetPosition : function ( ) { this . wrapper . style . top = this . wrapper . style . left = 0 } , receivedFocus : function ( ) { this . slowPoll ( ) } , slowPoll : function ( ) { var e = this ; e . pollingFast || e . polling . set ( this . cm . options . pollInterval , function ( ) { e . poll ( ) , e . cm . state . focused && e . slowPoll ( ) } ) } , fastPoll : function ( ) { function e ( ) { var r = n . poll ( ) ; r || t ? ( n . pollingFast = ! 1 , n . slowPoll ( ) ) : ( t = ! 0 , n . polling . set ( 60 , e ) ) } var t = ! 1 , n = this ; n . pollingFast = ! 0 , n . polling . set ( 20 , e ) } , poll : function ( ) { var e = this . cm , t = this . textarea , n = this . prevInput ; if ( this . contextMenuPending || ! e . state . focused || nl
var a = Zr ( e . doc , i . line - 1 ) . text ; a && e . replaceRange ( o . charAt ( 0 ) + e . doc . lineSeparator ( ) + a . charAt ( a . length - 1 ) , Bo ( i . line - 1 , a . length - 1 ) , Bo ( i . line , 1 ) , "+transpose" ) } n . push ( new fe ( i , i ) ) } e . setSelections ( n ) } ) } , newlineAndIndent : function ( e ) { At ( e , function ( ) { for ( var t = e . listSelections ( ) . length , n = 0 ; t > n ; n ++ ) { var r = e . listSelections ( ) [ n ] ; e . replaceRange ( e . doc . lineSeparator ( ) , r . anchor , r . head , "+input" ) , e . indentLine ( r . from ( ) . line + 1 , null , ! 0 ) } Bn ( e ) } ) } , openLine : function ( e ) { e . replaceSelection ( "\n" , "start" ) } , toggleOverwrite : function ( e ) { e . toggleOverwrite ( ) } } , fa = e . keyMap = { } ; fa . basic = { Left : "goCharLeft" , Right : "goCharRight" , Up : "goLineUp" , Down : "goLineDown" , End : "goLineEnd" , Home : "goLineStartSmart" , PageUp : "goPageUp" , PageDown : "goPageDown" , Delete : "delCharAfter" , Backspace : "delCharBefore" , "Shift-Backspace" : "delCharBefore" , Tab : "defaultTab" , "Shift-Tab" : "indentAuto" , Enter : "newlineAndIndent" , Insert : "toggleOverwrite" , Esc : "singleSelection" } , fa . pcDefault = { "Ctrl-A" : "selectAll" , "Ctrl-D" : "deleteLine" , "Ctrl-Z" : "undo" , "Shift-Ctrl-Z" : "redo" , "Ctrl-Y" : "redo" , "Ctrl-Home" : "goDocStart" , "Ctrl-End" : "goDocEnd" , "Ctrl-Up" : "goLineUp" , "Ctrl-Down" : "goLineDown" , "Ctrl-Left" : "goGroupLeft" , "Ctrl-Right" : "goGroupRight" , "Alt-Left" : "goLineStart" , "Alt-Right" : "goLineEnd" , "Ctrl-Backspace" : "delGroupBefore" , "Ctrl-Delete" : "delGroupAfter" , "Ctrl-S" : "save" , "Ctrl-F" : "find" , "Ctrl-G" : "findNext" , "Shift-Ctrl-G" : "findPrev" , "Shift-Ctrl-F" : "replace" , "Shift-Ctrl-R" : "replaceAll" , "Ctrl-[" : "indentLess" , "Ctrl-]" : "indentMore" , "Ctrl-U" : "undoSelection" , "Shift-Ctrl-U" : "redoSelection" , "Alt-U" : "redoSelection" , fallthrough : "basic" } , fa . emacsy = { "Ctrl-F" : "goCharRight" , "Ctrl-B" : "goCharLeft" , "Ctrl-P" : "goLineUp" , "Ctrl-N" : "goLineDown" , "Alt-F" : "goWordRight" , "Alt-B" : "goWordLeft" , "Ctrl-A" : "goLineStart" , "Ctrl-E" : "goLineEnd" , "Ctrl-V" : "goPageDown" , "Shift-Ctrl-V" : "goPageUp" , "Ctrl-D" : "delCharAfter" , "Ctrl-H" : "delCharBefore" , "Alt-D" : "delWordAfter" , "Alt-Backspace" : "delWordBefore" , "Ctrl-K" : "killLine" , "Ctrl-T" : "transposeChars" , "Ctrl-O" : "openLine" } , fa . macDefault = { "Cmd-A" : "selectAll" , "Cmd-D" : "deleteLine" , "Cmd-Z" : "undo" , "Shift-Cmd-Z" : "redo" , "Cmd-Y" : "redo" , "Cmd-Home" : "goDocStart" , "Cmd-Up" : "goDocStart" , "Cmd-End" : "goDocEnd" , "Cmd-Down" : "goDocEnd" , "Alt-Left" : "goGroupLeft" , "Alt-Right" : "goGroupRight" , "Cmd-Left" : "goLineLeft" , "Cmd-Right" : "goLineRight" , "Alt-Backspace" : "delGroupBefore" , "Ctrl-Alt-Backspace" : "delGroupAfter" , "Alt-Delete" : "delGroupAfter" , "Cmd-S" : "save" , "Cmd-F" : "find" , "Cmd-G" : "findNext" , "Shift-Cmd-G" : "findPrev" , "Cmd-Alt-F" : "replace" , "Shift-Cmd-Alt-F" : "replaceAll" , "Cmd-[" : "indentLess" , "Cmd-]" : "indentMore" , "Cmd-Backspace" : "delWrappedLineLeft" , "Cmd-Delete" : "delWrappedLineRight" , "Cmd-U" : "undoSelection" , "Shift-Cmd-U" : "redoSelection" , "Ctrl-Up" : "goDocStart" , "Ctrl-Down" : "goDocEnd" , fallthrough : [ "basic" , "emacsy" ] } , fa . default = Eo ? fa . macDefault : fa . pcDefault , e . normalizeKeyMap = function ( e ) { var t = { } ; for ( var n in e ) if ( e . hasOwnProperty ( n ) ) { var r = e [ n ] ; if ( /^(name|fallthrough|(de|at)tach)$/ . test ( n ) ) continue ; if ( "..." == r ) { delete e [ n ] ; continue } for ( var i = Ri ( n . split ( " " ) , Yn ) , o = 0 ; o < i . length ; o ++ ) { var a , l ; o == i . length - 1 ? ( l = i . join ( " " ) , a = r ) : ( l = i . slice ( 0 , o + 1 ) . join ( " " ) , a = "..." ) ; var s = t [ l ] ; if ( s ) { if ( s != a ) throw new Error ( "Inconsistent bindings for " + l ) } else t [ l ] = a } delete e [ n ] } for ( var c in t ) e [ c ] = t [ c ] ; return e } ; var ha = e . lookupKey = function ( e , t , n , r ) { t = $n ( t ) ; var i = t . call ? t . call ( e , r ) : t [ e ] ; if ( i === ! 1 ) return "nothing" ; if ( "..." === i ) return "multi" ; if ( null != i && n ( i ) ) return "handled" ; if ( t . fallthrough ) { if ( "[object Array]" != Object . prototype . toString . call ( t . fallthrough ) ) return ha ( e , t . fallthrough , n , r ) ; for ( var o = 0 ; o < t . fallthrough . length ; o ++ ) { var a = ha ( e , t . fallthrough [ o ] , n , r ) ; if ( a ) return a } } } , da = e . isModifierKey = function ( e ) { var t = "string" == typeof e ? e : ol [ e . keyCode ] ; return "Ctrl" == t || "Alt" == t || "Shift" == t || "Mod" == t } , pa = e . keyName = function ( e , t ) { if ( Co && 34 == e . keyCode && e . char ) return ! 1 ; var n = ol [ e . keyCode ] , r = n ; return null != r && ! e . altGraphKey && ( e . altKey && "Alt" != n && ( r = "Alt-" + r ) , ( Ro ? e . metaKey : e . ctrlKey ) && "Ctrl" != n && ( r = "Ctrl-" + r ) , ( Ro ? e . ctrlKey : e . metaKey ) && "Cmd" != n && ( r = "Cmd-" + r ) , ! t && e . shiftKey && "Shift" != n && ( r = "Shift-" + r ) , r ) } ; e . fromTextArea = function ( t , n ) { function r ( ) { t . value = c . getValue ( ) } if ( n = n ? Wi ( n ) : { } , n . value = t . value , ! n . t
o . list = null ) : o . indentation > 0 ? o . list = null : o . list = ! 1 ) ; var f = null ; if ( o . indentationDiff >= 4 ) return t . skipToEnd ( ) , c || a ( o . prevLine ) ? ( o . indentation -= 4 , o . indentedCode = ! 0 , S . code ) : null ; if ( t . eatSpace ( ) ) return null ; if ( ( f = t . match ( A ) ) && f [ 1 ] . length <= 6 ) return o . header = f [ 1 ] . length , n . highlightFormatting && ( o . formatting = "header" ) , o . f = o . inline , h ( o ) ; if ( ! ( a ( o . prevLine ) || o . quote || s || c ) && ( f = t . match ( E ) ) ) return o . header = "=" == f [ 0 ] . charAt ( 0 ) ? 1 : 2 , n . highlightFormatting && ( o . formatting = "header" ) , o . f = o . inline , h ( o ) ; if ( t . eat ( ">" ) ) return o . quote = l ? 1 : o . quote + 1 , n . highlightFormatting && ( o . formatting = "quote" ) , t . eatSpace ( ) , h ( o ) ; if ( "[" === t . peek ( ) ) return i ( t , o , y ) ; if ( t . match ( L , ! 0 ) ) return o . hr = ! 0 , S . hr ; if ( ( a ( o . prevLine ) || s ) && ( t . match ( T , ! 1 ) || t . match ( M , ! 1 ) ) ) { var d = null ; for ( t . match ( T , ! 0 ) ? d = "ul" : ( t . match ( M , ! 0 ) , d = "ol" ) , o . indentation = t . column ( ) + t . current ( ) . length , o . list = ! 0 ; o . listStack && t . column ( ) < o . listStack [ o . listStack . length - 1 ] ; ) o . listStack . pop ( ) ; return o . listStack . push ( o . indentation ) , n . taskLists && t . match ( N , ! 1 ) && ( o . taskList = ! 0 ) , o . f = o . inline , n . highlightFormatting && ( o . formatting = [ "list" , "list-" + d ] ) , h ( o ) } return n . fencedCodeBlocks && ( f = t . match ( I , ! 0 ) ) ? ( o . fencedChars = f [ 1 ] , o . localMode = r ( f [ 2 ] ) , o . localMode && ( o . localState = e . startState ( o . localMode ) ) , o . f = o . block = u , n . highlightFormatting && ( o . formatting = "code-block" ) , o . code = - 1 , h ( o ) ) : i ( t , o , o . inline ) } function c ( t , n ) { var r = w . token ( t , n . htmlState ) ; if ( ! k ) { var i = e . innerMode ( w , n . htmlState ) ; ( "xml" == i . mode . name && null === i . state . tagStart && ! i . state . context && i . state . tokenize . isInText || n . md _inside && t . current ( ) . indexOf ( ">" ) > - 1 ) && ( n . f = p , n . block = s , n . htmlState = null ) } return r } function u ( e , t ) { return t . fencedChars && e . match ( t . fencedChars , ! 1 ) ? ( t . localMode = t . localState = null , t . f = t . block = f , null ) : t . localMode ? t . localMode . token ( e , t . localState ) : ( e . skipToEnd ( ) , S . code ) } function f ( e , t ) { e . match ( t . fencedChars ) , t . block = s , t . f = p , t . fencedChars = null , n . highlightFormatting && ( t . formatting = "code-block" ) , t . code = 1 ; var r = h ( t ) ; return t . code = 0 , r } function h ( e ) { var t = [ ] ; if ( e . formatting ) { t . push ( S . formatting ) , "string" == typeof e . formatting && ( e . formatting = [ e . formatting ] ) ; for ( var r = 0 ; r < e . formatting . length ; r ++ ) t . push ( S . formatting + "-" + e . formatting [ r ] ) , "header" === e . formatting [ r ] && t . push ( S . formatting + "-" + e . formatting [ r ] + "-" + e . header ) , "quote" === e . formatting [ r ] && ( ! n . maxBlockquoteDepth || n . maxBlockquoteDepth >= e . quote ? t . push ( S . formatting + "-" + e . formatting [ r ] + "-" + e . quote ) : t . push ( "error" ) ) } if ( e . taskOpen ) return t . push ( "meta" ) , t . length ? t . join ( " " ) : null ; if ( e . taskClosed ) return t . push ( "property" ) , t . length ? t . join ( " " ) : null ; if ( e . linkHref ? t . push ( S . linkHref , "url" ) : ( e . strong && t . push ( S . strong ) , e . em && t . push ( S . em ) , e . strikethrough && t . push ( S . strikethrough ) , e . linkText && t . push ( S . linkText ) , e . code && t . push ( S . code ) ) , e . header && t . push ( S . header , S . header + "-" + e . header ) , e . quote && ( t . push ( S . quote ) , ! n . maxBlockquoteDepth || n . maxBlockquoteDepth >= e . quote ? t . push ( S . quote + "-" + e . quote ) : t . push ( S . quote + "-" + n . maxBlockquoteDepth ) ) , e . list !== ! 1 ) { var i = ( e . listStack . length - 1 ) % 3 ; i ? 1 === i ? t . push ( S . list2 ) : t . push ( S . list3 ) : t . push ( S . list1 ) } return e . trailingSpaceNewLine ? t . push ( "trailing-space-new-line" ) : e . trailingSpace && t . push ( "trailing-space-" + ( e . trailingSpace % 2 ? "a" : "b" ) ) , t . length ? t . join ( " " ) : null } function d ( e , t ) { return e . match ( O , ! 0 ) ? h ( t ) : void 0 } function p ( t , r ) { var i = r . text ( t , r ) ; if ( "undefined" != typeof i ) return i ; if ( r . list ) return r . list = null , h ( r ) ; if ( r . taskList ) { var a = "x" !== t . match ( N , ! 0 ) [ 1 ] ; return a ? r . taskOpen = ! 0 : r . taskClosed = ! 0 , n . highlightFormatting && ( r . formatting = "task" ) , r . taskList = ! 1 , h ( r ) } if ( r . taskOpen = ! 1 , r . taskClosed = ! 1 , r . header && t . match ( /^#+$/ , ! 0 ) ) return n . highlightFormatting && ( r . formatting = "header" ) , h ( r ) ; var l = t . sol ( ) , s = t . next ( ) ; if ( r . linkTitle ) { r . linkTitle = ! 1 ; var u = s ; "(" === s && ( u = ")" ) , u = ( u + "" ) . replace ( /([.?*+^$[\]\\(){}|-])/g , "\\$1" ) ; var f = "^\\s*(?:[^" + u + "\\\\]+|\\\\\\\\|\\\\.)" + u ; if ( t . match ( new RegExp ( f ) , ! 0 ) ) return S . linkHref } if ( "`" === s ) { var d = r . formatting ; n . highlightFormatting && ( r . formatting = "code" ) , t . eatWhile ( "`" ) ; var p = t . current ( ) . length ; if ( 0 == r . code ) return r . code = p , h ( r ) ; if ( p == r . code ) { var v = h ( r ) ; return r . code = 0 , v } return r . formatting = d , h ( r ) } if ( r . code ) return h ( r ) ; if ( "\\" === s && ( t . next ( ) , n . highlightFormatting ) ) { var y = h ( r ) , x = S . formatting + "-escape" ; return
d . paragraph = c ( d . paragraph ) ( "hr" , d . hr ) ( "heading" , d . heading ) ( "lheading" , d . lheading ) ( "blockquote" , d . blockquote ) ( "tag" , "<" + d . _tag ) ( "def" , d . def ) ( ) , d . normal = f ( { } , d ) , d . gfm = f ( { } , d . normal , { fences : /^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/ , paragraph : /^/ , heading : /^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/ } ) , d . gfm . paragraph = c ( d . paragraph ) ( "(?!" , "(?!" + d . gfm . fences . source . replace ( "\\1" , "\\2" ) + "|" + d . list . source . replace ( "\\1" , "\\3" ) + "|" ) ( ) , d . tables = f ( { } , d . gfm , { nptable : /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/ , table : /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/ } ) , t . rules = d , t . lex = function ( e , n ) { var r = new t ( n ) ; return r . lex ( e ) } , t . prototype . lex = function ( e ) { return e = e . replace ( /\r\n|\r/g , "\n" ) . replace ( /\t/g , " " ) . replace ( /\u00a0/g , " " ) . replace ( /\u2424/g , "\n" ) , this . token ( e , ! 0 ) } , t . prototype . token = function ( e , t , n ) { for ( var r , i , o , a , l , s , c , u , f , e = e . replace ( /^ +$/gm , "" ) ; e ; ) if ( ( o = this . rules . newline . exec ( e ) ) && ( e = e . substring ( o [ 0 ] . length ) , o [ 0 ] . length > 1 && this . tokens . push ( { type : "space" } ) ) , o = this . rules . code . exec ( e ) ) e = e . substring ( o [ 0 ] . length ) , o = o [ 0 ] . replace ( /^ {4}/gm , "" ) , this . tokens . push ( { type : "code" , text : this . options . pedantic ? o : o . replace ( /\n+$/ , "" ) } ) ; else if ( o = this . rules . fences . exec ( e ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . push ( { type : "code" , lang : o [ 2 ] , text : o [ 3 ] || "" } ) ; else if ( o = this . rules . heading . exec ( e ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . push ( { type : "heading" , depth : o [ 1 ] . length , text : o [ 2 ] } ) ; else if ( t && ( o = this . rules . nptable . exec ( e ) ) ) { for ( e = e . substring ( o [ 0 ] . length ) , s = { type : "table" , header : o [ 1 ] . replace ( /^ *| *\| *$/g , "" ) . split ( / *\| */ ) , align : o [ 2 ] . replace ( /^ *|\| *$/g , "" ) . split ( / *\| */ ) , cells : o [ 3 ] . replace ( /\n$/ , "" ) . split ( "\n" ) } , u = 0 ; u < s . align . length ; u ++ ) / ^ * - + : * $ / . test ( s . align [ u ] ) ? s . align [ u ] = "right" : /^ *:-+: *$/ . test ( s . align [ u ] ) ? s . align [ u ] = "center" : /^ *:-+ *$/ . test ( s . align [ u ] ) ? s . align [ u ] = "left" : s . align [ u ] = null ; for ( u = 0 ; u < s . cells . length ; u ++ ) s . cells [ u ] = s . cells [ u ] . split ( / *\| */ ) ; this . tokens . push ( s ) } else if ( o = this . rules . lheading . exec ( e ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . push ( { type : "heading" , depth : "=" === o [ 2 ] ? 1 : 2 , text : o [ 1 ] } ) ; else if ( o = this . rules . hr . exec ( e ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . push ( { type : "hr" } ) ; else if ( o = this . rules . blockquote . exec ( e ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . push ( { type : "blockquote_start" } ) , o = o [ 0 ] . replace ( /^ *> ?/gm , "" ) , this . token ( o , t , ! 0 ) , this . tokens . push ( { type : "blockquote_end" } ) ; else if ( o = this . rules . list . exec ( e ) ) { for ( e = e . substring ( o [ 0 ] . length ) , a = o [ 2 ] , this . tokens . push ( { type : "list_start" , ordered : a . length > 1 } ) , o = o [ 0 ] . match ( this . rules . item ) , r = ! 1 , f = o . length , u = 0 ; f > u ; u ++ ) s = o [ u ] , c = s . length , s = s . replace ( /^ *([*+-]|\d+\.) +/ , "" ) , ~ s . indexOf ( "\n " ) && ( c -= s . length , s = this . options . pedantic ? s . replace ( /^ {1,4}/gm , "" ) : s . replace ( new RegExp ( "^ {1," + c + "}" , "gm" ) , "" ) ) , this . options . smartLists && u !== f - 1 && ( l = d . bullet . exec ( o [ u + 1 ] ) [ 0 ] , a === l || a . length > 1 && l . length > 1 || ( e = o . slice ( u + 1 ) . join ( "\n" ) + e , u = f - 1 ) ) , i = r || /\n\n(?!\s*$)/ . test ( s ) , u !== f - 1 && ( r = "\n" === s . charAt ( s . length - 1 ) , i || ( i = r ) ) , this . tokens . push ( { type : i ? "loose_item_start" : "list_item_start" } ) , this . token ( s , ! 1 , n ) , this . tokens . push ( { type : "list_item_end" } ) ; this . tokens . push ( { type : "list_end" } ) } else if ( o = this . rules . html . exec ( e ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . push ( { type : this . options . sanitize ? "paragraph" : "html" , pre : ! this . options . sanitizer && ( "pre" === o [ 1 ] || "script" === o [ 1 ] || "style" === o [ 1 ] ) , text : o [ 0 ] } ) ; else if ( ! n && t && ( o = this . rules . def . exec ( e ) ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . links [ o [ 1 ] . toLowerCase ( ) ] = { href : o [ 2 ] , title : o [ 3 ] } ; else if ( t && ( o = this . rules . table . exec ( e ) ) ) { for ( e = e . substring ( o [ 0 ] . length ) , s = { type : "table" , header : o [ 1 ] . replace ( /^ *| *\| *$/g , "" ) . split ( / *\| */ ) , align : o [ 2 ] . replace ( /^ *|\| *$/g , "" ) . split ( / *\| */ ) , cells : o [ 3 ] . replace ( /(?: *\| *)?\n$/ , "" ) . split ( "\n" ) } , u = 0 ; u < s . align . length ; u ++ ) / ^ * - + : * $ / . test ( s . align [ u ] ) ? s . align [ u ] = "right" : /^ *:-+: *$/ . test ( s . align [ u ] ) ? s . align [ u ] = "center" : /^ *:-+ *$/ . test ( s . align [ u ] ) ? s . align [ u ] = "left" : s . align [ u ] = null ; for ( u = 0 ; u < s . cells . length ; u ++ ) s . cells [ u ] = s . cells [ u ] . replace ( /^ *\| *| *\| *$/g , "" ) . split ( / *\| */ ) ; this . tokens . push ( s ) } else if ( t && ( o = this . rules . paragraph . exec ( e ) ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . push ( { type : " parag
return this . parent . markdown ( e ) } ) , e . parsingConfig = H ( { highlightFormatting : ! 0 } , e . parsingConfig || { } ) , e . insertTexts = H ( { } , X , e . insertTexts || { } ) , e . promptTexts = Z , e . blockStyles = H ( { } , J , e . blockStyles || { } ) , e . shortcuts = H ( { } , G , e . shortcuts || { } ) , void 0 != e . autosave && void 0 != e . autosave . unique _id && "" != e . autosave . unique _id && ( e . autosave . uniqueId = e . autosave . unique _id ) , this . options = e , this . render ( ) , ! e . initialValue || this . options . autosave && this . options . autosave . foundSavedValue === ! 0 || this . value ( e . initialValue ) } function _ ( ) { if ( "object" != typeof localStorage ) return ! 1 ; try { localStorage . setItem ( "smde_localStorage" , 1 ) , localStorage . removeItem ( "smde_localStorage" ) } catch ( e ) { return ! 1 } return ! 0 } var F = e ( "codemirror" ) ; e ( "codemirror/addon/edit/continuelist.js" ) , e ( "./codemirror/tablist" ) , e ( "codemirror/addon/display/fullscreen.js" ) , e ( "codemirror/mode/markdown/markdown.js" ) , e ( "codemirror/addon/mode/overlay.js" ) , e ( "codemirror/addon/display/placeholder.js" ) , e ( "codemirror/addon/selection/mark-selection.js" ) , e ( "codemirror/mode/gfm/gfm.js" ) , e ( "codemirror/mode/xml/xml.js" ) ; var z = e ( "codemirror-spell-checker" ) , j = e ( "marked" ) , U = /Mac/ . test ( navigator . platform ) , q = { toggleBold : c , toggleItalic : u , drawLink : k , toggleHeadingSmaller : p , toggleHeadingBigger : m , drawImage : S , toggleBlockquote : d , toggleOrderedList : b , toggleUnorderedList : x , toggleCodeBlock : h , togglePreview : A , toggleStrikethrough : f , toggleHeading1 : g , toggleHeading2 : v , toggleHeading3 : y , cleanBlock : w , drawTable : C , drawHorizontalRule : L , undo : T , redo : M , toggleSideBySide : N , toggleFullScreen : s } , G = { toggleBold : "Cmd-B" , toggleItalic : "Cmd-I" , drawLink : "Cmd-K" , toggleHeadingSmaller : "Cmd-H" , toggleHeadingBigger : "Shift-Cmd-H" , cleanBlock : "Cmd-E" , drawImage : "Cmd-Alt-I" , toggleBlockquote : "Cmd-'" , toggleOrderedList : "Cmd-Alt-L" , toggleUnorderedList : "Cmd-L" , toggleCodeBlock : "Cmd-Alt-C" , togglePreview : "Cmd-P" , toggleSideBySide : "F9" , toggleFullScreen : "F11" } , Y = function ( e ) { for ( var t in q ) if ( q [ t ] === e ) return t ; return null } , $ = function ( ) { var e = ! 1 ; return function ( t ) { ( /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i . test ( t ) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i . test ( t . substr ( 0 , 4 ) ) ) && ( e = ! 0 ) } ( navigator . userAgent || navigator . vendor || window . opera ) , e } , V = "" , K = { bold : { name : "bold" , action : c , className : "fa fa-bold" , title : "Bold" , default : ! 0 } , italic : { name : "italic" , action : u ,
var r = e ( "./oop" ) , i = function ( ) { var t , n , e = { MODIFIER _KEYS : { 16 : "Shift" , 17 : "Ctrl" , 18 : "Alt" , 224 : "Meta" } , KEY _MODS : { ctrl : 1 , alt : 2 , option : 2 , shift : 4 , super : 8 , meta : 8 , command : 8 , cmd : 8 } , FUNCTION _KEYS : { 8 : "Backspace" , 9 : "Tab" , 13 : "Return" , 19 : "Pause" , 27 : "Esc" , 32 : "Space" , 33 : "PageUp" , 34 : "PageDown" , 35 : "End" , 36 : "Home" , 37 : "Left" , 38 : "Up" , 39 : "Right" , 40 : "Down" , 44 : "Print" , 45 : "Insert" , 46 : "Delete" , 96 : "Numpad0" , 97 : "Numpad1" , 98 : "Numpad2" , 99 : "Numpad3" , 100 : "Numpad4" , 101 : "Numpad5" , 102 : "Numpad6" , 103 : "Numpad7" , 104 : "Numpad8" , 105 : "Numpad9" , "-13" : "NumpadEnter" , 112 : "F1" , 113 : "F2" , 114 : "F3" , 115 : "F4" , 116 : "F5" , 117 : "F6" , 118 : "F7" , 119 : "F8" , 120 : "F9" , 121 : "F10" , 122 : "F11" , 123 : "F12" , 144 : "Numlock" , 145 : "Scrolllock" } , PRINTABLE _KEYS : { 32 : " " , 48 : "0" , 49 : "1" , 50 : "2" , 51 : "3" , 52 : "4" , 53 : "5" , 54 : "6" , 55 : "7" , 56 : "8" , 57 : "9" , 59 : ";" , 61 : "=" , 65 : "a" , 66 : "b" , 67 : "c" , 68 : "d" , 69 : "e" , 70 : "f" , 71 : "g" , 72 : "h" , 73 : "i" , 74 : "j" , 75 : "k" , 76 : "l" , 77 : "m" , 78 : "n" , 79 : "o" , 80 : "p" , 81 : "q" , 82 : "r" , 83 : "s" , 84 : "t" , 85 : "u" , 86 : "v" , 87 : "w" , 88 : "x" , 89 : "y" , 90 : "z" , 107 : "+" , 109 : "-" , 110 : "." , 186 : ";" , 187 : "=" , 188 : "," , 189 : "-" , 190 : "." , 191 : "/" , 192 : "`" , 219 : "[" , 220 : "\\" , 221 : "]" , 222 : "'" , 111 : "/" , 106 : "*" } } ; for ( n in e . FUNCTION _KEYS ) t = e . FUNCTION _KEYS [ n ] . toLowerCase ( ) , e [ t ] = parseInt ( n , 10 ) ; for ( n in e . PRINTABLE _KEYS ) t = e . PRINTABLE _KEYS [ n ] . toLowerCase ( ) , e [ t ] = parseInt ( n , 10 ) ; return r . mixin ( e , e . MODIFIER _KEYS ) , r . mixin ( e , e . PRINTABLE _KEYS ) , r . mixin ( e , e . FUNCTION _KEYS ) , e . enter = e . return , e . escape = e . esc , e . del = e . delete , e [ 173 ] = "-" , function ( ) { for ( var t = [ "cmd" , "ctrl" , "alt" , "shift" ] , n = Math . pow ( 2 , t . length ) ; n -- ; ) e . KEY _MODS [ n ] = t . filter ( function ( t ) { return n & e . KEY _MODS [ t ] } ) . join ( "-" ) + "-" } ( ) , e . KEY _MODS [ 0 ] = "" , e . KEY _MODS [ - 1 ] = "input-" , e } ( ) ; r . mixin ( t , i ) , t . keyCodeToString = function ( e ) { var t = i [ e ] ; return "string" != typeof t && ( t = String . fromCharCode ( e ) ) , t . toLowerCase ( ) } } ) , ace . define ( "ace/lib/useragent" , [ "require" , "exports" , "module" ] , function ( e , t , n ) { "use strict" ; if ( t . OS = { LINUX : "LINUX" , MAC : "MAC" , WINDOWS : "WINDOWS" } , t . getOS = function ( ) { return t . isMac ? t . OS . MAC : t . isLinux ? t . OS . LINUX : t . OS . WINDOWS } , "object" == typeof navigator ) { var r = ( navigator . platform . match ( /mac|win|linux/i ) || [ "other" ] ) [ 0 ] . toLowerCase ( ) , i = navigator . userAgent ; t . isWin = "win" == r , t . isMac = "mac" == r , t . isLinux = "linux" == r , t . isIE = "Microsoft Internet Explorer" == navigator . appName || navigator . appName . indexOf ( "MSAppHost" ) >= 0 ? parseFloat ( ( i . match ( /(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/ ) || [ ] ) [ 1 ] ) : parseFloat ( ( i . match ( /(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/ ) || [ ] ) [ 1 ] ) , t . isOldIE = t . isIE && t . isIE < 9 , t . isGecko = t . isMozilla = ( window . Controllers || window . controllers ) && "Gecko" === window . navigator . product , t . isOldGecko = t . isGecko && parseInt ( ( i . match ( /rv:(\d+)/ ) || [ ] ) [ 1 ] , 10 ) < 4 , t . isOpera = window . opera && "[object Opera]" == Object . prototype . toString . call ( window . opera ) , t . isWebKit = parseFloat ( i . split ( "WebKit/" ) [ 1 ] ) || void 0 , t . isChrome = parseFloat ( i . split ( " Chrome/" ) [ 1 ] ) || void 0 , t . isAIR = i . indexOf ( "AdobeAIR" ) >= 0 , t . isIPad = i . indexOf ( "iPad" ) >= 0 , t . isTouchPad = i . indexOf ( "TouchPad" ) >= 0 , t . isChromeOS = i . indexOf ( " CrOS " ) >= 0 } } ) , ace . define ( "ace/lib/event" , [ "require" , "exports" , "module" , "ace/lib/keys" , "ace/lib/useragent" ] , function ( e , t , n ) { "use strict" ; function a ( e , t , n ) { var a = u ( t ) ; if ( ! i . isMac && s ) { if ( t . getModifierState && ( t . getModifierState ( "OS" ) || t . getModifierState ( "Win" ) ) && ( a |= 8 ) , s . altGr ) { if ( 3 == ( 3 & a ) ) return ; s . altGr = 0 } if ( 18 === n || 17 === n ) { var f = "location" in t ? t . location : t . keyLocation ; if ( 17 === n && 1 === f ) 1 == s [ n ] && ( o = t . timeStamp ) ; else if ( 18 === n && 3 === a && 2 === f ) { var l = t . timeStamp - o ; l < 50 && ( s . altGr = ! 0 ) } } } if ( n in r . MODIFIER _KEYS && ( n = - 1 ) , 8 & a && n >= 91 && n <= 93 && ( n = - 1 ) , ! a && 13 === n ) { var f = "location" in t ? t . location : t . keyLocation ; if ( 3 === f && ( e ( t , a , - n ) , t . defaultPrevented ) ) return } if ( i . isChromeOS && 8 & a ) { if ( e ( t , a , n ) , t . defaultPrevented ) return ; a &= - 9 } return ! ! ( a || n in r . FUNCTION _KEYS || n in r . PRINTABLE _KEYS ) && e ( t , a , n ) } function f ( ) { s = Object . create ( null ) } var r = e ( "./keys" ) , i = e ( "./useragent" ) , s = null , o = 0 ; t . addListener = function ( e , t , n ) { if ( e . addEventListener ) return e . addEventListener ( t , n , ! 1 ) ; if ( e . attachEvent ) { var r = function ( ) { n . call ( e , window . event ) } ; n . _wrapper = r , e . attachEvent ( "on" + t , r ) } } , t . removeListener = function ( e , t , n ) { return e . removeEventListener ? e . removeEventListener ( t , n , ! 1 ) : void ( e . detachEvent && e . detachEvent ( "on" + t , n . _w
} } , this . onMouseDown = function ( e ) { if ( this . $dragEnabled ) { this . mousedownEvent = e ; var t = this . editor , n = e . inSelection ( ) , r = e . getButton ( ) , i = e . domEvent . detail || 1 ; if ( 1 === i && 0 === r && n ) { if ( e . editor . inMultiSelectMode && ( e . getAccelKey ( ) || e . getShiftKey ( ) ) ) return ; this . mousedownEvent . time = Date . now ( ) ; var o = e . domEvent . target || e . domEvent . srcElement ; if ( "unselectable" in o && ( o . unselectable = "on" ) , t . getDragDelay ( ) ) { if ( s . isWebKit ) { this . cancelDrag = ! 0 ; var u = t . container ; u . draggable = ! 0 } this . setState ( "dragWait" ) } else this . startDrag ( ) ; this . captureMouse ( e , this . onMouseDrag . bind ( this ) ) , e . defaultPrevented = ! 0 } } } } ) . call ( f . prototype ) , t . DragdropHandler = f } ) , ace . define ( "ace/lib/net" , [ "require" , "exports" , "module" , "ace/lib/dom" ] , function ( e , t , n ) { "use strict" ; var r = e ( "./dom" ) ; t . get = function ( e , t ) { var n = new XMLHttpRequest ; n . open ( "GET" , e , ! 0 ) , n . onreadystatechange = function ( ) { 4 === n . readyState && t ( n . responseText ) } , n . send ( null ) } , t . loadScript = function ( e , t ) { var n = r . getDocumentHead ( ) , i = document . createElement ( "script" ) ; i . src = e , n . appendChild ( i ) , i . onload = i . onreadystatechange = function ( e , n ) { ! n && i . readyState && "loaded" != i . readyState && "complete" != i . readyState || ( i = i . onload = i . onreadystatechange = null , n || t ( ) ) } } , t . qualifyURL = function ( e ) { var t = document . createElement ( "a" ) ; return t . href = e , t . href } } ) , ace . define ( "ace/lib/event_emitter" , [ "require" , "exports" , "module" ] , function ( e , t , n ) { "use strict" ; var r = { } , i = function ( ) { this . propagationStopped = ! 0 } , s = function ( ) { this . defaultPrevented = ! 0 } ; r . _emit = r . _dispatchEvent = function ( e , t ) { this . _eventRegistry || ( this . _eventRegistry = { } ) , this . _defaultHandlers || ( this . _defaultHandlers = { } ) ; var n = this . _eventRegistry [ e ] || [ ] , r = this . _defaultHandlers [ e ] ; if ( n . length || r ) { "object" == typeof t && t || ( t = { } ) , t . type || ( t . type = e ) , t . stopPropagation || ( t . stopPropagation = i ) , t . preventDefault || ( t . preventDefault = s ) , n = n . slice ( ) ; for ( var o = 0 ; o < n . length && ( n [ o ] ( t , this ) , ! t . propagationStopped ) ; o ++ ) ; return r && ! t . defaultPrevented ? r ( t , this ) : void 0 } } , r . _signal = function ( e , t ) { var n = ( this . _eventRegistry || { } ) [ e ] ; if ( n ) { n = n . slice ( ) ; for ( var r = 0 ; r < n . length ; r ++ ) n [ r ] ( t , this ) } } , r . once = function ( e , t ) { var n = this ; t && this . addEventListener ( e , function r ( ) { n . removeEventListener ( e , r ) , t . apply ( null , arguments ) } ) } , r . setDefaultHandler = function ( e , t ) { var n = this . _defaultHandlers ; if ( n || ( n = this . _defaultHandlers = { _disabled _ : { } } ) , n [ e ] ) { var r = n [ e ] , i = n . _disabled _ [ e ] ; i || ( n . _disabled _ [ e ] = i = [ ] ) , i . push ( r ) ; var s = i . indexOf ( t ) ; s != - 1 && i . splice ( s , 1 ) } n [ e ] = t } , r . removeDefaultHandler = function ( e , t ) { var n = this . _defaultHandlers ; if ( n ) { var r = n . _disabled _ [ e ] ; if ( n [ e ] == t ) { n [ e ] ; r && this . setDefaultHandler ( e , r . pop ( ) ) } else if ( r ) { var s = r . indexOf ( t ) ; s != - 1 && r . splice ( s , 1 ) } } } , r . on = r . addEventListener = function ( e , t , n ) { this . _eventRegistry = this . _eventRegistry || { } ; var r = this . _eventRegistry [ e ] ; return r || ( r = this . _eventRegistry [ e ] = [ ] ) , r . indexOf ( t ) == - 1 && r [ n ? "unshift" : "push" ] ( t ) , t } , r . off = r . removeListener = r . removeEventListener = function ( e , t ) { this . _eventRegistry = this . _eventRegistry || { } ; var n = this . _eventRegistry [ e ] ; if ( n ) { var r = n . indexOf ( t ) ; r !== - 1 && n . splice ( r , 1 ) } } , r . removeAllListeners = function ( e ) { this . _eventRegistry && ( this . _eventRegistry [ e ] = [ ] ) } , t . EventEmitter = r } ) , ace . define ( "ace/lib/app_config" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/lib/event_emitter" ] , function ( e , t , n ) { "no use strict" ; function o ( e ) { "undefined" != typeof console && console . warn && console . warn . apply ( console , arguments ) } function u ( e , t ) { var n = new Error ( e ) ; n . data = t , "object" == typeof console && console . error && console . error ( n ) , setTimeout ( function ( ) { throw n } ) } var r = e ( "./oop" ) , i = e ( "./event_emitter" ) . EventEmitter , s = { setOptions : function ( e ) { Object . keys ( e ) . forEach ( function ( t ) { this . setOption ( t , e [ t ] ) } , this ) } , getOptions : function ( e ) { var t = { } ; return e ? Array . isArray ( e ) || ( t = e , e = Object . keys ( t ) ) : e = Object . keys ( this . $options ) , e . forEach ( function ( e ) { t [ e ] = this . getOption ( e ) } , this ) , t } , setOption : function ( e , t ) { if ( this [ "$" + e ] !== t ) { var n = this . $options [ e ] ; return n ? n . forwardTo ? this [ n . forwardTo ] && this [ n . forwardTo ] . setOption ( e , t ) : ( n . handlesSet || ( this [ "$" + e ] = t ) , void ( n && n . set && n . set . call ( this , t ) ) ) : o ( 'misspelled option "' + e + '"' ) } } , getOption : function ( e ) { var t = this . $options [ e ] ; return t ? t . forwardTo ? this [ t . forwardTo ] && this [ t . forwardTo ] . getOption ( e ) : t && t . get ? t . get . c
} ) } for ( var y = 0 ; y < a . length - 2 ; y ++ ) if ( void 0 !== a [ y + 1 ] ) { d = s [ o [ y ] ] , p = d . onMatch ? d . onMatch ( v , r , n ) : d . token , d . next && ( r = "string" == typeof d . next ? d . next : d . next ( r , n ) , s = this . states [ r ] , s || ( this . reportError ( "state doesn't exist" , r ) , r = "start" , s = this . states [ r ] ) , o = this . matchMappings [ r ] , l = m , u = this . regExps [ r ] , u . lastIndex = m ) ; break } if ( v ) if ( "string" == typeof p ) d && d . merge === ! 1 || h . type !== p ? ( h . type && f . push ( h ) , h = { type : p , value : v } ) : h . value += v ; else if ( p ) { h . type && f . push ( h ) , h = { type : null , value : "" } ; for ( var y = 0 ; y < p . length ; y ++ ) f . push ( p [ y ] ) } if ( l == e . length ) break ; if ( l = m , c ++ > i ) { for ( c > 2 * e . length && this . reportError ( "infinite loop with in ace tokenizer" , { startState : t , line : e } ) ; l < e . length ; ) h . type && f . push ( h ) , h = { value : e . substring ( l , l += 2e3 ) , type : "overflow" } ; r = "start" , n = [ ] ; break } } return h . type && f . push ( h ) , n . length > 1 && n [ 0 ] !== r && n . unshift ( "#tmp" , r ) , { tokens : f , state : n . length ? n : r } } , this . reportError = r . reportError } ) . call ( s . prototype ) , t . Tokenizer = s } ) , ace . define ( "ace/mode/text_highlight_rules" , [ "require" , "exports" , "module" , "ace/lib/lang" ] , function ( e , t , n ) { "use strict" ; var r = e ( "../lib/lang" ) , i = function ( ) { this . $rules = { start : [ { token : "empty_line" , regex : "^$" } , { defaultToken : "text" } ] } } ; ( function ( ) { this . addRules = function ( e , t ) { if ( t ) for ( var n in e ) { for ( var r = e [ n ] , i = 0 ; i < r . length ; i ++ ) { var s = r [ i ] ; ( s . next || s . onMatch ) && ( "string" == typeof s . next && 0 !== s . next . indexOf ( t ) && ( s . next = t + s . next ) , s . nextState && 0 !== s . nextState . indexOf ( t ) && ( s . nextState = t + s . nextState ) ) } this . $rules [ t + n ] = r } else for ( var n in e ) this . $rules [ n ] = e [ n ] } , this . getRules = function ( ) { return this . $rules } , this . embedRules = function ( e , t , n , i , s ) { var o = "function" == typeof e ? ( new e ) . getRules ( ) : e ; if ( i ) for ( var u = 0 ; u < i . length ; u ++ ) i [ u ] = t + i [ u ] ; else { i = [ ] ; for ( var a in o ) i . push ( t + a ) } if ( this . addRules ( o , t ) , n ) for ( var f = Array . prototype [ s ? "push" : "unshift" ] , u = 0 ; u < i . length ; u ++ ) f . apply ( this . $rules [ i [ u ] ] , r . deepCopy ( n ) ) ; this . $embeds || ( this . $embeds = [ ] ) , this . $embeds . push ( t ) } , this . getEmbeds = function ( ) { return this . $embeds } ; var e = function ( e , t ) { return ( "start" != e || t . length ) && t . unshift ( this . nextState , e ) , this . nextState } , t = function ( e , t ) { return t . shift ( ) , t . shift ( ) || "start" } ; this . normalizeRules = function ( ) { function i ( s ) { var o = r [ s ] ; o . processed = ! 0 ; for ( var u = 0 ; u < o . length ; u ++ ) { var a = o [ u ] , f = null ; Array . isArray ( a ) && ( f = a , a = { } ) , ! a . regex && a . start && ( a . regex = a . start , a . next || ( a . next = [ ] ) , a . next . push ( { defaultToken : a . token } , { token : a . token + ".end" , regex : a . end || a . start , next : "pop" } ) , a . token = a . token + ".start" , a . push = ! 0 ) ; var l = a . next || a . push ; if ( l && Array . isArray ( l ) ) { var c = a . stateName ; c || ( c = a . token , "string" != typeof c && ( c = c [ 0 ] || "" ) , r [ c ] && ( c += n ++ ) ) , r [ c ] = l , a . next = c , i ( c ) } else "pop" == l && ( a . next = t ) ; if ( a . push && ( a . nextState = a . next || a . push , a . next = e , delete a . push ) , a . rules ) for ( var h in a . rules ) r [ h ] ? r [ h ] . push && r [ h ] . push . apply ( r [ h ] , a . rules [ h ] ) : r [ h ] = a . rules [ h ] ; var p = "string" == typeof a ? a : "string" == typeof a . include ? a . include : "" ; if ( p && ( f = r [ p ] ) , f ) { var d = [ u , 1 ] . concat ( f ) ; a . noEscape && ( d = d . filter ( function ( e ) { return ! e . next } ) ) , o . splice . apply ( o , d ) , u -- } a . keywordMap && ( a . token = this . createKeywordMapper ( a . keywordMap , a . defaultToken || "text" , a . caseInsensitive ) , delete a . defaultToken ) } } var n = 0 , r = this . $rules ; Object . keys ( r ) . forEach ( i , this ) } , this . createKeywordMapper = function ( e , t , n , r ) { var i = Object . create ( null ) ; return Object . keys ( e ) . forEach ( function ( t ) { var s = e [ t ] ; n && ( s = s . toLowerCase ( ) ) ; for ( var o = s . split ( r || "|" ) , u = o . length ; u -- ; ) i [ o [ u ] ] = t } ) , Object . getPrototypeOf ( i ) && ( i . _ _proto _ _ = null ) , this . $keywordList = Object . keys ( i ) , e = null , n ? function ( e ) { return i [ e . toLowerCase ( ) ] || t } : function ( e ) { return i [ e ] || t } } , this . getKeywords = function ( ) { return this . $keywords } } ) . call ( i . prototype ) , t . TextHighlightRules = i } ) , ace . define ( "ace/mode/behaviour" , [ "require" , "exports" , "module" ] , function ( e , t , n ) { "use strict" ; var r = function ( ) { this . $behaviours = { } } ; ( function ( ) { this . add = function ( e , t , n ) { switch ( void 0 ) { case this . $behaviours : this . $behaviours = { } ; case this . $behaviours [ e ] : this . $behaviours [ e ] = { } } this . $behaviours [ e ] [ t ] = n } , this . addBehaviours = function ( e ) { for ( var t in e ) for ( var n in e [ t ] ) this . add ( t , n , e [ t ] [ n ] ) } , this . remove = function ( e ) { this . $behaviours && this . $behaviours [ e ] && delete this . $behaviours [ e ] } , this . inherit = function ( e , t ) { if ( "function" == typeof e ) var n = ( new e ) . getBehaviours ( t ) ; else var n = e .
Z : "002000A01680180E2000-200A20282029202F205F3000" , Zs : "002000A01680180E2000-200A202F205F3000" , Zl : "2028" , Zp : "2029" , C : "0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF" , Cc : "0000-001F007F-009F" , Cf : "00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB" , Co : "E000-F8FF" , Cs : "D800-DFFF" , Cn : " 03780379037 F - 0383038 B038D03A20526 - 05300557055805600588058 B - 059005 C8 - 05 CF05EB - 05 EF05F5 - 05 FF06040605061C061D0620065F070E074B074C07B2 - 07 BF07FB - 07 FF082E082F083F - 08 FF093A093B094F095609570973 - 097809800984098 D098E0991099209A909B109B3 - 09 B509BA09BB09C509C609C909CA09CF - 09 D609D8 - 09 DB09DE09E409E509FC - 0 A000A040A0B - 0 A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43 - 0 A460A490A4A0A4E - 0 A500A52 - 0 A580A5D0A5F - 0 A650A76 - 0 A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1 - 0 ADF0AE40AE50AF00AF2 - 0B000 B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E - 0 B550B58 - 0 B5B0B5E0B640B650B72 - 0 B810B840B8B - 0 B8D0B910B96 - 0 B980B9B0B9D0BA0 - 0 BA20BA5 - 0 BA70BAB - 0 BAD0BBA - 0 BBD0BC3 - 0 BC50BC90BCE0BCF0BD1 - 0 BD60BD8 - 0 BE50BFB - 0 C000C040C0D0C110C290C340C3A - 0 C3C0C450C490C4E - 0 C540C570C5A - 0 C5F0C640C650C70 - 0 C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE - 0 CD40CD7 - 0 CDD0CDF0CE40CE50CF00CF3 - 0 D010D040D0D0D110D290D3A - 0 D3C0D450D490D4E - 0 D560D58 - 0 D5F0D640D650D76 - 0 D780D800D810D840D97 - 0 D990DB20DBC0DBE0DBF0DC7 - 0 DC90DCB - 0 DCE0DD50DD70DE0 - 0 DF10DF5 - 0E000 E3B - 0E3 E0E5C - 0E800 E830E850E860E890E8B0E8C0E8E - 0E930 E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE - 0 EFF0F480F6D - 0 F700F8C - 0 F8F0F980FBD0FCD0FD9 - 0 FFF10
! r ) return null ; for ( var s , o , i = { end : { column : 0 } } , u = 0 ; u < r . folds . length ; u ++ ) { o = r . folds [ u ] ; var a = o . range . compareEnd ( e , t ) ; if ( a == - 1 ) { s = this . getLine ( o . start . row ) . substring ( i . end . column , o . start . column ) ; break } if ( 0 === a ) return null ; i = o } return s || ( s = this . getLine ( o . start . row ) . substring ( i . end . column ) ) , n == - 1 ? s . substring ( 0 , t - i . end . column ) : 1 == n ? s . substring ( t - i . end . column ) : s } , this . getFoldLine = function ( e , t ) { var n = this . $foldData , r = 0 ; for ( t && ( r = n . indexOf ( t ) ) , r == - 1 && ( r = 0 ) , r ; r < n . length ; r ++ ) { var i = n [ r ] ; if ( i . start . row <= e && i . end . row >= e ) return i ; if ( i . end . row > e ) return null } return null } , this . getNextFoldLine = function ( e , t ) { var n = this . $foldData , r = 0 ; for ( t && ( r = n . indexOf ( t ) ) , r == - 1 && ( r = 0 ) , r ; r < n . length ; r ++ ) { var i = n [ r ] ; if ( i . end . row >= e ) return i } return null } , this . getFoldedRowCount = function ( e , t ) { for ( var n = this . $foldData , r = t - e + 1 , i = 0 ; i < n . length ; i ++ ) { var s = n [ i ] , o = s . end . row , u = s . start . row ; if ( o >= t ) { u < t && ( u >= e ? r -= t - u : r = 0 ) ; break } o >= e && ( r -= u >= e ? o - u : o - e + 1 ) } return r } , this . $addFoldLine = function ( e ) { return this . $foldData . push ( e ) , this . $foldData . sort ( function ( e , t ) { return e . start . row - t . start . row } ) , e } , this . addFold = function ( e , t ) { var o , n = this . $foldData , r = ! 1 ; e instanceof s ? o = e : ( o = new s ( t , e ) , o . collapseChildren = t . collapseChildren ) , this . $clipRangeToDocument ( o . range ) ; var u = o . start . row , a = o . start . column , f = o . end . row , l = o . end . column ; if ( u < f || u == f && a <= l - 2 ) { var c = this . getFoldAt ( u , a , 1 ) , h = this . getFoldAt ( f , l , - 1 ) ; if ( c && h == c ) return c . addSubFold ( o ) ; c && ! c . range . isStart ( u , a ) && this . removeFold ( c ) , h && ! h . range . isEnd ( f , l ) && this . removeFold ( h ) ; var p = this . getFoldsInRange ( o . range ) ; p . length > 0 && ( this . removeFolds ( p ) , p . forEach ( function ( e ) { o . addSubFold ( e ) } ) ) ; for ( var d = 0 ; d < n . length ; d ++ ) { var v = n [ d ] ; if ( f == v . start . row ) { v . addFold ( o ) , r = ! 0 ; break } if ( u == v . end . row ) { if ( v . addFold ( o ) , r = ! 0 , ! o . sameRow ) { var m = n [ d + 1 ] ; if ( m && m . start . row == f ) { v . merge ( m ) ; break } } break } if ( f <= v . start . row ) break } return r || ( v = this . $addFoldLine ( new i ( this . $foldData , o ) ) ) , this . $useWrapMode ? this . $updateWrapData ( v . start . row , v . start . row ) : this . $updateRowLengthCache ( v . start . row , v . start . row ) , this . $modified = ! 0 , this . _signal ( "changeFold" , { data : o , action : "add" } ) , o } throw new Error ( "The range has to be at least 2 characters width" ) } , this . addFolds = function ( e ) { e . forEach ( function ( e ) { this . addFold ( e ) } , this ) } , this . removeFold = function ( e ) { var t = e . foldLine , n = t . start . row , r = t . end . row , i = this . $foldData , s = t . folds ; if ( 1 == s . length ) i . splice ( i . indexOf ( t ) , 1 ) ; else if ( t . range . isEnd ( e . end . row , e . end . column ) ) s . pop ( ) , t . end . row = s [ s . length - 1 ] . end . row , t . end . column = s [ s . length - 1 ] . end . column ; else if ( t . range . isStart ( e . start . row , e . start . column ) ) s . shift ( ) , t . start . row = s [ 0 ] . start . row , t . start . column = s [ 0 ] . start . column ; else if ( e . sameRow ) s . splice ( s . indexOf ( e ) , 1 ) ; else { var o = t . split ( e . start . row , e . start . column ) ; s = o . folds , s . shift ( ) , o . start . row = s [ 0 ] . start . row , o . start . column = s [ 0 ] . start . column } this . $updating || ( this . $useWrapMode ? this . $updateWrapData ( n , r ) : this . $updateRowLengthCache ( n , r ) ) , this . $modified = ! 0 , this . _signal ( "changeFold" , { data : e , action : "remove" } ) } , this . removeFolds = function ( e ) { for ( var t = [ ] , n = 0 ; n < e . length ; n ++ ) t . push ( e [ n ] ) ; t . forEach ( function ( e ) { this . removeFold ( e ) } , this ) , this . $modified = ! 0 } , this . expandFold = function ( e ) { this . removeFold ( e ) , e . subFolds . forEach ( function ( t ) { e . restoreRange ( t ) , this . addFold ( t ) } , this ) , e . collapseChildren > 0 && this . foldAll ( e . start . row + 1 , e . end . row , e . collapseChildren - 1 ) , e . subFolds = [ ] } , this . expandFolds = function ( e ) { e . forEach ( function ( e ) { this . expandFold ( e ) } , this ) } , this . unfold = function ( e , t ) { var n , i ; if ( null == e ? ( n = new r ( 0 , 0 , this . getLength ( ) , 0 ) , t = ! 0 ) : n = "number" == typeof e ? new r ( e , 0 , e , this . getLine ( e ) . length ) : "row" in e ? r . fromPoints ( e , e ) : e , i = this . getFoldsInRangeList ( n ) , t ) this . removeFolds ( i ) ; else for ( var s = i ; s . length ; ) this . expandFolds ( s ) , s = this . getFoldsInRangeList ( n ) ; if ( i . length ) return i } , this . isRowFolded = function ( e , t ) { return ! ! this . getFoldLine ( e , t ) } , this . getRowFoldEnd = function ( e , t ) { var n = this . getFoldLine ( e , t ) ; return n ? n . end . row : e } , this . getRowFoldStart = function ( e , t ) { var n = this . getFoldLine ( e , t ) ; return n ? n . start . row : e } , this . getFoldDisplayLine = function ( e , t , n , r , i ) { null == r && ( r = e . start . row ) , null == i && ( i = 0 ) , null == t && ( t = e . end . row ) , null == n && ( n = this . getLine ( t ) . length ) ; var s = this . doc , o = "" ; return e . walk ( function ( e , t , n , u ) { if ( ! ( t < r
! ( n > t ) ) ; i ++ ) ; return [ n , i ] } , this . lineWidgets = null , this . getRowLength = function ( e ) { if ( this . lineWidgets ) var t = this . lineWidgets [ e ] && this . lineWidgets [ e ] . rowCount || 0 ; else t = 0 ; return this . $useWrapMode && this . $wrapData [ e ] ? this . $wrapData [ e ] . length + 1 + t : 1 + t } , this . getRowLineCount = function ( e ) { return this . $useWrapMode && this . $wrapData [ e ] ? this . $wrapData [ e ] . length + 1 : 1 } , this . getRowWrapIndent = function ( e ) { if ( this . $useWrapMode ) { var t = this . screenToDocumentPosition ( e , Number . MAX _VALUE ) , n = this . $wrapData [ t . row ] ; return n . length && n [ 0 ] < t . column ? n . indent : 0 } return 0 } , this . getScreenLastRowColumn = function ( e ) { var t = this . screenToDocumentPosition ( e , Number . MAX _VALUE ) ; return this . documentToScreenColumn ( t . row , t . column ) } , this . getDocumentLastRowColumn = function ( e , t ) { var n = this . documentToScreenRow ( e , t ) ; return this . getScreenLastRowColumn ( n ) } , this . getDocumentLastRowColumnPosition = function ( e , t ) { var n = this . documentToScreenRow ( e , t ) ; return this . screenToDocumentPosition ( n , Number . MAX _VALUE / 10 ) } , this . getRowSplitData = function ( e ) { return this . $useWrapMode ? this . $wrapData [ e ] : void 0 } , this . getScreenTabSize = function ( e ) { return this . $tabSize - e % this . $tabSize } , this . screenToDocumentRow = function ( e , t ) { return this . screenToDocumentPosition ( e , t ) . row } , this . screenToDocumentColumn = function ( e , t ) { return this . screenToDocumentPosition ( e , t ) . column } , this . screenToDocumentPosition = function ( e , t ) { if ( e < 0 ) return { row : 0 , column : 0 } ; var n , s , r = 0 , i = 0 , o = 0 , u = 0 , a = this . $screenRowCache , f = this . $getRowCacheIndex ( a , e ) , l = a . length ; if ( l && f >= 0 ) var o = a [ f ] , r = this . $docRowCache [ f ] , c = e > a [ l - 1 ] ; else var c = ! l ; for ( var h = this . getLength ( ) - 1 , p = this . getNextFoldLine ( r ) , d = p ? p . start . row : 1 / 0 ; o <= e && ( u = this . getRowLength ( r ) , ! ( o + u > e || r >= h ) ) ; ) o += u , r ++ , r > d && ( r = p . end . row + 1 , p = this . getNextFoldLine ( r , p ) , d = p ? p . start . row : 1 / 0 ) , c && ( this . $docRowCache . push ( r ) , this . $screenRowCache . push ( o ) ) ; if ( p && p . start . row <= r ) n = this . getFoldDisplayLine ( p ) , r = p . start . row ; else { if ( o + u <= e || r > h ) return { row : h , column : this . getLine ( h ) . length } ; n = this . getLine ( r ) , p = null } var v = 0 ; if ( this . $useWrapMode ) { var m = this . $wrapData [ r ] ; if ( m ) { var g = Math . floor ( e - o ) ; s = m [ g ] , g > 0 && m . length && ( v = m . indent , i = m [ g - 1 ] || m [ m . length - 1 ] , n = n . substring ( i ) ) } } return i += this . $getStringScreenWidth ( n , t - v ) [ 1 ] , this . $useWrapMode && i >= s && ( i = s - 1 ) , p ? p . idxToPosition ( i ) : { row : r , column : i } } , this . documentToScreenPosition = function ( e , t ) { if ( "undefined" == typeof t ) var n = this . $clipPositionToDocument ( e . row , e . column ) ; else n = this . $clipPositionToDocument ( e , t ) ; e = n . row , t = n . column ; var r = 0 , i = null , s = null ; s = this . getFoldAt ( e , t , 1 ) , s && ( e = s . start . row , t = s . start . column ) ; var o , u = 0 , a = this . $docRowCache , f = this . $getRowCacheIndex ( a , e ) , l = a . length ; if ( l && f >= 0 ) var u = a [ f ] , r = this . $screenRowCache [ f ] , c = e > a [ l - 1 ] ; else var c = ! l ; for ( var h = this . getNextFoldLine ( u ) , p = h ? h . start . row : 1 / 0 ; u < e ; ) { if ( u >= p ) { if ( o = h . end . row + 1 , o > e ) break ; h = this . getNextFoldLine ( o , h ) , p = h ? h . start . row : 1 / 0 } else o = u + 1 ; r += this . getRowLength ( u ) , u = o , c && ( this . $docRowCache . push ( u ) , this . $screenRowCache . push ( r ) ) } var d = "" ; h && u >= p ? ( d = this . getFoldDisplayLine ( h , e , t ) , i = h . start . row ) : ( d = this . getLine ( e ) . substring ( 0 , t ) , i = e ) ; var v = 0 ; if ( this . $useWrapMode ) { var m = this . $wrapData [ i ] ; if ( m ) { for ( var g = 0 ; d . length >= m [ g ] ; ) r ++ , g ++ ; d = d . substring ( m [ g - 1 ] || 0 , d . length ) , v = g > 0 ? m . indent : 0 } } return { row : r , column : v + this . $getStringScreenWidth ( d ) [ 0 ] } } , this . documentToScreenColumn = function ( e , t ) { return this . documentToScreenPosition ( e , t ) . column } , this . documentToScreenRow = function ( e , t ) { return this . documentToScreenPosition ( e , t ) . row } , this . getScreenLength = function ( ) { var e = 0 , t = null ; if ( this . $useWrapMode ) for ( var i = this . $wrapData . length , s = 0 , r = 0 , t = this . $foldData [ r ++ ] , o = t ? t . start . row : 1 / 0 ; s < i ; ) { var u = this . $wrapData [ s ] ; e += u ? u . length + 1 : 1 , s ++ , s > o && ( s = t . end . row + 1 , t = this . $foldData [ r ++ ] , o = t ? t . start . row : 1 / 0 ) } else { e = this . getLength ( ) ; for ( var n = this . $foldData , r = 0 ; r < n . length ; r ++ ) t = n [ r ] , e -= t . end . row - t . start . row } return this . lineWidgets && ( e += this . $getWidgetScreenLength ( ) ) , e } , this . $setFontMetrics = function ( e ) { this . $enableVarChar && ( this . $getStringScreenWidth = function ( t , n , r ) { if ( 0 === n ) return [ 0 , 0 ] ; n || ( n = 1 / 0 ) , r = r || 0 ; var i , s ; for ( s = 0 ; s < t . length && ( i = t . charAt ( s ) , r += "\t" === i ? this . getScreenTabSize ( r ) : e . getCharacterWidth ( i ) , ! ( r > n ) ) ; s ++ ) ; return [ r , s ] } ) } , this . destroy = function ( ) { this . bgTokenizer && ( this . bg
this . curOp . docChanged = ! 0 } . bind ( this ) , ! 0 ) , this . on ( "changeSelection" , function ( ) { this . curOp || this . startOperation ( ) , this . curOp . selectionChanged = ! 0 } . bind ( this ) , ! 0 ) } , this . curOp = null , this . prevOp = { } , this . startOperation = function ( e ) { if ( this . curOp ) { if ( ! e || this . curOp . command ) return ; this . prevOp = this . curOp } e || ( this . previousCommand = null , e = { } ) , this . $opResetTimer . schedule ( ) , this . curOp = { command : e . command || { } , args : e . args , scrollTop : this . renderer . scrollTop } , this . curOp . command . name && void 0 !== this . curOp . command . scrollIntoView && this . $blockScrolling ++ } , this . endOperation = function ( e ) { if ( this . curOp ) { if ( e && e . returnValue === ! 1 ) return this . curOp = null ; this . _signal ( "beforeEndOperation" ) ; var t = this . curOp . command ; t . name && this . $blockScrolling > 0 && this . $blockScrolling -- ; var n = t && t . scrollIntoView ; if ( n ) { switch ( n ) { case "center-animate" : n = "animate" ; case "center" : this . renderer . scrollCursorIntoView ( null , . 5 ) ; break ; case "animate" : case "cursor" : this . renderer . scrollCursorIntoView ( ) ; break ; case "selectionPart" : var r = this . selection . getRange ( ) , i = this . renderer . layerConfig ; ( r . start . row >= i . lastRow || r . end . row <= i . firstRow ) && this . renderer . scrollSelectionIntoView ( this . selection . anchor , this . selection . lead ) } "animate" == n && this . renderer . animateScrolling ( this . curOp . scrollTop ) } this . prevOp = this . curOp , this . curOp = null } } , this . $mergeableCommands = [ "backspace" , "del" , "insertstring" ] , this . $historyTracker = function ( e ) { if ( this . $mergeUndoDeltas ) { var t = this . prevOp , n = this . $mergeableCommands , r = t . command && e . command . name == t . command . name ; if ( "insertstring" == e . command . name ) { var i = e . args ; void 0 === this . mergeNextCommand && ( this . mergeNextCommand = ! 0 ) , r = r && this . mergeNextCommand && ( ! /\s/ . test ( i ) || /\s/ . test ( t . args ) ) , this . mergeNextCommand = ! 0 } else r = r && n . indexOf ( e . command . name ) !== - 1 ; "always" != this . $mergeUndoDeltas && Date . now ( ) - this . sequenceStartTime > 2e3 && ( r = ! 1 ) , r ? this . session . mergeUndoDeltas = ! 0 : n . indexOf ( e . command . name ) !== - 1 && ( this . sequenceStartTime = Date . now ( ) ) } } , this . setKeyboardHandler = function ( e , t ) { if ( e && "string" == typeof e ) { this . $keybindingId = e ; var n = this ; g . loadModule ( [ "keybinding" , e ] , function ( r ) { n . $keybindingId == e && n . keyBinding . setKeyboardHandler ( r && r . handler ) , t && t ( ) } ) } else this . $keybindingId = null , this . keyBinding . setKeyboardHandler ( e ) , t && t ( ) } , this . getKeyboardHandler = function ( ) { return this . keyBinding . getKeyboardHandler ( ) } , this . setSession = function ( e ) { if ( this . session != e ) { this . curOp && this . endOperation ( ) , this . curOp = { } ; var t = this . session ; if ( t ) { this . session . off ( "change" , this . $onDocumentChange ) , this . session . off ( "changeMode" , this . $onChangeMode ) , this . session . off ( "tokenizerUpdate" , this . $onTokenizerUpdate ) , this . session . off ( "changeTabSize" , this . $onChangeTabSize ) , this . session . off ( "changeWrapLimit" , this . $onChangeWrapLimit ) , this . session . off ( "changeWrapMode" , this . $onChangeWrapMode ) , this . session . off ( "changeFold" , this . $onChangeFold ) , this . session . off ( "changeFrontMarker" , this . $onChangeFrontMarker ) , this . session . off ( "changeBackMarker" , this . $onChangeBackMarker ) , this . session . off ( "changeBreakpoint" , this . $onChangeBreakpoint ) , this . session . off ( "changeAnnotation" , this . $onChangeAnnotation ) , this . session . off ( "changeOverwrite" , this . $onCursorChange ) , this . session . off ( "changeScrollTop" , this . $onScrollTopChange ) , this . session . off ( "changeScrollLeft" , this . $onScrollLeftChange ) ; var n = this . session . getSelection ( ) ; n . off ( "changeCursor" , this . $onCursorChange ) , n . off ( "changeSelection" , this . $onSelectionChange ) } this . session = e , e ? ( this . $onDocumentChange = this . onDocumentChange . bind ( this ) , e . on ( "change" , this . $onDocumentChange ) , this . renderer . setSession ( e ) , this . $onChangeMode = this . onChangeMode . bind ( this ) , e . on ( "changeMode" , this . $onChangeMode ) , this . $onTokenizerUpdate = this . onTokenizerUpdate . bind ( this ) , e . on ( "tokenizerUpdate" , this . $onTokenizerUpdate ) , this . $onChangeTabSize = this . renderer . onChangeTabSize . bind ( this . renderer ) , e . on ( "changeTabSize" , this . $onChangeTabSize ) , this . $onChangeWrapLimit = this . onChangeWrapLimit . bind ( this ) , e . on ( "changeWrapLimit" , this . $onChangeWrapLimit ) , this . $onChangeWrapMode = this . onChangeWrapMode . bind ( this ) , e . on ( "changeWrapMode" , this . $onChangeWrapMode ) , this . $onChangeFold = this . onChangeFold . bind ( this ) , e . on ( "changeFold" , this . $onChangeFold ) , this . $onChangeFrontMarker = this . onC
this . renderer . off ( "beforeRender" , o ) ) } } } , this . $resetCursorStyle = function ( ) { var e = this . $cursorStyle || "ace" , t = this . renderer . $cursorLayer ; t && ( t . setSmoothBlinking ( /smooth/ . test ( e ) ) , t . isBlinking = ! this . $readOnly && "wide" != e , i . setCssClass ( t . element , "ace_slim-cursors" , /slim/ . test ( e ) ) ) } } ) . call ( b . prototype ) , g . defineOptions ( b . prototype , "editor" , { selectionStyle : { set : function ( e ) { this . onSelectionChange ( ) , this . _signal ( "changeSelectionStyle" , { data : e } ) } , initialValue : "line" } , highlightActiveLine : { set : function ( ) { this . $updateHighlightActiveLine ( ) } , initialValue : ! 0 } , highlightSelectedWord : { set : function ( e ) { this . $onSelectionChange ( ) } , initialValue : ! 0 } , readOnly : { set : function ( e ) { this . $resetCursorStyle ( ) } , initialValue : ! 1 } , cursorStyle : { set : function ( e ) { this . $resetCursorStyle ( ) } , values : [ "ace" , "slim" , "smooth" , "wide" ] , initialValue : "ace" } , mergeUndoDeltas : { values : [ ! 1 , ! 0 , "always" ] , initialValue : ! 0 } , behavioursEnabled : { initialValue : ! 0 } , wrapBehavioursEnabled : { initialValue : ! 0 } , autoScrollEditorIntoView : { set : function ( e ) { this . setAutoScrollEditorIntoView ( e ) } } , keyboardHandler : { set : function ( e ) { this . setKeyboardHandler ( e ) } , get : function ( ) { return this . keybindingId } , handlesSet : ! 0 } , hScrollBarAlwaysVisible : "renderer" , vScrollBarAlwaysVisible : "renderer" , highlightGutterLine : "renderer" , animatedScroll : "renderer" , showInvisibles : "renderer" , showPrintMargin : "renderer" , printMarginColumn : "renderer" , printMargin : "renderer" , fadeFoldWidgets : "renderer" , showFoldWidgets : "renderer" , showLineNumbers : "renderer" , showGutter : "renderer" , displayIndentGuides : "renderer" , fontSize : "renderer" , fontFamily : "renderer" , maxLines : "renderer" , minLines : "renderer" , scrollPastEnd : "renderer" , fixedWidthGutter : "renderer" , theme : "renderer" , scrollSpeed : "$mouseHandler" , dragDelay : "$mouseHandler" , dragEnabled : "$mouseHandler" , focusTimout : "$mouseHandler" , tooltipFollowsMouse : "$mouseHandler" , firstLineNumber : "session" , overwrite : "session" , newLineMode : "session" , useWorker : "session" , useSoftTabs : "session" , tabSize : "session" , wrap : "session" , indentedSoftWrap : "session" , foldStyle : "session" , mode : "session" } ) , t . Editor = b } ) , ace . define ( "ace/undomanager" , [ "require" , "exports" , "module" ] , function ( e , t , n ) { "use strict" ; var r = function ( ) { this . reset ( ) } ; ( function ( ) { function e ( e ) { return { action : e . action , start : e . start , end : e . end , lines : 1 == e . lines . length ? null : e . lines , text : 1 == e . lines . length ? e . lines [ 0 ] : null } } function t ( e ) { return { action : e . action , start : e . start , end : e . end , lines : e . lines || [ e . text ] } } function n ( e , t ) { for ( var n = new Array ( e . length ) , r = 0 ; r < e . length ; r ++ ) { for ( var i = e [ r ] , s = { group : i . group , deltas : new Array ( i . length ) } , o = 0 ; o < i . deltas . length ; o ++ ) { var u = i . deltas [ o ] ; s . deltas [ o ] = t ( u ) } n [ r ] = s } return n } this . execute = function ( e ) { var t = e . args [ 0 ] ; this . $doc = e . args [ 1 ] , e . merge && this . hasUndo ( ) && ( this . dirtyCounter -- , t = this . $undoStack . pop ( ) . concat ( t ) ) , this . $undoStack . push ( t ) , this . $redoStack = [ ] , this . dirtyCounter < 0 && ( this . dirtyCounter = NaN ) , this . dirtyCounter ++ } , this . undo = function ( e ) { var t = this . $undoStack . pop ( ) , n = null ; return t && ( n = this . $doc . undoChanges ( t , e ) , this . $redoStack . push ( t ) , this . dirtyCounter -- ) , n } , this . redo = function ( e ) { var t = this . $redoStack . pop ( ) , n = null ; return t && ( n = this . $doc . redoChanges ( this . $deserializeDeltas ( t ) , e ) , this . $undoStack . push ( t ) , this . dirtyCounter ++ ) , n } , this . reset = function ( ) { this . $undoStack = [ ] , this . $redoStack = [ ] , this . dirtyCounter = 0 } , this . hasUndo = function ( ) { return this . $undoStack . length > 0 } , this . hasRedo = function ( ) { return this . $redoStack . length > 0 } , this . markClean = function ( ) { this . dirtyCounter = 0 } , this . isClean = function ( ) { return 0 === this . dirtyCounter } , this . $serializeDeltas = function ( t ) { return n ( t , e ) } , this . $deserializeDeltas = function ( e ) { return n ( e , t ) } } ) . call ( r . prototype ) , t . UndoManager = r } ) , ace . define ( "ace/layer/gutter" , [ "require" , "exports" , "module" , "ace/lib/dom" , "ace/lib/oop" , "ace/lib/lang" , "ace/lib/event_emitter" ] , function ( e , t , n ) { "use strict" ; var r = e ( "../lib/dom" ) , i = e ( "../lib/oop" ) , s = e ( "../lib/lang" ) , o = e ( "../lib/event_emitter" ) . EventEmitter , u = function ( e ) { this . element = r . createElement ( "div" ) , this . element . className = "ace_layer ace_gutter-layer" , e . appendChild ( this . element ) , this . setShowFoldWidgets ( this . $showFoldWidgets ) , this . gutterWidth = 0 , this . $annotations = [ ] , this . $updateAnnotations = this . $upd
i . importCssString ( m , "ace_editor.css" ) ; var g = function ( e , t ) { var n = this ; this . container = e || i . createElement ( "div" ) , this . $keepTextAreaAtCursor = ! o . isOldIE , i . addCssClass ( this . container , "ace_editor" ) , this . setTheme ( t ) , this . $gutter = i . createElement ( "div" ) , this . $gutter . className = "ace_gutter" , this . container . appendChild ( this . $gutter ) , this . scroller = i . createElement ( "div" ) , this . scroller . className = "ace_scroller" , this . container . appendChild ( this . scroller ) , this . content = i . createElement ( "div" ) , this . content . className = "ace_content" , this . scroller . appendChild ( this . content ) , this . $gutterLayer = new u ( this . $gutter ) , this . $gutterLayer . on ( "changeGutterWidth" , this . onGutterResize . bind ( this ) ) , this . $markerBack = new a ( this . content ) ; var r = this . $textLayer = new f ( this . content ) ; this . canvas = r . element , this . $markerFront = new a ( this . content ) , this . $cursorLayer = new l ( this . content ) , this . $horizScroll = ! 1 , this . $vScroll = ! 1 , this . scrollBar = this . scrollBarV = new h ( this . container , this ) , this . scrollBarH = new c ( this . container , this ) , this . scrollBarV . addEventListener ( "scroll" , function ( e ) { n . $scrollAnimation || n . session . setScrollTop ( e . data - n . scrollMargin . top ) } ) , this . scrollBarH . addEventListener ( "scroll" , function ( e ) { n . $scrollAnimation || n . session . setScrollLeft ( e . data - n . scrollMargin . left ) } ) , this . scrollTop = 0 , this . scrollLeft = 0 , this . cursorPos = { row : 0 , column : 0 } , this . $fontMetrics = new d ( this . container ) , this . $textLayer . $setFontMetrics ( this . $fontMetrics ) , this . $textLayer . addEventListener ( "changeCharacterSize" , function ( e ) { n . updateCharacterSize ( ) , n . onResize ( ! 0 , n . gutterWidth , n . $size . width , n . $size . height ) , n . _signal ( "changeCharacterSize" , e ) } ) , this . $size = { width : 0 , height : 0 , scrollerHeight : 0 , scrollerWidth : 0 , $dirty : ! 0 } , this . layerConfig = { width : 1 , padding : 0 , firstRow : 0 , firstRowScreen : 0 , lastRow : 0 , lineHeight : 0 , characterWidth : 0 , minHeight : 1 , maxHeight : 1 , offset : 0 , height : 1 , gutterOffset : 1 } , this . scrollMargin = { left : 0 , right : 0 , top : 0 , bottom : 0 , v : 0 , h : 0 } , this . $loop = new p ( this . $renderChanges . bind ( this ) , this . container . ownerDocument . defaultView ) , this . $loop . schedule ( this . CHANGE _FULL ) , this . updateCharacterSize ( ) , this . setPadding ( 4 ) , s . resetOptions ( this ) , s . _emit ( "renderer" , this ) } ; ( function ( ) { this . CHANGE _CURSOR = 1 , this . CHANGE _MARKER = 2 , this . CHANGE _GUTTER = 4 , this . CHANGE _SCROLL = 8 , this . CHANGE _LINES = 16 , this . CHANGE _TEXT = 32 , this . CHANGE _SIZE = 64 , this . CHANGE _MARKER _BACK = 128 , this . CHANGE _MARKER _FRONT = 256 , this . CHANGE _FULL = 512 , this . CHANGE _H _SCROLL = 1024 , r . implement ( this , v ) , this . updateCharacterSize = function ( ) { this . $textLayer . allowBoldFonts != this . $allowBoldFonts && ( this . $allowBoldFonts = this . $textLayer . allowBoldFonts , this . setStyle ( "ace_nobold" , ! this . $allowBoldFonts ) ) , this . layerConfig . characterWidth = this . characterWidth = this . $textLayer . getCharacterWidth ( ) , this . layerConfig . lineHeight = this . lineHeight = this . $textLayer . getLineHeight ( ) , this . $updatePrintMargin ( ) } , this . setSession = function ( e ) { this . session && this . session . doc . off ( "changeNewLineMode" , this . onChangeNewLineMode ) , this . session = e , e && this . scrollMargin . top && e . getScrollTop ( ) <= 0 && e . setScrollTop ( - this . scrollMargin . top ) , this . $cursorLayer . setSession ( e ) , this . $markerBack . setSession ( e ) , this . $markerFront . setSession ( e ) , this . $gutterLayer . setSession ( e ) , this . $textLayer . setSession ( e ) , e && ( this . $loop . schedule ( this . CHANGE _FULL ) , this . session . $setFontMetrics ( this . $fontMetrics ) , this . scrollBarV . scrollLeft = this . scrollBarV . scrollTop = null , this . onChangeNewLineMode = this . onChangeNewLineMode . bind ( this ) , this . onChangeNewLineMode ( ) , this . session . doc . on ( "changeNewLineMode" , this . onChangeNewLineMode ) ) } , this . updateLines = function ( e , t , n ) { if ( void 0 === t && ( t = 1 / 0 ) , this . $changedLines ? ( this . $changedLines . firstRow > e && ( this . $changedLines . firstRow = e ) , this . $changedLines . lastRow < t && ( this . $changedLines . lastRow = t ) ) : this . $changedLines = { firstRow : e , lastRow : t } , this . $changedLines . lastRow < this . layerConfig . firstRow ) { if ( ! n ) return ; this . $changedLines . lastRow = this . layerConfig . lastRow } this . $changedLines . firstRow > this . layerConfig . lastRow || this . $loop . schedule ( this . CHANGE _LINES ) } , this . onChangeNewLineMode = function ( ) { this . $loop . schedule ( this . CHANGE _TEXT ) , this . $textLayer . $updateEolChar ( ) } , this . onChangeTabSize = function ( ) { this . $loop . schedule ( this . CHANGE _TEXT | this . CHANGE _MARKER ) , this . $textLaye
if ( this . othersActive ) { this . othersActive = ! 1 ; for ( var e = 0 ; e < this . others . length ; e ++ ) this . session . removeMarker ( this . others [ e ] . markerId ) } } , this . onUpdate = function ( e ) { if ( this . $updating ) return this . updateAnchors ( e ) ; var t = e ; if ( t . start . row === t . end . row && t . start . row === this . pos . row ) { this . $updating = ! 0 ; var n = "insert" === e . action ? t . end . column - t . start . column : t . start . column - t . end . column , i = t . start . column >= this . pos . column && t . start . column <= this . pos . column + this . length + 1 , s = t . start . column - this . pos . column ; if ( this . updateAnchors ( e ) , i && ( this . length += n ) , i && ! this . session . $fromUndo ) if ( "insert" === e . action ) for ( var o = this . others . length - 1 ; o >= 0 ; o -- ) { var u = this . others [ o ] , a = { row : u . row , column : u . column + s } ; this . doc . insertMergedLines ( a , e . lines ) } else if ( "remove" === e . action ) for ( var o = this . others . length - 1 ; o >= 0 ; o -- ) { var u = this . others [ o ] , a = { row : u . row , column : u . column + s } ; this . doc . remove ( new r ( a . row , a . column , a . row , a . column - n ) ) } this . $updating = ! 1 , this . updateMarkers ( ) } } , this . updateAnchors = function ( e ) { this . pos . onChange ( e ) ; for ( var t = this . others . length ; t -- ; ) this . others [ t ] . onChange ( e ) ; this . updateMarkers ( ) } , this . updateMarkers = function ( ) { if ( ! this . $updating ) { var e = this , t = this . session , n = function ( n , i ) { t . removeMarker ( n . markerId ) , n . markerId = t . addMarker ( new r ( n . row , n . column , n . row , n . column + e . length ) , i , null , ! 1 ) } ; n ( this . pos , this . mainClass ) ; for ( var i = this . others . length ; i -- ; ) n ( this . others [ i ] , this . othersClass ) } } , this . onCursorChange = function ( e ) { if ( ! this . $updating && this . session ) { var t = this . session . selection . getCursor ( ) ; t . row === this . pos . row && t . column >= this . pos . column && t . column <= this . pos . column + this . length ? ( this . showOtherMarkers ( ) , this . _emit ( "cursorEnter" , e ) ) : ( this . hideOtherMarkers ( ) , this . _emit ( "cursorLeave" , e ) ) } } , this . detach = function ( ) { this . session . removeMarker ( this . pos && this . pos . markerId ) , this . hideOtherMarkers ( ) , this . doc . removeEventListener ( "change" , this . $onUpdate ) , this . session . selection . removeEventListener ( "changeCursor" , this . $onCursorChange ) , this . session . setUndoSelect ( ! 0 ) , this . session = null } , this . cancel = function ( ) { if ( this . $undoStackDepth !== - 1 ) { for ( var e = this . session . getUndoManager ( ) , t = ( e . $undoStack || e . $undostack ) . length - this . $undoStackDepth , n = 0 ; n < t ; n ++ ) e . undo ( ! 0 ) ; this . selectionBefore && this . session . selection . fromJSON ( this . selectionBefore ) } } } ) . call ( o . prototype ) , t . PlaceHolder = o } ) , ace . define ( "ace/mouse/multi_select_handler" , [ "require" , "exports" , "module" , "ace/lib/event" , "ace/lib/useragent" ] , function ( e , t , n ) { function s ( e , t ) { return e . row == t . row && e . column == t . column } function o ( e ) { var t = e . domEvent , n = t . altKey , o = t . shiftKey , u = t . ctrlKey , a = e . getAccelKey ( ) , f = e . getButton ( ) ; if ( u && i . isMac && ( f = t . button ) , e . editor . inMultiSelectMode && 2 == f ) return void e . editor . textInput . onContextMenu ( e . domEvent ) ; if ( ! u && ! n && ! a ) return void ( 0 === f && e . editor . inMultiSelectMode && e . editor . exitMultiSelectMode ( ) ) ; if ( 0 === f ) { var S , l = e . editor , c = l . selection , h = l . inMultiSelectMode , p = e . getDocumentPosition ( ) , d = c . getCursor ( ) , v = e . inSelection ( ) || c . isEmpty ( ) && s ( p , d ) , m = e . x , g = e . y , y = function ( e ) { m = e . clientX , g = e . clientY } , b = l . session , w = l . renderer . pixelToScreenCoordinates ( m , g ) , E = w ; if ( l . $mouseHandler . $enableJumpToDef ) u && n || a && n ? S = o ? "block" : "add" : n && l . $blockSelectEnabled && ( S = "block" ) ; else if ( a && ! n ) { if ( S = "add" , ! h && o ) return } else n && l . $blockSelectEnabled && ( S = "block" ) ; if ( S && i . isMac && t . ctrlKey && l . $mouseHandler . cancelContextMenu ( ) , "add" == S ) { if ( ! h && v ) return ; if ( ! h ) { var x = c . toOrientedRange ( ) ; l . addSelectionMarker ( x ) } var T = c . rangeList . rangeAtPoint ( p ) ; l . $blockScrolling ++ , l . inVirtualSelectionMode = ! 0 , o && ( T = null , x = c . ranges [ 0 ] || x , l . removeSelectionMarker ( x ) ) , l . once ( "mouseup" , function ( ) { var e = c . toOrientedRange ( ) ; T && e . isEmpty ( ) && s ( T . cursor , e . cursor ) ? c . substractPoint ( e . cursor ) : ( o ? c . substractPoint ( x . cursor ) : x && ( l . removeSelectionMarker ( x ) , c . addRange ( x ) ) , c . addRange ( e ) ) , l . $blockScrolling -- , l . inVirtualSelectionMode = ! 1 } ) } else if ( "block" == S ) { e . stop ( ) , l . inVirtualSelectionMode = ! 0 ; var N , C = [ ] , k = function ( ) { var e = l . renderer . pixelToScreenCoordinates ( m , g ) , t = b . screenToDocumentPosition ( e . row , e . column ) ; s ( E , e ) && s ( t , c . lead ) || ( E = e , l . $blockScrolling ++ , l . selection . moveToPosition ( t ) , l . renderer . scrollCursorIntoView ( ) , l . removeSelectionMarkers ( C ) , C = c . rectangularRangeBlock ( E , w ) , l . $mouseHandler . $clickSelection &&
} var a = [ ] ; t = u . row ; do a [ n < 0 ? "unshift" : "push" ] ( u ) , u = r [ i += n ] ; while ( u && u . row == t ) ; return a . length && a } } } var r = e ( "../line_widgets" ) . LineWidgets , i = e ( "../lib/dom" ) , s = e ( "../range" ) . Range ; t . showErrorMarker = function ( e , t ) { var n = e . session ; n . widgetManager || ( n . widgetManager = new r ( n ) , n . widgetManager . attach ( e ) ) ; var s = e . getCursorPosition ( ) , o = s . row , a = n . widgetManager . getWidgetsAtRow ( o ) . filter ( function ( e ) { return "errorMarker" == e . type } ) [ 0 ] ; a ? a . destroy ( ) : o -= t ; var l , f = u ( n , o , t ) ; if ( f ) { var c = f [ 0 ] ; s . column = ( c . pos && "number" != typeof c . column ? c . pos . sc : c . column ) || 0 , s . row = c . row , l = e . renderer . $gutterLayer . $annotations [ s . row ] } else { if ( a ) return ; l = { text : [ "Looks good!" ] , className : "ace_ok" } } e . session . unfold ( s . row ) , e . selection . moveToPosition ( s ) ; var h = { row : s . row , fixedWidth : ! 0 , coverGutter : ! 0 , el : i . createElement ( "div" ) , type : "errorMarker" } , p = h . el . appendChild ( i . createElement ( "div" ) ) , d = h . el . appendChild ( i . createElement ( "div" ) ) ; d . className = "error_widget_arrow " + l . className ; var v = e . renderer . $cursorLayer . getPixelPosition ( s ) . left ; d . style . left = v + e . renderer . gutterWidth - 5 + "px" , h . el . className = "error_widget_wrapper" , p . className = "error_widget " + l . className , p . innerHTML = l . text . join ( "<br>" ) , p . appendChild ( i . createElement ( "div" ) ) ; var m = function ( e , t , n ) { if ( 0 === t && ( "esc" === n || "return" === n ) ) return h . destroy ( ) , { command : "null" } } ; h . destroy = function ( ) { e . $mouseHandler . isMousePressed || ( e . keyBinding . removeKeyboardHandler ( m ) , n . widgetManager . removeLineWidget ( h ) , e . off ( "changeSelection" , h . destroy ) , e . off ( "changeSession" , h . destroy ) , e . off ( "mouseup" , h . destroy ) , e . off ( "change" , h . destroy ) ) } , e . keyBinding . addKeyboardHandler ( m ) , e . on ( "changeSelection" , h . destroy ) , e . on ( "changeSession" , h . destroy ) , e . on ( "mouseup" , h . destroy ) , e . on ( "change" , h . destroy ) , e . session . widgetManager . addLineWidget ( h ) , h . el . onmousedown = e . focus . bind ( e ) , e . renderer . scrollCursorIntoView ( null , . 5 , { bottom : h . el . offsetHeight } ) } , i . importCssString ( " .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }" , "" ) } ) , ace . define ( "ace/ace" , [ "require" , "exports" , "module" , "ace/lib/fixoldbrowsers" , "ace/lib/dom" , "ace/lib/event" , "ace/editor" , "ace/edit_session" , "ace/undomanager" , "ace/virtual_renderer" , "ace/worker/worker_client" , "ace/keyboard/hash_handler" , "ace/placeholder" , "ace/multi_select" , "ace/mode/folding/fold_mode" , "ace/theme/textmate" , "ace/ext/error_marker" , "ace/config" ] , function ( e , t , n ) { "use strict" ; e ( "./lib/fixoldbrowsers" ) ; var r = e ( "./lib/dom" ) , i = e ( "./lib/event" ) , s = e ( "./editor" ) . Editor , o = e ( "./edit_session" ) . EditSession , u = e ( "./undomanager" ) . UndoManager , a = e ( "./virtual_renderer" ) . VirtualRenderer ; e ( "./worker/worker_client" ) , e ( "./keyboard/hash_handler" ) , e ( "./placeholder" ) , e ( "./multi_select" ) , e ( "./mode/folding/fold_mode" ) , e ( "./theme/textmate" ) , e ( "./ext/error_marker" ) , t . config = e ( "./config" ) , t . require = e , "function" == typeof define && ( t . define = define ) , t . edit = function ( e ) { if ( "string" == typeof e ) { var n = e ; if ( e = document . getElementById ( n ) , ! e ) throw new Error ( "ace.edit can't find div #" + n ) } if ( e && e . env && e . env . editor instanceof s ) return e . env . editor ; var o = "" ; if ( e && /input|textarea/i . test ( e . tagName ) ) { var u = e ; o = u . value , e = r . createElement ( "pre" ) , u . parentNode . replaceChild ( e , u ) } else e && ( o = r . getInnerText ( e ) , e . innerHTML = "" ) ; var f = t . createEditSession ( o ) , l = new s ( new a ( e ) ) ; l . setSession ( f ) ; var c = { document : f , editor : l , onResize : l . resize . bind ( l , null ) } ; return u && ( c . textarea = u ) , i . addListener ( wi
if ( u ( f , "reference.attribute-value" ) ) return ; if ( u ( f , "attribute-value" ) ) { var l = f . value . charAt ( 0 ) ; if ( '"' == l || "'" == l ) { var c = f . value . charAt ( f . value . length - 1 ) , h = a . getCurrentTokenColumn ( ) + f . value . length ; if ( h > o . column || h == o . column && l != c ) return } } for ( ; ! u ( f , "tag-name" ) ; ) if ( f = a . stepBackward ( ) , "<" == f . value ) { f = a . stepForward ( ) ; break } var p = a . getCurrentTokenRow ( ) , d = a . getCurrentTokenColumn ( ) ; if ( u ( a . stepBackward ( ) , "end-tag-open" ) ) return ; var v = f . value ; if ( p == o . row && ( v = v . substring ( 0 , o . column - d ) ) , this . voidElements . hasOwnProperty ( v . toLowerCase ( ) ) ) return ; return { text : "></" + v + ">" , selection : [ 1 , 1 ] } } } ) , this . add ( "autoindent" , "insertion" , function ( e , t , n , r , i ) { if ( "\n" == i ) { var o = n . getCursorPosition ( ) , u = r . getLine ( o . row ) , a = new s ( r , o . row , o . column ) , f = a . getCurrentToken ( ) ; if ( f && f . type . indexOf ( "tag-close" ) !== - 1 ) { if ( "/>" == f . value ) return ; for ( ; f && f . type . indexOf ( "tag-name" ) === - 1 ; ) f = a . stepBackward ( ) ; if ( ! f ) return ; var l = f . value , c = a . getCurrentTokenRow ( ) ; if ( f = a . stepBackward ( ) , ! f || f . type . indexOf ( "end-tag" ) !== - 1 ) return ; if ( this . voidElements && ! this . voidElements [ l ] ) { var h = r . getTokenAt ( o . row , o . column + 1 ) , u = r . getLine ( c ) , p = this . $getIndent ( u ) , d = p + r . getTabString ( ) ; return h && "</" === h . value ? { text : "\n" + d + "\n" + p , selection : [ 1 , d . length , 1 , d . length ] } : { text : "\n" + d } } } } } ) } ) ; r . inherits ( a , i ) , t . XmlBehaviour = a } ) , ace . define ( "ace/mode/folding/xml" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/lib/lang" , "ace/range" , "ace/mode/folding/fold_mode" , "ace/token_iterator" ] , function ( e , t , n ) { "use strict" ; function l ( e , t ) { return e . type . lastIndexOf ( t + ".xml" ) > - 1 } var r = e ( "../../lib/oop" ) , s = ( e ( "../../lib/lang" ) , e ( "../../range" ) . Range ) , o = e ( "./fold_mode" ) . FoldMode , u = e ( "../../token_iterator" ) . TokenIterator , a = t . FoldMode = function ( e , t ) { o . call ( this ) , this . voidElements = e || { } , this . optionalEndTags = r . mixin ( { } , this . voidElements ) , t && r . mixin ( this . optionalEndTags , t ) } ; r . inherits ( a , o ) ; var f = function ( ) { this . tagName = "" , this . closing = ! 1 , this . selfClosing = ! 1 , this . start = { row : 0 , column : 0 } , this . end = { row : 0 , column : 0 } } ; ( function ( ) { this . getFoldWidget = function ( e , t , n ) { var r = this . _getFirstTagInLine ( e , n ) ; return r ? r . closing || ! r . tagName && r . selfClosing ? "markbeginend" == t ? "end" : "" : ! r . tagName || r . selfClosing || this . voidElements . hasOwnProperty ( r . tagName . toLowerCase ( ) ) ? "" : this . _findEndTagInLine ( e , n , r . tagName , r . end . column ) ? "" : "start" : "" } , this . _getFirstTagInLine = function ( e , t ) { for ( var n = e . getTokens ( t ) , r = new f , i = 0 ; i < n . length ; i ++ ) { var s = n [ i ] ; if ( l ( s , "tag-open" ) ) { if ( r . end . column = r . start . column + s . value . length , r . closing = l ( s , "end-tag-open" ) , s = n [ ++ i ] , ! s ) return null ; for ( r . tagName = s . value , r . end . column += s . value . length , i ++ ; i < n . length ; i ++ ) if ( s = n [ i ] , r . end . column += s . value . length , l ( s , "tag-close" ) ) { r . selfClosing = "/>" == s . value ; break } return r } if ( l ( s , "tag-close" ) ) return r . selfClosing = "/>" == s . value , r ; r . start . column += s . value . length } return null } , this . _findEndTagInLine = function ( e , t , n , r ) { for ( var i = e . getTokens ( t ) , s = 0 , o = 0 ; o < i . length ; o ++ ) { var u = i [ o ] ; if ( s += u . value . length , ! ( s < r ) && l ( u , "end-tag-open" ) && ( u = i [ o + 1 ] , u && u . value == n ) ) return ! 0 } return ! 1 } , this . _readTagForward = function ( e ) { var t = e . getCurrentToken ( ) ; if ( ! t ) return null ; var n = new f ; do if ( l ( t , "tag-open" ) ) n . closing = l ( t , "end-tag-open" ) , n . start . row = e . getCurrentTokenRow ( ) , n . start . column = e . getCurrentTokenColumn ( ) ; else if ( l ( t , "tag-name" ) ) n . tagName = t . value ; else if ( l ( t , "tag-close" ) ) return n . selfClosing = "/>" == t . value , n . end . row = e . getCurrentTokenRow ( ) , n . end . column = e . getCurrentTokenColumn ( ) + t . value . length , e . stepForward ( ) , n ; while ( t = e . stepForward ( ) ) ; return null } , this . _readTagBackward = function ( e ) { var t = e . getCurrentToken ( ) ; if ( ! t ) return null ; var n = new f ; do { if ( l ( t , "tag-open" ) ) return n . closing = l ( t , "end-tag-open" ) , n . start . row = e . getCurrentTokenRow ( ) , n . start . column = e . getCurrentTokenColumn ( ) , e . stepBackward ( ) , n ; l ( t , "tag-name" ) ? n . tagName = t . value : l ( t , "tag-close" ) && ( n . selfClosing = "/>" == t . value , n . end . row = e . getCurrentTokenRow ( ) , n . end . column = e . getCurrentTokenColumn ( ) + t . value . length ) } while ( t = e . stepBackward ( ) ) ; return null } , this . _pop = function ( e , t ) { for ( ; e . length ; ) { var n = e [ e . length - 1 ] ; if ( ! t || n . tagName == t . tagName ) return e . pop ( ) ; { if ( ! this . optionalEndTags . hasOwnProperty ( n . tagName ) ) return null ; e . pop ( ) } } } , this . getFoldWidgetRange = function ( e , t , n ) { var r = this . _getFirstTagInLine ( e , n ) ; if (
return i . map ( function ( e ) { return { caption : e , snippet : e , meta : "html entity" , score : Number . MAX _VALUE } } ) } } ) . call ( h . prototype ) , t . HtmlCompletions = h } ) , ace . define ( "ace/mode/html" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/lib/lang" , "ace/mode/text" , "ace/mode/javascript" , "ace/mode/css" , "ace/mode/html_highlight_rules" , "ace/mode/behaviour/xml" , "ace/mode/folding/html" , "ace/mode/html_completions" , "ace/worker/worker_client" ] , function ( e , t , n ) { "use strict" ; var r = e ( "../lib/oop" ) , i = e ( "../lib/lang" ) , s = e ( "./text" ) . Mode , o = e ( "./javascript" ) . Mode , u = e ( "./css" ) . Mode , a = e ( "./html_highlight_rules" ) . HtmlHighlightRules , f = e ( "./behaviour/xml" ) . XmlBehaviour , l = e ( "./folding/html" ) . FoldMode , c = e ( "./html_completions" ) . HtmlCompletions , h = e ( "../worker/worker_client" ) . WorkerClient , p = [ "area" , "base" , "br" , "col" , "embed" , "hr" , "img" , "input" , "keygen" , "link" , "meta" , "menuitem" , "param" , "source" , "track" , "wbr" ] , d = [ "li" , "dt" , "dd" , "p" , "rt" , "rp" , "optgroup" , "option" , "colgroup" , "td" , "th" ] , v = function ( e ) { this . fragmentContext = e && e . fragmentContext , this . HighlightRules = a , this . $behaviour = new f , this . $completer = new c , this . createModeDelegates ( { "js-" : o , "css-" : u } ) , this . foldingRules = new l ( this . voidElements , i . arrayToMap ( d ) ) } ; r . inherits ( v , s ) , function ( ) { this . blockComment = { start : "<!--" , end : "-->" } , this . voidElements = i . arrayToMap ( p ) , this . getNextLineIndent = function ( e , t , n ) { return this . $getIndent ( t ) } , this . checkOutdent = function ( e , t , n ) { return ! 1 } , this . getCompletions = function ( e , t , n , r ) { return this . $completer . getCompletions ( e , t , n , r ) } , this . createWorker = function ( e ) { if ( this . constructor == v ) { var t = new h ( [ "ace" ] , "ace/mode/html_worker" , "Worker" ) ; return t . attachToDocument ( e . getDocument ( ) ) , this . fragmentContext && t . call ( "setOptions" , [ { context : this . fragmentContext } ] ) , t . on ( "error" , function ( t ) { e . setAnnotations ( t . data ) } ) , t . on ( "terminate" , function ( ) { e . clearAnnotations ( ) } ) , t } } , this . $id = "ace/mode/html" } . call ( v . prototype ) , t . Mode = v } ) , ace . define ( "ace/mode/markdown_highlight_rules" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/lib/lang" , "ace/mode/text_highlight_rules" , "ace/mode/javascript_highlight_rules" , "ace/mode/xml_highlight_rules" , "ace/mode/html_highlight_rules" , "ace/mode/css_highlight_rules" ] , function ( e , t , n ) { "use strict" ; function c ( e , t ) { return { token : "support.function" , regex : "^\\s*```" + e + "\\s*$" , push : t + "start" } } var r = e ( "../lib/oop" ) , i = e ( "../lib/lang" ) , s = e ( "./text_highlight_rules" ) . TextHighlightRules , o = e ( "./javascript_highlight_rules" ) . JavaScriptHighlightRules , u = e ( "./xml_highlight_rules" ) . XmlHighlightRules , a = e ( "./html_highlight_rules" ) . HtmlHighlightRules , f = e ( "./css_highlight_rules" ) . CssHighlightRules , l = function ( e ) { return "(?:[^" + i . escapeRegExp ( e ) + "\\\\]|\\\\.)*" } , h = function ( ) { a . call ( this ) , this . $rules . start . unshift ( { token : "empty_line" , regex : "^$" , next : "allowBlock" } , { token : "markup.heading.1" , regex : "^=+(?=\\s*$)" } , { token : "markup.heading.2" , regex : "^\\-+(?=\\s*$)" } , { token : function ( e ) { return "markup.heading." + e . length } , regex : /^#{1,6}(?=\s*[^ #]|\s+#.)/ , next : "header" } , c ( "(?:javascript|js)" , "jscode-" ) , c ( "xml" , "xmlcode-" ) , c ( "html" , "htmlcode-" ) , c ( "css" , "csscode-" ) , { token : "support.function" , regex : "^\\s*```\\s*\\S*(?:{.*?\\})?\\s*$" , next : "githubblock" } , { token : "string.blockquote" , regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+" , next : "blockquote" } , { token : "constant" , regex : "^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$" , next : "allowBlock" } , { token : "markup.list" , regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+" , next : "listblock-start" } , { include : "basic" } ) , this . addRules ( { basic : [ { token : "constant.language.escape" , regex : /\\[\\`*_{}\[\]()#+\-.!]/ } , { token : "support.function" , regex : "(`+)(.*?[^`])(\\1)" } , { token : [ "text" , "constant" , "text" , "url" , "string" , "text" ] , regex : '^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$' } , { token : [ "text" , "string" , "text" , "constant" , "text" ] , regex : "(\\[)(" + l ( "]" ) + ")(\\]\\s*\\[)(" + l ( "]" ) + ")(\\])" } , { token : [ "text" , "string" , "text" , "markup.underline" , "string" , "text" ] , regex : "(\\[)(" + l ( "]" ) + ')(\\]\\()((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)(\\s*"' + l ( '"' ) + '"\\s*)?(\\))' } , { token : "string.strong" , regex : "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" } , { token : "string.emphasis" , regex : "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" } , { token : [ "
var s = t [ e ] , h = n ? n ( s ) : s , s = r || 0 !== s ? s : 0 ; if ( o && h === h ) { for ( var p = l . length ; p -- ; ) if ( l [ p ] === h ) continue t ; n && l . push ( h ) , f . push ( s ) } else u ( l , h , r ) || ( l !== f && l . push ( h ) , f . push ( s ) ) } return f } function mr ( t , n , r , e ) { for ( var u = t . length , i = e ? u : - 1 ; ( e ? i -- : ++ i < u ) && n ( t [ i ] , i , t ) ; ) ; return r ? vr ( t , e ? 0 : i , e ? i + 1 : u ) : vr ( t , e ? i + 1 : 0 , e ? u : i ) } function Ar ( t , n ) { var r = t ; return r instanceof Dt && ( r = r . value ( ) ) , h ( n , function ( t , n ) { return n . func . apply ( n . thisArg , s ( [ t ] , n . args ) ) } , r ) } function kr ( t , n , r ) { for ( var e = - 1 , u = t . length ; ++ e < u ; ) var i = i ? s ( wn ( i , t [ e ] , n , r ) , wn ( t [ e ] , i , n , r ) ) : t [ e ] ; return i && i . length ? wr ( i , n , r ) : [ ] } function Er ( t , n , r ) { for ( var e = - 1 , u = t . length , i = n . length , o = { } ; ++ e < u ; ) r ( o , t [ e ] , e < i ? n [ e ] : F ) ; return o } function Or ( t ) { return au ( t ) ? t : [ ] } function Sr ( t ) { return nf ( t ) ? t : vo ( t ) } function Ir ( t , n , r ) { var e = t . length ; return r = r === F ? e : r , ! n && r >= e ? t : vr ( t , n , r ) } function Rr ( t , n ) { if ( n ) return t . slice ( ) ; var r = t . length , r = pi ? pi ( r ) : new t . constructor ( r ) ; return t . copy ( r ) , r } function zr ( t ) { var n = new t . constructor ( t . byteLength ) ; return new hi ( n ) . set ( new hi ( t ) ) , n } function Wr ( t , n ) { return new t . constructor ( n ? zr ( t . buffer ) : t . buffer , t . byteOffset , t . length ) } function Br ( t , n ) { if ( t !== n ) { var r = t !== F , e = null === t , u = t === t , i = bu ( t ) , o = n !== F , f = null === n , c = n === n , a = bu ( n ) ; if ( ! f && ! a && ! i && t > n || i && o && c && ! f && ! a || e && o && c || ! r && c || ! u ) return 1 ; if ( ! e && ! i && ! a && t < n || a && r && u && ! e && ! i || f && r && u || ! o && u || ! c ) return - 1 } return 0 } function Lr ( t , n , r , e ) { var u = - 1 , i = t . length , o = r . length , f = - 1 , c = n . length , a = zi ( i - o , 0 ) , l = Zu ( c + a ) ; for ( e = ! e ; ++ f < c ; ) l [ f ] = n [ f ] ; for ( ; ++ u < o ; ) ( e || u < i ) && ( l [ r [ u ] ] = t [ u ] ) ; for ( ; a -- ; ) l [ f ++ ] = t [ u ++ ] ; return l } function Ur ( t , n , r , e ) { var u = - 1 , i = t . length , o = - 1 , f = r . length , c = - 1 , a = n . length , l = zi ( i - f , 0 ) , s = Zu ( l + a ) ; for ( e = ! e ; ++ u < l ; ) s [ u ] = t [ u ] ; for ( l = u ; ++ c < a ; ) s [ l + c ] = n [ c ] ; for ( ; ++ o < f ; ) ( e || u < i ) && ( s [ l + r [ o ] ] = t [ u ++ ] ) ; return s } function Cr ( t , n ) { var r = - 1 , e = t . length ; for ( n || ( n = Zu ( e ) ) ; ++ r < e ; ) n [ r ] = t [ r ] ; return n } function Mr ( t , n , r , e ) { var u = ! r ; r || ( r = { } ) ; for ( var i = - 1 , o = n . length ; ++ i < o ; ) { var f = n [ i ] , c = e ? e ( r [ f ] , t [ f ] , f , r , t ) : F ; c === F && ( c = t [ f ] ) , u ? vn ( r , f , c ) : sn ( r , f , c ) } return r } function Dr ( t , n ) { return Mr ( t , ao ( t ) , n ) } function Tr ( t , n ) { return function ( r , u ) { var i = nf ( r ) ? e : pn , o = n ? n ( ) : { } ; return i ( r , t , _e ( u , 2 ) , o ) } } function $r ( t ) { return lr ( function ( n , r ) { var e = - 1 , u = r . length , i = 1 < u ? r [ u - 1 ] : F , o = 2 < u ? r [ 2 ] : F , i = 3 < t . length && "function" == typeof i ? ( u -- , i ) : F ; for ( o && Ae ( r [ 0 ] , r [ 1 ] , o ) && ( i = 3 > u ? F : i , u = 1 ) , n = Ju ( n ) ; ++ e < u ; ) ( o = r [ e ] ) && t ( n , o , e , i ) ; return n } ) } function Fr ( t , n ) { return function ( r , e ) { if ( null == r ) return r ; if ( ! cu ( r ) ) return t ( r , e ) ; for ( var u = r . length , i = n ? u : - 1 , o = Ju ( r ) ; ( n ? i -- : ++ i < u ) && ! 1 !== e ( o [ i ] , i , o ) ; ) ; return r } } function Nr ( t ) { return function ( n , r , e ) { var u = - 1 , i = Ju ( n ) ; e = e ( n ) ; for ( var o = e . length ; o -- ; ) { var f = e [ t ? o : ++ u ] ; if ( ! 1 === r ( i [ f ] , f , i ) ) break } return n } } function Pr ( t , n , r ) { function e ( ) { return ( this && this !== Pt && this instanceof e ? i : t ) . apply ( u ? r : this , arguments ) } var u = 1 & n , i = Vr ( t ) ; return e } function Zr ( t ) { return function ( n ) { n = Eu ( n ) ; var r = Wt . test ( n ) ? $ ( n ) : F , e = r ? r [ 0 ] : n . charAt ( 0 ) ; return n = r ? Ir ( r , 1 ) . join ( "" ) : n . slice ( 1 ) , e [ t ] ( ) + n } } function qr ( t ) { return function ( n ) { return h ( Uu ( Lu ( n ) . replace ( St , "" ) ) , t , "" ) } } function Vr ( t ) { return function ( ) { var n = arguments ; switch ( n . length ) { case 0 : return new t ; case 1 : return new t ( n [ 0 ] ) ; case 2 : return new t ( n [ 0 ] , n [ 1 ] ) ; case 3 : return new t ( n [ 0 ] , n [ 1 ] , n [ 2 ] ) ; case 4 : return new t ( n [ 0 ] , n [ 1 ] , n [ 2 ] , n [ 3 ] ) ; case 5 : return new t ( n [ 0 ] , n [ 1 ] , n [ 2 ] , n [ 3 ] , n [ 4 ] ) ; case 6 : return new t ( n [ 0 ] , n [ 1 ] , n [ 2 ] , n [ 3 ] , n [ 4 ] , n [ 5 ] ) ; case 7 : return new t ( n [ 0 ] , n [ 1 ] , n [ 2 ] , n [ 3 ] , n [ 4 ] , n [ 5 ] , n [ 6 ] ) } var r = Xi ( t . prototype ) , n = t . apply ( r , n ) ; return _u ( n ) ? n : r } } function Kr ( t , n , e ) { function u ( ) { for ( var o = arguments . length , f = Zu ( o ) , c = o , a = pe ( u ) ; c -- ; ) f [ c ] = arguments [ c ] ; return c = 3 > o && f [ 0 ] !== a && f [ o - 1 ] !== a ? [ ] : C ( f , a ) , o -= c . length , o < e ? ue ( t , n , Yr , u . placeholder , F , f , c , F , F , e - o ) : r ( this && this !== Pt && this instanceof u ? i : t , this , f ) } var i = Vr ( t ) ; return u } function Gr ( t ) { return function ( n , r , e ) { var u = Ju ( n ) ; if ( ! cu ( n ) ) { var i = _e ( r , 3 ) ; n = Iu ( n ) , r = function ( t ) { return i ( u [ t ] , t , u ) } } return r = t ( n , r , e ) , - 1 < r ? u [ i ? n [ r ] : r ] : F } } function Jr ( t ) { return le ( function ( n ) { var r = n . length , e = r , u = Mt . prototype . thru ; for ( t && n . reverse ( ) ; e -- ; ) { var i = n [ e ] ; if ( "function" != typeof i ) throw new Qu ( "Expected a function" ) ; if ( u && ! o && "wrapper" == he ( i ) ) var o = new Mt ( [ ] , ( ! 0 ) ) } for ( e = o ? e : r ; ++ e < r ; ) var i = n [ e ] , u = he ( i ) , f = "wrapper" == u ? co ( i ) : F , o = f && Ee ( f [ 0 ] ) && 424 == f [ 1 ] && ! f
var e = - 1 , u = [ ] , i = t . length ; for ( n = _e ( n , 3 ) ; ++ e < i ; ) { var o = t [ e ] ; n ( o , e , t ) && ( r . push ( o ) , u . push ( e ) ) } return fr ( t , u ) , r } , Ot . rest = function ( t , n ) { if ( "function" != typeof t ) throw new Qu ( "Expected a function" ) ; return n = n === F ? n : wu ( n ) , lr ( t , n ) } , Ot . reverse = qe , Ot . sampleSize = function ( t , n , r ) { return n = ( r ? Ae ( t , n , r ) : n === F ) ? 1 : wu ( n ) , ( nf ( t ) ? fn : hr ) ( t , n ) } , Ot . set = function ( t , n , r ) { return null == t ? t : pr ( t , n , r ) } , Ot . setWith = function ( t , n , r , e ) { return e = "function" == typeof e ? e : F , null == t ? t : pr ( t , n , r , e ) } , Ot . shuffle = function ( t ) { return ( nf ( t ) ? cn : _r ) ( t ) } , Ot . slice = function ( t , n , r ) { var e = t ? t . length : 0 ; return e ? ( r && "number" != typeof r && Ae ( t , n , r ) ? ( n = 0 , r = e ) : ( n = null == n ? 0 : wu ( n ) , r = r === F ? e : wu ( r ) ) , vr ( t , n , r ) ) : [ ] } , Ot . sortBy = No , Ot . sortedUniq = function ( t ) { return t && t . length ? br ( t ) : [ ] } , Ot . sortedUniqBy = function ( t , n ) { return t && t . length ? br ( t , _e ( n , 2 ) ) : [ ] } , Ot . split = function ( t , n , r ) { return r && "number" != typeof r && Ae ( t , n , r ) && ( n = r = F ) , r = r === F ? 4294967295 : r >>> 0 , r ? ( t = Eu ( t ) ) && ( "string" == typeof n || null != n && ! ff ( n ) ) && ( n = jr ( n ) , ! n && Wt . test ( t ) ) ? Ir ( $ ( t ) , 0 , r ) : t . split ( n , r ) : [ ] } , Ot . spread = function ( t , n ) { if ( "function" != typeof t ) throw new Qu ( "Expected a function" ) ; return n = n === F ? 0 : zi ( wu ( n ) , 0 ) , lr ( function ( e ) { var u = e [ n ] ; return e = Ir ( e , 0 , n ) , u && s ( e , u ) , r ( t , this , e ) } ) } , Ot . tail = function ( t ) { var n = t ? t . length : 0 ; return n ? vr ( t , 1 , n ) : [ ] } , Ot . take = function ( t , n , r ) { return t && t . length ? ( n = r || n === F ? 1 : wu ( n ) , vr ( t , 0 , 0 > n ? 0 : n ) ) : [ ] } , Ot . takeRight = function ( t , n , r ) { var e = t ? t . length : 0 ; return e ? ( n = r || n === F ? 1 : wu ( n ) , n = e - n , vr ( t , 0 > n ? 0 : n , e ) ) : [ ] } , Ot . takeRightWhile = function ( t , n ) { return t && t . length ? mr ( t , _e ( n , 3 ) , ! 1 , ! 0 ) : [ ] } , Ot . takeWhile = function ( t , n ) { return t && t . length ? mr ( t , _e ( n , 3 ) ) : [ ] } , Ot . tap = function ( t , n ) { return n ( t ) , t } , Ot . throttle = function ( t , n , r ) { var e = ! 0 , u = ! 0 ; if ( "function" != typeof t ) throw new Qu ( "Expected a function" ) ; return _u ( r ) && ( e = "leading" in r ? ! ! r . leading : e , u = "trailing" in r ? ! ! r . trailing : u ) , uu ( t , n , { leading : e , maxWait : n , trailing : u } ) } , Ot . thru = Je , Ot . toArray = xu , Ot . toPairs = Ef , Ot . toPairsIn = Of , Ot . toPath = function ( t ) { return nf ( t ) ? l ( t , Ue ) : bu ( t ) ? [ t ] : Cr ( vo ( t ) ) } , Ot . toPlainObject = ku , Ot . transform = function ( t , n , r ) { var e = nf ( t ) , i = e || ef ( t ) || af ( t ) ; if ( n = _e ( n , 4 ) , null == r ) { var o = t && t . constructor ; r = i ? e ? new o : [ ] : _u ( t ) && su ( o ) ? Xi ( _i ( t ) ) : { } } return ( i ? u : On ) ( t , function ( t , e , u ) { return n ( r , t , e , u ) } ) , r } , Ot . unary = function ( t ) { return tu ( t , 1 ) } , Ot . union = ko , Ot . unionBy = Eo , Ot . unionWith = Oo , Ot . uniq = function ( t ) { return t && t . length ? wr ( t ) : [ ] } , Ot . uniqBy = function ( t , n ) { return t && t . length ? wr ( t , _e ( n , 2 ) ) : [ ] } , Ot . uniqWith = function ( t , n ) { return t && t . length ? wr ( t , F , n ) : [ ] } , Ot . unset = function ( t , n ) { var r ; if ( null == t ) r = ! 0 ; else { r = t ; var e = n , e = ke ( e , r ) ? [ e ] : Sr ( e ) ; r = ze ( r , e ) , e = Ue ( Pe ( e ) ) , r = ! ( null != r && ui . call ( r , e ) ) || delete r [ e ] } return r } , Ot . unzip = Ve , Ot . unzipWith = Ke , Ot . update = function ( t , n , r ) { return null == t ? t : pr ( t , n , ( "function" == typeof r ? r : Mu ) ( Rn ( t , n ) ) , void 0 ) } , Ot . updateWith = function ( t , n , r , e ) { return e = "function" == typeof e ? e : F , null != t && ( t = pr ( t , n , ( "function" == typeof r ? r : Mu ) ( Rn ( t , n ) ) , e ) ) , t } , Ot . values = Wu , Ot . valuesIn = function ( t ) { return null == t ? [ ] : I ( t , Ru ( t ) ) } , Ot . without = So , Ot . words = Uu , Ot . wrap = function ( t , n ) { return n = null == n ? Mu : n , Jo ( n , t ) } , Ot . xor = Io , Ot . xorBy = Ro , Ot . xorWith = zo , Ot . zip = Wo , Ot . zipObject = function ( t , n ) { return Er ( t || [ ] , n || [ ] , sn ) } , Ot . zipObjectDeep = function ( t , n ) { return Er ( t || [ ] , n || [ ] , pr ) } , Ot . zipWith = Bo , Ot . entries = Ef , Ot . entriesIn = Of , Ot . extend = pf , Ot . extendWith = _f , Tu ( Ot , Ot ) , Ot . add = Kf , Ot . attempt = Cf , Ot . camelCase = Sf , Ot . capitalize = Bu , Ot . ceil = Gf , Ot . clamp = function ( t , n , r ) { return r === F && ( r = n , n = F ) , r !== F && ( r = Au ( r ) , r = r === r ? r : 0 ) , n !== F && ( n = Au ( n ) , n = n === n ? n : 0 ) , dn ( Au ( t ) , n , r ) } , Ot . clone = function ( t ) { return yn ( t , ! 1 , ! 0 ) } , Ot . cloneDeep = function ( t ) { return yn ( t , ! 0 , ! 0 ) } , Ot . cloneDeepWith = function ( t , n ) { return yn ( t , ! 0 , ! 0 , n ) } , Ot . cloneWith = function ( t , n ) { return yn ( t , ! 1 , ! 0 , n ) } , Ot . conformsTo = function ( t , n ) { return null == n || xn ( t , n , Iu ( n ) ) } , Ot . deburr = Lu , Ot . defaultTo = function ( t , n ) { return null == t || t !== t ? n : t } , Ot . divide = Jf , Ot . endsWith = function ( t , n , r ) { t = Eu ( t ) , n = jr ( n ) ; var e = t . length , e = r = r === F ? e : dn ( wu ( r ) , 0 , e ) ; return r -= n . length , 0 <= r && t . slice ( r , e ) == n } , Ot . eq = fu , Ot . escape = function ( t ) { return ( t = Eu ( t ) ) && H . test ( t ) ? t . replace ( J , rn ) : t } , Ot . escapeRegExp = function ( t ) { return ( t = Eu ( t ) ) && ot . test ( t ) ? t . replace ( it , "\\$&" ) : t } , Ot . every = function ( t , n , r ) { var e = nf ( t ) ? o : mn ; return r && Ae ( t , n , r ) && ( n = F ) , e ( t , _e ( n , 3 ) ) } , Ot