2013-06-26 22:42:24 -04:00
/ * !
2014-08-25 08:48:05 -04:00
* Paper . js v0 . 9.20 - The Swiss Army Knife of Vector Graphics Scripting .
2013-06-26 22:42:24 -04:00
* http : //paperjs.org/
*
2014-03-13 12:49:37 -04:00
* Copyright ( c ) 2011 - 2014 , Juerg Lehni & Jonathan Puckey
* http : //scratchdisk.com/ & http://jonathanpuckey.com/
2013-06-26 22:42:24 -04:00
*
* Distributed under the MIT license . See LICENSE file for details .
*
* All rights reserved .
*
2014-08-25 08:48:05 -04:00
* Date : Mon Aug 25 14 : 21 : 13 2014 + 0200
2013-06-26 22:42:24 -04:00
*
* * *
*
2014-03-13 12:49:37 -04:00
* Straps . js - Class inheritance library with support for bean - style accessors
2013-06-26 22:42:24 -04:00
*
* Copyright ( c ) 2006 - 2013 Juerg Lehni
2014-03-13 12:49:37 -04:00
* http : //scratchdisk.com/
2013-06-26 22:42:24 -04:00
*
* Distributed under the MIT license .
*
* * *
*
2014-03-13 12:49:37 -04:00
* Acorn . js
2013-06-26 22:42:24 -04:00
* http : //marijnhaverbeke.nl/acorn/
*
* Acorn is a tiny , fast JavaScript parser written in JavaScript ,
* created by Marijn Haverbeke and released under an MIT license .
*
* /
2014-08-25 08:48:05 -04:00
var paper = new function ( t ) { var e = new function ( ) { function n ( t , n , i , r , a ) { function o ( s , o ) { o = o || ( o = u ( n , s ) ) && ( o . get ? o : o . value ) , "string" == typeof o && "#" === o [ 0 ] && ( o = t [ o . substring ( 1 ) ] || o ) ; var l , d = "function" == typeof o , f = o , _ = a || d ? o && o . get ? s in t : t [ s ] : null ; a && _ || ( d && _ && ( o . base = _ ) , d && r !== ! 1 && ( l = s . match ( /^([gs]et|is)(([A-Z])(.*))$/ ) ) && ( h [ l [ 3 ] . toLowerCase ( ) + l [ 4 ] ] = l [ 2 ] ) , f && ! d && f . get && "function" == typeof f . get && e . isPlainObject ( f ) || ( f = { value : f , writable : ! 0 } ) , ( u ( t , s ) || { configurable : ! 0 } ) . configurable && ( f . configurable = ! 0 , f . enumerable = i ) , c ( t , s , f ) ) } var h = { } ; if ( n ) { for ( var l in n ) n . hasOwnProperty ( l ) && ! s . test ( l ) && o ( l ) ; for ( var l in h ) { var d = h [ l ] , f = t [ "set" + d ] , _ = t [ "get" + d ] || f && t [ "is" + d ] ; ! _ || r !== ! 0 && 0 !== _ . length || o ( l , { get : _ , set : f } ) } } return t } function i ( t , e , n ) { return t && ( "length" in t && ! t . getLength && "number" == typeof t . length ? a : o ) . call ( t , e , n = n || t ) , n } function r ( t , e ) { for ( var n in e ) e . hasOwnProperty ( n ) && ( t [ n ] = e [ n ] ) ; return t } var s = /^(statics|enumerable|beans|preserve)$/ , a = [ ] . forEach || function ( t , e ) { for ( var n = 0 , i = this . length ; i > n ; n ++ ) t . call ( e , this [ n ] , n , this ) } , o = function ( t , e ) { for ( var n in this ) this . hasOwnProperty ( n ) && t . call ( e , this [ n ] , n , this ) } , h = Object . create || function ( t ) { return { _ _proto _ _ : t } } , u = Object . getOwnPropertyDescriptor || function ( t , e ) { var n = t . _ _lookupGetter _ _ && t . _ _lookupGetter _ _ ( e ) ; return n ? { get : n , set : t . _ _lookupSetter _ _ ( e ) , enumerable : ! 0 , configurable : ! 0 } : t . hasOwnProperty ( e ) ? { value : t [ e ] , enumerable : ! 0 , configurable : ! 0 , writable : ! 0 } : null } , l = Object . defineProperty || function ( t , e , n ) { return ( n . get || n . set ) && t . _ _defineGetter _ _ ? ( n . get && t . _ _defineGetter _ _ ( e , n . get ) , n . set && t . _ _defineSetter _ _ ( e , n . set ) ) : t [ e ] = n . value , t } , c = function ( t , e , n ) { return delete t [ e ] , l ( t , e , n ) } ; return n ( function ( ) { for ( var t = 0 , e = arguments . length ; e > t ; t ++ ) r ( this , arguments [ t ] ) } , { inject : function ( t ) { if ( t ) { var e = t . statics === ! 0 ? t : t . statics , i = t . beans , r = t . preserve ; e !== t && n ( this . prototype , t , t . enumerable , i , r ) , n ( this , e , ! 0 , i , r ) } for ( var s = 1 , a = arguments . length ; a > s ; s ++ ) this . inject ( arguments [ s ] ) ; return this } , extend : function ( ) { for ( var t , e = this , i = 0 , r = arguments . length ; r > i && ! ( t = arguments [ i ] . initialize ) ; i ++ ) ; return t = t || function ( ) { e . apply ( this , arguments ) } , t . prototype = h ( this . prototype ) , t . base = e , c ( t . prototype , "constructor" , { value : t , writable : ! 0 , configurable : ! 0 } ) , n ( t , this , ! 0 ) , arguments . length ? this . inject . apply ( t , arguments ) : t } } , ! 0 ) . inject ( { inject : function ( ) { for ( var t = 0 , e = arguments . length ; e > t ; t ++ ) { var i = arguments [ t ] ; i && n ( this , i , i . enumerable , i . beans , i . preserve ) } return this } , extend : function ( ) { var t = h ( this ) ; return t . inject . apply ( t , arguments ) } , each : function ( t , e ) { return i ( this , t , e ) } , set : function ( t ) { return r ( this , t ) } , clone : function ( ) { return new this . constructor ( this ) } , statics : { each : i , create : h , define : c , describe : u , set : r , clone : function ( t ) { return r ( new t . constructor , t ) } , isPlainObject : function ( t ) { var n = null != t && t . constructor ; return n && ( n === Object || n === e || "Object" === n . name ) } , pick : function ( ) { for ( var e = 0 , n = arguments . length ; n > e ; e ++ ) if ( arguments [ e ] !== t ) return arguments [ e ] } } } ) } ; "undefined" != typeof module && ( module . exports = e ) , Array . isArray || ( Array . isArray = function ( t ) { return "[object Array]" === Object . prototype . toString . call ( t ) } ) , document . head || ( document . head = document . getElementsByTagName ( "head" ) [ 0 ] ) , e . inject ( { toString : function ( ) { return null != this . _id ? ( this . _class || "Object" ) + ( this . _name ? " '" + this . _name + "'" : " @" + this . _id ) : "{ " + e . each ( this , function ( t , e ) { if ( ! /^_/ . test ( e ) ) { var n = typeof t ; this . push ( e + ": " + ( "number" === n ? a . instance . number ( t ) : "string" === n ? "'" + t + "'" : t ) ) } } , [ ] ) . join ( ", " ) + " }" } , exportJSON : function ( t ) { return e . exportJSON ( this , t ) } , toJSON : function ( ) { return e . serialize ( this ) } , _set : function ( n , i , r ) { if ( n && ( r || e . isPlainObject ( n ) ) ) { var s = n . _filtering || n ; for ( var a in s ) if ( a in this && s . hasOwnProperty ( a ) && ( ! i || ! i [ a ] ) ) { var o = n [ a ] ; o !== t && ( this [ a ] = o ) } return ! 0 } } , statics : { exports : { enumerable : ! 0 } , extend : function ie ( ) { var t = ie . base . apply ( this , arguments ) , n = t . prototype . _class ; return n && ! e . exports [ n ] && ( e . exports [ n ] = t ) , t } , equals : function ( t , n ) { function i ( t , e ) { for ( var n in t ) if ( t . hasOwnProperty ( n ) && ! e . hasOwnProperty ( n ) ) return ! 1 ; return ! 0 } if ( t === n ) return ! 0 ; if ( t && t . equals ) return t . equals ( n ) ; if ( n && n . equals ) return n . equals ( t ) ; if ( Array . isArray ( t ) && Array . isArray ( n ) ) { if ( t . length !== n . l
2014-08-16 12:31:53 -04:00
} return e } , _transformCorners : function ( t ) { var e = t . x , n = t . y , i = e + t . width , r = n + t . height , s = [ e , n , i , n , i , r , e , r ] ; return this . _transformCoordinates ( s , s , 4 ) } , _transformBounds : function ( t , e , n ) { for ( var i = this . _transformCorners ( t ) , r = i . slice ( 0 , 2 ) , s = i . slice ( ) , a = 2 ; 8 > a ; a ++ ) { var o = i [ a ] , h = 1 & a ; o < r [ h ] ? r [ h ] = o : o > s [ h ] && ( s [ h ] = o ) } return e || ( e = new f ) , e . set ( r [ 0 ] , r [ 1 ] , s [ 0 ] - r [ 0 ] , s [ 1 ] - r [ 1 ] , n ) } , inverseTransform : function ( ) { return this . _inverseTransform ( h . read ( arguments ) ) } , _getDeterminant : function ( ) { var t = this . _a * this . _d - this . _b * this . _c ; return isFinite ( t ) && ! o . isZero ( t ) && isFinite ( this . _tx ) && isFinite ( this . _ty ) ? t : null } , _inverseTransform : function ( t , e , n ) { var i = this . _getDeterminant ( ) ; if ( ! i ) return null ; var r = t . x - this . _tx , s = t . y - this . _ty ; return e || ( e = new h ) , e . set ( ( r * this . _d - s * this . _b ) / i , ( s * this . _a - r * this . _c ) / i , n ) } , decompose : function ( ) { var t = this . _a , e = this . _b , n = this . _c , i = this . _d ; if ( o . isZero ( t * i - e * n ) ) return null ; var r = Math . sqrt ( t * t + e * e ) ; t /= r , e /= r ; var s = t * n + e * i ; n -= t * s , i -= e * s ; var a = Math . sqrt ( n * n + i * i ) ; return n /= a , i /= a , s /= a , e * n > t * i && ( t = - t , e = - e , s = - s , r = - r ) , { scaling : new h ( r , a ) , rotation : 180 * - Math . atan2 ( e , t ) / Math . PI , shearing : s } } , getValues : function ( ) { return [ this . _a , this . _c , this . _b , this . _d , this . _tx , this . _ty ] } , getTranslation : function ( ) { return new h ( this . _tx , this . _ty ) } , getScaling : function ( ) { return ( this . decompose ( ) || { } ) . scaling } , getRotation : function ( ) { return ( this . decompose ( ) || { } ) . rotation } , inverted : function ( ) { var t = this . _getDeterminant ( ) ; return t && new g ( this . _d / t , - this . _c / t , - this . _b / t , this . _a / t , ( this . _b * this . _ty - this . _d * this . _tx ) / t , ( this . _c * this . _tx - this . _a * this . _ty ) / t ) } , shiftless : function ( ) { return new g ( this . _a , this . _c , this . _b , this . _d , 0 , 0 ) } , applyToContext : function ( t ) { t . transform ( this . _a , this . _c , this . _b , this . _d , this . _tx , this . _ty ) } } , e . each ( [ "a" , "c" , "b" , "d" , "tx" , "ty" ] , function ( t ) { var n = e . capitalize ( t ) , i = "_" + t ; this [ "get" + n ] = function ( ) { return this [ i ] } , this [ "set" + n ] = function ( t ) { this [ i ] = t , this . _changed ( ) } } , { } ) ) , p = e . extend ( { _class : "Line" , initialize : function ( t , e , n , i , r ) { var s = ! 1 ; arguments . length >= 4 ? ( this . _px = t , this . _py = e , this . _vx = n , this . _vy = i , s = r ) : ( this . _px = t . x , this . _py = t . y , this . _vx = e . x , this . _vy = e . y , s = n ) , s || ( this . _vx -= this . _px , this . _vy -= this . _py ) } , getPoint : function ( ) { return new h ( this . _px , this . _py ) } , getVector : function ( ) { return new h ( this . _vx , this . _vy ) } , getLength : function ( ) { return this . getVector ( ) . getLength ( ) } , intersect : function ( t , e ) { return p . intersect ( this . _px , this . _py , this . _vx , this . _vy , t . _px , t . _py , t . _vx , t . _vy , ! 0 , e ) } , getSide : function ( t ) { return p . getSide ( this . _px , this . _py , this . _vx , this . _vy , t . x , t . y , ! 0 ) } , getDistance : function ( t ) { return Math . abs ( p . getSignedDistance ( this . _px , this . _py , this . _vx , this . _vy , t . x , t . y , ! 0 ) ) } , statics : { intersect : function ( t , e , n , i , r , s , a , u , l , c ) { l || ( n -= t , i -= e , a -= r , u -= s ) ; var d = u * n - a * i ; if ( ! o . isZero ( d ) ) { var f = t - r , _ = e - s , g = ( a * _ - u * f ) / d , p = ( n * _ - i * f ) / d ; if ( ( c || g >= 0 && 1 >= g ) && ( c || p >= 0 && 1 >= p ) ) return new h ( t + g * n , e + g * i ) } } , getSide : function ( t , e , n , i , r , s , a ) { a || ( n -= t , i -= e ) ; var o = r - t , h = s - e , u = o * i - h * n ; return 0 === u && ( u = o * n + h * i , u > 0 && ( o -= n , h -= i , u = o * n + h * i , 0 > u && ( u = 0 ) ) ) , 0 > u ? - 1 : u > 0 ? 1 : 0 } , getSignedDistance : function ( t , e , n , i , r , s , a ) { a || ( n -= t , i -= e ) ; var o = i / n , h = e - o * t ; return ( s - o * r - h ) / Math . sqrt ( o * o + 1 ) } } } ) , v = s . extend ( { _class : "Project" , _list : "projects" , _reference : "project" , initialize : function ( t ) { s . call ( this , ! 0 ) , this . layers = [ ] , this . symbols = [ ] , this . _currentStyle = new F ( null , null , this ) , this . activeLayer = new x , this . _view = Z . create ( this , t || Q . getCanvas ( 1 , 1 ) ) , this . _selectedItems = { } , this . _selectedItemCount = 0 , this . _updateVersion = 0 } , _serialize : function ( t , n ) { return e . serialize ( this . layers , t , ! 0 , n ) } , clear : function ( ) { for ( var t = this . layers . length - 1 ; t >= 0 ; t -- ) this . layers [ t ] . remove ( ) ; this . symbols = [ ] } , isEmpty : function ( ) { return this . layers . length <= 1 && ( ! this . activeLayer || this . activeLayer . isEmpty ( ) ) } , remove : function oe ( ) { return oe . base . call ( this ) ? ( this . _view && this . _view . remove ( ) , ! 0 ) : ! 1 } , getView : function ( ) { return this . _view } , getCurrentStyle : function ( ) { return this . _currentStyle } , setCurrentStyle : function ( t ) { this . _currentStyle . initialize ( t ) } , getIndex : function ( ) { return this . _index } , addChild : function ( t ) { return t instanceof x ? ( e . splice ( this . layers , [ t ] ) , this . activeLayer || ( this . activeLayer = t ) ) : t instanceof y ? ( this . activeLayer || this . addChild ( new x ( y . NO _IN
2014-08-25 08:48:05 -04:00
} } t . closePath ( ) } a || ! r && ! s || ( this . _setStyles ( t ) , r && ( t . fill ( i . getWindingRule ( ) ) , t . shadowColor = "rgba(0,0,0,0)" ) , s && t . stroke ( ) ) } , _canComposite : function ( ) { return ! ( this . hasFill ( ) && this . hasStroke ( ) ) } , _getBounds : function ( t , e ) { var n = new f ( this . _size ) . setCenter ( 0 , 0 ) ; return "getBounds" !== t && this . hasStroke ( ) && ( n = n . expand ( this . getStrokeWidth ( ) ) ) , e ? e . _transformBounds ( n ) : n } } , new function ( ) { function t ( t , e , n ) { var i = t . _radius ; if ( ! i . isZero ( ) ) for ( var r = t . _size . divide ( 2 ) , s = 0 ; 4 > s ; s ++ ) { var a = new h ( 1 & s ? 1 : - 1 , s > 1 ? 1 : - 1 ) , o = a . multiply ( r ) , u = o . subtract ( a . multiply ( i ) ) , l = new f ( o , u ) ; if ( ( n ? l . expand ( n ) : l ) . contains ( e ) ) return u } } function e ( t , e ) { var n = t . getAngleInRadians ( ) , i = 2 * e . width , r = 2 * e . height , s = i * Math . sin ( n ) , a = r * Math . cos ( n ) ; return i * r / ( 2 * Math . sqrt ( s * s + a * a ) ) } return { _contains : function n ( e ) { if ( "rectangle" === this . _type ) { var i = t ( this , e ) ; return i ? e . subtract ( i ) . divide ( this . _radius ) . getLength ( ) <= 1 : n . base . call ( this , e ) } return e . divide ( this . size ) . getLength ( ) <= . 5 } , _hitTestSelf : function i ( n , r ) { var s = ! 1 ; if ( this . hasStroke ( ) ) { var a = this . _type , o = this . _radius , h = this . getStrokeWidth ( ) + 2 * r . tolerance ; if ( "rectangle" === a ) { var u = t ( this , n , h ) ; if ( u ) { var l = n . subtract ( u ) ; s = 2 * Math . abs ( l . getLength ( ) - e ( l , o ) ) <= h } else { var c = new f ( this . _size ) . setCenter ( 0 , 0 ) , d = c . expand ( h ) , _ = c . expand ( - h ) ; s = d . _containsPoint ( n ) && ! _ . _containsPoint ( n ) } } else "ellipse" === a && ( o = e ( n , o ) ) , s = 2 * Math . abs ( n . getLength ( ) - o ) <= h } return s ? new P ( "stroke" , this ) : i . base . apply ( this , arguments ) } } } , { statics : new function ( ) { function t ( t , n , i , r , s ) { var a = new b ( e . getNamed ( s ) ) ; return a . _type = t , a . _size = i , a . _radius = r , a . translate ( n ) } return { Circle : function ( ) { var n = h . readNamed ( arguments , "center" ) , i = e . readNamed ( arguments , "radius" ) ; return t ( "circle" , n , new c ( 2 * i ) , i , arguments ) } , Rectangle : function ( ) { var e = f . readNamed ( arguments , "rectangle" ) , n = c . min ( c . readNamed ( arguments , "radius" ) , e . getSize ( ! 0 ) . divide ( 2 ) ) ; return t ( "rectangle" , e . getCenter ( ! 0 ) , e . getSize ( ! 0 ) , n , arguments ) } , Ellipse : function ( ) { var e = b . _readEllipse ( arguments ) , n = e . radius ; return t ( "ellipse" , e . center , n . multiply ( 2 ) , n , arguments ) } , _readEllipse : function ( t ) { var n , i ; if ( e . hasNamed ( t , "radius" ) ) n = h . readNamed ( t , "center" ) , i = c . readNamed ( t , "radius" ) ; else { var r = f . readNamed ( t , "rectangle" ) ; n = r . getCenter ( ! 0 ) , i = r . getSize ( ! 0 ) . divide ( 2 ) } return { center : n , radius : i } } } } } ) , C = y . extend ( { _class : "Raster" , _applyMatrix : ! 1 , _canApplyMatrix : ! 1 , _boundsGetter : "getBounds" , _boundsSelected : ! 0 , _serializeFields : { source : null } , initialize : function ( e , n ) { this . _initialize ( e , n !== t && h . read ( arguments , 1 ) ) || ( "string" == typeof e ? this . setSource ( e ) : this . setImage ( e ) ) , this . _size || ( this . _size = new c ) } , _equals : function ( t ) { return this . getSource ( ) === t . getSource ( ) } , clone : function ( t ) { var e = new C ( y . NO _INSERT ) , n = this . _image , i = this . _canvas ; if ( n ) e . setImage ( n ) ; else if ( i ) { var r = Q . getCanvas ( this . _size ) ; r . getContext ( "2d" ) . drawImage ( i , 0 , 0 ) , e . setCanvas ( r ) } return this . _clone ( e , t ) } , getSize : function ( ) { var t = this . _size ; return new d ( t . width , t . height , this , "setSize" ) } , setSize : function ( ) { var t = c . read ( arguments ) ; if ( ! this . _size . equals ( t ) ) { var e = this . getElement ( ) ; this . setCanvas ( Q . getCanvas ( t ) ) , e && this . getContext ( ! 0 ) . drawImage ( e , 0 , 0 , t . width , t . height ) } } , getWidth : function ( ) { return this . _size . width } , getHeight : function ( ) { return this . _size . height } , isEmpty : function ( ) { return 0 === this . _size . width && 0 === this . _size . height } , getResolution : function ( ) { var t = this . _matrix , e = new h ( 0 , 0 ) . transform ( t ) , n = new h ( 1 , 0 ) . transform ( t ) . subtract ( e ) , i = new h ( 0 , 1 ) . transform ( t ) . subtract ( e ) ; return new c ( 72 / n . getLength ( ) , 72 / i . getLength ( ) ) } , getPpi : "#getResolution" , getImage : function ( ) { return this . _image } , setImage : function ( t ) { this . _canvas && Q . release ( this . _canvas ) , t && t . getContext ? ( this . _image = null , this . _canvas = t ) : ( this . _image = t , this . _canvas = null ) , this . _size = new c ( t ? t . naturalWidth || t . width : 0 , t ? t . naturalHeight || t . height : 0 ) , this . _context = null , this . _changed ( 521 ) } , getCanvas : function ( ) { if ( ! this . _canvas ) { var t = Q . getContext ( this . _size ) ; try { this . _image && t . drawImage ( this . _image , 0 , 0 ) , this . _canvas = t . canvas } catch ( e ) { Q . release ( t ) } } return this . _canvas } , setCanvas : "#setImage" , getContext : function ( t ) { return this . _context || ( this . _context = this . getCanvas ( ) . getContext ( "2d" ) ) , t && ( this . _image = null , this . _changed ( 513 ) ) , this . _context } , setContext : funct
} var i , r , s , o , h , u , l , c , d = this . _segments , f = d . length , _ = new a ( e ) , g = Array ( 6 ) , p = ! 0 , v = [ ] ; if ( 0 === f ) return "" ; for ( var m = 0 ; f > m ; m ++ ) n ( d [ m ] ) ; return this . _closed && f > 0 && ( n ( d [ 0 ] , ! 0 ) , v . push ( "z" ) ) , v . join ( "" ) } } , { isEmpty : function ( ) { return 0 === this . _segments . length } , isPolygon : function ( ) { for ( var t = 0 , e = this . _segments . length ; e > t ; t ++ ) if ( ! this . _segments [ t ] . isLinear ( ) ) return ! 1 ; return ! 0 } , _transformContent : function ( t ) { for ( var e = Array ( 6 ) , n = 0 , i = this . _segments . length ; i > n ; n ++ ) this . _segments [ n ] . _transformCoordinates ( t , e , ! 0 ) ; return ! 0 } , _add : function ( t , e ) { for ( var n = this . _segments , i = this . _curves , r = t . length , s = null == e , e = s ? n . length : e , a = 0 ; r > a ; a ++ ) { var o = t [ a ] ; o . _path && ( o = t [ a ] = o . clone ( ) ) , o . _path = this , o . _index = e + a , o . _selectionState && this . _updateSelection ( o , 0 , o . _selectionState ) } if ( s ) n . push . apply ( n , t ) ; else { n . splice . apply ( n , [ e , 0 ] . concat ( t ) ) ; for ( var a = e + r , h = n . length ; h > a ; a ++ ) n [ a ] . _index = a } if ( i || t . _curves ) { i || ( i = this . _curves = [ ] ) ; var u = e > 0 ? e - 1 : e , l = u , c = Math . min ( u + r , this . _countCurves ( ) ) ; t . _curves && ( i . splice . apply ( i , [ u , 0 ] . concat ( t . _curves ) ) , l += t . _curves . length ) ; for ( var a = l ; c > a ; a ++ ) i . splice ( a , 0 , new z ( this , null , null ) ) ; this . _adjustCurves ( u , c ) } return this . _changed ( 25 ) , t } , _adjustCurves : function ( t , e ) { for ( var n , i = this . _segments , r = this . _curves , s = t ; e > s ; s ++ ) n = r [ s ] , n . _path = this , n . _segment1 = i [ s ] , n . _segment2 = i [ s + 1 ] || i [ 0 ] , n . _changed ( ) ; ( n = r [ this . _closed && 0 === t ? i . length - 1 : t - 1 ] ) && ( n . _segment2 = i [ t ] || i [ 0 ] , n . _changed ( ) ) , ( n = r [ e ] ) && ( n . _segment1 = i [ e ] , n . _changed ( ) ) } , _countCurves : function ( ) { var t = this . _segments . length ; return ! this . _closed && t > 0 ? t - 1 : t } , add : function ( t ) { return arguments . length > 1 && "number" != typeof t ? this . _add ( k . readAll ( arguments ) ) : this . _add ( [ k . read ( arguments ) ] ) [ 0 ] } , insert : function ( t , e ) { return arguments . length > 2 && "number" != typeof e ? this . _add ( k . readAll ( arguments , 1 ) , t ) : this . _add ( [ k . read ( arguments , 1 ) ] , t ) [ 0 ] } , addSegment : function ( ) { return this . _add ( [ k . read ( arguments ) ] ) [ 0 ] } , insertSegment : function ( t ) { return this . _add ( [ k . read ( arguments , 1 ) ] , t ) [ 0 ] } , addSegments : function ( t ) { return this . _add ( k . readAll ( t ) ) } , insertSegments : function ( t , e ) { return this . _add ( k . readAll ( e ) , t ) } , removeSegment : function ( t ) { return this . removeSegments ( t , t + 1 ) [ 0 ] || null } , removeSegments : function ( t , n , i ) { t = t || 0 , n = e . pick ( n , this . _segments . length ) ; var r = this . _segments , s = this . _curves , a = r . length , o = r . splice ( t , n - t ) , h = o . length ; if ( ! h ) return o ; for ( var u = 0 ; h > u ; u ++ ) { var l = o [ u ] ; l . _selectionState && this . _updateSelection ( l , l . _selectionState , 0 ) , l . _index = l . _path = null } for ( var u = t , c = r . length ; c > u ; u ++ ) r [ u ] . _index = u ; if ( s ) { var d = t > 0 && n === a + ( this . _closed ? 1 : 0 ) ? t - 1 : t , s = s . splice ( d , h ) ; i && ( o . _curves = s . slice ( 1 ) ) , this . _adjustCurves ( d , d ) } return this . _changed ( 25 ) , o } , clear : "#removeSegments" , getLength : function ( ) { if ( null == this . _length ) { var t = this . getCurves ( ) ; this . _length = 0 ; for ( var e = 0 , n = t . length ; n > e ; e ++ ) this . _length += t [ e ] . getLength ( ) } return this . _length } , getArea : function ( ) { for ( var t = this . getCurves ( ) , e = 0 , n = 0 , i = t . length ; i > n ; n ++ ) e += t [ n ] . getArea ( ) ; return e } , isFullySelected : function ( ) { var t = this . _segments . length ; return this . _selected && t > 0 && this . _selectedSegmentState === 7 * t } , setFullySelected : function ( t ) { t && this . _selectSegments ( ! 0 ) , this . setSelected ( t ) } , setSelected : function we ( t ) { t || this . _selectSegments ( ! 1 ) , we . base . call ( this , t ) } , _selectSegments : function ( t ) { var e = this . _segments . length ; this . _selectedSegmentState = t ? 7 * e : 0 ; for ( var n = 0 ; e > n ; n ++ ) this . _segments [ n ] . _selectionState = t ? 7 : 0 } , _updateSelection : function ( t , e , n ) { t . _selectionState = n ; var i = this . _selectedSegmentState += n - e ; i > 0 && this . setSelected ( ! 0 ) } , flatten : function ( t ) { for ( var e = new L ( this ) , n = 0 , i = e . length / Math . ceil ( e . length / t ) , r = e . length + ( this . _closed ? - i : i ) / 2 , s = [ ] ; r >= n ; ) s . push ( new k ( e . evaluate ( n , 0 ) ) ) , n += i ; this . setSegments ( s ) } , reduce : function ( ) { for ( var t = this . getCurves ( ) , e = t . length - 1 ; e >= 0 ; e -- ) { var n = t [ e ] ; n . isLinear ( ) && 0 === n . getLength ( ) && n . remove ( ) } return this } , simplify : function ( t ) { if ( this . _segments . length > 2 ) { var e = new E ( this , t || 2.5 ) ; this . setSegments ( e . fit ( ) ) } } , split : function ( t , e ) { if ( null !== e ) { if ( 1 === arguments . length ) { var n = t ; "number" == typeof n && ( n = this . getLocationAt ( n ) ) , t = n . index , e = n . parameter } var i = 1e-5 ; e >= 1 - i && ( t ++ , e -- ) ; var r = this . getCurves ( ) ; if ( t >= 0 && t < r . length ) { e > i && r [ t ++ ] . divide ( e , ! 0 ) ; var s , a = this . removeSegments ( t , this . _segments . length ,
} var A = o . getDistance ( a ) ; return s *= A , ( s > b || s > C ) && ( b = C = A / 3 ) , [ a , a . add ( i . normalize ( b ) ) , o . add ( r . normalize ( C ) ) , o ] } , reparameterize : function ( t , e , n , i ) { for ( var r = t ; e >= r ; r ++ ) n [ r - t ] = this . findRoot ( i , this . points [ r ] , n [ r - t ] ) } , findRoot : function ( t , e , n ) { for ( var i = [ ] , r = [ ] , s = 0 ; 2 >= s ; s ++ ) i [ s ] = t [ s + 1 ] . subtract ( t [ s ] ) . multiply ( 3 ) ; for ( var s = 0 ; 1 >= s ; s ++ ) r [ s ] = i [ s + 1 ] . subtract ( i [ s ] ) . multiply ( 2 ) ; var a = this . evaluate ( 3 , t , n ) , o = this . evaluate ( 2 , i , n ) , h = this . evaluate ( 1 , r , n ) , u = a . subtract ( e ) , l = o . dot ( o ) + u . dot ( h ) ; return Math . abs ( l ) < 1e-5 ? n : n - u . dot ( o ) / l } , evaluate : function ( t , e , n ) { for ( var i = e . slice ( ) , r = 1 ; t >= r ; r ++ ) for ( var s = 0 ; t - r >= s ; s ++ ) i [ s ] = i [ s ] . multiply ( 1 - n ) . add ( i [ s + 1 ] . multiply ( n ) ) ; return i [ 0 ] } , chordLengthParameterize : function ( t , e ) { for ( var n = [ 0 ] , i = t + 1 ; e >= i ; i ++ ) n [ i - t ] = n [ i - t - 1 ] + this . points [ i ] . getDistance ( this . points [ i - 1 ] ) ; for ( var i = 1 , r = e - t ; r >= i ; i ++ ) n [ i ] /= n [ r ] ; return n } , findMaxError : function ( t , e , n , i ) { for ( var r = Math . floor ( ( e - t + 1 ) / 2 ) , s = 0 , a = t + 1 ; e > a ; a ++ ) { var o = this . evaluate ( 3 , n , i [ a - t ] ) , h = o . subtract ( this . points [ a ] ) , u = h . x * h . x + h . y * h . y ; u >= s && ( s = u , r = a ) } return { error : s , index : r } } } ) , N = y . extend ( { _class : "TextItem" , _boundsSelected : ! 0 , _applyMatrix : ! 1 , _canApplyMatrix : ! 1 , _serializeFields : { content : null } , _boundsGetter : "getBounds" , initialize : function ( n ) { this . _content = "" , this . _lines = [ ] ; var i = n && e . isPlainObject ( n ) && n . x === t && n . y === t ; this . _initialize ( i && n , ! i && h . read ( arguments ) ) } , _equals : function ( t ) { return this . _content === t . _content } , _clone : function be ( t ) { return t . setContent ( this . _content ) , be . base . call ( this , t ) } , getContent : function ( ) { return this . _content } , setContent : function ( t ) { this . _content = "" + t , this . _lines = this . _content . split ( /\r\n|\n|\r/gm ) , this . _changed ( 265 ) } , isEmpty : function ( ) { return ! this . _content } , getCharacterStyle : "#getStyle" , setCharacterStyle : "#setStyle" , getParagraphStyle : "#getStyle" , setParagraphStyle : "#setStyle" } ) , j = N . extend ( { _class : "PointText" , initialize : function ( ) { N . apply ( this , arguments ) } , clone : function ( t ) { return this . _clone ( new j ( y . NO _INSERT ) , t ) } , getPoint : function ( ) { var t = this . _matrix . getTranslation ( ) ; return new u ( t . x , t . y , this , "setPoint" ) } , setPoint : function ( ) { var t = h . read ( arguments ) ; this . translate ( t . subtract ( this . _matrix . getTranslation ( ) ) ) } , _draw : function ( t ) { if ( this . _content ) { this . _setStyles ( t ) ; var e = this . _style , n = this . _lines , i = e . getLeading ( ) , r = t . shadowColor ; t . font = e . getFontStyle ( ) , t . textAlign = e . getJustification ( ) ; for ( var s = 0 , a = n . length ; a > s ; s ++ ) { t . shadowColor = r ; var o = n [ s ] ; e . hasFill ( ) && ( t . fillText ( o , 0 , 0 ) , t . shadowColor = "rgba(0,0,0,0)" ) , e . hasStroke ( ) && t . strokeText ( o , 0 , 0 ) , t . translate ( 0 , i ) } } } , _getBounds : function ( t , e ) { var n = this . _style , i = this . _lines , r = i . length , s = n . getJustification ( ) , a = n . getLeading ( ) , o = this . getView ( ) . getTextWidth ( n . getFontStyle ( ) , i ) , h = 0 ; "left" !== s && ( h -= o / ( "center" === s ? 2 : 1 ) ) ; var u = new f ( h , r ? - . 75 * a : 0 , o , r * a ) ; return e ? e . _transformBounds ( u , u ) : u } } ) , D = e . extend ( new function ( ) { function t ( t ) { var e , i = t . match ( /^#(\w{1,2})(\w{1,2})(\w{1,2})$/ ) ; if ( i ) { e = [ 0 , 0 , 0 ] ; for ( var r = 0 ; 3 > r ; r ++ ) { var a = i [ r + 1 ] ; e [ r ] = parseInt ( 1 == a . length ? a + a : a , 16 ) / 255 } } else if ( i = t . match ( /^rgba?\((.*)\)$/ ) ) { e = i [ 1 ] . split ( "," ) ; for ( var r = 0 , o = e . length ; o > r ; r ++ ) { var a = + e [ r ] ; e [ r ] = 3 > r ? a / 255 : a } } else { var h = s [ t ] ; if ( ! h ) { n || ( n = Q . getContext ( 1 , 1 ) , n . globalCompositeOperation = "copy" ) , n . fillStyle = "rgba(0,0,0,0)" , n . fillStyle = t , n . fillRect ( 0 , 0 , 1 , 1 ) ; var u = n . getImageData ( 0 , 0 , 1 , 1 ) . data ; h = s [ t ] = [ u [ 0 ] / 255 , u [ 1 ] / 255 , u [ 2 ] / 255 ] } e = h . slice ( ) } return e } var n , i = { gray : [ "gray" ] , rgb : [ "red" , "green" , "blue" ] , hsb : [ "hue" , "saturation" , "brightness" ] , hsl : [ "hue" , "saturation" , "lightness" ] , gradient : [ "gradient" , "origin" , "destination" , "highlight" ] } , r = { } , s = { } , o = [ [ 0 , 3 , 1 ] , [ 2 , 0 , 1 ] , [ 1 , 0 , 3 ] , [ 1 , 2 , 0 ] , [ 3 , 1 , 0 ] , [ 0 , 1 , 2 ] ] , u = { "rgb-hsb" : function ( t , e , n ) { var i = Math . max ( t , e , n ) , r = Math . min ( t , e , n ) , s = i - r , a = 0 === s ? 0 : 60 * ( i == t ? ( e - n ) / s + ( n > e ? 6 : 0 ) : i == e ? ( n - t ) / s + 2 : ( t - e ) / s + 4 ) ; return [ a , 0 === i ? 0 : s / i , i ] } , "hsb-rgb" : function ( t , e , n ) { t = ( t / 60 % 6 + 6 ) % 6 ; var i = Math . floor ( t ) , r = t - i , i = o [ i ] , s = [ n , n * ( 1 - e ) , n * ( 1 - e * r ) , n * ( 1 - e * ( 1 - r ) ) ] ; return [ s [ i [ 0 ] ] , s [ i [ 1 ] ] , s [ i [ 2 ] ] ] } , "rgb-hsl" : function ( t , e , n ) { var i = Math . max ( t , e , n ) , r = Math . min ( t , e , n ) , s = i - r , a = 0 === s , o = a ? 0 : 60 * ( i == t ? ( e - n ) / s + ( n > e ? 6 : 0 ) : i == e ? ( n - t ) / s + 2 : ( t - e ) / s + 4 ) , h = ( i + r ) / 2 , u = a ? 0 : . 5 > h ? s / ( i + r ) : s / ( 2 - i - r ) ; return [ o , u , h ] } , "hsl-rgb" : function ( t , e , n ) { if ( t = ( t / 360 % 1 + 1 ) % 1 , 0 === e ) return [ n , n , n ] ; for ( var i = [ t +
} , getMax : function ( ) { return this . getRange ( ) [ 1 ] } , setMax : function ( t ) { this . setRange ( this . getMin ( ) , t ) } , getStep : function ( ) { return parseFloat ( V . get ( this . _input , "step" ) ) } , setStep : function ( t ) { V . set ( this . _input , "step" , t ) } , reset : function ( ) { this . setValue ( this . _defaultValue ) } } ) , J = H . extend ( { _class : "ToolEvent" , _item : null , initialize : function ( t , e , n ) { this . tool = t , this . type = e , this . event = n } , _choosePoint : function ( t , e ) { return t ? t : e ? e . clone ( ) : null } , getPoint : function ( ) { return this . _choosePoint ( this . _point , this . tool . _point ) } , setPoint : function ( t ) { this . _point = t } , getLastPoint : function ( ) { return this . _choosePoint ( this . _lastPoint , this . tool . _lastPoint ) } , setLastPoint : function ( t ) { this . _lastPoint = t } , getDownPoint : function ( ) { return this . _choosePoint ( this . _downPoint , this . tool . _downPoint ) } , setDownPoint : function ( t ) { this . _downPoint = t } , getMiddlePoint : function ( ) { return ! this . _middlePoint && this . tool . _lastPoint ? this . tool . _point . add ( this . tool . _lastPoint ) . divide ( 2 ) : this . _middlePoint } , setMiddlePoint : function ( t ) { this . _middlePoint = t } , getDelta : function ( ) { return ! this . _delta && this . tool . _lastPoint ? this . tool . _point . subtract ( this . tool . _lastPoint ) : this . _delta } , setDelta : function ( t ) { this . _delta = t } , getCount : function ( ) { return /^mouse(down|up)$/ . test ( this . type ) ? this . tool . _downCount : this . tool . _count } , setCount : function ( t ) { this . tool [ /^mouse(down|up)$/ . test ( this . type ) ? "downCount" : "count" ] = t } , getItem : function ( ) { if ( ! this . _item ) { var t = this . tool . _scope . project . hitTest ( this . getPoint ( ) ) ; if ( t ) { for ( var e = t . item , n = e . _parent ; /^(Group|CompoundPath)$/ . test ( n . _class ) ; ) e = n , n = n . _parent ; this . _item = e } } return this . _item } , setItem : function ( t ) { this . _item = t } , toString : function ( ) { return "{ type: " + this . type + ", point: " + this . getPoint ( ) + ", count: " + this . getCount ( ) + ", modifiers: " + this . getModifiers ( ) + " }" } } ) , Y = s . extend ( { _class : "Tool" , _list : "tools" , _reference : "tool" , _events : [ "onActivate" , "onDeactivate" , "onEditOptions" , "onMouseDown" , "onMouseUp" , "onMouseDrag" , "onMouseMove" , "onKeyDown" , "onKeyUp" ] , initialize : function ( t ) { s . call ( this ) , this . _firstMove = ! 0 , this . _count = 0 , this . _downCount = 0 , this . _set ( t ) } , getMinDistance : function ( ) { return this . _minDistance } , setMinDistance : function ( t ) { this . _minDistance = t , null != this . _minDistance && null != this . _maxDistance && this . _minDistance > this . _maxDistance && ( this . _maxDistance = this . _minDistance ) } , getMaxDistance : function ( ) { return this . _maxDistance } , setMaxDistance : function ( t ) { this . _maxDistance = t , null != this . _minDistance && null != this . _maxDistance && this . _maxDistance < this . _minDistance && ( this . _minDistance = t ) } , getFixedDistance : function ( ) { return this . _minDistance == this . _maxDistance ? this . _minDistance : null } , setFixedDistance : function ( t ) { this . _minDistance = t , this . _maxDistance = t } , _updateEvent : function ( t , e , n , i , r , s , a ) { if ( ! r ) { if ( null != n || null != i ) { var o = null != n ? n : 0 , h = e . subtract ( this . _point ) , u = h . getLength ( ) ; if ( o > u ) return ! 1 ; var l = null != i ? i : 0 ; if ( 0 != l ) if ( u > l ) e = this . _point . add ( h . normalize ( l ) ) ; else if ( a ) return ! 1 } if ( s && e . equals ( this . _point ) ) return ! 1 } switch ( this . _lastPoint = r && "mousemove" == t ? e : this . _point , this . _point = e , t ) { case "mousedown" : this . _lastPoint = this . _downPoint , this . _downPoint = this . _point , this . _downCount ++ ; break ; case "mouseup" : this . _lastPoint = this . _downPoint } return this . _count = r ? 0 : this . _count + 1 , ! 0 } , _fireEvent : function ( t , e ) { var n = paper . project . _removeSets ; if ( n ) { "mouseup" === t && ( n . mousedrag = null ) ; var i = n [ t ] ; if ( i ) { for ( var r in i ) { var s = i [ r ] ; for ( var a in n ) { var o = n [ a ] ; o && o != i && delete o [ s . _id ] } s . remove ( ) } n [ t ] = null } } return this . responds ( t ) && this . fire ( t , new J ( this , t , e ) ) } , _handleEvent : function ( t , e , n ) { paper = this . _scope ; var i = ! 1 ; switch ( t ) { case "mousedown" : this . _updateEvent ( t , e , null , null , ! 0 , ! 1 , ! 1 ) , i = this . _fireEvent ( t , n ) ; break ; case "mousedrag" : for ( var r = ! 1 , s = ! 1 ; this . _updateEvent ( t , e , this . minDistance , this . maxDistance , ! 1 , r , s ) ; ) i = this . _fireEvent ( t , n ) || i , r = ! 0 , s = ! 0 ; break ; case "mouseup" : ! e . equals ( this . _point ) && this . _updateEvent ( "mousedrag" , e , this . minDistance , this . maxDistance , ! 1 , ! 1 , ! 1 ) && ( i = this . _fireEvent ( "mousedrag" , n ) ) , this . _updateEvent ( t , e , null , this . maxDistance , ! 1 , ! 1 , ! 1 ) , i = this . _fireEvent ( t , n ) || i , this . _updateEvent ( t , e , null , null , ! 0 , ! 1 , ! 1 ) , this . _firstMove = ! 0 ; break ; case "mousemove" : for ( ; this . _updateEvent ( t , e , this . minDistance , this . maxDistance , th
if ( e . label && i ) break } } return r === Oe . length && n ( e . start , "Unsyntactic " + t . keyword ) , N ( e , i ? "BreakStatement" : "ContinueStatement" ) ; case Ze : return A ( ) , R ( ) , N ( e , "DebuggerStatement" ) ; case He : return A ( ) , Oe . push ( ti ) , e . body = U ( ) , Oe . pop ( ) , F ( nn ) , e . test = H ( ) , R ( ) , N ( e , "DoWhileStatement" ) ; case $e : if ( A ( ) , Oe . push ( ti ) , F ( pn ) , be === yn ) return G ( e , null ) ; if ( be === en ) { var a = L ( ) ; return A ( ) , X ( a , ! 0 ) , 1 === a . declarations . length && D ( ln ) ? $ ( e , a ) : G ( e , a ) } var a = J ( ! 1 , ! 0 ) ; return D ( ln ) ? ( q ( a ) , $ ( e , a ) ) : G ( e , a ) ; case Xe : return A ( ) , he ( e , ! 0 ) ; case Je : return A ( ) , e . test = H ( ) , e . consequent = U ( ) , e . alternate = D ( We ) ? U ( ) : null , N ( e , "IfStatement" ) ; case Ye : return Ie || n ( me , "'return' outside of function" ) , A ( ) , D ( yn ) || B ( ) ? e . argument = null : ( e . argument = J ( ) , R ( ) ) , N ( e , "ReturnStatement" ) ; case Ke : A ( ) , e . discriminant = H ( ) , e . cases = [ ] , F ( _n ) , Oe . push ( ei ) ; for ( var o , h ; be != gn ; ) if ( be === Fe || be === Ue ) { var u = be === Fe ; o && N ( o , "SwitchCase" ) , e . cases . push ( o = L ( ) ) , o . consequent = [ ] , A ( ) , u ? o . test = J ( ) : ( h && n ( Me , "Multiple default clauses" ) , h = ! 0 , o . test = null ) , F ( wn ) } else o || V ( ) , o . consequent . push ( U ( ) ) ; return o && N ( o , "SwitchCase" ) , A ( ) , Oe . pop ( ) , N ( e , "SwitchStatement" ) ; case Qe : return A ( ) , Jn . test ( de . slice ( ze , me ) ) && n ( ze , "Illegal newline after throw" ) , e . argument = J ( ) , R ( ) , N ( e , "ThrowStatement" ) ; case tn : if ( A ( ) , e . block = W ( ) , e . handler = null , be === Ve ) { var l = L ( ) ; A ( ) , F ( pn ) , l . param = le ( ) , Te && Zn ( l . param . name ) && n ( l . param . start , "Binding " + l . param . name + " in strict mode" ) , F ( vn ) , l . guard = null , l . body = W ( ) , e . handler = N ( l , "CatchClause" ) } return e . guardedHandlers = Le , e . finalizer = D ( Ge ) ? W ( ) : null , e . handler || e . finalizer || n ( e . start , "Missing catch or finally clause" ) , N ( e , "TryStatement" ) ; case en : return A ( ) , e = X ( e ) , R ( ) , e ; case nn : return A ( ) , e . test = H ( ) , Oe . push ( ti ) , e . body = U ( ) , Oe . pop ( ) , N ( e , "WhileStatement" ) ; case rn : return Te && n ( me , "'with' in strict mode" ) , A ( ) , e . object = H ( ) , e . body = U ( ) , N ( e , "WithStatement" ) ; case _n : return W ( ) ; case yn : return A ( ) , N ( e , "EmptyStatement" ) ; default : var c = Ce , d = J ( ) ; if ( t === De && "Identifier" === d . type && D ( wn ) ) { for ( var r = 0 ; r < Oe . length ; ++ r ) Oe [ r ] . name === c && n ( d . start , "Label '" + c + "' is already declared" ) ; var f = be . isLoop ? "loop" : be === Ke ? "switch" : null ; return Oe . push ( { name : c , kind : f } ) , e . body = U ( ) , Oe . pop ( ) , e . label = d , N ( e , "LabeledStatement" ) } return e . expression = d , R ( ) , N ( e , "ExpressionStatement" ) } } function H ( ) { F ( pn ) ; var t = J ( ) ; return F ( vn ) , t } function W ( t ) { var e , n = L ( ) , i = ! 0 , r = ! 1 ; for ( n . body = [ ] , F ( _n ) ; ! D ( gn ) ; ) { var s = U ( ) ; n . body . push ( s ) , i && t && j ( s ) && ( e = r , I ( r = ! 0 ) ) , i = ! 1 } return r && ! e && I ( ! 1 ) , N ( n , "BlockStatement" ) } function G ( t , e ) { return t . init = e , F ( yn ) , t . test = be === yn ? null : J ( ) , F ( yn ) , t . update = be === vn ? null : J ( ) , F ( vn ) , t . body = U ( ) , Oe . pop ( ) , N ( t , "ForStatement" ) } function $ ( t , e ) { return t . left = e , t . right = J ( ) , F ( vn ) , t . body = U ( ) , Oe . pop ( ) , N ( t , "ForInStatement" ) } function X ( t , e ) { for ( t . declarations = [ ] , t . kind = "var" ; ; ) { var i = L ( ) ; if ( i . id = le ( ) , Te && Zn ( i . id . name ) && n ( i . id . start , "Binding " + i . id . name + " in strict mode" ) , i . init = D ( Sn ) ? J ( ! 0 , e ) : null , t . declarations . push ( N ( i , "VariableDeclarator" ) ) , ! D ( mn ) ) break } return N ( t , "VariableDeclaration" ) } function J ( t , e ) { var n = Y ( e ) ; if ( ! t && be === mn ) { var i = E ( n ) ; for ( i . expressions = [ n ] ; D ( mn ) ; ) i . expressions . push ( Y ( e ) ) ; return N ( i , "SequenceExpression" ) } return n } function Y ( t ) { var e = K ( t ) ; if ( be . isAssign ) { var n = E ( e ) ; return n . operator = Ce , n . left = e , A ( ) , n . right = Y ( t ) , q ( e ) , N ( n , "AssignmentExpression" ) } return e } function K ( t ) { var e = Q ( t ) ; if ( D ( bn ) ) { var n = E ( e ) ; return n . test = e , n . consequent = J ( ! 0 ) , F ( wn ) , n . alternate = J ( ! 0 , t ) , N ( n , "ConditionalExpression" ) } return e } function Q ( t ) { return te ( ee ( ) , - 1 , t ) } function te ( t , e , n ) { var i = be . binop ; if ( null != i && ( ! n || be !== ln ) && i > e ) { var r = E ( t ) ; r . left = t , r . operator = Ce , A ( ) , r . right = te ( ee ( ) , i , n ) ; var r = N ( r , /&&|\|\|/ . test ( r . operator ) ? "LogicalExpression" : "BinaryExpression" ) ; return te ( r , e , n ) } return t } function ee ( ) { if ( be . prefix ) { var t = L ( ) , e = be . isUpdate ; return t . operator = Ce , t . prefix = ! 0 , A ( ) , t . argument = ee ( ) , e ? q ( t . argument ) : Te && "delete" === t . operator && "Identifier" === t . argument . type && n ( t . start , "Deleting local variable in strict mode" ) , N ( t , e ? "UpdateExpression" : "UnaryExpression" ) } for ( var i = ne ( ) ; be . postfix && ! B ( ) ; ) { var t = E ( i ) ; t . operator = Ce , t . prefix = ! 1 , t . argument = i , q ( i ) , A ( ) , i = N ( t , "UpdateExpression" ) } return i } function ne ( ) { return ie ( re ( ) ) } function ie ( t , e ) { if ( D ( xn ) ) { var n = E ( t ) ; return n . object = t , n . property = le ( ! 0 ) , n . computed = ! 1