{"version":3,"sources":["webpack://@internetarchive/bookreader/./src/dragscrollable-br.js","webpack://@internetarchive/bookreader/./src/BookReader/utils/classes.js","webpack://@internetarchive/bookreader/./src/BookReader/events.js","webpack://@internetarchive/bookreader/./src/BookReader/Navbar/Navbar.js","webpack://@internetarchive/bookreader/./src/BookReader/options.js","webpack://@internetarchive/bookreader/./src/BookReader/Toolbar/Toolbar.js","webpack://@internetarchive/bookreader/./src/BookReader/BookModel.js","webpack://@internetarchive/bookreader/./src/BookReader/Mode1Up.js","webpack://@internetarchive/bookreader/./src/BookReader/Mode2Up.js","webpack://@internetarchive/bookreader/./src/BookReader/ModeThumb.js","webpack://@internetarchive/bookreader/./src/BookReader/ReduceSet.js","webpack://@internetarchive/bookreader/./src/BookReader/ImageCache.js","webpack://@internetarchive/bookreader/./src/BookReader/PageContainer.js","webpack://@internetarchive/bookreader/./src/BookReader.js","webpack://@internetarchive/bookreader/./src/BookReader/DebugConsole.js","webpack://@internetarchive/bookreader/./src/BookReader/utils.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/a-function.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/a-possible-prototype.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/add-to-unscopables.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/advance-string-index.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/an-instance.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/an-object.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-for-each.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-from.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-includes.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-iteration.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-method-has-species-support.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-method-is-strict.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-reduce.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-species-create.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/classof-raw.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/classof.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/create-iterator-constructor.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/create-property-descriptor.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/create-property.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/define-iterator.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/define-well-known-symbol.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/descriptors.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/document-create-element.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/dom-iterables.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/engine-is-ios.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/engine-is-node.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/engine-is-webos-webkit.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/engine-user-agent.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/engine-v8-version.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/enum-bug-keys.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/export.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/fails.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/flatten-into-array.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/function-bind-context.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/get-built-in.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/get-iterator-method.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/get-iterator.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/get-substitution.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/global.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/has.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/hidden-keys.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/host-report-errors.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/html.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/ie8-dom-define.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/indexed-object.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/inspect-source.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/internal-state.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/is-array.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/is-forced.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/is-object.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/is-pure.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/is-regexp.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/iterate.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/iterator-close.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/iterators-core.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/iterators.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/microtask.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/native-promise-constructor.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/native-symbol.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/native-url.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/native-weak-map.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/new-promise-capability.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/not-a-regexp.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-assign.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-create.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-define-properties.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-define-property.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-keys-internal.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-keys.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-to-string.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/own-keys.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/path.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/perform.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/promise-resolve.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/redefine-all.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/redefine.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/regexp-exec.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/regexp-flags.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/require-object-coercible.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/same-value.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/set-global.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/set-species.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/set-to-string-tag.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/shared-key.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/shared-store.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/shared.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/species-constructor.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-multibyte.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-punycode-to-ascii.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-repeat.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/task.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/this-number-value.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/to-absolute-index.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/to-indexed-object.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/to-integer.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/to-length.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/to-object.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/to-primitive.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/to-string-tag-support.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/uid.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/well-known-symbol.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.concat.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.filter.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.find-index.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.find.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.flat-map.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.from.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.includes.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.iterator.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.join.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.map.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.reduce.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.slice.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.function.name.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.math.log2.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.number.to-fixed.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.object.keys.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.object.to-string.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.promise.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.regexp.exec.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.regexp.to-string.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.includes.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.iterator.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.replace.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.search.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.split.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.symbol.description.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.symbol.iterator.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.symbol.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/web.url-search-params.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/web.url.js","webpack://@internetarchive/bookreader/./node_modules/jquery-colorbox/jquery.colorbox.js","webpack://@internetarchive/bookreader/./node_modules/jquery-ui-touch-punch/jquery.ui.touch-punch.js","webpack://@internetarchive/bookreader/./node_modules/jquery-ui/ui/effect.js","webpack://@internetarchive/bookreader/./node_modules/jquery-ui/ui/ie.js","webpack://@internetarchive/bookreader/./node_modules/jquery-ui/ui/keycode.js","webpack://@internetarchive/bookreader/./node_modules/jquery-ui/ui/version.js","webpack://@internetarchive/bookreader/./node_modules/jquery-ui/ui/widget.js","webpack://@internetarchive/bookreader/./node_modules/jquery-ui/ui/widgets/mouse.js","webpack://@internetarchive/bookreader/./node_modules/jquery-ui/ui/widgets/slider.js","webpack://@internetarchive/bookreader/./node_modules/regenerator-runtime/runtime.js","webpack://@internetarchive/bookreader/external \"jQuery\"","webpack://@internetarchive/bookreader/webpack/bootstrap","webpack://@internetarchive/bookreader/webpack/runtime/chunk loaded","webpack://@internetarchive/bookreader/webpack/runtime/compat get default export","webpack://@internetarchive/bookreader/webpack/runtime/define property getters","webpack://@internetarchive/bookreader/webpack/runtime/global","webpack://@internetarchive/bookreader/webpack/runtime/hasOwnProperty shorthand","webpack://@internetarchive/bookreader/webpack/runtime/make namespace object","webpack://@internetarchive/bookreader/webpack/runtime/node module decorator","webpack://@internetarchive/bookreader/webpack/runtime/jsonp chunk loading","webpack://@internetarchive/bookreader/webpack/startup"],"names":["$","append_namespace","string_of_events","ns","pieces","split","ret","Array","i","length","push","join","left_top","event","x","y","clientX","clientY","screenX","screenY","targetTouches","pageX","pageY","originalEvent","str","console","error","type","left","top","fn","dragscrollable","options","handling_element","this","settings","extend","dragSelector","acceptPropagatedEvent","preventDefault","dragstart","dragcontinue","dragend","dragMinDistance","namespace","scrollWindow","dragContinueHandlerProxy","shouldAbort","window","navigator","dragscroll","dragStartHandler","which","data","target","firstCoord","lastCoord","bind","dragContinueHandler","e","dragEndHandler","each","idx","val","get","addEventListener","lt","delta","scrollTarget","scrollable","scrollLeft","scrollTop","unbind","removeEventListener","Math","abs","distance","max","stopImmediatePropagation","stopPropagation","find","removedragscrollable","document","andSelf","exposeOverrideable","FromClass","fromMethod","fromTransform","ToClass","toMethod","toTransform","wrapper","prototype","apply","arguments","Object","defineProperty","set","overrideFn","newThis","EVENTS","fragmentChange","PostInit","stop","resize","navToggled","fullscreenToggled","zoomOut","zoomIn","mobileNavOpen","Navbar","br","$root","$nav","maxPageNum","minimumControls","maximumControls","controlName","option","controls","visible","template","className","label","iconClassName","map","mode","controlFor","viewModeOptions","viewmode","viewModes","constMode1up","title","constMode2up","constModeThumb","filter","excludedModes","includes","viewModeOrder","m","switchMode","currentModeIndex","indexOf","shift","remove","$button","off","on","nextModeID","newViewMode","nextViewMode","updateViewModeButton","currentTarget","currentViewModeButton","iconClass","tooltipText","attr","removeClass","addClass","end","text","bookType","refs","$brContainer","prop","showMinimumNavbarControls","showMaximumNavbarControls","forEach","control","element","querySelector","classList","add","navbarTitle","isRTL","pageProgression","bookFlipLeft","bookFlipRight","$BRfooter","$BRnav","_renderControls","append","$br","$slider","slider","animate","min","getNumLeafs","value","currentIndex","range","ui","updateNavPageNum","jumpToIndex","_bindViewModeButton","thisLink","location","replace","logoHtml","showLogo","logoURL","bookTitle","index","pageNum","getPageNum","numLeafs","getPageProp","pageNumVal","isNaN","getNavPageNumHtml","pageType","html","getNavPageNumString","undefined","bookLengthLabel","DEFAULT_OPTIONS","defaults","padding","uiAutoHide","thumbRowBuffer","thumbColumns","thumbMaxLoading","thumbPadding","flipSpeed","showToolbar","showNavbar","navBarTitle","imagesBaseURL","reduceSet","reductionFactors","reduce","autofit","onePage","twoPage","coverInternalPadding","coverExternalPadding","bookSpineDivWidth","onePageMinBreakpoint","bookUrl","bookUrlText","bookUrlTitle","enableBookTitleLink","bookLanguage","metadata","thumbnail","bookUrlMoreInfo","enableExperimentalControls","el","ppi","protected","plugins","textSelection","vars","getPageWidth","getPageHeight","getPageURI","getPageSide","getSpreadIndices","leafNumToIndex","getEmbedCode","bookLeft","bookRight","fullScreen","startFullscreen","autoResize","useSrcSet","Toolbar","$BRtoolbar","$titleSectionEl","href","buildToolbarElement","hide","updateToolbarZoom","canSwitchToMode","blankShareDiv","blankInfoDiv","appendTo","buildInfoDiv","buildShareDiv","colorbox","inline","opacity","onLoad","trigger","slice","toUpperCase","toFixed","$shareDiv","pageView","bookView","embedHtml","$form","form","parents","params","page","select","click","createPopup","param","u","_getSocialShareUrl","url","body","encodeURI","protocol","hostname","pathname","$infoDiv","$leftCol","escapeHTML","$rightCol","extraValueClass","escapedValue","moreInfoText","$footer","$children","css","outerHeight","parseInt","width","height","name","dualScreenLeft","screenLeft","screen","dualScreenTop","screenTop","innerWidth","documentElement","clientWidth","innerHeight","clientHeight","opts","open","BookModel","_medianPageSize","_medianPageSizePixels","_getDataFlattenedCached","widths","heights","sort","floor","pagesIterator","widthInches","heightInches","clamp","clampedIndex","pageIndices","getPageIndices","indices","pageIntStr","pageIndex","err","_getDataFlattened","rotate","propName","fallbackValue","_getDataProp","pindex","leafNum","findIndex","d","pageString","leafMatch","exec","getPageIndex","loop","PageModel","start","Infinity","combineConsecutiveUnviewables","getPage","isConsecutiveUnviewable","prevPageSide","unviewablesChunkStart","flattened","flatMap","spread","pageSide","viewable","unviewablesStart","dataf","invalidIndex","book","isViewable","_rawData","newViewableState","prev","findPrev","findNext","initialReduce","topReduce","decr","reduces","r","getURI","next","Mode1Up","bookModel","$documentContainer","screenDPI","calcScreenDPI","LEAF_SPACING_IN","realWorldReduce","bound1","bound2","bottom","boundingBox","intersection","startLeaf","$scrollContainer","empty","overflowX","overflowY","bindGestures","resizePageView","updateBrClasses","inches","pageSpacing","leafTop","leafBottom","physicalInchesToDisplayPixels","scrollRegion","pagesWithBounds","boundIntersection","cur","pagesToDisplay","from","findIntersectingPages","documentContainerWidth","firstProperPage","updateFirstIndex","displayedIndices","_createPageContainer","update","dimensions","$container","notInArray","enableSearch","updateSearchHilites","updateNavIndexThrottled","noAnimate","prevCurrentIndex","getPageTop","leafLeft","animating","direction","nextReductionFactor","nextReduce","removeSearchHilites","availableWidth","medianWidthInches","getMedianPageSizeInches","availableHeight","medianHeightInches","concat","getAutofitWidth","getAutofitHeight","_reduceSort","oldCenterX","viewWidth","oldScrollTop","oldPageViewHeight","oldPageViewWidth","scrollRatio","oldCenterY","centerY","centerX","fudgeFactor","calculateViewDimensions","calculateReductionFactors","reductionFactor","viewDimensions","newCenterX","newCenterY","sizeX","sizeY","drawLeafs","leafSpacing","pageWidth","Mode2Up","leafEdgeL","leafEdgeR","pageContainers","currentIndexL","currentIndexR","flipBackToIndex","flipFwdToIndex","handler","$twoPageViewEl","$brTwoPageView","indexL","indexR","createPageContainer","leftLeafCss","rightLeafCss","setMouseHandlers","stopFlipAnimations","pageScale","oldCenter","getViewCenter","prepareTwoPageView","percentageX","percentageY","resizeBRcontainer","calculateSpreadSize","mainContainerCss","centerView","coverDiv","spreadCoverCss","$spreadLayers","leafEdgeRCss","leafEdgeLCss","spineCss","centerPercentageX","centerPercentageY","drawNewSpread","startingReduce","startingIndices","targetLeaf","firstIndex","firstDisplayableIndex","lastDisplayableIndex","currentSpreadIndices","sameReducer","sameStart","hasNewDisplayPagesOrDimensions","prunePageContainers","prefetch","totalWidth","totalHeight","createElement","div","preparePopUp","twoPagePopUp","zIndex","leafEdges","$leafEdge","jumpIndexForPageX","jumpIndexForLeftEdgePageX","leftOffset","jumpIndexForRightEdgePageX","show","jumpIndex","getPageName","offset","spreadSize","secondIndex","getIdealSpreadSize","getSpreadSizeFromReduce","scaledWL","scaledWR","edgeWidth","totalLeafEdgeWidth","leafEdgeWidthL","leafEdgeWidth","leafEdgeWidthR","bookCoverDivWidth","coverWidth","bookCoverDivHeight","leftGutterOffset","gutterOffsetForIndex","leftWidthFromCenter","rightWidthFromCenter","largestWidthFromCenter","middle","gutter","bookCoverDivLeft","bookCoverDivTop","bookSpineDivHeight","bookSpineDivLeft","bookSpineDivTop","ratio","ideal","first","_getPageHeight","_getPageWidth","second","firstIndexRatio","secondIndexRatio","maxLeafEdgeWidth","widthOutsidePages","heightOutsidePages","round","nativeWidth","nativeHeight","isZoomedIn","getAutofitReduce","warn","leafEdgeTmp","minDisplayedIndex","previousIndices","prepareFlipLeftToRight","flipLeftToRight","prepareFlipRightToLeft","flipRightToLeft","alert","newIndexL","newIndexR","leftLeaf","oldLeafEdgeWidthL","newLeafEdgeWidthL","leafEdgeTmpW","currWidthL","newWidthL","newWidthR","leftEdgeTmpLeft","right","resizeSpread","animationFinishedCallback","textSelectionPlugin","stopPageFlip","maxDisplayedIndex","nextPage","nextIndices","oldLeafEdgeWidthR","newLeafEdgeWidthR","scaledW","speed","self","setClickHandler","prevL","prevR","leftCSS","rightCSS","nextL","nextR","totalPageWidth","center","containerOffset","viewOffset","containerClientWidth","intoViewX","viewHeight","containerClientHeight","intoViewY","flipAreaWidth","pageL","pageT","lowPage","highPage","ADJACENT_PAGES_TO_LOAD","position","baseLeafCss","heightCss","border","visibility","ModeThumb","seekIndex","leafHeight","seekTop","rightPos","bottomPos","maxRight","currentRow","leafIndex","leafMap","leafWidth","thumbWidth","leafs","num","$brPageViewEl","pageViewBuffer","scrollBottom","rowsToDisplay","imagesToDisplay","leastVisible","mostVisible","firstRow","lastRow","row","displayedRows","leaf","idealReduce","thumbReduce","pageContainer","suppressFragmentChange","imgPlaceholder","$img","imageCache","image","$parent","parent","oldColumns","prepare","thumbnailColumns","idealThumbnailWidth","getThumbnailWidth","rowHeight","IntegerReduceSet","n","Pow2ReduceSet","log2","NAMED_REDUCE_SETS","pow2","integer","ImageCache","cache","defaultScale","sufficientImages","loaded","bestReduce","_serveImageElement","cacheImg","idealMaxReduce","candidates","lowerResImages","higherRestImages","validReduce","cacheEntry","src","getURISrcSet","one","PageContainer","isProtected","loadingImage","alreadyLoaded","imageLoaded","nextBestLoadedReduce","getBestLoadedReduce","prependTo","backgroundLayers","ev","BookReader","overrides","jQuery","defaultOptions","optionOverrides","setup","exposeOverrideableMethod","Class","classKey","method","brMethod","classToBr","cls","brToClass","_overrideable","toString","DebugConsole","init","version","constNavAnimationDuration","constResizeAnimationDuration","eventNames","prevReadMode","imgs","prefetchedImgs","flipDelay","lastDisplayableIndex2up","isFullscreenActive","lastScroll","titleLeaf","popup","_models","_components","navbar","toolbar","_modes","mode1Up","mode2Up","modeThumb","newVal","util","utils","extendParams","newParams","modifiedNewParams","parsePageString","initParams","defaultParams","paramsFromFragment","pageFound","enablePageResume","getResumeValue","enableUrlPlugin","urlParams","urlReadFragment","keys","urlReadHashFragment","urlMode","goToFirstResult","initialSearchTerm","search","searchTerm","URLSearchParams","readQueryString","decodeURIComponentPlus","getLocationSearch","getLocationHash","hash","queryString","found","getInitialMode","nextMode","windowWidth","enableMobileNav","initComplete","isTouchDevice","initEmbedNavbar","initToolbar","initNavbar","switchNavbarControls","updateFromParams","initUIStrings","bindNavigationHandlers","setupKeyListeners","Date","getTime","drawLeafsThrottled","toggleFullscreen","props","eventName","dispatchEvent","CustomEvent","bubbles","composed","detail","callback","resizePageView1up","centerPageView","prepareThumbnailView","twoPageGetViewCenter","doRecenter","twoPageCenterView","keydown","keyboardNavigationIsDisabled","keyCode","last","zoom","drawLeafsOnePage","drawLeafsThumbnail","drawLeafsTwoPage","jElement","numTouches","cancelable","touches","scale","lazyLoadThumbnails","lazyLoadImage","zoomThumb","throttle","zoom1up","zoom2up","getToolBarHeight","getFooterHeight","scrollWidth","quantizeReduce","quantized","newDistance","currentReduce","newReduceIndex","lastIndex","autoMatch","rf","choice","match","a","b","jumpToPage","_isIndexDisplayed","newIndex","getPrevReadMode","onePageCalculateReductionFactors","prepareOnePageView","setSpreadIndices","twoPageCalculateReductionFactors","modeToClass","isFullscreen","bindKeyboardControls","exitFullScreen","enterFullscreen","_fullscreenCloseHandler","keyup","rightmost","leftmost","scrollDown","inArray","onePageGetAutofitHeight","_scrollAmount","scrollUp","prefetchImg","pruneUnusedImgs","onePageGetAutofitWidth","onePageGetPageTop","onePageCalculateViewDimensions","centerX1up","centerY1up","twoPageGetAutofitReduce","setHilightCss2UP","setHilightCss","setClickHandler2UP","prepareTwoPagePopUp","twoPageIsZoomedIn","twoPageSetCursor","setCursor","setMouseHandlers2UP","getPageWidth2UP","twoPageGutter","twoPageTop","twoPageCoverWidth","twoPageFlipAreaHeight","flipAreaHeight","twoPageFlipAreaWidth","twoPageFlipAreaTop","flipAreaTop","twoPageLeftFlipAreaLeft","leftFlipAreaLeft","twoPageRightFlipAreaLeft","rightFlipAreaLeft","tagName","initEmbed","updateNavIndex","updateNavIndexDebounced","debounce","jIcons","navigationControls","book_left","book_right","book_up","book_down","book_top","book_bottom","book_leftmost","book_rightmost","onepg","thumb","twopg","zoom_in","zoom_out","full","$brNavCntlBtmEl","$brNavCntlTopEl","promises","hasClass","promise","delay","when","done","mouseover","mouseleave","initSwipeData","navigationMousemoveHandler","swipeMousedownHandler","bindMozTouchHandlers","unbindNavigationHandlers","navkey","hideNavigation","showNavigation","_swipe","mightBeSwiping","didSwipe","mightBeDraggin","didDrag","startTime","startX","startY","lastX","lastY","deltaX","deltaY","deltaT","swipeMouseupHandler","swipeMousemoveHandler","mightBeDragging","returnValue","cancelBubble","absX","absY","minSwipeLength","navigationIsVisible","setNavigationView","animationLength","animationType","resizePageContainer","toolbarHeight","navbarHeight","getMedianPageSize","enableThemesPlugin","theme","updateTheme","_getPageURISrcset","_getPageURI","showProgressPopup","msg","bar","msgdiv","innerHTML","removeProgressPopup","titles","icon","reloadImages","elem","complete","naturalHeight","setTimeout","$heightEl","paramsFromCurrent","fragment","substr","oldStyleLeafNum","urlArray","urlHash","fragmentFromParams","separator","fragments","encodeURIComponentPlus","queryStringFromParams","currQueryString","result","selector","curCSS","currentRun","$log","prepend","submit","eval","logToScreen","_realLog","log","args","onerror","JSON","stringify","$lastEntry","children","disableSelect","jObject","onselectstart","cssPercentage","array","getIFrameDocument","iframe","outer","contentWindow","contentDocument","decodeURIComponent","encodeURIComponent","func","wait","immediate","timeout","context","later","callNow","clearTimeout","threshold","deferTimer","now","polyfillCustomEvent","PolyfilledCustomEvent","createEvent","initCustomEvent","sleep","ms","Promise","res","style","appendChild","dpi","offsetWidth","removeChild","devicePixelRatio","module","exports","it","TypeError","String","isObject","wellKnownSymbol","create","definePropertyModule","UNSCOPABLES","ArrayPrototype","f","configurable","key","charAt","S","unicode","Constructor","$forEach","STRICT_METHOD","arrayMethodIsStrict","callbackfn","toObject","callWithSafeIterationClosing","isArrayIteratorMethod","toLength","createProperty","getIteratorMethod","arrayLike","step","iterator","O","C","argumentsLength","mapfn","mapping","iteratorMethod","call","toIndexedObject","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","fromIndex","IndexedObject","arraySpeciesCreate","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_OUT","NO_HOLES","that","specificCreate","boundFunction","some","every","filterOut","fails","V8_VERSION","SPECIES","METHOD_NAME","constructor","foo","Boolean","argument","aFunction","IS_RIGHT","memo","isArray","originalArray","anObject","iteratorClose","ENTRIES","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","object","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","CORRECT_ARGUMENTS","tag","tryGet","callee","has","ownKeys","getOwnPropertyDescriptorModule","source","getOwnPropertyDescriptor","MATCH","regexp","error1","error2","F","getPrototypeOf","IteratorPrototype","createPropertyDescriptor","setToStringTag","Iterators","returnThis","IteratorConstructor","NAME","DESCRIPTORS","bitmap","enumerable","writable","toPrimitive","propertyKey","createIteratorConstructor","setPrototypeOf","createNonEnumerableProperty","redefine","IS_PURE","IteratorsCore","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","values","proto","forced","path","wrappedWellKnownSymbolModule","Symbol","global","EXISTS","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","userAgent","test","classof","process","getBuiltIn","versions","v8","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","sham","REPLACE_SUPPORTS_NAMED_GROUPS","re","groups","REPLACE_KEEPS_$0","REPLACE","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","flags","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","RegExp","stringMethod","regexMethod","string","arg","flattenIntoArray","original","sourceLen","depth","mapper","thisArg","targetIndex","sourceIndex","mapFn","c","variable","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","captures","namedCaptures","replacement","tailPos","symbols","ch","capture","check","globalThis","g","Function","hasOwnProperty","propertyIsEnumerable","store","functionToString","inspectSource","NATIVE_WEAK_MAP","objectHas","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","state","wmget","wmhas","wmset","facade","STATE","enforce","getterFor","feature","detection","normalize","POLYFILL","NATIVE","toLowerCase","isRegExp","Result","stopped","iterable","unboundFunction","iterFn","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","condition","callFn","returnMethod","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","flush","head","notify","toggle","node","then","macrotask","IS_IOS","IS_WEBOS_WEBKIT","IS_NODE","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","domain","exit","enter","resolve","nextTick","createTextNode","observe","characterData","task","getOwnPropertySymbols","URL","searchParams","toJSON","username","host","PromiseCapability","reject","$$resolve","$$reject","objectKeys","getOwnPropertySymbolsModule","propertyIsEnumerableModule","$assign","assign","A","B","symbol","alphabet","chr","T","j","activeXDocument","defineProperties","enumBugKeys","documentCreateElement","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObject","ActiveXObject","iframeDocument","write","close","temp","parentWindow","NullProtoObjectViaActiveX","display","Properties","IE8_DOM_DEFINE","$defineProperty","P","Attributes","$getOwnPropertyDescriptor","$getOwnPropertyNames","windowNames","getOwnPropertyNames","getWindowNames","internalObjectKeys","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","names","$propertyIsEnumerable","NASHORN_BUG","1","V","aPossiblePrototype","setter","CORRECT_SETTER","__proto__","getOwnPropertyNamesModule","newPromiseCapability","promiseCapability","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","unsafe","simple","regexpExec","R","re1","re2","regexpFlags","stickyHelpers","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","sticky","charsAdded","strCopy","multiline","input","ignoreCase","dotAll","RE","s","is","CONSTRUCTOR_NAME","TAG","uid","SHARED","copyright","defaultConstructor","toInteger","requireObjectCoercible","CONVERT_TO_STRING","pos","size","charCodeAt","codeAt","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","stringFromCharCode","fromCharCode","digitToBasic","digit","adapt","numPoints","firstTime","k","baseMinusTMin","base","encode","currentValue","output","inputLength","counter","extra","ucs2decode","bias","basicLength","handledCPCount","handledCPCountPlusOne","RangeError","q","t","qMinusT","baseMinusT","encoded","labels","count","defer","channel","port","setImmediate","clear","clearImmediate","MessageChannel","Dispatch","queue","run","id","runner","listener","post","postMessage","port2","port1","onmessage","importScripts","ceil","PREFERRED_STRING","valueOf","postfix","random","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","len","E","$filter","$findIndex","addToUnscopables","FIND_INDEX","SKIPS_HOLES","$find","FIND","checkCorrectnessOfIteration","$includes","defineIterator","ARRAY_ITERATOR","setInternalState","iterated","kind","Arguments","nativeJoin","ES3_STRINGS","$map","$reduce","CHROME_VERSION","HAS_SPECIES_SUPPORT","nativeSlice","fin","FunctionPrototype","FunctionPrototypeToString","nameRE","LN2","thisNumberValue","repeat","nativeToFixed","pow","acc","multiply","c2","divide","dataToString","fractionDigits","z","number","fractDigits","sign","x2","nativeGetOwnPropertyDescriptor","FAILS_ON_PRIMITIVES","getOwnPropertyDescriptors","nativeKeys","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","NativePromise","redefineAll","setSpecies","anInstance","iterate","speciesConstructor","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","perform","PROMISE","getInternalPromiseState","PromiseConstructor","$fetch","newGenericPromiseCapability","DISPATCH_EVENT","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","FakePromise","INCORRECT_ITERATION","all","isThenable","isReject","notified","chain","reactions","ok","exited","reaction","fail","rejection","onHandleUnhandled","onUnhandled","reason","initEvent","isUnhandled","emit","unwrap","internalReject","internalResolve","executor","onFulfilled","onRejected","fetch","wrap","capability","$promiseResolve","remaining","alreadyCalled","race","TO_STRING","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","p","notARegExp","correctIsRegExpLogic","searchString","STRING_ITERATOR","point","fixRegExpWellKnownSymbolLogic","advanceStringIndex","getSubstitution","regExpExec","maybeCallNative","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","rx","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","replacerArgs","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex","callRegExpExec","arrayPush","MAX_UINT32","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","lastLastIndex","separatorCopy","splitter","unicodeMatching","NativeSymbol","description","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","desc","defineWellKnownSymbol","nativeObjectCreate","getOwnPropertyNamesExternal","HIDDEN","TO_PRIMITIVE","$Symbol","$stringify","nativeDefineProperty","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","isSymbol","$defineProperties","properties","$getOwnPropertySymbols","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","space","$replacer","DOMIterables","COLLECTION_NAME","Collection","CollectionPrototype","ArrayIteratorMethods","ArrayValues","USE_NATIVE_URL","hasOwn","getIterator","Headers","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","getInternalIteratorState","plus","sequences","percentSequence","bytes","percentDecode","sequence","deserialize","serialize","parseSearchParams","query","attribute","entry","attributes","updateSearchParams","validateArgumentsLength","passed","required","URLSearchParamsIterator","URLSearchParamsConstructor","entryIterator","entryNext","updateURL","URLSearchParamsPrototype","splice","getAll","entriesIndex","sliceIndex","headers","getState","EOF","arrayFrom","toASCII","URLSearchParamsModule","NativeURL","getInternalSearchParamsState","getInternalURLState","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","part","radix","ipv4","parts","pop","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","compress","pointer","char","serializeHost","ignore0","unshift","ipv6","maxIndex","maxLength","currStart","currLength","findLongestZeroSequence","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","code","specialSchemes","ftp","file","http","https","ws","wss","scheme","includesCredentials","password","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","third","shortenURLsPath","pathSize","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","bufferCodePoints","failure","buffer","seenAt","seenBracket","seenPasswordToken","codePoint","encodedCodePoints","URLConstructor","baseState","urlString","searchParamsState","serializeURL","origin","getOrigin","getProtocol","getUsername","getPassword","getHost","getHostname","getPort","getPathname","getSearch","getSearchParams","getHash","URLPrototype","accessorDescriptor","getter","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","blob","$overlay","$box","$wrap","$content","$topBorder","$leftBorder","$rightBorder","$bottomBorder","$related","$window","$loaded","$loadingBay","$loadingOverlay","$title","$current","$slideshow","$next","$prev","$close","$groupControls","interfaceHeight","interfaceWidth","loadedHeight","loadedWidth","photo","active","closing","loadingTimer","publicMethod","transition","fadeOut","initialWidth","maxWidth","initialHeight","maxHeight","scalePhotos","scrolling","preloading","overlayClose","escKey","arrowKey","fixed","closeButton","fastIframe","reposition","slideshow","slideshowAuto","slideshowSpeed","slideshowStart","slideshowStop","photoRegex","retinaImage","retinaUrl","retinaSuffix","current","previous","xhrError","imgError","returnFocus","trapFocus","onOpen","onComplete","onCleanup","onClosed","rel","createImg","img","Image","attrs","createIframe","frameBorder","allowTransparency","allowFullscreen","boxElement","prefix","event_load","event_complete","event_cleanup","event_closed","event_purge","$events","requests","previousCSS","$tag","cssText","winheight","Settings","dataAttr","isFunction","getIndex","increment","setSize","dimension","isImage","contains","focus","setClass","triggerHandler","timeOut","reset","launch","outerWidth","w","h","parseFloat","cursor","setResize","$inline","prep","request","mw","mh","$target","eq","insertBefore","replaceWith","percent","marginTop","load","status","contents","appendHTML","support","role","tabindex","$obj","clickHandler","shiftKey","altKey","metaKey","ctrlKey","live","addBindings","old","loadedCallback","modalDimensions","tempSpeed","dequeue","duration","scrolltop","overflow","total","removeFilter","removeAttribute","fadeTo","removeData","touch","touchHandled","mouseProto","mouse","_mouseInit","_mouseDestroy","_touchStart","_mouseCapture","changedTouches","_touchMoved","simulateMouseEvent","_touchMove","_touchEnd","touchstart","proxy","touchmove","touchend","simulatedType","simulatedEvent","initMouseEvent","baseEasings","dataSpace","dataSpaceStyle","dataSpaceAnimated","effects","effect","colors","rplusequals","stringParsers","parse","execResult","color","Color","green","blue","alpha","spaces","rgba","red","hsla","hue","saturation","lightness","propTypes","mod","supportElem","allowEmpty","def","stringParse","inst","_rgba","parser","parsed","spaceName","transparent","hue2rgb","backgroundColor","jquery","nodeType","_default","to","compare","same","_","localCache","isCache","_space","used","other","startColor","startValue","endValue","blend","opaque","rgb","v","toRgbaString","toHslaString","toHexString","includeAlpha","diff","l","arr","local","vtype","_hsla","hook","hooks","cssHooks","curElem","parentNode","fx","colorInit","borderColor","expand","expanded","aqua","black","fuchsia","gray","lime","maroon","navy","olive","purple","silver","teal","white","yellow","orig","classAnimationActions","shorthandStyles","borderBottom","borderLeft","borderRight","borderTop","borderWidth","margin","getElementStyles","ownerDocument","defaultView","getComputedStyle","currentStyle","styles","camelCase","setAttr","addBack","prevObject","animateClass","easing","o","applyClassChange","animated","baseClass","allAnimations","action","oldStyle","newStyle","styleDifference","styleInfo","dfd","Deferred","classNames","toggleClass","force","switchClass","_normalizeArguments","isPlainObject","speeds","standardAnimationOption","parseClip","expr","filters","uiBackCompat","save","restore","setMode","createWrapper","fontSize","background","activeElement","removeWrapper","define","scaledDimensions","clipToBox","animation","clip","queueLength","saveStyle","restoreStyle","hidden","getBaseline","createPlaceholder","placeholder","cssPosition","marginBottom","marginLeft","marginRight","nodeName","insertAfter","removePlaceholder","dataKey","cleanUp","setTransition","list","factor","unit","cssUnit","effectMethod","defaultMode","queueName","modes","prefilter","normalizedMode","cssClip","clipObj","transfer","targetFixed","fixTop","fixLeft","endPosition","startPosition","clipInit","Sine","cos","PI","Circ","sqrt","Elastic","sin","Back","Bounce","bounce","easeIn","ie","BACKSPACE","COMMA","DELETE","DOWN","END","ENTER","ESCAPE","HOME","LEFT","PAGE_DOWN","PAGE_UP","PERIOD","RIGHT","SPACE","TAB","UP","widgetUuid","widgetSlice","cleanData","elems","events","_data","widget","existingConstructor","basePrototype","proxiedPrototype","fullName","Widget","_createWidget","_proto","_childConstructors","_super","_superApply","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","child","childPrototype","bridge","inputIndex","isMethodCall","methodValue","instance","pushStack","_init","defaultElement","classes","disabled","uuid","eventNamespace","bindings","hoverable","focusable","classesElementLookup","_on","destroy","_getCreateOptions","_create","_setOptionDisabled","_trigger","_getCreateEventData","noop","_destroy","_removeClass","removeAttr","curOption","_setOptions","_setOption","_setOptionClasses","elements","currentElements","_classes","_toggleClass","enable","disable","processClassString","checkOption","unique","not","_untrackClassesElement","_addClass","suppressDisabledCheck","handlers","delegateElement","handlerProxy","guid","_off","_delay","_hoverable","mouseenter","_focusable","focusin","focusout","Event","isDefaultPrevented","defaultEffect","hasOptions","effectName","isEmptyObject","mouseHandled","cancel","_mouseDown","started","_mouseMoveDelegate","_mouseUpDelegate","_mouseMoved","_mouseStarted","_mouseUp","_mouseDownEvent","btnIsLeft","elIsCancel","closest","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseStart","_mouseMove","documentMode","button","ignoreMissingWhich","_mouseDrag","_mouseStop","orientation","change","slide","numPages","_keySliding","_mouseSliding","_animateOff","_handleIndex","_detectOrientation","_calculateNewMax","_refresh","_createRange","_createHandles","_setupEvents","_refreshValue","handleCount","existingHandles","handles","handle","_valueMin","_handleEvents","normValue","closestHandle","mouseOverHandle","elementSize","elementOffset","_normValueFromMouse","_valueMax","thisDistance","_lastChangedValue","_start","_clickOffset","_slide","_stop","_change","pixelTotal","pixelMouse","percentMouse","valueTotal","valueMouse","_trimAlignValue","_uiHash","uiHash","handleIndex","_hasMultipleValues","otherVal","newValues","newValue","_value","vals","_values","valsLength","_refreshRange","valModStep","alignValue","_precision","precision","_precisionOf","decimal","lastValPercent","valPercent","valueMin","valueMax","oRange","_set","curVal","runtime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","obj","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","reverse","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","__webpack_module_cache__","deferred","__webpack_require__","moduleId","cachedModule","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","__esModule","definition","nmd","paths","installedChunks","898","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","chunkLoadingGlobal","__webpack_exports__"],"mappings":"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","file":"BookReader.js","sourcesContent":["/*\n * jQuery dragscrollable Plugin\n * version: 1.0 (25-Jun-2009)\n * Copyright (c) 2009 Miquel Herrera\n *\n * Portions Copyright (c) 2010 Reg Braithwaite\n * Copyright (c) 2010 Internet Archive / Michael Ang\n * Copyright (c) 2016 Internet Archive / Richard Caceres\n *\n * Dual licensed under the MIT and GPL licenses:\n * http://www.opensource.org/licenses/mit-license.php\n * http://www.gnu.org/licenses/gpl.html\n *\n * Modified by richard@archive.org 2016\n * - Added check to disable on touch enabled devices\n * - Change dragend handler to bind using event \"capturing\" instead of \"bubbling\"\n */\n(function($) { // secure $ jQuery alias\n\n /**\n * Adds the ability to manage elements scroll by dragging\n * one or more of its descendant elements. Options parameter\n * allow to specifically select which inner elements will\n * respond to the drag events.\n *\n * options properties:\n * ------------------------------------------------------------------------\n * dragSelector | jquery selector to apply to each wrapped element\n * | to find which will be the dragging elements.\n * | Defaults to '>:first' which is the first child of\n * | scrollable element\n * ------------------------------------------------------------------------\n * acceptPropagatedEvent| Will the dragging element accept propagated\n *\t | events? default is yes, a propagated mouse event\n *\t | on a inner element will be accepted and processed.\n *\t | If set to false, only events originated on the\n *\t | draggable elements will be processed.\n * ------------------------------------------------------------------------\n * preventDefault | Prevents the event to propagate further effectivey\n * | disabling other default actions. Defaults to true\n * ------------------------------------------------------------------------\n * scrollWindow | Scroll the window rather than the element\n * | Defaults to false\n * ------------------------------------------------------------------------\n *\n * usage examples:\n *\n * To add the scroll by drag to the element id=viewport when dragging its\n * first child accepting any propagated events\n *\t$('#viewport').dragscrollable();\n *\n * To add the scroll by drag ability to any element div of class viewport\n * when dragging its first descendant of class dragMe responding only to\n * evcents originated on the '.dragMe' elements.\n *\t$('div.viewport').dragscrollable({dragSelector:'.dragMe:first',\n *\t\t\t\t\t\t\t\t\t acceptPropagatedEvent: false});\n *\n * Notice that some 'viewports' could be nested within others but events\n * would not interfere as acceptPropagatedEvent is set to false.\n *\n */\n\n var append_namespace = function (string_of_events, ns) {\n\n /* IE doesn't have map\n\treturn string_of_events\n\t\t.split(' ')\n\t\t\t.map(function (name) { return name + ns; })\n\t\t\t\t.join(' ');\n */\n var pieces = string_of_events.split(' ');\n var ret = new Array();\n for (var i = 0; i < pieces.length; i++) {\n ret.push(pieces[i] + ns);\n }\n return ret.join(' ');\n };\n\n var left_top = function(event) {\n\n var x;\n var y;\n if (typeof(event.clientX) != 'undefined') {\n x = event.clientX;\n y = event.clientY;\n }\n else if (typeof(event.screenX) != 'undefined') {\n x = event.screenX;\n y = event.screenY;\n }\n else if (typeof(event.targetTouches) != 'undefined') {\n x = event.targetTouches[0].pageX;\n y = event.targetTouches[0].pageY;\n }\n else if (typeof(event.originalEvent) == 'undefined') {\n var str = '';\n for (const i in event) {\n str += ', ' + i + ': ' + event[i];\n }\n console.error(\"don't understand x and y for \" + event.type + ' event: ' + str);\n }\n else if (typeof(event.originalEvent.clientX) != 'undefined') {\n x = event.originalEvent.clientX;\n y = event.originalEvent.clientY;\n }\n else if (typeof(event.originalEvent.screenX) != 'undefined') {\n x = event.originalEvent.screenX;\n y = event.originalEvent.screenY;\n }\n else if (typeof(event.originalEvent.targetTouches) != 'undefined') {\n x = event.originalEvent.targetTouches[0].pageX;\n y = event.originalEvent.targetTouches[0].pageY;\n }\n\n return {left: x, top:y};\n };\n\n $.fn.dragscrollable = function( options ) {\n\n var handling_element = $(this);\n\n var settings = $.extend(\n {\n dragSelector:'>:first',\n acceptPropagatedEvent: true,\n preventDefault: true,\n dragstart: 'mousedown touchstart',\n dragcontinue: 'mousemove touchmove',\n dragend: 'mouseup touchend', // mouseleave\n dragMinDistance: 5,\n namespace: '.ds',\n scrollWindow: false,\n },options || {});\n\n settings.dragstart = append_namespace(settings.dragstart, settings.namespace);\n settings.dragcontinue = append_namespace(settings.dragcontinue, settings.namespace);\n //settings.dragend = append_namespace(settings.dragend, settings.namespace);\n\n var shouldAbort = function() {\n var isTouchDevice = !!('ontouchstart' in window) || !!('msmaxtouchpoints' in window.navigator);\n return isTouchDevice;\n };\n\n var dragContinueHandlerProxy;\n\n var dragscroll = {\n dragStartHandler : function(event) {\n if (shouldAbort()) { return true; }\n\n // mousedown, left click, check propagation\n if (event.which > 1 ||\n\t\t\t\t(!event.data.acceptPropagatedEvent && event.target != this)) {\n return false;\n }\n\n event.data.firstCoord = left_top(event);\n // Initial coordinates will be the last when dragging\n event.data.lastCoord = event.data.firstCoord;\n\n handling_element\n .bind(settings.dragcontinue, event.data, dragscroll.dragContinueHandler)\n //.bind(settings.dragend, event.data, dragscroll.dragEndHandler)\n ;\n\n // Note, we bind using addEventListener so we can use \"capture\" binding\n // instead of \"bubble\" binding\n dragContinueHandlerProxy = function(e) {\n e.data = event.data;\n dragscroll.dragEndHandler(e);\n };\n $.each(settings.dragend.split(' '), function(idx, val) {\n handling_element.get(0).addEventListener(val, dragContinueHandlerProxy, true);\n });\n\n if (event.data.preventDefault) {\n event.preventDefault();\n return false;\n }\n },\n dragContinueHandler : function(event) { // User is dragging\n // console.log('drag continue');\n if (shouldAbort()) { return true; }\n\n var lt = left_top(event);\n\n // How much did the mouse move?\n var delta = {left: (lt.left - event.data.lastCoord.left),\n top: (lt.top - event.data.lastCoord.top)};\n\n var scrollTarget = event.data.scrollable;\n if (event.data.scrollWindow) {\n scrollTarget = $(window);\n }\n // Set the scroll position relative to what ever the scroll is now\n scrollTarget.scrollLeft( scrollTarget.scrollLeft() - delta.left );\n scrollTarget.scrollTop(\tscrollTarget.scrollTop() - delta.top );\n\n // Save where the cursor is\n event.data.lastCoord = lt;\n\n if (event.data.preventDefault) {\n event.preventDefault();\n return false;\n }\n },\n dragEndHandler : function(event) { // Stop scrolling\n //console.log('dragEndHandler');\n\n if (shouldAbort()) { return true; }\n\n handling_element\n .unbind(settings.dragcontinue)\n // Note, for some reason, even though I removeEventListener below,\n // this call to unbind is still necessary. I don't know why.\n .unbind(settings.dragend)\n ;\n\n // Note, we bind using addEventListener so we can use \"capture\" binding\n // instead of \"bubble\" binding\n $.each(settings.dragend.split(' '), function(idx, val) {\n handling_element.get(0).removeEventListener(val, dragContinueHandlerProxy, true);\n });\n\n // How much did the mouse move total?\n var delta = {left: Math.abs(event.data.lastCoord.left - event.data.firstCoord.left),\n top: Math.abs(event.data.lastCoord.top - event.data.firstCoord.top)};\n var distance = Math.max(delta.left, delta.top);\n\n // Allow event to propagate if min distance was not achieved\n if (event.data.preventDefault && distance > settings.dragMinDistance) {\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n return false;\n }\n }\n };\n\n // set up the initial events\n return this.each(function() {\n // closure object data for each scrollable element\n var data = {scrollable : $(this),\n acceptPropagatedEvent : settings.acceptPropagatedEvent,\n preventDefault : settings.preventDefault,\n scrollWindow : settings.scrollWindow };\n // Set mouse initiating event on the desired descendant\n $(this).find(settings.dragSelector).\n bind(settings.dragstart, data, dragscroll.dragStartHandler);\n });\n }; //end plugin dragscrollable\n\n // Note, this probably doesn't work anymore with our modifications - Nov/8/2016\n $.fn.removedragscrollable = function (namespace) {\n if (typeof(namespace) == 'undefined')\n namespace = '.ds';\n return this.each(function() {\n $(document).find('*').andSelf().unbind(namespace);\n });\n };\n\n})( jQuery ); // confine scope\n","/**\n * Exposes a function from one class (FromClass) to another (ToClass), in such a way\n * that if the ToClass's method is overridden, the FromClass's method is also overridden.\n * WARNING: This modifies FromClass' prototype! So FromClasses cannot be shared between\n * different ToClasses.\n * @param {new () => TFrom} FromClass the class to get the method from\n * @param {keyof TFrom} fromMethod the method's name in FromClass\n * @param {function(TFrom): TTo} fromTransform how to get the TTo `this` to use when setting the method on TFrom\n * @param {new () => TTo} ToClass the class to add the method to\n * @param {string} toMethod the name of the method to add to TTo (likely will be equal to fromMethod)\n * @param {function(TTo): TFrom} toTransform how to get the TFrom this to use when calling the new method\n * @template TFrom type of FromClass for type-checking/autocomplete\n * @template TTo type of ToClass for type-checking/autocomplete\n */\nexport function exposeOverrideable(FromClass, fromMethod, fromTransform, ToClass, toMethod, toTransform) {\n // Wrapper function needed to \"capture\" the current version of fromMethod\n let wrapper = (fn => {\n return function () {\n return fn.apply(toTransform(this), arguments);\n };\n })(FromClass.prototype[fromMethod]);\n\n Object.defineProperty(ToClass.prototype, toMethod, {\n get() { return wrapper; },\n set(overrideFn) {\n // overrideFn expects `this` to be ToClass, so ensure as such\n // But we can also call this method from FromClass; need to ensure\n // it's always called with a ToClass\n FromClass.prototype[fromMethod] = function () {\n const newThis = this instanceof FromClass ? fromTransform(this) : this;\n return overrideFn.apply(newThis, arguments);\n };\n wrapper = overrideFn;\n }\n });\n}\n","/** @enum {string} */\nexport const EVENTS = {\n /** Indicates that the fragment (a serialization of the reader\n * state) has changed. */\n fragmentChange: 'fragmentChange',\n PostInit: 'PostInit',\n stop: 'stop',\n resize: 'resize',\n // nav events:\n navToggled: 'navToggled',\n // menu click events\n fullscreenToggled: 'fullscreenToggled',\n zoomOut: 'zoomOut',\n zoomIn: 'zoomIn',\n '1PageViewSelected': '1PageViewSelected',\n '2PageViewSelected': '2PageViewSelected',\n /* currently 3 represents thumbnail view */\n '3PageViewSelected': '3PageViewSelected',\n mobileNavOpen: 'mobileNavOpen',\n};\n","/** @typedef {import(\"../../BookReader.js\").default} BookReader */\n\nimport 'jquery-ui/ui/widget.js';\nimport 'jquery-ui/ui/widgets/mouse.js';\nimport 'jquery-ui/ui/widgets/slider.js';\nimport { EVENTS } from '../events.js';\n\nexport class Navbar {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n this.br = br;\n\n /** @type {JQuery} */\n this.$root = null;\n /** @type {JQuery} */\n this.$nav = null;\n /** @type {number} */\n this.maxPageNum = null;\n\n /** @type {Object} controls will be switch over \"this.maximumControls\" */\n this.minimumControls = [\n 'viewmode'\n ];\n /** @type {Object} controls will be switch over \"this.minimumControls\" */\n this.maximumControls = [\n 'book_left', 'book_right', 'zoom_in', 'zoom_out', 'onepg', 'twopg', 'thumb'\n ];\n }\n\n controlFor(controlName) {\n const option = this.br.options.controls[controlName];\n if (!option.visible) { return ''; }\n if (option.template) {\n return `
  • ${option.template(this.br)}
  • `;\n }\n return `
  • \n \n
  • `;\n }\n\n /** @private */\n _renderControls() {\n return [\n 'bookLeft',\n 'bookRight',\n 'onePage',\n 'twoPage',\n 'thumbnail',\n 'viewmode',\n 'zoomOut',\n 'zoomIn',\n 'fullScreen',\n ].map((mode) => (\n this.controlFor(mode)\n )).join('');\n }\n\n /** @private */\n _bindViewModeButton() {\n const { br } = this;\n const viewModeOptions = br.options.controls.viewmode;\n const viewModes = [{\n mode: br.constMode1up,\n className: 'onepg',\n title: 'One-page view',\n }, {\n mode: br.constMode2up,\n className: 'twopg',\n title: 'Two-page view',\n }, {\n mode: br.constModeThumb,\n className: 'thumb',\n title: 'Thumbnail view',\n }].filter((mode) => (\n !viewModeOptions.excludedModes.includes(mode.mode)\n ));\n const viewModeOrder = viewModes.map((m) => m.mode);\n\n if (viewModeOptions.excludedModes.includes(br.mode)) {\n br.switchMode(viewModeOrder[0]);\n }\n\n // Reorder the viewModeOrder so the current view mode is at the end\n const currentModeIndex = viewModeOrder.indexOf(br.mode);\n for (let i = 0; i <= currentModeIndex; i++) {\n viewModeOrder.push(viewModeOrder.shift());\n }\n\n if (viewModes.length < 2) {\n this.$nav.find(`.${viewModeOptions.className}`).remove();\n }\n\n this.br.bind(EVENTS.PostInit, () => {\n const $button = this.$nav.find(`.${viewModeOptions.className}`)\n .off('.bindNavigationHandlers')\n .on('click', (e) => {\n const nextModeID = viewModeOrder.shift();\n const newViewMode = viewModes.find((m) => m.mode === nextModeID);\n const nextViewMode = viewModes.find((m) => m.mode === viewModeOrder[0]);\n\n viewModeOrder.push(nextModeID);\n br.viewModeOrder = viewModeOrder;\n this.updateViewModeButton($(e.currentTarget), nextViewMode.className, nextViewMode.title);\n br.switchMode(newViewMode.mode);\n });\n const currentViewModeButton = viewModes.find((m) => m.mode === viewModeOrder[0]);\n this.updateViewModeButton(\n $button,\n currentViewModeButton.className,\n currentViewModeButton.title\n );\n });\n }\n\n /**\n * Toggle viewmode button to change page view\n */\n updateViewModeButton($button, iconClass, tooltipText) {\n $button\n .attr('title', tooltipText)\n .find('.icon')\n .removeClass()\n .addClass(`icon icon-${iconClass}`)\n .end()\n .find('.tooltip')\n .text(tooltipText);\n }\n\n /**\n * Switch navbar controls on mobile and desktop\n */\n switchNavbarControls() {\n // we don't want navbar controls switching with liner-notes\n if (this.br.options.bookType !== 'linerNotes') {\n if (this.br.refs.$brContainer.prop('clientWidth') < 640) {\n this.showMinimumNavbarControls();\n } else {\n this.showMaximumNavbarControls();\n }\n }\n }\n\n /**\n * Switch Book Navbar controls to minimised\n * NOTE: only `this.minimumControls` and `this.maximumControls` switch on resize\n */\n showMinimumNavbarControls() {\n this.minimumControls.forEach((control) => {\n const element = document.querySelector(`.controls .${control}`);\n if (element) element.classList.remove('hide');\n });\n this.maximumControls.forEach((control) => {\n const element = document.querySelector(`.controls .${control}`);\n if (element) element.classList.add('hide');\n });\n }\n\n /**\n * Switch Book Navbar controls to maximized\n * NOTE: only `this.minimumControls` and `this.maximumControls` switch on resize\n */\n showMaximumNavbarControls() {\n this.maximumControls.forEach((control) => {\n const element = document.querySelector(`.controls .${control}`);\n if (element) element.classList.remove('hide');\n });\n this.minimumControls.forEach((control) => {\n const element = document.querySelector(`.controls .${control}`);\n if (element) element.classList.add('hide');\n });\n }\n\n /**\n * Initialize the navigation bar (bottom)\n * @return {JQuery}\n */\n init() {\n const { br } = this;\n const { navbarTitle: title } = br.options;\n const isRTL = br.pageProgression === 'rl';\n const bookFlipLeft = isRTL ? 'book_flip_next' : 'book_flip_prev';\n const bookFlipRight = isRTL ? 'book_flip_prev' : 'book_flip_next';\n\n this.br.options.controls['bookLeft'].className = `book_left ${bookFlipLeft}`;\n this.br.options.controls['bookRight'].className = `book_right ${bookFlipRight}`;\n\n br.refs.$BRfooter = this.$root = $(`
    `);\n br.refs.$BRnav = this.$nav = $(\n `
    \n ${title ? `
    ${title}
    ` : ''}\n \n
    `);\n\n this.$root.append(this.$nav);\n br.refs.$br.append(this.$root);\n\n const $slider = this.$root.find('.BRpager').slider({\n animate: true,\n min: 0,\n max: br.getNumLeafs() - 1,\n value: br.currentIndex(),\n range: \"min\"\n });\n\n $slider.on('slide', (event, ui) => {\n this.updateNavPageNum(ui.value);\n return true;\n });\n\n $slider.on('slidechange', (event, ui) => {\n this.updateNavPageNum(ui.value);\n // recursion prevention for jumpToIndex\n if ($slider.data('swallowchange')) {\n $slider.data('swallowchange', false);\n } else {\n br.jumpToIndex(ui.value);\n }\n return true;\n });\n\n br.options.controls.viewmode.visible && this._bindViewModeButton();\n this.updateNavPageNum(br.currentIndex());\n\n return this.$nav;\n }\n\n /**\n * Initialize the navigation bar when embedded\n */\n initEmbed() {\n const { br } = this;\n // IA-specific\n const thisLink = (window.location + '')\n .replace('?ui=embed','')\n .replace('/stream/', '/details/')\n .replace('#', '/');\n const logoHtml = br.showLogo ? `` : '';\n\n br.refs.$BRfooter = this.$root = $('
    ');\n br.refs.$BRnav = this.$nav = $(\n `
    \n ${logoHtml}\n \n ${br.bookTitle}\n \n \n \n \n \n \n
    `);\n this.$root.append(this.$nav);\n br.refs.$br.append(this.$root);\n }\n\n /**\n * Returns the textual representation of the current page for the navbar\n * @param {number} index\n * @return {string}\n */\n getNavPageNumString(index) {\n const { br } = this;\n // Accessible index starts at 0 (alas) so we add 1 to make human\n const pageNum = br.getPageNum(index);\n const pageType = br.getPageProp(index, 'pageType');\n const numLeafs = br.getNumLeafs();\n\n if (!this.maxPageNum) {\n // Calculate Max page num (used for pagination display)\n let maxPageNum = 0;\n let pageNumVal;\n for (let i = 0; i < numLeafs; i++) {\n pageNumVal = br.getPageNum(i);\n if (!isNaN(pageNumVal) && pageNumVal > maxPageNum) {\n maxPageNum = pageNumVal;\n }\n }\n this.maxPageNum = maxPageNum;\n }\n\n return getNavPageNumHtml(index, numLeafs, pageNum, pageType, this.maxPageNum);\n }\n\n /**\n * Renders the navbar string to the DOM\n * @param {number} index\n */\n updateNavPageNum(index) {\n this.$root.find('.BRcurrentpage').html(this.getNavPageNumString(index));\n }\n\n /**\n * Update the nav bar display - does not cause navigation.\n * @param {number} index\n */\n updateNavIndex(index) {\n // We want to update the value, but normally moving the slider\n // triggers jumpToIndex which triggers this method\n index = index !== undefined ? index : this.br.currentIndex();\n this.$root.find('.BRpager').data('swallowchange', true).slider('value', index);\n }\n}\n\n/**\n * Renders the html for the page string\n * @param {number} index\n * @param {number} numLeafs\n * @param {number|string} pageNum\n * @param {*} pageType @deprecated\n * @param {number} maxPageNum\n * @return {string}\n */\nexport function getNavPageNumHtml(index, numLeafs, pageNum, pageType, maxPageNum) {\n const pageIsAsserted = pageNum[0] != 'n';\n\n if (!pageIsAsserted) {\n const pageIndex = index + 1;\n return `Page (${pageIndex} of ${numLeafs})`; // Page (8 of 10)\n }\n\n const bookLengthLabel = maxPageNum ? ` of ${maxPageNum}` : '';\n return `Page ${pageNum}${bookLengthLabel}`;\n}\n","/** @typedef {import('./BookModel.js').PageNumString} PageNumString */\n/** @typedef {import('./BookModel.js').LeafNum} LeafNum */\n\nexport const DEFAULT_OPTIONS = {\n /**\n * @type {string} A string, such as \"mode/1up\". See\n * http://openlibrary.org/dev/docs/bookurls for valid syntax\n */\n defaults: null,\n\n /** Padding in 1up */\n padding: 10,\n\n /** @type {'full' | 'embed' | 'responsive'} UI mode */\n ui: 'full',\n\n /** Controls whether nav/toolbar will autohide */\n uiAutoHide: false,\n\n /** thumbnail mode */\n /** number of rows to pre-cache out a view */\n thumbRowBuffer: 1,\n thumbColumns: 6,\n /** number of thumbnails to load at once */\n thumbMaxLoading: 4,\n /** spacing between thumbnails */\n thumbPadding: 10,\n\n /** @type {number | 'fast' | 'slow'} speed for flip animation */\n flipSpeed: 'fast',\n\n showToolbar: true,\n showNavbar: true,\n navBarTitle: '',\n\n showLogo: true,\n /** Where the logo links to */\n logoURL: 'https://archive.org',\n\n /**\n * Base URL for UI images - should be overridden (before init) by\n * custom implementations.\n * $$$ This is the same directory as the images referenced by relative\n * path in the CSS. Would be better to automagically find that path.\n */\n imagesBaseURL: '/BookReader/images/',\n\n /** @type {'pow2' | 'integer'} What reduces are valid for getURI. */\n reduceSet: 'pow2',\n\n /**\n * Zoom levels\n * @type {ReductionFactor[]}\n * $$$ provide finer grained zooming, {reduce: 8, autofit: null}, {reduce: 16, autofit: null}\n * The autofit code ensures that fit to width and fit to height will be available\n */\n reductionFactors: [\n {reduce: 0.25, autofit: null},\n {reduce: 0.5, autofit: null},\n {reduce: 1, autofit: null},\n {reduce: 2, autofit: null},\n {reduce: 3, autofit: null},\n {reduce: 4, autofit: null},\n {reduce: 6, autofit: null}\n ],\n\n /** Object to hold parameters related to 1up mode */\n onePage: {\n /** @type {AutoFitValues} */\n autofit: 'auto',\n },\n\n /** Object to hold parameters related to 2up mode */\n twoPage: {\n /** Width of cover */\n coverInternalPadding: 0,\n /** Padding outside of cover */\n coverExternalPadding: 0,\n /** Width of book spine $$$ consider sizing based on book length */\n bookSpineDivWidth: 64,\n /** @type {AutoFitValues} */\n autofit: 'auto'\n },\n\n onePageMinBreakpoint: 800,\n\n bookTitle: '',\n /** @type {string} */\n bookUrl: null,\n /** @type {string} */\n bookUrlText: null,\n /** @type {string} */\n bookUrlTitle: null,\n enableBookTitleLink: true,\n /**\n * @type {string} language in ISO 639-1 (PRIVATE: Will also\n * handle language name in English, native name, 639-2/T, or 639-2/B . (archive.org books\n * appear to use 639-2/B ? But I don't think that's a guarantee). See\n * https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes ) */\n bookLanguage: null,\n\n /**\n * @type {Array<{label: string, value: *, extraValueClass: string?}>}\n * Fields used to populate the info window\n * @example [\n * {label: 'Title', value: 'Open Library BookReader Presentation'},\n * {label: 'Author', value: 'Internet Archive'},\n * {label: 'Demo Info', value: 'This demo shows how one could use BookReader with their own content.'},\n * ]\n **/\n metadata: [],\n /** @type {string} */\n thumbnail: null,\n /** @type {string} */\n bookUrlMoreInfo: null,\n\n /** Experimental Controls (eg b/w) */\n enableExperimentalControls: false,\n\n /** CSS selectors */\n /** Where BookReader mounts to */\n el: '#BookReader',\n\n /** @type {'lr' | 'rl'} Page progression */\n pageProgression: 'lr',\n\n /** The PPI the book is scanned at **/\n ppi: 500,\n\n /** Should image downloads be blocked */\n protected: false,\n\n /**\n * Settings for individual plugins. Note they have to be imported first.\n * WIP: Most plugins just put their options anywhere in this global options file,\n * but going forward we'll keep them here.\n **/\n plugins: {\n /** @type {import('../plugins/plugin.text_selection.js').TextSelectionPluginOptions} */\n textSelection: null,\n },\n\n /**\n * Any variables you want to define. If an option has a StringWithVars type, or\n * has something like `{{server}}/foo.com` in its value, these variables replace\n * the `{{foo}}`.\n * @type { {[var_name: string]: any } }\n */\n vars: {},\n\n /**\n * @type {Array<[PageData, PageData]|[PageData]>}\n * Data is a simple way to populate the bookreader\n *\n * Example:\n * ```\n * [\n * // Each child is a spread\n * [\n * {\n * width: 123,\n * height: 123,\n * // Optional: If not provided, include a getPageURI\n * uri: 'https://archive.org/image.jpg',\n * // Optional: Shown instead of leaf number if present.\n * pageNum: '1'\n * },\n * {width: 123, height: 123, uri: 'https://archive.org/image2.jpg', pageNum: '2'},\n * ]\n * ],\n * ```\n *\n * Note if URI is omitted, a custom getPageURI can be provided. This allows the page\n * URI to the result of a function, which allows for things such as dynamic\n * page scaling.\n */\n data: [],\n\n /** Advanced methods for page rendering */\n /** @type {() => number} */\n getNumLeafs: null,\n /** @type {(index: number) => number} */\n getPageWidth: null,\n /** @type {(index: number) => number} */\n getPageHeight: null,\n /** @type {(index: number, reduce: number, rotate: number) => *} */\n getPageURI: null,\n\n /**\n * @type {(index: number) => 'L' | 'R'}\n * Return which side, left or right, that a given page should be displayed on\n */\n getPageSide: null,\n\n /**\n * @type {(pindex: number) => [number, number]}\n * This function returns the left and right indices for the user-visible\n * spread that contains the given index. The return values may be\n * null if there is no facing page or the index is invalid.\n */\n getSpreadIndices: null,\n\n /** @type {(index: number) => string} */\n getPageNum: null,\n /** @type {(index: number) => *} */\n getPageProp: null,\n /** @type {(index: number) => number} */\n leafNumToIndex: null,\n\n /**\n * @type {(frameWidth: number|string, frameHeight: number|string, viewParams) => *}\n * Optional: if present, and embed code will be shown in the share dialog\n */\n getEmbedCode: null,\n\n controls: {\n bookLeft: {\n visible: true,\n label: 'Flip left',\n className: 'book_left',\n iconClassName: 'left-arrow'\n },\n bookRight: {\n visible: true,\n label: 'Flip right',\n className: 'book_right',\n iconClassName: 'left-arrow hflip'\n },\n onePage: {\n visible: true,\n label: 'One-page view',\n className: 'onepg',\n iconClassName: 'onepg'\n },\n twoPage: {\n visible: true,\n label: 'Two-page view',\n className: 'twopg',\n iconClassName: 'twopg'\n },\n thumbnail: {\n visible: true,\n label: 'Thumbnail view',\n className: 'thumb',\n iconClassName: 'thumb'\n },\n viewmode: {\n visible: true,\n className: 'viewmode',\n excludedModes: [],\n },\n zoomOut: {\n visible: true,\n label: 'Zoom out',\n className: 'zoom_out',\n iconClassName: 'magnify'\n },\n zoomIn: {\n visible: true,\n label: 'Zoom in',\n className: 'zoom_in',\n iconClassName: 'magnify plus'\n },\n fullScreen: {\n visible: true,\n label: 'Toggle fullscreen',\n className: 'full',\n iconClassName: 'fullscreen'\n },\n },\n\n /**\n * @type {Boolean}\n * Optional: if true, starts in fullscreen mode\n */\n startFullscreen: false,\n\n /**\n * @type {Boolean}\n * On init, by default, we want to handle resizing bookreader\n * when browser window changes size (inc. `orientationchange` event)\n * toggle off if you want to handle this outside of bookreader\n */\n autoResize: true,\n\n /**\n * @type {Boolean}\n * On init, by default, we want to use srcSet for images\n */\n useSrcSet: false,\n};\n\n/** @typedef {'width' | 'height' | 'auto' | 'none'} AutoFitValues */\n\n/**\n * @typedef {object} ReductionFactor\n * @property {number} reduce\n * @property {AutoFitValues} [autofit] If set, the corresponding reduction factors\n * are what will be used when the user tries to autofit by width/height.\n */\n\n/**\n * @typedef {Object} PageData\n * @property {number} width\n * @property {number} height\n * @property {string} [uri] If not provided, include a getPageURI\n * @property {PageNumString} [pageNum] Shown instead of leaf number if present\n * @property {LeafNum} [leafNum] Sometimes specified in Internet Archive books\n * @property {number} [ppi] The resolution of the page if different from {@see BookReaderOptions.ppi}\n * @property {'L' | 'R'} [pageSide] PRIVATE; computed automatically\n * @property {boolean} [viewable=true] Set false if page is not viewable. Displays a dummy preview image.\n * @property {number} [unviewablesStart] PRIVATE; index where the chunk of unviewable pages started\n *\n * Note if URI is omitted, a custom getPageURI can be provided. This allows the page\n * URI to the result of a function, which allows for things such as dynamic\n * page scaling.\n */\n\n/** @typedef {typeof DEFAULT_OPTIONS} BookReaderOptions */\n\n","import 'jquery-colorbox';\nimport { escapeHTML } from '../utils.js';\nimport { EVENTS } from '../events.js';\n/** @typedef {import(\"../../BookReader.js\").default} BookReader */\n\nexport class Toolbar {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n this.br = br;\n }\n\n /**\n * This method builds the html for the toolbar. It can be decorated to extend\n * the toolbar.\n * @return {JQuery}\n */\n buildToolbarElement() {\n const { br } = this;\n const logoHtml = !br.showLogo ? '' : `\n \n \n `;\n\n // Add large screen navigation\n br.refs.$BRtoolbar = $(`\n
    \n
    \n
    \n ${logoHtml}\n \n
    \n
    \n \n \n \n \n
    \n
    \n
    `);\n // TODO actual hamburger menu\n // \n // \n // \n\n const $titleSectionEl = br.refs.$BRtoolbar.find('.BRtoolbarSectionTitle');\n if (br.bookUrl && br.options.enableBookTitleLink) {\n $titleSectionEl.append(\n $('')\n .attr({href: br.bookUrl, title: br.bookUrlTitle})\n .addClass('BRreturn')\n .html(br.bookUrlText || br.bookTitle)\n )\n } else if (br.bookTitle) {\n $titleSectionEl.append(br.bookUrlText || br.bookTitle);\n }\n\n // const $hamburger = br.refs.$BRtoolbar.find('BRtoolbarHamburger');\n return br.refs.$BRtoolbar;\n }\n\n /**\n * Initializes the toolbar (top)\n * @param {string} mode\n * @param {string} ui\n */\n initToolbar(mode, ui) {\n const { br } = this;\n br.refs.$br.append(this.buildToolbarElement());\n\n br.$('.BRnavCntl').addClass('BRup');\n br.$('.pause').hide();\n\n this.updateToolbarZoom(br.reduce); // Pretty format\n\n // We build in mode 2\n br.refs.$BRtoolbar.append();\n\n // Hide mode buttons and autoplay if 2up is not available\n // $$$ if we end up with more than two modes we should show the applicable buttons\n if ( !br.canSwitchToMode(br.constMode2up) ) {\n br.$('.two_page_mode, .play, .pause').hide();\n }\n if ( !br.canSwitchToMode(br.constModeThumb) ) {\n br.$('.thumbnail_mode').hide();\n }\n\n // Hide one page button if it is the only mode available\n if ( ! (br.canSwitchToMode(br.constMode2up) || br.canSwitchToMode(br.constModeThumb)) ) {\n br.$('.one_page_mode').hide();\n }\n\n $('
    ')\n .append(blankShareDiv())\n .append(blankInfoDiv())\n .appendTo(br.refs.$br);\n\n br.$('.BRinfo .BRfloatTitle a')\n .attr({href: br.bookUrl})\n .text(br.bookTitle)\n .addClass('title');\n\n // These functions can be overridden\n this.buildInfoDiv(br.$('.BRinfo'));\n this.buildShareDiv(br.$('.BRshare'));\n\n br.$('.share').colorbox({\n inline: true,\n opacity: \"0.5\",\n href: br.$('.BRshare'),\n onLoad: () => {\n br.trigger(EVENTS.stop);\n br.$('.BRpageviewValue').val(window.location.href);\n }\n });\n br.$('.info').colorbox({\n inline: true,\n opacity: \"0.5\",\n href: br.$('.BRinfo'),\n onLoad: () => {\n br.trigger(EVENTS.stop);\n }\n });\n }\n\n /**\n * @deprecated\n * @todo .BRzoom doesn't exist anywhere, so this is likely dead code\n * Update the displayed zoom factor based on reduction factor\n * @param {number} reduce\n */\n updateToolbarZoom(reduce) {\n const { br } = this;\n // $$$ TODO preserve zoom/fit for each mode\n const autofit = br.mode == br.constMode2up ? br.twoPage.autofit : br.onePage.autofit;\n /** @type {string} */\n let value;\n if (autofit) {\n value = autofit.slice(0,1).toUpperCase() + autofit.slice(1);\n } else {\n value = (100 / reduce)\n .toFixed(2)\n // Strip trailing zeroes and decimal if all zeroes\n .replace(/0+$/,'')\n .replace(/\\.$/,'')\n + '%';\n }\n br.$('.BRzoom').text(value);\n }\n\n /**\n * @param {JQuery} $shareDiv\n */\n buildShareDiv($shareDiv) {\n const { br } = this;\n const pageView = document.location + '';\n const bookView = (pageView + '').replace(/#.*/,'');\n\n const embedHtml = !br.getEmbedCode ? '' : `\n
    \n

    Copy and paste one of these options to share this book elsewhere.

    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n
    \n \n \n \n
    \n \n
    \n
    \n
    `;\n\n const $form = $(`\n
    Share this book
    \n
    \n \n
    \n
    \n
    \n
    \n ${embedHtml}\n
    \n \n
    `);\n\n $form.appendTo($shareDiv);\n\n $form.find('.fieldset-embed input').on('change', event => {\n const form = $(event.target).parents('form:first');\n const params = {};\n params.mode = $(form.find('.fieldset-embed input[name=pages]:checked')).val();\n if (form.find('.fieldset-embed input[name=thispage]').prop('checked')) {\n params.page = br.getPageNum(br.currentIndex());\n }\n\n if (br.getEmbedCode) {\n // $$$ changeable width/height to be added to share UI\n const frameWidth = \"480px\";\n const frameHeight = \"430px\";\n form.find('.BRframeEmbed').val(br.getEmbedCode(frameWidth, frameHeight, params));\n }\n });\n\n $form.find('input, textarea').on('focus', event => event.target.select());\n\n // Bind share buttons\n\n // Use url without hashes\n $form.find('.facebook-share-button').click(() => {\n const params = $.param({ u: this._getSocialShareUrl() });\n const url = 'https://www.facebook.com/sharer.php?' + params;\n createPopup(url, 600, 400, 'Share');\n });\n $form.find('.twitter-share-button').click(() => {\n const params = $.param({\n url: this._getSocialShareUrl(),\n text: br.bookTitle\n });\n const url = 'https://twitter.com/intent/tweet?' + params;\n createPopup(url, 600, 400, 'Share');\n });\n $form.find('.email-share-button').click(() => {\n const body = `${br.bookTitle}\\n\\n${this._getSocialShareUrl()}`;\n window.location.href = `mailto:?subject=${encodeURI(br.bookTitle)}&body=${encodeURI(body)}`;\n });\n\n $form.find('input[name=thispage]').trigger('change');\n\n $form.appendTo($shareDiv);\n }\n\n _getSocialShareUrl() {\n const { br } = this;\n const shareThisPage = br.$('.thispage-social').prop('checked');\n if (shareThisPage) {\n return window.location.href;\n } else {\n return `${document.location.protocol}//${window.location.hostname}${window.location.pathname}`;\n }\n }\n\n /**\n * @param {JQuery} $infoDiv DOM element. Appends info to this element\n * Can be overridden or extended\n */\n buildInfoDiv($infoDiv) {\n const { br } = this;\n // Remove these legacy elements\n $infoDiv.find('.BRfloatBody, .BRfloatCover, .BRfloatFoot').remove();\n\n const $leftCol = $(`
    `);\n if (br.thumbnail) {\n $leftCol.append($(`\n
    \n \"${escapeHTML(br.bookTitle)}\"\n
    `));\n }\n\n const $rightCol = $(`
    `);\n\n // A loop to build fields\n for (const {extraValueClass = '', label, value} of br.metadata) {\n const escapedValue = label === 'Title' ? escapeHTML(value) : value;\n $rightCol.append($(`\n
    \n
    ${label}
    \n
    ${escapedValue}
    \n
    `));\n }\n\n const moreInfoText = br.bookUrlMoreInfo ? br.bookUrlMoreInfo : br.bookTitle;\n if (moreInfoText && br.bookUrl) {\n $rightCol.append($(`\n
    `));\n }\n\n const $footer = $(`
    `);\n const $children = $('
    ').append([\n $leftCol,\n $rightCol,\n $('
    '),\n ]);\n\n $infoDiv\n .append($children, $footer)\n .addClass('wide');\n }\n\n /**\n * @return {number} (in pixels) of the toolbar height. 0 if no toolbar.\n */\n getToolBarHeight() {\n const { $BRtoolbar } = this.br.refs;\n if ($BRtoolbar && $BRtoolbar.css('display') === 'block') {\n return ($BRtoolbar.outerHeight() + parseInt($BRtoolbar.css('top')));\n } else {\n return 0;\n }\n }\n}\n\nexport function blankInfoDiv() {\n return $(`\n
    \n
    About this book\n \n
    \n
    \n
    \n
    \n
    \n

    \n
    \n
    \n
    \n \n
    `);\n}\n\nexport function blankShareDiv() {\n return $(`\n
    \n
    \n Share\n \n
    \n
    `);\n}\n\n/**\n * Helper opens a popup window. On mobile it only opens a new tab. Used for share.\n * @param {string} href\n * @param {number} width\n * @param {number} height\n * @param {string} name\n */\nexport function createPopup(href, width, height, name) {\n // Fixes dual-screen position\n const dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left;\n const dualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top;\n\n const win_w = window.innerWidth || document.documentElement.clientWidth || screen.width;\n const win_h = window.innerHeight || document.documentElement.clientHeight || screen.height;\n\n const left = ((win_w / 2) - (width / 2)) + dualScreenLeft;\n const top = ((win_h / 2) - (height / 2)) + dualScreenTop;\n const opts = `status=1,width=${width},height=${height},top=${top},left=${left}`;\n\n window.open(href, name, opts);\n}\n","// @ts-check\nimport { DEFAULT_OPTIONS } from './options.js';\nimport { clamp } from './utils.js';\n/** @typedef {import('./options.js').PageData} PageData */\n/** @typedef {import('../BookReader.js').default} BookReader */\n\n// URI to display when a page is not viewable.\n// TODO Render configurable html for the user instead.\n// FIXME Don't reference files on archive.org\nconst UNVIEWABLE_PAGE_URI = '/bookreader/static/preview-default.png';\n\n/**\n * Contains information about the Book/Document independent of the way it is\n * being rendering. Nothing here should reference e.g. the mode, zoom, etc.\n * It's just information about the book and its pages (usually as specified\n * in the BookReader data option.)\n */\nexport class BookModel {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n this.br = br;\n this.reduceSet = br.reduceSet;\n this.ppi = br.options?.ppi ?? DEFAULT_OPTIONS.ppi;\n\n /** @type {{width: number, height: number}} memoize storage */\n this._medianPageSize = null;\n /** @deprecated @type {{width: number, height: number}} memoize storage */\n this._medianPageSizePixels = null;\n /** @type {[PageData[], number]} */\n this._getDataFlattenedCached = null;\n }\n\n /**\n * @deprecated Use getMedianPageSizeInches\n * Memoized\n * @return {{width: number, height: number}}\n */\n getMedianPageSize() {\n if (this._medianPageSizePixels) {\n return this._medianPageSizePixels;\n }\n\n // A little expensive but we just do it once\n const widths = [];\n const heights = [];\n for (let i = 0; i < this.getNumLeafs(); i++) {\n widths.push(this.getPageWidth(i));\n heights.push(this.getPageHeight(i));\n }\n\n widths.sort();\n heights.sort();\n this._medianPageSizePixels = {\n width: widths[Math.floor(widths.length / 2)],\n height: heights[Math.floor(heights.length / 2)]\n };\n return this._medianPageSizePixels;\n }\n\n /** Get median width/height of page in inches. Memoized for performance. */\n getMedianPageSizeInches() {\n if (this._medianPageSize) {\n return this._medianPageSize;\n }\n\n const widths = [];\n const heights = [];\n for (const page of this.pagesIterator()) {\n widths.push(page.widthInches);\n heights.push(page.heightInches);\n }\n\n widths.sort();\n heights.sort();\n\n this._medianPageSize = {\n width: widths[Math.floor(widths.length / 2)],\n height: heights[Math.floor(heights.length / 2)]\n };\n return this._medianPageSize;\n }\n\n /**\n * Returns the page width for the given index, or first or last page if out of range\n * @deprecated see getPageWidth\n * @param {PageIndex} index\n */\n _getPageWidth(index) {\n // Synthesize a page width for pages not actually present in book.\n // May or may not be the best approach.\n // If index is out of range we return the width of first or last page\n index = clamp(index, 0, this.getNumLeafs() - 1);\n return this.getPageWidth(index);\n }\n\n /**\n * Returns the page height for the given index, or first or last page if out of range\n * @deprecated see getPageHeight\n * @param {PageIndex} index\n */\n _getPageHeight(index) {\n const clampedIndex = clamp(index, 0, this.getNumLeafs() - 1);\n return this.getPageHeight(clampedIndex);\n }\n\n /**\n * Returns the *highest* index the given page number, or undefined\n * @param {PageNumString} pageNum\n * @return {PageIndex|undefined}\n */\n getPageIndex(pageNum) {\n const pageIndices = this.getPageIndices(pageNum);\n return pageIndices.length ? pageIndices[pageIndices.length - 1] : undefined;\n }\n\n /**\n * Returns an array (possibly empty) of the indices with the given page number\n * @param {PageNumString} pageNum\n * @return {PageIndex[]}\n */\n getPageIndices(pageNum) {\n const indices = [];\n\n // Check for special \"nXX\" page number\n if (pageNum.slice(0,1) == 'n') {\n try {\n const pageIntStr = pageNum.slice(1, pageNum.length);\n const pageIndex = parseInt(pageIntStr);\n indices.push(pageIndex);\n return indices;\n } catch (err) {\n // Do nothing... will run through page names and see if one matches\n }\n }\n\n for (let i = 0; i < this.getNumLeafs(); i++) {\n if (this.getPageNum(i) == pageNum) {\n indices.push(i);\n }\n }\n\n return indices;\n }\n\n /**\n * Returns the name of the page as it should be displayed in the user interface\n * @param {PageIndex} index\n * @return {string}\n */\n getPageName(index) {\n return 'Page ' + this.getPageNum(index);\n }\n\n /**\n * @return {number} the total number of leafs (like an array length)\n */\n getNumLeafs() {\n // For deprecated interface support, if numLeafs is set, use that.\n if (this.br.numLeafs !== undefined)\n return this.br.numLeafs;\n return this._getDataFlattened().length;\n }\n\n /**\n * @param {PageIndex} index\n * @return {Number|undefined}\n */\n getPageWidth(index) {\n return this.getPageProp(index, 'width');\n }\n\n /**\n * @param {PageIndex} index\n * @return {Number|undefined}\n */\n getPageHeight(index) {\n return this.getPageProp(index, 'height');\n }\n\n /**\n * @param {PageIndex} index\n * @param {number} reduce - not used in default implementation\n * @param {number} rotate - not used in default implementation\n * @return {string|undefined}\n */\n // eslint-disable-next-line no-unused-vars\n getPageURI(index, reduce, rotate) {\n return !this.getPageProp(index, 'viewable', true) ? UNVIEWABLE_PAGE_URI : this.getPageProp(index, 'uri');\n }\n\n /**\n * @param {PageIndex} index\n * @return {'L' | 'R'}\n */\n getPageSide(index) {\n return this.getPageProp(index, 'pageSide') || (index % 2 === 0 ? 'R' : 'L');\n }\n\n /**\n * @param {PageIndex} index\n * @return {PageNumString}\n */\n getPageNum(index) {\n const pageNum = this.getPageProp(index, 'pageNum');\n return pageNum === undefined ? `n${index}` : pageNum;\n }\n\n /**\n * Generalized property accessor.\n * @param {PageIndex} index\n * @param {keyof PageData} propName\n * @param {*} [fallbackValue] return if undefined\n * @return {*|undefined}\n */\n getPageProp(index, propName, fallbackValue = undefined) {\n return this._getDataProp(index, propName, fallbackValue);\n }\n\n /**\n * This function returns the left and right indices for the user-visible\n * spread that contains the given index.\n * @note Can return indices out of range of what's in the book.\n * @param {PageIndex} pindex\n * @return {[PageIndex, PageIndex]} eg [0, 1]\n */\n getSpreadIndices(pindex) {\n if (this.br.pageProgression == 'rl') {\n return this.getPageSide(pindex) == 'R' ? [pindex + 1, pindex] : [pindex, pindex - 1];\n } else {\n return this.getPageSide(pindex) == 'L' ? [pindex, pindex + 1] : [pindex - 1, pindex];\n }\n }\n\n /**\n * Single images in the Internet Archive scandata.xml metadata are (somewhat incorrectly)\n * given a \"leaf\" number. Some of these images from the scanning process should not\n * be displayed in the BookReader (for example colour calibration cards). Since some\n * of the scanned images will not be displayed in the BookReader (those marked with\n * addToAccessFormats false in the scandata.xml) leaf numbers and BookReader page\n * indexes are generally not the same. This function returns the BookReader page\n * index given a scanned leaf number.\n *\n * This function is used, for example, to map between search results (that use the\n * leaf numbers) and the displayed pages in the BookReader.\n * @param {LeafNum} leafNum\n * @return {PageIndex}\n */\n leafNumToIndex(leafNum) {\n const index = this._getDataFlattened()\n .findIndex(d => d.leafNum == leafNum);\n // If no match is found, fall back to the leafNum provide (leafNum == index)\n return index > -1 ? index : leafNum;\n }\n\n /**\n * Parses the pageString format\n * @param {PageString} pageString\n * @return {PageIndex|undefined}\n */\n parsePageString(pageString) {\n let pageIndex;\n // Check for special \"leaf\"\n const leafMatch = /^leaf(\\d+)/.exec(pageString);\n if (leafMatch) {\n pageIndex = this.leafNumToIndex(parseInt(leafMatch[1], 10));\n if (pageIndex === null) {\n pageIndex = undefined; // to match return type of getPageIndex\n }\n } else {\n pageIndex = this.getPageIndex(pageString);\n }\n return pageIndex;\n }\n\n /**\n * @param {number} index use negatives to get page relative to end\n * @param loop whether to loop (i.e. -1 == last page)\n */\n getPage(index, loop = true) {\n const numLeafs = this.getNumLeafs();\n if (!loop && (index < 0 || index >= numLeafs)) {\n return undefined;\n }\n if (index < 0 && index >= -numLeafs) {\n index += numLeafs;\n }\n index = index % numLeafs;\n return new PageModel(this, index);\n }\n\n /**\n * @param {object} [arg0]\n * @param {number} [arg0.start] inclusive\n * @param {number} [arg0.end] exclusive\n * @param {boolean} [arg0.combineConsecutiveUnviewables] Yield only first unviewable\n * of a chunk of unviewable pages instead of each page\n */\n * pagesIterator({ start = 0, end = Infinity, combineConsecutiveUnviewables = false } = {}) {\n start = Math.max(0, start);\n end = Math.min(end, this.getNumLeafs());\n\n for (let i = start; i < end; i++) {\n const page = this.getPage(i);\n if (combineConsecutiveUnviewables && page.isConsecutiveUnviewable) continue;\n\n yield page;\n }\n }\n\n /**\n * Flatten the nested structure (make 1d array), and also add pageSide prop\n * @return {PageData[]}\n */\n _getDataFlattened() {\n if (this._getDataFlattenedCached && this._getDataFlattenedCached[1] === this.br.data.length)\n return this._getDataFlattenedCached[0];\n\n let prevPageSide = null;\n /** @type {number|null} */\n let unviewablesChunkStart = null;\n let index = 0;\n // @ts-ignore TS doesn't know about flatMap for some reason\n const flattened = this.br.data.flatMap(spread => {\n return spread.map(page => {\n if (!page.pageSide) {\n if (prevPageSide === null) {\n page.pageSide = spread.length === 2 ? 'L' : 'R';\n } else {\n page.pageSide = prevPageSide === 'L' ? 'R' : 'L';\n }\n }\n prevPageSide = page.pageSide;\n\n if (page.viewable === false) {\n if (unviewablesChunkStart === null) {\n page.unviewablesStart = unviewablesChunkStart = index;\n } else {\n page.unviewablesStart = unviewablesChunkStart;\n }\n } else {\n unviewablesChunkStart = null;\n }\n\n index++;\n return page;\n });\n });\n\n // length is used as a cache breaker\n this._getDataFlattenedCached = [flattened, this.br.data.length];\n return flattened;\n }\n\n /**\n * Helper. Return a prop for a given index. Returns `fallbackValue` if index is invalid or\n * property not on page.\n * @param {PageIndex} index\n * @param {keyof PageData} prop\n * @param {*} fallbackValue return if property not on the record\n * @return {*}\n */\n _getDataProp(index, prop, fallbackValue = undefined) {\n const dataf = this._getDataFlattened();\n const invalidIndex = isNaN(index) || index < 0 || index >= dataf.length;\n if (invalidIndex || 'undefined' == typeof(dataf[index][prop]))\n return fallbackValue;\n return dataf[index][prop];\n }\n}\n\n/**\n * A controlled schema for page data.\n */\nexport class PageModel {\n /**\n * @param {BookModel} book\n * @param {PageIndex} index\n */\n constructor(book, index) {\n // TODO: Get default from config\n this.ppi = book._getDataProp(index, 'ppi', book.ppi);\n this.book = book;\n this.index = index;\n this.width = book.getPageWidth(index);\n this.widthInches = this.width / this.ppi;\n this.height = book.getPageHeight(index);\n this.heightInches = this.height / this.ppi;\n this.pageSide = book.getPageSide(index);\n this.leafNum = book._getDataProp(index, 'leafNum', this.index);\n\n /** @type {boolean} */\n this.isViewable = book._getDataProp(index, 'viewable', true);\n /** @type {PageIndex} The first in the series of unviewable pages this is in. */\n this.unviewablesStart = book._getDataProp(index, 'unviewablesStart') || null;\n /**\n * Consecutive unviewable pages are pages in an unviewable \"chunk\" which are not the first\n * of that chunk.\n */\n this.isConsecutiveUnviewable = !this.isViewable && this.unviewablesStart != this.index;\n\n this._rawData = this.book._getDataFlattened()[this.index];\n }\n\n /**\n * Updates the page to no longer be unviewable. Assumes the\n * Page's URI is already set/correct.\n */\n makeViewable(newViewableState = true) {\n if (this.isViewable == newViewableState) return;\n\n if (newViewableState) {\n this._rawData.viewable = true;\n delete this._rawData.unviewablesStart;\n // Update any subsequent page to now point to the right \"start\"\n for (const page of this.book.pagesIterator({ start: this.index + 1 })) {\n if (page.isViewable) break;\n page._rawData.unviewablesStart = this.index + 1;\n }\n } else {\n this._rawData.viewable = false;\n this._rawData.unviewablesStart = (this.prev && !this.prev.isViewable) ? this.prev.unviewablesStart : this.index;\n // Update any subsequent page to now point to the right \"start\"\n for (const page of this.book.pagesIterator({ start: this.index + 1 })) {\n if (!page.isViewable) break;\n page._rawData.unviewablesStart = this._rawData.unviewablesStart;\n }\n }\n }\n\n get prev() {\n return this.findPrev();\n }\n\n get next() {\n return this.findNext();\n }\n\n /**\n * @param {number} reduce\n * @param {number} rotate\n */\n getURI(reduce, rotate) {\n return this.book.getPageURI(this.index, reduce, rotate);\n }\n\n /**\n * Returns the srcset with correct URIs or void string if out of range\n * @param {number} reduce\n * @param {number} [rotate]\n */\n getURISrcSet(reduce, rotate = 0) {\n const { reduceSet } = this.book;\n const initialReduce = reduceSet.floor(reduce);\n // We don't need to repeat the initial reduce in the srcset\n const topReduce = reduceSet.decr(initialReduce);\n const reduces = [];\n for (let r = topReduce; r >= 1; r = reduceSet.decr(r)) {\n reduces.push(r);\n }\n return reduces\n .map(r => `${this.getURI(r, rotate)} ${initialReduce / r}x`)\n .join(', ');\n }\n\n /**\n * @param {object} [arg0]\n * @param {boolean} [arg0.combineConsecutiveUnviewables] Whether to only yield the first page\n * of a series of unviewable pages instead of each page\n * @return {PageModel|void}\n */\n findNext({ combineConsecutiveUnviewables = false } = {}) {\n return this.book\n .pagesIterator({ start: this.index + 1, combineConsecutiveUnviewables })\n .next().value;\n }\n\n /**\n * @param {object} [arg0]\n * @param {boolean} [arg0.combineConsecutiveUnviewables] Whether to only yield the first page\n * of a series of unviewable pages instead of each page\n * @return {PageModel|void}\n */\n findPrev({ combineConsecutiveUnviewables = false } = {}) {\n if (this.index == 0) return undefined;\n\n if (combineConsecutiveUnviewables) {\n if (this.isConsecutiveUnviewable) {\n return this.book.getPage(this.unviewablesStart);\n } else {\n // Recursively goes backward through the book\n // TODO make a reverse iterator to make it look identical to findNext\n const prev = new PageModel(this.book, this.index - 1);\n return prev.isViewable ? prev : prev.findPrev({ combineConsecutiveUnviewables });\n }\n } else {\n return new PageModel(this.book, this.index - 1);\n }\n }\n}\n\n// There are a few main ways we can reference a specific page in a book:\n/**\n * @typedef {string} PageNumString\n * Possible values: /^n?\\d+$/. Example: 'n7', '18'\n * Not necessarily unique\n */\n/**\n * @typedef {number} LeafNum\n * No clue if 0 or 1 indexed or consecutive; generally from IA book info.\n */\n/**\n * @typedef {string} PageString\n * Possible values: /^(leaf)?\\d+$/ Example: 'leaf7', '18'\n * If leaf-prefixed, then the number is a LeafNum. Otherwise it's a PageNumString\n */\n/** @typedef {number} PageIndex 0-based index of all the pages */\n","// @ts-check\nimport { calcScreenDPI, notInArray } from '../BookReader/utils.js';\n/** @typedef {import('../BookReader.js').default} BookReader */\n/** @typedef {import('./BookModel.js').BookModel} BookModel */\n/** @typedef {import('./BookModel.js').PageIndex} PageIndex */\n\nexport class Mode1Up {\n /**\n * @param {BookReader} br\n * @param {BookModel} bookModel\n */\n constructor(br, bookModel) {\n this.br = br;\n this.book = bookModel;\n\n /** @private */\n this.$documentContainer = $('
    ');\n /** @private */\n this.screenDPI = calcScreenDPI();\n /** @private */\n this.LEAF_SPACING_IN = 0.2;\n\n /**\n * How much smaller the picture on screen is than the real-world item\n *\n * Mode1Up doesn't use the br.reduce because it is DPI aware. The reduction factor\n * of a given leaf can change (since leaves can have different DPIs), but the real-world\n * reduction is constant throughout.\n */\n this.realWorldReduce = 1;\n }\n\n /** @private */\n get $scrollContainer() { return this.br.refs.$brContainer; }\n\n /**\n * This is called when we switch to one page view\n */\n prepare() {\n const startLeaf = this.br.currentIndex();\n\n this.$scrollContainer\n .empty()\n .css({ overflowX: 'auto', overflowY: 'scroll' })\n .append(this.$documentContainer);\n\n // Attaches to first child - child must be present\n this.$scrollContainer.dragscrollable();\n this.br.bindGestures(this.$scrollContainer);\n\n // This calls drawLeafs\n this.resizePageView();\n\n this.br.jumpToIndex(startLeaf);\n this.br.updateBrClasses();\n }\n\n /**\n * Get the number of pixels required to display the given inches with the given reduce\n * @param {number} inches\n * @param reduce Reduction factor currently at play\n * @param screenDPI The DPI of the screen\n **/\n physicalInchesToDisplayPixels(inches, reduce = this.realWorldReduce, screenDPI = this.screenDPI) {\n return inches * screenDPI / reduce;\n }\n\n /**\n * Iterate over pages, augmented with their top/bottom bounds\n * @param reduce Reduction factor currently at play\n * @param pageSpacing Inches of space to place between pages\n **/\n * pagesWithBounds(reduce = this.realWorldReduce, pageSpacing = this.LEAF_SPACING_IN) {\n let leafTop = 0;\n let leafBottom = 0;\n\n for (const page of this.book.pagesIterator({ combineConsecutiveUnviewables: true })) {\n const height = this.physicalInchesToDisplayPixels(page.heightInches, reduce);\n leafBottom += height;\n yield { page, top: leafTop, bottom: leafBottom };\n leafTop += height + this.physicalInchesToDisplayPixels(pageSpacing, reduce);\n leafBottom += this.physicalInchesToDisplayPixels(pageSpacing, reduce);\n }\n }\n\n /**\n * How much do the two bounds intersection?\n * @param {{ top: number; bottom: number; }} bound1\n * @param {{ top: number; bottom: number; }} bound2\n * @returns {number}\n */\n static boundIntersection(bound1, bound2) {\n const intersect = (bound1.bottom >= bound2.top) && (bound1.top <= bound2.bottom);\n if (!intersect) return 0;\n\n const boundingBox = {\n top: Math.min(bound1.top, bound2.top),\n bottom: Math.max(bound1.bottom, bound2.bottom),\n };\n const intersection = {\n top: Math.max(bound1.top, bound2.top),\n bottom: Math.min(bound1.bottom, bound2.bottom),\n };\n return (intersection.bottom - intersection.top) / (boundingBox.bottom - boundingBox.top);\n }\n\n /**\n * Find the pages that intersect the current viewport, including 1 before/after\n **/\n * findIntersectingPages() {\n // Rectangle of interest\n const height = this.$scrollContainer.height();\n const scrollTop = this.$scrollContainer.scrollTop();\n const scrollBottom = scrollTop + height;\n const scrollRegion = { top: scrollTop, bottom: scrollBottom };\n\n let prev = null;\n for (const {page, top, bottom} of this.pagesWithBounds()) {\n const intersection = Mode1Up.boundIntersection({ top, bottom }, scrollRegion);\n const cur = {page, top, bottom, intersection: intersection};\n if (intersection) {\n // Also yield the page just before the visible page\n if (prev && !prev.intersection) yield prev;\n yield cur;\n }\n // Also yield the page just after the last visible page\n else if (!cur.intersection && prev?.intersection) {\n yield cur;\n break;\n }\n prev = cur;\n }\n }\n\n drawLeafs() {\n const pagesToDisplay = Array.from(this.findIntersectingPages());\n\n if (pagesToDisplay.length) {\n const documentContainerWidth = this.$documentContainer.width();\n\n // The first page that's reasonably in view we set to the current index\n const firstProperPage = (\n pagesToDisplay.find(({intersection}) => intersection > 0.33) ||\n pagesToDisplay[0]\n ).page;\n this.br.updateFirstIndex(firstProperPage.index);\n\n for (const {page, top, bottom} of pagesToDisplay) {\n if (!this.br.displayedIndices.includes(page.index)) {\n const height = bottom - top;\n const width = this.physicalInchesToDisplayPixels(page.widthInches);\n const reduce = page.width / width;\n\n const pageContainer = this.br._createPageContainer(page.index)\n .update({\n dimensions: {\n width,\n height,\n top,\n left: Math.floor((documentContainerWidth - width) / 2),\n },\n reduce,\n });\n pageContainer.$container.appendTo(this.$documentContainer);\n }\n }\n }\n\n // Remove any pages we no longer need\n const displayedIndices = pagesToDisplay.map(({page}) => page.index);\n for (const index of this.br.displayedIndices) {\n if (notInArray(index, displayedIndices)) {\n this.br.$(`.pagediv${index}`).remove();\n }\n }\n\n this.br.displayedIndices = displayedIndices;\n if (this.br.enableSearch) this.br.updateSearchHilites();\n\n this.br.updateToolbarZoom(this.realWorldReduce);\n\n // Update the slider\n this.br.updateNavIndexThrottled();\n }\n\n /**\n * @param {PageIndex} index\n * @param {number} [pageX] x position on the page (in pixels) to center on\n * @param {number} [pageY] y position on the page (in pixels) to center on\n * @param {boolean} [noAnimate]\n */\n jumpToIndex(index, pageX, pageY, noAnimate) {\n const prevCurrentIndex = this.br.currentIndex();\n const { abs } = Math;\n let offset = 0;\n let leafTop = this.getPageTop(index);\n let leafLeft = 0;\n\n if (pageY) {\n const page = this.book.getPage(index);\n const clientHeight = this.$scrollContainer.prop('clientHeight');\n offset = this.physicalInchesToDisplayPixels((pageY / page.height) * page.heightInches) - (clientHeight / 2);\n leafTop += offset;\n } else {\n // Show page just a little below the top\n leafTop -= this.br.padding / 2;\n }\n\n if (pageX) {\n const page = this.book.getPage(index);\n const clientWidth = this.$scrollContainer.prop('clientWidth');\n offset = this.physicalInchesToDisplayPixels((pageX / page.width) * page.widthInches) - (clientWidth / 2);\n leafLeft += offset;\n } else {\n // Preserve left position\n leafLeft = this.$scrollContainer.scrollLeft();\n }\n\n // Only animate for small distances\n if (!noAnimate && abs(prevCurrentIndex - index) <= 4) {\n this.animating = true;\n this.$scrollContainer.stop(true).animate({\n scrollTop: leafTop,\n scrollLeft: leafLeft,\n }, 'fast', () => { this.animating = false });\n } else {\n this.$scrollContainer.stop(true).prop('scrollTop', leafTop);\n }\n }\n\n /**\n * @param {'in' | 'out'} direction\n */\n zoom(direction) {\n const nextReductionFactor = this.br.nextReduce(this.realWorldReduce, direction, this.br.onePage.reductionFactors);\n\n if (this.realWorldReduce == nextReductionFactor.reduce) {\n // Already at this level\n return;\n }\n\n this.realWorldReduce = nextReductionFactor.reduce;\n this.br.onePage.autofit = nextReductionFactor.autofit;\n\n this.resizePageView();\n this.br.updateToolbarZoom(this.realWorldReduce);\n\n // Recalculate search hilites\n if (this.br.enableSearch) {\n this.br.removeSearchHilites();\n this.br.updateSearchHilites();\n }\n }\n\n /**\n * Returns the reduce factor which has the pages fill the width of the viewport.\n */\n getAutofitWidth() {\n const widthPadding = 20;\n const availableWidth = this.$scrollContainer.prop('clientWidth') - 2 * widthPadding;\n\n const medianWidthInches = this.book.getMedianPageSizeInches().width;\n const medianPageWidth = this.physicalInchesToDisplayPixels(medianWidthInches, 1);\n return medianPageWidth / availableWidth;\n }\n\n getAutofitHeight() {\n // make sure a little of adjacent pages show\n const availableHeight = this.$scrollContainer.innerHeight() - 2 * this.br.padding;\n const medianHeightInches = this.book.getMedianPageSizeInches().height;\n const medianPageHeight = this.physicalInchesToDisplayPixels(medianHeightInches, 1);\n\n return medianPageHeight / availableHeight;\n }\n\n /**\n * Returns where the top of the page with given index should be in one page view\n * @param {PageIndex} index\n * @return {number}\n */\n getPageTop(index) {\n for (const {page, top} of this.pagesWithBounds()) {\n if (page.index == index) return top;\n }\n }\n\n /**\n * Update the reduction factors for 1up mode given the available width and height.\n * Recalculates the autofit reduction factors.\n */\n calculateReductionFactors() {\n this.br.onePage.reductionFactors = this.br.reductionFactors.concat(\n [\n { reduce: this.getAutofitWidth(), autofit: 'width' },\n { reduce: this.getAutofitHeight(), autofit: 'height' },\n ]);\n this.br.onePage.reductionFactors.sort(this.br._reduceSort);\n }\n\n /**\n * Resize the current one page view\n * Note this calls drawLeafs\n */\n resizePageView() {\n const viewWidth = this.$scrollContainer.prop('clientWidth');\n const oldScrollTop = this.$scrollContainer.prop('scrollTop');\n const oldPageViewHeight = this.$documentContainer.height();\n const oldPageViewWidth = this.$documentContainer.width();\n\n // May have come here after preparing the view, in which case the scrollTop and view height are not set\n\n let scrollRatio = 0;\n let oldCenterX;\n if (oldScrollTop > 0) {\n // We have scrolled - implies view has been set up\n const oldCenterY = this.centerY();\n oldCenterX = this.centerX();\n scrollRatio = oldCenterY / oldPageViewHeight;\n } else {\n // Have not scrolled, e.g. because in new container\n\n // We set the scroll ratio so that the current index will still be considered the\n // current index in drawLeafsOnePage after we create the new view container\n\n // Make sure this will count as current page after resize\n const fudgeFactor = 0.6 * this.physicalInchesToDisplayPixels(this.book.getPage(this.br.currentIndex()).heightInches);\n const oldLeafTop = this.getPageTop(this.br.currentIndex()) + fudgeFactor;\n const oldViewDimensions = this.calculateViewDimensions();\n scrollRatio = oldLeafTop / oldViewDimensions.height;\n }\n\n // Recalculate 1up reduction factors\n this.calculateReductionFactors();\n // Update current reduce (if in autofit)\n if (this.br.onePage.autofit) {\n const reductionFactor = this.br.nextReduce(this.realWorldReduce, this.br.onePage.autofit, this.br.onePage.reductionFactors);\n this.realWorldReduce = reductionFactor.reduce;\n }\n\n const viewDimensions = this.calculateViewDimensions();\n this.$documentContainer.height(viewDimensions.height);\n this.$documentContainer.width(viewDimensions.width);\n\n // Remove all pages\n this.$documentContainer.empty();\n this.br.displayedIndices = [];\n\n // Scroll to the right spot\n const newCenterX = oldCenterX * (viewWidth / oldPageViewWidth);\n const newCenterY = scrollRatio * viewDimensions.height;\n const sizeX = this.$scrollContainer.prop('clientWidth'); // Use clientWidth because of scroll bar\n const sizeY = this.$scrollContainer.height();\n this.$scrollContainer.prop({\n scrollLeft: Math.max(0, newCenterX - sizeX / 2),\n scrollTop: Math.max(0, newCenterY - sizeY / 2),\n });\n\n // Draw all visible pages\n this.drawLeafs();\n\n if (this.br.enableSearch) {\n this.br.removeSearchHilites();\n this.br.updateSearchHilites();\n }\n }\n\n /**\n * Calculate the total width/height in pixels of the document container\n * @param {number} reduce\n * @param {number} leafSpacing spacing between pages in inches\n */\n calculateViewDimensions(reduce = this.realWorldReduce, leafSpacing = this.LEAF_SPACING_IN) {\n let width = 0;\n let height = 0;\n for (const {page, bottom} of this.pagesWithBounds(reduce, leafSpacing)) {\n const pageWidth = this.physicalInchesToDisplayPixels(page.widthInches, reduce);\n width = Math.max(width, pageWidth);\n height = bottom;\n }\n return { width, height };\n }\n\n /**\n * Returns the current offset of the viewport center in scaled document coordinates.\n */\n centerX($scrollContainer = this.$scrollContainer, $documentContainer = this.$documentContainer) {\n let centerX;\n if ($documentContainer.width() < $scrollContainer.prop('clientWidth')) { // fully shown\n centerX = $documentContainer.width();\n } else {\n centerX = $scrollContainer.scrollLeft() + $scrollContainer.prop('clientWidth') / 2;\n }\n return Math.floor(centerX);\n }\n\n /**\n * Returns the current offset of the viewport center in scaled document coordinates.\n */\n centerY($scrollContainer = this.$scrollContainer) {\n const centerY = $scrollContainer.scrollTop() + $scrollContainer.height() / 2;\n return Math.floor(centerY);\n }\n}\n","// @ts-check\n// effect.js gives acces to extra easing function (e.g. easeInSine)\nimport 'jquery-ui/ui/effect.js';\nimport '../dragscrollable-br.js';\nimport { clamp } from './utils.js';\nimport { EVENTS } from './events.js';\n\n/** @typedef {import('../BookReader.js').default} BookReader */\n/** @typedef {import('./BookModel.js').BookModel} BookModel */\n/** @typedef {import('./BookModel.js').PageIndex} PageIndex */\n/** @typedef {import('./options.js').BookReaderOptions} BookReaderOptions */\n/** @typedef {import('./PageContainer.js').PageContainer} PageContainer */\n\nexport class Mode2Up {\n /**\n * @param {BookReader} br\n * @param {BookModel} bookModel\n */\n constructor(br, bookModel) {\n this.br = br;\n this.book = bookModel;\n\n /** @type {HTMLDivElement} */\n this.leafEdgeL = null;\n /** @type {HTMLDivElement} */\n this.leafEdgeR = null;\n\n /** @type {{ [index: number]: PageContainer }} */\n this.pageContainers = {};\n }\n\n /**\n * @param {PageIndex} index\n */\n jumpToIndex(index) {\n // By checking against min/max we do nothing if requested index\n // is current\n if (index < Math.min(this.br.twoPage.currentIndexL, this.br.twoPage.currentIndexR)) {\n this.flipBackToIndex(index);\n } else if (index > Math.max(this.br.twoPage.currentIndexL, this.br.twoPage.currentIndexR)) {\n this.flipFwdToIndex(index);\n }\n }\n\n /**\n * @template T\n * @param {HTMLElement} element\n * @param {T} data\n * @param {function(HTMLElement, { data: T }): void} handler\n */\n setClickHandler(element, data, handler) {\n $(element).unbind('mouseup').bind('mouseup', data, function(e) {\n handler(this, e);\n });\n }\n\n /**\n * Draws book spread,\n * sets event handlers,\n * sets: `this.br.displayedIndices`\n * updates toolbar zoom\n * Important: `this.br.refs.$brTwoPageView` parent container must be emptied before calling\n */\n drawLeafs() {\n const $twoPageViewEl = this.br.refs.$brTwoPageView;\n const indexL = this.br.twoPage.currentIndexL;\n const indexR = this.br.twoPage.currentIndexR;\n\n this.createPageContainer(indexL).$container\n .css(this.leftLeafCss)\n .appendTo($twoPageViewEl);\n this.createPageContainer(indexR).$container\n .css(this.rightLeafCss)\n .appendTo($twoPageViewEl);\n\n this.displayedIndices = [this.br.twoPage.currentIndexL, this.br.twoPage.currentIndexR];\n this.setMouseHandlers();\n this.br.displayedIndices = this.displayedIndices;\n this.br.updateToolbarZoom(this.br.reduce);\n this.br.trigger('pageChanged');\n }\n\n /**\n * @param {1} direction\n */\n zoom(direction) {\n this.br.stopFlipAnimations();\n\n // Recalculate autofit factors\n this.calculateReductionFactors();\n\n // Get new zoom state\n const reductionFactor = this.br.nextReduce(this.br.reduce, direction, this.br.twoPage.reductionFactors);\n if ((this.br.reduce == reductionFactor.reduce) && (this.br.twoPage.autofit == reductionFactor.autofit)) {\n // Same zoom\n return;\n }\n this.br.twoPage.autofit = reductionFactor.autofit;\n this.br.reduce = reductionFactor.reduce;\n this.br.pageScale = this.br.reduce; // preserve current reduce\n\n // Preserve view center position\n const oldCenter = this.getViewCenter();\n\n // Prepare view with new center to minimize visual glitches\n const drawNewSpread = true;\n this.prepareTwoPageView(oldCenter.percentageX, oldCenter.percentageY, drawNewSpread);\n }\n\n /**\n * Resize spread containers, does not prefetch\n * uses `this.br.twoPage` properties\n */\n resizeSpread() {\n this.br.resizeBRcontainer(false); // no animation\n this.calculateSpreadSize();\n\n this.br.refs?.$brTwoPageView.css(this.mainContainerCss);\n this.centerView(); // let function self adjust\n\n $(this.br.twoPage.coverDiv).css(this.spreadCoverCss); // click sheath is memoized somehow\n const $spreadLayers = this.br.refs.$brTwoPageView;\n\n $spreadLayers.find('.BRleafEdgeR')?.css(this.leafEdgeRCss);\n $spreadLayers.find('.BRleafEdgeL')?.css(this.leafEdgeLCss);\n $spreadLayers.find('.BRgutter')?.css(this.spineCss);\n\n const indexL = this.br.twoPage.currentIndexL;\n const indexR = this.br.twoPage.currentIndexR;\n this.pageContainers[indexL].$container.css(this.leftLeafCss);\n this.pageContainers[indexR].$container.css(this.rightLeafCss);\n }\n\n /**\n * @param {number} centerPercentageX\n * @param {number} centerPercentageY\n * @param {Boolean} drawNewSpread\n */\n prepareTwoPageView(centerPercentageX, centerPercentageY, drawNewSpread = false) {\n // Some decisions about two page view:\n //\n // Both pages will be displayed at the same height, even if they were different physical/scanned\n // sizes. This simplifies the animation (from a design as well as technical standpoint). We\n // examine the page aspect ratios (in calculateSpreadSize) and use the page with the most \"normal\"\n // aspect ratio to determine the height.\n //\n // The two page view div is resized to keep the middle of the book in the middle of the div\n // even as the page sizes change. To e.g. keep the middle of the book in the middle of the BRcontent\n // div requires adjusting the offset of BRtwpageview and/or scrolling in BRcontent.\n const startingReduce = this.br.reduce;\n const startingIndices = this.br.displayedIndices;\n\n this.br.refs.$brContainer.empty();\n this.br.refs.$brContainer.css('overflow', 'auto');\n\n // We want to display two facing pages. We may be missing\n // one side of the spread because it is the first/last leaf,\n // foldouts, missing pages, etc\n\n const targetLeaf = clamp(this.br.firstIndex, this.br.firstDisplayableIndex(), this.br.lastDisplayableIndex());\n const currentSpreadIndices = this.book.getSpreadIndices(targetLeaf);\n this.br.twoPage.currentIndexL = currentSpreadIndices[0];\n this.br.twoPage.currentIndexR = currentSpreadIndices[1];\n\n this.calculateSpreadSize(); //sets this.br.reduce, twoPage.width, twoPage.height and others\n\n /* check if calculations have changed that warrant a new book draw */\n const sameReducer = startingReduce == this.br.reduce;\n const sameStart = startingIndices == this.br.displayedIndices;\n const hasNewDisplayPagesOrDimensions = !sameStart || (sameStart && !sameReducer);\n\n if (drawNewSpread || hasNewDisplayPagesOrDimensions) {\n this.prunePageContainers();\n this.prefetch();\n }\n\n // Add the two page view\n // $$$ Can we get everything set up and then append?\n const $twoPageViewEl = $('
    ');\n this.br.refs.$brTwoPageView = $twoPageViewEl;\n this.br.refs.$brContainer.append($twoPageViewEl);\n\n // Attaches to first child, so must come after we add the page view\n this.br.refs.$brContainer.dragscrollable({preventDefault:true});\n this.br.bindGestures(this.br.refs.$brContainer);\n\n // $$$ calculate container size first\n this.br.refs?.$brTwoPageView.css(this.mainContainerCss);\n\n // This will trump the incoming coordinates\n // in order to center book when zooming out\n if (this.br.twoPage.totalWidth < this.br.refs.$brContainer.prop('clientWidth')) {\n centerPercentageX = 0.5;\n }\n if (this.br.twoPage.totalHeight < this.br.refs.$brContainer.prop('clientHeight')) {\n centerPercentageY = 0.5;\n }\n\n this.centerView(centerPercentageX, centerPercentageY);\n\n // then set\n this.br.twoPage.coverDiv = document.createElement('div');\n $(this.br.twoPage.coverDiv).attr('class', 'BRbookcover').css(this.spreadCoverCss).appendTo(this.br.refs.$brTwoPageView);\n\n this.leafEdgeR = document.createElement('div');\n this.leafEdgeR.className = 'BRleafEdgeR';\n $(this.leafEdgeR).css(this.leafEdgeRCss).appendTo(this.br.refs.$brTwoPageView);\n\n this.leafEdgeL = document.createElement('div');\n this.leafEdgeL.className = 'BRleafEdgeL';\n $(this.leafEdgeL).css(this.leafEdgeLCss).appendTo(this.br.refs.$brTwoPageView);\n\n const div = document.createElement('div');\n $(div).attr('class', 'BRgutter').css(this.spineCss).appendTo(this.br.refs.$brTwoPageView);\n\n this.preparePopUp();\n\n this.br.displayedIndices = [];\n\n this.drawLeafs();\n this.br.updateToolbarZoom(this.br.reduce);\n\n if (this.br.enableSearch) {\n this.br.removeSearchHilites();\n this.br.updateSearchHilites();\n }\n\n this.br.updateBrClasses();\n }\n\n prunePageContainers() {\n for (const index in this.pageContainers) {\n if ((index != this.br.twoPage.currentIndexL) && (index != this.br.twoPage.currentIndexR)) {\n $(this.pageContainers[index].$container).remove();\n }\n if ((index < this.br.twoPage.currentIndexL - 4) || (index > this.br.twoPage.currentIndexR + 4)) {\n delete this.pageContainers[index];\n }\n }\n }\n\n /**\n * This function prepares the \"View Page n\" popup that shows while the mouse is\n * over the left/right \"stack of sheets\" edges. It also binds the mouse\n * events for these divs.\n */\n preparePopUp() {\n this.br.twoPagePopUp = document.createElement('div');\n this.br.twoPagePopUp.className = 'BRtwoPagePopUp';\n $(this.br.twoPagePopUp).css({\n zIndex: '1000'\n }).appendTo(this.br.refs.$brContainer);\n $(this.br.twoPagePopUp).hide();\n\n const leafEdges = [\n {\n $leafEdge: $(this.leafEdgeL),\n /** @type {function(number): PageIndex} */\n jumpIndexForPageX: this.jumpIndexForLeftEdgePageX.bind(this),\n leftOffset: () => -$(this.br.twoPagePopUp).width() + 120,\n },\n {\n $leafEdge: $(this.leafEdgeR),\n /** @type {function(number): PageIndex} */\n jumpIndexForPageX: this.jumpIndexForRightEdgePageX.bind(this),\n leftOffset: () => -120,\n },\n ];\n\n for (const { $leafEdge, jumpIndexForPageX, leftOffset } of leafEdges) {\n $leafEdge.on('mouseenter', () => $(this.br.twoPagePopUp).show());\n $leafEdge.on('mouseleave', () => $(this.br.twoPagePopUp).hide());\n\n $leafEdge.on('click', e => {\n this.br.trigger(EVENTS.stop);\n this.br.jumpToIndex(jumpIndexForPageX(e.pageX));\n });\n\n $leafEdge.on('mousemove', e => {\n const jumpIndex = clamp(jumpIndexForPageX(e.pageX), 0, this.book.getNumLeafs() - 1);\n $(this.br.twoPagePopUp).text(`View ${this.book.getPageName(jumpIndex)}`);\n\n // $$$ TODO: Make sure popup is positioned so that it is in view\n // (https://bugs.edge.launchpad.net/gnubook/+bug/327456)\n $(this.br.twoPagePopUp).css({\n left: `${e.pageX - this.br.refs.$brContainer.offset().left + this.br.refs.$brContainer.scrollLeft() + leftOffset()}px`,\n top: `${e.pageY - this.br.refs.$brContainer.offset().top + this.br.refs.$brContainer.scrollTop()}px`\n });\n });\n }\n }\n\n setSpreadIndices() {\n const targetLeaf = clamp(this.br.firstIndex, this.br.firstDisplayableIndex(), this.br.lastDisplayableIndex());\n const currentSpreadIndices = this.book.getSpreadIndices(targetLeaf);\n this.br.twoPage.currentIndexL = currentSpreadIndices[0];\n this.br.twoPage.currentIndexR = currentSpreadIndices[1];\n }\n\n /**\n * Calculates 2-page spread dimensions based on this.br.twoPage.currentIndexL and\n * this.br.twoPage.currentIndexR\n * This function sets this.br.twoPage.height, twoPage.width\n */\n calculateSpreadSize() {\n const firstIndex = this.br.twoPage.currentIndexL;\n const secondIndex = this.br.twoPage.currentIndexR;\n\n // Calculate page sizes and total leaf width\n let spreadSize;\n if ( this.br.twoPage.autofit) {\n spreadSize = this.getIdealSpreadSize(firstIndex, secondIndex);\n } else {\n // set based on reduction factor\n spreadSize = this.getSpreadSizeFromReduce(firstIndex, secondIndex, this.br.reduce);\n }\n // Both pages together\n this.br.twoPage.height = spreadSize.height || 0;\n this.br.twoPage.width = spreadSize.width || 0;\n\n // Individual pages\n this.br.twoPage.scaledWL = this.getPageWidth(firstIndex) || 0;\n this.br.twoPage.scaledWR = this.getPageWidth(secondIndex) || 0;\n\n // Leaf edges\n this.br.twoPage.edgeWidth = spreadSize.totalLeafEdgeWidth; // The combined width of both edges\n this.br.twoPage.leafEdgeWidthL = this.br.leafEdgeWidth(this.br.twoPage.currentIndexL);\n this.br.twoPage.leafEdgeWidthR = this.br.twoPage.edgeWidth - this.br.twoPage.leafEdgeWidthL;\n\n\n // Book cover\n // The width of the book cover div. The combined width of both pages, twice the width\n // of the book cover internal padding (2*10) and the page edges\n this.br.twoPage.bookCoverDivWidth = this.coverWidth(this.br.twoPage.scaledWL + this.br.twoPage.scaledWR);\n // The height of the book cover div\n this.br.twoPage.bookCoverDivHeight = this.br.twoPage.height + 2 * this.br.twoPage.coverInternalPadding;\n\n\n // We calculate the total width and height for the div so that we can make the book\n // spine centered\n const leftGutterOffset = this.gutterOffsetForIndex(firstIndex);\n const leftWidthFromCenter = this.br.twoPage.scaledWL - leftGutterOffset + this.br.twoPage.leafEdgeWidthL;\n const rightWidthFromCenter = this.br.twoPage.scaledWR + leftGutterOffset + this.br.twoPage.leafEdgeWidthR;\n const largestWidthFromCenter = Math.max( leftWidthFromCenter, rightWidthFromCenter );\n this.br.twoPage.totalWidth = 2 * (largestWidthFromCenter + this.br.twoPage.coverInternalPadding + this.br.twoPage.coverExternalPadding);\n this.br.twoPage.totalHeight = this.br.twoPage.height + 2 * (this.br.twoPage.coverInternalPadding + this.br.twoPage.coverExternalPadding);\n\n // We want to minimize the unused space in two-up mode (maximize the amount of page\n // shown). We give width to the leaf edges and these widths change (though the sum\n // of the two remains constant) as we flip through the book. With the book\n // cover centered and fixed in the BRcontainer div the page images will meet\n // at the \"gutter\" which is generally offset from the center.\n this.br.twoPage.middle = this.br.twoPage.totalWidth >> 1;\n this.br.twoPage.gutter = this.br.twoPage.middle + this.gutterOffsetForIndex(firstIndex);\n\n // The left edge of the book cover moves depending on the width of the pages\n // $$$ change to getter\n this.br.twoPage.bookCoverDivLeft = this.br.twoPage.gutter - this.br.twoPage.scaledWL - this.br.twoPage.leafEdgeWidthL - this.br.twoPage.coverInternalPadding;\n // The top edge of the book cover stays a fixed distance from the top\n this.br.twoPage.bookCoverDivTop = this.br.twoPage.coverExternalPadding;\n\n // Book spine\n this.br.twoPage.bookSpineDivHeight = this.br.twoPage.height + 2 * this.br.twoPage.coverInternalPadding;\n this.br.twoPage.bookSpineDivLeft = this.br.twoPage.middle - (this.br.twoPage.bookSpineDivWidth >> 1);\n this.br.twoPage.bookSpineDivTop = this.br.twoPage.bookCoverDivTop;\n\n this.br.reduce = spreadSize.reduce < 0 ? this.br.reduce : spreadSize.reduce; // $$$ really set this here?\n }\n\n /**\n *\n * @param {number} firstIndex\n * @param {number} secondIndex\n * @return {{ width: number, height: number, totalLeafEdgeWidth: number, reduce: number}}\n */\n getIdealSpreadSize(firstIndex, secondIndex) {\n const ideal = {};\n\n // We check which page is closest to a \"normal\" page and use that to set the height\n // for both pages. This means that foldouts and other odd size pages will be displayed\n // smaller than the nominal zoom amount.\n const canon5Dratio = 1.5;\n\n const first = {\n height: this.book._getPageHeight(firstIndex),\n width: this.book._getPageWidth(firstIndex)\n };\n\n const second = {\n height: this.book._getPageHeight(secondIndex),\n width: this.book._getPageWidth(secondIndex)\n };\n\n const firstIndexRatio = first.height / first.width;\n const secondIndexRatio = second.height / second.width;\n\n let ratio;\n if (Math.abs(firstIndexRatio - canon5Dratio) < Math.abs(secondIndexRatio - canon5Dratio)) {\n ratio = firstIndexRatio;\n } else {\n ratio = secondIndexRatio;\n }\n\n const totalLeafEdgeWidth = Math.floor(this.book.getNumLeafs() * 0.1);\n const maxLeafEdgeWidth = Math.floor(this.br.refs.$brContainer.prop('clientWidth') * 0.1);\n ideal.totalLeafEdgeWidth = Math.min(totalLeafEdgeWidth, maxLeafEdgeWidth);\n\n const widthOutsidePages = 2 * (this.br.twoPage.coverInternalPadding + this.br.twoPage.coverExternalPadding) + ideal.totalLeafEdgeWidth;\n const heightOutsidePages = 2 * (this.br.twoPage.coverInternalPadding + this.br.twoPage.coverExternalPadding);\n\n ideal.width = (this.br.refs.$brContainer.width() - widthOutsidePages) >> 1;\n ideal.width = ideal.width > 10 ? ideal.width - 10 : 1; // $$$ fudge factor\n\n ideal.height = this.br.refs.$brContainer.height() - heightOutsidePages;\n ideal.height = ideal.height > 15 ? ideal.height - 15 : 1; // $$$ fudge factor\n\n if (ideal.height / ratio <= ideal.width) {\n //use height\n ideal.width = Math.floor(ideal.height / ratio) || 1;\n } else {\n //use width\n ideal.height = Math.floor(ideal.width * ratio) || 1;\n }\n\n // $$$ check this logic with large spreads\n ideal.reduce = Math.round(((first.height + second.height) / 2) / ideal.height);\n\n return ideal;\n }\n\n /**\n * Returns the spread size calculated from the reduction factor for the given pages\n * @param {number} firstIndex\n * @param {number} secondIndex\n * @return {Object}\n */\n getSpreadSizeFromReduce(firstIndex, secondIndex, reduce) {\n const spreadSize = {};\n // $$$ Scale this based on reduce?\n const totalLeafEdgeWidth = Math.floor(this.book.getNumLeafs() * 0.1);\n // $$$ Assumes leaf edge width constant at all zoom levels\n const maxLeafEdgeWidth = Math.floor(this.br.refs.$brContainer.prop('clientWidth') * 0.1);\n spreadSize.totalLeafEdgeWidth = Math.min(totalLeafEdgeWidth, maxLeafEdgeWidth);\n\n // $$$ Possibly incorrect -- we should make height \"dominant\"\n const nativeWidth = this.book._getPageWidth(firstIndex) + this.book._getPageWidth(secondIndex);\n const nativeHeight = this.book._getPageHeight(firstIndex) + this.book._getPageHeight(secondIndex);\n spreadSize.height = Math.floor( (nativeHeight / 2) / this.br.reduce );\n spreadSize.width = Math.floor( (nativeWidth / 2) / this.br.reduce );\n spreadSize.reduce = reduce;\n\n return spreadSize;\n }\n\n /**\n * Returns the current ideal reduction factor\n * @return {number}\n */\n getAutofitReduce() {\n const spreadSize = this.getIdealSpreadSize(this.br.twoPage.currentIndexL, this.br.twoPage.currentIndexR);\n return spreadSize.reduce;\n }\n\n /**\n * Returns true if the pages extend past the edge of the view\n * @deprecated slated for deprecation by v5.0.0\n * @return {boolean}\n */\n isZoomedIn() {\n let isZoomedIn = false;\n if (this.br.twoPage.autofit != 'auto') {\n if (this.br.reduce < this.getAutofitReduce()) {\n isZoomedIn = true;\n }\n }\n return isZoomedIn;\n }\n\n calculateReductionFactors() {\n this.br.twoPage.reductionFactors = this.br.reductionFactors.concat([\n {\n reduce: this.getIdealSpreadSize( this.br.twoPage.currentIndexL, this.br.twoPage.currentIndexR ).reduce,\n autofit: 'auto'\n }\n ]);\n this.br.twoPage.reductionFactors.sort(this.br._reduceSort);\n }\n\n /**\n * Set the cursor for two page view\n * @deprecated Since version 4.3.3. Will be deleted in version 5.0\n */\n setCursor() {\n console.warn('Call to deprecated method, Mode2Up.setCursor. No-op.');\n }\n\n /**\n * @param {Number|null} index to flip back one spread, pass index=null\n */\n flipBackToIndex(index) {\n if (this.br.constMode1up == this.br.mode) return;\n if (this.br.animating) return;\n\n if (null != this.br.leafEdgeTmp) {\n alert('error: leafEdgeTmp should be null!');\n return;\n }\n\n if (null == index) {\n const {currentIndexL, currentIndexR} = this.br.twoPage;\n const minDisplayedIndex = Math.min(currentIndexL, currentIndexR);\n const prev = this.book.getPage(minDisplayedIndex).findPrev({ combineConsecutiveUnviewables: true });\n if (!prev) return;\n index = prev.index;\n // Can only flip to a left page\n // (downstream code handles index = -1, so this is ok I guess)\n if (prev.pageSide == 'R') index--;\n }\n\n this.br.updateNavIndexThrottled(index);\n\n const previousIndices = this.book.getSpreadIndices(index);\n\n if (previousIndices[0] < this.br.firstDisplayableIndex() || previousIndices[1] < this.br.firstDisplayableIndex()) {\n return;\n }\n\n this.br.animating = true;\n\n if ('rl' != this.br.pageProgression) {\n // Assume LTR and we are going backward\n this.prepareFlipLeftToRight(previousIndices[0], previousIndices[1]);\n this.flipLeftToRight(previousIndices[0], previousIndices[1]);\n } else {\n // RTL and going backward\n this.prepareFlipRightToLeft(previousIndices[0], previousIndices[1]);\n this.flipRightToLeft(previousIndices[0], previousIndices[1]);\n }\n }\n\n /**\n * Flips the page on the left towards the page on the right\n * @param {number} newIndexL\n * @param {number} newIndexR\n */\n flipLeftToRight(newIndexL, newIndexR) {\n this.br.refs.$brContainer.addClass(\"BRpageFlipping\");\n const leftLeaf = this.br.twoPage.currentIndexL;\n\n const oldLeafEdgeWidthL = this.br.leafEdgeWidth(this.br.twoPage.currentIndexL);\n const newLeafEdgeWidthL = this.br.leafEdgeWidth(newIndexL);\n const leafEdgeTmpW = oldLeafEdgeWidthL - newLeafEdgeWidthL;\n\n const currWidthL = this.getPageWidth(leftLeaf);\n const newWidthL = this.getPageWidth(newIndexL);\n const newWidthR = this.getPageWidth(newIndexR);\n\n const top = this.top();\n const gutter = this.br.twoPage.middle + this.gutterOffsetForIndex(newIndexL);\n\n //animation strategy:\n // 0. remove search highlight, if any.\n // 1. create a new div, called leafEdgeTmp to represent the leaf edge between the leftmost edge\n // of the left leaf and where the user clicked in the leaf edge.\n // Note that if this function was triggered by left() and not a\n // mouse click, the width of leafEdgeTmp is very small (zero px).\n // 2. animate both leafEdgeTmp to the gutter (without changing its width) and animate\n // leftLeaf to width=0.\n // 3. When step 2 is finished, animate leafEdgeTmp to right-hand side of new right leaf\n // (left=gutter+newWidthR) while also animating the new right leaf from width=0 to\n // its new full width.\n // 4. After step 3 is finished, do the following:\n // - remove leafEdgeTmp from the dom.\n // - resize and move the right leaf edge (leafEdgeR) to left=gutter+newWidthR\n // and width=twoPage.edgeWidth-newLeafEdgeWidthL.\n // - resize and move the left leaf edge (leafEdgeL) to left=gutter-newWidthL-newLeafEdgeWidthL\n // and width=newLeafEdgeWidthL.\n // - resize the back cover (twoPage.coverDiv) to left=gutter-newWidthL-newLeafEdgeWidthL-10\n // and width=newWidthL+newWidthR+twoPage.edgeWidth+20\n // - move new left leaf (newIndexL) forward to zindex=2 so it can receive clicks.\n // - remove old left and right leafs from the dom [prunePageContainers()].\n // - prefetch new adjacent leafs.\n // - set up click handlers for both new left and right leafs.\n // - redraw the search highlight.\n // - update the pagenum box and the url.\n\n const $twoPageViewEl = this.br.refs.$brTwoPageView;\n const leftEdgeTmpLeft = gutter - currWidthL - leafEdgeTmpW;\n\n this.br.leafEdgeTmp = document.createElement('div');\n this.br.leafEdgeTmp.className = 'BRleafEdgeTmp';\n $(this.br.leafEdgeTmp).css({\n width: `${leafEdgeTmpW}px`,\n height: `${this.br.twoPage.height}px`,\n left: `${leftEdgeTmpLeft}px`,\n top: `${top}px`,\n zIndex: 1000,\n }).appendTo($twoPageViewEl);\n\n $(this.leafEdgeL).css({\n width: `${newLeafEdgeWidthL}px`,\n left: `${gutter - currWidthL - newLeafEdgeWidthL}px`\n });\n\n // Left gets the offset of the current left leaf from the document\n const left = this.pageContainers[leftLeaf].$container.offset().left;\n // $$$ This seems very similar to the gutter. May be able to consolidate the logic.\n const right = `${$twoPageViewEl.prop('clientWidth') - left - this.pageContainers[leftLeaf].$container.width() + $twoPageViewEl.offset().left - 2}px`;\n\n // We change the left leaf to right positioning\n // $$$ This causes animation glitches during resize. See https://bugs.edge.launchpad.net/gnubook/+bug/328327\n this.pageContainers[leftLeaf].$container.css({\n right,\n left: ''\n });\n\n $(this.br.leafEdgeTmp).animate({left: gutter}, this.br.flipSpeed, 'easeInSine');\n\n if (this.br.enableSearch) this.br.removeSearchHilites();\n\n this.pageContainers[leftLeaf].$container.animate({width: '0px'}, this.br.flipSpeed, 'easeInSine', () => {\n\n $(this.br.leafEdgeTmp).animate({left: `${gutter + newWidthR}px`}, this.br.flipSpeed, 'easeOutSine');\n\n this.br.$('.BRgutter').css({left: `${gutter - this.br.twoPage.bookSpineDivWidth * 0.5}px`});\n\n this.pageContainers[newIndexR].$container.animate({width: `${newWidthR}px`}, this.br.flipSpeed, 'easeOutSine', () => {\n this.pageContainers[newIndexL].$container.css('zIndex', 2);\n\n $(this.leafEdgeR).css({\n // Moves the right leaf edge\n width: `${this.br.twoPage.edgeWidth - newLeafEdgeWidthL}px`,\n left: `${gutter + newWidthR}px`\n });\n\n $(this.leafEdgeL).css({\n // Moves and resizes the left leaf edge\n width: `${newLeafEdgeWidthL}px`,\n left: `${gutter - newWidthL - newLeafEdgeWidthL}px`\n });\n\n // Resizes the brown border div\n $(this.br.twoPage.coverDiv).css({\n width: `${this.coverWidth(newWidthL + newWidthR)}px`,\n left: `${gutter - newWidthL - newLeafEdgeWidthL - this.br.twoPage.coverInternalPadding}px`\n });\n\n $(this.br.leafEdgeTmp).remove();\n this.br.leafEdgeTmp = null;\n\n // $$$ TODO refactor with opposite direction flip\n\n this.br.twoPage.currentIndexL = newIndexL;\n this.br.twoPage.currentIndexR = newIndexR;\n this.br.twoPage.scaledWL = newWidthL;\n this.br.twoPage.scaledWR = newWidthR;\n this.br.twoPage.gutter = gutter;\n\n this.br.updateFirstIndex(this.br.twoPage.currentIndexL);\n this.br.displayedIndices = [newIndexL, newIndexR];\n this.prunePageContainers();\n this.br.animating = false;\n\n this.resizeSpread();\n\n if (this.br.enableSearch) this.br.updateSearchHilites();\n\n this.setMouseHandlers();\n\n if (this.br.animationFinishedCallback) {\n this.br.animationFinishedCallback();\n this.br.animationFinishedCallback = null;\n }\n\n this.br.refs.$brContainer.removeClass(\"BRpageFlipping\");\n this.br.textSelectionPlugin?.stopPageFlip(this.br.refs.$brContainer);\n this.centerView();\n this.br.trigger('pageChanged');\n\n // get next previous batch immediately\n this.prunePageContainers();\n this.createPageContainer(newIndexL - 2);\n this.createPageContainer(newIndexR - 2);\n this.createPageContainer(newIndexL - 3);\n this.createPageContainer(newIndexR - 3);\n });\n });\n }\n\n /**\n * @param {PageIndex} index\n */\n createPageContainer(index, fetch = false) {\n if (!this.pageContainers[index]) {\n this.pageContainers[index] = this.br._createPageContainer(index);\n }\n this.pageContainers[index].update({ reduce: this.br.reduce });\n return this.pageContainers[index];\n }\n\n /**\n * Whether we flip left or right is dependent on the page progression\n * to flip forward one spread, pass index=null\n * @param {number} index\n */\n flipFwdToIndex(index) {\n if (this.br.animating) return;\n\n if (null != this.br.leafEdgeTmp) {\n alert('error: leafEdgeTmp should be null!');\n return;\n }\n\n if (null == index) {\n // Need to use the max here, since it could be a right to left book\n const {currentIndexL, currentIndexR} = this.br.twoPage;\n const maxDisplayedIndex = Math.max(currentIndexL, currentIndexR);\n const nextPage = this.book.getPage(maxDisplayedIndex).findNext({ combineConsecutiveUnviewables: true });\n if (!nextPage) return;\n index = nextPage.index;\n }\n if (index > this.br.lastDisplayableIndex()) return;\n\n this.br.updateNavIndexThrottled(index);\n\n this.br.animating = true;\n\n const nextIndices = this.book.getSpreadIndices(index);\n\n if ('rl' != this.br.pageProgression) {\n // We did not specify RTL\n this.prepareFlipRightToLeft(nextIndices[0], nextIndices[1]);\n this.flipRightToLeft(nextIndices[0], nextIndices[1]);\n } else {\n // RTL\n this.prepareFlipLeftToRight(nextIndices[0], nextIndices[1]);\n this.flipLeftToRight(nextIndices[0], nextIndices[1]);\n }\n }\n\n /**\n * Flip from left to right and show the nextL and nextR indices on those sides\n * $$$ better not to have to pass gutter in\n * @param {number} newIndexL\n * @param {number} newIndexR\n */\n flipRightToLeft(newIndexL, newIndexR) {\n this.br.refs.$brContainer.addClass(\"BRpageFlipping\");\n\n const oldLeafEdgeWidthL = this.br.leafEdgeWidth(this.br.twoPage.currentIndexL);\n const oldLeafEdgeWidthR = this.br.twoPage.edgeWidth - oldLeafEdgeWidthL;\n const newLeafEdgeWidthL = this.br.leafEdgeWidth(newIndexL);\n const newLeafEdgeWidthR = this.br.twoPage.edgeWidth - newLeafEdgeWidthL;\n\n const leafEdgeTmpW = oldLeafEdgeWidthR - newLeafEdgeWidthR;\n\n const top = this.top();\n const scaledW = this.getPageWidth(this.br.twoPage.currentIndexR);\n\n const middle = this.br.twoPage.middle;\n const gutter = middle + this.gutterOffsetForIndex(newIndexL);\n\n const $twoPageViewEl = this.br.refs.$brTwoPageView;\n\n this.br.leafEdgeTmp = document.createElement('div');\n this.br.leafEdgeTmp.className = 'BRleafEdgeTmp';\n $(this.br.leafEdgeTmp).css({\n width: `${leafEdgeTmpW}px`,\n height: `${this.br.twoPage.height}px`,\n left: `${gutter + scaledW}px`,\n top: `${top}px`,\n zIndex:1000\n }).appendTo($twoPageViewEl);\n\n const newWidthL = this.getPageWidth(newIndexL);\n const newWidthR = this.getPageWidth(newIndexR);\n\n $(this.leafEdgeR).css({width: `${newLeafEdgeWidthR}px`, left: `${gutter + newWidthR}px` });\n const speed = this.br.flipSpeed;\n\n if (this.br.enableSearch) this.br.removeSearchHilites();\n\n $(this.br.leafEdgeTmp).animate({left: gutter}, speed, 'easeInSine');\n this.pageContainers[this.br.twoPage.currentIndexR].$container.animate({width: '0px'}, speed, 'easeInSine', () => {\n this.br.$('BRgutter').css({left: `${gutter - this.br.twoPage.bookSpineDivWidth * 0.5}px`});\n $(this.br.leafEdgeTmp).animate({left: `${gutter - newWidthL - leafEdgeTmpW}px`}, speed, 'easeOutSine');\n this.pageContainers[newIndexL].$container.animate({width: `${newWidthL}px`}, speed, 'easeOutSine', () => {\n this.pageContainers[newIndexR].$container.css('zIndex', 2);\n\n $(this.leafEdgeL).css({\n width: `${newLeafEdgeWidthL}px`,\n left: `${gutter - newWidthL - newLeafEdgeWidthL}px`\n });\n\n // Resizes the book cover\n $(this.br.twoPage.coverDiv).css({\n width: `${this.coverWidth(newWidthL + newWidthR)}px`,\n left: `${gutter - newWidthL - newLeafEdgeWidthL - this.br.twoPage.coverInternalPadding}px`\n });\n\n $(this.br.leafEdgeTmp).remove();\n this.br.leafEdgeTmp = null;\n\n this.br.twoPage.currentIndexL = newIndexL;\n this.br.twoPage.currentIndexR = newIndexR;\n this.br.twoPage.scaledWL = newWidthL;\n this.br.twoPage.scaledWR = newWidthR;\n this.br.twoPage.gutter = gutter;\n\n this.br.updateFirstIndex(this.br.twoPage.currentIndexL);\n this.br.displayedIndices = [newIndexL, newIndexR];\n this.prunePageContainers();\n this.br.animating = false;\n\n this.resizeSpread();\n\n if (this.br.enableSearch) this.br.updateSearchHilites();\n\n this.setMouseHandlers();\n\n if (this.br.animationFinishedCallback) {\n this.br.animationFinishedCallback();\n this.br.animationFinishedCallback = null;\n }\n\n this.br.refs.$brContainer.removeClass(\"BRpageFlipping\");\n this.br.textSelectionPlugin?.stopPageFlip(this.br.refs.$brContainer);\n this.centerView();\n this.br.trigger('pageChanged');\n\n this.prunePageContainers();\n this.createPageContainer(newIndexL + 2);\n this.createPageContainer(newIndexR + 2);\n this.createPageContainer(newIndexL + 3);\n this.createPageContainer(newIndexR + 3);\n });\n });\n }\n\n setMouseHandlers() {\n /**\n * @param {HTMLElement} element\n * @param {JQuery.MouseDownEvent} e\n */\n const handler = function(element, e) {\n if (e.which == 3) {\n // right click\n return !e.data.self.br.protected;\n }\n e.data.self.br.trigger(EVENTS.stop);\n e.data.self.br[e.data.direction === 'L' ? 'left' : 'right']();\n\n // Removed event handler for mouse movement, seems not to be needed\n /*\n // Changes per WEBDEV-2737\n BookReader: zoomed-in 2 page view, clicking page should change the page\n $(element)\n .mousemove(function() {\n e.preventDefault();\n })\n */\n }\n\n this.setClickHandler(\n this.pageContainers[this.br.twoPage.currentIndexR].$container[0],\n { self: this, direction: 'R' },\n handler\n );\n this.setClickHandler(\n this.pageContainers[this.br.twoPage.currentIndexL].$container[0],\n { self: this, direction: 'L' },\n handler\n );\n }\n\n /**\n * Prepare to flip the left page towards the right. This corresponds to moving\n * backward when the page progression is left to right.\n * @param {number} prevL\n * @param {number} prevR\n */\n prepareFlipLeftToRight(prevL, prevR) {\n this.createPageContainer(prevL, true);\n this.createPageContainer(prevR, true);\n\n const $twoPageViewEl = this.br.refs.$brTwoPageView;\n const height = this.book._getPageHeight(prevL);\n const width = this.book._getPageWidth(prevL);\n const middle = this.br.twoPage.middle;\n const top = this.top();\n const scaledW = this.br.twoPage.height * width / height; // $$$ assumes height of page is dominant\n\n // The gutter is the dividing line between the left and right pages.\n // It is offset from the middle to create the illusion of thickness to the pages\n const gutter = middle + this.gutterOffsetForIndex(prevL);\n\n const leftCSS = {\n left: `${gutter - scaledW}px`,\n right: '', // clear right property\n top: `${top}px`,\n height: this.br.twoPage.height,\n width: `${scaledW}px`,\n zIndex: 1\n };\n\n this.pageContainers[prevL].$container\n .css(leftCSS)\n .appendTo($twoPageViewEl);\n\n const rightCSS = {\n left: `${gutter}px`,\n right: '',\n top: `${top}px`,\n height: this.br.twoPage.height,\n width: '0',\n zIndex: 2\n };\n\n this.pageContainers[prevR].$container\n .css(rightCSS)\n .appendTo($twoPageViewEl);\n }\n\n /**\n * // $$$ mang we're adding an extra pixel in the middle. See https://bugs.edge.launchpad.net/gnubook/+bug/411667\n */\n prepareFlipRightToLeft(nextL, nextR) {\n this.createPageContainer(nextL, true);\n this.createPageContainer(nextR, true);\n\n const $twoPageViewEl = this.br.refs.$brTwoPageView;\n let height = this.book._getPageHeight(nextR);\n let width = this.book._getPageWidth(nextR);\n const middle = this.br.twoPage.middle;\n const top = this.top();\n let scaledW = this.br.twoPage.height * width / height;\n\n const gutter = middle + this.gutterOffsetForIndex(nextL);\n\n $(this.pageContainers[nextR].$container).css({\n left: `${gutter}px`,\n top: `${top}px`,\n height: this.br.twoPage.height,\n width: `${scaledW}px`,\n zIndex: 1,\n })\n .appendTo($twoPageViewEl);\n\n height = this.book._getPageHeight(nextL);\n width = this.book._getPageWidth(nextL);\n scaledW = this.br.twoPage.height * width / height;\n\n $(this.pageContainers[nextL].$container).css({\n right: `${$twoPageViewEl.prop('clientWidth') - gutter}px`,\n top: `${top}px`,\n height: this.br.twoPage.height,\n width: '0px', // Start at 0 width, then grow to the left\n zIndex: 2,\n })\n .appendTo($twoPageViewEl);\n }\n\n getPageWidth(index) {\n // We return the width based on the dominant height\n const height = this.book._getPageHeight(index);\n const width = this.book._getPageWidth(index);\n // $$$ we assume width is relative to current spread\n return Math.floor(this.br.twoPage.height * width / height);\n }\n\n /**\n * Returns the position of the gutter (line between the page images)\n */\n gutter() {\n return this.br.twoPage.middle + this.gutterOffsetForIndex(this.br.twoPage.currentIndexL);\n }\n\n /**\n * Returns the offset for the top of the page images\n */\n top() {\n return this.br.twoPage.coverExternalPadding + this.br.twoPage.coverInternalPadding; // $$$ + border?\n }\n\n /**\n * Returns the width of the cover div given the total page width\n * @param {number} totalPageWidth\n * @return {number}\n */\n coverWidth(totalPageWidth) {\n return totalPageWidth + this.br.twoPage.edgeWidth + 2 * this.br.twoPage.coverInternalPadding;\n }\n\n /**\n * Returns the percentage offset into twopageview div at the center of container div\n */\n getViewCenter() {\n const { $brContainer, $brTwoPageView } = this.br.refs;\n const center = {};\n\n const containerOffset = $brContainer.offset();\n const viewOffset = $brTwoPageView.offset();\n center.percentageX = (containerOffset.left - viewOffset.left + ($brContainer.prop('clientWidth') >> 1)) / this.br.twoPage.totalWidth;\n center.percentageY = (containerOffset.top - viewOffset.top + ($brContainer.prop('clientHeight') >> 1)) / this.br.twoPage.totalHeight;\n\n return center;\n }\n\n /**\n * Centers the point given by percentage from left,top of twopageview\n * @param {number} [percentageX=0.5]\n * @param {number} [percentageY=0.5]\n */\n centerView(percentageX, percentageY) {\n\n if ('undefined' == typeof(percentageX)) {\n percentageX = 0.5;\n }\n if ('undefined' == typeof(percentageY)) {\n percentageY = 0.5;\n }\n\n const viewWidth = this.br.refs.$brTwoPageView.width();\n const containerClientWidth = this.br.refs.$brContainer.prop('clientWidth');\n const intoViewX = percentageX * viewWidth;\n\n const viewHeight = this.br.refs.$brTwoPageView.height();\n const containerClientHeight = this.br.refs.$brContainer.prop('clientHeight');\n const intoViewY = percentageY * viewHeight;\n\n if (viewWidth < containerClientWidth) {\n // Can fit width without scrollbars - center by adjusting offset\n this.br.refs.$brTwoPageView.css('left', `${(containerClientWidth >> 1) - intoViewX}px`);\n } else {\n // Need to scroll to center\n this.br.refs.$brTwoPageView.css('left', 0);\n this.br.refs.$brContainer.scrollLeft(intoViewX - (containerClientWidth >> 1));\n }\n\n if (viewHeight < containerClientHeight) {\n // Fits with scrollbars - add offset\n this.br.refs.$brTwoPageView.css('top', `${(containerClientHeight >> 1) - intoViewY}px`);\n } else {\n this.br.refs.$brTwoPageView.css('top', 0);\n this.br.refs.$brContainer.scrollTop(intoViewY - (containerClientHeight >> 1));\n }\n }\n\n /**\n * Returns the integer height of the click-to-flip areas at the edges of the book\n * @return {number}\n */\n flipAreaHeight() {\n return Math.floor(this.br.twoPage.height);\n }\n\n /**\n * Returns the the integer width of the flip areas\n * @return {number}\n */\n flipAreaWidth() {\n const max = 100; // $$$ TODO base on view width?\n const min = 10;\n\n const width = this.br.twoPage.width * 0.15;\n return Math.floor(clamp(width, min, max));\n }\n\n /**\n * Returns integer top offset for flip areas\n * @return {number}\n */\n flipAreaTop() {\n return Math.floor(this.br.twoPage.bookCoverDivTop + this.br.twoPage.coverInternalPadding);\n }\n\n /**\n * Left offset for left flip area\n * @return {number}\n */\n leftFlipAreaLeft() {\n return Math.floor(this.br.twoPage.gutter - this.br.twoPage.scaledWL);\n }\n\n /**\n * Left offset for right flip area\n * @return {number}\n */\n rightFlipAreaLeft() {\n return Math.floor(this.br.twoPage.gutter + this.br.twoPage.scaledWR - this.flipAreaWidth());\n }\n\n /**\n * Position calculation shared between search and text-to-speech functions\n */\n setHilightCss(div, index, left, right, top, bottom) {\n // We calculate the reduction factor for the specific page because it can be different\n // for each page in the spread\n const height = this.book._getPageHeight(index);\n const width = this.book._getPageWidth(index);\n const reduce = this.br.twoPage.height / height;\n const scaledW = Math.floor(width * reduce);\n\n const gutter = this.gutter();\n let pageL;\n if ('L' == this.book.getPageSide(index)) {\n pageL = gutter - scaledW;\n } else {\n pageL = gutter;\n }\n const pageT = this.top();\n\n $(div).css({\n width: `${(right - left) * reduce}px`,\n height: `${(bottom - top) * reduce}px`,\n left: `${pageL + left * reduce}px`,\n top: `${pageT + top * reduce}px`\n });\n }\n\n /**\n * Returns the gutter offset for the spread containing the given index.\n * This function supports RTL\n * @param {number} pindex\n * @return {number}\n */\n gutterOffsetForIndex(pindex) {\n // To find the offset of the gutter from the middle we calculate our percentage distance\n // through the book (0..1), remap to (-0.5..0.5) and multiply by the total page edge width\n let offset = Math.floor(((pindex / this.book.getNumLeafs()) - 0.5) * this.br.twoPage.edgeWidth);\n\n // But then again for RTL it's the opposite\n if ('rl' == this.br.pageProgression) {\n offset *= -1;\n }\n\n return offset;\n }\n\n /**\n * Returns the width of the leaf edge div for the page with index given\n * @param {number} pindex\n * @return {number}\n */\n leafEdgeWidth(pindex) {\n // $$$ could there be single pixel rounding errors for L vs R?\n if ((this.book.getPageSide(pindex) == 'L') && (this.br.pageProgression != 'rl')) {\n return Math.floor( (pindex / this.book.getNumLeafs()) * this.br.twoPage.edgeWidth + 0.5);\n } else {\n return Math.floor( (1 - pindex / this.book.getNumLeafs()) * this.br.twoPage.edgeWidth + 0.5);\n }\n }\n\n /**\n * Returns the target jump leaf given a page coordinate (inside the left page edge div)\n * @param {number} pageX\n * @return {PageIndex}\n */\n jumpIndexForLeftEdgePageX(pageX) {\n let jumpIndex;\n if ('rl' != this.br.pageProgression) {\n // LTR - flipping backward\n jumpIndex = this.br.twoPage.currentIndexL - ($(this.leafEdgeL).offset().left + $(this.leafEdgeL).width() - pageX) * 10;\n\n // browser may have resized the div due to font size change -- see https://bugs.launchpad.net/gnubook/+bug/333570\n jumpIndex = clamp(Math.round(jumpIndex), this.br.firstDisplayableIndex(), this.br.twoPage.currentIndexL - 2);\n return jumpIndex;\n\n } else {\n jumpIndex = this.br.twoPage.currentIndexL + ($(this.leafEdgeL).offset().left + $(this.leafEdgeL).width() - pageX) * 10;\n jumpIndex = clamp(Math.round(jumpIndex), this.br.twoPage.currentIndexL + 2, this.br.lastDisplayableIndex());\n return jumpIndex;\n }\n }\n\n /**\n * Returns the target jump leaf given a page coordinate (inside the right page edge div)\n * @param {number} pageX\n * @return {PageIndex}\n */\n jumpIndexForRightEdgePageX(pageX) {\n let jumpIndex;\n if ('rl' != this.br.pageProgression) {\n // LTR\n jumpIndex = this.br.twoPage.currentIndexL + (pageX - $(this.leafEdgeR).offset().left) * 10;\n jumpIndex = clamp(Math.round(jumpIndex), this.br.twoPage.currentIndexL + 2, this.br.lastDisplayableIndex());\n return jumpIndex;\n } else {\n jumpIndex = this.br.twoPage.currentIndexL - (pageX - $(this.leafEdgeR).offset().left) * 10;\n jumpIndex = clamp(Math.round(jumpIndex), this.br.firstDisplayableIndex(), this.br.twoPage.currentIndexL - 2);\n return jumpIndex;\n }\n }\n\n /**\n * Fetches the currently displayed images (if not already fetching)\n * as wells as any nearby pages.\n */\n prefetch() {\n // $$$ We should check here if the current indices have finished\n // loading (with some timeout) before loading more page images\n // See https://bugs.edge.launchpad.net/bookreader/+bug/511391\n const { max, min } = Math;\n const { book } = this;\n const { currentIndexL, currentIndexR } = this.br.twoPage;\n const ADJACENT_PAGES_TO_LOAD = 2;\n // currentIndexL can be -1; getPage returns the last page of the book\n // when given -1, so need to prevent that.\n let lowPage = book.getPage(max(0, min(currentIndexL, currentIndexR)));\n let highPage = book.getPage(max(currentIndexL, currentIndexR));\n\n for (let i = 0; i < ADJACENT_PAGES_TO_LOAD + 2; i++) {\n if (lowPage) {\n this.createPageContainer(lowPage.index);\n lowPage = lowPage.findPrev({ combineConsecutiveUnviewables: true });\n }\n\n if (highPage) {\n this.createPageContainer(highPage.index);\n highPage = highPage.findNext({ combineConsecutiveUnviewables: true });\n }\n }\n }\n\n /* 2up Container Sizes */\n\n /** main positions for inner containers */\n get baseLeafCss() {\n return {\n position: 'absolute',\n right: '',\n top: `${this.top()}px`,\n zIndex: 2,\n };\n }\n\n /** main height for inner containers */\n get heightCss() {\n return {\n height: `${this.br.twoPage.height}px`, // $$$ height forced the same for both pages\n };\n }\n\n /** Left Page sizing */\n get leftLeafCss() {\n return {\n ...this.baseLeafCss,\n ...this.heightCss,\n left: `${this.br.twoPage.gutter - this.br.twoPage.scaledWL}px`,\n width: `${this.br.twoPage.scaledWL}px`,\n }\n }\n\n /** Left side book thickness */\n get leafEdgeLCss() {\n return {\n ...this.heightCss,\n width: `${this.br.twoPage.leafEdgeWidthL}px`,\n left: `${this.br.twoPage.bookCoverDivLeft + this.br.twoPage.coverInternalPadding}px`,\n top: `${this.br.twoPage.bookCoverDivTop + this.br.twoPage.coverInternalPadding}px`,\n border: this.br.twoPage.leafEdgeWidthL === 0 ? 'none' : null\n };\n }\n\n /** Right Page sizing */\n get rightLeafCss() {\n return {\n ...this.baseLeafCss,\n ...this.heightCss,\n left: `${this.br.twoPage.gutter}px`,\n width: `${this.br.twoPage.scaledWR}px`,\n }\n }\n\n /** Right side book thickness */\n get leafEdgeRCss() {\n return {\n ...this.heightCss,\n width: `${this.br.twoPage.leafEdgeWidthR}px`,\n left: `${this.br.twoPage.scaledWL + this.br.twoPage.scaledWR + this.br.twoPage.leafEdgeWidthL}px`,\n top: `${this.br.twoPage.bookCoverDivTop + this.br.twoPage.coverInternalPadding}px`,\n border: this.br.twoPage.leafEdgeWidthR === 0 ? 'none' : null\n };\n }\n\n /** main container sizing */\n get mainContainerCss() {\n return {\n height: `${this.br.twoPage.totalHeight}px`,\n width: `${this.br.twoPage.totalWidth}px`,\n position: 'absolute'\n };\n }\n\n /** book cover sizing */\n get spreadCoverCss() {\n return {\n width: `${this.br.twoPage.bookCoverDivWidth}px`,\n height: `${this.br.twoPage.bookCoverDivHeight}px`,\n visibility: 'visible'\n };\n }\n\n /** book spine sizing */\n get spineCss() {\n return {\n width: `${this.br.twoPage.bookSpineDivWidth}px`,\n height: `${this.br.twoPage.bookSpineDivHeight}px`,\n left: `${this.br.twoPage.gutter - (this.br.twoPage.bookSpineDivWidth / 2)}px`,\n top: `${this.br.twoPage.bookSpineDivTop}px`\n };\n }\n /** end CSS */\n}\n\n/**\n * @implements {BookReaderOptions[\"twoPage\"]}\n * @typedef {object} TwoPageState\n * @property {number} coverInternalPadding\n * @property {number} coverExternalPadding\n *\n * @property {import('./options.js').AutoFitValues} autofit\n * @property {number} width\n * @property {number} height\n * @property {number} currentIndexL\n * @property {number} currentIndexR\n * @property {number} scaledWL\n * @property {number} scaledWR\n * @property {number} gutter\n * @property {Array<{reduce: number, autofit: import('./options.js').AutoFitValues}>} reductionFactors\n * @property {number} totalHeight\n * @property {number} totalWidth\n *\n * @property {HTMLDivElement} coverDiv\n * @property {number} bookCoverDivTop\n * @property {number} bookCoverDivLeft\n * @property {number} bookCoverDivWidth\n * @property {number} bookCoverDivHeight\n *\n * @property {number} leafEdgeWidthL\n * @property {number} leafEdgeWidthR\n *\n * @property {number} bookSpineDivTop\n * @property {number} bookSpineDivLeft\n * @property {number} bookSpineDivWidth\n * @property {number} bookSpineDivHeight\n *\n * @property {number} edgeWidth\n * @property {number} middle\n */\n","// @ts-check\nimport { notInArray, clamp } from './utils.js';\nimport { EVENTS } from './events.js';\n/** @typedef {import('../BookREader.js').default} BookReader */\n/** @typedef {import('./BookModel.js').PageIndex} PageIndex */\n/** @typedef {import('./BookModel.js').BookModel} BookModel */\n\n/** @typedef {JQuery} $lazyLoadImgPlaceholder * jQuery element with data attributes: leaf, reduce */\n\nexport class ModeThumb {\n /**\n * @param {BookReader} br\n * @param {BookModel} bookModel\n */\n constructor(br, bookModel) {\n this.br = br;\n this.book = bookModel;\n }\n\n /**\n * Draws the thumbnail view\n * @param {number} [seekIndex] If seekIndex is defined, the view will be drawn\n * with that page visible (without any animated scrolling).\n *\n * Creates place holder for image to load after gallery has been drawn\n */\n drawLeafs(seekIndex) {\n const { floor } = Math;\n const { book } = this;\n const viewWidth = this.br.refs.$brContainer.prop('scrollWidth') - 20; // width minus buffer\n\n let leafHeight;\n let rightPos = 0;\n let bottomPos = 0;\n let maxRight = 0;\n let currentRow = 0;\n let leafIndex = 0;\n /** @type {Array<{ leafs?: Array<{num: PageIndex, left: number}>, height?: number, top?: number }>} */\n const leafMap = [];\n\n // Will be set to top of requested seek index, if set\n let seekTop;\n\n // Calculate the position of every thumbnail. $$$ cache instead of calculating on every draw\n // make `leafMap`\n for (const page of book.pagesIterator({ combineConsecutiveUnviewables: true })) {\n const leafWidth = this.br.thumbWidth;\n if (rightPos + (leafWidth + this.br.thumbPadding) > viewWidth) {\n currentRow++;\n rightPos = 0;\n leafIndex = 0;\n }\n\n // Init current row in leafMap\n if (!leafMap[currentRow]) {\n leafMap[currentRow] = {};\n }\n if (!leafMap[currentRow].leafs) {\n leafMap[currentRow].leafs = [];\n leafMap[currentRow].height = 0;\n leafMap[currentRow].top = 0;\n }\n leafMap[currentRow].leafs[leafIndex] = {\n num: page.index,\n left: rightPos,\n };\n\n leafHeight = floor((page.height * this.br.thumbWidth) / page.width);\n if (leafHeight > leafMap[currentRow].height) {\n leafMap[currentRow].height = leafHeight;\n }\n if (leafIndex === 0) { bottomPos += this.br.thumbPadding + leafMap[currentRow].height; }\n rightPos += leafWidth + this.br.thumbPadding;\n if (rightPos > maxRight) { maxRight = rightPos; }\n leafIndex++;\n\n if (page.index == seekIndex) {\n seekTop = bottomPos - this.br.thumbPadding - leafMap[currentRow].height;\n }\n }\n\n // reset the bottom position based on thumbnails\n this.br.refs.$brPageViewEl.height(bottomPos);\n\n const pageViewBuffer = floor((this.br.refs.$brContainer.prop('scrollWidth') - maxRight) / 2) - 14;\n\n // If seekTop is defined, seeking was requested and target found\n if (typeof(seekTop) != 'undefined') {\n this.br.refs.$brContainer.scrollTop(seekTop);\n }\n\n const scrollTop = this.br.refs.$brContainer.prop('scrollTop');\n const scrollBottom = scrollTop + this.br.refs.$brContainer.height();\n\n let leafTop = 0;\n let leafBottom = 0;\n const rowsToDisplay = [];\n const imagesToDisplay = [];\n\n // Visible leafs with least/greatest index\n let leastVisible = book.getNumLeafs() - 1;\n let mostVisible = 0;\n\n // Determine the thumbnails in view\n for (let i = 0; i < leafMap.length; i++) {\n if (!leafMap[i]) { continue; }\n leafBottom += this.br.thumbPadding + leafMap[i].height;\n const topInView = (leafTop >= scrollTop) && (leafTop <= scrollBottom);\n const bottomInView = (leafBottom >= scrollTop) && (leafBottom <= scrollBottom);\n const middleInView = (leafTop <= scrollTop) && (leafBottom >= scrollBottom);\n if (topInView || bottomInView || middleInView) {\n rowsToDisplay.push(i);\n if (leafMap[i].leafs[0].num < leastVisible) {\n leastVisible = leafMap[i].leafs[0].num;\n }\n if (leafMap[i].leafs[leafMap[i].leafs.length - 1].num > mostVisible) {\n mostVisible = leafMap[i].leafs[leafMap[i].leafs.length - 1].num;\n }\n }\n if (leafTop > leafMap[i].top) { leafMap[i].top = leafTop; }\n leafTop = leafBottom;\n }\n // at this point, `rowsToDisplay` now has all the rows in view\n\n // create a buffer of preloaded rows before and after the visible rows\n const firstRow = rowsToDisplay[0];\n const lastRow = rowsToDisplay[rowsToDisplay.length - 1];\n for (let i = 1; i < this.br.thumbRowBuffer + 1; i++) {\n if (lastRow + i < leafMap.length) { rowsToDisplay.push(lastRow + i); }\n }\n for (let i = 1; i < this.br.thumbRowBuffer; i++) {\n if (firstRow - i >= 0) { rowsToDisplay.push(firstRow - i); }\n }\n rowsToDisplay.sort();\n\n // Create the thumbnail divs and images (lazy loaded)\n for (const row of rowsToDisplay) {\n if (notInArray(row, this.br.displayedRows)) {\n if (!leafMap[row]) { continue; }\n for (const { num: leaf, left: leafLeft } of leafMap[row].leafs) {\n const leafWidth = this.br.thumbWidth;\n const leafHeight = floor((book.getPageHeight(leaf) * this.br.thumbWidth) / book.getPageWidth(leaf));\n const leafTop = leafMap[row].top;\n let left = leafLeft + pageViewBuffer;\n if ('rl' == this.br.pageProgression) {\n left = viewWidth - leafWidth - left;\n }\n\n left += this.br.thumbPadding;\n imagesToDisplay.push(leaf);\n\n /* get thumbnail's reducer */\n const idealReduce = floor(book.getPageWidth(leaf) / this.br.thumbWidth);\n const nearestFactor2 = 2 * Math.round(idealReduce / 2);\n const thumbReduce = nearestFactor2;\n\n const pageContainer = this.br._createPageContainer(leaf)\n .update({\n dimensions: {\n width: leafWidth,\n height: leafHeight,\n top: leafTop,\n left,\n },\n reduce: thumbReduce,\n });\n\n pageContainer.$container.data('leaf', leaf).on('mouseup', event => {\n // We want to suppress the fragmentChange triggers in `updateFirstIndex` and `switchMode`\n // because otherwise it repeatedly triggers listeners and we get in an infinite loop.\n // We manually trigger the `fragmentChange` once at the end.\n this.br.updateFirstIndex(leaf, { suppressFragmentChange: true });\n // as per request in webdev-4042, we want to switch 1-up mode while clicking on thumbnail leafs\n this.br.switchMode(this.br.constMode1up, { suppressFragmentChange: true });\n\n // shift viewModeOrder after clicking on thumbsnail leaf\n const nextModeID = this.br.viewModeOrder.shift();\n this.br.viewModeOrder.push(nextModeID);\n this.br.updateViewModeButton($('.viewmode'), 'twopg', 'Two-page view');\n\n this.br.trigger(EVENTS.fragmentChange);\n event.stopPropagation();\n });\n\n this.br.refs.$brPageViewEl.append(pageContainer.$container);\n }\n }\n }\n\n // Remove thumbnails that are not to be displayed\n for (const row of this.br.displayedRows) {\n if (notInArray(row, rowsToDisplay)) {\n for (const { num: index } of leafMap[row]?.leafs) {\n if (!imagesToDisplay?.includes(index)) {\n this.br.$(`.pagediv${index}`)?.remove();\n }\n }\n }\n }\n\n // Update which page is considered current to make sure a visible page is the current one\n const currentIndex = this.br.currentIndex();\n if (currentIndex < leastVisible) {\n this.br.updateFirstIndex(leastVisible);\n } else if (currentIndex > mostVisible) {\n this.br.updateFirstIndex(mostVisible);\n }\n\n // remember what rows are displayed\n this.br.displayedRows = rowsToDisplay.slice();\n\n // remove previous highlights\n this.br.$('.BRpagedivthumb_highlight').removeClass('BRpagedivthumb_highlight');\n\n // highlight current page\n this.br.$('.pagediv' + this.br.currentIndex()).addClass('BRpagedivthumb_highlight');\n\n this.br.updateToolbarZoom(this.br.reduce);\n }\n\n /**\n * Replaces placeholder image with real one\n *\n * @param {$lazyLoadImgPlaceholder} imgPlaceholder\n */\n lazyLoadImage(imgPlaceholder) {\n const leaf = $(imgPlaceholder).data('leaf');\n const reduce = $(imgPlaceholder).data('reduce');\n const $img = this.br.imageCache.image(leaf, reduce);\n const $parent = $(imgPlaceholder).parent();\n /* March 16, 2021 (isa) - manually append & remove, `replaceWith` currently loses closure scope */\n $($parent).append($img);\n $(imgPlaceholder).remove();\n }\n\n /**\n * @param {1 | -1} direction\n */\n zoom(direction) {\n const oldColumns = this.br.thumbColumns;\n switch (direction) {\n case -1:\n this.br.thumbColumns += 1;\n break;\n case 1:\n this.br.thumbColumns -= 1;\n break;\n }\n\n this.br.thumbColumns = clamp(this.br.thumbColumns, 2, 8);\n\n if (this.br.thumbColumns != oldColumns) {\n this.br.displayedRows = []; /* force a gallery redraw */\n this.prepare();\n }\n }\n\n /**\n * Returns the width per thumbnail to display the requested number of columns\n * Note: #BRpageview must already exist since its width is used to calculate the\n * thumbnail width\n * @param {number} thumbnailColumns\n */\n getThumbnailWidth(thumbnailColumns) {\n const DEFAULT_THUMBNAIL_WIDTH = 100;\n\n const padding = (thumbnailColumns + 1) * this.br.thumbPadding;\n const width = (this.br.refs.$brPageViewEl.width() - padding) / (thumbnailColumns + 0.5); // extra 0.5 is for some space at sides\n const idealThumbnailWidth = Math.floor(width);\n return idealThumbnailWidth > 0 ? idealThumbnailWidth : DEFAULT_THUMBNAIL_WIDTH;\n }\n\n prepare() {\n this.br.refs.$brContainer.empty();\n this.br.refs.$brContainer.css({\n overflowY: 'scroll',\n overflowX: 'auto'\n });\n\n this.br.refs.$brPageViewEl = $(\"
    \");\n this.br.refs.$brContainer.append(this.br.refs.$brPageViewEl);\n this.br.refs.$brContainer.dragscrollable({preventDefault:true});\n\n this.br.bindGestures(this.br.refs.$brContainer);\n\n // $$$ keep select enabled for now since disabling it breaks keyboard\n // nav in FF 3.6 (https://bugs.edge.launchpad.net/bookreader/+bug/544666)\n // disableSelect(this.br.$('#BRpageview'));\n this.br.thumbWidth = this.getThumbnailWidth(this.br.thumbColumns);\n this.br.reduce = this.book.getPageWidth(0) / this.br.thumbWidth;\n this.br.displayedRows = [];\n // Draw leafs with current index directly in view (no animating to the index)\n this.drawLeafs(this.br.currentIndex());\n this.br.updateBrClasses();\n }\n\n /**\n * @param {PageIndex} index\n */\n jumpToIndex(index) {\n const { floor } = Math;\n const { book } = this;\n const viewWidth = this.br.refs.$brContainer.prop('scrollWidth') - 20; // width minus buffer\n const leafWidth = this.br.thumbWidth;\n let leafTop = 0;\n let rightPos = 0;\n let bottomPos = 0;\n let rowHeight = 0;\n let leafIndex = 0;\n\n for (let i = 0; i <= index; i++) {\n if (rightPos + (leafWidth + this.br.thumbPadding) > viewWidth) {\n rightPos = 0;\n rowHeight = 0;\n leafIndex = 0;\n }\n\n const leafHeight = floor((book.getPageHeight(leafIndex) * this.br.thumbWidth) / book.getPageWidth(leafIndex));\n if (leafHeight > rowHeight) { rowHeight = leafHeight; }\n if (leafIndex == 0) {\n leafTop = bottomPos;\n bottomPos += this.br.thumbPadding + rowHeight;\n }\n rightPos += leafWidth + this.br.thumbPadding;\n leafIndex++;\n }\n this.br.updateFirstIndex(index);\n if (this.br.refs.$brContainer.prop('scrollTop') == leafTop) {\n this.br.drawLeafs();\n } else {\n this.br.animating = true;\n this.br.refs.$brContainer.stop(true)\n .animate({ scrollTop: leafTop }, 'fast', () => { this.br.animating = false });\n }\n }\n}\n","/**\n * @typedef {object} ReduceSet Set of valid numbers for a reduce variable.\n * @property {(n: number) => number} floor\n * @property {(n: number) => number} decr Return the predecessor of the given element\n */\n\n/** @type {ReduceSet} */\nexport const IntegerReduceSet = {\n floor: Math.floor,\n decr(n) { return n - 1; }\n};\n\n/** @type {ReduceSet} */\nexport const Pow2ReduceSet = {\n floor(n) {\n return 2 ** (Math.floor(Math.log2(Math.max(1, n))));\n },\n decr(n) {\n return 2 ** (Math.log2(n) - 1);\n }\n}\n\nexport const NAMED_REDUCE_SETS = {\n pow2: Pow2ReduceSet,\n integer: IntegerReduceSet,\n};\n","// @ts-check\n/**\n * Creates an image cache dictionary\n * storing images in `` tags so that\n * BookReader can leverage browser caching\n */\n/** @typedef {import(\"./BookModel\").BookModel} BookModel */\n/** @typedef {import(\"./BookModel\").PageIndex} PageIndex */\n/** @typedef {import(\"./ReduceSet\").ReduceSet} ReduceSet */\n\nimport { Pow2ReduceSet } from \"./ReduceSet\";\n\nexport class ImageCache {\n /**\n * @param {BookModel} book\n * @param {object} opts\n * @param {boolean} [opts.useSrcSet]\n * @param {ReduceSet} [opts.reduceSet]\n */\n constructor(book, { useSrcSet = false, reduceSet = Pow2ReduceSet } = {}) {\n this.book = book;\n this.useSrcSet = useSrcSet;\n this.reduceSet = reduceSet;\n /** @type {{ [index: number]: { reduce: number, loaded: boolean }[] }} */\n this.cache = {};\n this.defaultScale = 8;\n }\n\n /**\n * Get an image\n * Checks cache first if image is available & of equal/better scale,\n * if not, a new image gets created\n *\n * @param {PageIndex} index\n * @param {Number} reduce\n */\n image(index, reduce) {\n const cachedImages = this.cache[index] || [];\n const sufficientImages = cachedImages\n .filter(x => x.loaded && x.reduce <= reduce);\n if (sufficientImages.length) {\n // Choose the largest reduction factor that meets our needs\n const bestReduce = Math.max(...sufficientImages.map(e => e.reduce));\n return this._serveImageElement(index, bestReduce);\n } else {\n // Don't use a cache entry; i.e. a fresh fetch will be made\n // for this reduce\n return this._serveImageElement(index, reduce);\n }\n }\n\n /**\n * Checks if an image of equal or greater quality has been loaded\n * @param {PageIndex} index\n * @param {Number} reduce\n * @returns {Boolean}\n */\n imageLoaded(index, reduce) {\n const cacheImg = this.cache[index]?.find(e => e.reduce <= reduce);\n return cacheImg?.loaded ?? false;\n }\n\n /**\n * Get the best image that's already loaded for the given index,\n * trying to choose values less that the given reduce\n * @param {PageIndex} index\n * @param idealMaxReduce\n * @returns {null | number}\n */\n getBestLoadedReduce(index, idealMaxReduce = Infinity) {\n const candidates = this.cache[index]?.filter(x => x.loaded) || [];\n if (!candidates.length) return null;\n\n const lowerResImages = candidates.filter(e => e.reduce >= idealMaxReduce);\n if (lowerResImages.length) {\n // Choose the highest quality loaded lower res image\n return Math.min(...lowerResImages.map(e => e.reduce));\n }\n // Otherwise choose whatever is closest to the reduce\n const higherRestImages = candidates.filter(e => e.reduce < idealMaxReduce);\n return Math.max(...higherRestImages.map(e => e.reduce));\n }\n\n /**\n * @private\n * Generates an image element on the fly from image info in cache\n *\n * @param {PageIndex} index\n * @param {number} reduce\n * @returns {JQuery} with base image classes\n */\n _serveImageElement(index, reduce) {\n const validReduce = this.reduceSet.floor(reduce);\n let cacheEntry = this.cache[index]?.find(e => e.reduce == validReduce);\n if (!cacheEntry) {\n cacheEntry = { reduce: validReduce, loaded: false };\n const entries = this.cache[index] || (this.cache[index] = []);\n entries.push(cacheEntry);\n }\n const page = this.book.getPage(index);\n\n const $img = $('', {\n 'class': 'BRpageimage',\n 'alt': 'Book page image',\n src: page.getURI(validReduce, 0),\n })\n .data('reduce', validReduce);\n if (this.useSrcSet) {\n $img.attr('srcset', page.getURISrcSet(validReduce));\n }\n if (!cacheEntry.loaded) {\n $img.one('load', () => cacheEntry.loaded = true);\n }\n return $img;\n }\n}\n","// @ts-check\n/** @typedef {import('./BookModel.js').PageModel} PageModel */\n/** @typedef {import('./ImageCache.js').ImageCache} ImageCache */\n\n\nexport class PageContainer {\n /**\n * @param {PageModel} page\n * @param {object} opts\n * @param {boolean} opts.isProtected Whether we're in a protected book\n * @param {ImageCache} opts.imageCache\n * @param {string} opts.loadingImage\n */\n constructor(page, {isProtected, imageCache, loadingImage}) {\n this.page = page;\n this.imageCache = imageCache;\n this.loadingImage = loadingImage;\n this.$container = $('
    ', {\n 'class': `BRpagecontainer ${page ? `pagediv${page.index}` : 'BRemptypage'}`,\n css: { position: 'absolute' },\n }).attr('data-side', page?.pageSide);\n\n if (isProtected) {\n this.$container.append($('
    '));\n this.$container.addClass('protected');\n }\n\n /** @type {JQuery} The main book page image */\n this.$img = null;\n }\n\n /**\n * @param {object} param0\n * @param {{ width: number, height: number, top: number, left: number }} [param0.dimensions]\n * @param {number} param0.reduce\n */\n update({dimensions = null, reduce = null}) {\n if (dimensions) {\n this.$container.css(dimensions);\n }\n\n if (reduce == null || !this.page) {\n return;\n }\n\n const alreadyLoaded = this.imageCache.imageLoaded(this.page.index, reduce);\n const nextBestLoadedReduce = !alreadyLoaded && this.imageCache.getBestLoadedReduce(this.page.index, reduce);\n\n // Add the actual, highres image\n this.$img?.remove();\n this.$img = this.imageCache\n .image(this.page.index, reduce)\n .prependTo(this.$container);\n\n const backgroundLayers = [];\n if (!alreadyLoaded) {\n this.$container.addClass('BRpageloading');\n backgroundLayers.push(`url(\"${this.loadingImage}\") center/20px no-repeat`);\n }\n if (nextBestLoadedReduce) {\n backgroundLayers.push(`url(\"${this.page.getURI(nextBestLoadedReduce, 0)}\") center/100% no-repeat`);\n }\n\n if (!alreadyLoaded) {\n this.$img\n .css('background', backgroundLayers.join(','))\n .one('loadend', async (ev) => {\n $(ev.target).css({ 'background': '' })\n $(ev.target).parent().removeClass('BRpageloading');\n });\n }\n\n return this;\n }\n}\n","/*\nCopyright(c)2008-2019 Internet Archive. Software license AGPL version 3.\n\nThis file is part of BookReader.\n\n BookReader is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n BookReader is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with BookReader. If not, see .\n\n The BookReader source is hosted at http://github.com/internetarchive/bookreader/\n\n*/\n// effect.js gives acces to extra easing function (e.g. easeInOutExpo)\nimport 'jquery-ui/ui/effect.js';\n\n// Needed by touch-punch\nimport 'jquery-ui/ui/widget.js';\nimport 'jquery-ui/ui/widgets/mouse.js';\nimport 'jquery-ui-touch-punch';\n\nimport './dragscrollable-br.js';\nimport PACKAGE_JSON from '../package.json';\nimport * as utils from './BookReader/utils.js';\nimport { exposeOverrideable } from './BookReader/utils/classes.js';\nimport { Navbar, getNavPageNumHtml } from './BookReader/Navbar/Navbar.js';\nimport { DEFAULT_OPTIONS } from './BookReader/options.js';\n/** @typedef {import('./BookReader/options.js').BookReaderOptions} BookReaderOptions */\n/** @typedef {import('./BookReader/options.js').ReductionFactor} ReductionFactor */\n/** @typedef {import('./BookReader/BookModel.js').PageIndex} PageIndex */\nimport { EVENTS } from './BookReader/events.js';\nimport { DebugConsole } from './BookReader/DebugConsole.js';\nimport {\n Toolbar,\n blankInfoDiv,\n blankShareDiv,\n createPopup,\n} from './BookReader/Toolbar/Toolbar.js';\nimport { BookModel } from './BookReader/BookModel.js';\nimport { Mode1Up } from './BookReader/Mode1Up.js';\nimport { Mode2Up } from './BookReader/Mode2Up.js';\nimport { ModeThumb } from './BookReader/ModeThumb';\nimport { ImageCache } from './BookReader/ImageCache.js';\nimport { PageContainer } from './BookReader/PageContainer.js';\nimport { NAMED_REDUCE_SETS } from './BookReader/ReduceSet';\n\nif (location.toString().indexOf('_debugShowConsole=true') != -1) {\n $(() => new DebugConsole().init());\n}\n\n/**\n * BookReader\n * @param {BookReaderOptions} options\n * TODO document all options properties\n * @constructor\n */\nexport default function BookReader(overrides = {}) {\n const options = jQuery.extend(true, {}, BookReader.defaultOptions, overrides, BookReader.optionOverrides);\n this.setup(options);\n}\n\nBookReader.version = PACKAGE_JSON.version;\n\n// Mode constants\n/** 1 page view */\nBookReader.constMode1up = 1;\n/** 2 pages view */\nBookReader.constMode2up = 2;\n/** thumbnails view */\nBookReader.constModeThumb = 3;\n/** image cache */\nBookReader.imageCache = null;\n\n// Animation constants\nBookReader.constNavAnimationDuration = 300;\nBookReader.constResizeAnimationDuration = 100;\n\n// Names of events that can be triggered via BookReader.prototype.trigger()\nBookReader.eventNames = EVENTS;\n\nBookReader.defaultOptions = DEFAULT_OPTIONS;\n\n/**\n * @type {BookReaderOptions}\n * This is here, just in case you need to absolutely override an option.\n */\nBookReader.optionOverrides = {};\n\n/**\n * Setup\n * It is separate from the constructor, so plugins can extend.\n * @param {BookReaderOptions} options\n */\nBookReader.prototype.setup = function(options) {\n // Store the options used to setup bookreader\n this.options = options;\n\n /** @type {number} @deprecated some past iterations set this */\n this.numLeafs = undefined;\n\n /** Overridden by plugin.search.js */\n this.enableSearch = false;\n\n /**\n * Store viewModeOrder states\n * @var {boolean}\n */\n this.viewModeOrder = [];\n\n /**\n * Used to suppress fragment change for init with canonical URLs\n * @var {boolean}\n */\n this.suppressFragmentChange = false;\n\n /** @type {function(): void} */\n this.animationFinishedCallback = null;\n\n // @deprecated: Instance constants. Use Class constants instead\n /** 1 page view */\n this.constMode1up = BookReader.constMode1up;\n /** 2 pages view */\n this.constMode2up = BookReader.constMode2up;\n /** thumbnails view */\n this.constModeThumb = BookReader.constModeThumb;\n\n // Private properties below. Configuration should be done with options.\n /** @type {number} TODO: Make private */\n this.reduce = 8; /* start very small */\n this.defaults = options.defaults;\n this.padding = options.padding;\n\n this.reduceSet = NAMED_REDUCE_SETS[options.reduceSet];\n if (!this.reduceSet) {\n console.warn(`Invalid reduceSet ${options.reduceSet}. Ignoring.`);\n this.reduceSet = NAMED_REDUCE_SETS[DEFAULT_OPTIONS.reduceSet];\n }\n\n /** @type {number}\n * can be 1 or 2 or 3 based on the display mode const value\n */\n this.mode = null;\n this.prevReadMode = null;\n this.ui = options.ui;\n this.uiAutoHide = options.uiAutoHide;\n\n this.thumbWidth = 100; // will be overridden during prepareThumbnailView\n this.thumbRowBuffer = options.thumbRowBuffer;\n this.thumbColumns = options.thumbColumns;\n this.thumbMaxLoading = options.thumbMaxLoading;\n this.thumbPadding = options.thumbPadding;\n this.displayedRows = [];\n\n this.displayedIndices = [];\n /** @deprecated Unused; will be remove in v5 */\n this.imgs = {};\n /** @deprecated No longer used; will be remove in v5 */\n this.prefetchedImgs = {}; //an object with numeric keys corresponding to page index, reduce\n\n this.animating = false;\n this.flipSpeed = options.flipSpeed;\n this.flipDelay = options.flipDelay;\n this.twoPagePopUp = null;\n this.leafEdgeTmp = null;\n\n /**\n * Represents the first displayed index\n * In 2up mode it will be the left page\n * In 1 up mode it is the highest page\n * @property {number|null} firstIndex\n */\n this.firstIndex = null;\n this.lastDisplayableIndex2up = null;\n this.isFullscreenActive = false;\n this.lastScroll = null;\n\n this.showLogo = options.showLogo;\n this.logoURL = options.logoURL;\n this.imagesBaseURL = options.imagesBaseURL;\n\n this.reductionFactors = options.reductionFactors;\n this.onePage = options.onePage;\n /** @type {import('./BookReader/Mode2Up').TwoPageState} */\n this.twoPage = options.twoPage;\n this.onePageMinBreakpoint = options.onePageMinBreakpoint;\n\n this.bookTitle = options.bookTitle;\n this.bookUrl = options.bookUrl;\n this.bookUrlText = options.bookUrlText;\n this.bookUrlTitle = options.bookUrlTitle;\n this.titleLeaf = options.titleLeaf;\n\n this.metadata = options.metadata;\n this.thumbnail = options.thumbnail;\n this.bookUrlMoreInfo = options.bookUrlMoreInfo;\n\n this.enableExperimentalControls = options.enableExperimentalControls;\n this.el = options.el;\n\n this.pageProgression = options.pageProgression;\n this.protected = options.protected;\n this.getEmbedCode = options.getEmbedCode;\n this.popup = null;\n\n // Assign the data methods\n this.data = options.data;\n if (options.getNumLeafs) BookReader.prototype.getNumLeafs = options.getNumLeafs;\n if (options.getPageWidth) BookReader.prototype.getPageWidth = options.getPageWidth;\n if (options.getPageHeight) BookReader.prototype.getPageHeight = options.getPageHeight;\n if (options.getPageURI) BookReader.prototype.getPageURI = options.getPageURI;\n if (options.getPageSide) BookReader.prototype.getPageSide = options.getPageSide;\n if (options.getPageNum) BookReader.prototype.getPageNum = options.getPageNum;\n if (options.getPageProp) BookReader.prototype.getPageProp = options.getPageProp;\n if (options.getSpreadIndices) BookReader.prototype.getSpreadIndices = options.getSpreadIndices;\n if (options.leafNumToIndex) BookReader.prototype.leafNumToIndex = options.leafNumToIndex;\n\n /** @type {{[name: string]: JQuery}} */\n this.refs = {};\n\n /**\n * @private (for now) Models are largely state storing classes. This might be too much\n * granularity, but time will tell!\n */\n this._models = {\n book: new BookModel(this),\n };\n\n /**\n * @private Components are 'subchunks' of bookreader functionality, usually UI related\n * They should be relatively decoupled from each other/bookreader.\n * Note there are no hooks right now; components just provide methods that bookreader\n * calls at the correct moments.\n **/\n this._components = {\n navbar: new Navbar(this),\n toolbar: new Toolbar(this),\n };\n\n this._modes = {\n mode1Up: new Mode1Up(this, this._models.book),\n mode2Up: new Mode2Up(this, this._models.book),\n modeThumb: new ModeThumb(this, this._models.book),\n };\n\n /** Stores classes which we want to expose (selectively) some methods as overridable */\n this._overrideable = {\n '_models.book': this._models.book,\n '_components.navbar': this._components.navbar,\n '_components.toolbar': this._components.toolbar,\n '_modes.mode1Up': this._modes.mode1Up,\n '_modes.mode2Up': this._modes.mode2Up,\n '_modes.modeThumb': this._modes.modeThumb,\n };\n\n /** Image cache for general image fetching */\n this.imageCache = new ImageCache(this._models.book, {\n useSrcSet: this.options.useSrcSet,\n reduceSet: this.reduceSet,\n });\n};\n\n/** @deprecated unused outside Mode2Up */\nObject.defineProperty(BookReader.prototype, 'leafEdgeL', {\n get() { return this._modes.mode2Up.leafEdgeL; },\n set(newVal) { this._modes.mode2Up.leafEdgeL = newVal; }\n});\n/** @deprecated unused outside Mode2Up */\nObject.defineProperty(BookReader.prototype, 'leafEdgeR', {\n get() { return this._modes.mode2Up.leafEdgeR; },\n set(newVal) { this._modes.mode2Up.leafEdgeR = newVal; }\n});\n\n/**\n * BookReader.util are static library functions\n * At top of file so they can be used below\n */\nBookReader.util = utils;\n\n/**\n * Helper to merge in params in to a params object.\n * It normalizes \"page\" into the \"index\" field to disambiguate and prevent concflicts\n * @private\n */\nBookReader.prototype.extendParams = function(params, newParams) {\n var modifiedNewParams = $.extend({}, newParams);\n if ('undefined' != typeof(modifiedNewParams.page)) {\n var pageIndex = this._models.book.parsePageString(modifiedNewParams.page);\n if (!isNaN(pageIndex))\n modifiedNewParams.index = pageIndex;\n delete modifiedNewParams.page;\n }\n $.extend(params, modifiedNewParams);\n}\n\n/**\n * Parses params from from various initialization contexts (url, cookie, options)\n * @private\n * @return {object} the parsed params\n */\nBookReader.prototype.initParams = function() {\n var params = {};\n // Flag initializing for updateFromParams()\n params.init = true;\n\n // Flag if page given in defaults or URL (not cookie)\n // Used for overriding goToFirstResult in plugin.search.js\n // Note: extendParams() converts params.page to index and gets rid of page\n // so check and set before extendParams()\n params.pageFound = false;\n\n // True if changing the URL\n params.fragmentChange = false;\n\n // This is ordered from lowest to highest priority\n\n // If we have a title leaf, use that as the default instead of index 0,\n // but only use as default if book has a few pages\n if ('undefined' != typeof(this.titleLeaf) && this._models.book.getNumLeafs() > 2) {\n params.index = this._models.book.leafNumToIndex(this.titleLeaf);\n } else {\n params.index = 0;\n }\n\n // this.defaults is a string passed in the url format. eg \"page/1/mode/1up\"\n if (this.defaults) {\n const defaultParams = this.paramsFromFragment(this.defaults);\n if ('undefined' != typeof(defaultParams.page)) {\n params.pageFound = true;\n }\n this.extendParams(params, defaultParams);\n }\n\n // Check for Resume plugin\n if (this.options.enablePageResume) {\n // Check cookies\n const val = this.getResumeValue();\n if (val !== null) {\n // If page index different from default\n if (params.index !== val) {\n // Show in URL\n params.fragmentChange = true;\n }\n params.index = val;\n }\n }\n\n // Check for URL plugin\n if (this.options.enableUrlPlugin) {\n // Params explicitly set in URL take precedence over all other methods\n var urlParams = this.paramsFromFragment(this.urlReadFragment());\n\n // Get params if hash fragment available with 'history' urlMode\n const hasHashURL = !Object.keys(urlParams).length && this.urlReadHashFragment();\n if (hasHashURL && (this.options.urlMode === 'history')) {\n urlParams = this.paramsFromFragment(this.urlReadHashFragment());\n }\n\n // If there were any parameters\n if (Object.keys(urlParams).length) {\n if ('undefined' != typeof(urlParams.page)) {\n params.pageFound = true;\n }\n this.extendParams(params, urlParams);\n // Show in URL\n params.fragmentChange = true;\n }\n }\n\n // Check for Search plugin\n if (this.options.enableSearch) {\n // Go to first result only if no default or URL page\n this.goToFirstResult = !params.pageFound\n\n // If initialSearchTerm not set\n if (!this.options.initialSearchTerm) {\n // Look for any term in URL\n if (params.search) {\n // Old style: /search/[term]\n this.options.initialSearchTerm = params.search;\n this.searchTerm = params.search;\n } else {\n // If we have a query string: q=[term]\n const searchParams = new URLSearchParams(this.readQueryString());\n const searchTerm = searchParams.get('q')\n if (searchTerm) {\n this.options.initialSearchTerm = utils.decodeURIComponentPlus(searchTerm);\n }\n }\n }\n }\n\n // Set for init process, return to false at end of init()\n this.suppressFragmentChange = !params.fragmentChange;\n\n return params;\n}\n\n/**\n * Allow mocking of window.location.search\n */\nBookReader.prototype.getLocationSearch = function () {\n return window.location.search;\n}\n\n/**\n * Allow mocking of window.location.hash\n */\nBookReader.prototype.getLocationHash = function () {\n return window.location.hash;\n}\n\n/**\n * Return URL or fragment querystring\n */\nBookReader.prototype.readQueryString = function() {\n const queryString = this.getLocationSearch();\n if (queryString) {\n return queryString;\n }\n const hash = this.getLocationHash();\n const found = hash.search(/\\?\\w+=/);\n return found > -1 ? hash.slice(found) : '';\n}\n\n/**\n * Determines the initial mode for starting if a mode is not already\n * present in the params argument\n * @param {object} params\n * @return {number} the mode\n */\nBookReader.prototype.getInitialMode = function(params) {\n // Use params or browser width to set view mode\n var windowWidth = $(window).width();\n var nextMode;\n if ('undefined' != typeof(params.mode)) {\n nextMode = params.mode;\n } else if (this.ui == 'full'\n && this.enableMobileNav\n && this.isFullscreenActive\n && windowWidth <= this.onePageMinBreakpoint\n ) {\n // In full mode, we set the default based on width\n nextMode = this.constMode1up;\n } else {\n nextMode = this.constMode2up;\n }\n\n if (!this.canSwitchToMode(nextMode)) {\n nextMode = this.constMode1up;\n }\n return nextMode;\n};\n\n/**\n * This is called by the client to initialize BookReader.\n * It renders onto the DOM. It should only be called once.\n */\nBookReader.prototype.init = function() {\n this.init.initComplete = false;\n this.pageScale = this.reduce; // preserve current reduce\n\n var params = this.initParams();\n\n this.firstIndex = params.index ? params.index : 0;\n\n // Setup Navbars and other UI\n this.isTouchDevice = !!('ontouchstart' in window) || !!('msmaxtouchpoints' in window.navigator);\n\n this.refs.$br = $(this.el)\n .empty()\n .removeClass()\n .addClass(\"ui-\" + this.ui)\n .addClass(\"br-ui-\" + this.ui)\n .addClass('BookReader');\n\n // Add a class if this is a touch enabled device\n if (this.isTouchDevice) {\n this.refs.$br.addClass(\"touch\");\n } else {\n this.refs.$br.addClass(\"no-touch\");\n }\n\n this.refs.$brContainer = $(\"
    \");\n this.refs.$br.append(this.refs.$brContainer);\n\n // Explicitly ensure params.mode exists for updateFromParams() below\n params.mode = this.getInitialMode(params);\n\n // Explicitly ensure this.mode exists for initNavbar() below\n this.mode = params.mode;\n\n if (this.ui == \"embed\" && this.options.showNavbar) {\n this.initEmbedNavbar();\n } else {\n if (this.options.showToolbar) {\n this.initToolbar(this.mode, this.ui); // Build inside of toolbar div\n }\n if (this.options.showNavbar) {\n this.initNavbar();\n }\n }\n\n // Switch navbar controls on mobile/desktop\n this.switchNavbarControls();\n\n this.resizeBRcontainer();\n this.updateFromParams(params);\n this.initUIStrings();\n\n // Bind to events\n\n this.bindNavigationHandlers();\n this.setupKeyListeners();\n\n this.lastScroll = (new Date().getTime());\n this.refs.$brContainer.bind('scroll', this, function(e) {\n // Note, this scroll event fires for both user, and js generated calls\n // It is functioning in some cases as the primary triggerer for rendering\n e.data.lastScroll = (new Date().getTime());\n if (e.data.constMode2up != e.data.mode) {\n e.data.drawLeafsThrottled();\n }\n });\n\n if (this.options.autoResize) {\n $(window).bind('resize', this, function(e) {\n e.data.resize();\n });\n $(window).on(\"orientationchange\", this, function(e) {\n e.data.resize();\n }.bind(this));\n }\n\n if (this.protected) {\n this.$('.BRicon.share').hide();\n }\n\n // If not searching, set to allow on-going fragment changes\n if (!this.options.initialSearchTerm) {\n this.suppressFragmentChange = false;\n }\n\n this.init.initComplete = true;\n this.trigger(BookReader.eventNames.PostInit);\n\n // Must be called after this.init.initComplete set to true to allow\n // BookReader.prototype.resize to run.\n if (this.options.startFullscreen) {\n this.toggleFullscreen();\n }\n}\n\n/**\n * @param {EVENTS} name\n * @param {array | object} [props]\n */\nBookReader.prototype.trigger = function(name, props = this) {\n const eventName = 'BookReader:' + name;\n $(document).trigger(eventName, props);\n\n utils.polyfillCustomEvent(window);\n window.dispatchEvent(new CustomEvent(eventName, {\n bubbles: true,\n composed: true,\n detail: { props },\n }));\n};\n\nBookReader.prototype.bind = function(name, callback) {\n $(document).bind('BookReader:' + name, callback);\n};\n\nBookReader.prototype.unbind = function(name, callback) {\n $(document).unbind('BookReader:' + name, callback);\n};\n\n/**\n * Resizes based on the container width and height\n */\nBookReader.prototype.resize = function() {\n if (!this.init.initComplete) return;\n\n this.resizeBRcontainer();\n\n // Switch navbar controls on mobile/desktop\n this.switchNavbarControls();\n\n if (this.constMode1up == this.mode) {\n if (this.onePage.autofit != 'none') {\n this.resizePageView1up();\n this.centerPageView();\n if (this.enableSearch) this.updateSearchHilites(); //deletes highlights but does not call remove()\n } else {\n this.centerPageView();\n this.displayedIndices = [];\n if (this.enableSearch) this.updateSearchHilites(); //deletes highlights but does not call remove()\n this.drawLeafsThrottled();\n }\n } else if (this.constModeThumb == this.mode) {\n this.prepareThumbnailView();\n } else {\n // We only need to prepare again in autofit (size of spread changes)\n if (this.twoPage.autofit) {\n // most common path, esp. for archive.org books\n this.prepareTwoPageView();\n } else {\n // used when zoomed in\n // Re-center if the scrollbars have disappeared\n var center = this.twoPageGetViewCenter();\n var doRecenter = false;\n if (this.twoPage.totalWidth < this.refs.$brContainer.prop('clientWidth')) {\n center.percentageX = 0.5;\n doRecenter = true;\n }\n if (this.twoPage.totalHeight < this.refs.$brContainer.prop('clientHeight')) {\n center.percentageY = 0.5;\n doRecenter = true;\n }\n if (doRecenter) {\n this.twoPageCenterView(center.percentageX, center.percentageY);\n }\n }\n }\n this.trigger(BookReader.eventNames.resize);\n};\n\n/**\n * Binds keyboard event listeners\n */\nBookReader.prototype.setupKeyListeners = function() {\n var self = this;\n\n var KEY_PGUP = 33;\n var KEY_PGDOWN = 34;\n var KEY_END = 35;\n var KEY_HOME = 36;\n\n var KEY_LEFT = 37;\n var KEY_UP = 38;\n var KEY_RIGHT = 39;\n var KEY_DOWN = 40;\n // The minus(-) and equal(=) keys have different mappings for different browsers\n var KEY_MINUS = 189; // Chrome\n var KEY_MINUS_F = 173; // Firefox\n var KEY_NUMPAD_SUBTRACT = 109;\n var KEY_EQUAL = 187; // Chrome\n var KEY_EQUAL_F = 61; // Firefox\n var KEY_NUMPAD_ADD = 107;\n\n // We use document here instead of window to avoid a bug in jQuery on IE7\n $(document).keydown(function(e) {\n\n // Keyboard navigation\n if (!self.keyboardNavigationIsDisabled(e)) {\n switch (e.keyCode) {\n case KEY_PGUP:\n case KEY_UP:\n // In 1up mode page scrolling is handled by browser\n if (self.constMode2up == self.mode) {\n e.preventDefault();\n self.prev();\n }\n break;\n case KEY_DOWN:\n case KEY_PGDOWN:\n if (self.constMode2up == self.mode) {\n e.preventDefault();\n self.next();\n }\n break;\n case KEY_END:\n e.preventDefault();\n self.last();\n break;\n case KEY_HOME:\n e.preventDefault();\n self.first();\n break;\n case KEY_LEFT:\n if (self.constModeThumb != self.mode) {\n e.preventDefault();\n self.left();\n }\n break;\n case KEY_RIGHT:\n if (self.constModeThumb != self.mode) {\n e.preventDefault();\n self.right();\n }\n break;\n case KEY_MINUS:\n case KEY_MINUS_F:\n case KEY_NUMPAD_SUBTRACT:\n e.preventDefault();\n self.zoom(-1);\n break;\n case KEY_EQUAL:\n case KEY_EQUAL_F:\n case KEY_NUMPAD_ADD:\n e.preventDefault();\n self.zoom(+1);\n break;\n }\n }\n });\n};\n\nBookReader.prototype.drawLeafs = function() {\n if (this.constMode1up == this.mode) {\n this.drawLeafsOnePage();\n } else if (this.constModeThumb == this.mode) {\n this.drawLeafsThumbnail();\n } else {\n this.drawLeafsTwoPage();\n }\n};\n\n/**\n * @protected\n * @param {PageIndex} index\n */\nBookReader.prototype._createPageContainer = function(index) {\n return new PageContainer(this._models.book.getPage(index, false), {\n isProtected: this.protected,\n imageCache: this.imageCache,\n loadingImage: this.imagesBaseURL + 'loading.gif',\n });\n};\n\nBookReader.prototype.bindGestures = function(jElement) {\n // TODO support gesture change is only iOS. Support android.\n // HACK(2017-01-20) - Momentum scrolling is causing the scroll position\n // to jump after zooming in on mobile device. I am able to reproduce\n // when you move the book with one finger and then add another\n // finger to pinch. Gestures are aware of scroll state.\n\n var self = this;\n var numTouches = 1;\n\n jElement.unbind('touchmove').bind('touchmove', function(e) {\n if (e.originalEvent.cancelable) numTouches = e.originalEvent.touches.length;\n e.stopPropagation();\n });\n\n jElement.unbind('gesturechange').bind('gesturechange', function(e) {\n e.preventDefault();\n // These are two very important fixes to adjust for the scroll position\n // issues described below\n if (!(numTouches !== 2 || (new Date().getTime()) - self.lastScroll < 500)) {\n if (e.originalEvent.scale > 1.5) {\n self.zoom(1);\n } else if (e.originalEvent.scale < 0.6) {\n self.zoom(-1);\n }\n }\n });\n};\n\n/** @deprecated Not used outside ModeThumb */\nBookReader.prototype.drawLeafsThumbnail = ModeThumb.prototype.drawLeafs;\nexposeOverrideableMethod(ModeThumb, '_modes.modeThumb', 'drawLeafs', 'drawLeafsThumbnail');\n/** @deprecated Not used outside ModeThumb */\nBookReader.prototype.lazyLoadThumbnails = ModeThumb.prototype.lazyLoadThumbnails;\nexposeOverrideableMethod(ModeThumb, '_modes.modeThumb', 'lazyLoadThumbnails', 'lazyLoadThumbnails');\nBookReader.prototype.lazyLoadImage = ModeThumb.prototype.lazyLoadImage;\nexposeOverrideableMethod(ModeThumb, '_modes.modeThumb', 'lazyLoadImage', 'lazyLoadImage');\n/** @deprecated Internal use only */\nBookReader.prototype.zoomThumb = ModeThumb.prototype.zoom;\nexposeOverrideableMethod(ModeThumb, '_modes.modeThumb', 'zoom', 'zoomThumb');\n/** @deprecated Not used outside ModeThumb */\nBookReader.prototype.getThumbnailWidth = ModeThumb.prototype.getThumbnailWidth;\nexposeOverrideableMethod(ModeThumb, '_modes.modeThumb', 'getThumbnailWidth', 'getThumbnailWidth');\n/** @deprecated Not used outside ModeThumb */\nBookReader.prototype.prepareThumbnailView = ModeThumb.prototype.prepare;\nexposeOverrideableMethod(ModeThumb, '_modes.modeThumb', 'prepare', 'prepareThumbnailView');\n\n/**\n * A throttled version of drawLeafs\n */\nBookReader.prototype.drawLeafsThrottled = utils.throttle(\n BookReader.prototype.drawLeafs,\n 250 // 250 ms gives quick feedback, but doesn't eat cpu\n);\n\n/**\n * @param {number} direction Pass 1 to zoom in, anything else to zoom out\n */\nBookReader.prototype.zoom = function(direction) {\n switch (this.mode) {\n case this.constMode1up:\n if (direction == 1) {\n // XXX other cases\n this.zoom1up('in');\n } else {\n this.zoom1up('out');\n }\n break\n case this.constMode2up:\n if (direction == 1) {\n // XXX other cases\n this.zoom2up('in');\n } else {\n this.zoom2up('out');\n }\n break\n case this.constModeThumb:\n // XXX update zoomThumb for named directions\n this.zoomThumb(direction);\n break\n }\n\n this.textSelectionPlugin?.stopPageFlip(this.refs.$brContainer);\n return;\n};\n\n/**\n * Resizes the inner container to fit within the visible space to prevent\n * the top toolbar and bottom navbar from clipping the visible book\n *\n * @param { boolean } animate - optional\n * When used, BookReader will fill the main container with the book's content.\n * This is primarily for 1up view - a follow up animation to the nav animation\n * So resize isn't perceived sharp/jerky\n */\nBookReader.prototype.resizeBRcontainer = function(animate) {\n if (animate) {\n this.refs.$brContainer.animate({\n top: this.getToolBarHeight(),\n bottom: this.getFooterHeight()\n }, this.constResizeAnimationDuration, 'linear');\n } else {\n this.refs.$brContainer.css({\n top: this.getToolBarHeight(),\n bottom: this.getFooterHeight()\n });\n }\n}\n\nBookReader.prototype.centerPageView = function() {\n var scrollWidth = this.refs.$brContainer.prop('scrollWidth');\n var clientWidth = this.refs.$brContainer.prop('clientWidth');\n if (scrollWidth > clientWidth) {\n this.refs.$brContainer.prop('scrollLeft', (scrollWidth - clientWidth) / 2);\n }\n};\n\n/**\n * Quantizes the given reduction factor to closest power of two from set from 12.5% to 200%\n * @param {number} reduce\n * @param {ReductionFactor[]} reductionFactors\n * @return {number}\n */\nBookReader.prototype.quantizeReduce = function(reduce, reductionFactors) {\n let quantized = reductionFactors[0].reduce;\n let distance = Math.abs(reduce - quantized);\n\n for (let i = 1; i < reductionFactors.length; i++) {\n const newDistance = Math.abs(reduce - reductionFactors[i].reduce);\n if (newDistance < distance) {\n distance = newDistance;\n quantized = reductionFactors[i].reduce;\n }\n }\n return quantized;\n};\n\n/**\n * @param {number} currentReduce\n * @param {'in' | 'out' | 'auto' | 'height' | 'width'} direction\n * @param {ReductionFactor[]} reductionFactors Must be sorted\n * @returns {ReductionFactor}\n */\nBookReader.prototype.nextReduce = function(currentReduce, direction, reductionFactors) {\n // XXX add 'closest', to replace quantize function\n\n if (direction === 'in') {\n let newReduceIndex = 0;\n for (let i = 1; i < reductionFactors.length; i++) {\n if (reductionFactors[i].reduce < currentReduce) {\n newReduceIndex = i;\n }\n }\n return reductionFactors[newReduceIndex];\n } else if (direction === 'out') {\n const lastIndex = reductionFactors.length - 1;\n let newReduceIndex = lastIndex;\n\n for (let i = lastIndex; i >= 0; i--) {\n if (reductionFactors[i].reduce > currentReduce) {\n newReduceIndex = i;\n }\n }\n return reductionFactors[newReduceIndex];\n } else if (direction === 'auto') {\n // If an 'auto' is specified, use that\n const autoMatch = reductionFactors.find(rf => rf.autofit == 'auto');\n if (autoMatch) return autoMatch;\n\n // Otherwise, choose the least reduction from height/width\n const candidates = reductionFactors.filter(({autofit}) => autofit == 'height' || autofit == 'width');\n let choice = null;\n for (let i = 0; i < candidates.length; i++) {\n if (choice === null || choice.reduce < candidates[i].reduce) {\n choice = candidates[i];\n }\n }\n if (choice) return choice;\n } else if (direction === 'height' || direction === 'width') {\n // Asked for specific autofit mode\n const match = reductionFactors.find(rf => rf.autofit == direction);\n if (match) return match;\n }\n\n return reductionFactors[0];\n};\n\n/**\n * @param {ReductionFactor} a\n * @param {ReductionFactor} b\n */\nBookReader.prototype._reduceSort = (a, b) => a.reduce - b.reduce;\n\n/**\n * Attempts to jump to page\n * @param {string}\n * @return {boolean} Returns true if page could be found, false otherwise.\n */\nBookReader.prototype.jumpToPage = function(pageNum) {\n var pageIndex = this._models.book.parsePageString(pageNum);\n\n if ('undefined' != typeof(pageIndex)) {\n this.jumpToIndex(pageIndex);\n return true;\n }\n\n // Page not found\n return false;\n};\n\n/**\n * Check whether the specified index is currently displayed\n * @param {PageIndex} index\n */\nBookReader.prototype._isIndexDisplayed = function(index) {\n // One up \"caches\" pages +- current, so exclude those in the test.\n return this.constMode1up == this.mode ? this.displayedIndices.slice(1, -1).includes(index) :\n this.displayedIndices ? this.displayedIndices.includes(index) :\n this.currentIndex() == index;\n}\n\n/**\n * Changes the current page\n * @param {PageIndex} index\n * @param {number} [pageX]\n * @param {number} [pageY]\n * @param {boolean} [noAnimate]\n */\nBookReader.prototype.jumpToIndex = function(index, pageX, pageY, noAnimate) {\n // Don't jump into specific unviewable page\n const page = this._models.book.getPage(index);\n if (!page.isViewable && page.unviewablesStart != page.index) {\n // If already in unviewable range, jump to end of that range\n const alreadyInPreview = this._isIndexDisplayed(page.unviewablesStart);\n const newIndex = alreadyInPreview ? page.findNext({ combineConsecutiveUnviewables: true }).index : page.unviewablesStart;\n return this.jumpToIndex(newIndex, pageX, pageY, noAnimate);\n }\n\n this.trigger(BookReader.eventNames.stop);\n\n if (this.constMode2up == this.mode) {\n this._modes.mode2Up.jumpToIndex(index);\n } else if (this.constModeThumb == this.mode) {\n this._modes.modeThumb.jumpToIndex(index);\n } else { // 1up\n this._modes.mode1Up.jumpToIndex(index, pageX, pageY, noAnimate);\n }\n};\n\n/**\n * Return mode or 1up if initial thumb\n * @param {number}\n * @see BookReader.prototype.drawLeafsThumbnail\n */\nBookReader.prototype.getPrevReadMode = function(mode) {\n if (mode === BookReader.constMode1up || mode === BookReader.constMode2up) {\n return mode;\n } else if (this.prevReadMode === null) {\n // Initial thumb, return 1up\n return BookReader.constMode1up;\n }\n}\n\n/**\n * Switches the mode (eg 1up 2up thumb)\n * @param {number}\n * @param {object} [options]\n * @param {boolean} [options.suppressFragmentChange = false]\n * @param {boolean} [options.onInit = false] - this\n */\nBookReader.prototype.switchMode = function(\n mode,\n {\n suppressFragmentChange = false,\n init = false,\n pageFound = false\n } = {}\n) {\n // Skip checks before init() complete\n if (this.init.initComplete) {\n if (mode === this.mode) {\n return;\n }\n if (!this.canSwitchToMode(mode)) {\n return;\n }\n }\n\n this.trigger(BookReader.eventNames.stop);\n if (this.enableSearch) this.removeSearchHilites();\n\n this.prevReadMode = this.getPrevReadMode(this.mode);\n\n this.mode = mode;\n\n // reinstate scale if moving from thumbnail view\n if (this.pageScale !== this.reduce) {\n this.reduce = this.pageScale;\n }\n\n // $$$ TODO preserve center of view when switching between mode\n // See https://bugs.edge.launchpad.net/gnubook/+bug/416682\n\n // XXX maybe better to preserve zoom in each mode\n if (this.constMode1up == mode) {\n this.onePageCalculateReductionFactors();\n this.reduce = this.quantizeReduce(this.reduce, this.onePage.reductionFactors);\n this.prepareOnePageView();\n } else if (this.constModeThumb == mode) {\n this.reduce = this.quantizeReduce(this.reduce, this.reductionFactors);\n this.prepareThumbnailView();\n } else {\n // $$$ why don't we save autofit?\n // this.twoPage.autofit = null; // Take zoom level from other mode\n // spread indices not set, so let's set them\n if (init || !pageFound) {\n this.setSpreadIndices();\n }\n\n this.twoPageCalculateReductionFactors(); // this sets this.twoPage && this.reduce\n this.prepareTwoPageView();\n this.twoPageCenterView(0.5, 0.5); // $$$ TODO preserve center\n }\n\n if (!(this.suppressFragmentChange || suppressFragmentChange)) {\n this.trigger(BookReader.eventNames.fragmentChange);\n }\n var eventName = mode + 'PageViewSelected';\n this.trigger(BookReader.eventNames[eventName]);\n\n this.textSelectionPlugin?.stopPageFlip(this.refs.$brContainer);\n};\n\nBookReader.prototype.updateBrClasses = function() {\n var modeToClass = {};\n modeToClass[this.constMode1up] = 'BRmode1up';\n modeToClass[this.constMode2up] = 'BRmode2Up';\n modeToClass[this.constModeThumb] = 'BRmodeThumb';\n\n this.refs.$br\n .removeClass('BRmode1up BRmode2Up BRmodeThumb')\n .addClass(modeToClass[this.mode]);\n\n if (this.isFullscreen()) {\n this.refs.$br.addClass('fullscreenActive');\n $(document.body).addClass('BRfullscreenActive');\n } else {\n this.refs.$br.removeClass('fullscreenActive');\n $(document.body).removeClass('BRfullscreenActive');\n }\n};\n\nBookReader.prototype.isFullscreen = function() {\n return this.isFullscreenActive;\n};\n\n/**\n * Toggles fullscreen\n * @param { boolean } bindKeyboardControls\n */\nBookReader.prototype.toggleFullscreen = function(bindKeyboardControls = true) {\n if (this.isFullscreen()) {\n this.exitFullScreen();\n } else {\n this.enterFullscreen(bindKeyboardControls);\n }\n};\n\n/**\n * Enters fullscreen\n * including:\n * - animation\n * - binds keyboard controls\n * - fires custom event\n * @param { boolean } bindKeyboardControls\n */\nBookReader.prototype.enterFullscreen = function(bindKeyboardControls = true) {\n const currentIndex = this.currentIndex();\n this.refs.$brContainer.css('opacity', 0);\n\n if (bindKeyboardControls) {\n this._fullscreenCloseHandler = (e) => {\n if (e.keyCode === 27) this.toggleFullscreen();\n };\n $(document).keyup(this._fullscreenCloseHandler);\n }\n\n const windowWidth = $(window).width();\n if (windowWidth <= this.onePageMinBreakpoint) {\n this.switchMode(this.constMode1up);\n }\n\n this.isFullscreenActive = true;\n this.animating = true;\n this.refs.$brContainer.animate({opacity: 1}, 'fast', 'linear',() => {\n this.resize();\n this.jumpToIndex(currentIndex);\n this.animating = false;\n });\n\n this.textSelectionPlugin?.stopPageFlip(this.refs.$brContainer);\n this.trigger(BookReader.eventNames.fullscreenToggled);\n};\n\n/**\n * Exits fullscreen\n * - toggles fullscreen\n * - binds keyboard controls\n * - fires custom event\n * @param { boolean } bindKeyboardControls\n */\nBookReader.prototype.exitFullScreen = function() {\n this.refs.$brContainer.css('opacity', 0);\n\n $(document).unbind('keyup', this._fullscreenCloseHandler);\n\n var windowWidth = $(window).width();\n\n const canShow2up = this.options.controls.twoPage.visible;\n if (canShow2up && (windowWidth <= this.onePageMinBreakpoint)) {\n this.switchMode(this.constMode2up);\n }\n\n this.isFullscreenActive = false;\n this.updateBrClasses();\n this.animating = true;\n this.refs.$brContainer.animate({opacity: 1}, 'fast', 'linear', () => {\n this.resize();\n this.animating = false;\n });\n this.textSelectionPlugin?.stopPageFlip(this.refs.$brContainer);\n this.trigger(BookReader.eventNames.fullscreenToggled);\n};\n\n/**\n * Returns the currently active index\n * @return {number}\n * @throws\n */\nBookReader.prototype.currentIndex = function() {\n // $$$ we should be cleaner with our idea of which index is active in 1up/2up\n if (this.mode == this.constMode1up || this.mode == this.constModeThumb) {\n return this.firstIndex; // $$$ TODO page in center of view would be better\n } else if (this.mode == this.constMode2up) {\n // Only allow indices that are actually present in book\n return utils.clamp(this.firstIndex, 0, this._models.book.getNumLeafs() - 1);\n } else {\n throw 'currentIndex called for unimplemented mode ' + this.mode;\n }\n};\n\n/**\n * Setter for this.firstIndex\n * Also triggers an event and updates the navbar slider position\n * @param {number} index\n * @param {object} [options]\n * @param {boolean} [options.suppressFragmentChange = false]\n */\nBookReader.prototype.updateFirstIndex = function(\n index,\n { suppressFragmentChange = false } = {}\n) {\n // Called multiple times when defaults contains \"mode/1up\",\n // including after init(). Skip fragment change if no index change\n if (this.firstIndex === index) {\n suppressFragmentChange = true;\n }\n this.firstIndex = index;\n if (!(this.suppressFragmentChange || suppressFragmentChange)) {\n this.trigger(BookReader.eventNames.fragmentChange);\n }\n // If there's an initial search we stop suppressing global URL changes\n // when local suppression ends\n // This seems to correctly handle multiple calls during mode/1up\n if (this.options.initialSearchTerm && !suppressFragmentChange) {\n this.suppressFragmentChange = false;\n }\n this.trigger('pageChanged');\n this.updateNavIndexThrottled(index);\n};\n\n/**\n * Flip the right page over onto the left\n */\nBookReader.prototype.right = function() {\n if ('rl' != this.pageProgression) {\n this.next();\n } else {\n this.prev();\n }\n};\n\n/**\n * Flip to the rightmost page\n */\nBookReader.prototype.rightmost = function() {\n if ('rl' != this.pageProgression) {\n this.last();\n } else {\n this.first();\n }\n};\n\n/**\n * Flip the left page over onto the right\n */\nBookReader.prototype.left = function() {\n if ('rl' != this.pageProgression) {\n this.prev();\n } else {\n this.next();\n }\n};\n\n/**\n * Flip to the leftmost page\n */\nBookReader.prototype.leftmost = function() {\n if ('rl' != this.pageProgression) {\n this.first();\n } else {\n this.last();\n }\n};\n\nBookReader.prototype.next = function() {\n if (this.constMode2up == this.mode) {\n this.trigger(BookReader.eventNames.stop);\n this.flipFwdToIndex(null);\n } else {\n if (this.firstIndex < this.lastDisplayableIndex()) {\n this.jumpToIndex(this.firstIndex + 1);\n }\n }\n};\n\nBookReader.prototype.prev = function() {\n const isOnFrontPage = this.firstIndex < 1;\n if (isOnFrontPage) return;\n\n if (this.constMode2up == this.mode) {\n this.trigger(BookReader.eventNames.stop);\n this.flipBackToIndex(null);\n } else {\n if (this.firstIndex >= 1) {\n this.jumpToIndex(this.firstIndex - 1);\n }\n }\n};\n\nBookReader.prototype.first = function() {\n this.jumpToIndex(this.firstDisplayableIndex());\n};\n\nBookReader.prototype.last = function() {\n this.jumpToIndex(this.lastDisplayableIndex());\n};\n\n/**\n * Scrolls down one screen view\n */\nBookReader.prototype.scrollDown = function() {\n if ($.inArray(this.mode, [this.constMode1up, this.constModeThumb]) >= 0) {\n if ( this.mode == this.constMode1up && (this.reduce >= this.onePageGetAutofitHeight()) ) {\n // Whole pages are visible, scroll whole page only\n return this.next();\n }\n\n this.refs.$brContainer.stop(true).animate(\n { scrollTop: '+=' + this._scrollAmount() + 'px'},\n 400, 'easeInOutExpo'\n );\n return true;\n } else {\n return false;\n }\n};\n\n/**\n * Scrolls up one screen view\n */\nBookReader.prototype.scrollUp = function() {\n if ($.inArray(this.mode, [this.constMode1up, this.constModeThumb]) >= 0) {\n if ( this.mode == this.constMode1up && (this.reduce >= this.onePageGetAutofitHeight()) ) {\n // Whole pages are visible, scroll whole page only\n return this.prev();\n }\n\n this.refs.$brContainer.stop(true).animate(\n { scrollTop: '-=' + this._scrollAmount() + 'px'},\n 400, 'easeInOutExpo'\n );\n return true;\n } else {\n return false;\n }\n};\n\n/**\n * The amount to scroll vertically in integer pixels\n */\nBookReader.prototype._scrollAmount = function() {\n if (this.constMode1up == this.mode) {\n // Overlap by % of page size\n return parseInt(this.refs.$brContainer.prop('clientHeight') - this._models.book.getPageHeight(this.currentIndex()) / this.reduce * 0.03);\n }\n\n return parseInt(0.9 * this.refs.$brContainer.prop('clientHeight'));\n};\n\n/**\n * @deprecated No longer used; will be remove in v5\n */\nBookReader.prototype.prefetchImg = async function(index, fetchNow = false) {\n console.warn('Call to deprecated function: BookReader.prefetchImg. No-op.');\n};\n\n/**\n * @deprecated No longer used; will be remove in v5\n */\nBookReader.prototype.pruneUnusedImgs = function() {\n console.warn('Call to deprecated function: BookReader.pruneUnused. No-op.');\n};\n\n/************************/\n/** Mode1Up extensions **/\n/************************/\n/** @deprecated not used outside BookReader */\nBookReader.prototype.prepareOnePageView = Mode1Up.prototype.prepare;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'prepare', 'prepareOnePageView');\n/** @deprecated not used outside BookReader */\nBookReader.prototype.drawLeafsOnePage = Mode1Up.prototype.drawLeafs;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'drawLeafs', 'drawLeafsOnePage');\n/** @deprecated not used outside BookReader */\nBookReader.prototype.zoom1up = Mode1Up.prototype.zoom;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'zoom', 'zoom1up');\n/** @deprecated not used outside Mode1Up */\nBookReader.prototype.onePageGetAutofitWidth = Mode1Up.prototype.getAutofitWidth;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'getAutofitWidth', 'onePageGetAutofitWidth');\n/** @deprecated not used outside Mode1Up, BookReader */\nBookReader.prototype.onePageGetAutofitHeight = Mode1Up.prototype.getAutofitHeight;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'getAutofitHeight', 'onePageGetAutofitHeight');\n/** @deprecated not used outside Mode1Up, BookReader */\nBookReader.prototype.onePageGetPageTop = Mode1Up.prototype.getPageTop;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'getPageTop', 'onePageGetPageTop');\n/** @deprecated not used outside Mode1Up, BookReader */\nBookReader.prototype.onePageCalculateReductionFactors = Mode1Up.prototype.calculateReductionFactors;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'calculateReductionFactors', 'onePageCalculateReductionFactors');\n/** @deprecated not used outside Mode1Up, BookReader */\nBookReader.prototype.resizePageView1up = Mode1Up.prototype.resizePageView;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'resizePageView', 'resizePageView1up');\n/** @deprecated not used outside Mode1Up */\nBookReader.prototype.onePageCalculateViewDimensions = Mode1Up.prototype.calculateViewDimensions;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'calculateViewDimensions', 'onePageCalculateViewDimensions');\n/** @deprecated not used outside Mode1Up */\nBookReader.prototype.centerX1up = Mode1Up.prototype.centerX;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'centerX', 'centerX1up');\n/** @deprecated not used outside Mode1Up */\nBookReader.prototype.centerY1up = Mode1Up.prototype.centerY;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'centerY', 'centerY1up');\n\n/************************/\n/** Mode2Up extensions **/\n/************************/\n/** @deprecated not used outside Mode2Up */\nBookReader.prototype.zoom2up = Mode2Up.prototype.zoom;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'zoom', 'zoom2up');\nBookReader.prototype.twoPageGetAutofitReduce = Mode2Up.prototype.getAutofitReduce;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'getAutofitReduce', 'twoPageGetAutofitReduce');\nBookReader.prototype.flipBackToIndex = Mode2Up.prototype.flipBackToIndex;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'flipBackToIndex', 'flipBackToIndex');\nBookReader.prototype.flipFwdToIndex = Mode2Up.prototype.flipFwdToIndex;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'flipFwdToIndex', 'flipFwdToIndex');\nBookReader.prototype.setHilightCss2UP = Mode2Up.prototype.setHilightCss;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'setHilightCss', 'setHilightCss2UP');\n/** @deprecated not used outside Mode2Up */\nBookReader.prototype.setClickHandler2UP = Mode2Up.prototype.setClickHandler;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'setClickHandler', 'setClickHandler2UP');\n/** @deprecated not used outside Mode2Up */\nBookReader.prototype.drawLeafsTwoPage = Mode2Up.prototype.drawLeafs;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'drawLeafs', 'drawLeafsTwoPage');\n/** @deprecated not used outside BookReader */\nBookReader.prototype.prepareTwoPageView = Mode2Up.prototype.prepareTwoPageView;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'prepareTwoPageView', 'prepareTwoPageView');\n/** @deprecated not used outside Mode2Up */\nBookReader.prototype.prepareTwoPagePopUp = Mode2Up.prototype.preparePopUp;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'preparePopUp', 'prepareTwoPagePopUp');\n/** @deprecated not used outside BookReader, Mode2Up */\nBookReader.prototype.calculateSpreadSize = Mode2Up.prototype.calculateSpreadSize;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'calculateSpreadSize', 'calculateSpreadSize');\n/** @deprecated not used outside BookReader, Mode2Up */\nBookReader.prototype.getIdealSpreadSize = Mode2Up.prototype.getIdealSpreadSize;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'getIdealSpreadSize', 'getIdealSpreadSize');\n/** @deprecated not used outside BookReader, Mode2Up */\nBookReader.prototype.getSpreadSizeFromReduce = Mode2Up.prototype.getSpreadSizeFromReduce;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'getSpreadSizeFromReduce', 'getSpreadSizeFromReduce');\n/** @deprecated unused */\nBookReader.prototype.twoPageIsZoomedIn = Mode2Up.prototype.isZoomedIn;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'isZoomedIn', 'twoPageIsZoomedIn');\n/** @deprecated not used outside BookReader */\nBookReader.prototype.twoPageCalculateReductionFactors = Mode2Up.prototype.calculateReductionFactors;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'calculateReductionFactors', 'twoPageCalculateReductionFactors');\n/** @deprecated unused */\nBookReader.prototype.twoPageSetCursor = Mode2Up.prototype.setCursor;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'setCursor', 'twoPageSetCursor');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.flipLeftToRight = Mode2Up.prototype.flipLeftToRight;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'flipLeftToRight', 'flipLeftToRight');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.flipRightToLeft = Mode2Up.prototype.flipRightToLeft;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'flipRightToLeft', 'flipRightToLeft');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.setMouseHandlers2UP = Mode2Up.prototype.setMouseHandlers;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'setMouseHandlers', 'setMouseHandlers2UP');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.prepareFlipLeftToRight = Mode2Up.prototype.prepareFlipLeftToRight;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'prepareFlipLeftToRight', 'prepareFlipLeftToRight');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.prepareFlipRightToLeft = Mode2Up.prototype.prepareFlipRightToLeft;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'prepareFlipRightToLeft', 'prepareFlipRightToLeft');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.getPageWidth2UP = Mode2Up.prototype.getPageWidth;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'getPageWidth', 'getPageWidth2UP');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.twoPageGutter = Mode2Up.prototype.gutter;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'gutter', 'twoPageGutter');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.twoPageTop = Mode2Up.prototype.top;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'top', 'twoPageTop');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.twoPageCoverWidth = Mode2Up.prototype.coverWidth;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'coverWidth', 'twoPageCoverWidth');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.twoPageGetViewCenter = Mode2Up.prototype.getViewCenter;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'getViewCenter', 'twoPageGetViewCenter');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.twoPageCenterView = Mode2Up.prototype.centerView;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'centerView', 'twoPageCenterView');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.twoPageFlipAreaHeight = Mode2Up.prototype.flipAreaHeight;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'flipAreaHeight', 'twoPageFlipAreaHeight');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.twoPageFlipAreaWidth = Mode2Up.prototype.flipAreaWidth;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'flipAreaWidth', 'twoPageFlipAreaWidth');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.twoPageFlipAreaTop = Mode2Up.prototype.flipAreaTop;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'flipAreaTop', 'twoPageFlipAreaTop');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.twoPageLeftFlipAreaLeft = Mode2Up.prototype.leftFlipAreaLeft;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'leftFlipAreaLeft', 'twoPageLeftFlipAreaLeft');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.twoPageRightFlipAreaLeft = Mode2Up.prototype.rightFlipAreaLeft;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'rightFlipAreaLeft', 'twoPageRightFlipAreaLeft');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.gutterOffsetForIndex = Mode2Up.prototype.gutterOffsetForIndex;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'gutterOffsetForIndex', 'gutterOffsetForIndex');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.leafEdgeWidth = Mode2Up.prototype.leafEdgeWidth;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'leafEdgeWidth', 'leafEdgeWidth');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.jumpIndexForLeftEdgePageX = Mode2Up.prototype.jumpIndexForLeftEdgePageX;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'jumpIndexForLeftEdgePageX', 'jumpIndexForLeftEdgePageX');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.jumpIndexForRightEdgePageX = Mode2Up.prototype.jumpIndexForRightEdgePageX;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'jumpIndexForRightEdgePageX', 'jumpIndexForRightEdgePageX');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.prefetch = Mode2Up.prototype.prefetch;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'prefetch', 'prefetch');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.setSpreadIndices = Mode2Up.prototype.setSpreadIndices;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'setSpreadIndices', 'setSpreadIndices');\n/**\n * Immediately stop flip animations. Callbacks are triggered.\n */\nBookReader.prototype.stopFlipAnimations = function() {\n this.trigger(BookReader.eventNames.stop);\n\n // Stop animation, clear queue, trigger callbacks\n if (this.leafEdgeTmp) {\n $(this.leafEdgeTmp).stop(false, true);\n }\n jQuery.each(this._modes.mode2Up.pageContainers, function() {\n $(this.$container).stop(false, true);\n });\n\n // And again since animations also queued in callbacks\n if (this.leafEdgeTmp) {\n $(this.leafEdgeTmp).stop(false, true);\n }\n jQuery.each(this._modes.mode2Up.pageContainers, function() {\n $(this.$container).stop(false, true);\n });\n};\n\n/**\n * Returns true if keyboard navigation should be disabled for the event\n * @param {Event}\n * @return {boolean}\n */\nBookReader.prototype.keyboardNavigationIsDisabled = function(event) {\n return event.target.tagName == \"INPUT\";\n};\n\n/**\n * @template TClass extends { br: BookReader }\n * Helper method to expose a method onto BookReader from a composed class.\n * Only composed classes in BookReader._overridable can be exposed in this\n * way.\n * @param {new () => TClass} Class\n * @param {keyof BookReader['_overrideable']} classKey\n * @param {keyof TClass} method\n * @param {string} [brMethod]\n */\nfunction exposeOverrideableMethod(Class, classKey, method, brMethod = method) {\n /** @type {function(TClass): BookReader} */\n const classToBr = cls => cls.br;\n /** @type {function(BookReader): TClass} */\n const brToClass = br => br._overrideable[classKey];\n exposeOverrideable(Class, method, classToBr, BookReader, brMethod, brToClass);\n}\n\n\n/***********************/\n/** Navbar extensions **/\n/***********************/\nBookReader.prototype.initNavbar = Navbar.prototype.init;\nexposeOverrideableMethod(Navbar, '_components.navbar', 'init', 'initNavbar');\nBookReader.prototype.switchNavbarControls = Navbar.prototype.switchNavbarControls;\nexposeOverrideableMethod(Navbar, '_components.navbar', 'switchNavbarControls');\nBookReader.prototype.updateViewModeButton = Navbar.prototype.updateViewModeButton;\nexposeOverrideableMethod(Navbar, '_components.navbar', 'updateViewModeButton');\nBookReader.prototype.getNavPageNumString = Navbar.prototype.getNavPageNumString;\nexposeOverrideableMethod(Navbar, '_components.navbar', 'getNavPageNumString');\n/** @deprecated */\nBookReader.prototype.initEmbedNavbar = Navbar.prototype.initEmbed;\nexposeOverrideableMethod(Navbar, '_components.navbar', 'initEmbed', 'initEmbedNavbar');\n/** @deprecated unused */\nBookReader.prototype.getNavPageNumHtml = getNavPageNumHtml;\n/** @deprecated unused outside this file */\nBookReader.prototype.updateNavPageNum = Navbar.prototype.updateNavPageNum;\nexposeOverrideableMethod(Navbar, '_components.navbar', 'updateNavPageNum');\n/** @deprecated unused outside this file */\nBookReader.prototype.updateNavIndex = Navbar.prototype.updateNavIndex;\nexposeOverrideableMethod(Navbar, '_components.navbar', 'updateNavIndex');\n/** @deprecated unused outside this file */\nBookReader.prototype.updateNavIndexThrottled = utils.throttle(BookReader.prototype.updateNavIndex, 250, false);\n/** @deprecated unused */\nBookReader.prototype.updateNavIndexDebounced = utils.debounce(BookReader.prototype.updateNavIndex, 500, false);\n\n\n/************************/\n/** Toolbar extensions **/\n/************************/\nBookReader.prototype.buildToolbarElement = Toolbar.prototype.buildToolbarElement;\nexposeOverrideableMethod(Toolbar, '_components.toolbar', 'buildToolbarElement');\nBookReader.prototype.initToolbar = Toolbar.prototype.initToolbar;\nexposeOverrideableMethod(Toolbar, '_components.toolbar', 'initToolbar');\nBookReader.prototype.buildShareDiv = Toolbar.prototype.buildShareDiv;\nexposeOverrideableMethod(Toolbar, '_components.toolbar', 'buildShareDiv');\nBookReader.prototype.buildInfoDiv = Toolbar.prototype.buildInfoDiv;\nexposeOverrideableMethod(Toolbar, '_components.toolbar', 'buildInfoDiv');\nBookReader.prototype.getToolBarHeight = Toolbar.prototype.getToolBarHeight;\nexposeOverrideableMethod(Toolbar, '_components.toolbar', 'getToolBarHeight');\n/** @deprecated zoom no longer in toolbar */\nBookReader.prototype.updateToolbarZoom = Toolbar.prototype.updateToolbarZoom;\nexposeOverrideableMethod(Toolbar, '_components.toolbar', 'updateToolbarZoom');\n/** @deprecated unused */\nBookReader.prototype.blankInfoDiv = blankInfoDiv;\n/** @deprecated unused */\nBookReader.prototype.blankShareDiv = blankShareDiv;\n/** @deprecated unused */\nBookReader.prototype.createPopup = createPopup;\n\n/**\n * Bind navigation handlers\n */\nBookReader.prototype.bindNavigationHandlers = function() {\n const self = this;\n\n // Note the mobile plugin attaches itself to body, so we need to select outside\n const jIcons = this.$('.BRicon').add('.BRmobileMenu .BRicon');\n // Map of jIcon class -> click handler\n const navigationControls = {\n book_left: () => {\n this.trigger(BookReader.eventNames.stop);\n this.left();\n },\n book_right: () => {\n this.trigger(BookReader.eventNames.stop);\n this.right();\n },\n book_up: () => {\n if ($.inArray(this.mode, [this.constMode1up, this.constModeThumb]) >= 0) {\n this.scrollUp();\n } else {\n this.prev();\n }\n },\n book_down: () => {\n if ($.inArray(this.mode, [this.constMode1up, this.constModeThumb]) >= 0) {\n this.scrollDown();\n } else {\n this.next();\n }\n },\n book_top: this.first.bind(this),\n book_bottom: this.last.bind(this),\n book_leftmost: this.leftmost.bind(this),\n book_rightmost: this.rightmost.bind(this),\n onepg: () => {\n this.switchMode(self.constMode1up);\n },\n thumb: () => {\n this.switchMode(self.constModeThumb);\n },\n twopg: () => {\n this.switchMode(self.constMode2up);\n },\n zoom_in: () => {\n this.trigger(BookReader.eventNames.stop);\n this.zoom(1);\n this.trigger(BookReader.eventNames.zoomIn);\n },\n zoom_out: () => {\n this.trigger(BookReader.eventNames.stop);\n this.zoom(-1);\n this.trigger(BookReader.eventNames.zoomOut);\n },\n full: () => {\n if (this.ui == 'embed') {\n var url = this.$('.BRembedreturn a').attr('href');\n window.open(url);\n } else {\n this.toggleFullscreen();\n }\n },\n };\n\n jIcons.filter('.fit').bind('fit', function() {\n // XXXmang implement autofit zoom\n });\n\n for (const control in navigationControls) {\n jIcons.filter(`.${control}`).on('click.bindNavigationHandlers', () => {\n navigationControls[control]()\n return false;\n });\n }\n\n var $brNavCntlBtmEl = this.$('.BRnavCntlBtm');\n var $brNavCntlTopEl = this.$('.BRnavCntlTop');\n\n this.$('.BRnavCntl').click(\n function() {\n var promises = [];\n // TODO don't use magic constants\n // TODO move this to a function\n if ($brNavCntlBtmEl.hasClass('BRdn')) {\n if (self.refs.$BRtoolbar)\n promises.push(self.refs.$BRtoolbar.animate(\n {top: self.getToolBarHeight() * -1}\n ).promise());\n promises.push(self.$('.BRfooter').animate({bottom: self.getFooterHeight() * -1}).promise());\n $brNavCntlBtmEl.addClass('BRup').removeClass('BRdn');\n $brNavCntlTopEl.addClass('BRdn').removeClass('BRup');\n self.$('.BRnavCntlBtm.BRnavCntl').animate({height:'45px'});\n self.$('.BRnavCntl').delay(1000).animate({opacity:.75}, 1000);\n } else {\n if (self.refs.$BRtoolbar)\n promises.push(self.refs.$BRtoolbar.animate({top:0}).promise());\n promises.push(self.$('.BRfooter').animate({bottom:0}).promise());\n $brNavCntlBtmEl.addClass('BRdn').removeClass('BRup');\n $brNavCntlTopEl.addClass('BRup').removeClass('BRdn');\n self.$('.BRnavCntlBtm.BRnavCntl').animate({height:'30px'});\n self.$('.BRvavCntl').animate({opacity:1})\n }\n $.when.apply($, promises).done(function() {\n // Only do full resize in auto mode and need to recalc. size\n if (self.mode == self.constMode2up && self.twoPage.autofit != null\n && self.twoPage.autofit != 'none'\n ) {\n self.resize();\n } else if (self.mode == self.constMode1up && self.onePage.autofit != null\n && self.onePage.autofit != 'none') {\n self.resize();\n } else {\n // Don't do a full resize to avoid redrawing images\n self.resizeBRcontainer();\n }\n });\n }\n );\n $brNavCntlBtmEl.mouseover(function() {\n if ($(this).hasClass('BRup')) {\n self.$('.BRnavCntl').animate({opacity:1},250);\n }\n }).mouseleave(function() {\n if ($(this).hasClass('BRup')) {\n self.$('.BRnavCntl').animate({opacity:.75},250);\n }\n });\n $brNavCntlTopEl.mouseover(function() {\n if ($(this).hasClass('BRdn')) {\n self.$('.BRnavCntl').animate({opacity:1},250);\n }\n }).mouseleave(function() {\n if ($(this).hasClass('BRdn')) {\n self.$('.BRnavCntl').animate({opacity:.75},250);\n }\n });\n\n this.initSwipeData();\n\n $(document).off('mousemove.navigation', this.el);\n $(document).on(\n 'mousemove.navigation',\n this.el,\n { 'br': this },\n this.navigationMousemoveHandler\n );\n\n $(document).off('mousedown.swipe', '.BRpageimage');\n $(document).on(\n 'mousedown.swipe',\n '.BRpageimage',\n { 'br': this },\n this.swipeMousedownHandler\n );\n\n this.bindMozTouchHandlers();\n};\n\n/**\n * Unbind navigation handlers\n */\nBookReader.prototype.unbindNavigationHandlers = function() {\n $(document).off('mousemove.navigation', this.el);\n};\n\n/**\n * Handle mousemove related to navigation. Bind at #BookReader level to allow autohide.\n */\nBookReader.prototype.navigationMousemoveHandler = function(event) {\n // $$$ possibly not great to be calling this for every mousemove\n if (event.data['br'].uiAutoHide) {\n // 77px is an approximate height of the Internet Archive Top Nav\n // 75 & 76 (pixels) provide used in this context is checked against the IA top nav height\n var navkey = $(document).height() - 75;\n if ((event.pageY < 76) || (event.pageY > navkey)) {\n // inside or near navigation elements\n event.data['br'].hideNavigation();\n } else {\n event.data['br'].showNavigation();\n }\n }\n};\n\nBookReader.prototype.initSwipeData = function(clientX, clientY) {\n /*\n * Based on the really quite awesome \"Today's Guardian\" at http://guardian.gyford.com/\n */\n this._swipe = {\n mightBeSwiping: false,\n didSwipe: false,\n mightBeDraggin: false,\n didDrag: false,\n startTime: (new Date).getTime(),\n startX: clientX,\n startY: clientY,\n lastX: clientX,\n lastY: clientY,\n deltaX: 0,\n deltaY: 0,\n deltaT: 0\n }\n};\n\nBookReader.prototype.swipeMousedownHandler = function(event) {\n var self = event.data['br'];\n\n // We should be the last bubble point for the page images\n // Disable image drag and select, but keep right-click\n if (event.which == 3) {\n return !self.protected;\n }\n\n $(event.target).bind('mouseout.swipe',\n { 'br': self},\n self.swipeMouseupHandler\n ).bind('mouseup.swipe',\n { 'br': self},\n self.swipeMouseupHandler\n ).bind('mousemove.swipe',\n { 'br': self },\n self.swipeMousemoveHandler\n );\n\n self.initSwipeData(event.clientX, event.clientY);\n self._swipe.mightBeSwiping = true;\n self._swipe.mightBeDragging = true;\n\n event.preventDefault();\n event.returnValue = false;\n event.cancelBubble = true;\n return false;\n};\n\nBookReader.prototype.swipeMousemoveHandler = function(event) {\n var self = event.data['br'];\n var _swipe = self._swipe;\n if (! _swipe.mightBeSwiping) {\n return;\n }\n\n // Update swipe data\n _swipe.deltaX = event.clientX - _swipe.startX;\n _swipe.deltaY = event.clientY - _swipe.startY;\n _swipe.deltaT = (new Date).getTime() - _swipe.startTime;\n\n var absX = Math.abs(_swipe.deltaX);\n var absY = Math.abs(_swipe.deltaY);\n\n // Minimum distance in the amount of tim to trigger the swipe\n var minSwipeLength = Math.min(self.refs.$br.width() / 5, 80);\n var maxSwipeTime = 400;\n\n // Check for horizontal swipe\n if (absX > absY && (absX > minSwipeLength) && _swipe.deltaT < maxSwipeTime) {\n _swipe.mightBeSwiping = false; // only trigger once\n _swipe.didSwipe = true;\n if (self.mode == self.constMode2up) {\n if (_swipe.deltaX < 0) {\n self.right();\n } else {\n self.left();\n }\n }\n }\n\n if ( _swipe.deltaT > maxSwipeTime && !_swipe.didSwipe) {\n if (_swipe.mightBeDragging) {\n // Dragging\n _swipe.didDrag = true;\n self.refs.$brContainer\n .scrollTop(self.refs.$brContainer.scrollTop() - event.clientY + _swipe.lastY)\n .scrollLeft(self.refs.$brContainer.scrollLeft() - event.clientX + _swipe.lastX);\n }\n }\n _swipe.lastX = event.clientX;\n _swipe.lastY = event.clientY;\n\n event.preventDefault();\n event.returnValue = false;\n event.cancelBubble = true;\n return false;\n};\n\nBookReader.prototype.swipeMouseupHandler = function(event) {\n var _swipe = event.data['br']._swipe;\n _swipe.mightBeSwiping = false;\n _swipe.mightBeDragging = false;\n\n $(event.target).unbind('mouseout.swipe').unbind('mouseup.swipe').unbind('mousemove.swipe');\n\n if (_swipe.didSwipe || _swipe.didDrag) {\n // Swallow event if completed swipe gesture\n event.preventDefault();\n event.returnValue = false;\n event.cancelBubble = true;\n return false;\n }\n return true;\n};\n\nBookReader.prototype.bindMozTouchHandlers = function() {\n var self = this;\n\n // Currently only want touch handlers in 2up\n this.refs.$br.bind('MozTouchDown', function(event) {\n if (this.mode == self.constMode2up) {\n event.preventDefault();\n }\n })\n .bind('MozTouchMove', function(event) {\n if (this.mode == self.constMode2up) {\n event.preventDefault();\n }\n })\n .bind('MozTouchUp', function(event) {\n if (this.mode == self.constMode2up) {\n event.preventDefault();\n }\n });\n};\n\n/**\n * Returns true if the navigation elements are currently visible\n * @return {boolean}\n */\nBookReader.prototype.navigationIsVisible = function() {\n // $$$ doesn't account for transitioning states, nav must be fully visible to return true\n var toolpos = this.refs.$BRtoolbar.position();\n var tooltop = toolpos.top;\n return tooltop == 0;\n};\n\n/**\n * Main controller that sets navigation into view.\n * Defaults to SHOW the navigation chrome\n */\nBookReader.prototype.setNavigationView = function brSetNavigationView(hide) {\n var animationLength = this.constNavAnimationDuration;\n var animationType = 'linear';\n var resizePageContainer = function resizePageContainer () {\n /* main page container fills whole container */\n if (this.constMode2up !== this.mode) {\n var animate = true;\n this.resizeBRcontainer(animate);\n }\n this.trigger(BookReader.eventNames.navToggled);\n }.bind(this);\n\n var toolbarHeight = 0;\n var navbarHeight = 0;\n if (hide) {\n toolbarHeight = this.getToolBarHeight() * -1;\n navbarHeight = this.getFooterHeight() * -1;\n\n this.refs.$BRtoolbar.addClass('js-menu-hide');\n this.refs.$BRfooter.addClass('js-menu-hide');\n } else {\n this.refs.$BRtoolbar.removeClass('js-menu-hide');\n this.refs.$BRfooter.removeClass('js-menu-hide');\n }\n\n this.refs.$BRtoolbar.animate(\n { top: toolbarHeight },\n animationLength,\n animationType,\n resizePageContainer\n );\n this.refs.$BRfooter.animate(\n { bottom: navbarHeight },\n animationLength,\n animationType,\n resizePageContainer\n );\n};\n/**\n * Hide navigation elements, if visible\n */\nBookReader.prototype.hideNavigation = function() {\n // Check if navigation is showing\n if (this.navigationIsVisible()) {\n var hide = true;\n this.setNavigationView(hide);\n }\n};\n\n/**\n * Show navigation elements\n */\nBookReader.prototype.showNavigation = function() {\n // Check if navigation is hidden\n if (!this.navigationIsVisible()) {\n this.setNavigationView();\n }\n};\n\n/**\n * Returns the index of the first visible page, dependent on the mode.\n * $$$ Currently we cannot display the front/back cover in 2-up and will need to update\n * this function when we can as part of https://bugs.launchpad.net/gnubook/+bug/296788\n * @return {number}\n */\nBookReader.prototype.firstDisplayableIndex = function() {\n if (this.mode != this.constMode2up) {\n return 0;\n }\n\n if ('rl' != this.pageProgression) {\n // LTR\n if (this._models.book.getPageSide(0) == 'L') {\n return 0;\n } else {\n return -1;\n }\n } else {\n // RTL\n if (this._models.book.getPageSide(0) == 'R') {\n return 0;\n } else {\n return -1;\n }\n }\n};\n\n/**\n * Returns the index of the last visible page, dependent on the mode.\n * $$$ Currently we cannot display the front/back cover in 2-up and will need to update\n * this function when we can as part of https://bugs.launchpad.net/gnubook/+bug/296788\n * @return {number}\n */\nBookReader.prototype.lastDisplayableIndex = function() {\n\n var lastIndex = this._models.book.getNumLeafs() - 1;\n\n if (this.mode != this.constMode2up) {\n return lastIndex;\n }\n\n if ('rl' != this.pageProgression) {\n // LTR\n if (this._models.book.getPageSide(lastIndex) == 'R') {\n return lastIndex;\n } else {\n return lastIndex + 1;\n }\n } else {\n // RTL\n if (this._models.book.getPageSide(lastIndex) == 'L') {\n return lastIndex;\n } else {\n return lastIndex + 1;\n }\n }\n};\n\n\n/**************************/\n/** BookModel extensions **/\n/**************************/\n/** @deprecated not used outside */\nBookReader.prototype.getMedianPageSize = BookModel.prototype.getMedianPageSize;\nexposeOverrideableMethod(BookModel, '_models.book', 'getMedianPageSize');\nBookReader.prototype._getPageWidth = BookModel.prototype._getPageWidth;\nexposeOverrideableMethod(BookModel, '_models.book', '_getPageWidth');\nBookReader.prototype._getPageHeight = BookModel.prototype._getPageHeight;\nexposeOverrideableMethod(BookModel, '_models.book', '_getPageHeight');\nBookReader.prototype.getPageIndex = BookModel.prototype.getPageIndex;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageIndex');\n/** @deprecated not used outside */\nBookReader.prototype.getPageIndices = BookModel.prototype.getPageIndices;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageIndices');\nBookReader.prototype.getPageName = BookModel.prototype.getPageName;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageName');\nBookReader.prototype.getNumLeafs = BookModel.prototype.getNumLeafs;\nexposeOverrideableMethod(BookModel, '_models.book', 'getNumLeafs');\nBookReader.prototype.getPageWidth = BookModel.prototype.getPageWidth;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageWidth');\nBookReader.prototype.getPageHeight = BookModel.prototype.getPageHeight;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageHeight');\nBookReader.prototype.getPageURI = BookModel.prototype.getPageURI;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageURI');\nBookReader.prototype.getPageSide = BookModel.prototype.getPageSide;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageSide');\nBookReader.prototype.getPageNum = BookModel.prototype.getPageNum;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageNum');\nBookReader.prototype.getPageProp = BookModel.prototype.getPageProp;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageProp');\nBookReader.prototype.getSpreadIndices = BookModel.prototype.getSpreadIndices;\nexposeOverrideableMethod(BookModel, '_models.book', 'getSpreadIndices');\nBookReader.prototype.leafNumToIndex = BookModel.prototype.leafNumToIndex;\nexposeOverrideableMethod(BookModel, '_models.book', 'leafNumToIndex');\nBookReader.prototype.parsePageString = BookModel.prototype.parsePageString;\nexposeOverrideableMethod(BookModel, '_models.book', 'parsePageString');\n/** @deprecated unused */\nBookReader.prototype._getDataFlattened = BookModel.prototype._getDataFlattened;\nexposeOverrideableMethod(BookModel, '_models.book', '_getDataFlattened');\n/** @deprecated unused */\nBookReader.prototype._getDataProp = BookModel.prototype._getDataProp;\nexposeOverrideableMethod(BookModel, '_models.book', '_getDataProp');\n\n// Parameter related functions\n\n/**\n * Update from the params object\n * @param {Object}\n */\nBookReader.prototype.updateFromParams = function(params) {\n // Set init, fragment change options for switchMode()\n const {\n mode = 0,\n init = false,\n fragmentChange = false,\n } = params;\n\n if (mode) {\n this.switchMode(\n mode,\n { init: init, suppressFragmentChange: !fragmentChange }\n );\n }\n\n // $$$ process /zoom\n // We only respect page if index is not set\n if ('undefined' != typeof(params.index)) {\n if (params.index != this.currentIndex()) {\n this.jumpToIndex(params.index);\n }\n } else if ('undefined' != typeof(params.page)) {\n // $$$ this assumes page numbers are unique\n if (params.page != this._models.book.getPageNum(this.currentIndex())) {\n this.jumpToPage(params.page);\n }\n }\n\n\n // process /search\n // @deprecated for urlMode 'history'\n // Continues to work for urlMode 'hash'\n if (this.enableSearch && 'undefined' != typeof(params.search)) {\n if (this.searchTerm !== params.search) {\n this.$('.BRsearchInput').val(params.search);\n }\n }\n\n // $$$ process /region\n // $$$ process /highlight\n\n // $$$ process /theme\n if (this.enableThemesPlugin && 'undefined' != typeof(params.theme)) {\n this.updateTheme(params.theme);\n }\n};\n\n/**\n * Returns true if we can switch to the requested mode\n * @param {number} mode\n * @return {boolean}\n */\nBookReader.prototype.canSwitchToMode = function(mode) {\n if (mode == this.constMode2up || mode == this.constModeThumb) {\n // check there are enough pages to display\n // $$$ this is a workaround for the mis-feature that we can't display\n // short books in 2up mode\n if (this._models.book.getNumLeafs() < 2) {\n return false;\n }\n }\n\n return true;\n};\n\n\n/**\n * @deprecated. Use PageModel.getURISrcSet. Slated for removal in v5.\n * Returns the srcset with correct URIs or void string if out of range\n * Also makes the reduce argument optional\n * @param {number} index\n * @param {number} [reduce]\n * @param {number} [rotate]\n * @return {string}\n */\nBookReader.prototype._getPageURISrcset = function(index, reduce, rotate) {\n const page = this._models.book.getPage(index, false);\n // Synthesize page\n if (!page) return \"\";\n\n // reduce not passed in\n // $$$ this probably won't work for thumbnail mode\n if ('undefined' == typeof(reduce)) {\n reduce = page.height / this.twoPage.height;\n }\n\n return page.getURISrcSet(reduce, rotate);\n}\n\n\n/**\n * Returns the page URI or transparent image if out of range\n * Also makes the reduce argument optional\n * @param {number} index\n * @param {number} [reduce]\n * @param {number} [rotate]\n * @return {string}\n */\nBookReader.prototype._getPageURI = function(index, reduce, rotate) {\n const page = this._models.book.getPage(index, false);\n // Synthesize page\n if (!page) return this.imagesBaseURL + \"transparent.png\";\n\n if ('undefined' == typeof(reduce)) {\n // reduce not passed in\n // $$$ this probably won't work for thumbnail mode\n reduce = page.height / this.twoPage.height;\n }\n\n return page.getURI(reduce, rotate);\n};\n\n/**\n * @param {string}\n */\nBookReader.prototype.showProgressPopup = function(msg) {\n if (this.popup) return;\n\n this.popup = document.createElement(\"div\");\n $(this.popup).prop('className', 'BRprogresspopup');\n var bar = document.createElement(\"div\");\n $(bar).css({\n height: '20px'\n }).prop('className', 'BRprogressbar');\n $(this.popup).append(bar);\n\n if (msg) {\n var msgdiv = document.createElement(\"div\");\n msgdiv.innerHTML = msg;\n $(this.popup).append(msgdiv);\n }\n\n $(this.popup).appendTo(this.refs.$br);\n};\n\nBookReader.prototype.removeProgressPopup = function() {\n $(this.popup).remove();\n this.$('.BRprogresspopup').remove();\n this.popup = null;\n};\n\n/**\n * Can be overridden\n */\nBookReader.prototype.initUIStrings = function() {\n // Navigation handlers will be bound after all UI is in place -- makes moving icons between\n // the toolbar and nav bar easier\n\n // Setup tooltips -- later we could load these from a file for i18n\n var titles = {\n '.logo': 'Go to Archive.org', // $$$ update after getting OL record\n '.zoom_in': 'Zoom in',\n '.zoom_out': 'Zoom out',\n '.onepg': 'One-page view',\n '.twopg': 'Two-page view',\n '.thumb': 'Thumbnail view',\n '.print': 'Print this page',\n '.embed': 'Embed BookReader',\n '.link': 'Link to this book (and page)',\n '.bookmark': 'Bookmark this page',\n '.share': 'Share this book',\n '.info': 'About this book',\n '.full': 'Toggle fullscreen',\n '.book_left': 'Flip left',\n '.book_right': 'Flip right',\n '.book_up': 'Page up',\n '.book_down': 'Page down',\n '.play': 'Play',\n '.pause': 'Pause',\n '.BRdn': 'Show/hide nav bar', // Would have to keep updating on state change to have just \"Hide nav bar\"\n '.BRup': 'Show/hide nav bar',\n '.book_top': 'First page',\n '.book_bottom': 'Last page',\n '.book_leftmost': 'First page',\n '.book_rightmost': 'Last page',\n };\n if ('rl' == this.pageProgression) {\n titles['.book_leftmost'] = 'Last page';\n titles['.book_rightmost'] = 'First page';\n }\n\n for (var icon in titles) {\n this.$(icon).prop('title', titles[icon]);\n }\n}\n\n/**\n * Reloads images. Useful when some images might have failed.\n */\nBookReader.prototype.reloadImages = function() {\n this.refs.$brContainer.find('img').each(function(index, elem) {\n if (!elem.complete || elem.naturalHeight === 0) {\n var src = elem.src;\n elem.src = '';\n setTimeout(function() {\n elem.src = src;\n }, 1000);\n }\n });\n};\n\n/**\n * @param {boolean} ignoreDisplay - bypass the display check\n * @return {number}\n */\nBookReader.prototype.getFooterHeight = function() {\n var $heightEl = this.mode == this.constMode2up ? this.refs.$BRfooter : this.refs.$BRnav;\n if ($heightEl && this.refs.$BRfooter) {\n var outerHeight = $heightEl.outerHeight();\n var bottom = parseInt(this.refs.$BRfooter.css('bottom'));\n if (!isNaN(outerHeight) && !isNaN(bottom)) {\n return outerHeight + bottom;\n }\n }\n return 0;\n}\n\n// Basic Usage built-in Methods (can be overridden through options)\n// This implementation uses options.data value for populating BookReader\n\n/**\n * Create a params object from the current parameters.\n * @return {Object}\n */\nBookReader.prototype.paramsFromCurrent = function() {\n var params = {};\n\n var index = this.currentIndex();\n var pageNum = this._models.book.getPageNum(index);\n if ((pageNum === 0) || pageNum) {\n params.page = pageNum;\n }\n\n params.index = index;\n params.mode = this.mode;\n\n // $$$ highlight\n // $$$ region\n\n // search\n if (this.enableSearch) {\n params.search = this.searchTerm;\n }\n\n return params;\n};\n\n/**\n * Return an object with configuration parameters from a fragment string.\n *\n * Fragments are formatted as a URL path but may be used outside of URLs as a\n * serialization format for BookReader parameters\n *\n * @see http://openlibrary.org/dev/docs/bookurls for fragment syntax\n *\n * @param {string} fragment initial # is allowed for backwards compatibility\n * but is deprecated\n * @return {Object}\n */\nBookReader.prototype.paramsFromFragment = function(fragment) {\n var params = {};\n\n // For backwards compatibility we allow an initial # character\n // (as from window.location.hash) but don't require it\n if (fragment.substr(0, 1) == '#') {\n fragment = fragment.substr(1);\n }\n\n // Simple #nn syntax\n var oldStyleLeafNum = parseInt( /^\\d+$/.exec(fragment) );\n if ( !isNaN(oldStyleLeafNum) ) {\n params.index = oldStyleLeafNum;\n\n // Done processing if using old-style syntax\n return params;\n }\n\n // Split into key-value pairs\n var urlArray = fragment.split('/');\n var urlHash = {};\n for (var i = 0; i < urlArray.length; i += 2) {\n urlHash[urlArray[i]] = urlArray[i + 1];\n }\n\n // Mode\n if ('1up' == urlHash['mode']) {\n params.mode = this.constMode1up;\n } else if ('2up' == urlHash['mode']) {\n params.mode = this.constMode2up;\n } else if ('thumb' == urlHash['mode']) {\n params.mode = this.constModeThumb;\n }\n\n // Index and page\n if ('undefined' != typeof(urlHash['page'])) {\n // page was set -- may not be int\n params.page = urlHash['page'];\n }\n\n // $$$ process /region\n // $$$ process /search\n\n if (urlHash['search'] != undefined) {\n params.search = utils.decodeURIComponentPlus(urlHash['search']);\n }\n\n // $$$ process /highlight\n\n // $$$ process /theme\n if (urlHash['theme'] != undefined) {\n params.theme = urlHash['theme']\n }\n return params;\n};\n\n/**\n * Create a fragment string from the params object.\n *\n * Fragments are formatted as a URL path but may be used outside of URLs as a\n * serialization format for BookReader parameters\n *\n * @see https://openlibrary.org/dev/docs/bookurls for fragment syntax\n *\n * @param {Object} params\n * @param {string} [urlMode]\n * @return {string}\n */\nBookReader.prototype.fragmentFromParams = function(params, urlMode = 'hash') {\n const separator = '/';\n const fragments = [];\n\n if ('undefined' != typeof(params.page)) {\n fragments.push('page', params.page);\n } else {\n if ('undefined' != typeof(params.index)) {\n // Don't have page numbering but we do have the index\n fragments.push('page', 'n' + params.index);\n }\n }\n\n // $$$ highlight\n // $$$ region\n\n // mode\n if ('undefined' != typeof(params.mode)) {\n if (params.mode == this.constMode1up) {\n fragments.push('mode', '1up');\n } else if (params.mode == this.constMode2up) {\n fragments.push('mode', '2up');\n } else if (params.mode == this.constModeThumb) {\n fragments.push('mode', 'thumb');\n } else {\n throw 'fragmentFromParams called with unknown mode ' + params.mode;\n }\n }\n\n // search\n if (params.search && urlMode === 'hash') {\n fragments.push('search', params.search);\n }\n\n return utils.encodeURIComponentPlus(fragments.join(separator)).replace(/%2F/g, '/');\n};\n\n/**\n * Create, update querystring from the params object\n *\n * @param {Object} params\n * @param {string} currQueryString\n * @param {string} [urlMode]\n * @return {string}\n */\nBookReader.prototype.queryStringFromParams = function(\n params,\n currQueryString,\n urlMode = 'hash'\n) {\n const newParams = new URLSearchParams(currQueryString);\n if (params.search && urlMode === 'history') {\n newParams.set('q', params.search)\n }\n // https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/toString\n // Note: This method returns the query string without the question mark.\n const result = newParams.toString();\n return result ? '?' + result : '';\n}\n\n/**\n * Helper to select within instance's elements\n */\nBookReader.prototype.$ = function(selector) {\n return this.refs.$br.find(selector);\n}\n\n/**\n * Polyfill for deprecated method\n */\njQuery.curCSS = function(element, prop, val) {\n return jQuery(element).css(prop, val);\n};\n\nwindow.BookReader = BookReader;\n","/**\n * Displays a console on the document for debugging devices where remote\n * debugging is not feasible, and forwards all console.log's to be displayed\n * on screen.\n */\nexport class DebugConsole {\n constructor() {\n /** How many times we've seen the same line in a row */\n this.currentRun = 0;\n }\n\n init() {\n this.$log = $(`
    `);\n $(document.body).prepend(this.$log);\n\n this.$form = $(`\n
    \n \n
    `);\n this.$log.append(this.$form);\n\n this.$form.submit(ev => {\n ev.preventDefault();\n const result = eval(this.$form.find('input').val());\n this.logToScreen([result]);\n });\n\n const _realLog = console.log.bind(console);\n console.log = (...args) => {\n _realLog(...args);\n this.logToScreen(args);\n }\n\n window.onerror = (...args) => this.logToScreen(args);\n }\n\n /**\n * Log the provided array onto the on screen console\n * @param {Array} args\n */\n logToScreen(args) {\n const html = args.map(JSON.stringify).join(',');\n const $lastEntry = this.$log.children('.log-entry:last-child')\n if ($lastEntry.find('.entry-code').html() == html) {\n $lastEntry.find('.count').text(`(${++this.currentRun})`);\n } else {\n this.currentRun = 1;\n this.$log.append($(`\n
    \n ${html}\n
    `));\n }\n }\n}\n","/**\n * Bind mouse handlers\n * Disable mouse click to avoid selected/highlighted page images\n * @param {JQuery} jObject\n */\nexport function disableSelect(jObject) {\n // $$$ check here for right-click and don't disable. Also use jQuery style\n // for stopping propagation. See https://bugs.edge.launchpad.net/gnubook/+bug/362626\n jObject.bind('mousedown', () => false);\n // Special hack for IE7\n jObject[0].onselectstart = () => false;\n}\n\n/**\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @return {number}\n */\nexport function clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\n/**\n * Given value and maximum, calculate a percentage suitable for CSS\n * @param {number} value\n * @param {number} max\n * @return {string}\n */\nexport function cssPercentage(value, max) {\n return ((value / max) * 100) + '%';\n}\n\n/**\n * @param {*} value\n * @param {Array} array\n * @return {boolean}\n */\nexport function notInArray(value, array) {\n return !array.includes(value);\n}\n\n/**\n * @param {HTMLIFrameElement} iframe\n * @return {Document}\n */\nexport function getIFrameDocument(iframe) {\n// Adapted from http://xkr.us/articles/dom/iframe-document/\n const outer = iframe.contentWindow || iframe.contentDocument;\n return outer.document || outer;\n}\n\n/**\n * @param {string} str\n * @return {string}\n */\nexport function escapeHTML(str) {\n return str.replace(/&/g,'&')\n .replace(/>/g,'>')\n .replace(/ {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n}\n\n/**\n * Throttle function\n * @see https://remysharp.com/2010/07/21/throttling-function-calls\n * @param {Function} fn\n * @param {number} threshold\n * @param {boolean} delay\n * @return {Function}\n */\nexport function throttle(fn, threshold, delay) {\n threshold || (threshold = 250);\n let last;\n let deferTimer;\n if (delay) last = +new Date;\n return function () {\n const context = this;\n const now = +new Date;\n const args = arguments;\n if (last && now < last + threshold) {\n // hold on to it\n clearTimeout(deferTimer);\n deferTimer = setTimeout(() => {\n last = now;\n fn.apply(context, args);\n }, threshold);\n } else {\n last = now;\n fn.apply(context, args);\n }\n };\n}\n\n/**\n * FIXME we need a better way to do this :/ This is not automatically poly-filled by\n * core-js https://github.com/zloirock/core-js/issues/354\n * @param {Window} window\n */\nexport function polyfillCustomEvent(window) {\n if (typeof window.CustomEvent === \"function\") return false;\n window.CustomEvent = PolyfilledCustomEvent;\n}\n\n/**\n * https://caniuse.com/customevent has issues on older browsers where it can't be\n * called as a constructor, so we have to use older methods.\n * @param {String} eventName\n * @return {CustomEvent}\n */\nexport function PolyfilledCustomEvent(eventName, {bubbles = false, cancelable = false, detail = null} = {}) {\n const event = document.createEvent('CustomEvent');\n event.initCustomEvent(eventName, bubbles, cancelable, detail);\n return event;\n}\n\n/**\n * Promise based sleep - resolves at default 500ms\n * @param {Number} wait time in milliseconds\n */\nexport function sleep(ms = 500) {\n return new Promise(res => setTimeout(res(true), ms));\n}\n\n/*\n * Returns the number pixels something should be rendered at to be ~1n on the users\n * screen when measured with a ruler.\n */\nexport function calcScreenDPI() {\n const el = document.createElement('div');\n el.style.width = '1in';\n document.body.appendChild(el);\n const dpi = el.offsetWidth;\n document.body.removeChild(el);\n\n const screenDPI = dpi * devicePixelRatio;\n // This will return 0 in testing; never want it to be 0!\n return screenDPI == 0 ? 100 : screenDPI;\n}\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_OUT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === RegExp.prototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg, 3) : false;\n var element;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n};\n","module.exports = {};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = false;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // eslint-disable-next-line es/no-symbol -- required for testing\n return !Symbol.sham &&\n // Chrome 38 Symbol has incorrect toString conversion\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n (IS_NODE ? V8_VERSION === 38 : V8_VERSION > 37 && V8_VERSION < 41);\n});\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject -- old IE */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\nvar shared = require('./shared');\n\nvar nativeExec = RegExp.prototype.exec;\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\n// eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.11.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements -- TODO\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's state to , but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins -- safe\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar aFunction = require('../internals/a-function');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A;\n aFunction(callbackfn);\n A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return A;\n }\n});\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var $ = require('../internals/export');\n\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// `Math.log2` method\n// https://tc39.es/ecma262/#sec-math.log2\n$({ target: 'Math', stat: true }, {\n log2: function log2(x) {\n return log(x) / LN2;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar multiply = function (data, n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\n\nvar divide = function (data, n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\n\nvar dataToString = function (data) {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(data, 0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(data, 1e7, 0);\n j -= 7;\n }\n multiply(data, pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(data, 1 << 23);\n j -= 23;\n }\n divide(data, 1 << j);\n multiply(data, 1, 1);\n divide(data, 2);\n result = dataToString(data);\n } else {\n multiply(data, 0, z);\n multiply(data, 1 << -e, 0);\n result = dataToString(data) + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (V8_VERSION === 66) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n if (!IS_NODE && !NATIVE_REJECTION_EVENT) return true;\n }\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n\n // wrap native Promise#then for native async functions\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // wrap fetch result\n if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n fetch: function fetch(input /* , init */) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative(nativeSearch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, UNSUPPORTED_Y);\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.es/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.es/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n/* eslint-disable no-control-regex -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:?@[\\\\]]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:?@[\\\\]]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable no-control-regex -- safe */\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URLConstructor(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","/*!\n\tColorbox 1.6.4\n\tlicense: MIT\n\thttp://www.jacklmoore.com/colorbox\n*/\n(function ($, document, window) {\n\tvar\n\t// Default settings object.\n\t// See http://jacklmoore.com/colorbox for details.\n\tdefaults = {\n\t\t// data sources\n\t\thtml: false,\n\t\tphoto: false,\n\t\tiframe: false,\n\t\tinline: false,\n\n\t\t// behavior and appearance\n\t\ttransition: \"elastic\",\n\t\tspeed: 300,\n\t\tfadeOut: 300,\n\t\twidth: false,\n\t\tinitialWidth: \"600\",\n\t\tinnerWidth: false,\n\t\tmaxWidth: false,\n\t\theight: false,\n\t\tinitialHeight: \"450\",\n\t\tinnerHeight: false,\n\t\tmaxHeight: false,\n\t\tscalePhotos: true,\n\t\tscrolling: true,\n\t\topacity: 0.9,\n\t\tpreloading: true,\n\t\tclassName: false,\n\t\toverlayClose: true,\n\t\tescKey: true,\n\t\tarrowKey: true,\n\t\ttop: false,\n\t\tbottom: false,\n\t\tleft: false,\n\t\tright: false,\n\t\tfixed: false,\n\t\tdata: undefined,\n\t\tcloseButton: true,\n\t\tfastIframe: true,\n\t\topen: false,\n\t\treposition: true,\n\t\tloop: true,\n\t\tslideshow: false,\n\t\tslideshowAuto: true,\n\t\tslideshowSpeed: 2500,\n\t\tslideshowStart: \"start slideshow\",\n\t\tslideshowStop: \"stop slideshow\",\n\t\tphotoRegex: /\\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\\?).*)?$/i,\n\n\t\t// alternate image paths for high-res displays\n\t\tretinaImage: false,\n\t\tretinaUrl: false,\n\t\tretinaSuffix: '@2x.$1',\n\n\t\t// internationalization\n\t\tcurrent: \"image {current} of {total}\",\n\t\tprevious: \"previous\",\n\t\tnext: \"next\",\n\t\tclose: \"close\",\n\t\txhrError: \"This content failed to load.\",\n\t\timgError: \"This image failed to load.\",\n\n\t\t// accessbility\n\t\treturnFocus: true,\n\t\ttrapFocus: true,\n\n\t\t// callbacks\n\t\tonOpen: false,\n\t\tonLoad: false,\n\t\tonComplete: false,\n\t\tonCleanup: false,\n\t\tonClosed: false,\n\n\t\trel: function() {\n\t\t\treturn this.rel;\n\t\t},\n\t\thref: function() {\n\t\t\t// using this.href would give the absolute url, when the href may have been inteded as a selector (e.g. '#container')\n\t\t\treturn $(this).attr('href');\n\t\t},\n\t\ttitle: function() {\n\t\t\treturn this.title;\n\t\t},\n\t\tcreateImg: function() {\n\t\t\tvar img = new Image();\n\t\t\tvar attrs = $(this).data('cbox-img-attrs');\n\n\t\t\tif (typeof attrs === 'object') {\n\t\t\t\t$.each(attrs, function(key, val){\n\t\t\t\t\timg[key] = val;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn img;\n\t\t},\n\t\tcreateIframe: function() {\n\t\t\tvar iframe = document.createElement('iframe');\n\t\t\tvar attrs = $(this).data('cbox-iframe-attrs');\n\n\t\t\tif (typeof attrs === 'object') {\n\t\t\t\t$.each(attrs, function(key, val){\n\t\t\t\t\tiframe[key] = val;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ('frameBorder' in iframe) {\n\t\t\t\tiframe.frameBorder = 0;\n\t\t\t}\n\t\t\tif ('allowTransparency' in iframe) {\n\t\t\t\tiframe.allowTransparency = \"true\";\n\t\t\t}\n\t\t\tiframe.name = (new Date()).getTime(); // give the iframe a unique name to prevent caching\n\t\t\tiframe.allowFullscreen = true;\n\n\t\t\treturn iframe;\n\t\t}\n\t},\n\n\t// Abstracting the HTML and event identifiers for easy rebranding\n\tcolorbox = 'colorbox',\n\tprefix = 'cbox',\n\tboxElement = prefix + 'Element',\n\n\t// Events\n\tevent_open = prefix + '_open',\n\tevent_load = prefix + '_load',\n\tevent_complete = prefix + '_complete',\n\tevent_cleanup = prefix + '_cleanup',\n\tevent_closed = prefix + '_closed',\n\tevent_purge = prefix + '_purge',\n\n\t// Cached jQuery Object Variables\n\t$overlay,\n\t$box,\n\t$wrap,\n\t$content,\n\t$topBorder,\n\t$leftBorder,\n\t$rightBorder,\n\t$bottomBorder,\n\t$related,\n\t$window,\n\t$loaded,\n\t$loadingBay,\n\t$loadingOverlay,\n\t$title,\n\t$current,\n\t$slideshow,\n\t$next,\n\t$prev,\n\t$close,\n\t$groupControls,\n\t$events = $(''), // $({}) would be prefered, but there is an issue with jQuery 1.4.2\n\n\t// Variables for cached values or use across multiple functions\n\tsettings,\n\tinterfaceHeight,\n\tinterfaceWidth,\n\tloadedHeight,\n\tloadedWidth,\n\tindex,\n\tphoto,\n\topen,\n\tactive,\n\tclosing,\n\tloadingTimer,\n\tpublicMethod,\n\tdiv = \"div\",\n\trequests = 0,\n\tpreviousCSS = {},\n\tinit;\n\n\t// ****************\n\t// HELPER FUNCTIONS\n\t// ****************\n\n\t// Convenience function for creating new jQuery objects\n\tfunction $tag(tag, id, css) {\n\t\tvar element = document.createElement(tag);\n\n\t\tif (id) {\n\t\t\telement.id = prefix + id;\n\t\t}\n\n\t\tif (css) {\n\t\t\telement.style.cssText = css;\n\t\t}\n\n\t\treturn $(element);\n\t}\n\n\t// Get the window height using innerHeight when available to avoid an issue with iOS\n\t// http://bugs.jquery.com/ticket/6724\n\tfunction winheight() {\n\t\treturn window.innerHeight ? window.innerHeight : $(window).height();\n\t}\n\n\tfunction Settings(element, options) {\n\t\tif (options !== Object(options)) {\n\t\t\toptions = {};\n\t\t}\n\n\t\tthis.cache = {};\n\t\tthis.el = element;\n\n\t\tthis.value = function(key) {\n\t\t\tvar dataAttr;\n\n\t\t\tif (this.cache[key] === undefined) {\n\t\t\t\tdataAttr = $(this.el).attr('data-cbox-'+key);\n\n\t\t\t\tif (dataAttr !== undefined) {\n\t\t\t\t\tthis.cache[key] = dataAttr;\n\t\t\t\t} else if (options[key] !== undefined) {\n\t\t\t\t\tthis.cache[key] = options[key];\n\t\t\t\t} else if (defaults[key] !== undefined) {\n\t\t\t\t\tthis.cache[key] = defaults[key];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.cache[key];\n\t\t};\n\n\t\tthis.get = function(key) {\n\t\t\tvar value = this.value(key);\n\t\t\treturn $.isFunction(value) ? value.call(this.el, this) : value;\n\t\t};\n\t}\n\n\t// Determine the next and previous members in a group.\n\tfunction getIndex(increment) {\n\t\tvar\n\t\tmax = $related.length,\n\t\tnewIndex = (index + increment) % max;\n\n\t\treturn (newIndex < 0) ? max + newIndex : newIndex;\n\t}\n\n\t// Convert '%' and 'px' values to integers\n\tfunction setSize(size, dimension) {\n\t\treturn Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : winheight()) / 100) : 1) * parseInt(size, 10));\n\t}\n\n\t// Checks an href to see if it is a photo.\n\t// There is a force photo option (photo: true) for hrefs that cannot be matched by the regex.\n\tfunction isImage(settings, url) {\n\t\treturn settings.get('photo') || settings.get('photoRegex').test(url);\n\t}\n\n\tfunction retinaUrl(settings, url) {\n\t\treturn settings.get('retinaUrl') && window.devicePixelRatio > 1 ? url.replace(settings.get('photoRegex'), settings.get('retinaSuffix')) : url;\n\t}\n\n\tfunction trapFocus(e) {\n\t\tif ('contains' in $box[0] && !$box[0].contains(e.target) && e.target !== $overlay[0]) {\n\t\t\te.stopPropagation();\n\t\t\t$box.focus();\n\t\t}\n\t}\n\n\tfunction setClass(str) {\n\t\tif (setClass.str !== str) {\n\t\t\t$box.add($overlay).removeClass(setClass.str).addClass(str);\n\t\t\tsetClass.str = str;\n\t\t}\n\t}\n\n\tfunction getRelated(rel) {\n\t\tindex = 0;\n\n\t\tif (rel && rel !== false && rel !== 'nofollow') {\n\t\t\t$related = $('.' + boxElement).filter(function () {\n\t\t\t\tvar options = $.data(this, colorbox);\n\t\t\t\tvar settings = new Settings(this, options);\n\t\t\t\treturn (settings.get('rel') === rel);\n\t\t\t});\n\t\t\tindex = $related.index(settings.el);\n\n\t\t\t// Check direct calls to Colorbox.\n\t\t\tif (index === -1) {\n\t\t\t\t$related = $related.add(settings.el);\n\t\t\t\tindex = $related.length - 1;\n\t\t\t}\n\t\t} else {\n\t\t\t$related = $(settings.el);\n\t\t}\n\t}\n\n\tfunction trigger(event) {\n\t\t// for external use\n\t\t$(document).trigger(event);\n\t\t// for internal use\n\t\t$events.triggerHandler(event);\n\t}\n\n\tvar slideshow = (function(){\n\t\tvar active,\n\t\t\tclassName = prefix + \"Slideshow_\",\n\t\t\tclick = \"click.\" + prefix,\n\t\t\ttimeOut;\n\n\t\tfunction clear () {\n\t\t\tclearTimeout(timeOut);\n\t\t}\n\n\t\tfunction set() {\n\t\t\tif (settings.get('loop') || $related[index + 1]) {\n\t\t\t\tclear();\n\t\t\t\ttimeOut = setTimeout(publicMethod.next, settings.get('slideshowSpeed'));\n\t\t\t}\n\t\t}\n\n\t\tfunction start() {\n\t\t\t$slideshow\n\t\t\t\t.html(settings.get('slideshowStop'))\n\t\t\t\t.unbind(click)\n\t\t\t\t.one(click, stop);\n\n\t\t\t$events\n\t\t\t\t.bind(event_complete, set)\n\t\t\t\t.bind(event_load, clear);\n\n\t\t\t$box.removeClass(className + \"off\").addClass(className + \"on\");\n\t\t}\n\n\t\tfunction stop() {\n\t\t\tclear();\n\n\t\t\t$events\n\t\t\t\t.unbind(event_complete, set)\n\t\t\t\t.unbind(event_load, clear);\n\n\t\t\t$slideshow\n\t\t\t\t.html(settings.get('slideshowStart'))\n\t\t\t\t.unbind(click)\n\t\t\t\t.one(click, function () {\n\t\t\t\t\tpublicMethod.next();\n\t\t\t\t\tstart();\n\t\t\t\t});\n\n\t\t\t$box.removeClass(className + \"on\").addClass(className + \"off\");\n\t\t}\n\n\t\tfunction reset() {\n\t\t\tactive = false;\n\t\t\t$slideshow.hide();\n\t\t\tclear();\n\t\t\t$events\n\t\t\t\t.unbind(event_complete, set)\n\t\t\t\t.unbind(event_load, clear);\n\t\t\t$box.removeClass(className + \"off \" + className + \"on\");\n\t\t}\n\n\t\treturn function(){\n\t\t\tif (active) {\n\t\t\t\tif (!settings.get('slideshow')) {\n\t\t\t\t\t$events.unbind(event_cleanup, reset);\n\t\t\t\t\treset();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (settings.get('slideshow') && $related[1]) {\n\t\t\t\t\tactive = true;\n\t\t\t\t\t$events.one(event_cleanup, reset);\n\t\t\t\t\tif (settings.get('slideshowAuto')) {\n\t\t\t\t\t\tstart();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstop();\n\t\t\t\t\t}\n\t\t\t\t\t$slideshow.show();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t}());\n\n\n\tfunction launch(element) {\n\t\tvar options;\n\n\t\tif (!closing) {\n\n\t\t\toptions = $(element).data(colorbox);\n\n\t\t\tsettings = new Settings(element, options);\n\n\t\t\tgetRelated(settings.get('rel'));\n\n\t\t\tif (!open) {\n\t\t\t\topen = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.\n\n\t\t\t\tsetClass(settings.get('className'));\n\n\t\t\t\t// Show colorbox so the sizes can be calculated in older versions of jQuery\n\t\t\t\t$box.css({visibility:'hidden', display:'block', opacity:''});\n\n\t\t\t\t$loaded = $tag(div, 'LoadedContent', 'width:0; height:0; overflow:hidden; visibility:hidden');\n\t\t\t\t$content.css({width:'', height:''}).append($loaded);\n\n\t\t\t\t// Cache values needed for size calculations\n\t\t\t\tinterfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();\n\t\t\t\tinterfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();\n\t\t\t\tloadedHeight = $loaded.outerHeight(true);\n\t\t\t\tloadedWidth = $loaded.outerWidth(true);\n\n\t\t\t\t// Opens inital empty Colorbox prior to content being loaded.\n\t\t\t\tvar initialWidth = setSize(settings.get('initialWidth'), 'x');\n\t\t\t\tvar initialHeight = setSize(settings.get('initialHeight'), 'y');\n\t\t\t\tvar maxWidth = settings.get('maxWidth');\n\t\t\t\tvar maxHeight = settings.get('maxHeight');\n\n\t\t\t\tsettings.w = Math.max((maxWidth !== false ? Math.min(initialWidth, setSize(maxWidth, 'x')) : initialWidth) - loadedWidth - interfaceWidth, 0);\n\t\t\t\tsettings.h = Math.max((maxHeight !== false ? Math.min(initialHeight, setSize(maxHeight, 'y')) : initialHeight) - loadedHeight - interfaceHeight, 0);\n\n\t\t\t\t$loaded.css({width:'', height:settings.h});\n\t\t\t\tpublicMethod.position();\n\n\t\t\t\ttrigger(event_open);\n\t\t\t\tsettings.get('onOpen');\n\n\t\t\t\t$groupControls.add($title).hide();\n\n\t\t\t\t$box.focus();\n\n\t\t\t\tif (settings.get('trapFocus')) {\n\t\t\t\t\t// Confine focus to the modal\n\t\t\t\t\t// Uses event capturing that is not supported in IE8-\n\t\t\t\t\tif (document.addEventListener) {\n\n\t\t\t\t\t\tdocument.addEventListener('focus', trapFocus, true);\n\n\t\t\t\t\t\t$events.one(event_closed, function () {\n\t\t\t\t\t\t\tdocument.removeEventListener('focus', trapFocus, true);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Return focus on closing\n\t\t\t\tif (settings.get('returnFocus')) {\n\t\t\t\t\t$events.one(event_closed, function () {\n\t\t\t\t\t\t$(settings.el).focus();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar opacity = parseFloat(settings.get('opacity'));\n\t\t\t$overlay.css({\n\t\t\t\topacity: opacity === opacity ? opacity : '',\n\t\t\t\tcursor: settings.get('overlayClose') ? 'pointer' : '',\n\t\t\t\tvisibility: 'visible'\n\t\t\t}).show();\n\n\t\t\tif (settings.get('closeButton')) {\n\t\t\t\t$close.html(settings.get('close')).appendTo($content);\n\t\t\t} else {\n\t\t\t\t$close.appendTo('
    '); // replace with .detach() when dropping jQuery < 1.4\n\t\t\t}\n\n\t\t\tload();\n\t\t}\n\t}\n\n\t// Colorbox's markup needs to be added to the DOM prior to being called\n\t// so that the browser will go ahead and load the CSS background images.\n\tfunction appendHTML() {\n\t\tif (!$box) {\n\t\t\tinit = false;\n\t\t\t$window = $(window);\n\t\t\t$box = $tag(div).attr({\n\t\t\t\tid: colorbox,\n\t\t\t\t'class': $.support.opacity === false ? prefix + 'IE' : '', // class for optional IE8 & lower targeted CSS.\n\t\t\t\trole: 'dialog',\n\t\t\t\ttabindex: '-1'\n\t\t\t}).hide();\n\t\t\t$overlay = $tag(div, \"Overlay\").hide();\n\t\t\t$loadingOverlay = $([$tag(div, \"LoadingOverlay\")[0],$tag(div, \"LoadingGraphic\")[0]]);\n\t\t\t$wrap = $tag(div, \"Wrapper\");\n\t\t\t$content = $tag(div, \"Content\").append(\n\t\t\t\t$title = $tag(div, \"Title\"),\n\t\t\t\t$current = $tag(div, \"Current\"),\n\t\t\t\t$prev = $('