{"version":3,"sources":["kendo.drawing.js"],"names":["f","define","$","createPromise","Deferred","promiseAll","promises","when","apply","extendStatic","dest","src","__proto__","member","hasOwnProperty","kendo","drawing","util","deepExtend","window","jQuery","amd","a1","a2","a3","normalizeText","text","String","replace","REPLACE_REGEX","SPACE","objectKey","object","key","parts","push","sort","join","hashKey","str","i","hash","length","charCodeAt","zeroSize","width","height","baseline","measureText","style","measureBox","TextMetrics","current","measure","LRUCache","DEFAULT_OPTIONS","defaultMeasureBox","Class","extend","init","size","this","_size","_length","_map","put","value","map","entry","_head","_tail","newer","older","get","baselineMarkerSize","document","createElement","cssText","options","_cache","styleKey","cacheKey","cachedResult","baselineMarker","textStr","box","_baselineMarker","cloneNode","textContent","appendChild","body","offsetWidth","offsetHeight","offsetTop","parentNode","removeChild","marker","append$1$1","first","second","arabicToRoman","n","values","roman","shift","literals","defined","UNDEFINED","definitionId","defId","deg","radians","DEG_TO_RAD","encodeUTF8","input","code","hi","low","output","isNaN","fromCharCode","encodeBase64","chr1","chr2","chr3","enc1","enc2","enc3","enc4","utfInput","KEY_STR","charAt","eventCoordinates","e","x","location","y","pageX","clientX","pageY","clientY","eventElement","touch","initialTouch","target","isTransparent","color","last","array","limitValue","min","max","Math","mergeSort","a","cmp","merge","b","r","ai","bi","slice","m","left","right","floor","rad","degrees","pow","p","round","precision","power","valueOrDefault","defaultValue","bindEvents","element","events","eventName","eventNames","idx","trim","split","addEventListener","elementOffset","getBoundingClientRect","documentElement","top","pageYOffset","scrollTop","clientTop","pageXOffset","scrollLeft","clientLeft","elementStyles","styles","field","result","getComputedStyle","stylesArray","Array","isArray","getPixels","elementSize","size$1","parseInt","unbindEvents","name","removeEventListener","elementPadding","ref","paddingLeft","paddingTop","parseFloat","parseMatrix","matrixString","members","match","matrixRegexp","Matrix","unit","Function","prototype","bind","concat","transformMatrix","transform","elementScale","matrix","parent","parentMatrix","parentElement","multiplyCopy","c","setAccessor","geometryChange","getAccessor","defineAccessors","fn","fields","capitalized","toUpperCase","substring","toMatrix","transformation","transform$1","Transformation","ellipseExtremeAngles","center","rx","ry","extremeX","extremeY","atan2","d","geometryAccessor","fieldName","_observerField","defineGeometryAccessors","names","close$1","tolerance","PRECISION","abs","closeOrLess","lineIntersection","p0","p1","p2","p3","s1x","s2x","s1y","s2y","nx","ny","s","t","Point","calculateAngle","cx","cy","cos","sin","normalizeArcParameters","parameters","cosine","sine","xT","yT","sign","xt2","yt2","rx2","ry2","delta","constT","cxT","cyT","uX","uY","vX","vY","startAngle","angleCosine","angle","endAngle","signEndAngle","x1","y1","x2","y2","largeArc","swipe","rotation","sqrt","acos","radiusX","radiusY","xRotation","bboxStartAngle","start","isOutOfEndPoint","endPoint","controlPoint","point","rotatedPoint","transformCopy","rotate","calculateCurveAt","points","t1","toCubicPolynomial","numberSign","solveQuadraticEquation","squareRoot","solveCubicEquation","q","Q","b3a","y3","z1","z2","ComplexNumber","nthRoot","add","multiplyConstant","negate","multiply","isReal","real","hasRootsInRange","rootField","range","intersection","polynomial","roots","curveIntersectionsCount","bbox","rayIntersection","intersectsRay","count","bottomRight","lineIntersectionsCount","intersects","minX","maxX","minY","maxY","inRange","pointAccessor","create","definePointAccessors","arrayLimits","arr","MAX_NUM","MIN_NUM","toLineParamaters","isVertical","insertPosition","splice","reflectionPoint","scaleCopy","translate","quadraticToCubicControlPoints","position","scaledPoint","clone","scale","controlOut","translateWith","third","controlIn","parseParameters","SPLIT_REGEX","number","parsePath","pathInstance","previousCommand","SEGMENT_REGEX","params","closePath","command","toLowerCase","isRelative","MOVE","moveTo","ShapeMap","CLOSE","close","Error","elementsBoundingBox","elements","applyTransform","boundingBox","elementBoundingBox","visible","rawBBox","Rect","union","elementsClippedBoundingBox","clippedBBox","translateToPoint","transofrm","origin","alignStart","rect","align","axis","sizeField","alignStartReverse","alignElements","alignment","vAlign","stackElements","stackAxis","otherAxis","previousBBox","createStackElements","stack","vStack","getStacks","maxSize","stacks","stackSize","addElementToStack","wrapElements","startElement","elementIdx","wrap","vWrap","fit","rectSize","optionsAccessor","set","defineOptionsAccessors","swing","PI","linear","easeOutElastic","time","diff","asin","renderAttr","renderAllAttr","attrs","renderStyle","isDefinition","type","nodeType","baseUrl","hashIndex","base","getElementsByTagName","href","url","supportBrowser","msie","indexOf","decodeEntities","ENTITY_REGEX","test","_element","lastIndex","innerHTML","innerText","alignToScreen","ctm","getScreenCTM","renderPath","ctx","path","segment","anchor","prevSeg","prevOut","segments","bezierCurveTo","lineTo","closed","zIndexComparer","_zIndex","addGradientStops","gradient","stops","stop","parseColor","opacity","addColorStop","offset","toCssRgba","exportGroup","group","exportRoot","svg","root","RootNode","skipBaseHref","rootGroup","getOrigin","Group","children","load","SVG_NS","render","destroy","exportImage","surfaceOptions","container","surface","promise","defaults","cors","getSize","display","Surface$4","suspendTracking","draw","image","then","exportSVG","raw","resolve","slice$1$1","thing","call","addClass","el","cls","classList","className","removeClass","remove","reduce","word","setCSS","Object","keys","forEach","closest","selector","matches","getXY","drawDOM","doOne","pos","setTransform$1","nodeInfo","_clipbox","_matrix","_stackingContext","_avoidLinks","avoidLinks","renderElement","makeTemplate","template","data","div","firstElementChild","handlePageBreaks","callback","forceBreak","pageWidth","pageHeight","margin","doPageBreak","splitElement","copy","page","makePage","insertBefore","pages","pageNum","totalPages","cacheImages","keepTogether","adjust","tag","tagName","getAttribute","bottomPadding","bottomBorder","saveAdjust","isFirst","fall","tableLayout","getComputedStyle$1","getPropertyValue","firstChild","nextSibling","breakAtElement","fallsOnMargin","splitText","firstInParent","table","colgroup","thead","grid","gridHead","querySelector","repeatHeaders","doc","createRange","setStartBefore","setEndBefore","extractContents","preventBulletOnListItem","boxSizing","padding","bottom","overflow","clear","pageClassName","available","node","len","nextnode","selectNodeContents","findEOP","setEnd","endOffset","li","setAttribute","ownerDocument","_destructive","cloneNodes","querySelectorAll","tfoot","ol","index","paddingRight","beforePageBreak","whenImagesAreActuallyLoaded","reject","pdf","defineFont","getFontFaces","forcePageBreak","hasPaperSize","paperSize","paperOptions","getPaperOptions","def","hasMargin","multiPage","_ignoreMargin","progress","canceled","next","append","cancel","setTimeout","drawText","pushNodeInfo","renderText","_renderElement","popNodeInfo","doStylesheet","ss","rules","cssRules","ex","addRules","findFonts","rule","font","splitProperty","getFontURL","styleSheet","family","bold","italic","addRule","styleSheets","obj","getCounter","getAllCounters","getPrototypeOf","reverse","incCounter","inc","_root","resetCounter","val","doCounters","updateCounters","counterIncrement","counterReset","parseColor$1","css","toRGB","pending","img","images","complete","onload","onerror","IMAGE_CACHE","urls","dive","parseBackgroundImage","bg","Image","crossOrigin","alphaNumeral","decoration","createsStackingContext","updateClipbox","intersect","emptyClipbox","cb","prop","pseudoElt","defa","browser","webkit","mozilla","opera","microsoft","arguments","pleaseSetPropertyValue","important","setProperty","getBorder","side","saveStyle","func","prev","getBorderRadius","sanitizeRadius","getContentBox","innerBox","wt","wr","wb","wl","getTransform","transform$$1","exec","radiansToDegrees","parseAngle","num","shape","setClipping","clipPath","clip","addArcToPath","Arc$2","curvePoints","curveTo","adjustBorderRadiusForBox","rTL","rTR","rBR","rBL","tl_x","tl_y","tr_x","tr_y","br_x","br_y","bl_x","bl_y","tl","tr","br","bl","elementRoundBox","bt","bb","pt","pr","pb","pl","roundBox","rTL0","rTR0","rBR0","rBL0","tmp","Path","fill","stroke","formatCounter","evalPseudoElementContent","content","displayCounter","separator","getCssText","_renderWithPseudoElements","pseudo","kind","place","psel","KENDO_PSEUDO_ELEMENT","fake","saveClass","adjustBoxes","boxes","tableBorderLeft","tableBorderTop","tableBox","firstCell","firstCellBox","rows","cells","drawEdge","Wtop","Wleft","Wright","rl","rr","drawRoundCorner","ri","anticlockwise","edge","drawBackground","background","backgroundColor","backgroundImage","drawOneBackground","backgroundRepeat","backgroundPosition","backgroundOrigin","backgroundSize","drawBackgroundImage","img_width","img_height","renderBG","rewX","rewY","repeatX","aspect_ratio","orgBox","Image$1","gradientRenderer","drawBullet","_drawBullet","bullet","listStylePosition","textAlign","elementIndex","k","listStyleType","fontSize","lineHeight","fontFamily","disc","circle","square","drawOneBox","isLast","inv","shouldDrawLeft","shouldDrawRight","dir","textOverflow","saveTextOverflow","innerbox","version","currentStyle","getClientRects","g","_pdfLink","clipit","isFormField","maybeRenderWidget","renderContents","pxlen","scaledAngle","implicit","end","to","atan","tan","percent","fromRect","LinearGradient","userSpace","console","log","visual","widget","wrap$$1","_kendoExportVisual","attr","widgetInstance","exportDOMVisual","exportVisual","renderImage","zIndexSort","sa","sb","za","zb","pa","getSelectedOption","selectedOptions","selectedIndex","renderCheckbox","checked","Circle","Circle$2","renderFormField","option","whiteSpace","multiple","xml","dataURL","floats","positioned","floating","XMLSerializer","serializeToString","toDataURL","actuallyGetRangeBoundingRect","rectangles","done","chrome","Infinity","prevLineBottom","doChunk","found","cc","indent","origStart","substr","search","setStart","isJustified","columnCount","findEOL","eol","estimateLineLength","startOffset","getFontHeight","textTransform","l","TextRect","decorate","line","ypos","underline","lineThrough","overline","align$$1","hasDecoration","selectNode","groupInStackingContext","zIndex","main","_dom_zIndex","insert","invert","visibility","mmul","b1","c1","d1","e1","f1","b2","c2","d2","e2","f2","kendoDrawing","kendoDrawingUtil","kendoUtil","support","HasObservers","now","toString$1","OptionsStore","withAccessors","Size","Element$1","PI_DIV_2","GRADIENT","paintable","IDENTITY_MATRIX_HASH","measurable","withGeometry","DEFAULT_STROKE","MAX_INTERVAL","pow$1","accessors","pop","unshift","ElementsArray","GeometryElementsArray","withPoints","Segment","MultiPath","DEFAULT_STROKE$1","Arc","DEFAULT_FONT","DEFAULT_FILL","Text","traversable","forEachReverse","Layout","Rect$2","StopsArray","withOptions","GradientStop","Gradient","points$1","RadialGradient","easingFunctions","instance","AnimationFactory","Animation","instance$1","PathParser","BaseNode","Surface$2","NODE_MAP","NONE","renderSVG","testFragment","testContainer","hasParser","renderSVG$1","TRANSFORM","DefinitionMap","Node","GradientStopNode","GradientNode","LinearGradientNode","RadialGradientNode","ClipNode","DefinitionNode","DASH_ARRAYS","SOLID","BUTT","ATTRIBUTE_MAP","PathNode","ArcNode","CircleNode","GroupNode","ImageNode","MultiPathNode","RectNode","TextNode","RTL","Surface$3","NODE_MAP$2","Node$2","GroupNode$2","FRAME_DELAY","RootNode$2","QuadRoot","geometry","QuadNode","ROOT_SIZE","LEVEL_STEP","MAX_LEVEL","ShapesQuadTree","SurfaceCursor","PathNode$2","ArcNode$2","CircleNode$2","ImageNode$2","MultiPathNode$2","RectNode$2","TextNode$2","instance$2","support$1","hasDocument","supportsCanvas","supportsSVG","SurfaceFactory","Surface","svg$1","canvas","inBrowser","Class$$1","constructor","observers","_observers","addObserver","removeObserver","trigger","methodName","event","observer","_suspended","optionsChange","suspend","resume","1","10","100","2","20","200","3","30","300","4","40","400","5","50","500","6","60","600","7","70","700","8","80","800","9","90","900","1000","Number","MAX_VALUE","Date","getTime","h","det","equals","other","toArray","toString","scaleX","scaleY","IDENTITY","HasObservers$$1","prefix","this$1","_wrap","part","_set","composite","parentObj","_clear","wrapped","TBase","superclass","staticAccessors","ZERO","originPoint","move","distanceTo","dx","dy","digits","doRound","arg0","arg1","arguments$1","minPoint","maxPoint","defineProperties","cornerRadius","setOrigin","setSize","setCornerRadius","radius","getCornerRadius","topLeft","topRight","bottomLeft","fromPoints","expand","expandCopy","containsPoint","_isOnPath","rectOuter","rectInner","rect1","rect2","_optionsChange","Element","_initOptions","prototypeAccessors","id","parentTransform","currentTransform","elementTransform","elementMatrix","combinedMatrix","_clippedBBox","transformedPoint","_hasFill","_containsPoint","_hasStroke","setCenter","setRadius","getCenter","pointAt","_pointAt","currentPointX","currentPointY","currentPoint","extremeAngles","inCircle","pointDistance","anonymous","newFill","strokeWidth","matrixHash","_bboxCache","_matrixHash","_bbox","_geometry","radian","nextAngle","interval","_arcInterval","intervalAngle","subIntervalsCount","ceil","subIntervalAngle","currentAngle","_intervalCurvePoints","cp1","cp2","currentAngleX","currentAngleY","oldStart","p1Derivative","_derivativeAt","p2Derivative","inAngleRange","distance","angleRad","pointRadius","startPoint","arcParameters","_splice","_change","_add","_remove","howMany","_clearObserver","_setObserver","ElementsArray$$1","cNumber","addConstant","rad$$1","nthR","bboxTo","toSegment","segmentAnchor","toSegmentAnchor","_curveBoundingBox","_lineBoundingBox","extremesX","_curveExtremesFor","extremesY","xLimits","yLimits","extremes","_curveExtremes","x3","x4","t2","_intersectionsTo","intersectionsCount","_isOnCurveTo","endSegment","p4","rotatedPoints","_isOnLineTo","_isOnPathTo","isOnPath","v","arcTo","lastControlIn","paths","cubicControlPoints","lastSegment","lineJoin","parse","arc","_addArcSegments","previous","pathWidth","segmentBox","fromArc","prototypeAccessors$1","toPath","metrics","_rect","childrenField","traverse","child","childrenChange","action","items","_reparent","insertAt","removeAt","newParent","alignContent","justifyContent","alignItems","spacing","orientation","lineSpacing","revers","Group$$1","_fieldMap","_initMap","fieldMap","groupsSizeField","groupAxis","groupsAxis","justifyAlign","reflow","groups","groupsSize","ref$1","groupOrigin","elementOrigin","groupStart","elementStart","groupBox","arrangeElements","groupIdx","scaledStart","scaledSize","newStart","_initGroups","lineSize","bboxes","_newGroup","addGroup","_addToGroup","Rect$$1","arg","_createStops","_userSpace","addStop","removeStop","_radius","_fallbackFill","fallbackFill","_items","register","_options","duration","easing","setup","step","play","finish","delay","abort","loop","wallTime","easingPosition","_stopped","animationFrame","multiPath","srcElement","childNodes","observe","removeSelf","invalidate","Observable$$1","_click","_handler","_mouseenter","_mouseleave","_mousemove","_visual","_enableTracking","unbind","eventTarget","domNode","_kendoNode","currentSize","_resize","resize","force","_suspendedTracking","resumeTracking","originalEvent","_elementOffset","_surfacePoint","coord","inverseTransform","Observable","DOMParser","namespaceURI","parser","chartDoc","parseFromString","importedDoc","adoptNode","BaseNode$$1","definitions","clearDefinitions","childNode","createDefinitions","attachTo","domElement","setElement","nodes","childElement","renderChildren","updateDefinition","removeAttr","allAttr","allCss","removeAttribute","mapTransform","renderTransform","transformChange","mapStyle","cursor","renderOpacity","renderId","hasDefinitions","definition","definitionChange","refUrl","renderDefinitions","mapDefinitions","baseHref","Node$$1","renderOffset","loadStops","stopNode","mapCoordinates","renderCoordinates","mapSpace","GradientNode$$1","definitionMap","addDefinitions","removeDefinitions","createDefinition","item","addDefinition","mapItem","removeDefinition","defs","dot","dash","longdash","dashdot","longdashdot","longdashdotdot","fill.opacity","stroke.color","stroke.width","stroke.opacity","renderData","mapFill","mapStroke","printPath","currentType","segmentType","printPoints","segmentStart","segmentEnd","renderLinecap","dashType","renderDashType","renderStroke","dashArray","lineCap","renderFill","PathNode$$1","mapPosition","mapSource","renderPosition","encode","htmlEncode","renderSource","setY","renderContent","renderTextAnchor","rtl","BaseSurface","direction","_template","_rootElement","click","mouseover","mouseout","mousemove","viewBox","_offset","initClip","clearClip","setClip","beginPath","setTransform","loadElements","setOpacity","globalAlpha","opactity","renderTo","save","restore","getContext","invalidateHandler","_invalidate","throttle","_rescale","_devicePixelRatio","devicePixelRatio","fixedScale","clearRect","shapes","_quadNode","pointShapes","QuadRoot$$1","inBounds","nodeRect","nodeBottomRight","inserted","_initChildren","halfWidth","halfHeight","initRoots","rootMap","rootElements","pointShape","sectorRoot","assignZindex","levelWeight","parents","bboxChange","_insertShape","elementsArray","_insert","sectors","getSectors","inRoot","bottomX","bottomY","_resetCursor","_shapeCursor","_current","_defaultCursor","_getCursor","_setCursor","renderPoints","setLineDash","setLineCap","setLineJoin","setFill","setStroke","hasFill","setGradientFill","fillStyle","createLinearGradient","createRadialGradient","strokeStyle","lineWidth","mozDash","webkitLineDash","onLoad","onError","loading","state","drawImage","fillText","strokeText","_mouseTrackHandler","_trackMouse","_searchTree","_cursor","undefined","resolveDataURL","rootElement","loadingStates","currentShape","_currentShape","implementation","hasFeature","preferred","logToConsole","navigator","userAgent","Text$$1","_pdfRect","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","$el","$clone","selected","orig","canvases","canvas$$1","skip_ws","tok_whitespace","read","token","read_stop","tok_length","tok_percent","read_linear_gradient","propName","to1","to2","tok_popen","tok_angle","tok_comma","tok_keyword","tok_pclose","read_url","tok_content","tok","cache1","tok_linear_gradient","tok_url","cache2","cache","looking_at","ret","last$$1","in_paren","in_string","dataviz","Color","NS","utils","outerWidth","_outerWidth","outerHeight","_outerHeight","proxy","TOOLTIP_TEMPLATE","TOOLTIP_CLOSE_TEMPLATE","SurfaceTooltip","_tooltipOptions","popupOptions","appendTo","animation","copyAnchorStyles","collision","_openPopupHandler","_openPopup","_bindEvents","showOn","autoHide","hideDelay","showAfter","_showHandler","_showEvent","_surfaceLeaveHandler","_surfaceLeave","_mouseleaveHandler","_mousemoveHandler","on","_hideClick","_tooltipLeave","getPopup","popup","ui","Popup","off","clearTimeout","_timeout","shared","_tooltipShape","tooltip","_updateContent","isFunction","html","_position","tooltipOffset","_instance","surfaceOffset","show","_show","hide","_showTimeout","preventDefault","_autoHide","_measure","open","_closeButton","wrapper","_popupRelatedTarget","relatedTarget","DrawingSurface","Widget","_triggerInstanceHandler","_triggerInstanceEvent","_bindHandler","hideTooltip","_tooltip","showTooltip","plugin"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;CAwBC,SAAUA,EAAGC,QACVA,OAAO,gBAAiB,cAAeD,IACzC,WA6BE,MA5BC,UAAUE,GACP,QAASC,KACL,MAAOD,GAAEE,WAEb,QAASC,GAAWC,GAChB,MAAOJ,GAAEK,KAAKC,MAAMN,EAAGI,GAE3B,QAASG,GAAaC,EAAMC,GACxB,GAAKA,EAGL,GAA6B,kBAAlBA,GAAIC,UACXF,EAAKE,UAAYD,MAEjB,KAAK,GAAIE,KAAUF,GACXA,EAAIG,eAAeD,KACnBH,EAAKG,GAAUF,EAAIE,IAKnCE,MAAMC,QAAQC,KAAOF,MAAMC,QAAQC,SACnCF,MAAMG,WAAWH,MAAMC,QAAQC,MAC3Bd,cAAeA,EACfE,WAAYA,EACZI,aAAcA,KAEpBU,OAAOJ,MAAMK,QACRD,OAAOJ,OACE,kBAAVd,SAAwBA,OAAOoB,IAAMpB,OAAS,SAAUqB,EAAIC,EAAIC,IACrEA,GAAMD,OAEV,SAAUvB,EAAGC,QACVA,OAAO,qBAAsB,cAAeD,IAC9C,YACG,SAAUE,GAqDP,QAASuB,GAAcC,GACnB,OAAcA,EAAPC,IAAaC,QAAQC,EAAeC,GAE/C,QAASC,GAAUC,GAAnB,GAEaC,GADLC,IACJ,KAASD,IAAOD,GACZE,EAAMC,KAAKF,EAAMD,EAAOC,GAE5B,OAAOC,GAAME,OAAOC,KAAK,IAE7B,QAASC,GAAQC,GAAjB,GAEaC,GADLC,EAAO,UACX,KAASD,EAAI,EAAGA,EAAID,EAAIG,SAAUF,EAC9BC,IAASA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IACzEA,GAAQF,EAAII,WAAWH,EAE3B,OAAOC,KAAS,EAEpB,QAASG,KACL,OACIC,MAAO,EACPC,OAAQ,EACRC,SAAU,GA0DlB,QAASC,GAAYtB,EAAMuB,EAAOC,GAC9B,MAAOC,GAAYC,QAAQC,QAAQ3B,EAAMuB,EAAOC,GAtIvD,GAEOI,GAiDAzB,EACAC,EA0BAyB,EACAC,EAKAL,CAnFJhC,QAAOJ,MAAME,KAAOE,OAAOJ,MAAME,SAC7BqC,EAAWvC,MAAM0C,MAAMC,QACvBC,KAAM,SAAUC,GACZC,KAAKC,MAAQF,EACbC,KAAKE,QAAU,EACfF,KAAKG,SAETC,IAAK,SAAUhC,EAAKiC,GAAf,GACGC,GAAMN,KAAKG,KACXI,GACAnC,IAAKA,EACLiC,MAAOA,EAEXC,GAAIlC,GAAOmC,EACNP,KAAKQ,OAGNR,KAAKS,MAAMC,MAAQH,EACnBA,EAAMI,MAAQX,KAAKS,MACnBT,KAAKS,MAAQF,GAJbP,KAAKQ,MAAQR,KAAKS,MAAQF,EAM1BP,KAAKE,SAAWF,KAAKC,OACrBK,EAAIN,KAAKQ,MAAMpC,KAAO,KACtB4B,KAAKQ,MAAQR,KAAKQ,MAAME,MACxBV,KAAKQ,MAAMG,MAAQ,MAEnBX,KAAKE,WAGbU,IAAK,SAAUxC,GACX,GAAImC,GAAQP,KAAKG,KAAK/B,EACtB,IAAImC,EAeA,MAdIA,KAAUP,KAAKQ,OAASD,IAAUP,KAAKS,QACvCT,KAAKQ,MAAQD,EAAMG,MACnBV,KAAKQ,MAAMG,MAAQ,MAEnBJ,IAAUP,KAAKS,QACXF,EAAMI,QACNJ,EAAMI,MAAMD,MAAQH,EAAMG,MAC1BH,EAAMG,MAAMC,MAAQJ,EAAMI,OAE9BJ,EAAMI,MAAQX,KAAKS,MACnBF,EAAMG,MAAQ,KACdV,KAAKS,MAAMC,MAAQH,EACnBP,KAAKS,MAAQF,GAEVA,EAAMF,SAIrBrC,EAAgB,eAChBC,EAAQ,IA0BRyB,GAAoBmB,mBAAoB,GAEpB,mBAAbC,YACPnB,EAAoBmB,SAASC,cAAc,OAC3CpB,EAAkBP,MAAM4B,QAAU,wQAElC1B,EAAcpC,MAAM0C,MAAMC,QAC1BC,KAAM,SAAUmB,GACZjB,KAAKkB,OAAS,GAAIzB,GAAS,KAC3BO,KAAKiB,QAAU5E,EAAEwD,UAAWH,EAAiBuB,IAEjDzB,QAAS,SAAU3B,EAAMuB,EAAO6B,GAAvB,GAODE,GACAC,EACAC,EAIAtB,EACAV,EACAiC,EACKlD,EACDiC,EAKJkB,CAlBJ,IAHgB,SAAZN,IACAA,MAEgB,SAATpD,GAAiC,OAATA,EAC/B,MAAOkB,IAKX,IAHIoC,EAAWjD,EAAUkB,GACrBgC,EAAW3C,EAAQZ,EAAOsD,GAC1BE,EAAerB,KAAKkB,OAAON,IAAIQ,GAE/B,MAAOC,EAEPtB,GAAOhB,IACPM,EAAa4B,EAAQO,KAAO7B,EAC5B2B,EAAiBtB,KAAKyB,kBAAkBC,WAAU,EACtD,KAAStD,IAAOgB,GACRiB,EAAQjB,EAAMhB,GACG,SAAViC,IACPhB,EAAWD,MAAMhB,GAAOiC,EAgBhC,OAbIkB,GAAUN,EAAQrD,iBAAkB,EAAQA,EAAcC,GAAeA,EAAPC,GACtEuB,EAAWsC,YAAcJ,EACzBlC,EAAWuC,YAAYN,GACvBR,SAASe,KAAKD,YAAYvC,GACtBkC,EAAQ1C,SACRkB,EAAKf,MAAQK,EAAWyC,YAAc9B,KAAKiB,QAAQJ,mBACnDd,EAAKd,OAASI,EAAW0C,aACzBhC,EAAKb,SAAWoC,EAAeU,UAAYhC,KAAKiB,QAAQJ,oBAExDd,EAAKf,MAAQ,GAAKe,EAAKd,OAAS,GAChCe,KAAKkB,OAAOd,IAAIgB,EAAUrB,GAE9BV,EAAW4C,WAAWC,YAAY7C,GAC3BU,GAEX0B,gBAAiB,WACb,GAAIU,GAASrB,SAASC,cAAc,MAEpC,OADAoB,GAAO/C,MAAM4B,QAAU,0DAA4DhB,KAAKiB,QAAQJ,mBAAqB,eAAiBb,KAAKiB,QAAQJ,mBAAqB,uBACjKsB,KAGf7C,EAAYC,QAAU,GAAID,GAI1BpC,MAAMG,WAAWH,MAAME,MACnBqC,SAAUA,EACVH,YAAaA,EACbH,YAAaA,EACbjB,UAAWA,EACXO,QAASA,EACTb,cAAeA,KAErBN,OAAOJ,MAAMK,SACC,kBAAVnB,SAAwBA,OAAOoB,IAAMpB,OAAS,SAAUqB,EAAIC,EAAIC,IACrEA,GAAMD,OAEV,SAAUvB,EAAGC,QACVA,OAAO,yBACH,eACA,cACA,qBACDD,IACL,YACG,SAAUE,GA+EP,QAAS+F,GAAWC,EAAOC,GAEvB,MADAD,GAAM/D,KAAK3B,MAAM0F,EAAOC,GACjBD,EAgCX,QAASE,GAAcC,GAgCnB,IAhCJ,GACQC,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEAC,EAAQ,GACLF,EAAI,GACHA,EAAIC,EAAO,GACXA,EAAOE,SAEPD,GAASE,GAASH,EAAO,IACzBD,GAAKC,EAAO,GAGpB,OAAOC,GAGX,QAASG,GAAQxC,GACb,aAAcA,KAAUyC,GAG5B,QAASC,KACL,MAAO,OAASC,KAKpB,QAASC,GAAIC,GACT,MAAOA,GAAUC,GAGrB,QAASC,GAAWC,GAApB,GAEa1E,GACD2E,EAEIC,EACAC,EALRC,EAAS,EACb,KAAS9E,EAAI,EAAGA,EAAI0E,EAAMxE,OAAQF,IAC1B2E,EAAOD,EAAMvE,WAAWH,GACxB,OAAS2E,GAAQA,GAAQ,QACrBC,EAAKD,EACLE,EAAMH,EAAMvE,aAAaH,GACxB+E,MAAMF,KACPF,EAAsB,MAAdC,EAAK,QAAiBC,EAAM,OAAS,QAGjDF,EAAO,IACPG,GAAUE,GAAaL,GAChBA,EAAO,MACdG,GAAUE,GAAa,IAAML,IAAS,GACtCG,GAAUE,GAAa,IAAa,GAAPL,IACtBA,EAAO,OACdG,GAAUE,GAAa,IAAML,IAAS,IACtCG,GAAUE,GAAa,IAAML,IAAS,EAAI,IAC1CG,GAAUE,GAAa,IAAa,GAAPL,IACtBA,EAAO,UACdG,GAAUE,GAAa,IAAML,IAAS,IACtCG,GAAUE,GAAa,IAAML,IAAS,GAAK,IAC3CG,GAAUE,GAAa,IAAML,IAAS,EAAI,IAC1CG,GAAUE,GAAa,IAAa,GAAPL,GAGrC,OAAOG,GAGX,QAASG,GAAaP,GAIlB,IAJJ,GAKYQ,GACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAVJV,EAAS,GACT9E,EAAI,EACJyF,EAAWhB,EAAWC,GACnB1E,EAAIyF,EAASvF,QACZgF,EAAOO,EAAStF,WAAWH,KAC3BmF,EAAOM,EAAStF,WAAWH,KAC3BoF,EAAOK,EAAStF,WAAWH,KAC3BqF,EAAOH,GAAQ,EACfI,GAAe,EAAPJ,IAAa,EAAIC,GAAQ,EACjCI,GAAe,GAAPJ,IAAc,EAAIC,GAAQ,EAClCI,EAAc,GAAPJ,EACPL,MAAMI,GACNI,EAAOC,EAAO,GACPT,MAAMK,KACbI,EAAO,IAEXV,EAASA,EAASY,GAAQC,OAAON,GAAQK,GAAQC,OAAOL,GAAQI,GAAQC,OAAOJ,GAAQG,GAAQC,OAAOH,EAE1G,OAAOV,GAEX,QAASc,GAAiBC,GACtB,MAAI3B,IAAS2B,EAAEC,OAASC,WAEhBD,EAAGD,EAAEC,EAAEC,SACPC,EAAGH,EAAEG,EAAED,WAIXD,EAAGD,EAAEI,OAASJ,EAAEK,SAAW,EAC3BF,EAAGH,EAAEM,OAASN,EAAEO,SAAW,GAGnC,QAASC,GAAaR,GAIlB,MAHU,UAANA,IACAA,MAEGA,EAAES,MAAQT,EAAES,MAAMC,aAAeV,EAAEW,OAE9C,QAASC,GAAcC,GACnB,MAAiB,KAAVA,GAA0B,OAAVA,GAA4B,SAAVA,GAA8B,gBAAVA,IAA4BxC,EAAQwC,GAErG,QAASC,GAAKC,GACV,GAAIA,EACA,MAAOA,GAAMA,EAAM1G,OAAS,GAGpC,QAAS2G,GAAWnF,EAAOoF,EAAKC,GAC5B,MAAOC,MAAKD,IAAIC,KAAKF,IAAIpF,EAAOqF,GAAMD,GAE1C,QAASG,GAAUC,EAAGC,GAIlB,QAASC,GAAMF,EAAGG,GAEd,IADA,GAAIC,MAAQC,EAAK,EAAGC,EAAK,EAAGxH,EAAI,EACzBuH,EAAKL,EAAEhH,QAAUsH,EAAKH,EAAEnH,QACvBiH,EAAID,EAAEK,GAAKF,EAAEG,KAAQ,EACrBF,EAAEtH,KAAOkH,EAAEK,KAEXD,EAAEtH,KAAOqH,EAAEG,IASnB,OANID,GAAKL,EAAEhH,QACPoH,EAAE3H,KAAK3B,MAAMsJ,EAAGJ,EAAEO,MAAMF,IAExBC,EAAKH,EAAEnH,QACPoH,EAAE3H,KAAK3B,MAAMsJ,EAAGD,EAAEI,MAAMD,IAErBF,EAlBX,MAAIJ,GAAEhH,OAAS,EACJgH,EAAEO,QAmBN,QAAS7H,GAAKsH,GAAd,GAICQ,GACAC,EACAC,CALJ,OAAIV,GAAEhH,QAAU,EACLgH,GAEPQ,EAAIV,KAAKa,MAAMX,EAAEhH,OAAS,GAC1ByH,EAAOT,EAAEO,MAAM,EAAGC,GAClBE,EAAQV,EAAEO,MAAMC,GACpBC,EAAO/H,EAAK+H,GACZC,EAAQhI,EAAKgI,GACNR,EAAMO,EAAMC,KACrBV,GAKN,QAASY,GAAIC,GACT,MAAOA,GAAUvD,GAErB,QAASwD,GAAIC,GACT,MAAIA,GACOjB,KAAKgB,IAAI,GAAIC,GAEjB,EAEX,QAASC,GAAMxG,EAAOyG,GAClB,GAAIC,GAAQJ,EAAIG,EAChB,OAAOnB,MAAKkB,MAAMxG,EAAQ0G,GAASA,EAEvC,QAASC,GAAe3G,EAAO4G,GAC3B,MAAOpE,GAAQxC,GAASA,EAAQ4G,EAEpC,QAASC,GAAWC,EAASC,GAA7B,GACaC,GACDC,EACKC,CAFb,KAASF,IAAaD,GAElB,IADIE,EAAaD,EAAUG,OAAOC,MAAM,KAC/BF,EAAM,EAAGA,EAAMD,EAAWzI,OAAQ0I,IACvCJ,EAAQO,iBAAiBJ,EAAWC,GAAMH,EAAOC,IAAY,GAIzE,QAASM,GAAcR,GAAvB,GACQ3F,GAAM2F,EAAQS,wBACdC,EAAkB/G,SAAS+G,eAC/B,QACIC,IAAKtG,EAAIsG,KAAOxK,OAAOyK,aAAeF,EAAgBG,YAAcH,EAAgBI,WAAa,GACjG3B,KAAM9E,EAAI8E,MAAQhJ,OAAO4K,aAAeL,EAAgBM,aAAeN,EAAgBO,YAAc,IAG7G,QAASC,GAAclB,EAASmB,GAAhC,GAIaf,GACDgB,EAJJC,KACApJ,EAAQ9B,OAAOmL,iBAAiBtB,OAChCuB,EAAcC,MAAMC,QAAQN,GAAUA,GAAUA,EACpD,KAASf,EAAM,EAAGA,EAAMmB,EAAY7J,OAAQ0I,IACpCgB,EAAQG,EAAYnB,GACxBiB,EAAOD,GAASnJ,EAAMmJ,EAE1B,OAAOC,GAEX,QAASK,GAAUxI,GACf,MAAIqD,OAAMrD,GACCA,EAEJA,EAAQ,KAEnB,QAASyI,GAAY3B,EAASpH,GAA9B,GAEYf,GACAC,EAQA8J,CAVR,OAAIhJ,IACIf,EAAQe,EAAKf,MACbC,EAASc,EAAKd,OACd4D,EAAQ7D,KACRmI,EAAQ/H,MAAMJ,MAAQ6J,EAAU7J,IAEhC6D,EAAQ5D,KACRkI,EAAQ/H,MAAMH,OAAS4J,EAAU5J,IANjCD,SASA+J,EAASV,EAAclB,GACvB,QACA,YAGAnI,MAAOgK,SAASD,EAAO/J,MAAO,IAC9BC,OAAQ+J,SAASD,EAAO9J,OAAQ,MAI5C,QAASgK,GAAa9B,EAASC,GAA/B,GAIa8B,GACD5B,EACKC,CALE,UAAXH,IACAA,KAEJ,KAAS8B,IAAQ9B,GAEb,IADIE,EAAa4B,EAAK1B,OAAOC,MAAM,KAC1BF,EAAM,EAAGA,EAAMD,EAAWzI,OAAQ0I,IACvCJ,EAAQgC,oBAAoB7B,EAAWC,GAAMH,EAAO8B,IAAO,GAIvE,QAASE,GAAejC,GAAxB,GACQkC,GAAMhB,EAAclB,GACpB,cACA,eAEAmC,EAAcD,EAAIC,YAClBC,EAAaF,EAAIE,UACrB,QACIzB,IAAK0B,WAAWD,GAChBjD,KAAMkD,WAAWF,IAoHzB,QAASG,GAAYC,GAArB,GAKQC,GAJAC,EAAQF,EAAaE,MAAMC,GAC/B,OAAc,QAAVD,GAAmC,IAAjBA,EAAM/K,OACjBiL,GAAOC,QAEdJ,EAAUC,EAAM,GAAGnC,MAAM,KAAKnH,IAAI,SAAUmE,GAC5C,MAAO+E,YAAW/E,KAEf,IAAKuF,SAASC,UAAUC,KAAKvN,MAAMmN,IAAS,MAAMK,OAAOR,MAEpE,QAASS,GAAgBjD,GACrB,GAAIkD,GAAY5B,iBAAiBtB,GAASkD,SAC1C,OAAkB,SAAdA,EACOP,GAAOC,OAEXN,EAAYY,GAEvB,QAASC,GAAanD,GAAtB,GAIQoD,GACAC,EAEIC,CANR,KAAKtD,EACD,MAAO2C,IAAOC,MAIlB,KAFIQ,EAASH,EAAgBjD,GACzBqD,EAASrD,EAAQuD,cACdF,GACCC,EAAeL,EAAgBI,GACnCD,EAASA,EAAOI,aAAaF,GAC7BD,EAASA,EAAOE,aAGpB,OADAH,GAAOvE,EAAIuE,EAAOK,EAAIL,EAAO/F,EAAI+F,EAAOpO,EAAI,EACrCoO,EAkHX,QAASM,GAAYtC,GACjB,MAAO,UAAUlI,GAKb,MAJIL,MAAKuI,KAAWlI,IAChBL,KAAKuI,GAASlI,EACdL,KAAK8K,kBAEF9K,MAGf,QAAS+K,GAAYxC,GACjB,MAAO,YACH,MAAOvI,MAAKuI,IAGpB,QAASyC,GAAgBC,EAAIC,GAA7B,GACavM,GACDuK,EACAiC,CAFR,KAASxM,EAAI,EAAGA,EAAIuM,EAAOrM,OAAQF,IAC3BuK,EAAOgC,EAAOvM,GACdwM,EAAcjC,EAAK5E,OAAO,GAAG8G,cAAgBlC,EAAKmC,UAAU,EAAGnC,EAAKrK,QACxEoM,EAAG,MAAQE,GAAeN,EAAY3B,GACtC+B,EAAG,MAAQE,GAAeJ,EAAY7B,GAkB9C,QAASoC,GAASC,GACd,MAAIA,IAAmD,kBAA1BA,GAAehB,OACjCgB,EAAehB,SAEnBgB,EA8YX,QAASC,GAAYjB,GACjB,MAAe,QAAXA,EACO,KAEPA,YAAkBkB,IACXlB,EAEJ,GAAIkB,IAAelB,GA8H9B,QAASmB,GAAqBC,EAAQC,EAAIC,EAAItB,GAA9C,GACQuB,GAAW,EACXC,EAAW,CAOf,OANIxB,KACAuB,EAAWnG,KAAKqG,MAAMzB,EAAOK,EAAIiB,EAAItB,EAAO1E,EAAI+F,GAC/B,IAAbrB,EAAOvE,IACP+F,EAAWpG,KAAKqG,MAAMzB,EAAO0B,EAAIJ,EAAItB,EAAOvE,EAAI4F,MAIpDnH,EAAGqH,EACHnH,EAAGoH,GAwJX,QAASG,GAAiBhD,GACtB,GAAIiD,GAAY,IAAMjD,CACtB,OAAO,UAAU7I,GACb,MAAIwC,GAAQxC,IACRL,KAAKoM,eAAeD,EAAW9L,GAC/BL,KAAK8K,iBACE9K,MAEJA,KAAKmM,IAGpB,QAASE,GAAwBpB,EAAIqB,GACjC,IAAK,GAAI3N,GAAI,EAAGA,EAAI2N,EAAMzN,OAAQF,IAC9BsM,EAAGqB,EAAM3N,IAAMuN,EAAiBI,EAAM3N,IA6D9C,QAAS4N,GAAQ1G,EAAGG,EAAGwG,GAInB,MAHkB,UAAdA,IACAA,EAAYC,IAE6B,IAAtC5F,EAAMlB,KAAK+G,IAAI7G,EAAIG,GAAIwG,GAElC,QAASG,GAAY9G,EAAGG,EAAGwG,GACvB,MAAO3G,GAAIG,GAAKuG,EAAQ1G,EAAGG,EAAGwG,GAElC,QAASI,GAAiBC,EAAIC,EAAIC,EAAIC,GAAtC,GACQC,GAAMH,EAAGrI,EAAIoI,EAAGpI,EAChByI,EAAMF,EAAGvI,EAAIsI,EAAGtI,EAChB0I,EAAML,EAAGnI,EAAIkI,EAAGlI,EAChByI,EAAMJ,EAAGrI,EAAIoI,EAAGpI,EAChB0I,EAAKR,EAAGpI,EAAIsI,EAAGtI,EACf6I,EAAKT,EAAGlI,EAAIoI,EAAGpI,EACfsH,EAAIgB,EAAMG,EAAMF,EAAMC,EACtBI,GAAKN,EAAMK,EAAKH,EAAME,GAAMpB,EAC5BuB,GAAKN,EAAMI,EAAKF,EAAMC,GAAMpB,CAChC,IAAIsB,GAAK,GAAKA,GAAK,GAAKC,GAAK,GAAKA,GAAK,EACnC,MAAO,IAAIC,IAAMZ,EAAGpI,EAAI+I,EAAIP,EAAKJ,EAAGlI,EAAI6I,EAAIL,GAmNpD,QAASO,GAAeC,EAAIC,EAAIhC,EAAIC,EAAIpH,EAAGE,GAA3C,GACQkJ,GAAMhH,GAAOpC,EAAIkJ,GAAM/B,EAAI,GAC3BkC,EAAMjH,GAAOlC,EAAIiJ,GAAM/B,EAAI,EAC/B,OAAOhF,GAAM5D,EAAI0C,KAAKqG,MAAM8B,EAAKD,KAErC,QAASE,GAAuBC,GAAhC,GAaQ9K,GACA+K,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAQAC,EAIAC,EACAC,EACAlB,EACAC,EACAkB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAOAC,EACAC,EApDAC,EAAKvB,EAAWuB,GAChBC,EAAKxB,EAAWwB,GAChBC,EAAKzB,EAAWyB,GAChBC,EAAK1B,EAAW0B,GAChB9D,EAAKoC,EAAWpC,GAChBC,EAAKmC,EAAWnC,GAChB8D,EAAW3B,EAAW2B,SACtBC,EAAQ5B,EAAW4B,MACnBC,EAAW7B,EAAW6B,QA8C1B,OA7CiB,UAAbA,IACAA,EAAW,GAEX3M,EAAUuD,EAAIoJ,GACd5B,EAAStI,KAAKkI,IAAI3K,GAClBgL,EAAOvI,KAAKmI,IAAI5K,GAChBiL,EAAKF,GAAUsB,EAAKE,GAAM,EAAIvB,GAAQsB,EAAKE,GAAM,EACjDtB,GAAMF,GAAQqB,EAAKE,GAAM,EAAIxB,GAAUuB,EAAKE,GAAM,EAClDrB,EAAOsB,IAAaC,EAAQ,KAC5BtB,EAAM3I,KAAKgB,IAAIwH,EAAI,GACnBI,EAAM5I,KAAKgB,IAAIyH,EAAI,GACnBI,EAAM7I,KAAKgB,IAAIiF,EAAI,GACnB6C,EAAM9I,KAAKgB,IAAIkF,EAAI,GACnB6C,EAAQJ,EAAME,EAAMD,EAAME,EAC1BC,EAAQ,IACRA,EAAQ/I,KAAKmK,KAAKxB,EAAME,EAAMD,EAAME,GACpC7C,EAAK8C,EAAQ9C,EACb4C,EAAM7I,KAAKgB,IAAIiF,EAAI,GACnBC,EAAK6C,EAAQ7C,EACb4C,EAAM9I,KAAKgB,IAAIkF,EAAI,IAEnB8C,EAASN,EAAO1I,KAAKmK,MAAMtB,EAAMC,EAAMD,EAAMD,EAAME,EAAMH,IAAQE,EAAMD,EAAME,EAAMH,IACnF5K,MAAMiL,KACNA,EAAS,GAETC,EAAMD,GAAU/C,EAAKwC,GAAMvC,EAC3BgD,GAAOF,GAAU9C,EAAKsC,GAAMvC,EAC5B+B,EAAKM,EAASW,EAAMV,EAAOW,GAAOU,EAAKE,GAAM,EAC7C7B,EAAKM,EAAOU,EAAMX,EAASY,GAAOW,EAAKE,GAAM,EAC7CZ,GAAMX,EAAKS,GAAOhD,EAClBmD,GAAMX,EAAKS,GAAOhD,EAClBmD,IAAOb,EAAKS,GAAOhD,EACnBqD,IAAOb,EAAKS,GAAOhD,EACnBqD,GAAcH,GAAM,EAAI,MAAU9L,EAAI0C,KAAKoK,KAAKjB,EAAKnJ,KAAKmK,KAAKhB,EAAKA,EAAKC,EAAKA,KAC9EI,EAActI,GAAOiI,EAAKE,EAAKD,EAAKE,IAAOtJ,KAAKmK,KAAKhB,EAAKA,EAAKC,EAAKA,GAAMpJ,KAAKmK,KAAKd,EAAKA,EAAKC,EAAKA,IAAM,IACzGG,GAASN,EAAKG,EAAKF,EAAKC,GAAM,EAAI,MAAU/L,EAAI0C,KAAKoK,KAAKZ,KACzDS,GAASR,EAAQ,IAClBA,GAAS,KAETQ,GAASR,EAAQ,IACjBA,GAAS,KAETC,EAAWH,EAAaE,EACxBE,EAAeD,GAAY,EAAI,KACnCA,EAAW1J,KAAK+G,IAAI2C,GAAY,IAAMC,GAElC3D,OAAQ,GAAI8B,IAAME,EAAIC,GACtBsB,WAAYA,EACZG,SAAUA,EACVW,QAASpE,EACTqE,QAASpE,EACTqE,UAAWL,GAGnB,QAASM,GAAef,EAAOgB,GAE3B,IADA,GAAIlB,GAAaE,EACVF,EAAakB,GAChBlB,GAAc,EAElB,OAAOA,GA4HX,QAASmB,GAAgBC,EAAUC,EAAcC,GAAjD,GACQpB,GAAQnM,EAAI0C,KAAKqG,MAAMuE,EAAa5L,EAAI2L,EAAS3L,EAAG4L,EAAa9L,EAAI6L,EAAS7L,IAC9EgM,EAAeD,EAAME,cAAclF,IAAcmF,QAAQvB,EAAOkB,GACpE,OAAOG,GAAahM,EAAI6L,EAAS7L,EAErC,QAASmM,GAAiBpD,EAAGjF,EAAOsI,GAChC,GAAIC,GAAK,EAAItD,CACb,OAAO7H,MAAKgB,IAAImK,EAAI,GAAKD,EAAO,GAAGtI,GAAS,EAAI5C,KAAKgB,IAAImK,EAAI,GAAKtD,EAAIqD,EAAO,GAAGtI,GAAS,EAAI5C,KAAKgB,IAAI6G,EAAG,GAAKsD,EAAKD,EAAO,GAAGtI,GAAS5C,KAAKgB,IAAI6G,EAAG,GAAKqD,EAAO,GAAGtI,GAErK,QAASwI,GAAkBF,EAAQtI,GAC/B,QACKsI,EAAO,GAAGtI,GAAS,EAAIsI,EAAO,GAAGtI,GAAS,EAAIsI,EAAO,GAAGtI,GAASsI,EAAO,GAAGtI,GAC5E,GAAKsI,EAAO,GAAGtI,GAAS,EAAIsI,EAAO,GAAGtI,GAASsI,EAAO,GAAGtI,IACzD,IAAMsI,EAAO,GAAGtI,GAASsI,EAAO,GAAGtI,IACnCsI,EAAO,GAAGtI,IAiDlB,QAASyI,GAAWvM,GAChB,MAAOA,GAAI,KAAS,EAExB,QAASwM,GAAuBpL,EAAGG,EAAG4E,GAClC,GAAIsG,GAAavL,KAAKmK,KAAKnK,KAAKgB,IAAIX,EAAG,GAAK,EAAIH,EAAI+E,EACpD,UACM5E,EAAIkL,IAAe,EAAIrL,KACvBG,EAAIkL,IAAe,EAAIrL,IAGjC,QAASsL,GAAmBtL,EAAGG,EAAG4E,EAAGqB,GAArC,GAIQrF,GACAwK,EACAC,EACA1S,EACA2S,EACA/B,EAAIE,EAAID,EAAIE,EAAI6B,EAAIC,EAAIC,EAexBjJ,CAvBJ,OAAU,KAAN3C,EACOoL,EAAuBjL,EAAG4E,EAAGqB,IAEpCrF,GAAK,EAAIf,EAAI+E,EAAIjF,KAAKgB,IAAIX,EAAG,KAAO,EAAIL,KAAKgB,IAAId,EAAG,IACpDuL,GAAK,EAAIzL,KAAKgB,IAAIX,EAAG,GAAK,EAAIH,EAAIG,EAAI4E,EAAI,GAAKjF,KAAKgB,IAAId,EAAG,GAAKoG,IAAM,GAAKtG,KAAKgB,IAAId,EAAG,IACvFwL,EAAI1L,KAAKgB,IAAIC,EAAI,EAAG,GAAKjB,KAAKgB,IAAIyK,EAAI,EAAG,GACzCzS,EAAI,GAAI+S,IAAc,EAAG,GACzBJ,GAAOtL,GAAK,EAAIH,GAEhBwL,EAAI,GACJ9B,EAAK,GAAImC,KAAeN,EAAI,EAAGzL,KAAKmK,MAAMuB,IAAIM,QAAQ,GACtDlC,EAAK,GAAIiC,KAAeN,EAAI,IAAIzL,KAAKmK,MAAMuB,KAAIM,QAAQ,KAEvDpC,GAAM6B,EAAI,EAAIzL,KAAKmK,KAAKuB,GACxB9B,EAAK,GAAImC,IAAcV,EAAWzB,GAAM5J,KAAKgB,IAAIhB,KAAK+G,IAAI6C,GAAK,EAAI,IACnEE,GAAM2B,EAAI,EAAIzL,KAAKmK,KAAKuB,GACxB5B,EAAK,GAAIiC,IAAcV,EAAWvB,GAAM9J,KAAKgB,IAAIhB,KAAK+G,IAAI+C,GAAK,EAAI,KAEvED,EAAKD,EAAGqC,IAAInC,GACZ+B,EAAKjC,EAAGqC,IAAInC,GAAIoC,sBAChBJ,EAAKlC,EAAGqC,IAAInC,EAAGqC,UAAUD,iBAAiBlM,KAAKmK,KAAK,GAAK,GACzDJ,EAAK8B,EAAGI,IAAIjT,EAAEoT,SAASN,IACvBF,EAAKC,EAAGI,IAAIjT,EAAEmT,SAASC,SAASN,IAC5BjJ,KACAgH,EAAGwC,UACHxJ,EAAOlK,KAAKuI,EAAM2I,EAAGyC,KAAOX,EAAK7E,KAEjCiD,EAAGsC,UACHxJ,EAAOlK,KAAKuI,EAAM6I,EAAGuC,KAAOX,EAAK7E,KAEjC8E,EAAGS,UACHxJ,EAAOlK,KAAKuI,EAAM0K,EAAGU,KAAOX,EAAK7E,KAE9BjE,GAEX,QAAS0J,GAAgBrB,EAAQL,EAAOjI,EAAO4J,EAAWC,GAA1D,GAGQC,GACK9K,EAHL+K,EAAavB,EAAkBF,EAAQsB,GACvCI,EAAQpB,EAAmBmB,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAK9B,EAAM2B,GAElG,KAAS5K,EAAM,EAAGA,EAAMgL,EAAM1T,OAAQ0I,IAClC,GAAI,GAAKgL,EAAMhL,IAAQgL,EAAMhL,IAAQ,IACjC8K,EAAezB,EAAiB2B,EAAMhL,GAAMgB,EAAOsI,GAC/ClL,KAAK+G,IAAI2F,EAAe7B,EAAMjI,KAAW6J,GACzC,OAAO,EAKvB,QAASI,GAAwB3B,EAAQL,EAAOiC,GAAhD,GAGQC,GAAiBC,EAEZhU,EAJL2T,EAAavB,EAAkBF,EAAQ,KACvC0B,EAAQpB,EAAmBmB,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAK9B,EAAM/L,GAE9FmO,EAAQ,CACZ,KAASjU,EAAI,EAAGA,EAAI4T,EAAM1T,OAAQF,IAC9B+T,EAAkB9B,EAAiB2B,EAAM5T,GAAI,IAAKkS,GAClD8B,EAAgBpG,EAAQmG,EAAiBlC,EAAM7L,IAAM+N,EAAkBlC,EAAM7L,EACzEgO,KAAgC,IAAbJ,EAAM5T,IAAyB,IAAb4T,EAAM5T,KAAa8T,EAAKI,cAAcpO,EAAI+L,EAAM/L,GAAK,EAAI8N,EAAM5T,IAAM4T,EAAM5T,GAAK,IACrHiU,GAGR,OAAOA,GAEX,QAASE,GAAuBjN,EAAGG,EAAGwK,GAAtC,GACQuC,GAEIC,EACAC,EACAC,EACAC,EACAC,CAOR,OAZIvN,GAAEpB,IAAMuB,EAAEvB,IACNuO,EAAOrN,KAAKF,IAAII,EAAEpB,EAAGuB,EAAEvB,GACvBwO,EAAOtN,KAAKD,IAAIG,EAAEpB,EAAGuB,EAAEvB,GACvByO,EAAOvN,KAAKF,IAAII,EAAElB,EAAGqB,EAAErB,GACvBwO,EAAOxN,KAAKD,IAAIG,EAAElB,EAAGqB,EAAErB,GACvByO,EAAUJ,GAAQxC,EAAM/L,GAAK+L,EAAM/L,EAAIwO,EAEvCF,EADAG,IAASC,EACI3C,EAAM7L,GAAKuO,GAAQE,EAEnBA,IAAYD,EAAOD,KAAUrN,EAAEpB,EAAIuB,EAAEvB,IAAMoB,EAAElB,EAAIqB,EAAErB,GAAK,EAAI6L,EAAM/L,EAAIuO,EAAOC,EAAOzC,EAAM/L,IAAMwO,EAAOD,GAAQE,EAAO1C,EAAM7L,GAAK,GAG/IoO,EAAa,EAAI,EAE5B,QAASM,GAAcnK,GACnB,GAAIiD,GAAY,IAAMjD,CACtB,OAAO,UAAU7I,GACb,MAAIwC,GAAQxC,IACRL,KAAKoM,eAAeD,EAAWsB,GAAM6F,OAAOjT,IAC5CL,KAAK8K,iBACE9K,MAEJA,KAAKmM,IAGpB,QAASoH,GAAqBtI,EAAIqB,GAC9B,IAAK,GAAI3N,GAAI,EAAGA,EAAI2N,EAAMzN,OAAQF,IAC9BsM,EAAGqB,EAAM3N,IAAM0U,EAAc/G,EAAM3N,IAgL3C,QAAS6U,GAAYC,GAArB,GAIa9U,GAHLE,EAAS4U,EAAI5U,OACb4G,EAAMiO,GACNhO,EAAMiO,EACV,KAAShV,EAAI,EAAGA,EAAIE,EAAQF,IACxB+G,EAAMC,KAAKD,IAAIA,EAAK+N,EAAI9U,IACxB8G,EAAME,KAAKF,IAAIA,EAAKgO,EAAI9U,GAE5B,QACI8G,IAAKA,EACLC,IAAKA,GAqIb,QAASkO,IAAiB5F,EAAY6F,EAAYxT,GAAlD,GAEa1B,GADLmV,EAAiBD,EAAa,EAAI,CACtC,KAASlV,EAAI,EAAGA,EAAIqP,EAAWnP,OAAQF,GAAK,EACxCqP,EAAW+F,OAAOpV,EAAImV,EAAgB,EAAGzT,GAGjD,QAAS2T,IAAgBxD,EAAO7E,GAC5B,GAAI6E,GAAS7E,EACT,MAAOA,GAAOsI,UAAU,GAAGC,WAAW1D,EAAM/L,GAAI+L,EAAM7L,GAI9D,QAASwP,IAA8BC,EAAU7D,EAAcD,GAC3D,GAAI+D,GAAc9D,EAAa+D,QAAQC,MAAM,EAAI,EACjD,QACIC,WAAYH,EAAYC,QAAQG,cAAcL,EAASH,UAAUS,KACjEC,UAAWN,EAAYI,cAAcnE,EAAS2D,UAAUS,MAOhE,QAASE,IAAgBlW,GACrB,GAAIsP,KAIJ,OAHAtP,GAAIX,QAAQ8W,GAAa,SAAUjL,EAAOkL,GACtC9G,EAAW1P,KAAKkL,WAAWsL,MAExB9G,EAEX,QAAS+G,IAAUC,EAActW,GAAjC,GAEQuW,GADAb,EAAW,GAAI3G,GAmCnB,OAjCA/O,GAAIX,QAAQmX,GAAe,SAAUtL,EAAOzC,EAASgO,EAAQC,GAAlC,GACnBC,GAAUlO,EAAQmO,cAClBC,EAAaF,IAAYlO,EACzB6G,EAAa4G,GAAgBO,EAAO3N,OAexC,IAdI6N,IAAYG,KACRD,GACAnB,EAAS3P,GAAKuJ,EAAW,GACzBoG,EAASzP,GAAKqJ,EAAW,KAEzBoG,EAAS3P,EAAIuJ,EAAW,GACxBoG,EAASzP,EAAIqJ,EAAW,IAE5BgH,EAAaS,OAAOrB,EAAS3P,EAAG2P,EAASzP,GACrCqJ,EAAWnP,OAAS,IACpBwW,EAAU,IACVrH,EAAW+F,OAAO,EAAG,KAGzB2B,GAASL,GACTK,GAASL,GAASL,GACdhH,WAAYA,EACZoG,SAAUA,EACVmB,WAAYA,EACZN,gBAAiBA,IAEjBG,GAAaA,EAAUE,gBAAkBK,IACzCX,EAAaY,YAEd,IAAIP,IAAYG,GACnB,KAAUK,OAAM,sDAAwDR,EAE5EJ,GAAkBI,IAEfL,EAEX,QAASc,IAAoBC,EAAUC,EAAgBzK,GAAvD,GACQ0K,GACKtX,EACDwI,EAEI+O,CAHZ,KAASvX,EAAI,EAAGA,EAAIoX,EAASlX,OAAQF,IAC7BwI,EAAU4O,EAASpX,GACnBwI,EAAQgP,YACJD,EAAqBF,EAAiB7O,EAAQsL,KAAKlH,GAAkBpE,EAAQiP,UAC7EF,IAEID,EADAA,EACcI,GAAKC,MAAML,EAAaC,GAExBA,GAK9B,OAAOD,GAEX,QAASM,IAA2BR,EAAUxK,GAA9C,GACQ0K,GACKtX,EACDwI,EAEI+O,CAHZ,KAASvX,EAAI,EAAGA,EAAIoX,EAASlX,OAAQF,IAC7BwI,EAAU4O,EAASpX,GACnBwI,EAAQgP,YACJD,EAAqB/O,EAAQqP,YAAYjL,GACzC2K,IAEID,EADAA,EACcI,GAAKC,MAAML,EAAaC,GAExBA,GAK9B,OAAOD,GA6jBX,QAASQ,IAAiBjG,EAAOiC,EAAMtL,GAAvC,GACQuP,GAAYvP,EAAQkD,aAAemB,IACnCjB,EAASmM,EAAUnM,QACvBA,GAAO/F,GAAKgM,EAAM/L,EAAIgO,EAAKkE,OAAOlS,EAClC8F,EAAOpO,GAAKqU,EAAM7L,EAAI8N,EAAKkE,OAAOhS,EAClC+R,EAAUnM,OAAOA,GACjBpD,EAAQkD,UAAUqM,GAEtB,QAASE,IAAW7W,EAAM8W,EAAMC,EAAOC,EAAMC,GACzC,GAAI5G,EAQJ,OANIA,GADU,UAAV0G,EACQD,EAAKF,OAAOI,GACH,QAAVD,EACCD,EAAKF,OAAOI,GAAQF,EAAK9W,KAAKiX,GAAajX,EAE3C8W,EAAKF,OAAOI,IAASF,EAAK9W,KAAKiX,GAAajX,GAAQ,EAIpE,QAASkX,IAAkBlX,EAAM8W,EAAMC,EAAOC,EAAMC,GAChD,GAAI5G,EAQJ,OANIA,GADU,UAAV0G,EACQD,EAAKF,OAAOI,GAAQF,EAAK9W,KAAKiX,GAAajX,EAClC,QAAV+W,EACCD,EAAKF,OAAOI,GAEZF,EAAKF,OAAOI,IAASF,EAAK9W,KAAKiX,GAAajX,GAAQ,EAwNpE,QAASmX,IAAcnB,EAAUc,EAAMM,EAAWJ,EAAMC,GAAxD,GACazP,GACDkL,EAEIjC,CAHZ,KAASjJ,EAAM,EAAGA,EAAMwO,EAASlX,OAAQ0I,IACjCkL,EAAOsD,EAASxO,GAAKiP,cACrB/D,IACIjC,EAAQiC,EAAKkE,OAAOrC,QACxB9D,EAAMuG,GAAQH,GAAWnE,EAAK1S,KAAKiX,GAAYH,EAAMM,GAAa,QAASJ,EAAMC,GACjFP,GAAiBjG,EAAOiC,EAAMsD,EAASxO,KAInD,QAASuP,IAAMf,EAAUc,EAAMM,GAC3BD,GAAcnB,EAAUc,EAAMM,EAAW,IAAK,SAElD,QAASC,IAAOrB,EAAUc,EAAMM,GAC5BD,GAAcnB,EAAUc,EAAMM,EAAW,IAAK,UAElD,QAASE,IAActB,EAAUuB,EAAWC,EAAWP,GAAvD,GAEYL,GACAa,EACKjQ,EACDJ,EACAsL,CALZ,IAAIsD,EAASlX,OAAS,EAGlB,IAFI8X,EAAS,GAAIlJ,IACb+J,EAAezB,EAAS,GAAGtD,KACtBlL,EAAM,EAAGA,EAAMwO,EAASlX,OAAQ0I,IACjCJ,EAAU4O,EAASxO,GAAKJ,QACxBsL,EAAOsD,EAASxO,GAAKkL,KACzBkE,EAAOW,GAAaE,EAAab,OAAOW,GAAaE,EAAazX,KAAKiX,GACvEL,EAAOY,GAAa9E,EAAKkE,OAAOY,GAChCd,GAAiBE,EAAQlE,EAAMtL,GAC/BsL,EAAKkE,OAAOW,GAAaX,EAAOW,GAChCE,EAAe/E,EAI3B,QAASgF,IAAoB1B,GAA7B,GAEaxO,GACDJ,EACAsL,EAHJ4E,IACJ,KAAS9P,EAAM,EAAGA,EAAMwO,EAASlX,OAAQ0I,IACjCJ,EAAU4O,EAASxO,GACnBkL,EAAOtL,EAAQqP,cACf/D,GACA4E,EAAc/Y,MACV6I,QAASA,EACTsL,KAAMA,GAIlB,OAAO4E,GAEX,QAASK,IAAM3B,GACXsB,GAAcI,GAAoB1B,GAAW,IAAK,IAAK,SAE3D,QAAS4B,IAAO5B,GACZsB,GAAcI,GAAoB1B,GAAW,IAAK,IAAK,UAE3D,QAAS6B,IAAU7B,EAAUc,EAAMG,GAAnC,GAKQ7P,GAASsL,EAOJlL,EAIGxH,EAfR8X,EAAUhB,EAAK9W,KAAKiX,GACpBc,KACAJ,KACAK,EAAY,EAEZC,EAAoB,WACpBN,EAAMpZ,MACF6I,QAASA,EACTsL,KAAMA,IAGd,KAASlL,EAAM,EAAGA,EAAMwO,EAASlX,OAAQ0I,IACrCJ,EAAU4O,EAASxO,GACnBkL,EAAOtL,EAAQqP,cACX/D,IACI1S,EAAO0S,EAAK1S,KAAKiX,GACjBe,EAAYhY,EAAO8X,EACfH,EAAM7Y,QACNiZ,EAAOxZ,KAAKoZ,GACZA,KACAM,IACAD,EAAYhY,IAEZiY,IACAF,EAAOxZ,KAAKoZ,GACZA,KACAK,EAAY,IAGhBC,IACAD,GAAahY,GAOzB,OAHI2X,GAAM7Y,QACNiZ,EAAOxZ,KAAKoZ,GAETI,EAEX,QAASG,IAAalC,EAAUc,EAAME,EAAMQ,EAAWP,GAAvD,GAIazP,GACDmQ,EACAQ,EAMKC,EAXTL,EAASF,GAAU7B,EAAUc,EAAMG,GACnCL,EAASE,EAAKF,OAAOrC,QACrB9L,IACJ,KAASjB,EAAM,EAAGA,EAAMuQ,EAAOjZ,OAAQ0I,IAQnC,IAPImQ,EAAQI,EAAOvQ,GACf2Q,EAAeR,EAAM,GACzBf,EAAOY,GAAaW,EAAazF,KAAKkE,OAAOY,GAC7Cd,GAAiBE,EAAQuB,EAAazF,KAAMyF,EAAa/Q,SACzD+Q,EAAazF,KAAKkE,OAAOI,GAAQJ,EAAOI,GACxCM,GAAcK,EAAOX,EAAMQ,EAAWP,GACtCxO,EAAOlK,SACE6Z,EAAa,EAAGA,EAAaT,EAAM7Y,OAAQsZ,IAChD3P,EAAOjB,GAAKjJ,KAAKoZ,EAAMS,GAAYhR,QAG3C,OAAOqB,GAEX,QAAS4P,IAAKrC,EAAUc,GACpB,MAAOoB,IAAalC,EAAUc,EAAM,IAAK,IAAK,SAElD,QAASwB,IAAMtC,EAAUc,GACrB,MAAOoB,IAAalC,EAAUc,EAAM,IAAK,IAAK,UAElD,QAASyB,IAAInR,EAAS0P,GAAtB,GAGY/N,GACAyP,EAEIhE,EACAlK,EANRoI,EAAOtL,EAAQqP,aACf/D,KACI3J,EAAc2J,EAAK1S,KACnBwY,EAAW1B,EAAK9W,MAChBwY,EAASvZ,MAAQ8J,EAAY9J,OAASuZ,EAAStZ,OAAS6J,EAAY7J,UAChEsV,EAAQ5O,KAAKF,IAAI8S,EAASvZ,MAAQ8J,EAAY9J,MAAOuZ,EAAStZ,OAAS6J,EAAY7J,QACnFoL,EAAYlD,EAAQkD,aAAemB,IACvCnB,EAAUkK,MAAMA,EAAOA,GACvBpN,EAAQkD,UAAUA,KAkB9B,QAASmO,IAAgBtP,GACrB,MAAO,UAAU7I,GACb,MAAIwC,GAAQxC,IACRL,KAAKiB,QAAQwX,IAAIvP,EAAM7I,GAChBL,MAEJA,KAAKiB,QAAQL,IAAIsI,IAGhC,QAASwP,IAAuBzN,EAAIqB,GAChC,IAAK,GAAI3N,GAAI,EAAGA,EAAI2N,EAAMzN,OAAQF,IAC9BsM,EAAGqB,EAAM3N,IAAM6Z,GAAgBlM,EAAM3N,IAqK7C,QAASga,IAAMvE,GACX,MAAO,GAAMzO,KAAKkI,IAAIuG,EAAWzO,KAAKiT,IAAM,EAEhD,QAASC,IAAOzE,GACZ,MAAOA,GAEX,QAAS0E,IAAe1E,EAAU2E,EAAM3I,EAAO4I,GAC3C,GAAIzL,GAAI,QAAS3G,EAAI,EAAGf,EAAImT,CAC5B,OAAiB,KAAb5E,EACOhE,EAEM,IAAbgE,EACOhE,EAAQ4I,GAEdpS,IACDA,EAAI,IAEJf,EAAIF,KAAK+G,IAAIsM,IACbnT,EAAImT,EACJzL,EAAI3G,EAAI,GAER2G,EAAI3G,GAAK,EAAIjB,KAAKiT,IAAMjT,KAAKsT,KAAKD,EAAOnT,GAEtCA,EAAIF,KAAKgB,IAAI,MAASyN,GAAYzO,KAAKmI,MAAYsG,EAAY7G,IAAM,IAAM5H,KAAKiT,IAAMhS,GAAKoS,EAAO5I,GAkW7G,QAAS8I,IAAWhQ,EAAM7I,GACtB,MAAOwC,GAAQxC,IAAoB,OAAVA,EAAiB,IAAM6I,EAAO,KAAO7I,EAAQ,KAAO,GAEjF,QAAS8Y,IAAcC,GAAvB,GAEaza,GADL8E,EAAS,EACb,KAAS9E,EAAI,EAAGA,EAAIya,EAAMva,OAAQF,IAC9B8E,GAAUyV,GAAWE,EAAMza,GAAG,GAAIya,EAAMza,GAAG,GAE/C,OAAO8E,GAEX,QAAS4V,IAAYD,GAArB,GAEaza,GACD0B,EAFJoD,EAAS,EACb,KAAS9E,EAAI,EAAGA,EAAIya,EAAMva,OAAQF,IAC1B0B,EAAQ+Y,EAAMza,GAAG,GACjBkE,EAAQxC,KACRoD,GAAU2V,EAAMza,GAAG,GAAK,IAAM0B,EAAQ,IAG9C,IAAe,KAAXoD,EACA,MAAOA,GA8Bf,QAAS6V,IAAaC,EAAMlZ,GACxB,MAAgB,SAATkZ,GAA4B,SAATA,KAAqBlZ,GAA4B,aAAnBA,EAAMmZ,UAElE,QAASC,MAAT,GAKYC,GAJJC,EAAO7Y,SAAS8Y,qBAAqB,QAAQ,GAC7CC,EAAO/Y,SAAS4D,SAASmV,KACzBC,EAAM,EAQV,OAPIH,MAAUI,QAAsBC,OAC5BN,EAAYG,EAAKI,QAAQ,KACzBP,SACAG,EAAOA,EAAKxO,UAAU,EAAGqO,IAE7BI,EAAMD,GAEHC,EA88BX,QAASI,IAAerc,GACpB,IAAKA,GAAwB,gBAATA,KAAsBsc,GAAaC,KAAKvc,GACxD,MAAOA,EAEX,IAAIsJ,GAAU+S,GAAeG,QAE7B,OADAF,IAAaG,UAAY,EAClBzc,EAAKE,QAAQoc,GAAc,SAAUvQ,GAExC,MADAzC,GAAQoT,UAAY3Q,EACbzC,EAAQxF,aAAewF,EAAQqT,YA6E9C,QAASC,IAActT,GAAvB,GACQuT,GAMIpU,EACAwB,EACA1I,CAPR,KACIsb,EAAMvT,EAAQwT,aAAexT,EAAQwT,eAAiB,KACxD,MAAOnW,IAELkW,IACIpU,GAAQoU,EAAIlW,EAAI,EAChBsD,GAAO4S,EAAIve,EAAI,EACfiD,EAAQ+H,EAAQ/H,MACP,IAATkH,GAAsB,IAARwB,IACd1I,EAAMkH,KAAOA,EAAO,KACpBlH,EAAM0I,IAAMA,EAAM,OAmF9B,QAAS8S,IAAWC,EAAKC,GAAzB,GAKQC,GACAC,EAEKrc,EAGDsc,EACAC,EACAvG,EAZJwG,EAAWL,EAAKK,QACpB,IAAwB,IAApBA,EAAStc,OAAb,CAMA,IAHIkc,EAAUI,EAAS,GACnBH,EAASD,EAAQC,SACrBH,EAAIpF,OAAOuF,EAAOvW,EAAGuW,EAAOrW,GACnBhG,EAAI,EAAGA,EAAIwc,EAAStc,OAAQF,IACjCoc,EAAUI,EAASxc,GACnBqc,EAASD,EAAQC,SACbC,EAAUE,EAASxc,EAAI,GACvBuc,EAAUD,EAAQzG,aAClBG,EAAYoG,EAAQpG,YACpBuG,GAAWvG,EACXkG,EAAIO,cAAcF,EAAQzW,EAAGyW,EAAQvW,EAAGgQ,EAAUlQ,EAAGkQ,EAAUhQ,EAAGqW,EAAOvW,EAAGuW,EAAOrW,GAEnFkW,EAAIQ,OAAOL,EAAOvW,EAAGuW,EAAOrW,EAGhCmW,GAAK7Z,QAAQqa,QACbT,EAAIzF,aAueZ,QAASmG,IAAehM,EAAIE,GACxB,MAAIF,GAAGiM,QAAU/L,EAAG+L,QACT,EAEPjM,EAAGiM,QAAU/L,EAAG+L,WAGb,EAsDX,QAASC,IAAiBC,EAAUC,GAApC,GACapU,GACDqU,EACAvW,CAFR,KAASkC,EAAM,EAAGA,EAAMoU,EAAM9c,OAAQ0I,IAC9BqU,EAAOD,EAAMpU,GACblC,EAAQnI,MAAM2e,WAAWD,EAAKvW,SAClCA,EAAMQ,GAAK+V,EAAKE,UAChBJ,EAASK,aAAaH,EAAKI,SAAU3W,EAAM4W,aAkhBnD,QAASC,IAAYC,GAArB,GAKYxF,GACAyF,EAMJC,EAXAC,EAAO,GAAIC,KAAWC,cAAc,IACpC/J,EAAO0J,EAAM3F,cACbiG,EAAYN,CAWhB,OAVI1J,KACIkE,EAASlE,EAAKiK,YACdN,EAAa,GAAIO,IACrBP,EAAW/R,UAAUmB,IAAc0I,WAAWyC,EAAOlS,GAAIkS,EAAOhS,IAChEyX,EAAWQ,SAASte,KAAK6d,GACzBM,EAAYL,GAEhBE,EAAKO,MAAMJ,IACPJ,EAAM,qCAA0CS,GAAS,8DAAqER,EAAKS,SAAW,SAClJT,EAAKU,UACEX,EAkCX,QAASY,IAAYd,EAAOlb,GAA5B,GASY0V,GAIA5W,EAIJmd,EACAC,EACA/d,EAKAge,EAGAC,EACAL,EA3BAM,GACAte,MAAO,QACPC,OAAQ,QACRse,KAAM,aAENnB,EAAaD,EACb1J,EAAO0J,EAAM3F,aA0BjB,OAzBI/D,KACIkE,EAASlE,EAAKiK,YAClBN,EAAa,GAAIO,IACjBP,EAAW/R,UAAUmB,IAAc0I,WAAWyC,EAAOlS,GAAIkS,EAAOhS,IAChEyX,EAAWQ,SAASte,KAAK6d,GACrBpc,EAAO0S,EAAK+K,UAChBF,EAASte,MAAQe,EAAKf,MAAQ,KAC9Bse,EAASre,OAASc,EAAKd,OAAS,MAEhCie,EAAiB7gB,EAAEwD,OAAOyd,EAAUrc,GACpCkc,EAAYrc,SAASC,cAAc,OACnC3B,EAAQ+d,EAAU/d,MACtBA,EAAMqe,QAAU,OAChBre,EAAMJ,MAAQke,EAAele,MAC7BI,EAAMH,OAASie,EAAeje,OAC9B6B,SAASe,KAAKD,YAAYub,GACtBC,EAAU,GAAIM,IAAUP,EAAWD,GACvCE,EAAQO,kBACRP,EAAQQ,KAAKxB,GACTiB,EAAUD,EAAQS,QAClBb,EAAU,WACVI,EAAQJ,UACRlc,SAASe,KAAKK,YAAYib,IAE9BE,EAAQS,KAAKd,EAASA,GACfK,EAEX,QAASU,IAAU5B,EAAOlb,GACtB,GAAIob,GAAMH,GAAYC,EAItB,OAHKlb,IAAYA,EAAQ+c,MACrB3B,EAAM,6BAA+BzY,EAAayY,IAE/C/f,KAAgB2hB,QAAQ5B,GAGnC,QAAS6B,IAAUC,GACf,MAAOxV,OAAMsB,UAAU7D,MAAMgY,KAAKD,GA0BtC,QAASE,IAASC,EAAIC,GACdD,EAAGE,UACHF,EAAGE,UAAU5M,IAAI2M,GAEjBD,EAAGG,WAAa,IAAMF,EAG9B,QAASG,IAAYJ,EAAIC,GACjBD,EAAGE,UACHF,EAAGE,UAAUG,OAAOJ,GAEpBD,EAAGG,UAAYH,EAAGG,UAAUhX,MAAM,OAAOmX,OAAO,SAAU/Y,EAAGgZ,GAIzD,MAHIA,IAAQN,GACR1Y,EAAEvH,KAAKugB,GAEJhZ,OACJrH,KAAK,KAGpB,QAASsgB,IAAOR,EAAIhW,GAChByW,OAAOC,KAAK1W,GAAQ2W,QAAQ,SAAU7gB,GAClCkgB,EAAGlf,MAAMhB,GAAOkK,EAAOlK,KA4B/B,QAAS8gB,IAAQZ,EAAIa,GACjB,GAAIb,EAAGY,QACH,MAAOZ,GAAGY,QAAQC,EAEtB,MAAOb,IAAO,iCAAiClE,KAAYkE,EAAPxgB,KAAa,CAC7D,GAAmB,GAAfwgB,EAAG9E,UAAiB4F,GAAQd,EAAIa,GAChC,MAAOb,EAEXA,GAAKA,EAAGrc,YA8DhB,QAASod,IAAMlB,GACX,MAAoB,gBAATA,IAEH1Z,EAAG0Z,EACHxZ,EAAGwZ,GAGPxV,MAAMC,QAAQuV,IAEV1Z,EAAG0Z,EAAM,GACTxZ,EAAGwZ,EAAM,KAIb1Z,EAAG0Z,EAAM1Z,EACTE,EAAGwZ,EAAMxZ,GAGjB,QAAS2a,IAAQnY,EAASlG,GAatB,QAASse,GAAMpY,GAAf,GACQgV,GAAQ,GAAIQ,IACZ6C,EAAMrY,EAAQS,uBAuBlB,OAtBA6X,IAAetD,GACX5H,EAAM9P,EACN,EACA,EACA8P,EAAM5P,GACL6a,EAAIlZ,KAAOiO,EAAM9P,GACjB+a,EAAI1X,IAAMyM,EAAM5P,IAErB+a,GAASC,UAAW,EACpBD,GAASE,QAAU9V,GAAOC,OAC1B2V,GAASG,kBACL1Y,QAASA,EACTgV,MAAOA,GAGPuD,GAASI,YADT7e,EAAQ8e,cAAe,EACA,IAEA9e,EAAQ8e,WAEnC1B,GAASlX,EAAS,gBAClB6Y,GAAc7Y,EAASgV,GACvBuC,GAAYvX,EAAS,gBACdgV,EA8EX,QAAS8D,GAAaC,GAClB,GAAgB,MAAZA,EAIA,MAHuB,gBAAZA,KACPA,EAAWhjB,MAAMgjB,SAASA,EAASniB,QAAQ,aAAc,MAEtC,kBAAZmiB,GACA,SAAUC,GAAV,GAGKC,GAFJ9B,EAAK4B,EAASC,EAMlB,OALI7B,IAAmB,gBAANA,KACT8B,EAAMtf,SAASC,cAAc,OACjCqf,EAAI7F,UAAY+D,EAChBA,EAAK8B,EAAIC,mBAEN/B,GAGR,WACH,MAAO4B,GAASxe,WAAU,IAItC,QAAS4e,GAAiBC,EAAUpZ,EAASqZ,EAAYC,EAAWC,EAAYC,EAAQ1f,GAuCpF,QAAS2f,MACa,KAAdJ,GAAqBE,IACrBG,EAAaC,EAGb,IAAIC,GAAOC,GACXF,GAAK7e,WAAWgf,aAAaF,EAAMD,GACnCC,EAAKnf,YAAYkf,GAEjBZ,GACAgB,EAAMjC,QAAQ,SAAU8B,EAAMpiB,GAC1B,GAAI2f,GAAK4B,GACL/Y,QAAS4Z,EACTI,QAASxiB,EAAI,EACbyiB,WAAYF,EAAMriB,QAElByf,IACAyC,EAAKnf,YAAY0c,KAI7B+C,GAAYH,EAAOX,EAASrW,KAAK,MAC7BgX,MAAOA,EACP/D,UAAWA,KAGnB,QAASmE,GAAahD,GAClB,GAAIrd,EAAQqgB,cAAgBlC,GAAQd,EAAIrd,EAAQqgB,eAAiBhD,EAAGvc,cAAgB2e,EAAaa,EAC7F,OAAO,CAEX,IAAIC,GAAMlD,EAAGmD,OACb,SAAI,YAAYrH,KAAKoH,IAAQlD,EAAGvc,cAAgB2e,EAAaa,KAGtDjD,EAAGoD,aAAa,qBAAuB,0FAA0FtH,KAAKkE,EAAGmD,UAEpJ,QAASZ,GAAa1Z,GAAtB,GAOQ/H,GACAuiB,EACAC,EACAC,EAEAC,EACKxD,EAcGyD,CAvBZ,IAHuB,SAAnB5a,EAAQsa,SACR3C,GAAO3X,GAAW6a,YAAa,WAE/BV,EAAana,GAAjB,CASA,IANI/H,EAAQ6iB,GAAmB9a,GAC3Bwa,EAAgBnY,WAAW0Y,GAAiB9iB,EAAO,mBACnDwiB,EAAepY,WAAW0Y,GAAiB9iB,EAAO,wBAClDyiB,EAAaN,EACjBA,GAAUI,EAAgBC,EACtBE,GAAU,EACLxD,EAAKnX,EAAQgb,WAAY7D,EAAIA,EAAKA,EAAG8D,YAC1C,GAAmB,GAAf9D,EAAG9E,SAAe,CAElB,GADAsI,GAAU,EACN1C,GAAQd,EAAIkC,GAAa,CACzB6B,EAAe/D,EACf,UAEJ,IAAKoC,EAAY,CACbG,EAAavC,EACb,UAEJ,IAAK,wBAAwBlE,KAAK8H,GAAiBD,GAAmB3D,GAAK,aACvE,QAEAyD,GAAOO,EAAchE,GACb,GAARyD,EACAM,EAAe/D,GACRyD,GACHT,EAAahD,GACb+D,EAAe/D,GAKnBuC,EAAavC,OAEK,IAAfA,EAAG9E,UAAiBkH,IAC3B6B,EAAUjE,EAAIwD,GACdA,GAAU,EAGlBP,GAASM,GAEb,QAASW,GAAclE,GACnB,GAAI1X,GAAI0X,EAAGrc,WAAYI,EAAQuE,EAAEub,UACjC,IAAI7D,IAAOjc,EACP,OAAO,CAEX,IAAIic,IAAO1X,EAAEgW,SAAS,GAAI,CACtB,GAAsB,GAAlBva,EAAMmX,UAAmC,GAAlBnX,EAAMmX,SAC7B,OAAO,CAEX,IAAsB,GAAlBnX,EAAMmX,SACN,OAAQ,KAAKY,KAAK/X,EAAM8d,MAGhC,OAAO,EAEX,QAASkC,GAAe/D,GAAxB,GAIQmE,GAAOC,EAAUC,EAAOC,EAAMC,EAU9B9B,EACA3O,CAdJ,OAAmB,IAAfkM,EAAG9E,UAAiB8E,IAAOwC,GAAQ0B,EAAclE,GAC1C+D,EAAe/D,EAAGrc,aAG7BwgB,EAAQvD,GAAQZ,EAAI,SACpBoE,EAAWD,GAASA,EAAMK,cAAc,YACpC7hB,EAAQ8hB,gBACRJ,EAAQF,GAASA,EAAMK,cAAc,SACrCF,EAAO1D,GAAQZ,EAAI,oBACfsE,GAAQA,EAAKE,cAAc,wBAC3BD,EAAWD,EAAKE,cAAc,oBAGlC/B,EAAOC,IACP5O,EAAQ4Q,EAAIC,cAChB7Q,EAAM8Q,eAAepC,GACrB1O,EAAM+Q,aAAa7E,GACnByC,EAAKnf,YAAYwQ,EAAMgR,mBACvBtC,EAAK7e,WAAWgf,aAAaF,EAAMD,GACnCuC,EAAwB/E,EAAGrc,YACvBwgB,IACAA,EAAQvD,GAAQZ,EAAI,SAChBrd,EAAQ8hB,eAAiBJ,GACzBF,EAAMxB,aAAa0B,EAAMjhB,WAAU,GAAO+gB,EAAMN,YAEhDO,GACAD,EAAMxB,aAAayB,EAAShhB,WAAU,GAAO+gB,EAAMN,kBAGvDlhB,EAAQ8hB,eAAiBF,IACzBD,EAAO1D,GAAQZ,EAAI,oBACnBsE,EAAK3B,aAAa4B,EAASnhB,WAAU,GAAOkhB,EAAKT,eAGzD,QAASnB,KACL,GAAID,GAAOiC,EAAIjiB,cAAc,iBAe7B,OAdA+d,IAAOiC,GACHtD,QAAS,QACT6F,UAAW,cACXtkB,MAAOyhB,EAAYA,EAAY,KAAO,OACtC8C,QAAS5C,EAAO7Y,IAAM,MAAQ6Y,EAAOpa,MAAQ,MAAQoa,EAAO6C,OAAS,MAAQ7C,EAAOra,KAAO,KAC3F8N,SAAU,WACVnV,OAAQyhB,EAAaA,EAAa,KAAO,OACzC+C,SAAU/C,GAAcD,EAAY,SAAW,UAC/CiD,MAAO,SAEPziB,GAAWA,EAAQ0iB,gBACnB5C,EAAKtC,UAAYxd,EAAQ0iB,eAE7BzC,EAAM5iB,KAAKyiB,GACJA,EAEX,QAASuB,GAAcnE,GAAvB,GAKQrW,GACA8b,EALApiB,EAAM2c,EAAMvW,uBAChB,OAAkB,KAAdpG,EAAIxC,OAA8B,IAAfwC,EAAIvC,OAChB,GAEP6I,EAAMgZ,EAAKlZ,wBAAwBE,IACnC8b,EAAYlD,EAAaa,EACtB/f,EAAIvC,OAAS2kB,EAAY,EAAIpiB,EAAIsG,IAAMA,EAAM8b,EAAY,EAAIpiB,EAAIgiB,OAAS1b,EAAM8b,EAAY,EAAI,GAE3G,QAASrB,GAAUsB,EAAM/B,GAAzB,GAIQgC,GACA1R,EAEA2P,EAIAgC,EAuBQhD,CAjCP,MAAK3G,KAAKyJ,EAAK1D,QAGhB2D,EAAMD,EAAK1D,KAAKthB,OAChBuT,EAAQ4Q,EAAIC,cAChB7Q,EAAM4R,mBAAmBH,GACrB9B,EAAOO,EAAclQ,GACpB2P,IAGDgC,EAAWF,EACH,GAAR9B,EAEIM,EADAP,EACe+B,EAAK5hB,WAEL4hB,KAGlB,QAASI,GAAQxe,EAAK+Z,EAAK9Z,GAExB,MADA0M,GAAM8R,OAAOL,EAAMrE,GACf/Z,GAAO+Z,GAAOA,GAAO9Z,EACd8Z,EAEP8C,EAAclQ,GACP6R,EAAQxe,EAAKA,EAAM+Z,GAAO,EAAGA,GAE7ByE,EAAQzE,EAAKA,EAAM9Z,GAAO,EAAGA,IAE1C,EAAGoe,GAAO,EAAGA,IACV,KAAK1J,KAAKhI,GAAAA,IAAqB0P,EAChCO,EAAewB,EAAK5hB,aAEpB8hB,EAAWF,EAAKtB,UAAUnQ,EAAM+R,WAC5BpD,EAAOC,IACX5O,EAAM8Q,eAAepC,GACrBC,EAAKnf,YAAYwQ,EAAMgR,mBACvBtC,EAAK7e,WAAWgf,aAAaF,EAAMD,GACnCuC,EAAwBU,EAAS9hB,cAGzCsgB,EAAUwB,KAEd,QAASV,GAAwB/E,GAC7B,GAAI8F,GAAKlF,GAAQZ,EAAI,KACjB8F,KACAA,EAAGC,aAAa,kBAAmB,KACnChB,EAAwBe,EAAGniB,aArPvC,GACQie,GAAWD,EAAahf,EAAQif,UAChC8C,EAAM7b,EAAQmd,cACdpD,KACAJ,EAAO7f,EAAQsjB,aAAepd,EAAUqd,GAAWrd,GACnDgW,EAAY6F,EAAIjiB,cAAc,sBAC9BwgB,EAAS,CACbrD,IAAU4C,EAAK2D,iBAAiB,UAAUxF,QAAQ,SAAUyF,GACxDA,EAAMziB,WAAWL,YAAY8iB,KAEjCxG,GAAU4C,EAAK2D,iBAAiB,OAAOxF,QAAQ,SAAU0F,GACrDzG,GAAUyG,EAAG/H,UAAUqC,QAAQ,SAAUmF,EAAIQ,GACzCR,EAAGC,aAAa,oBAAqBO,OAG7C9F,GAAO3B,GACHM,QAAS,QACTrJ,SAAU,WACVkP,UAAW,cACXhd,KAAM,WACNwB,IAAK,aAEL2Y,IACA3B,GAAO3B,GACHne,MAAOyhB,EAAY,KACnBnX,YAAaqX,EAAOra,KAAO,KAC3Bue,aAAclE,EAAOpa,MAAQ,OAEjCuY,GAAOgC,GAAQ2C,SAAU,YAE7Btc,EAAQlF,WAAWgf,aAAa9D,EAAWhW,GAC3CgW,EAAUvb,YAAYkf,GAClB7f,EAAQ6jB,gBACRC,IAA6B5H,GAAY,WACrClc,EAAQ6jB,gBAAgB3H,EAAWyD,KAGvCmE,IAA6B5H,GAAYyD,GA9KrD,GAIQvD,GAQA9I,CAPJ,IAJKtT,IACDA,MAEAoc,EAAU/gB,MACT6K,EACD,MAAOkW,GAAQ2H,OAAO,uBAE1B,IAAsC,kBAA3B1nB,QAAOmL,iBACd,KAAUoN,OAAM,mLAyXpB,OAvXA3Y,OAAM+nB,IAAIC,WAAWC,GAAahe,EAAQmd,gBACtC/P,EAAQ8K,GAAMpe,EAAQsT,OAAS,GA4BnC8M,IAAala,GAAU,WAAA,GAgCXgV,GA/BJqE,EAAavf,GAAWA,EAAQmkB,eAChCC,EAAepkB,GAAWA,EAAQqkB,WAAkC,QAArBrkB,EAAQqkB,UACvDC,EAAeroB,MAAM+nB,IAAIO,gBAAgB,SAAUpnB,EAAKqnB,GACxD,MAAW,aAAPrnB,EACOinB,EAAepkB,EAAQ7C,GAAO,KAElCA,IAAO6C,GAAUA,EAAQ7C,GAAOqnB,IAEvChF,EAAY4E,GAAgBE,EAAaD,UAAU,GACnD5E,EAAa2E,GAAgBE,EAAaD,UAAU,GACpD3E,EAAS1f,EAAQ0f,QAAU4E,EAAa5E,OACxC+E,IAAoB/E,CACpBH,IAAcE,GACTC,IACDA,GACIra,KAAM,EACNwB,IAAK,EACLvB,MAAO,EACPid,OAAQ,IAGZ/C,IACAA,GAAalM,EAAM9P,GAEnBic,IACAA,GAAcnM,EAAM5P,GAExBgc,EAAOra,MAAQiO,EAAM9P,EACrBkc,EAAOpa,OAASgO,EAAM9P,EACtBkc,EAAO7Y,KAAOyM,EAAM5P,EACpBgc,EAAO6C,QAAUjP,EAAM5P,EACnBwX,EAAQ,GAAIQ,KACZsI,KACIU,WAAW,EACXL,UAAWD,EAAeE,EAAaD,UAAY,OACnDM,cAAeF,KAGvBpF,EAAiB,SAAU7b,GACvB,GAAIxD,EAAQ4kB,SAAU,CAClB,GAAIC,IAAW,EAAO3E,EAAU,GAC/B,QAAS4E,KACN,GAAI5E,EAAU1c,EAAEyc,MAAMriB,OAAQ,CAC1B,GAAIkiB,GAAOxB,EAAM9a,EAAEyc,MAAMC,GACzBhF,GAAM6J,OAAOjF,GACb9f,EAAQ4kB,UACJ9E,KAAMA,EACNI,UAAWA,EACXC,WAAY3c,EAAEyc,MAAMriB,OACpBonB,OAAQ,WACJH,GAAW,KAGdA,EAGDrhB,EAAE0Y,UAAUlb,WAAWC,YAAYuC,EAAE0Y,WAFrC+I,WAAWH,OAKfthB,GAAE0Y,UAAUlb,WAAWC,YAAYuC,EAAE0Y,WACrCE,EAAQY,QAAQ9B,UAIxB1X,GAAEyc,MAAMjC,QAAQ,SAAU8B,GACtB5E,EAAM6J,OAAOzG,EAAMwB,MAEvBtc,EAAE0Y,UAAUlb,WAAWC,YAAYuC,EAAE0Y,WACrCE,EAAQY,QAAQ9B,IAErBhV,EAASqZ,EAAYC,EAAYA,EAAYE,EAAOra,KAAOqa,EAAOpa,MAAQ,KAAMma,EAAaA,EAAaC,EAAO7Y,IAAM6Y,EAAO6C,OAAS,KAAM7C,EAAQ1f,IAExJoc,EAAQY,QAAQsB,EAAMpY,MAiRvBkW,EAEX,QAAS8I,IAAShf,GACd,GAAIgV,GAAQ,GAAIQ,GAchB,OAbA+C,IAASC,UAAW,EACpBD,GAASE,QAAU9V,GAAOC,OAC1B2V,GAASG,kBACL1Y,QAASA,EACTgV,MAAOA,GAEXiK,GAAajf,EAAS8a,GAAmB9a,GAAUgV,GAChB,GAA/BhV,EAAQgb,WAAW3I,SACnB6M,GAAWlf,EAASA,EAAQgb,WAAYhG,GAExCmK,GAAenf,EAASgV,GAE5BoK,KACOpK,EAoNX,QAASgJ,IAAanC,GASlB,QAASwD,GAAaC,GAClB,GAAIA,EAAI,CACJ,GAAIC,GAAQ,IACZ,KACIA,EAAQD,EAAGE,SACb,MAAOC,IAELF,GACAG,EAASJ,EAAIC,IAIzB,QAASI,GAAUC,GAAnB,GAWYC,GAVJlqB,EAAMolB,GAAiB6E,EAAK3nB,MAAO,MACvC,OAAItC,GACOmqB,GAAcnqB,GAAK8hB,OAAO,SAAU/Y,EAAGyY,GAC1C,GAAI0I,GAAOE,GAAW5I,EAItB,OAHI0I,IACAnhB,EAAEvH,KAAK0oB,GAEJnhB,QAGPmhB,EAAOE,GAAWH,EAAK/lB,SACpBgmB,GAAQA,OAGvB,QAASH,GAASM,EAAYT,GAA9B,GACa/nB,GACDsH,EAMI7G,EACAgoB,EACAC,EACAC,EACAxqB,CAXZ,KAAS6B,EAAI,EAAGA,EAAI+nB,EAAM7nB,SAAUF,EAEhC,OADIsH,EAAIygB,EAAM/nB,GACNsH,EAAEsT,MACV,IAAK,GACDiN,EAAavgB,EAAEkhB,WACf,MACJ,KAAK,GACG/nB,EAAQ6G,EAAE7G,MACVgoB,EAASH,GAAc/E,GAAiB9iB,EAAO,gBAC/CioB,EAAO,sBAAsBjN,KAAK8H,GAAiB9iB,EAAO,gBAC1DkoB,EAAS,UAAYpF,GAAiB9iB,EAAO,cAC7CtC,EAAMgqB,EAAU7gB,GAChBnJ,EAAI+B,OAAS,GACb0oB,EAAQJ,EAAYC,EAAQC,EAAMC,EAAQxqB,EAAI,KAK9D,QAASyqB,GAAQJ,EAAY7a,EAAO+a,EAAMC,EAAQxN,GACzC,UAAUM,KAAKN,IACV,gBAAgBM,KAAKN,IAAQ,MAAMM,KAAKN,KAC1CA,GAAaqN,EAAWtN,KAAlB/b,IAAwBC,QAAQ,UAAW,IAAM+b,GAG/DxN,EAAM2S,QAAQ,SAAU/V,GACpBA,EAAOA,EAAKnL,QAAQ,mBAAoB,MACpCspB,IACAne,GAAQ,SAERoe,IACApe,GAAQ,WAEZV,EAAOU,GAAQ4Q,IArE3B,GAIQtR,GACK7J,CAAT,KAJW,MAAPqkB,IACAA,EAAMliB,UAEN0H,KACK7J,EAAI,EAAGA,EAAIqkB,EAAIwE,YAAY3oB,SAAUF,EAC1C6nB,EAAaxD,EAAIwE,YAAY7oB,GAEjC,OAAO6J,GAiEX,QAASvL,IAAewqB,EAAKrpB,GACzB,MAAO2gB,QAAO9U,UAAUhN,eAAemhB,KAAKqJ,EAAKrpB,GAErD,QAASspB,IAAWxe,GAEhB,MADAA,GAAO,YAAcA,EACdwW,GAASxW,GAEpB,QAASye,IAAeze,GACpB,GAAIzG,MAAamE,EAAI8Y,EAErB,KADAxW,EAAO,YAAcA,EACdtC,GACC3J,GAAe2J,EAAGsC,IAClBzG,EAAOnE,KAAKsI,EAAEsC,IAElBtC,EAAImY,OAAO6I,eAAehhB,EAE9B,OAAOnE,GAAOolB,UAElB,QAASC,IAAW5e,EAAM6e,GACtB,GAAInhB,GAAI8Y,EAER,KADAxW,EAAO,YAAcA,EACdtC,IAAM3J,GAAe2J,EAAGsC,IAC3BtC,EAAImY,OAAO6I,eAAehhB,EAEzBA,KACDA,EAAI8Y,GAASsI,OAEjBphB,EAAEsC,IAAStC,EAAEsC,IAAS,IAAa,MAAP6e,EAAc,EAAIA,GAElD,QAASE,IAAa/e,EAAMgf,GACxBhf,EAAO,YAAcA,EACrBwW,GAASxW,GAAe,MAAPgf,EAAc,EAAIA,EAEvC,QAASC,IAAWtiB,EAAG1J,EAAGspB,GAA1B,GACa9mB,GACDuK,EACAgf,CAFR,KAASvpB,EAAI,EAAGA,EAAIkH,EAAEhH,QACdqK,EAAOrD,EAAElH,KACTupB,EAAM1e,WAAW3D,EAAElH,IACnB+E,MAAMwkB,GACN/rB,EAAE+M,EAAMuc,IAERtpB,EAAE+M,EAAMgf,KACNvpB,GAId,QAASypB,IAAehpB,GAAxB,GAKQipB,GAJAC,EAAepG,GAAiB9iB,EAAO,gBACvCkpB,IACAH,GAAWlB,GAAcqB,EAAc,QAASL,GAAc,GAE9DI,EAAmBnG,GAAiB9iB,EAAO,qBAC3CipB,GACAF,GAAWlB,GAAcoB,EAAkB,QAASP,GAAY,GAGxE,QAASS,IAAa7pB,EAAK8pB,GACvB,GAAInjB,GAAQnI,MAAM2e,WAAWnd,GAAK,EASlC,OARI2G,KACAA,EAAQA,EAAMojB,QACVD,EACAnjB,EAAQA,EAAM4W,YACK,IAAZ5W,EAAMQ,IACbR,EAAQ,OAGTA,EAEX,QAAS0f,IAA4BhP,EAAUwK,GAe3C,QAASwF,OACC2C,GAAW,GACbnI,IAhBR,GAAImI,GAAU,CACd3S,GAASkJ,QAAQ,SAAUX,GAAV,GAEJ3f,GACDgqB,EAFJC,EAAStK,EAAGmG,iBAAiB,MACjC,KAAS9lB,EAAI,EAAGA,EAAIiqB,EAAO/pB,SAAUF,EAC7BgqB,EAAMC,EAAOjqB,GACZgqB,EAAIE,WACLH,IACAC,EAAIG,OAASH,EAAII,QAAUhD,KAIlC2C,GACD3C,IAQR,QAAS1E,IAAYtL,EAAUwK,GAE3B,QAAS3O,GAAIkI,GACJkP,GAAYlP,KACbkP,GAAYlP,IAAO,EACnBmP,EAAK3qB,KAAKwb,IAiBlB,QAASiM,OACCnT,GAAS,GACXmS,GAA4BhP,EAAUwK,GAxBlD,GAqBQ3N,GApBAqW,IAOJlT,GAASkJ,QAAQ,QAASiK,GAAK/hB,GACvB,SAASiT,KAAKjT,EAAQsa,UACtB7P,EAAIzK,EAAQrK,KAEhBqsB,GAAqBjH,GAAiBD,GAAmB9a,GAAU,qBAAqB8X,QAAQ,SAAUmK,GACvF,OAAXA,EAAG7P,MACH3H,EAAIwX,EAAGtP,OAGX3S,EAAQyV,UACRsB,GAAU/W,EAAQyV,UAAUqC,QAAQiK,KAGxCtW,EAAQqW,EAAKpqB,OAMH,IAAV+T,GACAmT,IAEJkD,EAAKhK,QAAQ,SAAUnF,GACnB,GAAI6O,GAAMK,GAAYlP,GAAO,GAAIxc,QAAO+rB,KACnC,WAAUjP,KAAKN,KAChB6O,EAAIW,YAAc,aAEtBX,EAAI7rB,IAAMgd,EACN6O,EAAIE,SACJ9C,KAEA4C,EAAIG,OAAS/C,EACb4C,EAAII,QAAU,WACVC,GAAYlP,GAAO,KACnBiM,QAKhB,QAASwD,IAAa/mB,GAAtB,GAGYyD,GAFJuC,EAAS,EACb,GACQvC,GAAIzD,EAAI,GACZgG,EAAS1K,OAAO6F,aAAa,GAAKsC,GAAKuC,EACvChG,EAAImD,KAAKa,MAAMhE,EAAI,UACdA,EAAI,EACb,OAAOgG,GAEX,QAAS4d,IAAajf,EAAS/H,EAAO+c,GAAtC,GAMQqN,GAEInkB,CAPRqa,IAAWX,OAAOzL,OAAOoM,IACzBA,GAASvY,EAAQsa,QAAQnM,gBACrBnO,QAASA,EACT/H,MAAOA,GAEPoqB,EAAatH,GAAiB9iB,EAAO,mBACrCoqB,GAA4B,QAAdA,IACVnkB,EAAQ6c,GAAiB9iB,EAAO,SACpCoqB,EAAW/hB,MAAM,QAAQwX,QAAQ,SAAU/V,GAClCwW,GAASxW,KACVwW,GAASxW,GAAQ7D,MAIzBokB,GAAuBrqB,KACvBsgB,GAASG,kBACL1Y,QAASA,EACTgV,MAAOA,IAInB,QAASoK,MACL7G,GAAWX,OAAO6I,eAAelI,IAErC,QAASgK,IAAc5O,GACnB,GAAyB,MAArB4E,GAASC,SAAkB,CAC3B,GAAIne,GAAMsZ,EAAKrI,KAAKiN,GAASE,QAEzBF,IAASC,SADTD,GAASC,SACWtJ,GAAKsT,UAAUjK,GAASC,SAAUne,GAElCA,GAIhC,QAASooB,MACL,GAAIC,GAAKnK,GAASC,QAClB,OAAU,OAANkK,IAGAA,EACsB,IAAfA,EAAG7qB,SAAiC,IAAhB6qB,EAAG5qB,SADlC,QAIJ,QAASwqB,IAAuBrqB,GAC5B,QAAS0qB,GAAK5gB,GACV,MAAOgZ,IAAiB9iB,EAAO8J,GAEnC,GAAyB,QAArB4gB,EAAK,cAA8C,UAApBA,EAAK,aAA8C,QAAnBA,EAAK,YAAwBA,EAAK,WAAa,EAC9G,OAAO,EAGf,QAAS7H,IAAmB9a,EAAS4iB,GACjC,MAAOzsB,QAAOmL,iBAAiBtB,EAAS4iB,GAAa,MAEzD,QAAS7H,IAAiB9iB,EAAO0qB,EAAME,GACnC,GAAI9B,GAAM9oB,EAAM8iB,iBAAiB4H,EAYjC,OAXW,OAAP5B,GAAuB,KAARA,IACX+B,GAAQC,OACRhC,EAAM9oB,EAAM8iB,iBAAiB,WAAa4H,GACnCG,GAAQE,QACfjC,EAAM9oB,EAAM8iB,iBAAiB,QAAU4H,GAChCG,GAAQG,MACflC,EAAM9oB,EAAM8iB,iBAAiB,MAAQ4H,GAC9BO,KACPnC,EAAM9oB,EAAM8iB,iBAAiB,OAAS4H,KAG1CQ,UAAUzrB,OAAS,IAAa,MAAPqpB,GAAuB,KAARA,GACjC8B,EAEA9B,EAGf,QAASqC,IAAuBnrB,EAAO0qB,EAAMzpB,EAAOmqB,GAChDprB,EAAMqrB,YAAYX,EAAMzpB,EAAOmqB,GAC3BP,GAAQC,OACR9qB,EAAMqrB,YAAY,WAAaX,EAAMzpB,EAAOmqB,GACrCP,GAAQE,QACf/qB,EAAMqrB,YAAY,QAAUX,EAAMzpB,EAAOmqB,GAClCP,GAAQG,MACfhrB,EAAMqrB,YAAY,MAAQX,EAAMzpB,EAAOmqB,GAChCH,KACPjrB,EAAMqrB,YAAY,OAASX,EAAMzpB,EAAOmqB,GACxCV,EAAO,KAAOA,EAAK/rB,QAAQ,gBAAiB,SAAUwP,EAAGT,EAAIC,GACzD,MAAOD,GAAKC,EAAG3B,gBAEnBhM,EAAM0qB,GAAQzpB,GAGtB,QAASqqB,IAAUtrB,EAAOurB,GAEtB,MADAA,GAAO,UAAYA,GAEf3rB,MAAOwK,WAAW0Y,GAAiB9iB,EAAOurB,EAAO,WACjDvrB,MAAO8iB,GAAiB9iB,EAAOurB,EAAO,UACtCtlB,MAAOkjB,GAAarG,GAAiB9iB,EAAOurB,EAAO,WAAW,IAGtE,QAASC,IAAUzjB,EAAS0jB,GAA5B,GACQC,GAAO3jB,EAAQ/H,MAAM4B,QACrBwH,EAASqiB,GAEb,OADA1jB,GAAQ/H,MAAM4B,QAAU8pB,EACjBtiB,EAEX,QAASuiB,IAAgB3rB,EAAOurB,GAC5B,GAAI1kB,GAAIic,GAAiB9iB,EAAO,UAAYurB,EAAO,WAAWljB,MAAM,QAAQnH,IAAIkJ,WAIhF,OAHgB,IAAZvD,EAAEpH,QACFoH,EAAE3H,KAAK2H,EAAE,IAEN+kB,IACHvmB,EAAGwB,EAAE,GACLtB,EAAGsB,EAAE,KAGb,QAASglB,IAAc9jB,GACnB,GAAI3F,GAAM2F,EAAQS,uBAGlB,OAFApG,GAAM0pB,GAAS1pB,EAAK,iBAAkB2F,GACtC3F,EAAM0pB,GAAS1pB,EAAK,YAAa2F,GAGrC,QAAS+jB,IAAS1pB,EAAKsoB,EAAM3iB,GACzB,GAAI/H,GAAO+rB,EAAIC,EAAIC,EAAIC,CAUvB,OATmB,gBAARxB,IACP1qB,EAAQ6iB,GAAmB9a,GAC3BgkB,EAAK3hB,WAAW0Y,GAAiB9iB,EAAO0qB,EAAK/rB,QAAQ,IAAK,SAC1DqtB,EAAK5hB,WAAW0Y,GAAiB9iB,EAAO0qB,EAAK/rB,QAAQ,IAAK,WAC1DstB,EAAK7hB,WAAW0Y,GAAiB9iB,EAAO0qB,EAAK/rB,QAAQ,IAAK,YAC1DutB,EAAK9hB,WAAW0Y,GAAiB9iB,EAAO0qB,EAAK/rB,QAAQ,IAAK,WACpC,gBAAR+rB,KACdqB,EAAKC,EAAKC,EAAKC,EAAKxB,IAGpBhiB,IAAKtG,EAAIsG,IAAMqjB,EACf5kB,MAAO/E,EAAI+E,MAAQ6kB,EACnB5H,OAAQhiB,EAAIgiB,OAAS6H,EACrB/kB,KAAM9E,EAAI8E,KAAOglB,EACjBtsB,MAAOwC,EAAI+E,MAAQ/E,EAAI8E,KAAO8kB,EAAKE,EACnCrsB,OAAQuC,EAAIgiB,OAAShiB,EAAIsG,IAAMujB,EAAKF,GAG5C,QAASI,IAAansB,GAAtB,GAKQmL,GAEIoM,EANJ6U,EAAetJ,GAAiB9iB,EAAO,YAC3C,OAAoB,QAAhBosB,EACO,MAEPjhB,EAAS,gCAAgCkhB,KAAKD,GAC9CjhB,GACIoM,EAASuL,GAAiB9iB,EAAO,oBACrCmL,EAASA,EAAO,GAAG9C,MAAM,YAAYnH,IAAIkJ,YACzCmN,EAASA,EAAOlP,MAAM,QAAQnH,IAAIkJ,aAE9Be,OAAQA,EACRoM,OAAQA,IANhB,QAUJ,QAAS+U,IAAiBxoB,GACtB,MAAO,KAAMA,EAAUyC,KAAKiT,GAAK,IAErC,QAAS+S,IAAWvc,GAChB,GAAIwc,GAAMpiB,WAAW4F,EACrB,OAAI,QAAQgL,KAAKhL,GACNzJ,KAAKiT,GAAKgT,EAAM,IAChB,OAAOxR,KAAKhL,GACZwc,EACA,QAAQxR,KAAKhL,GACbzJ,KAAKiT,GAAKgT,EAAM,EAChB,OAAOxR,KAAKhL,GACZzJ,KAAKiT,GAAKgT,EAAM,IADpB,OAIX,QAASnM,IAAeoM,EAAOxlB,GAG3B,MAFAA,GAAI,GAAIyD,IAAOzD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAC/CwlB,EAAMxhB,UAAUhE,GACTA,EAEX,QAASylB,IAAYD,EAAOE,GACxBF,EAAMG,KAAKD,GAEf,QAASE,IAAanR,EAAMrW,EAAGE,EAAG1D,GAK9B,IAJA,GAAI4P,GAAS,GAAIqb,KACTznB,EACAE,GACD1D,GAASkrB,cAAextB,EAAI,EAC5BA,EAAIkS,EAAOhS,QACdic,EAAKsR,QAAQvb,EAAOlS,KAAMkS,EAAOlS,KAAMkS,EAAOlS,MAGtD,QAASqsB,IAAe/kB,GAIpB,OAHIA,EAAExB,GAAK,GAAKwB,EAAEtB,GAAK,KACnBsB,EAAExB,EAAIwB,EAAEtB,EAAI,GAETsB,EAEX,QAASomB,IAAyB7qB,EAAK8qB,EAAKC,EAAKC,EAAKC,GAAtD,GACQC,GAAO/mB,KAAKD,IAAI,EAAG4mB,EAAI7nB,GAAIkoB,EAAOhnB,KAAKD,IAAI,EAAG4mB,EAAI3nB,GAClDioB,EAAOjnB,KAAKD,IAAI,EAAG6mB,EAAI9nB,GAAIooB,EAAOlnB,KAAKD,IAAI,EAAG6mB,EAAI5nB,GAClDmoB,EAAOnnB,KAAKD,IAAI,EAAG8mB,EAAI/nB,GAAIsoB,EAAOpnB,KAAKD,IAAI,EAAG8mB,EAAI7nB,GAClDqoB,EAAOrnB,KAAKD,IAAI,EAAG+mB,EAAIhoB,GAAIwoB,EAAOtnB,KAAKD,IAAI,EAAG+mB,EAAI9nB,GAClDxI,EAAIwJ,KAAKF,IAAIjE,EAAIxC,OAAS0tB,EAAOE,GAAOprB,EAAIvC,QAAU4tB,EAAOE,GAAOvrB,EAAIxC,OAAS8tB,EAAOE,GAAOxrB,EAAIvC,QAAUguB,EAAON,GAWxH,OAVIxwB,GAAI,IACJuwB,GAAQvwB,EACRwwB,GAAQxwB,EACRywB,GAAQzwB,EACR0wB,GAAQ1wB,EACR2wB,GAAQ3wB,EACR4wB,GAAQ5wB,EACR6wB,GAAQ7wB,EACR8wB,GAAQ9wB,IAGR+wB,IACIzoB,EAAGioB,EACH/nB,EAAGgoB,GAEPQ,IACI1oB,EAAGmoB,EACHjoB,EAAGkoB,GAEPO,IACI3oB,EAAGqoB,EACHnoB,EAAGooB,GAEPM,IACI5oB,EAAGuoB,EACHroB,EAAGsoB,IAIf,QAASK,IAAgBnmB,EAAS3F,EAAK+X,GAAvC,GAOYgU,GACAH,EACAI,EACAH,EAUII,EACAC,EACAC,EACAC,EAtBRxuB,EAAQ6iB,GAAmB9a,GAC3BmlB,EAAMvB,GAAgB3rB,EAAO,YAC7BmtB,EAAMxB,GAAgB3rB,EAAO,aAC7BqtB,EAAM1B,GAAgB3rB,EAAO,eAC7BotB,EAAMzB,GAAgB3rB,EAAO,eAuCjC,OAtCY,WAARma,GAA6B,WAARA,IACjBgU,EAAK7C,GAAUtrB,EAAO,OACtBguB,EAAK1C,GAAUtrB,EAAO,SACtBouB,EAAK9C,GAAUtrB,EAAO,UACtBiuB,EAAK3C,GAAUtrB,EAAO,QAC1BktB,EAAI7nB,GAAK4oB,EAAGruB,MACZstB,EAAI3nB,GAAK4oB,EAAGvuB,MACZutB,EAAI9nB,GAAK2oB,EAAGpuB,MACZutB,EAAI5nB,GAAK4oB,EAAGvuB,MACZwtB,EAAI/nB,GAAK2oB,EAAGpuB,MACZwtB,EAAI7nB,GAAK6oB,EAAGxuB,MACZytB,EAAIhoB,GAAK4oB,EAAGruB,MACZytB,EAAI9nB,GAAK6oB,EAAGxuB,MACA,WAARua,IACIkU,EAAKjkB,WAAW0Y,GAAiB9iB,EAAO,gBACxCsuB,EAAKlkB,WAAW0Y,GAAiB9iB,EAAO,kBACxCuuB,EAAKnkB,WAAW0Y,GAAiB9iB,EAAO,mBACxCwuB,EAAKpkB,WAAW0Y,GAAiB9iB,EAAO,iBAC5CktB,EAAI7nB,GAAKmpB,EACTtB,EAAI3nB,GAAK8oB,EACTlB,EAAI9nB,GAAKipB,EACTnB,EAAI5nB,GAAK8oB,EACTjB,EAAI/nB,GAAKipB,EACTlB,EAAI7nB,GAAKgpB,EACTlB,EAAIhoB,GAAKmpB,EACTnB,EAAI9nB,GAAKgpB,IAGE,gBAARpU,KACP+S,EAAI7nB,GAAK8U,EACT+S,EAAI3nB,GAAK4U,EACTgT,EAAI9nB,GAAK8U,EACTgT,EAAI5nB,GAAK4U,EACTiT,EAAI/nB,GAAK8U,EACTiT,EAAI7nB,GAAK4U,EACTkT,EAAIhoB,GAAK8U,EACTkT,EAAI9nB,GAAK4U,GAENsU,GAASrsB,EAAK8qB,EAAKC,EAAKC,EAAKC,GAExC,QAASoB,IAASrsB,EAAKssB,EAAMC,EAAMC,EAAMC,GAAzC,GACQC,GAAM7B,GAAyB7qB,EAAKssB,EAAMC,EAAMC,EAAMC,GACtD3B,EAAM4B,EAAIhB,GACVX,EAAM2B,EAAIf,GACVX,EAAM0B,EAAId,GACVX,EAAMyB,EAAIb,GACVvS,EAAO,GAAIqT,KACXC,KAAM,KACNC,OAAQ,MAsCZ,OApCAvT,GAAKrF,OAAOjU,EAAI8E,KAAM9E,EAAIsG,IAAMwkB,EAAI3nB,GAChC2nB,EAAI7nB,GACJwnB,GAAanR,EAAMtZ,EAAI8E,KAAOgmB,EAAI7nB,EAAGjD,EAAIsG,IAAMwkB,EAAI3nB,GAC/CuK,gBACAG,aACAW,QAASsc,EAAI7nB,EACbwL,QAASqc,EAAI3nB,IAGrBmW,EAAKO,OAAO7Z,EAAI+E,MAAQgmB,EAAI9nB,EAAGjD,EAAIsG,KAC/BykB,EAAI9nB,GACJwnB,GAAanR,EAAMtZ,EAAI+E,MAAQgmB,EAAI9nB,EAAGjD,EAAIsG,IAAMykB,EAAI5nB,GAChDuK,eACAG,SAAU,EACVW,QAASuc,EAAI9nB,EACbwL,QAASsc,EAAI5nB,IAGrBmW,EAAKO,OAAO7Z,EAAI+E,MAAO/E,EAAIgiB,OAASgJ,EAAI7nB,GACpC6nB,EAAI/nB,GACJwnB,GAAanR,EAAMtZ,EAAI+E,MAAQimB,EAAI/nB,EAAGjD,EAAIgiB,OAASgJ,EAAI7nB,GACnDuK,WAAY,EACZG,SAAU,GACVW,QAASwc,EAAI/nB,EACbwL,QAASuc,EAAI7nB,IAGrBmW,EAAKO,OAAO7Z,EAAI8E,KAAOmmB,EAAIhoB,EAAGjD,EAAIgiB,QAC9BiJ,EAAIhoB,GACJwnB,GAAanR,EAAMtZ,EAAI8E,KAAOmmB,EAAIhoB,EAAGjD,EAAIgiB,OAASiJ,EAAI9nB,GAClDuK,WAAY,GACZG,SAAU,IACVW,QAASyc,EAAIhoB,EACbwL,QAASwc,EAAI9nB,IAGdmW,EAAKlF,QAEhB,QAAS0Y,IAAcpG,EAAK9oB,GACxB,GAAIV,GAAa8K,WAAW0e,GAAlBpqB,EACV,QAAQsB,GACR,IAAK,uBAID,MAHIV,GAAIG,OAAS,IACbH,EAAM,IAAMA,GAETA,CACX,KAAK,cACD,MAAO6D,GAAc2lB,GAAK5S,aAC9B,KAAK,cACD,MAAO/S,GAAc2lB,GAAK9c,aAC9B,KAAK,cACL,IAAK,cACD,MAAOme,IAAarB,EAAM,EAC9B,KAAK,cACL,IAAK,cACD,MAAOqB,IAAarB,EAAM,GAAG9c,aACjC,SACI,MAAO1M,IAGf,QAAS6vB,IAAyBpnB,EAASqnB,GACvC,QAASC,GAAevlB,EAAM9J,EAAOsvB,GACjC,MAAKA,IAGLA,EAAYA,EAAU3wB,QAAQ,uBAAwB,MAC/C4pB,GAAeze,GAAM5I,IAAI,SAAU4nB,GACtC,MAAOoG,IAAcpG,EAAK9oB,KAC3BZ,KAAKkwB,IALGJ,GAAc5G,GAAWxe,IAAS,EAAG9J,GAHxD,GAWqBiH,GADbR,EAAIohB,GAAcuH,EAAS,QAC3BhmB,IAmBJ,OAlBA3C,GAAEoZ,QAAQ,SAAUX,GAChB,GAAI4P,IACA7nB,EAAI,uBAAuBolB,KAAKnN,IAChC9V,EAAOlK,KAAK+H,EAAE,GAAGtI,QAAQ,oBAAqB,SAAUwP,EAAG3G,GACvD,MAAO9I,QAAO6F,aAAaqF,SAASpC,EAAG,SAEpCP,EAAI,2BAA2BolB,KAAKnN,KAC3C4P,EAAMjH,GAAc5gB,EAAE,IACtBmC,EAAOlK,KAAKmwB,EAAeP,EAAI,GAAIA,EAAI,OAChC7nB,EAAI,4BAA4BolB,KAAKnN,KAC5C4P,EAAMjH,GAAc5gB,EAAE,IACtBmC,EAAOlK,KAAKmwB,EAAeP,EAAI,GAAIA,EAAI,GAAIA,EAAI,MAE/C1lB,EAAOlK,MADA+H,EAAI,wBAAwBolB,KAAKnN,IAC5BnX,EAAQua,aAAarb,EAAE,KAAO,GAE9BiY,KAGb9V,EAAOhK,KAAK,IAEvB,QAASmwB,IAAWvvB,GAApB,GAIQoJ,GACK7J,CAJT,IAAIS,EAAM4B,QACN,MAAO5B,GAAM4B,OAGjB,KADIwH,KACK7J,EAAI,EAAGA,EAAIS,EAAMP,SAAUF,EAChC6J,EAAOlK,KAAKc,EAAMT,GAAK,KAAOujB,GAAiB9iB,EAAOA,EAAMT,IAEhE,OAAO6J,GAAOhK,KAAK,OAEvB,QAASowB,IAA0BznB,EAASgV,GAMxC,QAAS0S,GAAOC,EAAMC,GAAtB,GAIYC,GAHJ5vB,EAAQ6iB,GAAmB9a,EAAS2nB,GAAON,EAAUpvB,EAAMovB,OAC/DpG,IAAehpB,GACXovB,GAAsB,UAAXA,GAAkC,QAAXA,GAAoC,OAAfpvB,EAAMJ,QACzDgwB,EAAO7nB,EAAQmd,cAAcvjB,cAAckuB,IAC/CD,EAAK5vB,MAAM4B,QAAU2tB,GAAWvvB,GAChC4vB,EAAKrtB,YAAc4sB,GAAyBpnB,EAASqnB,GACrDrnB,EAAQ8Z,aAAa+N,EAAMD,GAC3BG,EAAK5wB,KAAK0wB,IAdtB,GAKQE,GAeIC,CAnBR,OAAIhoB,GAAQsa,SAAWwN,OACnB3I,IAAenf,EAASgV,IAGxB+S,KAYJL,EAAO,UAAW1nB,EAAQgb,YAC1B0M,EAAO,SAAU,WACbK,EAAKrwB,OAAS,GACVswB,EAAYhoB,EAAQsX,UACxBtX,EAAQsX,WAAa,kCACrB6H,GAAenf,EAASgV,GACxBhV,EAAQsX,UAAY0Q,EACpBD,EAAKjQ,QAAQ,SAAUX,GACnBnX,EAAQjF,YAAYoc,MAGxBgI,GAAenf,EAASgV,KAGhC,QAASmK,IAAenf,EAASgV,GA8G7B,QAASiT,GAAYC,GAArB,GAEY5M,GAEI6M,EACAC,EAIAC,EACAC,EACAC,CAVZ,IAAI,QAAQtV,KAAKjT,EAAQsa,WACjBgB,EAAQ/C,GAAS+C,MACjBA,GAA6D,YAApDP,GAAiBO,EAAMrjB,MAAO,oBAAkC,CAGzE,GAFIkwB,EAAkB5E,GAAUjI,EAAMrjB,MAAO,QAAQJ,MACjDuwB,EAAiB7E,GAAUjI,EAAMrjB,MAAO,OAAOJ,MAC3B,IAApBswB,GAA4C,IAAnBC,EACzB,MAAOF,EAKX,IAHIG,EAAW/M,EAAMtb,QAAQS,wBACzB6nB,EAAYhN,EAAMtb,QAAQwoB,KAAK,GAAGC,MAAM,GACxCF,EAAeD,EAAU7nB,wBACzB8nB,EAAa5nB,KAAO0nB,EAAS1nB,KAAO4nB,EAAappB,MAAQkpB,EAASlpB,KAClE,MAAO4X,IAAUmR,GAAO/uB,IAAI,SAAUkB,GAClC,OACI8E,KAAM9E,EAAI8E,KAAOgpB,EACjBxnB,IAAKtG,EAAIsG,IAAMynB,EACfhpB,MAAO/E,EAAI+E,MAAQ+oB,EACnB9L,OAAQhiB,EAAIgiB,OAAS+L,EACrBtwB,OAAQuC,EAAIvC,OACZD,MAAOwC,EAAIxC,SAM/B,MAAOqwB,GAEX,QAASQ,GAASxqB,EAAOye,EAAKgM,EAAMC,EAAOC,EAAQC,EAAIC,EAAI1E,GAmCvD,QAAS2E,GAAgBH,EAAQ/pB,EAAGulB,GAApC,GACQpc,GAAQzJ,KAAKiT,GAAK,EAAIoX,GAAUA,EAASF,GACzCM,GACA3rB,EAAGwB,EAAExB,EAAIurB,EACTrrB,EAAGsB,EAAEtB,EAAImrB,GAEThV,EAAO,GAAIqT,KACXC,MAAQ/oB,MAAOA,GACfgpB,OAAQ,OACT5Y,OAAO,EAAG,EACbgK,IAAe3E,EAAM0Q,GACrBS,GAAanR,EAAM,EAAG7U,EAAEtB,GACpBuK,eACAG,UAAWqc,GAAiBtc,GAC5BY,QAAS/J,EAAExB,EACXwL,QAAShK,EAAEtB,IAEXyrB,EAAG3rB,EAAI,GAAK2rB,EAAGzrB,EAAI,GACnBmW,EAAKO,OAAO+U,EAAG3rB,EAAIkB,KAAKkI,IAAIuB,GAAQnJ,EAAEtB,EAAIyrB,EAAGzrB,EAAIgB,KAAKmI,IAAIsB,IAC1D6c,GAAanR,EAAM,EAAG7U,EAAEtB,GACpBuK,YAAawc,GAAiBtc,GAC9BC,aACAW,QAASogB,EAAG3rB,EACZwL,QAASmgB,EAAGzrB,EACZ0rB,eAAe,KAEZD,EAAG3rB,EAAI,EACdqW,EAAKO,OAAO+U,EAAG3rB,EAAGqrB,GAAMzU,OAAO,EAAGyU,GAElChV,EAAKO,OAAO+U,EAAG3rB,EAAGqrB,GAAMzU,OAAO+U,EAAG3rB,EAAG,GAEzC6rB,EAAKtK,OAAOlL,EAAKlF,SAjErB,KAAIka,GAAQ,GAAZ,CAGA,GAAIhV,GAAMwV,EAAO,GAAI3T,GACrB8C,IAAe6Q,EAAM9E,GACrBrP,EAAM6J,OAAOsK,GACbtF,GAAeiF,GACfjF,GAAekF,GACfpV,EAAO,GAAIqT,KACPC,MAAQ/oB,MAAOA,GACfgpB,OAAQ,OAEZiC,EAAKtK,OAAOlL,GACZA,EAAKrF,OAAOwa,EAAGxrB,EAAIkB,KAAKD,IAAIuqB,EAAGxrB,EAAGsrB,GAAS,EAAG,GAAG1U,OAAOyI,GAAOoM,EAAGzrB,EAAIkB,KAAKD,IAAIwqB,EAAGzrB,EAAGurB,GAAU,GAAI,GAAG3U,OAAOyI,EAAMne,KAAKD,IAAIwqB,EAAGzrB,EAAGurB,GAASF,GAAMzU,OAAO1V,KAAKD,IAAIuqB,EAAGxrB,EAAGsrB,GAAQD,GAAMla,QACjLqa,EAAGxrB,GACH0rB,EAAgBJ,EAAOE,MAEnB,EACA,EACA,EACAA,EAAGxrB,EACH,IAGJyrB,EAAGzrB,GACH0rB,EAAgBH,EAAQE,GACpB,EACA,EACA,EACA,EACApM,EAAMoM,EAAGzrB,EACT,KAqCZ,QAAS8rB,GAAe/uB,GAAxB,GAKYsZ,GAOCnc,EAXL6xB,EAAa,GAAI7T,GAWrB,KAVAmP,GAAY0E,EAAY3C,GAASrsB,EAAKssB,EAAMC,EAAMC,EAAMC,IACxD9R,EAAM6J,OAAOwK,GACTC,IACI3V,EAAO,GAAIqT,KACXC,MAAQ/oB,MAAOorB,EAAgBxU,aAC/BoS,OAAQ,OAEZvT,EAAKrF,OAAOjU,EAAI8E,KAAM9E,EAAIsG,KAAKuT,OAAO7Z,EAAI+E,MAAO/E,EAAIsG,KAAKuT,OAAO7Z,EAAI+E,MAAO/E,EAAIgiB,QAAQnI,OAAO7Z,EAAI8E,KAAM9E,EAAIgiB,QAAQ5N;AACrH4a,EAAWxK,OAAOlL,IAEbnc,EAAI+xB,EAAgB7xB,SAAUF,GAAK,GACxCgyB,EAAkBH,EAAYhvB,EAAKkvB,EAAgB/xB,GAAIiyB,EAAiBjyB,EAAIiyB,EAAiB/xB,QAASgyB,EAAmBlyB,EAAIkyB,EAAmBhyB,QAASiyB,EAAiBnyB,EAAImyB,EAAiBjyB,QAASkyB,EAAepyB,EAAIoyB,EAAelyB,SAGlP,QAAS8xB,GAAkBxU,EAAO3a,EAAKgvB,EAAYI,EAAkBC,EAAoBC,EAAkBC,GAgBvG,QAASC,GAAoB7U,EAAO3a,EAAKyvB,EAAWC,EAAYC,GAyE5D,QAASC,KACL,KAAOva,EAAKF,OAAOlS,EAAIjD,EAAI8E,MACvBuQ,EAAKF,OAAOlS,GAAKwsB,EAGzB,QAASI,KACL,KAAOxa,EAAKF,OAAOhS,EAAInD,EAAIsG,KACvB+O,EAAKF,OAAOhS,GAAKusB,EAGzB,QAASI,KACL,KAAOza,EAAKF,OAAOlS,EAAIjD,EAAI+E,OACvB4qB,EAAShV,EAAOtF,EAAKvC,SACrBuC,EAAKF,OAAOlS,GAAKwsB,EAtF7B,GAC+C90B,GAkB/B4D,EAeRyf,EAgCA3I,EAqCIF,EAtGJ4a,EAAeN,EAAYC,EAC3BM,EAAShwB,CAiCb,QAhCwB,eAApBsvB,GACAU,EAAStG,GAASsG,EAAQ,iBAAkBrqB,GAC5CqqB,EAAStG,GAASsG,EAAQ,YAAarqB,IACZ,eAApB2pB,IACPU,EAAStG,GAASsG,EAAQ,iBAAkBrqB,IAE3C,yBAAyBiT,KAAK2W,KACT,WAAlBA,GACA50B,EAAIwJ,KAAKF,IAAI+rB,EAAOxyB,MAAQiyB,EAAWO,EAAOvyB,OAASiyB,GACvDD,GAAa90B,EACb+0B,GAAc/0B,GACW,SAAlB40B,GACP50B,EAAIwJ,KAAKD,IAAI8rB,EAAOxyB,MAAQiyB,EAAWO,EAAOvyB,OAASiyB,GACvDD,GAAa90B,EACb+0B,GAAc/0B,IAEV4D,EAAOgxB,EAAetpB,MAAM,QAE5BwpB,EADA,KAAK7W,KAAKra,EAAK,IACHyxB,EAAOxyB,MAAQwK,WAAWzJ,EAAK,IAAM,IAErCyJ,WAAWzJ,EAAK,IAG5BmxB,EADe,GAAfnxB,EAAKlB,QAA0B,QAAXkB,EAAK,GACZkxB,EAAYM,EAClB,KAAKnX,KAAKra,EAAK,IACTyxB,EAAOvyB,OAASuK,WAAWzJ,EAAK,IAAM,IAEtCyJ,WAAWzJ,EAAK,MAIrCyf,EAAaqR,EAAP/yB,IAEV,IAAK,SACD0hB,EAAM,UACN,MACJ,KAAK,MACDA,EAAM,OACN,MACJ,KAAK,OACDA,EAAM,OACN,MACJ,KAAK,QACDA,EAAM,UACN,MACJ,KAAK,SACDA,EAAM,UAwCV,GArCAA,EAAMA,EAAI/X,MAAM,OACE,GAAd+X,EAAI3gB,SACJ2gB,EAAI,GAAK,OAGTA,EAAI,GADJ,KAAKpF,KAAKoF,EAAI,IACLhW,WAAWgW,EAAI,IAAM,KAAOgS,EAAOxyB,MAAQiyB,GAE3CznB,WAAWgW,EAAI,IAGxBA,EAAI,GADJ,KAAKpF,KAAKoF,EAAI,IACLhW,WAAWgW,EAAI,IAAM,KAAOgS,EAAOvyB,OAASiyB,GAE5C1nB,WAAWgW,EAAI,IAExB3I,EAAO,GAAIR,KACXmb,EAAOlrB,KAAOkZ,EAAI,GAClBgS,EAAO1pB,IAAM0X,EAAI,KAEjByR,EACAC,IAkBoB,aAApBN,EACAO,EAAShV,EAAOtF,OACb,IAAwB,YAApB+Z,EACPQ,IACAE,QACG,IAAwB,YAApBV,EAEP,IADAS,IACOxa,EAAKF,OAAOhS,EAAInD,EAAIgiB,QACvB2N,EAAShV,EAAOtF,EAAKvC,SACrBuC,EAAKF,OAAOhS,GAAKusB,MAElB,IAAwB,UAApBN,EAIP,IAHAQ,IACAC,IACI1a,EAASE,EAAKF,OAAOrC,QAClBuC,EAAKF,OAAOhS,EAAInD,EAAIgiB,QACvB3M,EAAKF,OAAOlS,EAAIkS,EAAOlS,EACvB6sB,IACAza,EAAKF,OAAOhS,GAAKusB,EA1H7B,GAAKV,GAA4B,QAAdA,EAGnB,GAAuB,OAAnBA,EAAWjX,KAAe,CAC1B,GAAIoP,GAAMK,GAAYwH,EAAW1W,IAC7B6O,IAAOA,EAAI3pB,MAAQ,GAAK2pB,EAAI1pB,OAAS,GACrC+xB,EAAoB7U,EAAO3a,EAAKmnB,EAAI3pB,MAAO2pB,EAAI1pB,OAAQ,SAAUkd,EAAOtF,GACpEsF,EAAM6J,OAAO,GAAIyL,IAAQjB,EAAW1W,IAAKjD,UAG9C,CAAA,GAAuB,UAAnB2Z,EAAWjX,KAGlB,MAFAyX,GAAoB7U,EAAO3a,EAAKA,EAAIxC,MAAOwC,EAAIvC,OAAQyyB,GAAiBlB,KAoHhF,QAASmB,KAML,QAASC,GAAYz1B,GACjByuB,GAAUzjB,EAAS,WACfA,EAAQ/H,MAAMgV,SAAW,UACzB,IAAIyd,GAAS1qB,EAAQmd,cAAcvjB,cAAckuB,GACjD4C,GAAOzyB,MAAMgV,SAAW,WACxByd,EAAOzyB,MAAMkkB,UAAY,aACA,WAArBwO,GACAD,EAAOzyB,MAAMJ,MAAQ,MACrB6yB,EAAOzyB,MAAMkH,KAAO,SACpBurB,EAAOzyB,MAAM2yB,UAAY,SAEzBF,EAAOzyB,MAAMkH,KAAO,MAExBnK,EAAE01B,GACF1qB,EAAQ8Z,aAAa4Q,EAAQ1qB,EAAQgb,YACrCnC,GAAc6R,EAAQ1V,GACtBhV,EAAQjF,YAAY2vB,KAG5B,QAASG,GAAa71B,GAAtB,GAMawC,GALLkH,EAAIsB,EAAQlF,WAAW2a,SACvBqV,EAAI9qB,EAAQua,aAAa,oBAC7B,IAAS,MAALuQ,EACA,MAAO91B,GAAM,EAAJ81B,EAAOpsB,EAAEhH,OAEtB,KAASF,EAAI,EAAGA,EAAIkH,EAAEhH,SAAUF,EAC5B,GAAIkH,EAAElH,KAAOwI,EACT,MAAOhL,GAAEwC,EAAGkH,EAAEhH,QAjC9B,GAKQizB,GAJAI,EAAgBhQ,GAAiB9iB,EAAO,kBAC5C,IAAqB,QAAjB8yB,EAmCJ,OAhCIJ,EAAoB5P,GAAiB9iB,EAAO,uBAgCxC8yB,GACR,IAAK,SACL,IAAK,OACL,IAAK,SACDN,EAAY,SAAUC,GAClBA,EAAOzyB,MAAM+yB,SAAW,MACxBN,EAAOzyB,MAAMgzB,WAAa,OAC1BP,EAAOzyB,MAAMylB,aAAe,QAC5BgN,EAAOzyB,MAAMizB,WAAa,eAC1BR,EAAOtX,WACH+X,KAAQ,IACRC,OAAU,IACVC,OAAU,KACZN,IAEN,MACJ,KAAK,UACL,IAAK,uBACDN,EAAY,SAAUC,GAClBG,EAAa,SAAUzqB,KACjBA,EACmB,wBAAjB2qB,GAA2C3qB,EAAM,KACjDA,EAAM,IAAMA,GAEhBsqB,EAAOtX,UAAYhT,EAAM,OAGjC,MACJ,KAAK,cACL,IAAK,cACDqqB,EAAY,SAAUC,GAClBG,EAAa,SAAUzqB,GACnBA,EAAMhF,EAAcgF,EAAM,GACL,eAAjB2qB,IACA3qB,EAAMA,EAAI6D,eAEdymB,EAAOtX,UAAYhT,EAAM,OAGjC,MACJ,KAAK,cACL,IAAK,cACL,IAAK,cACL,IAAK,cACDqqB,EAAY,SAAUC,GAClBG,EAAa,SAAUzqB,GACnBA,EAAMgiB,GAAahiB,GACf,UAAU6S,KAAK8X,KACf3qB,EAAMA,EAAI6D,eAEdymB,EAAOtX,UAAYhT,EAAM,SAMzC,QAASkrB,GAAWjxB,EAAKsgB,EAAS4Q,GAkF9B,QAASC,GAAI/rB,GACT,OACInC,EAAGmC,EAAEjC,EACLA,EAAGiC,EAAEnC,GArFjB,GAKQmuB,GACAC,EAQY/X,EA+CZoT,EACA5B,EACAC,EACAC,EACAC,CAhEJ,IAAkB,IAAdjrB,EAAIxC,OAA8B,IAAfwC,EAAIvC,SAG3BsxB,EAAe/uB,GACXoxB,EAAiBtsB,EAAKtH,MAAQ,IAAM8iB,GAAkB,OAAPgR,GAAgBJ,GAAiB,OAAPI,GACzED,EAAkBtsB,EAAMvH,MAAQ,IAAM0zB,GAAiB,OAAPI,GAAgBhR,GAAkB,OAAPgR,GAC7D,IAAdhrB,EAAI9I,OAA8B,IAAfsH,EAAKtH,OAA+B,IAAhBuH,EAAMvH,OAAgC,IAAjBwkB,EAAOxkB,OAAvE,CAGA,GAAI8I,EAAIzC,OAASkB,EAAMlB,OAASyC,EAAIzC,OAASme,EAAOne,OAASyC,EAAIzC,OAASiB,EAAKjB,OACvEyC,EAAI9I,OAASuH,EAAMvH,OAAS8I,EAAI9I,OAASwkB,EAAOxkB,OAAS8I,EAAI9I,OAASsH,EAAKtH,OACvE4zB,GAAkBC,EAQlB,MAPArxB,GAAM0pB,GAAS1pB,EAAKsG,EAAI9I,MAAQ,GAC5B8b,EAAOwS,GAAgBnmB,EAAS3F,EAAKsG,EAAI9I,MAAQ,GACrD8b,EAAK7Z,QAAQotB,QACThpB,MAAOyC,EAAIzC,MACXrG,MAAO8I,EAAI9I,WAEfmd,GAAM6J,OAAOlL,EAKzB,IAAe,IAAXgT,EAAKrpB,GAAsB,IAAXspB,EAAKtpB,GAAsB,IAAXupB,EAAKvpB,GAAsB,IAAXwpB,EAAKxpB,GACjDqD,EAAI9I,MAAQ,GAAKsH,EAAKtH,MAAQ,GAAKuH,EAAMvH,MAAQ,GAAKwkB,EAAOxkB,MAAQ,EAiCrE,MAhCI8I,GAAI9I,MAAQ,GACZmd,EAAM6J,OAAO,GAAImI,KACbE,QACIrvB,MAAO8I,EAAI9I,MACXqG,MAAOyC,EAAIzC,SAEhBoQ,OAAOjU,EAAI8E,KAAM9E,EAAIsG,IAAMA,EAAI9I,MAAQ,GAAGqc,OAAO7Z,EAAI+E,MAAO/E,EAAIsG,IAAMA,EAAI9I,MAAQ,IAErFwkB,EAAOxkB,MAAQ,GACfmd,EAAM6J,OAAO,GAAImI,KACbE,QACIrvB,MAAOwkB,EAAOxkB,MACdqG,MAAOme,EAAOne,SAEnBoQ,OAAOjU,EAAI8E,KAAM9E,EAAIgiB,OAASA,EAAOxkB,MAAQ,GAAGqc,OAAO7Z,EAAI+E,MAAO/E,EAAIgiB,OAASA,EAAOxkB,MAAQ,IAEjG4zB,GACAzW,EAAM6J,OAAO,GAAImI,KACbE,QACIrvB,MAAOsH,EAAKtH,MACZqG,MAAOiB,EAAKjB,SAEjBoQ,OAAOjU,EAAI8E,KAAOA,EAAKtH,MAAQ,EAAGwC,EAAIsG,KAAKuT,OAAO7Z,EAAI8E,KAAOA,EAAKtH,MAAQ,EAAGwC,EAAIgiB,cAEpFqP,GACA1W,EAAM6J,OAAO,GAAImI,KACbE,QACIrvB,MAAOuH,EAAMvH,MACbqG,MAAOkB,EAAMlB,SAElBoQ,OAAOjU,EAAI+E,MAAQA,EAAMvH,MAAQ,EAAGwC,EAAIsG,KAAKuT,OAAO7Z,EAAI+E,MAAQA,EAAMvH,MAAQ,EAAGwC,EAAIgiB,SAKhG0K,GAAM7B,GAAyB7qB,EAAKssB,EAAMC,EAAMC,EAAMC,GACtD3B,EAAM4B,EAAIhB,GACVX,EAAM2B,EAAIf,GACVX,EAAM0B,EAAId,GACVX,EAAMyB,EAAIb,GACdwC,EAAS/nB,EAAIzC,MAAO7D,EAAIxC,MAAO8I,EAAI9I,MAAOsH,EAAKtH,MAAOuH,EAAMvH,MAAOstB,EAAKC,GACpE,EACA,EACA,EACA,EACA/qB,EAAI8E,KACJ9E,EAAIsG,MAER+nB,EAASrM,EAAOne,MAAO7D,EAAIxC,MAAOwkB,EAAOxkB,MAAOuH,EAAMvH,MAAOsH,EAAKtH,MAAOwtB,EAAKC,MAE1E,EACA,KAEAjrB,EAAI+E,MACJ/E,EAAIgiB,SAQRqM,EAASvpB,EAAKjB,MAAO7D,EAAIvC,OAAQqH,EAAKtH,MAAOwkB,EAAOxkB,MAAO8I,EAAI9I,MAAO2zB,EAAIlG,GAAMkG,EAAIrG,IAChF,KAEA,EACA,EACA9qB,EAAI8E,KACJ9E,EAAIgiB,SAERqM,EAAStpB,EAAMlB,MAAO7D,EAAIvC,OAAQsH,EAAMvH,MAAO8I,EAAI9I,MAAOwkB,EAAOxkB,MAAO2zB,EAAIpG,GAAMoG,EAAInG,IAClF,EACA,KAEA,EACAhrB,EAAI+E,MACJ/E,EAAIsG,OAliBhB,GAaQ4oB,GACAE,EACAC,EACAC,EACAC,EACAgC,EAAcC,EAWdC,EAkBA5D,EAAO1wB,EAAGixB,EACVnS,EAkBQxX,EAjER7G,EAAQ6iB,GAAmB9a,GAC3BW,EAAM4iB,GAAUtrB,EAAO,OACvBmH,EAAQmkB,GAAUtrB,EAAO,SACzBokB,EAASkH,GAAUtrB,EAAO,UAC1BkH,EAAOokB,GAAUtrB,EAAO,QACxB0uB,EAAO/C,GAAgB3rB,EAAO,YAC9B2uB,EAAOhD,GAAgB3rB,EAAO,aAC9B6uB,EAAOlD,GAAgB3rB,EAAO,eAC9B4uB,EAAOjD,GAAgB3rB,EAAO,gBAC9B0zB,EAAM5Q,GAAiB9iB,EAAO,aAC9BqxB,EAAkBvO,GAAiB9iB,EAAO,mBAsC9C,IArCAqxB,EAAkBlI,GAAakI,GAC3BC,EAAkBvH,GAAqBjH,GAAiB9iB,EAAO,qBAC/DwxB,EAAmB3J,GAAc/E,GAAiB9iB,EAAO,sBACzDyxB,EAAqB5J,GAAc/E,GAAiB9iB,EAAO,wBAC3D0xB,EAAmB7J,GAAc/E,GAAiB9iB,EAAO,sBACzD2xB,EAAiB9J,GAAc/E,GAAiB9iB,EAAO,oBAEvDirB,KACA0I,EAAe3zB,EAAM2zB,aACD,YAAhBA,IACAC,EAAmB7rB,EAAQ/H,MAAM2zB,aACjC5rB,EAAQ/H,MAAM2zB,aAAe,SAGjC9I,GAAQjQ,MAAQiQ,GAAQiJ,QAAU,KAClCrC,EAAqB5J,GAAc9f,EAAQgsB,aAAatC,qBAExDoC,EAAW/H,GAAS/jB,EAAQS,wBAAyB,iBAAkBT,GAC1E,WAAA,GAIWtB,GACAiC,EACAvB,EACAid,EACAld,EACA4nB,EACAnC,EATJC,EAAO9J,GAAiB9iB,EAAO,QAC/BiH,EAAI,uBAAuBolB,KAAKO,EAChC3lB,KACIR,EAAIQ,EAAE,GAAGoB,MAAM,UACfK,EAAc,QAARjC,EAAE,GAAeotB,EAASnrB,IAAM0B,WAAW3D,EAAE,IAAMotB,EAASnrB,IAClEvB,EAAgB,QAARV,EAAE,GAAeotB,EAAS1sB,MAAQiD,WAAW3D,EAAE,IAAMotB,EAAS3sB,KACtEkd,EAAiB,QAAR3d,EAAE,GAAeotB,EAASzP,OAASha,WAAW3D,EAAE,IAAMotB,EAASnrB,IACxExB,EAAe,QAART,EAAE,GAAeotB,EAAS3sB,KAAOkD,WAAW3D,EAAE,IAAMotB,EAAS3sB,KACpE4nB,EAAM,GAAIvR,IACVoP,GAAW,GAAIoC,KAAO1Y,OAAOnP,EAAMwB,GAAKuT,OAAO9U,EAAOuB,GAAKuT,OAAO9U,EAAOid,GAAQnI,OAAO/U,EAAMkd,GAAQ5N,QAC1GkW,GAAYoC,EAAKnC,GACjB5P,EAAM6J,OAAOkI,GACb/R,EAAQ+R,EACRxE,GAAcqC,OAIlBtO,EAAUyE,GAAiB9iB,EAAO,WACvB,aAAXqe,EAEA,IADA4R,KACK1wB,EAAI,EAAGixB,EAAQzoB,EAAQyV,SAAUje,EAAIixB,EAAM/wB,SAAUF,EACtD0wB,EAAM/wB,KAAKsxB,EAAMjxB,GAAGiJ,6BAGxBynB,GAAQloB,EAAQisB,iBACI,GAAhB/D,EAAMxwB,SACNwwB,GAASloB,EAAQS,yBAIzB,KADAynB,EAAQD,EAAYC,GACf1wB,EAAI,EAAGA,EAAI0wB,EAAMxwB,SAAUF,EAC5B8zB,EAAWpD,EAAM1wB,GAAU,IAANA,EAASA,GAAK0wB,EAAMxwB,OAAS,EA+CtD,OA7CuB,KAAnBsI,EAAQsa,SAAkBta,EAAQ0S,OAAS,OAAOO,KAAKjT,EAAQua,aAAa,WACvEhC,GAASI,aAAgBV,GAAQjY,EAASuY,GAASI,eAChD7Z,EAAInF,SAASmiB,cACjBhd,EAAE+d,mBAAmB7c,GACrB+W,GAAUjY,EAAEmtB,kBAAkBnU,QAAQ,SAAUzd,GAC5C,GAAI6xB,GAAI,GAAI1W,GACZ0W,GAAEC,UACExZ,IAAK3S,EAAQ0S,KACb/R,IAAKtG,EAAIsG,IACTvB,MAAO/E,EAAI+E,MACXid,OAAQhiB,EAAIgiB,OACZld,KAAM9E,EAAI8E,MAEd6V,EAAM6J,OAAOqN,OAIrBhE,EAAMxwB,OAAS,GAAgB,aAAX4e,IAA2BtW,EAAQua,aAAa,oBACpEiQ,EAAWtC,EAAM,IAEpB,WACG,QAASkE,KAAT,GACQxH,GAAWuB,GAAgBnmB,EAAS8rB,EAAU,WAC9C/E,EAAM,GAAIvR,GACdmP,IAAYoC,EAAKnC,GACjB5P,EAAM6J,OAAOkI,GACb/R,EAAQ+R,EACRxE,GAAcqC,GAEdyH,GAAYrsB,GACZosB,IACO,wBAAwBnZ,KAAK8H,GAAiB9iB,EAAO,aAC5Dm0B,IACO,wBAAwBnZ,KAAK8H,GAAiB9iB,EAAO,eAC5Dm0B,IACO,wBAAwBnZ,KAAK8H,GAAiB9iB,EAAO,gBAC5Dm0B,OAGHE,GAAkBtsB,EAASgV,IAC5BuX,GAAevsB,EAASgV,GAExBkO,IAA6B,YAAhB0I,IACb5rB,EAAQ/H,MAAM2zB,aAAeC,GAE1B7W,EAybX,QAASuV,IAAiBhW,GACtB,MAAO,UAAUS,EAAOtF,GAAjB,GAIKzH,GAsCAukB,EACAC,EACA9lB,EAA6BD,EAC7BiW,EACArf,EACAE,EAKAkvB,EAAettB,EACfoV,EA8BAvL,EAIA0jB,EAtFJ90B,EAAQ6X,EAAK7X,QAASC,EAAS4X,EAAK5X,QACxC,QAAQyc,EAASnC,MACjB,IAAK,SAED,OADInK,EAA0B,MAAlBsM,EAAStM,MAAgBsM,EAAStM,MAAQzJ,KAAKiT,GACnD8C,EAASqY,IACjB,IAAK,MACD3kB,EAAQ,CACR,MACJ,KAAK,OACDA,GAASzJ,KAAKiT,GAAK,CACnB,MACJ,KAAK,SACDxJ,EAAQzJ,KAAKiT,EACb,MACJ,KAAK,QACDxJ,EAAQzJ,KAAKiT,GAAK,CAClB,MACJ,KAAK,WACL,IAAK,WACDxJ,GAASzJ,KAAKqG,MAAM/M,EAAQD,EAC5B,MACJ,KAAK,YACL,IAAK,YACDoQ,EAAQzJ,KAAKqG,MAAM/M,EAAQD,EAC3B,MACJ,KAAK,cACL,IAAK,cACDoQ,EAAQzJ,KAAKiT,GAAKjT,KAAKqG,MAAM/M,EAAQD,EACrC,MACJ,KAAK,eACL,IAAK,eACDoQ,EAAQzJ,KAAKiT,GAAKjT,KAAKqG,MAAM/M,EAAQD,GAGrC0c,EAASmM,UACTzY,GAASzJ,KAAKiT,IAElBxJ,GAAS,EAAIzJ,KAAKiT,GACdxJ,EAAQ,IACRA,GAAS,EAAIzJ,KAAKiT,IAElB+a,EAAQhuB,KAAK+G,IAAI1N,EAAQ2G,KAAKmI,IAAIsB,IAAUzJ,KAAK+G,IAAIzN,EAAS0G,KAAKkI,IAAIuB,IACvEwkB,EAAcjuB,KAAKquB,KAAKh1B,EAAQ2G,KAAKsuB,IAAI7kB,GAASnQ,GAClD6O,EAAMnI,KAAKmI,IAAI8lB,GAAc/lB,EAAMlI,KAAKkI,IAAI+lB,GAC5C9P,EAAMne,KAAK+G,IAAIoB,GAAOnI,KAAK+G,IAAImB,GAC/BpJ,EAAIqf,EAAM,EAAIhW,EACdnJ,EAAImf,EAAM,EAAIjW,EACduB,EAAQzJ,KAAKiT,GAAK,GAAKxJ,GAAS,EAAIzJ,KAAKiT,GAAK,IAC9CnU,GAAKA,EACLE,GAAKA,GAELkvB,KAAettB,EAAQ,EACvBoV,EAAQD,EAASC,MAAMrb,IAAI,SAAUiN,EAAG5O,GAAb,GAWvBid,GAVAI,EAASzO,EAAE2mB,OA2Bf,OA1BIlY,GACAA,EAASxS,WAAWwS,GAAU,IACvBzO,EAAE1O,OACTmd,EAASxS,WAAW+D,EAAE1O,QAAU80B,EACnB,IAANh1B,EACPqd,EAAS,EACFrd,GAAK+c,EAASC,MAAM9c,OAAS,IACpCmd,EAAS,GAETJ,GACAvW,MAAOkI,EAAElI,MAAM4W,YACfD,OAAQA,GAEE,MAAVA,GACAzV,EAAQyV,EACR6X,EAAS5U,QAAQ,SAAU1R,EAAG5O,GAC1B,GAAIid,GAAOrO,EAAEqO,IACbA,GAAKI,OAASzO,EAAEjH,MAAQC,EAAQgH,EAAEjH,OAAS3H,EAAI,IAAMk1B,EAASh1B,OAAS,KAE3Eg1B,MAEAA,EAASv1B,MACLgI,KAAMC,EACNqV,KAAMA,IAGPA,IAEPxL,GACA,GAAM3L,EACN,GAAME,GAENmvB,GACA,GAAMrvB,EACN,GAAME,GAEVwX,EAAM6J,OAAOmI,GAAKgG,SAAStd,GAAMwX,OAAO,MAAMD,KAAK,GAAIgG,KACnDhkB,MAAOA,EACP0jB,IAAKA,EACLnY,MAAOA,EACP0Y,WAAW,KAEf,MACJ,KAAK,SACG/2B,OAAOg3B,SAAWh3B,OAAOg3B,QAAQC,KACjCj3B,OAAOg3B,QAAQC,IAAI,6DAMnC,QAASd,IAAkBtsB,EAASgV,GAApC,GACQqY,GAIIC,EAYJC,EAEAjiB,CALJ,OAZItL,GAAQwtB,mBACRH,EAASrtB,EAAQwtB,qBACVr3B,OAAOJ,OAASI,OAAOJ,MAAMK,QAAU4J,EAAQua,aAAapkB,OAAOJ,MAAM03B,KAAK,WACjFH,EAASn3B,OAAOJ,MAAM23B,eAAev3B,OAAOJ,MAAMK,OAAO4J,IACzDstB,IAAWA,EAAOK,iBAAmBL,EAAOM,gBAExCP,EADAC,EAAOK,gBACEL,EAAOK,kBAEPL,EAAOM,mBAIvBP,IAGDE,EAAU,GAAI/X,IAClB+X,EAAQ9X,SAASte,KAAKk2B,GAClB/hB,EAAOtL,EAAQS,wBACnB8sB,EAAQrqB,UAAUmB,IAAc0I,UAAUzB,EAAKnM,KAAMmM,EAAK3K,MAC1DqU,EAAM6J,OAAO0O,IACN,GAEX,QAASM,IAAY7tB,EAAS2S,EAAKqC,GAAnC,GACQ3a,GAAMypB,GAAc9jB,GACpB0P,EAAO,GAAIR,KACX7U,EAAI8E,KACJ9E,EAAIsG,MAEJtG,EAAIxC,MACJwC,EAAIvC,SAEJ4e,EAAQ,GAAI4T,IAAQ3X,EAAKjD,EAC7BiV,IAAYjO,EAAOyP,GAAgBnmB,EAAS3F,EAAK,YACjD2a,EAAM6J,OAAOnI,GAEjB,QAASoX,IAAWpvB,EAAGG,GAAvB,GACQkvB,GAAKjT,GAAmBpc,GACxBsvB,EAAKlT,GAAmBjc,GACxBovB,EAAK5rB,WAAW0Y,GAAiBgT,EAAI,YACrCG,EAAK7rB,WAAW0Y,GAAiBiT,EAAI,YACrCG,EAAKpT,GAAiBgT,EAAI,YAC1BvH,EAAKzL,GAAiBiT,EAAI,WAC9B,OAAIzxB,OAAM0xB,IAAO1xB,MAAM2xB,GACf,kBAAkBjb,KAAKkb,IAAO,kBAAkBlb,KAAKuT,GAC9C,EAED,UAAN2H,KAGM,UAAN3H,EACO,EAEJ,EAEPjqB,MAAM0xB,GACQ,IAAPC,EAAW,EAAIA,EAAK,KAAS,EAEpC3xB,MAAM2xB,GACQ,IAAPD,EAAW,EAAIA,EAAK,EAAI,KAE5B5rB,WAAW4rB,GAAM5rB,WAAW6rB,GAEvC,QAAS7B,IAAYrsB,GACjB,MAAO,+BAA+BiT,KAAKjT,EAAQsa,SAEvD,QAAS8T,IAAkBpuB,GACvB,MAAIA,GAAQquB,iBAAmBruB,EAAQquB,gBAAgB32B,OAAS,EACrDsI,EAAQquB,gBAAgB,GAE5BruB,EAAQlG,QAAQkG,EAAQsuB,eAEnC,QAASC,IAAevuB,EAASgV,GAAjC,GACQ/c,GAAQ6iB,GAAmB9a,GAC3B9B,EAAQ6c,GAAiB9iB,EAAO,SAChCoC,EAAM2F,EAAQS,uBACE,aAAhBT,EAAQoS,MACR4C,EAAM6J,OAAOmI,GAAKgG,SAAS,GAAI9d,KAC3B7U,EAAI8E,KAAO,EACX9E,EAAIsG,IAAM,IAEVtG,EAAIxC,MAAQ,EACZwC,EAAIvC,OAAS,KACbovB,OAAOhpB,EAAO,IACd8B,EAAQwuB,SACRxZ,EAAM6J,QAAO,GAAImI,KAAOE,OAAOhpB,EAAO,KAAKoQ,OAAOjU,EAAI8E,KAAO,IAAO9E,EAAIxC,MAAOwC,EAAIsG,IAAM,IAAOtG,EAAIvC,QAAQoc,OAAO7Z,EAAI8E,KAAO,IAAO9E,EAAIxC,MAAOwC,EAAIsG,IAAM,IAAOtG,EAAIvC,QAAQoc,OAAO7Z,EAAI8E,KAAO,IAAO9E,EAAIxC,MAAOwC,EAAIsG,IAAM,IAAOtG,EAAIxC,UAG1Omd,EAAM6J,OAAO,GAAI4P,IAAO,GAAIC,MACvBr0B,EAAI8E,KAAO9E,EAAI+E,OAAS,GACxB/E,EAAIsG,IAAMtG,EAAIgiB,QAAU,GAC1B7d,KAAKF,IAAIjE,EAAIxC,MAAQ,EAAGwC,EAAIvC,OAAS,GAAK,IAAIovB,OAAOhpB,EAAO,IAC3D8B,EAAQwuB,SACRxZ,EAAM6J,OAAO,GAAI4P,IAAO,GAAIC,MACvBr0B,EAAI8E,KAAO9E,EAAI+E,OAAS,GACxB/E,EAAIsG,IAAMtG,EAAIgiB,QAAU,GAC1B7d,KAAKF,IAAIjE,EAAIxC,MAAQ,EAAGwC,EAAIvC,OAAS,GAAK,IAAImvB,KAAK/oB,GAAOgpB,OAAO,QAIhF,QAASyH,IAAgB3uB,EAASgV,GAAlC,GAKQvV,GACAoc,EACA1E,EACAyX,EAUap3B,EAjBb6iB,EAAMra,EAAQsa,QAAQnM,aAC1B,IAAW,SAAPkM,IAAmC,YAAhBra,EAAQoS,MAAsC,SAAhBpS,EAAQoS,MACzD,MAAOmc,IAAevuB,EAASgV,EAanC,IAXIvV,EAAIO,EAAQlF,WACZ+gB,EAAM7b,EAAQmd,cACdhG,EAAK0E,EAAIjiB,cAAckuB,IAE3B3Q,EAAGlf,MAAM4B,QAAU2tB,GAAW1M,GAAmB9a,IACtC,SAAPqa,IACAlD,EAAGlf,MAAM42B,WAAa,OAEf,UAAPxU,GAA0B,YAAPA,IACnBlD,EAAGlf,MAAMqkB,SAAW,QAEb,UAAPjC,EACA,GAAIra,EAAQ8uB,SACR,IAASt3B,EAAI,EAAGA,EAAIwI,EAAQlG,QAAQpC,SAAUF,EAC1Co3B,EAAS/S,EAAIjiB,cAAckuB,IAC3B8G,EAAO32B,MAAM4B,QAAU2tB,GAAW1M,GAAmB9a,EAAQlG,QAAQtC,KACrEo3B,EAAO32B,MAAMqe,QAAU,QACvBsY,EAAOp0B,YAAcwF,EAAQlG,QAAQtC,GAAGgD,YACxC2c,EAAG1c,YAAYm0B,OAGnBA,GAASR,GAAkBpuB,GACvB4uB,IACAzX,EAAG3c,YAAco0B,EAAOp0B,iBAIhC2c,GAAG3c,YAAcwF,EAAQ9G,KAE7BuG,GAAEqa,aAAa3C,EAAInX,GACnBmX,EAAGnW,WAAahB,EAAQgB,WACxBmW,EAAGtW,UAAYb,EAAQa,UACvBb,EAAQ/H,MAAMqe,QAAU,OACxBiW,GAAepV,EAAInC,GACnBhV,EAAQ/H,MAAMqe,QAAU,GACxB7W,EAAE1E,YAAYoc,GAElB,QAASoV,IAAevsB,EAASgV,GAAjC,GASY+Z,GACAC,EAeAvZ,EAAewZ,EAAaC,EACvB13B,EAQGS,EACAk3B,EACAliB,CAhChB,QAHIsL,GAASG,iBAAiB1Y,UAAYA,IACtCuY,GAASG,iBAAiB1D,MAAQA,GAE9BhV,EAAQsa,QAAQnM,eACxB,IAAK,MACD0f,GAAY7tB,EAASA,EAAQrK,IAAKqf,EAClC,MACJ,KAAK,MACG+Z,GAAM,GAAI54B,QAAOi5B,eAAgBC,kBAAkBrvB,GACnDgvB,EAAU,6BAA+BvyB,EAAasyB,GAC1DlB,GAAY7tB,EAASgvB,EAASha,EAC9B,MACJ,KAAK,SACD,IACI6Y,GAAY7tB,EAASA,EAAQsvB,UAAU,aAActa,GACvD,MAAOyK,IAET,KACJ,KAAK,WACL,IAAK,QACL,IAAK,SACDkP,GAAgB3uB,EAASgV,EACzB,MACJ,SAEI,IADIS,KAAewZ,KAAaC,KACvB13B,EAAIwI,EAAQgb,WAAYxjB,EAAGA,EAAIA,EAAEyjB,YACtC,OAAQzjB,EAAE6a,UACV,IAAK,GACG,KAAKY,KAAKzb,EAAEwhB,OACZkG,GAAWlf,EAASxI,EAAGwd,EAE3B,MACJ,KAAK,GACG/c,EAAQ6iB,GAAmBtjB,GAC3B23B,EAAWpU,GAAiB9iB,EAAO,SACnCgV,EAAW8N,GAAiB9iB,EAAO,YACvB,UAAZgV,EACAiiB,EAAW/3B,KAAKK,GACG,QAAZ23B,EACPF,EAAO93B,KAAKK,GAEZie,EAASte,KAAKK,GAK1BiH,EAAUgX,EAAUqY,IAAYhW,QAAQ,SAAUX,GAC9C0B,GAAc1B,EAAInC,KAEtBvW,EAAUwwB,EAAQnB,IAAYhW,QAAQ,SAAUX,GAC5C0B,GAAc1B,EAAInC,KAEtBvW,EAAUywB,EAAYpB,IAAYhW,QAAQ,SAAUX,GAChD0B,GAAc1B,EAAInC,MAI9B,QAASkK,IAAWlf,EAAS0c,EAAM1H,GAmD/B,QAASua,GAA6BtkB,GAAtC,GAEYukB,GAAqCn1B,EAKlCo1B,EACEj4B,EACDqH,CARZ,IAAIqkB,IAAaJ,GAAQ4M,OAAQ,CAO7B,IANIF,EAAavkB,EAAMghB,iBAAkB5xB,GACjCsG,IAAKgvB,EAAAA,EACLvwB,QAAQuwB,EAAAA,GACRtT,SAASsT,EAAAA,GACTxwB,KAAMwwB,EAAAA,GACPF,GAAO,EACLj4B,EAAI,EAAGA,EAAIg4B,EAAW93B,SAAUF,EACjCqH,EAAI2wB,EAAWh4B,GACfqH,EAAEhH,OAAS,GAAKgH,EAAEwd,SAAWuT,IAGjCv1B,EAAI8E,KAAOX,KAAKF,IAAIO,EAAEM,KAAM9E,EAAI8E,MAChC9E,EAAIsG,IAAMnC,KAAKF,IAAIO,EAAE8B,IAAKtG,EAAIsG,KAC9BtG,EAAI+E,MAAQZ,KAAKD,IAAIM,EAAEO,MAAO/E,EAAI+E,OAClC/E,EAAIgiB,OAAS7d,KAAKD,IAAIM,EAAEwd,OAAQhiB,EAAIgiB,QACpCoT,GAAO,EAEX,OAAKA,IAGLp1B,EAAIxC,MAAQwC,EAAI+E,MAAQ/E,EAAI8E,KAC5B9E,EAAIvC,OAASuC,EAAIgiB,OAAShiB,EAAIsG,IACvBtG,GAJI4Q,EAAMxK,wBAMrB,MAAOwK,GAAMxK,wBAEjB,QAASovB,KAAT,GAEQx1B,GAQAy1B,EAKQhxB,EAyCRvH,EAIIw4B,EAEI5zB,EAUA6zB,EAvERC,EAAYhnB,EACPoP,EAAM3hB,EAAKw5B,OAAOjnB,GAAOknB,OAAO,KAEzC,IADAlnB,GAASoP,EACLA,EAAM,GAAKpP,GAAS0jB,EACpB,OAAO,CAkBX,IAhBA1hB,EAAMmlB,SAAS1T,EAAMzT,GACrBgC,EAAM8R,OAAOL,EAAMzT,EAAQ,GAC3B5O,EAAMk1B,EAA6BtkB,GAC/B6kB,GAAQ,GACRO,GAAeC,EAAc,KAC7BjY,EAAM3hB,EAAKw5B,OAAOjnB,GAAOknB,OAAO,MAC5B9X,GAAO,IACPpN,EAAM8R,OAAOL,EAAMzT,EAAQoP,GACvBvZ,EAAIywB,EAA6BtkB,GACjCnM,EAAEud,QAAUhiB,EAAIgiB,SAChBhiB,EAAMyE,EACNgxB,GAAQ,EACR7mB,GAASoP,MAIhByX,EAAO,CAiBR,GAhBAzX,EAAM,QAASkY,GAAQjyB,EAAKkyB,EAAKjyB,GAC7B0M,EAAM8R,OAAOL,EAAM8T,EACnB,IAAI1xB,GAAIywB,EAA6BtkB,EACrC,OAAInM,GAAEud,QAAUhiB,EAAIgiB,QAAU/d,EAAMkyB,EACzBD,EAAQjyB,EAAKA,EAAMkyB,GAAO,EAAGA,GAC7B1xB,EAAEM,OAAS/E,EAAI+E,OACtB/E,EAAMyE,EACF0xB,EAAMjyB,EACCgyB,EAAQC,EAAKA,EAAMjyB,GAAO,EAAGA,GAE7BiyB,GAGJA,GAEbvnB,EAAOzK,KAAKF,IAAIquB,EAAK1jB,EAAQwnB,GAAqB9D,GAChDtU,GAAOpP,EACP,OAAO,CAIX,IAFAA,EAAQoP,EACRA,GAAMpN,GAAAA,GAAiBklB,OAAO,QAClB,IAAR9X,EACA,OAAO,CAEPA,GAAM,IACNpN,EAAM8R,OAAOL,EAAMzR,EAAMylB,YAAcrY,GACvChe,EAAMk1B,EAA6BtkB,IAO3C,GAJIiY,KACA7oB,EAAM4Q,EAAMghB,iBAAiB,IAE7B10B,EAAM0T,GAAAA,EACL,sBAAsBgI,KAAK4b,IAEzB,GAAI,KAAK5b,KAAK1b,GAAM,CAEvB,IADIw4B,EAAK,EACJ1X,EAAM4X,EAAW5X,EAAMpN,EAAMylB,cAAerY,EACzClc,EAAOzF,EAAKiB,WAAW0gB,GACf,GAARlc,EACA4zB,GAAM,EAAIA,EAAK,EACA,IAAR5zB,GAAsB,IAARA,EACrB4zB,EAAK,EAELA,GAGR,OAAQ1X,EAAM9gB,EAAI44B,OAAO,QAAU,GAC3BH,EAAS,WAAWE,OAAO,EAAG,GAAKH,EAAK1X,GAAO,GACnD9gB,EAAMA,EAAI24B,OAAO,EAAG7X,GAAO2X,EAASz4B,EAAI24B,OAAO7X,EAAM,QAfzD9gB,GAAMA,EAAIX,QAAQ,OAAQ,IAkBzBk5B,KACDF,EAAiBv1B,EAAIgiB,QAEzB2C,EAASznB,EAAK8C,GAElB,QAAS2kB,GAASznB,EAAK8C,GAAvB,GAEYvC,GACA6I,EAuBJjK,CAbJ,QAZIwsB,KAAc3mB,MAAM0uB,KAChBnzB,EAAS64B,GAAc9Q,GACvBlf,GAAOtG,EAAIsG,IAAMtG,EAAIgiB,OAASvkB,GAAU,EAC5CuC,GACIsG,IAAKA,EACLvB,MAAO/E,EAAI+E,MACXid,OAAQ1b,EAAM7I,EACdqH,KAAM9E,EAAI8E,KACVrH,OAAQA,EACRD,MAAOwC,EAAI+E,MAAQ/E,EAAI8E,OAGvByxB,GACR,IAAK,YACDr5B,EAAMA,EAAI0M,aACV,MACJ,KAAK,YACD1M,EAAMA,EAAI4W,aACV,MACJ,KAAK,aACD5W,EAAMA,EAAIX,QAAQ,cAAe,SAAUi6B,GACvC,MAAOA,GAAE5sB,gBAIbvN,EAAO,GAAIo6B,IAASv5B,EAAK,GAAI2X,KAC7B7U,EAAI8E,KACJ9E,EAAIsG,MAEJtG,EAAIxC,MACJwC,EAAIvC,UAEJ+nB,KAAMA,EACNoH,MAAQ/oB,MAAOA,KAEnB8W,EAAM6J,OAAOnoB,GAEjB,QAASq6B,GAAS12B,GAId,QAAS22B,GAAK9yB,EAAO+yB,GAArB,GAEYp5B,GACA8b,CAFJzV,KACIrG,EAAQmzB,EAAW,GACnBrX,EAAO,GAAIqT,KACXE,QACIrvB,MAAOA,EACPqG,MAAOA,KAGf+yB,GAAQp5B,EACR8b,EAAKrF,OAAOjU,EAAI8E,KAAM8xB,GAAM/c,OAAO7Z,EAAI+E,MAAO6xB,GAC9Cjc,EAAM6J,OAAOlL,IAdrBqd,EAAKE,EAAW72B,EAAIgiB,QACpB2U,EAAKG,EAAa92B,EAAIgiB,OAAShiB,EAAIvC,OAAS,KAC5Ck5B,EAAKI,EAAU/2B,EAAIsG,KAzM3B,GAIQ1I,GAIAvB,EACAuS,EACA0jB,EAIA3B,EACAC,EACApL,EAYA3hB,EACA+M,EACAomB,EACAhB,EACAC,EACAzB,EACA+B,EACAH,EAIAb,EACAsB,EACAC,EACAC,EACAE,CA1CJ,KAAI7O,OAGAxqB,EAAQ6iB,GAAmB9a,KAC3BqC,WAAW0Y,GAAiB9iB,EAAO,wBAGnCvB,EAAOgmB,EAAK1D,KACZ/P,EAAQ,EACR0jB,EAAMj2B,EAAKy5B,OAAO,UAAY,EAC7BxD,IAGD3B,EAAWjQ,GAAiB9iB,EAAO,aACnCgzB,EAAalQ,GAAiB9iB,EAAO,eACrC4nB,GACA9E,GAAiB9iB,EAAO,cACxB8iB,GAAiB9iB,EAAO,gBACxB8iB,GAAiB9iB,EAAO,eACxB+yB,EACAjQ,GAAiB9iB,EAAO,gBAC1BZ,KAAK,KACP2zB,EAAW3oB,WAAW2oB,GACtBC,EAAa5oB,WAAW4oB,GACP,IAAbD,KAAJ,CAmBA,IAhBI9sB,EAAQ6c,GAAiB9iB,EAAO,SAChCgT,EAAQjL,EAAQmd,cAAcrB,cAC9BuV,EAAWtW,GAAiB9iB,EAAO,cACnCo4B,EAA0B,WAAZgB,EACdf,EAAcvV,GAAiB9iB,EAAO,eAAgB,GACtD42B,EAAa9T,GAAiB9iB,EAAO,eACrC24B,EAAgB7V,GAAiB9iB,EAAO,kBACxCw4B,EAAqBzwB,EAAQS,wBAAwB5I,MAAQmzB,EAAW,EACjD,IAAvByF,IACAA,EAAqB,KAErBb,EAAiB,KACjBsB,EAAY3Y,GAAoB,UAChC4Y,EAAc5Y,GAAS,gBACvB6Y,EAAW7Y,GAAmB,SAC9B+Y,EAAgBJ,GAAaC,GAAeC,GACxCvB,MAEJyB,IACArmB,EAAMsmB,WAAW7U,GACjB3F,GAAU9L,EAAMghB,kBAAkBnU,QAAQiZ,KA0KlD,QAASS,IAAuBxxB,EAASgV,EAAOyc,GAAhD,GACQC,GAQAhzB,EACKlH,EAKLuvB,EAKQ7nB,EACAJ,CAXZ,KARc,QAAV2yB,GACAC,EAAOnZ,GAASG,iBAAiB1D,MACjCyc,EAASpvB,WAAWovB,KAEpBC,EAAO1c,EACPyc,EAAS,GAET/yB,EAAIgzB,EAAKjc,SACJje,EAAI,EAAGA,EAAIkH,EAAEhH,UACM,MAApBgH,EAAElH,GAAGm6B,aAAuBjzB,EAAElH,GAAGm6B,YAAcF,KADvBj6B,GAehC,MAVIuvB,GAAM,GAAIvR,IACdkc,EAAKE,OAAOp6B,EAAGuvB,GACfA,EAAI4K,YAAcF,EACdC,IAAS1c,GACLuD,GAASC,WACLtZ,EAAIqZ,GAASE,QAAQoZ,SACrB/yB,EAAIyZ,GAASC,SAASjP,cAAcrK,GACxCylB,GAAYoC,EAAKC,GAAKgG,SAASluB,KAGhCioB,EAEX,QAASlO,IAAc7Y,EAASgW,GAAhC,GASQrB,GACAmd,EACAxb,EAIA0P,EACAhR,EACAyc,EAhBAx5B,EAAQ6iB,GAAmB9a,EAC/BihB,IAAehpB,GACX,kDAAkDgb,KAAKjT,EAAQsa,UAG1C,MAArB/B,GAASC,WAGT7D,EAAUtS,WAAW0Y,GAAiB9iB,EAAO,YAC7C65B,EAAa/W,GAAiB9iB,EAAO,cACrCqe,EAAUyE,GAAiB9iB,EAAO,WACtB,IAAZ0c,GAA+B,UAAdmd,GAAqC,QAAXxb,IAG3C0P,EAAK5B,GAAansB,GAElBw5B,EAAS1W,GAAiB9iB,EAAO,YAChC+tB,GAAMrR,EAAU,IAAgB,QAAV8c,IACvBA,EAAS,GAEbzc,EAAQwc,GAAuBxxB,EAASgW,EAAWyb,GAC/C9c,EAAU,GACVK,EAAML,QAAQA,EAAUK,EAAML,WAElCsK,GAAajf,EAAS/H,EAAO+c,GACxBgR,EAGDvC,GAAUzjB,EAAS,WAAA,GAMXsL,GACAhO,EACAE,EACA0B,CARJkkB,IAAuBpjB,EAAQ/H,MAAO,YAAa,OAAQ,aAC3DmrB,GAAuBpjB,EAAQ/H,MAAO,aAAc,OAAQ,aACjB,UAAvC8iB,GAAiB9iB,EAAO,aACxBmrB,GAAuBpjB,EAAQ/H,MAAO,WAAY,WAAY,aAE9DqT,EAAOtL,EAAQS,wBACfnD,EAAIgO,EAAKnM,KAAO6mB,EAAGxW,OAAO,GAC1BhS,EAAI8N,EAAK3K,IAAMqlB,EAAGxW,OAAO,GACzBtQ,GACA,EACA,EACA,EACA,GACC5B,GACAE,GAEL0B,EAAI6yB,GAAK7yB,EAAG8mB,EAAG5iB,QACflE,EAAI6yB,GAAK7yB,GACL,EACA,EACA,EACA,EACA5B,EACAE,IAEJ0B,EAAIoZ,GAAetD,EAAO9V,GAC1BqZ,GAASE,QAAUF,GAASE,QAAQjV,aAAatE,GACjDuoB,GAA0BznB,EAASgV,KA9BvCyS,GAA0BznB,EAASgV,GAiCvCoK,OAEJ,QAAS2S,IAAKrzB,EAAGG,GAAjB,GACQvI,GAAKoI,EAAE,GAAIszB,EAAKtzB,EAAE,GAAIuzB,EAAKvzB,EAAE,GAAIwzB,EAAKxzB,EAAE,GAAIyzB,EAAKzzB,EAAE,GAAI0zB,EAAK1zB,EAAE,GAC9DnI,EAAKsI,EAAE,GAAIwzB,EAAKxzB,EAAE,GAAIyzB,EAAKzzB,EAAE,GAAI0zB,EAAK1zB,EAAE,GAAI2zB,EAAK3zB,EAAE,GAAI4zB,EAAK5zB,EAAE,EAClE,QACIvI,EAAKC,EAAKy7B,EAAKM,EACfh8B,EAAK+7B,EAAKL,EAAKO,EACfN,EAAK17B,EAAK27B,EAAKI,EACfL,EAAKI,EAAKH,EAAKK,EACfJ,EAAK57B,EAAK67B,EAAKE,EAAKE,EACpBL,EAAKE,EAAKD,EAAKG,EAAKE,GAtwR/B,GAEOC,IACAC,GACAl9B,GACAgD,GACAm6B,GACAC,GACAjgB,GACAzd,GACAE,GACAy9B,GAwEAr3B,GAwEAE,GAIAE,GAIAG,GACAuQ,GACAC,GAIAhQ,GA8BAU,GAoFA61B,GA+FApwB,GAgHAD,GAgCAzM,GA8BA+8B,GACAC,GAuGAC,GAqBA5sB,GAgJA6sB,GA8CAjkB,GAuIA5K,GAgFA8uB,GA0IAC,GACA3E,GAsEA4E,GACAC,GA0CAC,GACAC,GAkDAC,GAkBAC,GACAlF,GAsCAnpB,GAwBAsuB,GACAC,GACAC,GAOA/O,GAmRA5tB,GACA48B,GACAnnB,GACApR,GACAyD,GACA+0B,GACAC,GAsGAC,GA+BA3pB,GAuJA4pB,GAeAzqB,GAKA0qB,GAsKA7lB,GA6IAhB,GAQAQ,GACAL,GACAW,GACAG,GAgFAwY,GA2MAqN,GAyFAC,GACAC,GAiDAC,GACAC,GACAC,GA2DApK,GA4CAqK,GAyBAnf,GAiIAjd,GAUAuf,GAGA8c,GAMAC,GA2JAC,GAsKAC,GA4BAC,GAeAl7B,GAKAm7B,GA8BAC,GA2DAC,GAIAlI,GAgBAmI,GA0DAC,GAKAC,GACAC,GA0CAC,GAwEAC,GACAC,GAuBAC,GA6EA11B,GAOA21B,GAkJAC,GACAlgB,GACAmgB,GACAC,GAIIC,GACAC,GACAC,GAYJC,GACAC,GACAC,GAoBAC,GA4RAC,GAqCAC,GA0CAC,GAuCAC,GAmCAC,GAiBAC,GAoFAxhB,GA0BAyhB,GAkCAC,GACAC,GACAC,GAMAlgC,GACAmgC,GAuLAC,GAcAC,GA2BAC,GAoBAC,GA8DAC,GAsBAC,GAoCAvkB,GAeAwkB,GAsEAC,GAiBAC,GA8EAC,GAyBAC,GA+FAC,GA4BAC,GACAC,GAmDAC,GA2CAC,GAYAC,GAsFAC,GACAC,GACAC,GACAC,GA8KAC,GA4DAC,GA+GAC,GAeAC,GAiBAC,GAsDAC,GAiBAC,GAwBAC,GAuCAviB,GAkKAwiB,GACAC,GACAC,GAGAC,GAGAC,GAGAC,GA0DAC,GAmCAC,GAmBAC,GAuDAzW,GAIAgF,GACAjG,GACAtJ,GAEAihB,GACAtW,GACA4N,GA0CA7Y,GAoCAoF,GAkeA2E,GAkIAlC,GAyDAC,GAcA4Q,GA6xDA36B,EAxwRJG,QAAOJ,MAAQI,OAAOJ,UAClB28B,GAAe38B,MAAMC,QACrB28B,GAAmBD,GAAaz8B,KAChCR,GAAek9B,GAAiBl9B,aAChCgD,GAAQ1C,MAAM0C,MACdm6B,GAAY78B,MAAME,KAClB48B,GAAU98B,MAAM88B,QAChBjgB,GAAiBigB,GAAQ/P,QACzB3tB,GAAgBw9B,GAAiBx9B,cACjCE,GAAas9B,GAAiBt9B,WAC9By9B,GAAe,SAAU2G,GACzB,QAAS3G,KACL2G,EAASjkC,MAAMqD,KAAMsqB,WAgEzB,MA9DA1tB,IAAaq9B,EAAc2G,GAC3B3G,EAAahwB,UAAY8U,OAAOzL,OAAOstB,GAAYA,EAAS32B,WAC5DgwB,EAAahwB,UAAU42B,YAAc5G,EACrCA,EAAahvB,GAAKgvB,EAAahwB,UAC/BgwB,EAAahvB,GAAGnL,KAAOm6B,EAAahvB,GAAG41B,YACvC5G,EAAahwB,UAAU62B,UAAY,WAE/B,MADA9gC,MAAK+gC,WAAa/gC,KAAK+gC,gBAG3B9G,EAAahwB,UAAU+2B,YAAc,SAAqB75B,GAMtD,MALKnH,MAAK+gC,WAGN/gC,KAAK+gC,WAAWziC,KAAK6I,GAFrBnH,KAAK+gC,YAAc55B,GAIhBnH,MAEXi6B,EAAahwB,UAAUg3B,eAAiB,SAAwB95B,GAAxB,GAChC25B,GAAY9gC,KAAK8gC,YACjBlc,EAAQkc,EAAU7mB,QAAQ9S,EAI9B,OAHIyd,SACAkc,EAAU/sB,OAAO6Q,EAAO,GAErB5kB,MAEXi6B,EAAahwB,UAAUi3B,QAAU,SAAiBC,EAAYC,GAA7B,GAGhB75B,GACD85B,EAHRP,EAAY9gC,KAAK+gC,UACrB,IAAID,IAAc9gC,KAAKshC,WACnB,IAAS/5B,EAAM,EAAGA,EAAMu5B,EAAUjiC,OAAQ0I,IAClC85B,EAAWP,EAAUv5B,GACrB85B,EAASF,IACTE,EAASF,GAAYC,EAIjC,OAAOphC,OAEXi6B,EAAahwB,UAAUs3B,cAAgB,SAAuB/8B,GAChD,SAANA,IACAA,MAEJA,EAAE2C,QAAUnH,KACZA,KAAKkhC,QAAQ,gBAAiB18B,IAElCy1B,EAAahwB,UAAUa,eAAiB,WACpC9K,KAAKkhC,QAAQ,kBAAoB/5B,QAASnH,QAE9Ci6B,EAAahwB,UAAUu3B,QAAU,WAE7B,MADAxhC,MAAKshC,YAActhC,KAAKshC,YAAc,GAAK,EACpCthC,MAEXi6B,EAAahwB,UAAUw3B,OAAS,WAE5B,MADAzhC,MAAKshC,WAAa37B,KAAKD,KAAK1F,KAAKshC,YAAc,GAAK,EAAG,GAChDthC,MAEXi6B,EAAahwB,UAAUmC,eAAiB,SAAwB7D,EAAOlI,GAC/DL,KAAKuI,IACLvI,KAAKuI,GAAO04B,eAAejhC,MAE/BA,KAAKuI,GAASlI,EACdA,EAAM2gC,YAAYhhC,OAEfi6B,GACTr6B,IAKEgD,IACA8+B,EAAG,IACHC,GAAI,IACJC,IAAK,IACLC,EAAG,KACHC,GAAI,KACJC,IAAK,KACLC,EAAG,MACHC,GAAI,MACJC,IAAK,MACLC,EAAG,KACHC,GAAI,KACJC,IAAK,KACLC,EAAG,IACHC,GAAI,IACJC,IAAK,IACLC,EAAG,KACHC,GAAI,KACJC,IAAK,KACLC,EAAG,MACHC,GAAI,MACJC,IAAK,MACLC,EAAG,OACHC,GAAI,OACJC,IAAK,OACLC,EAAG,KACHC,GAAI,KACJC,IAAK,KACLC,IAAM,KA4CNvgC,GAAY,YAIZE,GAAQ,EAIRG,GAAawC,KAAKiT,GAAK,IACvBlF,GAAU4vB,OAAOC,UACjB5vB,IAAW2vB,OAAOC,UAIlB5/B,GAAe7F,OAAO6F,aA8BtBU,GAAU,oEAoFV61B,GAAMsJ,KAAKtJ,KAAO,WAClB,OAAO,GAAIsJ,OAAOC,WA8FlB35B,GAAS,SAAU82B,GACnB,QAAS92B,GAAOjE,EAAGG,EAAG4E,EAAGqB,EAAGzH,EAAGrI,GACjB,SAAN0J,IACAA,EAAI,GAEE,SAANG,IACAA,EAAI,GAEE,SAAN4E,IACAA,EAAI,GAEE,SAANqB,IACAA,EAAI,GAEE,SAANzH,IACAA,EAAI,GAEE,SAANrI,IACAA,EAAI,GAERykC,EAASxiB,KAAKpe,MACdA,KAAK6F,EAAIA,EACT7F,KAAKgG,EAAIA,EACThG,KAAK4K,EAAIA,EACT5K,KAAKiM,EAAIA,EACTjM,KAAKwE,EAAIA,EACTxE,KAAK7D,EAAIA,EAmFb,MAjFAS,IAAakN,EAAQ82B,GACrB92B,EAAOG,UAAY8U,OAAOzL,OAAOstB,GAAYA,EAAS32B,WACtDH,EAAOG,UAAU42B,YAAc/2B,EAC/BA,EAAOmB,GAAKnB,EAAOG,UACnBH,EAAOmB,GAAGnL,KAAOgK,EAAOmB,GAAG41B,YAC3B/2B,EAAOG,UAAUU,aAAe,SAAsBJ,GAClD,MAAO,IAAIT,GAAO9J,KAAK6F,EAAI0E,EAAO1E,EAAI7F,KAAK4K,EAAIL,EAAOvE,EAAGhG,KAAKgG,EAAIuE,EAAO1E,EAAI7F,KAAKiM,EAAI1B,EAAOvE,EAAGhG,KAAK6F,EAAI0E,EAAOK,EAAI5K,KAAK4K,EAAIL,EAAO0B,EAAGjM,KAAKgG,EAAIuE,EAAOK,EAAI5K,KAAKiM,EAAI1B,EAAO0B,EAAGjM,KAAK6F,EAAI0E,EAAO/F,EAAIxE,KAAK4K,EAAIL,EAAOpO,EAAI6D,KAAKwE,EAAGxE,KAAKgG,EAAIuE,EAAO/F,EAAIxE,KAAKiM,EAAI1B,EAAOpO,EAAI6D,KAAK7D,IAE/Q2N,EAAOG,UAAU+uB,OAAS,WAAA,GAClB3vB,GAAMrJ,KACN6F,EAAIwD,EAAIxD,EACRG,EAAIqD,EAAIrD,EACRiG,EAAI5C,EAAIuB,EACRpG,EAAI6E,EAAI4C,EACRonB,EAAIhqB,EAAI7E,EACRk/B,EAAIr6B,EAAIlN,EACRwnC,EAAM99B,EAAIrB,EAAIwB,EAAIiG,CACtB,OAAY,KAAR03B,EACO,KAEJ,GAAI75B,GAAOtF,EAAIm/B,GAAM39B,EAAI29B,GAAM13B,EAAI03B,EAAK99B,EAAI89B,GAAM13B,EAAIy3B,EAAIl/B,EAAI6uB,GAAKsQ,GAAM39B,EAAIqtB,EAAIxtB,EAAI69B,GAAKC,IAErG75B,EAAOG,UAAUqK,MAAQ,WACrB,MAAO,IAAIxK,GAAO9J,KAAK6F,EAAG7F,KAAKgG,EAAGhG,KAAK4K,EAAG5K,KAAKiM,EAAGjM,KAAKwE,EAAGxE,KAAK7D,IAEnE2N,EAAOG,UAAU25B,OAAS,SAAgBC,GACtC,QAAKA,IAGE7jC,KAAK6F,IAAMg+B,EAAMh+B,GAAK7F,KAAKgG,IAAM69B,EAAM79B,GAAKhG,KAAK4K,IAAMi5B,EAAMj5B,GAAK5K,KAAKiM,IAAM43B,EAAM53B,GAAKjM,KAAKwE,IAAMq/B,EAAMr/B,GAAKxE,KAAK7D,IAAM0nC,EAAM1nC,IAE1I2N,EAAOG,UAAUpD,MAAQ,SAAiBC,GAOtC,MANA9G,MAAK6F,EAAIgB,EAAM7G,KAAK6F,EAAGiB,GACvB9G,KAAKgG,EAAIa,EAAM7G,KAAKgG,EAAGc,GACvB9G,KAAK4K,EAAI/D,EAAM7G,KAAK4K,EAAG9D,GACvB9G,KAAKiM,EAAIpF,EAAM7G,KAAKiM,EAAGnF,GACvB9G,KAAKwE,EAAIqC,EAAM7G,KAAKwE,EAAGsC,GACvB9G,KAAK7D,EAAI0K,EAAM7G,KAAK7D,EAAG2K,GAChB9G,MAEX8J,EAAOG,UAAU65B,QAAU,SAAiBh9B,GAAjB,GAUVnI,GATT6J,GACAxI,KAAK6F,EACL7F,KAAKgG,EACLhG,KAAK4K,EACL5K,KAAKiM,EACLjM,KAAKwE,EACLxE,KAAK7D,EAET,IAAI0G,EAAQiE,GACR,IAASnI,EAAI,EAAGA,EAAI6J,EAAO3J,OAAQF,IAC/B6J,EAAO7J,GAAKkI,EAAM2B,EAAO7J,GAAImI,EAGrC,OAAO0B,IAEXsB,EAAOG,UAAU85B,SAAW,SAAkBj9B,EAAW4nB,GAIrD,MAHkB,UAAdA,IACAA,EAAY,KAET1uB,KAAK8jC,QAAQh9B,GAAWtI,KAAKkwB,IAExC5kB,EAAOoK,UAAY,SAAmBzP,EAAGE,GACrC,MAAO,IAAImF,GAAO,EAAG,EAAG,EAAG,EAAGrF,EAAGE,IAErCmF,EAAOC,KAAO,WACV,MAAO,IAAID,GAAO,EAAG,EAAG,EAAG,EAAG,EAAG,IAErCA,EAAO6G,OAAS,SAAgBvB,EAAO3K,EAAGE,GACtC,GAAI4F,GAAS,GAAIT,EAOjB,OANAS,GAAO1E,EAAIF,KAAKkI,IAAIpH,EAAI2I,IACxB7E,EAAOvE,EAAIL,KAAKmI,IAAIrH,EAAI2I,IACxB7E,EAAOK,GAAKL,EAAOvE,EACnBuE,EAAO0B,EAAI1B,EAAO1E,EAClB0E,EAAO/F,EAAIC,EAAIA,EAAI8F,EAAO1E,EAAIlB,EAAI4F,EAAOvE,GAAK,EAC9CuE,EAAOpO,EAAIwI,EAAIA,EAAI4F,EAAO1E,EAAIpB,EAAI8F,EAAOvE,GAAK,EACvCuE,GAEXT,EAAOyK,MAAQ,SAAeyvB,EAAQC,GAClC,MAAO,IAAIn6B,GAAOk6B,EAAQ,EAAG,EAAGC,EAAQ,EAAG,IAExCn6B,GACTlK,IACFkK,GAAOo6B,SAAWp6B,GAAOC,OACrBF,GAAe,iBAgCfzM,IACA4oB,OAAQ5jB,EACRG,cAAeA,EACfjG,cAAeA,GACfuG,QAASA,EACTE,aAAcA,EACdE,IAAKA,EACLW,aAAcA,EACdW,iBAAkBA,EAClBS,aAAcA,EACdI,cAAeA,EACfE,KAAMA,EACNE,WAAYA,EACZI,UAAWA,EACXs0B,IAAKA,GACL19B,WAAYA,GACZiK,IAAKA,EACLI,MAAOA,EACPG,eAAgBA,EAChBE,WAAYA,EACZS,cAAeA,EACfmB,YAAaA,EACbT,cAAeA,EACfY,aAAcA,EACdG,eAAgBA,EAChBkB,aAAcA,EACdnH,WAAYA,GACZuQ,QAASA,GACTC,QAASA,IAETwmB,MAAgB4J,SAChB3J,GAAe,SAAU+J,GACzB,QAAS/J,GAAan5B,EAASmjC,GAA/B,GAOa77B,GACDvL,EAPJqnC,EAASrkC,IACE,UAAXokC,IACAA,EAAS,IAEbD,EAAgB/lB,KAAKpe,MACrBA,KAAKokC,OAASA,CACd,KAAS77B,IAAStH,GACVjE,EAASiE,EAAQsH,GACrBvL,EAASqnC,EAAOC,MAAMtnC,EAAQuL,GAC9B87B,EAAO97B,GAASvL,EAoExB,MAjEAJ,IAAaw9B,EAAc+J,GAC3B/J,EAAanwB,UAAY8U,OAAOzL,OAAO6wB,GAAmBA,EAAgBl6B,WAC1EmwB,EAAanwB,UAAU42B,YAAczG,EACrCA,EAAanvB,GAAKmvB,EAAanwB,UAC/BmwB,EAAanvB,GAAGnL,KAAOs6B,EAAanvB,GAAG41B,YACvCzG,EAAanwB,UAAUrJ,IAAM,SAAa2H,GAGtC,IAHyB,GAIjBg8B,GAHJlmC,EAAQkK,EAAMd,MAAM,KACpBe,EAASxI,KACN3B,EAAMQ,QAAU2J,GACf+7B,EAAOlmC,EAAMsE,QACjB6F,EAASA,EAAO+7B,EAEpB,OAAO/7B,IAEX4xB,EAAanwB,UAAUwO,IAAM,SAAalQ,EAAOlI,GAC7C,GAAId,GAAUS,KAAKY,IAAI2H,EACnBhJ,KAAYc,IACZL,KAAKwkC,KAAKj8B,EAAOvI,KAAKskC,MAAMjkC,EAAOkI,IACnCvI,KAAKuhC,eACDh5B,MAAOvI,KAAKokC,OAAS77B,EACrBlI,MAAOA,MAInB+5B,EAAanwB,UAAUu6B,KAAO,SAAcj8B,EAAOlI,GAArB,GAMlBhC,GACA+lC,EAII3c,EAVR4c,EAASrkC,KACTykC,EAAYl8B,EAAM0R,QAAQ,MAAQ,EAClCyqB,EAAY1kC,KACZmM,EAAY5D,CAChB,IAAIk8B,EAAW,CAGX,IAFIpmC,EAAQ8N,EAAU1E,MAAM,KACxB28B,EAASpkC,KAAKokC,OACX/lC,EAAMQ,OAAS,GAClBsN,EAAY9N,EAAMsE,QAClByhC,GAAUj4B,EAAY,IAClBsb,EAAMid,EAAUv4B,GACfsb,IACDA,EAAM,GAAI2S,MAAiBgK,GAC3B3c,EAAIuZ,YAAYqD,GAChBK,EAAUv4B,GAAasb,GAE3Bid,EAAYjd,CAEhBtb,GAAY9N,EAAM,GAEtBqmC,EAAUC,OAAOx4B,GACjBu4B,EAAUv4B,GAAa9L,GAE3B+5B,EAAanwB,UAAU06B,OAAS,SAAgBp8B,GAC5C,GAAIhJ,GAAUS,KAAKuI,EACfhJ,IAAWA,EAAQ0hC,gBACnB1hC,EAAQ0hC,eAAejhC,OAG/Bo6B,EAAanwB,UAAUq6B,MAAQ,SAAenmC,EAAQoK,GAAvB,GACvBgR,GAAO4gB,GAAW/b,KAAKjgB,GACvBymC,EAAUzmC,CAOd,OANgB,QAAZymC,GAAoB/hC,EAAQ+hC,IAAqB,oBAATrrB,IAClCpb,YAAkBi8B,IAAmBj8B,YAAkByB,MACzDglC,EAAU,GAAIxK,GAAawK,EAAS5kC,KAAKokC,OAAS77B,EAAQ,MAE9Dq8B,EAAQ5D,YAAYhhC,OAEjB4kC,GAEJxK,GACTH,IAuBEI,GAAgB,SAAUwK,EAAOv4B,GACjC,GAAI9D,GAAS,SAAUq8B,GACnB,QAASr8B,KACLq8B,EAAMloC,MAAMqD,KAAMsqB,WAOtB,MALA1tB,IAAa4L,EAAQq8B,GACrBr8B,EAAOyB,UAAY8U,OAAOzL,OAAOuxB,GAASA,EAAM56B,WAChDzB,EAAOyB,UAAU42B,YAAcr4B,EAC/BA,EAAOyC,GAAKzC,EAAOyB,UACnBzB,EAAOyC,GAAGnL,KAAO0I,EAAOyC,GAAG41B,YACpBr4B,GACTq8B,EAEF,OADA75B,GAAgBxC,EAAOyB,UAAWqC,GAC3B9D,GAQPiF,GAAQ,SAAUq3B,GAClB,QAASr3B,GAAMhJ,EAAGE,GACdmgC,EAAW1mB,KAAKpe,MAChBA,KAAKyE,EAAIA,GAAK,EACdzE,KAAK2E,EAAIA,GAAK,EAElB/H,GAAa6Q,EAAOq3B,GACpBr3B,EAAMxD,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WACzDwD,EAAMxD,UAAU42B,YAAcpzB,EAC9BA,EAAMxC,GAAKwC,EAAMxD,UACjBwD,EAAMxC,GAAGnL,KAAO2N,EAAMxC,GAAG41B,WACzB,IAAIkE,IAAoBC,QAgIxB,OA/HAv3B,GAAMxD,UAAU25B,OAAS,SAAgBC,GACrC,MAAOA,IAASA,EAAMp/B,IAAMzE,KAAKyE,GAAKo/B,EAAMl/B,IAAM3E,KAAK2E,GAE3D8I,EAAMxD,UAAUqK,MAAQ,WACpB,MAAO,IAAI7G,GAAMzN,KAAKyE,EAAGzE,KAAK2E,IAElC8I,EAAMxD,UAAU0G,OAAS,SAAgBvB,EAAOuH,GAC5C,GAAIsuB,GAAcx3B,EAAM6F,OAAOqD,IAAWlJ,EAAMu3B,IAChD,OAAOhlC,MAAKqK,UAAUP,GAAO6G,OAAOvB,EAAO61B,EAAYxgC,EAAGwgC,EAAYtgC,KAE1E8I,EAAMxD,UAAUiK,UAAY,SAAmBzP,EAAGE,GAI9C,MAHA3E,MAAKyE,GAAKA,EACVzE,KAAK2E,GAAKA,EACV3E,KAAK8K,iBACE9K,MAEXyN,EAAMxD,UAAUwK,cAAgB,SAAuBjE,GACnD,MAAOxQ,MAAKkU,UAAU1D,EAAM/L,EAAG+L,EAAM7L,IAEzC8I,EAAMxD,UAAUi7B,KAAO,SAAczgC,EAAGE,GAEpC,MADA3E,MAAKyE,EAAIzE,KAAK2E,EAAI,EACX3E,KAAKkU,UAAUzP,EAAGE,IAE7B8I,EAAMxD,UAAUsK,MAAQ,SAAeyvB,EAAQC,GAO3C,MANe,UAAXA,IACAA,EAASD,GAEbhkC,KAAKyE,GAAKu/B,EACVhkC,KAAK2E,GAAKs/B,EACVjkC,KAAK8K,iBACE9K,MAEXyN,EAAMxD,UAAUgK,UAAY,SAAmB+vB,EAAQC,GACnD,MAAOjkC,MAAKsU,QAAQC,MAAMyvB,EAAQC,IAEtCx2B,EAAMxD,UAAUI,UAAY,SAAmBkB,GAAnB,GACpBhB,GAASe,EAASC,GAClBlC,EAAMrJ,KACNyE,EAAI4E,EAAI5E,EACRE,EAAI0E,EAAI1E,CAIZ,OAHA3E,MAAKyE,EAAI8F,EAAO1E,EAAIpB,EAAI8F,EAAOK,EAAIjG,EAAI4F,EAAO/F,EAC9CxE,KAAK2E,EAAI4F,EAAOvE,EAAIvB,EAAI8F,EAAO0B,EAAItH,EAAI4F,EAAOpO,EAC9C6D,KAAK8K,iBACE9K,MAEXyN,EAAMxD,UAAUyG,cAAgB,SAAuBnF,GACnD,GAAIiF,GAAQxQ,KAAKsU,OAIjB,OAHI/I,IACAiF,EAAMnG,UAAUkB,GAEbiF,GAEX/C,EAAMxD,UAAUk7B,WAAa,SAAoB30B,GAApB,GACrB40B,GAAKplC,KAAKyE,EAAI+L,EAAM/L,EACpB4gC,EAAKrlC,KAAK2E,EAAI6L,EAAM7L,CACxB,OAAOgB,MAAKmK,KAAKs1B,EAAKA,EAAKC,EAAKA,IAEpC53B,EAAMxD,UAAUpD,MAAQ,SAAiBy+B,GAIrC,MAHAtlC,MAAKyE,EAAIoC,EAAM7G,KAAKyE,EAAG6gC,GACvBtlC,KAAK2E,EAAIkC,EAAM7G,KAAK2E,EAAG2gC,GACvBtlC,KAAK8K,iBACE9K,MAEXyN,EAAMxD,UAAU65B,QAAU,SAAiBwB,GAAjB,GAClBC,GAAU1iC,EAAQyiC,GAClB7gC,EAAI8gC,EAAU1+B,EAAM7G,KAAKyE,EAAG6gC,GAAUtlC,KAAKyE,EAC3CE,EAAI4gC,EAAU1+B,EAAM7G,KAAK2E,EAAG2gC,GAAUtlC,KAAK2E,CAC/C,QACIF,EACAE,IAGR8I,EAAMxD,UAAU85B,SAAW,SAAkBuB,EAAQ5W,GAA1B,GAInBrlB,GACA5E,EACAE,CAKJ,OAVkB,UAAd+pB,IACAA,EAAY,KAEZrlB,EAAMrJ,KACNyE,EAAI4E,EAAI5E,EACRE,EAAI0E,EAAI1E,EACR9B,EAAQyiC,KACR7gC,EAAIoC,EAAMpC,EAAG6gC,GACb3gC,EAAIkC,EAAMlC,EAAG2gC,IAEV7gC,EAAIiqB,EAAY/pB,GAE3B8I,EAAM6F,OAAS,SAAgBkyB,EAAMC,GACjC,GAAI5iC,EAAQ2iC,GACR,MAAIA,aAAgB/3B,GACT+3B,EACqB,IAArBlb,UAAUzrB,QAAgC,IAAhB2mC,EAAK3mC,OAC/B,GAAI4O,GAAM+3B,EAAK,GAAIA,EAAK,IAE5B,GAAI/3B,GAAM+3B,EAAMC,IAG/Bh4B,EAAMhI,IAAM,WAAA,GAIC9G,GACD6R,EAJJk1B,EAAcpb,UACdtX,EAAOU,GACPR,EAAOQ,EACX,KAAS/U,EAAI,EAAGA,EAAI2rB,UAAUzrB,OAAQF,IAC9B6R,EAAQk1B,EAAY/mC,GACxBqU,EAAOrN,KAAKF,IAAI+K,EAAM/L,EAAGuO,GACzBE,EAAOvN,KAAKF,IAAI+K,EAAM7L,EAAGuO,EAE7B,OAAO,IAAIzF,GAAMuF,EAAME,IAE3BzF,EAAM/H,IAAM,WAAA,GAIC/G,GACD6R,EAJJk1B,EAAcpb,UACdrX,EAAOU,GACPR,EAAOQ,EACX,KAAShV,EAAI,EAAGA,EAAI2rB,UAAUzrB,OAAQF,IAC9B6R,EAAQk1B,EAAY/mC,GACxBsU,EAAOtN,KAAKD,IAAI8K,EAAM/L,EAAGwO,GACzBE,EAAOxN,KAAKD,IAAI8K,EAAM7L,EAAGwO,EAE7B,OAAO,IAAI1F,GAAMwF,EAAME,IAE3B1F,EAAMk4B,SAAW,WACb,MAAO,IAAIl4B,GAAMkG,GAASA,KAE9BlG,EAAMm4B,SAAW,WACb,MAAO,IAAIn4B,GAAMiG,GAASA,KAE9BqxB,EAAgBC,KAAKpkC,IAAM,WACvB,MAAO,IAAI6M,GAAM,EAAG,IAExBsR,OAAO8mB,iBAAiBp4B,EAAOs3B,GACxBt3B,GACT4sB,GAAcJ,IACZ,IACA,OAEAK,GAAO,SAAUwK,GACjB,QAASxK,GAAKt7B,EAAOC,GACjB6lC,EAAW1mB,KAAKpe,MAChBA,KAAKhB,MAAQA,GAAS,EACtBgB,KAAKf,OAASA,GAAU,EAE5BrC,GAAa09B,EAAMwK,GACnBxK,EAAKrwB,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WACxDqwB,EAAKrwB,UAAU42B,YAAcvG,EAC7BA,EAAKrvB,GAAKqvB,EAAKrwB,UACfqwB,EAAKrvB,GAAGnL,KAAOw6B,EAAKrvB,GAAG41B,WACvB,IAAIkE,IAAoBC,QA8BxB,OA7BA1K,GAAKrwB,UAAU25B,OAAS,SAAgBC,GACpC,MAAOA,IAASA,EAAM7kC,QAAUgB,KAAKhB,OAAS6kC,EAAM5kC,SAAWe,KAAKf,QAExEq7B,EAAKrwB,UAAUqK,MAAQ,WACnB,MAAO,IAAIgmB,GAAKt6B,KAAKhB,MAAOgB,KAAKf,SAErCq7B,EAAKrwB,UAAU65B,QAAU,SAAiBwB,GAAjB,GACjBC,GAAU1iC,EAAQyiC,GAClBtmC,EAAQumC,EAAU1+B,EAAM7G,KAAKhB,MAAOsmC,GAAUtlC,KAAKhB,MACnDC,EAASsmC,EAAU1+B,EAAM7G,KAAKf,OAAQqmC,GAAUtlC,KAAKf,MACzD,QACID,EACAC,IAGRq7B,EAAKhnB,OAAS,SAAgBkyB,EAAMC,GAChC,GAAI5iC,EAAQ2iC,GACR,MAAIA,aAAgBlL,GACTkL,EACqB,IAArBlb,UAAUzrB,QAAgC,IAAhB2mC,EAAK3mC,OAC/B,GAAIy7B,GAAKkL,EAAK,GAAIA,EAAK,IAE3B,GAAIlL,GAAKkL,EAAMC,IAG9BV,EAAgBC,KAAKpkC,IAAM,WACvB,MAAO,IAAI05B,GAAK,EAAG,IAEvBvb,OAAO8mB,iBAAiBvL,EAAMyK,GACvBzK,GACTD,GAAcJ,IACZ,QACA,YAEA5jB,GAAO,SAAU8tB,GACjB,QAAS9tB,GAAKM,EAAQ5W,EAAM+lC,GACT,SAAXnvB,IACAA,EAAS,GAAIlJ,KAEJ,SAAT1N,IACAA,EAAO,GAAIu6B,KAEM,SAAjBwL,IACAA,EAAe,GAEnB3B,EAAgB/lB,KAAKpe,MACrBA,KAAK+lC,UAAUpvB,GACf3W,KAAKgmC,QAAQjmC,GACbC,KAAKimC,gBAAgBH,GAuHzB,MArHAlpC,IAAayZ,EAAM8tB,GACnB9tB,EAAKpM,UAAY8U,OAAOzL,OAAO6wB,GAAmBA,EAAgBl6B,WAClEoM,EAAKpM,UAAU42B,YAAcxqB,EAC7BA,EAAKpL,GAAKoL,EAAKpM,UACfoM,EAAKpL,GAAGnL,KAAOuW,EAAKpL,GAAG41B,YACvBxqB,EAAKpM,UAAUqK,MAAQ,WACnB,MAAO,IAAI+B,GAAKrW,KAAK2W,OAAOrC,QAAStU,KAAKD,KAAKuU,UAEnD+B,EAAKpM,UAAU25B,OAAS,SAAgBC,GACpC,MAAOA,IAASA,EAAMltB,OAAOitB,OAAO5jC,KAAK2W,SAAWktB,EAAM9jC,KAAK6jC,OAAO5jC,KAAKD,OAE/EsW,EAAKpM,UAAU87B,UAAY,SAAmB1lC,GAG1C,MAFAL,MAAKoM,eAAe,SAAUqB,GAAM6F,OAAOjT,IAC3CL,KAAK8K,iBACE9K,MAEXqW,EAAKpM,UAAUyS,UAAY,WACvB,MAAO1c,MAAK2W,QAEhBN,EAAKpM,UAAUg8B,gBAAkB,SAAyBC,GAMtD,MALAlmC,MAAK8lC,aAAen9B,MAAMC,QAAQs9B,GAAUA,GACxCA,EACAA,GAEJlmC,KAAK8K,iBACE9K,MAEXqW,EAAKpM,UAAUk8B,gBAAkB,WAC7B,MAAOnmC,MAAK8lC,cAEhBzvB,EAAKpM,UAAU+7B,QAAU,SAAiB3lC,GAGtC,MAFAL,MAAKoM,eAAe,OAAQkuB,GAAKhnB,OAAOjT,IACxCL,KAAK8K,iBACE9K,MAEXqW,EAAKpM,UAAUuT,QAAU,WACrB,MAAOxd,MAAKD,MAEhBsW,EAAKpM,UAAUjL,MAAQ,WACnB,MAAOgB,MAAKD,KAAKf,OAErBqX,EAAKpM,UAAUhL,OAAS,WACpB,MAAOe,MAAKD,KAAKd,QAErBoX,EAAKpM,UAAUm8B,QAAU,WACrB,MAAOpmC,MAAK2W,OAAOrC,SAEvB+B,EAAKpM,UAAU4I,YAAc,WACzB,MAAO7S,MAAK2W,OAAOrC,QAAQJ,UAAUlU,KAAKhB,QAASgB,KAAKf,WAE5DoX,EAAKpM,UAAUo8B,SAAW,WACtB,MAAOrmC,MAAK2W,OAAOrC,QAAQJ,UAAUlU,KAAKhB,QAAS,IAEvDqX,EAAKpM,UAAUq8B,WAAa,WACxB,MAAOtmC,MAAK2W,OAAOrC,QAAQJ,UAAU,EAAGlU,KAAKf,WAEjDoX,EAAKpM,UAAU0B,OAAS,WACpB,MAAO3L,MAAK2W,OAAOrC,QAAQJ,UAAUlU,KAAKhB,QAAU,EAAGgB,KAAKf,SAAW,IAE3EoX,EAAKpM,UAAUwI,KAAO,SAAclI,GAAd,GACd2iB,GAAKltB,KAAKomC,UAAU11B,cAAcnG,GAClC4iB,EAAKntB,KAAKqmC,WAAW31B,cAAcnG,GACnC6iB,EAAKptB,KAAK6S,cAAcnC,cAAcnG,GACtC8iB,EAAKrtB,KAAKsmC,aAAa51B,cAAcnG,EACzC,OAAO8L,GAAKkwB,WAAWrZ,EAAIC,EAAIC,EAAIC,IAEvChX,EAAKpM,UAAUyG,cAAgB,SAAuBrK,GAClD,MAAOgQ,GAAKkwB,WAAWvmC,KAAKomC,UAAU/7B,UAAUhE,GAAIrG,KAAK6S,cAAcxI,UAAUhE,KAErFgQ,EAAKpM,UAAUu8B,OAAS,SAAgB/hC,EAAGE,GAOvC,MANU,UAANA,IACAA,EAAIF,GAERzE,KAAKD,KAAKf,OAAS,EAAIyF,EACvBzE,KAAKD,KAAKd,QAAU,EAAI0F,EACxB3E,KAAK2W,OAAOzC,WAAWzP,GAAIE,GACpB3E,MAEXqW,EAAKpM,UAAUw8B,WAAa,SAAoBhiC,EAAGE,GAC/C,MAAO3E,MAAKsU,QAAQkyB,OAAO/hC,EAAGE,IAElC0R,EAAKpM,UAAUy8B,cAAgB,SAAuBl2B,GAAvB,GACvBmG,GAAS3W,KAAK2W,OACd9D,EAAc7S,KAAK6S,aACvB,SAASrC,EAAM/L,EAAIkS,EAAOlS,GAAK+L,EAAM7L,EAAIgS,EAAOhS,GAAKkO,EAAYpO,EAAI+L,EAAM/L,GAAKoO,EAAYlO,EAAI6L,EAAM7L,IAE1G0R,EAAKpM,UAAU08B,UAAY,SAAmBn2B,EAAOxR,GAA1B,GACnB4nC,GAAY5mC,KAAKymC,WAAWznC,EAAOA,GACnC6nC,EAAY7mC,KAAKymC,YAAYznC,GAAQA,EACzC,OAAO4nC,GAAUF,cAAcl2B,KAAWq2B,EAAUH,cAAcl2B,IAEtE6F,EAAKkwB,WAAa,WAAA,GACVH,GAAU34B,GAAMhI,IAAI9I,MAAM,KAAM2tB,WAChCzX,EAAcpF,GAAM/H,IAAI/I,MAAM,KAAM2tB,WACpCvqB,EAAO,GAAIu6B,IAAKznB,EAAYpO,EAAI2hC,EAAQ3hC,EAAGoO,EAAYlO,EAAIyhC,EAAQzhC,EACvE,OAAO,IAAI0R,GAAK+vB,EAASrmC,IAE7BsW,EAAKC,MAAQ,SAAezQ,EAAGG,GAC3B,MAAOqQ,GAAKkwB,WAAW94B,GAAMhI,IAAII,EAAEugC,UAAWpgC,EAAEogC,WAAY34B,GAAM/H,IAAIG,EAAEgN,cAAe7M,EAAE6M,iBAE7FwD,EAAKsT,UAAY,SAAmB9jB,EAAGG,GAAtB,GACT8gC,IACAxgC,KAAMT,EAAEugC,UAAU3hC,EAClBqD,IAAKjC,EAAEugC,UAAUzhC,EACjB4B,MAAOV,EAAEgN,cAAcpO,EACvB+e,OAAQ3d,EAAEgN,cAAclO,GAExBoiC,GACAzgC,KAAMN,EAAEogC,UAAU3hC,EAClBqD,IAAK9B,EAAEogC,UAAUzhC,EACjB4B,MAAOP,EAAE6M,cAAcpO,EACvB+e,OAAQxd,EAAE6M,cAAclO,EAE5B,IAAImiC,EAAMxgC,MAAQygC,EAAMxgC,OAASwgC,EAAMzgC,MAAQwgC,EAAMvgC,OAASugC,EAAMh/B,KAAOi/B,EAAMvjB,QAAUujB,EAAMj/B,KAAOg/B,EAAMtjB,OAC1G,MAAOnN,GAAKkwB,WAAW,GAAI94B,IAAM9H,KAAKD,IAAIohC,EAAMxgC,KAAMygC,EAAMzgC,MAAOX,KAAKD,IAAIohC,EAAMh/B,IAAKi/B,EAAMj/B,MAAO,GAAI2F,IAAM9H,KAAKF,IAAIqhC,EAAMvgC,MAAOwgC,EAAMxgC,OAAQZ,KAAKF,IAAIqhC,EAAMtjB,OAAQujB,EAAMvjB,WAGhLnN,GACT4jB,IACExuB,GAAiB,SAAU04B,GAC3B,QAAS14B,GAAelB,GACL,SAAXA,IACAA,EAAST,GAAOC,QAEpBo6B,EAAgB/lB,KAAKpe,MACrBA,KAAK4f,QAAUrV,EA+DnB,MA7DA3N,IAAa6O,EAAgB04B,GAC7B14B,EAAexB,UAAY8U,OAAOzL,OAAO6wB,GAAmBA,EAAgBl6B,WAC5EwB,EAAexB,UAAU42B,YAAcp1B,EACvCA,EAAeR,GAAKQ,EAAexB,UACnCwB,EAAeR,GAAGnL,KAAO2L,EAAeR,GAAG41B,YAC3Cp1B,EAAexB,UAAUqK,MAAQ,WAC7B,MAAO,IAAI7I,GAAezL,KAAK4f,QAAQtL,UAE3C7I,EAAexB,UAAU25B,OAAS,SAAgBC,GAC9C,MAAOA,IAASA,EAAMjkB,QAAQgkB,OAAO5jC,KAAK4f,UAE9CnU,EAAexB,UAAUiK,UAAY,SAAmBzP,EAAGE,GAGvD,MAFA3E,MAAK4f,QAAU5f,KAAK4f,QAAQjV,aAAab,GAAOoK,UAAUzP,EAAGE,IAC7D3E,KAAKgnC,iBACEhnC,MAEXyL,EAAexB,UAAUsK,MAAQ,SAAeyvB,EAAQC,EAAQttB,GAC7C,SAAXstB,IACAA,EAASD,GAEE,SAAXrtB,IACAA,EAAS,KAEb,IAAIsuB,GAActuB,CAUlB,OATIsuB,KACAA,EAAcx3B,GAAM6F,OAAO2xB,GAC3BjlC,KAAK4f,QAAU5f,KAAK4f,QAAQjV,aAAab,GAAOoK,UAAU+wB,EAAYxgC,EAAGwgC,EAAYtgC,KAEzF3E,KAAK4f,QAAU5f,KAAK4f,QAAQjV,aAAab,GAAOyK,MAAMyvB,EAAQC,IAC1DgB,IACAjlC,KAAK4f,QAAU5f,KAAK4f,QAAQjV,aAAab,GAAOoK,WAAW+wB,EAAYxgC,GAAIwgC,EAAYtgC,KAE3F3E,KAAKgnC,iBACEhnC,MAEXyL,EAAexB,UAAU0G,OAAS,SAAgBvB,EAAOuH,GACrD,GAAIsuB,GAAcx3B,GAAM6F,OAAOqD,IAAWlJ,GAAMu3B,IAGhD,OAFAhlC,MAAK4f,QAAU5f,KAAK4f,QAAQjV,aAAab,GAAO6G,OAAOvB,EAAO61B,EAAYxgC,EAAGwgC,EAAYtgC,IACzF3E,KAAKgnC,iBACEhnC,MAEXyL,EAAexB,UAAU8H,SAAW,SAAkBxG,GAClD,GAAIhB,GAASe,EAASC,EAGtB,OAFAvL,MAAK4f,QAAU5f,KAAK4f,QAAQjV,aAAaJ,GACzCvK,KAAKgnC,iBACEhnC,MAEXyL,EAAexB,UAAUM,OAAS,SAAgBlK,GAC9C,MAAIA,IACAL,KAAK4f,QAAUvf,EACfL,KAAKgnC,iBACEhnC,MAEJA,KAAK4f,SAEhBnU,EAAexB,UAAU+8B,eAAiB,WACtChnC,KAAKuhC,eACDh5B,MAAO,YACPlI,MAAOL,QAGRyL,GACTwuB,IAUEM,GAAY,SAAU4J,GACtB,QAAS8C,GAAQhmC,GACbkjC,EAAgB/lB,KAAKpe,MACrBA,KAAKknC,aAAajmC,GAEtBrE,GAAaqqC,EAAS9C,GACtB8C,EAAQh9B,UAAY8U,OAAOzL,OAAO6wB,GAAmBA,EAAgBl6B,WACrEg9B,EAAQh9B,UAAU42B,YAAcoG,EAChCA,EAAQh8B,GAAKg8B,EAAQh9B,UACrBg9B,EAAQh8B,GAAGnL,KAAOmnC,EAAQh8B,GAAG41B,WAC7B,IAAIsG,IAAuB3tB,YAgH3B,OA/GA2tB,GAAmB3tB,SAAS5Y,IAAM,WAC9B,MAAO,QAEXqmC,EAAQh9B,UAAUi9B,aAAe,SAAsBjmC,GAAtB,GAIzB+qB,GACA3hB,CAJY,UAAZpJ,IACAA,MAEA+qB,EAAO/qB,EAAQ+qB,KACf3hB,EAAYpJ,EAAQoJ,UACpBA,IACApJ,EAAQoJ,UAAYmB,EAAYnB,IAEhC2hB,IAASA,EAAKob,KACdpb,EAAKob,GAAKrkC,KAEd/C,KAAKiB,QAAU,GAAIm5B,IAAan5B,GAChCjB,KAAKiB,QAAQ+/B,YAAYhhC,OAE7BinC,EAAQh9B,UAAUI,UAAY,SAAmBhK,GAC7C,MAAIwC,GAAQxC,OACRL,MAAKiB,QAAQwX,IAAI,YAAajN,EAAYnL,IAEnCL,KAAKiB,QAAQL,IAAI,cAGhCqmC,EAAQh9B,UAAUo9B,gBAAkB,WAGhC,IAHgC,GAE5B58B,GAGIc,EAJJpE,EAAUnH,KAEPmH,EAAQqD,QACXrD,EAAUA,EAAQqD,OACde,EAAiBpE,EAAQkD,YACzBkB,IACAd,EAAec,EAAehB,SAASI,aAAaF,GAAgBX,GAAOC,QAGnF,IAAIU,EACA,MAAOe,GAAYf,IAG3Bw8B,EAAQh9B,UAAUq9B,iBAAmB,SAA0BD,GAA1B,GAI7BE,GACAC,EACA/8B,EACAg9B,CAMJ,IAZwB,SAApBJ,IACAA,EAAkBrnC,KAAKqnC,mBAEvBE,EAAmBvnC,KAAKqK,YACxBm9B,EAAgBl8B,EAASi8B,GACzB98B,EAAea,EAAS+7B,GAGxBI,EADAD,GAAiB/8B,EACAA,EAAaE,aAAa68B,GAE1BA,GAAiB/8B,EAGlC,MAAOe,GAAYi8B,IAG3BR,EAAQh9B,UAAUkM,QAAU,SAAiB9V,GACzC,MAAIwC,GAAQxC,IACRL,KAAKiB,QAAQwX,IAAI,UAAWpY,GACrBL,MAEJA,KAAKiB,QAAQL,IAAI,cAAe,GAE3CqmC,EAAQh9B,UAAU+hB,KAAO,SAAc3rB,GACnC,GAAIY,GAAUjB,KAAKiB,OACnB,OAAI4B,GAAQxC,IACJA,IAAUA,EAAM+mC,KAChB/mC,EAAM+mC,GAAKrkC,KAEf9B,EAAQwX,IAAI,OAAQpY,GACbL,MAEJiB,EAAQL,IAAI,SAEvBqmC,EAAQh9B,UAAU6R,QAAU,SAAiBzb,GACzC,MAAIwC,GAAQxC,IACRL,KAAKiB,QAAQwX,IAAI,UAAWpY,GACrBL,MAEJgH,EAAehH,KAAKiB,QAAQL,IAAI,WAAY,IAEvDqmC,EAAQh9B,UAAUuM,YAAc,SAAqBjL,GAArB,GAGpBygB,GAFJvZ,EAAOzS,KAAK0nC,aAAan8B,EAC7B,IAAIkH,EAEA,MADIuZ,GAAOhsB,KAAKgsB,OACTA,EAAO3V,GAAKsT,UAAUlX,EAAMuZ,EAAKvZ,KAAKlH,IAAmBkH,GAGxEw0B,EAAQh9B,UAAUy8B,cAAgB,SAAuBl2B,EAAO62B,GAA9B,GAEtBh9B,GACAs9B,CAFR,SAAI3nC,KAAKmW,YACD9L,EAAYrK,KAAKsnC,iBAAiBD,GAClCM,EAAmBn3B,EACnBnG,IACAs9B,EAAmBn3B,EAAME,cAAcrG,EAAUE,SAASyuB,WAEvDh5B,KAAK4nC,YAAc5nC,KAAK6nC,eAAeF,IAAqB3nC,KAAK2mC,WAAa3mC,KAAK8nC,cAAgB9nC,KAAK2mC,UAAUgB,KAIjIV,EAAQh9B,UAAU29B,SAAW,WACzB,GAAIxZ,GAAOpuB,KAAKiB,QAAQmtB,IACxB,OAAOA,KAAShpB,EAAcgpB,EAAK/oB,QAEvC4hC,EAAQh9B,UAAU69B,WAAa,WAC3B,GAAIzZ,GAASruB,KAAKiB,QAAQotB,MAC1B,OAAOA,IAAUA,EAAOrvB,MAAQ,IAAMoG,EAAcipB,EAAOhpB,QAE/D4hC,EAAQh9B,UAAUy9B,aAAe,SAAsBn8B,GACnD,MAAOvL,MAAKyS,KAAKlH,IAErBwT,OAAO8mB,iBAAiBoB,EAAQh9B,UAAWk9B,GACpCF,GACThN,IAeEO,GAAW70B,KAAKiT,GAAK,EACrBid,GAAW,SAAUiP,GACrB,QAASlP,GAAOjqB,EAAQu6B,GACL,SAAXv6B,IACAA,EAAS,GAAI8B,KAEF,SAAXy4B,IACAA,EAAS,GAEbpB,EAAW1mB,KAAKpe,MAChBA,KAAK+nC,UAAUp8B,GACf3L,KAAKgoC,UAAU9B,GA0DnB,MAxDAtpC,IAAag5B,EAAQkP,GACrBlP,EAAO3rB,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WAC1D2rB,EAAO3rB,UAAU42B,YAAcjL,EAC/BA,EAAO3qB,GAAK2qB,EAAO3rB,UACnB2rB,EAAO3qB,GAAGnL,KAAO81B,EAAO3qB,GAAG41B,YAC3BjL,EAAO3rB,UAAU89B,UAAY,SAAmB1nC,GAG5C,MAFAL,MAAKoM,eAAe,SAAUqB,GAAM6F,OAAOjT,IAC3CL,KAAK8K,iBACE9K,MAEX41B,EAAO3rB,UAAUg+B,UAAY,WACzB,MAAOjoC,MAAK2L,QAEhBiqB,EAAO3rB,UAAU25B,OAAS,SAAgBC,GACtC,MAAOA,IAASA,EAAMl4B,OAAOi4B,OAAO5jC,KAAK2L,SAAWk4B,EAAMqC,SAAWlmC,KAAKkmC,QAE9EtQ,EAAO3rB,UAAUqK,MAAQ,WACrB,MAAO,IAAIshB,GAAO51B,KAAK2L,OAAO2I,QAAStU,KAAKkmC,SAEhDtQ,EAAO3rB,UAAUi+B,QAAU,SAAiB94B,GACxC,MAAOpP,MAAKmoC,SAAS1hC,EAAI2I,KAE7BwmB,EAAO3rB,UAAUwI,KAAO,SAAclI,GAAd,GAKX5L,GACDypC,EACAC,EACAC,EAPJjE,EAASrkC,KACTuoC,EAAgB78B,EAAqB1L,KAAK2L,OAAQ3L,KAAKkmC,OAAQlmC,KAAKkmC,OAAQ37B,GAC5Eo7B,EAAWl4B,GAAMm4B,WACjBA,EAAWn4B,GAAMk4B,UACrB,KAAShnC,EAAI,EAAGA,EAAI,EAAGA,IACfypC,EAAgB/D,EAAO8D,SAASI,EAAc9jC,EAAI9F,EAAI67B,IAAU9pB,cAAcnG,GAC9E89B,EAAgBhE,EAAO8D,SAASI,EAAc5jC,EAAIhG,EAAI67B,IAAU9pB,cAAcnG,GAC9E+9B,EAAe,GAAI76B,IAAM26B,EAAc3jC,EAAG4jC,EAAc1jC,GAC5DghC,EAAWl4B,GAAMhI,IAAIkgC,EAAU2C,GAC/B1C,EAAWn4B,GAAM/H,IAAIkgC,EAAU0C,EAEnC,OAAOjyB,IAAKkwB,WAAWZ,EAAUC,IAErChQ,EAAO3rB,UAAUk+B,SAAW,SAAkB/4B,GAAlB,GACpB/F,GAAMrJ,KACN2L,EAAStC,EAAIsC,OACbu6B,EAAS78B,EAAI68B,MACjB,OAAO,IAAIz4B,IAAM9B,EAAOlH,EAAIyhC,EAASvgC,KAAKkI,IAAIuB,GAAQzD,EAAOhH,EAAIuhC,EAASvgC,KAAKmI,IAAIsB,KAEvFwmB,EAAO3rB,UAAUy8B,cAAgB,SAAuBl2B,GAAvB,GACzBnH,GAAMrJ,KACN2L,EAAStC,EAAIsC,OACbu6B,EAAS78B,EAAI68B,OACbsC,EAAW7iC,KAAKgB,IAAI6J,EAAM/L,EAAIkH,EAAOlH,EAAG,GAAKkB,KAAKgB,IAAI6J,EAAM7L,EAAIgH,EAAOhH,EAAG,IAAMgB,KAAKgB,IAAIu/B,EAAQ,EACrG,OAAOsC,IAEX5S,EAAO3rB,UAAU08B,UAAY,SAAmBn2B,EAAOxR,GAA1B,GACrBqK,GAAMrJ,KACN2L,EAAStC,EAAIsC,OACbu6B,EAAS78B,EAAI68B,OACbuC,EAAgB98B,EAAOw5B,WAAW30B,EACtC,OAAO01B,GAASlnC,GAASypC,GAAiBA,GAAiBvC,EAASlnC,GAEjE42B,GACTyE,GAAcJ,IAAe,YAC3BQ,GAAW,WACXC,GAAY,SAAUmK,GACtB,MAAO,UAAUA,GACb,QAAS6D,KACL7D,EAAMloC,MAAMqD,KAAMsqB,WAoCtB,MAlCA1tB,IAAa8rC,EAAW7D,GACxB6D,EAAUz+B,UAAY8U,OAAOzL,OAAOuxB,GAASA,EAAM56B,WACnDy+B,EAAUz+B,UAAU42B,YAAc6H,EAClCA,EAAUz9B,GAAKy9B,EAAUz+B,UACzBy+B,EAAUz9B,GAAGnL,KAAO4oC,EAAUz9B,GAAG41B,YACjC6H,EAAUz+B,UAAUmkB,KAAO,SAAc/oB,EAAOyW,GAArB,GAIX6sB,GAHR1nC,EAAUjB,KAAKiB,OACnB,OAAI4B,GAAQwC,IACJA,GAASA,EAAMmU,WAAaihB,IACxBkO,GAAYtjC,MAAOA,GACnBxC,EAAQiZ,KACR6sB,EAAQ7sB,QAAUA,GAEtB7a,EAAQwX,IAAI,OAAQkwB,IAEpB1nC,EAAQwX,IAAI,OAAQpT,GAEjBrF,MAEJiB,EAAQL,IAAI,SAEvB8nC,EAAUz+B,UAAUokB,OAAS,SAAgBhpB,EAAOrG,EAAO8c,GACvD,MAAIjZ,GAAQwC,IACRrF,KAAKiB,QAAQwX,IAAI,eAAgBpT,GAC7BxC,EAAQ7D,IACRgB,KAAKiB,QAAQwX,IAAI,eAAgBzZ,GAEjC6D,EAAQiZ,IACR9b,KAAKiB,QAAQwX,IAAI,iBAAkBqD,GAEhC9b,MAEJA,KAAKiB,QAAQL,IAAI,WAErB8nC,GACT7D,IAEFlK,GAAuB7wB,GAAAA,GAAOo6B,SAC9BtJ,GAAa,SAAUiK,GACvB,MAAO,UAAUA,GACb,QAAS6D,KACL7D,EAAMloC,MAAMqD,KAAMsqB,WA4BtB,MA1BA1tB,IAAa8rC,EAAW7D,GACxB6D,EAAUz+B,UAAY8U,OAAOzL,OAAOuxB,GAASA,EAAM56B,WACnDy+B,EAAUz+B,UAAU42B,YAAc6H,EAClCA,EAAUz9B,GAAKy9B,EAAUz+B,UACzBy+B,EAAUz9B,GAAGnL,KAAO4oC,EAAUz9B,GAAG41B,YACjC6H,EAAUz+B,UAAUwI,KAAO,QAASA,GAAKlH,GAAd,GAGnBkH,GAQAm2B,EAVAnB,EAAiBn8B,EAAStL,KAAKsnC,iBAAiB/7B,IAChDs9B,EAAapB,EAAiBA,GAAAA,EAA4B9M,EAa9D,OAXI36B,MAAK8oC,YAAc9oC,KAAK+oC,cAAgBF,EACxCp2B,EAAOzS,KAAK8oC,WAAWx0B,SAEvB7B,EAAOzS,KAAKgpC,MAAMvB,GAClBznC,KAAK8oC,WAAar2B,EAAOA,EAAK6B,QAAU,KACxCtU,KAAK+oC,YAAcF,GAEnBD,EAAc5oC,KAAKiB,QAAQL,IAAI,gBAC/BgoC,GAAen2B,GACfA,EAAK+zB,OAAOoC,EAAc,GAEvBn2B,GAEXi2B,EAAUz+B,UAAUa,eAAiB,iBAC1B9K,MAAK8oC,WACZ9oC,KAAKkhC,QAAQ,kBAAoB/5B,QAASnH,QAEvC0oC,GACT7D,IAkBFhK,GAAe,SAAUgK,EAAOv4B,GAClB,SAAVA,IACAA,GAAS,YAEb,IAAI9D,GAAS,SAAUq8B,GACnB,QAASr8B,KACLq8B,EAAMloC,MAAMqD,KAAMsqB,WAOtB,MALA1tB,IAAa4L,EAAQq8B,GACrBr8B,EAAOyB,UAAY8U,OAAOzL,OAAOuxB,GAASA,EAAM56B,WAChDzB,EAAOyB,UAAU42B,YAAcr4B,EAC/BA,EAAOyC,GAAKzC,EAAOyB,UACnBzB,EAAOyC,GAAGnL,KAAO0I,EAAOyC,GAAG41B,YACpBr4B,GACTq8B,EAEF,OADAx4B,GAAwB7D,EAAOyB,UAAWqC,GACnC9D,GAEPsyB,GAAiB,OACjBlF,GAAS,SAAUkP,GACnB,QAASlP,GAAOwJ,EAAUn+B,GACL,SAAbm+B,IACAA,EAAW,GAAIvJ,KAEH,SAAZ50B,IACAA,MAEJ6jC,EAAW1mB,KAAKpe,KAAMiB,GACtBjB,KAAKo/B,SAASA,GACTv8B,EAAQ7C,KAAKiB,QAAQotB,SACtBruB,KAAKquB,OAAOyM,IAGpBl+B,GAAag5B,EAAQkP,GACrBlP,EAAO3rB,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WAC1D2rB,EAAO3rB,UAAU42B,YAAcjL,EAC/BA,EAAO3qB,GAAK2qB,EAAO3rB,UACnB2rB,EAAO3qB,GAAGnL,KAAO81B,EAAO3qB,GAAG41B,WAC3B,IAAIsG;AAAuB3tB,YAiB3B,OAhBA2tB,GAAmB3tB,SAAS5Y,IAAM,WAC9B,MAAO,UAEXg1B,EAAO3rB,UAAUmM,QAAU,WACvB,MAAOpW,MAAKipC,UAAUx2B,QAE1BmjB,EAAO3rB,UAAU++B,MAAQ,SAAez+B,GACpC,MAAOvK,MAAKipC,UAAUx2B,KAAKlI,IAE/BqrB,EAAO3rB,UAAU49B,eAAiB,SAAwBr3B,GACtD,MAAOxQ,MAAKo/B,WAAWsH,cAAcl2B,IAEzColB,EAAO3rB,UAAU08B,UAAY,SAAmBn2B,GAC5C,MAAOxQ,MAAKo/B,WAAWuH,UAAUn2B,EAAOxQ,KAAKiB,QAAQotB,OAAOrvB,MAAQ,IAExE+f,OAAO8mB,iBAAiBjQ,EAAO3rB,UAAWk9B,GACnCvR,GACT8E,GAAUE,GAAWC,GAAaN,OAChC9tB,GAAY,GAwBZsuB,GAAe,GACfC,GAAQr1B,KAAKgB,IACbs0B,IACA,UACA,UACA,aACA,WACA,iBAEA/O,GAAQ,SAAU4Y,GAClB,QAASpJ,GAAI/vB,EAAQ1K,GACF,SAAX0K,IACAA,EAAS,GAAI8B,KAED,SAAZxM,IACAA,MAEJ6jC,EAAW1mB,KAAKpe,MAChBA,KAAK+nC,UAAUp8B,GACf3L,KAAKgQ,QAAU/O,EAAQ+O,QACvBhQ,KAAKiQ,QAAUhP,EAAQgP,SAAWhP,EAAQ+O,QAC1ChQ,KAAKkP,WAAajO,EAAQiO,WAC1BlP,KAAKqP,SAAWpO,EAAQoO,SACxBrP,KAAKqwB,cAAgBpvB,EAAQovB,gBAAiB,EAC9CrwB,KAAKkQ,UAAYjP,EAAQiP,UAsL7B,MApLAtT,IAAa8+B,EAAKoJ,GAClBpJ,EAAIzxB,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WACvDyxB,EAAIzxB,UAAU42B,YAAcnF,EAC5BA,EAAIzwB,GAAKywB,EAAIzxB,UACbyxB,EAAIzwB,GAAGnL,KAAO47B,EAAIzwB,GAAG41B,YACrBnF,EAAIzxB,UAAUqK,MAAQ,WAClB,MAAO,IAAIonB,GAAI17B,KAAK2L,QAChBqE,QAAShQ,KAAKgQ,QACdC,QAASjQ,KAAKiQ,QACdf,WAAYlP,KAAKkP,WACjBG,SAAUrP,KAAKqP,SACfghB,cAAerwB,KAAKqwB,iBAG5BqL,EAAIzxB,UAAU89B,UAAY,SAAmB1nC,GAGzC,MAFAL,MAAKoM,eAAe,SAAUqB,GAAM6F,OAAOjT,IAC3CL,KAAK8K,iBACE9K,MAEX07B,EAAIzxB,UAAUg+B,UAAY,WACtB,MAAOjoC,MAAK2L,QAEhB+vB,EAAIzxB,UAAUi+B,QAAU,SAAiB94B,GAAjB,GAChBzD,GAAS3L,KAAK2L,OACdu9B,EAASziC,EAAI2I,EACjB,OAAO,IAAI3B,IAAM9B,EAAOlH,EAAIzE,KAAKgQ,QAAUrK,KAAKkI,IAAIq7B,GAASv9B,EAAOhH,EAAI3E,KAAKiQ,QAAUtK,KAAKmI,IAAIo7B,KAEpGxN,EAAIzxB,UAAUkiB,YAAc,QAASA,KAAT,GAUpB5gB,GAIK5M,EACDwqC,EACAt4B,EAfJwzB,EAASrkC,KACTkP,EAAalP,KAAKkP,WAClB4jB,EAAM9yB,KAAKqwB,iBAAqB,EAChClE,GAAensB,KAAKkoC,QAAQh5B,IAC5Bk6B,EAAWppC,KAAKqpC,eAChBC,EAAgBF,EAAS/5B,SAAW+5B,EAASl6B,WAC7Cq6B,EAAoB5jC,KAAK6jC,KAAKF,EAAgBvO,IAC9C0O,EAAmBH,EAAgBC,EACnCG,EAAex6B,CAKnB,KAHIlP,KAAKkQ,YACL3E,EAAiBC,IAAcmF,OAAO3Q,KAAKkQ,UAAWlQ,KAAK2L,SAEtDhN,EAAI,EAAGA,GAAK4qC,EAAmB5qC,IAChCwqC,EAAYO,EAAe5W,EAAM2W,EACjC54B,EAASwzB,EAAOsF,qBAAqBD,EAAcP,EAAW59B,GAClE4gB,EAAY7tB,KAAKuS,EAAO+4B,IAAK/4B,EAAOg5B,IAAKh5B,EAAO9D,IAChD28B,EAAeP,CAEnB,OAAOhd,IAEXuP,EAAIzxB,UAAUwI,KAAO,SAAclI,GAc/B,IAdiB,GAeT69B,GAKAC,EAnBJhE,EAASrkC,KACTopC,EAAWppC,KAAKqpC,eAChBn6B,EAAak6B,EAASl6B,WACtBG,EAAW+5B,EAAS/5B,SACpBk5B,EAAgB78B,EAAqB1L,KAAK2L,OAAQ3L,KAAKgQ,QAAShQ,KAAKiQ,QAAS1F,GAC9EuB,EAAW7I,EAAIslC,EAAc9jC,GAC7BsH,EAAW9I,EAAIslC,EAAc5jC,GAC7B2L,EAAWtQ,KAAKkoC,QAAQ74B,GAAUqB,cAAcnG,GAChDu/B,EAAgB35B,EAAerE,EAAUoD,GACzC66B,EAAgB55B,EAAepE,EAAUmD,GACzCo5B,EAAetoC,KAAKkoC,QAAQh5B,GAAYwB,cAAcnG,GACtDo7B,EAAWl4B,GAAMhI,IAAI6iC,EAAch4B,GACnCs1B,EAAWn4B,GAAM/H,IAAI4iC,EAAch4B,GAChCw5B,EAAgBz6B,GAAY06B,EAAgB16B,GAC3C+4B,EAAgB,OAChB0B,EAAgBz6B,IAChB+4B,EAAgB/D,EAAO6D,QAAQ4B,GAAep5B,cAAcnG,GAC5Du/B,GAAiB,IAEjBzB,EAAgB,OAChB0B,EAAgB16B,IAChBg5B,EAAgBhE,EAAO6D,QAAQ6B,GAAer5B,cAAcnG,GAC5Dw/B,GAAiB,IAErBzB,EAAe,GAAI76B,IAAM26B,EAAc3jC,EAAG4jC,EAAc1jC,GACxDghC,EAAWl4B,GAAMhI,IAAIkgC,EAAU2C,GAC/B1C,EAAWn4B,GAAM/H,IAAIkgC,EAAU0C,EAEnC,OAAOjyB,IAAKkwB,WAAWZ,EAAUC,IAErClK,EAAIzxB,UAAUo/B,aAAe,WAAA,GAMjBW,GALJ3gC,EAAMrJ,KACNkP,EAAa7F,EAAI6F,WACjBG,EAAWhG,EAAIgG,SACfghB,EAAgBhnB,EAAIgnB,aASxB,OARIA,KACI2Z,EAAW96B,EACfA,EAAaG,EACbA,EAAW26B,IAEX96B,EAAaG,GAAYghB,GAAiBnhB,IAAeG,KACzDA,GAAY,MAGZH,WAAYA,EACZG,SAAUA,IAGlBqsB,EAAIzxB,UAAU0/B,qBAAuB,SAA8Bz6B,EAAYG,EAAU9D,GAApD,GAC7BuB,GAAK9M,KAAKkoC,QAAQh5B,GAClBnC,EAAK/M,KAAKkoC,QAAQ74B,GAClB46B,EAAejqC,KAAKkqC,cAAch7B,GAClCi7B,EAAenqC,KAAKkqC,cAAc76B,GAClC7B,GAAK/G,EAAI4I,GAAY5I,EAAIyI,IAAe,EACxC06B,EAAM,GAAIn8B,IAAMX,EAAGrI,EAAI+I,EAAIy8B,EAAaxlC,EAAGqI,EAAGnI,EAAI6I,EAAIy8B,EAAatlC,GACnEklC,EAAM,GAAIp8B,IAAMV,EAAGtI,EAAI+I,EAAI28B,EAAa1lC,EAAGsI,EAAGpI,EAAI6I,EAAI28B,EAAaxlC,EAOvE,OANI4G,KACAuB,EAAGzC,UAAUkB,GACbwB,EAAG1C,UAAUkB,GACbq+B,EAAIv/B,UAAUkB,GACds+B,EAAIx/B,UAAUkB,KAGduB,GAAIA,EACJ88B,IAAKA,EACLC,IAAKA,EACL98B,GAAIA,IAGZ2uB,EAAIzxB,UAAUigC,cAAgB,SAAuB96B,GACjD,GAAI85B,GAASziC,EAAI2I,EACjB,OAAO,IAAI3B,KAAOzN,KAAKgQ,QAAUrK,KAAKmI,IAAIo7B,GAASlpC,KAAKiQ,QAAUtK,KAAKkI,IAAIq7B,KAE/ExN,EAAIzxB,UAAUy8B,cAAgB,QAASA,GAAcl2B,GAAvB,GAatBk2B,GAIIt3B,EAIAg7B,EApBJhB,EAAWppC,KAAKqpC,eAChBC,EAAgBF,EAAS/5B,SAAW+5B,EAASl6B,WAC7C7F,EAAMrJ,KACN2L,EAAStC,EAAIsC,OACbqE,EAAU3G,EAAI2G,QACdC,EAAU5G,EAAI4G,QACdo6B,EAAW1+B,EAAOw5B,WAAW30B,GAC7B85B,EAAW3kC,KAAKqG,MAAMwE,EAAM7L,EAAIgH,EAAOhH,EAAG6L,EAAM/L,EAAIkH,EAAOlH,GAC3D8lC,EAAcv6B,EAAUC,EAAUtK,KAAKmK,KAAKkrB,GAAMhrB,EAAS,GAAKgrB,GAAMr1B,KAAKmI,IAAIw8B,GAAW,GAAKtP,GAAM/qB,EAAS,GAAK+qB,GAAMr1B,KAAKkI,IAAIy8B,GAAW,IAC7IE,EAAaxqC,KAAKkoC,QAAQloC,KAAKkP,YAAYrI,MAAM4F,IACjD6D,EAAWtQ,KAAKkoC,QAAQloC,KAAKqP,UAAUxI,MAAM4F,IAC7C4F,EAAezF,EAAiBjB,EAAQ6E,EAAM3J,MAAM4F,IAAY+9B,EAAYl6B,EAYhF,OAVIg5B,GAAgB,IAChB5C,EAAgBr0B,GAAgB1F,EAAYhB,EAAOw5B,WAAW9yB,GAAeg4B,IAAa19B,EAAY09B,EAAUE,IAE5Gn7B,EAAQ1B,EAAe/B,EAAOlH,EAAGkH,EAAOhH,EAAGqL,EAASC,EAASO,EAAM/L,EAAG+L,EAAM7L,GAClE,MAAVyK,IACAA,GAAS,IAAMA,GAAS,KAExBg7B,EAAehB,EAASl6B,YAAcE,GAASA,GAASg6B,EAAS/5B,SACrEq3B,EAAgB0D,GAAgBz9B,EAAY09B,EAAUE,KAAiBH,KAAkB/3B,GAAgBA,EAAauxB,OAAOpzB,KAE1Hk2B,GAEXhL,EAAIzxB,UAAU08B,UAAY,SAAmBn2B,EAAOxR,GAA1B,GAOlBorC,GANAhB,EAAWppC,KAAKqpC,eAChB19B,EAAS3L,KAAK2L,OACdyD,EAAQ1B,EAAe/B,EAAOlH,EAAGkH,EAAOhH,EAAG3E,KAAKgQ,QAAShQ,KAAKiQ,QAASO,EAAM/L,EAAG+L,EAAM7L,EAK1F,OAJc,OAAVyK,IACAA,GAAS,IAAMA,GAAS,KAExBg7B,EAAehB,EAASl6B,YAAcE,GAASA,GAASg6B,EAAS/5B,SAC9D+6B,GAAgBpqC,KAAKkoC,QAAQ94B,GAAO+1B,WAAW30B,IAAUxR,GAEpE08B,EAAI6K,WAAa,SAAoBn2B,EAAO0jB,EAAKloB,EAAIC,EAAI8D,EAAUC,EAAOC,GACtE,GAAI46B,GAAgB18B,GAChBwB,GAAIa,EAAM3L,EACV+K,GAAIY,EAAMzL,EACV8K,GAAIqkB,EAAIrvB,EACRiL,GAAIokB,EAAInvB,EACRiH,GAAIA,EACJC,GAAIA,EACJ8D,SAAUA,EACVC,MAAOA,EACPC,SAAUA,GAEd,OAAO,IAAI6rB,GAAI+O,EAAc9+B,QACzBuD,WAAYu7B,EAAcv7B,WAC1BG,SAAUo7B,EAAcp7B,SACxBW,QAASy6B,EAAcz6B,QACvBC,QAASw6B,EAAcx6B,QACvBC,UAAWu6B,EAAcv6B,UACzBmgB,cAAyB,IAAVzgB,KAGhB8rB,GACTrB,GAAcJ,GAAcgB,KA6E1B38B,MAAUA,KACV48B,MAASA,IACTnnB,MAAYA,OACZpR,MAAWA,MACXyD,MAAWA,MACX+0B,MAAaA,QACbC,GAAgB,SAAU+I,GAC1B,QAAS/I,GAAc71B,GACL,SAAVA,IACAA,MAEJ4+B,EAAgB/lB,KAAKpe,MACrBA,KAAKnB,OAAS,EACdmB,KAAK0qC,QAAQ,EAAGnlC,EAAM1G,OAAQ0G,GA6FlC,MA3FA3I,IAAaw+B,EAAe+I,GAC5B/I,EAAcnxB,UAAY8U,OAAOzL,OAAO6wB,GAAmBA,EAAgBl6B,WAC3EmxB,EAAcnxB,UAAU42B,YAAczF,EACtCA,EAAcnwB,GAAKmwB,EAAcnxB,UACjCmxB,EAAcnwB,GAAGnL,KAAOs7B,EAAcnwB,GAAG41B,YACzCzF,EAAcnxB,UAAU8L,SAAW,SAAkB1V,GACjD,MAAIA,IACAL,KAAK0qC,QAAQ,EAAG1qC,KAAKnB,OAAQwB,GAC7BL,KAAK2qC,UACE3qC,MAEJA,KAAKoG,MAAM,IAEtBg1B,EAAcnxB,UAAU3L,KAAO,WAAA,GACvByX,GAAWuU,UACX9hB,EAASlK,GAAK3B,MAAMqD,KAAM+V,EAE9B,OADA/V,MAAK4qC,KAAK70B,GACHvN,GAEX4yB,EAAcnxB,UAAU7D,MAAQ,WAC5B,MAAOA,IAAMgY,KAAKpe,OAEtBo7B,EAAcnxB,UAAUixB,IAAM,WAAA,GACtBr8B,GAASmB,KAAKnB,OACd2J,EAAS0yB,GAAIv+B,MAAMqD,KAIvB,OAHInB,IACAmB,KAAK6qC,SAASriC,IAEXA,GAEX4yB,EAAcnxB,UAAU8J,OAAS,SAAkB6Q,EAAOkmB,GAAzB,GACzB/0B,GAAW3P,GAAMgY,KAAKkM,UAAW,GACjC9hB,EAASxI,KAAK0qC,QAAQ9lB,EAAOkmB,EAAS/0B,EAE1C,OADA/V,MAAK2qC,UACEniC,GAEX4yB,EAAcnxB,UAAUtH,MAAQ,WAAA,GACxB9D,GAASmB,KAAKnB,OACd2J,EAAS7F,GAAMhG,MAAMqD,KAIzB,OAHInB,IACAmB,KAAK6qC,SAASriC,IAEXA,GAEX4yB,EAAcnxB,UAAUkxB,QAAU,WAAA,GAC1BplB,GAAWuU,UACX9hB,EAAS2yB,GAAQx+B,MAAMqD,KAAM+V,EAEjC,OADA/V,MAAK4qC,KAAK70B,GACHvN,GAEX4yB,EAAcnxB,UAAUgQ,QAAU,SAAiB9S,GAAjB,GAGrBI,GAFL88B,EAASrkC,KACTnB,EAASmB,KAAKnB,MAClB,KAAS0I,EAAM,EAAGA,EAAM1I,EAAQ0I,IAC5B,GAAI88B,EAAO98B,KAASJ,EAChB,MAAOI,EAGf,WAEJ6zB,EAAcnxB,UAAUygC,QAAU,SAAiB9lB,EAAOkmB,EAAS/0B,GAC/D,GAAIvN,GAASuL,GAAOpX,MAAMqD,MACtB4kB,EACAkmB,GACF3gC,OAAO4L,GAGT,OAFA/V,MAAK+qC,eAAeviC,GACpBxI,KAAKgrC,aAAaj1B,GACXvN,GAEX4yB,EAAcnxB,UAAU2gC,KAAO,SAAc70B,GACzC/V,KAAKgrC,aAAaj1B,GAClB/V,KAAK2qC,WAETvP,EAAcnxB,UAAU4gC,QAAU,SAAiB90B,GAC/C/V,KAAK+qC,eAAeh1B,GACpB/V,KAAK2qC,WAETvP,EAAcnxB,UAAU+gC,aAAe,SAAsBj1B,GAAtB,GAE1BxO,GADL88B,EAASrkC,IACb,KAASuH,EAAM,EAAGA,EAAMwO,EAASlX,OAAQ0I,IACrCwO,EAASxO,GAAKy5B,YAAYqD,IAGlCjJ,EAAcnxB,UAAU8gC,eAAiB,SAAwBh1B,GAAxB,GAE5BxO,GADL88B,EAASrkC,IACb,KAASuH,EAAM,EAAGA,EAAMwO,EAASlX,OAAQ0I,IACrCwO,EAASxO,GAAK05B,eAAeoD,IAGrCjJ,EAAcnxB,UAAU0gC,QAAU,aAE3BvP,GACTnB,IACEoB,GAAwB,SAAU4P,GAClC,QAAS5P,KACL4P,EAAiBtuC,MAAMqD,KAAMsqB,WAUjC,MARA1tB,IAAay+B,EAAuB4P,GACpC5P,EAAsBpxB,UAAY8U,OAAOzL,OAAO23B,GAAoBA,EAAiBhhC,WACrFoxB,EAAsBpxB,UAAU42B,YAAcxF,EAC9CA,EAAsBpwB,GAAKowB,EAAsBpxB,UACjDoxB,EAAsBpwB,GAAGnL,KAAOu7B,EAAsBpwB,GAAG41B,YACzDxF,EAAsBpxB,UAAU0gC,QAAU,WACtC3qC,KAAK8K,kBAEFuwB,GACTD,IAkBE1pB,GAAgB,SAAUkvB,GAC1B,QAASlvB,GAAcO,EAAM0W,GACZ,SAAT1W,IACAA,EAAO,GAEC,SAAR0W,IACAA,EAAM,GAEViY,EAASxiB,KAAKpe,MACdA,KAAKiS,KAAOA,EACZjS,KAAK2oB,IAAMA,EAkCf,MAhCA/rB,IAAa8U,EAAekvB,GAC5BlvB,EAAczH,UAAY8U,OAAOzL,OAAOstB,GAAYA,EAAS32B,WAC7DyH,EAAczH,UAAU42B,YAAcnvB,EACtCA,EAAczG,GAAKyG,EAAczH,UACjCyH,EAAczG,GAAGnL,KAAO4R,EAAczG,GAAG41B,YACzCnvB,EAAczH,UAAU2H,IAAM,SAAas5B,GACvC,MAAO,IAAIx5B,GAAc7K,EAAM7G,KAAKiS,KAAOi5B,EAAQj5B,KAAMxF,IAAY5F,EAAM7G,KAAK2oB,IAAMuiB,EAAQviB,IAAKlc,MAEvGiF,EAAczH,UAAUkhC,YAAc,SAAqB9qC,GACvD,MAAO,IAAIqR,GAAc1R,KAAKiS,KAAO5R,EAAOL,KAAK2oB,MAErDjX,EAAczH,UAAU6H,OAAS,WAC7B,MAAO,IAAIJ,KAAe1R,KAAKiS,QAAOjS,KAAK2oB,OAE/CjX,EAAczH,UAAU8H,SAAW,SAAkBm5B,GACjD,MAAO,IAAIx5B,GAAc1R,KAAKiS,KAAOi5B,EAAQj5B,KAAOjS,KAAK2oB,IAAMuiB,EAAQviB,IAAK3oB,KAAKiS,KAAOi5B,EAAQviB,IAAM3oB,KAAK2oB,IAAMuiB,EAAQj5B,OAE7HP,EAAczH,UAAU4H,iBAAmB,SAA0BxR,GACjE,MAAO,IAAIqR,GAAc1R,KAAKiS,KAAO5R,EAAOL,KAAK2oB,IAAMtoB,IAE3DqR,EAAczH,UAAU0H,QAAU,SAAiBnP,GAAjB,GAC1B4oC,GAASzlC,KAAKqG,MAAMhM,KAAK2oB,IAAK3oB,KAAKiS,MACnChM,EAAIN,KAAKmK,KAAKnK,KAAKgB,IAAI3G,KAAK2oB,IAAK,GAAKhjB,KAAKgB,IAAI3G,KAAKiS,KAAM,IAC1Do5B,EAAO1lC,KAAKgB,IAAIV,EAAG,EAAIzD,EAC3B,OAAO,IAAIkP,GAAc25B,EAAO1lC,KAAKkI,IAAIu9B,EAAS5oC,GAAI6oC,EAAO1lC,KAAKmI,IAAIs9B,EAAS5oC,KAEnFkP,EAAczH,UAAU25B,OAAS,SAAgBsH,GAC7C,MAAOlrC,MAAKiS,OAASi5B,EAAQj5B,MAAQjS,KAAK2oB,MAAQuiB,EAAQviB,KAE9DjX,EAAczH,UAAU+H,OAAS,WAC7B,MAAoB,KAAbhS,KAAK2oB,KAETjX,GACT9R,IA0GE07B,GAAa,SAAUuJ,EAAOv4B,GAC9B,GAAI9D,GAAS,SAAUq8B,GACnB,QAASr8B,KACLq8B,EAAMloC,MAAMqD,KAAMsqB,WAOtB,MALA1tB,IAAa4L,EAAQq8B,GACrBr8B,EAAOyB,UAAY8U,OAAOzL,OAAOuxB,GAASA,EAAM56B,WAChDzB,EAAOyB,UAAU42B,YAAcr4B,EAC/BA,EAAOyC,GAAKzC,EAAOyB,UACnBzB,EAAOyC,GAAGnL,KAAO0I,EAAOyC,GAAG41B,YACpBr4B,GACTq8B,EAEF,OADAtxB,GAAqB/K,EAAOyB,UAAWqC,GAChC9D,GAEPqI,IACA,SACA,YACA,cAEA0qB,GAAU,SAAUuJ,GACpB,QAASvJ,GAAQvgB,EAAQrG,EAAWH,GAChCswB,EAAW1mB,KAAKpe,MAChBA,KAAKgb,OAAOA,GAAU,GAAIvN,KAC1BzN,KAAK2U,UAAUA,GACf3U,KAAKwU,WAAWA,GAkJpB,MAhJA5X,IAAa2+B,EAASuJ,GACtBvJ,EAAQtxB,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WAC3DsxB,EAAQtxB,UAAU42B,YAActF,EAChCA,EAAQtwB,GAAKswB,EAAQtxB,UACrBsxB,EAAQtwB,GAAGnL,KAAOy7B,EAAQtwB,GAAG41B,YAC7BtF,EAAQtxB,UAAUqhC,OAAS,SAAgBC,EAAWhhC,GAA3B,GAGnBsM,GAFA20B,EAAgBxrC,KAAKgb,SAAStK,cAAcnG,GAC5CkhC,EAAkBF,EAAUvwB,SAAStK,cAAcnG,EAOvD,OAJIsM,GADA7W,KAAKwU,cAAgB+2B,EAAU52B,YACxB3U,KAAK0rC,kBAAkBF,EAAexrC,KAAKwU,aAAa9D,cAAcnG,GAASghC,EAAU52B,YAAYjE,cAAcnG,GAASkhC,GAE5HzrC,KAAK2rC,iBAAiBH,EAAeC,IAIpDlQ,EAAQtxB,UAAU0hC,iBAAmB,SAA0B7+B,EAAIC,GAC/D,MAAOsJ,IAAKkwB,WAAWz5B,EAAIC,IAE/BwuB,EAAQtxB,UAAUyhC,kBAAoB,SAA2B5+B,EAAI88B,EAAKC,EAAK98B,GAAzC,GAC9B8D,IACA/D,EACA88B,EACAC,EACA98B,GAEA6+B,EAAY5rC,KAAK6rC,kBAAkBh7B,EAAQ,KAC3Ci7B,EAAY9rC,KAAK6rC,kBAAkBh7B,EAAQ,KAC3Ck7B,EAAUv4B,GACVo4B,EAAUnmC,IACVmmC,EAAUlmC,IACVoH,EAAGrI,EACHsI,EAAGtI,IAEHunC,EAAUx4B,GACVs4B,EAAUrmC,IACVqmC,EAAUpmC,IACVoH,EAAGnI,EACHoI,EAAGpI,GAEP,OAAO0R,IAAKkwB,WAAW,GAAI94B,IAAMs+B,EAAQtmC,IAAKumC,EAAQvmC,KAAM,GAAIgI,IAAMs+B,EAAQrmC,IAAKsmC,EAAQtmC,OAE/F61B,EAAQtxB,UAAU4hC,kBAAoB,SAA2Bh7B,EAAQtI,GACrE,GAAI0jC,GAAWjsC,KAAKksC,eAAer7B,EAAO,GAAGtI,GAAQsI,EAAO,GAAGtI,GAAQsI,EAAO,GAAGtI,GAAQsI,EAAO,GAAGtI,GACnG,QACI9C,IAAKmL,EAAiBq7B,EAASxmC,IAAK8C,EAAOsI,GAC3CnL,IAAKkL,EAAiBq7B,EAASvmC,IAAK6C,EAAOsI,KAGnD0qB,EAAQtxB,UAAUiiC,eAAiB,SAAwB38B,EAAIE,EAAI08B,EAAIC,GAApC,GAe3B3mC,GAIAC,EAlBAG,EAAI0J,EAAK,EAAIE,EAAK,EAAI08B,EAAKC,EAC3BpmC,MAAUuJ,EAAK,EAAIE,EAAK08B,GACxBvhC,EAAI2E,EAAKE,EACTK,EAAOnK,KAAKmK,KAAK9J,EAAIA,EAAI,EAAIH,EAAI+E,GACjCkG,EAAK,EACLu7B,EAAK,CAiBT,OAhBU,KAANxmC,EACU,IAANG,IACA8K,EAAKu7B,GAAMzhC,EAAI5E,GAEXtC,MAAMoM,KACdgB,IAAO9K,EAAI8J,IAAS,EAAIjK,GACxBwmC,IAAOrmC,EAAI8J,IAAS,EAAIjK,IAExBJ,EAAME,KAAKD,IAAIC,KAAKF,IAAIqL,EAAIu7B,GAAK,IACjC5mC,EAAM,GAAKA,EAAM,KACjBA,EAAM,GAENC,EAAMC,KAAKF,IAAIE,KAAKD,IAAIoL,EAAIu7B,GAAK,IACjC3mC,EAAM,GAAKA,EAAM,KACjBA,EAAM,IAGND,IAAKA,EACLC,IAAKA,IAGb61B,EAAQtxB,UAAUqiC,iBAAmB,SAA0BvxB,EAASvK,GACpE,GAAI+7B,EAWJ,OATIA,GADAvsC,KAAKwU,cAAgBuG,EAAQpG,YACRnC,GACjBxS,KAAKgb,SACLhb,KAAKwU,aACLuG,EAAQpG,YACRoG,EAAQC,UACTxK,EAAOxQ,KAAKsrC,OAAOvwB,IAEDjI,EAAuB9S,KAAKgb,SAAUD,EAAQC,SAAUxK,IAIrF+qB,EAAQtxB,UAAUuiC,aAAe,SAAsBzxB,EAASvK,EAAOxR,EAAOytC,GAA7C,GAGrB3/B,GACAC,EACAC,EACA0/B,EAMA77B,EASAhB,EACA88B,EArBJl6B,EAAOzS,KAAKsrC,OAAOvwB,GAASyrB,OAAOxnC,EAAOA,EAC9C,IAAIyT,EAAKi0B,cAAcl2B,GAKnB,MAJI1D,GAAK9M,KAAKgb,SACVjO,EAAK/M,KAAKwU,aACVxH,EAAK+N,EAAQpG,YACb+3B,EAAK3xB,EAAQC,SACE,UAAfyxB,GAA0B3/B,EAAGq4B,WAAW30B,IAAUxR,GAC1CqR,EAAgBvD,EAAIC,EAAIyD,GACV,QAAfi8B,GAAwBC,EAAGvH,WAAW30B,IAAUxR,GAC/CqR,EAAgBq8B,EAAI1/B,EAAIwD,IAEhCK,GACA/D,EACAC,EACAC,EACA0/B,MAEAx6B,EAAgBrB,EAAQL,EAAO,IAAK,IAAKxR,KAAUkT,EAAgBrB,EAAQL,EAAO,IAAK,IAAKxR,MAG5F6Q,EAAWrE,IAAcmF,OAAO,GAAIH,GACpCm8B,GACA7/B,EAAG4D,cAAcb,GACjB9C,EAAG2D,cAAcb,GACjB7C,EAAG0D,cAAcb,GACjB68B,EAAGh8B,cAAcb,IAEdqC,EAAgBy6B,EAAen8B,EAAO,IAAK,IAAKxR,IAAUkT,EAAgBy6B,EAAen8B,EAAO,IAAK,IAAKxR,MAGzHu8B,EAAQtxB,UAAU2iC,YAAc,SAAqB7xB,EAASvK,EAAOxR,GAArC,GACxB8N,GAAK9M,KAAKgb,SACVjO,EAAKgO,EAAQC,SACb5L,EAAQnM,EAAI0C,KAAKqG,MAAMe,EAAGpI,EAAImI,EAAGnI,EAAGoI,EAAGtI,EAAIqI,EAAGrI,IAC9CoS,EAAO,GAAIR,KACXvJ,EAAGrI,EACHqI,EAAGnI,EAAI3F,EAAQ,IAEf8N,EAAGq4B,WAAWp4B,GACd/N,GAEJ,OAAO6X,GAAK6vB,cAAcl2B,EAAME,cAAclF,IAAcmF,QAAQvB,EAAOtC,MAE/EyuB,EAAQtxB,UAAU4iC,YAAc,SAAqB9xB,EAASvK,EAAOxR,EAAOytC,GACxE,GAAIK,EAMJ,OAJIA,GADA9sC,KAAKwU,cAAgBuG,EAAQpG,YAClB3U,KAAKwsC,aAAazxB,EAASvK,EAAOxR,EAAQ,EAAGytC,GAE7CzsC,KAAK4sC,YAAY7xB,EAASvK,EAAOxR,IAI7Cu8B,GACTD,GAAWrB,GAAcppB,KAcvB6E,IACAsiB,EAAG,SAAUld,EAAM7Z,GAAhB,GAGUtC,GACD6R,EAHJxC,EAAa/M,EAAQ+M,WACrBoG,EAAWnT,EAAQmT,QACvB,KAASzV,EAAI,EAAGA,EAAIqP,EAAWnP,OAAQF,GAAK,EACpC6R,EAAQ,GAAI/C,IAAMO,EAAWrP,GAAIqP,EAAWrP,EAAI,IAChDsC,EAAQsU,YACR/E,EAAMiE,cAAcL,GAExB0G,EAAKO,OAAO7K,EAAM/L,EAAG+L,EAAM7L,GAC3ByP,EAAS3P,EAAI+L,EAAM/L,EACnB2P,EAASzP,EAAI6L,EAAM7L,GAG3BiG,EAAG,SAAUkQ,EAAM7Z,GAAhB,GAGUtC,GACD6V,EACAG,EACAnE,EALJxC,EAAa/M,EAAQ+M,WACrBoG,EAAWnT,EAAQmT,QACvB,KAASzV,EAAI,EAAGA,EAAIqP,EAAWnP,OAAQF,GAAK,EACpC6V,EAAa,GAAI/G,IAAMO,EAAWrP,GAAIqP,EAAWrP,EAAI,IACrDgW,EAAY,GAAIlH,IAAMO,EAAWrP,EAAI,GAAIqP,EAAWrP,EAAI,IACxD6R,EAAQ,GAAI/C,IAAMO,EAAWrP,EAAI,GAAIqP,EAAWrP,EAAI,IACpDsC,EAAQsU,aACRZ,EAAUF,cAAcL,GACxBI,EAAWC,cAAcL,GACzB5D,EAAMiE,cAAcL,IAExB0G,EAAKsR,QAAQ5X,EAAYG,EAAWnE,GACpC4D,EAAS3P,EAAI+L,EAAM/L,EACnB2P,EAASzP,EAAI6L,EAAM7L,GAG3BooC,EAAG,SAAUjyB,EAAM7Z,GACf,GAAIZ,GAAQY,EAAQsU,WAAa,EAAItU,EAAQmT,SAAS3P,CACtDmP,IAAiB3S,EAAQ+M,YAAY,EAAM3N,GAC3CL,KAAKg4B,EAAEld,EAAM7Z,IAEjByiC,EAAG,SAAU5oB,EAAM7Z,GACf,GAAIZ,GAAQY,EAAQsU,WAAa,EAAItU,EAAQmT,SAASzP,CACtDiP,IAAiB3S,EAAQ+M,YAAY,EAAO3N,GAC5CL,KAAKg4B,EAAEld,EAAM7Z,IAEjB4E,EAAG,SAAUiV,EAAM7Z,GAAhB,GAGUtC,GACDqR,EACAC,EACAJ,EACAF,EACAC,EACAU,EARJtC,EAAa/M,EAAQ+M,WACrBoG,EAAWnT,EAAQmT,QACvB,KAASzV,EAAI,EAAGA,EAAIqP,EAAWnP,OAAQF,GAAK,EACpCqR,EAAUhC,EAAWrP,GACrBsR,EAAUjC,EAAWrP,EAAI,GACzBkR,EAAW7B,EAAWrP,EAAI,GAC1BgR,EAAW3B,EAAWrP,EAAI,GAC1BiR,EAAQ5B,EAAWrP,EAAI,GACvB2R,EAAW,GAAI7C,IAAMO,EAAWrP,EAAI,GAAIqP,EAAWrP,EAAI,IACvDsC,EAAQsU,YACRjF,EAASmE,cAAcL,GAEvBA,EAAS3P,IAAM6L,EAAS7L,GAAK2P,EAASzP,IAAM2L,EAAS3L,IACrDmW,EAAKkyB,MAAM18B,EAAUN,EAASC,EAASN,EAAUC,EAAOC,GACxDuE,EAAS3P,EAAI6L,EAAS7L,EACtB2P,EAASzP,EAAI2L,EAAS3L,IAIlC4I,EAAG,SAAUuN,EAAM7Z,GAAhB,GAIKgsC,GAIKtuC,EACDgW,EACArE,EACAkE,EAVJxG,EAAa/M,EAAQ+M,WACrBoG,EAAWnT,EAAQmT,SACnBa,EAAkBhU,EAAQgU,eAK9B,KAHwB,MAApBA,GAA+C,MAApBA,IAC3Bg4B,EAAgB3nC,EAAKA,EAAKwV,EAAKoyB,OAAO/xB,UAAUxG,aAE3ChW,EAAI,EAAGA,EAAIqP,EAAWnP,OAAQF,GAAK,EACpCgW,EAAY,GAAIlH,IAAMO,EAAWrP,GAAIqP,EAAWrP,EAAI,IACpD2R,EAAW,GAAI7C,IAAMO,EAAWrP,EAAI,GAAIqP,EAAWrP,EAAI,IACvD6V,EAAa,OACbvT,EAAQsU,aACRZ,EAAUF,cAAcL,GACxB9D,EAASmE,cAAcL,IAGvBI,EADAy4B,EACaj5B,GAAgBi5B,EAAe74B,GAE/BA,EAASE,QAE1B24B,EAAgBt4B,EAChBmG,EAAKsR,QAAQ5X,EAAYG,EAAWrE,GACpC8D,EAAS3P,EAAI6L,EAAS7L,EACtB2P,EAASzP,EAAI2L,EAAS3L,GAG9ByM,EAAG,SAAU0J,EAAM7Z,GAAhB,GAGUtC,GACD4R,EACAD,EAKA68B,EATJn/B,EAAa/M,EAAQ+M,WACrBoG,EAAWnT,EAAQmT,QACvB,KAASzV,EAAI,EAAGA,EAAIqP,EAAWnP,OAAQF,GAAK,EACpC4R,EAAe,GAAI9C,IAAMO,EAAWrP,GAAIqP,EAAWrP,EAAI,IACvD2R,EAAW,GAAI7C,IAAMO,EAAWrP,EAAI,GAAIqP,EAAWrP,EAAI,IACvDsC,EAAQsU,aACRhF,EAAakE,cAAcL,GAC3B9D,EAASmE,cAAcL,IAEvB+4B,EAAqBh5B,GAA8BC,EAAU7D,EAAcD,GAC/EwK,EAAKsR,QAAQ+gB,EAAmB34B,WAAY24B,EAAmBx4B,UAAWrE,GAC1E8D,EAAS3P,EAAI6L,EAAS7L,EACtB2P,EAASzP,EAAI2L,EAAS3L,GAG9B6I,EAAG,SAAUsN,EAAM7Z,GAAhB,GAIKsP,GAEI68B,EAGCzuC,EACD2R,EASA68B,EAlBJn/B,EAAa/M,EAAQ+M,WACrBoG,EAAWnT,EAAQmT,SACnBa,EAAkBhU,EAAQgU,eAM9B,KAJwB,MAApBA,GAA+C,MAApBA,IACvBm4B,EAAc9nC,EAAKA,EAAKwV,EAAKoyB,OAAO/xB,UACxC5K,EAAe68B,EAAYz4B,YAAYL,QAAQG,cAAcL,EAASH,aAAe,IAAIM,MAAM,MAE1F5V,EAAI,EAAGA,EAAIqP,EAAWnP,OAAQF,GAAK,EACpC2R,EAAW,GAAI7C,IAAMO,EAAWrP,GAAIqP,EAAWrP,EAAI,IACnDsC,EAAQsU,YACRjF,EAASmE,cAAcL,GAGvB7D,EADAA,EACeyD,GAAgBzD,EAAc6D,GAE9BA,EAASE,QAExB64B,EAAqBh5B,GAA8BC,EAAU7D,EAAcD,GAC/EwK,EAAKsR,QAAQ+gB,EAAmB34B,WAAY24B,EAAmBx4B,UAAWrE,GAC1E8D,EAAS3P,EAAI6L,EAAS7L,EACtB2P,EAASzP,EAAI2L,EAAS3L,IAe9B+P,GAAQ,EAAI,EAQZQ,GAAgB,kCAChBL,GAAc,oDACdW,GAAO,IACPG,GAAQ,IAgFRwY,GAAO,SAAU2W,GACjB,QAAS3W,GAAKltB,GACV6jC,EAAW1mB,KAAKpe,KAAMiB,GACtBjB,KAAKmb,SAAW,GAAIkgB,IACpBr7B,KAAKmb,SAAS6lB,YAAYhhC,MACrB6C,EAAQ7C,KAAKiB,QAAQotB,UACtBruB,KAAKquB,OAAO,QACPxrB,EAAQ7C,KAAKiB,QAAQotB,OAAOgf,WAC7BrtC,KAAKiB,QAAQwX,IAAI,kBAAmB,UAIhD7b,GAAauxB,EAAM2W,GACnB3W,EAAKlkB,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WACxDkkB,EAAKlkB,UAAU42B,YAAc1S,EAC7BA,EAAKljB,GAAKkjB,EAAKlkB,UACfkkB,EAAKljB,GAAGnL,KAAOquB,EAAKljB,GAAG41B,WACvB,IAAIsG,IAAuB3tB,YAwL3B,OAvLA2U,GAAKmf,MAAQ,SAAe5uC,EAAKuC,GAC7B,MAAOu6B,IAAU8R,MAAM5uC,EAAKuC,IAEhCkmC,EAAmB3tB,SAAS5Y,IAAM,WAC9B,MAAO,QAEXutB,EAAKlkB,UAAUwL,OAAS,SAAgBhR,EAAGE,GAKvC,MAJA3E,MAAKwhC,UACLxhC,KAAKmb,SAASpF,aACd/V,KAAKyhC,SACLzhC,KAAKqb,OAAO5W,EAAGE,GACR3E,MAEXmuB,EAAKlkB,UAAUoR,OAAS,SAAgB5W,EAAGE,GAAnB,GAChB6L,GAAQ3N,EAAQ8B,GAAK,GAAI8I,IAAMhJ,EAAGE,GAAKF,EACvCsW,EAAU,GAAIwgB,IAAQ/qB,EAE1B,OADAxQ,MAAKmb,SAAS7c,KAAKyc,GACZ/a,MAEXmuB,EAAKlkB,UAAUmiB,QAAU,SAAiB5X,EAAYG,EAAWnE,GAAxC,GAEb48B,GACAryB,CAMR,OARI/a,MAAKmb,SAAStc,OAAS,IACnBuuC,EAAc9nC,EAAKtF,KAAKmb,UACxBJ,EAAU,GAAIwgB,IAAQ/qB,EAAOmE,GACjC3U,KAAKwhC,UACL4L,EAAY54B,WAAWA,GACvBxU,KAAKyhC,SACLzhC,KAAKmb,SAAS7c,KAAKyc,IAEhB/a,MAEXmuB,EAAKlkB,UAAUsjC,IAAM,QAASA,GAAIr+B,EAAYG,EAAUW,EAASC,EAASogB,GAArD,GAET+c,GACApyB,EACA5K,EACAzE,EACA4hC,CASR,OAdIvtC,MAAKmb,SAAStc,OAAS,IACnBuuC,EAAc9nC,EAAKtF,KAAKmb,UACxBH,EAASoyB,EAAYpyB,SACrB5K,EAAQ3J,EAAIyI,GACZvD,EAAS,GAAI8B,IAAMuN,EAAOvW,EAAIuL,EAAUrK,KAAKkI,IAAIuC,GAAQ4K,EAAOrW,EAAIsL,EAAUtK,KAAKmI,IAAIsC,IACvFm9B,EAAM,GAAIrhB,IAAMvgB,GAChBuD,WAAYA,EACZG,SAAUA,EACVW,QAASA,EACTC,QAASA,EACTogB,cAAeA,IAEnBrwB,KAAKwtC,gBAAgBD,IAElBvtC,MAEXmuB,EAAKlkB,UAAU+iC,MAAQ,SAAelZ,EAAKloB,EAAIC,EAAI8D,EAAUC,EAAOC,GAA7C,GAEXu9B,GACApyB,EACAuyB,CAGR,OANIvtC,MAAKmb,SAAStc,OAAS,IACnBuuC,EAAc9nC,EAAKtF,KAAKmb,UACxBH,EAASoyB,EAAYpyB,SACrBuyB,EAAMrhB,GAAMqa,WAAWvrB,EAAQvN,GAAM6F,OAAOwgB,GAAMloB,EAAIC,EAAI8D,EAAUC,EAAOC,GAC/E7P,KAAKwtC,gBAAgBD,IAElBvtC,MAEXmuB,EAAKlkB,UAAUujC,gBAAkB,SAAyBD,GAAzB,GAGzBphB,GACKxtB,EAHL0lC,EAASrkC,IAGb,KAFAA,KAAKwhC,UACDrV,EAAcohB,EAAIphB,cACbxtB,EAAI,EAAGA,EAAIwtB,EAAYttB,OAAQF,GAAK,EACzC0lC,EAAOjY,QAAQD,EAAYxtB,GAAIwtB,EAAYxtB,EAAI,GAAIwtB,EAAYxtB,EAAI,GAEvEqB,MAAKyhC,SACLzhC,KAAK8K,kBAETqjB,EAAKlkB,UAAU2L,MAAQ,WAGnB,MAFA5V,MAAKiB,QAAQqa,QAAS,EACtBtb,KAAK8K,iBACE9K,MAEXmuB,EAAKlkB,UAAUmM,QAAU,WACrB,MAAOpW,MAAKgpC,SAEhB7a,EAAKlkB,UAAU49B,eAAiB,SAAwBr3B,GAAxB,GAIxBi9B,GAAUluC,EACLgI,EAJL4T,EAAWnb,KAAKmb,SAChBtc,EAASsc,EAAStc,OAClB0tC,EAAqB,CAEzB,KAAShlC,EAAM,EAAGA,EAAM1I,EAAQ0I,IAC5BkmC,EAAWtyB,EAAS5T,EAAM,GAC1BhI,EAAU4b,EAAS5T,GACnBglC,GAAsBkB,EAASnB,iBAAiB/sC,EAASiR,EAK7D,QAHIxQ,KAAKiB,QAAQqa,QAAWH,EAAS,GAAGH,SAAS4oB,OAAOzoB,EAAStc,EAAS,GAAGmc,YACzEuxB,GAAsBz5B,EAAuBqI,EAAS,GAAGH,SAAUG,EAAStc,EAAS,GAAGmc,SAAUxK,IAE/F+7B,EAAqB,IAAM,GAEtCpe,EAAKlkB,UAAU08B,UAAY,SAAmBn2B,EAAOxR,GAA1B,GAQVuI,GAPT4T,EAAWnb,KAAKmb,SAChBtc,EAASsc,EAAStc,OAClB6uC,EAAY1uC,GAASgB,KAAKiB,QAAQotB,OAAOrvB,KAC7C,IAAIH,EAAS,EAAG,CACZ,GAAIsc,EAAS,GAAG0xB,YAAY1xB,EAAS,GAAI3K,EAAOk9B,EAAW,SACvD,OAAO,CAEX,KAASnmC,EAAM,EAAGA,GAAO1I,EAAS,EAAG0I,IACjC,GAAI4T,EAAS5T,EAAM,GAAGslC,YAAY1xB,EAAS5T,GAAMiJ,EAAOk9B,GACpD,OAAO,CAGf,IAAIvyB,EAAStc,EAAS,GAAGguC,YAAY1xB,EAAStc,EAAS,GAAI2R,EAAOk9B,EAAW,OACzE,OAAO,EAGf,OAAO,GAEXvf,EAAKlkB,UAAU++B,MAAQ,SAAez+B,GAAf,GAGf0L,GAEI+E,EAGKrc,EACDgvC,EARRxyB,EAAWnb,KAAKmb,SAChBtc,EAASsc,EAAStc,MAEtB,IAAe,IAAXA,EACImc,EAASG,EAAS,GAAGH,SAAStK,cAAcnG,GAChD0L,EAAc,GAAII,IAAK2E,EAAQsf,GAAK0K,UACjC,IAAInmC,EAAS,EAChB,IAASF,EAAI,EAAGA,EAAIE,EAAQF,IACpBgvC,EAAaxyB,EAASxc,EAAI,GAAG2sC,OAAOnwB,EAASxc,GAAI4L,GAEjD0L,EADAA,EACcI,GAAKC,MAAML,EAAa03B,GAExBA,CAI1B,OAAO13B,IAEXkY,EAAKgG,SAAW,SAAkBtd,EAAM5V,GAAxB,GAQJ0V,GACAlS,EACAE,EACA3F,EACAC,EAXJ6b,EAAO,GAAIqT,GAAKltB,GAChBoI,EAAMwN,EAAKivB,aACXl6B,EAAKvC,EAAI,GACTwC,EAAKxC,EAAI,EAyBb,OAxBW,KAAPuC,GAAmB,IAAPC,EACZiP,EAAKrF,OAAOoB,EAAKuvB,WAAW/qB,OAAOxE,EAAKwvB,YAAYhrB,OAAOxE,EAAKhE,eAAewI,OAAOxE,EAAKyvB,cAAc1wB,SAErGe,EAASE,EAAKF,OACdlS,EAAIkS,EAAOlS,EACXE,EAAIgS,EAAOhS,EACX3F,EAAQ6X,EAAK7X,QACbC,EAAS4X,EAAK5X,SAClB2M,EAAKpG,EAAWoG,EAAI,EAAG5M,EAAQ,GAC/B6M,EAAKrG,EAAWqG,EAAI,EAAG5M,EAAS,GAChC6b,EAAKrF,OAAOhR,EAAImH,EAAIjH,GAAG0W,OAAO5W,EAAIzF,EAAQ4M,EAAIjH,GAAGqoC,OAC7CvoC,EAAIzF,EACJ2F,EAAIkH,GACLD,EAAIC,GAAI,GAAOwP,OAAO5W,EAAIzF,EAAO2F,EAAI1F,EAAS4M,GAAImhC,OACjDvoC,EAAIzF,EAAQ4M,EACZjH,EAAI1F,GACL2M,EAAIC,GAAI,GAAOwP,OAAO5W,EAAImH,EAAIjH,EAAI1F,GAAQ+tC,OACzCvoC,EACAE,EAAI1F,EAAS4M,GACdD,EAAIC,GAAI,GAAOwP,OAAO5W,EAAGE,EAAIkH,GAAImhC,OAChCvoC,EAAImH,EACJjH,GACDiH,EAAIC,GAAI,IAERiP,GAEXqT,EAAKoY,WAAa,SAAoB11B,EAAQ5P,GAA5B,GAEN6Z,GACKnc,EACD6R,CAHZ,IAAIK,EAAQ,CAER,IADIiK,EAAO,GAAIqT,GAAKltB,GACXtC,EAAI,EAAGA,EAAIkS,EAAOhS,OAAQF,IAC3B6R,EAAQ/C,GAAM6F,OAAOzC,EAAOlS,IAC5B6R,IACU,IAAN7R,EACAmc,EAAKrF,OAAOjF,GAEZsK,EAAKO,OAAO7K,GAIxB,OAAOsK,KAGfqT,EAAKyf,QAAU,SAAiBL,EAAKtsC,GAAtB,GACP6Z,GAAO,GAAIqT,GAAKltB,GAChBiO,EAAaq+B,EAAIr+B,WACjBkB,EAAQm9B,EAAIrF,QAAQh5B,EAGxB,OAFA4L,GAAKrF,OAAOrF,EAAM3L,EAAG2L,EAAMzL,GAC3BmW,EAAKyyB,IAAIr+B,EAAYq+B,EAAIl+B,SAAUk+B,EAAIv9B,QAASu9B,EAAIt9B,QAASs9B,EAAIld,eAC1DvV,GAEXiE,OAAO8mB,iBAAiB1X,EAAKlkB,UAAWk9B,GACjChZ,GACTuM,GAAUE,GAAWL,MACnBiB,GAAY,SAAUsJ,GACtB,QAAStJ,GAAUv6B,GACf6jC,EAAW1mB,KAAKpe,KAAMiB,GACtBjB,KAAKktC,MAAQ,GAAI7R,IACjBr7B,KAAKktC,MAAMlM,YAAYhhC,MAClB6C,EAAQ7C,KAAKiB,QAAQotB,SACtBruB,KAAKquB,OAAO,QAGpBzxB,GAAa4+B,EAAWsJ,GACxBtJ,EAAUvxB,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WAC7DuxB,EAAUvxB,UAAU42B,YAAcrF,EAClCA,EAAUvwB,GAAKuwB,EAAUvxB,UACzBuxB,EAAUvwB,GAAGnL,KAAO07B,EAAUvwB,GAAG41B,WACjC,IAAIgN,IAAyBr0B,YAyE7B,OAxEAgiB,GAAU8R,MAAQ,SAAe5uC,EAAKuC,GAClC,GAAIw7B,GAAW,GAAIjB,GAAUv6B,EAC7B,OAAO8T,IAAU0nB,EAAU/9B,IAE/BmvC,EAAqBr0B,SAAS5Y,IAAM,WAChC,MAAO,aAEX46B,EAAUvxB,UAAUwL,OAAS,SAAgBhR,EAAGE,GAC5C,GAAImW,GAAO,GAAIqT,GAGf,OAFArT,GAAKrF,OAAOhR,EAAGE,GACf3E,KAAKktC,MAAM5uC,KAAKwc,GACT9a,MAEXw7B,EAAUvxB,UAAUoR,OAAS,SAAgB5W,EAAGE,GAI5C,MAHI3E,MAAKktC,MAAMruC,OAAS,GACpByG,EAAKtF,KAAKktC,OAAO7xB,OAAO5W,EAAGE,GAExB3E,MAEXw7B,EAAUvxB,UAAUmiB,QAAU,SAAiB5X,EAAYG,EAAWnE,GAIlE,MAHIxQ,MAAKktC,MAAMruC,OAAS,GACpByG,EAAKtF,KAAKktC,OAAO9gB,QAAQ5X,EAAYG,EAAWnE,GAE7CxQ,MAEXw7B,EAAUvxB,UAAUsjC,IAAM,SAAar+B,EAAYG,EAAUW,EAASC,EAASogB,GAI3E,MAHIrwB,MAAKktC,MAAMruC,OAAS,GACpByG,EAAKtF,KAAKktC,OAAOK,IAAIr+B,EAAYG,EAAUW,EAASC,EAASogB,GAE1DrwB,MAEXw7B,EAAUvxB,UAAU+iC,MAAQ,SAAelZ,EAAKloB,EAAIC,EAAI8D,EAAUC,EAAOC,GAIrE,MAHI7P,MAAKktC,MAAMruC,OAAS,GACpByG,EAAKtF,KAAKktC,OAAOF,MAAMlZ,EAAKloB,EAAIC,EAAI8D,EAAUC,EAAOC,GAElD7P,MAEXw7B,EAAUvxB,UAAU2L,MAAQ,WAIxB,MAHI5V,MAAKktC,MAAMruC,OAAS,GACpByG,EAAKtF,KAAKktC,OAAOt3B,QAEd5V,MAEXw7B,EAAUvxB,UAAU++B,MAAQ,SAAez+B,GACvC,MAAOuL,IAAoB9V,KAAKktC,OAAO,EAAM3iC,IAEjDixB,EAAUvxB,UAAUmM,QAAU,WAC1B,MAAON,IAAoB9V,KAAKktC,OAAO,IAE3C1R,EAAUvxB,UAAU49B,eAAiB,SAAwBr3B,GAAxB,GAExBjJ,GADL2lC,EAAQltC,KAAKktC,KACjB,KAAS3lC,EAAM,EAAGA,EAAM2lC,EAAMruC,OAAQ0I,IAClC,GAAI2lC,EAAM3lC,GAAKsgC,eAAer3B,GAC1B,OAAO,CAGf,QAAO,GAEXgrB,EAAUvxB,UAAU08B,UAAY,SAAmBn2B,GAAnB,GAGnBjJ,GAFL2lC,EAAQltC,KAAKktC,MACbluC,EAAQgB,KAAKiB,QAAQotB,OAAOrvB,KAChC,KAASuI,EAAM,EAAGA,EAAM2lC,EAAMruC,OAAQ0I,IAClC,GAAI2lC,EAAM3lC,GAAKo/B,UAAUn2B,EAAOxR,GAC5B,OAAO,CAGf,QAAO,GAEXw8B,EAAUvxB,UAAUy9B,aAAe,SAAsBn8B,GACrD,MAAOgL,IAA2BvW,KAAKktC,MAAOltC,KAAKsnC,iBAAiB/7B,KAExEwT,OAAO8mB,iBAAiBrK,EAAUvxB,UAAW4jC,GACtCrS,GACTd,GAAUE,GAAWL,MACnBkB,GAAmB,OACnBC,GAAM,SAAUoJ,GAChB,QAASpJ,GAAI0D,EAAUn+B,GACF,SAAbm+B,IACAA,EAAW,GAAIlT,KAEH,SAAZjrB,IACAA,MAEJ6jC,EAAW1mB,KAAKpe,KAAMiB,GACtBjB,KAAKo/B,SAASA,GACTv8B,EAAQ7C,KAAKiB,QAAQotB,SACtBruB,KAAKquB,OAAOoN,IAGpB7+B,GAAa8+B,EAAKoJ,GAClBpJ,EAAIzxB,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WACvDyxB,EAAIzxB,UAAU42B,YAAcnF,EAC5BA,EAAIzwB,GAAKywB,EAAIzxB,UACbyxB,EAAIzwB,GAAGnL,KAAO47B,EAAIzwB,GAAG41B,WACrB,IAAIsG,IAAuB3tB,YA4B3B,OA3BA2tB,GAAmB3tB,SAAS5Y,IAAM,WAC9B,MAAO,OAEX86B,EAAIzxB,UAAU++B,MAAQ,SAAez+B,GACjC,MAAOvK,MAAKipC,UAAUx2B,KAAKlI,IAE/BmxB,EAAIzxB,UAAUmM,QAAU,WACpB,MAAOpW,MAAKo/B,WAAW3sB,QAE3BipB,EAAIzxB,UAAU6jC,OAAS,WAAA,GAKNnvC,GAJTmc,EAAO,GAAIqT,IACXhC,EAAcnsB,KAAKo/B,WAAWjT,aAClC,IAAIA,EAAYttB,OAAS,EAErB,IADAic,EAAKrF,OAAO0W,EAAY,GAAG1nB,EAAG0nB,EAAY,GAAGxnB,GACpChG,EAAI,EAAGA,EAAIwtB,EAAYttB,OAAQF,GAAK,EACzCmc,EAAKsR,QAAQD,EAAYxtB,GAAIwtB,EAAYxtB,EAAI,GAAIwtB,EAAYxtB,EAAI,GAGzE,OAAOmc,IAEX4gB,EAAIzxB,UAAU49B,eAAiB,SAAwBr3B,GACnD,MAAOxQ,MAAKo/B,WAAWsH,cAAcl2B,IAEzCkrB,EAAIzxB,UAAU08B,UAAY,SAAmBn2B,GACzC,MAAOxQ,MAAKo/B,WAAWuH,UAAUn2B,EAAOxQ,KAAKiB,QAAQotB,OAAOrvB,MAAQ,IAExE+f,OAAO8mB,iBAAiBnK,EAAIzxB,UAAWk9B,GAChCzL,GACThB,GAAUE,GAAWC,GAAaN,OAChCoB,GAAe,kBACfC,GAAe,OACfC,GAAO,SAAUiJ,GACjB,QAASjJ,GAAKrN,EAASpa,EAAUnT,GACZ,SAAbmT,IACAA,EAAW,GAAI3G,KAEH,SAAZxM,IACAA,MAEJ6jC,EAAW1mB,KAAKpe,KAAMiB,GACtBjB,KAAKwuB,QAAQA,GACbxuB,KAAKoU,SAASA,GACTpU,KAAKiB,QAAQ+lB,OACdhnB,KAAKiB,QAAQ+lB,KAAO2U,IAEnB94B,EAAQ7C,KAAKiB,QAAQmtB,OACtBpuB,KAAKouB,KAAKwN,IAGlBh/B,GAAai/B,EAAMiJ,GACnBjJ,EAAK5xB,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WACxD4xB,EAAK5xB,UAAU42B,YAAchF,EAC7BA,EAAK5wB,GAAK4wB,EAAK5xB,UACf4xB,EAAK5wB,GAAGnL,KAAO+7B,EAAK5wB,GAAG41B,WACvB,IAAIsG,IAAuB3tB,YAkC3B,OAjCA2tB,GAAmB3tB,SAAS5Y,IAAM,WAC9B,MAAO,QAEXi7B,EAAK5xB,UAAUukB,QAAU,SAAiBnuB,GACtC,MAAIwC,GAAQxC,IACRL,KAAKiB,QAAQwX,IAAI,UAAWpY,GACrBL,MAEJA,KAAKiB,QAAQL,IAAI,YAE5Bi7B,EAAK5xB,UAAUzK,QAAU,WACrB,GAAIuuC,GAAUhU,GAAU56B,YAAYa,KAAKwuB,WAAaxH,KAAMhnB,KAAKiB,QAAQL,IAAI,SAC7E,OAAOmtC,IAEXlS,EAAK5xB,UAAU4M,KAAO,WAAA,GACd9W,GAAOC,KAAKR,UACZggB,EAAMxf,KAAKoU,WAAWE,OAC1B,OAAO,IAAI+B,IAAKmJ,GACZzf,EAAKf,MACLe,EAAKd,UAGb48B,EAAK5xB,UAAUwI,KAAO,SAAclH,GAChC,GAAIk8B,GAAiBn8B,EAAStL,KAAKsnC,iBAAiB/7B,GACpD,OAAOvL,MAAK6W,OAAOpE,KAAKg1B,IAE5B5L,EAAK5xB,UAAUmM,QAAU,WACrB,MAAOpW,MAAK6W,OAAOpE,QAEvBopB,EAAK5xB,UAAU49B,eAAiB,SAAwBr3B,GACpD,MAAOxQ,MAAK6W,OAAO6vB,cAAcl2B,IAErCuO,OAAO8mB,iBAAiBhK,EAAK5xB,UAAWk9B,GACjCtL,GACTnB,GAAUY,GAAWf,IAAY,eAC/B9I,GAAU,SAAUqT,GACpB,QAASzb,GAAMvsB,EAAK+Z,EAAM5V,GACT,SAAT4V,IACAA,EAAO,GAAIR,KAEC,SAAZpV,IACAA,MAEJ6jC,EAAW1mB,KAAKpe,KAAMiB,GACtBjB,KAAKlD,IAAIA,GACTkD,KAAK6W,KAAKA,GAEdja,GAAaysB,EAAOyb,GACpBzb,EAAMpf,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WACzDof,EAAMpf,UAAU42B,YAAcxX,EAC9BA,EAAMpe,GAAKoe,EAAMpf,UACjBof,EAAMpe,GAAGnL,KAAOupB,EAAMpe,GAAG41B,WACzB,IAAIsG,IAAuB3tB,YAyB3B,OAxBA2tB,GAAmB3tB,SAAS5Y,IAAM,WAC9B,MAAO,SAEXyoB,EAAMpf,UAAUnN,IAAM,SAAauD,GAC/B,MAAIwC,GAAQxC,IACRL,KAAKiB,QAAQwX,IAAI,MAAOpY,GACjBL,MAEJA,KAAKiB,QAAQL,IAAI,QAE5ByoB,EAAMpf,UAAUwI,KAAO,SAAclH,GACjC,GAAIk8B,GAAiBn8B,EAAStL,KAAKsnC,iBAAiB/7B,GACpD,OAAOvL,MAAKguC,MAAMv7B,KAAKg1B,IAE3Bpe,EAAMpf,UAAUmM,QAAU,WACtB,MAAOpW,MAAKguC,MAAMv7B,QAEtB4W,EAAMpf,UAAU49B,eAAiB,SAAwBr3B,GACrD,MAAOxQ,MAAKguC,MAAMtH,cAAcl2B,IAEpC6Y,EAAMpf,UAAU29B,SAAW,WACvB,MAAO5nC,MAAKlD,OAEhBiiB,OAAO8mB,iBAAiBxc,EAAMpf,UAAWk9B,GAClC9d,GACTwR,GAAaN,IAAY,UACvBuB,GAAc,SAAU+I,EAAOoJ,GAC/B,MAAO,UAAUpJ,GACb,QAAS6D,KACL7D,EAAMloC,MAAMqD,KAAMsqB,WAmBtB,MAjBA1tB,IAAa8rC,EAAW7D,GACxB6D,EAAUz+B,UAAY8U,OAAOzL,OAAOuxB,GAASA,EAAM56B,WACnDy+B,EAAUz+B,UAAU42B,YAAc6H,EAClCA,EAAUz9B,GAAKy9B,EAAUz+B,UACzBy+B,EAAUz9B,GAAGnL,KAAO4oC,EAAUz9B,GAAG41B,YACjC6H,EAAUz+B,UAAUikC,SAAW,SAAkB3tB,GAAlB,GAElB5hB,GACDwvC,EAFJvxB,EAAW5c,KAAKiuC,EACpB,KAAStvC,EAAI,EAAGA,EAAIie,EAAS/d,OAAQF,IAC7BwvC,EAAQvxB,EAASje,GACjBwvC,EAAMD,SACNC,EAAMD,SAAS3tB,GAEfA,EAAS4tB,EAGjB,OAAOnuC,OAEJ0oC,GACT7D,IAEFloB,GAAQ,SAAUmoB,GAClB,QAASnoB,GAAM1b,GACX6jC,EAAW1mB,KAAKpe,KAAMiB,GACtBjB,KAAK4c,YAEThgB,GAAa+f,EAAOmoB,GACpBnoB,EAAM1S,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WACzD0S,EAAM1S,UAAU42B,YAAclkB,EAC9BA,EAAM1R,GAAK0R,EAAM1S,UACjB0S,EAAM1R,GAAGnL,KAAO6c,EAAM1R,GAAG41B,WACzB,IAAIsG,IAAuB3tB,YAuF3B,OAtFA2tB,GAAmB3tB,SAAS5Y,IAAM,WAC9B,MAAO,SAEX+b,EAAM1S,UAAUmkC,eAAiB,SAAwBC,EAAQC,EAAO1pB,GACpE5kB,KAAKkhC,QAAQ,kBACTmN,OAAQA,EACRC,MAAOA,EACP1pB,MAAOA,KAGfjI,EAAM1S,UAAU+b,OAAS,WAIrB,MAHA5jB,GAAWpC,KAAK4c,SAAU0N,WAC1BtqB,KAAKuuC,UAAUjkB,UAAWtqB,MAC1BA,KAAKouC,eAAe,MAAO9jB,WACpBtqB,MAEX2c,EAAM1S,UAAU8uB,OAAS,SAAgBnU,EAAOzd,GAI5C,MAHAnH,MAAK4c,SAAS7I,OAAO6Q,EAAO,EAAGzd,GAC/BA,EAAQqD,OAASxK,KACjBA,KAAKouC,eAAe,OAAQjnC,GAAUyd,GAC/B5kB,MAEX2c,EAAM1S,UAAUukC,SAAW,SAAkBrnC,EAASyd,GAClD,MAAO5kB,MAAK+4B,OAAOnU,EAAOzd,IAE9BwV,EAAM1S,UAAU0U,OAAS,SAAgBxX,GACrC,GAAIyd,GAAQ5kB,KAAK4c,SAAS3C,QAAQ9S,EAMlC,OALIyd,IAAS,IACT5kB,KAAK4c,SAAS7I,OAAO6Q,EAAO,GAC5Bzd,EAAQqD,OAAS,KACjBxK,KAAKouC,eAAe,UAAWjnC,GAAUyd,IAEtC5kB,MAEX2c,EAAM1S,UAAUwkC,SAAW,SAAkB7pB,GACzC,GAAI,GAAKA,GAASA,EAAQ5kB,KAAK4c,SAAS/d,OAAQ,CAC5C,GAAIsI,GAAUnH,KAAK4c,SAASgI,EAC5B5kB,MAAK4c,SAAS7I,OAAO6Q,EAAO,GAC5Bzd,EAAQqD,OAAS,KACjBxK,KAAKouC,eAAe,UAAWjnC,GAAUyd,GAE7C,MAAO5kB,OAEX2c,EAAM1S,UAAUyZ,MAAQ,WACpB,GAAI4qB,GAAQtuC,KAAK4c,QAIjB,OAHA5c,MAAK4c,YACL5c,KAAKuuC,UAAUD,EAAO,MACtBtuC,KAAKouC,eAAe,SAAUE,EAAO,GAC9BtuC,MAEX2c,EAAM1S,UAAUwI,KAAO,SAAclH,GACjC,MAAOuK,IAAoB9V,KAAK4c,UAAU,EAAM5c,KAAKsnC,iBAAiB/7B,KAE1EoR,EAAM1S,UAAUmM,QAAU,WACtB,MAAON,IAAoB9V,KAAK4c,UAAU,IAE9CD,EAAM1S,UAAUy9B,aAAe,SAAsBn8B,GACjD,MAAOgL,IAA2BvW,KAAK4c,SAAU5c,KAAKsnC,iBAAiB/7B,KAE3EoR,EAAM1S,UAAUq9B,iBAAmB,SAA0B/7B,GACzD,MAAOgvB,IAAUtwB,UAAUq9B,iBAAiBlpB,KAAKpe,KAAMuL,IAAmB,MAE9EoR,EAAM1S,UAAUy8B,cAAgB,SAAuBl2B,EAAO62B,GAA9B,GAEpBzqB,GACAvS,EACK9C,CAHb,IAAIvH,KAAKmW,UAGL,IAFIyG,EAAW5c,KAAK4c,SAChBvS,EAAYrK,KAAKsnC,iBAAiBD,GAC7B9/B,EAAM,EAAGA,EAAMqV,EAAS/d,OAAQ0I,IACrC,GAAIqV,EAASrV,GAAKm/B,cAAcl2B,EAAOnG,GACnC,OAAO,CAInB,QAAO,GAEXsS,EAAM1S,UAAUskC,UAAY,SAAmBx4B,EAAU24B,GAA7B,GAEf/vC,GACDwvC,EACA3jC,EAHJ65B,EAASrkC,IACb,KAASrB,EAAI,EAAGA,EAAIoX,EAASlX,OAAQF,IAC7BwvC,EAAQp4B,EAASpX,GACjB6L,EAAS2jC,EAAM3jC,OACfA,GAAUA,IAAW65B,GAAU75B,EAAOmU,QACtCnU,EAAOmU,OAAOwvB,GAElBA,EAAM3jC,OAASkkC,GAGvB3vB,OAAO8mB,iBAAiBlpB,EAAM1S,UAAWk9B,GAClCxqB,GACTmf,GAAYvB,GAAW,aA+BrB76B,IACAivC,aAAc,QACdC,eAAgB,QAChBC,WAAY,QACZC,QAAS,EACTC,YAAa,aACbC,YAAa,EACb52B,MAAM,EACN62B,QAAQ,GAERhwB,GAAU,SAAUlJ,EAAUwK,GAC9BxK,EAASkJ,QAAQsB,IAEjBwb,GAAiB,SAAUhmB,EAAUwK,GAApB,GAERhZ,GADL1I,EAASkX,EAASlX,MACtB,KAAS0I,EAAM1I,EAAS,EAAG0I,GAAO,EAAGA,IACjCgZ,EAASxK,EAASxO,GAAMA,IAG5By0B,GAAS,SAAUkT,GACnB,QAASlT,GAAOnlB,EAAM5V,GAClBiuC,EAAS9wB,KAAKpe,KAAM3D,EAAEwD,UAAWH,GAAiBuB,IAClDjB,KAAKguC,MAAQn3B,EACb7W,KAAKmvC,aAqJT,MAnJAvyC,IAAao/B,EAAQkT,GACrBlT,EAAO/xB,UAAY8U,OAAOzL,OAAO47B,GAAYA,EAASjlC,WACtD+xB,EAAO/xB,UAAU42B,YAAc7E,EAC/BA,EAAO/wB,GAAK+wB,EAAO/xB,UACnB+xB,EAAO/wB,GAAGnL,KAAOk8B,EAAO/wB,GAAG41B,YAC3B7E,EAAO/xB,UAAU4M,KAAO,SAAcxW,GAClC,MAAIA,IACAL,KAAKguC,MAAQ3tC,EACNL,MAEJA,KAAKguC,OAEhBhS,EAAO/xB,UAAUmlC,SAAW,WAAA,GACpBnuC,GAAUjB,KAAKiB,QACfouC,EAAWrvC,KAAKmvC,SACQ,gBAAxBluC,EAAQ8tC,aACRM,EAASr4B,UAAY,QACrBq4B,EAASC,gBAAkB,SAC3BD,EAASE,UAAY,IACrBF,EAASG,WAAa,MAEtBH,EAASr4B,UAAY,SACrBq4B,EAASC,gBAAkB,QAC3BD,EAASE,UAAY,IACrBF,EAASG,WAAa,KAEtBvuC,EAAQ4mB,SACR7nB,KAAKif,QAAU8c,GACf/7B,KAAKyvC,aAAex4B,KAEpBjX,KAAKif,QAAUA,GACfjf,KAAKyvC,aAAe74B,KAG5BolB,EAAO/xB,UAAUylC,OAAS,WAAA,GASlBzuC,GACA4V,EACAxN,EACAsmC,EACAC,EACAC,EACA74B,EACAs4B,EACAC,EACAC,EACAM,EACAC,EACAhwC,EACAiwC,EACAC,EAAc9zB,EAAO+zB,EACrBC,EAOKC,EAWD77B,EACA87B,EACAC,EACAC,EACAlmC,EA7CJg6B,EAASrkC,IACb,IAAKA,KAAKguC,OAAkC,IAAzBhuC,KAAK4c,SAAS/d,OAAjC,CA6BA,IA1BAmB,KAAKovC,WACDpvC,KAAKiB,QAAQoJ,WACbrK,KAAKqK,UAAU,MAEfpJ,EAAUjB,KAAKiB,QACf4V,EAAO7W,KAAKguC,MACZ3kC,EAAMrJ,KAAKwwC,cACXb,EAAStmC,EAAIsmC,OACbC,EAAavmC,EAAIumC,WACjBC,EAAQ7vC,KAAKmvC,UACbn4B,EAAY64B,EAAM74B,UAClBs4B,EAAkBO,EAAMP,gBACxBC,EAAYM,EAAMN,UAClBC,EAAaK,EAAML,WACnBM,EAAc,GAAIriC,IAClBsiC,EAAgB,GAAItiC,IACpB1N,EAAO,GAAIu6B,IACX0V,EAAap5B,GAAWg5B,EAAY/4B,EAAM5V,EAAQ0tC,aAAca,EAAYF,GAE5Ea,EAAkB,SAAU19B,EAAMlL,GAClC,GAAIJ,GAAUgV,EAAMpG,SAASxO,EAC7BwoC,GAAcR,GAAaU,EAC3BF,EAAcP,GAAc54B,GAAWnE,EAAK1S,KAAKuvC,GAAkBY,EAAUjvC,EAAQ4tC,WAAYW,EAAYF,GAC7G74B,GAAiBs5B,EAAet9B,EAAMtL,GACtC8oC,GAAgBx9B,EAAK1S,KAAKiX,GAAa/V,EAAQ6tC,SAE1CsB,EAAW,EAAGA,EAAWT,EAAO9wC,OAAQuxC,IAC7Cj0B,EAAQwzB,EAAOS,GACfN,EAAYP,GAAaU,EAAe5L,EAAOoL,aAAatzB,EAAMpc,KAAM8W,EAAM5V,EAAQ2tC,eAAgBW,EAAWv4B,GACjH84B,EAAYN,GAAcQ,EAC1BjwC,EAAKiX,GAAamF,EAAMpc,KACxBA,EAAKuvC,GAAmBnzB,EAAMs0B,SAC9BP,EAAW,GAAI75B,IAAKy5B,EAAa/vC,GACjCskC,EAAOplB,QAAQ9C,EAAMu0B,OAAQP,GAC7BH,GAAc7zB,EAAMs0B,SAAWxvC,EAAQ+tC,aAEtC/tC,EAAQmX,MAAQ+D,EAAMpc,KAAO8W,EAAK9W,KAAKiX,KACpCzC,EAAQsC,EAAK9W,KAAKiX,GAAak5B,EAASnwC,KAAKiX,GAC7Cq5B,EAAcH,EAAS9J,UAAU7xB,MAAMA,EAAOA,GAC9C+7B,EAAaJ,EAASnwC,KAAKuvC,GAAmB/6B,EAC9Cg8B,EAAW35B,GAAW05B,EAAYz5B,EAAM5V,EAAQ0tC,aAAca,EAAYF,GAC1EjlC,EAAYmB,IACE,MAAd+jC,EACAllC,EAAU6J,UAAU2C,EAAKF,OAAOlS,EAAI4rC,EAAY5rC,EAAG8rC,EAAWF,EAAY1rC,GAE1E0F,EAAU6J,UAAUq8B,EAAWF,EAAY5rC,EAAGoS,EAAKF,OAAOhS,EAAI0rC,EAAY1rC,GAE9E0F,EAAUkK,MAAMA,EAAOA,GACvBvU,KAAKqK,UAAUA,MAGvB2xB,EAAO/xB,UAAUumC,YAAc,WAAA,GAgBlBjpC,GACDJ,EACAsL,EAjBJ4xB,EAASrkC,KACTqJ,EAAMrJ,KACNiB,EAAUoI,EAAIpI,QACd2b,EAAWvT,EAAIuT,SACfoyB,EAAc/tC,EAAQ+tC,YACtB52B,EAAOnX,EAAQmX,KACf02B,EAAU7tC,EAAQ6tC,QAClB93B,EAAYhX,KAAKmvC,UAAUn4B,UAC3BmF,EAAQnc,KAAK2wC,YACbhB,KACAiB,EAAW,WACXjB,EAAOrxC,KAAK6d,GACZyzB,GAAczzB,EAAMs0B,SAAWzB,GAE/BY,GAAcZ,CAClB,KAASznC,EAAM,EAAGA,EAAMqV,EAAS/d,OAAQ0I,IACjCJ,EAAUyV,EAASrV,GACnBkL,EAAOmK,EAASrV,GAAKiP,cACrBrP,EAAQgP,WAAa1D,IACjB2F,GAAQ+D,EAAMpc,KAAO0S,EAAK1S,KAAKiX,GAAa83B,EAAUzK,EAAO2J,MAAMjuC,KAAKiX,GAC5C,IAAxBmF,EAAMu0B,OAAO7xC,QACbwlC,EAAOwM,YAAY10B,EAAO1J,EAAMtL,GAChCypC,IACAz0B,EAAQkoB,EAAOsM,cAEfC,IACAz0B,EAAQkoB,EAAOsM,YACftM,EAAOwM,YAAY10B,EAAO1J,EAAMtL,IAGpCk9B,EAAOwM,YAAY10B,EAAO1J,EAAMtL,GAO5C,OAHIgV,GAAMu0B,OAAO7xC,QACb+xC,KAGAjB,OAAQA,EACRC,WAAYA,IAGpB5T,EAAO/xB,UAAU4mC,YAAc,SAAqB10B,EAAO1J,EAAMtL,GAC7DgV,EAAMpc,MAAQ0S,EAAK1S,KAAKC,KAAKmvC,UAAUn4B,WAAahX,KAAKiB,QAAQ6tC,QACjE3yB,EAAMs0B,SAAW9qC,KAAKD,IAAI+M,EAAK1S,KAAKC,KAAKmvC,UAAUG,iBAAkBnzB,EAAMs0B,UAC3Et0B,EAAMu0B,OAAOpyC,KAAKmU,GAClB0J,EAAMpG,SAASzX,KAAK6I,IAExB60B,EAAO/xB,UAAU0mC,UAAY,WACzB,OACIF,SAAU,EACV1wC,MAAOC,KAAKiB,QAAQ6tC,QACpB4B,UACA36B,cAGDimB,GACTrf,IACEsf,GAAS,SAAU6I,GACnB,QAASgM,GAAQ1R,EAAUn+B,GACN,SAAbm+B,IACAA,EAAW,GAAI/oB,KAEH,SAAZpV,IACAA,MAEJ6jC,EAAW1mB,KAAKpe,KAAMiB,GACtBjB,KAAKo/B,SAASA,GACTv8B,EAAQ7C,KAAKiB,QAAQotB,SACtBruB,KAAKquB,OAAO,QAGpBzxB,GAAak0C,EAAShM,GACtBgM,EAAQ7mC,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WAC3D6mC,EAAQ7mC,UAAU42B,YAAciQ,EAChCA,EAAQ7lC,GAAK6lC,EAAQ7mC,UACrB6mC,EAAQ7lC,GAAGnL,KAAOgxC,EAAQ7lC,GAAG41B,WAC7B,IAAIsG,IAAuB3tB,YAiB3B,OAhBA2tB,GAAmB3tB,SAAS5Y,IAAM,WAC9B,MAAO,QAEXkwC,EAAQ7mC,UAAU++B,MAAQ,SAAez+B,GACrC,MAAOvK,MAAKipC,UAAUx2B,KAAKlI,IAE/BumC,EAAQ7mC,UAAUmM,QAAU,WACxB,MAAOpW,MAAKipC,UAAUx2B,QAE1Bq+B,EAAQ7mC,UAAU49B,eAAiB,SAAwBr3B,GACvD,MAAOxQ,MAAKipC,UAAUvC,cAAcl2B,IAExCsgC,EAAQ7mC,UAAU08B,UAAY,SAAmBn2B,GAC7C,MAAOxQ,MAAKo/B,WAAWuH,UAAUn2B,EAAOxQ,KAAKiB,QAAQotB,OAAOrvB,MAAQ,IAExE+f,OAAO8mB,iBAAiBiL,EAAQ7mC,UAAWk9B,GACpC2J,GACTpW,GAAUE,GAAWC,GAAaN,OAiIhC2B,GAAa,SAAU+O,GACvB,QAAS/O,KACL+O,EAAiBtuC,MAAMqD,KAAMsqB,WAUjC,MARA1tB,IAAas/B,EAAY+O,GACzB/O,EAAWjyB,UAAY8U,OAAOzL,OAAO23B,GAAoBA,EAAiBhhC,WAC1EiyB,EAAWjyB,UAAU42B,YAAc3E,EACnCA,EAAWjxB,GAAKixB,EAAWjyB,UAC3BiyB,EAAWjxB,GAAGnL,KAAOo8B,EAAWjxB,GAAG41B,YACnC3E,EAAWjyB,UAAU0gC,QAAU,WAC3B3qC,KAAKuhC,eAAgBh5B,MAAO,WAEzB2zB,GACTd,IAeEe,GAAc,SAAU0I,EAAOv4B,GAC/B,GAAI9D,GAAS,SAAUq8B,GACnB,QAASr8B,KACLq8B,EAAMloC,MAAMqD,KAAMsqB,WAOtB,MALA1tB,IAAa4L,EAAQq8B,GACrBr8B,EAAOyB,UAAY8U,OAAOzL,OAAOuxB,GAASA,EAAM56B,WAChDzB,EAAOyB,UAAU42B,YAAcr4B,EAC/BA,EAAOyC,GAAKzC,EAAOyB,UACnBzB,EAAOyC,GAAGnL,KAAO0I,EAAOyC,GAAG41B,YACpBr4B,GACTq8B,EAEF,OADAnsB,IAAuBlQ,EAAOyB,UAAWqC,GAClC9D,GAEPvH,IACA,SACA,QACA,WAEAm7B,GAAe,SAAU0I,GACzB,QAAS1I,GAAapgB,EAAQ3W,EAAOyW,GACjCgpB,EAAW1mB,KAAKpe,MAChBA,KAAKiB,QAAU,GAAIm5B,KACfpe,OAAQA,EACR3W,MAAOA,EACPyW,QAASjZ,EAAQiZ,GAAWA,EAAU,IAE1C9b,KAAKiB,QAAQ+/B,YAAYhhC,MAoB7B,MAlBApD,IAAaw/B,EAAc0I,GAC3B1I,EAAanyB,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WAChEmyB,EAAanyB,UAAU42B,YAAczE,EACrCA,EAAanxB,GAAKmxB,EAAanyB,UAC/BmyB,EAAanxB,GAAGnL,KAAOs8B,EAAanxB,GAAG41B,YACvCzE,EAAa9oB,OAAS,SAAgBy9B,GAClC,GAAIluC,EAAQkuC,GAAM,CACd,GAAIn1B,EAQJ,OANIA,GADAm1B,YAAe3U,GACR2U,EACAA,EAAIlyC,OAAS,EACb,GAAIu9B,GAAa2U,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAErC,GAAI3U,GAAa2U,EAAI/0B,OAAQ+0B,EAAI1rC,MAAO0rC,EAAIj1B,WAKxDsgB,GACTD,GAAYlC,GAAch5B,KACxBo7B,GAAW,SAAU8H,GACrB,QAAS9H,GAASp7B,GACE,SAAZA,IACAA,MAEJkjC,EAAgB/lB,KAAKpe,MACrBA,KAAK2b,MAAQ,GAAIugB,IAAWl8B,KAAKgxC,aAAa/vC,EAAQ0a,QACtD3b,KAAK2b,MAAMqlB,YAAYhhC,MACvBA,KAAKixC,WAAahwC,EAAQozB,UAC1Br0B,KAAKonC,GAAKrkC,IAEdnG,GAAay/B,EAAU8H,GACvB9H,EAASpyB,UAAY8U,OAAOzL,OAAO6wB,GAAmBA,EAAgBl6B,WACtEoyB,EAASpyB,UAAU42B,YAAcxE,EACjCA,EAASpxB,GAAKoxB,EAASpyB,UACvBoyB,EAASpxB,GAAGnL,KAAOu8B,EAASpxB,GAAG41B,WAC/B,IAAIsG,IAAuB3tB,YAyC3B,OAxCA2tB,GAAmB3tB,SAAS5Y,IAAM,WAC9B,MAAO,YAEXy7B,EAASpyB,UAAUoqB,UAAY,SAAmBh0B,GAC9C,MAAIwC,GAAQxC,IACRL,KAAKixC,WAAa5wC,EAClBL,KAAKuhC,gBACEvhC,MAEJA,KAAKixC,YAEhB5U,EAASpyB,UAAU+mC,aAAe,SAAsBr1B,GAAtB,GAI1BnT,GACKjB,CAAT,KAJc,SAAVoU,IACAA,MAEAnT,KACKjB,EAAM,EAAGA,EAAMoU,EAAM9c,OAAQ0I,IAClCiB,EAAOlK,KAAK89B,GAAa9oB,OAAOqI,EAAMpU,IAE1C,OAAOiB,IAEX6zB,EAASpyB,UAAUinC,QAAU,SAAiBl1B,EAAQ3W,EAAOyW,GACzD9b,KAAK2b,MAAMrd,KAAK,GAAI89B,IAAapgB,EAAQ3W,EAAOyW,KAEpDugB,EAASpyB,UAAUknC,WAAa,SAAoBv1B,GAChD,GAAIgJ,GAAQ5kB,KAAK2b,MAAM1B,QAAQ2B,EAC3BgJ,IAAS,GACT5kB,KAAK2b,MAAM5H,OAAO6Q,EAAO,IAGjCyX,EAASpyB,UAAUs3B,cAAgB,SAAuB/8B,GACtDxE,KAAKkhC,QAAQ,iBACT34B,MAAO,YAAc/D,EAAI,IAAMA,EAAE+D,MAAQ,IACzClI,MAAOL,QAGfq8B,EAASpyB,UAAUa,eAAiB,WAChC9K,KAAKuhC,iBAETxiB,OAAO8mB,iBAAiBxJ,EAASpyB,UAAWk9B,GACrC9K,GACTpC,IACEqC,IACA,QACA,OAEAlI,GAAiB,SAAU0Q,GAC3B,QAAS1Q,GAAenzB,GACJ,SAAZA,IACAA,MAEJ6jC,EAAW1mB,KAAKpe,KAAMiB,GACtBjB,KAAKoQ,MAAMnP,EAAQmP,OAAS,GAAI3C,KAChCzN,KAAK8zB,IAAI7yB,EAAQ6yB,KAAO,GAAIrmB,IAAM,EAAG,IAOzC,MALA7Q,IAAaw3B,EAAgB0Q,GAC7B1Q,EAAenqB,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WAClEmqB,EAAenqB,UAAU42B,YAAczM,EACvCA,EAAenpB,GAAKmpB,EAAenqB,UACnCmqB,EAAenpB,GAAGnL,KAAOs0B,EAAenpB,GAAG41B,YACpCzM,GACTkH,GAAWe,GAAUC,KACnBC,GAAiB,SAAUuI,GAC3B,QAASvI,GAAet7B,GACJ,SAAZA,IACAA,MAEJ6jC,EAAW1mB,KAAKpe,KAAMiB,GACtBjB,KAAK2L,OAAO1K,EAAQ0K,QAAU,GAAI8B,KAClCzN,KAAKoxC,QAAUvuC,EAAQ5B,EAAQilC,QAAUjlC,EAAQilC,OAAS,EAC1DlmC,KAAKqxC,cAAgBpwC,EAAQqwC,aAuBjC,MArBA10C,IAAa2/B,EAAgBuI,GAC7BvI,EAAetyB,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WAClEsyB,EAAetyB,UAAU42B,YAActE,EACvCA,EAAetxB,GAAKsxB,EAAetyB,UACnCsyB,EAAetxB,GAAGnL,KAAOy8B,EAAetxB,GAAG41B,YAC3CtE,EAAetyB,UAAUi8B,OAAS,SAAgB7lC,GAC9C,MAAIwC,GAAQxC,IACRL,KAAKoxC,QAAU/wC,EACfL,KAAK8K,iBACE9K,MAEJA,KAAKoxC,SAEhB7U,EAAetyB,UAAUqnC,aAAe,SAAsBjxC,GAC1D,MAAIwC,GAAQxC,IACRL,KAAKqxC,cAAgBhxC,EACrBL,KAAKuhC,gBACEvhC,MAEJA,KAAKqxC,eAET9U,GACTjB,GAAWe,IAAW,YA0BpBG,IACA7jB,MAAOA,GACPE,OAAQA,GACRC,eAAgBA,IAGhB4jB,GAAmB,SAAUkE,GAC7B,QAASlE,KACLkE,EAASxiB,KAAKpe,MACdA,KAAKuxC,UAET30C,GAAa8/B,EAAkBkE,GAC/BlE,EAAiBzyB,UAAY8U,OAAOzL,OAAOstB,GAAYA,EAAS32B,WAChEyyB,EAAiBzyB,UAAU42B,YAAcnE,EACzCA,EAAiBzxB,GAAKyxB,EAAiBzyB,UACvCyyB,EAAiBzxB,GAAGnL,KAAO48B,EAAiBzxB,GAAG41B,WAC/C,IAAIkE,IAAoBxlC,WA8BxB,OA7BAwlC,GAAgBxlC,QAAQqB,IAAM,WAI1B,MAHK67B,MACDA,GAAW,GAAIC,IAEZD,IAEXC,EAAiBzyB,UAAUunC,SAAW,SAAkBtoC,EAAMqQ,GAC1DvZ,KAAKuxC,OAAOjzC,MACR4K,KAAMA,EACNqQ,KAAMA,KAGdmjB,EAAiBzyB,UAAUqJ,OAAS,SAAgBnM,EAASlG,GAAzB,GAE5B2I,GAEI2P,EACK5a,EAJT2vC,EAAQtuC,KAAKuxC,MAEjB,IAAItwC,GAAWA,EAAQsY,KAEnB,IADIA,EAAOtY,EAAQsY,KAAKjE,cACf3W,EAAI,EAAGA,EAAI2vC,EAAMzvC,OAAQF,IAC9B,GAAI2vC,EAAM3vC,GAAGuK,KAAKoM,gBAAkBiE,EAAM,CACtC3P,EAAQ0kC,EAAM3vC,EACd,OAIZ,GAAIiL,EACA,MAAO,IAAIA,GAAM2P,KAAKpS,EAASlG,IAGvC8d,OAAO8mB,iBAAiBnJ,EAAkBqI,GACnCrI,GACT98B,IACE+8B,GAAY,SAAUiE,GACtB,QAASjE,GAAUx1B,EAASlG,GACxB2/B,EAASxiB,KAAKpe,MACdA,KAAKiB,QAAU5E,EAAEwD,UAAWG,KAAKiB,QAASA,GAC1CjB,KAAKmH,QAAUA,EAEnBvK,GAAa+/B,EAAWiE,GACxBjE,EAAU1yB,UAAY8U,OAAOzL,OAAOstB,GAAYA,EAAS32B,WACzD0yB,EAAU1yB,UAAU42B,YAAclE,EAClCA,EAAU1xB,GAAK0xB,EAAU1yB,UACzB0yB,EAAU1xB,GAAGnL,KAAO68B,EAAU1xB,GAAG41B,WACjC,IAAIsG,IAAuBlmC,WA2D3B,OA1DA07B,GAAUrpB,OAAS,SAAgBiG,EAAMpS,EAASlG,GAC9C,MAAOy7B,IAAiBn9B,QAAQ+T,OAAOiG,EAAMpS,EAASlG,IAE1DkmC,EAAmBlmC,QAAQL,IAAM,WAC7B,MAAOZ,MAAKyxC,WACRC,SAAU,IACVC,OAAQ,UAGhBxK,EAAmBlmC,QAAQwX,IAAM,SAAUpY,GACvCL,KAAKyxC,SAAWpxC,GAEpBs8B,EAAU1yB,UAAU2nC,MAAQ,aAE5BjV,EAAU1yB,UAAU4nC,KAAO,aAE3BlV,EAAU1yB,UAAU6nC,KAAO,WAAA,GAQnBH,GACAvhC,EACA2hC,EATA1N,EAASrkC,KACTiB,EAAUjB,KAAKiB,QACfywC,EAAWzwC,EAAQywC,SACnBM,EAAQ/wC,EAAQ+wC,KACN,UAAVA,IACAA,EAAQ,GAERL,EAASnV,GAAgBv7B,EAAQ0wC,QACjCvhC,EAAQ8pB,KAAQ8X,EAChBD,EAAS3hC,EAAQshC,EACJ,IAAbA,GACA1xC,KAAK6xC,KAAK,GACV7xC,KAAKiyC,SAEL/rB,WAAW,WACP,GAAIgsB,GAAO,WAAA,GAIHC,GACAp5B,EACA3E,EACAg+B,CANA/N,GAAOgO,WAGPF,EAAWjY,KACXnhB,EAAOvT,EAAW2sC,EAAW/hC,EAAO,EAAGshC,GACvCt9B,EAAW2E,EAAO24B,EAClBU,EAAiBT,EAAOv9B,EAAU2E,EAAM,EAAG,EAAG24B,GAClDrN,EAAOwN,KAAKO,GACRD,EAAWJ,EACX70C,MAAMo1C,eAAeJ,GAErB7N,EAAO4N,SAGfC,MACDF,IAGXrV,EAAU1yB,UAAUgoC,MAAQ,WACxBjyC,KAAKqyC,UAAW,GAEpB1V,EAAU1yB,UAAU+S,QAAU,WAC1Bhd,KAAKiyC,SAETlzB,OAAO8mB,iBAAiBlJ,EAAU1yB,UAAWk9B,GACtCxK,GACT/8B,IAEEi9B,GAAa,SAAU+D,GACvB,QAAS/D,KACL+D,EAASjkC,MAAMqD,KAAMsqB,WAEzB1tB,GAAaigC,EAAY+D,GACzB/D,EAAW5yB,UAAY8U,OAAOzL,OAAOstB,GAAYA,EAAS32B,WAC1D4yB,EAAW5yB,UAAU42B,YAAchE,EACnCA,EAAW5xB,GAAK4xB,EAAW5yB,UAC3B4yB,EAAW5xB,GAAGnL,KAAO+8B,EAAW5xB,GAAG41B,WACnC,IAAIkE,IAAoBxlC,WAYxB,OAXAwlC,GAAgBxlC,QAAQqB,IAAM,WAI1B,MAHKg8B,MACDA,GAAa,GAAIC,IAEdD,IAEXC,EAAW5yB,UAAUqjC,MAAQ,SAAe5uC,EAAKuC,GAC7C,GAAIsxC,GAAY,GAAI/W,IAAUv6B,EAC9B,OAAO8T,IAAUw9B,EAAW7zC,IAEhCqgB,OAAO8mB,iBAAiBhJ,EAAYkI,GAC7BlI,GACTj9B,IACEk9B,GAAW,SAAU8D,GACrB,QAAS9D,GAAS0V,GACd5R,EAASxiB,KAAKpe,MACdA,KAAKyyC,cACLzyC,KAAKwK,OAAS,KACVgoC,IACAxyC,KAAKwyC,WAAaA,EAClBxyC,KAAK0yC,WAoEb,MAjEA91C,IAAakgC,EAAU8D,GACvB9D,EAAS7yB,UAAY8U,OAAOzL,OAAOstB,GAAYA,EAAS32B,WACxD6yB,EAAS7yB,UAAU42B,YAAc/D,EACjCA,EAAS7xB,GAAK6xB,EAAS7yB,UACvB6yB,EAAS7xB,GAAGnL,KAAOg9B,EAAS7xB,GAAG41B,YAC/B/D,EAAS7yB,UAAU+S,QAAU,WAAA,GAKrBJ,GACKje,EALL0lC,EAASrkC,IAKb,KAJIA,KAAKwyC,YACLxyC,KAAKwyC,WAAWvR,eAAejhC,MAE/B4c,EAAW5c,KAAKyyC,WACX9zC,EAAI,EAAGA,EAAIie,EAAS/d,OAAQF,IACjC0lC,EAAOoO,WAAW9zC,GAAGqe,SAEzBhd,MAAKwK,OAAS,MAElBsyB,EAAS7yB,UAAU4S,KAAO,aAE1BigB,EAAS7yB,UAAUyoC,QAAU,WACrB1yC,KAAKwyC,YACLxyC,KAAKwyC,WAAWxR,YAAYhhC,OAGpC88B,EAAS7yB,UAAU+b,OAAS,SAAgBnC,GACxC7jB,KAAKyyC,WAAWn0C,KAAKulB,GACrBA,EAAKrZ,OAASxK,MAElB88B,EAAS7yB,UAAUukC,SAAW,SAAkB3qB,EAAMrE,GAClDxf,KAAKyyC,WAAW1+B,OAAOyL,EAAK,EAAGqE,GAC/BA,EAAKrZ,OAASxK,MAElB88B,EAAS7yB,UAAU0U,OAAS,SAAgBiG,EAAOhS,GAAvB,GAGfjU,GAFL0lC,EAASrkC,KACT8zB,EAAMlP,EAAQhS,CAClB,KAASjU,EAAIimB,EAAOjmB,EAAIm1B,EAAKn1B,IACzB0lC,EAAOoO,WAAW9zC,GAAGg0C,YAEzB3yC,MAAKyyC,WAAW1+B,OAAO6Q,EAAOhS,IAElCkqB,EAAS7yB,UAAU0oC,WAAa,WAC5B3yC,KAAK0jB,QACL1jB,KAAKgd,WAET8f,EAAS7yB,UAAUyZ,MAAQ,WACvB1jB,KAAK2e,OAAO,EAAG3e,KAAKyyC,WAAW5zC,SAEnCi+B,EAAS7yB,UAAU2oC,WAAa,WACxB5yC,KAAKwK,QACLxK,KAAKwK,OAAOooC,cAGpB9V,EAAS7yB,UAAUa,eAAiB,WAChC9K,KAAK4yC,cAET9V,EAAS7yB,UAAUs3B,cAAgB,WAC/BvhC,KAAK4yC,cAET9V,EAAS7yB,UAAUmkC,eAAiB,SAAwB5pC,GACvC,QAAbA,EAAE6pC,OACFruC,KAAK6c,KAAKrY,EAAE8pC,MAAO9pC,EAAEogB,OACD,WAAbpgB,EAAE6pC,QACTruC,KAAK2e,OAAOna,EAAEogB,MAAOpgB,EAAE8pC,MAAMzvC,QAEjCmB,KAAK4yC,cAEF9V,GACTl9B,IACEwH,IACA,QACA,aACA,aACA,YACA,UAEA21B,GAAY,SAAU8V,GACtB,QAASrS,GAAQr5B,EAASlG,GACtB4xC,EAAcz0B,KAAKpe,MACnBA,KAAKiB,QAAU5E,EAAEwD,UAAWoB,GAC5BjB,KAAKmH,QAAUA,EACfnH,KAAKmH,QAAQwtB,mBAAqB30B,KAAK+0B,aAAa7qB,KAAKlK,MACzDA,KAAK8yC,OAAS9yC,KAAK+yC,SAAS,SAC5B/yC,KAAKgzC,YAAchzC,KAAK+yC,SAAS,cACjC/yC,KAAKizC,YAAcjzC,KAAK+yC,SAAS,cACjC/yC,KAAKkzC,WAAalzC,KAAK+yC,SAAS,aAChC/yC,KAAKmzC,QAAU,GAAIx2B,IACnB7T,EAAY3B,EAASnH,KAAKiB,SAC1BjB,KAAKkK,KAAK9C,GAAQpH,KAAKiB,SACvBjB,KAAKozC,kBA6GT,MA3GAx2C,IAAa4jC,EAASqS,GACtBrS,EAAQv2B,UAAY8U,OAAOzL,OAAOu/B,GAAiBA,EAAc5oC,WACjEu2B,EAAQv2B,UAAU42B,YAAcL,EAChCA,EAAQv1B,GAAKu1B,EAAQv2B,UACrBu2B,EAAQv1B,GAAGnL,KAAO0gC,EAAQv1B,GAAG41B,YAC7BL,EAAQv2B,UAAU2T,KAAO,SAAczW,GACnCnH,KAAKmzC,QAAQv2B,SAASte,KAAK6I,IAE/Bq5B,EAAQv2B,UAAUyZ,MAAQ,WACtB1jB,KAAKmzC,QAAQv2B,aAEjB4jB,EAAQv2B,UAAU+S,QAAU,WACxBhd,KAAKmzC,QAAU,KACfnzC,KAAKmH,QAAQwtB,mBAAqB,KAClC30B,KAAKqzC,UAET7S,EAAQv2B,UAAUqpC,YAAc,SAAqB9uC,GAIjD,IAJ4B,GAGxBqf,GAFAwgB,EAASrkC,KACTuzC,EAAUvuC,EAAaR,IAEnBqf,GAAQ0vB,IACZ1vB,EAAO0vB,EAAQC,WACXD,IAAYlP,EAAOl9B,UAGvBosC,EAAUA,EAAQ7oC,aAEtB,IAAImZ,EACA,MAAOA,GAAK2uB,YAGpBhS,EAAQv2B,UAAU8qB,aAAe,WAC7B,MAAO/0B,MAAKmzC,SAEhB3S,EAAQv2B,UAAUuT,QAAU,WACxB,MAAO1U,GAAY9I,KAAKmH,UAE5Bq5B,EAAQv2B,UAAUwpC,YAAc,SAAqB1zC,GACjD,MAAIA,QACAC,KAAKC,MAAQF,GAENC,KAAKC,OAGpBugC,EAAQv2B,UAAU+7B,QAAU,SAAiBjmC,GACzC+I,EAAY9I,KAAKmH,QAASpH,GAC1BC,KAAKyzC,YAAY1zC,GACjBC,KAAK0zC,WAETlT,EAAQv2B,UAAU0pC,OAAS,SAAgBC,GAAhB,GACnB7zC,GAAOC,KAAKwd,UACZi2B,EAAczzC,KAAKyzC,eACnBG,IAAU7zC,EAAKf,MAAQ,GAAKe,EAAKd,OAAS,MAAQw0C,GAAe1zC,EAAKf,QAAUy0C,EAAYz0C,OAASe,EAAKd,SAAWw0C,EAAYx0C,WACjIe,KAAKyzC,YAAY1zC,GACjBC,KAAK0zC,QAAQ3zC,EAAM6zC,GACnB5zC,KAAKkhC,QAAQ,SAAUnhC,KAG/BygC,EAAQv2B,UAAUlK,KAAO,SAAcM,GACnC,MAAKA,OAGLL,MAAKgmC,QAAQ3lC,GAFFL,KAAKwd,WAIpBgjB,EAAQv2B,UAAU0T,gBAAkB,WAChC3d,KAAK6zC,oBAAqB,GAE9BrT,EAAQv2B,UAAU6pC,eAAiB,WAC/B9zC,KAAK6zC,oBAAqB,GAE9BrT,EAAQv2B,UAAUmpC,gBAAkB,aAEpC5S,EAAQv2B,UAAUypC,QAAU,aAE5BlT,EAAQv2B,UAAU8oC,SAAW,SAAkB1rC,GAC3C,GAAIg9B,GAASrkC,IACb,OAAO,UAAUwE,GACb,GAAIqf,GAAOwgB,EAAOiP,YAAY9uC,EAC1Bqf,KAASwgB,EAAOwP,oBAChBxP,EAAOnD,QAAQ75B,GACXF,QAAS0c,EACTkwB,cAAevvC,EACf+U,KAAMlS,MAKtBm5B,EAAQv2B,UAAU+pC,eAAiB,WAAA,GAC3B7sC,GAAUnH,KAAKmH,QACfoc,EAAUna,EAAejC,GACzBkC,EAAM1B,EAAcR,GACpBb,EAAO+C,EAAI/C,KACXwB,EAAMuB,EAAIvB,GACd,QACIxB,KAAMA,EAAOid,EAAQjd,KACrBwB,IAAKA,EAAMyb,EAAQzb,MAG3B04B,EAAQv2B,UAAUgqC,cAAgB,SAAuBzvC,GAAvB,GAC1BwX,GAAShc,KAAKg0C,iBACdE,EAAQ3vC,EAAiBC,GACzBC,EAAIyvC,EAAMzvC,EAAIuX,EAAO1V,KACrB3B,EAAIuvC,EAAMvvC,EAAIqX,EAAOlU,IACrBqsC,EAAmB7pC,EAAatK,KAAKmH,SAAS6xB,SAC9CxoB,EAAQ,GAAI/C,IAAMhJ,EAAGE,GAAG0F,UAAU8pC,EACtC,OAAO3jC,IAEJgwB,GACTtjC,MAAMk3C,YAuBJpX,MACAlgB,GAAS;AACTmgB,GAAO,OACPC,GAAY,SAAU/f,EAAWd,GACjCc,EAAU5C,UAAY8B,GAEF,mBAAbvb,YACHq8B,GAAe,eAAkBrgB,GAAS,WAC1CsgB,GAAgBt8B,SAASC,cAAc,OACvCs8B,GAAiC,mBAAdgX,WACvBjX,GAAc7iB,UAAY4iB,GACtBE,IAAaD,GAAcjb,WAAWmyB,eAAiBx3B,KACvDogB,GAAY,SAAU/f,EAAWd,GAArB,GACJk4B,GAAS,GAAIF,WACbG,EAAWD,EAAOE,gBAAgBp4B,EAAK,YACvCq4B,EAAc5zC,SAAS6zC,UAAUH,EAAS3sC,gBAC9CsV,GAAU5C,UAAY,GACtB4C,EAAUvb,YAAY8yC,MAI9BpX,GAAcJ,GACdK,GAAY,YACZC,IACAxR,KAAM,YACNoC,KAAM,QAkBNqP,GAAO,SAAUmX,GACjB,QAASnX,GAAK+U,EAAYvxC,GACtB2zC,EAAYx2B,KAAKpe,KAAMwyC,GACvBxyC,KAAK60C,eACL70C,KAAKiB,QAAUA,EAsRnB,MApRArE,IAAa6gC,EAAMmX,GACnBnX,EAAKxzB,UAAY8U,OAAOzL,OAAOshC,GAAeA,EAAY3qC,WAC1DwzB,EAAKxzB,UAAU42B,YAAcpD,EAC7BA,EAAKxyB,GAAKwyB,EAAKxzB,UACfwzB,EAAKxyB,GAAGnL,KAAO29B,EAAKxyB,GAAG41B,YACvBpD,EAAKxzB,UAAU+S,QAAU,WACjBhd,KAAKmH,UACLnH,KAAKmH,QAAQqsC,WAAa,KAC1BxzC,KAAKmH,QAAU,MAEnBnH,KAAK80C,mBACLF,EAAY3qC,UAAU+S,QAAQoB,KAAKpe,OAEvCy9B,EAAKxzB,UAAU4S,KAAO,SAAc9G,EAAUyJ,GAAxB,GAET7gB,GACD6zC,EACA51B,EACAm4B,EAUA5tC,EAdJk9B,EAASrkC,IACb,KAASrB,EAAI,EAAGA,EAAIoX,EAASlX,OAAQF,IAC7B6zC,EAAaz8B,EAASpX,GACtBie,EAAW41B,EAAW51B,SACtBm4B,EAAY,GAAI/X,IAASwV,EAAWh5B,UAAUg5B,EAAYnO,EAAOpjC,SACjE4B,EAAQ2c,GACR6kB,EAAOmK,SAASuG,EAAWv1B,GAE3B6kB,EAAOre,OAAO+uB,GAElBA,EAAUC,oBACNp4B,GAAYA,EAAS/d,OAAS,GAC9Bk2C,EAAUl4B,KAAKD,GAEfzV,EAAUk9B,EAAOl9B,QACjBA,GACA4tC,EAAUE,SAAS9tC,EAASqY,IAIxCie,EAAKxzB,UAAUqS,KAAO,QAASA,KAE3B,IADA,GAAIA,GAAOtc,KACJsc,EAAK9R,QACR8R,EAAOA,EAAK9R,MAEhB,OAAO8R,IAEXmhB,EAAKxzB,UAAUgrC,SAAW,SAAkBC,EAAY11B,GAA9B,GAGlBrY,GAFAgW,EAAYrc,SAASC,cAAc,MACvCu8B,IAAYngB,EAAW,eAAkBL,GAAS,mBAAwB9c,KAAK+c,SAAW,UACtF5V,EAAUgW,EAAUgF,WAAWA,WAC/Bhb,IACItE,EAAQ2c,GACR01B,EAAWj0B,aAAa9Z,EAAS+tC,EAAWzC,WAAWjzB,IAAQ,MAE/D01B,EAAWtzC,YAAYuF,GAE3BnH,KAAKm1C,WAAWhuC,KAGxBs2B,EAAKxzB,UAAUkrC,WAAa,SAAoBhuC,GAApB,GAMpBiuC,GACKz2C,EACD02C,CADR,KANIr1C,KAAKmH,UACLnH,KAAKmH,QAAQqsC,WAAa,MAE9BxzC,KAAKmH,QAAUA,EACfnH,KAAKmH,QAAQqsC,WAAaxzC,KACtBo1C,EAAQp1C,KAAKyyC,WACR9zC,EAAI,EAAGA,EAAIy2C,EAAMv2C,OAAQF,IAC1B02C,EAAeluC,EAAQsrC,WAAW9zC,GACtCy2C,EAAMz2C,GAAGw2C,WAAWE,IAG5B5X,EAAKxzB,UAAUyZ,MAAQ,WAAA,GAKf9G,GACKje,CAAT,KALAqB,KAAK80C,mBACD90C,KAAKmH,UACLnH,KAAKmH,QAAQoT,UAAY,IAEzBqC,EAAW5c,KAAKyyC,WACX9zC,EAAI,EAAGA,EAAIie,EAAS/d,OAAQF,IACjCie,EAASje,GAAGqe,SAEhBhd,MAAKyyC,eAEThV,EAAKxzB,UAAU0oC,WAAa,WACxB,GAAI3yC,KAAKmH,QAAS,CACd,GAAIlF,GAAajC,KAAKmH,QAAQlF,UAC1BA,IACAA,EAAWC,YAAYlC,KAAKmH,SAEhCnH,KAAKmH,QAAU,KAEnBytC,EAAY3qC,UAAU0oC,WAAWv0B,KAAKpe,OAE1Cy9B,EAAKxzB,UAAUiW,SAAW,WACtB,MAAOlgB,MAAKs1C,kBAEhB7X,EAAKxzB,UAAU8S,OAAS,WACpB,MAAO/c,MAAKkgB,YAEhBud,EAAKxzB,UAAUqrC,eAAiB,WAAA,GAGnB32C,GAFLy2C,EAAQp1C,KAAKyyC,WACbhvC,EAAS,EACb,KAAS9E,EAAI,EAAGA,EAAIy2C,EAAMv2C,OAAQF,IAC9B8E,GAAU2xC,EAAMz2C,GAAGoe,QAEvB,OAAOtZ,IAEXg6B,EAAKxzB,UAAUs3B,cAAgB,SAAuB/8B,GAAvB,GACvB+D,GAAQ/D,EAAE+D,MACVlI,EAAQmE,EAAEnE,KACA,aAAVkI,EACAvI,KAAKwoB,IAAI,UAAWnoB,EAAQ,GAAK48B,IAC1BO,GAAcj1B,IAAU+Q,GAAa/Q,EAAOlI,GACnDL,KAAKu1C,iBAAiBhtC,EAAOlI,GACZ,YAAVkI,EACPvI,KAAK40B,KAAK,UAAWv0B,GACJ,WAAVkI,EACPvI,KAAKwoB,IAAI,SAAUnoB,GACF,OAAVkI,IACHlI,EACAL,KAAK40B,KAAK,KAAMv0B,GAEhBL,KAAKw1C,WAAW,OAGxBZ,EAAY3qC,UAAUs3B,cAAcnjB,KAAKpe,KAAMwE,IAEnDi5B,EAAKxzB,UAAU2qB,KAAO,SAAc1rB,EAAM7I,GAClCL,KAAKmH,SACLnH,KAAKmH,QAAQkd,aAAanb,EAAM7I,IAGxCo9B,EAAKxzB,UAAUwrC,QAAU,SAAiBr8B,GAAjB,GAEZza,GADL0lC,EAASrkC,IACb,KAASrB,EAAI,EAAGA,EAAIya,EAAMva,OAAQF,IAC9B0lC,EAAOzP,KAAKxb,EAAMza,GAAG,GAAIya,EAAMza,GAAG,KAG1C8+B,EAAKxzB,UAAUue,IAAM,SAAatf,EAAM7I,GAChCL,KAAKmH,UACLnH,KAAKmH,QAAQ/H,MAAM8J,GAAQ7I,IAGnCo9B,EAAKxzB,UAAUyrC,OAAS,SAAgBptC,GAAhB,GAEX3J,GADL0lC,EAASrkC,IACb,KAASrB,EAAI,EAAGA,EAAI2J,EAAOzJ,OAAQF,IAC/B0lC,EAAO7b,IAAIlgB,EAAO3J,GAAG,GAAI2J,EAAO3J,GAAG,KAG3C8+B,EAAKxzB,UAAUurC,WAAa,SAAoBtsC,GACxClJ,KAAKmH,SACLnH,KAAKmH,QAAQwuC,gBAAgBzsC,IAGrCu0B,EAAKxzB,UAAU2rC,aAAe,SAAsBvrC,GAChD,GAAI+O,KAOJ,OANI/O,IACA+O,EAAM9a,MACFi/B,GACA,UAAYlzB,EAAUE,SAASw5B,SAAS,GAAK,MAG9C3qB,GAEXqkB,EAAKxzB,UAAU4rC,gBAAkB,WAC7B,MAAO18B,IAAcnZ,KAAK41C,aAAa51C,KAAKwyC,WAAWnoC,eAE3DozB,EAAKxzB,UAAU6rC,gBAAkB,SAAyBz1C,GAClDA,EACAL,KAAKy1C,QAAQz1C,KAAK41C,aAAav1C,IAE/BL,KAAKw1C,WAAWjY,KAGxBE,EAAKxzB,UAAU8rC,SAAW,WAAA,GAClB90C,GAAUjB,KAAKwyC,WAAWvxC,QAC1B7B,IACI,SACA6B,EAAQ+0C,QAQhB,OANI/0C,GAAQkV,WAAY,GACpB/W,EAAMd,MACF,UACA2+B,KAGD79B,GAEXq+B,EAAKxzB,UAAUoP,YAAc,WACzB,MAAOH,IAAW,QAASG,GAAYrZ,KAAK+1C,UAAS,MAEzDtY,EAAKxzB,UAAUgsC,cAAgB,WAC3B,MAAO/8B,IAAW,UAAWlZ,KAAKwyC,WAAWvxC,QAAQ6a,UAEzD2hB,EAAKxzB,UAAUisC,SAAW,WACtB,MAAOh9B,IAAW,KAAMlZ,KAAKwyC,WAAWvxC,QAAQmmC,KAEpD3J,EAAKxzB,UAAU+qC,kBAAoB,WAAA,GAIvB/zC,GACAk1C,EACK5tC,EACD6tC,EANR5D,EAAaxyC,KAAKwyC,WAClBqC,EAAc70C,KAAK60C,WACvB,IAAIrC,EAAY,CACRvxC,EAAUuxC,EAAWvxC,OAEzB,KAASsH,IAASi1B,IACV4Y,EAAan1C,EAAQL,IAAI2H,GACzB6tC,GAAc98B,GAAa/Q,EAAO6tC,KAClCvB,EAAYtsC,GAAS6tC,EACrBD,GAAiB,EAGrBA,IACAn2C,KAAKq2C,kBACDhI,OAAQ,MACRwG,YAAaA,MAK7BpX,EAAKxzB,UAAUosC,iBAAmB,SAA0B7xC,GACpDxE,KAAKwK,QACLxK,KAAKwK,OAAO6rC,iBAAiB7xC,IAGrCi5B,EAAKxzB,UAAUsrC,iBAAmB,SAA0Bh8B,EAAMlZ,GAAhC,GAC1Bw0C,GAAc70C,KAAK60C,YACnBt1C,EAAUs1C,EAAYt7B,GACtBqb,EAAO4I,GAAcjkB,GACrB68B,IACA72C,KACA62C,EAAW78B,GAAQha,EACnBS,KAAKq2C,kBACDhI,OAAQ,SACRwG,YAAauB,UAEVvB,GAAYt7B,IAElBlZ,GAKD+1C,EAAW78B,GAAQlZ,EACnBL,KAAKq2C,kBACDhI,OAAQ,MACRwG,YAAauB,IAEjBvB,EAAYt7B,GAAQlZ,EACpBL,KAAK40B,KAAKA,EAAM50B,KAAKs2C,OAAOj2C,EAAM+mC,MAV9B7nC,GACAS,KAAKw1C,WAAW5gB,IAY5B6I,EAAKxzB,UAAU6qC,iBAAmB,WAC9B,GAAID,GAAc70C,KAAK60C,WACvB70C,MAAKq2C,kBACDhI,OAAQ,SACRwG,YAAaA,IAEjB70C,KAAK60C,gBAETpX,EAAKxzB,UAAUssC,kBAAoB,WAC/B,MAAOp9B,IAAcnZ,KAAKw2C,mBAE9B/Y,EAAKxzB,UAAUusC,eAAiB,WAAA,GAInBjuC,GAHL87B,EAASrkC,KACT60C,EAAc70C,KAAK60C,YACnBz7B,IACJ,KAAS7Q,IAASssC,GACdz7B,EAAM9a,MACFk/B,GAAcj1B,GACd87B,EAAOiS,OAAOzB,EAAYtsC,GAAO6+B,KAGzC,OAAOhuB,IAEXqkB,EAAKxzB,UAAUqsC,OAAS,SAAgBlP,GAAhB,GAChB5qB,IAAgBxc,KAAKiB,aAAeub,aACpCi6B,EAAWz2C,KAAKyZ,UAAU1b,QAAQ,KAAM,OACxC4b,EAAO6C,EAAe,GAAKi6B,CAC/B,OAAO,OAAS98B,EAAO,IAAMytB,EAAK,KAEtC3J,EAAKxzB,UAAUwP,QAAU,WACrB,MAAOA,OAEJgkB,GACTX,IACEY,GAAmB,SAAUgZ,GAC7B,QAAShZ,KACLgZ,EAAQ/5C,MAAMqD,KAAMsqB,WAiCxB,MA/BA1tB,IAAa8gC,EAAkBgZ,GAC/BhZ,EAAiBzzB,UAAY8U,OAAOzL,OAAOojC,GAAWA,EAAQzsC,WAC9DyzB,EAAiBzzB,UAAU42B,YAAcnD,EACzCA,EAAiBzyB,GAAKyyB,EAAiBzzB,UACvCyzB,EAAiBzyB,GAAGnL,KAAO49B,EAAiBzyB,GAAG41B,YAC/CnD,EAAiBzzB,UAAUiW,SAAW,WAClC,MAAO,SAAWlgB,KAAK22C,eAAiB,IAAM32C,KAAKqZ,cAAgB,OAEvEqkB,EAAiBzzB,UAAU0sC,aAAe,WACtC,MAAOz9B,IAAW,SAAUlZ,KAAKwyC,WAAWx2B,WAEhD0hB,EAAiBzzB,UAAU8rC,SAAW,WAClC,GAAIvD,GAAaxyC,KAAKwyC,UACtB,SAEQ,aACAA,EAAWntC,UAGX,eACAmtC,EAAW12B,aAIvB4hB,EAAiBzzB,UAAUs3B,cAAgB,SAAuB/8B,GAC9C,WAAZA,EAAE+D,MACFvI,KAAK40B,KAAKpwB,EAAE+D,MAAO/D,EAAEnE,OACF,UAAZmE,EAAE+D,OAAiC,YAAZ/D,EAAE+D,OAChCvI,KAAKwoB,IAAI,QAAUhkB,EAAE+D,MAAO/D,EAAEnE,QAG/Bq9B,GACTD,IACEE,GAAe,SAAU+Y,GACzB,QAAS/Y,GAAa6U,GAClBkE,EAAQt4B,KAAKpe,KAAMwyC,GACnBxyC,KAAKonC,GAAKoL,EAAWpL,GACrBpnC,KAAK42C,YAoCT,MAlCAh6C,IAAa+gC,EAAc+Y,GAC3B/Y,EAAa1zB,UAAY8U,OAAOzL,OAAOojC,GAAWA,EAAQzsC,WAC1D0zB,EAAa1zB,UAAU42B,YAAclD,EACrCA,EAAa1yB,GAAK0yB,EAAa1zB,UAC/B0zB,EAAa1yB,GAAGnL,KAAO69B,EAAa1yB,GAAG41B,YACvClD,EAAa1zB,UAAU2sC,UAAY,WAAA,GAItBrvC,GACDsvC,EAJJxS,EAASrkC,KACT2b,EAAQ3b,KAAKwyC,WAAW72B,MACxBxU,EAAUnH,KAAKmH,OACnB,KAASI,EAAM,EAAGA,EAAMoU,EAAM9c,OAAQ0I,IAC9BsvC,EAAW,GAAInZ,IAAiB/hB,EAAMpU,IAC1C88B,EAAOre,OAAO6wB,GACV1vC,GACA0vC,EAAS5B,SAAS9tC,IAI9Bw2B,EAAa1zB,UAAUs3B,cAAgB,SAAuB/8B,GAC1C,mBAAZA,EAAE+D,OACFu0B,GAAS7yB,UAAUyZ,MAAMtF,KAAKpe,MAC9BA,KAAK42C,aACc,aAAZpyC,EAAE+D,OACTvI,KAAKy1C,QAAQz1C,KAAK82C,mBAG1BnZ,EAAa1zB,UAAU8sC,kBAAoB,WACvC,MAAO59B,IAAcnZ,KAAK82C,mBAE9BnZ,EAAa1zB,UAAU+sC,SAAW,WAC9B,OACI,gBACAh3C,KAAKwyC,WAAWne,YAAc,iBAAmB,sBAGlDsJ,GACTF,IACEG,GAAqB,SAAUqZ,GAC/B,QAASrZ,KACLqZ,EAAgBt6C,MAAMqD,KAAMsqB,WAmChC,MAjCA1tB,IAAaghC,EAAoBqZ,GACjCrZ,EAAmB3zB,UAAY8U,OAAOzL,OAAO2jC,GAAmBA,EAAgBhtC,WAChF2zB,EAAmB3zB,UAAU42B,YAAcjD,EAC3CA,EAAmB3yB,GAAK2yB,EAAmB3zB,UAC3C2zB,EAAmB3yB,GAAGnL,KAAO89B,EAAmB3yB,GAAG41B,YACnDjD,EAAmB3zB,UAAUiW,SAAW,WACpC,MAAO,uBAA0BlgB,KAAKonC,GAAK,KAAQpnC,KAAK+2C,oBAAsB,IAAM/2C,KAAKs1C,iBAAmB,qBAEhH1X,EAAmB3zB,UAAU6sC,eAAiB,WAAA,GACtCtE,GAAaxyC,KAAKwyC,WAClBpiC,EAAQoiC,EAAWpiC,QACnB0jB,EAAM0e,EAAW1e,MACjB1a,IAEI,KACAhJ,EAAM3L,IAGN,KACA2L,EAAMzL,IAGN,KACAmvB,EAAIrvB,IAGJ,KACAqvB,EAAInvB,GAER3E,KAAKg3C,WAET,OAAO59B,IAEJwkB,GACTD,IACEE,GAAqB,SAAUoZ,GAC/B,QAASpZ,KACLoZ,EAAgBt6C,MAAMqD,KAAMsqB,WA+BhC,MA7BA1tB,IAAaihC,EAAoBoZ,GACjCpZ,EAAmB5zB,UAAY8U,OAAOzL,OAAO2jC,GAAmBA,EAAgBhtC,WAChF4zB,EAAmB5zB,UAAU42B,YAAchD,EAC3CA,EAAmB5yB,GAAK4yB,EAAmB5zB,UAC3C4zB,EAAmB5yB,GAAGnL,KAAO+9B,EAAmB5yB,GAAG41B,YACnDhD,EAAmB5zB,UAAUiW,SAAW,WACpC,MAAO,uBAA0BlgB,KAAKonC,GAAK,KAAQpnC,KAAK+2C,oBAAsB,IAAM/2C,KAAKs1C,iBAAmB,qBAEhHzX,EAAmB5zB,UAAU6sC,eAAiB,WAAA,GACtCtE,GAAaxyC,KAAKwyC,WAClB7mC,EAAS6mC,EAAW7mC,SACpBu6B,EAASsM,EAAWtM,SACpB9sB,IAEI,KACAzN,EAAOlH,IAGP,KACAkH,EAAOhH,IAGP,IACAuhC,GAEJlmC,KAAKg3C,WAET,OAAO59B,IAEJykB,GACTF,IACEG,GAAW,SAAU4Y,GACrB,QAAS5Y,GAAS0U,GACdkE,EAAQt4B,KAAKpe,MACbA,KAAKwyC,WAAaA,EAClBxyC,KAAKonC,GAAKoL,EAAWpL,GACrBpnC,KAAK6c,MAAM21B,IAUf,MARA51C,IAAakhC,EAAU4Y,GACvB5Y,EAAS7zB,UAAY8U,OAAOzL,OAAOojC,GAAWA,EAAQzsC,WACtD6zB,EAAS7zB,UAAU42B,YAAc/C,EACjCA,EAAS7yB,GAAK6yB,EAAS7zB,UACvB6zB,EAAS7yB,GAAGnL,KAAOg+B,EAAS7yB,GAAG41B,YAC/B/C,EAAS7zB,UAAUiW,SAAW,WAC1B,MAAO,iBAAoBlgB,KAAKonC,GAAK,KAAQpnC,KAAKs1C,iBAAmB,eAElExX,GACTL,IACEM,GAAiB,SAAU2Y,GAC3B,QAAS3Y,KACL2Y,EAAQt4B,KAAKpe,MACbA,KAAKk3C,iBA+ET,MA7EAt6C,IAAamhC,EAAgB2Y,GAC7B3Y,EAAe9zB,UAAY8U,OAAOzL,OAAOojC,GAAWA,EAAQzsC,WAC5D8zB,EAAe9zB,UAAU42B,YAAc9C,EACvCA,EAAe9yB,GAAK8yB,EAAe9zB,UACnC8zB,EAAe9yB,GAAGnL,KAAOi+B,EAAe9yB,GAAG41B,YAC3C9C,EAAe9zB,UAAUgrC,SAAW,SAAkBC,GAClDl1C,KAAKmH,QAAU+tC,GAEnBnX,EAAe9zB,UAAUiW,SAAW,WAChC,MAAO,SAAWlgB,KAAKs1C,iBAAmB,WAE9CvX,EAAe9zB,UAAUosC,iBAAmB,SAA0B7xC,GAA1B,GACpCqwC,GAAcrwC,EAAEqwC,YAChBxG,EAAS7pC,EAAE6pC,MACA,SAAXA,EACAruC,KAAKm3C,eAAetC,GACF,WAAXxG,GACPruC,KAAKo3C,kBAAkBvC,IAG/B9W,EAAe9zB,UAAUotC,iBAAmB,SAA0B99B,EAAM+9B,GACxE,GAAI99B,EAUJ,OATa,SAATD,EACAC,EAAWskB,GACK,SAATvkB,IACH+9B,YAAgBljB,IAChB5a,EAAWokB,GACJ0Z,YAAgB/a,MACvB/iB,EAAWqkB,KAGZ,GAAIrkB,GAAS89B,IAExBvZ,EAAe9zB,UAAUktC,eAAiB,SAAwBtC,GAAxB,GAE7BtsC,GADL87B,EAASrkC,IACb,KAASuI,IAASssC,GACdxQ,EAAOkT,cAAchvC,EAAOssC,EAAYtsC,KAGhDw1B,EAAe9zB,UAAUstC,cAAgB,SAAuBh+B,EAAMi5B,GAA7B,GAO7B3uB,GANJxa,EAAMrJ,KACNmH,EAAUkC,EAAIlC,QACd+vC,EAAgB7tC,EAAI6tC,cACpB9P,EAAKoL,EAAWpL,GAChBoQ,EAAUN,EAAc9P,EACvBoQ,GAWDA,EAAQ5kC,SAVJiR,EAAO7jB,KAAKq3C,iBAAiB99B,EAAMi5B,GACvC0E,EAAc9P,IACVjgC,QAAS0c,EACTjR,MAAO,GAEX5S,KAAKgmB,OAAOnC,GACR1c,GACA0c,EAAKoxB,SAASj1C,KAAKmH,WAM/B42B,EAAe9zB,UAAUmtC,kBAAoB,SAA2BvC,GAA3B,GAEhCtsC,GADL87B,EAASrkC,IACb,KAASuI,IAASssC,GACdxQ,EAAOoT,iBAAiB5C,EAAYtsC,KAG5Cw1B,EAAe9zB,UAAUwtC,iBAAmB,SAA0BjF,GAA1B,GACpC0E,GAAgBl3C,KAAKk3C,cACrB9P,EAAKoL,EAAWpL,GAChBoQ,EAAUN,EAAc9P,EACxBoQ,KACAA,EAAQ5kC,QACc,IAAlB4kC,EAAQ5kC,QACR5S,KAAK2e,OAAO3e,KAAKyyC,WAAWx4B,QAAQu9B,EAAQrwC,SAAU,SAC/C+vC,GAAc9P,MAI1BrJ,GACTN,IACElhB,GAAW,SAAUm6B,GACrB,QAASn6B,GAAStb,GACdy1C,EAAQt4B,KAAKpe,MACbA,KAAKiB,QAAUA,EACfjB,KAAK03C,KAAO,GAAI3Z,IAoBpB,MAlBAnhC,IAAa2f,EAAUm6B,GACvBn6B,EAAStS,UAAY8U,OAAOzL,OAAOojC,GAAWA,EAAQzsC,WACtDsS,EAAStS,UAAU42B,YAActkB,EACjCA,EAAStR,GAAKsR,EAAStS,UACvBsS,EAAStR,GAAGnL,KAAOyc,EAAStR,GAAG41B,YAC/BtkB,EAAStS,UAAUgrC,SAAW,SAAkBC,GAC5Cl1C,KAAKmH,QAAU+tC,EACfl1C,KAAK03C,KAAKzC,SAASC,EAAW70B,oBAElC9D,EAAStS,UAAUyZ,MAAQ,WACvBoZ,GAAS7yB,UAAUyZ,MAAMtF,KAAKpe,OAElCuc,EAAStS,UAAUiW,SAAW,WAC1B,MAAOlgB,MAAK03C,KAAK36B,SAAW/c,KAAKs1C,kBAErC/4B,EAAStS,UAAUosC,iBAAmB,SAA0B7xC,GAC5DxE,KAAK03C,KAAKrB,iBAAiB7xC,IAExB+X,GACTkhB,IACEO,IACA2Z,KACI,IACA,KAEJC,MACI,EACA,KAEJC,UACI,EACA,KAEJC,SACI,IACA,IACA,IACA,KAEJC,aACI,EACA,IACA,IACA,KAEJC,gBACI,EACA,IACA,IACA,IACA,IACA,MAGJ/Z,GAAQ,QACRC,GAAO,OACPC,IACA8Z,eAAgB,eAChBC,eAAgB,SAChBC,eAAgB,eAChBC,iBAAkB,kBAElBn6C,GAAQ,IACRmgC,GAAW,SAAUsY,GACrB,QAAStY,KACLsY,EAAQ/5C,MAAMqD,KAAMsqB,WAmLxB,MAjLA1tB,IAAawhC,EAAUsY,GACvBtY,EAASn0B,UAAY8U,OAAOzL,OAAOojC,GAAWA,EAAQzsC,WACtDm0B,EAASn0B,UAAU42B,YAAczC,EACjCA,EAASnzB,GAAKmzB,EAASn0B,UACvBm0B,EAASnzB,GAAGnL,KAAOs+B,EAASnzB,GAAG41B,YAC/BzC,EAASn0B,UAAUa,eAAiB,WAChC9K,KAAK40B,KAAK,IAAK50B,KAAKq4C,cACpBr4C,KAAK4yC,cAETxU,EAASn0B,UAAUs3B,cAAgB,SAAuB/8B,GACtD,OAAQA,EAAE+D,OACV,IAAK,OACG/D,EAAEnE,MACFL,KAAKy1C,QAAQz1C,KAAKs4C,QAAQ9zC,EAAEnE,QAE5BL,KAAKw1C,WAAW,OAEpB,MACJ,KAAK,aACDx1C,KAAKy1C,QAAQz1C,KAAKs4C,SAAUjzC,MAAOb,EAAEnE,QACrC,MACJ,KAAK,SACGmE,EAAEnE,MACFL,KAAKy1C,QAAQz1C,KAAKu4C,UAAU/zC,EAAEnE,QAE9BL,KAAKw1C,WAAW,SAEpB,MACJ,KAAK,YACDx1C,KAAK81C,gBAAgBtxC,EAAEnE,MACvB,MACJ,SACI,GAAI6I,GAAOi1B,GAAc35B,EAAE+D,MACvBW,IACAlJ,KAAK40B,KAAK1rB,EAAM1E,EAAEnE,OAI1Bq2C,EAAQzsC,UAAUs3B,cAAcnjB,KAAKpe,KAAMwE,IAE/C45B,EAASn0B,UAAUukB,QAAU,WACrBxuB,KAAKmH,UACLnH,KAAKmH,QAAQxF,YAAc3B,KAAKwyC,WAAWhkB,YAGnD4P,EAASn0B,UAAUouC,WAAa,WAC5B,MAAOr4C,MAAKw4C,UAAUx4C,KAAKwyC,aAE/BpU,EAASn0B,UAAUuuC,UAAY,SAAmB19B,GAAnB,GAKnBzc,GACAoF,EAAQg1C,EACH95C,EACD+5C,EAPRrU,EAASrkC,KACTmb,EAAWL,EAAKK,SAChBtc,EAASsc,EAAStc,MACtB,IAAIA,EAAS,EAAG,CAGZ,IAFIR,KAEKM,EAAI,EAAGA,EAAIE,EAAQF,IACpB+5C,EAAcrU,EAAOqU,YAAYv9B,EAASxc,EAAI,GAAIwc,EAASxc,IAC3D+5C,IAAgBD,IAChBA,EAAcC,EACdr6C,EAAMC,KAAKo6C,IAGXr6C,EAAMC,KADU,MAAhBo6C,EACWrU,EAAOsU,YAAYx9B,EAASxc,GAAGqc,UAE/BqpB,EAAOsU,YAAYx9B,EAASxc,EAAI,GAAG6V,aAAc2G,EAASxc,GAAGgW,YAAawG,EAASxc,GAAGqc,UAOzG,OAJAvX,GAAS,IAAMzD,KAAK24C,YAAYx9B,EAAS,GAAGH,UAAY/c,GAAQI,EAAMG,KAAKP,IACvE6c,EAAK7Z,QAAQqa,SACb7X,GAAU,KAEPA,IAGf26B,EAASn0B,UAAU0uC,YAAc,WAAA,GAIpBh6C,GAHLkS,EAASyZ,UACTzrB,EAASgS,EAAOhS,OAChB2J,IACJ,KAAS7J,EAAI,EAAGA,EAAIE,EAAQF,IACxB6J,EAAOlK,KAAKuS,EAAOlS,GAAGolC,SAAS,GAEnC,OAAOv7B,GAAOhK,KAAK,MAEvB4/B,EAASn0B,UAAUyuC,YAAc,SAAqBE,EAAcC,GAChE,MAAOD,GAAapkC,cAAgBqkC,EAAWlkC,YAAc,IAAM,KAEvEypB,EAASn0B,UAAUsuC,UAAY,SAAmBlqB,GAC9C,GAAIjV,KAoCJ,OAnCIiV,KAAWjpB,EAAcipB,EAAOhpB,QAChC+T,EAAM9a,MACF,SACA+vB,EAAOhpB,QAEX+T,EAAM9a,MACF,eACA+vB,EAAOrvB,QAEXoa,EAAM9a,MACF,iBACA0B,KAAK84C,cAAczqB,KAEvBjV,EAAM9a,MACF,kBACA+vB,EAAOgf,WAEPxqC,EAAQwrB,EAAOvS,UACf1C,EAAM9a,MACF,iBACA+vB,EAAOvS,UAGXjZ,EAAQwrB,EAAO0qB,WACf3/B,EAAM9a,MACF,mBACA0B,KAAKg5C,eAAe3qB,MAI5BjV,EAAM9a,MACF,SACA2+B,KAGD7jB,GAEXglB,EAASn0B,UAAUgvC,aAAe,WAC9B,MAAO9/B,IAAcnZ,KAAKu4C,UAAUv4C,KAAKwyC,WAAWvxC,QAAQotB,UAEhE+P,EAASn0B,UAAU+uC,eAAiB,SAAwB3qB,GAAxB,GAOxB6qB,GACA1wC,EACK7J,EARTo6C,EAAW1qB,EAAO0qB,SAClB/5C,EAAQqvB,EAAOrvB,KAInB,IAHc,SAAVA,IACAA,EAAQ,GAER+5C,GAAYA,IAAa9a,GAAO,CAGhC,IAFIib,EAAYlb,GAAY+a,EAASzjC,eACjC9M,KACK7J,EAAI,EAAGA,EAAIu6C,EAAUr6C,OAAQF,IAClC6J,EAAOlK,KAAK46C,EAAUv6C,GAAKK,EAE/B,OAAOwJ,GAAOhK,KAAK,OAG3B4/B,EAASn0B,UAAU6uC,cAAgB,SAAuBzqB,GAAvB,GAC3B0qB,GAAW1qB,EAAO0qB,SAClBI,EAAU9qB,EAAO8qB,OACrB,OAAOJ,IAAyB,UAAbA,EAAuB7a,GAAOib,GAErD/a,EAASn0B,UAAUquC,QAAU,SAAiBlqB,GAC1C,GAAIhV,KAoBJ,OAnBMgV,IAA0B,aAAlBA,EAAK5U,WACX4U,IAAShpB,EAAcgpB,EAAK/oB,QAC5B+T,EAAM9a,MACF,OACA8vB,EAAK/oB,QAELxC,EAAQurB,EAAKtS,UACb1C,EAAM9a,MACF,eACA8vB,EAAKtS,WAIb1C,EAAM9a,MACF,OACA2+B,MAIL7jB,GAEXglB,EAASn0B,UAAUmvC,WAAa,WAC5B,MAAOjgC,IAAcnZ,KAAKs4C,QAAQt4C,KAAKwyC,WAAWvxC,QAAQmtB,QAE9DgQ,EAASn0B,UAAUiW,SAAW,WAC1B,MAAO,SAAWlgB,KAAKk2C,WAAa,IAAMl2C,KAAKqZ,cAAgB,IAAMrZ,KAAKi2C,gBAAkB,IAAM/8B,GAAW,IAAKlZ,KAAKq4C,cAAqBr4C,KAAKi5C,eAAiBj5C,KAAKo5C,aAAep5C,KAAKu2C,oBAAsBv2C,KAAK61C,kBAAoB,YAEvOzX,GACTX,IACEY,GAAU,SAAUgb,GACpB,QAAShb,KACLgb,EAAY18C,MAAMqD,KAAMsqB,WAU5B,MARA1tB,IAAayhC,EAASgb,GACtBhb,EAAQp0B,UAAY8U,OAAOzL,OAAO+lC,GAAeA,EAAYpvC,WAC7Do0B,EAAQp0B,UAAU42B,YAAcxC,EAChCA,EAAQpzB,GAAKozB,EAAQp0B,UACrBo0B,EAAQpzB,GAAGnL,KAAOu+B,EAAQpzB,GAAG41B,YAC7BxC,EAAQp0B,UAAUouC,WAAa,WAC3B,MAAOr4C,MAAKw4C,UAAUx4C,KAAKwyC,WAAW1E,WAEnCzP,GACTD,IACEE,GAAa,SAAU+a,GACvB,QAAS/a,KACL+a,EAAY18C,MAAMqD,KAAMsqB,WAuB5B,MArBA1tB,IAAa0hC,EAAY+a,GACzB/a,EAAWr0B,UAAY8U,OAAOzL,OAAO+lC,GAAeA,EAAYpvC,WAChEq0B,EAAWr0B,UAAU42B,YAAcvC,EACnCA,EAAWrzB,GAAKqzB,EAAWr0B,UAC3Bq0B,EAAWrzB,GAAGnL,KAAOw+B,EAAWrzB,GAAG41B,YACnCvC,EAAWr0B,UAAUa,eAAiB,WAClC,GAAIa,GAAS3L,KAAK2L,QAClB3L,MAAK40B,KAAK,KAAMjpB,EAAOlH,GACvBzE,KAAK40B,KAAK,KAAMjpB,EAAOhH,GACvB3E,KAAK40B,KAAK,IAAK50B,KAAKkmC,UACpBlmC,KAAK4yC,cAETtU,EAAWr0B,UAAU0B,OAAS,WAC1B,MAAO3L,MAAKwyC,WAAWpT,WAAWzzB,QAEtC2yB,EAAWr0B,UAAUi8B,OAAS,WAC1B,MAAOlmC,MAAKwyC,WAAWpT,WAAW8G,QAEtC5H,EAAWr0B,UAAUiW,SAAW,WAC5B,MAAO,WAAalgB,KAAKk2C,WAAa,IAAMl2C,KAAKqZ,cAAgB,IAAMrZ,KAAKi2C,gBAAkB,OAAUj2C,KAAK2L,SAASlH,EAAI,SAAazE,KAAK2L,SAAShH,EAAI,QAAY3E,KAAKkmC,SAAW,IAAOlmC,KAAKi5C,eAAiB,IAAMj5C,KAAKo5C,aAAe,IAAMp5C,KAAKu2C,oBAAsBv2C,KAAK61C,kBAAoB,eAEnSvX,GACTF,IACEG,GAAY,SAAUmY,GACtB,QAASnY,KACLmY,EAAQ/5C,MAAMqD,KAAMsqB,WAgBxB,MAdA1tB,IAAa2hC,EAAWmY,GACxBnY,EAAUt0B,UAAY8U,OAAOzL,OAAOojC,GAAWA,EAAQzsC,WACvDs0B,EAAUt0B,UAAU42B,YAActC,EAClCA,EAAUtzB,GAAKszB,EAAUt0B,UACzBs0B,EAAUtzB,GAAGnL,KAAOy+B,EAAUtzB,GAAG41B,YACjCtC,EAAUt0B,UAAUiW,SAAW,WAC3B,MAAO,MAAQlgB,KAAKk2C,WAAal2C,KAAK61C,kBAAoB71C,KAAKqZ,cAAgBrZ,KAAKi2C,gBAAkBj2C,KAAKu2C,qBAAuB,IAAMv2C,KAAKs1C,iBAAmB,QAEpK/W,EAAUt0B,UAAUs3B,cAAgB,SAAuB/8B,GACvC,cAAZA,EAAE+D,OACFvI,KAAK81C,gBAAgBtxC,EAAEnE,OAE3Bq2C,EAAQzsC,UAAUs3B,cAAcnjB,KAAKpe,KAAMwE,IAExC+5B,GACTd,IACEe,GAAY,SAAU6a,GACtB,QAAS7a,KACL6a,EAAY18C,MAAMqD,KAAMsqB,WA0D5B,MAxDA1tB,IAAa4hC,EAAW6a,GACxB7a,EAAUv0B,UAAY8U,OAAOzL,OAAO+lC,GAAeA,EAAYpvC,WAC/Du0B,EAAUv0B,UAAU42B,YAAcrC,EAClCA,EAAUvzB,GAAKuzB,EAAUv0B,UACzBu0B,EAAUvzB,GAAGnL,KAAO0+B,EAAUvzB,GAAG41B,YACjCrC,EAAUv0B,UAAUa,eAAiB,WACjC9K,KAAKy1C,QAAQz1C,KAAKs5C,eAClBt5C,KAAK4yC,cAETpU,EAAUv0B,UAAUs3B,cAAgB,SAAuB/8B,GACvC,QAAZA,EAAE+D,OACFvI,KAAKy1C,QAAQz1C,KAAKu5C,aAEtBF,EAAYpvC,UAAUs3B,cAAcnjB,KAAKpe,KAAMwE,IAEnDg6B,EAAUv0B,UAAUqvC,YAAc,WAAA,GAC1BziC,GAAO7W,KAAKwyC,WAAW37B,OACvBqW,EAAKrW,EAAKuvB,SACd,SAEQ,IACAlZ,EAAGzoB,IAGH,IACAyoB,EAAGvoB,IAGH,QACAkS,EAAK7X,QAAU,OAGf,SACA6X,EAAK5X,SAAW,QAI5Bu/B,EAAUv0B,UAAUuvC,eAAiB,WACjC,MAAOrgC,IAAcnZ,KAAKs5C,gBAE9B9a,EAAUv0B,UAAUsvC,UAAY,SAAmBE,GAC/C,GAAI38C,GAAMkD,KAAKwyC,WAAW11C,KAI1B,OAHI28C,KACA38C,EAAMI,MAAMw8C,WAAW58C,MAGnB,aACAA,KAGZ0hC,EAAUv0B,UAAU0vC,aAAe,WAC/B,MAAOxgC,IAAcnZ,KAAKu5C,WAAU,KAExC/a,EAAUv0B,UAAUiW,SAAW,WAC3B,MAAO,qCAAyClgB,KAAKk2C,WAAa,IAAMl2C,KAAKqZ,cAAgB,IAAMrZ,KAAK61C,kBAAoB,IAAM71C,KAAKi2C,gBAAkBj2C,KAAKw5C,iBAAmB,IAAMx5C,KAAK25C,eAAiB,IAAM35C,KAAKu2C,oBAAsB,aAE3O/X,GACTJ,IACEK,GAAgB,SAAU4a,GAC1B,QAAS5a,KACL4a,EAAY18C,MAAMqD,KAAMsqB,WAkB5B,MAhBA1tB,IAAa6hC,EAAe4a,GAC5B5a,EAAcx0B,UAAY8U,OAAOzL,OAAO+lC,GAAeA,EAAYpvC,WACnEw0B,EAAcx0B,UAAU42B,YAAcpC,EACtCA,EAAcxzB,GAAKwzB,EAAcx0B,UACjCw0B,EAAcxzB,GAAGnL,KAAO2+B,EAAcxzB,GAAG41B,YACzCpC,EAAcx0B,UAAUouC,WAAa,WAAA,GAIzB7vC,GACK7J,EAJT0lC,EAASrkC,KACTktC,EAAQltC,KAAKwyC,WAAWtF,KAC5B,IAAIA,EAAMruC,OAAS,EAAG,CAElB,IADI2J,KACK7J,EAAI,EAAGA,EAAIuuC,EAAMruC,OAAQF,IAC9B6J,EAAOlK,KAAK+lC,EAAOmU,UAAUtL,EAAMvuC,IAEvC,OAAO6J,GAAOhK,KAAK,OAGpBigC,GACTL,IACEM,GAAW,SAAU2a,GACrB,QAAS3a,KACL2a,EAAY18C,MAAMqD,KAAMsqB,WAgC5B,MA9BA1tB,IAAa8hC,EAAU2a,GACvB3a,EAASz0B,UAAY8U,OAAOzL,OAAO+lC,GAAeA,EAAYpvC,WAC9Dy0B,EAASz0B,UAAU42B,YAAcnC,EACjCA,EAASzzB,GAAKyzB,EAASz0B,UACvBy0B,EAASzzB,GAAGnL,KAAO4+B,EAASzzB,GAAG41B,YAC/BnC,EAASz0B,UAAUa,eAAiB,WAChC,GAAIs0B,GAAWp/B,KAAKwyC,WAAWpT,UAC/Bp/B,MAAK40B,KAAK,IAAKwK,EAASzoB,OAAOlS,GAC/BzE,KAAK40B,KAAK,IAAKwK,EAASzoB,OAAOhS,GAC/B3E,KAAK40B,KAAK,QAASwK,EAASr/B,KAAKf,OACjCgB,KAAK40B,KAAK,SAAUwK,EAASr/B,KAAKd,QAClCe,KAAK40B,KAAK,KAAMwK,EAAS0G,aAAa,IACtC9lC,KAAK40B,KAAK,KAAMwK,EAAS0G,aAAa,IACtC9lC,KAAK4yC,cAETlU,EAASz0B,UAAUlK,KAAO,WACtB,MAAOC,MAAKwyC,WAAWpT,WAAWr/B,MAEtC2+B,EAASz0B,UAAU0M,OAAS,WACxB,MAAO3W,MAAKwyC,WAAWpT,WAAWzoB,QAEtC+nB,EAASz0B,UAAU2B,GAAK,WACpB,MAAO5L,MAAKwyC,WAAWpT,WAAW0G,aAAa,IAEnDpH,EAASz0B,UAAU4B,GAAK,WACpB,MAAO7L,MAAKwyC,WAAWpT,WAAW0G,aAAa,IAEnDpH,EAASz0B,UAAUiW,SAAW,WAC1B,MAAO,SAAWlgB,KAAKk2C,WAAa,IAAMl2C,KAAKqZ,cAAgB,IAAMrZ,KAAKi2C,gBAAkB,OAAUj2C,KAAK2W,SAASlS,EAAI,QAAYzE,KAAK2W,SAAShS,EAAI,SAAkB3E,KAAK4L,KAAO,SAAa5L,KAAK6L,KAAO,YAAqB7L,KAAKD,OAAOf,MAAQ,aAAiBgB,KAAKD,OAAOd,OAAS,KAAQe,KAAKi5C,eAAiB,IAAMj5C,KAAKo5C,aAAe,IAAMp5C,KAAKu2C,oBAAsB,IAAMv2C,KAAK61C,kBAAoB,OAEjZnX,GACTN,IACEjkB,GAAe,wBAYK,mBAAbrZ,YACPoZ,GAAeG,SAAWvZ,SAASC,cAAc,SAEjD49B,GAAW,SAAU0a,GACrB,QAAS1a,KACL0a,EAAY18C,MAAMqD,KAAMsqB,WA0D5B,MAxDA1tB,IAAa+hC,EAAU0a,GACvB1a,EAAS10B,UAAY8U,OAAOzL,OAAO+lC,GAAeA,EAAYpvC,WAC9D00B,EAAS10B,UAAU42B,YAAclC,EACjCA,EAAS1zB,GAAK0zB,EAAS10B,UACvB00B,EAAS1zB,GAAGnL,KAAO6+B,EAAS1zB,GAAG41B,YAC/BlC,EAAS10B,UAAUa,eAAiB,WAChC,GAAI0U,GAAMxf,KAAKwf,KACfxf,MAAK40B,KAAK,IAAKpV,EAAI/a,GACnBzE,KAAK40B,KAAK,IAAKpV,EAAI7a,GACnB3E,KAAK4yC,cAETjU,EAAS10B,UAAUs3B,cAAgB,SAAuB/8B,GACtC,SAAZA,EAAE+D,OACFvI,KAAK40B,KAAK,QAASvb,GAAYrZ,KAAK+1C,aACpC/1C,KAAK8K,kBACc,YAAZtG,EAAE+D,OACT8wC,EAAYpvC,UAAUukB,QAAQpQ,KAAKpe,KAAMA,KAAKwyC,WAAWhkB,WAE7D6qB,EAAYpvC,UAAUs3B,cAAcnjB,KAAKpe,KAAMwE,IAEnDm6B,EAAS10B,UAAU8rC,SAAW,SAAkB0D,GAAlB,GACtBr6C,GAAQi6C,EAAYpvC,UAAU8rC,SAAS33B,KAAKpe,KAAMy5C,GAClDzyB,EAAOhnB,KAAKwyC,WAAWvxC,QAAQ+lB,IAWnC,OAVIyyB,KACAzyB,EAAO9pB,MAAMw8C,WAAW1yB,IAE5B5nB,EAAMd,MACF,OACA0oB,IAEA,cACA,QAEG5nB,GAEXu/B,EAAS10B,UAAUuV,IAAM,QAASA,KAAT,GACjBA,GAAMxf,KAAKwyC,WAAWp+B,WACtBrU,EAAOC,KAAKwyC,WAAWhzC,SAC3B,OAAOggB,GAAIlL,QAAQslC,KAAKp6B,EAAI7a,EAAI5E,EAAKb,WAEzCy/B,EAAS10B,UAAU4vC,cAAgB,WAC/B,GAAIrrB,GAAUxuB,KAAKwyC,WAAWhkB,SAG9B,OAFAA,GAAUtU,GAAesU,GACzBA,EAAUtxB,MAAMw8C,WAAWlrB,GACpBuL,GAAUn8B,cAAc4wB,IAEnCmQ,EAAS10B,UAAU6vC,iBAAmB,WAClC,GAAI9+B,EAIJ,SAHKhb,KAAKiB,aAAe84C,KAAShgC,GAAeC,MAAQD,GAAeuW,OACpEtV,EAAS,OAEN9B,GAAW,cAAe8B,IAErC2jB,EAAS10B,UAAUiW,SAAW,WAC1B,MAAO,SAAWlgB,KAAKk2C,WAAa,IAAMl2C,KAAK85C,mBAAqB,IAAM95C,KAAKqZ,cAAgB,IAAMrZ,KAAKi2C,gBAAkB,MAASj2C,KAAKwf,MAAM/a,EAAI,QAAYzE,KAAKwf,MAAM7a,EAAI,KAAQ3E,KAAKi5C,eAAiB,IAAMj5C,KAAK61C,kBAAoB,IAAM71C,KAAKu2C,oBAAsBv2C,KAAKo5C,aAAe,IAAMp5C,KAAK65C,gBAAkB,WAE3Tlb,GACTP,IACFpB,GAAStB,IAAM2C,GACfrB,GAASpH,OAAS0I,GAClBtB,GAASrgB,MAAQ4hB,GACjBvB,GAAS3T,MAAQmV,GACjBxB,GAASxB,UAAYiD,GACrBzB,GAAS7O,KAAOiQ,GAChBpB,GAAS3mB,KAAOqoB,GAChB1B,GAASnB,KAAO8C,GACZC,GAAM,MAiBNC,GAAY,SAAUmb,GACtB,QAASxZ,GAAQr5B,EAASlG,GACtB+4C,EAAY57B,KAAKpe,KAAMmH,EAASlG,GAChCjB,KAAKgoB,MAAQ,GAAIzL,IAASlgB,EAAEwD,QAASk6C,IAAK1xC,EAAclB,EAAS,aAAa8yC,YAAcrb,IAAO5+B,KAAKiB,UACxGq8B,GAAYt9B,KAAKmH,QAASnH,KAAKk6C,aAC/Bl6C,KAAKm6C,aAAen6C,KAAKmH,QAAQkZ,kBACjC5F,GAAcza,KAAKm6C,cACnBn6C,KAAKgoB,MAAMitB,SAASj1C,KAAKm6C,cACzBjzC,EAAWlH,KAAKmH,SACZizC,MAAOp6C,KAAK8yC,OACZuH,UAAWr6C,KAAKgzC,YAChBsH,SAAUt6C,KAAKizC,YACfsH,UAAWv6C,KAAKkzC,aAEpBlzC,KAAK2zC,SAET/2C,GAAa4jC,EAASwZ,GACtBxZ,EAAQv2B,UAAY8U,OAAOzL,OAAO0mC,GAAeA,EAAY/vC,WAC7Du2B,EAAQv2B,UAAU42B,YAAcL,EAChCA,EAAQv1B,GAAKu1B,EAAQv2B,UACrBu2B,EAAQv1B,GAAGnL,KAAO0gC,EAAQv1B,GAAG41B,WAC7B,IAAIsG,IAAuB5tB,QAuD3B,OAtDA4tB,GAAmB5tB,KAAK3Y,IAAM,WAC1B,MAAO,OAEX4/B,EAAQv2B,UAAU+S,QAAU,WACpBhd,KAAKgoB,QACLhoB,KAAKgoB,MAAMhL,UACXhd,KAAKgoB,MAAQ,KACbhoB,KAAKm6C,aAAe,KACpBlxC,EAAajJ,KAAKmH,SACdizC,MAAOp6C,KAAK8yC,OACZuH,UAAWr6C,KAAKgzC,YAChBsH,SAAUt6C,KAAKizC,YACfsH,UAAWv6C,KAAKkzC,cAGxB8G,EAAY/vC,UAAU+S,QAAQoB,KAAKpe,OAEvCwgC,EAAQv2B,UAAUiK,UAAY,SAAmB8H,GAC7C,GAAIw+B,GAAU70C,KAAKkB,MAAMmV,EAAOvX,GAAK,IAAMkB,KAAKkB,MAAMmV,EAAOrX,GAAK,IAAM3E,KAAKC,MAAMjB,MAAQ,IAAMgB,KAAKC,MAAMhB,MAC5Ge,MAAKy6C,QAAUz+B,EACfhc,KAAKm6C,aAAa91B,aAAa,UAAWm2B,IAE9Cha,EAAQv2B,UAAU2T,KAAO,SAAczW,GACnC6yC,EAAY/vC,UAAU2T,KAAKQ,KAAKpe,KAAMmH,GACtCnH,KAAKgoB,MAAMnL,MAAM1V,KAErBq5B,EAAQv2B,UAAUyZ,MAAQ,WACtBs2B,EAAY/vC,UAAUyZ,MAAMtF,KAAKpe,MACjCA,KAAKgoB,MAAMtE,SAEf8c,EAAQv2B,UAAUoS,IAAM,WACpB,MAAO,yBAA6Brc,KAAKk6C,aAE7C1Z,EAAQv2B,UAAU8qB,aAAe,WAAA,GAKrB3c,GAJJ/O,EAAMrJ,KACNw0B,EAASnrB,EAAI8pC,QACbn3B,EAAS3S,EAAIoxC,OAOjB,OANIz+B,KACI5D,EAAO,GAAIuE,IACfvE,EAAKwE,SAASte,KAAKk2B,GACnBpc,EAAK/N,UAAUmB,IAAc0I,WAAW8H,EAAOvX,GAAIuX,EAAOrX,IAC1D6vB,EAASpc,GAENoc,GAEXgM,EAAQv2B,UAAUypC,QAAU,WACpB1zC,KAAKy6C,SACLz6C,KAAKkU,UAAUlU,KAAKy6C,UAG5Bja,EAAQv2B,UAAUiwC,UAAY,WAC1B,MAAO,oEAAyEp9B,GAAS,8DAAqE9c,KAAKgoB,MAAMjL,SAAW,UAExLgC,OAAO8mB,iBAAiBrF,EAAQv2B,UAAWk9B,GACpC3G,GACTzD,IACE+B,MAyBAC,GAAS,SAAU6V,GACnB,QAASnX,GAAK+U,GACVoC,EAAYx2B,KAAKpe,KAAMwyC,GACnBA,GACAxyC,KAAK06C,WAyFb,MAtFA99C,IAAa6gC,EAAMmX,GACnBnX,EAAKxzB,UAAY8U,OAAOzL,OAAOshC,GAAeA,EAAY3qC,WAC1DwzB,EAAKxzB,UAAU42B,YAAcpD,EAC7BA,EAAKxyB,GAAKwyB,EAAKxzB,UACfwzB,EAAKxyB,GAAGnL,KAAO29B,EAAKxyB,GAAG41B,YACvBpD,EAAKxzB,UAAUywC,SAAW,WACtB,GAAI1uB,GAAOhsB,KAAKwyC,WAAWxmB,MACvBA,KACAhsB,KAAKgsB,KAAOA,EACZA,EAAKgV,YAAYhhC,QAGzBy9B,EAAKxzB,UAAUyZ,MAAQ,WACf1jB,KAAKwyC,YACLxyC,KAAKwyC,WAAWvR,eAAejhC,MAEnCA,KAAK26C,YACL/F,EAAY3qC,UAAUyZ,MAAMtF,KAAKpe,OAErCy9B,EAAKxzB,UAAU0wC,UAAY,WACnB36C,KAAKgsB,OACLhsB,KAAKgsB,KAAKiV,eAAejhC,YAClBA,MAAKgsB,OAGpByR,EAAKxzB,UAAU2wC,QAAU,SAAiB//B,GAClC7a,KAAKgsB,OACLnR,EAAIggC,YACJjgC,GAAWC,EAAK7a,KAAKgsB,MACrBnR,EAAImR,SAGZyR,EAAKxzB,UAAUs3B,cAAgB,SAAuB/8B,GAClC,SAAZA,EAAE+D,QACFvI,KAAK26C,YACL36C,KAAK06C,YAET9F,EAAY3qC,UAAUs3B,cAAcnjB,KAAKpe,KAAMwE,IAEnDi5B,EAAKxzB,UAAU6wC,aAAe,SAAsBjgC,GAChD,GAAI7a,KAAKwyC,WAAY,CACjB,GAAInoC,GAAYrK,KAAKwyC,WAAWnoC,WAC5BA,IACAwQ,EAAIxQ,UAAU1N,MAAMke,EAAKxQ,EAAUE,SAASu5B,QAAQ,MAIhErG,EAAKxzB,UAAU8wC,aAAe,SAAsBhlC,EAAUyJ,EAAKjC,GAArC,GAEjB5e,GACD6zC,EACA51B,EACAm4B,EAJJ1Q,EAASrkC,IACb,KAASrB,EAAI,EAAGA,EAAIoX,EAASlX,OAAQF,IAC7B6zC,EAAaz8B,EAASpX,GACtBie,EAAW41B,EAAW51B,SACtBm4B,EAAY,GAAIjW,IAAW0T,EAAWh5B,UAAUg5B,EAAYj1B,GAC5DX,GAAYA,EAAS/d,OAAS,GAC9Bk2C,EAAUl4B,KAAKD,EAAU4C,EAAKjC,GAE9B1a,EAAQ2c,GACR6kB,EAAOmK,SAASuG,EAAWv1B,GAE3B6kB,EAAOre,OAAO+uB,IAI1BtX,EAAKxzB,UAAU4S,KAAO,SAAc9G,EAAUyJ,EAAKjC,GAC/Cvd,KAAK+6C,aAAahlC,EAAUyJ,EAAKjC,GACjCvd,KAAK4yC,cAETnV,EAAKxzB,UAAU+wC,WAAa,SAAoBngC,GAC5C,GAAI7a,KAAKwyC,WAAY,CACjB,GAAI12B,GAAU9b,KAAKwyC,WAAW12B,SAC1BjZ,GAAQiZ,IACR9b,KAAKi7C,YAAYpgC,EAAKiB,KAIlC2hB,EAAKxzB,UAAUgxC,YAAc,SAAqBpgC,EAAKxa,GACnD,GAAI66C,GAAW76C,CACX66C,IAAYrgC,EAAIogC,cAChBC,GAAYrgC,EAAIogC,aAEpBpgC,EAAIogC,YAAcC,GAEtBzd,EAAKxzB,UAAUkM,QAAU,WACrB,GAAIrZ,GAAMkD,KAAKwyC,UACf,QAAQ11C,GAAOA,GAAOA,EAAImE,QAAQkV,WAAY,GAE3CsnB,GACTX,IACEkC,GAAc,SAAU8F,GACxB,QAASvG,KACLuG,EAAWnoC,MAAMqD,KAAMsqB,WAwB3B,MAtBA1tB,IAAa2hC,EAAWuG,GACxBvG,EAAUt0B,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WAC7Ds0B,EAAUt0B,UAAU42B,YAActC,EAClCA,EAAUtzB,GAAKszB,EAAUt0B,UACzBs0B,EAAUtzB,GAAGnL,KAAOy+B,EAAUtzB,GAAG41B,YACjCtC,EAAUt0B,UAAUkxC,SAAW,SAAkBtgC,GAAlB,GAQvB43B,GACK9zC,EACDwvC,CATR,IAAKnuC,KAAKmW,UAAV,CAQA,IALA0E,EAAIugC,OACJp7C,KAAK86C,aAAajgC,GAClB7a,KAAK46C,QAAQ//B,GACb7a,KAAKg7C,WAAWngC,GACZ43B,EAAazyC,KAAKyyC,WACb9zC,EAAI,EAAGA,EAAI8zC,EAAW5zC,OAAQF,IAC/BwvC,EAAQsE,EAAW9zC,GACnBwvC,EAAMh4B,WACNg4B,EAAMgN,SAAStgC,EAGvBA,GAAIwgC,YAED9c,GACTzC,GAAYiD,GAAQ,eAClBE,GAAc,IAAO,GACrBC,GAAa,SAAU4F,GACvB,QAASvoB,GAASmkB,EAAQ3gC,GACtB+kC,EAAW1mB,KAAKpe,MAChBA,KAAK0gC,OAASA,EACd1gC,KAAKD,KAAOA,EACZC,KAAK6a,IAAM6lB,EAAO4a,WAAW,KAC7B,IAAIC,GAAoBv7C,KAAKw7C,YAAYtxC,KAAKlK,KAC9CA,MAAK4yC,WAAa11C,MAAMu+C,SAAS,WAC7Bv+C,MAAMo1C,eAAeiJ,IACtBtc,IAwCP,MAtCAriC,IAAa2f,EAAUuoB,GACvBvoB,EAAStS,UAAY8U,OAAOzL,OAAOwxB,GAAcA,EAAW76B,WAC5DsS,EAAStS,UAAU42B,YAActkB,EACjCA,EAAStR,GAAKsR,EAAStS,UACvBsS,EAAStR,GAAGnL,KAAOyc,EAAStR,GAAG41B,YAC/BtkB,EAAStS,UAAU+S,QAAU,WACzB8nB,EAAW76B,UAAU+S,QAAQoB,KAAKpe,MAClCA,KAAK0gC,OAAS,KACd1gC,KAAK6a,IAAM,MAEf0B,EAAStS,UAAU4S,KAAO,SAAc9G,EAAUyJ,EAAKjC,GACnDvd,KAAK+6C,aAAahlC,EAAUyJ,EAAKjC,GACjCvd,KAAKw7C,eAETj/B,EAAStS,UAAUyxC,SAAW,SAAkBnnC,GAAlB,GACtBlL,GAAMrJ,KACN0gC,EAASr3B,EAAIq3B,OACb3gC,EAAOsJ,EAAItJ,IACf2gC,GAAO1hC,MAAQe,EAAKf,MAAQuV,EAC5BmsB,EAAOzhC,OAASc,EAAKd,OAASsV,EAC9BvU,KAAK6a,IAAItG,MAAMA,EAAOA,IAE1BgI,EAAStS,UAAU0xC,kBAAoB,WACnC,MAAuC,gBAA5Br+C,QAAOs+C,iBACPt+C,OAAOs+C,iBAEX,GAEXr/B,EAAStS,UAAUuxC,YAAc,SAAqBv6C,GAArB,GAIzB46C,GACAtnC,CAJCvU,MAAK6a,MAGNghC,EAAa56C,GAAWA,EAAQ46C,WAChCtnC,EAAQsnC,EAAa,EAAI77C,KAAK27C,oBAClC37C,KAAK07C,SAASnnC,GACdvU,KAAK6a,IAAIihC,UAAU,EAAG,EAAG97C,KAAK0gC,OAAO1hC,MAAOgB,KAAK0gC,OAAOzhC,QACxDe,KAAKm7C,SAASn7C,KAAK6a,OAEhB0B,GACTuf,GAAYkD,GAAa,eACvBG,GAAW,SAAUyB,GACrB,QAASzB,KACLyB,EAASxiB,KAAKpe,MACdA,KAAK+7C,UAsCT,MApCAn/C,IAAauiC,EAAUyB,GACvBzB,EAASl1B,UAAY8U,OAAOzL,OAAOstB,GAAYA,EAAS32B,WACxDk1B,EAASl1B,UAAU42B,YAAc1B,EACjCA,EAASl0B,GAAKk0B,EAASl1B,UACvBk1B,EAASl0B,GAAGnL,KAAOq/B,EAASl0B,GAAG41B,YAC/B1B,EAASl1B,UAAU2gC,KAAO,SAAc/e,EAAOpZ,GAC3CzS,KAAK+7C,OAAOz9C,MACRmU,KAAMA,EACNoZ,MAAOA,IAEXA,EAAMmwB,UAAYh8C,MAEtBm/B,EAASl1B,UAAUgyC,YAAc,SAAqBzrC,GAArB,GAIpBjJ,GAHLw0C,EAAS/7C,KAAK+7C,OACdl9C,EAASk9C,EAAOl9C,OAChB2J,IACJ,KAASjB,EAAM,EAAGA,EAAM1I,EAAQ0I,IACxBw0C,EAAOx0C,GAAKkL,KAAKi0B,cAAcl2B,IAC/BhI,EAAOlK,KAAKy9C,EAAOx0C,GAAKskB,MAGhC,OAAOrjB,IAEX22B,EAASl1B,UAAU8uB,OAAS,SAAgBlN,EAAOpZ,GAC/CzS,KAAK4qC,KAAK/e,EAAOpZ,IAErB0sB,EAASl1B,UAAU0U,OAAS,SAAgBkN,GAAhB,GAGftkB,GAFLw0C,EAAS/7C,KAAK+7C,OACdl9C,EAASk9C,EAAOl9C,MACpB,KAAS0I,EAAM,EAAGA,EAAM1I,EAAQ0I,IAC5B,GAAIw0C,EAAOx0C,GAAKskB,QAAUA,EAAO,CAC7BkwB,EAAOhoC,OAAOxM,EAAK,EACnB,SAIL43B,GACTv/B,IACEw/B,IACAxJ,OAAQC,GACR6F,IAAKxP,GACL7V,KAAMA,GACN5I,MAAOA,GACP8tB,QAASA,GACTzxB,OAAQA,GACRwwB,KAAMA,GACNhvB,SAAUA,EACVG,eAAgBA,GAChBpB,UAAWmB,GAEX6zB,GAAW,SAAU6c,GACrB,QAAS7c,GAASxoB,GACdqlC,EAAY99B,KAAKpe,MACjBA,KAAK4c,YACL5c,KAAK6W,KAAOA,EAgFhB,MA9EAja,IAAayiC,EAAU6c,GACvB7c,EAASp1B,UAAY8U,OAAOzL,OAAO4oC,GAAeA,EAAYjyC,WAC9Do1B,EAASp1B,UAAU42B,YAAcxB,EACjCA,EAASp0B,GAAKo0B,EAASp1B,UACvBo1B,EAASp0B,GAAGnL,KAAOu/B,EAASp0B,GAAG41B,YAC/BxB,EAASp1B,UAAUkyC,SAAW,QAASA,GAAStlC,GAAlB,GACtBulC,GAAWp8C,KAAK6W,KAChBwlC,EAAkBD,EAASvpC,cAC3BA,EAAcgE,EAAKhE,cACnBspC,EAAWC,EAASzlC,OAAOlS,GAAKoS,EAAKF,OAAOlS,GAAK23C,EAASzlC,OAAOhS,GAAKkS,EAAKF,OAAOhS,GAAKkO,EAAYpO,GAAK43C,EAAgB53C,GAAKoO,EAAYlO,GAAK03C,EAAgB13C,CAClK,OAAOw3C,IAEX9c,EAASp1B,UAAUgyC,YAAc,SAAqBzrC,GAArB,GAIpBjJ,GAHLqV,EAAW5c,KAAK4c,SAChB/d,EAAS+d,EAAS/d,OAClB2J,EAAS0zC,EAAYjyC,UAAUgyC,YAAY79B,KAAKpe,KAAMwQ,EAC1D,KAASjJ,EAAM,EAAGA,EAAM1I,EAAQ0I,IAC5BnF,EAAWoG,EAAQoU,EAASrV,GAAK00C,YAAYzrC,GAEjD,OAAOhI,IAEX62B,EAASp1B,UAAU8uB,OAAS,SAAgBlN,EAAOpZ,GAAvB,GAUPlL,GATbqV,EAAW5c,KAAK4c,SAChB0/B,GAAW,CACf,IAAIt8C,KAAKm8C,SAAS1pC,GAAO,CACrB,GAAIzS,KAAK+7C,OAAOl9C,OAAS,EACrBmB,KAAK4qC,KAAK/e,EAAOpZ,OACd,CAIH,IAHKmK,EAAS/d,QACVmB,KAAKu8C,gBAEAh1C,EAAM,EAAGA,EAAMqV,EAAS/d,OAAQ0I,IACrC,GAAIqV,EAASrV,GAAKwxB,OAAOlN,EAAOpZ,GAAO,CACnC6pC,GAAW,CACX,OAGHA,GACDt8C,KAAK4qC,KAAK/e,EAAOpZ,GAGzB6pC,GAAW,EAEf,MAAOA,IAEXjd,EAASp1B,UAAUsyC,cAAgB,WAAA,GAC3BlzC,GAAMrJ,KACN6W,EAAOxN,EAAIwN,KACX+F,EAAWvT,EAAIuT,SACfjR,EAASkL,EAAKlL,SACd6wC,EAAY3lC,EAAK7X,QAAU,EAC3By9C,EAAa5lC,EAAK5X,SAAW,CACjC2d,GAASte,KAAK,GAAI+gC,GAAS,GAAIhpB,KAC3BQ,EAAKF,OAAOlS,EACZoS,EAAKF,OAAOhS,IAEZ63C,EACAC,KACC,GAAIpd,GAAS,GAAIhpB,KAClB1K,EAAOlH,EACPoS,EAAKF,OAAOhS,IAEZ63C,EACAC,KACC,GAAIpd,GAAS,GAAIhpB,KAClBQ,EAAKF,OAAOlS,EACZkH,EAAOhH,IAEP63C,EACAC,KACC,GAAIpd,GAAS,GAAIhpB,KAClB1K,EAAOlH,EACPkH,EAAOhH,IAEP63C,EACAC,OAGDpd,GACTF,IACEG,GAAY,IACZC,GAAa,IACbC,GAAY,GACZC,GAAiB,SAAUmB,GAC3B,QAASnB,KACLmB,EAASxiB,KAAKpe,MACdA,KAAK08C,YAgKT,MA9JA9/C,IAAa6iC,EAAgBmB,GAC7BnB,EAAex1B,UAAY8U,OAAOzL,OAAOstB,GAAYA,EAAS32B,WAC9Dw1B,EAAex1B,UAAU42B,YAAcpB,EACvCA,EAAex0B,GAAKw0B,EAAex1B,UACnCw1B,EAAex0B,GAAGnL,KAAO2/B,EAAex0B,GAAG41B,YAC3CpB,EAAex1B,UAAUyyC,UAAY,WACjC18C,KAAK28C,WACL38C,KAAKsc,KAAO,GAAI6iB,IAChBn/B,KAAK48C,iBAETnd,EAAex1B,UAAUyZ,MAAQ,WAAA,GAGpBnc,GAFL88B,EAASrkC,KACT48C,EAAe58C,KAAK48C,YACxB,KAASr1C,EAAM,EAAGA,EAAMq1C,EAAa/9C,OAAQ0I,IACzC88B,EAAO1lB,OAAOi+B,EAAar1C,GAE/BvH,MAAK08C,aAETjd,EAAex1B,UAAU4yC,WAAa,SAAoBrsC,GAApB,GAQzBjJ,GAPLu1C,GAAc98C,KAAK28C,QAAQh3C,KAAKa,MAAMgK,EAAM/L,EAAI66B,UAAmB35B,KAAKa,MAAMgK,EAAM7L,EAAI26B,KACxF92B,EAASxI,KAAKsc,KAAK2/B,YAAYzrC,EAMnC,KALIssC,IACAt0C,EAASA,EAAO2B,OAAO2yC,EAAWb,YAAYzrC,KAElDxQ,KAAK+8C,aAAav0C,GAClBA,EAAOjK,KAAKgd,IACHhU,EAAM,EAAGA,EAAMiB,EAAO3J,OAAQ0I,IACnC,GAAIiB,EAAOjB,GAAKm/B,cAAcl2B,GAC1B,MAAOhI,GAAOjB,IAI1Bk4B,EAAex1B,UAAU8yC,aAAe,SAAsBhnC,GAAtB,GAE3BxO,GACDJ,EACAyxB,EACAokB,EACAC,EALJ5Y,EAASrkC,IACb,KAASuH,EAAM,EAAGA,EAAMwO,EAASlX,OAAQ0I,IAAO,CAK5C,IAJIJ,EAAU4O,EAASxO,GACnBqxB,EAAS,EACTokB,EAAcr3C,KAAKgB,IAAI44B,GAAYC,IACnCyd,KACG91C,GACH81C,EAAQ3+C,KAAK6I,GACbA,EAAUA,EAAQqD,MAEtB,MAAOyyC,EAAQp+C,QACXsI,EAAU81C,EAAQ/hB,MAClBtC,KAAYzxB,EAAQqD,OAASrD,EAAQqD,OAAOoS,SAAWynB,EAAOuY,cAAc3iC,QAAQ9S,GAAW,GAAK61C,EACpGA,GAAezd,EAEnBxpB,GAASxO,GAAKiU,QAAUod,IAGhC6G,EAAex1B,UAAUs3B,cAAgB,SAAuB/8B,GAC5C,cAAZA,EAAE+D,OAAqC,iBAAZ/D,EAAE+D,OAC7BvI,KAAKk9C,WAAW14C,EAAE2C,UAG1Bs4B,EAAex1B,UAAUa,eAAiB,SAAwBtG,GAC9DxE,KAAKk9C,WAAW14C,EAAE2C,UAEtBs4B,EAAex1B,UAAUizC,WAAa,SAAoB/1C,GAApB,GAGrBI,GAFT88B,EAASrkC,IACb,IAAyB,UAArBmH,EAAQqS,SACR,IAASjS,EAAM,EAAGA,EAAMJ,EAAQyV,SAAS/d,OAAQ0I,IAC7C88B,EAAO6Y,WAAW/1C,EAAQyV,SAASrV,QAGnCJ,GAAQ60C,WACR70C,EAAQ60C,UAAUr9B,OAAOxX,GAE7BnH,KAAKm9C,aAAah2C,IAG1Bs4B,EAAex1B,UAAU2H,IAAM,SAAamE,GACxC,GAAIqnC,GAAgBz0C,MAAMC,QAAQmN,GAAYA,EAAS3P,MAAM,IAAM2P,EACnE3T,GAAWpC,KAAK48C,aAAcQ,GAC9Bp9C,KAAKq9C,QAAQD,IAEjB3d,EAAex1B,UAAUmkC,eAAiB,SAAwB5pC,GAAxB,GAGzB+C,GAFT88B,EAASrkC,IACb,IAAiB,WAAbwE,EAAE6pC,OACF,IAAS9mC,EAAM,EAAGA,EAAM/C,EAAE8pC,MAAMzvC,OAAQ0I,IACpC88B,EAAO1lB,OAAOna,EAAE8pC,MAAM/mC,QAG1BvH,MAAKq9C,QAAQ10C,MAAMsB,UAAU7D,MAAMgY,KAAK5Z,EAAE8pC,MAAO,KAGzD7O,EAAex1B,UAAUozC,QAAU,SAAiBtnC,GAGhD,IAH+B,GAE3B5O,GADAk9B,EAASrkC,KAEN+V,EAASlX,OAAS,GACrBsI,EAAU4O,EAASmlB,MACnB/zB,EAAQ65B,YAAYqD,GACK,UAArBl9B,EAAQqS,SACRpX,EAAW2T,EAAU5O,EAAQyV,UAE7BynB,EAAO8Y,aAAah2C,IAIhCs4B,EAAex1B,UAAUkzC,aAAe,SAAsBtxB,GAAtB,GAG5ByxB,GACA74C,EACAE,EAIIg4C,EARRlqC,EAAOoZ,EAAMpZ,MACbA,KACI6qC,EAAUt9C,KAAKu9C,WAAW9qC,GAC1BhO,EAAI64C,EAAQ,GAAG,GACf34C,EAAI24C,EAAQ,GAAG,GACft9C,KAAKw9C,OAAOF,GACZt9C,KAAKsc,KAAKyc,OAAOlN,EAAOpZ,IAEpBkqC,EAAU38C,KAAK28C,QACdA,EAAQl4C,KACTk4C,EAAQl4C,OAEPk4C,EAAQl4C,GAAGE,KACZg4C,EAAQl4C,GAAGE,GAAK,GAAI06B,IAAS,GAAIhpB,KAC7B5R,EAAI66B,GACJ36B,EAAI26B,KAEJA,GACAA,OAGRqd,EAAQl4C,GAAGE,GAAGo0B,OAAOlN,EAAOpZ,MAIxCgtB,EAAex1B,UAAU0U,OAAS,SAAgBxX,GAAhB,GAItByV,GACKrV,EAJT88B,EAASrkC,IAEb,IADAmH,EAAQ85B,eAAejhC,MACE,UAArBmH,EAAQqS,SAER,IADIoD,EAAWzV,EAAQyV,SACdrV,EAAM,EAAGA,EAAMqV,EAAS/d,OAAQ0I,IACrC88B,EAAO1lB,OAAO/B,EAASrV,QAEpBJ,GAAQ60C,YACf70C,EAAQ60C,UAAUr9B,OAAOxX,SAClBA,GAAQ60C,YAGvBvc,EAAex1B,UAAUuzC,OAAS,SAAgBF,GAC9C,MAAOA,GAAQ,GAAGz+C,OAAS,GAAKy+C,EAAQ,GAAGz+C,OAAS,GAExD4gC,EAAex1B,UAAUszC,WAAa,SAAoB1mC,GAApB,GAQzBpS,GAGAE,EAVLkO,EAAcgE,EAAKhE,cACnB4qC,EAAU93C,KAAKa,MAAMqM,EAAYpO,EAAI66B,IACrCoe,EAAU/3C,KAAKa,MAAMqM,EAAYlO,EAAI26B,IACrCge,SAIJ,KAAS74C,EAAIkB,KAAKa,MAAMqQ,EAAKF,OAAOlS,EAAI66B,IAAY76B,GAAKg5C,EAASh5C,IAC9D64C,EAAQ,GAAGh/C,KAAKmG,EAEpB,KAASE,EAAIgB,KAAKa,MAAMqQ,EAAKF,OAAOhS,EAAI26B,IAAY36B,GAAK+4C,EAAS/4C,IAC9D24C,EAAQ,GAAGh/C,KAAKqG,EAEpB,OAAO24C,IAEJ7d,GACT7/B,IAUE8/B,GAAgB,SAAuBtiB,GACvCA,EAAQlT,KAAK,aAAclK,KAAKgzC,YAAY9oC,KAAKlK,OACjDod,EAAQlT,KAAK,aAAclK,KAAKizC,YAAY/oC,KAAKlK,OACjDA,KAAKmH,QAAUiW,EAAQjW,SAE3Bu4B,GAAcz1B,UAAUyZ,MAAQ,WAC5B1jB,KAAK29C,gBAETje,GAAcz1B,UAAU+S,QAAU,WAC9Bhd,KAAK29C,qBACE39C,MAAKmH,SAEhBu4B,GAAcz1B,UAAU+oC,YAAc,SAAqBxuC,GACvD,GAAIwxC,GAASh2C,KAAK49C,aAAap5C,EAC1BwxC,IAGIh2C,KAAK69C,WACN79C,KAAK89C,eAAiB99C,KAAK+9C,cAE/B/9C,KAAKg+C,WAAWhI,IALhBh2C,KAAK29C,gBAQbje,GAAcz1B,UAAUgpC,YAAc,WAClCjzC,KAAK29C,gBAETje,GAAcz1B,UAAU2zC,aAAe,SAAsBp5C,GAEzD,IADA,GAAIqnB,GAAQrnB,EAAE2C,QACP0kB,IAAUhpB,EAAQgpB,EAAM5qB,QAAQ+0C,SACnCnqB,EAAQA,EAAMrhB,MAElB,IAAIqhB,EACA,MAAOA,GAAM5qB,QAAQ+0C,QAG7BtW,GAAcz1B,UAAU8zC,WAAa,WACjC,GAAI/9C,KAAKmH,QACL,MAAOnH,MAAKmH,QAAQ/H,MAAM42C,QAGlCtW,GAAcz1B,UAAU+zC,WAAa,SAAoBhI,GACjDh2C,KAAKmH,UACLnH,KAAKmH,QAAQ/H,MAAM42C,OAASA,EAC5Bh2C,KAAK69C,SAAW7H,IAGxBtW,GAAcz1B,UAAU0zC,aAAe,WAC/B39C,KAAK69C,WACL79C,KAAKg+C,WAAWh+C,KAAK89C,gBAAkB,UAChC99C,MAAK69C,WAWhBle,GAAa,SAAUlC,GACvB,QAASW,KACLX,EAAK9gC,MAAMqD,KAAMsqB,WA2GrB,MAzGA1tB,IAAawhC,EAAUX,GACvBW,EAASn0B,UAAY8U,OAAOzL,OAAOmqB,GAAQA,EAAKxzB,WAChDm0B,EAASn0B,UAAU42B,YAAczC,EACjCA,EAASnzB,GAAKmzB,EAASn0B,UACvBm0B,EAASnzB,GAAGnL,KAAOs+B,EAASnzB,GAAG41B,YAC/BzC,EAASn0B,UAAUkxC,SAAW,SAAkBtgC,GAC5CA,EAAIugC,OACJp7C,KAAK86C,aAAajgC,GAClB7a,KAAK46C,QAAQ//B,GACb7a,KAAKg7C,WAAWngC,GAChBA,EAAIggC,YACJ76C,KAAKi+C,aAAapjC,EAAK7a,KAAKwyC,YAC5BxyC,KAAKk+C,YAAYrjC,GACjB7a,KAAKm+C,WAAWtjC,GAChB7a,KAAKo+C,YAAYvjC,GACjB7a,KAAKq+C,QAAQxjC,GACb7a,KAAKs+C,UAAUzjC,GACfA,EAAIwgC,WAERjd,EAASn0B,UAAUo0C,QAAU,SAAiBxjC,GAAjB,GACrBuT,GAAOpuB,KAAKwyC,WAAWvxC,QAAQmtB,KAC/BmwB,GAAU,CAcd,OAbInwB,KACsB,aAAlBA,EAAK5U,UACLxZ,KAAKw+C,gBAAgB3jC,EAAKuT,GAC1BmwB,GAAU,GACFn5C,EAAcgpB,EAAK/oB,SAC3BwV,EAAI4jC,UAAYrwB,EAAK/oB,MACrBwV,EAAIugC,OACJp7C,KAAKi7C,YAAYpgC,EAAKuT,EAAKtS,SAC3BjB,EAAIuT,OACJvT,EAAIwgC,UACJkD,GAAU,IAGXA,GAEXngB,EAASn0B,UAAUu0C,gBAAkB,SAAyB3jC,EAAKuT,GAA9B,GAE7B1S,GAEItL,EACA0jB,EAGAnoB,EAPJ8G,EAAOzS,KAAKwyC,WAAWp8B,SAEvBgY,aAAgBgG,KACZhkB,EAAQge,EAAKhe,QACb0jB,EAAM1F,EAAK0F,MACfpY,EAAWb,EAAI6jC,qBAAqBtuC,EAAM3L,EAAG2L,EAAMzL,EAAGmvB,EAAIrvB,EAAGqvB,EAAInvB,IAC1DypB,YAAgBmO,MACnB5wB,EAASyiB,EAAKziB,SAClB+P,EAAWb,EAAI8jC,qBAAqBhzC,EAAOlH,EAAGkH,EAAOhH,EAAG,EAAGgH,EAAOlH,EAAGkH,EAAOhH,EAAGypB,EAAK8X,WAExFzqB,GAAiBC,EAAU0S,EAAKzS,OAChCd,EAAIugC,OACChtB,EAAKiG,aACNxZ,EAAIxQ,UAAUoI,EAAKzT,QAAS,EAAG,EAAGyT,EAAKxT,SAAUwT,EAAKkE,OAAOlS,EAAGgO,EAAKkE,OAAOhS,GAEhFkW,EAAI4jC,UAAY/iC,EAChBb,EAAIuT,OACJvT,EAAIwgC,WAERjd,EAASn0B,UAAUq0C,UAAY,SAAmBzjC,GAC9C,GAAIwT,GAASruB,KAAKwyC,WAAWvxC,QAAQotB,MACrC,IAAIA,IAAWjpB,EAAcipB,EAAOhpB,QAAUgpB,EAAOrvB,MAAQ,EAOzD,MANA6b,GAAI+jC,YAAcvwB,EAAOhpB,MACzBwV,EAAIgkC,UAAY73C,EAAeqnB,EAAOrvB,MAAO,GAC7C6b,EAAIugC,OACJp7C,KAAKi7C,YAAYpgC,EAAKwT,EAAOvS,SAC7BjB,EAAIwT,SACJxT,EAAIwgC,WACG,GAGfjd,EAASn0B,UAAU8uC,SAAW,WAC1B,GAAI1qB,GAASruB,KAAKwyC,WAAWvxC,QAAQotB,MACrC,IAAIA,GAAUA,EAAO0qB,SACjB,MAAO1qB,GAAO0qB,SAASzjC,eAG/B8oB,EAASn0B,UAAUi0C,YAAc,SAAqBrjC,GAArB,GAGrBq+B,GAFJH,EAAW/4C,KAAK+4C,UAChBA,IAAYA,IAAa9a,KACrBib,EAAYlb,GAAY+a,GACxBl+B,EAAIqjC,YACJrjC,EAAIqjC,YAAYhF,IAEhBr+B,EAAIikC,QAAU5F,EACdr+B,EAAIkkC,eAAiB7F,KAIjC9a,EAASn0B,UAAUk0C,WAAa,SAAoBtjC,GAApB,GACxBk+B,GAAW/4C,KAAK+4C,WAChB1qB,EAASruB,KAAKwyC,WAAWvxC,QAAQotB,MACjC0qB,IAAYA,IAAa9a,GACzBpjB,EAAIs+B,QAAUjb,GACP7P,GAAUA,EAAO8qB,UACxBt+B,EAAIs+B,QAAU9qB,EAAO8qB,UAG7B/a,EAASn0B,UAAUm0C,YAAc,SAAqBvjC,GAClD,GAAIwT,GAASruB,KAAKwyC,WAAWvxC,QAAQotB,MACjCA,IAAUA,EAAOgf,WACjBxyB,EAAIwyB,SAAWhf,EAAOgf,WAG9BjP,EAASn0B,UAAUg0C,aAAe,SAAsBpjC,EAAKC,GACzDF,GAAWC,EAAKC,IAEbsjB,GACTW,IACEa,GAAY,SAAUxB,GACtB,QAASC,KACLD,EAASzhC,MAAMqD,KAAMsqB,WAWzB,MATA1tB,IAAayhC,EAASD,GACtBC,EAAQp0B,UAAY8U,OAAOzL,OAAO8qB,GAAYA,EAASn0B,WACvDo0B,EAAQp0B,UAAU42B,YAAcxC,EAChCA,EAAQpzB,GAAKozB,EAAQp0B,UACrBo0B,EAAQpzB,GAAGnL,KAAOu+B,EAAQpzB,GAAG41B,YAC7BxC,EAAQp0B,UAAUg0C,aAAe,SAAsBpjC,GACnD,GAAIC,GAAO9a,KAAKwyC,WAAW1E,QAC3BlzB,IAAWC,EAAKC,IAEbujB,GACTsB,IACEE,GAAe,SAAUzB,GACzB,QAASE,KACLF,EAASzhC,MAAMqD,KAAMsqB,WAazB,MAXA1tB,IAAa0hC,EAAYF,GACzBE,EAAWr0B,UAAY8U,OAAOzL,OAAO8qB,GAAYA,EAASn0B,WAC1Dq0B,EAAWr0B,UAAU42B,YAAcvC,EACnCA,EAAWrzB,GAAKqzB,EAAWr0B,UAC3Bq0B,EAAWrzB,GAAGnL,KAAOw+B,EAAWrzB,GAAG41B,YACnCvC,EAAWr0B,UAAUg0C,aAAe,SAAsBpjC,GAAtB,GAC5BxR,GAAMrJ,KAAKwyC,WAAWpT,WACtBzzB,EAAStC,EAAIsC,OACbu6B,EAAS78B,EAAI68B,MACjBrrB,GAAI0yB,IAAI5hC,EAAOlH,EAAGkH,EAAOhH,EAAGuhC,EAAQ,EAAa,EAAVvgC,KAAKiT,KAEzC0lB,GACTqB,IACEG,GAAc,SAAU1B,GACxB,QAASI,GAAUgU,EAAYj1B,GAC3B6gB,EAAShgB,KAAKpe,KAAMwyC,GACpBxyC,KAAKg/C,OAASh/C,KAAKg/C,OAAO90C,KAAKlK,MAC/BA,KAAKi/C,QAAUj/C,KAAKi/C,QAAQ/0C,KAAKlK,MACjCA,KAAKk/C,QAAU5iD,IACf,IAAIqsB,GAAM3oB,KAAK2oB,IAAM,GAAIU,MACrB9L,KAAS,UAAUnD,KAAKo4B,EAAW11C,SACnC6rB,EAAIW,YAAc/L,GAEtBoL,EAAI7rB,IAAM01C,EAAW11C,MACjB6rB,EAAIE,SACJ7oB,KAAKg/C,UAELr2B,EAAIG,OAAS9oB,KAAKg/C,OAClBr2B,EAAII,QAAU/oB,KAAKi/C,SAqC3B,MAlCAriD,IAAa4hC,EAAWJ,GACxBI,EAAUv0B,UAAY8U,OAAOzL,OAAO8qB,GAAYA,EAASn0B,WACzDu0B,EAAUv0B,UAAU42B,YAAcrC,EAClCA,EAAUvzB,GAAKuzB,EAAUv0B,UACzBu0B,EAAUvzB,GAAGnL,KAAO0+B,EAAUvzB,GAAG41B,YACjCrC,EAAUv0B,UAAUkxC,SAAW,SAAkBtgC,GAChB,aAAzB7a,KAAKk/C,QAAQC,UACbtkC,EAAIugC,OACJp7C,KAAK86C,aAAajgC,GAClB7a,KAAK46C,QAAQ//B,GACb7a,KAAKo/C,UAAUvkC,GACfA,EAAIwgC,YAGZ7c,EAAUv0B,UAAUs3B,cAAgB,SAAuB/8B,GACvC,QAAZA,EAAE+D,OACFvI,KAAKk/C,QAAU5iD,KACf0D,KAAK2oB,IAAI7rB,IAAMkD,KAAKwyC,WAAW11C,OAE/BshC,EAASn0B,UAAUs3B,cAAcnjB,KAAKpe,KAAMwE,IAGpDg6B,EAAUv0B,UAAU+0C,OAAS,WACzBh/C,KAAKk/C,QAAQjhC,UACbje,KAAK4yC,cAETpU,EAAUv0B,UAAUg1C,QAAU,WAC1Bj/C,KAAKk/C,QAAQl6B,OAAWnP,MAAM,yBAA4B7V,KAAK2oB,IAAI7rB,IAAM,wDAE7E0hC,EAAUv0B,UAAUm1C,UAAY,SAAmBvkC,GAAnB,GACxBhE,GAAO7W,KAAKwyC,WAAW37B,OACvBuvB,EAAUvvB,EAAKuvB,SACnBvrB,GAAIukC,UAAUp/C,KAAK2oB,IAAKyd,EAAQ3hC,EAAG2hC,EAAQzhC,EAAGkS,EAAK7X,QAAS6X,EAAK5X,WAE9Du/B,GACTmB,IACEI,GAAkB,SAAU3B,GAC5B,QAASK,KACLL,EAASzhC,MAAMqD,KAAMsqB,WAazB,MAXA1tB,IAAa6hC,EAAeL,GAC5BK,EAAcx0B,UAAY8U,OAAOzL,OAAO8qB,GAAYA,EAASn0B,WAC7Dw0B,EAAcx0B,UAAU42B,YAAcpC,EACtCA,EAAcxzB,GAAKwzB,EAAcx0B,UACjCw0B,EAAcxzB,GAAGnL,KAAO2+B,EAAcxzB,GAAG41B,YACzCpC,EAAcx0B,UAAUg0C,aAAe,SAAsBpjC,GAAtB,GAE1Blc,GADLuuC,EAAQltC,KAAKwyC,WAAWtF,KAC5B,KAASvuC,EAAI,EAAGA,EAAIuuC,EAAMruC,OAAQF,IAC9Bic,GAAWC,EAAKqyB,EAAMvuC,KAGvB8/B,GACTkB,IACEK,GAAa,SAAU5B,GACvB,QAASM,KACLN,EAASzhC,MAAMqD,KAAMsqB,WAoBzB,MAlBA1tB,IAAa8hC,EAAUN,GACvBM,EAASz0B,UAAY8U,OAAOzL,OAAO8qB,GAAYA,EAASn0B,WACxDy0B,EAASz0B,UAAU42B,YAAcnC,EACjCA,EAASzzB,GAAKyzB,EAASz0B,UACvBy0B,EAASzzB,GAAGnL,KAAO4+B,EAASzzB,GAAG41B,YAC/BnC,EAASz0B,UAAUg0C,aAAe,SAAsBpjC,GAAtB,GAMtBlE,GACA5W,EANJq/B,EAAWp/B,KAAKwyC,WAAWpT,WAC3B/1B,EAAM+1B,EAAS0G,aACfl6B,EAAKvC,EAAI,GACTwC,EAAKxC,EAAI,EACF,KAAPuC,GAAmB,IAAPC,GACR8K,EAASyoB,EAASzoB,OAClB5W,EAAOq/B,EAASr/B,KACpB8a,EAAIhE,KAAKF,EAAOlS,EAAGkS,EAAOhS,EAAG5E,EAAKf,MAAOe,EAAKd,SAE9Cm/B,EAASn0B,UAAUg0C,aAAa7/B,KAAKpe,KAAM6a,EAAKsT,GAAKgG,SAASiL,KAG/DV,GACTiB,IACEM,GAAa,SAAU7B,GACvB,QAASO,KACLP,EAASzhC,MAAMqD,KAAMsqB,WA2BzB,MAzBA1tB,IAAa+hC,EAAUP,GACvBO,EAAS10B,UAAY8U,OAAOzL,OAAO8qB,GAAYA,EAASn0B,WACxD00B,EAAS10B,UAAU42B,YAAclC,EACjCA,EAAS1zB,GAAK0zB,EAAS10B,UACvB00B,EAAS1zB,GAAGnL,KAAO6+B,EAAS1zB,GAAG41B,YAC/BlC,EAAS10B,UAAUkxC,SAAW,SAAkBtgC,GAAlB,GACtBhd,GAAOmC,KAAKwyC,WACZhzB,EAAM3hB,EAAKuW,WACXrU,EAAOlC,EAAK2B,SAChBqb,GAAIugC,OACJp7C,KAAK86C,aAAajgC,GAClB7a,KAAK46C,QAAQ//B,GACb7a,KAAKg7C,WAAWngC;AAChBA,EAAIggC,YACJhgC,EAAImM,KAAOnpB,EAAKoD,QAAQ+lB,KACxBnM,EAAIkX,UAAY,OACZ/xB,KAAKq+C,QAAQxjC,IACbA,EAAIwkC,SAASxhD,EAAK2wB,UAAWhP,EAAI/a,EAAG+a,EAAI7a,EAAI5E,EAAKb,UAEjDc,KAAKs+C,UAAUzjC,KACf7a,KAAKk+C,YAAYrjC,GACjBA,EAAIykC,WAAWzhD,EAAK2wB,UAAWhP,EAAI/a,EAAG+a,EAAI7a,EAAI5E,EAAKb,WAEvD2b,EAAIwgC,WAED1c,GACTgB,IACFb,GAAWpD,IAAMkE,GACjBd,GAAWlJ,OAASiK,GACpBf,GAAWniB,MAAQqiB,GACnBF,GAAWzV,MAAQyW,GACnBhB,GAAWtD,UAAYuE,GACvBjB,GAAW3Q,KAAOwR,GAClBb,GAAWzoB,KAAO2pB,GAClBlB,GAAWjD,KAAOoE,GACdviB,GAAY,SAAUs8B,GACtB,QAASxZ,GAAQr5B,EAASlG,GAA1B,GAGQy/B,GACA3gC,CAHJi6C,GAAY57B,KAAKpe,KAAMmH,EAASlG,GAChCjB,KAAKmH,QAAQoT,UAAYva,KAAKk6C,UAAUl6C,MACpC0gC,EAAS1gC,KAAKmH,QAAQkZ,kBACtBtgB,EAAO+I,EAAY3B,GACvBu5B,EAAO1hC,MAAQe,EAAKf,MACpB0hC,EAAOzhC,OAASc,EAAKd,OACrBe,KAAKm6C,aAAezZ,EACpB1gC,KAAKgoB,MAAQ,GAAIkX,IAAWwB,EAAQ3gC,GACpCC,KAAKu/C,mBAAqBv/C,KAAKw/C,YAAYt1C,KAAKlK,MAChDkH,EAAWlH,KAAKmH,SACZizC,MAAOp6C,KAAKu/C,mBACZhF,UAAWv6C,KAAKu/C,qBAGxB3iD,GAAa4jC,EAASwZ,GACtBxZ,EAAQv2B,UAAY8U,OAAOzL,OAAO0mC,GAAeA,EAAY/vC,WAC7Du2B,EAAQv2B,UAAU42B,YAAcL,EAChCA,EAAQv1B,GAAKu1B,EAAQv2B,UACrBu2B,EAAQv1B,GAAGnL,KAAO0gC,EAAQv1B,GAAG41B,WAC7B,IAAIsG,IAAuB5tB,QA2I3B,OA1IA4tB,GAAmB5tB,KAAK3Y,IAAM,WAC1B,MAAO,UAEX4/B,EAAQv2B,UAAU+S,QAAU,WACxBg9B,EAAY/vC,UAAU+S,QAAQoB,KAAKpe,MAC/BA,KAAKgoB,QACLhoB,KAAKgoB,MAAMhL,UACXhd,KAAKgoB,MAAQ,MAEbhoB,KAAKy/C,cACLz/C,KAAKy/C,YAAY/7B,cACV1jB,MAAKy/C,aAEZz/C,KAAK0/C,UACL1/C,KAAK0/C,QAAQ1iC,gBACNhd,MAAK0/C,SAEhBz2C,EAAajJ,KAAKmH,SACdizC,MAAOp6C,KAAKu/C,mBACZhF,UAAWv6C,KAAKu/C,sBAGxB/e,EAAQv2B,UAAU2T,KAAO,SAAczW,GACnC6yC,EAAY/vC,UAAU2T,KAAKQ,KAAKpe,KAAMmH,GACtCnH,KAAKgoB,MAAMnL,MAAM1V,GAAUw4C,OAAW3/C,KAAKiB,QAAQsc,MAC/Cvd,KAAKy/C,aACLz/C,KAAKy/C,YAAY7tC,KAAKzK,KAG9Bq5B,EAAQv2B,UAAUyZ,MAAQ,WACtBs2B,EAAY/vC,UAAUyZ,MAAMtF,KAAKpe,MACjCA,KAAKgoB,MAAMtE,QACP1jB,KAAKy/C,aACLz/C,KAAKy/C,YAAY/7B,QAEjB1jB,KAAK0/C,SACL1/C,KAAK0/C,QAAQh8B,SAGrB8c,EAAQv2B,UAAUqpC,YAAc,SAAqB9uC,GAArB,GAEpBgM,GACAqb,CAFR,IAAI7rB,KAAKy/C,YAGL,MAFIjvC,GAAQxQ,KAAKi0C,cAAczvC,GAC3BqnB,EAAQ7rB,KAAKy/C,YAAY5C,WAAWrsC,IAIhDgwB,EAAQv2B,UAAU4T,MAAQ,WAAA,GAUlBR,GACAuiC,EAVAv2C,EAAMrJ,KACNsc,EAAOjT,EAAI2e,MACX63B,EAAcx2C,EAAI8wC,aAClB2F,IAiBJ,OAhBAxjC,GAAK4xB,SAAS,SAAU6G,GAChBA,EAAUmK,SACVY,EAAcxhD,KAAKy2C,EAAUmK,WAGjC7hC,EAAU/gB,KACVsjD,EAAiB,WACjBtjC,EAAKk/B,aAAcK,YAAY,GAC/B,KACI,GAAI17B,GAAO0/B,EAAYppB,WACvBpZ,GAAQY,QAAQkC,GAClB,MAAO3b,GACL6Y,EAAQ2H,OAAOxgB,KAGvBhI,GAAWsjD,GAAehiC,KAAK8hC,EAAgBA,GACxCviC,GAEXmjB,EAAQv2B,UAAU0T,gBAAkB,WAChCq8B,EAAY/vC,UAAU0T,gBAAgBS,KAAKpe,MACvCA,KAAKy/C,cACLz/C,KAAKy/C,YAAY/7B,cACV1jB,MAAKy/C,cAGpBjf,EAAQv2B,UAAU6pC,eAAiB,WAAA,GAIvBrB,GACAmK,EACKr1C,CAJb,IADAyyC,EAAY/vC,UAAU6pC,eAAe11B,KAAKpe,OACrCA,KAAKy/C,YAAa,CAInB,IAHAz/C,KAAKy/C,YAAc,GAAIhgB,IACnBgT,EAAazyC,KAAKgoB,MAAMyqB,WACxBmK,KACKr1C,EAAM,EAAGA,EAAMkrC,EAAW5zC,OAAQ0I,IACvCq1C,EAAat+C,KAAKm0C,EAAWlrC,GAAKirC,WAEtCxyC,MAAKy/C,YAAY7tC,IAAIgrC,KAG7Bpc,EAAQv2B,UAAUypC,QAAU,WACxB1zC,KAAKm6C,aAAan7C,MAAQgB,KAAKC,MAAMjB,MACrCgB,KAAKm6C,aAAal7C,OAASe,KAAKC,MAAMhB,OACtCe,KAAKgoB,MAAMjoB,KAAOC,KAAKC,MACvBD,KAAKgoB,MAAM4qB,cAEfpS,EAAQv2B,UAAUiwC,UAAY,WAC1B,MAAO,wDAEX1Z,EAAQv2B,UAAUmpC,gBAAkB,WAChCpzC,KAAKy/C,YAAc,GAAIhgB,IACvBz/B,KAAK0/C,QAAU,GAAIhgB,IAAc1/B,MACjCg6C,EAAY/vC,UAAUmpC,gBAAgBh1B,KAAKpe,OAE/CwgC,EAAQv2B,UAAUu1C,YAAc,SAAqBh7C,GAArB,GAIxBqnB,GAEIk0B,CALJ//C,MAAK6zC,qBAGLhoB,EAAQ7rB,KAAKszC,YAAY9uC,GACd,UAAXA,EAAE+U,MACEwmC,EAAe//C,KAAKggD,cACpBD,GAAgBA,IAAiBl0B,GACjC7rB,KAAKkhC,QAAQ,cACT/5B,QAAS44C,EACThM,cAAevvC,EACf+U,KAAM,eAGVsS,GAASk0B,IAAiBl0B,GAC1B7rB,KAAKkhC,QAAQ,cACT/5B,QAAS0kB,EACTkoB,cAAevvC,EACf+U,KAAM,eAGdvZ,KAAKkhC,QAAQ,aACT/5B,QAAS0kB,EACTkoB,cAAevvC,EACf+U,KAAM,cAEVvZ,KAAKggD,cAAgBn0B,GACdA,GACP7rB,KAAKkhC,QAAQ,SACT/5B,QAAS0kB,EACTkoB,cAAevvC,EACf+U,KAAM,YAIlBwF,OAAO8mB,iBAAiBrF,EAAQv2B,UAAWk9B,GACpC3G,GACTzD,IAGEqD,GAAc,WACd,MAA2B,mBAAbt/B,WAEdu/B,GAAiB,WACjB,MAAOD,OAAiBt/B,SAASC,cAAc,UAAUu6C,YAEzDhb,GAAc,WACd,MAAOF,OAAiBt/B,SAASm/C,eAAeC,WAAW,oDAAqD,QAEhH3f,GAAiB,SAAUK,GAC3B,QAASL,KACLK,EAASxiB,KAAKpe,MACdA,KAAKuxC,SAEGroC,KAAM,MACNqQ,KAAMslB,KAGN31B,KAAM,SACNqQ,KAAMmE,KAIlB9gB,GAAa2jC,EAAgBK,GAC7BL,EAAet2B,UAAY8U,OAAOzL,OAAOstB,GAAYA,EAAS32B,WAC9Ds2B,EAAet2B,UAAU42B,YAAcN,EACvCA,EAAet1B,GAAKs1B,EAAet2B,UACnCs2B,EAAet1B,GAAGnL,KAAOygC,EAAet1B,GAAG41B,WAC3C,IAAIkE,IACA/K,WACAz6B,WAmCJ,OAjCAwlC,GAAgB/K,QAAQp5B,IAAM,WAO1B,MANKu/B,MACDA,IACIO,OAAQL,KACRhkB,IAAKikB,OAGNH,IAEX4E,EAAgBxlC,QAAQqB,IAAM,WAI1B,MAHKs/B,MACDA,GAAa,GAAIK,IAEdL,IAEXK,EAAet2B,UAAUqJ,OAAS,SAAgBnM,EAASlG,GAAzB,GAItBk/C,GACKxhD,EAJT2vC,EAAQtuC,KAAKuxC,OACb3nC,EAAQ0kC,EAAM,EAClB,IAAIrtC,GAAWA,EAAQsY,KAEnB,IADI4mC,EAAYl/C,EAAQsY,KAAKjE,cACpB3W,EAAI,EAAGA,EAAI2vC,EAAMzvC,OAAQF,IAC9B,GAAI2vC,EAAM3vC,GAAGuK,OAASi3C,EAAW,CAC7Bv2C,EAAQ0kC,EAAM3vC,EACd,OAIZ,MAAIiL,GACO,GAAIA,GAAM2P,KAAKpS,EAASlG,OAEnC/D,OAAMkjD,aAAa,oIAA2IC,UAAUC,YAE5KvhC,OAAO8mB,iBAAiBtF,EAAgBwE,GACjCxE,GACT3gC,IACE4gC,GAAU,SAAUwZ,GACpB,QAASxZ,KACLwZ,EAAYr9C,MAAMqD,KAAMsqB,WAE5B1tB,GAAa4jC,EAASwZ,GACtBxZ,EAAQv2B,UAAY8U,OAAOzL,OAAO0mC,GAAeA,EAAY/vC,WAC7Du2B,EAAQv2B,UAAU42B,YAAcL,EAChCA,EAAQv1B,GAAKu1B,EAAQv2B,UACrBu2B,EAAQv1B,GAAGnL,KAAO0gC,EAAQv1B,GAAG41B,WAC7B,IAAIkE,IAAoB/K,WAQxB,OAPA+K,GAAgB/K,QAAQp5B,IAAM,WAC1B,MAAO2/B,IAAevG,SAE1BwG,EAAQltB,OAAS,SAAgBnM,EAASlG,GACtC,MAAOs/B,IAAehhC,QAAQ+T,OAAOnM,EAASlG,IAElD8d,OAAO8mB,iBAAiBrF,EAASuE,GAC1BvE,GACTzD,IAiBE0D,IACAD,QAAS3B,GACTtiB,SAAUA,GACVkhB,KAAMA,GACNc,UAAWA,GACXF,QAASA,GACTC,WAAYA,GACZI,SAAUA,GACVF,UAAWA,GACXG,SAAUA,GACVP,SAAUA,GACVK,cAAeA,GACfV,eAAgBA,GAChBD,SAAUA,GACVJ,iBAAkBA,GAClBE,mBAAoBA,GACpBC,mBAAoBA,GACpB3hB,YAAaA,IAEbwkB,IACAF,QAAS9iB,GACTnB,SAAU2iB,GACVzB,KAAMsB,GACNR,UAAWS,GACXX,QAASuB,GACTtB,WAAYuB,GACZnB,SAAUsB,GACVxB,UAAWsB,GACXnB,SAAUsB,GACV7B,SAAUuB,GACVlB,cAAesB,IA4Cf9V,GAAUlQ,OAIVkV,GAAuB,uBACvBjG,MACAtJ,MACJA,GAASsI,MAAQtI,GACbihB,GAA8B,mBAAXrjC,QACnB+sB,KAAYsW,KAAY1W,GAAQjQ,MAAQiQ,GAAQqG,MAChD2H,GAAW,SAAUsoB,GACrB,QAAStoB,GAASv5B,EAAKmY,EAAM5V,GACzBs/C,EAAQniC,KAAKpe,KAAMtB,EAAKmY,EAAK6F,YAAazb,GAC1CjB,KAAKwgD,SAAW3pC,EAapB,MAXAja,IAAaq7B,EAAUsoB,GACvBtoB,EAAShuB,UAAY8U,OAAOzL,OAAOitC,GAAWA,EAAQt2C,WACtDguB,EAAShuB,UAAU42B,YAAc5I,EACjCA,EAAShtB,GAAKgtB,EAAShuB,UACvBguB,EAAShtB,GAAGnL,KAAOm4B,EAAShtB,GAAG41B,YAC/B5I,EAAShuB,UAAU4M,KAAO,WACtB,MAAO7W,MAAKwgD,UAEhBvoB,EAAShuB,UAAUmM,QAAU,WACzB,MAAOpW,MAAKwgD,UAETvoB,GACT4D,IAyBEzc,GAA6B,mBAAZ6nB,UAA2BA,QAAQh9B,WAAa,SAAUrD,GAC3E,MAAIA,GAAEwY,QACK,SAAUd,EAAIa,GACjB,MAAOb,GAAGc,QAAQD,IAGtBvY,EAAE65C,sBACK,SAAUniC,EAAIa,GACjB,MAAOb,GAAGmiC,sBAAsBthC,IAGpCvY,EAAE85C,mBACK,SAAUpiC,EAAIa,GACjB,MAAOb,GAAGoiC,mBAAmBvhC,IAGjCvY,EAAE+5C,kBACK,SAAUriC,EAAIa,GACjB,MAAOb,GAAGqiC,kBAAkBxhC,IAG7B,SAAU5R,GACb,SAAU0M,QAAQmE,KAAKtd,SAAS2jB,iBAAiBlX,GAAIvN,aAE3DinC,QAAQh9B,WAYNua,GAAa,SAAUnoB,GACvB,MAAIA,GACO,QAASmoB,GAAWlG,GAApB,GAGKsiC,GAAaC,EAAmBliD,EAChCwhB,EAHJ7L,EAAQgK,EAAG5c,WAAU,EACzB,IAAmB,GAAf4c,EAAG9E,SAAe,CACdonC,EAAMvkD,EAAEiiB,GAAKuiC,EAASxkD,EAAEiY,GACxB6L,EAAOygC,EAAIzgC,MACf,KAAKxhB,IAAKwhB,GACN0gC,EAAO1gC,KAAKxhB,EAAGwhB,EAAKxhB,GAaxB,KAXI,YAAYyb,KAAKkE,EAAGmD,SACpBnN,EAAMgnC,WAAW,MAAM8D,UAAU9gC,EAAI,EAAG,GACjC,sCAAsClE,KAAKkE,EAAGmD,WACrDnN,EAAMqhC,gBAAgB,MACtBrhC,EAAMqhC,gBAAgB,QACjB,cAAcv7B,KAAKkE,EAAGmD,WACvBnN,EAAMjU,MAAQie,EAAGje,OAErBiU,EAAMqhB,QAAUrX,EAAGqX,QACnBrhB,EAAMwsC,SAAWxiC,EAAGwiC,UAEnBniD,EAAI2f,EAAG6D,WAAYxjB,EAAGA,EAAIA,EAAEyjB,YAC7B9N,EAAM1S,YAAY4iB,EAAW7lB,IAGrC,MAAO2V,IAGJ,SAAoBgK,GAApB,GAiBCyiC,GAhBAzsC,EAAQ,QAAS4U,GAAKrF,GAAd,GAKCllB,GAJL2V,EAAQuP,EAAKniB,WAAU,EAI3B,KAHImiB,EAAK8Q,qBACLrgB,EAAMqgB,mBAAqB9Q,EAAK8Q,oBAE3Bh2B,EAAIklB,EAAK1B,WAAYxjB,EAAGA,EAAIA,EAAEyjB,YACnC9N,EAAM1S,YAAYsnB,EAAKvqB,GAE3B,OAAO2V,IACTgK,GACE0iC,EAAW1iC,EAAGmG,iBAAiB,SAgBnC,OAfIu8B,GAASniD,QACTqf,GAAU5J,EAAMmQ,iBAAiB,WAAWxF,QAAQ,SAAUgiC,EAAWtiD,GACrEsiD,EAAU3F,WAAW,MAAM8D,UAAU4B,EAASriD,GAAI,EAAG,KAGzDoiD,EAAOziC,EAAGmG,iBAAiB,mCAC/BvG,GAAU5J,EAAMmQ,iBAAiB,oCAAoCxF,QAAQ,SAAUX,EAAI3f,GACvF2f,EAAGq3B,gBAAgB,MACnBr3B,EAAGq3B,gBAAgB,QACd,cAAcv7B,KAAKkE,EAAGmD,WACvBnD,EAAGje,MAAQ0gD,EAAKpiD,GAAG0B,OAEvBie,EAAGqX,QAAUorB,EAAKpiD,GAAGg3B,QACrBrX,EAAGwiC,SAAWC,EAAKpiD,GAAGmiD,WAEnBxsC,IAGC,mBAAXhX,SAA0BA,OAAOJ,OAASI,OAAOJ,MAAMK,QAwa5D4rB,GAAuB,WAavB,QAASmkB,GAAMjqC,GAKX,QAAS69C,KACL,GAAI76C,GAAI86C,EAAe11B,KAAKpoB,EACxBgD,KACAhD,EAAQA,EAAMg0B,OAAOhxB,EAAE,GAAGxH,SAGlC,QAASuiD,GAAKC,GACVH,GACA,IAAI76C,GAAIg7C,EAAM51B,KAAKpoB,EACnB,IAAIgD,EAEA,MADAhD,GAAQA,EAAMg0B,OAAOhxB,EAAE,GAAGxH,QACnBwH,EAAE,GAGjB,QAASi7C,KAAT,GAEQziD,GAAQq1B,EAEJtqB,EAHJvE,EAAQnI,MAAM2e,WAAWxY,GAAO,EAEpC,IAAIgC,EAOA,MANIuE,GAAQ,eAAe6hB,KAAKpoB,IAAU,iBAAiBooB,KAAKpoB,IAAU,UAAUooB,KAAKpoB,GACzFA,EAAQA,EAAMg0B,OAAOztB,EAAM,GAAG/K,QAC9BwG,EAAQA,EAAMojB,SACR5pB,EAASuiD,EAAKG,MAChBrtB,EAAUktB,EAAKI,KAGfn8C,MAAOA,EACPxG,OAAQA,EACRq1B,QAASA,GAIrB,QAASutB,GAAqBC,GAA9B,GACQtyC,GACAuyC,EAAKC,EAsBGn9C,EAAuBE,EAevBiX,EApCRD,KACAkM,GAAU,CACd,IAAIu5B,EAAKS,GAAY,CAiCjB,IAhCAzyC,EAAQgyC,EAAKU,GACA,KAAT1yC,IACAA,EAAQ,QAERA,GACAA,EAAQuc,GAAWvc,GACnBgyC,EAAKW,KAELJ,EAAMP,EAAKY,GACA,MAAPL,EACAA,EAAMP,EAAKY,GACJL,GAAO,KAAKvnC,KAAKsnC,KACxB75B,GAAU,GAEd+5B,EAAMR,EAAKY,GACXZ,EAAKW,IAEL,QAAQ3nC,KAAKsnC,IAAsB,MAATtyC,GAAwB,MAAPuyC,IACvCl9C,EAAI28C,EAAKI,GAAc78C,EAAIy8C,EAAKI,GACpC35B,GAAU,EACD,MAALpjB,EACAk9C,EAAM,OACM,QAALl9C,IACPk9C,EAAM,SAED,MAALh9C,EACAi9C,EAAM,MACM,QAALj9C,IACPi9C,EAAM,UAEVR,EAAKW,IAEF1+C,IAAU+9C,EAAKa,KACdrmC,EAAO0lC,MAIX3lC,EAAMrd,KAAKsd,GACXwlC,EAAKW,EAET,QACIxoC,KAAM,SACNnK,MAAOA,EACP2kB,GAAI4tB,GAAOC,EAAMD,EAAM,IAAMC,EAAMD,EAAMA,EAAMC,EAAMA,EAAM,KAC3DjmC,MAAOA,EACPkM,QAASA,IAIrB,QAASq6B,KACL,GAAId,EAAKS,GAAY,CACjB,GAAI/nC,GAAMsnC,EAAKe,EAGf,OAFAroC,GAAMA,EAAI/b,QAAQ,iBAAkB,IACpCqjD,EAAKa,IAED1oC,KAAM,MACNO,IAAKA,IAlGrB,GAsGQsoC,GArGArB,EAAO19C,CACX,OAAIpG,IAAeolD,EAAQtB,GAChBsB,EAAOtB,KAoGdqB,EAAMhB,EAAKkB,IACXF,EAAMX,EAAqBW,IACpBA,EAAMhB,EAAKmB,MAClBH,EAAMF,KAEHG,EAAOtB,GAAQqB,IAAS7oC,KAAM,SAzHlB,GACnB+oC,GAAsB,oDACtBd,EAAc,eACdD,EAAa,gBACbS,EAAc,uCACdF,EAAY,mCACZX,EAAiB,SACjBU,EAAY,QACZI,EAAa,QACbF,EAAY,OACZQ,EAAU,WACVJ,EAAc,WACdE,KAAaG,IA+GjB,OAAO,UAAUn/C,GACb,MAAIpG,IAAeulD,EAAQn/C,GAChBm/C,EAAOn/C,GAEXm/C,EAAOn/C,GAAS4jB,GAAc5jB,GAAO/C,IAAIgtC,OAGpDrmB,GAAgB,WAChB,GAAIw7B,KACJ,OAAO,UAAUp/C,EAAOqrB,GAapB,QAASg0B,GAAW92C,GAChB,MAAOvF,GAAIuF,EAAG6f,KAAKpoB,EAAMg0B,OAAO7X,IAEpC,QAAShY,GAAK9I,GACV,MAAOA,GAAIX,QAAQ,aAAc,IAjBlC,GAICqD,GAIAuhD,EACAC,EAAapjC,EACbqjC,EACAC,EACAz8C,CAPJ,IAJKqoB,IACDA,EAAY,YAEZttB,EAAWiC,EAAQqrB,EACnBzxB,GAAewlD,EAAOrhD,GACtB,MAAOqhD,GAAMrhD,EAajB,KAXIuhD,KACAC,EAAU,EAAGpjC,EAAM,EACnBqjC,EAAW,EACXC,GAAY,EAQTtjC,EAAMnc,EAAMxE,SACVikD,GAAaJ,EAAW,cACzBG,IACArjC,MACQsjC,GAAaJ,EAAW,cAChCG,IACArjC,MACQsjC,GAAaJ,EAAW,YAChCI,EAAYz8C,EAAE,GACdmZ,KACoB,KAAbsjC,GAAqBJ,EAAW,SACvCljC,GAAO,EACa,KAAbsjC,GAAoBJ,EAAW,SACtCljC,GAAO,EACa,KAAbsjC,GAAqBJ,EAAW,QACvCI,GAAY,EACZtjC,KACoB,KAAbsjC,GAAoBJ,EAAW,QACtCI,GAAY,EACZtjC,KACOkjC,EAAWh0B,KACbo0B,IAAcD,GAAYrjC,EAAMojC,IACjCD,EAAIrkD,KAAKkJ,EAAKnE,EAAMgI,UAAUu3C,EAASpjC,KACvCojC,EAAUpjC,EAAMnZ,EAAE,GAAGxH,QAEzB2gB,GAAOnZ,EAAE,GAAGxH,QAEZ2gB,GAMR,OAHIojC,GAAUpjC,GACVmjC,EAAIrkD,KAAKkJ,EAAKnE,EAAMgI,UAAUu3C,EAASpjC,KAEpCijC,EAAMrhD,GAAYuhD,MAG7Bz7B,GAAa,SAAUu7B,GACvB,MAAO,UAAUnkC,GAAV,GAGKjY,GAFJyT,EAAM2oC,EAAMnkC,EAShB,OARKxE,MAEGzT,EAAI,2DAA2DolB,KAAKnN,IACpExE,EAAM2oC,EAAMnkC,GAAMjY,EAAE,IACbA,EAAI,kCAAkColB,KAAKnN,MAClDxE,EAAM2oC,EAAMnkC,GAAMjY,EAAE,KAGrByT,IAEbiF,OAAOzL,OAASyL,OAAOzL,OAAO,UAC5BwkB,GAAgB,SAAU2qB,GAC1B,MAAO,UAAUz7B,GACb,GAAI/nB,GAASwjD,EAAMz7B,EAInB,OAHc,OAAV/nB,IACAA,EAASwjD,EAAMz7B,GAAQ+S,GAAU56B,YAAY,QAAU6nB,KAAMA,IAAQ/nB,QAElEA,IAEb8f,OAAOzL,OAASyL,OAAOzL,OAAO,UAqxD5BnW,IACAkf,IAAKokB,GACLC,OAAQA,GACRtjC,KAAMA,GACN68B,aAAcA,GACd4C,WAAYA,GACZ9nB,UAAWA,GACX+nB,SAAUA,GACV1C,aAAcA,GACdoG,QAASA,GACTD,eAAgBA,GAChBtjB,YAAaA,GACbc,UAAWA,GACXshB,SAAUA,GACVI,eAAgBA,GAChBwH,QAAS1M,GACT3E,OAAQA,GACR8F,IAAKA,GACLvN,KAAMA,GACNqN,UAAWA,GACXK,KAAMA,GACNxS,MAAOoI,GACP9U,MAAOA,GACPqf,OAAQA,GACR3lB,KAAM4lB,GACNnlB,MAAOA,GACPM,OAAQA,GACRM,MAAOA,GACPC,OAAQA,GACRS,KAAMA,GACNC,MAAOA,GACPC,IAAKA,GACL8b,eAAgBA,GAChBmI,eAAgBA,GAChBH,aAAcA,GACdC,SAAUA,GACVM,UAAWA,GACXD,iBAAkBA,GAClBpd,QAASA,GACT6G,SAAUA,GACVhB,aAAcA,IAElBjoB,MAAMG,WAAWH,OACbC,QAASA,GACTiiC,SAAUA,KAEdliC,MAAMC,QAAQo+B,QAAUr+B,MAAMkiC,SAAS7D,QACvCr+B,MAAM6lD,QAAQ5lD,QAAUD,MAAMC,QAC9BD,MAAM6lD,QAAQ3jB,SAAWliC,MAAMkiC,SAC/BliC,MAAMC,QAAQC,KAAK+B,YAAcjC,MAAME,KAAK+B,YAC5CjC,MAAMC,QAAQC,KAAKc,UAAYhB,MAAME,KAAKc,UAC1ChB,MAAMC,QAAQ6lD,MAAQ9lD,MAAM8lD,MAC5B9lD,MAAME,KAAKwG,aAAe1G,MAAMC,QAAQC,KAAKwG,cAC/CtG,OAAOJ,MAAMK,SACC,kBAAVnB,SAAwBA,OAAOoB,IAAMpB,OAAS,SAAUqB,EAAIC,EAAIC,IACrEA,GAAMD,OAEV,SAAUvB,EAAGC,QACVA,OAAO,2BACH,cACA,yBACDD,IACL,YACG,SAAUE,GAAV,GACO4mD,GAAK,SACL/lD,EAAQI,OAAOJ,MACfG,EAAaH,EAAMG,WACnB6lD,EAAQhmD,EAAMC,QAAQC,KACtByF,EAAUqgD,EAAMrgD,QAChB2C,EAAa09C,EAAM19C,WACnBjB,EAAmB2+C,EAAM3+C,iBACzB4+C,EAAajmD,EAAMkmD,YACnBC,EAAcnmD,EAAMomD,aACpBC,EAAQlnD,EAAEknD,MACVC,EAAmB,qEACnBC,EAAyB,uFACzBC,EAAiBxmD,EAAM0C,MAAMC,QAC7BC,KAAM,SAAUsd,EAASnc,GACrBjB,KAAKmH,QAAU9K,EAAEmnD,GACjBxjD,KAAKwuB,QAAUxuB,KAAKmH,QAAQyV,SAAS,sBACrC3b,EAAUA,MACVjB,KAAKiB,QAAU5D,KAAe2C,KAAKiB,QAASjB,KAAK2jD,gBAAgB1iD,IACjEjB,KAAK4jD,cACDC,SAAU5iD,EAAQ4iD,SAClBC,UAAW7iD,EAAQ6iD,UACnBC,kBAAkB,EAClBC,UAAW,WAEfhkD,KAAKikD,kBAAoB5nD,EAAEknD,MAAMvjD,KAAKkkD,WAAYlkD,MAClDA,KAAKod,QAAUA,EACfpd,KAAKmkD,eAETljD,SACImT,SAAU,MACVgwC,OAAQ,aACRpoC,OAAQ,EACRqoC,UAAU,EACVC,UAAW,EACXC,UAAW,KAEfJ,YAAa,WACTnkD,KAAKwkD,aAAejB,EAAMvjD,KAAKykD,WAAYzkD,MAC3CA,KAAK0kD,qBAAuBnB,EAAMvjD,KAAK2kD,cAAe3kD,MACtDA,KAAK4kD,mBAAqBrB,EAAMvjD,KAAKizC,YAAajzC,MAClDA,KAAK6kD,kBAAoBtB,EAAMvjD,KAAKkzC,WAAYlzC,MAChDA,KAAKod,QAAQlT,KAAK,QAASlK,KAAKwkD,cAChCxkD,KAAKod,QAAQlT,KAAK,aAAclK,KAAKwkD,cACrCxkD,KAAKod,QAAQlT,KAAK,aAAclK,KAAK4kD,oBACrC5kD,KAAKod,QAAQlT,KAAK,YAAalK,KAAK6kD,mBACpC7kD,KAAKod,QAAQjW,QAAQ29C,GAAG,aAAe7B,EAAIjjD,KAAK0kD,sBAChD1kD,KAAKmH,QAAQ29C,GAAG,QAAU7B,EAAI,oBAAqBM,EAAMvjD,KAAK+kD,WAAY/kD,OAC1EA,KAAKmH,QAAQ29C,GAAG,aAAe7B,EAAIM,EAAMvjD,KAAKglD,cAAehlD,QAEjEilD,SAAU,WAIN,MAHKjlD,MAAKklD,QACNllD,KAAKklD,MAAQ,GAAIhoD,GAAMioD,GAAGC,MAAMplD,KAAKmH,QAASnH,KAAK4jD,eAEhD5jD,KAAKklD,OAEhBloC,QAAS,WACL,GAAIkoC,GAAQllD,KAAKklD,KACjBllD,MAAKod,QAAQi2B,OAAO,QAASrzC,KAAKwkD,cAClCxkD,KAAKod,QAAQi2B,OAAO,aAAcrzC,KAAKwkD,cACvCxkD,KAAKod,QAAQi2B,OAAO,aAAcrzC,KAAK4kD,oBACvC5kD,KAAKod,QAAQi2B,OAAO,YAAarzC,KAAK6kD,mBACtC7kD,KAAKod,QAAQjW,QAAQk+C,IAAI,aAAepC,EAAIjjD,KAAK0kD,sBACjD1kD,KAAKmH,QAAQk+C,IAAI,QAAUpC,GAC3BjjD,KAAKmH,QAAQk+C,IAAI,aAAepC,GAC5BiC,IACAA,EAAMloC,gBACChd,MAAKklD,aAETllD,MAAK4jD,aACZ0B,aAAatlD,KAAKulD,gBACXvlD,MAAKmH,cACLnH,MAAKwuB,cACLxuB,MAAKod,SAEhBumC,gBAAiB,SAAU1iD,GAEvB,MADAA,GAAUA,OAENmT,SAAUnT,EAAQmT,SAClBgwC,OAAQnjD,EAAQmjD,OAChBpoC,OAAQ/a,EAAQ+a,OAChBqoC,SAAUpjD,EAAQojD,SAClBrlD,MAAOiC,EAAQjC,MACfC,OAAQgC,EAAQhC,OAChBuvB,QAASvtB,EAAQutB,QACjBg3B,OAAQvkD,EAAQukD,OAChBlB,UAAWrjD,EAAQqjD,UACnBC,UAAWtjD,EAAQsjD,YAG3BkB,cAAe,SAAU55B,GACrB,KAAOA,IAAUA,EAAM5qB,QAAQykD,SAC3B75B,EAAQA,EAAMrhB,MAElB,OAAOqhB,IAEX85B,eAAgB,SAAUxgD,EAAQ0mB,EAAO5qB,GACrC,GAAIutB,GAAUvtB,EAAQutB,OAOtB,IANItxB,EAAM0oD,WAAWp3B,KACjBA,EAAUA,GACNrnB,QAAS0kB,EACT1mB,OAAQA,KAGZqpB,EAEA,MADAxuB,MAAKwuB,QAAQq3B,KAAKr3B,IACX,GAGfs3B,UAAW,SAAUj6B,EAAO5qB,EAAS6H,EAAas4B,GAAvC,GAgBC8S,GAfJ9/B,EAAWnT,EAAQmT,SACnB2xC,EAAgB9kD,EAAQ+a,QAAU,EAClCoB,EAAUpd,KAAKod,QACfpB,EAASoB,EAAQ4oC,UAAUhS,iBAC3Bj0C,EAAOqd,EAAQI,UACfyoC,EAAgB7oC,EAAQ4oC,UAAUvL,QAClChoC,EAAOoZ,EAAMpZ,OACbzT,EAAQ8J,EAAY9J,MACpBC,EAAS6J,EAAY7J,OACrBqH,EAAO,EAAGwB,EAAM,CAsBpB,OArBA2K,GAAKkE,OAAOzC,UAAU8H,EAAO1V,KAAM0V,EAAOlU,KACtCm+C,GACAxzC,EAAKkE,OAAOzC,WAAW+xC,EAAcxhD,GAAIwhD,EAActhD,GAE3C,UAAZyP,GAAwBgtB,GACpB8S,EAAQ3vC,EAAiB68B,GAC7B96B,EAAO4tC,EAAMzvC,EAAIzF,EAAQ,EACzB8I,EAAMosC,EAAMvvC,EAAI1F,EAAS8mD,GACN,QAAZ3xC,GACP9N,EAAOmM,EAAKkE,OAAOlS,EAAIzF,EAAQ+mD,EAC/Bj+C,EAAM2K,EAAK9G,SAAShH,EAAI1F,EAAS,GACd,SAAZmV,GACP9N,EAAOmM,EAAKI,cAAcpO,EAAIshD,EAC9Bj+C,EAAM2K,EAAK9G,SAAShH,EAAI1F,EAAS,GACd,UAAZmV,GACP9N,EAAOmM,EAAK9G,SAASlH,EAAIzF,EAAQ,EACjC8I,EAAM2K,EAAKI,cAAclO,EAAIohD,IAE7Bz/C,EAAOmM,EAAK9G,SAASlH,EAAIzF,EAAQ,EACjC8I,EAAM2K,EAAKkE,OAAOhS,EAAI1F,EAAS8mD,IAG/Bz/C,KAAMd,EAAWc,EAAM0V,EAAO1V,KAAM0V,EAAO1V,KAAOvG,EAAKf,OACvD8I,IAAKtC,EAAWsC,EAAKkU,EAAOlU,IAAKkU,EAAOlU,IAAM/H,EAAKd,UAG3DinD,KAAM,SAAUr6B,EAAO5qB,GACnBjB,KAAKmmD,MAAMt6B,EAAOA,EAAOxuB,KAAe2C,KAAKiB,QAASjB,KAAK2jD,gBAAgB93B,EAAM5qB,QAAQykD,SAAUzkD,KAEvGmlD,KAAM,WAAA,GACElB,GAAQllD,KAAKklD,MACb3lD,EAAUS,KAAK69C,eACZ79C,MAAK69C,SACZyH,aAAatlD,KAAKqmD,cACdnB,GAASA,EAAM/uC,WAAa5W,IAAYS,KAAKod,QAAQ8jB,QAAQ,gBACzD/5B,QAAS5H,EAAQssB,MACjB1mB,OAAQ5F,EAAQ4F,OAChB+/C,MAAOA,KAEXA,EAAMtvC,SAGdmvC,WAAY,SAAUvgD,GAClBA,EAAE8hD,iBACFtmD,KAAKomD,QAETD,MAAO,SAAUhhD,EAAQ0mB,EAAO5qB,EAASmgC,EAAO4Q,GAAzC,GAOCkT,GAOIp8C,EAbJvJ,EAAUS,KAAK69C,QACnByH,cAAatlD,KAAKulD,UACdhmD,IAAYA,EAAQssB,QAAUA,GAAS5qB,EAAQukD,QAAUjmD,EAAQ4F,SAAWA,KAGhFmgD,aAAatlD,KAAKqmD,cACdnB,EAAQllD,KAAKilD,YACZjlD,KAAKod,QAAQ8jB,QAAQ,eAClB/5B,QAAS0kB,EACT1mB,OAAQA,EACR+/C,MAAOA,KACLllD,KAAK2lD,eAAexgD,EAAQ0mB,EAAO5qB,KACzCjB,KAAKumD,UAAUtlD,GACX6H,EAAc9I,KAAKwmD,SAASvlD,GAC5BikD,EAAM/uC,WACN+uC,EAAMtvC,OAAM,GAEhB5V,KAAK69C,UACD58C,QAASA,EACT6H,YAAaA,EACb+iB,MAAOA,EACP1mB,OAAQA,EACRiP,SAAUpU,KAAK8lD,UAAU7kD,EAAQukD,OAAS35B,EAAQ1mB,EAAQlE,EAAS6H,EAAas4B,IAEhF4Q,EACAhyC,KAAKqmD,aAAengC,WAAWlmB,KAAKikD,kBAAmBhjD,EAAQsjD,WAAa,GAE5EvkD,KAAKkkD,gBAIjBA,WAAY,WAAA,GACJ3kD,GAAUS,KAAK69C,SACfzpC,EAAW7U,EAAQ6U,QACvBpU,MAAKilD,WAAWwB,KAAKryC,EAAS9N,KAAM8N,EAAStM,MAEjDy+C,UAAW,SAAUtlD,GACbA,EAAQojD,UAAYrkD,KAAK0mD,eACzB1mD,KAAKmH,QAAQuX,YAAY,sBACzB1e,KAAK0mD,aAAa/nC,eACX3e,MAAK0mD,cAEXzlD,EAAQojD,UAAarkD,KAAK0mD,eAC3B1mD,KAAKmH,QAAQkX,SAAS,sBACtBre,KAAK0mD,aAAerqD,EAAEonD,GAAwBI,SAAS7jD,KAAKmH,WAGpEs9C,WAAY,SAAUjgD,GAAV,GAGAvD,GAFJ4qB,EAAQ7rB,KAAKylD,cAAcjhD,EAAE2C,QAC7B0kB,KACI5qB,EAAU5D,KAAe2C,KAAKiB,QAASjB,KAAK2jD,gBAAgB93B,EAAM5qB,QAAQykD,UAC1EzkD,GAAWA,EAAQmjD,QAAU5/C,EAAE+U,MAC/BvZ,KAAKmmD,MAAM3hD,EAAE2C,QAAS0kB,EAAO5qB,EAASuD,EAAEuvC,eAAe,KAInEyS,SAAU,SAAUvlD,GAAV,GAEFjC,GAAOC,EAKPkX,EANA+uC,EAAQllD,KAAKilD,UAmBjB,OAjBAjlD,MAAKmH,QAAQqhB,KACTxpB,MAAO,OACPC,OAAQ,SAERkX,EAAU+uC,EAAM/uC,UACfA,GACD+uC,EAAMyB,QAAQT,OAElBlmD,KAAKmH,QAAQqhB,KACTxpB,MAAO6D,EAAQ5B,EAAQjC,OAASiC,EAAQjC,MAAQ,OAChDC,OAAQ4D,EAAQ5B,EAAQhC,QAAUgC,EAAQhC,OAAS,SAEvDD,EAAQmkD,EAAWnjD,KAAKmH,SACxBlI,EAASokD,EAAYrjD,KAAKmH,SACrBgP,GACD+uC,EAAMyB,QAAQP,QAGdpnD,MAAOA,EACPC,OAAQA,IAGhBg0C,YAAa,SAAUzuC,GAAV,GAEDkhD,GACAnmD,CAFJS,MAAKklD,QAAUllD,KAAK4mD,oBAAoBpiD,EAAEuvC,iBACtC2R,EAAU1lD,KACVT,EAAUmmD,EAAQ7H,SAClBt+C,GAAWA,EAAQ0B,QAAQojD,WAC3BqB,EAAQH,SAAWr/B,WAAW,WAC1Bo/B,aAAaI,EAAQW,cACrBX,EAAQU,QACT7mD,EAAQ0B,QAAQqjD,WAAa,MAI5CpR,WAAY,SAAU1uC,GAAV,GAGAvD,GAEImT,EAJR7U,EAAUS,KAAK69C,QACft+C,IAAWiF,EAAE2C,UACTlG,EAAU1B,EAAQ0B,QACE,UAApBA,EAAQmT,WACJA,EAAWpU,KAAK8lD,UAAUthD,EAAE2C,QAASlG,EAAS1B,EAAQuJ,YAAatE,EAAEuvC,eACzEx0C,EAAQ6U,SAAWA,EACnBpU,KAAKilD,WAAW0B,QAAQn+B,KACpBliB,KAAM8N,EAAS9N,KACfwB,IAAKsM,EAAStM,SAK9B68C,cAAe,SAAUngD,GACjBxE,KAAKklD,QAAUllD,KAAK4mD,oBAAoBpiD,KACxC8gD,aAAatlD,KAAKqmD,cAClBrmD,KAAKomD,SAGbQ,oBAAqB,SAAUpiD,GAC3B,MAAOA,GAAEqiD,eAAiBxqD,EAAEmI,EAAEqiD,eAAe3nC,QAAQlf,KAAKklD,MAAMyB,SAAS9nD,QAE7EmmD,cAAe,WAAA,GACPU,GAAU1lD,KACVT,EAAUmmD,EAAQ7H,QAClBt+C,IAAWA,EAAQ0B,QAAQojD,WAC3BqB,EAAQH,SAAWr/B,WAAW,WAC1Bw/B,EAAQU,QACT7mD,EAAQ0B,QAAQqjD,WAAa,MAI5CpnD,GAAMC,QAAQumD,eAAiBA,GACjCpmD,OAAOJ,MAAMK,SACC,kBAAVnB,SAAwBA,OAAOoB,IAAMpB,OAAS,SAAUqB,EAAIC,EAAIC,IACrEA,GAAMD,OAEV,SAAUvB,EAAGC,QACVA,OAAO,mBACH,wBACA,2BACDD,IACL,YACG,SAAUE,GAoHP,QAAS6X,GAAU8H,GACfhc,KAAKgmD,UAAU9xC,UAAU8H,GArHhC,GASOwkB,GARAtjC,EAAQI,OAAOJ,MACf0gB,EAAO1gB,EAAMC,QACb2pD,EAAiBlpC,EAAK4iB,QACtBumB,EAAS7pD,EAAMioD,GAAG4B,OAClB1pD,EAAaH,EAAMG,WACnBkmD,EAAQlnD,EAAEknD,KACdrmD,GAAM88B,QAAQ3d,IAAMyqC,EAAe9sB,QAAQ3d,IAC3Cnf,EAAM88B,QAAQ0G,OAASomB,EAAe9sB,QAAQ0G,OAC1CF,EAAUumB,EAAOlnD,QACjBC,KAAM,SAAUqH,EAASlG,GACrB8lD,EAAO97C,GAAGnL,KAAKse,KAAKpe,KAAMmH,MAC1BnH,KAAKiB,QAAU5D,KAAe2C,KAAKiB,QAASA,GAC5CjB,KAAKgmD,UAAYc,EAAexzC,OAAOtT,KAAKmH,QAAQ,GAAIlG,GACpDjB,KAAKgmD,UAAU9xC,YACflU,KAAKkU,UAAYA,GAErBlU,KAAKgnD,wBAA0BzD,EAAMvjD,KAAKinD,sBAAuBjnD,MACjEA,KAAKknD,aAAa,SAClBlnD,KAAKknD,aAAa,cAClBlnD,KAAKknD,aAAa,cAClBlnD,KAAKknD,aAAa,aAClBlnD,KAAKozC,mBAETnyC,SACIiI,KAAM,UACNw8C,YAEJt+C,QACI,QACA,aACA,aACA,YACA,SACA,cACA,gBAEJ6/C,sBAAuB,SAAUziD,GAC7BxE,KAAKkhC,QAAQ18B,EAAE+U,KAAM/U,IAEzB0iD,aAAc,SAAU9lB,GACpBphC,KAAKgmD,UAAU97C,KAAKk3B,EAAOphC,KAAKgnD,0BAEpCppC,KAAM,SAAUzW,GACZnH,KAAKgmD,UAAUpoC,KAAKzW,IAExBuc,MAAO,WACC1jB,KAAKgmD,WACLhmD,KAAKgmD,UAAUtiC,QAEnB1jB,KAAKmnD,eAETnqC,QAAS,WACDhd,KAAKgmD,YACLhmD,KAAKgmD,UAAUhpC,gBACRhd,MAAKgmD,WAEZhmD,KAAKonD,WACLpnD,KAAKonD,SAASpqC,gBACPhd,MAAKonD,UAEhBL,EAAO97C,GAAG+R,QAAQoB,KAAKpe,OAE3B+0B,aAAc,WACV,MAAO/0B,MAAKgmD,UAAUjxB,gBAE1Bue,YAAa,SAAU9uC,GACnB,MAAOxE,MAAKgmD,UAAU1S,YAAY9uC,IAEtC6iD,YAAa,SAAUx7B,EAAO5qB,GACtBjB,KAAKonD,UACLpnD,KAAKonD,SAASlB,KAAKr6B,EAAO5qB,IAGlCkmD,YAAa,WACLnnD,KAAKonD,UACLpnD,KAAKonD,SAAShB,QAGtBzoC,gBAAiB,WACb3d,KAAKgmD,UAAUroC,kBACf3d,KAAKmnD,eAETrT,eAAgB,WACZ9zC,KAAKgmD,UAAUlS,kBAEnBt2B,QAAS,WACL,OACIxe,MAAOgB,KAAKmH,QAAQnI,QACpBC,OAAQe,KAAKmH,QAAQlI,WAG7B+mC,QAAS,SAAUjmC,GACfC,KAAKmH,QAAQqhB,KACTxpB,MAAOe,EAAKf,MACZC,OAAQc,EAAKd,SAEjBe,KAAKC,MAAQF,EACbC,KAAKgmD,UAAUvS,YAAY1zC,GAC3BC,KAAK0zC,WAETA,QAAS,WACL1zC,KAAKgmD,UAAUvS,YAAYzzC,KAAKC,OAChCD,KAAKgmD,UAAUtS,WAEnBN,gBAAiB,WACTl2C,EAAMioD,GAAGC,QACTplD,KAAKonD,SAAW,GAAIxpC,GAAK8lC,eAAe1jD,KAAMA,KAAKiB,QAAQykD,iBAIvExoD,EAAMioD,GAAGmC,OAAO9mB,GAChBA,EAAQltB,OAAS,SAAUnM,EAASlG,GAChC,MAAO,IAAIu/B,GAAQr5B,EAASlG,IAEhC/D,EAAMC,QAAQqjC,QAAUA,GAI1BljC,OAAOJ,MAAMK,SACC,kBAAVnB,SAAwBA,OAAOoB,IAAMpB,OAAS,SAAUqB,EAAIC,EAAIC,IACrEA,GAAMD,OAEV,SAAUvB,EAAGC,QACVA,OAAO,gBAAiB,yBAA0BD,IACpD,YACG,SAAUE,GAAV,GACOa,GAAQI,OAAOJ,MACfC,EAAUD,EAAMC,QAChBmiB,EAAUniB,EAAQmiB,OACtBniB,GAAQmiB,QAAU,SAAUnY,EAASlG,GACjC,MAAOqe,GAAQjjB,EAAE8K,GAAS,GAAIlG,IAElC9D,EAAQmiB,QAAQ6G,SAAWhpB,EAAQgpB,SACnChpB,EAAQmiB,QAAQ6F,aAAehoB,EAAQgoB,cACzC7nB,OAAOJ,MAAMK,SACC,kBAAVnB,SAAwBA,OAAOoB,IAAMpB,OAAS,SAAUqB,EAAIC,EAAIC,IACrEA,GAAMD,OAEV,SAAUvB,EAAGC,QACVA,OAAO,iBACH,eACA,wBACA,0BACA,kBACA,gBACDD,IACL,aAYkB,kBAAVC,SAAwBA,OAAOoB,IAAMpB,OAAS,SAAUqB,EAAIC,EAAIC,IACrEA,GAAMD","file":"kendo.drawing.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('drawing/util', ['kendo.core'], f);\n}(function () {\n (function ($) {\n function createPromise() {\n return $.Deferred();\n }\n function promiseAll(promises) {\n return $.when.apply($, promises);\n }\n function extendStatic(dest, src) {\n if (!src) {\n return;\n }\n if (typeof src.__proto__ === 'function') {\n dest.__proto__ = src;\n } else {\n for (var member in src) {\n if (src.hasOwnProperty(member)) {\n dest[member] = src[member];\n }\n }\n }\n }\n kendo.drawing.util = kendo.drawing.util || {};\n kendo.deepExtend(kendo.drawing.util, {\n createPromise: createPromise,\n promiseAll: promiseAll,\n extendStatic: extendStatic\n });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('util/text-metrics', ['kendo.core'], f);\n}(function () {\n (function ($) {\n window.kendo.util = window.kendo.util || {};\n var LRUCache = kendo.Class.extend({\n init: function (size) {\n this._size = size;\n this._length = 0;\n this._map = {};\n },\n put: function (key, value) {\n var map = this._map;\n var entry = {\n key: key,\n value: value\n };\n map[key] = entry;\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n },\n get: function (key) {\n var entry = this._map[key];\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n entry.older = this._tail;\n entry.newer = null;\n this._tail.newer = entry;\n this._tail = entry;\n }\n return entry.value;\n }\n }\n });\n var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\n var SPACE = ' ';\n function normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n }\n function objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n return parts.sort().join('');\n }\n function hashKey(str) {\n var hash = 2166136261;\n for (var i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n return hash >>> 0;\n }\n function zeroSize() {\n return {\n width: 0,\n height: 0,\n baseline: 0\n };\n }\n var DEFAULT_OPTIONS = { baselineMarkerSize: 1 };\n var defaultMeasureBox;\n if (typeof document !== 'undefined') {\n defaultMeasureBox = document.createElement('div');\n defaultMeasureBox.style.cssText = 'position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;' + 'padding: 0 !important; margin: 0 !important; border: 0 !important;' + 'line-height: normal !important; visibility: hidden !important; white-space: pre!important;';\n }\n var TextMetrics = kendo.Class.extend({\n init: function (options) {\n this._cache = new LRUCache(1000);\n this.options = $.extend({}, DEFAULT_OPTIONS, options);\n },\n measure: function (text, style, options) {\n if (options === void 0) {\n options = {};\n }\n if (typeof text === 'undefined' || text === null) {\n return zeroSize();\n }\n var styleKey = objectKey(style);\n var cacheKey = hashKey(text + styleKey);\n var cachedResult = this._cache.get(cacheKey);\n if (cachedResult) {\n return cachedResult;\n }\n var size = zeroSize();\n var measureBox = options.box || defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n for (var key in style) {\n var value = style[key];\n if (typeof value !== 'undefined') {\n measureBox.style[key] = value;\n }\n }\n var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n measureBox.parentNode.removeChild(measureBox);\n return size;\n },\n _baselineMarker: function () {\n var marker = document.createElement('div');\n marker.style.cssText = 'display: inline-block; vertical-align: baseline;width: ' + this.options.baselineMarkerSize + 'px; height: ' + this.options.baselineMarkerSize + 'px;overflow: hidden;';\n return marker;\n }\n });\n TextMetrics.current = new TextMetrics();\n function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n }\n kendo.deepExtend(kendo.util, {\n LRUCache: LRUCache,\n TextMetrics: TextMetrics,\n measureText: measureText,\n objectKey: objectKey,\n hashKey: hashKey,\n normalizeText: normalizeText\n });\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('drawing/kendo-drawing', [\n 'drawing/util',\n 'kendo.color',\n 'util/text-metrics'\n ], f);\n}(function () {\n (function ($) {\n window.kendo = window.kendo || {};\n var kendoDrawing = kendo.drawing;\n var kendoDrawingUtil = kendoDrawing.util;\n var extendStatic = kendoDrawingUtil.extendStatic;\n var Class = kendo.Class;\n var kendoUtil = kendo.util;\n var support = kendo.support;\n var supportBrowser = support.browser;\n var createPromise = kendoDrawingUtil.createPromise;\n var promiseAll = kendoDrawingUtil.promiseAll;\n var HasObservers = function (Class$$1) {\n function HasObservers() {\n Class$$1.apply(this, arguments);\n }\n extendStatic(HasObservers, Class$$1);\n HasObservers.prototype = Object.create(Class$$1 && Class$$1.prototype);\n HasObservers.prototype.constructor = HasObservers;\n HasObservers.fn = HasObservers.prototype;\n HasObservers.fn.init = HasObservers.fn.constructor;\n HasObservers.prototype.observers = function observers() {\n this._observers = this._observers || [];\n return this._observers;\n };\n HasObservers.prototype.addObserver = function addObserver(element) {\n if (!this._observers) {\n this._observers = [element];\n } else {\n this._observers.push(element);\n }\n return this;\n };\n HasObservers.prototype.removeObserver = function removeObserver(element) {\n var observers = this.observers();\n var index = observers.indexOf(element);\n if (index !== -1) {\n observers.splice(index, 1);\n }\n return this;\n };\n HasObservers.prototype.trigger = function trigger(methodName, event) {\n var observers = this._observers;\n if (observers && !this._suspended) {\n for (var idx = 0; idx < observers.length; idx++) {\n var observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n };\n HasObservers.prototype.optionsChange = function optionsChange(e) {\n if (e === void 0) {\n e = {};\n }\n e.element = this;\n this.trigger('optionsChange', e);\n };\n HasObservers.prototype.geometryChange = function geometryChange() {\n this.trigger('geometryChange', { element: this });\n };\n HasObservers.prototype.suspend = function suspend() {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n };\n HasObservers.prototype.resume = function resume() {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n };\n HasObservers.prototype._observerField = function _observerField(field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n };\n return HasObservers;\n }(Class);\n function append$1$1(first, second) {\n first.push.apply(first, second);\n return first;\n }\n var literals = {\n 1: 'i',\n 10: 'x',\n 100: 'c',\n 2: 'ii',\n 20: 'xx',\n 200: 'cc',\n 3: 'iii',\n 30: 'xxx',\n 300: 'ccc',\n 4: 'iv',\n 40: 'xl',\n 400: 'cd',\n 5: 'v',\n 50: 'l',\n 500: 'd',\n 6: 'vi',\n 60: 'lx',\n 600: 'dc',\n 7: 'vii',\n 70: 'lxx',\n 700: 'dcc',\n 8: 'viii',\n 80: 'lxxx',\n 800: 'dccc',\n 9: 'ix',\n 90: 'xc',\n 900: 'cm',\n 1000: 'm'\n };\n function arabicToRoman(n) {\n var values = [\n 1000,\n 900,\n 800,\n 700,\n 600,\n 500,\n 400,\n 300,\n 200,\n 100,\n 90,\n 80,\n 70,\n 60,\n 50,\n 40,\n 30,\n 20,\n 10,\n 9,\n 8,\n 7,\n 6,\n 5,\n 4,\n 3,\n 2,\n 1\n ];\n var roman = '';\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n }\n var UNDEFINED = 'undefined';\n function defined(value) {\n return typeof value !== UNDEFINED;\n }\n var defId = 1;\n function definitionId() {\n return 'kdef' + defId++;\n }\n var DEG_TO_RAD = Math.PI / 180;\n var MAX_NUM = Number.MAX_VALUE;\n var MIN_NUM = -Number.MAX_VALUE;\n function deg(radians) {\n return radians / DEG_TO_RAD;\n }\n var fromCharCode = String.fromCharCode;\n function encodeUTF8(input) {\n var output = '';\n for (var i = 0; i < input.length; i++) {\n var code = input.charCodeAt(i);\n if (55296 <= code && code <= 56319) {\n var hi = code;\n var low = input.charCodeAt(++i);\n if (!isNaN(low)) {\n code = (hi - 55296) * 1024 + (low - 56320) + 65536;\n }\n }\n if (code < 128) {\n output += fromCharCode(code);\n } else if (code < 2048) {\n output += fromCharCode(192 | code >>> 6);\n output += fromCharCode(128 | code & 63);\n } else if (code < 65536) {\n output += fromCharCode(224 | code >>> 12);\n output += fromCharCode(128 | code >>> 6 & 63);\n output += fromCharCode(128 | code & 63);\n } else if (code < 1114111) {\n output += fromCharCode(240 | code >>> 18);\n output += fromCharCode(128 | code >>> 12 & 63);\n output += fromCharCode(128 | code >>> 6 & 63);\n output += fromCharCode(128 | code & 63);\n }\n }\n return output;\n }\n var KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n function encodeBase64(input) {\n var output = '';\n var i = 0;\n var utfInput = encodeUTF8(input);\n while (i < utfInput.length) {\n var chr1 = utfInput.charCodeAt(i++);\n var chr2 = utfInput.charCodeAt(i++);\n var chr3 = utfInput.charCodeAt(i++);\n var enc1 = chr1 >> 2;\n var enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n var enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n var enc4 = chr3 & 63;\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n output = output + KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) + KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n return output;\n }\n function eventCoordinates(e) {\n if (defined((e.x || {}).location)) {\n return {\n x: e.x.location,\n y: e.y.location\n };\n }\n return {\n x: e.pageX || e.clientX || 0,\n y: e.pageY || e.clientY || 0\n };\n }\n function eventElement(e) {\n if (e === void 0) {\n e = {};\n }\n return e.touch ? e.touch.initialTouch : e.target;\n }\n function isTransparent(color) {\n return color === '' || color === null || color === 'none' || color === 'transparent' || !defined(color);\n }\n function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n }\n function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n }\n function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n }(a);\n }\n var now = Date.now || function () {\n return new Date().getTime();\n };\n function rad(degrees) {\n return degrees * DEG_TO_RAD;\n }\n function pow(p) {\n if (p) {\n return Math.pow(10, p);\n }\n return 1;\n }\n function round(value, precision) {\n var power = pow(precision);\n return Math.round(value * power) / power;\n }\n function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n }\n function bindEvents(element, events) {\n for (var eventName in events) {\n var eventNames = eventName.trim().split(' ');\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.addEventListener(eventNames[idx], events[eventName], false);\n }\n }\n }\n function elementOffset(element) {\n var box = element.getBoundingClientRect();\n var documentElement = document.documentElement;\n return {\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0),\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0)\n };\n }\n function elementStyles(element, styles) {\n var result = {};\n var style = window.getComputedStyle(element) || {};\n var stylesArray = Array.isArray(styles) ? styles : [styles];\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var field = stylesArray[idx];\n result[field] = style[field];\n }\n return result;\n }\n function getPixels(value) {\n if (isNaN(value)) {\n return value;\n }\n return value + 'px';\n }\n function elementSize(element, size) {\n if (size) {\n var width = size.width;\n var height = size.height;\n if (defined(width)) {\n element.style.width = getPixels(width);\n }\n if (defined(height)) {\n element.style.height = getPixels(height);\n }\n } else {\n var size$1 = elementStyles(element, [\n 'width',\n 'height'\n ]);\n return {\n width: parseInt(size$1.width, 10),\n height: parseInt(size$1.height, 10)\n };\n }\n }\n function unbindEvents(element, events) {\n if (events === void 0) {\n events = {};\n }\n for (var name in events) {\n var eventNames = name.trim().split(' ');\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.removeEventListener(eventNames[idx], events[name], false);\n }\n }\n }\n function elementPadding(element) {\n var ref = elementStyles(element, [\n 'paddingLeft',\n 'paddingTop'\n ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n return {\n top: parseFloat(paddingTop),\n left: parseFloat(paddingLeft)\n };\n }\n var Matrix = function (Class$$1) {\n function Matrix(a, b, c, d, e, f) {\n if (a === void 0) {\n a = 0;\n }\n if (b === void 0) {\n b = 0;\n }\n if (c === void 0) {\n c = 0;\n }\n if (d === void 0) {\n d = 0;\n }\n if (e === void 0) {\n e = 0;\n }\n if (f === void 0) {\n f = 0;\n }\n Class$$1.call(this);\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.e = e;\n this.f = f;\n }\n extendStatic(Matrix, Class$$1);\n Matrix.prototype = Object.create(Class$$1 && Class$$1.prototype);\n Matrix.prototype.constructor = Matrix;\n Matrix.fn = Matrix.prototype;\n Matrix.fn.init = Matrix.fn.constructor;\n Matrix.prototype.multiplyCopy = function multiplyCopy(matrix) {\n return new Matrix(this.a * matrix.a + this.c * matrix.b, this.b * matrix.a + this.d * matrix.b, this.a * matrix.c + this.c * matrix.d, this.b * matrix.c + this.d * matrix.d, this.a * matrix.e + this.c * matrix.f + this.e, this.b * matrix.e + this.d * matrix.f + this.f);\n };\n Matrix.prototype.invert = function invert() {\n var ref = this;\n var a = ref.a;\n var b = ref.b;\n var d = ref.c;\n var e = ref.d;\n var g = ref.e;\n var h = ref.f;\n var det = a * e - b * d;\n if (det === 0) {\n return null;\n }\n return new Matrix(e / det, -b / det, -d / det, a / det, (d * h - e * g) / det, (b * g - a * h) / det);\n };\n Matrix.prototype.clone = function clone() {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n };\n Matrix.prototype.equals = function equals(other) {\n if (!other) {\n return false;\n }\n return this.a === other.a && this.b === other.b && this.c === other.c && this.d === other.d && this.e === other.e && this.f === other.f;\n };\n Matrix.prototype.round = function round$1(precision) {\n this.a = round(this.a, precision);\n this.b = round(this.b, precision);\n this.c = round(this.c, precision);\n this.d = round(this.d, precision);\n this.e = round(this.e, precision);\n this.f = round(this.f, precision);\n return this;\n };\n Matrix.prototype.toArray = function toArray(precision) {\n var result = [\n this.a,\n this.b,\n this.c,\n this.d,\n this.e,\n this.f\n ];\n if (defined(precision)) {\n for (var i = 0; i < result.length; i++) {\n result[i] = round(result[i], precision);\n }\n }\n return result;\n };\n Matrix.prototype.toString = function toString(precision, separator) {\n if (separator === void 0) {\n separator = ',';\n }\n return this.toArray(precision).join(separator);\n };\n Matrix.translate = function translate(x, y) {\n return new Matrix(1, 0, 0, 1, x, y);\n };\n Matrix.unit = function unit() {\n return new Matrix(1, 0, 0, 1, 0, 0);\n };\n Matrix.rotate = function rotate(angle, x, y) {\n var matrix = new Matrix();\n matrix.a = Math.cos(rad(angle));\n matrix.b = Math.sin(rad(angle));\n matrix.c = -matrix.b;\n matrix.d = matrix.a;\n matrix.e = x - x * matrix.a + y * matrix.b || 0;\n matrix.f = y - y * matrix.a - x * matrix.b || 0;\n return matrix;\n };\n Matrix.scale = function scale(scaleX, scaleY) {\n return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n };\n return Matrix;\n }(Class);\n Matrix.IDENTITY = Matrix.unit();\n var matrixRegexp = /matrix\\((.*)\\)/;\n function parseMatrix(matrixString) {\n var match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n var members = match[1].split(',').map(function (x) {\n return parseFloat(x);\n });\n return new (Function.prototype.bind.apply(Matrix, [null].concat(members)))();\n }\n function transformMatrix(element) {\n var transform = getComputedStyle(element).transform;\n if (transform === 'none') {\n return Matrix.unit();\n }\n return parseMatrix(transform);\n }\n function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n var matrix = transformMatrix(element);\n var parent = element.parentElement;\n while (parent) {\n var parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n }\n var util = {\n append: append$1$1,\n arabicToRoman: arabicToRoman,\n createPromise: createPromise,\n defined: defined,\n definitionId: definitionId,\n deg: deg,\n encodeBase64: encodeBase64,\n eventCoordinates: eventCoordinates,\n eventElement: eventElement,\n isTransparent: isTransparent,\n last: last,\n limitValue: limitValue,\n mergeSort: mergeSort,\n now: now,\n promiseAll: promiseAll,\n rad: rad,\n round: round,\n valueOrDefault: valueOrDefault,\n bindEvents: bindEvents,\n elementOffset: elementOffset,\n elementSize: elementSize,\n elementStyles: elementStyles,\n unbindEvents: unbindEvents,\n elementPadding: elementPadding,\n elementScale: elementScale,\n DEG_TO_RAD: DEG_TO_RAD,\n MAX_NUM: MAX_NUM,\n MIN_NUM: MIN_NUM\n };\n var toString$1 = {}.toString;\n var OptionsStore = function (HasObservers$$1) {\n function OptionsStore(options, prefix) {\n var this$1 = this;\n if (prefix === void 0) {\n prefix = '';\n }\n HasObservers$$1.call(this);\n this.prefix = prefix;\n for (var field in options) {\n var member = options[field];\n member = this$1._wrap(member, field);\n this$1[field] = member;\n }\n }\n extendStatic(OptionsStore, HasObservers$$1);\n OptionsStore.prototype = Object.create(HasObservers$$1 && HasObservers$$1.prototype);\n OptionsStore.prototype.constructor = OptionsStore;\n OptionsStore.fn = OptionsStore.prototype;\n OptionsStore.fn.init = OptionsStore.fn.constructor;\n OptionsStore.prototype.get = function get(field) {\n var parts = field.split('.');\n var result = this;\n while (parts.length && result) {\n var part = parts.shift();\n result = result[part];\n }\n return result;\n };\n OptionsStore.prototype.set = function set(field, value) {\n var current = this.get(field);\n if (current !== value) {\n this._set(field, this._wrap(value, field));\n this.optionsChange({\n field: this.prefix + field,\n value: value\n });\n }\n };\n OptionsStore.prototype._set = function _set(field, value) {\n var this$1 = this;\n var composite = field.indexOf('.') >= 0;\n var parentObj = this;\n var fieldName = field;\n if (composite) {\n var parts = fieldName.split('.');\n var prefix = this.prefix;\n while (parts.length > 1) {\n fieldName = parts.shift();\n prefix += fieldName + '.';\n var obj = parentObj[fieldName];\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this$1);\n parentObj[fieldName] = obj;\n }\n parentObj = obj;\n }\n fieldName = parts[0];\n }\n parentObj._clear(fieldName);\n parentObj[fieldName] = value;\n };\n OptionsStore.prototype._clear = function _clear(field) {\n var current = this[field];\n if (current && current.removeObserver) {\n current.removeObserver(this);\n }\n };\n OptionsStore.prototype._wrap = function _wrap(object, field) {\n var type = toString$1.call(object);\n var wrapped = object;\n if (wrapped !== null && defined(wrapped) && type === '[object Object]') {\n if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n wrapped = new OptionsStore(wrapped, this.prefix + field + '.');\n }\n wrapped.addObserver(this);\n }\n return wrapped;\n };\n return OptionsStore;\n }(HasObservers);\n function setAccessor(field) {\n return function (value) {\n if (this[field] !== value) {\n this[field] = value;\n this.geometryChange();\n }\n return this;\n };\n }\n function getAccessor(field) {\n return function () {\n return this[field];\n };\n }\n function defineAccessors(fn, fields) {\n for (var i = 0; i < fields.length; i++) {\n var name = fields[i];\n var capitalized = name.charAt(0).toUpperCase() + name.substring(1, name.length);\n fn['set' + capitalized] = setAccessor(name);\n fn['get' + capitalized] = getAccessor(name);\n }\n }\n var withAccessors = function (TBase, names) {\n var result = function (TBase) {\n function result() {\n TBase.apply(this, arguments);\n }\n extendStatic(result, TBase);\n result.prototype = Object.create(TBase && TBase.prototype);\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n return result;\n }(TBase);\n defineAccessors(result.prototype, names);\n return result;\n };\n function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === 'function') {\n return transformation.matrix();\n }\n return transformation;\n }\n var Point = function (superclass) {\n function Point(x, y) {\n superclass.call(this);\n this.x = x || 0;\n this.y = y || 0;\n }\n extendStatic(Point, superclass);\n Point.prototype = Object.create(superclass && superclass.prototype);\n Point.prototype.constructor = Point;\n Point.fn = Point.prototype;\n Point.fn.init = Point.fn.constructor;\n var staticAccessors = { ZERO: {} };\n Point.prototype.equals = function equals(other) {\n return other && other.x === this.x && other.y === this.y;\n };\n Point.prototype.clone = function clone() {\n return new Point(this.x, this.y);\n };\n Point.prototype.rotate = function rotate(angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n };\n Point.prototype.translate = function translate(x, y) {\n this.x += x;\n this.y += y;\n this.geometryChange();\n return this;\n };\n Point.prototype.translateWith = function translateWith(point) {\n return this.translate(point.x, point.y);\n };\n Point.prototype.move = function move(x, y) {\n this.x = this.y = 0;\n return this.translate(x, y);\n };\n Point.prototype.scale = function scale(scaleX, scaleY) {\n if (scaleY === void 0) {\n scaleY = scaleX;\n }\n this.x *= scaleX;\n this.y *= scaleY;\n this.geometryChange();\n return this;\n };\n Point.prototype.scaleCopy = function scaleCopy(scaleX, scaleY) {\n return this.clone().scale(scaleX, scaleY);\n };\n Point.prototype.transform = function transform(transformation) {\n var matrix = toMatrix(transformation);\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n this.x = matrix.a * x + matrix.c * y + matrix.e;\n this.y = matrix.b * x + matrix.d * y + matrix.f;\n this.geometryChange();\n return this;\n };\n Point.prototype.transformCopy = function transformCopy(transformation) {\n var point = this.clone();\n if (transformation) {\n point.transform(transformation);\n }\n return point;\n };\n Point.prototype.distanceTo = function distanceTo(point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n return Math.sqrt(dx * dx + dy * dy);\n };\n Point.prototype.round = function round$1(digits) {\n this.x = round(this.x, digits);\n this.y = round(this.y, digits);\n this.geometryChange();\n return this;\n };\n Point.prototype.toArray = function toArray(digits) {\n var doRound = defined(digits);\n var x = doRound ? round(this.x, digits) : this.x;\n var y = doRound ? round(this.y, digits) : this.y;\n return [\n x,\n y\n ];\n };\n Point.prototype.toString = function toString(digits, separator) {\n if (separator === void 0) {\n separator = ' ';\n }\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n if (defined(digits)) {\n x = round(x, digits);\n y = round(y, digits);\n }\n return x + separator + y;\n };\n Point.create = function create(arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Point) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Point(arg0[0], arg0[1]);\n }\n return new Point(arg0, arg1);\n }\n };\n Point.min = function min() {\n var arguments$1 = arguments;\n var minX = MAX_NUM;\n var minY = MAX_NUM;\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n minX = Math.min(point.x, minX);\n minY = Math.min(point.y, minY);\n }\n return new Point(minX, minY);\n };\n Point.max = function max() {\n var arguments$1 = arguments;\n var maxX = MIN_NUM;\n var maxY = MIN_NUM;\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n maxX = Math.max(point.x, maxX);\n maxY = Math.max(point.y, maxY);\n }\n return new Point(maxX, maxY);\n };\n Point.minPoint = function minPoint() {\n return new Point(MIN_NUM, MIN_NUM);\n };\n Point.maxPoint = function maxPoint() {\n return new Point(MAX_NUM, MAX_NUM);\n };\n staticAccessors.ZERO.get = function () {\n return new Point(0, 0);\n };\n Object.defineProperties(Point, staticAccessors);\n return Point;\n }(withAccessors(HasObservers, [\n 'x',\n 'y'\n ]));\n var Size = function (superclass) {\n function Size(width, height) {\n superclass.call(this);\n this.width = width || 0;\n this.height = height || 0;\n }\n extendStatic(Size, superclass);\n Size.prototype = Object.create(superclass && superclass.prototype);\n Size.prototype.constructor = Size;\n Size.fn = Size.prototype;\n Size.fn.init = Size.fn.constructor;\n var staticAccessors = { ZERO: {} };\n Size.prototype.equals = function equals(other) {\n return other && other.width === this.width && other.height === this.height;\n };\n Size.prototype.clone = function clone() {\n return new Size(this.width, this.height);\n };\n Size.prototype.toArray = function toArray(digits) {\n var doRound = defined(digits);\n var width = doRound ? round(this.width, digits) : this.width;\n var height = doRound ? round(this.height, digits) : this.height;\n return [\n width,\n height\n ];\n };\n Size.create = function create(arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Size) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Size(arg0[0], arg0[1]);\n }\n return new Size(arg0, arg1);\n }\n };\n staticAccessors.ZERO.get = function () {\n return new Size(0, 0);\n };\n Object.defineProperties(Size, staticAccessors);\n return Size;\n }(withAccessors(HasObservers, [\n 'width',\n 'height'\n ]));\n var Rect = function (HasObservers$$1) {\n function Rect(origin, size, cornerRadius) {\n if (origin === void 0) {\n origin = new Point();\n }\n if (size === void 0) {\n size = new Size();\n }\n if (cornerRadius === void 0) {\n cornerRadius = 0;\n }\n HasObservers$$1.call(this);\n this.setOrigin(origin);\n this.setSize(size);\n this.setCornerRadius(cornerRadius);\n }\n extendStatic(Rect, HasObservers$$1);\n Rect.prototype = Object.create(HasObservers$$1 && HasObservers$$1.prototype);\n Rect.prototype.constructor = Rect;\n Rect.fn = Rect.prototype;\n Rect.fn.init = Rect.fn.constructor;\n Rect.prototype.clone = function clone() {\n return new Rect(this.origin.clone(), this.size.clone());\n };\n Rect.prototype.equals = function equals(other) {\n return other && other.origin.equals(this.origin) && other.size.equals(this.size);\n };\n Rect.prototype.setOrigin = function setOrigin(value) {\n this._observerField('origin', Point.create(value));\n this.geometryChange();\n return this;\n };\n Rect.prototype.getOrigin = function getOrigin() {\n return this.origin;\n };\n Rect.prototype.setCornerRadius = function setCornerRadius(radius) {\n this.cornerRadius = Array.isArray(radius) ? radius : [\n radius,\n radius\n ];\n this.geometryChange();\n return this;\n };\n Rect.prototype.getCornerRadius = function getCornerRadius() {\n return this.cornerRadius;\n };\n Rect.prototype.setSize = function setSize(value) {\n this._observerField('size', Size.create(value));\n this.geometryChange();\n return this;\n };\n Rect.prototype.getSize = function getSize() {\n return this.size;\n };\n Rect.prototype.width = function width() {\n return this.size.width;\n };\n Rect.prototype.height = function height() {\n return this.size.height;\n };\n Rect.prototype.topLeft = function topLeft() {\n return this.origin.clone();\n };\n Rect.prototype.bottomRight = function bottomRight() {\n return this.origin.clone().translate(this.width(), this.height());\n };\n Rect.prototype.topRight = function topRight() {\n return this.origin.clone().translate(this.width(), 0);\n };\n Rect.prototype.bottomLeft = function bottomLeft() {\n return this.origin.clone().translate(0, this.height());\n };\n Rect.prototype.center = function center() {\n return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n };\n Rect.prototype.bbox = function bbox(matrix) {\n var tl = this.topLeft().transformCopy(matrix);\n var tr = this.topRight().transformCopy(matrix);\n var br = this.bottomRight().transformCopy(matrix);\n var bl = this.bottomLeft().transformCopy(matrix);\n return Rect.fromPoints(tl, tr, br, bl);\n };\n Rect.prototype.transformCopy = function transformCopy(m) {\n return Rect.fromPoints(this.topLeft().transform(m), this.bottomRight().transform(m));\n };\n Rect.prototype.expand = function expand(x, y) {\n if (y === void 0) {\n y = x;\n }\n this.size.width += 2 * x;\n this.size.height += 2 * y;\n this.origin.translate(-x, -y);\n return this;\n };\n Rect.prototype.expandCopy = function expandCopy(x, y) {\n return this.clone().expand(x, y);\n };\n Rect.prototype.containsPoint = function containsPoint(point) {\n var origin = this.origin;\n var bottomRight = this.bottomRight();\n return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n };\n Rect.prototype._isOnPath = function _isOnPath(point, width) {\n var rectOuter = this.expandCopy(width, width);\n var rectInner = this.expandCopy(-width, -width);\n return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n };\n Rect.fromPoints = function fromPoints() {\n var topLeft = Point.min.apply(null, arguments);\n var bottomRight = Point.max.apply(null, arguments);\n var size = new Size(bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);\n return new Rect(topLeft, size);\n };\n Rect.union = function union(a, b) {\n return Rect.fromPoints(Point.min(a.topLeft(), b.topLeft()), Point.max(a.bottomRight(), b.bottomRight()));\n };\n Rect.intersect = function intersect(a, b) {\n var rect1 = {\n left: a.topLeft().x,\n top: a.topLeft().y,\n right: a.bottomRight().x,\n bottom: a.bottomRight().y\n };\n var rect2 = {\n left: b.topLeft().x,\n top: b.topLeft().y,\n right: b.bottomRight().x,\n bottom: b.bottomRight().y\n };\n if (rect1.left <= rect2.right && rect2.left <= rect1.right && rect1.top <= rect2.bottom && rect2.top <= rect1.bottom) {\n return Rect.fromPoints(new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)), new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom)));\n }\n };\n return Rect;\n }(HasObservers);\n var Transformation = function (HasObservers$$1) {\n function Transformation(matrix) {\n if (matrix === void 0) {\n matrix = Matrix.unit();\n }\n HasObservers$$1.call(this);\n this._matrix = matrix;\n }\n extendStatic(Transformation, HasObservers$$1);\n Transformation.prototype = Object.create(HasObservers$$1 && HasObservers$$1.prototype);\n Transformation.prototype.constructor = Transformation;\n Transformation.fn = Transformation.prototype;\n Transformation.fn.init = Transformation.fn.constructor;\n Transformation.prototype.clone = function clone() {\n return new Transformation(this._matrix.clone());\n };\n Transformation.prototype.equals = function equals(other) {\n return other && other._matrix.equals(this._matrix);\n };\n Transformation.prototype.translate = function translate(x, y) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n this._optionsChange();\n return this;\n };\n Transformation.prototype.scale = function scale(scaleX, scaleY, origin) {\n if (scaleY === void 0) {\n scaleY = scaleX;\n }\n if (origin === void 0) {\n origin = null;\n }\n var originPoint = origin;\n if (originPoint) {\n originPoint = Point.create(originPoint);\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n }\n this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n if (originPoint) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n }\n this._optionsChange();\n return this;\n };\n Transformation.prototype.rotate = function rotate(angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n this._optionsChange();\n return this;\n };\n Transformation.prototype.multiply = function multiply(transformation) {\n var matrix = toMatrix(transformation);\n this._matrix = this._matrix.multiplyCopy(matrix);\n this._optionsChange();\n return this;\n };\n Transformation.prototype.matrix = function matrix(value) {\n if (value) {\n this._matrix = value;\n this._optionsChange();\n return this;\n }\n return this._matrix;\n };\n Transformation.prototype._optionsChange = function _optionsChange() {\n this.optionsChange({\n field: 'transform',\n value: this\n });\n };\n return Transformation;\n }(HasObservers);\n function transform$1(matrix) {\n if (matrix === null) {\n return null;\n }\n if (matrix instanceof Transformation) {\n return matrix;\n }\n return new Transformation(matrix);\n }\n var Element$1 = function (HasObservers$$1) {\n function Element(options) {\n HasObservers$$1.call(this);\n this._initOptions(options);\n }\n extendStatic(Element, HasObservers$$1);\n Element.prototype = Object.create(HasObservers$$1 && HasObservers$$1.prototype);\n Element.prototype.constructor = Element;\n Element.fn = Element.prototype;\n Element.fn.init = Element.fn.constructor;\n var prototypeAccessors = { nodeType: {} };\n prototypeAccessors.nodeType.get = function () {\n return 'Rect';\n };\n Element.prototype._initOptions = function _initOptions(options) {\n if (options === void 0) {\n options = {};\n }\n var clip = options.clip;\n var transform = options.transform;\n if (transform) {\n options.transform = transform$1(transform);\n }\n if (clip && !clip.id) {\n clip.id = definitionId();\n }\n this.options = new OptionsStore(options);\n this.options.addObserver(this);\n };\n Element.prototype.transform = function transform(value) {\n if (defined(value)) {\n this.options.set('transform', transform$1(value));\n } else {\n return this.options.get('transform');\n }\n };\n Element.prototype.parentTransform = function parentTransform() {\n var element = this;\n var parentMatrix;\n while (element.parent) {\n element = element.parent;\n var transformation = element.transform();\n if (transformation) {\n parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n }\n }\n if (parentMatrix) {\n return transform$1(parentMatrix);\n }\n };\n Element.prototype.currentTransform = function currentTransform(parentTransform) {\n if (parentTransform === void 0) {\n parentTransform = this.parentTransform();\n }\n var elementTransform = this.transform();\n var elementMatrix = toMatrix(elementTransform);\n var parentMatrix = toMatrix(parentTransform);\n var combinedMatrix;\n if (elementMatrix && parentMatrix) {\n combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n } else {\n combinedMatrix = elementMatrix || parentMatrix;\n }\n if (combinedMatrix) {\n return transform$1(combinedMatrix);\n }\n };\n Element.prototype.visible = function visible(value) {\n if (defined(value)) {\n this.options.set('visible', value);\n return this;\n }\n return this.options.get('visible') !== false;\n };\n Element.prototype.clip = function clip(value) {\n var options = this.options;\n if (defined(value)) {\n if (value && !value.id) {\n value.id = definitionId();\n }\n options.set('clip', value);\n return this;\n }\n return options.get('clip');\n };\n Element.prototype.opacity = function opacity(value) {\n if (defined(value)) {\n this.options.set('opacity', value);\n return this;\n }\n return valueOrDefault(this.options.get('opacity'), 1);\n };\n Element.prototype.clippedBBox = function clippedBBox(transformation) {\n var bbox = this._clippedBBox(transformation);\n if (bbox) {\n var clip = this.clip();\n return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n }\n };\n Element.prototype.containsPoint = function containsPoint(point, parentTransform) {\n if (this.visible()) {\n var transform = this.currentTransform(parentTransform);\n var transformedPoint = point;\n if (transform) {\n transformedPoint = point.transformCopy(transform.matrix().invert());\n }\n return this._hasFill() && this._containsPoint(transformedPoint) || this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint);\n }\n return false;\n };\n Element.prototype._hasFill = function _hasFill() {\n var fill = this.options.fill;\n return fill && !isTransparent(fill.color);\n };\n Element.prototype._hasStroke = function _hasStroke() {\n var stroke = this.options.stroke;\n return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n };\n Element.prototype._clippedBBox = function _clippedBBox(transformation) {\n return this.bbox(transformation);\n };\n Object.defineProperties(Element.prototype, prototypeAccessors);\n return Element;\n }(HasObservers);\n function ellipseExtremeAngles(center, rx, ry, matrix) {\n var extremeX = 0;\n var extremeY = 0;\n if (matrix) {\n extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n if (matrix.b !== 0) {\n extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n }\n }\n return {\n x: extremeX,\n y: extremeY\n };\n }\n var PI_DIV_2 = Math.PI / 2;\n var Circle$2 = function (superclass) {\n function Circle(center, radius) {\n if (center === void 0) {\n center = new Point();\n }\n if (radius === void 0) {\n radius = 0;\n }\n superclass.call(this);\n this.setCenter(center);\n this.setRadius(radius);\n }\n extendStatic(Circle, superclass);\n Circle.prototype = Object.create(superclass && superclass.prototype);\n Circle.prototype.constructor = Circle;\n Circle.fn = Circle.prototype;\n Circle.fn.init = Circle.fn.constructor;\n Circle.prototype.setCenter = function setCenter(value) {\n this._observerField('center', Point.create(value));\n this.geometryChange();\n return this;\n };\n Circle.prototype.getCenter = function getCenter() {\n return this.center;\n };\n Circle.prototype.equals = function equals(other) {\n return other && other.center.equals(this.center) && other.radius === this.radius;\n };\n Circle.prototype.clone = function clone() {\n return new Circle(this.center.clone(), this.radius);\n };\n Circle.prototype.pointAt = function pointAt(angle) {\n return this._pointAt(rad(angle));\n };\n Circle.prototype.bbox = function bbox(matrix) {\n var this$1 = this;\n var extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n var minPoint = Point.maxPoint();\n var maxPoint = Point.minPoint();\n for (var i = 0; i < 4; i++) {\n var currentPointX = this$1._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n var currentPointY = this$1._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n var currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n return Rect.fromPoints(minPoint, maxPoint);\n };\n Circle.prototype._pointAt = function _pointAt(angle) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n return new Point(center.x + radius * Math.cos(angle), center.y + radius * Math.sin(angle));\n };\n Circle.prototype.containsPoint = function containsPoint(point) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var inCircle = Math.pow(point.x - center.x, 2) + Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n return inCircle;\n };\n Circle.prototype._isOnPath = function _isOnPath(point, width) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var pointDistance = center.distanceTo(point);\n return radius - width <= pointDistance && pointDistance <= radius + width;\n };\n return Circle;\n }(withAccessors(HasObservers, ['radius']));\n var GRADIENT = 'Gradient';\n var paintable = function (TBase) {\n return function (TBase) {\n function anonymous() {\n TBase.apply(this, arguments);\n }\n extendStatic(anonymous, TBase);\n anonymous.prototype = Object.create(TBase && TBase.prototype);\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n anonymous.prototype.fill = function fill(color, opacity) {\n var options = this.options;\n if (defined(color)) {\n if (color && color.nodeType !== GRADIENT) {\n var newFill = { color: color };\n if (defined(opacity)) {\n newFill.opacity = opacity;\n }\n options.set('fill', newFill);\n } else {\n options.set('fill', color);\n }\n return this;\n }\n return options.get('fill');\n };\n anonymous.prototype.stroke = function stroke(color, width, opacity) {\n if (defined(color)) {\n this.options.set('stroke.color', color);\n if (defined(width)) {\n this.options.set('stroke.width', width);\n }\n if (defined(opacity)) {\n this.options.set('stroke.opacity', opacity);\n }\n return this;\n }\n return this.options.get('stroke');\n };\n return anonymous;\n }(TBase);\n };\n var IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n var measurable = function (TBase) {\n return function (TBase) {\n function anonymous() {\n TBase.apply(this, arguments);\n }\n extendStatic(anonymous, TBase);\n anonymous.prototype = Object.create(TBase && TBase.prototype);\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n anonymous.prototype.bbox = function bbox(transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n var matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n var bbox;\n if (this._bboxCache && this._matrixHash === matrixHash) {\n bbox = this._bboxCache.clone();\n } else {\n bbox = this._bbox(combinedMatrix);\n this._bboxCache = bbox ? bbox.clone() : null;\n this._matrixHash = matrixHash;\n }\n var strokeWidth = this.options.get('stroke.width');\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n return bbox;\n };\n anonymous.prototype.geometryChange = function geometryChange() {\n delete this._bboxCache;\n this.trigger('geometryChange', { element: this });\n };\n return anonymous;\n }(TBase);\n };\n function geometryAccessor(name) {\n var fieldName = '_' + name;\n return function (value) {\n if (defined(value)) {\n this._observerField(fieldName, value);\n this.geometryChange();\n return this;\n }\n return this[fieldName];\n };\n }\n function defineGeometryAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n }\n var withGeometry = function (TBase, names) {\n if (names === void 0) {\n names = ['geometry'];\n }\n var result = function (TBase) {\n function result() {\n TBase.apply(this, arguments);\n }\n extendStatic(result, TBase);\n result.prototype = Object.create(TBase && TBase.prototype);\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n return result;\n }(TBase);\n defineGeometryAccessors(result.prototype, names);\n return result;\n };\n var DEFAULT_STROKE = '#000';\n var Circle = function (superclass) {\n function Circle(geometry, options) {\n if (geometry === void 0) {\n geometry = new Circle$2();\n }\n if (options === void 0) {\n options = {};\n }\n superclass.call(this, options);\n this.geometry(geometry);\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n extendStatic(Circle, superclass);\n Circle.prototype = Object.create(superclass && superclass.prototype);\n Circle.prototype.constructor = Circle;\n Circle.fn = Circle.prototype;\n Circle.fn.init = Circle.fn.constructor;\n var prototypeAccessors = { nodeType: {} };\n prototypeAccessors.nodeType.get = function () {\n return 'Circle';\n };\n Circle.prototype.rawBBox = function rawBBox() {\n return this._geometry.bbox();\n };\n Circle.prototype._bbox = function _bbox(matrix) {\n return this._geometry.bbox(matrix);\n };\n Circle.prototype._containsPoint = function _containsPoint(point) {\n return this.geometry().containsPoint(point);\n };\n Circle.prototype._isOnPath = function _isOnPath(point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n Object.defineProperties(Circle.prototype, prototypeAccessors);\n return Circle;\n }(paintable(measurable(withGeometry(Element$1))));\n var PRECISION = 10;\n function close$1(a, b, tolerance) {\n if (tolerance === void 0) {\n tolerance = PRECISION;\n }\n return round(Math.abs(a - b), tolerance) === 0;\n }\n function closeOrLess(a, b, tolerance) {\n return a < b || close$1(a, b, tolerance);\n }\n function lineIntersection(p0, p1, p2, p3) {\n var s1x = p1.x - p0.x;\n var s2x = p3.x - p2.x;\n var s1y = p1.y - p0.y;\n var s2y = p3.y - p2.y;\n var nx = p0.x - p2.x;\n var ny = p0.y - p2.y;\n var d = s1x * s2y - s2x * s1y;\n var s = (s1x * ny - s1y * nx) / d;\n var t = (s2x * ny - s2y * nx) / d;\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return new Point(p0.x + t * s1x, p0.y + t * s1y);\n }\n }\n var MAX_INTERVAL = 45;\n var pow$1 = Math.pow;\n var accessors = [\n 'radiusX',\n 'radiusY',\n 'startAngle',\n 'endAngle',\n 'anticlockwise'\n ];\n var Arc$2 = function (superclass) {\n function Arc(center, options) {\n if (center === void 0) {\n center = new Point();\n }\n if (options === void 0) {\n options = {};\n }\n superclass.call(this);\n this.setCenter(center);\n this.radiusX = options.radiusX;\n this.radiusY = options.radiusY || options.radiusX;\n this.startAngle = options.startAngle;\n this.endAngle = options.endAngle;\n this.anticlockwise = options.anticlockwise || false;\n this.xRotation = options.xRotation;\n }\n extendStatic(Arc, superclass);\n Arc.prototype = Object.create(superclass && superclass.prototype);\n Arc.prototype.constructor = Arc;\n Arc.fn = Arc.prototype;\n Arc.fn.init = Arc.fn.constructor;\n Arc.prototype.clone = function clone() {\n return new Arc(this.center, {\n radiusX: this.radiusX,\n radiusY: this.radiusY,\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n anticlockwise: this.anticlockwise\n });\n };\n Arc.prototype.setCenter = function setCenter(value) {\n this._observerField('center', Point.create(value));\n this.geometryChange();\n return this;\n };\n Arc.prototype.getCenter = function getCenter() {\n return this.center;\n };\n Arc.prototype.pointAt = function pointAt(angle) {\n var center = this.center;\n var radian = rad(angle);\n return new Point(center.x + this.radiusX * Math.cos(radian), center.y + this.radiusY * Math.sin(radian));\n };\n Arc.prototype.curvePoints = function curvePoints() {\n var this$1 = this;\n var startAngle = this.startAngle;\n var dir = this.anticlockwise ? -1 : 1;\n var curvePoints = [this.pointAt(startAngle)];\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n var subIntervalAngle = intervalAngle / subIntervalsCount;\n var currentAngle = startAngle;\n var transformation;\n if (this.xRotation) {\n transformation = transform$1().rotate(this.xRotation, this.center);\n }\n for (var i = 1; i <= subIntervalsCount; i++) {\n var nextAngle = currentAngle + dir * subIntervalAngle;\n var points = this$1._intervalCurvePoints(currentAngle, nextAngle, transformation);\n curvePoints.push(points.cp1, points.cp2, points.p2);\n currentAngle = nextAngle;\n }\n return curvePoints;\n };\n Arc.prototype.bbox = function bbox(matrix) {\n var this$1 = this;\n var interval = this._arcInterval();\n var startAngle = interval.startAngle;\n var endAngle = interval.endAngle;\n var extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n var extremeX = deg(extremeAngles.x);\n var extremeY = deg(extremeAngles.y);\n var endPoint = this.pointAt(endAngle).transformCopy(matrix);\n var currentAngleX = bboxStartAngle(extremeX, startAngle);\n var currentAngleY = bboxStartAngle(extremeY, startAngle);\n var currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n var minPoint = Point.min(currentPoint, endPoint);\n var maxPoint = Point.max(currentPoint, endPoint);\n while (currentAngleX < endAngle || currentAngleY < endAngle) {\n var currentPointX = void 0;\n if (currentAngleX < endAngle) {\n currentPointX = this$1.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n var currentPointY = void 0;\n if (currentAngleY < endAngle) {\n currentPointY = this$1.pointAt(currentAngleY).transformCopy(matrix);\n currentAngleY += 90;\n }\n currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n return Rect.fromPoints(minPoint, maxPoint);\n };\n Arc.prototype._arcInterval = function _arcInterval() {\n var ref = this;\n var startAngle = ref.startAngle;\n var endAngle = ref.endAngle;\n var anticlockwise = ref.anticlockwise;\n if (anticlockwise) {\n var oldStart = startAngle;\n startAngle = endAngle;\n endAngle = oldStart;\n }\n if (startAngle > endAngle || anticlockwise && startAngle === endAngle) {\n endAngle += 360;\n }\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n };\n Arc.prototype._intervalCurvePoints = function _intervalCurvePoints(startAngle, endAngle, transformation) {\n var p1 = this.pointAt(startAngle);\n var p2 = this.pointAt(endAngle);\n var p1Derivative = this._derivativeAt(startAngle);\n var p2Derivative = this._derivativeAt(endAngle);\n var t = (rad(endAngle) - rad(startAngle)) / 3;\n var cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n var cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n if (transformation) {\n p1.transform(transformation);\n p2.transform(transformation);\n cp1.transform(transformation);\n cp2.transform(transformation);\n }\n return {\n p1: p1,\n cp1: cp1,\n cp2: cp2,\n p2: p2\n };\n };\n Arc.prototype._derivativeAt = function _derivativeAt(angle) {\n var radian = rad(angle);\n return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n };\n Arc.prototype.containsPoint = function containsPoint(point) {\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var ref = this;\n var center = ref.center;\n var radiusX = ref.radiusX;\n var radiusY = ref.radiusY;\n var distance = center.distanceTo(point);\n var angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n var pointRadius = radiusX * radiusY / Math.sqrt(pow$1(radiusX, 2) * pow$1(Math.sin(angleRad), 2) + pow$1(radiusY, 2) * pow$1(Math.cos(angleRad), 2));\n var startPoint = this.pointAt(this.startAngle).round(PRECISION);\n var endPoint = this.pointAt(this.endAngle).round(PRECISION);\n var intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n var containsPoint;\n if (intervalAngle < 180) {\n containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n } else {\n var angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n containsPoint = inAngleRange && closeOrLess(distance, pointRadius) || !inAngleRange && (!intersection || intersection.equals(point));\n }\n return containsPoint;\n };\n Arc.prototype._isOnPath = function _isOnPath(point, width) {\n var interval = this._arcInterval();\n var center = this.center;\n var angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n };\n Arc.fromPoints = function fromPoints(start, end, rx, ry, largeArc, swipe, rotation) {\n var arcParameters = normalizeArcParameters({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n rx: rx,\n ry: ry,\n largeArc: largeArc,\n swipe: swipe,\n rotation: rotation\n });\n return new Arc(arcParameters.center, {\n startAngle: arcParameters.startAngle,\n endAngle: arcParameters.endAngle,\n radiusX: arcParameters.radiusX,\n radiusY: arcParameters.radiusY,\n xRotation: arcParameters.xRotation,\n anticlockwise: swipe === 0\n });\n };\n return Arc;\n }(withAccessors(HasObservers, accessors));\n function calculateAngle(cx, cy, rx, ry, x, y) {\n var cos = round((x - cx) / rx, 3);\n var sin = round((y - cy) / ry, 3);\n return round(deg(Math.atan2(sin, cos)));\n }\n function normalizeArcParameters(parameters) {\n var x1 = parameters.x1;\n var y1 = parameters.y1;\n var x2 = parameters.x2;\n var y2 = parameters.y2;\n var rx = parameters.rx;\n var ry = parameters.ry;\n var largeArc = parameters.largeArc;\n var swipe = parameters.swipe;\n var rotation = parameters.rotation;\n if (rotation === void 0) {\n rotation = 0;\n }\n var radians = rad(rotation);\n var cosine = Math.cos(radians);\n var sine = Math.sin(radians);\n var xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n var yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n var sign = largeArc !== swipe ? 1 : -1;\n var xt2 = Math.pow(xT, 2);\n var yt2 = Math.pow(yT, 2);\n var rx2 = Math.pow(rx, 2);\n var ry2 = Math.pow(ry, 2);\n var delta = xt2 / rx2 + yt2 / ry2;\n if (delta > 1) {\n delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n rx = delta * rx;\n rx2 = Math.pow(rx, 2);\n ry = delta * ry;\n ry2 = Math.pow(ry, 2);\n }\n var constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n if (isNaN(constT)) {\n constT = 0;\n }\n var cxT = constT * (rx * yT) / ry;\n var cyT = -constT * (ry * xT) / rx;\n var cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n var cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n var uX = (xT - cxT) / rx;\n var uY = (yT - cyT) / ry;\n var vX = -(xT + cxT) / rx;\n var vY = -(yT + cyT) / ry;\n var startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n var angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n var angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n if (!swipe && angle > 0) {\n angle -= 360;\n }\n if (swipe && angle < 0) {\n angle += 360;\n }\n var endAngle = startAngle + angle;\n var signEndAngle = endAngle >= 0 ? 1 : -1;\n endAngle = Math.abs(endAngle) % 360 * signEndAngle;\n return {\n center: new Point(cx, cy),\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: rx,\n radiusY: ry,\n xRotation: rotation\n };\n }\n function bboxStartAngle(angle, start) {\n var startAngle = angle;\n while (startAngle < start) {\n startAngle += 90;\n }\n return startAngle;\n }\n var push = [].push;\n var pop = [].pop;\n var splice = [].splice;\n var shift = [].shift;\n var slice = [].slice;\n var unshift = [].unshift;\n var ElementsArray = function (HasObservers$$1) {\n function ElementsArray(array) {\n if (array === void 0) {\n array = [];\n }\n HasObservers$$1.call(this);\n this.length = 0;\n this._splice(0, array.length, array);\n }\n extendStatic(ElementsArray, HasObservers$$1);\n ElementsArray.prototype = Object.create(HasObservers$$1 && HasObservers$$1.prototype);\n ElementsArray.prototype.constructor = ElementsArray;\n ElementsArray.fn = ElementsArray.prototype;\n ElementsArray.fn.init = ElementsArray.fn.constructor;\n ElementsArray.prototype.elements = function elements(value) {\n if (value) {\n this._splice(0, this.length, value);\n this._change();\n return this;\n }\n return this.slice(0);\n };\n ElementsArray.prototype.push = function push$1() {\n var elements = arguments;\n var result = push.apply(this, elements);\n this._add(elements);\n return result;\n };\n ElementsArray.prototype.slice = function slice$1() {\n return slice.call(this);\n };\n ElementsArray.prototype.pop = function pop$1() {\n var length = this.length;\n var result = pop.apply(this);\n if (length) {\n this._remove([result]);\n }\n return result;\n };\n ElementsArray.prototype.splice = function splice$1(index, howMany) {\n var elements = slice.call(arguments, 2);\n var result = this._splice(index, howMany, elements);\n this._change();\n return result;\n };\n ElementsArray.prototype.shift = function shift$1() {\n var length = this.length;\n var result = shift.apply(this);\n if (length) {\n this._remove([result]);\n }\n return result;\n };\n ElementsArray.prototype.unshift = function unshift$1() {\n var elements = arguments;\n var result = unshift.apply(this, elements);\n this._add(elements);\n return result;\n };\n ElementsArray.prototype.indexOf = function indexOf(element) {\n var this$1 = this;\n var length = this.length;\n for (var idx = 0; idx < length; idx++) {\n if (this$1[idx] === element) {\n return idx;\n }\n }\n return -1;\n };\n ElementsArray.prototype._splice = function _splice(index, howMany, elements) {\n var result = splice.apply(this, [\n index,\n howMany\n ].concat(elements));\n this._clearObserver(result);\n this._setObserver(elements);\n return result;\n };\n ElementsArray.prototype._add = function _add(elements) {\n this._setObserver(elements);\n this._change();\n };\n ElementsArray.prototype._remove = function _remove(elements) {\n this._clearObserver(elements);\n this._change();\n };\n ElementsArray.prototype._setObserver = function _setObserver(elements) {\n var this$1 = this;\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].addObserver(this$1);\n }\n };\n ElementsArray.prototype._clearObserver = function _clearObserver(elements) {\n var this$1 = this;\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].removeObserver(this$1);\n }\n };\n ElementsArray.prototype._change = function _change() {\n };\n return ElementsArray;\n }(HasObservers);\n var GeometryElementsArray = function (ElementsArray$$1) {\n function GeometryElementsArray() {\n ElementsArray$$1.apply(this, arguments);\n }\n extendStatic(GeometryElementsArray, ElementsArray$$1);\n GeometryElementsArray.prototype = Object.create(ElementsArray$$1 && ElementsArray$$1.prototype);\n GeometryElementsArray.prototype.constructor = GeometryElementsArray;\n GeometryElementsArray.fn = GeometryElementsArray.prototype;\n GeometryElementsArray.fn.init = GeometryElementsArray.fn.constructor;\n GeometryElementsArray.prototype._change = function _change() {\n this.geometryChange();\n };\n return GeometryElementsArray;\n }(ElementsArray);\n function isOutOfEndPoint(endPoint, controlPoint, point) {\n var angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n var rotatedPoint = point.transformCopy(transform$1().rotate(-angle, endPoint));\n return rotatedPoint.x < endPoint.x;\n }\n function calculateCurveAt(t, field, points) {\n var t1 = 1 - t;\n return Math.pow(t1, 3) * points[0][field] + 3 * Math.pow(t1, 2) * t * points[1][field] + 3 * Math.pow(t, 2) * t1 * points[2][field] + Math.pow(t, 3) * points[3][field];\n }\n function toCubicPolynomial(points, field) {\n return [\n -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n 3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n 3 * (-points[0][field] + points[1][field]),\n points[0][field]\n ];\n }\n var ComplexNumber = function (Class$$1) {\n function ComplexNumber(real, img) {\n if (real === void 0) {\n real = 0;\n }\n if (img === void 0) {\n img = 0;\n }\n Class$$1.call(this);\n this.real = real;\n this.img = img;\n }\n extendStatic(ComplexNumber, Class$$1);\n ComplexNumber.prototype = Object.create(Class$$1 && Class$$1.prototype);\n ComplexNumber.prototype.constructor = ComplexNumber;\n ComplexNumber.fn = ComplexNumber.prototype;\n ComplexNumber.fn.init = ComplexNumber.fn.constructor;\n ComplexNumber.prototype.add = function add(cNumber) {\n return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n };\n ComplexNumber.prototype.addConstant = function addConstant(value) {\n return new ComplexNumber(this.real + value, this.img);\n };\n ComplexNumber.prototype.negate = function negate() {\n return new ComplexNumber(-this.real, -this.img);\n };\n ComplexNumber.prototype.multiply = function multiply(cNumber) {\n return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img, this.real * cNumber.img + this.img * cNumber.real);\n };\n ComplexNumber.prototype.multiplyConstant = function multiplyConstant(value) {\n return new ComplexNumber(this.real * value, this.img * value);\n };\n ComplexNumber.prototype.nthRoot = function nthRoot(n) {\n var rad$$1 = Math.atan2(this.img, this.real);\n var r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n var nthR = Math.pow(r, 1 / n);\n return new ComplexNumber(nthR * Math.cos(rad$$1 / n), nthR * Math.sin(rad$$1 / n));\n };\n ComplexNumber.prototype.equals = function equals(cNumber) {\n return this.real === cNumber.real && this.img === cNumber.img;\n };\n ComplexNumber.prototype.isReal = function isReal() {\n return this.img === 0;\n };\n return ComplexNumber;\n }(Class);\n function numberSign(x) {\n return x < 0 ? -1 : 1;\n }\n function solveQuadraticEquation(a, b, c) {\n var squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n return [\n (-b + squareRoot) / (2 * a),\n (-b - squareRoot) / (2 * a)\n ];\n }\n function solveCubicEquation(a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n var p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n var q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n var Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n var i = new ComplexNumber(0, 1);\n var b3a = -b / (3 * a);\n var x1, x2, y1, y2, y3, z1, z2;\n if (Q < 0) {\n x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n x2 = new ComplexNumber(-q / 2, -Math.sqrt(-Q)).nthRoot(3);\n } else {\n x1 = -q / 2 + Math.sqrt(Q);\n x1 = new ComplexNumber(numberSign(x1) * Math.pow(Math.abs(x1), 1 / 3));\n x2 = -q / 2 - Math.sqrt(Q);\n x2 = new ComplexNumber(numberSign(x2) * Math.pow(Math.abs(x2), 1 / 3));\n }\n y1 = x1.add(x2);\n z1 = x1.add(x2).multiplyConstant(-1 / 2);\n z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n y2 = z1.add(i.multiply(z2));\n y3 = z1.add(i.negate().multiply(z2));\n var result = [];\n if (y1.isReal()) {\n result.push(round(y1.real + b3a, PRECISION));\n }\n if (y2.isReal()) {\n result.push(round(y2.real + b3a, PRECISION));\n }\n if (y3.isReal()) {\n result.push(round(y3.real + b3a, PRECISION));\n }\n return result;\n }\n function hasRootsInRange(points, point, field, rootField, range) {\n var polynomial = toCubicPolynomial(points, rootField);\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n var intersection;\n for (var idx = 0; idx < roots.length; idx++) {\n if (0 <= roots[idx] && roots[idx] <= 1) {\n intersection = calculateCurveAt(roots[idx], field, points);\n if (Math.abs(intersection - point[field]) <= range) {\n return true;\n }\n }\n }\n }\n function curveIntersectionsCount(points, point, bbox) {\n var polynomial = toCubicPolynomial(points, 'x');\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n var rayIntersection, intersectsRay;\n var count = 0;\n for (var i = 0; i < roots.length; i++) {\n rayIntersection = calculateCurveAt(roots[i], 'y', points);\n intersectsRay = close$1(rayIntersection, point.y) || rayIntersection > point.y;\n if (intersectsRay && ((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x || 0 < roots[i] && roots[i] < 1)) {\n count++;\n }\n }\n return count;\n }\n function lineIntersectionsCount(a, b, point) {\n var intersects;\n if (a.x !== b.x) {\n var minX = Math.min(a.x, b.x);\n var maxX = Math.max(a.x, b.x);\n var minY = Math.min(a.y, b.y);\n var maxY = Math.max(a.y, b.y);\n var inRange = minX <= point.x && point.x < maxX;\n if (minY === maxY) {\n intersects = point.y <= minY && inRange;\n } else {\n intersects = inRange && (maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x) / (maxX - minX) + minY - point.y >= 0;\n }\n }\n return intersects ? 1 : 0;\n }\n function pointAccessor(name) {\n var fieldName = '_' + name;\n return function (value) {\n if (defined(value)) {\n this._observerField(fieldName, Point.create(value));\n this.geometryChange();\n return this;\n }\n return this[fieldName];\n };\n }\n function definePointAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n }\n var withPoints = function (TBase, names) {\n var result = function (TBase) {\n function result() {\n TBase.apply(this, arguments);\n }\n extendStatic(result, TBase);\n result.prototype = Object.create(TBase && TBase.prototype);\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n return result;\n }(TBase);\n definePointAccessors(result.prototype, names);\n return result;\n };\n var points = [\n 'anchor',\n 'controlIn',\n 'controlOut'\n ];\n var Segment = function (superclass) {\n function Segment(anchor, controlIn, controlOut) {\n superclass.call(this);\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n }\n extendStatic(Segment, superclass);\n Segment.prototype = Object.create(superclass && superclass.prototype);\n Segment.prototype.constructor = Segment;\n Segment.fn = Segment.prototype;\n Segment.fn.init = Segment.fn.constructor;\n Segment.prototype.bboxTo = function bboxTo(toSegment, matrix) {\n var segmentAnchor = this.anchor().transformCopy(matrix);\n var toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n var rect;\n if (this.controlOut() && toSegment.controlIn()) {\n rect = this._curveBoundingBox(segmentAnchor, this.controlOut().transformCopy(matrix), toSegment.controlIn().transformCopy(matrix), toSegmentAnchor);\n } else {\n rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n }\n return rect;\n };\n Segment.prototype._lineBoundingBox = function _lineBoundingBox(p1, p2) {\n return Rect.fromPoints(p1, p2);\n };\n Segment.prototype._curveBoundingBox = function _curveBoundingBox(p1, cp1, cp2, p2) {\n var points = [\n p1,\n cp1,\n cp2,\n p2\n ];\n var extremesX = this._curveExtremesFor(points, 'x');\n var extremesY = this._curveExtremesFor(points, 'y');\n var xLimits = arrayLimits([\n extremesX.min,\n extremesX.max,\n p1.x,\n p2.x\n ]);\n var yLimits = arrayLimits([\n extremesY.min,\n extremesY.max,\n p1.y,\n p2.y\n ]);\n return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n };\n Segment.prototype._curveExtremesFor = function _curveExtremesFor(points, field) {\n var extremes = this._curveExtremes(points[0][field], points[1][field], points[2][field], points[3][field]);\n return {\n min: calculateCurveAt(extremes.min, field, points),\n max: calculateCurveAt(extremes.max, field, points)\n };\n };\n Segment.prototype._curveExtremes = function _curveExtremes(x1, x2, x3, x4) {\n var a = x1 - 3 * x2 + 3 * x3 - x4;\n var b = -2 * (x1 - 2 * x2 + x3);\n var c = x1 - x2;\n var sqrt = Math.sqrt(b * b - 4 * a * c);\n var t1 = 0;\n var t2 = 1;\n if (a === 0) {\n if (b !== 0) {\n t1 = t2 = -c / b;\n }\n } else if (!isNaN(sqrt)) {\n t1 = (-b + sqrt) / (2 * a);\n t2 = (-b - sqrt) / (2 * a);\n }\n var min = Math.max(Math.min(t1, t2), 0);\n if (min < 0 || min > 1) {\n min = 0;\n }\n var max = Math.min(Math.max(t1, t2), 1);\n if (max > 1 || max < 0) {\n max = 1;\n }\n return {\n min: min,\n max: max\n };\n };\n Segment.prototype._intersectionsTo = function _intersectionsTo(segment, point) {\n var intersectionsCount;\n if (this.controlOut() && segment.controlIn()) {\n intersectionsCount = curveIntersectionsCount([\n this.anchor(),\n this.controlOut(),\n segment.controlIn(),\n segment.anchor()\n ], point, this.bboxTo(segment));\n } else {\n intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n }\n return intersectionsCount;\n };\n Segment.prototype._isOnCurveTo = function _isOnCurveTo(segment, point, width, endSegment) {\n var bbox = this.bboxTo(segment).expand(width, width);\n if (bbox.containsPoint(point)) {\n var p1 = this.anchor();\n var p2 = this.controlOut();\n var p3 = segment.controlIn();\n var p4 = segment.anchor();\n if (endSegment === 'start' && p1.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p1, p2, point);\n } else if (endSegment === 'end' && p4.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p4, p3, point);\n }\n var points = [\n p1,\n p2,\n p3,\n p4\n ];\n if (hasRootsInRange(points, point, 'x', 'y', width) || hasRootsInRange(points, point, 'y', 'x', width)) {\n return true;\n }\n var rotation = transform$1().rotate(45, point);\n var rotatedPoints = [\n p1.transformCopy(rotation),\n p2.transformCopy(rotation),\n p3.transformCopy(rotation),\n p4.transformCopy(rotation)\n ];\n return hasRootsInRange(rotatedPoints, point, 'x', 'y', width) || hasRootsInRange(rotatedPoints, point, 'y', 'x', width);\n }\n };\n Segment.prototype._isOnLineTo = function _isOnLineTo(segment, point, width) {\n var p1 = this.anchor();\n var p2 = segment.anchor();\n var angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n var rect = new Rect([\n p1.x,\n p1.y - width / 2\n ], [\n p1.distanceTo(p2),\n width\n ]);\n return rect.containsPoint(point.transformCopy(transform$1().rotate(-angle, p1)));\n };\n Segment.prototype._isOnPathTo = function _isOnPathTo(segment, point, width, endSegment) {\n var isOnPath;\n if (this.controlOut() && segment.controlIn()) {\n isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n } else {\n isOnPath = this._isOnLineTo(segment, point, width);\n }\n return isOnPath;\n };\n return Segment;\n }(withPoints(HasObservers, points));\n function arrayLimits(arr) {\n var length = arr.length;\n var min = MAX_NUM;\n var max = MIN_NUM;\n for (var i = 0; i < length; i++) {\n max = Math.max(max, arr[i]);\n min = Math.min(min, arr[i]);\n }\n return {\n min: min,\n max: max\n };\n }\n var ShapeMap = {\n l: function (path, options) {\n var parameters = options.parameters;\n var position = options.position;\n for (var i = 0; i < parameters.length; i += 2) {\n var point = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n point.translateWith(position);\n }\n path.lineTo(point.x, point.y);\n position.x = point.x;\n position.y = point.y;\n }\n },\n c: function (path, options) {\n var parameters = options.parameters;\n var position = options.position;\n for (var i = 0; i < parameters.length; i += 6) {\n var controlOut = new Point(parameters[i], parameters[i + 1]);\n var controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n var point = new Point(parameters[i + 4], parameters[i + 5]);\n if (options.isRelative) {\n controlIn.translateWith(position);\n controlOut.translateWith(position);\n point.translateWith(position);\n }\n path.curveTo(controlOut, controlIn, point);\n position.x = point.x;\n position.y = point.y;\n }\n },\n v: function (path, options) {\n var value = options.isRelative ? 0 : options.position.x;\n toLineParamaters(options.parameters, true, value);\n this.l(path, options);\n },\n h: function (path, options) {\n var value = options.isRelative ? 0 : options.position.y;\n toLineParamaters(options.parameters, false, value);\n this.l(path, options);\n },\n a: function (path, options) {\n var parameters = options.parameters;\n var position = options.position;\n for (var i = 0; i < parameters.length; i += 7) {\n var radiusX = parameters[i];\n var radiusY = parameters[i + 1];\n var rotation = parameters[i + 2];\n var largeArc = parameters[i + 3];\n var swipe = parameters[i + 4];\n var endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (position.x !== endPoint.x || position.y !== endPoint.y) {\n path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n },\n s: function (path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var lastControlIn;\n if (previousCommand === 's' || previousCommand === 'c') {\n lastControlIn = last(last(path.paths).segments).controlIn();\n }\n for (var i = 0; i < parameters.length; i += 4) {\n var controlIn = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n var controlOut = void 0;\n if (options.isRelative) {\n controlIn.translateWith(position);\n endPoint.translateWith(position);\n }\n if (lastControlIn) {\n controlOut = reflectionPoint(lastControlIn, position);\n } else {\n controlOut = position.clone();\n }\n lastControlIn = controlIn;\n path.curveTo(controlOut, controlIn, endPoint);\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n q: function (path, options) {\n var parameters = options.parameters;\n var position = options.position;\n for (var i = 0; i < parameters.length; i += 4) {\n var controlPoint = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n if (options.isRelative) {\n controlPoint.translateWith(position);\n endPoint.translateWith(position);\n }\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n t: function (path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var controlPoint;\n if (previousCommand === 'q' || previousCommand === 't') {\n var lastSegment = last(last(path.paths).segments);\n controlPoint = lastSegment.controlIn().clone().translateWith(position.scaleCopy(-1 / 3)).scale(3 / 2);\n }\n for (var i = 0; i < parameters.length; i += 2) {\n var endPoint = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (controlPoint) {\n controlPoint = reflectionPoint(controlPoint, position);\n } else {\n controlPoint = position.clone();\n }\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n };\n function toLineParamaters(parameters, isVertical, value) {\n var insertPosition = isVertical ? 0 : 1;\n for (var i = 0; i < parameters.length; i += 2) {\n parameters.splice(i + insertPosition, 0, value);\n }\n }\n function reflectionPoint(point, center) {\n if (point && center) {\n return center.scaleCopy(2).translate(-point.x, -point.y);\n }\n }\n var third = 1 / 3;\n function quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n var scaledPoint = controlPoint.clone().scale(2 / 3);\n return {\n controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n };\n }\n var SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\n var SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\n var MOVE = 'm';\n var CLOSE = 'z';\n function parseParameters(str) {\n var parameters = [];\n str.replace(SPLIT_REGEX, function (match, number) {\n parameters.push(parseFloat(number));\n });\n return parameters;\n }\n function parsePath(pathInstance, str) {\n var position = new Point();\n var previousCommand;\n str.replace(SEGMENT_REGEX, function (match, element, params, closePath) {\n var command = element.toLowerCase();\n var isRelative = command === element;\n var parameters = parseParameters(params.trim());\n if (command === MOVE) {\n if (isRelative) {\n position.x += parameters[0];\n position.y += parameters[1];\n } else {\n position.x = parameters[0];\n position.y = parameters[1];\n }\n pathInstance.moveTo(position.x, position.y);\n if (parameters.length > 2) {\n command = 'l';\n parameters.splice(0, 2);\n }\n }\n if (ShapeMap[command]) {\n ShapeMap[command](pathInstance, {\n parameters: parameters,\n position: position,\n isRelative: isRelative,\n previousCommand: previousCommand\n });\n if (closePath && closePath.toLowerCase() === CLOSE) {\n pathInstance.close();\n }\n } else if (command !== MOVE) {\n throw new Error('Error while parsing SVG path. Unsupported command: ' + command);\n }\n previousCommand = command;\n });\n return pathInstance;\n }\n function elementsBoundingBox(elements, applyTransform, transformation) {\n var boundingBox;\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n return boundingBox;\n }\n function elementsClippedBoundingBox(elements, transformation) {\n var boundingBox;\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = element.clippedBBox(transformation);\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n return boundingBox;\n }\n var Path = function (superclass) {\n function Path(options) {\n superclass.call(this, options);\n this.segments = new GeometryElementsArray();\n this.segments.addObserver(this);\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n if (!defined(this.options.stroke.lineJoin)) {\n this.options.set('stroke.lineJoin', 'miter');\n }\n }\n }\n extendStatic(Path, superclass);\n Path.prototype = Object.create(superclass && superclass.prototype);\n Path.prototype.constructor = Path;\n Path.fn = Path.prototype;\n Path.fn.init = Path.fn.constructor;\n var prototypeAccessors = { nodeType: {} };\n Path.parse = function parse(str, options) {\n return MultiPath.parse(str, options);\n };\n prototypeAccessors.nodeType.get = function () {\n return 'Path';\n };\n Path.prototype.moveTo = function moveTo(x, y) {\n this.suspend();\n this.segments.elements([]);\n this.resume();\n this.lineTo(x, y);\n return this;\n };\n Path.prototype.lineTo = function lineTo(x, y) {\n var point = defined(y) ? new Point(x, y) : x;\n var segment = new Segment(point);\n this.segments.push(segment);\n return this;\n };\n Path.prototype.curveTo = function curveTo(controlOut, controlIn, point) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var segment = new Segment(point, controlIn);\n this.suspend();\n lastSegment.controlOut(controlOut);\n this.resume();\n this.segments.push(segment);\n }\n return this;\n };\n Path.prototype.arc = function arc(startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var start = rad(startAngle);\n var center = new Point(anchor.x - radiusX * Math.cos(start), anchor.y - radiusY * Math.sin(start));\n var arc = new Arc$2(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radiusX,\n radiusY: radiusY,\n anticlockwise: anticlockwise\n });\n this._addArcSegments(arc);\n }\n return this;\n };\n Path.prototype.arcTo = function arcTo(end, rx, ry, largeArc, swipe, rotation) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var arc = Arc$2.fromPoints(anchor, Point.create(end), rx, ry, largeArc, swipe, rotation);\n this._addArcSegments(arc);\n }\n return this;\n };\n Path.prototype._addArcSegments = function _addArcSegments(arc) {\n var this$1 = this;\n this.suspend();\n var curvePoints = arc.curvePoints();\n for (var i = 1; i < curvePoints.length; i += 3) {\n this$1.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n this.resume();\n this.geometryChange();\n };\n Path.prototype.close = function close() {\n this.options.closed = true;\n this.geometryChange();\n return this;\n };\n Path.prototype.rawBBox = function rawBBox() {\n return this._bbox();\n };\n Path.prototype._containsPoint = function _containsPoint(point) {\n var segments = this.segments;\n var length = segments.length;\n var intersectionsCount = 0;\n var previous, current;\n for (var idx = 1; idx < length; idx++) {\n previous = segments[idx - 1];\n current = segments[idx];\n intersectionsCount += previous._intersectionsTo(current, point);\n }\n if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point);\n }\n return intersectionsCount % 2 !== 0;\n };\n Path.prototype._isOnPath = function _isOnPath(point, width) {\n var segments = this.segments;\n var length = segments.length;\n var pathWidth = width || this.options.stroke.width;\n if (length > 1) {\n if (segments[0]._isOnPathTo(segments[1], point, pathWidth, 'start')) {\n return true;\n }\n for (var idx = 2; idx <= length - 2; idx++) {\n if (segments[idx - 1]._isOnPathTo(segments[idx], point, pathWidth)) {\n return true;\n }\n }\n if (segments[length - 2]._isOnPathTo(segments[length - 1], point, pathWidth, 'end')) {\n return true;\n }\n }\n return false;\n };\n Path.prototype._bbox = function _bbox(matrix) {\n var segments = this.segments;\n var length = segments.length;\n var boundingBox;\n if (length === 1) {\n var anchor = segments[0].anchor().transformCopy(matrix);\n boundingBox = new Rect(anchor, Size.ZERO);\n } else if (length > 0) {\n for (var i = 1; i < length; i++) {\n var segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, segmentBox);\n } else {\n boundingBox = segmentBox;\n }\n }\n }\n return boundingBox;\n };\n Path.fromRect = function fromRect(rect, options) {\n var path = new Path(options);\n var ref = rect.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n if (rx === 0 && ry === 0) {\n path.moveTo(rect.topLeft()).lineTo(rect.topRight()).lineTo(rect.bottomRight()).lineTo(rect.bottomLeft()).close();\n } else {\n var origin = rect.origin;\n var x = origin.x;\n var y = origin.y;\n var width = rect.width();\n var height = rect.height();\n rx = limitValue(rx, 0, width / 2);\n ry = limitValue(ry, 0, height / 2);\n path.moveTo(x + rx, y).lineTo(x + width - rx, y).arcTo([\n x + width,\n y + ry\n ], rx, ry, false).lineTo(x + width, y + height - ry).arcTo([\n x + width - rx,\n y + height\n ], rx, ry, false).lineTo(x + rx, y + height).arcTo([\n x,\n y + height - ry\n ], rx, ry, false).lineTo(x, y + ry).arcTo([\n x + rx,\n y\n ], rx, ry, false);\n }\n return path;\n };\n Path.fromPoints = function fromPoints(points, options) {\n if (points) {\n var path = new Path(options);\n for (var i = 0; i < points.length; i++) {\n var point = Point.create(points[i]);\n if (point) {\n if (i === 0) {\n path.moveTo(point);\n } else {\n path.lineTo(point);\n }\n }\n }\n return path;\n }\n };\n Path.fromArc = function fromArc(arc, options) {\n var path = new Path(options);\n var startAngle = arc.startAngle;\n var start = arc.pointAt(startAngle);\n path.moveTo(start.x, start.y);\n path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n return path;\n };\n Object.defineProperties(Path.prototype, prototypeAccessors);\n return Path;\n }(paintable(measurable(Element$1)));\n var MultiPath = function (superclass) {\n function MultiPath(options) {\n superclass.call(this, options);\n this.paths = new GeometryElementsArray();\n this.paths.addObserver(this);\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n }\n }\n extendStatic(MultiPath, superclass);\n MultiPath.prototype = Object.create(superclass && superclass.prototype);\n MultiPath.prototype.constructor = MultiPath;\n MultiPath.fn = MultiPath.prototype;\n MultiPath.fn.init = MultiPath.fn.constructor;\n var prototypeAccessors$1 = { nodeType: {} };\n MultiPath.parse = function parse(str, options) {\n var instance = new MultiPath(options);\n return parsePath(instance, str);\n };\n prototypeAccessors$1.nodeType.get = function () {\n return 'MultiPath';\n };\n MultiPath.prototype.moveTo = function moveTo(x, y) {\n var path = new Path();\n path.moveTo(x, y);\n this.paths.push(path);\n return this;\n };\n MultiPath.prototype.lineTo = function lineTo(x, y) {\n if (this.paths.length > 0) {\n last(this.paths).lineTo(x, y);\n }\n return this;\n };\n MultiPath.prototype.curveTo = function curveTo(controlOut, controlIn, point) {\n if (this.paths.length > 0) {\n last(this.paths).curveTo(controlOut, controlIn, point);\n }\n return this;\n };\n MultiPath.prototype.arc = function arc(startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.paths.length > 0) {\n last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n }\n return this;\n };\n MultiPath.prototype.arcTo = function arcTo(end, rx, ry, largeArc, swipe, rotation) {\n if (this.paths.length > 0) {\n last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n }\n return this;\n };\n MultiPath.prototype.close = function close() {\n if (this.paths.length > 0) {\n last(this.paths).close();\n }\n return this;\n };\n MultiPath.prototype._bbox = function _bbox(matrix) {\n return elementsBoundingBox(this.paths, true, matrix);\n };\n MultiPath.prototype.rawBBox = function rawBBox() {\n return elementsBoundingBox(this.paths, false);\n };\n MultiPath.prototype._containsPoint = function _containsPoint(point) {\n var paths = this.paths;\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._containsPoint(point)) {\n return true;\n }\n }\n return false;\n };\n MultiPath.prototype._isOnPath = function _isOnPath(point) {\n var paths = this.paths;\n var width = this.options.stroke.width;\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._isOnPath(point, width)) {\n return true;\n }\n }\n return false;\n };\n MultiPath.prototype._clippedBBox = function _clippedBBox(transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n };\n Object.defineProperties(MultiPath.prototype, prototypeAccessors$1);\n return MultiPath;\n }(paintable(measurable(Element$1)));\n var DEFAULT_STROKE$1 = '#000';\n var Arc = function (superclass) {\n function Arc(geometry, options) {\n if (geometry === void 0) {\n geometry = new Arc$2();\n }\n if (options === void 0) {\n options = {};\n }\n superclass.call(this, options);\n this.geometry(geometry);\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE$1);\n }\n }\n extendStatic(Arc, superclass);\n Arc.prototype = Object.create(superclass && superclass.prototype);\n Arc.prototype.constructor = Arc;\n Arc.fn = Arc.prototype;\n Arc.fn.init = Arc.fn.constructor;\n var prototypeAccessors = { nodeType: {} };\n prototypeAccessors.nodeType.get = function () {\n return 'Arc';\n };\n Arc.prototype._bbox = function _bbox(matrix) {\n return this._geometry.bbox(matrix);\n };\n Arc.prototype.rawBBox = function rawBBox() {\n return this.geometry().bbox();\n };\n Arc.prototype.toPath = function toPath() {\n var path = new Path();\n var curvePoints = this.geometry().curvePoints();\n if (curvePoints.length > 0) {\n path.moveTo(curvePoints[0].x, curvePoints[0].y);\n for (var i = 1; i < curvePoints.length; i += 3) {\n path.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n }\n return path;\n };\n Arc.prototype._containsPoint = function _containsPoint(point) {\n return this.geometry().containsPoint(point);\n };\n Arc.prototype._isOnPath = function _isOnPath(point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n Object.defineProperties(Arc.prototype, prototypeAccessors);\n return Arc;\n }(paintable(measurable(withGeometry(Element$1))));\n var DEFAULT_FONT = '12px sans-serif';\n var DEFAULT_FILL = '#000';\n var Text = function (superclass) {\n function Text(content, position, options) {\n if (position === void 0) {\n position = new Point();\n }\n if (options === void 0) {\n options = {};\n }\n superclass.call(this, options);\n this.content(content);\n this.position(position);\n if (!this.options.font) {\n this.options.font = DEFAULT_FONT;\n }\n if (!defined(this.options.fill)) {\n this.fill(DEFAULT_FILL);\n }\n }\n extendStatic(Text, superclass);\n Text.prototype = Object.create(superclass && superclass.prototype);\n Text.prototype.constructor = Text;\n Text.fn = Text.prototype;\n Text.fn.init = Text.fn.constructor;\n var prototypeAccessors = { nodeType: {} };\n prototypeAccessors.nodeType.get = function () {\n return 'Text';\n };\n Text.prototype.content = function content(value) {\n if (defined(value)) {\n this.options.set('content', value);\n return this;\n }\n return this.options.get('content');\n };\n Text.prototype.measure = function measure() {\n var metrics = kendoUtil.measureText(this.content(), { font: this.options.get('font') });\n return metrics;\n };\n Text.prototype.rect = function rect() {\n var size = this.measure();\n var pos = this.position().clone();\n return new Rect(pos, [\n size.width,\n size.height\n ]);\n };\n Text.prototype.bbox = function bbox(transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this.rect().bbox(combinedMatrix);\n };\n Text.prototype.rawBBox = function rawBBox() {\n return this.rect().bbox();\n };\n Text.prototype._containsPoint = function _containsPoint(point) {\n return this.rect().containsPoint(point);\n };\n Object.defineProperties(Text.prototype, prototypeAccessors);\n return Text;\n }(paintable(withPoints(Element$1, ['position'])));\n var Image$1 = function (superclass) {\n function Image(src, rect, options) {\n if (rect === void 0) {\n rect = new Rect();\n }\n if (options === void 0) {\n options = {};\n }\n superclass.call(this, options);\n this.src(src);\n this.rect(rect);\n }\n extendStatic(Image, superclass);\n Image.prototype = Object.create(superclass && superclass.prototype);\n Image.prototype.constructor = Image;\n Image.fn = Image.prototype;\n Image.fn.init = Image.fn.constructor;\n var prototypeAccessors = { nodeType: {} };\n prototypeAccessors.nodeType.get = function () {\n return 'Image';\n };\n Image.prototype.src = function src(value) {\n if (defined(value)) {\n this.options.set('src', value);\n return this;\n }\n return this.options.get('src');\n };\n Image.prototype.bbox = function bbox(transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this._rect.bbox(combinedMatrix);\n };\n Image.prototype.rawBBox = function rawBBox() {\n return this._rect.bbox();\n };\n Image.prototype._containsPoint = function _containsPoint(point) {\n return this._rect.containsPoint(point);\n };\n Image.prototype._hasFill = function _hasFill() {\n return this.src();\n };\n Object.defineProperties(Image.prototype, prototypeAccessors);\n return Image;\n }(withGeometry(Element$1, ['rect']));\n var traversable = function (TBase, childrenField) {\n return function (TBase) {\n function anonymous() {\n TBase.apply(this, arguments);\n }\n extendStatic(anonymous, TBase);\n anonymous.prototype = Object.create(TBase && TBase.prototype);\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n anonymous.prototype.traverse = function traverse(callback) {\n var children = this[childrenField];\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.traverse) {\n child.traverse(callback);\n } else {\n callback(child);\n }\n }\n return this;\n };\n return anonymous;\n }(TBase);\n };\n var Group = function (superclass) {\n function Group(options) {\n superclass.call(this, options);\n this.children = [];\n }\n extendStatic(Group, superclass);\n Group.prototype = Object.create(superclass && superclass.prototype);\n Group.prototype.constructor = Group;\n Group.fn = Group.prototype;\n Group.fn.init = Group.fn.constructor;\n var prototypeAccessors = { nodeType: {} };\n prototypeAccessors.nodeType.get = function () {\n return 'Group';\n };\n Group.prototype.childrenChange = function childrenChange(action, items, index) {\n this.trigger('childrenChange', {\n action: action,\n items: items,\n index: index\n });\n };\n Group.prototype.append = function append$1() {\n append$1$1(this.children, arguments);\n this._reparent(arguments, this);\n this.childrenChange('add', arguments);\n return this;\n };\n Group.prototype.insert = function insert(index, element) {\n this.children.splice(index, 0, element);\n element.parent = this;\n this.childrenChange('add', [element], index);\n return this;\n };\n Group.prototype.insertAt = function insertAt(element, index) {\n return this.insert(index, element);\n };\n Group.prototype.remove = function remove(element) {\n var index = this.children.indexOf(element);\n if (index >= 0) {\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange('remove', [element], index);\n }\n return this;\n };\n Group.prototype.removeAt = function removeAt(index) {\n if (0 <= index && index < this.children.length) {\n var element = this.children[index];\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange('remove', [element], index);\n }\n return this;\n };\n Group.prototype.clear = function clear() {\n var items = this.children;\n this.children = [];\n this._reparent(items, null);\n this.childrenChange('remove', items, 0);\n return this;\n };\n Group.prototype.bbox = function bbox(transformation) {\n return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n };\n Group.prototype.rawBBox = function rawBBox() {\n return elementsBoundingBox(this.children, false);\n };\n Group.prototype._clippedBBox = function _clippedBBox(transformation) {\n return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n };\n Group.prototype.currentTransform = function currentTransform(transformation) {\n return Element$1.prototype.currentTransform.call(this, transformation) || null;\n };\n Group.prototype.containsPoint = function containsPoint(point, parentTransform) {\n if (this.visible()) {\n var children = this.children;\n var transform = this.currentTransform(parentTransform);\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].containsPoint(point, transform)) {\n return true;\n }\n }\n }\n return false;\n };\n Group.prototype._reparent = function _reparent(elements, newParent) {\n var this$1 = this;\n for (var i = 0; i < elements.length; i++) {\n var child = elements[i];\n var parent = child.parent;\n if (parent && parent !== this$1 && parent.remove) {\n parent.remove(child);\n }\n child.parent = newParent;\n }\n };\n Object.defineProperties(Group.prototype, prototypeAccessors);\n return Group;\n }(traversable(Element$1, 'children'));\n function translateToPoint(point, bbox, element) {\n var transofrm = element.transform() || transform$1();\n var matrix = transofrm.matrix();\n matrix.e += point.x - bbox.origin.x;\n matrix.f += point.y - bbox.origin.y;\n transofrm.matrix(matrix);\n element.transform(transofrm);\n }\n function alignStart(size, rect, align, axis, sizeField) {\n var start;\n if (align === 'start') {\n start = rect.origin[axis];\n } else if (align === 'end') {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n return start;\n }\n function alignStartReverse(size, rect, align, axis, sizeField) {\n var start;\n if (align === 'start') {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else if (align === 'end') {\n start = rect.origin[axis];\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n return start;\n }\n var DEFAULT_OPTIONS = {\n alignContent: 'start',\n justifyContent: 'start',\n alignItems: 'start',\n spacing: 0,\n orientation: 'horizontal',\n lineSpacing: 0,\n wrap: true,\n revers: false\n };\n var forEach = function (elements, callback) {\n elements.forEach(callback);\n };\n var forEachReverse = function (elements, callback) {\n var length = elements.length;\n for (var idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx);\n }\n };\n var Layout = function (Group$$1) {\n function Layout(rect, options) {\n Group$$1.call(this, $.extend({}, DEFAULT_OPTIONS, options));\n this._rect = rect;\n this._fieldMap = {};\n }\n extendStatic(Layout, Group$$1);\n Layout.prototype = Object.create(Group$$1 && Group$$1.prototype);\n Layout.prototype.constructor = Layout;\n Layout.fn = Layout.prototype;\n Layout.fn.init = Layout.fn.constructor;\n Layout.prototype.rect = function rect(value) {\n if (value) {\n this._rect = value;\n return this;\n }\n return this._rect;\n };\n Layout.prototype._initMap = function _initMap() {\n var options = this.options;\n var fieldMap = this._fieldMap;\n if (options.orientation === 'horizontal') {\n fieldMap.sizeField = 'width';\n fieldMap.groupsSizeField = 'height';\n fieldMap.groupAxis = 'x';\n fieldMap.groupsAxis = 'y';\n } else {\n fieldMap.sizeField = 'height';\n fieldMap.groupsSizeField = 'width';\n fieldMap.groupAxis = 'y';\n fieldMap.groupsAxis = 'x';\n }\n if (options.reverse) {\n this.forEach = forEachReverse;\n this.justifyAlign = alignStartReverse;\n } else {\n this.forEach = forEach;\n this.justifyAlign = alignStart;\n }\n };\n Layout.prototype.reflow = function reflow() {\n var this$1 = this;\n if (!this._rect || this.children.length === 0) {\n return;\n }\n this._initMap();\n if (this.options.transform) {\n this.transform(null);\n }\n var options = this.options;\n var rect = this._rect;\n var ref = this._initGroups();\n var groups = ref.groups;\n var groupsSize = ref.groupsSize;\n var ref$1 = this._fieldMap;\n var sizeField = ref$1.sizeField;\n var groupsSizeField = ref$1.groupsSizeField;\n var groupAxis = ref$1.groupAxis;\n var groupsAxis = ref$1.groupsAxis;\n var groupOrigin = new Point();\n var elementOrigin = new Point();\n var size = new Size();\n var groupStart = alignStart(groupsSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var elementStart, group, groupBox;\n var arrangeElements = function (bbox, idx) {\n var element = group.elements[idx];\n elementOrigin[groupAxis] = elementStart;\n elementOrigin[groupsAxis] = alignStart(bbox.size[groupsSizeField], groupBox, options.alignItems, groupsAxis, groupsSizeField);\n translateToPoint(elementOrigin, bbox, element);\n elementStart += bbox.size[sizeField] + options.spacing;\n };\n for (var groupIdx = 0; groupIdx < groups.length; groupIdx++) {\n group = groups[groupIdx];\n groupOrigin[groupAxis] = elementStart = this$1.justifyAlign(group.size, rect, options.justifyContent, groupAxis, sizeField);\n groupOrigin[groupsAxis] = groupStart;\n size[sizeField] = group.size;\n size[groupsSizeField] = group.lineSize;\n groupBox = new Rect(groupOrigin, size);\n this$1.forEach(group.bboxes, arrangeElements);\n groupStart += group.lineSize + options.lineSpacing;\n }\n if (!options.wrap && group.size > rect.size[sizeField]) {\n var scale = rect.size[sizeField] / groupBox.size[sizeField];\n var scaledStart = groupBox.topLeft().scale(scale, scale);\n var scaledSize = groupBox.size[groupsSizeField] * scale;\n var newStart = alignStart(scaledSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var transform = transform$1();\n if (groupAxis === 'x') {\n transform.translate(rect.origin.x - scaledStart.x, newStart - scaledStart.y);\n } else {\n transform.translate(newStart - scaledStart.x, rect.origin.y - scaledStart.y);\n }\n transform.scale(scale, scale);\n this.transform(transform);\n }\n };\n Layout.prototype._initGroups = function _initGroups() {\n var this$1 = this;\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var lineSpacing = options.lineSpacing;\n var wrap = options.wrap;\n var spacing = options.spacing;\n var sizeField = this._fieldMap.sizeField;\n var group = this._newGroup();\n var groups = [];\n var addGroup = function () {\n groups.push(group);\n groupsSize += group.lineSize + lineSpacing;\n };\n var groupsSize = -lineSpacing;\n for (var idx = 0; idx < children.length; idx++) {\n var element = children[idx];\n var bbox = children[idx].clippedBBox();\n if (element.visible() && bbox) {\n if (wrap && group.size + bbox.size[sizeField] + spacing > this$1._rect.size[sizeField]) {\n if (group.bboxes.length === 0) {\n this$1._addToGroup(group, bbox, element);\n addGroup();\n group = this$1._newGroup();\n } else {\n addGroup();\n group = this$1._newGroup();\n this$1._addToGroup(group, bbox, element);\n }\n } else {\n this$1._addToGroup(group, bbox, element);\n }\n }\n }\n if (group.bboxes.length) {\n addGroup();\n }\n return {\n groups: groups,\n groupsSize: groupsSize\n };\n };\n Layout.prototype._addToGroup = function _addToGroup(group, bbox, element) {\n group.size += bbox.size[this._fieldMap.sizeField] + this.options.spacing;\n group.lineSize = Math.max(bbox.size[this._fieldMap.groupsSizeField], group.lineSize);\n group.bboxes.push(bbox);\n group.elements.push(element);\n };\n Layout.prototype._newGroup = function _newGroup() {\n return {\n lineSize: 0,\n size: -this.options.spacing,\n bboxes: [],\n elements: []\n };\n };\n return Layout;\n }(Group);\n var Rect$2 = function (superclass) {\n function Rect$$1(geometry, options) {\n if (geometry === void 0) {\n geometry = new Rect();\n }\n if (options === void 0) {\n options = {};\n }\n superclass.call(this, options);\n this.geometry(geometry);\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n }\n }\n extendStatic(Rect$$1, superclass);\n Rect$$1.prototype = Object.create(superclass && superclass.prototype);\n Rect$$1.prototype.constructor = Rect$$1;\n Rect$$1.fn = Rect$$1.prototype;\n Rect$$1.fn.init = Rect$$1.fn.constructor;\n var prototypeAccessors = { nodeType: {} };\n prototypeAccessors.nodeType.get = function () {\n return 'Rect';\n };\n Rect$$1.prototype._bbox = function _bbox(matrix) {\n return this._geometry.bbox(matrix);\n };\n Rect$$1.prototype.rawBBox = function rawBBox() {\n return this._geometry.bbox();\n };\n Rect$$1.prototype._containsPoint = function _containsPoint(point) {\n return this._geometry.containsPoint(point);\n };\n Rect$$1.prototype._isOnPath = function _isOnPath(point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n Object.defineProperties(Rect$$1.prototype, prototypeAccessors);\n return Rect$$1;\n }(paintable(measurable(withGeometry(Element$1))));\n function alignElements(elements, rect, alignment, axis, sizeField) {\n for (var idx = 0; idx < elements.length; idx++) {\n var bbox = elements[idx].clippedBBox();\n if (bbox) {\n var point = bbox.origin.clone();\n point[axis] = alignStart(bbox.size[sizeField], rect, alignment || 'start', axis, sizeField);\n translateToPoint(point, bbox, elements[idx]);\n }\n }\n }\n function align(elements, rect, alignment) {\n alignElements(elements, rect, alignment, 'x', 'width');\n }\n function vAlign(elements, rect, alignment) {\n alignElements(elements, rect, alignment, 'y', 'height');\n }\n function stackElements(elements, stackAxis, otherAxis, sizeField) {\n if (elements.length > 1) {\n var origin = new Point();\n var previousBBox = elements[0].bbox;\n for (var idx = 1; idx < elements.length; idx++) {\n var element = elements[idx].element;\n var bbox = elements[idx].bbox;\n origin[stackAxis] = previousBBox.origin[stackAxis] + previousBBox.size[sizeField];\n origin[otherAxis] = bbox.origin[otherAxis];\n translateToPoint(origin, bbox, element);\n bbox.origin[stackAxis] = origin[stackAxis];\n previousBBox = bbox;\n }\n }\n }\n function createStackElements(elements) {\n var stackElements = [];\n for (var idx = 0; idx < elements.length; idx++) {\n var element = elements[idx];\n var bbox = element.clippedBBox();\n if (bbox) {\n stackElements.push({\n element: element,\n bbox: bbox\n });\n }\n }\n return stackElements;\n }\n function stack(elements) {\n stackElements(createStackElements(elements), 'x', 'y', 'width');\n }\n function vStack(elements) {\n stackElements(createStackElements(elements), 'y', 'x', 'height');\n }\n function getStacks(elements, rect, sizeField) {\n var maxSize = rect.size[sizeField];\n var stacks = [];\n var stack = [];\n var stackSize = 0;\n var element, bbox;\n var addElementToStack = function () {\n stack.push({\n element: element,\n bbox: bbox\n });\n };\n for (var idx = 0; idx < elements.length; idx++) {\n element = elements[idx];\n bbox = element.clippedBBox();\n if (bbox) {\n var size = bbox.size[sizeField];\n if (stackSize + size > maxSize) {\n if (stack.length) {\n stacks.push(stack);\n stack = [];\n addElementToStack();\n stackSize = size;\n } else {\n addElementToStack();\n stacks.push(stack);\n stack = [];\n stackSize = 0;\n }\n } else {\n addElementToStack();\n stackSize += size;\n }\n }\n }\n if (stack.length) {\n stacks.push(stack);\n }\n return stacks;\n }\n function wrapElements(elements, rect, axis, otherAxis, sizeField) {\n var stacks = getStacks(elements, rect, sizeField);\n var origin = rect.origin.clone();\n var result = [];\n for (var idx = 0; idx < stacks.length; idx++) {\n var stack = stacks[idx];\n var startElement = stack[0];\n origin[otherAxis] = startElement.bbox.origin[otherAxis];\n translateToPoint(origin, startElement.bbox, startElement.element);\n startElement.bbox.origin[axis] = origin[axis];\n stackElements(stack, axis, otherAxis, sizeField);\n result.push([]);\n for (var elementIdx = 0; elementIdx < stack.length; elementIdx++) {\n result[idx].push(stack[elementIdx].element);\n }\n }\n return result;\n }\n function wrap(elements, rect) {\n return wrapElements(elements, rect, 'x', 'y', 'width');\n }\n function vWrap(elements, rect) {\n return wrapElements(elements, rect, 'y', 'x', 'height');\n }\n function fit(element, rect) {\n var bbox = element.clippedBBox();\n if (bbox) {\n var elementSize = bbox.size;\n var rectSize = rect.size;\n if (rectSize.width < elementSize.width || rectSize.height < elementSize.height) {\n var scale = Math.min(rectSize.width / elementSize.width, rectSize.height / elementSize.height);\n var transform = element.transform() || transform$1();\n transform.scale(scale, scale);\n element.transform(transform);\n }\n }\n }\n var StopsArray = function (ElementsArray$$1) {\n function StopsArray() {\n ElementsArray$$1.apply(this, arguments);\n }\n extendStatic(StopsArray, ElementsArray$$1);\n StopsArray.prototype = Object.create(ElementsArray$$1 && ElementsArray$$1.prototype);\n StopsArray.prototype.constructor = StopsArray;\n StopsArray.fn = StopsArray.prototype;\n StopsArray.fn.init = StopsArray.fn.constructor;\n StopsArray.prototype._change = function _change() {\n this.optionsChange({ field: 'stops' });\n };\n return StopsArray;\n }(ElementsArray);\n function optionsAccessor(name) {\n return function (value) {\n if (defined(value)) {\n this.options.set(name, value);\n return this;\n }\n return this.options.get(name);\n };\n }\n function defineOptionsAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n }\n var withOptions = function (TBase, names) {\n var result = function (TBase) {\n function result() {\n TBase.apply(this, arguments);\n }\n extendStatic(result, TBase);\n result.prototype = Object.create(TBase && TBase.prototype);\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n return result;\n }(TBase);\n defineOptionsAccessors(result.prototype, names);\n return result;\n };\n var options = [\n 'offset',\n 'color',\n 'opacity'\n ];\n var GradientStop = function (superclass) {\n function GradientStop(offset, color, opacity) {\n superclass.call(this);\n this.options = new OptionsStore({\n offset: offset,\n color: color,\n opacity: defined(opacity) ? opacity : 1\n });\n this.options.addObserver(this);\n }\n extendStatic(GradientStop, superclass);\n GradientStop.prototype = Object.create(superclass && superclass.prototype);\n GradientStop.prototype.constructor = GradientStop;\n GradientStop.fn = GradientStop.prototype;\n GradientStop.fn.init = GradientStop.fn.constructor;\n GradientStop.create = function create(arg) {\n if (defined(arg)) {\n var stop;\n if (arg instanceof GradientStop) {\n stop = arg;\n } else if (arg.length > 1) {\n stop = new GradientStop(arg[0], arg[1], arg[2]);\n } else {\n stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n }\n return stop;\n }\n };\n return GradientStop;\n }(withOptions(HasObservers, options));\n var Gradient = function (HasObservers$$1) {\n function Gradient(options) {\n if (options === void 0) {\n options = {};\n }\n HasObservers$$1.call(this);\n this.stops = new StopsArray(this._createStops(options.stops));\n this.stops.addObserver(this);\n this._userSpace = options.userSpace;\n this.id = definitionId();\n }\n extendStatic(Gradient, HasObservers$$1);\n Gradient.prototype = Object.create(HasObservers$$1 && HasObservers$$1.prototype);\n Gradient.prototype.constructor = Gradient;\n Gradient.fn = Gradient.prototype;\n Gradient.fn.init = Gradient.fn.constructor;\n var prototypeAccessors = { nodeType: {} };\n prototypeAccessors.nodeType.get = function () {\n return 'Gradient';\n };\n Gradient.prototype.userSpace = function userSpace(value) {\n if (defined(value)) {\n this._userSpace = value;\n this.optionsChange();\n return this;\n }\n return this._userSpace;\n };\n Gradient.prototype._createStops = function _createStops(stops) {\n if (stops === void 0) {\n stops = [];\n }\n var result = [];\n for (var idx = 0; idx < stops.length; idx++) {\n result.push(GradientStop.create(stops[idx]));\n }\n return result;\n };\n Gradient.prototype.addStop = function addStop(offset, color, opacity) {\n this.stops.push(new GradientStop(offset, color, opacity));\n };\n Gradient.prototype.removeStop = function removeStop(stop) {\n var index = this.stops.indexOf(stop);\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n };\n Gradient.prototype.optionsChange = function optionsChange(e) {\n this.trigger('optionsChange', {\n field: 'gradient' + (e ? '.' + e.field : ''),\n value: this\n });\n };\n Gradient.prototype.geometryChange = function geometryChange() {\n this.optionsChange();\n };\n Object.defineProperties(Gradient.prototype, prototypeAccessors);\n return Gradient;\n }(HasObservers);\n var points$1 = [\n 'start',\n 'end'\n ];\n var LinearGradient = function (superclass) {\n function LinearGradient(options) {\n if (options === void 0) {\n options = {};\n }\n superclass.call(this, options);\n this.start(options.start || new Point());\n this.end(options.end || new Point(1, 0));\n }\n extendStatic(LinearGradient, superclass);\n LinearGradient.prototype = Object.create(superclass && superclass.prototype);\n LinearGradient.prototype.constructor = LinearGradient;\n LinearGradient.fn = LinearGradient.prototype;\n LinearGradient.fn.init = LinearGradient.fn.constructor;\n return LinearGradient;\n }(withPoints(Gradient, points$1));\n var RadialGradient = function (superclass) {\n function RadialGradient(options) {\n if (options === void 0) {\n options = {};\n }\n superclass.call(this, options);\n this.center(options.center || new Point());\n this._radius = defined(options.radius) ? options.radius : 1;\n this._fallbackFill = options.fallbackFill;\n }\n extendStatic(RadialGradient, superclass);\n RadialGradient.prototype = Object.create(superclass && superclass.prototype);\n RadialGradient.prototype.constructor = RadialGradient;\n RadialGradient.fn = RadialGradient.prototype;\n RadialGradient.fn.init = RadialGradient.fn.constructor;\n RadialGradient.prototype.radius = function radius(value) {\n if (defined(value)) {\n this._radius = value;\n this.geometryChange();\n return this;\n }\n return this._radius;\n };\n RadialGradient.prototype.fallbackFill = function fallbackFill(value) {\n if (defined(value)) {\n this._fallbackFill = value;\n this.optionsChange();\n return this;\n }\n return this._fallbackFill;\n };\n return RadialGradient;\n }(withPoints(Gradient, ['center']));\n function swing(position) {\n return 0.5 - Math.cos(position * Math.PI) / 2;\n }\n function linear(position) {\n return position;\n }\n function easeOutElastic(position, time, start, diff) {\n var s = 1.70158, p = 0, a = diff;\n if (position === 0) {\n return start;\n }\n if (position === 1) {\n return start + diff;\n }\n if (!p) {\n p = 0.5;\n }\n if (a < Math.abs(diff)) {\n a = diff;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(diff / a);\n }\n return a * Math.pow(2, -10 * position) * Math.sin((Number(position) - s) * (1.1 * Math.PI) / p) + diff + start;\n }\n var easingFunctions = {\n swing: swing,\n linear: linear,\n easeOutElastic: easeOutElastic\n };\n var instance;\n var AnimationFactory = function (Class$$1) {\n function AnimationFactory() {\n Class$$1.call(this);\n this._items = [];\n }\n extendStatic(AnimationFactory, Class$$1);\n AnimationFactory.prototype = Object.create(Class$$1 && Class$$1.prototype);\n AnimationFactory.prototype.constructor = AnimationFactory;\n AnimationFactory.fn = AnimationFactory.prototype;\n AnimationFactory.fn.init = AnimationFactory.fn.constructor;\n var staticAccessors = { current: {} };\n staticAccessors.current.get = function () {\n if (!instance) {\n instance = new AnimationFactory();\n }\n return instance;\n };\n AnimationFactory.prototype.register = function register(name, type) {\n this._items.push({\n name: name,\n type: type\n });\n };\n AnimationFactory.prototype.create = function create(element, options) {\n var items = this._items;\n var match;\n if (options && options.type) {\n var type = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name.toLowerCase() === type) {\n match = items[i];\n break;\n }\n }\n }\n if (match) {\n return new match.type(element, options);\n }\n };\n Object.defineProperties(AnimationFactory, staticAccessors);\n return AnimationFactory;\n }(Class);\n var Animation = function (Class$$1) {\n function Animation(element, options) {\n Class$$1.call(this);\n this.options = $.extend({}, this.options, options);\n this.element = element;\n }\n extendStatic(Animation, Class$$1);\n Animation.prototype = Object.create(Class$$1 && Class$$1.prototype);\n Animation.prototype.constructor = Animation;\n Animation.fn = Animation.prototype;\n Animation.fn.init = Animation.fn.constructor;\n var prototypeAccessors = { options: {} };\n Animation.create = function create(type, element, options) {\n return AnimationFactory.current.create(type, element, options);\n };\n prototypeAccessors.options.get = function () {\n return this._options || {\n duration: 500,\n easing: 'swing'\n };\n };\n prototypeAccessors.options.set = function (value) {\n this._options = value;\n };\n Animation.prototype.setup = function setup() {\n };\n Animation.prototype.step = function step() {\n };\n Animation.prototype.play = function play() {\n var this$1 = this;\n var options = this.options;\n var duration = options.duration;\n var delay = options.delay;\n if (delay === void 0) {\n delay = 0;\n }\n var easing = easingFunctions[options.easing];\n var start = now() + delay;\n var finish = start + duration;\n if (duration === 0) {\n this.step(1);\n this.abort();\n } else {\n setTimeout(function () {\n var loop = function () {\n if (this$1._stopped) {\n return;\n }\n var wallTime = now();\n var time = limitValue(wallTime - start, 0, duration);\n var position = time / duration;\n var easingPosition = easing(position, time, 0, 1, duration);\n this$1.step(easingPosition);\n if (wallTime < finish) {\n kendo.animationFrame(loop);\n } else {\n this$1.abort();\n }\n };\n loop();\n }, delay);\n }\n };\n Animation.prototype.abort = function abort() {\n this._stopped = true;\n };\n Animation.prototype.destroy = function destroy() {\n this.abort();\n };\n Object.defineProperties(Animation.prototype, prototypeAccessors);\n return Animation;\n }(Class);\n var instance$1;\n var PathParser = function (Class$$1) {\n function PathParser() {\n Class$$1.apply(this, arguments);\n }\n extendStatic(PathParser, Class$$1);\n PathParser.prototype = Object.create(Class$$1 && Class$$1.prototype);\n PathParser.prototype.constructor = PathParser;\n PathParser.fn = PathParser.prototype;\n PathParser.fn.init = PathParser.fn.constructor;\n var staticAccessors = { current: {} };\n staticAccessors.current.get = function () {\n if (!instance$1) {\n instance$1 = new PathParser();\n }\n return instance$1;\n };\n PathParser.prototype.parse = function parse(str, options) {\n var multiPath = new MultiPath(options);\n return parsePath(multiPath, str);\n };\n Object.defineProperties(PathParser, staticAccessors);\n return PathParser;\n }(Class);\n var BaseNode = function (Class$$1) {\n function BaseNode(srcElement) {\n Class$$1.call(this);\n this.childNodes = [];\n this.parent = null;\n if (srcElement) {\n this.srcElement = srcElement;\n this.observe();\n }\n }\n extendStatic(BaseNode, Class$$1);\n BaseNode.prototype = Object.create(Class$$1 && Class$$1.prototype);\n BaseNode.prototype.constructor = BaseNode;\n BaseNode.fn = BaseNode.prototype;\n BaseNode.fn.init = BaseNode.fn.constructor;\n BaseNode.prototype.destroy = function destroy() {\n var this$1 = this;\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n this$1.childNodes[i].destroy();\n }\n this.parent = null;\n };\n BaseNode.prototype.load = function load() {\n };\n BaseNode.prototype.observe = function observe() {\n if (this.srcElement) {\n this.srcElement.addObserver(this);\n }\n };\n BaseNode.prototype.append = function append(node) {\n this.childNodes.push(node);\n node.parent = this;\n };\n BaseNode.prototype.insertAt = function insertAt(node, pos) {\n this.childNodes.splice(pos, 0, node);\n node.parent = this;\n };\n BaseNode.prototype.remove = function remove(index, count) {\n var this$1 = this;\n var end = index + count;\n for (var i = index; i < end; i++) {\n this$1.childNodes[i].removeSelf();\n }\n this.childNodes.splice(index, count);\n };\n BaseNode.prototype.removeSelf = function removeSelf() {\n this.clear();\n this.destroy();\n };\n BaseNode.prototype.clear = function clear() {\n this.remove(0, this.childNodes.length);\n };\n BaseNode.prototype.invalidate = function invalidate() {\n if (this.parent) {\n this.parent.invalidate();\n }\n };\n BaseNode.prototype.geometryChange = function geometryChange() {\n this.invalidate();\n };\n BaseNode.prototype.optionsChange = function optionsChange() {\n this.invalidate();\n };\n BaseNode.prototype.childrenChange = function childrenChange(e) {\n if (e.action === 'add') {\n this.load(e.items, e.index);\n } else if (e.action === 'remove') {\n this.remove(e.index, e.items.length);\n }\n this.invalidate();\n };\n return BaseNode;\n }(Class);\n var events = [\n 'click',\n 'mouseenter',\n 'mouseleave',\n 'mousemove',\n 'resize'\n ];\n var Surface$2 = function (Observable$$1) {\n function Surface(element, options) {\n Observable$$1.call(this);\n this.options = $.extend({}, options);\n this.element = element;\n this.element._kendoExportVisual = this.exportVisual.bind(this);\n this._click = this._handler('click');\n this._mouseenter = this._handler('mouseenter');\n this._mouseleave = this._handler('mouseleave');\n this._mousemove = this._handler('mousemove');\n this._visual = new Group();\n elementSize(element, this.options);\n this.bind(events, this.options);\n this._enableTracking();\n }\n extendStatic(Surface, Observable$$1);\n Surface.prototype = Object.create(Observable$$1 && Observable$$1.prototype);\n Surface.prototype.constructor = Surface;\n Surface.fn = Surface.prototype;\n Surface.fn.init = Surface.fn.constructor;\n Surface.prototype.draw = function draw(element) {\n this._visual.children.push(element);\n };\n Surface.prototype.clear = function clear() {\n this._visual.children = [];\n };\n Surface.prototype.destroy = function destroy() {\n this._visual = null;\n this.element._kendoExportVisual = null;\n this.unbind();\n };\n Surface.prototype.eventTarget = function eventTarget(e) {\n var this$1 = this;\n var domNode = eventElement(e);\n var node;\n while (!node && domNode) {\n node = domNode._kendoNode;\n if (domNode === this$1.element) {\n break;\n }\n domNode = domNode.parentElement;\n }\n if (node) {\n return node.srcElement;\n }\n };\n Surface.prototype.exportVisual = function exportVisual() {\n return this._visual;\n };\n Surface.prototype.getSize = function getSize() {\n return elementSize(this.element);\n };\n Surface.prototype.currentSize = function currentSize(size) {\n if (size) {\n this._size = size;\n } else {\n return this._size;\n }\n };\n Surface.prototype.setSize = function setSize(size) {\n elementSize(this.element, size);\n this.currentSize(size);\n this._resize();\n };\n Surface.prototype.resize = function resize(force) {\n var size = this.getSize();\n var currentSize = this.currentSize();\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this.currentSize(size);\n this._resize(size, force);\n this.trigger('resize', size);\n }\n };\n Surface.prototype.size = function size(value) {\n if (!value) {\n return this.getSize();\n }\n this.setSize(value);\n };\n Surface.prototype.suspendTracking = function suspendTracking() {\n this._suspendedTracking = true;\n };\n Surface.prototype.resumeTracking = function resumeTracking() {\n this._suspendedTracking = false;\n };\n Surface.prototype._enableTracking = function _enableTracking() {\n };\n Surface.prototype._resize = function _resize() {\n };\n Surface.prototype._handler = function _handler(eventName) {\n var this$1 = this;\n return function (e) {\n var node = this$1.eventTarget(e);\n if (node && !this$1._suspendedTracking) {\n this$1.trigger(eventName, {\n element: node,\n originalEvent: e,\n type: eventName\n });\n }\n };\n };\n Surface.prototype._elementOffset = function _elementOffset() {\n var element = this.element;\n var padding = elementPadding(element);\n var ref = elementOffset(element);\n var left = ref.left;\n var top = ref.top;\n return {\n left: left + padding.left,\n top: top + padding.top\n };\n };\n Surface.prototype._surfacePoint = function _surfacePoint(e) {\n var offset = this._elementOffset();\n var coord = eventCoordinates(e);\n var x = coord.x - offset.left;\n var y = coord.y - offset.top;\n var inverseTransform = elementScale(this.element).invert();\n var point = new Point(x, y).transform(inverseTransform);\n return point;\n };\n return Surface;\n }(kendo.Observable);\n function renderAttr(name, value) {\n return defined(value) && value !== null ? ' ' + name + '=\"' + value + '\" ' : '';\n }\n function renderAllAttr(attrs) {\n var output = '';\n for (var i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n return output;\n }\n function renderStyle(attrs) {\n var output = '';\n for (var i = 0; i < attrs.length; i++) {\n var value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + ':' + value + ';';\n }\n }\n if (output !== '') {\n return output;\n }\n }\n var NODE_MAP = {};\n var SVG_NS = 'http://www.w3.org/2000/svg';\n var NONE = 'none';\n var renderSVG = function (container, svg) {\n container.innerHTML = svg;\n };\n if (typeof document !== 'undefined') {\n var testFragment = '';\n var testContainer = document.createElement('div');\n var hasParser = typeof DOMParser !== 'undefined';\n testContainer.innerHTML = testFragment;\n if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n renderSVG = function (container, svg) {\n var parser = new DOMParser();\n var chartDoc = parser.parseFromString(svg, 'text/xml');\n var importedDoc = document.adoptNode(chartDoc.documentElement);\n container.innerHTML = '';\n container.appendChild(importedDoc);\n };\n }\n }\n var renderSVG$1 = renderSVG;\n var TRANSFORM = 'transform';\n var DefinitionMap = {\n clip: 'clip-path',\n fill: 'fill'\n };\n function isDefinition(type, value) {\n return type === 'clip' || type === 'fill' && (!value || value.nodeType === 'Gradient');\n }\n function baseUrl() {\n var base = document.getElementsByTagName('base')[0];\n var href = document.location.href;\n var url = '';\n if (base && !(supportBrowser || {}).msie) {\n var hashIndex = href.indexOf('#');\n if (hashIndex !== -1) {\n href = href.substring(0, hashIndex);\n }\n url = href;\n }\n return url;\n }\n var Node = function (BaseNode$$1) {\n function Node(srcElement, options) {\n BaseNode$$1.call(this, srcElement);\n this.definitions = {};\n this.options = options;\n }\n extendStatic(Node, BaseNode$$1);\n Node.prototype = Object.create(BaseNode$$1 && BaseNode$$1.prototype);\n Node.prototype.constructor = Node;\n Node.fn = Node.prototype;\n Node.fn.init = Node.fn.constructor;\n Node.prototype.destroy = function destroy() {\n if (this.element) {\n this.element._kendoNode = null;\n this.element = null;\n }\n this.clearDefinitions();\n BaseNode$$1.prototype.destroy.call(this);\n };\n Node.prototype.load = function load(elements, pos) {\n var this$1 = this;\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n var childNode = new NODE_MAP[srcElement.nodeType](srcElement, this$1.options);\n if (defined(pos)) {\n this$1.insertAt(childNode, pos);\n } else {\n this$1.append(childNode);\n }\n childNode.createDefinitions();\n if (children && children.length > 0) {\n childNode.load(children);\n }\n var element = this$1.element;\n if (element) {\n childNode.attachTo(element, pos);\n }\n }\n };\n Node.prototype.root = function root() {\n var root = this;\n while (root.parent) {\n root = root.parent;\n }\n return root;\n };\n Node.prototype.attachTo = function attachTo(domElement, pos) {\n var container = document.createElement('div');\n renderSVG$1(container, '');\n var element = container.firstChild.firstChild;\n if (element) {\n if (defined(pos)) {\n domElement.insertBefore(element, domElement.childNodes[pos] || null);\n } else {\n domElement.appendChild(element);\n }\n this.setElement(element);\n }\n };\n Node.prototype.setElement = function setElement(element) {\n if (this.element) {\n this.element._kendoNode = null;\n }\n this.element = element;\n this.element._kendoNode = this;\n var nodes = this.childNodes;\n for (var i = 0; i < nodes.length; i++) {\n var childElement = element.childNodes[i];\n nodes[i].setElement(childElement);\n }\n };\n Node.prototype.clear = function clear() {\n this.clearDefinitions();\n if (this.element) {\n this.element.innerHTML = '';\n }\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n this.childNodes = [];\n };\n Node.prototype.removeSelf = function removeSelf() {\n if (this.element) {\n var parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n this.element = null;\n }\n BaseNode$$1.prototype.removeSelf.call(this);\n };\n Node.prototype.template = function template() {\n return this.renderChildren();\n };\n Node.prototype.render = function render() {\n return this.template();\n };\n Node.prototype.renderChildren = function renderChildren() {\n var nodes = this.childNodes;\n var output = '';\n for (var i = 0; i < nodes.length; i++) {\n output += nodes[i].render();\n }\n return output;\n };\n Node.prototype.optionsChange = function optionsChange(e) {\n var field = e.field;\n var value = e.value;\n if (field === 'visible') {\n this.css('display', value ? '' : NONE);\n } else if (DefinitionMap[field] && isDefinition(field, value)) {\n this.updateDefinition(field, value);\n } else if (field === 'opacity') {\n this.attr('opacity', value);\n } else if (field === 'cursor') {\n this.css('cursor', value);\n } else if (field === 'id') {\n if (value) {\n this.attr('id', value);\n } else {\n this.removeAttr('id');\n }\n }\n BaseNode$$1.prototype.optionsChange.call(this, e);\n };\n Node.prototype.attr = function attr(name, value) {\n if (this.element) {\n this.element.setAttribute(name, value);\n }\n };\n Node.prototype.allAttr = function allAttr(attrs) {\n var this$1 = this;\n for (var i = 0; i < attrs.length; i++) {\n this$1.attr(attrs[i][0], attrs[i][1]);\n }\n };\n Node.prototype.css = function css(name, value) {\n if (this.element) {\n this.element.style[name] = value;\n }\n };\n Node.prototype.allCss = function allCss(styles) {\n var this$1 = this;\n for (var i = 0; i < styles.length; i++) {\n this$1.css(styles[i][0], styles[i][1]);\n }\n };\n Node.prototype.removeAttr = function removeAttr(name) {\n if (this.element) {\n this.element.removeAttribute(name);\n }\n };\n Node.prototype.mapTransform = function mapTransform(transform) {\n var attrs = [];\n if (transform) {\n attrs.push([\n TRANSFORM,\n 'matrix(' + transform.matrix().toString(6) + ')'\n ]);\n }\n return attrs;\n };\n Node.prototype.renderTransform = function renderTransform() {\n return renderAllAttr(this.mapTransform(this.srcElement.transform()));\n };\n Node.prototype.transformChange = function transformChange(value) {\n if (value) {\n this.allAttr(this.mapTransform(value));\n } else {\n this.removeAttr(TRANSFORM);\n }\n };\n Node.prototype.mapStyle = function mapStyle() {\n var options = this.srcElement.options;\n var style = [[\n 'cursor',\n options.cursor\n ]];\n if (options.visible === false) {\n style.push([\n 'display',\n NONE\n ]);\n }\n return style;\n };\n Node.prototype.renderStyle = function renderStyle$1() {\n return renderAttr('style', renderStyle(this.mapStyle(true)));\n };\n Node.prototype.renderOpacity = function renderOpacity() {\n return renderAttr('opacity', this.srcElement.options.opacity);\n };\n Node.prototype.renderId = function renderId() {\n return renderAttr('id', this.srcElement.options.id);\n };\n Node.prototype.createDefinitions = function createDefinitions() {\n var srcElement = this.srcElement;\n var definitions = this.definitions;\n if (srcElement) {\n var options = srcElement.options;\n var hasDefinitions;\n for (var field in DefinitionMap) {\n var definition = options.get(field);\n if (definition && isDefinition(field, definition)) {\n definitions[field] = definition;\n hasDefinitions = true;\n }\n }\n if (hasDefinitions) {\n this.definitionChange({\n action: 'add',\n definitions: definitions\n });\n }\n }\n };\n Node.prototype.definitionChange = function definitionChange(e) {\n if (this.parent) {\n this.parent.definitionChange(e);\n }\n };\n Node.prototype.updateDefinition = function updateDefinition(type, value) {\n var definitions = this.definitions;\n var current = definitions[type];\n var attr = DefinitionMap[type];\n var definition = {};\n if (current) {\n definition[type] = current;\n this.definitionChange({\n action: 'remove',\n definitions: definition\n });\n delete definitions[type];\n }\n if (!value) {\n if (current) {\n this.removeAttr(attr);\n }\n } else {\n definition[type] = value;\n this.definitionChange({\n action: 'add',\n definitions: definition\n });\n definitions[type] = value;\n this.attr(attr, this.refUrl(value.id));\n }\n };\n Node.prototype.clearDefinitions = function clearDefinitions() {\n var definitions = this.definitions;\n this.definitionChange({\n action: 'remove',\n definitions: definitions\n });\n this.definitions = {};\n };\n Node.prototype.renderDefinitions = function renderDefinitions() {\n return renderAllAttr(this.mapDefinitions());\n };\n Node.prototype.mapDefinitions = function mapDefinitions() {\n var this$1 = this;\n var definitions = this.definitions;\n var attrs = [];\n for (var field in definitions) {\n attrs.push([\n DefinitionMap[field],\n this$1.refUrl(definitions[field].id)\n ]);\n }\n return attrs;\n };\n Node.prototype.refUrl = function refUrl(id) {\n var skipBaseHref = (this.options || {}).skipBaseHref;\n var baseHref = this.baseUrl().replace(/'/g, '\\\\\\'');\n var base = skipBaseHref ? '' : baseHref;\n return 'url(' + base + '#' + id + ')';\n };\n Node.prototype.baseUrl = function baseUrl$1() {\n return baseUrl();\n };\n return Node;\n }(BaseNode);\n var GradientStopNode = function (Node$$1) {\n function GradientStopNode() {\n Node$$1.apply(this, arguments);\n }\n extendStatic(GradientStopNode, Node$$1);\n GradientStopNode.prototype = Object.create(Node$$1 && Node$$1.prototype);\n GradientStopNode.prototype.constructor = GradientStopNode;\n GradientStopNode.fn = GradientStopNode.prototype;\n GradientStopNode.fn.init = GradientStopNode.fn.constructor;\n GradientStopNode.prototype.template = function template() {\n return '