! function ( t , e ) { "object" == typeof exports && "object" == typeof module ? module . exports = e ( ) : "function" == typeof define && define . amd ? define ( [ ] , e ) : "object" == typeof exports ? exports . yaksok = e ( ) : t . yaksok = e ( ) ; } ( this , ( function ( ) { return function ( t ) { var e = { } ; function i ( s ) { if ( e [ s ] ) return e [ s ] . exports ; var n = e [ s ] = { i : s , l : ! 1 , exports : { } } ; return t [ s ] . call ( n . exports , n , n . exports , i ) , n . l = ! 0 , n . exports ; } return i . m = t , i . c = e , i . d = function ( t , e , s ) { i . o ( t , e ) || Object . defineProperty ( t , e , { enumerable : ! 0 , get : s } ) ; } , i . r = function ( t ) { "undefined" != typeof Symbol && Symbol . toStringTag && Object . defineProperty ( t , Symbol . toStringTag , { value : "Module" } ) , Object . defineProperty ( t , "__esModule" , { value : ! 0 } ) ; } , i . t = function ( t , e ) { if ( 1 & e && ( t = i ( t ) ) , 8 & e ) return t ; if ( 4 & e && "object" == typeof t && t && t . __esModule ) return t ; var s = Object . create ( null ) ; if ( i . r ( s ) , Object . defineProperty ( s , "default" , { enumerable : ! 0 , value : t } ) , 2 & e && "string" != typeof t ) for ( var n in t ) i . d ( s , n , function ( e ) { return t [ e ] ; } . bind ( null , n ) ) ; return s ; } , i . n = function ( t ) { var e = t && t . __esModule ? function ( ) { return t . default ; } : function ( ) { return t ; } ; return i . d ( e , "a" , e ) , e ; } , i . o = function ( t , e ) { return Object . prototype . hasOwnProperty . call ( t , e ) ; } , i . p = "/dist/" , i ( i . s = 27 ) ; } ( [ function ( t , e , i ) { "use strict" ; var s ; let n ; i . r ( e ) , i . d ( e , "AstNode" , ( function ( ) { return a ; } ) ) , i . d ( e , "AstNodeList" , ( function ( ) { return h ; } ) ) , i . d ( e , "child" , ( function ( ) { return o ; } ) ) , i . d ( e , "Description" , ( function ( ) { return te ; } ) ) , i . d ( e , "DescriptionItem" , ( function ( ) { return ee ; } ) ) , i . d ( e , "DescriptionParameter" , ( function ( ) { return ie ; } ) ) , i . d ( e , "DescriptionName" , ( function ( ) { return se ; } ) ) , i . d ( e , "Def" , ( function ( ) { return ne ; } ) ) , i . d ( e , "Yaksok" , ( function ( ) { return re ; } ) ) , i . d ( e , "Translate" , ( function ( ) { return ae ; } ) ) , i . d ( e , "Expressions" , ( function ( ) { return q ; } ) ) , i . d ( e , "Expression" , ( function ( ) { return Y ; } ) ) , i . d ( e , "CallInfo" , ( function ( ) { return V ; } ) ) , i . d ( e , "Call" , ( function ( ) { return G ; } ) ) , i . d ( e , "ModuleCall" , ( function ( ) { return Q ; } ) ) , i . d ( e , "CallBind" , ( function ( ) { return J ; } ) ) , i . d ( e , "ModuleCallBind" , ( function ( ) { return H ; } ) ) , i . d ( e , "Question" , ( function ( ) { return Z ; } ) ) , i . d ( e , "Primitive" , ( function ( ) { return X ; } ) ) , i . d ( e , "Name" , ( function ( ) { return tt ; } ) ) , i . d ( e , "String" , ( function ( ) { return et ; } ) ) , i . d ( e , "Number" , ( function ( ) { return it ; } ) ) , i . d ( e , "Integer" , ( function ( ) { return st ; } ) ) , i . d ( e , "Float" , ( function ( ) { return nt ; } ) ) , i . d ( e , "Boolean" , ( function ( ) { return rt ; } ) ) , i . d ( e , "Void" , ( function ( ) { return at ; } ) ) , i . d ( e , "Range" , ( function ( ) { return lt ; } ) ) , i . d ( e , "List" , ( function ( ) { return ut ; } ) ) , i . d ( e , "Dict" , ( function ( ) { return ct ; } ) ) , i . d ( e , "DictKeyValue" , ( function ( ) { return ht ; } ) ) , i . d ( e , "OperatorKind" , ( function ( ) { return ot ; } ) ) , i . d ( e , "UnaryOperator" , ( function ( ) { return dt ; } ) ) , i . d ( e , "UnaryPlus" , ( function ( ) { return ft ; } ) ) , i . d ( e , "UnaryMinus" , ( function ( ) { return pt ; } ) ) , i . d ( e , "BinaryOperator" , ( function ( ) { return wt ; } ) ) , i . d ( e , "YaksokRoot" , ( function ( ) { return ue ; } ) ) , i . d ( e , "Statements" , ( function ( ) { return Bt ; } ) ) , i . d ( e , "Statement" , ( function ( ) { return $t ; } ) ) , i . d ( e , "PlainStatement" , ( function ( ) { return Ut ; } ) ) , i . d ( e , "Assign" , ( function ( ) { return Ft ; } ) ) , i . d ( e , "Outside" , ( function ( ) { return Kt ; } ) ) , i . d ( e , "Condition" , ( function ( ) { return jt ; } ) ) , i . d ( e , "If" , ( function ( ) { return zt ; } ) ) , i . d ( e , "IfNot" , ( function ( ) { return Wt ; } ) ) , i . d ( e , "Loop" , ( function ( ) { return qt ; } ) ) , i . d ( e , "Iterate" , ( function ( ) { return Yt ; } ) ) , i . d ( e , "LoopEnd" , ( function ( ) { return Vt ; } ) ) , i . d ( e , "YaksokEnd" , ( function ( ) { return Gt ; } ) ) , i . d ( e , "NodeVisitor" , ( function ( ) { return ce . a ; } ) ) ; const r = new WeakMap ; class a { constructor ( ) { this . parent = void 0 , this . parent = null ; } replaceChild ( t , e ) { for ( let i of function * ( t ) { for ( ; null != t && t !== a && t !== Function ; ) { var e ; const i = null !== ( e = r . get ( t ) ) && void 0 !== e ? e : [ ] ; yield * i , t = Object . getPrototypeOf ( t ) ; } } ( this ) ) if ( this [ i ] === t ) return e . parent = this , this [ i ] = e , e ; throw new Error ( "이 노드의 자식이 아닙니다." ) ; } replace ( t ) { if ( null === this . parent ) throw new Error ( "부모가 없습니다." ) ; return this . parent . replaceChild ( this , t ) ; } } function o ( t , e ) { ! function ( t , e ) { let i = r . get ( t ) ; null == i && ( i = [ ] , r . set ( t , i ) ) , i . push ( e ) ; } ( t , e ) ; const i = "_" + e ; return { configurable : ! 0 , enumerable : ! 1 , get : function ( ) { let t = this [ i ] ; return t || null ; } , set : function ( t ) { null != t && ( t . parent = this ) , this [ i ] = t ; } } ; } const l = Symbol ( "listField" ) ; n = Symbol . iterator ; class u { constructor ( ) { this [ l ] = void 0 ; } get length ( ) { return this [ l ] . length ; } push ( t ) { null != t && ( t . parent = this ) , this [ l ] . push ( t ) ; } [ n ] ( ) { return this [ l ] [ Symbol . iterator ] ( ) ; } replaceChild ( t , e ) { let i = this [ l ] . indexOf ( t ) ; if ( - 1 === i ) throw new Error ( "이 노드의 자식이 아닙니다." ) ; var s ; if ( s = this , e . constructor !== s . constructor ) return e . parent = this , this [ l ] [ i ] = e , e ; for ( let t of e [ l ] ) null != t && ( t . parent = this ) ; this [ l ] . splice ( i , 1 , ... e [ l ] ) ; } removeChild ( t ) { let e = this [ l ] . indexOf ( t ) ; if ( - 1 === e ) throw new Error ( "이 노드의 자식이 아닙니다." ) ; this [ l ] . splice ( e , 1 ) ; } } function c ( t ) { return function ( e ) { Object . defineProperty ( e . prototype , l , { configurable : ! 1 , enumerable : ! 1 , get ( ) { return this [ t ] ; } } ) , function ( t , e ) { const i = Object . getOwnPropertyNames ( e . prototype ) ; i . push ( ... Object . getOwnPropertySymbols ( e . prototype ) ) ; for ( const s of i ) Object . defineProperty ( t . prototype , s , Object . getOwnPropertyDescriptor ( e . prototype , s ) ) ; } ( e , u ) ; } ; } let h = c ( "childNodes" ) ( s = class extends a { constructor ( ) { super ( ) , this . childNodes = void 0 , this . childNodes = [ ] ; } } ) || s ; var d , f , p , w , v , _ , y , m , b , g , E , k , x , O , C , D , T , A , I , R , L , S , P , M , N , B , $ , U , F = i ( 1 ) , K = i . n ( F ) , j = i ( 2 ) , z = i . n ( j ) , W = ( i ( 8 ) , i ( 3 ) ) ; class q extends h { get repr ( ) { return this . childNodes . map ( t => t . repr ) . join ( " " ) ; } } class Y extends a { constructor ( ... t ) { super ( ... t ) , this . type = W . a . Any ; } get isConstant ( ) { return ! 1 ; } fold ( ) { return this ; } get repr ( ) { throw new Error ( "unimplemented" ) ; } } let V = c ( "args" ) ( d = class extends a { constructor ( t ) { super ( ) , this . def = void 0 , this . args = void 0 , this . def = t , this . args = [ ] ; } } ) || d , G = ( f = class extends Y { constructor ( t ) { super ( ) , K ( ) ( this , "expressions" , p , this ) , K ( ) ( this , "callInfo" , w , this ) , this . expressions = t , this . callInfo = null ; } fold ( ) { for ( let e of ( null === ( t = this . callInfo ) || void 0 === t ? void 0 : t . args ) || [ ] ) { var t ; e . fold ( ) ; } return this ; } get repr ( ) { var t , e ; return null !== ( t = null === ( e = this . expressions ) || void 0 === e ? void 0 : e . repr ) && void 0 !== t ? t : "" ; } } , p = z ( ) ( f . prototype , "expressions" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , w = z ( ) ( f . prototype , "callInfo" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , f ) , Q = ( v = class extends Y { constructor ( t , e ) { super ( ) , K ( ) ( this , "target" , _ , this ) , K ( ) ( this , "expressions" , y , this ) , K ( ) ( this , "callInfo" , m , this ) , this . target = t , this . expressions = e , this . callInfo = null ; } fold ( ) { for ( let e of ( null === ( t = this . callInfo ) || void 0 === t ? void 0 : t . args ) || [ ] ) { var t ; e . fold ( ) ; } return this ; } get repr ( ) { var t ; return `@${ this . target . repr } ${ null === ( t = this . expressions ) || void 0 === t ? void 0 : t . repr }` ; } } , _ = z ( ) ( v . prototype , "target" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , y = z ( ) ( v . prototype , "expressions" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , m = z ( ) ( v . prototype , "callInfo" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , v ) , J = ( b = class extends Y { constructor ( t ) { super ( ) , K ( ) ( this , "expressions" , g , this ) , K ( ) ( this , "callInfo" , E , this ) , this . expressions = t , this . callInfo = null ; } get repr ( ) { var t ; return `결속 ${ null === ( t = this . expressions ) || void 0 === t ? void 0 : t . repr }` ; } } , g = z ( ) ( b . prototype , "expressions" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , E = z ( ) ( b . prototype , "callInfo" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , b ) , H = ( k = class extends Y { constructor ( t , e ) { super ( ) , K ( ) ( this , "target" , x , this ) , K ( ) ( this , "expressions" , O , this ) , K ( ) ( this , "callInfo" , C , this ) , this . target = t , this . expressions = e , this . callInfo = null ; } get repr ( ) { var t ; return `결속 @${ this . target . repr } ${ null === ( t = this . expressions ) || void 0 === t ? void 0 : t . repr }` ; } } , x = z ( ) ( k . prototype , "target" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , O = z ( ) ( k . prototype , "expressions" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , C = z ( ) ( k . prototype , "callInfo" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , k ) ; class Z extends Y { get repr ( ) { return "?" ; } } class X extends Y { constructor ( t ) { super ( ) , this . value = void 0 , this . value = t ; } get isConstant ( ) { return ! 0 ; } clone ( ) { return new this . constructor ( this . value ) ; } get repr ( ) { return `${ this . value }` ; } } class tt extends X { constructor ( t ) { super ( t ) , this . call = void 0 , this . call = ! 1 ; } get isConstant ( ) { return ! 1 ; } } class et extends X { constructor ( ... t ) { super ( ... t ) , this . type = W . a . String ; } get repr ( ) { return `"${ this . value }"` ; } } class it extends X { } class st extends it { constructor ( ... t ) { super ( ... t ) , this . type = W . a . Integer ; } } class nt extends it { constructor ( ... t ) { super ( ... t ) , this . type = W . a . Float ; } } class rt extends X { constructor ( ... t ) { super ( ... t ) , this . type = W . a . Boolean ; } } class at extends X { constructor ( ... t ) { super ( ... t ) , this . type = W . a . Void ; } get repr ( ) { return "()" ; } } let ot , lt = ( D = class extends Y { constructor ( t , e ) { super ( ) , this . type = W . a . Range , K ( ) ( this , "start" , T , this ) , K ( ) ( this , "stop" , A , this ) , this . start = t , this . stop = e ; } } , T = z ( ) ( D . prototype , "start" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , A = z ( ) ( D . prototype , "stop" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , D ) , ut = c ( "items" ) ( I = class extends Y { constructor ( ) { super ( ) , this . type = W . a . List , this . items = void 0 , this . items = [ ] ; } } ) || I , ct = c ( "items" ) ( R = class extends Y { constructor ( ) { super ( ) , this . type = W . a . Dict , this . items = void 0 , this . items = [ ] ; } } ) || R , ht = ( L = class extends a { constructor ( t , e ) { super ( ) , K ( ) ( this , "key" , S , this ) , K ( ) ( this , "value" , P , this ) , this . key = t , this . value = e ; } } , S = z ( ) ( L . prototype , "key" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , P = z ( ) ( L . prototype , "value" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , L ) ; ! function ( t ) { t [ t . Access = 0 ] = "Access" , t [ t . DotAccess = 1 ] = "DotAccess" , t [ t . Or = 2 ] = "Or" , t [ t . And = 3 ] = "And" , t [ t . Equal = 4 ] = "Equal" , t [ t . NotEqual = 5 ] = "NotEqual" , t [ t . GreaterThan = 6 ] = "GreaterThan" , t [ t . LessThan = 7 ] = "LessThan" , t [ t . GreaterThanEqual = 8 ] = "GreaterThanEqual" , t [ t . LessThanEqual = 9 ] = "LessThanEqual" , t [ t . Plus = 10 ] = "Plus" , t [ t . Minus = 11 ] = "Minus" , t [ t . Multiply = 12 ] = "Multiply" , t [ t . Divide = 13 ] = "Divide" , t [ t . Modular = 14 ] = "Modular" ; } ( ot || ( ot = { } ) ) ; let dt = ( M = class extends Y { constructor ( t ) { super ( ) , K ( ) ( this , "rhs" , N , this ) , this . rhs = t ; } get isConstant ( ) { return this . rhs . isConstant ; } } , N = z ( ) ( M . prototype , "rhs" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , M ) ; class ft extends dt { fold ( ) { if ( this . isConstant ) { let t = this . rhs . fold ( ) ; if ( t instanceof st ) return this . replace ( new st ( t . value ) ) ; if ( t instanceof it ) return this . replace ( new nt ( t . value ) ) ; } return this ; } } class pt extends dt { fold ( ) { if ( this . isConstant ) { let t = this . rhs . fold ( ) ; if ( t instanceof st ) return this . replace ( new st ( - t . value ) ) ; if ( t instanceof it ) return this . replace ( new nt ( - t . value ) ) ; } return this ; } } let wt = ( B = class extends Y { constructor ( t , e , i ) { super ( ) , this . kind = t , K ( ) ( this , "lhs" , $ , this ) , K ( ) ( this , "rhs" , U , this ) , this . lhs = e , this . rhs = i , this . type = function ( t ) { switch ( t ) { case ot . Or : case ot . And : case ot . Equal : case ot . NotEqual : case ot . GreaterThan : case ot . LessThan : case ot . GreaterThanEqual : case ot . LessThanEqual : return W . a . Boolean ; case ot . Divide : return W . a . Float ; default : return W . a . Any ; } } ( t ) ; } get isConstant ( ) { return this . lhs . isConstant && this . rhs . isConstant ; } fold ( ) { if ( ! this . isConstant ) return this ; const t = function ( t , e , i ) { switch ( t ) { case ot . Equal : if ( e instanceof X && i instanceof X ) return new rt ( e . value === i . value ) ; break ; case ot . NotEqual : if ( e instanceof X && i instanceof X ) return new rt ( e . value !== i . value ) ; break ; case ot . GreaterThan : if ( e instanceof it && i instanceof it ) return new rt ( e . value > i . value ) ; break ; case ot . LessThan : if ( e instanceof it && i instanceof it ) return new rt ( e . value < i . value ) ; break ; case ot . GreaterThanEqual : if ( e instanceof it && i instanceof it ) return new rt ( e . value >= i . value ) ; break ; case ot . LessThanEqual : if ( e instanceof it && i instanceof it ) return new rt ( e . value <= i . value ) ; break ; case ot . Plus : if ( e instanceof et && i instanceof et ) return new et ( e . value + i . value ) ; if ( e instanceof st && i instanceof st ) return new st ( e . value + i . value ) ; if ( e instanceof it && i instanceof it ) return new nt ( e . value + i . value ) ; break ; case ot . Minus : if ( e instanceof st && i instanceof st ) return new st ( e . value - i . value ) ; if ( e instanceof it && i instanceof it ) return new nt ( e . value - i . value ) ; break ; case ot . Multiply : if ( e instanceof st && i instanceof st ) return new st ( e . value * i . value ) ; if ( e instanceof it && i instanceof it ) return new nt ( e . value * i . value ) ; break ; case ot . Divide : if ( e instanceof it && i instanceof it ) return new nt ( e . value / i . value ) ; break ; case ot . Modular : if ( e instanceof st && i instanceof st ) return new st ( e . value % i . value ) ; if ( e instanceof it && i instanceof it ) return new nt ( e . value % i . value ) ; } } ( this . kind , this . lhs . fold ( ) , this . rhs . fold ( ) ) ; return null != t ? this . replace ( t ) : this ; } } , $ = z ( ) ( B . prototype , "lhs" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , U = z ( ) ( B . prototype , "rhs" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , B ) ; var vt , _t , yt , mt , bt , gt , Et , kt , xt , Ot , Ct , Dt , Tt , At , It , Rt , Lt , St , Pt , Mt , Nt ; class Bt extends h { constructor ( ) { super ( ) , this . scope = void 0 , this . scope = null ; } } class $t extends a { eliminateDeadCode ( ) { return ! 1 ; } } let Ut = ( vt = class extends $t { constructor ( t ) { super ( ) , K ( ) ( this , "expression" , _t , this ) , this . expression = t ; } } , _t = z ( ) ( vt . prototype , "expression" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , vt ) , Ft = ( yt = class extends $t { constructor ( t , e ) { super ( ) , K ( ) ( this , "lvalue" , mt , this ) , K ( ) ( this , "rvalue" , bt , this ) , this . isDeclaration = void 0 , this . lvalue = t , this . rvalue = e , this . isDeclaration = ! 1 ; } } , mt = z ( ) ( yt . prototype , "lvalue" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , bt = z ( ) ( yt . prototype , "rvalue" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , yt ) , Kt = ( gt = class extends $t { constructor ( t ) { super ( ) , K ( ) ( this , "name" , Et , this ) , this . name = t ; } } , Et = z ( ) ( gt . prototype , "name" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , gt ) ; class jt extends $t { } let zt = ( kt = class extends jt { constructor ( t , e , i = null ) { super ( ) , K ( ) ( this , "condition" , xt , this ) , K ( ) ( this , "ifBlock" , Ot , this ) , K ( ) ( this , "elseBlock" , Ct , this ) , this . condition = t , this . ifBlock = e , this . elseBlock = i ; } eliminateDeadCode ( ) { let t = this . condition . fold ( ) ; return t instanceof rt && ( ( t . value ? this . ifBlock : this . elseBlock ) || ! 0 ) ; } } , xt = z ( ) ( kt . prototype , "condition" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , Ot = z ( ) ( kt . prototype , "ifBlock" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , Ct = z ( ) ( kt . prototype , "elseBlock" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , kt ) , Wt = ( Dt = class extends jt { constructor ( t , e , i = null ) { super ( ) , K ( ) ( this , "condition" , Tt , this ) , K ( ) ( this , "ifBlock" , At , this ) , K ( ) ( this , "elseBlock" , It , this ) , this . condition = t , this . ifBlock = e , this . elseBlock = i ; } eliminateDeadCode ( ) { let t = this . condition . fold ( ) ; return t instanceof rt && ( ( t . value ? this . ifBlock : this . elseBlock ) || ! 0 ) ; } } , Tt = z ( ) ( Dt . prototype , "condition" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , At = z ( ) ( Dt . prototype , "ifBlock" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , It = z ( ) ( Dt . prototype , "elseBlock" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , Dt ) , qt = ( Rt = class extends $t { constructor ( t ) { super ( ) , K ( ) ( this , "block" , Lt , this ) , this . block = t ; } } , Lt = z ( ) ( Rt . prototype , "block" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , Rt ) , Yt = ( St = class extends $t { constructor ( t , e , i ) { super ( ) , K ( ) ( this , "iterator" , Pt , this ) , K ( ) ( this , "iteratee" , Mt , this ) , K ( ) ( this , "block" , Nt , this ) , this . iterator = t , this . iteratee = e , this . block = i ; } } , Pt = z ( ) ( St . prototype , "iterator" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , Mt = z ( ) ( St . prototype , "iteratee" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , Nt = z ( ) ( St . prototype , "block" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , St ) ; class Vt extends $t { } class Gt extends $t { } var Qt , Jt , Ht , Zt ; let Xt ; class te extends h { match ( t ) { if ( null == this . parent ) throw new Error ( "Description의 부모는 Def여야 합니다" ) ; if ( t . length > this . length ) return null ; let e = new V ( this . parent ) , [ i , s ] = [ 0 , 0 ] ; for ( ; i < this . length ; ++ i , ++ s ) { let n = this . childNodes [ i ] , r = t . childNodes [ s ] ; if ( n instanceof se ) { if ( n . match ( r ) ) continue ; return null ; } if ( ! ( n instanceof ie ) ) throw new Error ( "unexpected description item" ) ; { if ( ! ( r instanceof tt ) ) { e . push ( r ) ; continue ; } let n = this . childNodes [ i + 1 ] , a = t . childNodes [ s + 1 ] ; if ( ! n || n . match ( a ) || n . needWhiteSpace ) { e . push ( r ) ; continue ; } let o = n . postMatch ( r ) , l = r . value ; if ( o && l . length > o ) { ++ i , e . push ( new tt ( l . substr ( 0 , l . length - o ) ) ) ; continue ; } if ( ! a ) return null ; e . push ( r ) ; } } return e ; } get parameters ( ) { return this . childNodes . filter ( ( function ( t ) { return t instanceof ie ; } ) ) ; } get repr ( ) { return this . childNodes . map ( t => t . repr ) . join ( "" ) ; } } class ee extends a { } class ie extends ee { constructor ( t ) { super ( ) , this . value = void 0 , this . value = t ; } get repr ( ) { return `(${ this . value })` ; } } Xt = Symbol . iterator ; class se extends ee { constructor ( ) { super ( ) , this . names = void 0 , this . needWhiteSpace = ! 1 , this . names = [ ] ; } match ( t ) { return t instanceof tt && this . names . some ( e => t . value === e ) ; } postMatch ( t ) { if ( ! ( t instanceof tt ) ) return 0 ; let e = this . names . find ( e => t . value . endsWith ( e ) ) ; return e ? e . length : 0 ; } get length ( ) { return this . names . length ; } push ( t ) { this . names . push ( t ) ; } sort ( ) { this . names . sort ( ( t , e ) => e . length - t . length ) ; } [ Xt ] ( ) { return this . names [ Symbol . iterator ] ( ) ; } get repr ( ) { return ( this . needWhiteSpace ? " " : "" ) + this . names . join ( "/" ) ; } } let ne = ( Qt = class extends $t { constructor ( t ) { super ( ) , K ( ) ( this , "description" , Jt , this ) , this . scope = void 0 , this . returnType = void 0 , this . used = void 0 , this . description = t , this . scope = null , this . returnType = null , this . used = ! 1 ; } get hasSideEffect ( ) { return ! 0 ; } get repr ( ) { var t ; return `정의 ${ null === ( t = this . description ) || void 0 === t ? void 0 : t . repr }` ; } match ( t ) { return this . description . match ( t . expressions ) ; } } , Jt = z ( ) ( Qt . prototype , "description" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , Qt ) , re = ( Ht = class extends ne { constructor ( t , e ) { super ( t ) , K ( ) ( this , "block" , Zt , this ) , this . block = e ; } get hasSideEffect ( ) { return super . hasSideEffect ; } get repr ( ) { var t ; return `약속 ${ null === ( t = this . description ) || void 0 === t ? void 0 : t . repr }` ; } } , Zt = z ( ) ( Ht . prototype , "block" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , Ht ) ; class ae extends ne { constructor ( t , e , i ) { super ( t ) , this . target = void 0 , this . code = void 0 , this . target = e , this . code = i ; } get repr ( ) { var t ; return `번역(${ this . target }) ${ null === ( t = this . description ) || void 0 === t ? void 0 : t . repr }` ; } } var oe , le ; let ue = ( oe = class extends a { constructor ( t ) { super ( ) , this . hash = void 0 , this . modules = void 0 , this . moduleScope = void 0 , K ( ) ( this , "statements" , le , this ) , this . hash = null , this . modules = { } , this . moduleScope = null , this . statements = t ; } } , le = z ( ) ( oe . prototype , "statements" , [ o ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , oe ) ; var ce = i ( 4 ) ; } , function ( t , e ) { t . exports = function ( t , e , i , s ) { i && Object . defineProperty ( t , e , { enumerable : i . enumerable , configurable : i . configurable , writable : i . writable , value : i . initializer ? i . initializer . call ( s ) : void 0 } ) ; } ; } , function ( t , e ) { t . exports = function ( t , e , i , s , n ) { var r = { } ; return Object . keys ( s ) . forEach ( ( function ( t ) { r [ t ] = s [ t ] ; } ) ) , r . enumerable = ! ! r . enumerable , r . configurable = ! ! r . configurable , ( "value" in r || r . initializer ) && ( r . writable = ! 0 ) , r = i . slice ( ) . reverse ( ) . reduce ( ( function ( i , s ) { return s ( t , e , i ) || i ; } ) , r ) , n && void 0 !== r . initializer && ( r . value = r . initializer ? r . initializer . call ( n ) : void 0 , r . initializer = void 0 ) , void 0 === r . initializer && ( Object . defineProperty ( t , e , r ) , r = null ) , r ; } ; } , function ( t , e , i ) { "use strict" ; let s ; i . d ( e , "a" , ( function ( ) { return s ; } ) ) , function ( t ) { t [ t . Any = 0 ] = "Any" , t [ t . Void = 1 ] = "Void" , t [ t . Boolean = 2 ] = "Boolean" , t [ t . Integer = 3 ] = "Integer" , t [ t . Float = 4 ] = "Float" , t [ t . String = 5 ] = "String" , t [ t . List = 6 ] = "List" , t [ t . Dict = 7 ] = "Dict" , t [ t . Range = 8 ] = "Range" ; } ( s || ( s = { } ) ) ; } , function ( t , e , i ) { "use strict" ; i . d ( e , "a" , ( function ( ) { return n ; } ) ) ; var s = i ( 0 ) ; class n { constructor ( ) { this . translateTargets = void 0 , this . translateTargets = [ ] ; } async init ( ) { } async visit ( t ) { if ( t instanceof s . YaksokRoot ) return await this . visitYaksokRoot ( t ) ; if ( t instanceof s . Statements ) return await this . visitStatements ( t ) ; if ( t instanceof s . Statement ) return await this . visitStatement ( t ) ; if ( t instanceof s . Expressions ) return await this . visitExpressions ( t ) ; if ( t instanceof s . Expression ) return await this . visitExpression ( t ) ; if ( t instanceof s . Description ) return await this . visitDescription ( t ) ; if ( t instanceof s . DescriptionParameter ) return await this . visitDescriptionParameter ( t ) ; if ( t instanceof s . DescriptionName ) return await this . visitDescriptionName ( t ) ; throw new Error ( "unknown node type" ) ; } async visitYaksokRoot ( t ) { await this . visitStatements ( t . statements ) ; } async visitStatements ( t ) { for ( let e of Array . from ( t ) ) null != e && await this . visitStatement ( e ) ; } async visitStatement ( t ) { if ( t instanceof s . PlainStatement ) return await this . visitPlainStatement ( t ) ; if ( t instanceof s . Assign ) return await this . visitAssign ( t ) ; if ( t instanceof s . Outside ) return await this . visitOutside ( t ) ; if ( t instanceof s . Condition ) return await this . visitCondition ( t ) ; if ( t instanceof s . Loop ) return await this . visitLoop ( t ) ; if ( t instanceof s . Iterate ) return await this . visitIterate ( t ) ; if ( t instanceof s . LoopEnd ) return await this . visitLoopEnd ( t ) ; if ( t instanceof s . YaksokEnd ) return await this . visitYaksokEnd ( t ) ; if ( t instanceof s . Def ) return await this . visitDef ( t ) ; throw new Error ( "unknown node type" ) ; } async visitPlainStatement ( t ) { await this . visitExpression ( t . expression ) ; } async visitAssign ( t ) { await this . visit ( t . rvalue ) , await this . visit ( t . lvalue ) ; } async visitOutside ( t ) { await this . visit ( t . name ) ; } async visitCall ( t ) { } async visitModuleCall ( t ) { } async visitCallBind ( t ) { } async visitModuleCallBind ( t ) { } async visitCondition ( t ) { if ( t instanceof s . If ) return await this . visitIf ( t ) ; if ( t instanceof s . IfNot ) return await this . visitIfNot ( t ) ; throw new Error ( "unknown node type" ) ; } async visitIf ( t ) { await this . visit ( t . condition ) , await this . visitStatements ( t . ifBlock ) , t . elseBlock && await this . visitStatements ( t . elseBlock ) ; } async visitIfNot ( t ) { await this . visit ( t . condition ) , await this . visitStatements ( t . ifBlock ) , t . elseBlock && await this . visitStatements ( t . elseBlock ) ; } async visitLoop ( t ) { await this . visit ( t . block ) ; } async visitIterate ( t ) { await this . visit ( t . iteratee ) , await this . visit ( t . iterator ) , await this . visit ( t . block ) ; } async visitLoopEnd ( t ) { } async visitYaksokEnd ( t ) { } async visitExpressions ( t ) { for ( let e of Array . from ( t ) ) null != e && await this . visitExpression ( e ) ; } async visitExpression ( t ) { if ( t instanceof s . Call ) return await this . visitCall ( t ) ; if ( t instanceof s . ModuleCall ) return await this . visitModuleCall ( t ) ; if ( t instanceof s . CallBind ) return await this . visitCallBind ( t ) ; if ( t instanceof s . ModuleCallBind ) return await this . visitModuleCallBind ( t ) ; if ( t instanceof s . Primitive ) return await this . visitPrimitive ( t ) ; if ( t instanceof s . Range ) return await this . visitRange ( t ) ; if ( t instanceof s . List ) return await this . visitList ( t ) ; if ( t instanceof s . Dict ) return await this . visitDict ( t ) ; if ( t instanceof s . UnaryOperator ) return await this . visitUnaryOperator ( t ) ; if ( t instanceof s . BinaryOperator ) return await this . visitBinaryOperator ( t ) ; if ( t instanceof s . Question ) return await this . visitQuestion ( t ) ; throw new Error ( "unknown node type" ) ; } async visitPrimitive ( t ) { if ( t instanceof s . Name ) return await this . visitName ( t ) ; if ( t instanceof s . String ) return await this . visitString ( t ) ; if ( t instanceof s . Integer ) return await this . visitInteger ( t ) ; if ( t instanceof s . Float ) return await this . visitFloat ( t ) ; if ( t instanceof s . Boolean ) return await this . visitBoolean ( t ) ; if ( t instanceof s . Void ) return await this . visitVoid ( t ) ; throw new Error ( "unknown node type" ) ; } async visitName ( t ) { } async visitString ( t ) { } async visitInteger ( t ) { } async visitFloat ( t ) { } async visitBoolean ( t ) { } async visitVoid ( t ) { } async visitQuestion ( t ) { } async visitRange ( t ) { await this . visit ( t . start ) , await this . visit ( t . stop ) ; } async visitList ( t ) { for ( let e of Array . from ( t ) ) null != e && await this . visitExpression ( e ) ; } async visitDict ( t ) { for ( let e of Array . from ( t ) ) null != e && await this . visitDictKeyValue ( e ) ; } async visitDictKeyValue ( t ) { await this . visitName ( t . key ) , await this . visitExpression ( t . value ) ; } async visitUnaryOperator ( t ) { return t instanceof s . UnaryPlus ? await this . visitUnaryPlus ( t ) : t instanceof s . UnaryMinus ? await this . visitUnaryMinus ( t ) : void 0 ; } async visitUnaryPlus ( t ) { await r . call ( this , t ) ; } async visitUnaryMinus ( t ) { await r . call ( this , t ) ; } async visitBinaryOperator ( t ) { await this . visit ( t . lhs ) , await this . visit ( t . rhs ) ; } async visitDescription ( t ) { } async visitDescriptionParameter ( t ) { } async visitDescriptionName ( t ) { } async visitDef ( t ) { if ( t instanceof s . Yaksok ) return await this . visitYaksok ( t ) ; if ( t instanceof s . Translate ) return await this . visitTranslate ( t ) ; throw new Error ( "unknown node type" ) ; } async visitYaksok ( t ) { return await this . visit ( t . block ) ; } async visitTranslate ( t ) { } } async function r ( t ) { await this . visit ( t . rhs ) ; } } , function ( module , __webpack_exports__ , __webpack_require__ ) { "use strict" ; __webpack_require__ . r ( __webpack_exports__ ) , __webpack_require__ . d ( __webpack_exports__ , "Context" , ( function ( ) { return Context ; } ) ) , __webpack_require__ . d ( __webpack_exports__ , "RawContext" , ( function ( ) { return RawContext ; } ) ) , __webpack_require__ . d ( __webpack_exports__ , "CommonContext" , ( function ( ) { return CommonContext ; } ) ) ; var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__ ( 6 ) , path__WEBPACK_IMPORTED_MODULE_0___default = __webpack_require__ . n ( path__WEBPACK_IMPORTED_MODULE_0__ ) , uuid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__ ( 21 ) , uuid__WEBPACK_IMPORTED_MODULE_1___default = __webpack_require__ . n ( uuid__WEBPACK_IMPORTED_MODULE_1__ ) ; class Context { constructor ( ) { this . from = void 0 , this . __hash__ = void 0 , this . from = null ; } hash ( ) { return this . __hash__ || ( this . __hash__ = uuid__WEBPACK_IMPORTED_MODULE_1___default . a . v4 ( ) ) , this . __hash__ ; } toString ( ) { return this . hash ( ) ; } } class RawContext extends Context { constructor ( t ) { super ( ) , this . sourceCode = void 0 , this . sourceCode = t + "" ; } } class CommonContext extends Context { constructor ( t , e = "." ) { super ( ) , this . name = void 0 , this . _dir = void 0 , this . name = t , this . _dir = e ; } get dir ( ) { return this . from instanceof CommonContext ? path__WEBPACK_IMPORTED_MODULE_0___default . a . join ( this . from . dir , this . _dir ) : this . _dir ; } hash ( ) { return `common:${ this . name }` ; } static getContextFromPath ( t ) { let e ; return e = t . endsWith ( ".약속" ) ? path__WEBPACK_IMPORTED_MODULE_0___default . a . basename ( t , ".약속" ) : t . endsWith ( ".yak" ) ? path__WEBPACK_IMPORTED_MODULE_0___default . a . basename ( t , ".yak" ) : t . endsWith ( ".ㅇㅅ" ) ? path__WEBPACK_IMPORTED_MODULE_0___default . a . basename ( t , ".ㅇㅅ" ) : t . endsWith ( ".yaksok" ) ? path__WEBPACK_IMPORTED_MODULE_0___default . a . basename ( t , ".yaksok" ) : path__WEBPACK_IMPORTED_MODULE_0___default . a . basename ( t ) , new CommonContext ( e , path__WEBPACK_IMPORTED_MODULE_0___default . a . dirname ( t ) ) ; } static async getScriptPathFromContext ( t ) { return await CommonContext . getScriptPath ( path__WEBPACK_IMPORTED_MODULE_0___default . a . join ( t . dir , t . name ) ) ; } static async getScriptPath ( t ) { let e = t + ".약속" , i = t + ".yak" , s = t + ".ㅇㅅ" , n = t + ".yaksok" , r = t ; return await isFile ( e ) ? e : await isFile ( i ) ? i : await isFile ( s ) ? s : await isFile ( n ) ? n : r ; } } function stat ( path ) { const fs = eval ( 'require("fs-extra")' ) ; return new Promise ( ( t , e ) => { fs . stat ( path , ( i , s ) => { i ? e ( i ) : t ( s ) ; } ) ; } ) ; } async function isFile ( t ) { try { return ( await stat ( t ) ) . isFile ( ) ; } catch ( t ) { return ! 1 ; } } } , function ( t , e , i ) { ( function ( t ) { function i ( t , e ) { for ( var i = 0 , s = t . length - 1 ; s >= 0 ; s -- ) { var n = t [ s ] ; "." === n ? t . splice ( s , 1 ) : ".." === n ? ( t . splice ( s , 1 ) , i ++ ) : i && ( t . splice ( s , 1 ) , i -- ) ; } if ( e ) for ( ; i -- ; i ) t . unshift ( ".." ) ; return t ; } function s ( t , e ) { if ( t . filter ) return t . filter ( e ) ; for ( var i = [ ] , s = 0 ; s < t . length ; s ++ ) e ( t [ s ] , s , t ) && i . push ( t [ s ] ) ; return i ; } e . resolve = function ( ) { for ( var e = "" , n = ! 1 , r = arguments . length - 1 ; r >= - 1 && ! n ; r -- ) { var a = r >= 0 ? arguments [ r ] : t . cwd ( ) ; if ( "string" != typeof a ) throw new TypeError ( "Arguments to path.resolve must be strings" ) ; a && ( e = a + "/" + e , n = "/" === a . charAt ( 0 ) ) ; } return ( n ? "/" : "" ) + ( e = i ( s ( e . split ( "/" ) , ( function ( t ) { return ! ! t ; } ) ) , ! n ) . join ( "/" ) ) || "." ; } , e . normalize = function ( t ) { var r = e . isAbsolute ( t ) , a = "/" === n ( t , - 1 ) ; return ( t = i ( s ( t . split ( "/" ) , ( function ( t ) { return ! ! t ; } ) ) , ! r ) . join ( "/" ) ) || r || ( t = "." ) , t && a && ( t += "/" ) , ( r ? "/" : "" ) + t ; } , e . isAbsolute = function ( t ) { return "/" === t . charAt ( 0 ) ; } , e . join = function ( ) { var t = Array . prototype . slice . call ( arguments , 0 ) ; return e . normalize ( s ( t , ( function ( t , e ) { if ( "string" != typeof t ) throw new TypeError ( "Arguments to path.join must be strings" ) ; return t ; } ) ) . join ( "/" ) ) ; } , e . relative = function ( t , i ) { function s ( t ) { for ( var e = 0 ; e < t . length && "" === t [ e ] ; e ++ ) ; for ( var i = t . length - 1 ; i >= 0 && "" === t [ i ] ; i -- ) ; return e > i ? [ ] : t . slice ( e , i - e + 1 ) ; } t = e . resolve ( t ) . substr ( 1 ) , i = e . resolve ( i ) . substr ( 1 ) ; for ( var n = s ( t . split ( "/" ) ) , r = s ( i . split ( "/" ) ) , a = Math . min ( n . length , r . length ) , o = a , l = 0 ; l < a ; l ++ ) if ( n [ l ] !== r [ l ] ) { o = l ; break ; } var u = [ ] ; for ( l = o ; l < n . length ; l ++ ) u . push ( ".." ) ; return ( u = u . concat ( r . slice ( o ) ) ) . join ( "/" ) ; } , e . sep = "/" , e . delimiter = ":" , e . dirname = function ( t ) { if ( "string" != typeof t && ( t += "" ) , 0 === t . length ) return "." ; for ( var e = t . charCodeAt ( 0 ) , i = 47 === e , s = - 1 , n = ! 0 , r = t . length - 1 ; r >= 1 ; -- r ) if ( 47 === ( e = t . charCodeAt ( r ) ) ) { if ( ! n ) { s = r ; break ; } } else n = ! 1 ; return - 1 === s ? i ? "/" : "." : i && 1 === s ? "/" : t . slice ( 0 , s ) ; } , e . basename = function ( t , e ) { var i = function ( t ) { "string" != typeof t && ( t += "" ) ; var e , i = 0 , s = - 1 , n = ! 0 ; for ( e = t . length - 1 ; e >= 0 ; -- e ) if ( 47 === t . charCodeAt ( e ) ) { if ( ! n ) { i = e + 1 ; break ; } } else - 1 === s && ( n = ! 1 , s = e + 1 ) ; return - 1 === s ? "" : t . slice ( i , s ) ; } ( t ) ; return e && i . substr ( - 1 * e . length ) === e && ( i = i . substr ( 0 , i . length - e . length ) ) , i ; } , e . extname = function ( t ) { "string" != typeof t && ( t += "" ) ; for ( var e = - 1 , i = 0 , s = - 1 , n = ! 0 , r = 0 , a = t . length - 1 ; a >= 0 ; -- a ) { var o = t . charCodeAt ( a ) ; if ( 47 !== o ) - 1 === s && ( n = ! 1 , s = a + 1 ) , 46 === o ? - 1 === e ? e = a : 1 !== r && ( r = 1 ) : - 1 !== e && ( r = - 1 ) ; else if ( ! n ) { i = a + 1 ; break ; } } return - 1 === e || - 1 === s || 0 === r || 1 === r && e === s - 1 && e === i + 1 ? "" : t . slice ( e , s ) ; } ; var n = "b" === "ab" . substr ( - 1 ) ? function ( t , e , i ) { return t . substr ( e , i ) ; } : function ( t , e , i ) { return e < 0 && ( e = t . length + e ) , t . substr ( e , i ) ; } ; } ) . call ( this , i ( 12 ) ) ; } , function ( t , e , i ) { "use strict" ; i . r ( e ) ; var s = i ( 11 ) ; i . d ( e , "Parser" , ( function ( ) { return s . a ; } ) ) ; } , function ( t , e ) { t . exports = function ( t , e ) { throw new Error ( "Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform." ) ; } ; } , function ( t , e , i ) { "use strict" ; i . d ( e , "a" , ( function ( ) { return r ; } ) ) ; var s = i ( 7 ) , n = i ( 5 ) ; class r { constructor ( ) { this . compiler = null , this . parser = void 0 , this . parser = new s . Parser ; } async get ( t ) { return this . parser . parse ( await this . load ( t ) ) ; } async load ( t ) { if ( t instanceof n . RawContext ) return t . sourceCode ; throw new Error ( "unexpected module context" ) ; } } } , function ( t , e , i ) { "use strict" ; i . r ( e ) , e . default = '"use strict";' ; } , function ( module , __webpack_exports__ , __webpack_require__ ) { "use strict" ; __webpack_require__ . d ( __webpack_exports__ , "a" , ( function ( ) { return Parser ; } ) ) ; var _ast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__ ( 0 ) , _Lexer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__ ( 18 ) , _generated_parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__ ( 20 ) , _generated_parser__WEBPACK_IMPORTED_MODULE_2___default = __webpack_require__ . n ( _generated_parser__WEBPACK_IMPORTED_MODULE_2__ ) ; const yy = { parseString : text => eval ( text ) , parseInteger : t => 0 | t , parseFloat : t => + t , ast : _ast__WEBPACK_IMPORTED_MODULE_0__ , op : _ast__WEBPACK_IMPORTED_MODULE_0__ . OperatorKind , stmts : t => { const e = new _ast__WEBPACK_IMPORTED_MODULE_0__ . Statements ; return e . push ( t ) , e ; } , parseCall : t => { if ( t . length > 1 ) return new _ast__WEBPACK_IMPORTED_MODULE_0__ . Call ( t ) ; let e = t . childNodes [ 0 ] ; return e instanceof _ast__WEBPACK_IMPORTED_MODULE_0__ . Name && ( e . call = ! 0 ) , e ; } , postprocessDescription : t => { const e = new _ast__WEBPACK_IMPORTED_MODULE_0__ . Description ; let i = ! 1 ; for ( let s of t ) null === s ? i = ! 0 : ( s instanceof _ast__WEBPACK_IMPORTED_MODULE_0__ . DescriptionName && ( s . needWhiteSpace = i , s . sort ( ) ) , e . push ( s ) , i = ! 1 ) ; return e ; } } ; class Parser { constructor ( t = [ "START_AST" ] ) { this . jisonParser = new _generated_parser__WEBPACK_IMPORTED_MODULE_2__ . Parser , this . jisonParser . lexer = new _Lexer__WEBPACK_IMPORTED_MODULE_1__ . a ( t ) , this . jisonParser . yy = yy ; } parse ( t ) { return this . jisonParser . parse ( t ) ; } } } , function ( t , e ) { var i , s , n = t . exports = { } ; function r ( ) { throw new Error ( "setTimeout has not been defined" ) ; } function a ( ) { throw new Error ( "clearTimeout has not been defined" ) ; } function o ( t ) { if ( i === setTimeout ) return setTimeout ( t , 0 ) ; if ( ( i === r || ! i ) && setTimeout ) return i = setTimeout , setTimeout ( t , 0 ) ; try { return i ( t , 0 ) ; } catch ( e ) { try { return i . call ( null , t , 0 ) ; } catch ( e ) { return i . call ( this , t , 0 ) ; } } } ! function ( ) { try { i = "function" == typeof setTimeout ? setTimeout : r ; } catch ( t ) { i = r ; } try { s = "function" == typeof clearTimeout ? clearTimeout : a ; } catch ( t ) { s = a ; } } ( ) ; var l , u = [ ] , c = ! 1 , h = - 1 ; function d ( ) { c && l && ( c = ! 1 , l . length ? u = l . concat ( u ) : h = - 1 , u . length && f ( ) ) ; } function f ( ) { if ( ! c ) { var t = o ( d ) ; c = ! 0 ; for ( var e = u . length ; e ; ) { for ( l = u , u = [ ] ; ++ h < e ; ) l && l [ h ] . run ( ) ; h = - 1 , e = u . length ; } l = null , c = ! 1 , function ( t ) { if ( s === clearTimeout ) return clearTimeout ( t ) ; if ( ( s === a || ! s ) && clearTimeout ) return s = clearTimeout , clearTimeout ( t ) ; try { s ( t ) ; } catch ( e ) { try { return s . call ( null , t ) ; } catch ( e ) { return s . call ( this , t ) ; } } } ( t ) ; } } function p ( t , e ) { this . fun = t , this . array = e ; } function w ( ) { } n . nextTick = function ( t ) { var e = new Array ( arguments . length - 1 ) ; if ( arguments . length > 1 ) for ( var i = 1 ; i < arguments . length ; i ++ ) e [ i - 1 ] = arguments [ i ] ; u . push ( new p ( t , e ) ) , 1 !== u . length || c || o ( f ) ; } , p . prototype . run = function ( ) { this . fun . apply ( null , this . array ) ; } , n . title = "browser" , n . browser = ! 0 , n . env = { } , n . argv = [ ] , n . version = "" , n . versions = { } , n . on = w , n . addListener = w , n . once = w , n . off = w , n . removeListener = w , n . removeAllListeners = w , n . emit = w , n . prependListener = w , n . prependOnceListener = w , n . listeners = function ( t ) { return [ ] ; } , n . binding = function ( t ) { throw new Error ( "process.binding is not supported" ) ; } , n . cwd = function ( ) { return "/" ; } , n . chdir = function ( t ) { throw new Error ( "process.chdir is not supported" ) ; } , n . umask = function ( ) { return 0 ; } ; } , function ( module , __webpack_exports__ , __webpack_require__ ) { "use strict" ; __webpack_require__ . d ( __webpack_exports__ , "a" , ( function ( ) { return CommonLoader ; } ) ) ; var _module_loader_Loader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__ ( 9 ) , _module_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__ ( 5 ) ; class CommonLoader extends _module_loader_Loader__WEBPACK_IMPORTED_MODULE_0__ . a { async load ( t ) { return t instanceof _module_context__WEBPACK_IMPORTED_MODULE_1__ . CommonContext ? await load ( t ) : await super . load ( t ) ; } } async function load ( t ) { let e = await _module_context__WEBPACK_IMPORTED_MODULE_1__ . CommonContext . getScriptPathFromContext ( t ) ; return await readFile ( e ) ; } function readFile ( filePath ) { const fs = eval ( 'require("fs-extra")' ) ; return new Promise ( ( t , e ) => { fs . readFile ( filePath , "utf8" , ( i , s ) => { i ? e ( i ) : t ( s ) ; } ) ; } ) ; } } , function ( t , e , i ) { "use strict" ; i . r ( e ) , e . default = "function yaksokCall(yaksok, args) {\n  return args ? yaksok(...args.toJsArray()) : yaksok();\n}" ; } , function ( t , e , i ) { "use strict" ; i . r ( e ) , e . default = "class YaksokList extends Array {\n  get 길이() {\n    return this[0] === void 0 ? this.length - 1 : this.length;\n  }\n\n  *[Symbol.iterator]() {\n    for (let i = this[0] === void 0 ? 1 : 0; i < this.length; ++i) yield this[i];\n  }\n\n  toJsArray() {\n    let copy = this.slice();\n    copy.shift();\n    return copy;\n  }\n\n}\n\nYaksokList.prototype.isYaksokList = true;\n\nfunction yaksokList(array) {\n  array.constructor = YaksokList;\n  array.__proto__ = YaksokList.prototype;\n  return array;\n}" ; } , function ( t , e , i ) { "use strict" ; i . r ( e ) , e . default = "function yaksokLog(value) {\n  switch (typeof value) {\n    case 'boolean':\n      console.log(value ? '참' : '거짓');\n      return;\n\n    case 'object':\n      {\n        if (value.isYaksokList) {\n          console.log(value.toJsArray());\n        } else {\n          console.log(value);\n        }\n      }\n      return;\n\n    case 'undefined':\n      console.log('()');\n      return;\n\n    default:\n      console.log(value);\n      return;\n  }\n}" ; } , function ( t , e , i ) { "use strict" ; i . r ( e ) , e . default = "function yaksokRange(start, stop) {\n  return {\n    get 시작() {\n      return start;\n    },\n\n    get 끝() {\n      return stop;\n    },\n\n    [Symbol.iterator]: function* () {\n      for (let i = start; i <= stop; ++i) yield i;\n    }\n  };\n}" ; } , function ( t , e , i ) { "use strict" ; i . d ( e , "a" , ( function ( ) { return o ; } ) ) ; var s = i ( 19 ) , n = i . n ( s ) ; const r = { "약속" : "YAKSOK" , "결속" : "BIND" , "만약" : "IF" , "이면" : "THEN" , "이라면" : "THEN" , "아니면" : "ELSE" , "아니라면" : "ELSE" , "아니면서" : "ELSEIF" , "참" : "TRUE" , "거짓" : "FALSE" , "반복" : "LOOP" , "그만" : "END_BLOCK" , "다시" : "CONTINUE" , "패스" : "PASS" , "이고" : "AND" , "그리고" : "AND" , "또는" : "OR" , "이거나" : "OR" , "이전" : "PREV" , "바깥" : "OUTSIDE" } , a = Object . assign ( { "의" : "EUI" , "마다" : "MADA" } , r ) ; class o extends n . a { constructor ( t = [ ] ) { super ( ) , this . tabSize = 8 , this . startQueue = t ; } setInput ( t ) { super . setInput ( t ) , this . queue = this . startQueue . slice ( ) , this . state = 0 , this . lexingLoopCondition = ! 1 , this . lexingDescription = ! 1 , this . parenCount = 0 , this . indent = [ 0 ] , "START_DESCRIPTION" === this . queue [ 0 ] && ( this . lexingDescription = ! 0 ) ; } lex ( ) { if ( this . queue . length ) return this . queue . shift ( ) ; let t = super . lex ( ) , e = this . indent ; return void 0 === t && 0 < e [ 0 ] ? ( e . shift ( ) , t = "DEDENT" , t ) : t ; } get tabSize ( ) { return this . _tabSize ; } get tabSpaces ( ) { return this . _tabSpaces ; } set tabSize ( t ) { this . _tabSize = t , this . _tabSpaces = Array ( t + 1 ) . join ( " " ) ; } } o . defunct = function ( t ) { throw 1 === this . state ? new Error ( "번역의 *** 쌍이 맞지 않습니다." ) : new Error ( `잘못된 문자입니다: ${ JSON . stringify ( t ) }` ) ; } , o . addRule ( /\*{3}/ , ( function ( t ) { this . state = 1 ; } ) ) , o . addRule ( /(.|\r?\n)*?\r?\n\s*\*{3}/ , ( function ( t ) { return this . yytext = t . substring ( 0 , t . length - 3 ) , this . state = 0 , "SPECIALBLOCK" ; } ) , [ 1 ] ) , o . addRule ( /번역/ , ( function ( t ) { return this . lexingDescription = ! 0 , "TRANSLATE" ; } ) ) , o . addRule ( /[\t ]*#[^\r\n]*/ ) , o . addRule ( /^[\t ]*/gm , ( function ( t ) { if ( 0 !== this . parenCount ) return void ( this . reject = ! 0 ) ; let e = t . split ( "\t" ) . join ( this . tabSpaces ) . length , i = this . indent ; if ( e > i [ 0 ] ) return i . unshift ( e ) , "INDENT" ; let s = [ ] ; for ( ; e < i [ 0 ] ; ) s . push ( "DEDENT" ) , i . shift ( ) ; return s . length ? s : void 0 ; } ) ) , o . addRule ( /[\t ]+/ , ( function ( t ) { if ( this . lexingDescription ) return "WS" ; } ) ) , o . addRule ( /0[xX][0-9a-fA-F]+/ , ( function ( t ) { return this . yytext = parseInt ( t ) + "" , "INTEGER" ; } ) ) , o . addRule ( /\d*\.?\d+(?:[Ee](?:[+-]?\d+)?)?/ , ( function ( t ) { return this . yytext = t , /^[1-9][0-9]*$/ . test ( t ) ? "INTEGER" : /^0[0-9]*$/ . test ( t ) ? ( this . yytext = parseInt ( t , 8 ) + "" , "INTEGER" ) : "FLOAT" ; } ) ) , o . addRule ( /"([^\\"]|\\.)*"|'([^\\']|\\.)*'/ , "STRING" ) , o . addRule ( /[$_a-zA-Z가-힣][$_a-zA-Z가-힣0-9]*/ , ( function ( t ) { this . yytext = t ; let e = this . lexingLoopCondition ? a [ t ] : r [ t ] ; if ( e ) { switch ( e ) { case "LOOP" : this . lexingLoopCondition = ! 0 ; break ; case "YAKSOK" : this . lexingDescription = ! 0 ; break ; case "END_BLOCK" : this . lexingDescription = ! 1 ; break ; case "PREV" : return "IDENTIFIER" ; } return e ; } return "IDENTIFIER" ; } ) ) , o . addRule ( /:/ , "ASSIGN" ) , o . addRule ( /,/ , "COMMA" ) , o . addRule ( /\./ , "DOT" ) , o . addRule ( /~/ , "TILDE" ) , o . addRule ( /@/ , "ATMARK" ) , o . addRule ( /\?/ , "QUESTION" ) , o . addRule ( /\+/ , "PLUS" ) , o . addRule ( /-/ , "MINUS" ) , o . addRule ( /\*/ , "MULT" ) , o . addRule ( /\// , "DIV" ) , o . addRule ( /\%/ , "MOD" ) , o . addRule ( /=/ , "EQ" ) , o . addRule ( />/ , "GT" ) , o . addRule ( /</ , "LT" ) , o . addRule ( /!=/ , "NE" ) , o . addRule ( />=/ , "GTEQ" ) , o . addRule ( /<=/ , "LTEQ" ) , o . addRule ( /\r?\n(?:[ \t]*\r?\n)*/ , ( function ( t ) { if ( this . lexingDescription && ( this . lexingDescription = ! 1 ) , 0 === this . parenCount ) return this . lexingLoopCondition = ! 1 , "NEWLINE" ; } ) ) , o . addRule ( /\{/ , ( function ( t ) { return ++ this . parenCount , "LCURLY" ; } ) ) , o . addRule ( /\}/ , ( function ( t ) { return -- this . parenCount , "RCURLY" ; } ) ) , o . addRule ( /\[/ , ( function ( t ) { return ++ this . parenCount , "LSQUARE" ; } ) ) , o . addRule ( /\]/ , ( function ( t ) { return -- this . parenCount , "RSQUARE" ; } ) ) , o . addRule ( /\(/ , ( function ( t ) { return ++ this . parenCount , "LPAR" ; } ) ) , o . addRule ( /\)/ , ( function ( t ) { return -- this . parenCount , "RPAR" ; } ) ) ; } , function ( t , e , i ) { "use strict" ; t . exports = class { static defunct ( t ) { throw new Error ( "Unexpected character at index " + ( this . index - 1 ) + ": " + t ) ; } static addRule ( t , e , i ) { let s = t . global ; if ( ! s ) { let e = `g${ t . multiline ? "m" : "" }${ t . ignoreCase ? "i" : "" }` ; t = new RegExp ( t . source , e ) ; } if ( ! ( e instanceof Function ) ) { let t = e ; e = function ( e ) { return this . yytext = e , t ; } ; } i || ( i = [ 0 ] ) , this . hasOwnProperty ( "rules" ) || ( this . rules = [ ] ) , this . rules . push ( { pattern : t , global : s , action : e , start : i } ) ; } constructor ( t ) { this . defunct = t instanceof Function ? t : this . constructor . defunct , this . _tokens = [ ] , this . _remove = 0 , this . state = 0 , this . index = 0 , this . input = "" ; } setInput ( t ) { return this . _tokens . length = 0 , this . _remove = 0 , this . state = 0 , this . index = 0 , this . input = t , this ; } lex ( ) { let t = this . input ; if ( this . _tokens . length ) return this . _tokens . shift ( ) ; for ( this . reject = ! 0 ; this . index <= t . length ; ) { let e = this . _scan ( ) . splice ( this . _remove ) , i = this . index ; for ( ; e . length && this . reject ; ) { let t = e . shift ( ) , i = t . result , s = t . length ; this . index += s , this . reject = ! 1 , this . _remove ++ ; let n = t . action . apply ( this , i ) ; if ( this . reject ) this . index = i . index ; else if ( void 0 !== n ) return Array . isArray ( n ) && ( this . _tokens = n . slice ( 1 ) , n = n [ 0 ] ) , s && ( this . _remove = 0 ) , n ; } if ( i < t . length ) if ( this . reject ) { this . _remove = 0 ; let e = this . defunct ( t . charAt ( this . index ++ ) ) ; if ( void 0 !== e ) return Array . isArray ( e ) ? ( this . _tokens = e . slice ( 1 ) , e [ 0 ] ) : e ; } else this . index !== i && ( this . _remove = 0 ) , this . reject = ! 0 ; else { if ( ! e . length ) break ; this . reject = ! 0 ; } } } _scan ( ) { var t = [ ] , e = 0 , i = this . state , s = this . index , n = this . input ; let r = this . constructor . rules ; for ( var a = 0 , o = r . length ; a < o ; a ++ ) { var l = r [ a ] , u = l . start , c = u . length ; if ( ! c || u . indexOf ( i ) >= 0 || i % 2 && 1 === c && ! u [ 0 ] ) { var h = l . pattern ; h . lastIndex = s ; var d = h . exec ( n ) ; if ( d && d . index === s ) { var f = t . push ( { result : d , action : l . action , length : d [ 0 ] . length } ) ; for ( l . global && ( e = f ) ; -- f > e ; ) { var p = f - 1 ; if ( t [ f ] . length > t [ p ] . length ) { var w = t [ f ] ; t [ f ] = t [ p ] , t [ p ] = w ; } } } } } return t ; } } ; } , function ( t , e , i ) { ( function ( t , s ) { var n = function ( ) { var t = function ( t , e , i , s ) { for ( i = i || { } , s = t . length ; s -- ; i [ t [ s ] ] = e ) ; return i ; } , e = [ 29 , 33 , 34 , 44 , 48 , 52 , 53 , 56 , 57 , 76 , 78 , 83 , 84 , 85 , 91 , 94 , 95 , 99 ] , i = [ 2 , 4 ] , s = [ 1 , 8 ] , n = [ 1 , 9 ] , r = [ 1 , 15 ] , a = [ 1 , 16 ] , o = [ 1 , 17 ] , l = [ 1 , 21 ] , u = [ 1 , 22 ] , c = [ 1 , 41 ] , h = [ 1 , 48 ] , d = [ 1 , 30 ] , f = [ 1 , 31 ] , p = [ 1 , 33 ] , w = [ 1 , 34 ] , v = [ 1 , 35 ] , _ = [ 1 , 44 ] , y = [ 1 , 42 ] , m = [ 1 , 43 ] , b = [ 1 , 45 ] , g = [ 1 , 61 ] , E = [ 1 , 66 ] , k = [ 1 , 63 ] , x = [ 1 , 64 ] , O = [ 1 , 65 ] , C = [ 1 , 4 , 5 , 7 , 29 , 33 , 34 , 41 , 42 , 44 , 48 , 49 , 52 , 53 , 55 , 56 , 57 , 58 , 76 , 78 , 83 , 84 , 85 , 91 , 92 , 94 , 95 , 98 , 99 , 100 ] , D = [ 1 , 4 , 5 , 9 , 55 , 56 , 57 ] , T = [ 1 , 72 ] , A = [ 2 , 6 ] , I = [ 1 , 4 , 5 , 9 , 55 , 56 , 57 , 63 ] , R = [ 1 , 4 , 5 , 7 , 29 , 33 , 34 , 41 , 42 , 44 , 48 , 49 , 52 , 53 , 56 , 57 , 58 , 76 , 78 , 83 , 84 , 85 , 91 , 92 , 94 , 95 , 98 , 99 , 100 ] , L = [ 1 , 7 , 29 , 33 , 34 , 41 , 42 , 44 , 48 , 49 , 52 , 53 , 58 , 92 , 98 , 100 ] , S = [ 1 , 80 ] , P = [ 1 , 4 , 5 , 7 , 29 , 33 , 34 , 38 , 41 , 42 , 44 , 48 , 49 , 52 , 53 , 56 , 57 , 58 , 76 , 78 , 83 , 84 , 85 , 91 , 92 , 94 , 95 , 98 , 99 , 100 ] , M = [ 1 , 4 , 5 , 7 , 29 , 33 , 34 , 38 , 41 , 42 , 44 , 48 , 49 , 52 , 53 , 56 , 57 , 58 , 65 , 76 , 78 , 83 , 84 , 85 , 91 , 92 , 94 , 95 , 98 , 99 , 100 ] , N = [ 1 , 82 ] , B = [ 1 , 4 , 5 , 7 , 29 , 33 , 34 , 38 , 41 , 42 , 44 , 48 , 49 , 52 , 53 , 56 , 57 , 58 , 65 , 67 , 76 , 78 , 83 , 84 , 85 , 91 , 92 , 94 , 95 , 98 , 99 , 100 ] , $ = [ 1 , 4 , 5 , 7 , 29 , 33 , 34 , 38 , 41 , 42 , 44 , 48 , 49 , 52 , 53 , 56 , 57 , 58 , 65 , 67 , 83 , 84 , 85 , 91 , 92 , 94 , 95 , 98 , 99 , 100 ] , U = [ 1 , 89 ] , F = [ 1 , 90 ] , K = [ 1 , 91 ] , j = [ 1 , 4 , 5 , 7 , 29 , 33 , 34 , 38 , 41 , 42 , 44 , 48 , 49 , 52 , 53 , 56 , 57 , 58 , 65 , 67 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 78 , 83 , 84 , 85 , 91 , 92 , 93 , 94 , 95 , 96 , 98 , 99 , 100 ] , z = [ 1 , 93 ] , W = [ 1 , 92 ] , q = [ 1 , 94 ] , Y = [ 1 , 4 , 5 , 7 , 29 , 33 , 34 , 38 , 41 , 42 , 44 , 48 , 49 , 52 , 53 , 56 , 57 , 58 , 63 , 65 , 67 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 78 , 79 , 81 , 83 , 84 , 85 , 91 , 92 , 93 , 94 , 95 , 96 , 98 , 99 , 100 ] , V = [ 1 , 4 , 5 , 7 , 29 , 33 , 34 , 38 , 41 , 42 , 44 , 48 , 49 , 52 , 53 , 56 , 57 , 58 , 63 , 65 , 67 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 78 , 79 , 81 , 83 , 84 , 85 , 92 , 94 , 95 , 96 , 98 , 99 , 100 ] , G = [ 1 , 98 ] , Q = [ 1 , 99 ] , J = [ 2 , 94 ] , H = [ 1 , 4 , 5 , 7 , 28 , 29 , 33 , 34 , 38 , 41 , 42 , 44 , 48 , 49 , 52 , 53 , 56 , 57 , 58 , 63 , 65 , 67 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 78 , 79 , 81 , 83 , 84 , 85 , 91 , 92 , 93 , 94 , 95 , 96 , 98 , 99 , 100 ] , Z = [ 1 , 7 ] , X = [ 1 , 4 , 5 , 7 , 29 , 33 , 34 , 44 , 48 , 52 , 53 , 56 , 57 , 76 , 78 , 83 , 84 , 85 , 91 , 94 , 95 , 99 ] , tt = [ 1 , 116 ] , et = [ 2 , 7 ] , it = [ 1 , 4 , 5 , 7 , 29 , 33 , 34 , 41 , 42 , 44 , 48 , 49 , 52 , 53 , 58 , 92 , 98 , 100 ] , st = [ 92 , 98 ] , nt = [ 98 , 100 ] , rt = [ 1 , 7 , 29 , 33 , 34 , 44 , 48 , 52 , 53 , 56 , 57 , 76 , 78 , 83 , 84 , 85 , 91 , 94 , 95 , 99 ] , at = [ 1 , 4 , 5 , 7 , 29 , 33 , 34 , 42 , 44 , 46 , 48 , 52 , 53 , 56 , 57 , 76 , 78 , 83 , 84 , 85 , 91 , 94 , 95 , 99 ] , ot = { trace : function ( ) { } , yy : { } , symbols_ : { error : 2 , NEWLINES : 3 , NEWLINE : 4 , INDENT : 5 , empty_or_newlines : 6 , DEDENT : 7 , empty_or_whitespace : 8 , WS : 9 , ast : 10 , START_AST : 11 , statements : 12 , START_DESCRIPTION : 13 , description : 14 , START_CALL : 15 , call : 16 , statement_list : 17 , statement : 18 , assign_statement : 19 , outside_statement : 20 , if_else_statement : 21 , loop_statement : 22 , loop_end_statement : 23 , yaksok_statement : 24 , yaksok_end_statement : 25 , translate_statement : 26 , lvalue : 27 , ASSIGN : 28 , OUTSIDE : 29 , name : 30 , bind : 31 , expressions : 32 , ATMARK : 33 , BIND : 34 , bexpressions : 35 , bexpression : 36 , expression : 37 , QUESTION : 38 , block : 39 , if_phrase : 40 , THEN : 41 , ELSE : 42 , if_statement : 43 , IF : 44 , elseif_statement : 45 , ELSEIF : 46 , elseif_else_statement : 47 , LOOP : 48 , EUI : 49 , MADA : 50 , END_BLOCK : 51 , YAKSOK : 52 , TRANSLATE : 53 , translate_target : 54 , SPECIALBLOCK : 55 , LPAR : 56 , IDENTIFIER : 57 , RPAR : 58 , raw_description : 59 , description_item : 60 , description_parameter : 61 , description_name : 62 , DIV : 63 , or_expression : 64 , OR : 65 , and_expression : 66 , AND : 67 , logical_expression : 68 , additive_expression : 69 , EQ : 70 , NE : 71 , GT : 72 , LT : 73 , GTEQ : 74 , LTEQ : 75 , PLUS : 76 , multiplicative_expression : 77 , MINUS : 78 , MULT : 79 , prefix_expression : 80 , MOD : 81 , primary_expression : 82 , STRING : 83 , TRUE : 84 , FALSE : 85 , NUMBER : 86 , RANGE : 87 , LIST : 88 , DICT : 89 , access_expression : 90 , LSQUARE : 91 , RSQUARE : 92 , DOT : 93 , INTEGER : 94 , FLOAT : 95 , TILDE : 96 , list_items : 97 , COMMA : 98 , LCURLY : 99 , RCURLY : 100 , dict_key_values : 101 , dict_key_value : 102 , $accept : 0 , $end : 1 } , terminals_ : { 2 : "error" , 4 : "NEWLINE" , 5 : "INDENT" , 7 : "DEDENT" , 9 : "WS" , 11 : "START_AST" , 13 : "START_DESCRIPTION" , 15 : "START_CALL" , 28 : "ASSIGN" , 29 : "OUTSIDE" , 33 : "ATMARK" , 34 : "BIND" , 38 : "QUESTION" , 41 : "THEN" , 42 : "ELSE" , 44 : "IF" , 46 : "ELSEIF" , 48 : "LOOP" , 49 : "EUI" , 50 : "MADA" , 51 : "END_BLOCK" , 52 : "YAKSOK" , 53 : "TRANSLATE" , 55 : "SPECIALBLOCK" , 56 : "LPAR" , 57 : "IDENTIFIER" , 58 : "RPAR" , 63 : "DIV" , 65 : "OR" , 67 : "AND" , 70 : "EQ" , 71 : "NE" , 72 : "GT" , 73 : "LT" , 74 : "GTEQ" , 75 : "LTEQ" , 76 : "PLUS" , 78 : "MINUS" , 79 : "MULT" , 81 : "MOD" , 83 : "STRING" , 84 : "TRUE" , 85 : "FALSE" , 91 : "LSQUARE" , 92 : "RSQUARE" , 93 : "DOT" , 94 : "INTEGER" , 95 : "FLOAT" , 96 : "TILDE" , 98 : "COMMA" , 99 : "LCURLY" , 100 : "RCURLY" } , productions_ : [ 0 , [ 3 , 2 ] , [ 3 , 1 ] , [ 3 , 3 ] , [ 6 , 0 ] , [ 6 , 1 ] , [ 8 , 0 ] , [ 8 , 1 ] , [ 10 , 2 ] , [ 10 , 2 ] , [ 10 , 2 ] , [ 12 , 3 ] , [ 17 , 2 ] , [ 17 , 1 ] , [ 18 , 1 ] , [ 18 , 1 ] , [ 18 , 1 ] , [ 18 , 1 ] , [ 18 , 1 ] , [ 18 , 1 ] , [ 18 , 1 ] , [ 18 , 1 ] , [ 18 , 1 ] , [ 19 , 4 ] , [ 20 , 3 ] , [ 16 , 1 ] , [ 16 , 2 ] , [ 16 , 4 ] , [ 31 , 2 ] , [ 31 , 4 ] , [ 35 , 2 ] , [ 35 , 1 ] , [ 36 , 1 ] , [ 36 , 1 ] , [ 39 , 4 ] , [ 40 , 3 ] , [ 40 , 3 ] , [ 43 , 2 ] , [ 45 , 2 ] , [ 45 , 2 ] , [ 47 , 3 ] , [ 47 , 2 ] , [ 47 , 1 ] , [ 21 , 3 ] , [ 21 , 3 ] , [ 21 , 2 ] , [ 21 , 1 ] , [ 22 , 2 ] , [ 22 , 6 ] , [ 23 , 3 ] , [ 24 , 4 ] , [ 25 , 3 ] , [ 26 , 7 ] , [ 54 , 5 ] , [ 14 , 1 ] , [ 59 , 2 ] , [ 59 , 1 ] , [ 60 , 1 ] , [ 60 , 1 ] , [ 60 , 1 ] , [ 61 , 5 ] , [ 62 , 3 ] , [ 62 , 1 ] , [ 32 , 2 ] , [ 32 , 1 ] , [ 37 , 1 ] , [ 64 , 3 ] , [ 64 , 1 ] , [ 66 , 3 ] , [ 66 , 1 ] , [ 68 , 3 ] , [ 68 , 3 ] , [ 68 , 3 ] , [ 68 , 3 ] , [ 68 , 3 ] , [ 68 , 3 ] , [ 68 , 1 ] , [ 69 , 3 ] , [ 69 , 3 ] , [ 69 , 1 ] , [ 77 , 3 ] , [ 77 , 3 ] , [ 77 , 3 ] , [ 77 , 1 ] , [ 80 , 2 ] , [ 80 , 2 ] , [ 80 , 1 ] , [ 82 , 1 ] , [ 82 , 1 ] , [ 82 , 1 ] , [ 82 , 1 ] , [ 82 , 1 ] , [ 82 , 1 ] , [ 82 , 1 ] , [ 82 , 1 ] , [ 82 , 2 ] , [ 82 , 3 ] , [ 27 , 1 ] , [ 27 , 1 ] , [ 90 , 4 ] , [ 90 , 3 ] , [ 30 , 1 ] , [ 86 , 1 ] , [ 86 , 1 ] , [ 87 , 3 ] , [ 88 , 2 ] , [ 88 , 3 ] , [ 88 , 4 ] , [ 97 , 3 ] , [ 97 , 1 ] , [ 89 , 2 ] , [ 89 , 3 ] , [ 89 , 4 ] , [ 101 , 3 ] , [ 101 , 1 ] , [ 102 , 3 ] ] , performAction : function ( t , e , i , s , n , r , a ) { var o = r . length - 1 ; switch ( n ) { case 8 : return new s . ast . YaksokRoot ( r [ o ] ) ; case 9 : case 10 : return r [ o ] ; case 11 : case 34 : case 96 : case 106 : case 111 : this . $ = r [ o - 1 ] ; break ; case 12 : case 30 : case 55 : case 63 : r [ o - 1 ] . push ( r [ o ] ) , this . $ = r [ o - 1 ] ; break ; case 13 : this . $ = new s . ast . Statements , this . $ . push ( r [ o ] ) ; break ; case 14 : case 15 : case 17 : case 18 : case 19 : case 20 : case 21 : case 22 : case 25 : case 32 : case 37 : case 38 : case 39 : case 42 : case 46 : case 57 : case 58 : case 65 : case 67 : case 69 : case 76 : case 79 : case 83 : case 86 : case 90 : case 91 : case 92 : case 93 : case 94 : case 97 : case 98 : this . $ = r [ o ] ; break ; case 16 : this . $ = new s . ast . PlainStatement ( r [ o ] ) ; break ; case 23 : this . $ = new s . ast . Assign ( r [ o - 3 ] , r [ o - 1 ] ) ; break ; case 24 : this . $ = new s . ast . Outside ( r [ o - 1 ] ) ; break ; case 26 : this . $ = s . parseCall ( r [ o - 1 ] ) ; break ; case 27 : this . $ = new s . ast . ModuleCall ( r [ o - 2 ] , r [ o - 1 ] ) ; break ; case 28 : this . $ = new s . ast . CallBind ( r [ o ] ) ; break ; case 29 : this . $ = new s . ast . ModuleCallBind ( r [ o - 1 ] , r [ o ] ) ; break ; case 31 : case 64 : this . $ = new s . ast . Expressions , this . $ . push ( r [ o ] ) ; break ; case 33 : this . $ = new s . ast . Question ; break ; case 35 : this . $ = new s . ast . If ( r [ o - 2 ] , r [ o ] , null ) ; break ; case 36 : this . $ = new s . ast . IfNot ( r [ o - 2 ] , r [ o ] , null ) ; break ; case 40 : case 43 : r [ o - 2 ] . elseBlock = r [ o ] , this . $ = r [ o - 2 ] ; break ; case 41 : case 45 : r [ o - 1 ] . elseBlock = s . stmts ( r [ o ] ) , this . $ = r [ o - 1 ] ; break ; case 44 : r [ o - 2 ] . elseBlock = s . stmts ( r [ o ] ) , this . $ = r [ o - 2 ] ; break ; case 47 : this . $ = new s . ast . Loop ( r [ o ] ) ; break ; case 48 : this . $ = new s . ast . Iterate ( r [ o - 4 ] , r [ o - 2 ] , r [ o ] ) ; break ; case 49 : this . $ = new s . ast . LoopEnd ; break ; case 50 : this . $ = new s . ast . Yaksok ( r [ o - 1 ] , r [ o ] ) ; break ; case 51 : this . $ = new s . ast . YaksokEnd ; break ; case 52 : this . $ = new s . ast . Translate ( r [ o - 3 ] , r [ o - 5 ] , r [ o - 1 ] ) ; break ; case 53 : case 107 : case 112 : this . $ = r [ o - 2 ] ; break ; case 54 : this . $ = s . postprocessDescription ( r [ o ] ) ; break ; case 56 : this . $ = new s . ast . Description , this . $ . push ( r [ o ] ) ; break ; case 59 : this . $ = null ; break ; case 60 : this . $ = new s . ast . DescriptionParameter ( r [ o - 2 ] ) ; break ; case 61 : r [ o - 2 ] . push ( r [ o ] ) , this . $ = r [ o - 2 ] ; break ; case 62 : this . $ = new s . ast . DescriptionName , this . $ . push ( r [ o ] ) ; break ; case 66 : this . $ = new s . ast . BinaryOperator ( s . op . Or , r [ o - 2 ] , r [ o ] ) ; break ; case 68 : this . $ = new s . ast . BinaryOperator ( s . op . And , r [ o - 2 ] , r [ o ] ) ; break ; case 70 : this . $ = new s . ast . BinaryOperator ( s . op . Equal , r [ o - 2 ] , r [ o ] ) ; break ; case 71 : this . $ = new s . ast . BinaryOperator ( s . op . NotEqual , r [ o - 2 ] , r [ o ] ) ; break ; case 72 : this . $ = new s . ast . BinaryOperator ( s . op . GreaterThan , r [ o - 2 ] , r [ o ] ) ; break ; case 73 : this . $ = new s . ast . BinaryOperator ( s . op . LessThan , r [ o - 2 ] , r [ o ] ) ; break ; case 74 : this . $ = new s . ast . BinaryOperator ( s . op . GreaterThanEqual , r [ o - 2 ] , r [ o ] ) ; break ; case 75 : this . $ = new s . ast . BinaryOperator ( s . op . LessThanEqual , r [ o - 2 ] , r [ o ] ) ; break ; case 77 : this . $ = new s . ast . BinaryOperator ( s . op . Plus , r [ o - 2 ] , r [ o ] ) ; break ; case 78 : this . $ = new s . ast . BinaryOperator ( s . op . Minus , r [ o - 2 ] , r [ o ] ) ; break ; case 80 : this . $ = new s . ast . BinaryOperator ( s . op . Multiply , r [ o - 2 ] , r [ o ] ) ; break ; case 81 : this . $ = new s . ast . BinaryOperator ( s . op . Divide , r [ o - 2 ] , r [ o ] ) ; break ; case 82 : this . $ = new s . ast . BinaryOperator ( s . op . Modular , r [ o - 2 ] , r [ o ] ) ; break ; case 84 : this . $ = new s . ast . UnaryPlus ( r [ o ] ) ; break ; case 85 : this . $ = new s . ast . UnaryMinus ( r [ o ] ) ; break ; case 87 : this . $ = new s . ast . String ( s . parseString ( r [ o ] ) ) ; break ; case 88 : this . $ = new s . ast . Boolean ( ! 0 ) ; break ; case 89 : this . $ = new s . ast . Boolean ( ! 1 ) ; break ; case 95 : this . $ = new s . ast . Void ; break ; case 99 : this . $ = new s . ast . BinaryOperator ( s . op . Access , r [ o - 3 ] , r [ o - 1 ] ) ; break ; case 100 : this . $ = new s . ast . BinaryOperator ( s . op . DotAccess , r [ o - 2 ] , r [ o ] ) ; break ; case 101 : this . $ = new s . ast . Name ( r [ o ] ) ; break ; case 102 : this . $ = new s . ast . Integer ( s . parseInteger ( r [ o ] ) ) ; break ; case 103 : this . $ = new s . ast . Float ( s . parseFloat ( r [ o ] ) ) ; break ; case 104 : this . $ = new s . ast . Range ( r [ o - 2 ] , r [ o ] ) ; break ; case 105 : this . $ = new s . ast . List ; break ; case 108 : case 113 : r [ o - 2 ] . push ( r [ o ] ) , this . $ = r [ o - 2 ] ; break ; case 109 : this . $ = new s . ast . List , this . $ . push ( r [ o ] ) ; break ; case 110 : this . $ = new s . ast . Dict ; break ; case 114 : this . $ = new s . ast . Dict , this . $ . push ( r [ o ] ) ; break ; case 115 : this . $ = new s . ast . DictKeyValue ( r [ o - 2 ] , r [ o ] ) ; } } , table : [ { 10 : 1 , 11 : [ 1 , 2 ] , 13 : [ 1 , 3 ] , 15 : [ 1 , 4 ] } , { 1 : [ 3 ] } , t ( e , i , { 12 : 5 , 6 : 6 , 3 : 7 , 4 : s , 5 : n } ) , { 9 : r , 14 : 10 , 56 : a , 57 : o , 59 : 11 , 60 : 12 , 61 : 13 , 62 : 14 } , { 16 : 18 , 27 : 40 , 30 : 46 , 31 : 19 , 32 : 20 , 33 : l , 34 : u , 37 : 23 , 56 : c , 57 : h , 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , { 1 : [ 2 , 8 ] } , { 16 : 53 , 17 : 49 , 18 : 50 , 19 : 51 , 20 : 52 , 21 : 54 , 22 : 55 , 23 : 56 , 24 : 57 , 25 : 58 , 26 : 59 , 27 : 60 , 29 : g , 30 : 46 , 31 : 19 , 32 : 20 , 33 : l , 34 : u , 37 : 23 , 43 : 62 , 44 : E , 48 : k , 52 : x , 53 : O , 56 : c , 57 : h , 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , t ( [ 1 , 5 , 7 , 29 , 33 , 34 , 41 , 42 , 44 , 48 , 49 , 52 , 53 , 55 , 56 , 57 , 58 , 76 , 78 , 83 , 84 , 85 , 91 , 92 , 94 , 95 , 98 , 99 , 100 ] , [ 2 , 5 ] , { 4 : [ 1 , 67 ] } ) , t ( C , [ 2 , 2 ] ) , { 3 : 7 , 4 : s , 5 : n , 6 : 68 , 7 : i } , { 1 : [ 2 , 9 ] } , t ( [ 1 , 4 , 5 , 55 ] , [ 2 , 54 ] , { 61 : 13 , 62 : 14 , 60 : 69 , 9 : r , 56 : a , 57 : o } ) , t ( D , [ 2 , 56 ] ) , t ( D , [ 2 , 57 ] ) , t ( D , [ 2 , 58 ] , { 63 : [ 1 , 70 ] } ) , t ( D , [ 2 , 59 ] ) , { 8 : 71 , 9 : T , 57 : A } , t ( I , [ 2 , 62 ] ) , { 1 : [ 2 , 10 ] } , t ( R , [ 2 , 25 ] ) , t ( L , i , { 3 : 7 , 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 77 : 28 , 80 : 29 , 82 : 32 , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 27 : 40 , 30 : 46 , 90 : 47 , 6 : 73 , 37 : 74 , 4 : s , 5 : n , 56 : c , 57 : h , 76 : d , 78 : f , 83 : p , 84 : w , 85 : v , 91 : _ , 94 : y , 95 : m , 99 : b } ) , { 30 : 75 , 57 : h } , { 27 : 40 , 30 : 46 , 33 : [ 1 , 77 ] , 35 : 76 , 36 : 78 , 37 : 79 , 38 : S , 56 : c , 57 : h , 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , t ( R , [ 2 , 64 ] ) , t ( P , [ 2 , 65 ] , { 65 : [ 1 , 81 ] } ) , t ( M , [ 2 , 67 ] , { 67 : N } ) , t ( B , [ 2 , 69 ] ) , t ( $ , [ 2 , 76 ] , { 70 : [ 1 , 83 ] , 71 : [ 1 , 84 ] , 72 : [ 1 , 85 ] , 73 : [ 1 , 86 ] , 74 : [ 1 , 87 ] , 75 : [ 1 , 88 ] , 76 : U , 78 : F , 96 : K } ) , t ( j , [ 2 , 79 ] , { 63 : z , 79 : W , 81 : q } ) , t ( Y , [ 2 , 83 ] ) , { 27 : 40 , 30 : 46 , 56 : c , 57 : h , 69 : 96 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 95 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , { 27 : 40 , 30 : 46 , 56 : c , 57 : h , 69 : 96 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 97 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , t ( V , [ 2 , 86 ] , { 91 : G , 93 : Q } ) , t ( Y , [ 2 , 87 ] ) , t ( Y , [ 2 , 88 ] ) , t ( Y , [ 2 , 89 ] ) , t ( Y , [ 2 , 90 ] ) , t ( Y , [ 2 , 91 ] ) , t ( Y , [ 2 , 92 ] ) , t ( Y , [ 2 , 93 ] ) , t ( Y , J ) , { 16 : 101 , 27 : 40 , 30 : 46 , 31 : 19 , 32 : 20 , 33 : l , 34 : u , 37 : 23 , 56 : c , 57 : h , 58 : [ 1 , 100 ] , 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , t ( Y , [ 2 , 102 ] ) , t ( Y , [ 2 , 103 ] ) , { 16 : 104 , 27 : 40 , 30 : 46 , 31 : 19 , 32 : 20 , 33 : l , 34 : u , 37 : 23 , 56 : c , 57 : h , 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 92 : [ 1 , 102 ] , 94 : y , 95 : m , 97 : 103 , 99 : b } , { 30 : 108 , 57 : h , 100 : [ 1 , 105 ] , 101 : 106 , 102 : 107 } , t ( H , [ 2 , 97 ] ) , t ( H , [ 2 , 98 ] ) , t ( [ 1 , 4 , 5 , 7 , 28 , 29 , 33 , 34 , 38 , 41 , 42 , 44 , 48 , 49 , 50 , 52 , 53 , 56 , 57 , 58 , 63 , 65 , 67 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 78 , 79 , 81 , 83 , 84 , 85 , 91 , 92 , 93 , 94 , 95 , 96 , 98 , 99 , 100 ] , [ 2 , 101 ] ) , t ( Z , i , { 3 : 7 , 31 : 19 , 32 : 20 , 37 : 23 , 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 77 : 28 , 80 : 29 , 82 : 32 , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 30 : 46 , 90 : 47 , 19 : 51 , 20 : 52 , 16 : 53 , 21 : 54 , 22 : 55 , 23 : 56 , 24 : 57 , 25 : 58 , 26 : 59 , 27 : 60 , 43 : 62 , 6 : 109 , 18 : 110 , 4 : s , 5 : n , 29 : g , 33 : l , 34 : u , 44 : E , 48 : k , 52 : x , 53 : O , 56 : c , 57 : h , 76 : d , 78 : f , 83 : p , 84 : w , 85 : v , 91 : _ , 94 : y , 95 : m , 99 : b } ) , t ( X , [ 2 , 13 ] ) , t ( X , [ 2 , 14 ] ) , t ( X , [ 2 , 15 ] ) , t ( X , [ 2 , 16 ] ) , t ( X , [ 2 , 17 ] ) , t ( X , [ 2 , 18 ] ) , t ( X , [ 2 , 19 ] ) , t ( X , [ 2 , 20 ] ) , t ( X , [ 2 , 21 ] ) , t ( X , [ 2 , 22 ] ) , t ( [ 1 , 4 , 5 , 7 , 29 , 33 , 34 , 44 , 48 , 52 , 53 , 56 , 57 , 63 , 65 , 67 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 78 , 79 , 81 , 83 , 84 , 85 , 91 , 93 , 94 , 95 , 96 , 99 ] , J , { 28 : [ 1 , 111 ] } ) , { 30 : 112 , 57 : h } , t ( X , [ 2 , 46 ] , { 47 : 114 , 45 : 115 , 42 : [ 1 , 113 ] , 46 : tt } ) , { 3 : 7 , 4 : s , 5 : n , 6 : 120 , 16 : 118 , 27 : 40 , 30 : 46 , 31 : 19 , 32 : 20 , 33 : l , 34 : u , 37 : 23 , 39 : 117 , 51 : [ 1 , 119 ] , 56 : c , 57 : h , 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , { 8 : 122 , 9 : [ 1 , 121 ] , 51 : A } , { 54 : 123 , 56 : [ 1 , 124 ] } , { 16 : 126 , 27 : 40 , 30 : 46 , 31 : 19 , 32 : 20 , 33 : l , 34 : u , 37 : 23 , 40 : 125 , 56 : c , 57 : h , 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , t ( C , [ 2 , 1 ] ) , { 7 : [ 1 , 127 ] } , t ( D , [ 2 , 55 ] ) , { 57 : [ 1 , 128 ] } , { 57 : [ 1 , 129 ] } , t ( [ 57 , 58 ] , et ) , t ( R , [ 2 , 26 ] ) , t ( R , [ 2 , 63 ] ) , { 27 : 40 , 30 : 46 , 32 : 130 , 37 : 23 , 56 : c , 57 : h , 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , t ( it , [ 2 , 28 ] , { 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 77 : 28 , 80 : 29 , 82 : 32 , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 27 : 40 , 30 : 46 , 90 : 47 , 37 : 79 , 36 : 131 , 38 : S , 56 : c , 57 : h , 76 : d , 78 : f , 83 : p , 84 : w , 85 : v , 91 : _ , 94 : y , 95 : m , 99 : b } ) , { 30 : 132 , 57 : h } , t ( P , [ 2 , 31 ] ) , t ( P , [ 2 , 32 ] ) , t ( P , [ 2 , 33 ] ) , { 27 : 40 , 30 : 46 , 56 : c , 57 : h , 66 : 133 , 68 : 26 , 69 : 27 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , { 27 : 40 , 30 : 46 , 56 : c , 57 : h , 68 : 134 , 69 : 27 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , { 27 : 40 , 30 : 46 , 56 : c , 57 : h , 69 : 135 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , { 27 : 40 , 30 : 46 , 56 : c , 57 : h , 69 : 136 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , { 27 : 40 , 30 : 46 , 56 : c , 57 : h , 69 : 137 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , { 27 : 40 , 30 : 46 , 56 : c , 57 : h , 69 : 138 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , { 27 : 40 , 30 : 46 , 56 : c , 57 : h , 69 : 139 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , { 27 : 40 , 30 : 46 , 56 : c , 57 : h , 69 : 140 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , { 27 : 40 , 30 : 46 , 56 : c , 57 : h , 69 : 96 , 76 : d , 77 : 141 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , { 27 : 40 , 30 : 46 , 56 : c , 57 : h , 69 : 96 , 76 : d , 77 : 142 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , { 27 : 40 , 30 : 46 , 56 : c , 57 : h , 69 : 143 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , { 27 : 40 , 30 : 46 , 56 : c , 57 : h , 69 : 96 , 76 : d , 77 : 28 , 78 : f , 80 : 144 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , { 27 : 40 , 30 : 46 , 56 : c , 57 : h , 69 : 96 , 76 : d , 77 : 28 , 78 : f , 80 : 145 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , { 27 : 40 , 30 : 46 , 56 : c , 57 : h , 69 : 96 , 76 : d , 77 : 28 , 78 : f , 80 : 146 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , t ( V , [ 2 , 84 ] , { 91 : G , 93 : Q } ) , { 76 : U , 78 : F , 96 : K } , t ( V , [ 2 , 85 ] , { 91 : G , 93 : Q } ) , { 27 : 40 , 30 : 46 , 37 : 147 , 56 : c , 57 : h , 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , { 30 : 148 , 57 : h } , t ( Y , [ 2 , 95 ] ) , { 58 : [ 1 , 149 ] } , t ( Y , [ 2 , 105 ] ) , { 92 : [ 1 , 150 ] , 98 : [ 1 , 151 ] } , t ( st , [ 2 , 109 ] ) , t ( Y , [ 2 , 110 ] ) , { 98 : [ 1 , 153 ] , 100 : [ 1 , 152 ] } , t ( nt , [ 2 , 114 ] ) , { 28 : [ 1 , 154 ] } , t ( Z , [ 2 , 11 ] ) , t ( X , [ 2 , 12 ] ) , { 16 : 155 , 27 : 40 , 30 : 46 , 31 : 19 , 32 : 20 , 33 : l , 34 : u , 37 : 23 , 56 : c , 57 : h , 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , t ( rt , i , { 3 : 7 , 6 : 156 , 4 : s , 5 : n } ) , { 3 : 7 , 4 : s , 5 : n , 6 : 120 , 21 : 158 , 39 : 157 , 43 : 62 , 44 : E } , t ( at , [ 2 , 45 ] ) , t ( X , [ 2 , 42 ] , { 45 : 115 , 47 : 160 , 42 : [ 1 , 159 ] , 46 : tt } ) , { 16 : 126 , 21 : 162 , 27 : 40 , 30 : 46 , 31 : 19 , 32 : 20 , 33 : l , 34 : u , 37 : 23 , 40 : 161 , 43 : 62 , 44 : E , 56 : c , 57 : h , 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , t ( X , [ 2 , 47 ] ) , { 49 : [ 1 , 163 ] } , t ( rt , i , { 3 : 7 , 6 : 164 , 4 : s , 5 : n } ) , { 5 : [ 1 , 165 ] } , { 9 : r , 14 : 166 , 51 : et , 56 : a , 57 : o , 59 : 11 , 60 : 12 , 61 : 13 , 62 : 14 } , { 51 : [ 1 , 167 ] } , { 9 : [ 1 , 168 ] } , { 8 : 169 , 9 : T , 57 : A } , t ( at , [ 2 , 37 ] ) , { 41 : [ 1 , 170 ] , 42 : [ 1 , 171 ] } , t ( C , [ 2 , 3 ] ) , t ( I , [ 2 , 61 ] ) , { 8 : 172 , 9 : T , 58 : A } , t ( L , i , { 3 : 7 , 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 77 : 28 , 80 : 29 , 82 : 32 , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 27 : 40 , 30 : 46 , 90 : 47 , 37 : 74 , 6 : 173 , 4 : s , 5 : n , 56 : c , 57 : h , 76 : d , 78 : f , 83 : p , 84 : w , 85 : v , 91 : _ , 94 : y , 95 : m , 99 : b } ) , t ( P , [ 2 , 30 ] ) , { 27 : 40 , 30 : 46 , 35 : 174 , 36 : 78 , 37 : 79 , 38 : S , 56 : c , 57 : h , 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , t ( M , [ 2 , 66 ] , { 67 : N } ) , t ( B , [ 2 , 68 ] ) , t ( $ , [ 2 , 70 ] , { 76 : U , 78 : F , 96 : K } ) , t ( $ , [ 2 , 71 ] , { 76 : U , 78 : F , 96 : K } ) , t ( $ , [ 2 , 72 ] , { 76 : U , 78 : F , 96 : K } ) , t ( $ , [ 2 , 73 ] , { 76 : U , 78 : F , 96 : K } ) , t ( $ , [ 2 , 74 ] , { 76 : U , 78 : F , 96 : K } ) , t ( $ , [ 2 , 75 ] , { 76 : U , 78 : F , 96 : K } ) , t ( j , [ 2 , 77 ] , { 63 : z , 79 : W , 81 : q } ) , t ( j , [ 2 , 78 ] , { 63 : z , 79 : W , 81 : q } ) , t ( [ 1 , 4 , 5 , 7 , 29 , 33 , 34 , 38 , 41 , 42 , 44 , 48 , 49 , 52 , 53 , 56 , 57 , 58 , 63 , 65 , 67 , 70 , 71 , 72 , 73 , 74 , 75 , 79 , 81 , 83 , 84 , 85 , 91 , 92 , 93 , 94 , 95 , 98 , 99 , 100 ] , [ 2 , 104 ] , { 76 : U , 78 : F , 96 : K } ) , t ( Y , [ 2 , 80 ] ) , t ( Y , [ 2 , 81 ] ) , t ( Y , [ 2 , 82 ] ) , { 92 : [ 1 , 175 ] } , t ( H , [ 2 , 100 ] ) , t ( Y , [ 2 , 96 ] ) , t ( Y , [ 2 , 106 ] ) , { 16 : 177 , 27 : 40 , 30 : 46 , 31 : 19 , 32 : 20 , 33 : l , 34 : u , 37 : 23 , 56 : c , 57 : h , 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 92 : [ 1 , 176 ] , 94 : y , 95 : m , 99 : b } , t ( Y , [ 2 , 111 ] ) , { 30 : 108 , 57 : h , 100 : [ 1 , 178 ] , 102 : 179 } , { 16 : 180 , 27 : 40 , 30 : 46 , 31 : 19 , 32 : 20 , 33 : l , 34 : u , 37 : 23 , 56 : c , 57 : h , 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 76 : d , 77 : 28 , 78 : f , 80 : 29 , 82 : 32 , 83 : p , 84 : w , 85 : v , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 90 : 47 , 91 : _ , 94 : y , 95 : m , 99 : b } , t ( rt , i , { 3 : 7 , 6 : 181 , 4 : s , 5 : n } ) , t ( X , [ 2 , 24 ] ) , t ( at , [ 2 , 43 ] ) , t ( at , [ 2 , 44 ] ) , { 3 : 7 , 4 : s , 5 : n , 6 : 120 , 39 : 182 } , t ( at , [ 2 , 41 ] ) , t ( at , [ 2 , 38 ] ) , t ( at , [ 2 , 39 ] ) , { 30 : 183 , 57 : h } , t ( X , [ 2 , 49 ] ) , t ( e , i , { 6 : 6 , 3 : 7 , 12 : 184 , 4 : s , 5 : n } ) , { 3 : 7 , 4 : s , 5 : n , 6 : 120 , 39 : 185 } , t ( X , [ 2 , 51 ] ) , { 9 : r , 14 : 186 , 56 : a , 57 : o , 59 : 11 , 60 : 12 , 61 : 13 , 62 : 14 } , { 57 : [ 1 , 187 ] } , { 3 : 7 , 4 : s , 5 : n , 6 : 120 , 39 : 188 } , { 3 : 7 , 4 : s , 5 : n , 6 : 120 , 39 : 189 } , { 58 : [ 1 , 190 ] } , t ( R , [ 2 , 27 ] ) , t ( it , [ 2 , 29 ] , { 64 : 24 , 66 : 25 , 68 : 26 , 69 : 27 , 77 : 28 , 80 : 29 , 82 : 32 , 86 : 36 , 87 : 37 , 88 : 38 , 89 : 39 , 27 : 40 , 30 : 46 , 90 : 47 , 37 : 79 , 36 : 131 , 38 : S , 56 : c , 57 : h , 76 : d , 78 : f , 83 : p , 84 : w , 85 : v , 91 : _ , 94 : y , 95 : m , 99 : b } ) , t ( H , [ 2 , 99 ] ) , t ( Y , [ 2 , 107 ] ) , t ( st , [ 2 , 108 ] ) , t ( Y , [ 2 , 112 ] ) , t ( nt , [ 2 , 113 ] ) , t ( nt , [ 2 , 115 ] ) , t ( X , [ 2 , 23 ] ) , t ( at , [ 2 , 40 ] ) , { 50 : [ 1 , 191 ] } , { 7 : [ 1 , 192 ] } , t ( X , [ 2 , 50 ] ) , { 3 : 7 , 4 : s , 5 : n , 6 : 193 , 55 : i } , { 8 : 194 , 9 : T , 58 : A } , t ( at , [ 2 , 35 ] ) , t ( at , [ 2 , 36 ] ) , t ( D , [ 2 , 60 ] ) , { 3 : 7 , 4 : s , 5 : n , 6 : 120 , 39 : 195 } , t ( at , [ 2 , 34 ] ) , { 55 : [ 1 , 196 ] } , { 58 : [ 1 , 197 ] } , t ( X , [ 2 , 48 ] ) , t ( rt , i , { 3 : 7 , 6 : 198 , 4 : s , 5 : n } ) , { 9 : [ 2 , 53 ] } , t ( X , [ 2 , 52 ] ) ] , defaultActions : { 5 : [ 2 , 8 ] , 10 : [ 2 , 9 ] , 18 : [ 2 , 10 ] , 197 : [ 2 , 53 ] } , parseError : function ( t , e ) { if ( ! e . recoverable ) { var i = new Error ( t ) ; throw i . hash = e , i ; } this . trace ( t ) ; } , parse : function ( t ) { var e = this , i = [ 0 ] , s = [ null ] , n = [ ] , r = this . table , a = "" , o = 0 , l = 0 , u = 0 , c = 2 , h = 1 , d = n . slice . call ( arguments , 1 ) , f = Object . create ( this . lexer ) , p = { yy : { } } ; for ( var w in this . yy ) Object . prototype . hasOwnProperty . call ( this . yy , w ) && ( p . yy [ w ] = this . yy [ w ] ) ; f . setInput ( t , p . yy ) , p . yy . lexer = f , p . yy . parser = this , void 0 === f . yylloc && ( f . yylloc = { } ) ; var v = f . yylloc ; n . push ( v ) ; var _ = f . options && f . options . ranges ; "function" == typeof p . yy . parseError ? this . parseError = p . yy . parseError : this . parseError = Object . getPrototypeOf ( this ) . parseError ; for ( var y , m , b , g , E , k , x , O , C , D = function ( ) { var t ; return "number" != typeof ( t = f . lex ( ) || h ) && ( t = e . symbols_ [ t ] || t ) , t ; } , T = { } ; ; ) { if ( b = i [ i . length - 1 ] , this . defaultActions [ b ] ? g = this . defaultActions [ b ] : ( null == y && ( y = D ( ) ) , g = r [ b ] && r [ b ] [ y ] ) , void 0 === g || ! g . length || ! g [ 0 ] ) { var A = "" ; for ( k in C = [ ] , r [ b ] ) this . terminals_ [ k ] && k > c && C . push ( "'" + this . terminals_ [ k ] + "'" ) ; A = f . showPosition ? "Parse error on line " + ( o + 1 ) + ":\n" + f . showPosition ( ) + "\nExpecting " + C . join ( ", " ) + ", got '" + ( this . terminals_ [ y ] || y ) + "'" : "Parse error on line " + ( o + 1 ) + ": Unexpected " + ( y == h ? "end of input" : "'" + ( this . terminals_ [ y ] || y ) + "'" ) , this . parseError ( A , { text : f . match , token : this . terminals_ [ y ] || y , line : f . yylineno , loc : v , expected : C } ) ; } if ( g [ 0 ] instanceof Array && g . length > 1 ) throw new Error ( "Parse Error: multiple actions possible at state: " + b + ", token: " + y ) ; switch ( g [ 0 ] ) { case 1 : i . push ( y ) , s . push ( f . yytext ) , n . push ( f . yylloc ) , i . push ( g [ 1 ] ) , y = null , m ? ( y = m , m = null ) : ( l = f . yyleng , a = f . yytext , o = f . yylineno , v = f . yylloc , u > 0 && u -- ) ; break ; case 2 : if ( x = this . productions_ [ g [ 1 ] ] [ 1 ] , T . $ = s [ s . length - x ] , T . _$ = { first_line : n [ n . length - ( x || 1 ) ] . first_line , last_line : n [ n . length - 1 ] . last_line , first_column : n [ n . length - ( x || 1 ) ] . first_column , last_column : n [ n . length - 1 ] . last_column } , _ && ( T . _$ . range = [ n [ n . length - ( x || 1 ) ] . range [ 0 ] , n [ n . length - 1 ] . range [ 1 ] ] ) , void 0 !== ( E = this . performAction . apply ( T , [ a , l , o , p . yy , g [ 1 ] , s , n ] . concat ( d ) ) ) ) return E ; x && ( i = i . slice ( 0 , - 1 * x * 2 ) , s = s . slice ( 0 , - 1 * x ) , n = n . slice ( 0 , - 1 * x ) ) , i . push ( this . productions_ [ g [ 1 ] ] [ 0 ] ) , s . push ( T . $ ) , n . push ( T . _$ ) , O = r [ i [ i . length - 2 ] ] [ i [ i . length - 1 ] ] , i . push ( O ) ; break ; case 3 : return ! 0 ; } } return ! 0 ; } } ; function lt ( ) { this . yy = { } ; } return lt . prototype = ot , ot . Parser = lt , new lt ; } ( ) ; e . parser = n , e . Parser = n . Parser , e . parse = function ( ) { return n . parse . apply ( n , arguments ) ; } , e . main = function ( s ) { s [ 1 ] || ( console . log ( "Usage: " + s [ 0 ] + " FILE" ) , t . exit ( 1 ) ) ; var n = i ( 23 ) . readFileSync ( i ( 6 ) . normalize ( s [ 1 ] ) , "utf8" ) ; return e . parser . parse ( n ) ; } , i . c [ i . s ] === s && e . main ( t . argv . slice ( 1 ) ) ; } ) . call ( this , i ( 12 ) , i ( 22 ) ( t ) ) ; } , function ( t , e , i ) { for ( var s = i ( 24 ) , n = [ ] , r = { } , a = 0 ; a < 256 ; a ++ ) n [ a ] = ( a + 256 ) . toString ( 16 ) . substr ( 1 ) , r [ n [ a ] ] = a ; function o ( t , e ) { var i = e || 0 , s = n ; return s [ t [ i ++ ] ] + s [ t [ i ++ ] ] + s [ t [ i ++ ] ] + s [ t [ i ++ ] ] + "-" + s [ t [ i ++ ] ] + s [ t [ i ++ ] ] + "-" + s [ t [ i ++ ] ] + s [ t [ i ++ ] ] + "-" + s [ t [ i ++ ] ] + s [ t [ i ++ ] ] + "-" + s [ t [ i ++ ] ] + s [ t [ i ++ ] ] + s [ t [ i ++ ] ] + s [ t [ i ++ ] ] + s [ t [ i ++ ] ] + s [ t [ i ++ ] ] ; } var l = s ( ) , u = [ 1 | l [ 0 ] , l [ 1 ] , l [ 2 ] , l [ 3 ] , l [ 4 ] , l [ 5 ] ] , c = 16383 & ( l [ 6 ] << 8 | l [ 7 ] ) , h = 0 , d = 0 ; function f ( t , e , i ) { var n = e && i || 0 ; "string" == typeof t && ( e = "binary" == t ? new Array ( 16 ) : null , t = null ) ; var r = ( t = t || { } ) . random || ( t . rng || s ) ( ) ; if ( r [ 6 ] = 15 & r [ 6 ] | 64 , r [ 8 ] = 63 & r [ 8 ] | 128 , e ) for ( var a = 0 ; a < 16 ; a ++ ) e [ n + a ] = r [ a ] ; return e || o ( r ) ; } var p = f ; p . v1 = function ( t , e , i ) { var s = e && i || 0 , n = e || [ ] , r = void 0 !== ( t = t || { } ) . clockseq ? t . clockseq : c , a = void 0 !== t . msecs ? t . msecs : ( new Date ) . getTime ( ) , l = void 0 !== t . nsecs ? t . nsecs : d + 1 , f = a - h + ( l - d ) / 1e4 ; if ( f < 0 && void 0 === t . clockseq && ( r = r + 1 & 16383 ) , ( f < 0 || a > h ) && void 0 === t . nsecs && ( l = 0 ) , l >= 1e4 ) throw new Error ( "uuid.v1(): Can't create more than 10M uuids/sec" ) ; h = a , d = l , c = r ; var p = ( 1e4 * ( 268435455 & ( a += 122192928e5 ) ) + l ) % 4294967296 ; n [ s ++ ] = p >>> 24 & 255 , n [ s ++ ] = p >>> 16 & 255 , n [ s ++ ] = p >>> 8 & 255 , n [ s ++ ] = 255 & p ; var w = a / 4294967296 * 1e4 & 268435455 ; n [ s ++ ] = w >>> 8 & 255 , n [ s ++ ] = 255 & w , n [ s ++ ] = w >>> 24 & 15 | 16 , n [ s ++ ] = w >>> 16 & 255 , n [ s ++ ] = r >>> 8 | 128 , n [ s ++ ] = 255 & r ; for ( var v = t . node || u , _ = 0 ; _ < 6 ; _ ++ ) n [ s + _ ] = v [ _ ] ; return e || o ( n ) ; } , p . v4 = f , p . parse = function ( t , e , i ) { var s = e && i || 0 , n = 0 ; for ( e = e || [ ] , t . toLowerCase ( ) . replace ( /[0-9a-f]{2}/g , ( function ( t ) { n < 16 && ( e [ s + n ++ ] = r [ t ] ) ; } ) ) ; n < 16 ; ) e [ s + n ++ ] = 0 ; return e ; } , p . unparse = o , t . exports = p ; } , function ( t , e ) { t . exports = function ( t ) { return t . webpackPolyfill || ( t . deprecate = function ( ) { } , t . paths = [ ] , t . children || ( t . children = [ ] ) , Object . defineProperty ( t , "loaded" , { enumerable : ! 0 , get : function ( ) { return t . l ; } } ) , Object . defineProperty ( t , "id" , { enumerable : ! 0 , get : function ( ) { return t . i ; } } ) , t . webpackPolyfill = 1 ) , t ; } ; } , function ( t , e ) { } , function ( t , e , i ) { ( function ( e ) { var i , s = e . crypto || e . msCrypto ; if ( s && s . getRandomValues ) { var n = new Uint8Array ( 16 ) ; i = function ( ) { return s . getRandomValues ( n ) , n ; } ; } if ( ! i ) { var r = new Array ( 16 ) ; i = function ( ) { for ( var t , e = 0 ; e < 16 ; e ++ ) 0 == ( 3 & e ) && ( t = 4294967296 * Math . random ( ) ) , r [ e ] = t >>> ( ( 3 & e ) << 3 ) & 255 ; return r ; } ; } t . exports = i ; } ) . call ( this , i ( 25 ) ) ; } , function ( t , e ) { var i ; i = function ( ) { return this ; } ( ) ; try { i = i || new Function ( "return this" ) ( ) ; } catch ( t ) { "object" == typeof window && ( i = window ) ; } t . exports = i ; } , function ( t , e , i ) { var s = { "./call" : 14 , "./call.js" : 14 , "./list" : 15 , "./list.js" : 15 , "./log" : 16 , "./log.js" : 16 , "./prelude" : 10 , "./prelude.js" : 10 , "./range" : 17 , "./range.js" : 17 } ; function n ( t ) { var e = r ( t ) ; return i ( e ) ; } function r ( t ) { if ( ! i . o ( s , t ) ) { var e = new Error ( "Cannot find module '" + t + "'" ) ; throw e . code = "MODULE_NOT_FOUND" , e ; } return s [ t ] ; } n . keys = function ( ) { return Object . keys ( s ) ; } , n . resolve = r , t . exports = n , n . id = 26 ; } , function ( t , e , i ) { "use strict" ; i . r ( e ) , i . d ( e , "ast" , ( function ( ) { return f ; } ) ) , i . d ( e , "builtin" , ( function ( ) { return s ; } ) ) , i . d ( e , "parser" , ( function ( ) { return y ; } ) ) , i . d ( e , "module" , ( function ( ) { return a ; } ) ) , i . d ( e , "compiler" , ( function ( ) { return l ; } ) ) , i . d ( e , "analyzer" , ( function ( ) { return n ; } ) ) , i . d ( e , "translator" , ( function ( ) { return o ; } ) ) , i . d ( e , "plugin" , ( function ( ) { return u ; } ) ) ; var s = { } ; i . r ( s ) , i . d ( s , "Builtin" , ( function ( ) { return b ; } ) ) , i . d ( s , "Yaksok" , ( function ( ) { return g ; } ) ) , i . d ( s , "yaksok" , ( function ( ) { return E ; } ) ) ; var n = { } ; i . r ( n ) , i . d ( n , "Analyzer" , ( function ( ) { return O ; } ) ) , i . d ( n , "Scope" , ( function ( ) { return C ; } ) ) , i . d ( n , "ModuleScope" , ( function ( ) { return D ; } ) ) ; var r = { } ; i . r ( r ) , i . d ( r , "CommonLoader" , ( function ( ) { return R . a ; } ) ) , i . d ( r , "Loader" , ( function ( ) { return I . a ; } ) ) ; var a = { } ; i . r ( a ) , i . d ( a , "Resolver" , ( function ( ) { return A ; } ) ) , i . d ( a , "context" , ( function ( ) { return T ; } ) ) , i . d ( a , "loader" , ( function ( ) { return r ; } ) ) ; var o = { } ; i . r ( o ) , i . d ( o , "Translator" , ( function ( ) { return P ; } ) ) , i . d ( o , "TextTranslator" , ( function ( ) { return M ; } ) ) , i . d ( o , "JsTranslator" , ( function ( ) { return B ; } ) ) ; var l = { } ; i . r ( l ) , i . d ( l , "BEFORE_RESOLVE" , ( function ( ) { return j ; } ) ) , i . d ( l , "AFTER_RESOLVE" , ( function ( ) { return z ; } ) ) , i . d ( l , "BEFORE_ANALYZE" , ( function ( ) { return W ; } ) ) , i . d ( l , "AFTER_ANALYZE" , ( function ( ) { return q ; } ) ) , i . d ( l , "BEFORE_TRANSLATE" , ( function ( ) { return Y ; } ) ) , i . d ( l , "AFTER_TRANSLATE" , ( function ( ) { return V ; } ) ) , i . d ( l , "Compiler" , ( function ( ) { return L ; } ) ) , i . d ( l , "CompilerConfig" , ( function ( ) { } ) ) , i . d ( l , "JsTargetCompiler" , ( function ( ) { return K ; } ) ) ; var u = { } ; i . r ( u ) , i . d ( u , "Plugin" , ( function ( ) { return G ; } ) ) , i . d ( u , "ConstantFolder" , ( function ( ) { return Q ; } ) ) , i . d ( u , "UnusedDefRemover" , ( function ( ) { return J ; } ) ) ; var c , h , d , f = i ( 0 ) , p = i ( 1 ) , w = i . n ( p ) , v = i ( 2 ) , _ = i . n ( v ) , y = ( i ( 8 ) , i ( 7 ) ) ; const m = new y . Parser ( [ "START_DESCRIPTION" ] ) ; class b extends f . AstNode { } let g = ( c = f . child , h = class extends b { constructor ( t ) { super ( ) , w ( ) ( this , "description" , d , this ) , this . description = m . parse ( t ) ; } match ( t ) { return this . description . match ( t . expressions ) ; } } , d = _ ( ) ( h . prototype , "description" , [ c ] , { configurable : ! 0 , enumerable : ! 0 , writable : ! 0 , initializer : null } ) , h ) ; var E = { "보여주기" : new g ( "(입력) 보여주기" ) , "호출하기" : new g ( "(약속_) 호출하기" ) , "호출하기2" : new g ( "(약속_) 호출하기 (인자목록)" ) } , k = i ( 4 ) , x = i ( 3 ) ; class O extends k . a { constructor ( ... t ) { super ( ... t ) , this . currentScope = void 0 , this . currentAstRoot = void 0 , this . compiler = void 0 ; } async prepare ( t ) { return this . currentScope = new C , this . currentAstRoot = await this . compiler . getAstRoot ( t ) , this . currentAstRoot . statements . scope = this . currentScope , this . currentAstRoot ; } async analyze ( t ) { await this . init ( ) ; for ( let t of this . compiler . moduleOrder || [ ] ) await this . visit ( await this . prepare ( t ) ) ; return await this . visit ( await this . prepare ( ) ) , t ; } async visitName ( t ) { if ( ! t . call ) return super . visitName ( t ) ; let e = new f . Expressions ; e . push ( t . clone ( ) ) ; let i = new f . Call ( e ) ; try { let e = this . currentScope . getCallInfo ( i , this . compiler . builtinDefs ) ; i . callInfo = e , t . replace ( i ) ; } catch ( e ) { return super . visitName ( t ) ; } } async visitCallLike ( t ) { let e = this . currentScope . getCallInfo ( t , this . compiler . builtinDefs ) ; t . callInfo = e ; for ( let t of e . args ) if ( await this . visit ( t ) , t instanceof f . Name ) { let e = t ; e . type = this . currentScope . getVariableType ( e ) ; } } async visitModuleCallLike ( t ) { let e = this . currentAstRoot . modules [ t . target . value ] , i = await this . compiler . getAstRoot ( e ) , { moduleScope : s } = i ; if ( null == s ) throw new Error ( "moduleScope가 아직 resolve되지 않았습니다" ) ; let n = s . getCallInfo ( t ) ; t . callInfo = n ; for ( let t of n . args ) if ( await this . visit ( t ) , t instanceof f . Name ) { let e = t ; e . type = this . currentScope . getVariableType ( e ) ; } } visitCall ( t ) { return this . visitCallLike ( t ) ; } visitModuleCall ( t ) { return this . visitModuleCallLike ( t ) ; } visitCallBind ( t ) { return this . visitCallLike ( t ) ; } visitModuleCallBind ( t ) { return this . visitModuleCallLike ( t ) ; } async visitOutside ( t ) { let e = this . currentScope , { name : i } = t ; if ( ! e . hasVariable ( i , ! 1 ) ) throw new Error ( "해당하는 바깥 변수를 찾지 못했습니다" ) ; e . addVariable ( i ) ; } async visitAssign ( t ) { if ( await this . visit ( t . rvalue ) , t . lvalue instanceof f . Name ) { let e = t . lvalue ; e . type = t . rvalue . type ; let i = this . currentScope ; i . hasVariable ( e ) ? i . updateVariable ( e ) : ( i . addVariable ( e ) , t . isDeclaration = ! 0 ) ; } else await this . visit ( t . lvalue ) ; } async visitYaksok ( t ) { let e = this . currentScope ; e . addDef ( t ) ; let i = e . newChildScope ( ) ; this . currentScope = i , t . block . scope = i , i . addVariable ( new f . Name ( "결과" ) ) , await this . visit ( t . block ) , this . currentScope = e ; } async visitTranslate ( t ) { - 1 !== this . compiler . translateTargets . indexOf ( t . target ) && this . currentScope . addDef ( t ) ; } } class C { constructor ( ) { this . variables = [ ] , this . defs = [ ] , this . parent = null ; } updateVariable ( t ) { let e = this . variables . findIndex ( e => e . value === t . value ) ; if ( - 1 === e ) throw new Error ( "cannot update variable" ) ; this . variables [ e ] = t ; } addVariable ( t ) { this . variables . push ( t ) ; } hasVariable ( t , e = ! 0 ) { let i = this . variables . some ( e => e . value === t . value ) ; return e ? i : ! ! i || ! ! this . parent && this . parent . hasVariable ( t ) ; } getVariableType ( t , e = ! 0 ) { let i = this . variables . find ( e => e . value === t . value ) ; if ( ! i ) return x . a . Any ; let s = i . type ; return e ? s : s || ( this . parent ? this . parent . getVariableType ( t ) : x . a . Any ) ; } addDef ( t ) { this . defs . push ( t ) ; } getCallInfo ( t , e = { } ) { let i = null , s = [ ] ; for ( let e of this . defs ) { let n = e . match ( t ) ; n && ( i = n , s . push ( e ) ) ; } if ( 1 === s . length && null != i ) return i . def instanceof f . Def && ( i . def . used = ! 0 ) , i ; if ( s . length > 1 ) throw new Error ( "같은 스코프 안에서 호출 가능한 정의가 여러개입니다:\n" + s . map ( t => "    " + t . repr ) . join ( "\n" ) ) ; if ( this . parent ) return this . parent . getCallInfo ( t , e ) ; for ( const i of Object . keys ( e ) ) { let s = e [ i ] . match ( t ) ; if ( s ) return s . def instanceof f . Def && ( s . def . used = ! 0 ) , s ; } throw new Error ( "호출 가능한 정의를 찾지 못했습니다: " + t . repr ) ; } newChildScope ( ) { let t = new C ; return t . parent = this , t ; } } class D extends C { } var T = i ( 5 ) ; class A extends k . a { constructor ( ) { super ( ) , this . compiler = null , this . loader = void 0 , this . submoduleNames = [ ] , this . loader = null ; } async init ( ) { await super . init ( ) , this . submoduleNames = [ ] ; } async resolve ( t ) { if ( null == this . compiler ) throw new Error ( "compiler가 초기화되지 않았습니다" ) ; let e = t . hash ( ) ; if ( this . compiler . astMap [ e ] ) return this . compiler . astMap [ e ] ; if ( await this . init ( ) , null == this . loader ) throw new Error ( "Resolver가 올바르게 초기화되지 않았습니다" ) ; let i = await this . loader . get ( t ) ; this . compiler . astMap [ e ] = i , i . hash = e ; { let t = new D ; for ( let e of i . statements ) e instanceof f . Def && t . addDef ( e ) ; i . moduleScope = t ; } await this . visit ( i ) ; for ( let s of this . submoduleNames ) { let n = new A ; n . compiler = this . compiler , n . loader = this . loader ; let r = new T . CommonContext ( s ) ; r . from = t ; let a = r . hash ( ) , o = await n . resolve ( r ) ; this . compiler . astMap [ a ] = o , i . modules [ s ] = a , this . compiler . addModuleDependency ( e , a ) ; } return i ; } async visitCallLike ( t ) { for ( let e of t . expressions ) null != e && await this . visit ( e ) ; } async visitModuleCallLike ( t ) { this . submoduleNames . push ( t . target . value ) ; for ( let e of t . expressions ) null != e && await this . visit ( e ) ; } async visitCall ( t ) { return await this . visitCallLike ( t ) ; } async visitModuleCall ( t ) { return await this . visitModuleCallLike ( t ) ; } async visitCallBind ( t ) { return await this . visitCallLike ( t ) ; } async visitModuleCallBind ( t ) { return await this . visitModuleCallLike ( t ) ; } } var I = i ( 9 ) , R = i ( 13 ) ; class L extends k . a { constructor ( t = { } ) { super ( ) , this . config = t , this . plugins = new S , this . moduleLoader = new I . a , this . moduleResolver = new A , this . analyzer = new O , this . translator = null , this . builtinDefs = { ... E } , this . entryContext = null , this . astMap = { } , this . moduleDependencyMap = { } , this . moduleOrder = null ; } get entryModuleHash ( ) { if ( null == this . entryContext ) throw new Error ( "먼저 Compiler.compile() 메서드를 실행해야 합니다" ) ; return this . entryContext . hash ( ) ; } getAstRoot ( t ) { return null == t ? this . astMap [ this . entryModuleHash ] : this . astMap [ t ] ; } async init ( ) { await super . init ( ) , this . moduleResolver . loader = this . moduleLoader , this . moduleDependencyMap = { } , this . moduleOrder = null , this . astMap = { } , this . moduleLoader . compiler = this . moduleResolver . compiler = this . analyzer . compiler = this , null != this . translator && ( this . translator . compiler = this ) ; } touchDependency ( t ) { const e = this . moduleDependencyMap [ t ] || new Set ; return this . moduleDependencyMap [ t ] = e , e ; } touchDependencies ( ... t ) { return t . map ( t => this . touchDependency ( t ) ) ; } addModuleDependency ( t , e ) { const [ i ] = this . touchDependencies ( t , e ) ; i . add ( e ) ; } async compile ( t ) { let e ; await this . init ( ) , this . entryContext = "string" == typeof t ? new T . RawContext ( t ) : t , await this . pluginPass ( null , j ) , e = await this . resolvePass ( this . entryContext ) , e = await this . pluginPass ( e , z ) ; { const t = this . entryContext . hash ( ) ; this . moduleOrder = Object . keys ( this . moduleDependencyMap ) . filter ( e => e !== t ) . sort ( ( t , e ) => { const { [ t ] : i , [ e ] : s } = this . moduleDependencyMap ; return i . has ( e ) ? 1 : s . has ( t ) ? - 1 : 0 ; } ) ; } e = await this . pluginPass ( e , W ) , e = await this . analyzePass ( e ) , e = await this . pluginPass ( e , q ) ; { let t ; return e = await this . pluginPass ( e , Y ) , t = this . translatePass ( e ) , await this . pluginPass ( e , V ) , t ; } } resolvePass ( t ) { return this . moduleResolver . resolve ( t ) ; } analyzePass ( t ) { return this . analyzer . analyze ( t ) ; } translatePass ( t ) { if ( null == this . translator ) throw new Error ( "translator가 초기화되지 않았습니다" ) ; return this . translator . translate ( t ) ; } async pluginPass ( t , e ) { let i = t ; for ( let t of this . plugins . get ( e ) ) t . compiler = this , i = await t . run ( i , this . config ) || i ; return i ; } } class S { constructor ( ) { this . map = void 0 , this . clear ( ) ; } clear ( ) { this . map = new Map ; } get ( t = q ) { var e , i ; return null !== ( e = null === ( i = this . map . get ( t ) ) || void 0 === i ? void 0 : i . slice ( ) ) && void 0 !== e ? e : [ ] ; } add ( t , e ) { if ( Array . isArray ( t ) ) for ( let i of t ) this . add ( i , e ) ; const i = e || t . phase || q ; this . map . set ( i , this . get ( e ) . concat ( t ) ) ; } } class P extends k . a { constructor ( ... t ) { super ( ... t ) , this . compiler = null ; } async translate ( t ) { return await this . init ( ) , await this . visit ( t ) , "" ; } } class M extends P { constructor ( ... t ) { super ( ... t ) , this . result = [ ] , this . indent = 0 ; } async init ( ) { await super . init ( ) , this . result = [ ] , this . indent = 0 ; } lazyWrite ( t ) { this . result . push ( { toString : t } ) ; } write ( t ) { this . result . push ( t ) ; } writeIndent ( ) { this . result . push ( Array ( this . indent + 1 ) . join ( "    " ) ) ; } async translate ( t ) { return await super . translate ( t ) , this . result . join ( "" ) ; } } var N = i ( 10 ) ; class B extends M { constructor ( ... t ) { super ( ... t ) , this . runtime = { } , this . useModule = ! 1 , this . functionNameIndex = 0 , this . functionNameMap = new Map ; } async init ( ) { await super . init ( ) , this . runtime = { } , this . useModule = ! 1 , this . functionNameIndex = 0 , this . functionNameMap = new Map ; } getFunctionNameFromDef ( t ) { var e , i ; const s = null !== ( e = null === ( i = this . compiler ) || void 0 === i ? void 0 : i . builtinDefs ) && void 0 !== e ? e : { } ; if ( t instanceof b ) switch ( t ) { case s . 보여주기 : return this . runtime . log = ! 0 , "yaksokLog" ; case s . 호출하기 : case s . 호출하기2 : return this . runtime . call = ! 0 , "yaksokCall" ; default : throw new Error ( "unimplemented builtin" ) ; } let n = this . functionNameMap . get ( t ) ; var r ; return null == n && ( n = `ys_${ this . functionNameIndex ++ }_${ r = t . description , r . childNodes . map ( t => t instanceof f . DescriptionName ? function ( t ) { let e = t . names [ 0 ] ; return t . needWhiteSpace ? "_" + e : e ; } ( t ) : t instanceof f . DescriptionParameter ? `_${ t . value }` : void 0 ) . join ( "" ) }` , this . functionNameMap . set ( t , n ) ) , n ; } getFunctionExprFromCall ( t ) { if ( null == t . callInfo ) throw new Error ( "call이 분석 단계를 통과하지 않았습니다" ) ; let e = this . getFunctionNameFromDef ( t . callInfo . def ) ; return t instanceof f . ModuleCall || t instanceof f . ModuleCallBind ? `ys_m_${ t . target . value }.${ e }` : e ; } async prologue ( ) { } async epilogue ( ) { } async translate ( t ) { var e , s ; if ( await this . init ( ) , this . write ( "(function () {\n" ) , this . write ( N . default ) , await this . prologue ( ) , this . lazyWrite ( ( ) => { let t = [ ] ; for ( let e in this . runtime ) if ( this . runtime [ e ] ) { let s = i ( 26 ) ( "./" + e ) . default ; t . push ( s ) ; } return t . join ( "" ) ; } ) , null != ( null === ( e = this . compiler ) || void 0 === e ? void 0 : e . moduleOrder ) && this . compiler . moduleOrder . length > 0 ) { this . useModule = ! 0 , this . writeIndent ( ) , this . write ( "let yaksokModules = {\n" ) , ++ this . indent ; for ( let t of this . compiler . moduleOrder ) this . writeIndent ( ) , this . write ( `${ JSON . stringify ( t ) }: {},\n` ) ; this . writeIndent ( ) , this . write ( `${ JSON . stringify ( t . hash ) }: {} // entry point\n` ) , -- this . indent , this . write ( "};\n" ) ; for ( let t of this . compiler . moduleOrder ) this . write ( "\n" ) , this . writeIndent ( ) , this . write ( `// module: ${ t }\n` ) , await this . visitYaksokRoot ( this . compiler . getAstRoot ( t ) ) ; this . write ( "\n" ) , this . writeIndent ( ) , this . write ( `// entry point: ${ t . hash }\n` ) , await this . visitYaksokRoot ( t ) , this . write ( "\n" ) ; } else await this . visitYaksokRoot ( t ) ; let n = this . compiler instanceof K ? null === ( s = this . compiler ) || void 0 === s ? void 0 : s . exports : null ; if ( n ) for ( let [ t , e ] of Object . entries ( n ) ) this . writeIndent ( ) , this . write ( `export var ${ t } = ` ) , await this . visit ( e ) , this . write ( ";\n" ) ; return await this . epilogue ( ) , this . write ( "})();" ) , this . result . join ( "" ) ; } async visitYaksokRoot ( t ) { if ( this . useModule ) { this . write ( "(function () {\n" ) ; for ( let e in t . modules ) this . writeIndent ( ) , this . write ( `var ys_m_${ e } = ` ) , this . write ( `yaksokModules[${ JSON . stringify ( t . modules [ e ] ) }];\n` ) ; } if ( await super . visitYaksokRoot ( t ) , this . useModule ) { this . writeIndent ( ) , this . write ( "{ // exports\n" ) , ++ this . indent , this . writeIndent ( ) , this . write ( `var ys_m = yaksokModules[${ JSON . stringify ( t . hash ) }];\n` ) ; for ( let s of null !== ( e = null === ( i = t . moduleScope ) || void 0 === i ? void 0 : i . defs ) && void 0 !== e ? e : [ ] ) { var e , i ; let t = this . getFunctionNameFromDef ( s ) ; this . writeIndent ( ) , this . write ( `ys_m.${ t } = ${ t };\n` ) ; } -- this . indent , this . writeIndent ( ) , this . write ( "}\n" ) , this . writeIndent ( ) , this . write ( "})();\n" ) ; } } async visitPlainStatement ( t ) { this . writeIndent ( ) , await this . visit ( t . expression ) , this . write ( ";\n" ) ; } async visitAssign ( t ) { if ( this . writeIndent ( ) , t . lvalue instanceof f . Name ) { let e = t . lvalue ; t . isDeclaration ? this . write ( `var ${ e . value } = ` ) : this . write ( `${ e . value } = ` ) , await this . visit ( t . rvalue ) ; } else await this . visit ( t . lvalue ) , this . write ( " = " ) , await this . visit ( t . rvalue ) ; this . write ( ";\n" ) ; } async visitOutside ( t ) { this . writeIndent ( ) , this . write ( "// nonlocal " ) , await this . visit ( t . name ) , this . write ( "\n" ) ; } async visitCall ( t ) { if ( null == t . callInfo ) throw new Error ( "call이 분석 단계를 통과하지 않았습니다" ) ; let { def : e , args : i } = t . callInfo , s = ( t . expressions . childNodes , this . getFunctionExprFromCall ( t ) ) ; this . write ( s ) , this . write ( "(" ) ; let n = ! 0 ; for ( let t of i ) n ? n = ! 1 : this . write ( ", " ) , await this . visit ( t ) ; this . write ( ")" ) ; } async visitModuleCall ( t ) { return await this . visitCall ( t ) ; } async visitCallBind ( t ) { if ( null == t . callInfo ) throw new Error ( "call이 분석 단계를 통과하지 않았습니다" ) ; let { def : e , args : i } = t . callInfo , s = ( t . expressions . childNodes , this . getFunctionExprFromCall ( t ) ) ; if ( i . find ( t => t instanceof f . Question ) ) { let t = i . reduce ( ( t , e ) => e instanceof f . Question ? t + 1 : t , 0 ) ; this . write ( "((" ) ; for ( let e = 0 ; e < t ; ++ e ) e > 0 && this . write ( "," ) , this . write ( "_" + e ) ; this . write ( ")=>" ) ; } else this . write ( "(_=>" ) ; this . write ( s ) ; { let t = 0 , e = ! 0 ; this . write ( "(" ) ; for ( let s of i ) e ? e = ! 1 : this . write ( "," ) , s instanceof f . Question ? this . write ( "_" + t ++ ) : await this . visit ( s ) ; this . write ( ")" ) ; } this . write ( ")" ) ; } async visitModuleCallBind ( t ) { return await this . visitCallBind ( t ) ; } async visitIf ( t ) { this . writeIndent ( ) , this . write ( "if " ) , this . write ( "(" ) , await this . visit ( t . condition ) , this . write ( ") " ) , this . write ( "{\n" ) , ++ this . indent , await this . visit ( t . ifBlock ) , -- this . indent , this . writeIndent ( ) , this . write ( "}" ) , t . elseBlock ? ( this . write ( " else {\n" ) , ++ this . indent , await this . visit ( t . elseBlock ) , -- this . indent , this . writeIndent ( ) , this . write ( "}\n" ) ) : this . write ( "\n" ) ; } async visitIfNot ( t ) { this . writeIndent ( ) , this . write ( "if " ) , this . write ( "(!(" ) , await this . visit ( t . condition ) , this . write ( ")) " ) , this . write ( "{\n" ) , ++ this . indent , await this . visit ( t . ifBlock ) , -- this . indent , this . writeIndent ( ) , this . write ( "}" ) , t . elseBlock ? ( this . write ( " else {\n" ) , ++ this . indent , await this . visit ( t . elseBlock ) , -- this . indent , this . writeIndent ( ) , this . write ( "}\n" ) ) : this . write ( "\n" ) ; } async visitLoop ( t ) { this . writeIndent ( ) , this . write ( "while (true) {\n" ) , ++ this . indent , await this . visit ( t . block ) , -- this . indent , this . writeIndent ( ) , this . write ( "}\n" ) ; } async visitIterate ( t ) { this . writeIndent ( ) , this . write ( "for (let " ) , await this . visit ( t . iteratee ) , this . write ( " of " ) , await this . visit ( t . iterator ) , this . write ( ") {\n" ) , ++ this . indent , await this . visit ( t . block ) , -- this . indent , this . writeIndent ( ) , this . write ( "}\n" ) ; } async visitLoopEnd ( t ) { this . writeIndent ( ) , this . write ( "break;\n" ) ; } async visitName ( t ) { this . write ( t . value ) ; } async visitString ( t ) { this . write ( JSON . stringify ( t . value ) ) ; } async visitInteger ( t ) { this . write ( t . value ) ; } async visitFloat ( t ) { this . write ( t . value ) ; } async visitBoolean ( t ) { this . write ( t . value ) ; } async visitVoid ( t ) { this . write ( "void 0" ) ; } async visitRange ( t ) { this . runtime . range = ! 0 , this . write ( "yaksokRange(" ) , await this . visit ( t . start ) , this . write ( ", " ) , await this . visit ( t . stop ) , this . write ( ")" ) ; } async visitList ( t ) { this . runtime . list = ! 0 , this . write ( "yaksokList([void 0" ) ; for ( let e of t ) null != e && ( this . write ( ", " ) , await this . visit ( e ) ) ; this . write ( "])" ) ; } async visitDict ( t ) { this . write ( "{" ) ; let e = ! 0 ; for ( let i of t ) null != i && ( e || this . write ( ", " ) , e = ! 1 , await this . visitDictKeyValue ( i ) ) ; this . write ( "}" ) ; } async visitDictKeyValue ( t ) { await this . visitName ( t . key ) , this . write ( ": " ) , await this . visitExpression ( t . value ) ; } async visitUnaryPlus ( t ) { await $ . call ( this , t , "+" ) ; } async visitUnaryMinus ( t ) { await $ . call ( this , t , "-" ) ; } async visitBinaryOperator ( t ) { switch ( t . kind ) { case f . OperatorKind . Access : await this . visit ( t . lhs ) , this . write ( "[" ) , await this . visit ( t . rhs ) , this . write ( "]" ) ; break ; case f . OperatorKind . DotAccess : await this . visit ( t . lhs ) , this . write ( "." ) , await this . visit ( t . rhs ) ; break ; default : if ( ! ( t . kind in U ) ) throw new Error ( "invalid operator: " + f . OperatorKind [ t . kind ] ) ; this . write ( "(" ) , await this . visit ( t . lhs ) , this . write ( ` ${ U [ t . kind ] } ` ) , await this . visit ( t . rhs ) , this . write ( ")" ) ; } } async visitYaksok ( t ) { let e = this . getFunctionNameFromDef ( t ) , i = t . description . parameters . map ( t => t . value ) ; this . writeIndent ( ) , this . write ( `function ${ e }(${ i . join ( ", " ) }) ` ) , this . write ( "{\n" ) , ++ this . indent , this . writeIndent ( ) , this . write ( "var 결과;\n" ) , await this . visit ( t . block ) , this . writeIndent ( ) , this . write ( "return 결과;\n" ) , -- this . indent , this . writeIndent ( ) , this . write ( "}\n" ) ; } async visitYaksokEnd ( t ) { this . writeIndent ( ) , this . write ( "return 결과;\n" ) ; } async visitTranslate ( t ) { var e ; if ( - 1 === ( null === ( e = this . compiler ) || void 0 === e ? void 0 : e . translateTargets . indexOf ( t . target ) ) ) return ; let i = this . getFunctionNameFromDef ( t ) , s = t . description . parameters . map ( t => t . value ) ; this . writeIndent ( ) , this . write ( `function ${ i }(${ s . join ( ", " ) }) ` ) , this . write ( "{" ) , this . write ( t . code ) , this . write ( "}\n" ) ; } } async function $ ( t , e ) { this . write ( "(" ) , this . write ( `${ e } ` ) , await this . visit ( t . rhs ) , this . write ( ")" ) ; } const U = { [ f . OperatorKind . Or ] : "||" , [ f . OperatorKind . And ] : "&&" , [ f . OperatorKind . Equal ] : "===" , [ f . OperatorKind . NotEqual ] : "!==" , [ f . OperatorKind . GreaterThan ] : ">" , [ f . OperatorKind . LessThan ] : "<" , [ f . OperatorKind . GreaterThanEqual ] : ">=" , [ f . OperatorKind . LessThanEqual ] : "<=" , [ f . OperatorKind . Plus ] : "+" , [ f . OperatorKind . Minus ] : "-" , [ f . OperatorKind . Multiply ] : "*" , [ f . OperatorKind . Divide ] : "/" , [ f . OperatorKind . Modular ] : "%" } ; const F = new y . Parser ( [ "START_CALL" ] ) ; class K extends L { constructor ( ... t ) { super ( ... t ) , this . exports = void 0 , this . translator = new B , this . translateTargets = [ "js" , "javascript" , "자바스크립트" ] , this . exports = null ; } async analyzePass ( t ) { let e = super . analyzePass ( t ) , { exports : i } = this . config ; if ( i ) { this . exports = { } ; for ( let [ t , e ] of Object . entries ( i ) ) { let i = F . parse ( e ) ; await this . analyzer . visit ( i ) , this . exports [ t ] = i ; } } return e ; } } const j = { phase : "BEFORE_RESOLVE" } , z = { phase : "AFTER_RESOLVE" } , W = { phase : "BEFORE_ANALYZE" } , q = { phase : "AFTER_ANALYZE" } , Y = { phase : "BEFORE_TRANSLATE" } , V = { phase : "AFTER_TRANSLATE" } ; class G extends k . a { constructor ( ... t ) { super ( ... t ) , this . compiler = null , this . phase = void 0 ; } async run ( t , e ) { return await this . init ( ) , null != t && await this . visit ( t ) , null ; } } class Q extends G { constructor ( t = { } ) { super ( ) , this . config = t , this . phase = q ; } async visitExpression ( t ) { t . fold ( ) ; } async visitStatements ( t ) { for ( let e of Array . from ( t ) ) { if ( null == e ) continue ; if ( ! this . config . dce ) { await this . visitStatement ( e ) ; continue ; } let i = e . eliminateDeadCode ( ) ; if ( i ) { if ( i instanceof f . Statements ) { t . replaceChild ( e , i ) ; for ( let t of i ) null != t && await this . visitStatement ( t ) ; continue ; } if ( i instanceof f . Statement ) { t . replaceChild ( e , i ) , await this . visitStatement ( i ) ; continue ; } if ( ! 0 === i ) { t . removeChild ( e ) ; continue ; } throw new Error ( "dce must return boolean or ast.Statements or ast.Statement" ) ; } await this . visitStatement ( e ) ; } } } class J extends G { get phase ( ) { return q ; } async visitDef ( t ) { var e ; ! t . used && t . parent instanceof f . AstNodeList && ( null === ( e = t . parent ) || void 0 === e || e . removeChild ( t ) ) ; } } } ] ) ; } ) ) ;