{"version":3,"sources":["../../node_modules/regenerator-runtime/runtime.js","../../node_modules/clsx/dist/clsx.m.js","../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../node_modules/prop-types/factoryWithThrowingShims.js","../../node_modules/prop-types/index.js","../../node_modules/react-swipeable/es/index.js","../../node_modules/lodash.throttle/index.js","../../node_modules/lodash.debounce/index.js","../../node_modules/lodash.isequal/index.js","../../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../../node_modules/react-image-gallery/build/SVG.js","../../node_modules/react-image-gallery/build/image-gallery.js","StandaloneGallery.tsx"],"names":["r","e","t","f","n","Array","isArray","length","clsx","arguments","ReactIs","require","throwOnDirectAccess","module","exports","isElement","_extends","Object","assign","target","i","source","key","prototype","hasOwnProperty","call","apply","_inheritsLoose","subClass","superClass","create","constructor","__proto__","defaultProps","preventDefaultTouchmoveEvent","delta","rotationAngle","trackMouse","trackTouch","initialState","xy","swiping","eventData","undefined","start","LEFT","RIGHT","UP","DOWN","touchStart","touchMove","touchEnd","mouseMove","mouseUp","getDirection","absX","absY","deltaX","deltaY","rotateXYByAngle","pos","angle","angleInRadians","Math","PI","x","cos","sin","y","getHandlers","set","handlerProps","onStart","event","touches","state","props","document","addEventListener","onMove","onUp","_ref","clientX","clientY","initial","concat","first","timeStamp","_ref2","_rotateXYByAngle","abs","time","velocity","sqrt","dir","onSwiping","cancelablePageSwipe","onSwiped","cancelable","preventDefault","onEnd","cleanUpMouse","removeEventListener","attachTouch","el","tls","forEach","_ref3","h","_ref4","onRef","addState","cleanUpTouch","output","ref","onMouseDown","updateTransientState","useSwipeable","transientState","React","useRef","type","transientProps","current","_React$useMemo","useMemo","cb","handlers","Swipeable","_React$PureComponent","_this","_set","_proto","render","_this$props","className","style","_this$props$nodeName","nodeName","innerRef","children","_getHandlers","createElement","PureComponent","propTypes","PropTypes","func","onSwipedUp","onSwipedRight","onSwipedDown","onSwipedLeft","number","bool","string","MapShim","Map","getIndex","arr","result","some","entry","index","class_1","__entries__","defineProperty","get","enumerable","configurable","value","push","delete","entries","splice","has","clear","callback","ctx","_i","_a","isBrowser","window","global$1","global","self","Function","requestAnimationFrame$1","requestAnimationFrame","bind","setTimeout","Date","now","trailingTimeout","throttle","delay","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","REFRESH_DELAY","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","addObserver","observer","indexOf","connect_","removeObserver","observers","disconnect_","changesDetected","updateObservers_","activeObservers","filter","gatherActive","hasActive","broadcastActive","observe","attributes","childList","characterData","subtree","disconnect","_b","propertyName","isReflowProperty","getInstance","instance_","defineConfigurable","keys","writable","getWindowOf","ownerGlobal","ownerDocument","defaultView","emptyRect","createRectInit","toFloat","parseFloat","getBordersSize","styles","positions","reduce","size","position","getPaddings","paddings","positions_1","getSVGContentRect","bbox","getBBox","width","height","getHTMLElementContentRect","clientWidth","clientHeight","getComputedStyle","horizPad","left","right","vertPad","top","bottom","boxSizing","round","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","documentElement","getContentRect","createReadOnlyRect","Constr","DOMRectReadOnly","rect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","contentRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","TypeError","callback_","controller_","callbackCtx_","Element","observations","unobserve","clearActive","observation","map","WeakMap","ResizeObserver","method"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACztBA,SAASA,CAAC,CAACC,CAAC,EAAC;EAAC,IAAIC,CAAC;IAACC,CAAC;IAACC,CAAC,GAAC,EAAE;EAAC,IAAG,QAAQ,IAAE,OAAOH,CAAC,IAAE,QAAQ,IAAE,OAAOA,CAAC,EAACG,CAAC,IAAEH,CAAC,CAAC,KAAK,IAAG,QAAQ,IAAE,OAAOA,CAAC,EAAC,IAAGI,KAAK,CAACC,OAAO,CAACL,CAAC,CAAC,EAAC,KAAIC,CAAC,GAAC,CAAC,EAACA,CAAC,GAACD,CAAC,CAACM,MAAM,EAACL,CAAC,EAAE,EAACD,CAAC,CAACC,CAAC,CAAC,KAAGC,CAAC,GAACH,CAAC,CAACC,CAAC,CAACC,CAAC,CAAC,CAAC,CAAC,KAAGE,CAAC,KAAGA,CAAC,IAAE,GAAG,CAAC,EAACA,CAAC,IAAED,CAAC,CAAC,CAAC,KAAK,KAAID,CAAC,IAAID,CAAC,EAACA,CAAC,CAACC,CAAC,CAAC,KAAGE,CAAC,KAAGA,CAAC,IAAE,GAAG,CAAC,EAACA,CAAC,IAAEF,CAAC,CAAC;EAAC,OAAOE,CAAC;AAAA;AAAQ,SAASI,IAAI,GAAE;EAAC,KAAI,IAAIP,CAAC,EAACC,CAAC,EAACC,CAAC,GAAC,CAAC,EAACC,CAAC,GAAC,EAAE,EAACD,CAAC,GAACM,SAAS,CAACF,MAAM,GAAE,CAACN,CAAC,GAACQ,SAAS,CAACN,CAAC,EAAE,CAAC,MAAID,CAAC,GAACF,CAAC,CAACC,CAAC,CAAC,CAAC,KAAGG,CAAC,KAAGA,CAAC,IAAE,GAAG,CAAC,EAACA,CAAC,IAAEF,CAAC,CAAC;EAAC,OAAOE,CAAC;AAAA;AAAC,eAAeI,IAAI;AAAA;;ACArX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,iBAAyB,YAAY,EAAE;EACzC,IAAIE,OAAO,GAAGC,OAAO,CAAC,UAAU,CAAC;;EAEjC;EACA;EACA,IAAIC,mBAAmB,GAAG,IAAI;EAC9BC,MAAM,CAACC,OAAO,GAAGH,OAAO,CAAC,2BAA2B,CAAC,CAACD,OAAO,CAACK,SAAS,EAAEH,mBAAmB,CAAC;AAC/F,CAAC,MAAM;EACL;EACA;EACAC,MAAM,CAACC,OAAO,GAAGH,OAAO,CAAC,4BAA4B,CAAC,EAAE;AAC1D;;;;;;;;;AClBA;AACA;AAAmC;AAEnC,SAASK,QAAQ,GAAG;EAClBA,QAAQ,GAAGC,MAAM,CAACC,MAAM,IAAI,UAAUC,MAAM,EAAE;IAC5C,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGX,SAAS,CAACF,MAAM,EAAEa,CAAC,EAAE,EAAE;MACzC,IAAIC,MAAM,GAAGZ,SAAS,CAACW,CAAC,CAAC;MAEzB,KAAK,IAAIE,GAAG,IAAID,MAAM,EAAE;QACtB,IAAIJ,MAAM,CAACM,SAAS,CAACC,cAAc,CAACC,IAAI,CAACJ,MAAM,EAAEC,GAAG,CAAC,EAAE;UACrDH,MAAM,CAACG,GAAG,CAAC,GAAGD,MAAM,CAACC,GAAG,CAAC;QAC3B;MACF;IACF;IAEA,OAAOH,MAAM;EACf,CAAC;EAED,OAAOH,QAAQ,CAACU,KAAK,CAAC,IAAI,EAAEjB,SAAS,CAAC;AACxC;AAEA,SAASkB,cAAc,CAACC,QAAQ,EAAEC,UAAU,EAAE;EAC5CD,QAAQ,CAACL,SAAS,GAAGN,MAAM,CAACa,MAAM,CAACD,UAAU,CAACN,SAAS,CAAC;EACxDK,QAAQ,CAACL,SAAS,CAACQ,WAAW,GAAGH,QAAQ;EACzCA,QAAQ,CAACI,SAAS,GAAGH,UAAU;AACjC;AAEA,IAAII,YAAY,GAAG;EACjBC,4BAA4B,EAAE,KAAK;EACnCC,KAAK,EAAE,EAAE;EACTC,aAAa,EAAE,CAAC;EAChBC,UAAU,EAAE,KAAK;EACjBC,UAAU,EAAE;AACd,CAAC;AACD,IAAIC,YAAY,GAAG;EACjBC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;EACVC,OAAO,EAAE,KAAK;EACdC,SAAS,EAAEC,SAAS;EACpBC,KAAK,EAAED;AACT,CAAC;AACD,IAAIE,IAAI,GAAG,MAAM;AAAC;AAClB,IAAIC,KAAK,GAAG,OAAO;AAAC;AACpB,IAAIC,EAAE,GAAG,IAAI;AAAC;AACd,IAAIC,IAAI,GAAG,MAAM;AAAC;AAClB,IAAIC,UAAU,GAAG,YAAY;AAC7B,IAAIC,SAAS,GAAG,WAAW;AAC3B,IAAIC,QAAQ,GAAG,UAAU;AACzB,IAAIC,SAAS,GAAG,WAAW;AAC3B,IAAIC,OAAO,GAAG,SAAS;AAEvB,SAASC,YAAY,CAACC,IAAI,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,EAAE;EAChD,IAAIH,IAAI,GAAGC,IAAI,EAAE;IACf,IAAIC,MAAM,GAAG,CAAC,EAAE;MACd,OAAOZ,IAAI;IACb;IAEA,OAAOC,KAAK;EACd,CAAC,MAAM,IAAIY,MAAM,GAAG,CAAC,EAAE;IACrB,OAAOX,EAAE;EACX;EAEA,OAAOC,IAAI;AACb;AAEA,SAASW,eAAe,CAACC,GAAG,EAAEC,KAAK,EAAE;EACnC,IAAIA,KAAK,KAAK,CAAC,EAAE,OAAOD,GAAG;EAC3B,IAAIE,cAAc,GAAGC,IAAI,CAACC,EAAE,GAAG,GAAG,GAAGH,KAAK;EAC1C,IAAII,CAAC,GAAGL,GAAG,CAAC,CAAC,CAAC,GAAGG,IAAI,CAACG,GAAG,CAACJ,cAAc,CAAC,GAAGF,GAAG,CAAC,CAAC,CAAC,GAAGG,IAAI,CAACI,GAAG,CAACL,cAAc,CAAC;EAC7E,IAAIM,CAAC,GAAGR,GAAG,CAAC,CAAC,CAAC,GAAGG,IAAI,CAACG,GAAG,CAACJ,cAAc,CAAC,GAAGF,GAAG,CAAC,CAAC,CAAC,GAAGG,IAAI,CAACI,GAAG,CAACL,cAAc,CAAC;EAC7E,OAAO,CAACG,CAAC,EAAEG,CAAC,CAAC;AACf;AAEA,SAASC,WAAW,CAACC,GAAG,EAAEC,YAAY,EAAE;EACtC,IAAIC,OAAO,GAAG,SAASA,OAAO,CAACC,KAAK,EAAE;IACpC;IACA,IAAIA,KAAK,CAACC,OAAO,IAAID,KAAK,CAACC,OAAO,CAACnE,MAAM,GAAG,CAAC,EAAE;IAC/C+D,GAAG,CAAC,UAAUK,KAAK,EAAEC,KAAK,EAAE;MAC1B;MACA,IAAIA,KAAK,CAACvC,UAAU,EAAE;QACpBwC,QAAQ,CAACC,gBAAgB,CAAC1B,SAAS,EAAE2B,MAAM,CAAC;QAC5CF,QAAQ,CAACC,gBAAgB,CAACzB,OAAO,EAAE2B,IAAI,CAAC;MAC1C;MAEA,IAAIC,IAAI,GAAGR,KAAK,CAACC,OAAO,GAAGD,KAAK,CAACC,OAAO,CAAC,CAAC,CAAC,GAAGD,KAAK;QAC/CS,OAAO,GAAGD,IAAI,CAACC,OAAO;QACtBC,OAAO,GAAGF,IAAI,CAACE,OAAO;MAE1B,IAAI3C,EAAE,GAAGmB,eAAe,CAAC,CAACuB,OAAO,EAAEC,OAAO,CAAC,EAAEP,KAAK,CAACxC,aAAa,CAAC;MACjE,OAAOpB,QAAQ,CAAC,CAAC,CAAC,EAAE2D,KAAK,EAAEpC,YAAY,EAAE;QACvCG,SAAS,EAAE;UACT0C,OAAO,EAAE,EAAE,CAACC,MAAM,CAAC7C,EAAE,CAAC;UACtB8C,KAAK,EAAE;QACT,CAAC;QACD9C,EAAE,EAAEA,EAAE;QACNI,KAAK,EAAE6B,KAAK,CAACc,SAAS,IAAI;MAC5B,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC;EAED,IAAIR,MAAM,GAAG,SAASA,MAAM,CAACN,KAAK,EAAE;IAClCH,GAAG,CAAC,UAAUK,KAAK,EAAEC,KAAK,EAAE;MAC1B,IAAI,CAACD,KAAK,CAACnC,EAAE,CAAC,CAAC,CAAC,IAAI,CAACmC,KAAK,CAACnC,EAAE,CAAC,CAAC,CAAC,IAAIiC,KAAK,CAACC,OAAO,IAAID,KAAK,CAACC,OAAO,CAACnE,MAAM,GAAG,CAAC,EAAE;QAC7E,OAAOoE,KAAK;MACd;MAEA,IAAIa,KAAK,GAAGf,KAAK,CAACC,OAAO,GAAGD,KAAK,CAACC,OAAO,CAAC,CAAC,CAAC,GAAGD,KAAK;QAChDS,OAAO,GAAGM,KAAK,CAACN,OAAO;QACvBC,OAAO,GAAGK,KAAK,CAACL,OAAO;MAE3B,IAAIM,gBAAgB,GAAG9B,eAAe,CAAC,CAACuB,OAAO,EAAEC,OAAO,CAAC,EAAEP,KAAK,CAACxC,aAAa,CAAC;QAC3E6B,CAAC,GAAGwB,gBAAgB,CAAC,CAAC,CAAC;QACvBrB,CAAC,GAAGqB,gBAAgB,CAAC,CAAC,CAAC;MAE3B,IAAIhC,MAAM,GAAGkB,KAAK,CAACnC,EAAE,CAAC,CAAC,CAAC,GAAGyB,CAAC;MAC5B,IAAIP,MAAM,GAAGiB,KAAK,CAACnC,EAAE,CAAC,CAAC,CAAC,GAAG4B,CAAC;MAC5B,IAAIb,IAAI,GAAGQ,IAAI,CAAC2B,GAAG,CAACjC,MAAM,CAAC;MAC3B,IAAID,IAAI,GAAGO,IAAI,CAAC2B,GAAG,CAAChC,MAAM,CAAC;MAC3B,IAAIiC,IAAI,GAAG,CAAClB,KAAK,CAACc,SAAS,IAAI,CAAC,IAAIZ,KAAK,CAAC/B,KAAK;MAC/C,IAAIgD,QAAQ,GAAG7B,IAAI,CAAC8B,IAAI,CAACtC,IAAI,GAAGA,IAAI,GAAGC,IAAI,GAAGA,IAAI,CAAC,IAAImC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;;MAEnE,IAAIpC,IAAI,GAAGqB,KAAK,CAACzC,KAAK,IAAIqB,IAAI,GAAGoB,KAAK,CAACzC,KAAK,IAAI,CAACwC,KAAK,CAAClC,OAAO,EAAE,OAAOkC,KAAK;MAC5E,IAAImB,GAAG,GAAGxC,YAAY,CAACC,IAAI,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,CAAC;MAElD,IAAIhB,SAAS,GAAG1B,QAAQ,CAAC,CAAC,CAAC,EAAE2D,KAAK,CAACjC,SAAS,EAAE;QAC5C+B,KAAK,EAAEA,KAAK;QACZlB,IAAI,EAAEA,IAAI;QACVC,IAAI,EAAEA,IAAI;QACVC,MAAM,EAAEA,MAAM;QACdC,MAAM,EAAEA,MAAM;QACdkC,QAAQ,EAAEA,QAAQ;QAClBE,GAAG,EAAEA;MACP,CAAC,CAAC;MAEFlB,KAAK,CAACmB,SAAS,IAAInB,KAAK,CAACmB,SAAS,CAACrD,SAAS,CAAC,CAAC,CAAC;MAC/C;;MAEA,IAAIsD,mBAAmB,GAAG,KAAK;MAE/B,IAAIpB,KAAK,CAACmB,SAAS,IAAInB,KAAK,CAACqB,QAAQ,IAAIrB,KAAK,CAAC,UAAU,GAAGkB,GAAG,CAAC,EAAE;QAChEE,mBAAmB,GAAG,IAAI;MAC5B;MAEA,IAAIA,mBAAmB,IAAIpB,KAAK,CAAC1C,4BAA4B,IAAI0C,KAAK,CAACtC,UAAU,IAAImC,KAAK,CAACyB,UAAU,EAAEzB,KAAK,CAAC0B,cAAc,EAAE,CAAC,CAAC;;MAE/H,OAAOnF,QAAQ,CAAC,CAAC,CAAC,EAAE2D,KAAK,EAAE;QACzBjC,SAAS,EAAE1B,QAAQ,CAAC,CAAC,CAAC,EAAE0B,SAAS,EAAE;UACjC4C,KAAK,EAAE;QACT,CAAC,CAAC;QACF7C,OAAO,EAAE;MACX,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC;EAED,IAAI2D,KAAK,GAAG,SAASA,KAAK,CAAC3B,KAAK,EAAE;IAChCH,GAAG,CAAC,UAAUK,KAAK,EAAEC,KAAK,EAAE;MAC1B,IAAIlC,SAAS;MAEb,IAAIiC,KAAK,CAAClC,OAAO,EAAE;QACjBC,SAAS,GAAG1B,QAAQ,CAAC,CAAC,CAAC,EAAE2D,KAAK,CAACjC,SAAS,EAAE;UACxC+B,KAAK,EAAEA;QACT,CAAC,CAAC;QACFG,KAAK,CAACqB,QAAQ,IAAIrB,KAAK,CAACqB,QAAQ,CAACvD,SAAS,CAAC;QAC3CkC,KAAK,CAAC,UAAU,GAAGlC,SAAS,CAACoD,GAAG,CAAC,IAAIlB,KAAK,CAAC,UAAU,GAAGlC,SAAS,CAACoD,GAAG,CAAC,CAACpD,SAAS,CAAC;MACnF;MAEA,OAAO1B,QAAQ,CAAC,CAAC,CAAC,EAAE2D,KAAK,EAAEpC,YAAY,EAAE;QACvCG,SAAS,EAAEA;MACb,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC;EAED,IAAI2D,YAAY,GAAG,SAASA,YAAY,GAAG;IACzC;IACAxB,QAAQ,CAACyB,mBAAmB,CAAClD,SAAS,EAAE2B,MAAM,CAAC;IAC/CF,QAAQ,CAACyB,mBAAmB,CAACjD,OAAO,EAAE2B,IAAI,CAAC;EAC7C,CAAC;EAED,IAAIA,IAAI,GAAG,SAASA,IAAI,CAAC/E,CAAC,EAAE;IAC1BoG,YAAY,EAAE;IACdD,KAAK,CAACnG,CAAC,CAAC;EACV,CAAC;EAED,IAAIsG,WAAW,GAAG,SAASA,WAAW,CAACC,EAAE,EAAE;IACzC,IAAIA,EAAE,IAAIA,EAAE,CAAC1B,gBAAgB,EAAE;MAC7B;MACA,IAAI2B,GAAG,GAAG,CAAC,CAACxD,UAAU,EAAEuB,OAAO,CAAC,EAAE,CAACtB,SAAS,EAAE6B,MAAM,CAAC,EAAE,CAAC5B,QAAQ,EAAEiD,KAAK,CAAC,CAAC;MACzEK,GAAG,CAACC,OAAO,CAAC,UAAUC,KAAK,EAAE;QAC3B,IAAI1G,CAAC,GAAG0G,KAAK,CAAC,CAAC,CAAC;UACZC,CAAC,GAAGD,KAAK,CAAC,CAAC,CAAC;QAChB,OAAOH,EAAE,CAAC1B,gBAAgB,CAAC7E,CAAC,EAAE2G,CAAC,CAAC;MAClC,CAAC,CAAC,CAAC,CAAC;;MAEJ,OAAO,YAAY;QACjB,OAAOH,GAAG,CAACC,OAAO,CAAC,UAAUG,KAAK,EAAE;UAClC,IAAI5G,CAAC,GAAG4G,KAAK,CAAC,CAAC,CAAC;YACZD,CAAC,GAAGC,KAAK,CAAC,CAAC,CAAC;UAChB,OAAOL,EAAE,CAACF,mBAAmB,CAACrG,CAAC,EAAE2G,CAAC,CAAC;QACrC,CAAC,CAAC;MACJ,CAAC;IACH;EACF,CAAC;EAED,IAAIE,KAAK,GAAG,SAASA,KAAK,CAACN,EAAE,EAAE;IAC7B;IACA;IACA,IAAIA,EAAE,KAAK,IAAI,EAAE;IACjBlC,GAAG,CAAC,UAAUK,KAAK,EAAEC,KAAK,EAAE;MAC1B;MACA,IAAID,KAAK,CAAC6B,EAAE,KAAKA,EAAE,EAAE,OAAO7B,KAAK;MACjC,IAAIoC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;;MAEnB,IAAIpC,KAAK,CAAC6B,EAAE,IAAI7B,KAAK,CAAC6B,EAAE,KAAKA,EAAE,IAAI7B,KAAK,CAACqC,YAAY,EAAE;QACrDrC,KAAK,CAACqC,YAAY,EAAE;QACpBD,QAAQ,CAACC,YAAY,GAAG,IAAI;MAC9B,CAAC,CAAC;;MAGF,IAAIpC,KAAK,CAACtC,UAAU,IAAIkE,EAAE,EAAE;QAC1BO,QAAQ,CAACC,YAAY,GAAGT,WAAW,CAACC,EAAE,CAAC;MACzC,CAAC,CAAC;;MAGF,OAAOxF,QAAQ,CAAC,CAAC,CAAC,EAAE2D,KAAK,EAAE;QACzB6B,EAAE,EAAEA;MACN,CAAC,EAAEO,QAAQ,CAAC;IACd,CAAC,CAAC;EACJ,CAAC,CAAC,CAAC;;EAGH,IAAIE,MAAM,GAAG;IACXC,GAAG,EAAEJ,KAAK,CAAC;EAEb,CAAC;;EAED,IAAIvC,YAAY,CAAClC,UAAU,EAAE;IAC3B4E,MAAM,CAACE,WAAW,GAAG3C,OAAO;EAC9B;EAEA,OAAO,CAACyC,MAAM,EAAEV,WAAW,CAAC;AAC9B;AAEA,SAASa,oBAAoB,CAACzC,KAAK,EAAEC,KAAK,EAAE2B,WAAW,EAAE;EACvD,IAAIQ,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;;EAEnB,IAAI,CAACnC,KAAK,CAACtC,UAAU,IAAIqC,KAAK,CAACqC,YAAY,EAAE;IAC3CrC,KAAK,CAACqC,YAAY,EAAE;IACpBD,QAAQ,CAACC,YAAY,GAAG,IAAI;EAC9B,CAAC,MAAM,IAAIpC,KAAK,CAACtC,UAAU,IAAI,CAACqC,KAAK,CAACqC,YAAY,EAAE;IAClD;IACA,IAAIrC,KAAK,CAAC6B,EAAE,EAAE;MACZO,QAAQ,CAACC,YAAY,GAAGT,WAAW,CAAC5B,KAAK,CAAC6B,EAAE,CAAC;IAC/C;EACF;EAEA,OAAOxF,QAAQ,CAAC,CAAC,CAAC,EAAE2D,KAAK,EAAEoC,QAAQ,CAAC;AACtC;AAEA,SAASM,YAAY,CAACzC,KAAK,EAAE;EAC3B,IAAIvC,UAAU,GAAGuC,KAAK,CAACvC,UAAU;EACjC,IAAIiF,cAAc,GAAGC,cAAK,CAACC,MAAM,CAACxG,QAAQ,CAAC,CAAC,CAAC,EAAEuB,YAAY,EAAE;IAC3DkF,IAAI,EAAE;EACR,CAAC,CAAC,CAAC;EACH,IAAIC,cAAc,GAAGH,cAAK,CAACC,MAAM,EAAE;EACnCE,cAAc,CAACC,OAAO,GAAG3G,QAAQ,CAAC,CAAC,CAAC,EAAEiB,YAAY,EAAE2C,KAAK,CAAC;EAE1D,IAAIgD,cAAc,GAAGL,cAAK,CAACM,OAAO,CAAC,YAAY;MAC7C,OAAOxD,WAAW,CAAC,UAAUyD,EAAE,EAAE;QAC/B,OAAOR,cAAc,CAACK,OAAO,GAAGG,EAAE,CAACR,cAAc,CAACK,OAAO,EAAED,cAAc,CAACC,OAAO,CAAC;MACpF,CAAC,EAAE;QACDtF,UAAU,EAAEA;MACd,CAAC,CAAC;IACJ,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;IACZ0F,QAAQ,GAAGH,cAAc,CAAC,CAAC,CAAC;IAC5BrB,WAAW,GAAGqB,cAAc,CAAC,CAAC,CAAC;EAEnCN,cAAc,CAACK,OAAO,GAAGP,oBAAoB,CAACE,cAAc,CAACK,OAAO,EAAED,cAAc,CAACC,OAAO,EAAEpB,WAAW,CAAC;EAC1G,OAAOwB,QAAQ;AACjB;AACA,IAAIC,SAAS,GACb;AACA,UAAUC,oBAAoB,EAAE;EAC9BtG,cAAc,CAACqG,SAAS,EAAEC,oBAAoB,CAAC;EAE/C,SAASD,SAAS,CAACpD,KAAK,EAAE;IACxB,IAAIsD,KAAK;IAETA,KAAK,GAAGD,oBAAoB,CAACxG,IAAI,CAAC,IAAI,EAAEmD,KAAK,CAAC,IAAI,IAAI;IAEtDsD,KAAK,CAACC,IAAI,GAAG,UAAUL,EAAE,EAAE;MACzBI,KAAK,CAACZ,cAAc,GAAGQ,EAAE,CAACI,KAAK,CAACZ,cAAc,EAAEY,KAAK,CAACtD,KAAK,CAAC;IAC9D,CAAC;IAEDsD,KAAK,CAACZ,cAAc,GAAGtG,QAAQ,CAAC,CAAC,CAAC,EAAEuB,YAAY,EAAE;MAChDkF,IAAI,EAAE;IACR,CAAC,CAAC;IACF,OAAOS,KAAK;EACd;EAEA,IAAIE,MAAM,GAAGJ,SAAS,CAACzG,SAAS;EAEhC6G,MAAM,CAACC,MAAM,GAAG,SAASA,MAAM,GAAG;IAChC,IAAIC,WAAW,GAAG,IAAI,CAAC1D,KAAK;MACxB2D,SAAS,GAAGD,WAAW,CAACC,SAAS;MACjCC,KAAK,GAAGF,WAAW,CAACE,KAAK;MACzBC,oBAAoB,GAAGH,WAAW,CAACI,QAAQ;MAC3CA,QAAQ,GAAGD,oBAAoB,KAAK,KAAK,CAAC,GAAG,KAAK,GAAGA,oBAAoB;MACzEE,QAAQ,GAAGL,WAAW,CAACK,QAAQ;MAC/BC,QAAQ,GAAGN,WAAW,CAACM,QAAQ;MAC/BvG,UAAU,GAAGiG,WAAW,CAACjG,UAAU;IAEvC,IAAIwG,YAAY,GAAGxE,WAAW,CAAC,IAAI,CAAC8D,IAAI,EAAE;QACxC9F,UAAU,EAAEA;MACd,CAAC,CAAC;MACE0F,QAAQ,GAAGc,YAAY,CAAC,CAAC,CAAC;MAC1BtC,WAAW,GAAGsC,YAAY,CAAC,CAAC,CAAC;IAEjC,IAAI,CAACvB,cAAc,GAAGF,oBAAoB,CAAC,IAAI,CAACE,cAAc,EAAE,IAAI,CAAC1C,KAAK,EAAE2B,WAAW,CAAC;IACxF,IAAIW,GAAG,GAAGyB,QAAQ,GAAG,UAAUnC,EAAE,EAAE;MACjC,OAAOmC,QAAQ,CAACnC,EAAE,CAAC,EAAEuB,QAAQ,CAACb,GAAG,CAACV,EAAE,CAAC;IACvC,CAAC,GAAGuB,QAAQ,CAACb,GAAG;IAChB,OAAOK,cAAK,CAACuB,aAAa,CAACJ,QAAQ,EAAE1H,QAAQ,CAAC,CAAC,CAAC,EAAE+G,QAAQ,EAAE;MAC1DQ,SAAS,EAAEA,SAAS;MACpBC,KAAK,EAAEA,KAAK;MACZtB,GAAG,EAAEA;IACP,CAAC,CAAC,EAAE0B,QAAQ,CAAC;EACf,CAAC;EAED,OAAOZ,SAAS;AAClB,CAAC,CAACT,cAAK,CAACwB,aAAa,CAAC;AAAC;AACvBf,SAAS,CAACgB,SAAS,GAAG;EACpB/C,QAAQ,EAAEgD,kBAAS,CAACC,IAAI;EACxBnD,SAAS,EAAEkD,kBAAS,CAACC,IAAI;EACzBC,UAAU,EAAEF,kBAAS,CAACC,IAAI;EAC1BE,aAAa,EAAEH,kBAAS,CAACC,IAAI;EAC7BG,YAAY,EAAEJ,kBAAS,CAACC,IAAI;EAC5BI,YAAY,EAAEL,kBAAS,CAACC,IAAI;EAC5B/G,KAAK,EAAE8G,kBAAS,CAACM,MAAM;EACvBrH,4BAA4B,EAAE+G,kBAAS,CAACO,IAAI;EAC5Cd,QAAQ,EAAEO,kBAAS,CAACQ,MAAM;EAC1BpH,UAAU,EAAE4G,kBAAS,CAACO,IAAI;EAC1BlH,UAAU,EAAE2G,kBAAS,CAACO,IAAI;EAC1Bb,QAAQ,EAAEM,kBAAS,CAACC,IAAI;EACxB9G,aAAa,EAAE6G,kBAAS,CAACM;AAC3B,CAAC;AACDvB,SAAS,CAAC/F,YAAY,GAAGA,YAAY;;;ACxVrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACvbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACzXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIyH,OAAO,GAAI,YAAY;EACvB,IAAI,OAAOC,GAAG,KAAK,WAAW,EAAE;IAC5B,OAAOA,GAAG;EACd;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI,SAASC,QAAQ,CAACC,GAAG,EAAEvI,GAAG,EAAE;IACxB,IAAIwI,MAAM,GAAG,CAAC,CAAC;IACfD,GAAG,CAACE,IAAI,CAAC,UAAUC,KAAK,EAAEC,KAAK,EAAE;MAC7B,IAAID,KAAK,CAAC,CAAC,CAAC,KAAK1I,GAAG,EAAE;QAClBwI,MAAM,GAAGG,KAAK;QACd,OAAO,IAAI;MACf;MACA,OAAO,KAAK;IAChB,CAAC,CAAC;IACF,OAAOH,MAAM;EACjB;EACA,OAAO,cAAe,YAAY;MAC9B,SAASI,OAAO,GAAG;QACf,IAAI,CAACC,WAAW,GAAG,EAAE;MACzB;MACAlJ,MAAM,CAACmJ,cAAc,CAACF,OAAO,CAAC3I,SAAS,EAAE,MAAM,EAAE;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AClqDA;AACA;AACA;AAEA;AAA0E;AAE1E,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAc,kBAAkB,CAAC;AAE3E,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAG;EACvB,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;EAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAA4B;EAEhF,MAAM,OAAO,GAAI,cAAA,CAAA,aAAA,CAAC,0BAAY,EAAA;IAAC,KAAK,EAAE,MAAM;IAAE,oBAAoB,EAAE,KAAK;IAAE,QAAQ,EAAE,KAAK;IAAE,QAAQ,EAAE,KAAK;IAAE,cAAc,EAAE,KAAK;IAAE,cAAc,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC;IAAE,iBAAiB,EAAE;EAAQ,CAAA,CAAK;EAEvM,iBAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;AACrC,CAAC,CAAC","file":"StandaloneGallery.js","sourceRoot":"..\\react","sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t absY) {\n if (deltaX > 0) {\n return LEFT;\n }\n\n return RIGHT;\n } else if (deltaY > 0) {\n return UP;\n }\n\n return DOWN;\n}\n\nfunction rotateXYByAngle(pos, angle) {\n if (angle === 0) return pos;\n var angleInRadians = Math.PI / 180 * angle;\n var x = pos[0] * Math.cos(angleInRadians) + pos[1] * Math.sin(angleInRadians);\n var y = pos[1] * Math.cos(angleInRadians) - pos[0] * Math.sin(angleInRadians);\n return [x, y];\n}\n\nfunction getHandlers(set, handlerProps) {\n var onStart = function onStart(event) {\n // if more than a single touch don't track, for now...\n if (event.touches && event.touches.length > 1) return;\n set(function (state, props) {\n // setup mouse listeners on document to track swipe since swipe can leave container\n if (props.trackMouse) {\n document.addEventListener(mouseMove, onMove);\n document.addEventListener(mouseUp, onUp);\n }\n\n var _ref = event.touches ? event.touches[0] : event,\n clientX = _ref.clientX,\n clientY = _ref.clientY;\n\n var xy = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n return _extends({}, state, initialState, {\n eventData: {\n initial: [].concat(xy),\n first: true\n },\n xy: xy,\n start: event.timeStamp || 0\n });\n });\n };\n\n var onMove = function onMove(event) {\n set(function (state, props) {\n if (!state.xy[0] || !state.xy[1] || event.touches && event.touches.length > 1) {\n return state;\n }\n\n var _ref2 = event.touches ? event.touches[0] : event,\n clientX = _ref2.clientX,\n clientY = _ref2.clientY;\n\n var _rotateXYByAngle = rotateXYByAngle([clientX, clientY], props.rotationAngle),\n x = _rotateXYByAngle[0],\n y = _rotateXYByAngle[1];\n\n var deltaX = state.xy[0] - x;\n var deltaY = state.xy[1] - y;\n var absX = Math.abs(deltaX);\n var absY = Math.abs(deltaY);\n var time = (event.timeStamp || 0) - state.start;\n var velocity = Math.sqrt(absX * absX + absY * absY) / (time || 1); // if swipe is under delta and we have not started to track a swipe: skip update\n\n if (absX < props.delta && absY < props.delta && !state.swiping) return state;\n var dir = getDirection(absX, absY, deltaX, deltaY);\n\n var eventData = _extends({}, state.eventData, {\n event: event,\n absX: absX,\n absY: absY,\n deltaX: deltaX,\n deltaY: deltaY,\n velocity: velocity,\n dir: dir\n });\n\n props.onSwiping && props.onSwiping(eventData); // track if a swipe is cancelable(handler for swiping or swiped(dir) exists)\n // so we can call preventDefault if needed\n\n var cancelablePageSwipe = false;\n\n if (props.onSwiping || props.onSwiped || props[\"onSwiped\" + dir]) {\n cancelablePageSwipe = true;\n }\n\n if (cancelablePageSwipe && props.preventDefaultTouchmoveEvent && props.trackTouch && event.cancelable) event.preventDefault(); // first is now always false\n\n return _extends({}, state, {\n eventData: _extends({}, eventData, {\n first: false\n }),\n swiping: true\n });\n });\n };\n\n var onEnd = function onEnd(event) {\n set(function (state, props) {\n var eventData;\n\n if (state.swiping) {\n eventData = _extends({}, state.eventData, {\n event: event\n });\n props.onSwiped && props.onSwiped(eventData);\n props[\"onSwiped\" + eventData.dir] && props[\"onSwiped\" + eventData.dir](eventData);\n }\n\n return _extends({}, state, initialState, {\n eventData: eventData\n });\n });\n };\n\n var cleanUpMouse = function cleanUpMouse() {\n // safe to just call removeEventListener\n document.removeEventListener(mouseMove, onMove);\n document.removeEventListener(mouseUp, onUp);\n };\n\n var onUp = function onUp(e) {\n cleanUpMouse();\n onEnd(e);\n };\n\n var attachTouch = function attachTouch(el) {\n if (el && el.addEventListener) {\n // attach touch event listeners and handlers\n var tls = [[touchStart, onStart], [touchMove, onMove], [touchEnd, onEnd]];\n tls.forEach(function (_ref3) {\n var e = _ref3[0],\n h = _ref3[1];\n return el.addEventListener(e, h);\n }); // return properly scoped cleanup method for removing listeners\n\n return function () {\n return tls.forEach(function (_ref4) {\n var e = _ref4[0],\n h = _ref4[1];\n return el.removeEventListener(e, h);\n });\n };\n }\n };\n\n var onRef = function onRef(el) {\n // \"inline\" ref functions are called twice on render, once with null then again with DOM element\n // ignore null here\n if (el === null) return;\n set(function (state, props) {\n // if the same DOM el as previous just return state\n if (state.el === el) return state;\n var addState = {}; // if new DOM el clean up old DOM and reset cleanUpTouch\n\n if (state.el && state.el !== el && state.cleanUpTouch) {\n state.cleanUpTouch();\n addState.cleanUpTouch = null;\n } // only attach if we want to track touch\n\n\n if (props.trackTouch && el) {\n addState.cleanUpTouch = attachTouch(el);\n } // store event attached DOM el for comparison, clean up, and re-attachment\n\n\n return _extends({}, state, {\n el: el\n }, addState);\n });\n }; // set ref callback to attach touch event listeners\n\n\n var output = {\n ref: onRef // if track mouse attach mouse down listener\n\n };\n\n if (handlerProps.trackMouse) {\n output.onMouseDown = onStart;\n }\n\n return [output, attachTouch];\n}\n\nfunction updateTransientState(state, props, attachTouch) {\n var addState = {}; // clean up touch handlers if no longer tracking touches\n\n if (!props.trackTouch && state.cleanUpTouch) {\n state.cleanUpTouch();\n addState.cleanUpTouch = null;\n } else if (props.trackTouch && !state.cleanUpTouch) {\n // attach/re-attach touch handlers\n if (state.el) {\n addState.cleanUpTouch = attachTouch(state.el);\n }\n }\n\n return _extends({}, state, addState);\n}\n\nfunction useSwipeable(props) {\n var trackMouse = props.trackMouse;\n var transientState = React.useRef(_extends({}, initialState, {\n type: 'hook'\n }));\n var transientProps = React.useRef();\n transientProps.current = _extends({}, defaultProps, props);\n\n var _React$useMemo = React.useMemo(function () {\n return getHandlers(function (cb) {\n return transientState.current = cb(transientState.current, transientProps.current);\n }, {\n trackMouse: trackMouse\n });\n }, [trackMouse]),\n handlers = _React$useMemo[0],\n attachTouch = _React$useMemo[1];\n\n transientState.current = updateTransientState(transientState.current, transientProps.current, attachTouch);\n return handlers;\n}\nvar Swipeable =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inheritsLoose(Swipeable, _React$PureComponent);\n\n function Swipeable(props) {\n var _this;\n\n _this = _React$PureComponent.call(this, props) || this;\n\n _this._set = function (cb) {\n _this.transientState = cb(_this.transientState, _this.props);\n };\n\n _this.transientState = _extends({}, initialState, {\n type: 'class'\n });\n return _this;\n }\n\n var _proto = Swipeable.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n className = _this$props.className,\n style = _this$props.style,\n _this$props$nodeName = _this$props.nodeName,\n nodeName = _this$props$nodeName === void 0 ? 'div' : _this$props$nodeName,\n innerRef = _this$props.innerRef,\n children = _this$props.children,\n trackMouse = _this$props.trackMouse;\n\n var _getHandlers = getHandlers(this._set, {\n trackMouse: trackMouse\n }),\n handlers = _getHandlers[0],\n attachTouch = _getHandlers[1];\n\n this.transientState = updateTransientState(this.transientState, this.props, attachTouch);\n var ref = innerRef ? function (el) {\n return innerRef(el), handlers.ref(el);\n } : handlers.ref;\n return React.createElement(nodeName, _extends({}, handlers, {\n className: className,\n style: style,\n ref: ref\n }), children);\n };\n\n return Swipeable;\n}(React.PureComponent);\nSwipeable.propTypes = {\n onSwiped: PropTypes.func,\n onSwiping: PropTypes.func,\n onSwipedUp: PropTypes.func,\n onSwipedRight: PropTypes.func,\n onSwipedDown: PropTypes.func,\n onSwipedLeft: PropTypes.func,\n delta: PropTypes.number,\n preventDefaultTouchmoveEvent: PropTypes.bool,\n nodeName: PropTypes.string,\n trackMouse: PropTypes.bool,\n trackTouch: PropTypes.bool,\n innerRef: PropTypes.func,\n rotationAngle: PropTypes.number\n};\nSwipeable.defaultProps = defaultProps;\n\nexport { DOWN, LEFT, RIGHT, Swipeable, UP, useSwipeable };\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar left = _react2.default.createElement('polyline', { points: '15 18 9 12 15 6' });\nvar right = _react2.default.createElement('polyline', { points: '9 18 15 12 9 6' });\nvar maximize = _react2.default.createElement('path', { d: 'M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3' });\nvar minimize = _react2.default.createElement('path', { d: 'M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3' });\nvar play = _react2.default.createElement('polygon', { points: '5 3 19 12 5 21 5 3' });\nvar pause = _react2.default.createElement(\n _react2.default.Fragment,\n null,\n _react2.default.createElement('rect', { x: '6', y: '4', width: '4', height: '16' }),\n _react2.default.createElement('rect', { x: '14', y: '4', width: '4', height: '16' })\n);\n\nvar iconMapper = {\n left: left,\n right: right,\n maximize: maximize,\n minimize: minimize,\n play: play,\n pause: pause\n};\n\nvar SVG = function SVG(props) {\n var strokeWidth = props.strokeWidth,\n viewBox = props.viewBox,\n icon = props.icon;\n\n return _react2.default.createElement(\n 'svg',\n {\n className: 'image-gallery-svg',\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: viewBox,\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: strokeWidth,\n strokeLinecap: 'round',\n strokeLinejoin: 'round'\n },\n iconMapper[icon]\n );\n};\n\nSVG.propTypes = {\n strokeWidth: _propTypes.number,\n viewBox: _propTypes.string,\n icon: (0, _propTypes.oneOf)(['left', 'right', 'maximize', 'minimize', 'play', 'pause']).isRequired\n};\n\nSVG.defaultProps = {\n strokeWidth: 1,\n viewBox: '0 0 24 24'\n};\n\nexports.default = SVG;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clsx = require('clsx');\n\nvar _clsx2 = _interopRequireDefault(_clsx);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactSwipeable = require('react-swipeable');\n\nvar _lodash = require('lodash.throttle');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _lodash3 = require('lodash.debounce');\n\nvar _lodash4 = _interopRequireDefault(_lodash3);\n\nvar _lodash5 = require('lodash.isequal');\n\nvar _lodash6 = _interopRequireDefault(_lodash5);\n\nvar _resizeObserverPolyfill = require('resize-observer-polyfill');\n\nvar _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill);\n\nvar _propTypes = require('prop-types');\n\nvar _SVG = require('./SVG');\n\nvar _SVG2 = _interopRequireDefault(_SVG);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar screenChangeEvents = ['fullscreenchange', 'MSFullscreenChange', 'mozfullscreenchange', 'webkitfullscreenchange'];\n\nvar imageSetType = (0, _propTypes.arrayOf)((0, _propTypes.shape)({\n srcSet: _propTypes.string,\n media: _propTypes.string\n}));\n\nfunction isEnterOrSpaceKey(event) {\n var key = parseInt(event.keyCode || event.which || 0, 10);\n var ENTER_KEY_CODE = 66;\n var SPACEBAR_KEY_CODE = 62;\n return key === ENTER_KEY_CODE || key === SPACEBAR_KEY_CODE;\n}\n\nvar ImageGallery = function (_React$Component) {\n _inherits(ImageGallery, _React$Component);\n\n function ImageGallery(props) {\n _classCallCheck(this, ImageGallery);\n\n var _this = _possibleConstructorReturn(this, (ImageGallery.__proto__ || Object.getPrototypeOf(ImageGallery)).call(this, props));\n\n _this.state = {\n currentIndex: props.startIndex,\n thumbsTranslate: 0,\n currentSlideOffset: 0,\n galleryWidth: 0,\n thumbnailsWrapperWidth: 0,\n thumbnailsWrapperHeight: 0,\n isFullscreen: false,\n isPlaying: false\n };\n _this.loadedImages = {};\n _this.imageGallery = _react2.default.createRef();\n _this.thumbnailsWrapper = _react2.default.createRef();\n _this.thumbnails = _react2.default.createRef();\n _this.imageGallerySlideWrapper = _react2.default.createRef();\n\n // bindings\n _this.handleKeyDown = _this.handleKeyDown.bind(_this);\n _this.handleMouseDown = _this.handleMouseDown.bind(_this);\n _this.handleOnSwiped = _this.handleOnSwiped.bind(_this);\n _this.handleScreenChange = _this.handleScreenChange.bind(_this);\n _this.handleSwiping = _this.handleSwiping.bind(_this);\n _this.onThumbnailMouseLeave = _this.onThumbnailMouseLeave.bind(_this);\n _this.handleImageError = _this.handleImageError.bind(_this);\n _this.pauseOrPlay = _this.pauseOrPlay.bind(_this);\n _this.renderThumbInner = _this.renderThumbInner.bind(_this);\n _this.renderItem = _this.renderItem.bind(_this);\n _this.slideLeft = _this.slideLeft.bind(_this);\n _this.slideRight = _this.slideRight.bind(_this);\n _this.toggleFullScreen = _this.toggleFullScreen.bind(_this);\n _this.togglePlay = _this.togglePlay.bind(_this);\n\n // Used to update the throttle if slideDuration changes\n _this.unthrottledSlideToIndex = _this.slideToIndex;\n _this.slideToIndex = (0, _lodash2.default)(_this.unthrottledSlideToIndex, props.slideDuration, { trailing: false });\n\n if (props.lazyLoad) {\n _this.lazyLoaded = [];\n }\n return _this;\n }\n\n _createClass(ImageGallery, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var autoPlay = this.props.autoPlay;\n\n if (autoPlay) {\n this.play();\n }\n window.addEventListener('keydown', this.handleKeyDown);\n window.addEventListener('mousedown', this.handleMouseDown);\n this.initResizeObserver(this.imageGallerySlideWrapper);\n this.addScreenChangeEvent();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var _props = this.props,\n items = _props.items,\n lazyLoad = _props.lazyLoad,\n slideDuration = _props.slideDuration,\n startIndex = _props.startIndex,\n thumbnailPosition = _props.thumbnailPosition,\n showThumbnails = _props.showThumbnails;\n var currentIndex = this.state.currentIndex;\n\n var itemsSizeChanged = prevProps.items.length !== items.length;\n var itemsChanged = !(0, _lodash6.default)(prevProps.items, items);\n var startIndexUpdated = prevProps.startIndex !== startIndex;\n var thumbnailsPositionChanged = prevProps.thumbnailPosition !== thumbnailPosition;\n var showThumbnailsChanged = prevProps.showThumbnails !== showThumbnails;\n\n if (thumbnailsPositionChanged) {\n // re-initialize resizeObserver because slides was unmounted and mounted again\n this.removeResizeObserver();\n this.initResizeObserver(this.imageGallerySlideWrapper);\n }\n\n if (itemsSizeChanged || showThumbnailsChanged) {\n this.handleResize();\n }\n if (prevState.currentIndex !== currentIndex) {\n this.slideThumbnailBar(prevState.currentIndex);\n }\n // if slideDuration changes, update slideToIndex throttle\n if (prevProps.slideDuration !== slideDuration) {\n this.slideToIndex = (0, _lodash2.default)(this.unthrottledSlideToIndex, slideDuration, { trailing: false });\n }\n if (lazyLoad && (!prevProps.lazyLoad || itemsChanged)) {\n this.lazyLoaded = [];\n }\n\n if (startIndexUpdated || itemsChanged) {\n // TODO: this should be fix/removed if all it is doing\n // is resetting the gallery currentIndext state\n this.setState({ currentIndex: startIndex });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n window.removeEventListener('keydown', this.handleKeyDown);\n window.removeEventListener('mousedown', this.handleMouseDown);\n this.removeScreenChangeEvent();\n this.removeResizeObserver();\n if (this.playPauseIntervalId) {\n window.clearInterval(this.playPauseIntervalId);\n this.playPauseIntervalId = null;\n }\n if (this.transitionTimer) {\n window.clearTimeout(this.transitionTimer);\n }\n }\n }, {\n key: 'onSliding',\n value: function onSliding() {\n var _this2 = this;\n\n var _state = this.state,\n currentIndex = _state.currentIndex,\n isTransitioning = _state.isTransitioning;\n var _props2 = this.props,\n onSlide = _props2.onSlide,\n slideDuration = _props2.slideDuration;\n\n this.transitionTimer = window.setTimeout(function () {\n if (isTransitioning) {\n _this2.setState({ isTransitioning: !isTransitioning });\n if (onSlide) {\n onSlide(currentIndex);\n }\n }\n }, slideDuration + 50);\n }\n }, {\n key: 'onThumbnailClick',\n value: function onThumbnailClick(event, index) {\n var onThumbnailClick = this.props.onThumbnailClick;\n\n this.slideToIndex(index, event);\n if (onThumbnailClick) {\n onThumbnailClick(event, index);\n }\n }\n }, {\n key: 'onThumbnailMouseOver',\n value: function onThumbnailMouseOver(event, index) {\n var _this3 = this;\n\n if (this.thumbnailMouseOverTimer) {\n window.clearTimeout(this.thumbnailMouseOverTimer);\n this.thumbnailMouseOverTimer = null;\n }\n this.thumbnailMouseOverTimer = window.setTimeout(function () {\n _this3.slideToIndex(index);\n _this3.pause();\n }, 300);\n }\n }, {\n key: 'onThumbnailMouseLeave',\n value: function onThumbnailMouseLeave() {\n if (this.thumbnailMouseOverTimer) {\n var autoPlay = this.props.autoPlay;\n\n window.clearTimeout(this.thumbnailMouseOverTimer);\n this.thumbnailMouseOverTimer = null;\n if (autoPlay) {\n this.play();\n }\n }\n }\n }, {\n key: 'setScrollDirection',\n value: function setScrollDirection(dir) {\n var _state2 = this.state,\n scrollingUpDown = _state2.scrollingUpDown,\n scrollingLeftRight = _state2.scrollingLeftRight;\n\n\n if (!scrollingUpDown && !scrollingLeftRight) {\n if (dir === _reactSwipeable.LEFT || dir === _reactSwipeable.RIGHT) {\n this.setState({ scrollingLeftRight: true });\n } else {\n this.setState({ scrollingUpDown: true });\n }\n }\n }\n }, {\n key: 'setThumbsTranslate',\n value: function setThumbsTranslate(thumbsTranslate) {\n this.setState({ thumbsTranslate: thumbsTranslate });\n }\n }, {\n key: 'setModalFullscreen',\n value: function setModalFullscreen(state) {\n var onScreenChange = this.props.onScreenChange;\n\n this.setState({ modalFullscreen: state });\n // manually call because browser does not support screenchange events\n if (onScreenChange) {\n onScreenChange(state);\n }\n }\n }, {\n key: 'getThumbsTranslate',\n value: function getThumbsTranslate(indexDifference) {\n var _props3 = this.props,\n disableThumbnailScroll = _props3.disableThumbnailScroll,\n items = _props3.items;\n var _state3 = this.state,\n thumbnailsWrapperWidth = _state3.thumbnailsWrapperWidth,\n thumbnailsWrapperHeight = _state3.thumbnailsWrapperHeight;\n\n var totalScroll = void 0;\n var thumbElement = this.thumbnails && this.thumbnails.current;\n\n if (disableThumbnailScroll) return 0;\n\n if (thumbElement) {\n // total scroll required to see the last thumbnail\n if (this.isThumbnailVertical()) {\n if (thumbElement.scrollHeight <= thumbnailsWrapperHeight) {\n return 0;\n }\n totalScroll = thumbElement.scrollHeight - thumbnailsWrapperHeight;\n } else {\n if (thumbElement.scrollWidth <= thumbnailsWrapperWidth || thumbnailsWrapperWidth <= 0) {\n return 0;\n }\n totalScroll = thumbElement.scrollWidth - thumbnailsWrapperWidth;\n }\n // scroll-x required per index change\n var perIndexScroll = totalScroll / (items.length - 1);\n return indexDifference * perIndexScroll;\n }\n return 0;\n }\n }, {\n key: 'getAlignmentClassName',\n value: function getAlignmentClassName(index) {\n // Necessary for lazing loading\n var currentIndex = this.state.currentIndex;\n var _props4 = this.props,\n infinite = _props4.infinite,\n items = _props4.items;\n\n var alignment = '';\n var leftClassName = 'left';\n var centerClassName = 'center';\n var rightClassName = 'right';\n\n switch (index) {\n case currentIndex - 1:\n alignment = ' ' + leftClassName;\n break;\n case currentIndex:\n alignment = ' ' + centerClassName;\n break;\n case currentIndex + 1:\n alignment = ' ' + rightClassName;\n break;\n default:\n break;\n }\n\n if (items.length >= 3 && infinite) {\n if (index === 0 && currentIndex === items.length - 1) {\n // set first slide as right slide if were sliding right from last slide\n alignment = ' ' + rightClassName;\n } else if (index === items.length - 1 && currentIndex === 0) {\n // set last slide as left slide if were sliding left from first slide\n alignment = ' ' + leftClassName;\n }\n }\n\n return alignment;\n }\n }, {\n key: 'getTranslateXForTwoSlide',\n value: function getTranslateXForTwoSlide(index) {\n // For taking care of infinite swipe when there are only two slides\n var _state4 = this.state,\n currentIndex = _state4.currentIndex,\n currentSlideOffset = _state4.currentSlideOffset,\n previousIndex = _state4.previousIndex;\n\n var indexChanged = currentIndex !== previousIndex;\n var firstSlideWasPrevSlide = index === 0 && previousIndex === 0;\n var secondSlideWasPrevSlide = index === 1 && previousIndex === 1;\n var firstSlideIsNextSlide = index === 0 && currentIndex === 1;\n var secondSlideIsNextSlide = index === 1 && currentIndex === 0;\n var swipingEnded = currentSlideOffset === 0;\n var baseTranslateX = -100 * currentIndex;\n var translateX = baseTranslateX + index * 100 + currentSlideOffset;\n\n // keep track of user swiping direction\n // important to understand how to translateX based on last direction\n if (currentSlideOffset > 0) {\n this.direction = 'left';\n } else if (currentSlideOffset < 0) {\n this.direction = 'right';\n }\n\n // when swiping between two slides make sure the next and prev slides\n // are on both left and right\n if (secondSlideIsNextSlide && currentSlideOffset > 0) {\n // swiping right\n translateX = -100 + currentSlideOffset;\n }\n if (firstSlideIsNextSlide && currentSlideOffset < 0) {\n // swiping left\n translateX = 100 + currentSlideOffset;\n }\n\n if (indexChanged) {\n // when indexChanged move the slide to the correct side\n if (firstSlideWasPrevSlide && swipingEnded && this.direction === 'left') {\n translateX = 100;\n } else if (secondSlideWasPrevSlide && swipingEnded && this.direction === 'right') {\n translateX = -100;\n }\n } else {\n // keep the slide on the correct side if the swipe was not successful\n if (secondSlideIsNextSlide && swipingEnded && this.direction === 'left') {\n translateX = -100;\n }\n if (firstSlideIsNextSlide && swipingEnded && this.direction === 'right') {\n translateX = 100;\n }\n }\n\n return translateX;\n }\n }, {\n key: 'getThumbnailBarHeight',\n value: function getThumbnailBarHeight() {\n if (this.isThumbnailVertical()) {\n var gallerySlideWrapperHeight = this.state.gallerySlideWrapperHeight;\n\n return { height: gallerySlideWrapperHeight };\n }\n return {};\n }\n }, {\n key: 'getSlideStyle',\n value: function getSlideStyle(index) {\n var _state5 = this.state,\n currentIndex = _state5.currentIndex,\n currentSlideOffset = _state5.currentSlideOffset,\n slideStyle = _state5.slideStyle;\n var _props5 = this.props,\n infinite = _props5.infinite,\n items = _props5.items,\n useTranslate3D = _props5.useTranslate3D,\n isRTL = _props5.isRTL;\n\n var baseTranslateX = -100 * currentIndex;\n var totalSlides = items.length - 1;\n\n // calculates where the other slides belong based on currentIndex\n // if it is RTL the base line should be reversed\n var translateX = (baseTranslateX + index * 100) * (isRTL ? -1 : 1) + currentSlideOffset;\n\n if (infinite && items.length > 2) {\n if (currentIndex === 0 && index === totalSlides) {\n // make the last slide the slide before the first\n // if it is RTL the base line should be reversed\n translateX = -100 * (isRTL ? -1 : 1) + currentSlideOffset;\n } else if (currentIndex === totalSlides && index === 0) {\n // make the first slide the slide after the last\n // if it is RTL the base line should be reversed\n translateX = 100 * (isRTL ? -1 : 1) + currentSlideOffset;\n }\n }\n\n // Special case when there are only 2 items with infinite on\n if (infinite && items.length === 2) {\n translateX = this.getTranslateXForTwoSlide(index);\n }\n\n var translate = 'translate(' + translateX + '%, 0)';\n\n if (useTranslate3D) {\n translate = 'translate3d(' + translateX + '%, 0, 0)';\n }\n\n return _extends({}, {\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n transform: translate\n }, slideStyle);\n }\n }, {\n key: 'getCurrentIndex',\n value: function getCurrentIndex() {\n var currentIndex = this.state.currentIndex;\n\n return currentIndex;\n }\n }, {\n key: 'getThumbnailStyle',\n value: function getThumbnailStyle() {\n var translate = void 0;\n var _props6 = this.props,\n useTranslate3D = _props6.useTranslate3D,\n isRTL = _props6.isRTL;\n var thumbsTranslate = this.state.thumbsTranslate;\n\n var verticalTranslateValue = isRTL ? thumbsTranslate * -1 : thumbsTranslate;\n\n if (this.isThumbnailVertical()) {\n translate = 'translate(0, ' + thumbsTranslate + 'px)';\n if (useTranslate3D) {\n translate = 'translate3d(0, ' + thumbsTranslate + 'px, 0)';\n }\n } else {\n translate = 'translate(' + verticalTranslateValue + 'px, 0)';\n if (useTranslate3D) {\n translate = 'translate3d(' + verticalTranslateValue + 'px, 0, 0)';\n }\n }\n return {\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n transform: translate\n };\n }\n }, {\n key: 'getSlideItems',\n value: function getSlideItems() {\n var _this4 = this;\n\n var currentIndex = this.state.currentIndex;\n var _props7 = this.props,\n infinite = _props7.infinite,\n items = _props7.items,\n slideOnThumbnailOver = _props7.slideOnThumbnailOver,\n onClick = _props7.onClick,\n lazyLoad = _props7.lazyLoad,\n onTouchMove = _props7.onTouchMove,\n onTouchEnd = _props7.onTouchEnd,\n onTouchStart = _props7.onTouchStart,\n onMouseOver = _props7.onMouseOver,\n onMouseLeave = _props7.onMouseLeave,\n renderItem = _props7.renderItem,\n renderThumbInner = _props7.renderThumbInner,\n showThumbnails = _props7.showThumbnails,\n showBullets = _props7.showBullets;\n\n\n var slides = [];\n var thumbnails = [];\n var bullets = [];\n\n items.forEach(function (item, index) {\n var alignment = _this4.getAlignmentClassName(index);\n var originalClass = item.originalClass ? ' ' + item.originalClass : '';\n var thumbnailClass = item.thumbnailClass ? ' ' + item.thumbnailClass : '';\n var handleRenderItem = item.renderItem || renderItem || _this4.renderItem;\n var handleRenderThumbInner = item.renderThumbInner || renderThumbInner || _this4.renderThumbInner;\n\n var showItem = !lazyLoad || alignment || _this4.lazyLoaded[index];\n if (showItem && lazyLoad && !_this4.lazyLoaded[index]) {\n _this4.lazyLoaded[index] = true;\n }\n\n var slideStyle = _this4.getSlideStyle(index);\n\n var slide = _react2.default.createElement(\n 'div',\n {\n 'aria-label': 'Go to Slide ' + (index + 1),\n key: 'slide-' + item.original + '-' + index,\n tabIndex: '-1',\n className: 'image-gallery-slide ' + alignment + ' ' + originalClass,\n style: slideStyle,\n onClick: onClick,\n onKeyUp: _this4.handleSlideKeyUp,\n onTouchMove: onTouchMove,\n onTouchEnd: onTouchEnd,\n onTouchStart: onTouchStart,\n onMouseOver: onMouseOver,\n onFocus: onMouseOver,\n onMouseLeave: onMouseLeave,\n role: 'button'\n },\n showItem ? handleRenderItem(item) : _react2.default.createElement('div', { style: { height: '100%' } })\n );\n\n if (infinite) {\n // don't add some slides while transitioning to avoid background transitions\n if (_this4.shouldPushSlideOnInfiniteMode(index)) {\n slides.push(slide);\n }\n } else {\n slides.push(slide);\n }\n\n if (showThumbnails) {\n var igThumbnailClass = (0, _clsx2.default)('image-gallery-thumbnail', thumbnailClass, { active: currentIndex === index });\n thumbnails.push(_react2.default.createElement(\n 'button',\n {\n key: 'thumbnail-' + item.original + '-' + index,\n type: 'button',\n tabIndex: '0',\n 'aria-pressed': currentIndex === index ? 'true' : 'false',\n 'aria-label': 'Go to Slide ' + (index + 1),\n className: igThumbnailClass,\n onMouseLeave: slideOnThumbnailOver ? _this4.onThumbnailMouseLeave : null,\n onMouseOver: function onMouseOver(event) {\n return _this4.handleThumbnailMouseOver(event, index);\n },\n onFocus: function onFocus(event) {\n return _this4.handleThumbnailMouseOver(event, index);\n },\n onKeyUp: function onKeyUp(event) {\n return _this4.handleThumbnailKeyUp(event, index);\n },\n onClick: function onClick(event) {\n return _this4.onThumbnailClick(event, index);\n }\n },\n handleRenderThumbInner(item)\n ));\n }\n\n if (showBullets) {\n // generate bullet elements and store them in array\n var bulletOnClick = function bulletOnClick(event) {\n if (item.bulletOnClick) {\n item.bulletOnClick({ item: item, itemIndex: index, currentIndex: currentIndex });\n }\n return _this4.slideToIndex.call(_this4, index, event);\n };\n var igBulletClass = (0, _clsx2.default)('image-gallery-bullet', item.bulletClass, { active: currentIndex === index });\n bullets.push(_react2.default.createElement('button', {\n type: 'button',\n key: 'bullet-' + item.original + '-' + index,\n className: igBulletClass,\n onClick: bulletOnClick,\n 'aria-pressed': currentIndex === index ? 'true' : 'false',\n 'aria-label': 'Go to Slide ' + (index + 1)\n }));\n }\n });\n\n return {\n slides: slides,\n thumbnails: thumbnails,\n bullets: bullets\n };\n }\n }, {\n key: 'ignoreIsTransitioning',\n value: function ignoreIsTransitioning() {\n /*\n Ignore isTransitioning because were not going to sibling slides\n e.g. center to left or center to right\n */\n var items = this.props.items;\n var _state6 = this.state,\n previousIndex = _state6.previousIndex,\n currentIndex = _state6.currentIndex;\n\n var totalSlides = items.length - 1;\n // we want to show the in between slides transition\n var slidingMoreThanOneSlideLeftOrRight = Math.abs(previousIndex - currentIndex) > 1;\n var notGoingFromFirstToLast = !(previousIndex === 0 && currentIndex === totalSlides);\n var notGoingFromLastToFirst = !(previousIndex === totalSlides && currentIndex === 0);\n\n return slidingMoreThanOneSlideLeftOrRight && notGoingFromFirstToLast && notGoingFromLastToFirst;\n }\n }, {\n key: 'isFirstOrLastSlide',\n value: function isFirstOrLastSlide(index) {\n var items = this.props.items;\n\n var totalSlides = items.length - 1;\n var isLastSlide = index === totalSlides;\n var isFirstSlide = index === 0;\n return isLastSlide || isFirstSlide;\n }\n }, {\n key: 'slideIsTransitioning',\n value: function slideIsTransitioning(index) {\n /*\n returns true if the gallery is transitioning and the index is not the\n previous or currentIndex\n */\n var _state7 = this.state,\n isTransitioning = _state7.isTransitioning,\n previousIndex = _state7.previousIndex,\n currentIndex = _state7.currentIndex;\n\n var indexIsNotPreviousOrNextSlide = !(index === previousIndex || index === currentIndex);\n return isTransitioning && indexIsNotPreviousOrNextSlide;\n }\n }, {\n key: 'shouldPushSlideOnInfiniteMode',\n value: function shouldPushSlideOnInfiniteMode(index) {\n /*\n Push (show) slide if slide is the current slide and the next slide\n OR\n The slide is going more than one slide left or right, but not going from\n first to last and not going from last to first\n Edge case:\n If you go to the first or last slide, when they're\n not left, or right of each other they will try to catch up in the background\n so unless were going from first to last or vice versa we don't want the first\n or last slide to show up during the transition\n */\n return !this.slideIsTransitioning(index) || this.ignoreIsTransitioning() && !this.isFirstOrLastSlide(index);\n }\n }, {\n key: 'slideThumbnailBar',\n value: function slideThumbnailBar(previousIndex) {\n var _state8 = this.state,\n thumbsTranslate = _state8.thumbsTranslate,\n currentIndex = _state8.currentIndex;\n\n if (currentIndex === 0) {\n this.setThumbsTranslate(0);\n } else {\n var indexDifference = Math.abs(previousIndex - currentIndex);\n var scroll = this.getThumbsTranslate(indexDifference);\n if (scroll > 0) {\n if (previousIndex < currentIndex) {\n this.setThumbsTranslate(thumbsTranslate - scroll);\n } else if (previousIndex > currentIndex) {\n this.setThumbsTranslate(thumbsTranslate + scroll);\n }\n }\n }\n }\n }, {\n key: 'canSlide',\n value: function canSlide() {\n var items = this.props.items;\n\n return items.length >= 2;\n }\n }, {\n key: 'canSlideLeft',\n value: function canSlideLeft() {\n var _props8 = this.props,\n infinite = _props8.infinite,\n isRTL = _props8.isRTL;\n\n return infinite || (isRTL ? this.canSlideNext() : this.canSlidePrevious());\n }\n }, {\n key: 'canSlideRight',\n value: function canSlideRight() {\n var _props9 = this.props,\n infinite = _props9.infinite,\n isRTL = _props9.isRTL;\n\n return infinite || (isRTL ? this.canSlidePrevious() : this.canSlideNext());\n }\n }, {\n key: 'canSlidePrevious',\n value: function canSlidePrevious() {\n var currentIndex = this.state.currentIndex;\n\n return currentIndex > 0;\n }\n }, {\n key: 'canSlideNext',\n value: function canSlideNext() {\n var currentIndex = this.state.currentIndex;\n var items = this.props.items;\n\n return currentIndex < items.length - 1;\n }\n }, {\n key: 'handleSwiping',\n value: function handleSwiping(_ref) {\n var event = _ref.event,\n absX = _ref.absX,\n dir = _ref.dir;\n var _props10 = this.props,\n preventDefaultTouchmoveEvent = _props10.preventDefaultTouchmoveEvent,\n disableSwipe = _props10.disableSwipe,\n stopPropagation = _props10.stopPropagation;\n var _state9 = this.state,\n galleryWidth = _state9.galleryWidth,\n isTransitioning = _state9.isTransitioning,\n scrollingUpDown = _state9.scrollingUpDown,\n scrollingLeftRight = _state9.scrollingLeftRight;\n\n\n if (disableSwipe) return;\n var swipingTransitionDuration = this.props.swipingTransitionDuration;\n\n this.setScrollDirection(dir);\n if (stopPropagation) event.stopPropagation();\n if ((preventDefaultTouchmoveEvent || scrollingLeftRight) && event.cancelable) {\n event.preventDefault();\n }\n if (!isTransitioning && !scrollingUpDown) {\n var side = dir === _reactSwipeable.RIGHT ? 1 : -1;\n\n var currentSlideOffset = absX / galleryWidth * 100;\n if (Math.abs(currentSlideOffset) >= 100) {\n currentSlideOffset = 100;\n }\n\n var swipingTransition = {\n transition: 'transform ' + swipingTransitionDuration + 'ms ease-out'\n };\n\n this.setState({\n currentSlideOffset: side * currentSlideOffset,\n slideStyle: swipingTransition\n });\n } else {\n // don't move the slide\n this.setState({ currentSlideOffset: 0 });\n }\n }\n }, {\n key: 'sufficientSwipe',\n value: function sufficientSwipe() {\n var currentSlideOffset = this.state.currentSlideOffset;\n var swipeThreshold = this.props.swipeThreshold;\n\n return Math.abs(currentSlideOffset) > swipeThreshold;\n }\n }, {\n key: 'handleOnSwiped',\n value: function handleOnSwiped(_ref2) {\n var event = _ref2.event,\n dir = _ref2.dir,\n velocity = _ref2.velocity;\n var _props11 = this.props,\n disableSwipe = _props11.disableSwipe,\n stopPropagation = _props11.stopPropagation,\n flickThreshold = _props11.flickThreshold;\n var _state10 = this.state,\n scrollingUpDown = _state10.scrollingUpDown,\n scrollingLeftRight = _state10.scrollingLeftRight;\n\n\n if (disableSwipe) return;\n\n var isRTL = this.props.isRTL;\n\n if (stopPropagation) event.stopPropagation();\n if (scrollingUpDown) {\n // user stopped scrollingUpDown\n this.setState({ scrollingUpDown: false });\n }\n\n if (scrollingLeftRight) {\n // user stopped scrollingLeftRight\n this.setState({ scrollingLeftRight: false });\n }\n\n if (!scrollingUpDown) {\n // don't swipe if user is scrolling\n // if it is RTL the direction is reversed\n var swipeDirection = (dir === _reactSwipeable.LEFT ? 1 : -1) * (isRTL ? -1 : 1);\n var isFlick = velocity > flickThreshold;\n this.handleOnSwipedTo(swipeDirection, isFlick);\n }\n }\n }, {\n key: 'handleOnSwipedTo',\n value: function handleOnSwipedTo(swipeDirection, isFlick) {\n var _state11 = this.state,\n currentIndex = _state11.currentIndex,\n isTransitioning = _state11.isTransitioning;\n\n var slideTo = currentIndex;\n\n if ((this.sufficientSwipe() || isFlick) && !isTransitioning) {\n // slideto the next/prev slide\n slideTo += swipeDirection;\n }\n\n // If we can't swipe left or right, stay in the current index (noop)\n if (swipeDirection === -1 && !this.canSlideLeft() || swipeDirection === 1 && !this.canSlideRight()) {\n slideTo = currentIndex;\n }\n\n this.unthrottledSlideToIndex(slideTo);\n }\n }, {\n key: 'handleMouseDown',\n value: function handleMouseDown() {\n // keep track of mouse vs keyboard usage for a11y\n this.imageGallery.current.classList.add('image-gallery-using-mouse');\n }\n }, {\n key: 'handleKeyDown',\n value: function handleKeyDown(event) {\n var _props12 = this.props,\n disableKeyDown = _props12.disableKeyDown,\n useBrowserFullscreen = _props12.useBrowserFullscreen;\n var isFullscreen = this.state.isFullscreen;\n // keep track of mouse vs keyboard usage for a11y\n\n this.imageGallery.current.classList.remove('image-gallery-using-mouse');\n\n if (disableKeyDown) return;\n var LEFT_ARROW = 37;\n var RIGHT_ARROW = 39;\n var ESC_KEY = 27;\n var key = parseInt(event.keyCode || event.which || 0, 10);\n\n switch (key) {\n case LEFT_ARROW:\n if (this.canSlideLeft() && !this.playPauseIntervalId) {\n this.slideLeft(event);\n }\n break;\n case RIGHT_ARROW:\n if (this.canSlideRight() && !this.playPauseIntervalId) {\n this.slideRight(event);\n }\n break;\n case ESC_KEY:\n if (isFullscreen && !useBrowserFullscreen) {\n this.exitFullScreen();\n }\n break;\n default:\n break;\n }\n }\n }, {\n key: 'handleImageError',\n value: function handleImageError(event) {\n var onErrorImageURL = this.props.onErrorImageURL;\n\n if (onErrorImageURL && event.target.src.indexOf(onErrorImageURL) === -1) {\n /* eslint-disable no-param-reassign */\n event.target.src = onErrorImageURL;\n /* eslint-enable no-param-reassign */\n }\n }\n }, {\n key: 'removeResizeObserver',\n value: function removeResizeObserver() {\n if (this.resizeObserver && this.imageGallerySlideWrapper && this.imageGallerySlideWrapper.current) {\n this.resizeObserver.unobserve(this.imageGallerySlideWrapper.current);\n }\n }\n }, {\n key: 'handleResize',\n value: function handleResize() {\n var currentIndex = this.state.currentIndex;\n\n if (this.imageGallery && this.imageGallery.current) {\n this.setState({ galleryWidth: this.imageGallery.current.offsetWidth });\n }\n\n if (this.imageGallerySlideWrapper && this.imageGallerySlideWrapper.current) {\n this.setState({\n gallerySlideWrapperHeight: this.imageGallerySlideWrapper.current.offsetHeight\n });\n }\n\n if (this.thumbnailsWrapper && this.thumbnailsWrapper.current) {\n if (this.isThumbnailVertical()) {\n this.setState({ thumbnailsWrapperHeight: this.thumbnailsWrapper.current.offsetHeight });\n } else {\n this.setState({ thumbnailsWrapperWidth: this.thumbnailsWrapper.current.offsetWidth });\n }\n }\n\n // Adjust thumbnail container when thumbnail width or height is adjusted\n this.setThumbsTranslate(-this.getThumbsTranslate(currentIndex));\n }\n }, {\n key: 'initResizeObserver',\n value: function initResizeObserver(element) {\n var _this5 = this;\n\n this.resizeObserver = new _resizeObserverPolyfill2.default((0, _lodash4.default)(function (entries) {\n if (!entries) return;\n entries.forEach(function () {\n _this5.handleResize();\n });\n }, 300));\n this.resizeObserver.observe(element.current);\n }\n }, {\n key: 'toggleFullScreen',\n value: function toggleFullScreen() {\n var isFullscreen = this.state.isFullscreen;\n\n if (isFullscreen) {\n this.exitFullScreen();\n } else {\n this.fullScreen();\n }\n }\n }, {\n key: 'togglePlay',\n value: function togglePlay() {\n if (this.playPauseIntervalId) {\n this.pause();\n } else {\n this.play();\n }\n }\n }, {\n key: 'handleScreenChange',\n value: function handleScreenChange() {\n /*\n handles screen change events that the browser triggers e.g. esc key\n */\n var _props13 = this.props,\n onScreenChange = _props13.onScreenChange,\n useBrowserFullscreen = _props13.useBrowserFullscreen;\n\n var fullScreenElement = document.fullscreenElement || document.msFullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;\n\n // check if screenchange element is the gallery\n var isFullscreen = this.imageGallery.current === fullScreenElement;\n if (onScreenChange) onScreenChange(isFullscreen);\n if (useBrowserFullscreen) this.setState({ isFullscreen: isFullscreen });\n }\n }, {\n key: 'slideToIndex',\n value: function slideToIndex(index, event) {\n var _state12 = this.state,\n currentIndex = _state12.currentIndex,\n isTransitioning = _state12.isTransitioning;\n var _props14 = this.props,\n items = _props14.items,\n slideDuration = _props14.slideDuration,\n onBeforeSlide = _props14.onBeforeSlide;\n\n\n if (!isTransitioning) {\n if (event) {\n if (this.playPauseIntervalId) {\n // user triggered event while ImageGallery is playing, reset interval\n this.pause(false);\n this.play(false);\n }\n }\n\n var slideCount = items.length - 1;\n var nextIndex = index;\n if (index < 0) {\n nextIndex = slideCount;\n } else if (index > slideCount) {\n nextIndex = 0;\n }\n\n if (onBeforeSlide && nextIndex !== currentIndex) {\n onBeforeSlide(nextIndex);\n }\n\n this.setState({\n previousIndex: currentIndex,\n currentIndex: nextIndex,\n isTransitioning: nextIndex !== currentIndex,\n currentSlideOffset: 0,\n slideStyle: { transition: 'all ' + slideDuration + 'ms ease-out' }\n }, this.onSliding);\n }\n }\n }, {\n key: 'slideLeft',\n value: function slideLeft(event) {\n var isRTL = this.props.isRTL;\n\n if (isRTL) {\n this.slideNext(event);\n } else {\n this.slidePrevious(event);\n }\n }\n }, {\n key: 'slideRight',\n value: function slideRight(event) {\n var isRTL = this.props.isRTL;\n\n if (isRTL) {\n this.slidePrevious(event);\n } else {\n this.slideNext(event);\n }\n }\n }, {\n key: 'slidePrevious',\n value: function slidePrevious(event) {\n var _this6 = this;\n\n var _state13 = this.state,\n currentIndex = _state13.currentIndex,\n currentSlideOffset = _state13.currentSlideOffset,\n isTransitioning = _state13.isTransitioning;\n var items = this.props.items;\n\n var nextIndex = currentIndex - 1;\n\n if (isTransitioning) return;\n\n if (items.length === 2) {\n /*\n When there are only 2 slides fake a tiny swipe to get the slides\n on the correct side for transitioning\n */\n this.setState({\n currentSlideOffset: currentSlideOffset + 0.001, // this will reset once index changes\n slideStyle: { transition: 'none' } // move the slide over instantly\n }, function () {\n // add 25ms timeout to avoid delay in moving slides over\n window.setTimeout(function () {\n return _this6.slideToIndex(nextIndex, event);\n }, 25);\n });\n } else {\n this.slideToIndex(nextIndex, event);\n }\n }\n }, {\n key: 'slideNext',\n value: function slideNext(event) {\n var _this7 = this;\n\n var _state14 = this.state,\n currentIndex = _state14.currentIndex,\n currentSlideOffset = _state14.currentSlideOffset,\n isTransitioning = _state14.isTransitioning;\n var items = this.props.items;\n\n var nextIndex = currentIndex + 1;\n\n if (isTransitioning) return;\n\n if (items.length === 2) {\n // same as above for 2 slides\n this.setState({\n currentSlideOffset: currentSlideOffset - 0.001,\n slideStyle: { transition: 'none' }\n }, function () {\n window.setTimeout(function () {\n return _this7.slideToIndex(nextIndex, event);\n }, 25);\n });\n } else {\n this.slideToIndex(nextIndex, event);\n }\n }\n }, {\n key: 'handleThumbnailMouseOver',\n value: function handleThumbnailMouseOver(event, index) {\n var slideOnThumbnailOver = this.props.slideOnThumbnailOver;\n\n if (slideOnThumbnailOver) this.onThumbnailMouseOver(event, index);\n }\n }, {\n key: 'handleThumbnailKeyUp',\n value: function handleThumbnailKeyUp(event, index) {\n // a11y support ^_^\n if (isEnterOrSpaceKey(event)) this.onThumbnailClick(event, index);\n }\n }, {\n key: 'handleSlideKeyUp',\n value: function handleSlideKeyUp(event) {\n // a11y support ^_^\n if (isEnterOrSpaceKey(event)) {\n var onClick = this.props.onClick;\n\n onClick(event);\n }\n }\n }, {\n key: 'isThumbnailVertical',\n value: function isThumbnailVertical() {\n var thumbnailPosition = this.props.thumbnailPosition;\n\n return thumbnailPosition === 'left' || thumbnailPosition === 'right';\n }\n }, {\n key: 'addScreenChangeEvent',\n value: function addScreenChangeEvent() {\n var _this8 = this;\n\n screenChangeEvents.forEach(function (eventName) {\n document.addEventListener(eventName, _this8.handleScreenChange);\n });\n }\n }, {\n key: 'removeScreenChangeEvent',\n value: function removeScreenChangeEvent() {\n var _this9 = this;\n\n screenChangeEvents.forEach(function (eventName) {\n document.removeEventListener(eventName, _this9.handleScreenChange);\n });\n }\n }, {\n key: 'fullScreen',\n value: function fullScreen() {\n var useBrowserFullscreen = this.props.useBrowserFullscreen;\n\n var gallery = this.imageGallery.current;\n if (useBrowserFullscreen) {\n if (gallery.requestFullscreen) {\n gallery.requestFullscreen();\n } else if (gallery.msRequestFullscreen) {\n gallery.msRequestFullscreen();\n } else if (gallery.mozRequestFullScreen) {\n gallery.mozRequestFullScreen();\n } else if (gallery.webkitRequestFullscreen) {\n gallery.webkitRequestFullscreen();\n } else {\n // fallback to fullscreen modal for unsupported browsers\n this.setModalFullscreen(true);\n }\n } else {\n this.setModalFullscreen(true);\n }\n this.setState({ isFullscreen: true });\n }\n }, {\n key: 'exitFullScreen',\n value: function exitFullScreen() {\n var isFullscreen = this.state.isFullscreen;\n var useBrowserFullscreen = this.props.useBrowserFullscreen;\n\n if (isFullscreen) {\n if (useBrowserFullscreen) {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else {\n // fallback to fullscreen modal for unsupported browsers\n this.setModalFullscreen(false);\n }\n } else {\n this.setModalFullscreen(false);\n }\n this.setState({ isFullscreen: false });\n }\n }\n }, {\n key: 'pauseOrPlay',\n value: function pauseOrPlay() {\n var infinite = this.props.infinite;\n var currentIndex = this.state.currentIndex;\n\n if (!infinite && !this.canSlideRight()) {\n this.pause();\n } else {\n this.slideToIndex(currentIndex + 1);\n }\n }\n }, {\n key: 'play',\n value: function play() {\n var shouldCallOnPlay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var _props15 = this.props,\n onPlay = _props15.onPlay,\n slideInterval = _props15.slideInterval,\n slideDuration = _props15.slideDuration;\n var currentIndex = this.state.currentIndex;\n\n if (!this.playPauseIntervalId) {\n this.setState({ isPlaying: true });\n this.playPauseIntervalId = window.setInterval(this.pauseOrPlay, Math.max(slideInterval, slideDuration));\n if (onPlay && shouldCallOnPlay) {\n onPlay(currentIndex);\n }\n }\n }\n }, {\n key: 'pause',\n value: function pause() {\n var shouldCallOnPause = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var onPause = this.props.onPause;\n var currentIndex = this.state.currentIndex;\n\n if (this.playPauseIntervalId) {\n window.clearInterval(this.playPauseIntervalId);\n this.playPauseIntervalId = null;\n this.setState({ isPlaying: false });\n if (onPause && shouldCallOnPause) {\n onPause(currentIndex);\n }\n }\n }\n }, {\n key: 'isImageLoaded',\n value: function isImageLoaded(item) {\n /*\n Keep track of images loaded so that onImageLoad prop is not\n called multiple times when re-render the images\n */\n var imageExists = this.loadedImages[item.original];\n if (imageExists) {\n return true;\n }\n // add image as loaded\n this.loadedImages[item.original] = true;\n return false;\n }\n }, {\n key: 'handleImageLoaded',\n value: function handleImageLoaded(event, item) {\n var onImageLoad = this.props.onImageLoad;\n\n var imageExists = this.loadedImages[item.original];\n if (!imageExists && onImageLoad) {\n this.loadedImages[item.original] = true; // prevent from call again\n // image just loaded, call onImageLoad\n onImageLoad(event);\n }\n }\n }, {\n key: 'renderItem',\n value: function renderItem(item) {\n var _this10 = this;\n\n var isFullscreen = this.state.isFullscreen;\n var onImageError = this.props.onImageError;\n\n var handleImageError = onImageError || this.handleImageError;\n var itemSrc = isFullscreen ? item.fullscreen || item.original : item.original;\n\n return _react2.default.createElement(\n 'div',\n null,\n item.imageSet ? _react2.default.createElement(\n 'picture',\n {\n onLoad: function onLoad(event) {\n return _this10.handleImageLoaded(event, item);\n },\n onError: handleImageError\n },\n item.imageSet.map(function (source, index) {\n return _react2.default.createElement('source', {\n key: 'media-' + source.srcSet + '-' + index,\n media: source.media,\n srcSet: source.srcSet,\n type: source.type\n });\n }),\n _react2.default.createElement('img', {\n className: 'image-gallery-image',\n alt: item.originalAlt,\n src: itemSrc\n })\n ) : _react2.default.createElement('img', {\n className: 'image-gallery-image',\n src: itemSrc,\n alt: item.originalAlt,\n srcSet: item.srcSet,\n sizes: item.sizes,\n title: item.originalTitle,\n onLoad: function onLoad(event) {\n return _this10.handleImageLoaded(event, item);\n },\n onError: handleImageError\n }),\n item.description && _react2.default.createElement(\n 'span',\n { className: 'image-gallery-description' },\n item.description\n )\n );\n }\n }, {\n key: 'renderThumbInner',\n value: function renderThumbInner(item) {\n var onThumbnailError = this.props.onThumbnailError;\n\n var handleThumbnailError = onThumbnailError || this.handleImageError;\n\n return _react2.default.createElement(\n 'div',\n { className: 'image-gallery-thumbnail-inner' },\n _react2.default.createElement('img', {\n className: 'image-gallery-thumbnail-image',\n src: item.thumbnail,\n alt: item.thumbnailAlt,\n title: item.thumbnailTitle,\n onError: handleThumbnailError\n }),\n item.thumbnailLabel && _react2.default.createElement(\n 'div',\n { className: 'image-gallery-thumbnail-label' },\n item.thumbnailLabel\n )\n );\n }\n }, {\n key: 'render',\n value: function render() {\n var _state15 = this.state,\n currentIndex = _state15.currentIndex,\n isFullscreen = _state15.isFullscreen,\n modalFullscreen = _state15.modalFullscreen,\n isPlaying = _state15.isPlaying;\n var _props16 = this.props,\n additionalClass = _props16.additionalClass,\n indexSeparator = _props16.indexSeparator,\n isRTL = _props16.isRTL,\n items = _props16.items,\n thumbnailPosition = _props16.thumbnailPosition,\n renderFullscreenButton = _props16.renderFullscreenButton,\n renderCustomControls = _props16.renderCustomControls,\n renderLeftNav = _props16.renderLeftNav,\n renderRightNav = _props16.renderRightNav,\n showBullets = _props16.showBullets,\n showFullscreenButton = _props16.showFullscreenButton,\n showIndex = _props16.showIndex,\n showThumbnails = _props16.showThumbnails,\n showNav = _props16.showNav,\n showPlayButton = _props16.showPlayButton,\n renderPlayPauseButton = _props16.renderPlayPauseButton;\n\n\n var thumbnailStyle = this.getThumbnailStyle();\n\n var _getSlideItems = this.getSlideItems(),\n slides = _getSlideItems.slides,\n thumbnails = _getSlideItems.thumbnails,\n bullets = _getSlideItems.bullets;\n\n var slideWrapperClass = (0, _clsx2.default)('image-gallery-slide-wrapper', thumbnailPosition, { 'image-gallery-rtl': isRTL });\n\n var slideWrapper = _react2.default.createElement(\n 'div',\n { ref: this.imageGallerySlideWrapper, className: slideWrapperClass },\n renderCustomControls && renderCustomControls(),\n this.canSlide() ? _react2.default.createElement(\n _react2.default.Fragment,\n null,\n showNav && _react2.default.createElement(\n _react2.default.Fragment,\n null,\n renderLeftNav(this.slideLeft, !this.canSlideLeft()),\n renderRightNav(this.slideRight, !this.canSlideRight())\n ),\n _react2.default.createElement(\n _reactSwipeable.Swipeable,\n {\n className: 'image-gallery-swipe',\n delta: 0,\n onSwiping: this.handleSwiping,\n onSwiped: this.handleOnSwiped\n },\n _react2.default.createElement(\n 'div',\n { className: 'image-gallery-slides' },\n slides\n )\n )\n ) : _react2.default.createElement(\n 'div',\n { className: 'image-gallery-slides' },\n slides\n ),\n showPlayButton && renderPlayPauseButton(this.togglePlay, isPlaying),\n showBullets && _react2.default.createElement(\n 'div',\n { className: 'image-gallery-bullets' },\n _react2.default.createElement(\n 'div',\n {\n className: 'image-gallery-bullets-container',\n role: 'navigation',\n 'aria-label': 'Bullet Navigation'\n },\n bullets\n )\n ),\n showFullscreenButton && renderFullscreenButton(this.toggleFullScreen, isFullscreen),\n showIndex && _react2.default.createElement(\n 'div',\n { className: 'image-gallery-index' },\n _react2.default.createElement(\n 'span',\n { className: 'image-gallery-index-current' },\n currentIndex + 1\n ),\n _react2.default.createElement(\n 'span',\n { className: 'image-gallery-index-separator' },\n indexSeparator\n ),\n _react2.default.createElement(\n 'span',\n { className: 'image-gallery-index-total' },\n items.length\n )\n )\n );\n\n var igClass = (0, _clsx2.default)('image-gallery', additionalClass, { 'fullscreen-modal': modalFullscreen });\n var igContentClass = (0, _clsx2.default)('image-gallery-content', thumbnailPosition, { fullscreen: isFullscreen });\n var thumbnailWrapperClass = (0, _clsx2.default)('image-gallery-thumbnails-wrapper', thumbnailPosition, { 'thumbnails-wrapper-rtl': !this.isThumbnailVertical() && isRTL });\n return _react2.default.createElement(\n 'div',\n {\n ref: this.imageGallery,\n className: igClass,\n 'aria-live': 'polite'\n },\n _react2.default.createElement(\n 'div',\n { className: igContentClass },\n (thumbnailPosition === 'bottom' || thumbnailPosition === 'right') && slideWrapper,\n showThumbnails && _react2.default.createElement(\n 'div',\n {\n className: thumbnailWrapperClass,\n style: this.getThumbnailBarHeight()\n },\n _react2.default.createElement(\n 'div',\n {\n className: 'image-gallery-thumbnails',\n ref: this.thumbnailsWrapper\n },\n _react2.default.createElement(\n 'div',\n {\n ref: this.thumbnails,\n className: 'image-gallery-thumbnails-container',\n style: thumbnailStyle,\n 'aria-label': 'Thumbnail Navigation'\n },\n thumbnails\n )\n )\n ),\n (thumbnailPosition === 'top' || thumbnailPosition === 'left') && slideWrapper\n )\n );\n }\n }]);\n\n return ImageGallery;\n}(_react2.default.Component);\n\nImageGallery.propTypes = {\n flickThreshold: _propTypes.number,\n items: (0, _propTypes.arrayOf)((0, _propTypes.shape)({\n bulletClass: _propTypes.string,\n bulletOnClick: _propTypes.func,\n description: _propTypes.string,\n original: _propTypes.string.isRequired,\n fullscreen: _propTypes.string,\n originalAlt: _propTypes.string,\n originalTitle: _propTypes.string,\n thumbnail: _propTypes.string,\n thumbnailAlt: _propTypes.string,\n thumbnailLabel: _propTypes.string,\n thumbnailTitle: _propTypes.string,\n originalClass: _propTypes.string,\n thumbnailClass: _propTypes.string,\n renderItem: _propTypes.func,\n renderThumbInner: _propTypes.func,\n imageSet: imageSetType,\n srcSet: _propTypes.string,\n sizes: _propTypes.string\n })).isRequired,\n showNav: _propTypes.bool,\n autoPlay: _propTypes.bool,\n lazyLoad: _propTypes.bool,\n infinite: _propTypes.bool,\n showIndex: _propTypes.bool,\n showBullets: _propTypes.bool,\n showThumbnails: _propTypes.bool,\n showPlayButton: _propTypes.bool,\n showFullscreenButton: _propTypes.bool,\n disableThumbnailScroll: _propTypes.bool,\n disableKeyDown: _propTypes.bool,\n disableSwipe: _propTypes.bool,\n useBrowserFullscreen: _propTypes.bool,\n preventDefaultTouchmoveEvent: _propTypes.bool,\n onErrorImageURL: _propTypes.string,\n indexSeparator: _propTypes.string,\n thumbnailPosition: (0, _propTypes.oneOf)(['top', 'bottom', 'left', 'right']),\n startIndex: _propTypes.number,\n slideDuration: _propTypes.number,\n slideInterval: _propTypes.number,\n slideOnThumbnailOver: _propTypes.bool,\n swipeThreshold: _propTypes.number,\n swipingTransitionDuration: _propTypes.number,\n onSlide: _propTypes.func,\n onBeforeSlide: _propTypes.func,\n onScreenChange: _propTypes.func,\n onPause: _propTypes.func,\n onPlay: _propTypes.func,\n onClick: _propTypes.func,\n onImageLoad: _propTypes.func,\n onImageError: _propTypes.func,\n onTouchMove: _propTypes.func,\n onTouchEnd: _propTypes.func,\n onTouchStart: _propTypes.func,\n onMouseOver: _propTypes.func,\n onMouseLeave: _propTypes.func,\n onThumbnailError: _propTypes.func,\n onThumbnailClick: _propTypes.func,\n renderCustomControls: _propTypes.func,\n renderLeftNav: _propTypes.func,\n renderRightNav: _propTypes.func,\n renderPlayPauseButton: _propTypes.func,\n renderFullscreenButton: _propTypes.func,\n renderItem: _propTypes.func,\n renderThumbInner: _propTypes.func,\n stopPropagation: _propTypes.bool,\n additionalClass: _propTypes.string,\n useTranslate3D: _propTypes.bool,\n isRTL: _propTypes.bool\n};\nImageGallery.defaultProps = {\n onErrorImageURL: '',\n additionalClass: '',\n showNav: true,\n autoPlay: false,\n lazyLoad: false,\n infinite: true,\n showIndex: false,\n showBullets: false,\n showThumbnails: true,\n showPlayButton: true,\n showFullscreenButton: true,\n disableThumbnailScroll: false,\n disableKeyDown: false,\n disableSwipe: false,\n useTranslate3D: true,\n isRTL: false,\n useBrowserFullscreen: true,\n preventDefaultTouchmoveEvent: false,\n flickThreshold: 0.4,\n stopPropagation: false,\n indexSeparator: ' / ',\n thumbnailPosition: 'bottom',\n startIndex: 0,\n slideDuration: 450,\n swipingTransitionDuration: 0,\n onSlide: null,\n onBeforeSlide: null,\n onScreenChange: null,\n onPause: null,\n onPlay: null,\n onClick: null,\n onImageLoad: null,\n onImageError: null,\n onTouchMove: null,\n onTouchEnd: null,\n onTouchStart: null,\n onMouseOver: null,\n onMouseLeave: null,\n onThumbnailError: null,\n onThumbnailClick: null,\n renderCustomControls: null,\n renderThumbInner: null,\n renderItem: null,\n slideInterval: 3000,\n slideOnThumbnailOver: false,\n swipeThreshold: 30,\n renderLeftNav: function renderLeftNav(onClick, disabled) {\n return _react2.default.createElement(\n 'button',\n {\n type: 'button',\n className: 'image-gallery-icon image-gallery-left-nav',\n disabled: disabled,\n onClick: onClick,\n 'aria-label': 'Previous Slide'\n },\n _react2.default.createElement(_SVG2.default, { icon: 'left', viewBox: '6 0 12 24' })\n );\n },\n renderRightNav: function renderRightNav(onClick, disabled) {\n return _react2.default.createElement(\n 'button',\n {\n type: 'button',\n className: 'image-gallery-icon image-gallery-right-nav',\n disabled: disabled,\n onClick: onClick,\n 'aria-label': 'Next Slide'\n },\n _react2.default.createElement(_SVG2.default, { icon: 'right', viewBox: '6 0 12 24' })\n );\n },\n renderPlayPauseButton: function renderPlayPauseButton(onClick, isPlaying) {\n return _react2.default.createElement(\n 'button',\n {\n type: 'button',\n className: 'image-gallery-icon image-gallery-play-button',\n onClick: onClick,\n 'aria-label': 'Play or Pause Slideshow'\n },\n _react2.default.createElement(_SVG2.default, { strokeWidth: 2, icon: isPlaying ? 'pause' : 'play' })\n );\n },\n renderFullscreenButton: function renderFullscreenButton(onClick, isFullscreen) {\n return _react2.default.createElement(\n 'button',\n {\n type: 'button',\n className: 'image-gallery-icon image-gallery-fullscreen-button',\n onClick: onClick,\n 'aria-label': 'Open Fullscreen'\n },\n _react2.default.createElement(_SVG2.default, { strokeWidth: 2, icon: isFullscreen ? 'minimize' : 'maximize' })\n );\n }\n};\nexports.default = ImageGallery;","import \"regenerator-runtime/runtime\";\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\nimport ImageGallery, { ReactImageGalleryItem } from 'react-image-gallery';\r\n\r\nconst domNodes = document.querySelectorAll('.gallery-wrapper');\r\n\r\ndomNodes.forEach(gallery => {\r\n const imagesJsonNode = document.querySelector(gallery.dataset.srcselector);\r\n const images = JSON.parse(imagesJsonNode.textContent) as ReactImageGalleryItem[];\r\n\r\n const element = ( 1} thumbnailPosition={\"bottom\"} />);\r\n\r\n ReactDOM.render(element, gallery);\r\n});"]}