/ * *
* simplemde v1 . 11.2
* Copyright Next Step Webs , Inc .
* @ link https : //github.com/NextStepWebs/simplemde-markdown-editor
* @ license MIT
* /
! 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 e ( t , n , r ) { function i ( a , l ) { if ( ! n [ a ] ) { if ( ! t [ a ] ) { var s = "function" == typeof require && require ; if ( ! l && s ) return s ( a , ! 0 ) ; if ( o ) return o ( a , ! 0 ) ; var u = new Error ( "Cannot find module '" + a + "'" ) ; throw u . code = "MODULE_NOT_FOUND" , u } var c = n [ a ] = { exports : { } } ; t [ a ] [ 0 ] . call ( c . exports , function ( e ) { var n = t [ a ] [ 1 ] [ e ] ; return i ( n ? n : e ) } , c , c . exports , e , t , n , r ) } return n [ a ] . exports } for ( var o = "function" == typeof require && require , a = 0 ; a < r . length ; a ++ ) i ( r [ a ] ) ; return i } ( { 1 : [ function ( t , n , r ) { ! function ( t , i ) { "object" == typeof r && "undefined" != typeof n ? n . exports = i ( ) : "function" == typeof e && e . amd ? e ( i ) : t . CodeMirror = i ( ) } ( this , function ( ) { "use strict" ; function e ( e ) { return new RegExp ( "(^|\\s)" + e + "(?:$|\\s)\\s*" ) } function t ( e ) { for ( var t = e . childNodes . length ; t > 0 ; -- t ) e . removeChild ( e . firstChild ) ; return e } function n ( e , n ) { return t ( e ) . appendChild ( n ) } function r ( e , t , n , r ) { var i = document . createElement ( e ) ; if ( n && ( i . className = n ) , r && ( i . style . cssText = r ) , "string" == typeof t ) i . appendChild ( document . createTextNode ( t ) ) ; else if ( t ) for ( var o = 0 ; o < t . length ; ++ o ) i . appendChild ( t [ o ] ) ; return i } function i ( e , t ) { if ( 3 == t . nodeType && ( t = t . parentNode ) , e . contains ) return e . contains ( t ) ; do if ( 11 == t . nodeType && ( t = t . host ) , t == e ) return ! 0 ; while ( t = t . parentNode ) } function o ( ) { var e ; try { e = document . activeElement } catch ( t ) { e = document . body || null } for ( ; e && e . root && e . root . activeElement ; ) e = e . root . activeElement ; return e } function a ( t , n ) { var r = t . className ; e ( n ) . test ( r ) || ( t . className += ( r ? " " : "" ) + n ) } function l ( t , n ) { for ( var r = t . split ( " " ) , i = 0 ; i < r . length ; i ++ ) r [ i ] && ! e ( r [ i ] ) . test ( n ) && ( n += " " + r [ i ] ) ; return n } function s ( e ) { var t = Array . prototype . slice . call ( arguments , 1 ) ; return function ( ) { return e . apply ( null , t ) } } function u ( e , t , n ) { t || ( t = { } ) ; for ( var r in e ) ! e . hasOwnProperty ( r ) || n === ! 1 && t . hasOwnProperty ( r ) || ( t [ r ] = e [ r ] ) ; return t } function c ( e , t , n , r , i ) { null == t && ( t = e . search ( /[^\s\u00a0]/ ) , t == - 1 && ( t = e . length ) ) ; for ( var o = r || 0 , a = i || 0 ; ; ) { var l = e . indexOf ( "\t" , o ) ; if ( l < 0 || l >= t ) return a + ( t - o ) ; a += l - o , a += n - a % n , o = l + 1 } } function f ( ) { this . id = null } function d ( e , t ) { for ( var n = 0 ; n < e . length ; ++ n ) if ( e [ n ] == t ) return n ; return - 1 } function h ( e , t , n ) { for ( var r = 0 , i = 0 ; ; ) { var o = e . indexOf ( "\t" , r ) ; o == - 1 && ( o = e . length ) ; var a = o - r ; if ( o == e . length || i + a >= t ) return r + Math . min ( a , t - i ) ; if ( i += o - r , i += n - i % n , r = o + 1 , i >= t ) return r } } function p ( e ) { for ( ; Na . length <= e ; ) Na . push ( m ( Na ) + " " ) ; return Na [ e ] } function m ( e ) { return e [ e . length - 1 ] } function g ( e , t ) { for ( var n = [ ] , r = 0 ; r < e . length ; r ++ ) n [ r ] = t ( e [ r ] , r ) ; return n } function v ( e , t , n ) { for ( var r = 0 , i = n ( t ) ; r < e . length && n ( e [ r ] ) <= i ; ) r ++ ; e . splice ( r , 0 , t ) } function y ( ) { } function x ( e , t ) { var n ; return Object . create ? n = Object . create ( e ) : ( y . prototype = e , n = new y ) , t && u ( t , n ) , n } function b ( e ) { return /\w/ . test ( e ) || e > " " && ( e . toUpperCase ( ) != e . toLowerCase ( ) || Oa . test ( e ) ) } function w ( e , t ) { return t ? ! ! ( t . source . indexOf ( "\\w" ) > - 1 && b ( e ) ) || t . test ( e ) : b ( e ) } function k ( e ) { for ( var t in e ) if ( e . hasOwnProperty ( t ) && e [ t ] ) return ! 1 ; return ! 0 } function S ( e ) { return e . charCodeAt ( 0 ) >= 768 && Ea . test ( e ) } function C ( e , t , n ) { var i = this ; this . input = n , i . scrollbarFiller = r ( "div" , null , "CodeMirror-scrollbar-filler" ) , i . scrollbarFiller . setAttribute ( "cm-not-content" , "true" ) , i . gutterFiller = r ( "div" , null , "CodeMirror-gutter-filler" ) , i . gutterFiller . setAttribute ( "cm-not-content" , "true" ) , i . lineDiv = r ( "div" , null , "CodeMirror-code" ) , i . selectionDiv = r ( "div" , null , null , "position: relative; z-index: 1" ) , i . cursorDiv = r ( "div" , null , "CodeMirror-cursors" ) , i . measure = r ( "div" , null , "CodeMirror-measure" ) , i . lineMeasure = r ( "div" , null , "CodeMirror-measure" ) , i . lineSpace = r ( "div" , [ i . measure , i . lineMeasure , i . selectionDiv , i . cursorDiv , i . lineDiv ] , null , "position: relative; outline: none" ) , i . mover = r ( "div" , [ r ( "div" , [ i . lineSpace ] , "CodeMirror-lines" ) ] , null , "position: relative" ) , i . sizer = r ( "div" , [ i . mover ] , "CodeMirror-sizer" ) , i . sizerWidth = null , i . heightForcer = r ( "div" , null , null , "position: absolute; height: " + Ca + "px; width: 1px;" ) , i . gutters = r ( "div" , null , "CodeMirror-gutters" ) , i . lineGutter = null , i . sc
a = "left" ; if ( "right" == n && i == s - l ) for ( ; u < e . length - 3 && e [ u + 3 ] == e [ u + 4 ] && ! e [ u + 5 ] . insertLeft ; ) r = e [ ( u += 3 ) + 2 ] , a = "right" ; break } return { node : r , start : i , end : o , collapse : a , coverStart : l , coverEnd : s } } function en ( e , t ) { var n = Ja ; if ( "left" == t ) for ( var r = 0 ; r < e . length && ( n = e [ r ] ) . left == n . right ; r ++ ) ; else for ( var i = e . length - 1 ; i >= 0 && ( n = e [ i ] ) . left == n . right ; i -- ) ; return n } function tn ( e , t , n , r ) { var i , o = Qt ( t . map , n , r ) , a = o . node , l = o . start , s = o . end , u = o . collapse ; if ( 3 == a . nodeType ) { for ( var c = 0 ; c < 4 ; c ++ ) { for ( ; l && S ( t . line . text . charAt ( o . coverStart + l ) ) ; ) -- l ; for ( ; o . coverStart + s < o . coverEnd && S ( t . line . text . charAt ( o . coverStart + s ) ) ; ) ++ s ; if ( i = na && ra < 9 && 0 == l && s == o . coverEnd - o . coverStart ? a . parentNode . getBoundingClientRect ( ) : en ( va ( a , l , s ) . getClientRects ( ) , r ) , i . left || i . right || 0 == l ) break ; s = l , l -= 1 , u = "right" } na && ra < 11 && ( i = nn ( e . display . measure , i ) ) } else { l > 0 && ( u = r = "right" ) ; var f ; i = e . options . lineWrapping && ( f = a . getClientRects ( ) ) . length > 1 ? f [ "right" == r ? f . length - 1 : 0 ] : a . getBoundingClientRect ( ) } if ( na && ra < 9 && ! l && ( ! i || ! i . left && ! i . right ) ) { var d = a . parentNode . getClientRects ( ) [ 0 ] ; i = d ? { left : d . left , right : d . left + yn ( e . display ) , top : d . top , bottom : d . bottom } : Ja } for ( var h = i . top - t . rect . top , p = i . bottom - t . rect . top , m = ( h + p ) / 2 , g = t . view . measure . heights , v = 0 ; v < g . length - 1 && ! ( m < g [ v ] ) ; v ++ ) ; var y = v ? g [ v - 1 ] : 0 , x = g [ v ] , b = { left : ( "right" == u ? i . right : i . left ) - t . rect . left , right : ( "left" == u ? i . left : i . right ) - t . rect . left , top : y , bottom : x } ; return i . left || i . right || ( b . bogus = ! 0 ) , e . options . singleCursorHeightPerLine || ( b . rtop = h , b . rbottom = p ) , b } function nn ( e , t ) { if ( ! window . screen || null == screen . logicalXDPI || screen . logicalXDPI == screen . deviceXDPI || ! Ue ( 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 rn ( 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 on ( e ) { e . display . externalMeasure = null , t ( e . display . lineMeasure ) ; for ( var n = 0 ; n < e . display . view . length ; n ++ ) rn ( e . display . view [ n ] ) } function an ( e ) { on ( e ) , e . display . cachedCharWidth = e . display . cachedTextHeight = e . display . cachedPaddingH = null , e . options . lineWrapping || ( e . display . maxLineChanged = ! 0 ) , e . display . lineNumChars = null } function ln ( ) { return window . pageXOffset || ( document . documentElement || document . body ) . scrollLeft } function sn ( ) { return window . pageYOffset || ( document . documentElement || document . body ) . scrollTop } function un ( e , t , n , r , i ) { if ( ! i && t . widgets ) for ( var o = 0 ; o < t . widgets . length ; ++ o ) if ( t . widgets [ o ] . above ) { var a = Bt ( t . widgets [ o ] ) ; n . top += a , n . bottom += a } if ( "line" == r ) return n ; r || ( r = "local" ) ; var l = pe ( t ) ; if ( "local" == r ? l += Ft ( e . display ) : l -= e . display . viewOffset , "page" == r || "window" == r ) { var s = e . display . lineSpace . getBoundingClientRect ( ) ; l += s . top + ( "window" == r ? 0 : sn ( ) ) ; var u = s . left + ( "window" == r ? 0 : ln ( ) ) ; n . left += u , n . right += u } return n . top += l , n . bottom += l , n } function cn ( e , t , n ) { if ( "div" == n ) return t ; var r = t . left , i = t . top ; if ( "page" == n ) r -= ln ( ) , i -= sn ( ) ; 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 fn ( e , t , n , r , i ) { return r || ( r = L ( e . doc , t . line ) ) , un ( e , r , Kt ( e , r , t . ch , i ) , n ) } function dn ( e , t , n , r , i , o ) { function a ( t , a ) { var l = Jt ( e , i , t , a ? "right" : "left" , o ) ; return a ? l . left = l . right : l . right = l . left , un ( e , r , l , n ) } function l ( e , t ) { var n = s [ t ] , r = n . level % 2 ; return e == ye ( n ) && t && n . level < s [ t - 1 ] . level ? ( n = s [ -- t ] , e = xe ( n ) - ( n . level % 2 ? 0 : 1 ) , r = ! 0 ) : e == xe ( n ) && t < s . length - 1 && n . level < s [ t + 1 ] . level && ( n = s [ ++ t ] , e = ye ( n ) - n . level % 2 , r = ! 1 ) , r && e == n . to && e > n . from ? a ( e - 1 ) : a ( e , r ) } r = r || L ( e . doc , t . line ) , i || ( i = Zt ( e , r ) ) ; var s = Me ( r ) , u = t . ch ; if ( ! s ) return a ( u ) ; var c = Se ( s , u ) , f = l ( u , c ) ; return null != _a && ( f . other = l ( u , _a ) ) , f } function hn ( e , t ) { var n = 0 ; t = W ( e . doc , t ) , e . options . lineWrapping || ( n = yn ( e . display ) * t . ch ) ; var r = L ( e . doc , t . line ) , i = pe ( r ) + Ft ( e . display ) ; return { left : n , right : n , top : i , bottom : i + r . height } } function pn ( e , t , n , r ) { var i = I ( e , t ) ; return i . xRel = r , n && ( i . outside = ! 0 ) , i } function mn ( e , t , n ) { var r = e . doc ; if ( n += e . display . viewOffset , n < 0 ) return pn ( r . first , 0 , ! 0 , - 1 ) ; var i = O ( r , n ) , o = r . first + r . size - 1 ; if ( i > o ) return pn ( r . first + r . size - 1 , L ( r , o ) . text . length , ! 0 , 1 ) ; t < 0 && ( t = 0 ) ; for ( var a = L ( r , i ) ; ; ) { var l = gn ( e , a , i , t , n ) , s =
Ur ( e , function ( e ) { return Qr ( e , n , t . from . line , t . to . line + 1 ) } , ! 0 ) , n } function $r ( e ) { for ( ; e . length ; ) { var t = m ( e ) ; if ( ! t . ranges ) break ; e . pop ( ) } } function Vr ( e , t ) { return t ? ( $r ( e . done ) , m ( e . done ) ) : e . done . length && ! m ( e . done ) . ranges ? m ( e . done ) : e . done . length > 1 && ! e . done [ e . done . length - 2 ] . ranges ? ( e . done . pop ( ) , m ( e . done ) ) : void 0 } function Kr ( e , t , n , r ) { var i = e . history ; i . undone . length = 0 ; var o , a , l = + new Date ; if ( ( i . lastOp == r || i . lastOrigin == t . origin && t . origin && ( "+" == t . origin . charAt ( 0 ) && e . cm && i . lastModTime > l - e . cm . options . historyEventDelay || "*" == t . origin . charAt ( 0 ) ) ) && ( o = Vr ( i , i . lastOp == r ) ) ) a = m ( o . changes ) , 0 == _ ( t . from , t . to ) && 0 == _ ( t . from , a . to ) ? a . to = _r ( t ) : o . changes . push ( Yr ( e , t ) ) ; else { var s = m ( i . done ) ; for ( s && s . ranges || Jr ( e . sel , i . done ) , o = { changes : [ Yr ( e , t ) ] , generation : i . generation } , i . done . push ( o ) ; i . done . length > i . undoDepth ; ) i . done . shift ( ) , i . done [ 0 ] . ranges || i . done . shift ( ) } i . done . push ( n ) , i . generation = ++ i . maxGeneration , i . lastModTime = i . lastSelTime = l , i . lastOp = i . lastSelOp = r , i . lastOrigin = i . lastSelOrigin = t . origin , a || Oe ( e , "historyAdded" ) } function Xr ( e , t , n , r ) { var i = t . charAt ( 0 ) ; return "*" == i || "+" == i && n . ranges . length == r . ranges . length && n . somethingSelected ( ) == r . somethingSelected ( ) && new Date - e . history . lastSelTime <= ( e . cm ? e . cm . options . historyEventDelay : 500 ) } function Zr ( e , t , n , r ) { var i = e . history , o = r && r . origin ; n == i . lastSelOp || o && i . lastSelOrigin == o && ( i . lastModTime == i . lastSelTime && i . lastOrigin == o || Xr ( e , o , m ( i . done ) , t ) ) ? i . done [ i . done . length - 1 ] = t : Jr ( t , i . done ) , i . lastSelTime = + new Date , i . lastSelOrigin = o , i . lastSelOp = n , r && r . clearRedo !== ! 1 && $r ( i . undone ) } function Jr ( e , t ) { var n = m ( t ) ; n && n . ranges && n . equals ( e ) || t . push ( e ) } function Qr ( e , t , n , r ) { var i = t [ "spans_" + e . id ] , o = 0 ; e . iter ( Math . max ( e . first , n ) , Math . min ( e . first + e . size , r ) , function ( n ) { n . markedSpans && ( ( i || ( i = t [ "spans_" + e . id ] = { } ) ) [ o ] = n . markedSpans ) , ++ o } ) } function ei ( e ) { if ( ! e ) return null ; for ( var t , n = 0 ; n < e . length ; ++ n ) e [ n ] . marker . explicitlyCleared ? t || ( t = e . slice ( 0 , n ) ) : t && t . push ( e [ n ] ) ; return t ? t . length ? t : null : e } function ti ( e , t ) { var n = t [ "spans_" + e . id ] ; if ( ! n ) return null ; for ( var r = [ ] , i = 0 ; i < t . text . length ; ++ i ) r . push ( ei ( n [ i ] ) ) ; return r } function ni ( e , t ) { var n = ti ( e , t ) , r = X ( e , t ) ; if ( ! n ) return r ; if ( ! r ) return n ; for ( var i = 0 ; i < n . length ; ++ i ) { var o = n [ i ] , a = r [ i ] ; if ( o && a ) e : for ( var l = 0 ; l < a . length ; ++ l ) { for ( var s = a [ l ] , u = 0 ; u < o . length ; ++ u ) if ( o [ u ] . marker == s . marker ) continue e ; o . push ( s ) } else a && ( n [ i ] = a ) } return n } function ri ( e , t , n ) { for ( var r = [ ] , i = 0 ; i < e . length ; ++ i ) { var o = e [ i ] ; if ( o . ranges ) r . push ( n ? Or . prototype . deepCopy . call ( o ) : o ) ; else { var a = o . changes , l = [ ] ; r . push ( { changes : l } ) ; for ( var s = 0 ; s < a . length ; ++ s ) { var u = a [ s ] , c = void 0 ; if ( l . push ( { from : u . from , to : u . to , text : u . text } ) , t ) for ( var f in u ) ( c = f . match ( /^spans_(\d+)$/ ) ) && d ( t , Number ( c [ 1 ] ) ) > - 1 && ( m ( l ) [ f ] = u [ f ] , delete u [ f ] ) } } } return r } function ii ( e , t , n , r ) { if ( e . cm && e . cm . display . shift || e . extend ) { var i = t . anchor ; if ( r ) { var o = _ ( n , i ) < 0 ; o != _ ( r , i ) < 0 ? ( i = n , n = r ) : o != _ ( n , r ) < 0 && ( n = r ) } return new Er ( i , n ) } return new Er ( r || n , n ) } function oi ( e , t , n , r ) { fi ( e , new Or ( [ ii ( e , e . sel . primary ( ) , t , n ) ] , 0 ) , r ) } function ai ( e , t , n ) { for ( var r = [ ] , i = 0 ; i < e . sel . ranges . length ; i ++ ) r [ i ] = ii ( e , e . sel . ranges [ i ] , t [ i ] , null ) ; var o = Pr ( r , e . sel . primIndex ) ; fi ( e , o , n ) } function li ( e , t , n , r ) { var i = e . sel . ranges . slice ( 0 ) ; i [ t ] = n , fi ( e , Pr ( i , e . sel . primIndex ) , r ) } function si ( e , t , n , r ) { fi ( e , Ir ( t , n ) , r ) } function ui ( e , t , n ) { var r = { ranges : t . ranges , update : function ( t ) { var n = this ; this . ranges = [ ] ; for ( var r = 0 ; r < t . length ; r ++ ) n . ranges [ r ] = new Er ( W ( e , t [ r ] . anchor ) , W ( e , t [ r ] . head ) ) } , origin : n && n . origin } ; return Oe ( e , "beforeSelectionChange" , e , r ) , e . cm && Oe ( e . cm , "beforeSelectionChange" , e . cm , r ) , r . ranges != t . ranges ? Pr ( r . ranges , r . ranges . length - 1 ) : t } function ci ( e , t , n ) { var r = e . history . done , i = m ( r ) ; i && i . ranges ? ( r [ r . length - 1 ] = t , di ( e , t , n ) ) : fi ( e , t , n ) } function fi ( e , t , n ) { di ( e , t , n ) , Zr ( e , e . sel , e . cm ? e . cm . curOp . id : NaN , n ) } function di ( e , t , n ) { ( Ie ( e , "beforeSelectionChange" ) || e . cm && Ie ( e . cm , "beforeSelectionChange" ) ) && ( t = ui ( e , t , n ) ) ; var r = n && n . bias || ( _ ( t . primary ( ) . head , e . sel . primary ( ) . head ) < 0 ? - 1 : 1 ) ; hi ( e , mi ( e , t , r , ! 0 ) ) , n && n . scroll === ! 1 || ! e . cm || Qn ( e . cm ) } function hi ( e , t ) { t . equals ( e . sel ) || ( e . sel = t , e . cm && ( e . cm . curOp . updateInput = e . cm . curOp . selectionChanged = ! 0 , Pe ( e . cm ) ) , Ct ( e , "cursorActivity" , e ) ) } function pi ( e ) { hi ( e , mi ( e , e . sel , null , ! 1 ) , Ta ) } function mi ( e , t , n , r ) { for ( var i , o = 0 ; o < t . ran
} function Ro ( e , t , n , r , i ) { var o = e . doc ; e . display . shift = ! 1 , r || ( r = o . sel ) ; var a = e . state . pasteIncoming || "paste" == i , l = Wa ( t ) , s = null ; if ( a && r . ranges . length > 1 ) if ( Ll && Ll . text . join ( "\n" ) == t ) { if ( r . ranges . length % Ll . text . length == 0 ) { s = [ ] ; for ( var u = 0 ; u < Ll . text . length ; u ++ ) s . push ( o . splitLines ( Ll . text [ u ] ) ) } } else l . length == r . ranges . length && ( s = g ( l , function ( e ) { return [ e ] } ) ) ; for ( var c , f = r . ranges . length - 1 ; f >= 0 ; f -- ) { var d = r . ranges [ f ] , h = d . from ( ) , p = d . to ( ) ; d . empty ( ) && ( n && n > 0 ? h = I ( h . line , h . ch - n ) : e . state . overwrite && ! a ? p = I ( p . line , Math . min ( L ( o , p . line ) . text . length , p . ch + m ( l ) . length ) ) : Ll && Ll . lineWise && Ll . text . join ( "\n" ) == t && ( h = p = I ( h . line , 0 ) ) ) , c = e . curOp . updateInput ; var v = { from : h , to : p , text : s ? s [ f % s . length ] : l , origin : i || ( a ? "paste" : e . state . cutIncoming ? "cut" : "+input" ) } ; wi ( e . doc , v ) , Ct ( e , "inputRead" , e , v ) } t && ! a && Ho ( e , t ) , Qn ( e ) , e . curOp . updateInput = c , e . curOp . typing = ! 0 , e . state . pasteIncoming = e . state . cutIncoming = ! 1 } function Do ( e , t ) { var n = e . clipboardData && e . clipboardData . getData ( "Text" ) ; if ( n ) return e . preventDefault ( ) , t . isReadOnly ( ) || t . options . disableInput || ur ( t , function ( ) { return Ro ( t , n , 0 , null , "paste" ) } ) , ! 0 } function Ho ( e , t ) { if ( e . options . electricChars && e . options . smartIndent ) for ( var n = e . doc . sel , r = n . ranges . length - 1 ; r >= 0 ; r -- ) { var i = n . ranges [ r ] ; if ( ! ( i . head . ch > 100 || r && n . ranges [ r - 1 ] . head . line == i . head . line ) ) { var o = e . getModeAt ( i . head ) , a = ! 1 ; if ( o . electricChars ) { for ( var l = 0 ; l < o . electricChars . length ; l ++ ) if ( t . indexOf ( o . electricChars . charAt ( l ) ) > - 1 ) { a = Io ( e , i . head . line , "smart" ) ; break } } else o . electricInput && o . electricInput . test ( L ( e . doc , i . head . line ) . text . slice ( 0 , i . head . ch ) ) && ( a = Io ( e , i . head . line , "smart" ) ) ; a && Ct ( e , "electricInput" , e , i . head . line ) } } } function Bo ( e ) { for ( var t = [ ] , n = [ ] , r = 0 ; r < e . doc . sel . ranges . length ; r ++ ) { var i = e . doc . sel . ranges [ r ] . head . line , o = { anchor : I ( i , 0 ) , head : I ( i + 1 , 0 ) } ; n . push ( o ) , t . push ( e . getRange ( o . anchor , o . head ) ) } return { text : t , ranges : n } } function Wo ( e , t ) { e . setAttribute ( "autocorrect" , "off" ) , e . setAttribute ( "autocapitalize" , "off" ) , e . setAttribute ( "spellcheck" , ! ! t ) } function Fo ( ) { var e = r ( "textarea" , null , null , "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none" ) , t = r ( "div" , [ e ] , null , "overflow: hidden; position: relative; width: 3px; height: 0px;" ) ; return ia ? e . style . width = "1000px" : e . setAttribute ( "wrap" , "off" ) , fa && ( e . style . border = "1px solid black" ) , Wo ( e ) , t } function zo ( e ) { var t = e . optionHandlers , n = e . helpers = { } ; e . prototype = { constructor : e , focus : function ( ) { window . focus ( ) , this . display . input . focus ( ) } , setOption : function ( e , n ) { var r = this . options , i = r [ e ] ; r [ e ] == n && "mode" != e || ( r [ e ] = n , t . hasOwnProperty ( e ) && cr ( this , t [ e ] ) ( this , n , i ) , Oe ( this , "optionChange" , this , e ) ) } , getOption : function ( e ) { return this . options [ e ] } , getDoc : function ( ) { return this . doc } , addKeyMap : function ( e , t ) { this . state . keyMaps [ t ? "push" : "unshift" ] ( ro ( e ) ) } , removeKeyMap : function ( e ) { for ( var t = this . state . keyMaps , n = 0 ; n < t . length ; ++ n ) if ( t [ n ] == e || t [ n ] . name == e ) return t . splice ( n , 1 ) , ! 0 } , addOverlay : fr ( function ( t , n ) { var r = t . token ? t : e . getMode ( this . options , t ) ; if ( r . startState ) throw new Error ( "Overlays may not be stateful." ) ; v ( this . state . overlays , { mode : r , modeSpec : t , opaque : n && n . opaque , priority : n && n . priority || 0 } , function ( e ) { return e . priority } ) , this . state . modeGen ++ , hr ( this ) } ) , removeOverlay : fr ( function ( e ) { for ( var t = this , n = this . state . overlays , r = 0 ; r < n . length ; ++ r ) { var i = n [ r ] . modeSpec ; if ( i == e || "string" == typeof e && i . name == e ) return n . splice ( r , 1 ) , t . state . modeGen ++ , void hr ( t ) } } ) , indentLine : fr ( function ( e , t , n ) { "string" != typeof t && "number" != typeof t && ( t = null == t ? this . options . smartIndent ? "smart" : "prev" : t ? "add" : "subtract" ) , E ( this . doc , e ) && Io ( this , e , t , n ) } ) , indentSelection : fr ( function ( e ) { for ( var t = this , n = this . doc . sel . ranges , r = - 1 , i = 0 ; i < n . length ; i ++ ) { var o = n [ i ] ; if ( o . empty ( ) ) o . head . line > r && ( Io ( t , o . head . line , e , ! 0 ) , r = o . head . line , i == t . doc . sel . primIndex && Qn ( t ) ) ; else { var a = o . from ( ) , l = o . to ( ) , s = Math . max ( r , a . line ) ; r = Math . min ( t . lastLine ( ) , l . line - ( l . ch ? 0 : 1 ) ) + 1 ; for ( var u = s ; u < r ; ++ u ) Io ( t , u , e ) ; var c = t . doc . sel . ranges ; 0 == a . ch && n . length == c . length && c [ i ] . from ( ) . ch > 0 && li ( t . doc , i , new Er ( a , c [ i ] . to ( ) ) , Ta ) } } } ) , getTokenAt : function ( e , t ) { return it ( this , e , t ) } , getLineTokens : function ( e , t ) { return it ( this , I ( e ) , t , ! 0 ) } , getTokenTypeAt : function ( e ) { e = W ( this . doc , e ) ; var t , n = Qe ( this , L ( this . doc , e . line ) ) ,
if ( null != l . to && ( i = I ( t ? a : N ( a ) , l . to ) , 1 == e ) ) return i } return r && { from : r , to : i } } , Hi . prototype . changed = function ( ) { var e = this . find ( - 1 , ! 0 ) , t = this , n = this . doc . cm ; e && n && ur ( n , function ( ) { var r = e . line , i = N ( e . line ) , o = Xt ( n , i ) ; if ( o && ( rn ( o ) , n . curOp . selectionChanged = n . curOp . forceUpdate = ! 0 ) , n . curOp . updateMaxLine = ! 0 , ! de ( t . doc , r ) && null != t . height ) { var a = t . height ; t . height = null ; var l = Bt ( t ) - a ; l && A ( r , r . height + l ) } } ) } , Hi . prototype . attachLine = function ( e ) { if ( ! this . lines . length && this . doc . cm ) { var t = this . doc . cm . curOp ; t . maybeHiddenMarkers && d ( t . maybeHiddenMarkers , this ) != - 1 || ( t . maybeUnhiddenMarkers || ( t . maybeUnhiddenMarkers = [ ] ) ) . push ( this ) } this . lines . push ( e ) } , Hi . prototype . detachLine = function ( e ) { if ( this . lines . splice ( d ( this . lines , e ) , 1 ) , ! this . lines . length && this . doc . cm ) { var t = this . doc . cm . curOp ; ( t . maybeHiddenMarkers || ( t . maybeHiddenMarkers = [ ] ) ) . push ( this ) } } , _e ( Wi ) , Wi . prototype . clear = function ( ) { var e = this ; if ( ! this . explicitlyCleared ) { this . explicitlyCleared = ! 0 ; for ( var t = 0 ; t < this . markers . length ; ++ t ) e . markers [ t ] . clear ( ) ; Ct ( this , "clear" ) } } , Wi . prototype . find = function ( e , t ) { return this . primary . find ( e , t ) } ; var ll = 0 , sl = function ( e , t , n , r ) { if ( ! ( this instanceof sl ) ) return new sl ( e , t , n , r ) ; null == n && ( n = 0 ) , Ii . call ( this , [ new Pi ( [ new st ( "" , null ) ] ) ] ) , this . first = n , this . scrollTop = this . scrollLeft = 0 , this . cantEdit = ! 1 , this . cleanGeneration = 1 , this . frontier = n ; var i = I ( n , 0 ) ; this . sel = Ir ( i ) , this . history = new Gr ( null ) , this . id = ++ ll , this . modeOption = t , this . lineSep = r , this . extend = ! 1 , "string" == typeof e && ( e = this . splitLines ( e ) ) , jr ( this , { from : i , to : i , text : e } ) , fi ( this , Ir ( i ) , Ta ) } ; sl . prototype = x ( Ii . prototype , { constructor : sl , iter : function ( e , t , n ) { n ? this . iterN ( e - this . first , t - e , n ) : this . iterN ( this . first , this . first + this . size , e ) } , insert : function ( e , t ) { for ( var n = 0 , r = 0 ; r < t . length ; ++ r ) n += t [ r ] . height ; this . insertInner ( e - this . first , t , n ) } , remove : function ( e , t ) { this . removeInner ( e - this . first , t ) } , getValue : function ( e ) { var t = M ( this , this . first , this . first + this . size ) ; return e === ! 1 ? t : t . join ( e || this . lineSeparator ( ) ) } , setValue : dr ( function ( e ) { var t = I ( this . first , 0 ) , n = this . first + this . size - 1 ; wi ( this , { from : t , to : I ( n , L ( this , n ) . text . length ) , text : this . splitLines ( e ) , origin : "setValue" , full : ! 0 } , ! 0 ) , fi ( this , Ir ( t ) ) } ) , replaceRange : function ( e , t , n , r ) { t = W ( this , t ) , n = n ? W ( this , n ) : t , Mi ( this , e , t , n , r ) } , getRange : function ( e , t , n ) { var r = T ( this , W ( this , e ) , W ( this , t ) ) ; return n === ! 1 ? r : r . join ( n || this . lineSeparator ( ) ) } , getLine : function ( e ) { var t = this . getLineHandle ( e ) ; return t && t . text } , getLineHandle : function ( e ) { if ( E ( this , e ) ) return L ( this , e ) } , getLineNumber : function ( e ) { return N ( e ) } , getLineHandleVisualStart : function ( e ) { return "number" == typeof e && ( e = L ( this , e ) ) , se ( e ) } , lineCount : function ( ) { return this . size } , firstLine : function ( ) { return this . first } , lastLine : function ( ) { return this . first + this . size - 1 } , clipPos : function ( e ) { return W ( this , e ) } , getCursor : function ( e ) { var t , n = this . sel . primary ( ) ; return t = null == e || "head" == e ? n . head : "anchor" == e ? n . anchor : "end" == e || "to" == e || e === ! 1 ? n . to ( ) : n . from ( ) } , listSelections : function ( ) { return this . sel . ranges } , somethingSelected : function ( ) { return this . sel . somethingSelected ( ) } , setCursor : dr ( function ( e , t , n ) { si ( this , W ( this , "number" == typeof e ? I ( e , t || 0 ) : e ) , null , n ) } ) , setSelection : dr ( function ( e , t , n ) { si ( this , W ( this , e ) , W ( this , t || e ) , n ) } ) , extendSelection : dr ( function ( e , t , n ) { oi ( this , W ( this , e ) , t && W ( this , t ) , n ) } ) , extendSelections : dr ( function ( e , t ) { ai ( this , z ( this , e ) , t ) } ) , extendSelectionsBy : dr ( function ( e , t ) { var n = g ( this . sel . ranges , e ) ; ai ( this , z ( this , n ) , t ) } ) , setSelections : dr ( function ( e , t , n ) { var r = this ; if ( e . length ) { for ( var i = [ ] , o = 0 ; o < e . length ; o ++ ) i [ o ] = new Er ( W ( r , e [ o ] . anchor ) , W ( r , e [ o ] . head ) ) ; null == t && ( t = Math . min ( e . length - 1 , this . sel . primIndex ) ) , fi ( this , Pr ( i , t ) , n ) } } ) , addSelection : dr ( function ( e , t , n ) { var r = this . sel . ranges . slice ( 0 ) ; r . push ( new Er ( W ( this , e ) , W ( this , t || e ) ) ) , fi ( this , Pr ( r , r . length - 1 ) , n ) } ) , getSelection : function ( e ) { for ( var t , n = this , r = this . sel . ranges , i = 0 ; i < r . length ; i ++ ) { var o = T ( n , r [ i ] . from ( ) , r [ i ] . to ( ) ) ; t = t ? t . concat ( o ) : o } return e === ! 1 ? t : t . join ( e || this . lineSeparator ( ) ) } , getSelections : function ( e ) { for ( var t = this , n = [ ] , r = this . sel . ranges , i = 0 ; i < r . length ; i ++ ) { var o = T ( t , r [ i ] . from ( ) , r [ i ] . to ( ) ) ; e !== ! 1 && ( o = o . join ( e || t . lineSeparator ( ) ) ) , n [ i ] = o } return n } , replaceSelection : function ( e , t , n ) { for ( var r = [ ] , i = 0
for ( var t , n = e . length , r = n % 3 , i = "" , o = [ ] , a = 16383 , s = 0 , c = n - r ; s < c ; s += a ) o . push ( l ( e , s , s + a > c ? c : s + a ) ) ; return 1 === r ? ( t = e [ n - 1 ] , i += u [ t >> 2 ] , i += u [ t << 4 & 63 ] , i += "==" ) : 2 === r && ( t = ( e [ n - 2 ] << 8 ) + e [ n - 1 ] , i += u [ t >> 10 ] , i += u [ t >> 4 & 63 ] , i += u [ t << 2 & 63 ] , i += "=" ) , o . push ( i ) , o . join ( "" ) } n . byteLength = i , n . toByteArray = o , n . fromByteArray = s ; for ( var u = [ ] , c = [ ] , f = "undefined" != typeof Uint8Array ? Uint8Array : Array , d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" , h = 0 , p = d . length ; h < p ; ++ h ) u [ h ] = d [ h ] , c [ d . charCodeAt ( h ) ] = h ; c [ "-" . charCodeAt ( 0 ) ] = 62 , c [ "_" . charCodeAt ( 0 ) ] = 63 } , { } ] , 3 : [ function ( e , t , n ) { } , { } ] , 4 : [ function ( e , t , n ) { ( function ( t ) { "use strict" ; function r ( ) { try { var e = new Uint8Array ( 1 ) ; return e . _ _proto _ _ = { _ _proto _ _ : Uint8Array . prototype , foo : function ( ) { return 42 } } , 42 === e . foo ( ) && "function" == typeof e . subarray && 0 === e . subarray ( 1 , 1 ) . byteLength } catch ( e ) { return ! 1 } } function i ( ) { return a . TYPED _ARRAY _SUPPORT ? 2147483647 : 1073741823 } function o ( e , t ) { if ( i ( ) < t ) throw new RangeError ( "Invalid typed array length" ) ; return a . TYPED _ARRAY _SUPPORT ? ( e = new Uint8Array ( t ) , e . _ _proto _ _ = a . prototype ) : ( null === e && ( e = new a ( t ) ) , e . length = t ) , e } function a ( e , t , n ) { if ( ! ( a . TYPED _ARRAY _SUPPORT || this instanceof a ) ) return new a ( e , t , n ) ; if ( "number" == typeof e ) { if ( "string" == typeof t ) throw new Error ( "If encoding is specified then the first argument must be a string" ) ; return c ( this , e ) } return l ( this , e , t , n ) } function l ( e , t , n , r ) { if ( "number" == typeof t ) throw new TypeError ( '"value" argument must not be a number' ) ; return "undefined" != typeof ArrayBuffer && t instanceof ArrayBuffer ? h ( e , t , n , r ) : "string" == typeof t ? f ( e , t , n ) : p ( e , t ) } function s ( e ) { if ( "number" != typeof e ) throw new TypeError ( '"size" argument must be a number' ) ; if ( e < 0 ) throw new RangeError ( '"size" argument must not be negative' ) } function u ( e , t , n , r ) { return s ( t ) , t <= 0 ? o ( e , t ) : void 0 !== n ? "string" == typeof r ? o ( e , t ) . fill ( n , r ) : o ( e , t ) . fill ( n ) : o ( e , t ) } function c ( e , t ) { if ( s ( t ) , e = o ( e , t < 0 ? 0 : 0 | m ( t ) ) , ! a . TYPED _ARRAY _SUPPORT ) for ( var n = 0 ; n < t ; ++ n ) e [ n ] = 0 ; return e } function f ( e , t , n ) { if ( "string" == typeof n && "" !== n || ( n = "utf8" ) , ! a . isEncoding ( n ) ) throw new TypeError ( '"encoding" must be a valid string encoding' ) ; var r = 0 | v ( t , n ) ; e = o ( e , r ) ; var i = e . write ( t , n ) ; return i !== r && ( e = e . slice ( 0 , i ) ) , e } function d ( e , t ) { var n = t . length < 0 ? 0 : 0 | m ( t . length ) ; e = o ( e , n ) ; for ( var r = 0 ; r < n ; r += 1 ) e [ r ] = 255 & t [ r ] ; return e } function h ( e , t , n , r ) { if ( t . byteLength , n < 0 || t . byteLength < n ) throw new RangeError ( "'offset' is out of bounds" ) ; if ( t . byteLength < n + ( r || 0 ) ) throw new RangeError ( "'length' is out of bounds" ) ; return t = void 0 === n && void 0 === r ? new Uint8Array ( t ) : void 0 === r ? new Uint8Array ( t , n ) : new Uint8Array ( t , n , r ) , a . TYPED _ARRAY _SUPPORT ? ( e = t , e . _ _proto _ _ = a . prototype ) : e = d ( e , t ) , e } function p ( e , t ) { if ( a . isBuffer ( t ) ) { var n = 0 | m ( t . length ) ; return e = o ( e , n ) , 0 === e . length ? e : ( t . copy ( e , 0 , 0 , n ) , e ) } if ( t ) { if ( "undefined" != typeof ArrayBuffer && t . buffer instanceof ArrayBuffer || "length" in t ) return "number" != typeof t . length || X ( t . length ) ? o ( e , 0 ) : d ( e , t ) ; if ( "Buffer" === t . type && Q ( t . data ) ) return d ( e , t . data ) } throw new TypeError ( "First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object." ) } function m ( e ) { if ( e >= i ( ) ) throw new RangeError ( "Attempt to allocate Buffer larger than maximum size: 0x" + i ( ) . toString ( 16 ) + " bytes" ) ; return 0 | e } function g ( e ) { return + e != e && ( e = 0 ) , a . alloc ( + e ) } function v ( e , t ) { if ( a . isBuffer ( e ) ) return e . length ; if ( "undefined" != typeof ArrayBuffer && "function" == typeof ArrayBuffer . isView && ( ArrayBuffer . isView ( e ) || e instanceof ArrayBuffer ) ) return e . byteLength ; "string" != typeof e && ( e = "" + e ) ; var n = e . length ; if ( 0 === n ) return 0 ; for ( var r = ! 1 ; ; ) switch ( t ) { case "ascii" : case "latin1" : case "binary" : return n ; case "utf8" : case "utf-8" : case void 0 : return G ( e ) . length ; case "ucs2" : case "ucs-2" : case "utf16le" : case "utf-16le" : return 2 * n ; case "hex" : return n >>> 1 ; case "base64" : return V ( e ) . length ; default : if ( r ) return G ( e ) . length ; t = ( "" + t ) . toLowerCase ( ) , r = ! 0 } } function y ( e , t , n ) { var r = ! 1 ; if ( ( void 0 === t || t < 0 ) && ( t = 0 ) , t > this . length ) return "" ; if ( ( void 0 === n || n > this . length ) && ( n = this . length ) , n <= 0 ) return "" ; if ( n >>>= 0 , t >>>= 0 , n <= t ) return "" ; for ( e || ( e = "utf8" ) ; ; ) switch ( e ) { case "hex" : return I ( this , t , n ) ; case "utf8" : case "utf-8" : return N ( this , t , n ) ; case "ascii" : return E ( this , t , n ) ; case "latin1" : case "binary" : return P ( this , t , n ) ; case "
e . trailingSpaceNewLine = ! 1 , e . prevLine = e . thisLine , e . thisLine = null , null } function s ( t , o ) { var l = t . sol ( ) , s = o . list !== ! 1 , u = o . indentedCode ; o . indentedCode = ! 1 , s && ( o . indentationDiff >= 0 ? ( o . indentationDiff < 4 && ( o . indentation -= o . indentationDiff ) , o . list = null ) : o . indentation > 0 ? o . list = null : o . list = ! 1 ) ; var f = null ; if ( o . indentationDiff >= 4 ) return t . skipToEnd ( ) , u || 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 , d ( o ) ; if ( ! ( a ( o . prevLine ) || o . quote || s || u ) && ( f = t . match ( N ) ) ) return o . header = "=" == f [ 0 ] . charAt ( 0 ) ? 1 : 2 , n . highlightFormatting && ( o . formatting = "header" ) , o . f = o . inline , d ( o ) ; if ( t . eat ( ">" ) ) return o . quote = l ? 1 : o . quote + 1 , n . highlightFormatting && ( o . formatting = "quote" ) , t . eatSpace ( ) , d ( o ) ; if ( "[" === t . peek ( ) ) return i ( t , o , y ) ; if ( t . match ( L , ! 0 ) ) return o . hr = ! 0 , S . hr ; if ( f = t . match ( T ) ) { var h = f [ 1 ] ? "ol" : "ul" ; for ( 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 ( M , ! 1 ) && ( o . taskList = ! 0 ) , o . f = o . inline , n . highlightFormatting && ( o . formatting = [ "list" , "list-" + h ] ) , d ( o ) } return n . fencedCodeBlocks && ( f = t . match ( E , ! 0 ) ) ? ( o . fencedChars = f [ 1 ] , o . localMode = r ( f [ 2 ] ) , o . localMode && ( o . localState = e . startState ( o . localMode ) ) , o . f = o . block = c , n . highlightFormatting && ( o . formatting = "code-block" ) , o . code = - 1 , d ( o ) ) : i ( t , o , o . inline ) } function u ( 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 c ( 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 = d ( t ) ; return t . code = 0 , r } function d ( 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 . image && t . push ( S . image ) , e . imageAltText && t . push ( S . imageAltText , "link" ) , e . imageMarker && t . push ( S . imageMarker ) ) , 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 h ( e , t ) { if ( e . match ( O , ! 0 ) ) return d ( t ) } function p ( t , r ) { var i = r . text ( t , r ) ; if ( "undefined" != typeof i ) return i ; if ( r . list ) return r . list = null , d ( r ) ; if ( r . taskList ) { var a = "x" !== t . match ( M , ! 0 ) [ 1 ] ; return a ? r . taskOpen = ! 0 : r . taskClosed = ! 0 , n . highlightFormatting && ( r . formatting = "task" ) , r . taskList = ! 1 , d ( r ) } if ( r . taskOpen = ! 1 , r . taskClosed = ! 1 , r . header && t . match ( /^#+$/ , ! 0 ) ) return n . highlightFormatting && ( r . formatting = "header" ) , d ( r ) ; var l = t . sol ( ) , s = t . next ( ) ; if ( r . linkTitle ) { r . linkTitle = ! 1 ; var c = s ; "(" === s && ( c = ")" ) , c = ( c + "" ) . replace ( /([.?*+^$[\]\\(){}|-])/g , "\\$1" ) ; var f = "^\\s*(?:[^" + c + "\\\\]+|\\\\\\\\|\\\\.)" + c ; if ( t . match ( new RegExp ( f ) , ! 0 ) ) return S . linkHref } if ( "`" === s ) { var h = r . formatting ; n . highlightFormatting && ( r . formatting = " co
list : /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/ , html : /^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/ , def : /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/ , table : c , paragraph : /^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/ , text : /^[^\n]+/ } ; h . bullet = /(?:[*+-]|\d+\.)/ , h . item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/ , h . item = u ( h . item , "gm" ) ( /bull/g , h . bullet ) ( ) , h . list = u ( h . list ) ( /bull/g , h . bullet ) ( "hr" , "\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))" ) ( "def" , "\\n+(?=" + h . def . source + ")" ) ( ) , h . blockquote = u ( h . blockquote ) ( "def" , h . def ) ( ) , h . _tag = "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b" , h . html = u ( h . html ) ( "comment" , /<!--[\s\S]*?-->/ ) ( "closed" , /<(tag)[\s\S]+?<\/\1>/ ) ( "closing" , /<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/ ) ( /tag/g , h . _tag ) ( ) , h . paragraph = u ( h . paragraph ) ( "hr" , h . hr ) ( "heading" , h . heading ) ( "lheading" , h . lheading ) ( "blockquote" , h . blockquote ) ( "tag" , "<" + h . _tag ) ( "def" , h . def ) ( ) , h . normal = f ( { } , h ) , h . gfm = f ( { } , h . normal , { fences : /^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/ , paragraph : /^/ , heading : /^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/ } ) , h . gfm . paragraph = u ( h . paragraph ) ( "(?!" , "(?!" + h . gfm . fences . source . replace ( "\\1" , "\\2" ) + "|" + h . list . source . replace ( "\\1" , "\\3" ) + "|" ) ( ) , h . tables = f ( { } , h . gfm , { nptable : /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/ , table : /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/ } ) , t . rules = h , 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 , u , c , 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" ) } , c = 0 ; c < s . align . length ; c ++ ) / ^ * - + : * $ / . test ( s . align [ c ] ) ? s . align [ c ] = "right" : /^ *:-+: *$/ . test ( s . align [ c ] ) ? s . align [ c ] = "center" : /^ *:-+ *$/ . test ( s . align [ c ] ) ? s . align [ c ] = "left" : s . align [ c ] = null ; for ( c = 0 ; c < s . cells . length ; c ++ ) s . cells [ c ] = s . cells [ c ] . 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 , c = 0 ; c < f ; c ++ ) s = o [ c ] , u = s . length , s = s . replace ( /^ *([*+-]|\d+\.) +/ , "" ) , ~ s . indexOf ( "\n " ) && ( u -= s . length , s = this . options . pedantic ? s . replace ( /^ {1,4}/gm , "" ) : s . replace ( new RegExp ( "^ {1," + u + "}" , "gm" ) , "" ) ) , this . options . smartLists && c !== f - 1 && ( l = h . bullet . exec ( o [ c + 1 ] ) [ 0 ] , a === l || a . length > 1 && l . length > 1 || ( e = o . slice ( c + 1 ) . join ( "\n" ) + e , c = f - 1 ) ) , i = r || /\n\n(?!\s*$)/ . test ( s ) , c !== 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 . pu
a = a . split ( "_" ) . join ( "" ) ) : "strikethrough" == t && ( a = a . split ( "~~" ) . join ( "" ) ) , i . replaceSelection ( l + a + s ) , u . ch += n . length , c . ch = u . ch + a . length ) , i . setSelection ( u , c ) , i . focus ( ) } } } , { key : "replaceSelection" , value : function ( e , t , n , r ) { if ( ! /editor-preview-active/ . test ( e . getWrapperElement ( ) . lastChild . className ) ) { var i = void 0 , o = n [ 0 ] , a = n [ 1 ] , l = e . getCursor ( "start" ) , s = e . getCursor ( "end" ) ; r && ( a = a . replace ( "#url#" , r ) ) , t ? ( i = e . getLine ( l . line ) , o = i . slice ( 0 , l . ch ) , a = i . slice ( l . ch ) , e . replaceRange ( o + a , { line : l . line , ch : 0 } ) ) : ( i = e . getSelection ( ) , e . replaceSelection ( o + i + a ) , l . ch += o . length , l !== s && ( s . ch += o . length ) ) , e . setSelection ( l , s ) , e . focus ( ) } } } , { key : "toggleHeading" , value : function ( e , t , n ) { if ( ! /editor-preview-active/ . test ( e . getWrapperElement ( ) . lastChild . className ) ) { for ( var r = e . getCursor ( "start" ) , i = e . getCursor ( "end" ) , o = r . line ; o <= i . line ; o ++ ) ! function ( r ) { var i = e . getLine ( r ) , o = i . search ( /[^#]/ ) ; i = void 0 !== t ? o <= 0 ? "bigger" == t ? "###### " + i : "# " + i : 6 == o && "smaller" == t ? i . substr ( 7 ) : 1 == o && "bigger" == t ? i . substr ( 2 ) : "bigger" == t ? i . substr ( 1 ) : "#" + i : 1 == n ? o <= 0 ? "# " + i : o == n ? i . substr ( o + 1 ) : "# " + i . substr ( o + 1 ) : 2 == n ? o <= 0 ? "## " + i : o == n ? i . substr ( o + 1 ) : "## " + i . substr ( o + 1 ) : o <= 0 ? "### " + i : o == n ? i . substr ( o + 1 ) : "### " + i . substr ( o + 1 ) , e . replaceRange ( i , { line : r , ch : 0 } , { line : r , ch : 99999999999999 } ) } ( o ) ; e . focus ( ) } } } , { key : "toggleLine" , value : function ( e , t ) { if ( ! /editor-preview-active/ . test ( e . getWrapperElement ( ) . lastChild . className ) ) { for ( var n = this . getState ( e ) , r = e . getCursor ( "start" ) , i = e . getCursor ( "end" ) , o = { quote : /^(\s*)\>\s+/ , "unordered-list" : /^(\s*)(\*|\-|\+)\s+/ , "ordered-list" : /^(\s*)\d+\.\s+/ } , a = { quote : "> " , "unordered-list" : "* " , "ordered-list" : "1. " } , l = r . line ; l <= i . line ; l ++ ) ! function ( r ) { var i = e . getLine ( r ) ; i = n [ t ] ? i . replace ( o [ t ] , "$1" ) : a [ t ] + i , e . replaceRange ( i , { line : r , ch : 0 } , { line : r , ch : 99999999999999 } ) } ( l ) ; e . focus ( ) } } } , { key : "cleanBlock" , value : function ( e ) { if ( ! /editor-preview-active/ . test ( e . getWrapperElement ( ) . lastChild . className ) ) for ( var t = e . getCursor ( "start" ) , n = e . getCursor ( "end" ) , r = void 0 , i = t . line ; i <= n . line ; i ++ ) r = e . getLine ( i ) , r = r . replace ( /^[ ]*([# ]+|\*|\-|[> ]+|[0-9]+(.|\)))[ ]*/ , "" ) , e . replaceRange ( r , { line : i , ch : 0 } , { line : i , ch : 99999999999999 } ) } } ] ) , e } ( ) ) } , { } ] , 22 : [ function ( e , t , n ) { "use strict" ; function r ( e ) { return e && e . _ _esModule ? e : { default : e } } var i = e ( "CodeMirror" ) , o = r ( i ) ; o . default . commands . tabAndIndentMarkdownList = function ( e ) { var t = e . listSelections ( ) , n = t [ 0 ] . head , r = e . getStateAfter ( n . line ) , i = r . list !== ! 1 ; return i ? e . execCommand ( "indentMore" ) : e . options . indentWithTabs ? e . execCommand ( "insertTab" ) : void e . replaceSelection ( Array ( e . options . tabSize + 1 ) . join ( " " ) ) } , o . default . commands . shiftTabAndUnindentMarkdownList = function ( e ) { var t = e . listSelections ( ) , n = t [ 0 ] . head , r = e . getStateAfter ( n . line ) , i = r . list !== ! 1 ; return i ? e . execCommand ( "indentLess" ) : e . options . indentWithTabs ? e . execCommand ( "insertTab" ) : void e . replaceSelection ( Array ( e . options . tabSize + 1 ) . join ( " " ) ) } } , { CodeMirror : 1 } ] , 23 : [ function ( t , n , r ) { "use strict" ; function i ( e ) { return e && e . _ _esModule ? e : { default : e } } var o = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( e ) { return typeof e } : function ( e ) { return e && "function" == typeof Symbol && e . constructor === Symbol && e !== Symbol . prototype ? "symbol" : typeof e } , a = t ( "./simplemde" ) , l = i ( a ) ; ! function ( ) { return "object" === ( "undefined" == typeof n ? "undefined" : o ( n ) ) ? n . exports = l . default : ( "function" == typeof e && e . amd && e ( "SimpleMDE" , [ ] , function ( ) { return l . default } ) , void ( window . SimpleMDE = l . default ) ) } ( ) } , { "./simplemde" : 25 } ] , 24 : [ function ( e , t , n ) { "use strict" ; Object . defineProperty ( n , "__esModule" , { value : ! 0 } ) ; n . bindings = [ "toggleBold" , "toggleItalic" , "drawLink" , "toggleHeadingSmaller" , "toggleHeadingBigger" , "drawImage" , "toggleBlockquote" , "toggleOrderedList" , "toggleUnorderedList" , "toggleCodeBlock" , "togglePreview" , "toggleStrikethrough" , "toggleHeading1" , "toggleHeading2" , "toggleHeading3" , "cleanBlock" , "drawTable" , "drawHorizontalRule" , "undo" , "redo" , "toggleSideBySide" , "toggleFullScreen" ] , n . shortcuts = { 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 -