{"version":3,"file":"/js/front.js","mappings":"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","sources":["webpack:///./resources/assets/js/common.js","webpack:///./resources/assets/js/common/countdown.js","webpack:///./resources/assets/js/common/password-strength.js","webpack:///./resources/assets/js/front/base.js","webpack:///./resources/assets/js/front/custom.js","webpack:///./resources/assets/js/front/index.js","webpack:///./resources/assets/js/front/radio.js","webpack:///./resources/assets/js/front/swiper-setup.js","webpack:///./resources/assets/js/front/taketime.js","webpack:///./node_modules/bootstrap-datepicker/dist/js/bootstrap-datepicker.js","webpack:///./node_modules/bootstrap-sass/assets/javascripts/bootstrap.js","webpack:///./node_modules/codemirror-spell-checker/src/js/spell-checker.js","webpack:///./node_modules/codemirror/addon/display/fullscreen.js","webpack:///./node_modules/codemirror/addon/display/placeholder.js","webpack:///./node_modules/codemirror/addon/edit/continuelist.js","webpack:///./node_modules/codemirror/addon/mode/overlay.js","webpack:///./node_modules/codemirror/addon/selection/mark-selection.js","webpack:///./node_modules/codemirror/lib/codemirror.js","webpack:///./node_modules/codemirror/mode/gfm/gfm.js","webpack:///./node_modules/codemirror/mode/markdown/markdown.js","webpack:///./node_modules/codemirror/mode/meta.js","webpack:///./node_modules/codemirror/mode/xml/xml.js","webpack:///./node_modules/core-js/internals/a-callable.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/array-from.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/array-method-is-strict.js","webpack:///./node_modules/core-js/internals/array-slice-simple.js","webpack:///./node_modules/core-js/internals/array-slice.js","webpack:///./node_modules/core-js/internals/array-sort.js","webpack:///./node_modules/core-js/internals/array-species-constructor.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/core-js/internals/define-built-in.js","webpack:///./node_modules/core-js/internals/define-built-ins.js","webpack:///./node_modules/core-js/internals/define-global-property.js","webpack:///./node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/core-js/internals/dom-token-list-prototype.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/core-js/internals/function-apply.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/core-js/internals/function-bind-native.js","webpack:///./node_modules/core-js/internals/function-call.js","webpack:///./node_modules/core-js/internals/function-name.js","webpack:///./node_modules/core-js/internals/function-uncurry-this.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/get-iterator.js","webpack:///./node_modules/core-js/internals/get-method.js","webpack:///./node_modules/core-js/internals/get-substitution.js","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/has-own-property.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/is-callable.js","webpack:///./node_modules/core-js/internals/is-constructor.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/is-symbol.js","webpack:///./node_modules/core-js/internals/iterator-close.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/length-of-array-like.js","webpack:///./node_modules/core-js/internals/make-built-in.js","webpack:///./node_modules/core-js/internals/math-trunc.js","webpack:///./node_modules/core-js/internals/native-symbol-registry.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/internals/native-url.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/object-is-prototype-of.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/internals/regexp-get-flags.js","webpack:///./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///./node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack:///./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/same-value.js","webpack:///./node_modules/core-js/internals/schedulers-fix.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/internals/symbol-define-to-primitive.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/to-integer-or-infinity.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/to-property-key.js","webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/core-js/internals/to-string.js","webpack:///./node_modules/core-js/internals/try-to-string.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack:///./node_modules/core-js/internals/validate-arguments-length.js","webpack:///./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/core-js/modules/es.array.from.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/modules/es.array.slice.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/core-js/modules/es.json.stringify.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-symbols.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/modules/es.string.match.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/core-js/modules/es.symbol.constructor.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/core-js/modules/es.symbol.for.js","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/core-js/modules/es.symbol.key-for.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/core-js/modules/web.set-interval.js","webpack:///./node_modules/core-js/modules/web.set-timeout.js","webpack:///./node_modules/core-js/modules/web.timers.js","webpack:///./node_modules/core-js/modules/web.url-search-params.constructor.js","webpack:///./node_modules/core-js/modules/web.url-search-params.js","webpack:///./node_modules/inputmask/dist/inputmask.js","webpack:///./node_modules/jquery-countdown/dist/jquery.countdown.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/js.cookie/dst/Cookie.js","webpack:///./node_modules/simplemde/src/js/codemirror/tablist.js","webpack:///./node_modules/simplemde/src/js/simplemde.js","webpack:///./node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/swiper/esm/utils/get-support.js","webpack:///./node_modules/swiper/esm/utils/get-device.js","webpack:///./node_modules/swiper/esm/utils/get-browser.js","webpack:///./node_modules/swiper/esm/modules/resize/resize.js","webpack:///./node_modules/swiper/esm/modules/observer/observer.js","webpack:///./node_modules/swiper/esm/components/core/events-emitter.js","webpack:///./node_modules/swiper/esm/components/core/update/index.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSize.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlides.js","webpack:///./node_modules/swiper/esm/components/core/update/updateAutoHeight.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesOffset.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesProgress.js","webpack:///./node_modules/swiper/esm/components/core/update/updateProgress.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesClasses.js","webpack:///./node_modules/swiper/esm/components/core/update/updateActiveIndex.js","webpack:///./node_modules/swiper/esm/components/core/update/updateClickedSlide.js","webpack:///./node_modules/swiper/esm/components/core/translate/index.js","webpack:///./node_modules/swiper/esm/components/core/translate/getTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/setTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/minTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/maxTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/translateTo.js","webpack:///./node_modules/swiper/esm/components/core/slide/index.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideTo.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToLoop.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideNext.js","webpack:///./node_modules/swiper/esm/components/core/slide/slidePrev.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideReset.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToClosest.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToClickedSlide.js","webpack:///./node_modules/swiper/esm/components/core/loop/index.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopCreate.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopFix.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopDestroy.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchStart.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchMove.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchEnd.js","webpack:///./node_modules/swiper/esm/components/core/events/onResize.js","webpack:///./node_modules/swiper/esm/components/core/events/onClick.js","webpack:///./node_modules/swiper/esm/components/core/events/onScroll.js","webpack:///./node_modules/swiper/esm/components/core/events/index.js","webpack:///./node_modules/swiper/esm/components/core/classes/index.js","webpack:///./node_modules/swiper/esm/components/core/classes/addClasses.js","webpack:///./node_modules/swiper/esm/components/core/classes/removeClasses.js","webpack:///./node_modules/swiper/esm/components/core/check-overflow/index.js","webpack:///./node_modules/swiper/esm/components/core/defaults.js","webpack:///./node_modules/swiper/esm/components/core/core-class.js","webpack:///./node_modules/swiper/esm/components/core/modular.js","webpack:///./node_modules/swiper/esm/components/core/transition/index.js","webpack:///./node_modules/swiper/esm/components/core/transition/setTransition.js","webpack:///./node_modules/swiper/esm/components/core/transition/transitionStart.js","webpack:///./node_modules/swiper/esm/components/core/transition/transitionEnd.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/index.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/setGrabCursor.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/unsetGrabCursor.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/index.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/appendSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/prependSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/addSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/removeSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/removeAllSlides.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/index.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/setBreakpoint.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/getBreakpoint.js","webpack:///./node_modules/swiper/esm/components/core/images/index.js","webpack:///./node_modules/swiper/esm/components/core/images/loadImage.js","webpack:///./node_modules/swiper/esm/components/core/images/preloadImages.js","webpack:///./node_modules/dom7/dom7.esm.js","webpack:///./node_modules/swiper/esm/utils/dom.js","webpack:///./node_modules/swiper/esm/utils/utils.js","webpack:///./node_modules/swiper/esm/components/virtual/virtual.js","webpack:///./node_modules/swiper/esm/components/keyboard/keyboard.js","webpack:///./node_modules/swiper/esm/components/mousewheel/mousewheel.js","webpack:///./node_modules/swiper/esm/components/navigation/navigation.js","webpack:///./node_modules/swiper/esm/components/pagination/pagination.js","webpack:///./node_modules/swiper/esm/components/scrollbar/scrollbar.js","webpack:///./node_modules/swiper/esm/components/parallax/parallax.js","webpack:///./node_modules/swiper/esm/components/zoom/zoom.js","webpack:///./node_modules/swiper/esm/components/lazy/lazy.js","webpack:///./node_modules/swiper/esm/components/controller/controller.js","webpack:///./node_modules/swiper/esm/components/a11y/a11y.js","webpack:///./node_modules/swiper/esm/components/history/history.js","webpack:///./node_modules/swiper/esm/components/hash-navigation/hash-navigation.js","webpack:///./node_modules/swiper/esm/components/autoplay/autoplay.js","webpack:///./node_modules/swiper/esm/components/effect-fade/effect-fade.js","webpack:///./node_modules/swiper/esm/components/effect-cube/effect-cube.js","webpack:///./node_modules/swiper/esm/components/effect-flip/effect-flip.js","webpack:///./node_modules/swiper/esm/components/effect-coverflow/effect-coverflow.js","webpack:///./node_modules/swiper/esm/components/thumbs/thumbs.js","webpack:///./node_modules/typo-js/typo.js","webpack:///./node_modules/marked/lib/marked.cjs","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///./resources/assets/js/front.js"],"sourcesContent":["try {\r\n window.$ = window.jQuery = require('jquery');\r\n window.SimpleMDE = require('simplemde')\r\n\r\n require('bootstrap-sass');\r\n\r\n} catch (e) {\r\n}\r\n","require('jquery-countdown');\r\n\r\nlet $clock = $('.js-countdown');\r\n$(document).ready(function () {\r\n if ($clock.length > 0) {\r\n let countdown = $clock.data('expire');\r\n\r\n $clock.countdown(countdown).on('update.countdown', function (event) {\r\n let weeks = parseInt(event.strftime('%-w'), 10);\r\n if (weeks > 0) {\r\n $clock.find('div[data-type=\"weeks\"] .__digit').html(weeks < 10 ? ((weeks === 0 ? '' : '0') + weeks) : weeks);\r\n $clock.find('div[data-type=\"weeks\"] .__label').html(event.strftime('Week%!w'));\r\n } else {\r\n $clock.find('div[data-type=\"weeks\"]').remove();\r\n }\r\n\r\n let days = parseInt(event.strftime('%-d'), 10);\r\n $clock.find('div[data-type=\"days\"] .__digit').html(days < 10 ? (days === 0 ? '00' : '0' + days) : days);\r\n $clock.find('div[data-type=\"days\"] .__label').html(event.strftime('Day%!d'));\r\n\r\n $clock.find('div[data-type=\"hours\"] .__digit').html(event.strftime('%H'));\r\n $clock.find('div[data-type=\"hours\"] .__label').html(event.strftime('Hour%!H'));\r\n\r\n $clock.find('div[data-type=\"minutes\"] .__digit').html(event.strftime('%M'));\r\n $clock.find('div[data-type=\"minutes\"] .__label').html(event.strftime('Minute%!M'));\r\n\r\n $clock.find('div[data-type=\"seconds\"] .__digit').html(event.strftime('%S'));\r\n $clock.find('div[data-type=\"seconds\"] .__label').html(event.strftime('Second%!S'));\r\n\r\n $clock.removeClass('hide');\r\n });\r\n }\r\n});\r\n","let $strengthIndicator = $('.js-strength-indicator');\r\nif ($strengthIndicator.length > 0) {\r\n $(document).on('keyup', 'input[name=\"password\"]', function () {\r\n let value = $(this).val(),\r\n total = 0;\r\n\r\n $strengthIndicator.removeClass(function (index, css) {\r\n return (css.match(/(^|\\s)__\\S+/g) || []).join(' ');\r\n });\r\n\r\n if (value.length >= 6) {\r\n total++;\r\n }\r\n\r\n if (/[A-Z]/.test(value)) {\r\n total++;\r\n }\r\n\r\n if (/[0-9]/.test(value)) {\r\n total++;\r\n }\r\n\r\n if (/^[a-zA-Z0-9- ]*$/.test(value) === false) {\r\n total++;\r\n }\r\n\r\n if (value.length < 6) {\r\n total = 0;\r\n $strengthIndicator.addClass('_short');\r\n } else {\r\n $strengthIndicator.removeClass('_short');\r\n }\r\n\r\n switch (total) {\r\n case 1:\r\n $strengthIndicator.addClass('__weak');\r\n break;\r\n case 2:\r\n $strengthIndicator.addClass('__bad');\r\n break;\r\n case 3:\r\n $strengthIndicator.addClass('__good');\r\n break;\r\n case 4:\r\n $strengthIndicator.addClass('__strong');\r\n break;\r\n }\r\n });\r\n}\r\n","// let Inputmask = require('inputmask');\r\n\r\nimport Inputmask from \"inputmask\";\r\n\r\nwindow.mobileCheck = function () {\r\n let check = false;\r\n (function (a) {\r\n // noinspection RegExpSingleCharAlternation,RegExpRedundantEscape\r\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) check = true;\r\n })(navigator.userAgent || navigator.vendor || window.opera);\r\n return check;\r\n};\r\n\r\n// region Radio and Checkbox Fix\r\n$('.radio-label').keypress(function (e) {\r\n if (e.keyCode === 0 || e.keyCode === 32) {\r\n $(this).find('input').prop('checked', true);\r\n }\r\n});\r\n$(document).on('click', '.radio-wrapper', function (e) {\r\n let name = $(this).find('input').attr('name')\r\n\r\n $('input[name=\"' + name + '\"]').each(function () {\r\n $(this).removeAttr('checked');\r\n });\r\n\r\n $(this).find('input').prop('checked', true);\r\n});\r\n\r\n$('.checkbox-label').keypress(function (e) {\r\n if (e.keyCode === 0 || e.keyCode === 32) {\r\n let $ele = $(this).find('input');\r\n $ele.prop('checked', !$ele.is(':checked'));\r\n }\r\n});\r\n// endregion\r\n\r\n// region Modal trap keyboard focus function\r\nfunction trapKeyboardFocus(selector_id) {\r\n const modal = document.querySelector(selector_id); // select the modal by it's id\r\n if (!modal) {\r\n console.error('Modal does not exist: ' + selector_id);\r\n return;\r\n }\r\n\r\n // add all the elements inside modal which you want to make focusable\r\n const focusableElements =\r\n '[href], button, input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\r\n\r\n const firstFocusableElement = modal.querySelectorAll(focusableElements)[0]; // get first element to be focused inside modal\r\n const focusableContent = modal.querySelectorAll(focusableElements);\r\n const lastFocusableElement = focusableContent[focusableContent.length - 1]; // get last element to be focused inside modal\r\n\r\n document.addEventListener('keydown', function (e) {\r\n let isTabPressed = e.key === 'Tab';\r\n\r\n if (!isTabPressed) {\r\n return;\r\n }\r\n\r\n if (e.shiftKey) { // if shift key pressed for shift + tab combination\r\n if (document.activeElement === firstFocusableElement) {\r\n console.log('shift');\r\n lastFocusableElement.focus(); // add focus for the last focusable element\r\n e.preventDefault();\r\n }\r\n } else { // if tab key is pressed\r\n if (document.activeElement === lastFocusableElement) { // if focused has reached to last focusable element then focus first focusable element after pressing tab\r\n console.log('tab');\r\n firstFocusableElement.focus(); // add focus for the first focusable element\r\n e.preventDefault();\r\n }\r\n }\r\n });\r\n firstFocusableElement.focus();\r\n}\r\n\r\n// endregion\r\n\r\n//region Side Menu Toggle (hamburger on mobile)\r\n$(document).on('click', '.js-toggle-side-menu', function (event) {\r\n event.preventDefault();\r\n let $sideMenu = $('.js-side-menu');\r\n $sideMenu.toggleClass('open');\r\n\r\n if ($sideMenu.hasClass('open')) {\r\n $('#js-scrolled-focus-mobile').attr('aria-expanded', 'true');\r\n\r\n $sideMenu.attr('aria-hidden', 'false');\r\n $sideMenu.find('.side-menu-header').attr('aria-hidden', 'false');\r\n $sideMenu.find('a').attr('tabindex', '0').attr('aria-hidden', 'false');\r\n // set modal content exposed to accessibility tree\r\n $('.js-close-menu').attr('tabindex', '0');\r\n $('.js-menu-item').attr('tabindex', '0');\r\n trapKeyboardFocus('#js-side-modal');\r\n\r\n } else {\r\n $('#js-scrolled-focus-mobile').attr('aria-expanded', 'false');\r\n\r\n $sideMenu.attr('aria-hidden', 'true');\r\n $sideMenu.find('.side-menu-header').attr('aria-hidden', 'true');\r\n $sideMenu.find('a').attr('tabindex', '-1').attr('aria-hidden', 'true');\r\n $('.js-close-menu').attr('tabindex', '-1');\r\n $('.js-menu-item').attr('tabindex', '-1');\r\n // $('.js-accessible-logo').find('a').focus();\r\n }\r\n});\r\n// endregion\r\n\r\n// region Modal Window Panel Collapse\r\n$(document).on('hide.bs.collapse', '.collapse', function () {\r\n $('.accordion-button-icon').removeClass('minus').addClass('plus');\r\n}).on('show.bs.collapse', function () {\r\n $('.accordion-button-icon').removeClass('plus').addClass('minus');\r\n});\r\n\r\n$(document).on('show.bs.modal', '.modal', function () {\r\n $('.modal .modal-body').css({'overflow-y': 'auto', 'max-height': $(window).height() * 0.7});\r\n});\r\n// endregion\r\n\r\n// region Range Slider\r\nif ($('.js-input-slider').length > 0) {\r\n $(document).on('input', '.js-input-slider', function () {\r\n let self = $(this);\r\n let max = parseInt(self.attr('max'), 10);\r\n let totalValue = 0;\r\n let othersValue = 0;\r\n\r\n $('.js-input-slider').each(function () {\r\n totalValue += parseInt($(this).val(), 10);\r\n if ($(this).attr('name') !== self.attr('name')) {\r\n othersValue += parseInt($(this).val(), 10);\r\n }\r\n });\r\n\r\n let currentValue = parseInt(self.val(), 10);\r\n if (totalValue > max) {\r\n currentValue = max - othersValue;\r\n self.val(currentValue)\r\n }\r\n\r\n let $output = $(this).closest('.slider').find('output');\r\n\r\n $output.val('£' + currentValue)\r\n });\r\n}\r\n// endregion\r\n\r\n// region Cookie Banner\r\n$(document).ready(function () {\r\n let $cookieContainer = $('.js-cookie-modal-container');\r\n\r\n if ($cookieContainer.attr('data-can-open') === 'true') {\r\n $cookieContainer.addClass('open');\r\n $('body').addClass('open');\r\n trapKeyboardFocus('#js-cookie-banner-modal');\r\n }\r\n});\r\n\r\n$(document).on('click', '.js-cookie-details', function (event) {\r\n event.preventDefault();\r\n\r\n let $cookieBarContainer = $('.js-cookie-sidebar');\r\n $cookieBarContainer.removeClass('hide');\r\n $('.js-cookie-modal-container').addClass('show-sidebar');\r\n\r\n // when banner is triggered & open, trap focus within for keyboard users (accessibility)\r\n $cookieBarContainer.toggleClass('open');\r\n if ($cookieBarContainer.hasClass('open')) {\r\n\r\n $cookieBarContainer.removeAttr('aria-hidden');\r\n // set modal content exposed to accessibility tree\r\n $('.js-close-banner').attr('tabindex', '0').removeAttr('aria-hidden');\r\n $('.js-banner-item').attr('tabindex', '0').removeAttr('aria-hidden');\r\n trapKeyboardFocus('#js-cookie-banner-sidebar');\r\n } else {\r\n $cookieBarContainer.find('.js-banner-item').attr('tabindex', '-1').attr('aria-hidden', true);\r\n $cookieBarContainer.attr('aria-hidden', true);\r\n if (screen.width >= 768) {\r\n document.getElementById(\"js-scrolledfocusdesktop\").focus();\r\n } else {\r\n document.getElementById(\"js-scrolled-focus-mobile\").focus();\r\n }\r\n }\r\n});\r\n\r\n$(document).on('click', '.js-cookie-details-close', function (event) {\r\n event.preventDefault();\r\n\r\n $('.js-cookie-sidebar').addClass('hide');\r\n $('.js-cookie-modal-container').removeClass('show-sidebar');\r\n});\r\n\r\n$(document).on('click', '.js-cookie-sidebar-toggle', function (event) {\r\n event.preventDefault();\r\n\r\n let $this = $(this);\r\n\r\n let value = $this.attr('data-value');\r\n\r\n if (value === '0') {\r\n $this.removeClass('fa-toggle-off');\r\n $this.addClass('fa-toggle-on');\r\n $this.attr('data-value', 1);\r\n } else {\r\n $this.addClass('fa-toggle-off');\r\n $this.removeClass('fa-toggle-on');\r\n $this.attr('data-value', 0);\r\n }\r\n});\r\n\r\n$(document).on('click', '.js-cookie-toggle-details', function (event) {\r\n event.preventDefault();\r\n\r\n let category = $(this).attr('data-category');\r\n\r\n $('.js-cookie-sidebar-content-list[data-category=\"' + category + '\"]').removeClass('no-show');\r\n});\r\n\r\n$(document).on('click', '.js-cookie-sidebar-list-hide', function (event) {\r\n event.preventDefault();\r\n\r\n $(this).closest('.js-cookie-sidebar-content-list').addClass('no-show');\r\n});\r\n\r\n// change the state of switch checkbox in banner on click\r\nfunction toggleCookieSwitch(self) {\r\n let state = $(self).attr('aria-checked');\r\n let isState = (state === 'true');\r\n $(self).attr('aria-checked', !isState)\r\n $(self).attr('data-value', !isState ? 1 : 0)\r\n}\r\n\r\n$(document).on('click', '.cookie-sidebar-toggle', function () {\r\n toggleCookieSwitch(this);\r\n});\r\n\r\n// change the state of switch checkbox in sidebar on press enter, left or right\r\n$(document).on('keyup', '.cookie-sidebar-toggle', function (e) {\r\n if ((e.keyCode ? e.keyCode : e.which) === 13 || (e.keyCode ? e.keyCode : e.which) === 37 || (e.keyCode ? e.keyCode : e.which) === 39) {\r\n $(this).trigger('click');\r\n }\r\n});\r\n\r\n$(document).on('click', '.js-cookie-accept-all', function (event) {\r\n event.preventDefault();\r\n\r\n $.ajax({\r\n method: 'get',\r\n url: $('.js-cookie-url').attr('data-url'),\r\n dataType: 'json',\r\n data: {all: 'true'},\r\n headers: {'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')},\r\n success: function () {\r\n $('.js-cookie-sidebar').addClass('hide');\r\n $('.js-cookie-modal-container').removeClass('open');\r\n $('body').removeClass('open');\r\n $('.js-accessible-logo').find('a').focus();\r\n },\r\n });\r\n});\r\n\r\n$(document).on('click', '.js-cookie-save', function (event) {\r\n event.preventDefault();\r\n\r\n $.ajax({\r\n method: 'get',\r\n url: $('.js-cookie-url').attr('data-url'),\r\n dataType: 'json',\r\n data: {\r\n strictly_necessary: $('.js-cookie-sidebar-toggle[data-category=\"strictly_necessary\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\r\n first_party_performance: $('.js-cookie-sidebar-toggle[data-category=\"first_party_performance\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\r\n third_party_performance: $('.js-cookie-sidebar-toggle[data-category=\"third_party_performance\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\r\n functional: $('.js-cookie-sidebar-toggle[data-category=\"functional\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\r\n targeting: $('.js-cookie-sidebar-toggle[data-category=\"targeting\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\r\n },\r\n headers: {'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')},\r\n success: function () {\r\n $('.js-cookie-sidebar').addClass('hide');\r\n $('.js-cookie-modal-container').removeClass('open');\r\n $('body').removeClass('open');\r\n $('.js-accessible-logo').find('a').focus();\r\n },\r\n });\r\n});\r\n\r\n$(document).on('click', '.js-cookie-reject', function (event) {\r\n event.preventDefault();\r\n\r\n $.ajax({\r\n method: 'get',\r\n url: $('.js-cookie-url').attr('data-url'),\r\n dataType: 'json',\r\n data: {\r\n strictly_necessary: 'disabled',\r\n first_party_performance: 'disabled',\r\n third_party_performance: 'disabled',\r\n functional: 'disabled',\r\n targeting: 'disabled',\r\n },\r\n headers: {'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')},\r\n success: function () {\r\n $('.js-cookie-sidebar').addClass('hide');\r\n $('.js-cookie-modal-container').removeClass('open');\r\n $('body').removeClass('open');\r\n $('.js-accessible-logo').find('a').focus();\r\n },\r\n });\r\n});\r\n// endregion\r\n\r\n$(function () {\r\n // region Scroll to Errors\r\n let $elementError = $('.form-group.has-error:first');\r\n if ($elementError.length > 0) {\r\n // scroll to error\r\n $('html, body').animate({\r\n scrollTop: $elementError.offset().top\r\n }, 100);\r\n }\r\n $elementError = $('.alert.alert-danger:first');\r\n if ($elementError.length > 0) {\r\n // scroll to error\r\n $('html, body').animate({\r\n scrollTop: $elementError.offset().top\r\n }, 100);\r\n }\r\n // endregion\r\n\r\n // region Scroll to message if on mobile\r\n if (window.mobileCheck()) {\r\n let $elementMessage = $('.alert');\r\n if ($elementMessage.length > 0) {\r\n $('html, body').animate({\r\n scrollTop: $elementMessage.offset().top\r\n }, 100);\r\n }\r\n }\r\n // endregion\r\n\r\n // region Date Picker\r\n let $datePickers = $('.date_picker');\r\n if ($datePickers.length > 0) {\r\n $datePickers.datepicker({\r\n format: \"dd-mm-yyyy\",\r\n todayHighlight: true,\r\n orientation: \"bottom auto\",\r\n autoclose: true,\r\n }).on('changeDate', function (selected) {\r\n $(this).trigger('focusout');\r\n });\r\n }\r\n // endregion\r\n\r\n Inputmask().mask($(\"input[data-inputmask]\"));\r\n});\r\n\r\n// region Message Scroll\r\nlet $chatArea = $('.js-messages');\r\n\r\n$(document).ready(function () {\r\n $chatArea.scrollTop($chatArea.prop('scrollHeight'));\r\n});\r\n// endregion\r\n\r\n// region Account JS\r\n$('.container.raf').on('click', '.js-social-whatsapp', function (event) {\r\n event.preventDefault();\r\n\r\n $('.js-social-form').attr('data-href', ($(this).attr('href'))).removeClass('hide');\r\n}).on('submit', '.js-social-form', function (event) {\r\n event.preventDefault();\r\n\r\n let url = $(this).attr('data-href');\r\n url = url.replace('[FRIENDS NUMBER]', $(this).find('input').val());\r\n\r\n window.open(url, '_blank');\r\n});\r\n// endregion\r\n\r\n// region Accordion Fix\r\n// $(document).on('click', '.simple-accordion .collapse-label', function (event) {\r\n// event.stopPropagation();\r\n// let $this = $(this);\r\n// let href;\r\n//\r\n// let parent = $this.data('parent');\r\n// let actives = parent && $(parent).find('.collapse.in');\r\n//\r\n// if (actives && actives.length) {\r\n// actives.collapse('hide');\r\n// }\r\n//\r\n// let target = $this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, ''); //strip for ie7\r\n//\r\n// if ($(target).length > 0) {\r\n// $(target).collapse('toggle');\r\n// }\r\n// });\r\n\r\n$(document).ready(function () {\r\n if (window.location.hash !== '' && $(window.location.hash).length > 0) {\r\n $(window.location.hash).find('.collapse-label').trigger('click');\r\n }\r\n});\r\n// endregion\r\n\r\n// region Tabs\r\n$(document).on('click', '.tabs > li', function () {\r\n $('.tabs > li > a').removeClass('active');\r\n $(this).find('a').addClass('active');\r\n});\r\n// endregion\r\n\r\n// region Claim Form Gift Select\r\n$(document).on('change', 'input[name=\"gift\"]', function () {\r\n // region Address\r\n let $addressFields = $('.js-address-fields');\r\n\r\n let addressCheck = JSON.parse($addressFields.attr('data-check'));\r\n let requireAddress = addressCheck[$(this).val()] === '1';\r\n\r\n $addressFields.find('input.form-control.js-required')\r\n .attr('aria-required', requireAddress)\r\n .attr('required', requireAddress);\r\n $('input[name=\"ra\"]').val(requireAddress ? 1 : 0);\r\n\r\n requireAddress ? $addressFields.removeClass('hide') : $addressFields.addClass('hide');\r\n // endregion\r\n\r\n // region Bank Fields\r\n let $bankFields = $('.js-bank-fields');\r\n\r\n let bankCheck = JSON.parse($bankFields.attr('data-check'));\r\n let requireBank = bankCheck[$(this).val()] === '1';\r\n\r\n $bankFields.find('input.form-control.js-required')\r\n .attr('aria-required', requireBank)\r\n .attr('required', requireBank);\r\n $('input[name=\"ba\"]').val(requireBank ? 1 : 0);\r\n\r\n requireBank ? $bankFields.removeClass('hide') : $bankFields.addClass('hide');\r\n // endregion\r\n});\r\n// endregion\r\n\r\n// region Address Select\r\nif ($('.js-get-address-list').length > 0) {\r\n $(document).on('click', '.js-get-address-list', function (event) {\r\n event.preventDefault();\r\n\r\n let addressType = $(this).attr('data-type');\r\n\r\n let postcode = $('[name=\"address[' + addressType + '][postcode]\"]').val() || $('[name=\"postcode\"]').val();\r\n\r\n if (postcode === '') {\r\n return;\r\n }\r\n\r\n let $addressListField = $('#address_list_' + addressType);\r\n\r\n $.ajax({\r\n method: 'GET',\r\n dataType: 'json',\r\n data: {postcode: postcode},\r\n url: $(this).attr('data-url'),\r\n success: function (response) {\r\n let option = $('')\r\n .val('')\r\n .attr('data-all', '')\r\n .html('Please Select');\r\n\r\n $addressListField.find('option').remove();\r\n $addressListField.append(option);\r\n $.each(response, function () {\r\n let display = this.address_1\r\n + (this.address_2 !== '' && this.address_2 !== null ? ', ' + this.address_2 : '')\r\n + ', ' + this.city_town;\r\n\r\n let option = $('')\r\n .val(this.id)\r\n .attr('data-all', JSON.stringify(this))\r\n .html(display);\r\n\r\n $addressListField.append(option);\r\n $addressListField.closest('.js-address-list').fadeIn();\r\n });\r\n\r\n $addressListField.prop('disabled', false);\r\n }\r\n });\r\n });\r\n\r\n $(document).on('change', '.js-address-select', function () {\r\n if ($(this).find('option:selected').attr('data-all') !== '') {\r\n let address = JSON.parse($(this).find('option:selected').attr('data-all'));\r\n\r\n let addressType = $(this).attr('data-type');\r\n\r\n $('[name=\"address[' + addressType + '][address_1]\"], [name=\"address_1\"]').val(address.address_1);\r\n $('[name=\"address[' + addressType + '][address_2]\"], [name=\"address_2\"]').val(address.address_2);\r\n $('[name=\"address[' + addressType + '][city_town]\"], [name=\"city_town\"]').val(address.city_town);\r\n $('[name=\"address[' + addressType + '][county]\"], [name=\"county\"]').val(address.county);\r\n $('[name=\"address[' + addressType + '][country]\"], [name=\"country\"]').val(address.country);\r\n }\r\n });\r\n}\r\n// endregion\r\n\r\n// region Accessibility\r\nfunction validateEmail(email) {\r\n // noinspection RegExpRedundantEscape\r\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(email);\r\n}\r\n\r\nfunction validateFormField() {\r\n let $this = $(this);\r\n let value = $this.val().trim();\r\n let id = $this.attr('id');\r\n let isRequired = $this[0].hasAttribute('aria-required') && $this.attr('aria-required') === 'true';\r\n let $confirmation = $('#' + id.replace('_confirmation', ''));\r\n let $formGroup = $this.closest('.form-group');\r\n let $errorMessage = $formGroup.find('div[aria-live] p');\r\n\r\n let errorMessage = '';\r\n let isInvalid = false;\r\n\r\n if (isRequired && value === '') {\r\n isInvalid = true;\r\n errorMessage = $('.js-accessible').attr('data-required');\r\n } else if ($this.attr('type') === 'email' && !validateEmail(value)) {\r\n isInvalid = true;\r\n errorMessage = $('.js-accessible').attr('data-email');\r\n } else if ($confirmation.length > 0 && $confirmation.val().trim() !== value) {\r\n isInvalid = true;\r\n errorMessage = $('.js-accessible').attr('data-confirm');\r\n } else if ($this[0].hasAttribute('data-inputmask') && !Inputmask().mask('#' + id).isComplete()) {\r\n isInvalid = true;\r\n errorMessage = $('.js-accessible').attr('data-inputmask');\r\n }\r\n\r\n $this.attr('aria-invalid', isInvalid);\r\n\r\n if (isInvalid) {\r\n $formGroup.removeClass('has-success').addClass('has-error');\r\n } else {\r\n $formGroup.removeClass('has-error').addClass('has-success');\r\n }\r\n\r\n $errorMessage.text(errorMessage);\r\n}\r\n\r\n// $(document).on('focusout', 'input:not([aria-disable=\"true\"])', validateFormField);\r\n// $(document).on('focusout', 'select:not([aria-disable=\"true\"])', validateFormField);\r\n// endregion\r\n\r\n// region Accessibility BackToTop scroll to top of the page with focus\r\n$(document).on('click', '#js-scroll-up', function (e) {\r\n e.preventDefault();\r\n document.body.scrollTop = document.documentElement.scrollTop = 0;\r\n setTimeout(function () {\r\n if (screen.width >= 768) {\r\n document.getElementById(\"js-scrolledfocusdesktop\").focus();\r\n } else {\r\n // $('.js-accessible-hamburger').find('a').focus();\r\n document.getElementById(\"js-scrolled-focus-mobile\").focus();\r\n }\r\n }, 1)\r\n\r\n});\r\n// endregion\r\n","// In the BP this should be empty. Enter your custom JS here\r\n\r\nfunction disallowEvent(event) {\r\n event.preventDefault();\r\n}\r\n\r\nconst disallowPasteFields = document.getElementsByClassName('js-disallow-paste');\r\n\r\nfor (const field of disallowPasteFields) {\r\n field.addEventListener('paste', disallowEvent);\r\n}\r\n\r\nconst revealCodeButton = document.getElementById('js-reveal-code');\r\n\r\nif (revealCodeButton) {\r\n /** @type HTMLDivElement */\r\n const codeContainer = revealCodeButton.nextElementSibling;\r\n\r\n revealCodeButton.addEventListener('click', function () {\r\n this.style.display = 'none';\r\n codeContainer.style.removeProperty('display');\r\n })\r\n}\r\n\r\n// HACK: Fix bug in Safari 15.4 where validation tooltip doesn't appear\r\nif (window.ApplePayError) {\r\n /**\r\n * @param {Event} event\r\n * @this HTMLFormElement\r\n */\r\n function submitEvent(event) {\r\n for (const element of this.elements) {\r\n if (!element.checkValidity()) {\r\n event.preventDefault();\r\n\r\n element.scrollIntoViewIfNeeded(true);\r\n element.focus();\r\n setTimeout(() => element.reportValidity(), 100);\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n for (const form of document.forms) {\r\n form.noValidate = true;\r\n form.addEventListener('submit', submitEvent);\r\n }\r\n}\r\n\r\nfor (const table of document.getElementsByTagName('table')) {\r\n const container = document.createElement('div');\r\n container.style.overflow = \"auto\";\r\n table.parentElement.insertBefore(container, table);\r\n container.appendChild(table);\r\n}\r\n\r\n// addEventListener('load', function() {\r\n// $('.js-do-play').trigger('click');\r\n// });\r\n","//from Node\r\nrequire('js.cookie');\r\nrequire('bootstrap-datepicker');\r\nrequire('swiper');\r\n\r\n//from local\r\nrequire('./radio');\r\nrequire('../common/password-strength');\r\nrequire('../common/countdown');\r\nrequire('./base');\r\nrequire('./swiper-setup');\r\nrequire('./taketime');\r\n// Enter the JS for your build here\r\nrequire('./custom');\r\n","let KEYCODE = {\r\n DOWN: 40,\r\n LEFT: 37,\r\n RIGHT: 39,\r\n SPACE: 32,\r\n UP: 38\r\n};\r\n\r\nwindow.addEventListener('load', function () {\r\n let radioButtons = document.querySelectorAll('[role=radio]');\r\n\r\n for (let i = 0; i < radioButtons.length; i++) {\r\n let rb = radioButtons[i];\r\n\r\n rb.addEventListener('click', clickRadioGroup);\r\n rb.addEventListener('keydown', keyDownRadioGroup);\r\n rb.addEventListener('focus', focusRadioButton);\r\n rb.addEventListener('blur', blurRadioButton);\r\n }\r\n});\r\n\r\nfunction firstRadioButton(node) {\r\n\r\n let first = node.parentNode.firstChild;\r\n\r\n while (first) {\r\n if (first.nodeType === Node.ELEMENT_NODE) {\r\n if (first.getAttribute(\"role\") === 'radio') return first;\r\n }\r\n first = first.nextSibling;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction lastRadioButton(node) {\r\n let last = node.parentNode.lastChild;\r\n\r\n while (last) {\r\n if (last.nodeType === Node.ELEMENT_NODE) {\r\n if (last.getAttribute(\"role\") === 'radio') return last;\r\n }\r\n last = last.previousSibling;\r\n }\r\n\r\n return last;\r\n}\r\n\r\nfunction nextRadioButton(node) {\r\n let next = node.nextSibling;\r\n\r\n while (next) {\r\n if (next.nodeType === Node.ELEMENT_NODE) {\r\n if (next.getAttribute(\"role\") === 'radio') return next;\r\n }\r\n next = next.nextSibling;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction previousRadioButton(node) {\r\n\r\n let prev = node.previousSibling;\r\n\r\n while (prev) {\r\n if (prev.nodeType === Node.ELEMENT_NODE) {\r\n if (prev.getAttribute(\"role\") === 'radio') return prev;\r\n }\r\n prev = prev.previousSibling;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction setRadioButton(node, state) {\r\n if (state === 'true') {\r\n node.tabIndex = 0;\r\n node.setAttribute('aria-checked', 'true');\r\n node.focus();\r\n $(node).find('input').trigger('click');\r\n $(node).find('input').attr('checked', 'checked');\r\n } else {\r\n node.setAttribute('aria-checked', 'false');\r\n $(node).find('input').attr('checked', false);\r\n node.tabIndex = -1;\r\n }\r\n}\r\n\r\nfunction clickRadioGroup(event) {\r\n let type = event.type;\r\n\r\n if (type === 'click') {\r\n // If either enter or space is pressed, execute the funtion\r\n\r\n let node = event.currentTarget;\r\n\r\n let radioButton = firstRadioButton(node);\r\n\r\n while (radioButton) {\r\n setRadioButton(radioButton, \"false\");\r\n radioButton = nextRadioButton(radioButton);\r\n }\r\n\r\n setRadioButton(node, \"true\");\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n}\r\n\r\nfunction keyDownRadioGroup(event) {\r\n let type = event.type;\r\n let next = false;\r\n\r\n if (type === \"keydown\") {\r\n let node = event.currentTarget;\r\n\r\n switch (event.keyCode) {\r\n case KEYCODE.DOWN:\r\n case KEYCODE.RIGHT:\r\n next = nextRadioButton(node);\r\n if (!next) next = firstRadioButton(node); //if node is the last node, node cycles to first.\r\n break;\r\n\r\n case KEYCODE.UP:\r\n case KEYCODE.LEFT:\r\n next = previousRadioButton(node);\r\n if (!next) next = lastRadioButton(node); //if node is the last node, node cycles to first.\r\n break;\r\n\r\n case KEYCODE.SPACE:\r\n next = node;\r\n break;\r\n }\r\n\r\n if (next) {\r\n let radioButton = firstRadioButton(node);\r\n\r\n while (radioButton) {\r\n setRadioButton(radioButton, \"false\");\r\n radioButton = nextRadioButton(radioButton);\r\n }\r\n\r\n setRadioButton(next, \"true\");\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n}\r\n\r\nfunction focusRadioButton(event) {\r\n event.currentTarget.className += ' focus';\r\n}\r\n\r\nfunction blurRadioButton(event) {\r\n event.currentTarget.className = event.currentTarget.className.replace(' focus', '');\r\n}\r\n","import Swiper from 'swiper';\r\n\r\nfunction generateUUID() { // Public Domain/MIT\r\n var d = new Date().getTime();\r\n if (typeof performance !== 'undefined' && typeof performance.now === 'function'){\r\n d += performance.now(); //use high-precision timer if available\r\n }\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n}\r\n\r\nvar $swiperElements = $('.swiper-container');\r\nif($swiperElements.length > 0) {\r\n $swiperElements.each(function() {\r\n let uuid = generateUUID();\r\n let maxSlides = $(this)[0].hasAttribute('data-slides') ? parseInt($(this).attr('data-slides'), 10) : 4;\r\n $(this).attr('data-id', uuid);\r\n\r\n var swiper = new Swiper($(this)[0], {\r\n slidesPerView: maxSlides,\r\n spaceBetween: 15,\r\n autoHeight: true,\r\n loop: true,\r\n navigation: {\r\n nextEl: '[data-id=\"'+uuid+'\"] .swiper-button-next',\r\n prevEl: '[data-id=\"'+uuid+'\"] .swiper-button-prev'\r\n },\r\n breakpoints: {\r\n 1200: {\r\n slidesPerView: maxSlides,\r\n spaceBetween: 15\r\n },\r\n 1024: {\r\n slidesPerView: 4,\r\n spaceBetween: 15\r\n },\r\n 768: {\r\n slidesPerView: 3,\r\n spaceBetween: 15\r\n },\r\n 480: {\r\n slidesPerView: 2,\r\n spaceBetween: 15\r\n },\r\n 320: {\r\n slidesPerView: 1,\r\n spaceBetween: 15\r\n }\r\n }\r\n });\r\n\r\n $(document).on('click', '[data-id=\"'+uuid+'\"] .swiper-button-prev', function() {\r\n swiper.slidePrev();\r\n });\r\n\r\n $(document).on('click', '[data-id=\"'+uuid+'\"] .swiper-button-next', function() {\r\n swiper.slideNext();\r\n });\r\n });\r\n}\r\n\r\n$(document).ready(function() {\r\n $('.lazyload-bg').each(function() {\r\n var lazy = $(this);\r\n var src = lazy.attr('data-src');\r\n\r\n lazy.css('background-image', 'url(\"' + src + '\")');\r\n lazy.removeAttr('data-src');\r\n lazy.removeClass('lazyload-bg');\r\n });\r\n});\r\n","// region Offer Terms Modal Button\r\n$(document).on('click', '.js-offer-modal-btn', function (event) {\r\n event.preventDefault();\r\n\r\n let $this = $(this);\r\n let modalElement = $('.js-offer-modal');\r\n\r\n $.ajax({\r\n method: 'get',\r\n dataType: 'json',\r\n url: $this.attr('href'),\r\n success: function (response) {\r\n modalElement.html('');\r\n\r\n if (response.success) {\r\n modalElement.append(response.content);\r\n }\r\n\r\n modalElement.find('.modal').modal('show');\r\n }\r\n });\r\n});\r\n// endregion\r\n\r\nfunction setQueryStringParameter(name, value) {\r\n const params = new URLSearchParams(window.location.search);\r\n params.set(name, value);\r\n window.history.replaceState({}, \"\", decodeURIComponent(`${window.location.pathname}?${params}`));\r\n}\r\n\r\n/* region Select/Remove Filter */\r\n$(document).on('click', '.facets .js-toggle-filter, .js-search-page .js-toggle-filter, .js-search-page .js-remove-filter', function () {\r\n let url = $(this).attr('data-url');\r\n\r\n if (!$(this).hasClass('disabled')) {\r\n if (url) {\r\n window.location = url;\r\n }\r\n }\r\n});\r\n/* endregion */\r\n\r\n/* region Toggle Filter Children */\r\n$(document).on('click', '.has-children:not(.checkbox-container)', function () {\r\n $(this).toggleClass('active').next().slideToggle();\r\n});\r\n/* endregion */\r\n\r\n// region Sort Select\r\n$(document).on('change', 'select.sortBy', function () {\r\n let url = $(this).val();\r\n if (url) {\r\n window.location = url;\r\n }\r\n});\r\n// endregion\r\n\r\n// region Load More - Search Page\r\n$(document).on('click', '.js-load-more', function () {\r\n let $this = $(this);\r\n\r\n $('.loading-icon').show();\r\n\r\n $.ajax({\r\n method: 'GET',\r\n dataType: 'json',\r\n url: $(this).attr('data-url'),\r\n success: function (response) {\r\n if (response.data) {\r\n $('.js-current-total').text(response.count);\r\n $this.attr('data-url', response.next_link)\r\n\r\n $('.loading-icon').hide();\r\n\r\n // region Remove focus\r\n $this.focus(function () {\r\n this.blur();\r\n });\r\n // endregion\r\n\r\n $('.js-list-results').append(response.data);\r\n\r\n // region Call lazyload again\r\n $('.lazyload-bg').each(function () {\r\n let lazy = $(this);\r\n let src = lazy.attr('data-src');\r\n lazy.css('background-image', 'url(\"' + src + '\")');\r\n lazy.removeAttr('data-src');\r\n lazy.removeClass('lazyload-bg');\r\n });\r\n // endregion\r\n\r\n setQueryStringParameter('page', response.current_page);\r\n\r\n if (response.next_link !== '') {\r\n $this.remove();\r\n }\r\n } else {\r\n $this.remove();\r\n }\r\n }\r\n });\r\n});\r\n// endregion\r\n\r\n// region Top search - suggestions dropdown\r\nlet f = -1;\r\nlet xhr;\r\n\r\n$(document).on('keyup paste', '.js-search-field', function (event) {\r\n if (event.keyCode === 40 || event.keyCode === 38 || event.keyCode === 13 || event.keyCode === 39 || event.keyCode === 37) {\r\n event.preventDefault();\r\n return false;\r\n }\r\n let $form = $(this).closest('form');\r\n let suggestionList = $form.find('.js-suggestions-list');\r\n\r\n let searchTerm = $(this).val().replace('[^a-zA-Z0-9\\'\\s]', '');\r\n let searchType = $form.find('.search-type');\r\n\r\n if (xhr) {\r\n xhr.abort();\r\n }\r\n\r\n xhr = $.ajax({\r\n method: 'GET',\r\n dataType: 'json',\r\n data: {s: searchTerm},\r\n url: $(this).attr('data-url'),\r\n success: function (response) {\r\n if (response.data.length > 0) {\r\n let html = '';\r\n $(response.data).each(function () {\r\n html += this.list_html;\r\n });\r\n suggestionList.html(html);\r\n suggestionList.addClass('active').show();\r\n } else {\r\n suggestionList.removeClass('active').html('').hide();\r\n f = -1;\r\n }\r\n\r\n searchType.val(response.type);\r\n\r\n // Postcode\r\n if (response.type === 'postcode' && response.coordinates.lat && response.coordinates.lng) {\r\n $('input[name=\"coordinates\"]').val(response.coordinates.lat + ',' + response.coordinates.lng);\r\n }\r\n }\r\n });\r\n\r\n})\r\n .on('keydown', '.js-search-field', function (e) {\r\n let $form = $(this).closest('form');\r\n let suggestionList = $form.find('.js-suggestions-list');\r\n\r\n /*If the arrow DOWN key*/\r\n if (e.keyCode === 40) {\r\n f++;\r\n currentItem(suggestionList);\r\n } else if (e.keyCode === 38) {\r\n /*If the arrow UP key is pressed*/\r\n f--;\r\n currentItem(suggestionList);\r\n } else if (e.keyCode === 13) {\r\n /*If the ENTER key is pressed*/\r\n e.preventDefault();\r\n\r\n if (f > -1) {\r\n /*and simulate a click on the \"active\" item:*/\r\n suggestionList.find('.item.active').trigger('click');\r\n } else {\r\n $('.js-search-btn').trigger('click');\r\n }\r\n }\r\n });\r\n\r\n// Hide the auto complete box\r\n$(document).on('click', function () {\r\n let suggestionList = $('.js-suggestions-list');\r\n\r\n if (suggestionList.find('.item').length && suggestionList.hasClass('active')) {\r\n suggestionList.empty();\r\n f = -1;\r\n suggestionList.hide();\r\n }\r\n});\r\n\r\nfunction currentItem(element) {\r\n element.find('.item.active').removeClass('active');\r\n let t = element.find('.item').length;\r\n if (f >= t) {\r\n f = 0;\r\n }\r\n\r\n if (f < 0) {\r\n f = (t - 1);\r\n }\r\n\r\n element.find('.item').eq(f).addClass('active').focus();\r\n}\r\n\r\nfunction menu_item_link(element) {\r\n window.location = $(element).attr('data-url');\r\n}\r\n\r\n$(document).on('click', '.item.active', function () {\r\n menu_item_link(this);\r\n});\r\n\r\n$(document).on('click', '.js-suggestions-list .item', function () {\r\n menu_item_link(this);\r\n});\r\n\r\n// endregion\r\n\r\n$(document).on('click', '.js-filters-modal', function () {\r\n $.ajax({\r\n method: 'GET',\r\n dataType: 'json',\r\n url: $('.js-filters-modal-container').attr('data-url'),\r\n data: {route: $('.js-filters-modal-container').attr('data-route')},\r\n success: function (response) {\r\n $('.js-filters-modal-container').attr('data-url', response.facetUrl);\r\n $('body').addClass('modal-open');\r\n\r\n let $filterModalContainer = $('.js-filters-modal-container');\r\n $filterModalContainer.html(response.facet);\r\n $filterModalContainer.css({display: 'block', height: $(window).height()});\r\n }\r\n });\r\n});\r\n\r\n$(document).on('click', '.js-close-filter-modal', function (event) {\r\n event.preventDefault();\r\n\r\n $('body').removeClass('modal-open');\r\n\r\n let $filterModalContainer = $('.js-filters-modal-container');\r\n $filterModalContainer.html('');\r\n $filterModalContainer.css({display: 'none', height: $(window).height()});\r\n});\r\n\r\n// #########################################################\r\n\r\n// Element\r\nlet $localSearchMap = $('.local-search-map');\r\nlet $zeroAlert = $('.zero-alert');\r\nlet $redraw = $('#redraw');\r\n\r\n// Init Vars\r\nlet markers, bounds, infoWindow, map, lat, lng, coords;\r\n\r\nfunction initMap() {\r\n // from initial page load\r\n lat = parseFloat($('#local-search-map input[name=\"latitude\"]').val());\r\n lng = parseFloat($('#local-search-map input[name=\"longitude\"]').val());\r\n\r\n // make google maps friendly\r\n coords = {lat: lat, lng: lng};\r\n\r\n $zeroAlert.hide();\r\n\r\n if ($localSearchMap.length > 0) {\r\n bounds = new google.maps.LatLngBounds();\r\n infoWindow = new google.maps.InfoWindow();\r\n\r\n map = new google.maps.Map($localSearchMap[0], {\r\n mapTypeId: google.maps.MapTypeId.ROADMAP,\r\n center: coords,\r\n zoom: 12,\r\n styles: [\r\n {\r\n featureType: \"poi\",\r\n elementType: \"labels\",\r\n stylers: [\r\n {\r\n visibility: \"off\"\r\n }\r\n ]\r\n }\r\n ]\r\n });\r\n\r\n if (\"geolocation\" in navigator) {\r\n navigator.geolocation.getCurrentPosition(function (position) {\r\n let pos = {\r\n lat: position.coords.latitude,\r\n lng: position.coords.longitude\r\n };\r\n\r\n $('#local-search-map input[name=\"lat\"]').val(position.coords.latitude)\r\n $('#local-search-map input[name=\"lng\"]').val(position.coords.longitude)\r\n map.setCenter(pos);\r\n // submitRequest();\r\n }, showGeoError);\r\n }\r\n\r\n addSearchedMarker(coords);\r\n\r\n // region Event Listener\r\n google.maps.event.addListener(map, 'idle', function () {\r\n $('#sw-lat').val(map.getBounds().getSouthWest().lat());\r\n $('#sw-lng').val(map.getBounds().getSouthWest().lng());\r\n $('#ne-lat').val(map.getBounds().getNorthEast().lat());\r\n $('#ne-lng').val(map.getBounds().getNorthEast().lng());\r\n\r\n // some events do not require a reload of data (eg. infoWindow popup that moves the map)\r\n if (parseInt($redraw.val(), 10) === 1) {\r\n submitRequest();\r\n }\r\n\r\n // in case we set not to redraw last time around, set it back to true\r\n $redraw.val(1);\r\n });\r\n // endregion\r\n }\r\n}\r\n\r\nwindow.initMap = initMap;\r\n\r\n/**\r\n * This is the searched location that stays the same until another search is performed\r\n * @param {*} coords\r\n */\r\nfunction addSearchedMarker(coords) {\r\n let searched = new google.maps.Marker({\r\n position: coords\r\n });\r\n searched.setMap(map);\r\n}\r\n\r\nfunction setIconsOnTheMap(response) {\r\n if (markers !== undefined) {\r\n for (let i = 0; i < markers.length; i++) {\r\n markers[i].setMap(null);\r\n }\r\n }\r\n\r\n let locationsArray = response.locations;\r\n\r\n // region Sneaky call to show hide zero results alert\r\n if (locationsArray.length === 0) {\r\n $zeroAlert.show();\r\n } else {\r\n $zeroAlert.hide();\r\n }\r\n // endregion\r\n\r\n let coordinates;\r\n\r\n markers = locationsArray.map(function (location, i) {\r\n coordinates = {lat: parseFloat(location.latitude), lng: parseFloat(location.longitude)};\r\n\r\n let icon = {\r\n url: location.images.icon,\r\n scaledSize: new google.maps.Size(32, 32),\r\n origin: new google.maps.Point(0, 0),\r\n anchor: new google.maps.Point(16, 16)\r\n };\r\n\r\n let marker = new google.maps.Marker({position: coordinates, icon: icon});\r\n\r\n // region Click Event\r\n google.maps.event.addListener(marker, 'click', (function (marker) {\r\n return function () {\r\n infoWindow.setContent(location.block);\r\n infoWindow.open(map, marker);\r\n $('#redraw').val(0);\r\n }\r\n })(marker, i));\r\n // endregion\r\n\r\n return marker;\r\n });\r\n\r\n for (let l = 0; l < markers.length; l++) {\r\n markers[l].setMap(map);\r\n }\r\n\r\n $('.js-results-count').html(markers.length);\r\n}\r\n\r\n/**\r\n * used to get data from the server and update the map and filters\r\n */\r\nfunction submitRequest(url) {\r\n $('#loading-map').show();\r\n\r\n // region Build URL\r\n url = url === undefined ? $('.js-map-search').attr('data-url') : url;\r\n\r\n if (url.indexOf('lat') === -1) {\r\n if (url.indexOf('?') !== -1) {\r\n url += '&';\r\n } else {\r\n url += '?';\r\n }\r\n\r\n url += 'lat=' + $('input[name=\"latitude\"]').val();\r\n url += '&lng=' + $('input[name=\"longitude\"]').val();\r\n url += '&ne_lat=' + $('input[name=\"ne_latitude\"]').val();\r\n url += '&ne_lng=' + $('input[name=\"ne_longitude\"]').val();\r\n url += '&sw_lat=' + $('input[name=\"sw_latitude\"]').val();\r\n url += '&sw_lng=' + $('input[name=\"sw_longitude\"]').val();\r\n url += '&area=' + $('input[name=\"area\"]').val();\r\n }\r\n // endregion\r\n\r\n // region Make request to get map data\r\n $.ajax({\r\n method: 'get',\r\n url: url,\r\n dataType: 'json',\r\n headers: {\r\n 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\r\n 'Content-Type': 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n },\r\n success: function (response) {\r\n // update the map and icons\r\n setIconsOnTheMap(response);\r\n\r\n // update the side menu filters\r\n if(response.filterBar !== '') {\r\n $('#filter-items').html(response.filterBar);\r\n $('.filter-bar').removeClass('hide');\r\n }\r\n\r\n // take down the loading div\r\n $('#loading-map').hide();\r\n },\r\n error: function (xhr, ajaxOptions, thrownError) {\r\n // take down the loading div\r\n $('#loading-map').hide();\r\n }\r\n });\r\n // endregion\r\n}\r\n\r\n// TODO Show error and don't redirect\r\nfunction showGeoError(error, redirectTo) {\r\n redirectTo = redirectTo === undefined ? null : redirectTo;\r\n\r\n let x;\r\n switch (error.code) {\r\n case error.PERMISSION_DENIED:\r\n x = \"User denied the request for Geolocation.\";\r\n break;\r\n case error.POSITION_UNAVAILABLE:\r\n x = \"Location information is unavailable.\";\r\n break;\r\n case error.TIMEOUT:\r\n x = \"The request to get user location timed out.\";\r\n break;\r\n case error.UNKNOWN_ERROR:\r\n x = \"An unknown error occurred.\";\r\n break;\r\n }\r\n // console.log(x);\r\n if (redirectTo === 'local-offers') {\r\n return window.location = localOffersUrl;\r\n }\r\n}\r\n\r\n$(document).on('click', '.js-local-search-map .js-toggle-filter, .js-local-search-map .js-remove-filter', function () {\r\n let url = $(this).attr('data-url');\r\n\r\n if (!$(this).hasClass('disabled')) {\r\n if (url) {\r\n $('.js-map-search').attr('data-url', url);\r\n\r\n submitRequest($(this).attr('data-url'));\r\n }\r\n }\r\n});\r\n","/*!\n * Datepicker for Bootstrap v1.9.0 (https://github.com/uxsolutions/bootstrap-datepicker)\n *\n * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)\n */\n\n(function(factory){\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n factory(require('jquery'));\n } else {\n factory(jQuery);\n }\n}(function($, undefined){\n\tfunction UTCDate(){\n\t\treturn new Date(Date.UTC.apply(Date, arguments));\n\t}\n\tfunction UTCToday(){\n\t\tvar today = new Date();\n\t\treturn UTCDate(today.getFullYear(), today.getMonth(), today.getDate());\n\t}\n\tfunction isUTCEquals(date1, date2) {\n\t\treturn (\n\t\t\tdate1.getUTCFullYear() === date2.getUTCFullYear() &&\n\t\t\tdate1.getUTCMonth() === date2.getUTCMonth() &&\n\t\t\tdate1.getUTCDate() === date2.getUTCDate()\n\t\t);\n\t}\n\tfunction alias(method, deprecationMsg){\n\t\treturn function(){\n\t\t\tif (deprecationMsg !== undefined) {\n\t\t\t\t$.fn.datepicker.deprecated(deprecationMsg);\n\t\t\t}\n\n\t\t\treturn this[method].apply(this, arguments);\n\t\t};\n\t}\n\tfunction isValidDate(d) {\n\t\treturn d && !isNaN(d.getTime());\n\t}\n\n\tvar DateArray = (function(){\n\t\tvar extras = {\n\t\t\tget: function(i){\n\t\t\t\treturn this.slice(i)[0];\n\t\t\t},\n\t\t\tcontains: function(d){\n\t\t\t\t// Array.indexOf is not cross-browser;\n\t\t\t\t// $.inArray doesn't work with Dates\n\t\t\t\tvar val = d && d.valueOf();\n\t\t\t\tfor (var i=0, l=this.length; i < l; i++)\n // Use date arithmetic to allow dates with different times to match\n if (0 <= this[i].valueOf() - val && this[i].valueOf() - val < 1000*60*60*24)\n\t\t\t\t\t\treturn i;\n\t\t\t\treturn -1;\n\t\t\t},\n\t\t\tremove: function(i){\n\t\t\t\tthis.splice(i,1);\n\t\t\t},\n\t\t\treplace: function(new_array){\n\t\t\t\tif (!new_array)\n\t\t\t\t\treturn;\n\t\t\t\tif (!$.isArray(new_array))\n\t\t\t\t\tnew_array = [new_array];\n\t\t\t\tthis.clear();\n\t\t\t\tthis.push.apply(this, new_array);\n\t\t\t},\n\t\t\tclear: function(){\n\t\t\t\tthis.length = 0;\n\t\t\t},\n\t\t\tcopy: function(){\n\t\t\t\tvar a = new DateArray();\n\t\t\t\ta.replace(this);\n\t\t\t\treturn a;\n\t\t\t}\n\t\t};\n\n\t\treturn function(){\n\t\t\tvar a = [];\n\t\t\ta.push.apply(a, arguments);\n\t\t\t$.extend(a, extras);\n\t\t\treturn a;\n\t\t};\n\t})();\n\n\n\t// Picker object\n\n\tvar Datepicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\n\n\t\tthis._events = [];\n\t\tthis._secondaryEvents = [];\n\n\t\tthis._process_options(options);\n\n\t\tthis.dates = new DateArray();\n\t\tthis.viewDate = this.o.defaultViewDate;\n\t\tthis.focusDate = null;\n\n\t\tthis.element = $(element);\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.inputField = this.isInput ? this.element : this.element.find('input');\n\t\tthis.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn') : false;\n\t\tif (this.component && this.component.length === 0)\n\t\t\tthis.component = false;\n\t\tthis.isInline = !this.component && this.element.is('div');\n\n\t\tthis.picker = $(DPGlobal.template);\n\n\t\t// Checking templates and inserting\n\t\tif (this._check_template(this.o.templates.leftArrow)) {\n\t\t\tthis.picker.find('.prev').html(this.o.templates.leftArrow);\n\t\t}\n\n\t\tif (this._check_template(this.o.templates.rightArrow)) {\n\t\t\tthis.picker.find('.next').html(this.o.templates.rightArrow);\n\t\t}\n\n\t\tthis._buildEvents();\n\t\tthis._attachEvents();\n\n\t\tif (this.isInline){\n\t\t\tthis.picker.addClass('datepicker-inline').appendTo(this.element);\n\t\t}\n\t\telse {\n\t\t\tthis.picker.addClass('datepicker-dropdown dropdown-menu');\n\t\t}\n\n\t\tif (this.o.rtl){\n\t\t\tthis.picker.addClass('datepicker-rtl');\n\t\t}\n\n\t\tif (this.o.calendarWeeks) {\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear')\n\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\treturn Number(val) + 1;\n\t\t\t\t});\n\t\t}\n\n\t\tthis._process_options({\n\t\t\tstartDate: this._o.startDate,\n\t\t\tendDate: this._o.endDate,\n\t\t\tdaysOfWeekDisabled: this.o.daysOfWeekDisabled,\n\t\t\tdaysOfWeekHighlighted: this.o.daysOfWeekHighlighted,\n\t\t\tdatesDisabled: this.o.datesDisabled\n\t\t});\n\n\t\tthis._allow_update = false;\n\t\tthis.setViewMode(this.o.startView);\n\t\tthis._allow_update = true;\n\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\n\t\tthis.update();\n\n\t\tif (this.isInline){\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tDatepicker.prototype = {\n\t\tconstructor: Datepicker,\n\n\t\t_resolveViewName: function(view){\n\t\t\t$.each(DPGlobal.viewModes, function(i, viewMode){\n\t\t\t\tif (view === i || $.inArray(view, viewMode.names) !== -1){\n\t\t\t\t\tview = i;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn view;\n\t\t},\n\n\t\t_resolveDaysOfWeek: function(daysOfWeek){\n\t\t\tif (!$.isArray(daysOfWeek))\n\t\t\t\tdaysOfWeek = daysOfWeek.split(/[,\\s]*/);\n\t\t\treturn $.map(daysOfWeek, Number);\n\t\t},\n\n\t\t_check_template: function(tmp){\n\t\t\ttry {\n\t\t\t\t// If empty\n\t\t\t\tif (tmp === undefined || tmp === \"\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// If no html, everything ok\n\t\t\t\tif ((tmp.match(/[<>]/g) || []).length <= 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// Checking if html is fine\n\t\t\t\tvar jDom = $(tmp);\n\t\t\t\treturn jDom.length > 0;\n\t\t\t}\n\t\t\tcatch (ex) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t_process_options: function(opts){\n\t\t\t// Store raw options for reference\n\t\t\tthis._o = $.extend({}, this._o, opts);\n\t\t\t// Processed options\n\t\t\tvar o = this.o = $.extend({}, this._o);\n\n\t\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t\t// fallback to 2 letter code eg \"de\"\n\t\t\tvar lang = o.language;\n\t\t\tif (!dates[lang]){\n\t\t\t\tlang = lang.split('-')[0];\n\t\t\t\tif (!dates[lang])\n\t\t\t\t\tlang = defaults.language;\n\t\t\t}\n\t\t\to.language = lang;\n\n\t\t\t// Retrieve view index from any aliases\n\t\t\to.startView = this._resolveViewName(o.startView);\n\t\t\to.minViewMode = this._resolveViewName(o.minViewMode);\n\t\t\to.maxViewMode = this._resolveViewName(o.maxViewMode);\n\n\t\t\t// Check view is between min and max\n\t\t\to.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, o.startView));\n\n\t\t\t// true, false, or Number > 0\n\t\t\tif (o.multidate !== true){\n\t\t\t\to.multidate = Number(o.multidate) || false;\n\t\t\t\tif (o.multidate !== false)\n\t\t\t\t\to.multidate = Math.max(0, o.multidate);\n\t\t\t}\n\t\t\to.multidateSeparator = String(o.multidateSeparator);\n\n\t\t\to.weekStart %= 7;\n\t\t\to.weekEnd = (o.weekStart + 6) % 7;\n\n\t\t\tvar format = DPGlobal.parseFormat(o.format);\n\t\t\tif (o.startDate !== -Infinity){\n\t\t\t\tif (!!o.startDate){\n\t\t\t\t\tif (o.startDate instanceof Date)\n\t\t\t\t\t\to.startDate = this._local_to_utc(this._zero_time(o.startDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.startDate = DPGlobal.parseDate(o.startDate, format, o.language, o.assumeNearbyYear);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.startDate = -Infinity;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (o.endDate !== Infinity){\n\t\t\t\tif (!!o.endDate){\n\t\t\t\t\tif (o.endDate instanceof Date)\n\t\t\t\t\t\to.endDate = this._local_to_utc(this._zero_time(o.endDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.endDate = DPGlobal.parseDate(o.endDate, format, o.language, o.assumeNearbyYear);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.endDate = Infinity;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\to.daysOfWeekDisabled = this._resolveDaysOfWeek(o.daysOfWeekDisabled||[]);\n\t\t\to.daysOfWeekHighlighted = this._resolveDaysOfWeek(o.daysOfWeekHighlighted||[]);\n\n\t\t\to.datesDisabled = o.datesDisabled||[];\n\t\t\tif (!$.isArray(o.datesDisabled)) {\n\t\t\t\to.datesDisabled = o.datesDisabled.split(',');\n\t\t\t}\n\t\t\to.datesDisabled = $.map(o.datesDisabled, function(d){\n\t\t\t\treturn DPGlobal.parseDate(d, format, o.language, o.assumeNearbyYear);\n\t\t\t});\n\n\t\t\tvar plc = String(o.orientation).toLowerCase().split(/\\s+/g),\n\t\t\t\t_plc = o.orientation.toLowerCase();\n\t\t\tplc = $.grep(plc, function(word){\n\t\t\t\treturn /^auto|left|right|top|bottom$/.test(word);\n\t\t\t});\n\t\t\to.orientation = {x: 'auto', y: 'auto'};\n\t\t\tif (!_plc || _plc === 'auto')\n\t\t\t\t; // no action\n\t\t\telse if (plc.length === 1){\n\t\t\t\tswitch (plc[0]){\n\t\t\t\t\tcase 'top':\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\to.orientation.y = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'left':\n\t\t\t\t\tcase 'right':\n\t\t\t\t\t\to.orientation.x = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^left|right$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.x = _plc[0] || 'auto';\n\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^top|bottom$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.y = _plc[0] || 'auto';\n\t\t\t}\n\t\t\tif (o.defaultViewDate instanceof Date || typeof o.defaultViewDate === 'string') {\n\t\t\t\to.defaultViewDate = DPGlobal.parseDate(o.defaultViewDate, format, o.language, o.assumeNearbyYear);\n\t\t\t} else if (o.defaultViewDate) {\n\t\t\t\tvar year = o.defaultViewDate.year || new Date().getFullYear();\n\t\t\t\tvar month = o.defaultViewDate.month || 0;\n\t\t\t\tvar day = o.defaultViewDate.day || 1;\n\t\t\t\to.defaultViewDate = UTCDate(year, month, day);\n\t\t\t} else {\n\t\t\t\to.defaultViewDate = UTCToday();\n\t\t\t}\n\t\t},\n\t\t_applyEvents: function(evs){\n\t\t\tfor (var i=0, el, ch, ev; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t} else if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.on(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_unapplyEvents: function(evs){\n\t\t\tfor (var i=0, el, ev, ch; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t} else if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.off(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_buildEvents: function(){\n var events = {\n keyup: $.proxy(function(e){\n if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)\n this.update();\n }, this),\n keydown: $.proxy(this.keydown, this),\n paste: $.proxy(this.paste, this)\n };\n\n if (this.o.showOnFocus === true) {\n events.focus = $.proxy(this.show, this);\n }\n\n if (this.isInput) { // single input\n this._events = [\n [this.element, events]\n ];\n }\n // component: input + button\n else if (this.component && this.inputField.length) {\n this._events = [\n // For components that are not readonly, allow keyboard nav\n [this.inputField, events],\n [this.component, {\n click: $.proxy(this.show, this)\n }]\n ];\n }\n\t\t\telse {\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\tthis._events.push(\n\t\t\t\t// Component: listen for blur on element descendants\n\t\t\t\t[this.element, '*', {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}],\n\t\t\t\t// Input: listen for blur on element\n\t\t\t\t[this.element, {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t);\n\n\t\t\tif (this.o.immediateUpdates) {\n\t\t\t\t// Trigger input updates immediately on changed year/month\n\t\t\t\tthis._events.push([this.element, {\n\t\t\t\t\t'changeYear changeMonth': $.proxy(function(e){\n\t\t\t\t\t\tthis.update(e.date);\n\t\t\t\t\t}, this)\n\t\t\t\t}]);\n\t\t\t}\n\n\t\t\tthis._secondaryEvents = [\n\t\t\t\t[this.picker, {\n\t\t\t\t\tclick: $.proxy(this.click, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.prev, .next', {\n\t\t\t\t\tclick: $.proxy(this.navArrowsClick, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.day:not(.disabled)', {\n\t\t\t\t\tclick: $.proxy(this.dayCellClick, this)\n\t\t\t\t}],\n\t\t\t\t[$(window), {\n\t\t\t\t\tresize: $.proxy(this.place, this)\n\t\t\t\t}],\n\t\t\t\t[$(document), {\n\t\t\t\t\t'mousedown touchstart': $.proxy(function(e){\n\t\t\t\t\t\t// Clicked outside the datepicker, hide it\n\t\t\t\t\t\tif (!(\n\t\t\t\t\t\t\tthis.element.is(e.target) ||\n\t\t\t\t\t\t\tthis.element.find(e.target).length ||\n\t\t\t\t\t\t\tthis.picker.is(e.target) ||\n\t\t\t\t\t\t\tthis.picker.find(e.target).length ||\n\t\t\t\t\t\t\tthis.isInline\n\t\t\t\t\t\t)){\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t];\n\t\t},\n\t\t_attachEvents: function(){\n\t\t\tthis._detachEvents();\n\t\t\tthis._applyEvents(this._events);\n\t\t},\n\t\t_detachEvents: function(){\n\t\t\tthis._unapplyEvents(this._events);\n\t\t},\n\t\t_attachSecondaryEvents: function(){\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis._applyEvents(this._secondaryEvents);\n\t\t},\n\t\t_detachSecondaryEvents: function(){\n\t\t\tthis._unapplyEvents(this._secondaryEvents);\n\t\t},\n\t\t_trigger: function(event, altdate){\n\t\t\tvar date = altdate || this.dates.get(-1),\n\t\t\t\tlocal_date = this._utc_to_local(date);\n\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: event,\n\t\t\t\tdate: local_date,\n\t\t\t\tviewMode: this.viewMode,\n\t\t\t\tdates: $.map(this.dates, this._utc_to_local),\n\t\t\t\tformat: $.proxy(function(ix, format){\n\t\t\t\t\tif (arguments.length === 0){\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t\tformat = this.o.format;\n\t\t\t\t\t} else if (typeof ix === 'string'){\n\t\t\t\t\t\tformat = ix;\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tformat = format || this.o.format;\n\t\t\t\t\tvar date = this.dates.get(ix);\n\t\t\t\t\treturn DPGlobal.formatDate(date, format, this.o.language);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t},\n\n\t\tshow: function(){\n\t\t\tif (this.inputField.is(':disabled') || (this.inputField.prop('readonly') && this.o.enableOnReadonly === false))\n\t\t\t\treturn;\n\t\t\tif (!this.isInline)\n\t\t\t\tthis.picker.appendTo(this.o.container);\n\t\t\tthis.place();\n\t\t\tthis.picker.show();\n\t\t\tthis._attachSecondaryEvents();\n\t\t\tthis._trigger('show');\n\t\t\tif ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {\n\t\t\t\t$(this.element).blur();\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\thide: function(){\n\t\t\tif (this.isInline || !this.picker.is(':visible'))\n\t\t\t\treturn this;\n\t\t\tthis.focusDate = null;\n\t\t\tthis.picker.hide().detach();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.setViewMode(this.o.startView);\n\n\t\t\tif (this.o.forceParse && this.inputField.val())\n\t\t\t\tthis.setValue();\n\t\t\tthis._trigger('hide');\n\t\t\treturn this;\n\t\t},\n\n\t\tdestroy: function(){\n\t\t\tthis.hide();\n\t\t\tthis._detachEvents();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.picker.remove();\n\t\t\tdelete this.element.data().datepicker;\n\t\t\tif (!this.isInput){\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tpaste: function(e){\n\t\t\tvar dateString;\n\t\t\tif (e.originalEvent.clipboardData && e.originalEvent.clipboardData.types\n\t\t\t\t&& $.inArray('text/plain', e.originalEvent.clipboardData.types) !== -1) {\n\t\t\t\tdateString = e.originalEvent.clipboardData.getData('text/plain');\n\t\t\t} else if (window.clipboardData) {\n\t\t\t\tdateString = window.clipboardData.getData('Text');\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.setDate(dateString);\n\t\t\tthis.update();\n\t\t\te.preventDefault();\n\t\t},\n\n\t\t_utc_to_local: function(utc){\n\t\t\tif (!utc) {\n\t\t\t\treturn utc;\n\t\t\t}\n\n\t\t\tvar local = new Date(utc.getTime() + (utc.getTimezoneOffset() * 60000));\n\n\t\t\tif (local.getTimezoneOffset() !== utc.getTimezoneOffset()) {\n\t\t\t\tlocal = new Date(utc.getTime() + (local.getTimezoneOffset() * 60000));\n\t\t\t}\n\n\t\t\treturn local;\n\t\t},\n\t\t_local_to_utc: function(local){\n\t\t\treturn local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));\n\t\t},\n\t\t_zero_time: function(local){\n\t\t\treturn local && new Date(local.getFullYear(), local.getMonth(), local.getDate());\n\t\t},\n\t\t_zero_utc_time: function(utc){\n\t\t\treturn utc && UTCDate(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate());\n\t\t},\n\n\t\tgetDates: function(){\n\t\t\treturn $.map(this.dates, this._utc_to_local);\n\t\t},\n\n\t\tgetUTCDates: function(){\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn new Date(d);\n\t\t\t});\n\t\t},\n\n\t\tgetDate: function(){\n\t\t\treturn this._utc_to_local(this.getUTCDate());\n\t\t},\n\n\t\tgetUTCDate: function(){\n\t\t\tvar selected_date = this.dates.get(-1);\n\t\t\tif (selected_date !== undefined) {\n\t\t\t\treturn new Date(selected_date);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\n\t\tclearDates: function(){\n\t\t\tthis.inputField.val('');\n\t\t\tthis.update();\n\t\t\tthis._trigger('changeDate');\n\n\t\t\tif (this.o.autoclose) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tsetDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, args);\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetUTCDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.setDates.apply(this, $.map(args, this._utc_to_local));\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDate: alias('setDates'),\n\t\tsetUTCDate: alias('setUTCDates'),\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead'),\n\n\t\tsetValue: function(){\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tthis.inputField.val(formatted);\n\t\t\treturn this;\n\t\t},\n\n\t\tgetFormattedDate: function(format){\n\t\t\tif (format === undefined)\n\t\t\t\tformat = this.o.format;\n\n\t\t\tvar lang = this.o.language;\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn DPGlobal.formatDate(d, format, lang);\n\t\t\t}).join(this.o.multidateSeparator);\n\t\t},\n\n\t\tgetStartDate: function(){\n\t\t\treturn this.o.startDate;\n\t\t},\n\n\t\tsetStartDate: function(startDate){\n\t\t\tthis._process_options({startDate: startDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tgetEndDate: function(){\n\t\t\treturn this.o.endDate;\n\t\t},\n\n\t\tsetEndDate: function(endDate){\n\t\t\tthis._process_options({endDate: endDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\n\t\t\tthis._process_options({daysOfWeekDisabled: daysOfWeekDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekHighlighted: function(daysOfWeekHighlighted){\n\t\t\tthis._process_options({daysOfWeekHighlighted: daysOfWeekHighlighted});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDatesDisabled: function(datesDisabled){\n\t\t\tthis._process_options({datesDisabled: datesDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn this;\n\t\t\tvar calendarWidth = this.picker.outerWidth(),\n\t\t\t\tcalendarHeight = this.picker.outerHeight(),\n\t\t\t\tvisualPadding = 10,\n\t\t\t\tcontainer = $(this.o.container),\n\t\t\t\twindowWidth = container.width(),\n\t\t\t\tscrollTop = this.o.container === 'body' ? $(document).scrollTop() : container.scrollTop(),\n\t\t\t\tappendOffset = container.offset();\n\n\t\t\tvar parentsZindex = [0];\n\t\t\tthis.element.parents().each(function(){\n\t\t\t\tvar itemZIndex = $(this).css('z-index');\n\t\t\t\tif (itemZIndex !== 'auto' && Number(itemZIndex) !== 0) parentsZindex.push(Number(itemZIndex));\n\t\t\t});\n\t\t\tvar zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset;\n\t\t\tvar offset = this.component ? this.component.parent().offset() : this.element.offset();\n\t\t\tvar height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);\n\t\t\tvar width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);\n\t\t\tvar left = offset.left - appendOffset.left;\n\t\t\tvar top = offset.top - appendOffset.top;\n\n\t\t\tif (this.o.container !== 'body') {\n\t\t\t\ttop += scrollTop;\n\t\t\t}\n\n\t\t\tthis.picker.removeClass(\n\t\t\t\t'datepicker-orient-top datepicker-orient-bottom '+\n\t\t\t\t'datepicker-orient-right datepicker-orient-left'\n\t\t\t);\n\n\t\t\tif (this.o.orientation.x !== 'auto'){\n\t\t\t\tthis.picker.addClass('datepicker-orient-' + this.o.orientation.x);\n\t\t\t\tif (this.o.orientation.x === 'right')\n\t\t\t\t\tleft -= calendarWidth - width;\n\t\t\t}\n\t\t\t// auto x orientation is best-placement: if it crosses a window\n\t\t\t// edge, fudge it sideways\n\t\t\telse {\n\t\t\t\tif (offset.left < 0) {\n\t\t\t\t\t// component is outside the window on the left side. Move it into visible range\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\tleft -= offset.left - visualPadding;\n\t\t\t\t} else if (left + calendarWidth > windowWidth) {\n\t\t\t\t\t// the calendar passes the widow right edge. Align it to component right side\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\tleft += width - calendarWidth;\n\t\t\t\t} else {\n\t\t\t\t\tif (this.o.rtl) {\n\t\t\t\t\t\t// Default to right\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Default to left\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// auto y orientation is best-situation: top or bottom, no fudging,\n\t\t\t// decision based on which shows more of the calendar\n\t\t\tvar yorient = this.o.orientation.y,\n\t\t\t\ttop_overflow;\n\t\t\tif (yorient === 'auto'){\n\t\t\t\ttop_overflow = -scrollTop + top - calendarHeight;\n\t\t\t\tyorient = top_overflow < 0 ? 'bottom' : 'top';\n\t\t\t}\n\n\t\t\tthis.picker.addClass('datepicker-orient-' + yorient);\n\t\t\tif (yorient === 'top')\n\t\t\t\ttop -= calendarHeight + parseInt(this.picker.css('padding-top'));\n\t\t\telse\n\t\t\t\ttop += height;\n\n\t\t\tif (this.o.rtl) {\n\t\t\t\tvar right = windowWidth - (left + width);\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tright: right,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tleft: left,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\t_allow_update: true,\n\t\tupdate: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn this;\n\n\t\t\tvar oldDates = this.dates.copy(),\n\t\t\t\tdates = [],\n\t\t\t\tfromArgs = false;\n\t\t\tif (arguments.length){\n\t\t\t\t$.each(arguments, $.proxy(function(i, date){\n\t\t\t\t\tif (date instanceof Date)\n\t\t\t\t\t\tdate = this._local_to_utc(date);\n\t\t\t\t\tdates.push(date);\n\t\t\t\t}, this));\n\t\t\t\tfromArgs = true;\n\t\t\t} else {\n\t\t\t\tdates = this.isInput\n\t\t\t\t\t\t? this.element.val()\n\t\t\t\t\t\t: this.element.data('date') || this.inputField.val();\n\t\t\t\tif (dates && this.o.multidate)\n\t\t\t\t\tdates = dates.split(this.o.multidateSeparator);\n\t\t\t\telse\n\t\t\t\t\tdates = [dates];\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\n\t\t\tdates = $.map(dates, $.proxy(function(date){\n\t\t\t\treturn DPGlobal.parseDate(date, this.o.format, this.o.language, this.o.assumeNearbyYear);\n\t\t\t}, this));\n\t\t\tdates = $.grep(dates, $.proxy(function(date){\n\t\t\t\treturn (\n\t\t\t\t\t!this.dateWithinRange(date) ||\n\t\t\t\t\t!date\n\t\t\t\t);\n\t\t\t}, this), true);\n\t\t\tthis.dates.replace(dates);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis.viewDate = new Date(this.dates.get(-1));\n\t\t\t\telse if (this.viewDate < this.o.startDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.startDate);\n\t\t\t\telse if (this.viewDate > this.o.endDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.endDate);\n\t\t\t\telse\n\t\t\t\t\tthis.viewDate = this.o.defaultViewDate;\n\t\t\t}\n\n\t\t\tif (fromArgs){\n\t\t\t\t// setting date by clicking\n\t\t\t\tthis.setValue();\n\t\t\t\tthis.element.change();\n\t\t\t}\n\t\t\telse if (this.dates.length){\n\t\t\t\t// setting date by typing\n\t\t\t\tif (String(oldDates) !== String(this.dates) && fromArgs) {\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\t\tthis.element.change();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!this.dates.length && oldDates.length) {\n\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.element.change();\n\t\t\t}\n\n\t\t\tthis.fill();\n\t\t\treturn this;\n\t\t},\n\n\t\tfillDow: function(){\n if (this.o.showWeekDays) {\n\t\t\tvar dowCnt = this.o.weekStart,\n\t\t\t\thtml = '';\n\t\t\tif (this.o.calendarWeeks){\n\t\t\t\thtml += ' ';\n\t\t\t}\n\t\t\twhile (dowCnt < this.o.weekStart + 7){\n\t\t\t\thtml += '';\n\t\t\t}\n\t\t\thtml += '';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n }\n\t\t},\n\n\t\tfillMonths: function(){\n var localDate = this._utc_to_local(this.viewDate);\n\t\t\tvar html = '';\n\t\t\tvar focused;\n\t\t\tfor (var i = 0; i < 12; i++){\n\t\t\t\tfocused = localDate && localDate.getMonth() === i ? ' focused' : '';\n\t\t\t\thtml += '' + dates[this.o.language].monthsShort[i] + '';\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-months td').html(html);\n\t\t},\n\n\t\tsetRange: function(range){\n\t\t\tif (!range || !range.length)\n\t\t\t\tdelete this.range;\n\t\t\telse\n\t\t\t\tthis.range = $.map(range, function(d){\n\t\t\t\t\treturn d.valueOf();\n\t\t\t\t});\n\t\t\tthis.fill();\n\t\t},\n\n\t\tgetClassNames: function(date){\n\t\t\tvar cls = [],\n\t\t\t\tyear = this.viewDate.getUTCFullYear(),\n\t\t\t\tmonth = this.viewDate.getUTCMonth(),\n\t\t\t\ttoday = UTCToday();\n\t\t\tif (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){\n\t\t\t\tcls.push('old');\n\t\t\t} else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){\n\t\t\t\tcls.push('new');\n\t\t\t}\n\t\t\tif (this.focusDate && date.valueOf() === this.focusDate.valueOf())\n\t\t\t\tcls.push('focused');\n\t\t\t// Compare internal UTC date with UTC today, not local today\n\t\t\tif (this.o.todayHighlight && isUTCEquals(date, today)) {\n\t\t\t\tcls.push('today');\n\t\t\t}\n\t\t\tif (this.dates.contains(date) !== -1)\n\t\t\t\tcls.push('active');\n\t\t\tif (!this.dateWithinRange(date)){\n\t\t\t\tcls.push('disabled');\n\t\t\t}\n\t\t\tif (this.dateIsDisabled(date)){\n\t\t\t\tcls.push('disabled', 'disabled-date');\n\t\t\t}\n\t\t\tif ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1){\n\t\t\t\tcls.push('highlighted');\n\t\t\t}\n\n\t\t\tif (this.range){\n\t\t\t\tif (date > this.range[0] && date < this.range[this.range.length-1]){\n\t\t\t\t\tcls.push('range');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(date.valueOf(), this.range) !== -1){\n\t\t\t\t\tcls.push('selected');\n\t\t\t\t}\n\t\t\t\tif (date.valueOf() === this.range[0]){\n cls.push('range-start');\n }\n if (date.valueOf() === this.range[this.range.length-1]){\n cls.push('range-end');\n }\n\t\t\t}\n\t\t\treturn cls;\n\t\t},\n\n\t\t_fill_yearsView: function(selector, cssClass, factor, year, startYear, endYear, beforeFn){\n\t\t\tvar html = '';\n\t\t\tvar step = factor / 10;\n\t\t\tvar view = this.picker.find(selector);\n\t\t\tvar startVal = Math.floor(year / factor) * factor;\n\t\t\tvar endVal = startVal + step * 9;\n\t\t\tvar focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step;\n\t\t\tvar selected = $.map(this.dates, function(d){\n\t\t\t\treturn Math.floor(d.getUTCFullYear() / step) * step;\n\t\t\t});\n\n\t\t\tvar classes, tooltip, before;\n\t\t\tfor (var currVal = startVal - step; currVal <= endVal + step; currVal += step) {\n\t\t\t\tclasses = [cssClass];\n\t\t\t\ttooltip = null;\n\n\t\t\t\tif (currVal === startVal - step) {\n\t\t\t\t\tclasses.push('old');\n\t\t\t\t} else if (currVal === endVal + step) {\n\t\t\t\t\tclasses.push('new');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(currVal, selected) !== -1) {\n\t\t\t\t\tclasses.push('active');\n\t\t\t\t}\n\t\t\t\tif (currVal < startYear || currVal > endYear) {\n\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t}\n\t\t\t\tif (currVal === focusedVal) {\n\t\t\t\t classes.push('focused');\n }\n\n\t\t\t\tif (beforeFn !== $.noop) {\n\t\t\t\t\tbefore = beforeFn(new Date(currVal, 0, 1));\n\t\t\t\t\tif (before === undefined) {\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\t} else if (typeof before === 'boolean') {\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\t} else if (typeof before === 'string') {\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\t}\n\t\t\t\t\tif (before.enabled === false) {\n\t\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t\t}\n\t\t\t\t\tif (before.classes) {\n\t\t\t\t\t\tclasses = classes.concat(before.classes.split(/\\s+/));\n\t\t\t\t\t}\n\t\t\t\t\tif (before.tooltip) {\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\thtml += '' + currVal + '';\n\t\t\t}\n\n\t\t\tview.find('.datepicker-switch').text(startVal + '-' + endVal);\n\t\t\tview.find('td').html(html);\n\t\t},\n\n\t\tfill: function(){\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\ttodaytxt = dates[this.o.language].today || dates['en'].today || '',\n\t\t\t\tcleartxt = dates[this.o.language].clear || dates['en'].clear || '',\n titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat,\n todayDate = UTCToday(),\n titleBtnVisible = (this.o.todayBtn === true || this.o.todayBtn === 'linked') && todayDate >= this.o.startDate && todayDate <= this.o.endDate && !this.weekOfDateIsDisabled(todayDate),\n\t\t\t\ttooltip,\n\t\t\t\tbefore;\n\t\t\tif (isNaN(year) || isNaN(month))\n\t\t\t\treturn;\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch')\n\t\t\t\t\t\t.text(DPGlobal.formatDate(d, titleFormat, this.o.language));\n\t\t\tthis.picker.find('tfoot .today')\n\t\t\t\t\t\t.text(todaytxt)\n .css('display', titleBtnVisible ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('tfoot .clear')\n\t\t\t\t\t\t.text(cleartxt)\n\t\t\t\t\t\t.css('display', this.o.clearBtn === true ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('thead .datepicker-title')\n\t\t\t\t\t\t.text(this.o.title)\n\t\t\t\t\t\t.css('display', typeof this.o.title === 'string' && this.o.title !== '' ? 'table-cell' : 'none');\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\tvar prevMonth = UTCDate(year, month, 0),\n\t\t\t\tday = prevMonth.getUTCDate();\n\t\t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tif (prevMonth.getUTCFullYear() < 100){\n nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());\n }\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar weekDay, clsName;\n\t\t\twhile (prevMonth.valueOf() < nextMonth){\n\t\t\t\tweekDay = prevMonth.getUTCDay();\n\t\t\t\tif (weekDay === this.o.weekStart){\n\t\t\t\t\thtml.push('');\n\t\t\t\t\tif (this.o.calendarWeeks){\n\t\t\t\t\t\t// ISO 8601: First week contains first thursday.\n\t\t\t\t\t\t// ISO also states week starts on Monday, but we can be more abstract here.\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\t// Start of current week: based on weekstart/current date\n\t\t\t\t\t\t\tws = new Date(+prevMonth + (this.o.weekStart - weekDay - 7) % 7 * 864e5),\n\t\t\t\t\t\t\t// Thursday of this week\n\t\t\t\t\t\t\tth = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// First Thursday of year, year from thursday\n\t\t\t\t\t\t\tyth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// Calendar week: ms between thursdays, div ms per day, div 7 days\n\t\t\t\t\t\t\tcalWeek = (th - yth) / 864e5 / 7 + 1;\n\t\t\t\t\t\thtml.push(''+ calWeek +'');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclsName = this.getClassNames(prevMonth);\n\t\t\t\tclsName.push('day');\n\n\t\t\t\tvar content = prevMonth.getUTCDate();\n\n\t\t\t\tif (this.o.beforeShowDay !== $.noop){\n\t\t\t\t\tbefore = this.o.beforeShowDay(this._utc_to_local(prevMonth));\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof before === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof before === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false)\n\t\t\t\t\t\tclsName.push('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t\tclsName = clsName.concat(before.classes.split(/\\s+/));\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\tif (before.content)\n\t\t\t\t\t\tcontent = before.content;\n\t\t\t\t}\n\n\t\t\t\t//Check if uniqueSort exists (supported by jquery >=1.12 and >=2.2)\n\t\t\t\t//Fallback to unique function for older jquery versions\n\t\t\t\tif ($.isFunction($.uniqueSort)) {\n\t\t\t\t\tclsName = $.uniqueSort(clsName);\n\t\t\t\t} else {\n\t\t\t\t\tclsName = $.unique(clsName);\n\t\t\t\t}\n\n\t\t\t\thtml.push('' + content + '');\n\t\t\t\ttooltip = null;\n\t\t\t\tif (weekDay === this.o.weekEnd){\n\t\t\t\t\thtml.push('');\n\t\t\t\t}\n\t\t\t\tprevMonth.setUTCDate(prevMonth.getUTCDate() + 1);\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-days tbody').html(html.join(''));\n\n\t\t\tvar monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('.datepicker-switch')\n\t\t\t\t\t\t\t.text(this.o.maxViewMode < 2 ? monthsTitle : year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('tbody span').removeClass('active');\n\n\t\t\t$.each(this.dates, function(i, d){\n\t\t\t\tif (d.getUTCFullYear() === year)\n\t\t\t\t\tmonths.eq(d.getUTCMonth()).addClass('active');\n\t\t\t});\n\n\t\t\tif (year < startYear || year > endYear){\n\t\t\t\tmonths.addClass('disabled');\n\t\t\t}\n\t\t\tif (year === startYear){\n\t\t\t\tmonths.slice(0, startMonth).addClass('disabled');\n\t\t\t}\n\t\t\tif (year === endYear){\n\t\t\t\tmonths.slice(endMonth+1).addClass('disabled');\n\t\t\t}\n\n\t\t\tif (this.o.beforeShowMonth !== $.noop){\n\t\t\t\tvar that = this;\n\t\t\t\t$.each(months, function(i, month){\n var moDate = new Date(year, i, 1);\n var before = that.o.beforeShowMonth(moDate);\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof before === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof before === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false && !$(month).hasClass('disabled'))\n\t\t\t\t\t $(month).addClass('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t $(month).addClass(before.classes);\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t $(month).prop('title', before.tooltip);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Generating decade/years picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-years',\n\t\t\t\t'year',\n\t\t\t\t10,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowYear\n\t\t\t);\n\n\t\t\t// Generating century/decades picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-decades',\n\t\t\t\t'decade',\n\t\t\t\t100,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowDecade\n\t\t\t);\n\n\t\t\t// Generating millennium/centuries picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-centuries',\n\t\t\t\t'century',\n\t\t\t\t1000,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowCentury\n\t\t\t);\n\t\t},\n\n\t\tupdateNavArrows: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn;\n\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\tprevIsDisabled,\n\t\t\t\tnextIsDisabled,\n\t\t\t\tfactor = 1;\n\t\t\tswitch (this.viewMode){\n\t\t\t\tcase 4:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 3:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 2:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\tprevIsDisabled = Math.floor(year / factor) * factor <= startYear;\n\t\t\t\t\tnextIsDisabled = Math.floor(year / factor) * factor + factor > endYear;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tprevIsDisabled = year <= startYear && month <= startMonth;\n\t\t\t\t\tnextIsDisabled = year >= endYear && month >= endMonth;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.picker.find('.prev').toggleClass('disabled', prevIsDisabled);\n\t\t\tthis.picker.find('.next').toggleClass('disabled', nextIsDisabled);\n\t\t},\n\n\t\tclick: function(e){\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\tvar target, dir, day, year, month;\n\t\t\ttarget = $(e.target);\n\n\t\t\t// Clicked on the switch\n\t\t\tif (target.hasClass('datepicker-switch') && this.viewMode !== this.o.maxViewMode){\n\t\t\t\tthis.setViewMode(this.viewMode + 1);\n\t\t\t}\n\n\t\t\t// Clicked on today button\n\t\t\tif (target.hasClass('today') && !target.hasClass('day')){\n\t\t\t\tthis.setViewMode(0);\n\t\t\t\tthis._setDate(UTCToday(), this.o.todayBtn === 'linked' ? null : 'view');\n\t\t\t}\n\n\t\t\t// Clicked on clear button\n\t\t\tif (target.hasClass('clear')){\n\t\t\t\tthis.clearDates();\n\t\t\t}\n\n\t\t\tif (!target.hasClass('disabled')){\n\t\t\t\t// Clicked on a month, year, decade, century\n\t\t\t\tif (target.hasClass('month')\n\t\t\t\t\t\t|| target.hasClass('year')\n\t\t\t\t\t\t|| target.hasClass('decade')\n\t\t\t\t\t\t|| target.hasClass('century')) {\n\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\n\t\t\t\t\tday = 1;\n\t\t\t\t\tif (this.viewMode === 1){\n\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\tyear = Number(target.text());\n\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate);\n\n\t\t\t\t\tif (this.viewMode === this.o.minViewMode){\n\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setViewMode(this.viewMode - 1);\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.picker.is(':visible') && this._focused_from){\n\t\t\t\tthis._focused_from.focus();\n\t\t\t}\n\t\t\tdelete this._focused_from;\n\t\t},\n\n\t\tdayCellClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar timestamp = $target.data('date');\n\t\t\tvar date = new Date(timestamp);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (date.getUTCFullYear() !== this.viewDate.getUTCFullYear()) {\n\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t}\n\n\t\t\t\tif (date.getUTCMonth() !== this.viewDate.getUTCMonth()) {\n\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._setDate(date);\n\t\t},\n\n\t\t// Clicked on prev or next\n\t\tnavArrowsClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar dir = $target.hasClass('prev') ? -1 : 1;\n\t\t\tif (this.viewMode !== 0){\n\t\t\t\tdir *= DPGlobal.viewModes[this.viewMode].navStep * 12;\n\t\t\t}\n\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate);\n\t\t\tthis.fill();\n\t\t},\n\n\t\t_toggle_multidate: function(date){\n\t\t\tvar ix = this.dates.contains(date);\n\t\t\tif (!date){\n\t\t\t\tthis.dates.clear();\n\t\t\t}\n\n\t\t\tif (ix !== -1){\n\t\t\t\tif (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){\n\t\t\t\t\tthis.dates.remove(ix);\n\t\t\t\t}\n\t\t\t} else if (this.o.multidate === false) {\n\t\t\t\tthis.dates.clear();\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\n\t\t\tif (typeof this.o.multidate === 'number')\n\t\t\t\twhile (this.dates.length > this.o.multidate)\n\t\t\t\t\tthis.dates.remove(0);\n\t\t},\n\n\t\t_setDate: function(date, which){\n\t\t\tif (!which || which === 'date')\n\t\t\t\tthis._toggle_multidate(date && new Date(date));\n\t\t\tif ((!which && this.o.updateViewDate) || which === 'view')\n\t\t\t\tthis.viewDate = date && new Date(date);\n\n\t\t\tthis.fill();\n\t\t\tthis.setValue();\n\t\t\tif (!which || which !== 'view') {\n\t\t\t\tthis._trigger('changeDate');\n\t\t\t}\n\t\t\tthis.inputField.trigger('change');\n\t\t\tif (this.o.autoclose && (!which || which === 'date')){\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tmoveDay: function(date, dir){\n\t\t\tvar newDate = new Date(date);\n\t\t\tnewDate.setUTCDate(date.getUTCDate() + dir);\n\n\t\t\treturn newDate;\n\t\t},\n\n\t\tmoveWeek: function(date, dir){\n\t\t\treturn this.moveDay(date, dir * 7);\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!isValidDate(date))\n\t\t\t\treturn this.o.defaultViewDate;\n\t\t\tif (!dir)\n\t\t\t\treturn date;\n\t\t\tvar new_date = new Date(date.valueOf()),\n\t\t\t\tday = new_date.getUTCDate(),\n\t\t\t\tmonth = new_date.getUTCMonth(),\n\t\t\t\tmag = Math.abs(dir),\n\t\t\t\tnew_month, test;\n\t\t\tdir = dir > 0 ? 1 : -1;\n\t\t\tif (mag === 1){\n\t\t\t\ttest = dir === -1\n\t\t\t\t\t// If going back one month, make sure month is not current month\n\t\t\t\t\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t? function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() === month;\n\t\t\t\t\t}\n\t\t\t\t\t// If going forward one month, make sure month is as expected\n\t\t\t\t\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t: function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() !== new_month;\n\t\t\t\t\t};\n\t\t\t\tnew_month = month + dir;\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\t\t\t\tnew_month = (new_month + 12) % 12;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// For magnitudes >1, move one month at a time...\n\t\t\t\tfor (var i=0; i < mag; i++)\n\t\t\t\t\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n\t\t\t\t\tnew_date = this.moveMonth(new_date, dir);\n\t\t\t\t// ...then reset the day, keeping it in the new month\n\t\t\t\tnew_month = new_date.getUTCMonth();\n\t\t\t\tnew_date.setUTCDate(day);\n\t\t\t\ttest = function(){\n\t\t\t\t\treturn new_month !== new_date.getUTCMonth();\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Common date-resetting loop -- if date is beyond end of month, make it\n\t\t\t// end of month\n\t\t\twhile (test()){\n\t\t\t\tnew_date.setUTCDate(--day);\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t}\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveYear: function(date, dir){\n\t\t\treturn this.moveMonth(date, dir*12);\n\t\t},\n\n\t\tmoveAvailableDate: function(date, dir, fn){\n\t\t\tdo {\n\t\t\t\tdate = this[fn](date, dir);\n\n\t\t\t\tif (!this.dateWithinRange(date))\n\t\t\t\t\treturn false;\n\n\t\t\t\tfn = 'moveDay';\n\t\t\t}\n\t\t\twhile (this.dateIsDisabled(date));\n\n\t\t\treturn date;\n\t\t},\n\n\t\tweekOfDateIsDisabled: function(date){\n\t\t\treturn $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;\n\t\t},\n\n\t\tdateIsDisabled: function(date){\n\t\t\treturn (\n\t\t\t\tthis.weekOfDateIsDisabled(date) ||\n\t\t\t\t$.grep(this.o.datesDisabled, function(d){\n\t\t\t\t\treturn isUTCEquals(date, d);\n\t\t\t\t}).length > 0\n\t\t\t);\n\t\t},\n\n\t\tdateWithinRange: function(date){\n\t\t\treturn date >= this.o.startDate && date <= this.o.endDate;\n\t\t},\n\n\t\tkeydown: function(e){\n\t\t\tif (!this.picker.is(':visible')){\n\t\t\t\tif (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\t\te.stopPropagation();\n }\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, newViewDate,\n\t\t\t\tfocusDate = this.focusDate || this.viewDate;\n\t\t\tswitch (e.keyCode){\n\t\t\t\tcase 27: // escape\n\t\t\t\t\tif (this.focusDate){\n\t\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 39: // right\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;\n if (this.viewMode === 0) {\n \t\t\t\t\tif (e.ctrlKey){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n\n \t\t\t\t\t\tif (newViewDate)\n \t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n \t\t\t\t\t} else if (e.shiftKey){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n\n \t\t\t\t\t\tif (newViewDate)\n \t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n \t\t\t\t\t} else if (e.keyCode === 37 || e.keyCode === 39){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');\n \t\t\t\t\t} else if (!this.weekOfDateIsDisabled(focusDate)){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');\n \t\t\t\t\t}\n } else if (this.viewMode === 1) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n } else if (this.viewMode === 2) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n }\n\t\t\t\t\tif (newViewDate){\n\t\t\t\t\t\tthis.focusDate = this.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tif (!this.o.forceParse)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tfocusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tif (this.o.keyboardNavigation) {\n\t\t\t\t\t\tthis._toggle_multidate(focusDate);\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.setValue();\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tif (this.picker.is(':visible')){\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tif (this.o.autoclose)\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9: // tab\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (dateChanged){\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\telse\n\t\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.inputField.trigger('change');\n\t\t\t}\n\t\t},\n\n\t\tsetViewMode: function(viewMode){\n\t\t\tthis.viewMode = viewMode;\n\t\t\tthis.picker\n\t\t\t\t.children('div')\n\t\t\t\t.hide()\n\t\t\t\t.filter('.datepicker-' + DPGlobal.viewModes[this.viewMode].clsName)\n\t\t\t\t\t.show();\n\t\t\tthis.updateNavArrows();\n this._trigger('changeViewMode', new Date(this.viewDate));\n\t\t}\n\t};\n\n\tvar DateRangePicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\n\t\tthis.element = $(element);\n\t\tthis.inputs = $.map(options.inputs, function(i){\n\t\t\treturn i.jquery ? i[0] : i;\n\t\t});\n\t\tdelete options.inputs;\n\n\t\tthis.keepEmptyValues = options.keepEmptyValues;\n\t\tdelete options.keepEmptyValues;\n\n\t\tdatepickerPlugin.call($(this.inputs), options)\n\t\t\t.on('changeDate', $.proxy(this.dateUpdated, this));\n\n\t\tthis.pickers = $.map(this.inputs, function(i){\n\t\t\treturn $.data(i, 'datepicker');\n\t\t});\n\t\tthis.updateDates();\n\t};\n\tDateRangePicker.prototype = {\n\t\tupdateDates: function(){\n\t\t\tthis.dates = $.map(this.pickers, function(i){\n\t\t\t\treturn i.getUTCDate();\n\t\t\t});\n\t\t\tthis.updateRanges();\n\t\t},\n\t\tupdateRanges: function(){\n\t\t\tvar range = $.map(this.dates, function(d){\n\t\t\t\treturn d.valueOf();\n\t\t\t});\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.setRange(range);\n\t\t\t});\n\t\t},\n\t\tclearDates: function(){\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.clearDates();\n\t\t\t});\n\t\t},\n\t\tdateUpdated: function(e){\n\t\t\t// `this.updating` is a workaround for preventing infinite recursion\n\t\t\t// between `changeDate` triggering and `setUTCDate` calling. Until\n\t\t\t// there is a better mechanism.\n\t\t\tif (this.updating)\n\t\t\t\treturn;\n\t\t\tthis.updating = true;\n\n\t\t\tvar dp = $.data(e.target, 'datepicker');\n\n\t\t\tif (dp === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar new_date = dp.getUTCDate(),\n\t\t\t\tkeep_empty_values = this.keepEmptyValues,\n\t\t\t\ti = $.inArray(e.target, this.inputs),\n\t\t\t\tj = i - 1,\n\t\t\t\tk = i + 1,\n\t\t\t\tl = this.inputs.length;\n\t\t\tif (i === -1)\n\t\t\t\treturn;\n\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tif (!p.getUTCDate() && (p === dp || !keep_empty_values))\n\t\t\t\t\tp.setUTCDate(new_date);\n\t\t\t});\n\n\t\t\tif (new_date < this.dates[j]){\n\t\t\t\t// Date being moved earlier/left\n\t\t\t\twhile (j >= 0 && new_date < this.dates[j]){\n\t\t\t\t\tthis.pickers[j--].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t} else if (new_date > this.dates[k]){\n\t\t\t\t// Date being moved later/right\n\t\t\t\twhile (k < l && new_date > this.dates[k]){\n\t\t\t\t\tthis.pickers[k++].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateDates();\n\n\t\t\tdelete this.updating;\n\t\t},\n\t\tdestroy: function(){\n\t\t\t$.map(this.pickers, function(p){ p.destroy(); });\n\t\t\t$(this.inputs).off('changeDate', this.dateUpdated);\n\t\t\tdelete this.element.data().datepicker;\n\t\t},\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead')\n\t};\n\n\tfunction opts_from_el(el, prefix){\n\t\t// Derive options from element data-attrs\n\t\tvar data = $(el).data(),\n\t\t\tout = {}, inkey,\n\t\t\treplace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');\n\t\tprefix = new RegExp('^' + prefix.toLowerCase());\n\t\tfunction re_lower(_,a){\n\t\t\treturn a.toLowerCase();\n\t\t}\n\t\tfor (var key in data)\n\t\t\tif (prefix.test(key)){\n\t\t\t\tinkey = key.replace(replace, re_lower);\n\t\t\t\tout[inkey] = data[key];\n\t\t\t}\n\t\treturn out;\n\t}\n\n\tfunction opts_from_locale(lang){\n\t\t// Derive options from locale plugins\n\t\tvar out = {};\n\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t// fallback to 2 letter code eg \"de\"\n\t\tif (!dates[lang]){\n\t\t\tlang = lang.split('-')[0];\n\t\t\tif (!dates[lang])\n\t\t\t\treturn;\n\t\t}\n\t\tvar d = dates[lang];\n\t\t$.each(locale_opts, function(i,k){\n\t\t\tif (k in d)\n\t\t\t\tout[k] = d[k];\n\t\t});\n\t\treturn out;\n\t}\n\n\tvar old = $.fn.datepicker;\n\tvar datepickerPlugin = function(option){\n\t\tvar args = Array.apply(null, arguments);\n\t\targs.shift();\n\t\tvar internal_return;\n\t\tthis.each(function(){\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datepicker'),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data){\n\t\t\t\tvar elopts = opts_from_el(this, 'date'),\n\t\t\t\t\t// Preliminary otions\n\t\t\t\t\txopts = $.extend({}, defaults, elopts, options),\n\t\t\t\t\tlocopts = opts_from_locale(xopts.language),\n\t\t\t\t\t// Options priority: js args, data-attrs, locales, defaults\n\t\t\t\t\topts = $.extend({}, defaults, locopts, elopts, options);\n\t\t\t\tif ($this.hasClass('input-daterange') || opts.inputs){\n\t\t\t\t\t$.extend(opts, {\n\t\t\t\t\t\tinputs: opts.inputs || $this.find('input').toArray()\n\t\t\t\t\t});\n\t\t\t\t\tdata = new DateRangePicker(this, opts);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdata = new Datepicker(this, opts);\n\t\t\t\t}\n\t\t\t\t$this.data('datepicker', data);\n\t\t\t}\n\t\t\tif (typeof option === 'string' && typeof data[option] === 'function'){\n\t\t\t\tinternal_return = data[option].apply(data, args);\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tinternal_return === undefined ||\n\t\t\tinternal_return instanceof Datepicker ||\n\t\t\tinternal_return instanceof DateRangePicker\n\t\t)\n\t\t\treturn this;\n\n\t\tif (this.length > 1)\n\t\t\tthrow new Error('Using only allowed for the collection of a single element (' + option + ' function)');\n\t\telse\n\t\t\treturn internal_return;\n\t};\n\t$.fn.datepicker = datepickerPlugin;\n\n\tvar defaults = $.fn.datepicker.defaults = {\n\t\tassumeNearbyYear: false,\n\t\tautoclose: false,\n\t\tbeforeShowDay: $.noop,\n\t\tbeforeShowMonth: $.noop,\n\t\tbeforeShowYear: $.noop,\n\t\tbeforeShowDecade: $.noop,\n\t\tbeforeShowCentury: $.noop,\n\t\tcalendarWeeks: false,\n\t\tclearBtn: false,\n\t\ttoggleActive: false,\n\t\tdaysOfWeekDisabled: [],\n\t\tdaysOfWeekHighlighted: [],\n\t\tdatesDisabled: [],\n\t\tendDate: Infinity,\n\t\tforceParse: true,\n\t\tformat: 'mm/dd/yyyy',\n\t\tkeepEmptyValues: false,\n\t\tkeyboardNavigation: true,\n\t\tlanguage: 'en',\n\t\tminViewMode: 0,\n\t\tmaxViewMode: 4,\n\t\tmultidate: false,\n\t\tmultidateSeparator: ',',\n\t\torientation: \"auto\",\n\t\trtl: false,\n\t\tstartDate: -Infinity,\n\t\tstartView: 0,\n\t\ttodayBtn: false,\n\t\ttodayHighlight: false,\n\t\tupdateViewDate: true,\n\t\tweekStart: 0,\n\t\tdisableTouchKeyboard: false,\n\t\tenableOnReadonly: true,\n\t\tshowOnFocus: true,\n\t\tzIndexOffset: 10,\n\t\tcontainer: 'body',\n\t\timmediateUpdates: false,\n\t\ttitle: '',\n\t\ttemplates: {\n\t\t\tleftArrow: '«',\n\t\t\trightArrow: '»'\n\t\t},\n showWeekDays: true\n\t};\n\tvar locale_opts = $.fn.datepicker.locale_opts = [\n\t\t'format',\n\t\t'rtl',\n\t\t'weekStart'\n\t];\n\t$.fn.datepicker.Constructor = Datepicker;\n\tvar dates = $.fn.datepicker.dates = {\n\t\ten: {\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\ttoday: \"Today\",\n\t\t\tclear: \"Clear\",\n\t\t\ttitleFormat: \"MM yyyy\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tviewModes: [\n\t\t\t{\n\t\t\t\tnames: ['days', 'month'],\n\t\t\t\tclsName: 'days',\n\t\t\t\te: 'changeMonth'\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['months', 'year'],\n\t\t\t\tclsName: 'months',\n\t\t\t\te: 'changeYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['years', 'decade'],\n\t\t\t\tclsName: 'years',\n\t\t\t\te: 'changeDecade',\n\t\t\t\tnavStep: 10\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['decades', 'century'],\n\t\t\t\tclsName: 'decades',\n\t\t\t\te: 'changeCentury',\n\t\t\t\tnavStep: 100\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['centuries', 'millennium'],\n\t\t\t\tclsName: 'centuries',\n\t\t\t\te: 'changeMillennium',\n\t\t\t\tnavStep: 1000\n\t\t\t}\n\t\t],\n\t\tvalidParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n\t\tnonpunctuation: /[^ -\\/:-@\\u5e74\\u6708\\u65e5\\[-`{-~\\t\\n\\r]+/g,\n\t\tparseFormat: function(format){\n\t\t\tif (typeof format.toValue === 'function' && typeof format.toDisplay === 'function')\n return format;\n // IE treats \\0 as a string end in inputs (truncating the value),\n\t\t\t// so it's a bad format delimiter, anyway\n\t\t\tvar separators = format.replace(this.validParts, '\\0').split('\\0'),\n\t\t\t\tparts = format.match(this.validParts);\n\t\t\tif (!separators || !separators.length || !parts || parts.length === 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separators: separators, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format, language, assumeNearby){\n\t\t\tif (!date)\n\t\t\t\treturn undefined;\n\t\t\tif (date instanceof Date)\n\t\t\t\treturn date;\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toValue)\n\t\t\t\treturn format.toValue(date, format, language);\n\t\t\tvar fn_map = {\n\t\t\t\t\td: 'moveDay',\n\t\t\t\t\tm: 'moveMonth',\n\t\t\t\t\tw: 'moveWeek',\n\t\t\t\t\ty: 'moveYear'\n\t\t\t\t},\n\t\t\t\tdateAliases = {\n\t\t\t\t\tyesterday: '-1d',\n\t\t\t\t\ttoday: '+0d',\n\t\t\t\t\ttomorrow: '+1d'\n\t\t\t\t},\n\t\t\t\tparts, part, dir, i, fn;\n\t\t\tif (date in dateAliases){\n\t\t\t\tdate = dateAliases[date];\n\t\t\t}\n\t\t\tif (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/i.test(date)){\n\t\t\t\tparts = date.match(/([\\-+]\\d+)([dmwy])/gi);\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (i=0; i < parts.length; i++){\n\t\t\t\t\tpart = parts[i].match(/([\\-+]\\d+)([dmwy])/i);\n\t\t\t\t\tdir = Number(part[1]);\n\t\t\t\t\tfn = fn_map[part[2].toLowerCase()];\n\t\t\t\t\tdate = Datepicker.prototype[fn](date, dir);\n\t\t\t\t}\n\t\t\t\treturn Datepicker.prototype._zero_utc_time(date);\n\t\t\t}\n\n\t\t\tparts = date && date.match(this.nonpunctuation) || [];\n\n\t\t\tfunction applyNearbyYear(year, threshold){\n\t\t\t\tif (threshold === true)\n\t\t\t\t\tthreshold = 10;\n\n\t\t\t\t// if year is 2 digits or less, than the user most likely is trying to get a recent century\n\t\t\t\tif (year < 100){\n\t\t\t\t\tyear += 2000;\n\t\t\t\t\t// if the new year is more than threshold years in advance, use last century\n\t\t\t\t\tif (year > ((new Date()).getFullYear()+threshold)){\n\t\t\t\t\t\tyear -= 100;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn year;\n\t\t\t}\n\n\t\t\tvar parsed = {},\n\t\t\t\tsetters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\n\t\t\t\tsetters_map = {\n\t\t\t\t\tyyyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(assumeNearby ? applyNearbyYear(v, assumeNearby) : v);\n\t\t\t\t\t},\n\t\t\t\t\tm: function(d,v){\n\t\t\t\t\t\tif (isNaN(d))\n\t\t\t\t\t\t\treturn d;\n\t\t\t\t\t\tv -= 1;\n\t\t\t\t\t\twhile (v < 0) v += 12;\n\t\t\t\t\t\tv %= 12;\n\t\t\t\t\t\td.setUTCMonth(v);\n\t\t\t\t\t\twhile (d.getUTCMonth() !== v)\n\t\t\t\t\t\t\td.setUTCDate(d.getUTCDate()-1);\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t},\n\t\t\t\t\td: function(d,v){\n\t\t\t\t\t\treturn d.setUTCDate(v);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tval, filtered;\n\t\t\tsetters_map['yy'] = setters_map['yyyy'];\n\t\t\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n\t\t\tsetters_map['dd'] = setters_map['d'];\n\t\t\tdate = UTCToday();\n\t\t\tvar fparts = format.parts.slice();\n\t\t\t// Remove noop parts\n\t\t\tif (parts.length !== fparts.length){\n\t\t\t\tfparts = $(fparts).filter(function(i,p){\n\t\t\t\t\treturn $.inArray(p, setters_order) !== -1;\n\t\t\t\t}).toArray();\n\t\t\t}\n\t\t\t// Process remainder\n\t\t\tfunction match_part(){\n\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\treturn m.toLowerCase() === p.toLowerCase();\n\t\t\t}\n\t\t\tif (parts.length === fparts.length){\n\t\t\t\tvar cnt;\n\t\t\t\tfor (i=0, cnt = fparts.length; i < cnt; i++){\n\t\t\t\t\tval = parseInt(parts[i], 10);\n\t\t\t\t\tpart = fparts[i];\n\t\t\t\t\tif (isNaN(val)){\n\t\t\t\t\t\tswitch (part){\n\t\t\t\t\t\t\tcase 'MM':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].months).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].months) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].monthsShort).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tparsed[part] = val;\n\t\t\t\t}\n\t\t\t\tvar _date, s;\n\t\t\t\tfor (i=0; i < setters_order.length; i++){\n\t\t\t\t\ts = setters_order[i];\n\t\t\t\t\tif (s in parsed && !isNaN(parsed[s])){\n\t\t\t\t\t\t_date = new Date(date);\n\t\t\t\t\t\tsetters_map[s](_date, parsed[s]);\n\t\t\t\t\t\tif (!isNaN(_date))\n\t\t\t\t\t\t\tdate = _date;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn '';\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toDisplay)\n return format.toDisplay(date, format, language);\n var val = {\n\t\t\t\td: date.getUTCDate(),\n\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\tDD: dates[language].days[date.getUTCDay()],\n\t\t\t\tm: date.getUTCMonth() + 1,\n\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\tMM: dates[language].months[date.getUTCMonth()],\n\t\t\t\tyy: date.getUTCFullYear().toString().substring(2),\n\t\t\t\tyyyy: date.getUTCFullYear()\n\t\t\t};\n\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\tdate = [];\n\t\t\tvar seps = $.extend([], format.separators);\n\t\t\tfor (var i=0, cnt = format.parts.length; i <= cnt; i++){\n\t\t\t\tif (seps.length)\n\t\t\t\t\tdate.push(seps.shift());\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join('');\n\t\t},\n\t\theadTemplate: ''+\n\t\t\t ''+\n\t\t\t ''+\n\t\t\t ''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+defaults.templates.leftArrow+''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+defaults.templates.rightArrow+''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t'',\n\t\tcontTemplate: '',\n\t\tfootTemplate: ''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t''\n\t};\n\tDPGlobal.template = '
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
';\n\n\t$.fn.datepicker.DPGlobal = DPGlobal;\n\n\n\t/* DATEPICKER NO CONFLICT\n\t* =================== */\n\n\t$.fn.datepicker.noConflict = function(){\n\t\t$.fn.datepicker = old;\n\t\treturn this;\n\t};\n\n\t/* DATEPICKER VERSION\n\t * =================== */\n\t$.fn.datepicker.version = '1.9.0';\n\n\t$.fn.datepicker.deprecated = function(msg){\n\t\tvar console = window.console;\n\t\tif (console && console.warn) {\n\t\t\tconsole.warn('DEPRECATED: ' + msg);\n\t\t}\n\t};\n\n\n\t/* DATEPICKER DATA-API\n\t* ================== */\n\n\t$(document).on(\n\t\t'focus.datepicker.data-api click.datepicker.data-api',\n\t\t'[data-provide=\"datepicker\"]',\n\t\tfunction(e){\n\t\t\tvar $this = $(this);\n\t\t\tif ($this.data('datepicker'))\n\t\t\t\treturn;\n\t\t\te.preventDefault();\n\t\t\t// component click requires us to explicitly show it\n\t\t\tdatepickerPlugin.call($this, 'show');\n\t\t}\n\t);\n\t$(function(){\n\t\tdatepickerPlugin.call($('[data-provide=\"datepicker-inline\"]'));\n\t});\n\n}));\n","/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under the MIT license\n */\n\nif (typeof jQuery === 'undefined') {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n 'use strict';\n var version = $.fn.jquery.split(' ')[0].split('.')\n if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')\n }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // https://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.4.1'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n selector = selector === '#' ? [] : selector\n var $parent = $(document).find(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.4.1'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state += 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d).prop(d, true)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d).prop(d, false)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked')) changed = false\n $parent.find('.active').removeClass('active')\n this.$element.addClass('active')\n } else if ($input.prop('type') == 'checkbox') {\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n this.$element.toggleClass('active')\n }\n $input.prop('checked', this.$element.hasClass('active'))\n if (changed) $input.trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n this.$element.toggleClass('active')\n }\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target).closest('.btn')\n Plugin.call($btn, 'toggle')\n if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n e.preventDefault()\n // The target component still receive the focus\n if ($btn.is('input,button')) $btn.trigger('focus')\n else $btn.find('input:visible,button:visible').first().trigger('focus')\n }\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused = null\n this.sliding = null\n this.interval = null\n this.$active = null\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.4.1'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n if (typeof $next === 'object' && $next.length) {\n $next[0].offsetWidth // force reflow\n }\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n if (href) {\n href = href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n }\n\n var target = $this.attr('data-target') || href\n var $target = $(document).find(target)\n\n if (!$target.hasClass('carousel')) return\n\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.4.1'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(document).find(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(document).find(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.4.1'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector !== '#' ? $(document).find(selector) : null\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.4.1'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n var scrollbarWidth = this.scrollbarWidth\n if (this.bodyIsOverflowing) {\n this.$body.css('padding-right', bodyPad + scrollbarWidth)\n $(this.fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight\n var calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n })\n }\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n $(this.fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var target = $this.attr('data-target') ||\n (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n var $target = $(document).find(target)\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n 'use strict';\n\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n var uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n ]\n\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n }\n\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase()\n\n if ($.inArray(attrName, allowedAttributeList) !== -1) {\n if ($.inArray(attrName, uriAttrs) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n var regExp = $(allowedAttributeList).filter(function (index, value) {\n return value instanceof RegExp\n })\n\n // Check if a regular expression validates the attribute.\n for (var i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n // IE 8 and below don't support createHTMLDocument\n if (!document.implementation || !document.implementation.createHTMLDocument) {\n return unsafeHtml\n }\n\n var createdDocument = document.implementation.createHTMLDocument('sanitization')\n createdDocument.body.innerHTML = unsafeHtml\n\n var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n var elements = $(createdDocument.body).find('*')\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var el = elements[i]\n var elName = el.nodeName.toLowerCase()\n\n if ($.inArray(elName, whitelistKeys) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n var attributeList = $.map(el.attributes, function (el) { return el })\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n el.removeAttribute(attributeList[j].nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n }\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.4.1'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n },\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n var dataAttributes = this.$element.data()\n\n for (var dataAttr in dataAttributes) {\n if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n delete dataAttributes[dataAttr]\n }\n }\n\n options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n if (options.sanitize) {\n options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n if (this.options.html) {\n if (this.options.sanitize) {\n title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n }\n\n $tip.find('.tooltip-inner').html(title)\n } else {\n $tip.find('.tooltip-inner').text(title)\n }\n\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n }\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var isSvg = window.SVGElement && el instanceof window.SVGElement\n // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n // See https://github.com/twbs/bootstrap/issues/20280\n var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n that.$element = null\n })\n }\n\n Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n }\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.4.1'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n if (this.options.html) {\n var typeContent = typeof content\n\n if (this.options.sanitize) {\n title = this.sanitizeHtml(title)\n\n if (typeContent === 'string') {\n content = this.sanitizeHtml(content)\n }\n }\n\n $tip.find('.popover-title').html(title)\n $tip.find('.popover-content').children().detach().end()[\n typeContent === 'string' ? 'html' : 'append'\n ](content)\n } else {\n $tip.find('.popover-title').text(title)\n $tip.find('.popover-content').children().detach().end().text(content)\n }\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body)\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.4.1'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var that = this\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n that.offsets.push(this[0])\n that.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element)\n // jscs:enable requireDollarBeforejQueryAssignment\n }\n\n Tab.VERSION = '3.4.1'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(document).find(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)\n\n this.$target = target\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.4.1'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n","// Use strict mode (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode)\n\"use strict\";\n\n\n// Requires\nvar Typo = require(\"typo-js\");\n\n\n// Create function\nfunction CodeMirrorSpellChecker(options) {\n\t// Initialize\n\toptions = options || {};\n\n\n\t// Verify\n\tif(typeof options.codeMirrorInstance !== \"function\" || typeof options.codeMirrorInstance.defineMode !== \"function\") {\n\t\tconsole.log(\"CodeMirror Spell Checker: You must provide an instance of CodeMirror via the option `codeMirrorInstance`\");\n\t\treturn;\n\t}\n\n\n\t// Because some browsers don't support this functionality yet\n\tif(!String.prototype.includes) {\n\t\tString.prototype.includes = function() {\n\t\t\t\"use strict\";\n\t\t\treturn String.prototype.indexOf.apply(this, arguments) !== -1;\n\t\t};\n\t}\n\n\n\t// Define the new mode\n\toptions.codeMirrorInstance.defineMode(\"spell-checker\", function(config) {\n\t\t// Load AFF/DIC data\n\t\tif(!CodeMirrorSpellChecker.aff_loading) {\n\t\t\tCodeMirrorSpellChecker.aff_loading = true;\n\t\t\tvar xhr_aff = new XMLHttpRequest();\n\t\t\txhr_aff.open(\"GET\", \"https://cdn.jsdelivr.net/codemirror.spell-checker/latest/en_US.aff\", true);\n\t\t\txhr_aff.onload = function() {\n\t\t\t\tif(xhr_aff.readyState === 4 && xhr_aff.status === 200) {\n\t\t\t\t\tCodeMirrorSpellChecker.aff_data = xhr_aff.responseText;\n\t\t\t\t\tCodeMirrorSpellChecker.num_loaded++;\n\n\t\t\t\t\tif(CodeMirrorSpellChecker.num_loaded == 2) {\n\t\t\t\t\t\tCodeMirrorSpellChecker.typo = new Typo(\"en_US\", CodeMirrorSpellChecker.aff_data, CodeMirrorSpellChecker.dic_data, {\n\t\t\t\t\t\t\tplatform: \"any\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\txhr_aff.send(null);\n\t\t}\n\n\t\tif(!CodeMirrorSpellChecker.dic_loading) {\n\t\t\tCodeMirrorSpellChecker.dic_loading = true;\n\t\t\tvar xhr_dic = new XMLHttpRequest();\n\t\t\txhr_dic.open(\"GET\", \"https://cdn.jsdelivr.net/codemirror.spell-checker/latest/en_US.dic\", true);\n\t\t\txhr_dic.onload = function() {\n\t\t\t\tif(xhr_dic.readyState === 4 && xhr_dic.status === 200) {\n\t\t\t\t\tCodeMirrorSpellChecker.dic_data = xhr_dic.responseText;\n\t\t\t\t\tCodeMirrorSpellChecker.num_loaded++;\n\n\t\t\t\t\tif(CodeMirrorSpellChecker.num_loaded == 2) {\n\t\t\t\t\t\tCodeMirrorSpellChecker.typo = new Typo(\"en_US\", CodeMirrorSpellChecker.aff_data, CodeMirrorSpellChecker.dic_data, {\n\t\t\t\t\t\t\tplatform: \"any\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\txhr_dic.send(null);\n\t\t}\n\n\n\t\t// Define what separates a word\n\t\tvar rx_word = \"!\\\"#$%&()*+,-./:;<=>?@[\\\\]^_`{|}~ \";\n\n\n\t\t// Create the overlay and such\n\t\tvar overlay = {\n\t\t\ttoken: function(stream) {\n\t\t\t\tvar ch = stream.peek();\n\t\t\t\tvar word = \"\";\n\n\t\t\t\tif(rx_word.includes(ch)) {\n\t\t\t\t\tstream.next();\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\twhile((ch = stream.peek()) != null && !rx_word.includes(ch)) {\n\t\t\t\t\tword += ch;\n\t\t\t\t\tstream.next();\n\t\t\t\t}\n\n\t\t\t\tif(CodeMirrorSpellChecker.typo && !CodeMirrorSpellChecker.typo.check(word))\n\t\t\t\t\treturn \"spell-error\"; // CSS class: cm-spell-error\n\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\n\t\tvar mode = options.codeMirrorInstance.getMode(\n\t\t\tconfig, config.backdrop || \"text/plain\"\n\t\t);\n\n\t\treturn options.codeMirrorInstance.overlayMode(mode, overlay, true);\n\t});\n}\n\n\n// Initialize data globally to reduce memory consumption\nCodeMirrorSpellChecker.num_loaded = 0;\nCodeMirrorSpellChecker.aff_loading = false;\nCodeMirrorSpellChecker.dic_loading = false;\nCodeMirrorSpellChecker.aff_data = \"\";\nCodeMirrorSpellChecker.dic_data = \"\";\nCodeMirrorSpellChecker.typo;\n\n\n// Export\nmodule.exports = CodeMirrorSpellChecker;","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"fullScreen\", false, function(cm, val, old) {\n if (old == CodeMirror.Init) old = false;\n if (!old == !val) return;\n if (val) setFullscreen(cm);\n else setNormal(cm);\n });\n\n function setFullscreen(cm) {\n var wrap = cm.getWrapperElement();\n cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset,\n width: wrap.style.width, height: wrap.style.height};\n wrap.style.width = \"\";\n wrap.style.height = \"auto\";\n wrap.className += \" CodeMirror-fullscreen\";\n document.documentElement.style.overflow = \"hidden\";\n cm.refresh();\n }\n\n function setNormal(cm) {\n var wrap = cm.getWrapperElement();\n wrap.className = wrap.className.replace(/\\s*CodeMirror-fullscreen\\b/, \"\");\n document.documentElement.style.overflow = \"\";\n var info = cm.state.fullScreenRestore;\n wrap.style.width = info.width; wrap.style.height = info.height;\n window.scrollTo(info.scrollLeft, info.scrollTop);\n cm.refresh();\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n CodeMirror.defineOption(\"placeholder\", \"\", function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.on(\"blur\", onBlur);\n cm.on(\"change\", onChange);\n cm.on(\"swapDoc\", onChange);\n CodeMirror.on(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose = function() { onComposition(cm) })\n onChange(cm);\n } else if (!val && prev) {\n cm.off(\"blur\", onBlur);\n cm.off(\"change\", onChange);\n cm.off(\"swapDoc\", onChange);\n CodeMirror.off(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose)\n clearPlaceholder(cm);\n var wrapper = cm.getWrapperElement();\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\");\n }\n\n if (val && !cm.hasFocus()) onBlur(cm);\n });\n\n function clearPlaceholder(cm) {\n if (cm.state.placeholder) {\n cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n cm.state.placeholder = null;\n }\n }\n function setPlaceholder(cm) {\n clearPlaceholder(cm);\n var elt = cm.state.placeholder = document.createElement(\"pre\");\n elt.style.cssText = \"height: 0; overflow: visible\";\n elt.style.direction = cm.getOption(\"direction\");\n elt.className = \"CodeMirror-placeholder CodeMirror-line-like\";\n var placeHolder = cm.getOption(\"placeholder\")\n if (typeof placeHolder == \"string\") placeHolder = document.createTextNode(placeHolder)\n elt.appendChild(placeHolder)\n cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n }\n\n function onComposition(cm) {\n setTimeout(function() {\n var empty = false\n if (cm.lineCount() == 1) {\n var input = cm.getInputField()\n empty = input.nodeName == \"TEXTAREA\" ? !cm.getLine(0).length\n : !/[^\\u200b]/.test(input.querySelector(\".CodeMirror-line\").textContent)\n }\n if (empty) setPlaceholder(cm)\n else clearPlaceholder(cm)\n }, 20)\n }\n\n function onBlur(cm) {\n if (isEmpty(cm)) setPlaceholder(cm);\n }\n function onChange(cm) {\n var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\") + (empty ? \" CodeMirror-empty\" : \"\");\n\n if (empty) setPlaceholder(cm);\n else clearPlaceholder(cm);\n }\n\n function isEmpty(cm) {\n return (cm.lineCount() === 1) && (cm.getLine(0) === \"\");\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var listRE = /^(\\s*)(>[> ]*|[*+-] \\[[x ]\\]\\s|[*+-]\\s|(\\d+)([.)]))(\\s*)/,\n emptyListRE = /^(\\s*)(>[> ]*|[*+-] \\[[x ]\\]|[*+-]|(\\d+)[.)])(\\s*)$/,\n unorderedListRE = /[*+-]\\s/;\n\n CodeMirror.commands.newlineAndIndentContinueMarkdownList = function(cm) {\n if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n var ranges = cm.listSelections(), replacements = [];\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].head;\n\n // If we're not in Markdown mode, fall back to normal newlineAndIndent\n var eolState = cm.getStateAfter(pos.line);\n var inner = CodeMirror.innerMode(cm.getMode(), eolState);\n if (inner.mode.name !== \"markdown\" && inner.mode.helperType !== \"markdown\") {\n cm.execCommand(\"newlineAndIndent\");\n return;\n } else {\n eolState = inner.state;\n }\n\n var inList = eolState.list !== false;\n var inQuote = eolState.quote !== 0;\n\n var line = cm.getLine(pos.line), match = listRE.exec(line);\n var cursorBeforeBullet = /^\\s*$/.test(line.slice(0, pos.ch));\n if (!ranges[i].empty() || (!inList && !inQuote) || !match || cursorBeforeBullet) {\n cm.execCommand(\"newlineAndIndent\");\n return;\n }\n if (emptyListRE.test(line)) {\n var endOfQuote = inQuote && />\\s*$/.test(line)\n var endOfList = !/>\\s*$/.test(line)\n if (endOfQuote || endOfList) cm.replaceRange(\"\", {\n line: pos.line, ch: 0\n }, {\n line: pos.line, ch: pos.ch + 1\n });\n replacements[i] = \"\\n\";\n } else {\n var indent = match[1], after = match[5];\n var numbered = !(unorderedListRE.test(match[2]) || match[2].indexOf(\">\") >= 0);\n var bullet = numbered ? (parseInt(match[3], 10) + 1) + match[4] : match[2].replace(\"x\", \" \");\n replacements[i] = \"\\n\" + indent + bullet + after;\n\n if (numbered) incrementRemainingMarkdownListNumbers(cm, pos);\n }\n }\n\n cm.replaceSelections(replacements);\n };\n\n // Auto-updating Markdown list numbers when a new item is added to the\n // middle of a list\n function incrementRemainingMarkdownListNumbers(cm, pos) {\n var startLine = pos.line, lookAhead = 0, skipCount = 0;\n var startItem = listRE.exec(cm.getLine(startLine)), startIndent = startItem[1];\n\n do {\n lookAhead += 1;\n var nextLineNumber = startLine + lookAhead;\n var nextLine = cm.getLine(nextLineNumber), nextItem = listRE.exec(nextLine);\n\n if (nextItem) {\n var nextIndent = nextItem[1];\n var newNumber = (parseInt(startItem[3], 10) + lookAhead - skipCount);\n var nextNumber = (parseInt(nextItem[3], 10)), itemNumber = nextNumber;\n\n if (startIndent === nextIndent && !isNaN(nextNumber)) {\n if (newNumber === nextNumber) itemNumber = nextNumber + 1;\n if (newNumber > nextNumber) itemNumber = newNumber + 1;\n cm.replaceRange(\n nextLine.replace(listRE, nextIndent + itemNumber + nextItem[4] + nextItem[5]),\n {\n line: nextLineNumber, ch: 0\n }, {\n line: nextLineNumber, ch: nextLine.length\n });\n } else {\n if (startIndent.length > nextIndent.length) return;\n // This doesn't run if the next line immediately indents, as it is\n // not clear of the users intention (new indented item or same level)\n if ((startIndent.length < nextIndent.length) && (lookAhead === 1)) return;\n skipCount += 1;\n }\n }\n } while (nextItem);\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Utility function that allows modes to be combined. The mode given\n// as the base argument takes care of most of the normal mode\n// functionality, but a second (typically simple) mode is used, which\n// can override the style of text. Both modes get to parse all of the\n// text, but when both assign a non-null style to a piece of code, the\n// overlay wins, unless the combine argument was true and not overridden,\n// or state.overlay.combineTokens was true, in which case the styles are\n// combined.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.overlayMode = function(base, overlay, combine) {\n return {\n startState: function() {\n return {\n base: CodeMirror.startState(base),\n overlay: CodeMirror.startState(overlay),\n basePos: 0, baseCur: null,\n overlayPos: 0, overlayCur: null,\n streamSeen: null\n };\n },\n copyState: function(state) {\n return {\n base: CodeMirror.copyState(base, state.base),\n overlay: CodeMirror.copyState(overlay, state.overlay),\n basePos: state.basePos, baseCur: null,\n overlayPos: state.overlayPos, overlayCur: null\n };\n },\n\n token: function(stream, state) {\n if (stream != state.streamSeen ||\n Math.min(state.basePos, state.overlayPos) < stream.start) {\n state.streamSeen = stream;\n state.basePos = state.overlayPos = stream.start;\n }\n\n if (stream.start == state.basePos) {\n state.baseCur = base.token(stream, state.base);\n state.basePos = stream.pos;\n }\n if (stream.start == state.overlayPos) {\n stream.pos = stream.start;\n state.overlayCur = overlay.token(stream, state.overlay);\n state.overlayPos = stream.pos;\n }\n stream.pos = Math.min(state.basePos, state.overlayPos);\n\n // state.overlay.combineTokens always takes precedence over combine,\n // unless set to null\n if (state.overlayCur == null) return state.baseCur;\n else if (state.baseCur != null &&\n state.overlay.combineTokens ||\n combine && state.overlay.combineTokens == null)\n return state.baseCur + \" \" + state.overlayCur;\n else return state.overlayCur;\n },\n\n indent: base.indent && function(state, textAfter, line) {\n return base.indent(state.base, textAfter, line);\n },\n electricChars: base.electricChars,\n\n innerMode: function(state) { return {state: state.base, mode: base}; },\n\n blankLine: function(state) {\n var baseToken, overlayToken;\n if (base.blankLine) baseToken = base.blankLine(state.base);\n if (overlay.blankLine) overlayToken = overlay.blankLine(state.overlay);\n\n return overlayToken == null ?\n baseToken :\n (combine && baseToken != null ? baseToken + \" \" + overlayToken : overlayToken);\n }\n };\n};\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Because sometimes you need to mark the selected *text*.\n//\n// Adds an option 'styleSelectedText' which, when enabled, gives\n// selected text the CSS class given as option value, or\n// \"CodeMirror-selectedtext\" when the value is not a string.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"styleSelectedText\", false, function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.state.markedSelection = [];\n cm.state.markedSelectionStyle = typeof val == \"string\" ? val : \"CodeMirror-selectedtext\";\n reset(cm);\n cm.on(\"cursorActivity\", onCursorActivity);\n cm.on(\"change\", onChange);\n } else if (!val && prev) {\n cm.off(\"cursorActivity\", onCursorActivity);\n cm.off(\"change\", onChange);\n clear(cm);\n cm.state.markedSelection = cm.state.markedSelectionStyle = null;\n }\n });\n\n function onCursorActivity(cm) {\n if (cm.state.markedSelection)\n cm.operation(function() { update(cm); });\n }\n\n function onChange(cm) {\n if (cm.state.markedSelection && cm.state.markedSelection.length)\n cm.operation(function() { clear(cm); });\n }\n\n var CHUNK_SIZE = 8;\n var Pos = CodeMirror.Pos;\n var cmp = CodeMirror.cmpPos;\n\n function coverRange(cm, from, to, addAt) {\n if (cmp(from, to) == 0) return;\n var array = cm.state.markedSelection;\n var cls = cm.state.markedSelectionStyle;\n for (var line = from.line;;) {\n var start = line == from.line ? from : Pos(line, 0);\n var endLine = line + CHUNK_SIZE, atEnd = endLine >= to.line;\n var end = atEnd ? to : Pos(endLine, 0);\n var mark = cm.markText(start, end, {className: cls});\n if (addAt == null) array.push(mark);\n else array.splice(addAt++, 0, mark);\n if (atEnd) break;\n line = endLine;\n }\n }\n\n function clear(cm) {\n var array = cm.state.markedSelection;\n for (var i = 0; i < array.length; ++i) array[i].clear();\n array.length = 0;\n }\n\n function reset(cm) {\n clear(cm);\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++)\n coverRange(cm, ranges[i].from(), ranges[i].to());\n }\n\n function update(cm) {\n if (!cm.somethingSelected()) return clear(cm);\n if (cm.listSelections().length > 1) return reset(cm);\n\n var from = cm.getCursor(\"start\"), to = cm.getCursor(\"end\");\n\n var array = cm.state.markedSelection;\n if (!array.length) return coverRange(cm, from, to);\n\n var coverStart = array[0].find(), coverEnd = array[array.length - 1].find();\n if (!coverStart || !coverEnd || to.line - from.line <= CHUNK_SIZE ||\n cmp(from, coverEnd.to) >= 0 || cmp(to, coverStart.from) <= 0)\n return reset(cm);\n\n while (cmp(from, coverStart.from) > 0) {\n array.shift().clear();\n coverStart = array[0].find();\n }\n if (cmp(from, coverStart.from) < 0) {\n if (coverStart.to.line - from.line < CHUNK_SIZE) {\n array.shift().clear();\n coverRange(cm, from, coverStart.to, 0);\n } else {\n coverRange(cm, from, coverStart.from, 0);\n }\n }\n\n while (cmp(to, coverEnd.to) < 0) {\n array.pop().clear();\n coverEnd = array[array.length - 1].find();\n }\n if (cmp(to, coverEnd.to) > 0) {\n if (to.line - coverEnd.from.line < CHUNK_SIZE) {\n array.pop().clear();\n coverRange(cm, coverEnd.from, to);\n } else {\n coverRange(cm, coverEnd.to, to);\n }\n }\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\/(\\d+)/.exec(userAgent);\n var chrome_version = chrome && +chrome[1];\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch(e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n }\n function pageScrollY() {\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n return window.pageYOffset || (document.documentElement || document.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)\n { height += widgetHeight(widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n var customCursor = cm.options.$customCursor;\n if (customCursor) { primary = true; }\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (customCursor) {\n var head = customCursor(cm, range);\n if (head) { drawSelectionCursor(cm, head, curFragment); }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) { mustScroll -= diff; }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.pointerEvents = \"none\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId, // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = window.getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n // On Chrome 102, viewport updates somehow stop wheel-based\n // scrolling. Turning off pointer events during the scroll seems\n // to avoid the issue.\n if (chrome && chrome_version >= 102) {\n if (cm.display.chromeScrollHack == null) { cm.display.sizer.style.pointerEvents = \"none\"; }\n else { clearTimeout(cm.display.chromeScrollHack); }\n cm.display.chromeScrollHack = setTimeout(function () {\n cm.display.chromeScrollHack = null;\n cm.display.sizer.style.pointerEvents = \"\";\n }, 100);\n }\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n if (lineSep === '') { return lines.join('') }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) { delayBlurEvent(cm); }\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput && cm.hasFocus())\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n disableBrowserMagic(te);\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){window.focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt() },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt();\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt() == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt() != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n\n var input = this;\n if (this.selectionInEditor())\n { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) { return }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { window.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.65.5\";\n\n return CodeMirror;\n\n})));\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../markdown/markdown\"), require(\"../../addon/mode/overlay\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../markdown/markdown\", \"../../addon/mode/overlay\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar urlRE = /^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\\.beep|\\.lwz|\\.xpc|\\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\\.beeps?|xmpp|xri|ymsgr|z39\\.50[rs]?):(?:\\/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]|\\([^\\s()<>]*\\))+(?:\\([^\\s()<>]*\\)|[^\\s`*!()\\[\\]{};:'\".,<>?«»“”‘’]))/i\n\nCodeMirror.defineMode(\"gfm\", function(config, modeConfig) {\n var codeDepth = 0;\n function blankLine(state) {\n state.code = false;\n return null;\n }\n var gfmOverlay = {\n startState: function() {\n return {\n code: false,\n codeBlock: false,\n ateSpace: false\n };\n },\n copyState: function(s) {\n return {\n code: s.code,\n codeBlock: s.codeBlock,\n ateSpace: s.ateSpace\n };\n },\n token: function(stream, state) {\n state.combineTokens = null;\n\n // Hack to prevent formatting override inside code blocks (block and inline)\n if (state.codeBlock) {\n if (stream.match(/^```+/)) {\n state.codeBlock = false;\n return null;\n }\n stream.skipToEnd();\n return null;\n }\n if (stream.sol()) {\n state.code = false;\n }\n if (stream.sol() && stream.match(/^```+/)) {\n stream.skipToEnd();\n state.codeBlock = true;\n return null;\n }\n // If this block is changed, it may need to be updated in Markdown mode\n if (stream.peek() === '`') {\n stream.next();\n var before = stream.pos;\n stream.eatWhile('`');\n var difference = 1 + stream.pos - before;\n if (!state.code) {\n codeDepth = difference;\n state.code = true;\n } else {\n if (difference === codeDepth) { // Must be exact\n state.code = false;\n }\n }\n return null;\n } else if (state.code) {\n stream.next();\n return null;\n }\n // Check if space. If so, links can be formatted later on\n if (stream.eatSpace()) {\n state.ateSpace = true;\n return null;\n }\n if (stream.sol() || state.ateSpace) {\n state.ateSpace = false;\n if (modeConfig.gitHubSpice !== false) {\n if(stream.match(/^(?:[a-zA-Z0-9\\-_]+\\/)?(?:[a-zA-Z0-9\\-_]+@)?(?=.{0,6}\\d)(?:[a-f0-9]{7,40}\\b)/)) {\n // User/Project@SHA\n // User@SHA\n // SHA\n state.combineTokens = true;\n return \"link\";\n } else if (stream.match(/^(?:[a-zA-Z0-9\\-_]+\\/)?(?:[a-zA-Z0-9\\-_]+)?#[0-9]+\\b/)) {\n // User/Project#Num\n // User#Num\n // #Num\n state.combineTokens = true;\n return \"link\";\n }\n }\n }\n if (stream.match(urlRE) &&\n stream.string.slice(stream.start - 2, stream.start) != \"](\" &&\n (stream.start == 0 || /\\W/.test(stream.string.charAt(stream.start - 1)))) {\n // URLs\n // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls\n // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine\n // And then limited url schemes to the CommonMark list, so foo:bar isn't matched as a URL\n state.combineTokens = true;\n return \"link\";\n }\n stream.next();\n return null;\n },\n blankLine: blankLine\n };\n\n var markdownConfig = {\n taskLists: true,\n strikethrough: true,\n emoji: true\n };\n for (var attr in modeConfig) {\n markdownConfig[attr] = modeConfig[attr];\n }\n markdownConfig.name = \"markdown\";\n return CodeMirror.overlayMode(CodeMirror.getMode(config, markdownConfig), gfmOverlay);\n\n}, \"markdown\");\n\n CodeMirror.defineMIME(\"text/x-gfm\", \"gfm\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../meta\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../xml/xml\", \"../meta\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"markdown\", function(cmCfg, modeCfg) {\n\n var htmlMode = CodeMirror.getMode(cmCfg, \"text/html\");\n var htmlModeMissing = htmlMode.name == \"null\"\n\n function getMode(name) {\n if (CodeMirror.findModeByName) {\n var found = CodeMirror.findModeByName(name);\n if (found) name = found.mime || found.mimes[0];\n }\n var mode = CodeMirror.getMode(cmCfg, name);\n return mode.name == \"null\" ? null : mode;\n }\n\n // Should characters that affect highlighting be highlighted separate?\n // Does not include characters that will be output (such as `1.` and `-` for lists)\n if (modeCfg.highlightFormatting === undefined)\n modeCfg.highlightFormatting = false;\n\n // Maximum number of nested blockquotes. Set to 0 for infinite nesting.\n // Excess `>` will emit `error` token.\n if (modeCfg.maxBlockquoteDepth === undefined)\n modeCfg.maxBlockquoteDepth = 0;\n\n // Turn on task lists? (\"- [ ] \" and \"- [x] \")\n if (modeCfg.taskLists === undefined) modeCfg.taskLists = false;\n\n // Turn on strikethrough syntax\n if (modeCfg.strikethrough === undefined)\n modeCfg.strikethrough = false;\n\n if (modeCfg.emoji === undefined)\n modeCfg.emoji = false;\n\n if (modeCfg.fencedCodeBlockHighlighting === undefined)\n modeCfg.fencedCodeBlockHighlighting = true;\n\n if (modeCfg.fencedCodeBlockDefaultMode === undefined)\n modeCfg.fencedCodeBlockDefaultMode = 'text/plain';\n\n if (modeCfg.xml === undefined)\n modeCfg.xml = true;\n\n // Allow token types to be overridden by user-provided token types.\n if (modeCfg.tokenTypeOverrides === undefined)\n modeCfg.tokenTypeOverrides = {};\n\n var tokenTypes = {\n header: \"header\",\n code: \"comment\",\n quote: \"quote\",\n list1: \"variable-2\",\n list2: \"variable-3\",\n list3: \"keyword\",\n hr: \"hr\",\n image: \"image\",\n imageAltText: \"image-alt-text\",\n imageMarker: \"image-marker\",\n formatting: \"formatting\",\n linkInline: \"link\",\n linkEmail: \"link\",\n linkText: \"link\",\n linkHref: \"string\",\n em: \"em\",\n strong: \"strong\",\n strikethrough: \"strikethrough\",\n emoji: \"builtin\"\n };\n\n for (var tokenType in tokenTypes) {\n if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) {\n tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType];\n }\n }\n\n var hrRE = /^([*\\-_])(?:\\s*\\1){2,}\\s*$/\n , listRE = /^(?:[*\\-+]|^[0-9]+([.)]))\\s+/\n , taskListRE = /^\\[(x| )\\](?=\\s)/i // Must follow listRE\n , atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/\n , setextHeaderRE = /^ {0,3}(?:\\={1,}|-{2,})\\s*$/\n , textRE = /^[^#!\\[\\]*_\\\\<>` \"'(~:]+/\n , fencedCodeRE = /^(~~~+|```+)[ \\t]*([\\w\\/+#-]*)[^\\n`]*$/\n , linkDefRE = /^\\s*\\[[^\\]]+?\\]:.*$/ // naive link-definition\n , punctuation = /[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E42\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDF3C-\\uDF3E]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]/\n , expandedTab = \" \" // CommonMark specifies tab as 4 spaces\n\n function switchInline(stream, state, f) {\n state.f = state.inline = f;\n return f(stream, state);\n }\n\n function switchBlock(stream, state, f) {\n state.f = state.block = f;\n return f(stream, state);\n }\n\n function lineIsEmpty(line) {\n return !line || !/\\S/.test(line.string)\n }\n\n // Blocks\n\n function blankLine(state) {\n // Reset linkTitle state\n state.linkTitle = false;\n state.linkHref = false;\n state.linkText = false;\n // Reset EM state\n state.em = false;\n // Reset STRONG state\n state.strong = false;\n // Reset strikethrough state\n state.strikethrough = false;\n // Reset state.quote\n state.quote = 0;\n // Reset state.indentedCode\n state.indentedCode = false;\n if (state.f == htmlBlock) {\n var exit = htmlModeMissing\n if (!exit) {\n var inner = CodeMirror.innerMode(htmlMode, state.htmlState)\n exit = inner.mode.name == \"xml\" && inner.state.tagStart === null &&\n (!inner.state.context && inner.state.tokenize.isInText)\n }\n if (exit) {\n state.f = inlineNormal;\n state.block = blockNormal;\n state.htmlState = null;\n }\n }\n // Reset state.trailingSpace\n state.trailingSpace = 0;\n state.trailingSpaceNewLine = false;\n // Mark this line as blank\n state.prevLine = state.thisLine\n state.thisLine = {stream: null}\n return null;\n }\n\n function blockNormal(stream, state) {\n var firstTokenOnLine = stream.column() === state.indentation;\n var prevLineLineIsEmpty = lineIsEmpty(state.prevLine.stream);\n var prevLineIsIndentedCode = state.indentedCode;\n var prevLineIsHr = state.prevLine.hr;\n var prevLineIsList = state.list !== false;\n var maxNonCodeIndentation = (state.listStack[state.listStack.length - 1] || 0) + 3;\n\n state.indentedCode = false;\n\n var lineIndentation = state.indentation;\n // compute once per line (on first token)\n if (state.indentationDiff === null) {\n state.indentationDiff = state.indentation;\n if (prevLineIsList) {\n state.list = null;\n // While this list item's marker's indentation is less than the deepest\n // list item's content's indentation,pop the deepest list item\n // indentation off the stack, and update block indentation state\n while (lineIndentation < state.listStack[state.listStack.length - 1]) {\n state.listStack.pop();\n if (state.listStack.length) {\n state.indentation = state.listStack[state.listStack.length - 1];\n // less than the first list's indent -> the line is no longer a list\n } else {\n state.list = false;\n }\n }\n if (state.list !== false) {\n state.indentationDiff = lineIndentation - state.listStack[state.listStack.length - 1]\n }\n }\n }\n\n // not comprehensive (currently only for setext detection purposes)\n var allowsInlineContinuation = (\n !prevLineLineIsEmpty && !prevLineIsHr && !state.prevLine.header &&\n (!prevLineIsList || !prevLineIsIndentedCode) &&\n !state.prevLine.fencedCodeEnd\n );\n\n var isHr = (state.list === false || prevLineIsHr || prevLineLineIsEmpty) &&\n state.indentation <= maxNonCodeIndentation && stream.match(hrRE);\n\n var match = null;\n if (state.indentationDiff >= 4 && (prevLineIsIndentedCode || state.prevLine.fencedCodeEnd ||\n state.prevLine.header || prevLineLineIsEmpty)) {\n stream.skipToEnd();\n state.indentedCode = true;\n return tokenTypes.code;\n } else if (stream.eatSpace()) {\n return null;\n } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(atxHeaderRE)) && match[1].length <= 6) {\n state.quote = 0;\n state.header = match[1].length;\n state.thisLine.header = true;\n if (modeCfg.highlightFormatting) state.formatting = \"header\";\n state.f = state.inline;\n return getType(state);\n } else if (state.indentation <= maxNonCodeIndentation && stream.eat('>')) {\n state.quote = firstTokenOnLine ? 1 : state.quote + 1;\n if (modeCfg.highlightFormatting) state.formatting = \"quote\";\n stream.eatSpace();\n return getType(state);\n } else if (!isHr && !state.setext && firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(listRE))) {\n var listType = match[1] ? \"ol\" : \"ul\";\n\n state.indentation = lineIndentation + stream.current().length;\n state.list = true;\n state.quote = 0;\n\n // Add this list item's content's indentation to the stack\n state.listStack.push(state.indentation);\n // Reset inline styles which shouldn't propagate across list items\n state.em = false;\n state.strong = false;\n state.code = false;\n state.strikethrough = false;\n\n if (modeCfg.taskLists && stream.match(taskListRE, false)) {\n state.taskList = true;\n }\n state.f = state.inline;\n if (modeCfg.highlightFormatting) state.formatting = [\"list\", \"list-\" + listType];\n return getType(state);\n } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(fencedCodeRE, true))) {\n state.quote = 0;\n state.fencedEndRE = new RegExp(match[1] + \"+ *$\");\n // try switching mode\n state.localMode = modeCfg.fencedCodeBlockHighlighting && getMode(match[2] || modeCfg.fencedCodeBlockDefaultMode );\n if (state.localMode) state.localState = CodeMirror.startState(state.localMode);\n state.f = state.block = local;\n if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n state.code = -1\n return getType(state);\n // SETEXT has lowest block-scope precedence after HR, so check it after\n // the others (code, blockquote, list...)\n } else if (\n // if setext set, indicates line after ---/===\n state.setext || (\n // line before ---/===\n (!allowsInlineContinuation || !prevLineIsList) && !state.quote && state.list === false &&\n !state.code && !isHr && !linkDefRE.test(stream.string) &&\n (match = stream.lookAhead(1)) && (match = match.match(setextHeaderRE))\n )\n ) {\n if ( !state.setext ) {\n state.header = match[0].charAt(0) == '=' ? 1 : 2;\n state.setext = state.header;\n } else {\n state.header = state.setext;\n // has no effect on type so we can reset it now\n state.setext = 0;\n stream.skipToEnd();\n if (modeCfg.highlightFormatting) state.formatting = \"header\";\n }\n state.thisLine.header = true;\n state.f = state.inline;\n return getType(state);\n } else if (isHr) {\n stream.skipToEnd();\n state.hr = true;\n state.thisLine.hr = true;\n return tokenTypes.hr;\n } else if (stream.peek() === '[') {\n return switchInline(stream, state, footnoteLink);\n }\n\n return switchInline(stream, state, state.inline);\n }\n\n function htmlBlock(stream, state) {\n var style = htmlMode.token(stream, state.htmlState);\n if (!htmlModeMissing) {\n var inner = CodeMirror.innerMode(htmlMode, state.htmlState)\n if ((inner.mode.name == \"xml\" && inner.state.tagStart === null &&\n (!inner.state.context && inner.state.tokenize.isInText)) ||\n (state.md_inside && stream.current().indexOf(\">\") > -1)) {\n state.f = inlineNormal;\n state.block = blockNormal;\n state.htmlState = null;\n }\n }\n return style;\n }\n\n function local(stream, state) {\n var currListInd = state.listStack[state.listStack.length - 1] || 0;\n var hasExitedList = state.indentation < currListInd;\n var maxFencedEndInd = currListInd + 3;\n if (state.fencedEndRE && state.indentation <= maxFencedEndInd && (hasExitedList || stream.match(state.fencedEndRE))) {\n if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n var returnType;\n if (!hasExitedList) returnType = getType(state)\n state.localMode = state.localState = null;\n state.block = blockNormal;\n state.f = inlineNormal;\n state.fencedEndRE = null;\n state.code = 0\n state.thisLine.fencedCodeEnd = true;\n if (hasExitedList) return switchBlock(stream, state, state.block);\n return returnType;\n } else if (state.localMode) {\n return state.localMode.token(stream, state.localState);\n } else {\n stream.skipToEnd();\n return tokenTypes.code;\n }\n }\n\n // Inline\n function getType(state) {\n var styles = [];\n\n if (state.formatting) {\n styles.push(tokenTypes.formatting);\n\n if (typeof state.formatting === \"string\") state.formatting = [state.formatting];\n\n for (var i = 0; i < state.formatting.length; i++) {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i]);\n\n if (state.formatting[i] === \"header\") {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.header);\n }\n\n // Add `formatting-quote` and `formatting-quote-#` for blockquotes\n // Add `error` instead if the maximum blockquote nesting depth is passed\n if (state.formatting[i] === \"quote\") {\n if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.quote);\n } else {\n styles.push(\"error\");\n }\n }\n }\n }\n\n if (state.taskOpen) {\n styles.push(\"meta\");\n return styles.length ? styles.join(' ') : null;\n }\n if (state.taskClosed) {\n styles.push(\"property\");\n return styles.length ? styles.join(' ') : null;\n }\n\n if (state.linkHref) {\n styles.push(tokenTypes.linkHref, \"url\");\n } else { // Only apply inline styles to non-url text\n if (state.strong) { styles.push(tokenTypes.strong); }\n if (state.em) { styles.push(tokenTypes.em); }\n if (state.strikethrough) { styles.push(tokenTypes.strikethrough); }\n if (state.emoji) { styles.push(tokenTypes.emoji); }\n if (state.linkText) { styles.push(tokenTypes.linkText); }\n if (state.code) { styles.push(tokenTypes.code); }\n if (state.image) { styles.push(tokenTypes.image); }\n if (state.imageAltText) { styles.push(tokenTypes.imageAltText, \"link\"); }\n if (state.imageMarker) { styles.push(tokenTypes.imageMarker); }\n }\n\n if (state.header) { styles.push(tokenTypes.header, tokenTypes.header + \"-\" + state.header); }\n\n if (state.quote) {\n styles.push(tokenTypes.quote);\n\n // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth\n if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n styles.push(tokenTypes.quote + \"-\" + state.quote);\n } else {\n styles.push(tokenTypes.quote + \"-\" + modeCfg.maxBlockquoteDepth);\n }\n }\n\n if (state.list !== false) {\n var listMod = (state.listStack.length - 1) % 3;\n if (!listMod) {\n styles.push(tokenTypes.list1);\n } else if (listMod === 1) {\n styles.push(tokenTypes.list2);\n } else {\n styles.push(tokenTypes.list3);\n }\n }\n\n if (state.trailingSpaceNewLine) {\n styles.push(\"trailing-space-new-line\");\n } else if (state.trailingSpace) {\n styles.push(\"trailing-space-\" + (state.trailingSpace % 2 ? \"a\" : \"b\"));\n }\n\n return styles.length ? styles.join(' ') : null;\n }\n\n function handleText(stream, state) {\n if (stream.match(textRE, true)) {\n return getType(state);\n }\n return undefined;\n }\n\n function inlineNormal(stream, state) {\n var style = state.text(stream, state);\n if (typeof style !== 'undefined')\n return style;\n\n if (state.list) { // List marker (*, +, -, 1., etc)\n state.list = null;\n return getType(state);\n }\n\n if (state.taskList) {\n var taskOpen = stream.match(taskListRE, true)[1] === \" \";\n if (taskOpen) state.taskOpen = true;\n else state.taskClosed = true;\n if (modeCfg.highlightFormatting) state.formatting = \"task\";\n state.taskList = false;\n return getType(state);\n }\n\n state.taskOpen = false;\n state.taskClosed = false;\n\n if (state.header && stream.match(/^#+$/, true)) {\n if (modeCfg.highlightFormatting) state.formatting = \"header\";\n return getType(state);\n }\n\n var ch = stream.next();\n\n // Matches link titles present on next line\n if (state.linkTitle) {\n state.linkTitle = false;\n var matchCh = ch;\n if (ch === '(') {\n matchCh = ')';\n }\n matchCh = (matchCh+'').replace(/([.?*+^\\[\\]\\\\(){}|-])/g, \"\\\\$1\");\n var regex = '^\\\\s*(?:[^' + matchCh + '\\\\\\\\]+|\\\\\\\\\\\\\\\\|\\\\\\\\.)' + matchCh;\n if (stream.match(new RegExp(regex), true)) {\n return tokenTypes.linkHref;\n }\n }\n\n // If this block is changed, it may need to be updated in GFM mode\n if (ch === '`') {\n var previousFormatting = state.formatting;\n if (modeCfg.highlightFormatting) state.formatting = \"code\";\n stream.eatWhile('`');\n var count = stream.current().length\n if (state.code == 0 && (!state.quote || count == 1)) {\n state.code = count\n return getType(state)\n } else if (count == state.code) { // Must be exact\n var t = getType(state)\n state.code = 0\n return t\n } else {\n state.formatting = previousFormatting\n return getType(state)\n }\n } else if (state.code) {\n return getType(state);\n }\n\n if (ch === '\\\\') {\n stream.next();\n if (modeCfg.highlightFormatting) {\n var type = getType(state);\n var formattingEscape = tokenTypes.formatting + \"-escape\";\n return type ? type + \" \" + formattingEscape : formattingEscape;\n }\n }\n\n if (ch === '!' && stream.match(/\\[[^\\]]*\\] ?(?:\\(|\\[)/, false)) {\n state.imageMarker = true;\n state.image = true;\n if (modeCfg.highlightFormatting) state.formatting = \"image\";\n return getType(state);\n }\n\n if (ch === '[' && state.imageMarker && stream.match(/[^\\]]*\\](\\(.*?\\)| ?\\[.*?\\])/, false)) {\n state.imageMarker = false;\n state.imageAltText = true\n if (modeCfg.highlightFormatting) state.formatting = \"image\";\n return getType(state);\n }\n\n if (ch === ']' && state.imageAltText) {\n if (modeCfg.highlightFormatting) state.formatting = \"image\";\n var type = getType(state);\n state.imageAltText = false;\n state.image = false;\n state.inline = state.f = linkHref;\n return type;\n }\n\n if (ch === '[' && !state.image) {\n if (state.linkText && stream.match(/^.*?\\]/)) return getType(state)\n state.linkText = true;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n return getType(state);\n }\n\n if (ch === ']' && state.linkText) {\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n state.linkText = false;\n state.inline = state.f = stream.match(/\\(.*?\\)| ?\\[.*?\\]/, false) ? linkHref : inlineNormal\n return type;\n }\n\n if (ch === '<' && stream.match(/^(https?|ftps?):\\/\\/(?:[^\\\\>]|\\\\.)+>/, false)) {\n state.f = state.inline = linkInline;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n if (type){\n type += \" \";\n } else {\n type = \"\";\n }\n return type + tokenTypes.linkInline;\n }\n\n if (ch === '<' && stream.match(/^[^> \\\\]+@(?:[^\\\\>]|\\\\.)+>/, false)) {\n state.f = state.inline = linkInline;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n if (type){\n type += \" \";\n } else {\n type = \"\";\n }\n return type + tokenTypes.linkEmail;\n }\n\n if (modeCfg.xml && ch === '<' && stream.match(/^(!--|\\?|!\\[CDATA\\[|[a-z][a-z0-9-]*(?:\\s+[a-z_:.\\-]+(?:\\s*=\\s*[^>]+)?)*\\s*(?:>|$))/i, false)) {\n var end = stream.string.indexOf(\">\", stream.pos);\n if (end != -1) {\n var atts = stream.string.substring(stream.start, end);\n if (/markdown\\s*=\\s*('|\"){0,1}1('|\"){0,1}/.test(atts)) state.md_inside = true;\n }\n stream.backUp(1);\n state.htmlState = CodeMirror.startState(htmlMode);\n return switchBlock(stream, state, htmlBlock);\n }\n\n if (modeCfg.xml && ch === '<' && stream.match(/^\\/\\w*?>/)) {\n state.md_inside = false;\n return \"tag\";\n } else if (ch === \"*\" || ch === \"_\") {\n var len = 1, before = stream.pos == 1 ? \" \" : stream.string.charAt(stream.pos - 2)\n while (len < 3 && stream.eat(ch)) len++\n var after = stream.peek() || \" \"\n // See http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis\n var leftFlanking = !/\\s/.test(after) && (!punctuation.test(after) || /\\s/.test(before) || punctuation.test(before))\n var rightFlanking = !/\\s/.test(before) && (!punctuation.test(before) || /\\s/.test(after) || punctuation.test(after))\n var setEm = null, setStrong = null\n if (len % 2) { // Em\n if (!state.em && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n setEm = true\n else if (state.em == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n setEm = false\n }\n if (len > 1) { // Strong\n if (!state.strong && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n setStrong = true\n else if (state.strong == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n setStrong = false\n }\n if (setStrong != null || setEm != null) {\n if (modeCfg.highlightFormatting) state.formatting = setEm == null ? \"strong\" : setStrong == null ? \"em\" : \"strong em\"\n if (setEm === true) state.em = ch\n if (setStrong === true) state.strong = ch\n var t = getType(state)\n if (setEm === false) state.em = false\n if (setStrong === false) state.strong = false\n return t\n }\n } else if (ch === ' ') {\n if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces\n if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n return getType(state);\n } else { // Not surrounded by spaces, back up pointer\n stream.backUp(1);\n }\n }\n }\n\n if (modeCfg.strikethrough) {\n if (ch === '~' && stream.eatWhile(ch)) {\n if (state.strikethrough) {// Remove strikethrough\n if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n var t = getType(state);\n state.strikethrough = false;\n return t;\n } else if (stream.match(/^[^\\s]/, false)) {// Add strikethrough\n state.strikethrough = true;\n if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n return getType(state);\n }\n } else if (ch === ' ') {\n if (stream.match('~~', true)) { // Probably surrounded by space\n if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n return getType(state);\n } else { // Not surrounded by spaces, back up pointer\n stream.backUp(2);\n }\n }\n }\n }\n\n if (modeCfg.emoji && ch === \":\" && stream.match(/^(?:[a-z_\\d+][a-z_\\d+-]*|\\-[a-z_\\d+][a-z_\\d+-]*):/)) {\n state.emoji = true;\n if (modeCfg.highlightFormatting) state.formatting = \"emoji\";\n var retType = getType(state);\n state.emoji = false;\n return retType;\n }\n\n if (ch === ' ') {\n if (stream.match(/^ +$/, false)) {\n state.trailingSpace++;\n } else if (state.trailingSpace) {\n state.trailingSpaceNewLine = true;\n }\n }\n\n return getType(state);\n }\n\n function linkInline(stream, state) {\n var ch = stream.next();\n\n if (ch === \">\") {\n state.f = state.inline = inlineNormal;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n if (type){\n type += \" \";\n } else {\n type = \"\";\n }\n return type + tokenTypes.linkInline;\n }\n\n stream.match(/^[^>]+/, true);\n\n return tokenTypes.linkInline;\n }\n\n function linkHref(stream, state) {\n // Check if space, and return NULL if so (to avoid marking the space)\n if(stream.eatSpace()){\n return null;\n }\n var ch = stream.next();\n if (ch === '(' || ch === '[') {\n state.f = state.inline = getLinkHrefInside(ch === \"(\" ? \")\" : \"]\");\n if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n state.linkHref = true;\n return getType(state);\n }\n return 'error';\n }\n\n var linkRE = {\n \")\": /^(?:[^\\\\\\(\\)]|\\\\.|\\((?:[^\\\\\\(\\)]|\\\\.)*\\))*?(?=\\))/,\n \"]\": /^(?:[^\\\\\\[\\]]|\\\\.|\\[(?:[^\\\\\\[\\]]|\\\\.)*\\])*?(?=\\])/\n }\n\n function getLinkHrefInside(endChar) {\n return function(stream, state) {\n var ch = stream.next();\n\n if (ch === endChar) {\n state.f = state.inline = inlineNormal;\n if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n var returnState = getType(state);\n state.linkHref = false;\n return returnState;\n }\n\n stream.match(linkRE[endChar])\n state.linkHref = true;\n return getType(state);\n };\n }\n\n function footnoteLink(stream, state) {\n if (stream.match(/^([^\\]\\\\]|\\\\.)*\\]:/, false)) {\n state.f = footnoteLinkInside;\n stream.next(); // Consume [\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n state.linkText = true;\n return getType(state);\n }\n return switchInline(stream, state, inlineNormal);\n }\n\n function footnoteLinkInside(stream, state) {\n if (stream.match(']:', true)) {\n state.f = state.inline = footnoteUrl;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var returnType = getType(state);\n state.linkText = false;\n return returnType;\n }\n\n stream.match(/^([^\\]\\\\]|\\\\.)+/, true);\n\n return tokenTypes.linkText;\n }\n\n function footnoteUrl(stream, state) {\n // Check if space, and return NULL if so (to avoid marking the space)\n if(stream.eatSpace()){\n return null;\n }\n // Match URL\n stream.match(/^[^\\s]+/, true);\n // Check for link title\n if (stream.peek() === undefined) { // End of line, set flag to check next line\n state.linkTitle = true;\n } else { // More content on line, check if link title\n stream.match(/^(?:\\s+(?:\"(?:[^\"\\\\]|\\\\.)+\"|'(?:[^'\\\\]|\\\\.)+'|\\((?:[^)\\\\]|\\\\.)+\\)))?/, true);\n }\n state.f = state.inline = inlineNormal;\n return tokenTypes.linkHref + \" url\";\n }\n\n var mode = {\n startState: function() {\n return {\n f: blockNormal,\n\n prevLine: {stream: null},\n thisLine: {stream: null},\n\n block: blockNormal,\n htmlState: null,\n indentation: 0,\n\n inline: inlineNormal,\n text: handleText,\n\n formatting: false,\n linkText: false,\n linkHref: false,\n linkTitle: false,\n code: 0,\n em: false,\n strong: false,\n header: 0,\n setext: 0,\n hr: false,\n taskList: false,\n list: false,\n listStack: [],\n quote: 0,\n trailingSpace: 0,\n trailingSpaceNewLine: false,\n strikethrough: false,\n emoji: false,\n fencedEndRE: null\n };\n },\n\n copyState: function(s) {\n return {\n f: s.f,\n\n prevLine: s.prevLine,\n thisLine: s.thisLine,\n\n block: s.block,\n htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState),\n indentation: s.indentation,\n\n localMode: s.localMode,\n localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null,\n\n inline: s.inline,\n text: s.text,\n formatting: false,\n linkText: s.linkText,\n linkTitle: s.linkTitle,\n linkHref: s.linkHref,\n code: s.code,\n em: s.em,\n strong: s.strong,\n strikethrough: s.strikethrough,\n emoji: s.emoji,\n header: s.header,\n setext: s.setext,\n hr: s.hr,\n taskList: s.taskList,\n list: s.list,\n listStack: s.listStack.slice(0),\n quote: s.quote,\n indentedCode: s.indentedCode,\n trailingSpace: s.trailingSpace,\n trailingSpaceNewLine: s.trailingSpaceNewLine,\n md_inside: s.md_inside,\n fencedEndRE: s.fencedEndRE\n };\n },\n\n token: function(stream, state) {\n\n // Reset state.formatting\n state.formatting = false;\n\n if (stream != state.thisLine.stream) {\n state.header = 0;\n state.hr = false;\n\n if (stream.match(/^\\s*$/, true)) {\n blankLine(state);\n return null;\n }\n\n state.prevLine = state.thisLine\n state.thisLine = {stream: stream}\n\n // Reset state.taskList\n state.taskList = false;\n\n // Reset state.trailingSpace\n state.trailingSpace = 0;\n state.trailingSpaceNewLine = false;\n\n if (!state.localState) {\n state.f = state.block;\n if (state.f != htmlBlock) {\n var indentation = stream.match(/^\\s*/, true)[0].replace(/\\t/g, expandedTab).length;\n state.indentation = indentation;\n state.indentationDiff = null;\n if (indentation > 0) return null;\n }\n }\n }\n return state.f(stream, state);\n },\n\n innerMode: function(state) {\n if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode};\n if (state.localState) return {state: state.localState, mode: state.localMode};\n return {state: state, mode: mode};\n },\n\n indent: function(state, textAfter, line) {\n if (state.block == htmlBlock && htmlMode.indent) return htmlMode.indent(state.htmlState, textAfter, line)\n if (state.localState && state.localMode.indent) return state.localMode.indent(state.localState, textAfter, line)\n return CodeMirror.Pass\n },\n\n blankLine: blankLine,\n\n getType: getType,\n\n blockCommentStart: \"\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n fold: \"markdown\"\n };\n return mode;\n}, \"xml\");\n\nCodeMirror.defineMIME(\"text/markdown\", \"markdown\");\n\nCodeMirror.defineMIME(\"text/x-markdown\", \"markdown\");\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.modeInfo = [\n {name: \"APL\", mime: \"text/apl\", mode: \"apl\", ext: [\"dyalog\", \"apl\"]},\n {name: \"PGP\", mimes: [\"application/pgp\", \"application/pgp-encrypted\", \"application/pgp-keys\", \"application/pgp-signature\"], mode: \"asciiarmor\", ext: [\"asc\", \"pgp\", \"sig\"]},\n {name: \"ASN.1\", mime: \"text/x-ttcn-asn\", mode: \"asn.1\", ext: [\"asn\", \"asn1\"]},\n {name: \"Asterisk\", mime: \"text/x-asterisk\", mode: \"asterisk\", file: /^extensions\\.conf$/i},\n {name: \"Brainfuck\", mime: \"text/x-brainfuck\", mode: \"brainfuck\", ext: [\"b\", \"bf\"]},\n {name: \"C\", mime: \"text/x-csrc\", mode: \"clike\", ext: [\"c\", \"h\", \"ino\"]},\n {name: \"C++\", mime: \"text/x-c++src\", mode: \"clike\", ext: [\"cpp\", \"c++\", \"cc\", \"cxx\", \"hpp\", \"h++\", \"hh\", \"hxx\"], alias: [\"cpp\"]},\n {name: \"Cobol\", mime: \"text/x-cobol\", mode: \"cobol\", ext: [\"cob\", \"cpy\", \"cbl\"]},\n {name: \"C#\", mime: \"text/x-csharp\", mode: \"clike\", ext: [\"cs\"], alias: [\"csharp\", \"cs\"]},\n {name: \"Clojure\", mime: \"text/x-clojure\", mode: \"clojure\", ext: [\"clj\", \"cljc\", \"cljx\"]},\n {name: \"ClojureScript\", mime: \"text/x-clojurescript\", mode: \"clojure\", ext: [\"cljs\"]},\n {name: \"Closure Stylesheets (GSS)\", mime: \"text/x-gss\", mode: \"css\", ext: [\"gss\"]},\n {name: \"CMake\", mime: \"text/x-cmake\", mode: \"cmake\", ext: [\"cmake\", \"cmake.in\"], file: /^CMakeLists\\.txt$/},\n {name: \"CoffeeScript\", mimes: [\"application/vnd.coffeescript\", \"text/coffeescript\", \"text/x-coffeescript\"], mode: \"coffeescript\", ext: [\"coffee\"], alias: [\"coffee\", \"coffee-script\"]},\n {name: \"Common Lisp\", mime: \"text/x-common-lisp\", mode: \"commonlisp\", ext: [\"cl\", \"lisp\", \"el\"], alias: [\"lisp\"]},\n {name: \"Cypher\", mime: \"application/x-cypher-query\", mode: \"cypher\", ext: [\"cyp\", \"cypher\"]},\n {name: \"Cython\", mime: \"text/x-cython\", mode: \"python\", ext: [\"pyx\", \"pxd\", \"pxi\"]},\n {name: \"Crystal\", mime: \"text/x-crystal\", mode: \"crystal\", ext: [\"cr\"]},\n {name: \"CSS\", mime: \"text/css\", mode: \"css\", ext: [\"css\"]},\n {name: \"CQL\", mime: \"text/x-cassandra\", mode: \"sql\", ext: [\"cql\"]},\n {name: \"D\", mime: \"text/x-d\", mode: \"d\", ext: [\"d\"]},\n {name: \"Dart\", mimes: [\"application/dart\", \"text/x-dart\"], mode: \"dart\", ext: [\"dart\"]},\n {name: \"diff\", mime: \"text/x-diff\", mode: \"diff\", ext: [\"diff\", \"patch\"]},\n {name: \"Django\", mime: \"text/x-django\", mode: \"django\"},\n {name: \"Dockerfile\", mime: \"text/x-dockerfile\", mode: \"dockerfile\", file: /^Dockerfile$/},\n {name: \"DTD\", mime: \"application/xml-dtd\", mode: \"dtd\", ext: [\"dtd\"]},\n {name: \"Dylan\", mime: \"text/x-dylan\", mode: \"dylan\", ext: [\"dylan\", \"dyl\", \"intr\"]},\n {name: \"EBNF\", mime: \"text/x-ebnf\", mode: \"ebnf\"},\n {name: \"ECL\", mime: \"text/x-ecl\", mode: \"ecl\", ext: [\"ecl\"]},\n {name: \"edn\", mime: \"application/edn\", mode: \"clojure\", ext: [\"edn\"]},\n {name: \"Eiffel\", mime: \"text/x-eiffel\", mode: \"eiffel\", ext: [\"e\"]},\n {name: \"Elm\", mime: \"text/x-elm\", mode: \"elm\", ext: [\"elm\"]},\n {name: \"Embedded JavaScript\", mime: \"application/x-ejs\", mode: \"htmlembedded\", ext: [\"ejs\"]},\n {name: \"Embedded Ruby\", mime: \"application/x-erb\", mode: \"htmlembedded\", ext: [\"erb\"]},\n {name: \"Erlang\", mime: \"text/x-erlang\", mode: \"erlang\", ext: [\"erl\"]},\n {name: \"Esper\", mime: \"text/x-esper\", mode: \"sql\"},\n {name: \"Factor\", mime: \"text/x-factor\", mode: \"factor\", ext: [\"factor\"]},\n {name: \"FCL\", mime: \"text/x-fcl\", mode: \"fcl\"},\n {name: \"Forth\", mime: \"text/x-forth\", mode: \"forth\", ext: [\"forth\", \"fth\", \"4th\"]},\n {name: \"Fortran\", mime: \"text/x-fortran\", mode: \"fortran\", ext: [\"f\", \"for\", \"f77\", \"f90\", \"f95\"]},\n {name: \"F#\", mime: \"text/x-fsharp\", mode: \"mllike\", ext: [\"fs\"], alias: [\"fsharp\"]},\n {name: \"Gas\", mime: \"text/x-gas\", mode: \"gas\", ext: [\"s\"]},\n {name: \"Gherkin\", mime: \"text/x-feature\", mode: \"gherkin\", ext: [\"feature\"]},\n {name: \"GitHub Flavored Markdown\", mime: \"text/x-gfm\", mode: \"gfm\", file: /^(readme|contributing|history)\\.md$/i},\n {name: \"Go\", mime: \"text/x-go\", mode: \"go\", ext: [\"go\"]},\n {name: \"Groovy\", mime: \"text/x-groovy\", mode: \"groovy\", ext: [\"groovy\", \"gradle\"], file: /^Jenkinsfile$/},\n {name: \"HAML\", mime: \"text/x-haml\", mode: \"haml\", ext: [\"haml\"]},\n {name: \"Haskell\", mime: \"text/x-haskell\", mode: \"haskell\", ext: [\"hs\"]},\n {name: \"Haskell (Literate)\", mime: \"text/x-literate-haskell\", mode: \"haskell-literate\", ext: [\"lhs\"]},\n {name: \"Haxe\", mime: \"text/x-haxe\", mode: \"haxe\", ext: [\"hx\"]},\n {name: \"HXML\", mime: \"text/x-hxml\", mode: \"haxe\", ext: [\"hxml\"]},\n {name: \"ASP.NET\", mime: \"application/x-aspx\", mode: \"htmlembedded\", ext: [\"aspx\"], alias: [\"asp\", \"aspx\"]},\n {name: \"HTML\", mime: \"text/html\", mode: \"htmlmixed\", ext: [\"html\", \"htm\", \"handlebars\", \"hbs\"], alias: [\"xhtml\"]},\n {name: \"HTTP\", mime: \"message/http\", mode: \"http\"},\n {name: \"IDL\", mime: \"text/x-idl\", mode: \"idl\", ext: [\"pro\"]},\n {name: \"Pug\", mime: \"text/x-pug\", mode: \"pug\", ext: [\"jade\", \"pug\"], alias: [\"jade\"]},\n {name: \"Java\", mime: \"text/x-java\", mode: \"clike\", ext: [\"java\"]},\n {name: \"Java Server Pages\", mime: \"application/x-jsp\", mode: \"htmlembedded\", ext: [\"jsp\"], alias: [\"jsp\"]},\n {name: \"JavaScript\", mimes: [\"text/javascript\", \"text/ecmascript\", \"application/javascript\", \"application/x-javascript\", \"application/ecmascript\"],\n mode: \"javascript\", ext: [\"js\"], alias: [\"ecmascript\", \"js\", \"node\"]},\n {name: \"JSON\", mimes: [\"application/json\", \"application/x-json\"], mode: \"javascript\", ext: [\"json\", \"map\"], alias: [\"json5\"]},\n {name: \"JSON-LD\", mime: \"application/ld+json\", mode: \"javascript\", ext: [\"jsonld\"], alias: [\"jsonld\"]},\n {name: \"JSX\", mime: \"text/jsx\", mode: \"jsx\", ext: [\"jsx\"]},\n {name: \"Jinja2\", mime: \"text/jinja2\", mode: \"jinja2\", ext: [\"j2\", \"jinja\", \"jinja2\"]},\n {name: \"Julia\", mime: \"text/x-julia\", mode: \"julia\", ext: [\"jl\"], alias: [\"jl\"]},\n {name: \"Kotlin\", mime: \"text/x-kotlin\", mode: \"clike\", ext: [\"kt\"]},\n {name: \"LESS\", mime: \"text/x-less\", mode: \"css\", ext: [\"less\"]},\n {name: \"LiveScript\", mime: \"text/x-livescript\", mode: \"livescript\", ext: [\"ls\"], alias: [\"ls\"]},\n {name: \"Lua\", mime: \"text/x-lua\", mode: \"lua\", ext: [\"lua\"]},\n {name: \"Markdown\", mime: \"text/x-markdown\", mode: \"markdown\", ext: [\"markdown\", \"md\", \"mkd\"]},\n {name: \"mIRC\", mime: \"text/mirc\", mode: \"mirc\"},\n {name: \"MariaDB SQL\", mime: \"text/x-mariadb\", mode: \"sql\"},\n {name: \"Mathematica\", mime: \"text/x-mathematica\", mode: \"mathematica\", ext: [\"m\", \"nb\", \"wl\", \"wls\"]},\n {name: \"Modelica\", mime: \"text/x-modelica\", mode: \"modelica\", ext: [\"mo\"]},\n {name: \"MUMPS\", mime: \"text/x-mumps\", mode: \"mumps\", ext: [\"mps\"]},\n {name: \"MS SQL\", mime: \"text/x-mssql\", mode: \"sql\"},\n {name: \"mbox\", mime: \"application/mbox\", mode: \"mbox\", ext: [\"mbox\"]},\n {name: \"MySQL\", mime: \"text/x-mysql\", mode: \"sql\"},\n {name: \"Nginx\", mime: \"text/x-nginx-conf\", mode: \"nginx\", file: /nginx.*\\.conf$/i},\n {name: \"NSIS\", mime: \"text/x-nsis\", mode: \"nsis\", ext: [\"nsh\", \"nsi\"]},\n {name: \"NTriples\", mimes: [\"application/n-triples\", \"application/n-quads\", \"text/n-triples\"],\n mode: \"ntriples\", ext: [\"nt\", \"nq\"]},\n {name: \"Objective-C\", mime: \"text/x-objectivec\", mode: \"clike\", ext: [\"m\"], alias: [\"objective-c\", \"objc\"]},\n {name: \"Objective-C++\", mime: \"text/x-objectivec++\", mode: \"clike\", ext: [\"mm\"], alias: [\"objective-c++\", \"objc++\"]},\n {name: \"OCaml\", mime: \"text/x-ocaml\", mode: \"mllike\", ext: [\"ml\", \"mli\", \"mll\", \"mly\"]},\n {name: \"Octave\", mime: \"text/x-octave\", mode: \"octave\", ext: [\"m\"]},\n {name: \"Oz\", mime: \"text/x-oz\", mode: \"oz\", ext: [\"oz\"]},\n {name: \"Pascal\", mime: \"text/x-pascal\", mode: \"pascal\", ext: [\"p\", \"pas\"]},\n {name: \"PEG.js\", mime: \"null\", mode: \"pegjs\", ext: [\"jsonld\"]},\n {name: \"Perl\", mime: \"text/x-perl\", mode: \"perl\", ext: [\"pl\", \"pm\"]},\n {name: \"PHP\", mimes: [\"text/x-php\", \"application/x-httpd-php\", \"application/x-httpd-php-open\"], mode: \"php\", ext: [\"php\", \"php3\", \"php4\", \"php5\", \"php7\", \"phtml\"]},\n {name: \"Pig\", mime: \"text/x-pig\", mode: \"pig\", ext: [\"pig\"]},\n {name: \"Plain Text\", mime: \"text/plain\", mode: \"null\", ext: [\"txt\", \"text\", \"conf\", \"def\", \"list\", \"log\"]},\n {name: \"PLSQL\", mime: \"text/x-plsql\", mode: \"sql\", ext: [\"pls\"]},\n {name: \"PostgreSQL\", mime: \"text/x-pgsql\", mode: \"sql\"},\n {name: \"PowerShell\", mime: \"application/x-powershell\", mode: \"powershell\", ext: [\"ps1\", \"psd1\", \"psm1\"]},\n {name: \"Properties files\", mime: \"text/x-properties\", mode: \"properties\", ext: [\"properties\", \"ini\", \"in\"], alias: [\"ini\", \"properties\"]},\n {name: \"ProtoBuf\", mime: \"text/x-protobuf\", mode: \"protobuf\", ext: [\"proto\"]},\n {name: \"Python\", mime: \"text/x-python\", mode: \"python\", ext: [\"BUILD\", \"bzl\", \"py\", \"pyw\"], file: /^(BUCK|BUILD)$/},\n {name: \"Puppet\", mime: \"text/x-puppet\", mode: \"puppet\", ext: [\"pp\"]},\n {name: \"Q\", mime: \"text/x-q\", mode: \"q\", ext: [\"q\"]},\n {name: \"R\", mime: \"text/x-rsrc\", mode: \"r\", ext: [\"r\", \"R\"], alias: [\"rscript\"]},\n {name: \"reStructuredText\", mime: \"text/x-rst\", mode: \"rst\", ext: [\"rst\"], alias: [\"rst\"]},\n {name: \"RPM Changes\", mime: \"text/x-rpm-changes\", mode: \"rpm\"},\n {name: \"RPM Spec\", mime: \"text/x-rpm-spec\", mode: \"rpm\", ext: [\"spec\"]},\n {name: \"Ruby\", mime: \"text/x-ruby\", mode: \"ruby\", ext: [\"rb\"], alias: [\"jruby\", \"macruby\", \"rake\", \"rb\", \"rbx\"]},\n {name: \"Rust\", mime: \"text/x-rustsrc\", mode: \"rust\", ext: [\"rs\"]},\n {name: \"SAS\", mime: \"text/x-sas\", mode: \"sas\", ext: [\"sas\"]},\n {name: \"Sass\", mime: \"text/x-sass\", mode: \"sass\", ext: [\"sass\"]},\n {name: \"Scala\", mime: \"text/x-scala\", mode: \"clike\", ext: [\"scala\"]},\n {name: \"Scheme\", mime: \"text/x-scheme\", mode: \"scheme\", ext: [\"scm\", \"ss\"]},\n {name: \"SCSS\", mime: \"text/x-scss\", mode: \"css\", ext: [\"scss\"]},\n {name: \"Shell\", mimes: [\"text/x-sh\", \"application/x-sh\"], mode: \"shell\", ext: [\"sh\", \"ksh\", \"bash\"], alias: [\"bash\", \"sh\", \"zsh\"], file: /^PKGBUILD$/},\n {name: \"Sieve\", mime: \"application/sieve\", mode: \"sieve\", ext: [\"siv\", \"sieve\"]},\n {name: \"Slim\", mimes: [\"text/x-slim\", \"application/x-slim\"], mode: \"slim\", ext: [\"slim\"]},\n {name: \"Smalltalk\", mime: \"text/x-stsrc\", mode: \"smalltalk\", ext: [\"st\"]},\n {name: \"Smarty\", mime: \"text/x-smarty\", mode: \"smarty\", ext: [\"tpl\"]},\n {name: \"Solr\", mime: \"text/x-solr\", mode: \"solr\"},\n {name: \"SML\", mime: \"text/x-sml\", mode: \"mllike\", ext: [\"sml\", \"sig\", \"fun\", \"smackspec\"]},\n {name: \"Soy\", mime: \"text/x-soy\", mode: \"soy\", ext: [\"soy\"], alias: [\"closure template\"]},\n {name: \"SPARQL\", mime: \"application/sparql-query\", mode: \"sparql\", ext: [\"rq\", \"sparql\"], alias: [\"sparul\"]},\n {name: \"Spreadsheet\", mime: \"text/x-spreadsheet\", mode: \"spreadsheet\", alias: [\"excel\", \"formula\"]},\n {name: \"SQL\", mime: \"text/x-sql\", mode: \"sql\", ext: [\"sql\"]},\n {name: \"SQLite\", mime: \"text/x-sqlite\", mode: \"sql\"},\n {name: \"Squirrel\", mime: \"text/x-squirrel\", mode: \"clike\", ext: [\"nut\"]},\n {name: \"Stylus\", mime: \"text/x-styl\", mode: \"stylus\", ext: [\"styl\"]},\n {name: \"Swift\", mime: \"text/x-swift\", mode: \"swift\", ext: [\"swift\"]},\n {name: \"sTeX\", mime: \"text/x-stex\", mode: \"stex\"},\n {name: \"LaTeX\", mime: \"text/x-latex\", mode: \"stex\", ext: [\"text\", \"ltx\", \"tex\"], alias: [\"tex\"]},\n {name: \"SystemVerilog\", mime: \"text/x-systemverilog\", mode: \"verilog\", ext: [\"v\", \"sv\", \"svh\"]},\n {name: \"Tcl\", mime: \"text/x-tcl\", mode: \"tcl\", ext: [\"tcl\"]},\n {name: \"Textile\", mime: \"text/x-textile\", mode: \"textile\", ext: [\"textile\"]},\n {name: \"TiddlyWiki\", mime: \"text/x-tiddlywiki\", mode: \"tiddlywiki\"},\n {name: \"Tiki wiki\", mime: \"text/tiki\", mode: \"tiki\"},\n {name: \"TOML\", mime: \"text/x-toml\", mode: \"toml\", ext: [\"toml\"]},\n {name: \"Tornado\", mime: \"text/x-tornado\", mode: \"tornado\"},\n {name: \"troff\", mime: \"text/troff\", mode: \"troff\", ext: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]},\n {name: \"TTCN\", mime: \"text/x-ttcn\", mode: \"ttcn\", ext: [\"ttcn\", \"ttcn3\", \"ttcnpp\"]},\n {name: \"TTCN_CFG\", mime: \"text/x-ttcn-cfg\", mode: \"ttcn-cfg\", ext: [\"cfg\"]},\n {name: \"Turtle\", mime: \"text/turtle\", mode: \"turtle\", ext: [\"ttl\"]},\n {name: \"TypeScript\", mime: \"application/typescript\", mode: \"javascript\", ext: [\"ts\"], alias: [\"ts\"]},\n {name: \"TypeScript-JSX\", mime: \"text/typescript-jsx\", mode: \"jsx\", ext: [\"tsx\"], alias: [\"tsx\"]},\n {name: \"Twig\", mime: \"text/x-twig\", mode: \"twig\"},\n {name: \"Web IDL\", mime: \"text/x-webidl\", mode: \"webidl\", ext: [\"webidl\"]},\n {name: \"VB.NET\", mime: \"text/x-vb\", mode: \"vb\", ext: [\"vb\"]},\n {name: \"VBScript\", mime: \"text/vbscript\", mode: \"vbscript\", ext: [\"vbs\"]},\n {name: \"Velocity\", mime: \"text/velocity\", mode: \"velocity\", ext: [\"vtl\"]},\n {name: \"Verilog\", mime: \"text/x-verilog\", mode: \"verilog\", ext: [\"v\"]},\n {name: \"VHDL\", mime: \"text/x-vhdl\", mode: \"vhdl\", ext: [\"vhd\", \"vhdl\"]},\n {name: \"Vue.js Component\", mimes: [\"script/x-vue\", \"text/x-vue\"], mode: \"vue\", ext: [\"vue\"]},\n {name: \"XML\", mimes: [\"application/xml\", \"text/xml\"], mode: \"xml\", ext: [\"xml\", \"xsl\", \"xsd\", \"svg\"], alias: [\"rss\", \"wsdl\", \"xsd\"]},\n {name: \"XQuery\", mime: \"application/xquery\", mode: \"xquery\", ext: [\"xy\", \"xquery\"]},\n {name: \"Yacas\", mime: \"text/x-yacas\", mode: \"yacas\", ext: [\"ys\"]},\n {name: \"YAML\", mimes: [\"text/x-yaml\", \"text/yaml\"], mode: \"yaml\", ext: [\"yaml\", \"yml\"], alias: [\"yml\"]},\n {name: \"Z80\", mime: \"text/x-z80\", mode: \"z80\", ext: [\"z80\"]},\n {name: \"mscgen\", mime: \"text/x-mscgen\", mode: \"mscgen\", ext: [\"mscgen\", \"mscin\", \"msc\"]},\n {name: \"xu\", mime: \"text/x-xu\", mode: \"mscgen\", ext: [\"xu\"]},\n {name: \"msgenny\", mime: \"text/x-msgenny\", mode: \"mscgen\", ext: [\"msgenny\"]},\n {name: \"WebAssembly\", mime: \"text/webassembly\", mode: \"wast\", ext: [\"wat\", \"wast\"]},\n ];\n // Ensure all modes have a mime property for backwards compatibility\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.mimes) info.mime = info.mimes[0];\n }\n\n CodeMirror.findModeByMIME = function(mime) {\n mime = mime.toLowerCase();\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.mime == mime) return info;\n if (info.mimes) for (var j = 0; j < info.mimes.length; j++)\n if (info.mimes[j] == mime) return info;\n }\n if (/\\+xml$/.test(mime)) return CodeMirror.findModeByMIME(\"application/xml\")\n if (/\\+json$/.test(mime)) return CodeMirror.findModeByMIME(\"application/json\")\n };\n\n CodeMirror.findModeByExtension = function(ext) {\n ext = ext.toLowerCase();\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.ext) for (var j = 0; j < info.ext.length; j++)\n if (info.ext[j] == ext) return info;\n }\n };\n\n CodeMirror.findModeByFileName = function(filename) {\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.file && info.file.test(filename)) return info;\n }\n var dot = filename.lastIndexOf(\".\");\n var ext = dot > -1 && filename.substring(dot + 1, filename.length);\n if (ext) return CodeMirror.findModeByExtension(ext);\n };\n\n CodeMirror.findModeByName = function(name) {\n name = name.toLowerCase();\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.name.toLowerCase() == name) return info;\n if (info.alias) for (var j = 0; j < info.alias.length; j++)\n if (info.alias[j].toLowerCase() == name) return info;\n }\n };\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n 'track': true, 'wbr': true, 'menuitem': true},\n implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n 'th': true, 'tr': true},\n contextGrabbers: {\n 'dd': {'dd': true, 'dt': true},\n 'dt': {'dd': true, 'dt': true},\n 'li': {'li': true},\n 'option': {'option': true, 'optgroup': true},\n 'optgroup': {'optgroup': true},\n 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n 'rp': {'rp': true, 'rt': true},\n 'rt': {'rp': true, 'rt': true},\n 'tbody': {'tbody': true, 'tfoot': true},\n 'td': {'td': true, 'th': true},\n 'tfoot': {'tbody': true},\n 'th': {'td': true, 'th': true},\n 'thead': {'tbody': true, 'tfoot': true},\n 'tr': {'tr': true}\n },\n doNotIndent: {\"pre\": true},\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n}\n\nvar xmlConfig = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n allowMissingTagName: false,\n caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n var indentUnit = editorConf.indentUnit\n var config = {}\n var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n for (var prop in defaults) config[prop] = defaults[prop]\n for (var prop in config_) config[prop] = config_[prop]\n\n // Return variables for tokenizers\n var type, setStyle;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n else return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok;\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n return ok ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n inText.isInText = true;\n\n function inTag(stream, state) {\n var ch = stream.next();\n if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n var closure = function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n closure.isInAttribute = true;\n return closure;\n }\n\n function inBlock(style, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style;\n }\n }\n\n function doctype(depth) {\n return function(stream, state) {\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n return \"meta\";\n };\n }\n\n function lower(tagName) {\n return tagName && tagName.toLowerCase();\n }\n\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName || \"\";\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n this.noIndent = true;\n }\n function popContext(state) {\n if (state.context) state.context = state.context.prev;\n }\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n while (true) {\n if (!state.context) {\n return;\n }\n parentTagName = state.context.tagName;\n if (!config.contextGrabbers.hasOwnProperty(lower(parentTagName)) ||\n !config.contextGrabbers[lower(parentTagName)].hasOwnProperty(lower(nextTagName))) {\n return;\n }\n popContext(state);\n }\n }\n\n function baseState(type, stream, state) {\n if (type == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n function tagNameState(type, stream, state) {\n if (type == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return attrState(type, stream, state);\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n function closeTagNameState(type, stream, state) {\n if (type == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName &&\n config.implicitlyClosed.hasOwnProperty(lower(state.context.tagName)))\n popContext(state);\n if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return closeState(type, stream, state);\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n\n function closeState(type, _stream, state) {\n if (type != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n popContext(state);\n return baseState;\n }\n function closeStateErr(type, stream, state) {\n setStyle = \"error\";\n return closeState(type, stream, state);\n }\n\n function attrState(type, _stream, state) {\n if (type == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n var tagName = state.tagName, tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n if (type == \"selfcloseTag\" ||\n config.autoSelfClosers.hasOwnProperty(lower(tagName))) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n return baseState;\n }\n setStyle = \"error\";\n return attrState;\n }\n function attrEqState(type, stream, state) {\n if (type == \"equals\") return attrValueState;\n if (!config.allowMissing) setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrValueState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrContinuedState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n return attrState(type, stream, state);\n }\n\n return {\n startState: function(baseIndent) {\n var state = {tokenize: inText,\n state: baseState,\n indented: baseIndent || 0,\n tagName: null, tagStart: null,\n context: null}\n if (baseIndent != null) state.baseIndent = baseIndent\n return state\n },\n\n token: function(stream, state) {\n if (!state.tagName && stream.sol())\n state.indented = stream.indentation();\n\n if (stream.eatSpace()) return null;\n type = null;\n var style = state.tokenize(stream, state);\n if ((style || type) && style != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style, stream, state);\n if (setStyle)\n style = setStyle == \"error\" ? style + \" error\" : setStyle;\n }\n return style;\n },\n\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n // Indent multi-line strings (e.g. css).\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented)\n return state.stringStartCol + 1;\n else\n return state.indented + indentUnit;\n }\n if (context && context.noIndent) return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n // Indent the starts of attribute names.\n if (state.tagName) {\n if (config.multilineTagIndentPastTag !== false)\n return state.tagStart + state.tagName.length + 2;\n else\n return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n }\n if (config.alignCDATA && /$/,\n blockCommentStart: \"\",\n\n configuration: config.htmlMode ? \"html\" : \"xml\",\n helperType: config.htmlMode ? \"html\" : \"xml\",\n\n skipAttribute: function(state) {\n if (state.state == attrValueState)\n state.state = attrState\n },\n\n xmlCurrentTag: function(state) {\n return state.tagName ? {name: state.tagName, close: state.type == \"closeTag\"} : null\n },\n\n xmlCurrentContext: function(state) {\n var context = []\n for (var cx = state.context; cx; cx = cx.prev)\n context.push(cx.tagName)\n return context.reverse()\n }\n };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\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 defineProperty(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","var global = require('../internals/global');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw TypeError('Incorrect invocation');\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n","'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar Array = global.Array;\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 IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, 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 = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : Array(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 toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\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 = lengthOfArrayLike(O);\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 uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` 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_REJECT = 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);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? 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(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\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.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: 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 -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n","var global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar Array = global.Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n array,\n mergeSort(arraySlice(array, 0, middle), comparefn),\n mergeSort(arraySlice(array, middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n } return array;\n};\n\nmodule.exports = mergeSort;\n","var global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (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 C === undefined ? Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(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 } catch (error) {\n iteratorClose(iterator, '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-x/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 uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\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' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var hasOwn = require('../internals/has-own-property');\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, exceptions) {\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 (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\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-x/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, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, 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 toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var isCallable = require('../internals/is-callable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n } return O;\n};\n","var defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\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 defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\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 (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(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.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\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 defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","var path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\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 (!hasOwn(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-x/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","// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\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 Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && 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;\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 defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\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.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\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] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\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 defineBuiltIn(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 uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\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');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, 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 FORCED\n ) {\n var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var uncurriedNativeMethod = uncurryThis(nativeMethod);\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.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: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n }\n return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n defineBuiltIn(String.prototype, KEY, methods[0]);\n defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es-x/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\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 getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw TypeError(tryToString(argument) + ' is not iterable');\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\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(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 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 ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 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-x/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 uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\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// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.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(it, '') : Object(it);\n} : Object;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\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 TypeError = global.TypeError;\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 || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(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 hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(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-x/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\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 : isCallable(detection) ? 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","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\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\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es-x/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 = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n defineProperty(value, 'name', { value: name, configurable: true });\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es-x/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\n/* eslint-disable es-x/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && 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 // eslint-disable-next-line unicorn/relative-url-style -- required for testing\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 isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = 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 activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\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\n// eslint-disable-next-line es-x/no-object-create -- safe\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 : definePropertiesModule.f(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-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-x/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\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++], props[key]);\n return O;\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\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 call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es-x/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 = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","/* eslint-disable es-x/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\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 arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == '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-x/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var global = require('../internals/global');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\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 Object = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof Object ? ObjectPrototype : null;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\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) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, 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-x/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-x/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 uncurryThis = require('../internals/function-uncurry-this');\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-x/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-x/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(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(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 global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\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\nvar concat = uncurryThis([].concat);\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 ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar TypeError = global.TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw TypeError('RegExp#exec called on incompatible receiver');\n};\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(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 = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], 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 call(nativeReplace, 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 if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\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.hasIndices) result += 'd';\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","var call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n var flags = R.flags;\n return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n ? call(regExpFlags, R) : flags;\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n\nmodule.exports = {\n BROKEN_CARET: BROKEN_CARET,\n MISSED_STICKY: MISSED_STICKY,\n UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\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-x/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 apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar userAgent = require('../internals/engine-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar Function = global.Function;\n\nvar wrap = function (scheduler) {\n return MSIE ? function (handler, timeout /* , ...arguments */) {\n var boundArgs = validateArgumentsLength(arguments.length, 1) > 2;\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = boundArgs ? arraySlice(arguments, 2) : undefined;\n return scheduler(boundArgs ? function () {\n apply(fn, this, args);\n } : fn, timeout);\n } : scheduler;\n};\n\n// ie9- setTimeout & setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\nmodule.exports = {\n // `setTimeout` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n setTimeout: wrap(global.setTimeout),\n // `setInterval` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n setInterval: wrap(global.setInterval)\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, 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 defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(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.22.7',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.22.7/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (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","var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n var Symbol = getBuiltIn('Symbol');\n var SymbolPrototype = Symbol && Symbol.prototype;\n var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n // `Symbol.prototype[@@toPrimitive]` method\n // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n // eslint-disable-next-line no-unused-vars -- required for .length\n defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n return call(valueOf, this);\n }, { arity: 1 });\n }\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\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 = toIntegerOrInfinity(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 trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\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(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\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 global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es-x/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 DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n return passed;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\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 symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\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';\nvar TypeError = global.TypeError;\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, arity: 1, 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 = lengthOfArrayLike(E);\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 $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","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-x/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 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 defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/define-iterator');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\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\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$Join = uncurryThis([].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 un$Join(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 global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\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');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\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 = lengthOfArrayLike(O);\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 (isConstructor(Constructor) && (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 un$Slice(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","var DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return regExpExec(nameRE, functionToString(this))[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('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// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n var args = arraySlice(arguments);\n var $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 (isCallable($replacer)) value = call($replacer, this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n }\n });\n}\n","var $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n }\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\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 defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\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 PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar n$ToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return n$ToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n defineBuiltIn(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var pattern = $toString(R.source);\n var flags = $toString(getRegExpFlags(R));\n return '/' + pattern + '/' + flags;\n }, { unsafe: true });\n}\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\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: toString(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 call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\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\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\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\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 : getMethod(searchValue, REPLACE);\n return replacer\n ? call(replacer, searchValue, O, replaceValue)\n : call(nativeReplace, toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue == 'string' &&\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n stringIndexOf(replaceValue, '$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(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 push(results, result);\n if (!global) break;\n\n var matchStr = toString(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 = toString(result[0]);\n var position = max(min(toIntegerOrInfinity(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++) push(captures, maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = concat([matched], captures, position, S);\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n var replacement = toString(apply(replaceValue, undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + stringSlice(S, nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","'use strict';\nvar call = require('../internals/function-call');\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 toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 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 : getMethod(regexp, SEARCH);\n return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeSearch, rx, S);\n\n if (res.done) return res.value;\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 $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\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 definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\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 defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\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';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\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(SymbolPrototype);\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 $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(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 || call($propertyIsEnumerable, 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 = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(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 (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function (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 (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, 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 (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn(this, HIDDEN) && hasOwn(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 SymbolPrototype = $Symbol[PROTOTYPE];\n\n defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n definePropertiesModule.f = $defineProperties;\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(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, constructor: 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 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});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\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 uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\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 : toString(arguments[0]);\n var result = isPrototypeOf(SymbolPrototype, this)\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\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n SymbolWrapper.prototype = SymbolPrototype;\n SymbolPrototype.constructor = SymbolWrapper;\n\n var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n var symbolToString = uncurryThis(SymbolPrototype.toString);\n var symbolValueOf = uncurryThis(SymbolPrototype.valueOf);\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n var replace = uncurryThis(''.replace);\n var stringSlice = uncurryThis(''.slice);\n\n defineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = symbolValueOf(this);\n var string = symbolToString(symbol);\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, constructor: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n 'for': function (key) {\n var string = toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = getBuiltIn('Symbol')(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\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","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n","var $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n }\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\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\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\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\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setInterval = require('../internals/schedulers-fix').setInterval;\n\n// ie9- setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n$({ global: true, bind: true, forced: global.setInterval !== setInterval }, {\n setInterval: setInterval\n});\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setTimeout = require('../internals/schedulers-fix').setTimeout;\n\n// ie9- setTimeout additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n$({ global: true, bind: true, forced: global.setTimeout !== setTimeout }, {\n setTimeout: setTimeout\n});\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.set-interval');\nrequire('../modules/web.set-timeout');\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 global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltIns = require('../internals/define-built-ins');\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 isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\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 $toString = require('../internals/to-string');\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 validateArgumentsLength = require('../internals/validate-arguments-length');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arraySort = require('../internals/array-sort');\n\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// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nvar safeGetBuiltIn = function (name) {\n if (!DESCRIPTORS) return global[name];\n var descriptor = getOwnPropertyDescriptor(global, name);\n return descriptor && descriptor.value;\n};\n\nvar nativeFetch = safeGetBuiltIn('fetch');\nvar NativeRequest = safeGetBuiltIn('Request');\nvar Headers = safeGetBuiltIn('Headers');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar RegExp = global.RegExp;\nvar TypeError = global.TypeError;\nvar decodeURIComponent = global.decodeURIComponent;\nvar encodeURIComponent = global.encodeURIComponent;\nvar charAt = uncurryThis(''.charAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar splice = uncurryThis([].splice);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\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 = replace(it, plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = replace(result, percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replacements = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replacements[match];\n};\n\nvar serialize = function (it) {\n return replace(encodeURIComponent(it), find, replacer);\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}, true);\n\nvar URLSearchParamsState = function (init) {\n this.entries = [];\n this.url = null;\n\n if (init !== undefined) {\n if (isObject(init)) this.parseObject(init);\n else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\n }\n};\n\nURLSearchParamsState.prototype = {\n type: URL_SEARCH_PARAMS,\n bindURL: function (url) {\n this.url = url;\n this.update();\n },\n parseObject: function (object) {\n var iteratorMethod = getIteratorMethod(object);\n var iterator, next, step, entryIterator, entryNext, first, second;\n\n if (iteratorMethod) {\n iterator = getIterator(object, iteratorMethod);\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = call(entryNext, entryIterator)).done ||\n (second = call(entryNext, entryIterator)).done ||\n !call(entryNext, entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n push(this.entries, { key: $toString(first.value), value: $toString(second.value) });\n }\n } else for (var key in object) if (hasOwn(object, key)) {\n push(this.entries, { key: key, value: $toString(object[key]) });\n }\n },\n parseQuery: function (query) {\n if (query) {\n var attributes = split(query, '&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = split(attribute, '=');\n push(this.entries, {\n key: deserialize(shift(entry)),\n value: deserialize(join(entry, '='))\n });\n }\n }\n }\n },\n serialize: function () {\n var entries = this.entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n push(result, serialize(entry.key) + '=' + serialize(entry.value));\n } return join(result, '&');\n },\n update: function () {\n this.entries.length = 0;\n this.parseQuery(this.url.query);\n },\n updateURL: function () {\n if (this.url) this.url.update();\n }\n};\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsPrototype);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n setInternalState(this, new URLSearchParamsState(init));\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\ndefineBuiltIns(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 push(state.entries, { key: $toString(name), value: $toString(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 = $toString(name);\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) splice(entries, 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 = $toString(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 = $toString(name);\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) push(result, 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 = $toString(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 = $toString(name);\n var val = $toString(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) splice(entries, index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) push(entries, { 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 arraySort(state.entries, function (a, b) {\n return a.key > b.key ? 1 : -1;\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);\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\ndefineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\ndefineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {\n return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n var headersHas = uncurryThis(HeadersPrototype.has);\n var headersSet = uncurryThis(HeadersPrototype.set);\n\n var wrapRequestOptions = function (init) {\n if (isObject(init)) {\n var body = init.body;\n var headers;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headersHas(headers, 'content-type')) {\n headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n return create(init, {\n body: createPropertyDescriptor(0, $toString(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n } return init;\n };\n\n if (isCallable(nativeFetch)) {\n $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n }\n });\n }\n\n if (isCallable(NativeRequest)) {\n var RequestConstructor = function Request(input /* , init */) {\n anInstance(this, RequestPrototype);\n return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n };\n\n RequestPrototype.constructor = RequestConstructor;\n RequestConstructor.prototype = RequestPrototype;\n\n $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {\n Request: RequestConstructor\n });\n }\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url-search-params.constructor');\n","/*!\n * dist/inputmask\n * https://github.com/RobinHerbots/Inputmask\n * Copyright (c) 2010 - 2021 Robin Herbots\n * Licensed under the MIT license\n * Version: 5.0.7\n */\n!function(e, t) {\n if (\"object\" == typeof exports && \"object\" == typeof module) module.exports = t(); else if (\"function\" == typeof define && define.amd) define([], t); else {\n var i = t();\n for (var a in i) (\"object\" == typeof exports ? exports : e)[a] = i[a];\n }\n}(self, (function() {\n return function() {\n \"use strict\";\n var e = {\n 8741: function(e, t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0;\n var i = !(\"undefined\" == typeof window || !window.document || !window.document.createElement);\n t.default = i;\n },\n 3976: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0;\n var a, n = (a = i(5581)) && a.__esModule ? a : {\n default: a\n };\n var r = {\n _maxTestPos: 500,\n placeholder: \"_\",\n optionalmarker: [ \"[\", \"]\" ],\n quantifiermarker: [ \"{\", \"}\" ],\n groupmarker: [ \"(\", \")\" ],\n alternatormarker: \"|\",\n escapeChar: \"\\\\\",\n mask: null,\n regex: null,\n oncomplete: function() {},\n onincomplete: function() {},\n oncleared: function() {},\n repeat: 0,\n greedy: !1,\n autoUnmask: !1,\n removeMaskOnSubmit: !1,\n clearMaskOnLostFocus: !0,\n insertMode: !0,\n insertModeVisual: !0,\n clearIncomplete: !1,\n alias: null,\n onKeyDown: function() {},\n onBeforeMask: null,\n onBeforePaste: function(e, t) {\n return \"function\" == typeof t.onBeforeMask ? t.onBeforeMask.call(this, e, t) : e;\n },\n onBeforeWrite: null,\n onUnMask: null,\n showMaskOnFocus: !0,\n showMaskOnHover: !0,\n onKeyValidation: function() {},\n skipOptionalPartCharacter: \" \",\n numericInput: !1,\n rightAlign: !1,\n undoOnEscape: !0,\n radixPoint: \"\",\n _radixDance: !1,\n groupSeparator: \"\",\n keepStatic: null,\n positionCaretOnTab: !0,\n tabThrough: !1,\n supportsInputType: [ \"text\", \"tel\", \"url\", \"password\", \"search\" ],\n ignorables: [ n.default.BACKSPACE, n.default.TAB, n.default[\"PAUSE/BREAK\"], n.default.ESCAPE, n.default.PAGE_UP, n.default.PAGE_DOWN, n.default.END, n.default.HOME, n.default.LEFT, n.default.UP, n.default.RIGHT, n.default.DOWN, n.default.INSERT, n.default.DELETE, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 0, 229 ],\n isComplete: null,\n preValidation: null,\n postValidation: null,\n staticDefinitionSymbol: void 0,\n jitMasking: !1,\n nullable: !0,\n inputEventOnly: !1,\n noValuePatching: !1,\n positionCaretOnClick: \"lvp\",\n casing: null,\n inputmode: \"text\",\n importDataAttributes: !0,\n shiftPositions: !0,\n usePrototypeDefinitions: !0,\n validationEventTimeOut: 3e3,\n substitutes: {}\n };\n t.default = r;\n },\n 7392: function(e, t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0;\n t.default = {\n 9: {\n validator: \"[0-9\\uff10-\\uff19]\",\n definitionSymbol: \"*\"\n },\n a: {\n validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n definitionSymbol: \"*\"\n },\n \"*\": {\n validator: \"[0-9\\uff10-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\"\n }\n };\n },\n 253: function(e, t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = function(e, t, i) {\n if (void 0 === i) return e.__data ? e.__data[t] : null;\n e.__data = e.__data || {}, e.__data[t] = i;\n };\n },\n 3776: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.Event = void 0, t.off = function(e, t) {\n var i, a;\n function n(e, t, n) {\n if (e in i == !0) if (a.removeEventListener ? a.removeEventListener(e, n, !1) : a.detachEvent && a.detachEvent(\"on\" + e, n), \n \"global\" === t) for (var r in i[e]) i[e][r].splice(i[e][r].indexOf(n), 1); else i[e][t].splice(i[e][t].indexOf(n), 1);\n }\n function r(e, a) {\n var n, r, o = [];\n if (e.length > 0) if (void 0 === t) for (n = 0, r = i[e][a].length; n < r; n++) o.push({\n ev: e,\n namespace: a && a.length > 0 ? a : \"global\",\n handler: i[e][a][n]\n }); else o.push({\n ev: e,\n namespace: a && a.length > 0 ? a : \"global\",\n handler: t\n }); else if (a.length > 0) for (var l in i) for (var s in i[l]) if (s === a) if (void 0 === t) for (n = 0, \n r = i[l][s].length; n < r; n++) o.push({\n ev: l,\n namespace: s,\n handler: i[l][s][n]\n }); else o.push({\n ev: l,\n namespace: s,\n handler: t\n });\n return o;\n }\n if (u(this[0]) && e) {\n i = this[0].eventRegistry, a = this[0];\n for (var o = e.split(\" \"), l = 0; l < o.length; l++) for (var s = o[l].split(\".\"), c = r(s[0], s[1]), f = 0, d = c.length; f < d; f++) n(c[f].ev, c[f].namespace, c[f].handler);\n }\n return this;\n }, t.on = function(e, t) {\n function i(e, i) {\n n.addEventListener ? n.addEventListener(e, t, !1) : n.attachEvent && n.attachEvent(\"on\" + e, t), \n a[e] = a[e] || {}, a[e][i] = a[e][i] || [], a[e][i].push(t);\n }\n if (u(this[0])) for (var a = this[0].eventRegistry, n = this[0], r = e.split(\" \"), o = 0; o < r.length; o++) {\n var l = r[o].split(\".\"), s = l[0], c = l[1] || \"global\";\n i(s, c);\n }\n return this;\n }, t.trigger = function(e) {\n if (u(this[0])) for (var t = this[0].eventRegistry, i = this[0], a = \"string\" == typeof e ? e.split(\" \") : [ e.type ], r = 0; r < a.length; r++) {\n var l = a[r].split(\".\"), s = l[0], c = l[1] || \"global\";\n if (void 0 !== document && \"global\" === c) {\n var f, d, p = {\n bubbles: !0,\n cancelable: !0,\n detail: arguments[1]\n };\n if (document.createEvent) {\n try {\n if (\"input\" === s) p.inputType = \"insertText\", f = new InputEvent(s, p); else f = new CustomEvent(s, p);\n } catch (e) {\n (f = document.createEvent(\"CustomEvent\")).initCustomEvent(s, p.bubbles, p.cancelable, p.detail);\n }\n e.type && (0, n.default)(f, e), i.dispatchEvent(f);\n } else (f = document.createEventObject()).eventType = s, f.detail = arguments[1], \n e.type && (0, n.default)(f, e), i.fireEvent(\"on\" + f.eventType, f);\n } else if (void 0 !== t[s]) if (arguments[0] = arguments[0].type ? arguments[0] : o.default.Event(arguments[0]), \n arguments[0].detail = arguments.slice(1), \"global\" === c) for (var h in t[s]) for (d = 0; d < t[s][h].length; d++) t[s][h][d].apply(i, arguments); else for (d = 0; d < t[s][c].length; d++) t[s][c][d].apply(i, arguments);\n }\n return this;\n };\n var a, n = s(i(600)), r = s(i(9380)), o = s(i(4963)), l = s(i(8741));\n function s(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n function u(e) {\n return e instanceof Element;\n }\n t.Event = a, \"function\" == typeof r.default.CustomEvent ? t.Event = a = r.default.CustomEvent : l.default && (t.Event = a = function(e, t) {\n t = t || {\n bubbles: !1,\n cancelable: !1,\n detail: void 0\n };\n var i = document.createEvent(\"CustomEvent\");\n return i.initCustomEvent(e, t.bubbles, t.cancelable, t.detail), i;\n }, a.prototype = r.default.Event.prototype);\n },\n 600: function(e, t) {\n function i(e) {\n return i = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e;\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n }, i(e);\n }\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = function e() {\n var t, a, n, r, o, l, s = arguments[0] || {}, u = 1, c = arguments.length, f = !1;\n \"boolean\" == typeof s && (f = s, s = arguments[u] || {}, u++);\n \"object\" !== i(s) && \"function\" != typeof s && (s = {});\n for (;u < c; u++) if (null != (t = arguments[u])) for (a in t) n = s[a], r = t[a], \n s !== r && (f && r && (\"[object Object]\" === Object.prototype.toString.call(r) || (o = Array.isArray(r))) ? (o ? (o = !1, \n l = n && Array.isArray(n) ? n : []) : l = n && \"[object Object]\" === Object.prototype.toString.call(n) ? n : {}, \n s[a] = e(f, l, r)) : void 0 !== r && (s[a] = r));\n return s;\n };\n },\n 4963: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0;\n var a = l(i(600)), n = l(i(9380)), r = l(i(253)), o = i(3776);\n function l(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n var s = n.default.document;\n function u(e) {\n return e instanceof u ? e : this instanceof u ? void (null != e && e !== n.default && (this[0] = e.nodeName ? e : void 0 !== e[0] && e[0].nodeName ? e[0] : s.querySelector(e), \n void 0 !== this[0] && null !== this[0] && (this[0].eventRegistry = this[0].eventRegistry || {}))) : new u(e);\n }\n u.prototype = {\n on: o.on,\n off: o.off,\n trigger: o.trigger\n }, u.extend = a.default, u.data = r.default, u.Event = o.Event;\n var c = u;\n t.default = c;\n },\n 9845: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.ua = t.mobile = t.iphone = t.iemobile = t.ie = void 0;\n var a, n = (a = i(9380)) && a.__esModule ? a : {\n default: a\n };\n var r = n.default.navigator && n.default.navigator.userAgent || \"\", o = r.indexOf(\"MSIE \") > 0 || r.indexOf(\"Trident/\") > 0, l = \"ontouchstart\" in n.default, s = /iemobile/i.test(r), u = /iphone/i.test(r) && !s;\n t.iphone = u, t.iemobile = s, t.mobile = l, t.ie = o, t.ua = r;\n },\n 7184: function(e, t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = function(e) {\n return e.replace(i, \"\\\\$1\");\n };\n var i = new RegExp(\"(\\\\\" + [ \"/\", \".\", \"*\", \"+\", \"?\", \"|\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"\\\\\", \"$\", \"^\" ].join(\"|\\\\\") + \")\", \"gim\");\n },\n 6030: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.EventHandlers = void 0;\n var a, n = i(8711), r = (a = i(5581)) && a.__esModule ? a : {\n default: a\n }, o = i(9845), l = i(7215), s = i(7760), u = i(4713);\n function c(e, t) {\n var i = \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n if (!i) {\n if (Array.isArray(e) || (i = function(e, t) {\n if (!e) return;\n if (\"string\" == typeof e) return f(e, t);\n var i = Object.prototype.toString.call(e).slice(8, -1);\n \"Object\" === i && e.constructor && (i = e.constructor.name);\n if (\"Map\" === i || \"Set\" === i) return Array.from(e);\n if (\"Arguments\" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return f(e, t);\n }(e)) || t && e && \"number\" == typeof e.length) {\n i && (e = i);\n var a = 0, n = function() {};\n return {\n s: n,\n n: function() {\n return a >= e.length ? {\n done: !0\n } : {\n done: !1,\n value: e[a++]\n };\n },\n e: function(e) {\n throw e;\n },\n f: n\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var r, o = !0, l = !1;\n return {\n s: function() {\n i = i.call(e);\n },\n n: function() {\n var e = i.next();\n return o = e.done, e;\n },\n e: function(e) {\n l = !0, r = e;\n },\n f: function() {\n try {\n o || null == i.return || i.return();\n } finally {\n if (l) throw r;\n }\n }\n };\n }\n function f(e, t) {\n (null == t || t > e.length) && (t = e.length);\n for (var i = 0, a = new Array(t); i < t; i++) a[i] = e[i];\n return a;\n }\n var d = {\n keydownEvent: function(e) {\n var t = this.inputmask, i = t.opts, a = t.dependencyLib, c = t.maskset, f = this, d = a(f), p = e.keyCode, h = n.caret.call(t, f), v = i.onKeyDown.call(this, e, n.getBuffer.call(t), h, i);\n if (void 0 !== v) return v;\n if (p === r.default.BACKSPACE || p === r.default.DELETE || o.iphone && p === r.default.BACKSPACE_SAFARI || e.ctrlKey && p === r.default.X && !(\"oncut\" in f)) e.preventDefault(), \n l.handleRemove.call(t, f, p, h), (0, s.writeBuffer)(f, n.getBuffer.call(t, !0), c.p, e, f.inputmask._valueGet() !== n.getBuffer.call(t).join(\"\")); else if (p === r.default.END || p === r.default.PAGE_DOWN) {\n e.preventDefault();\n var m = n.seekNext.call(t, n.getLastValidPosition.call(t));\n n.caret.call(t, f, e.shiftKey ? h.begin : m, m, !0);\n } else p === r.default.HOME && !e.shiftKey || p === r.default.PAGE_UP ? (e.preventDefault(), \n n.caret.call(t, f, 0, e.shiftKey ? h.begin : 0, !0)) : i.undoOnEscape && p === r.default.ESCAPE && !0 !== e.altKey ? ((0, \n s.checkVal)(f, !0, !1, t.undoValue.split(\"\")), d.trigger(\"click\")) : p !== r.default.INSERT || e.shiftKey || e.ctrlKey || void 0 !== t.userOptions.insertMode ? !0 === i.tabThrough && p === r.default.TAB ? !0 === e.shiftKey ? (h.end = n.seekPrevious.call(t, h.end, !0), \n !0 === u.getTest.call(t, h.end - 1).match.static && h.end--, h.begin = n.seekPrevious.call(t, h.end, !0), \n h.begin >= 0 && h.end > 0 && (e.preventDefault(), n.caret.call(t, f, h.begin, h.end))) : (h.begin = n.seekNext.call(t, h.begin, !0), \n h.end = n.seekNext.call(t, h.begin, !0), h.end < c.maskLength && h.end--, h.begin <= c.maskLength && (e.preventDefault(), \n n.caret.call(t, f, h.begin, h.end))) : e.shiftKey || i.insertModeVisual && !1 === i.insertMode && (p === r.default.RIGHT ? setTimeout((function() {\n var e = n.caret.call(t, f);\n n.caret.call(t, f, e.begin);\n }), 0) : p === r.default.LEFT && setTimeout((function() {\n var e = n.translatePosition.call(t, f.inputmask.caretPos.begin);\n n.translatePosition.call(t, f.inputmask.caretPos.end);\n t.isRTL ? n.caret.call(t, f, e + (e === c.maskLength ? 0 : 1)) : n.caret.call(t, f, e - (0 === e ? 0 : 1));\n }), 0)) : l.isSelection.call(t, h) ? i.insertMode = !i.insertMode : (i.insertMode = !i.insertMode, \n n.caret.call(t, f, h.begin, h.begin));\n t.ignorable = i.ignorables.includes(p);\n },\n keypressEvent: function(e, t, i, a, o) {\n var u = this.inputmask || this, c = u.opts, f = u.dependencyLib, d = u.maskset, p = u.el, h = f(p), v = e.keyCode;\n if (!(!0 === t || e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || u.ignorable)) return v === r.default.ENTER && u.undoValue !== u._valueGet(!0) && (u.undoValue = u._valueGet(!0), \n setTimeout((function() {\n h.trigger(\"change\");\n }), 0)), u.skipInputEvent = !0, !0;\n if (v) {\n 44 !== v && 46 !== v || 3 !== e.location || \"\" === c.radixPoint || (v = c.radixPoint.charCodeAt(0));\n var m, g = t ? {\n begin: o,\n end: o\n } : n.caret.call(u, p), k = String.fromCharCode(v);\n k = c.substitutes[k] || k, d.writeOutBuffer = !0;\n var y = l.isValid.call(u, g, k, a, void 0, void 0, void 0, t);\n if (!1 !== y && (n.resetMaskSet.call(u, !0), m = void 0 !== y.caret ? y.caret : n.seekNext.call(u, y.pos.begin ? y.pos.begin : y.pos), \n d.p = m), m = c.numericInput && void 0 === y.caret ? n.seekPrevious.call(u, m) : m, \n !1 !== i && (setTimeout((function() {\n c.onKeyValidation.call(p, v, y);\n }), 0), d.writeOutBuffer && !1 !== y)) {\n var b = n.getBuffer.call(u);\n (0, s.writeBuffer)(p, b, m, e, !0 !== t);\n }\n if (e.preventDefault(), t) return !1 !== y && (y.forwardPosition = m), y;\n }\n },\n keyupEvent: function(e) {\n var t = this.inputmask;\n !t.isComposing || e.keyCode !== r.default.KEY_229 && e.keyCode !== r.default.ENTER || t.$el.trigger(\"input\");\n },\n pasteEvent: function(e) {\n var t, i = this.inputmask, a = i.opts, r = i._valueGet(!0), o = n.caret.call(i, this);\n i.isRTL && (t = o.end, o.end = n.translatePosition.call(i, o.begin), o.begin = n.translatePosition.call(i, t));\n var l = r.substr(0, o.begin), u = r.substr(o.end, r.length);\n if (l == (i.isRTL ? n.getBufferTemplate.call(i).slice().reverse() : n.getBufferTemplate.call(i)).slice(0, o.begin).join(\"\") && (l = \"\"), \n u == (i.isRTL ? n.getBufferTemplate.call(i).slice().reverse() : n.getBufferTemplate.call(i)).slice(o.end).join(\"\") && (u = \"\"), \n window.clipboardData && window.clipboardData.getData) r = l + window.clipboardData.getData(\"Text\") + u; else {\n if (!e.clipboardData || !e.clipboardData.getData) return !0;\n r = l + e.clipboardData.getData(\"text/plain\") + u;\n }\n var f = r;\n if (i.isRTL) {\n f = f.split(\"\");\n var d, p = c(n.getBufferTemplate.call(i));\n try {\n for (p.s(); !(d = p.n()).done; ) {\n var h = d.value;\n f[0] === h && f.shift();\n }\n } catch (e) {\n p.e(e);\n } finally {\n p.f();\n }\n f = f.join(\"\");\n }\n if (\"function\" == typeof a.onBeforePaste) {\n if (!1 === (f = a.onBeforePaste.call(i, f, a))) return !1;\n f || (f = r);\n }\n (0, s.checkVal)(this, !0, !1, f.toString().split(\"\"), e), e.preventDefault();\n },\n inputFallBackEvent: function(e) {\n var t = this.inputmask, i = t.opts, a = t.dependencyLib;\n var l = this, c = l.inputmask._valueGet(!0), f = (t.isRTL ? n.getBuffer.call(t).slice().reverse() : n.getBuffer.call(t)).join(\"\"), p = n.caret.call(t, l, void 0, void 0, !0);\n if (f !== c) {\n c = function(e, i, a) {\n if (o.iemobile) {\n var r = i.replace(n.getBuffer.call(t).join(\"\"), \"\");\n if (1 === r.length) {\n var l = i.split(\"\");\n l.splice(a.begin, 0, r), i = l.join(\"\");\n }\n }\n return i;\n }(0, c, p);\n var h = function(e, a, r) {\n for (var o, l, s, c = e.substr(0, r.begin).split(\"\"), f = e.substr(r.begin).split(\"\"), d = a.substr(0, r.begin).split(\"\"), p = a.substr(r.begin).split(\"\"), h = c.length >= d.length ? c.length : d.length, v = f.length >= p.length ? f.length : p.length, m = \"\", g = [], k = \"~\"; c.length < h; ) c.push(k);\n for (;d.length < h; ) d.push(k);\n for (;f.length < v; ) f.unshift(k);\n for (;p.length < v; ) p.unshift(k);\n var y = c.concat(f), b = d.concat(p);\n for (l = 0, o = y.length; l < o; l++) switch (s = u.getPlaceholder.call(t, n.translatePosition.call(t, l)), \n m) {\n case \"insertText\":\n b[l - 1] === y[l] && r.begin == y.length - 1 && g.push(y[l]), l = o;\n break;\n\n case \"insertReplacementText\":\n case \"deleteContentBackward\":\n y[l] === k ? r.end++ : l = o;\n break;\n\n default:\n y[l] !== b[l] && (y[l + 1] !== k && y[l + 1] !== s && void 0 !== y[l + 1] || (b[l] !== s || b[l + 1] !== k) && b[l] !== k ? b[l + 1] === k && b[l] === y[l + 1] ? (m = \"insertText\", \n g.push(y[l]), r.begin--, r.end--) : y[l] !== s && y[l] !== k && (y[l + 1] === k || b[l] !== y[l] && b[l + 1] === y[l + 1]) ? (m = \"insertReplacementText\", \n g.push(y[l]), r.begin--) : y[l] === k ? (m = \"deleteContentBackward\", (n.isMask.call(t, n.translatePosition.call(t, l), !0) || b[l] === i.radixPoint) && r.end++) : l = o : (m = \"insertText\", \n g.push(y[l]), r.begin--, r.end--));\n }\n return {\n action: m,\n data: g,\n caret: r\n };\n }(c, f, p);\n switch ((l.inputmask.shadowRoot || l.ownerDocument).activeElement !== l && l.focus(), \n (0, s.writeBuffer)(l, n.getBuffer.call(t)), n.caret.call(t, l, p.begin, p.end, !0), \n h.action) {\n case \"insertText\":\n case \"insertReplacementText\":\n h.data.forEach((function(e, i) {\n var n = new a.Event(\"keypress\");\n n.keyCode = e.charCodeAt(0), t.ignorable = !1, d.keypressEvent.call(l, n);\n })), setTimeout((function() {\n t.$el.trigger(\"keyup\");\n }), 0);\n break;\n\n case \"deleteContentBackward\":\n var v = new a.Event(\"keydown\");\n v.keyCode = r.default.BACKSPACE, d.keydownEvent.call(l, v);\n break;\n\n default:\n (0, s.applyInputValue)(l, c);\n }\n e.preventDefault();\n }\n },\n compositionendEvent: function(e) {\n var t = this.inputmask;\n t.isComposing = !1, t.$el.trigger(\"input\");\n },\n setValueEvent: function(e) {\n var t = this.inputmask, i = this, a = e && e.detail ? e.detail[0] : arguments[1];\n void 0 === a && (a = i.inputmask._valueGet(!0)), (0, s.applyInputValue)(i, a), (e.detail && void 0 !== e.detail[1] || void 0 !== arguments[2]) && n.caret.call(t, i, e.detail ? e.detail[1] : arguments[2]);\n },\n focusEvent: function(e) {\n var t = this.inputmask, i = t.opts, a = this, r = a.inputmask._valueGet();\n i.showMaskOnFocus && r !== n.getBuffer.call(t).join(\"\") && (0, s.writeBuffer)(a, n.getBuffer.call(t), n.seekNext.call(t, n.getLastValidPosition.call(t))), \n !0 !== i.positionCaretOnTab || !1 !== t.mouseEnter || l.isComplete.call(t, n.getBuffer.call(t)) && -1 !== n.getLastValidPosition.call(t) || d.clickEvent.apply(a, [ e, !0 ]), \n t.undoValue = t._valueGet(!0);\n },\n invalidEvent: function(e) {\n this.inputmask.validationEvent = !0;\n },\n mouseleaveEvent: function() {\n var e = this.inputmask, t = e.opts, i = this;\n e.mouseEnter = !1, t.clearMaskOnLostFocus && (i.inputmask.shadowRoot || i.ownerDocument).activeElement !== i && (0, \n s.HandleNativePlaceholder)(i, e.originalPlaceholder);\n },\n clickEvent: function(e, t) {\n var i = this.inputmask, a = this;\n if ((a.inputmask.shadowRoot || a.ownerDocument).activeElement === a) {\n var r = n.determineNewCaretPosition.call(i, n.caret.call(i, a), t);\n void 0 !== r && n.caret.call(i, a, r);\n }\n },\n cutEvent: function(e) {\n var t = this.inputmask, i = t.maskset, a = this, o = n.caret.call(t, a), u = t.isRTL ? n.getBuffer.call(t).slice(o.end, o.begin) : n.getBuffer.call(t).slice(o.begin, o.end), c = t.isRTL ? u.reverse().join(\"\") : u.join(\"\");\n window.navigator.clipboard ? window.navigator.clipboard.writeText(c) : window.clipboardData && window.clipboardData.getData && window.clipboardData.setData(\"Text\", c), \n l.handleRemove.call(t, a, r.default.DELETE, o), (0, s.writeBuffer)(a, n.getBuffer.call(t), i.p, e, t.undoValue !== t._valueGet(!0));\n },\n blurEvent: function(e) {\n var t = this.inputmask, i = t.opts, a = (0, t.dependencyLib)(this), r = this;\n if (r.inputmask) {\n (0, s.HandleNativePlaceholder)(r, t.originalPlaceholder);\n var o = r.inputmask._valueGet(), u = n.getBuffer.call(t).slice();\n \"\" !== o && (i.clearMaskOnLostFocus && (-1 === n.getLastValidPosition.call(t) && o === n.getBufferTemplate.call(t).join(\"\") ? u = [] : s.clearOptionalTail.call(t, u)), \n !1 === l.isComplete.call(t, u) && (setTimeout((function() {\n a.trigger(\"incomplete\");\n }), 0), i.clearIncomplete && (n.resetMaskSet.call(t), u = i.clearMaskOnLostFocus ? [] : n.getBufferTemplate.call(t).slice())), \n (0, s.writeBuffer)(r, u, void 0, e)), t.undoValue !== t._valueGet(!0) && (t.undoValue = t._valueGet(!0), \n a.trigger(\"change\"));\n }\n },\n mouseenterEvent: function() {\n var e = this.inputmask, t = e.opts, i = this;\n if (e.mouseEnter = !0, (i.inputmask.shadowRoot || i.ownerDocument).activeElement !== i) {\n var a = (e.isRTL ? n.getBufferTemplate.call(e).slice().reverse() : n.getBufferTemplate.call(e)).join(\"\");\n e.placeholder !== a && i.placeholder !== e.originalPlaceholder && (e.originalPlaceholder = i.placeholder), \n t.showMaskOnHover && (0, s.HandleNativePlaceholder)(i, a);\n }\n },\n submitEvent: function() {\n var e = this.inputmask, t = e.opts;\n e.undoValue !== e._valueGet(!0) && e.$el.trigger(\"change\"), -1 === n.getLastValidPosition.call(e) && e._valueGet && e._valueGet() === n.getBufferTemplate.call(e).join(\"\") && e._valueSet(\"\"), \n t.clearIncomplete && !1 === l.isComplete.call(e, n.getBuffer.call(e)) && e._valueSet(\"\"), \n t.removeMaskOnSubmit && (e._valueSet(e.unmaskedvalue(), !0), setTimeout((function() {\n (0, s.writeBuffer)(e.el, n.getBuffer.call(e));\n }), 0));\n },\n resetEvent: function() {\n var e = this.inputmask;\n e.refreshValue = !0, setTimeout((function() {\n (0, s.applyInputValue)(e.el, e._valueGet(!0));\n }), 0);\n }\n };\n t.EventHandlers = d;\n },\n 9716: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.EventRuler = void 0;\n var a = l(i(2394)), n = l(i(5581)), r = i(8711), o = i(7760);\n function l(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n var s = {\n on: function(e, t, i) {\n var l = e.inputmask.dependencyLib, s = function(t) {\n t.originalEvent && (t = t.originalEvent || t, arguments[0] = t);\n var s, u = this, c = u.inputmask, f = c ? c.opts : void 0;\n if (void 0 === c && \"FORM\" !== this.nodeName) {\n var d = l.data(u, \"_inputmask_opts\");\n l(u).off(), d && new a.default(d).mask(u);\n } else {\n if ([ \"submit\", \"reset\", \"setvalue\" ].includes(t.type) || \"FORM\" === this.nodeName || !(u.disabled || u.readOnly && !(\"keydown\" === t.type && t.ctrlKey && 67 === t.keyCode || !1 === f.tabThrough && t.keyCode === n.default.TAB))) {\n switch (t.type) {\n case \"input\":\n if (!0 === c.skipInputEvent || t.inputType && \"insertCompositionText\" === t.inputType) return c.skipInputEvent = !1, \n t.preventDefault();\n break;\n\n case \"keydown\":\n c.skipKeyPressEvent = !1, c.skipInputEvent = c.isComposing = t.keyCode === n.default.KEY_229;\n break;\n\n case \"keyup\":\n case \"compositionend\":\n c.isComposing && (c.skipInputEvent = !1);\n break;\n\n case \"keypress\":\n if (!0 === c.skipKeyPressEvent) return t.preventDefault();\n c.skipKeyPressEvent = !0;\n break;\n\n case \"click\":\n case \"focus\":\n return c.validationEvent ? (c.validationEvent = !1, e.blur(), (0, o.HandleNativePlaceholder)(e, (c.isRTL ? r.getBufferTemplate.call(c).slice().reverse() : r.getBufferTemplate.call(c)).join(\"\")), \n setTimeout((function() {\n e.focus();\n }), f.validationEventTimeOut), !1) : (s = arguments, setTimeout((function() {\n e.inputmask && i.apply(u, s);\n }), 0), !1);\n }\n var p = i.apply(u, arguments);\n return !1 === p && (t.preventDefault(), t.stopPropagation()), p;\n }\n t.preventDefault();\n }\n };\n [ \"submit\", \"reset\" ].includes(t) ? (s = s.bind(e), null !== e.form && l(e.form).on(t, s)) : l(e).on(t, s), \n e.inputmask.events[t] = e.inputmask.events[t] || [], e.inputmask.events[t].push(s);\n },\n off: function(e, t) {\n if (e.inputmask && e.inputmask.events) {\n var i = e.inputmask.dependencyLib, a = e.inputmask.events;\n for (var n in t && ((a = [])[t] = e.inputmask.events[t]), a) {\n for (var r = a[n]; r.length > 0; ) {\n var o = r.pop();\n [ \"submit\", \"reset\" ].includes(n) ? null !== e.form && i(e.form).off(n, o) : i(e).off(n, o);\n }\n delete e.inputmask.events[n];\n }\n }\n }\n };\n t.EventRuler = s;\n },\n 219: function(e, t, i) {\n var a = d(i(2394)), n = d(i(5581)), r = d(i(7184)), o = i(8711), l = i(4713);\n function s(e) {\n return s = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e;\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n }, s(e);\n }\n function u(e, t) {\n return function(e) {\n if (Array.isArray(e)) return e;\n }(e) || function(e, t) {\n var i = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n if (null == i) return;\n var a, n, r = [], o = !0, l = !1;\n try {\n for (i = i.call(e); !(o = (a = i.next()).done) && (r.push(a.value), !t || r.length !== t); o = !0) ;\n } catch (e) {\n l = !0, n = e;\n } finally {\n try {\n o || null == i.return || i.return();\n } finally {\n if (l) throw n;\n }\n }\n return r;\n }(e, t) || function(e, t) {\n if (!e) return;\n if (\"string\" == typeof e) return c(e, t);\n var i = Object.prototype.toString.call(e).slice(8, -1);\n \"Object\" === i && e.constructor && (i = e.constructor.name);\n if (\"Map\" === i || \"Set\" === i) return Array.from(e);\n if (\"Arguments\" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return c(e, t);\n }(e, t) || function() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }\n function c(e, t) {\n (null == t || t > e.length) && (t = e.length);\n for (var i = 0, a = new Array(t); i < t; i++) a[i] = e[i];\n return a;\n }\n function f(e, t) {\n for (var i = 0; i < t.length; i++) {\n var a = t[i];\n a.enumerable = a.enumerable || !1, a.configurable = !0, \"value\" in a && (a.writable = !0), \n Object.defineProperty(e, a.key, a);\n }\n }\n function d(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n var p = a.default.dependencyLib, h = function() {\n function e(t, i, a) {\n !function(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, e), this.mask = t, this.format = i, this.opts = a, this._date = new Date(1, 0, 1), \n this.initDateObject(t, this.opts);\n }\n var t, i, a;\n return t = e, (i = [ {\n key: \"date\",\n get: function() {\n return void 0 === this._date && (this._date = new Date(1, 0, 1), this.initDateObject(void 0, this.opts)), \n this._date;\n }\n }, {\n key: \"initDateObject\",\n value: function(e, t) {\n var i;\n for (P(t).lastIndex = 0; i = P(t).exec(this.format); ) {\n var a = new RegExp(\"\\\\d+$\").exec(i[0]), n = a ? i[0][0] + \"x\" : i[0], r = void 0;\n if (void 0 !== e) {\n if (a) {\n var o = P(t).lastIndex, l = O(i.index, t);\n P(t).lastIndex = o, r = e.slice(0, e.indexOf(l.nextMatch[0]));\n } else r = e.slice(0, n.length);\n e = e.slice(r.length);\n }\n Object.prototype.hasOwnProperty.call(g, n) && this.setValue(this, r, n, g[n][2], g[n][1]);\n }\n }\n }, {\n key: \"setValue\",\n value: function(e, t, i, a, n) {\n if (void 0 !== t && (e[a] = \"ampm\" === a ? t : t.replace(/[^0-9]/g, \"0\"), e[\"raw\" + a] = t.replace(/\\s/g, \"_\")), \n void 0 !== n) {\n var r = e[a];\n (\"day\" === a && 29 === parseInt(r) || \"month\" === a && 2 === parseInt(r)) && (29 !== parseInt(e.day) || 2 !== parseInt(e.month) || \"\" !== e.year && void 0 !== e.year || e._date.setFullYear(2012, 1, 29)), \n \"day\" === a && (m = !0, 0 === parseInt(r) && (r = 1)), \"month\" === a && (m = !0), \n \"year\" === a && (m = !0, r.length < 4 && (r = _(r, 4, !0))), \"\" === r || isNaN(r) || n.call(e._date, r), \n \"ampm\" === a && n.call(e._date, r);\n }\n }\n }, {\n key: \"reset\",\n value: function() {\n this._date = new Date(1, 0, 1);\n }\n }, {\n key: \"reInit\",\n value: function() {\n this._date = void 0, this.date;\n }\n } ]) && f(t.prototype, i), a && f(t, a), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e;\n }(), v = (new Date).getFullYear(), m = !1, g = {\n d: [ \"[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", Date.prototype.getDate ],\n dd: [ \"0[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", function() {\n return _(Date.prototype.getDate.call(this), 2);\n } ],\n ddd: [ \"\" ],\n dddd: [ \"\" ],\n m: [ \"[1-9]|1[012]\", function(e) {\n var t = e ? parseInt(e) : 0;\n return t > 0 && t--, Date.prototype.setMonth.call(this, t);\n }, \"month\", function() {\n return Date.prototype.getMonth.call(this) + 1;\n } ],\n mm: [ \"0[1-9]|1[012]\", function(e) {\n var t = e ? parseInt(e) : 0;\n return t > 0 && t--, Date.prototype.setMonth.call(this, t);\n }, \"month\", function() {\n return _(Date.prototype.getMonth.call(this) + 1, 2);\n } ],\n mmm: [ \"\" ],\n mmmm: [ \"\" ],\n yy: [ \"[0-9]{2}\", Date.prototype.setFullYear, \"year\", function() {\n return _(Date.prototype.getFullYear.call(this), 2);\n } ],\n yyyy: [ \"[0-9]{4}\", Date.prototype.setFullYear, \"year\", function() {\n return _(Date.prototype.getFullYear.call(this), 4);\n } ],\n h: [ \"[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n hh: [ \"0[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", function() {\n return _(Date.prototype.getHours.call(this), 2);\n } ],\n hx: [ function(e) {\n return \"[0-9]{\".concat(e, \"}\");\n }, Date.prototype.setHours, \"hours\", function(e) {\n return Date.prototype.getHours;\n } ],\n H: [ \"1?[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n HH: [ \"0[0-9]|1[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", function() {\n return _(Date.prototype.getHours.call(this), 2);\n } ],\n Hx: [ function(e) {\n return \"[0-9]{\".concat(e, \"}\");\n }, Date.prototype.setHours, \"hours\", function(e) {\n return function() {\n return _(Date.prototype.getHours.call(this), e);\n };\n } ],\n M: [ \"[1-5]?[0-9]\", Date.prototype.setMinutes, \"minutes\", Date.prototype.getMinutes ],\n MM: [ \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\", Date.prototype.setMinutes, \"minutes\", function() {\n return _(Date.prototype.getMinutes.call(this), 2);\n } ],\n s: [ \"[1-5]?[0-9]\", Date.prototype.setSeconds, \"seconds\", Date.prototype.getSeconds ],\n ss: [ \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\", Date.prototype.setSeconds, \"seconds\", function() {\n return _(Date.prototype.getSeconds.call(this), 2);\n } ],\n l: [ \"[0-9]{3}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n return _(Date.prototype.getMilliseconds.call(this), 3);\n } ],\n L: [ \"[0-9]{2}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n return _(Date.prototype.getMilliseconds.call(this), 2);\n } ],\n t: [ \"[ap]\", y, \"ampm\", b, 1 ],\n tt: [ \"[ap]m\", y, \"ampm\", b, 2 ],\n T: [ \"[AP]\", y, \"ampm\", b, 1 ],\n TT: [ \"[AP]M\", y, \"ampm\", b, 2 ],\n Z: [ \".*\", void 0, \"Z\", function() {\n var e = this.toString().match(/\\((.+)\\)/)[1];\n e.includes(\" \") && (e = (e = e.replace(\"-\", \" \").toUpperCase()).split(\" \").map((function(e) {\n return u(e, 1)[0];\n })).join(\"\"));\n return e;\n } ],\n o: [ \"\" ],\n S: [ \"\" ]\n }, k = {\n isoDate: \"yyyy-mm-dd\",\n isoTime: \"HH:MM:ss\",\n isoDateTime: \"yyyy-mm-dd'T'HH:MM:ss\",\n isoUtcDateTime: \"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'\"\n };\n function y(e) {\n var t = this.getHours();\n e.toLowerCase().includes(\"p\") ? this.setHours(t + 12) : e.toLowerCase().includes(\"a\") && t >= 12 && this.setHours(t - 12);\n }\n function b() {\n var e = this.getHours();\n return (e = e || 12) >= 12 ? \"PM\" : \"AM\";\n }\n function x(e) {\n var t = new RegExp(\"\\\\d+$\").exec(e[0]);\n if (t && void 0 !== t[0]) {\n var i = g[e[0][0] + \"x\"].slice(\"\");\n return i[0] = i[0](t[0]), i[3] = i[3](t[0]), i;\n }\n if (g[e[0]]) return g[e[0]];\n }\n function P(e) {\n if (!e.tokenizer) {\n var t = [], i = [];\n for (var a in g) if (/\\.*x$/.test(a)) {\n var n = a[0] + \"\\\\d+\";\n -1 === i.indexOf(n) && i.push(n);\n } else -1 === t.indexOf(a[0]) && t.push(a[0]);\n e.tokenizer = \"(\" + (i.length > 0 ? i.join(\"|\") + \"|\" : \"\") + t.join(\"+|\") + \")+?|.\", \n e.tokenizer = new RegExp(e.tokenizer, \"g\");\n }\n return e.tokenizer;\n }\n function E(e, t, i) {\n if (!m) return !0;\n if (void 0 === e.rawday || !isFinite(e.rawday) && new Date(e.date.getFullYear(), isFinite(e.rawmonth) ? e.month : e.date.getMonth() + 1, 0).getDate() >= e.day || \"29\" == e.day && (!isFinite(e.rawyear) || void 0 === e.rawyear || \"\" === e.rawyear) || new Date(e.date.getFullYear(), isFinite(e.rawmonth) ? e.month : e.date.getMonth() + 1, 0).getDate() >= e.day) return t;\n if (\"29\" == e.day) {\n var a = O(t.pos, i);\n if (\"yyyy\" === a.targetMatch[0] && t.pos - a.targetMatchIndex == 2) return t.remove = t.pos + 1, \n t;\n } else if (\"02\" == e.month && \"30\" == e.day && void 0 !== t.c) return e.day = \"03\", \n e.date.setDate(3), e.date.setMonth(1), t.insert = [ {\n pos: t.pos,\n c: \"0\"\n }, {\n pos: t.pos + 1,\n c: t.c\n } ], t.caret = o.seekNext.call(this, t.pos + 1), t;\n return !1;\n }\n function S(e, t, i, a) {\n var n, o, l = \"\";\n for (P(i).lastIndex = 0; n = P(i).exec(e); ) {\n if (void 0 === t) if (o = x(n)) l += \"(\" + o[0] + \")\"; else switch (n[0]) {\n case \"[\":\n l += \"(\";\n break;\n\n case \"]\":\n l += \")?\";\n break;\n\n default:\n l += (0, r.default)(n[0]);\n } else if (o = x(n)) if (!0 !== a && o[3]) l += o[3].call(t.date); else o[2] ? l += t[\"raw\" + o[2]] : l += n[0]; else l += n[0];\n }\n return l;\n }\n function _(e, t, i) {\n for (e = String(e), t = t || 2; e.length < t; ) e = i ? e + \"0\" : \"0\" + e;\n return e;\n }\n function w(e, t, i) {\n return \"string\" == typeof e ? new h(e, t, i) : e && \"object\" === s(e) && Object.prototype.hasOwnProperty.call(e, \"date\") ? e : void 0;\n }\n function M(e, t) {\n return S(t.inputFormat, {\n date: e\n }, t);\n }\n function O(e, t) {\n var i, a, n = 0, r = 0;\n for (P(t).lastIndex = 0; a = P(t).exec(t.inputFormat); ) {\n var o = new RegExp(\"\\\\d+$\").exec(a[0]);\n if ((n += r = o ? parseInt(o[0]) : a[0].length) >= e + 1) {\n i = a, a = P(t).exec(t.inputFormat);\n break;\n }\n }\n return {\n targetMatchIndex: n - r,\n nextMatch: a,\n targetMatch: i\n };\n }\n a.default.extendAliases({\n datetime: {\n mask: function(e) {\n return e.numericInput = !1, g.S = e.i18n.ordinalSuffix.join(\"|\"), e.inputFormat = k[e.inputFormat] || e.inputFormat, \n e.displayFormat = k[e.displayFormat] || e.displayFormat || e.inputFormat, e.outputFormat = k[e.outputFormat] || e.outputFormat || e.inputFormat, \n e.placeholder = \"\" !== e.placeholder ? e.placeholder : e.inputFormat.replace(/[[\\]]/, \"\"), \n e.regex = S(e.inputFormat, void 0, e), e.min = w(e.min, e.inputFormat, e), e.max = w(e.max, e.inputFormat, e), \n null;\n },\n placeholder: \"\",\n inputFormat: \"isoDateTime\",\n displayFormat: null,\n outputFormat: null,\n min: null,\n max: null,\n skipOptionalPartCharacter: \"\",\n i18n: {\n dayNames: [ \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\" ],\n monthNames: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\", \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n ordinalSuffix: [ \"st\", \"nd\", \"rd\", \"th\" ]\n },\n preValidation: function(e, t, i, a, n, r, o, l) {\n if (l) return !0;\n if (isNaN(i) && e[t] !== i) {\n var s = O(t, n);\n if (s.nextMatch && s.nextMatch[0] === i && s.targetMatch[0].length > 1) {\n var u = g[s.targetMatch[0]][0];\n if (new RegExp(u).test(\"0\" + e[t - 1])) return e[t] = e[t - 1], e[t - 1] = \"0\", \n {\n fuzzy: !0,\n buffer: e,\n refreshFromBuffer: {\n start: t - 1,\n end: t + 1\n },\n pos: t + 1\n };\n }\n }\n return !0;\n },\n postValidation: function(e, t, i, a, n, r, o, s) {\n var u, c;\n if (o) return !0;\n if (!1 === a && (((u = O(t + 1, n)).targetMatch && u.targetMatchIndex === t && u.targetMatch[0].length > 1 && void 0 !== g[u.targetMatch[0]] || (u = O(t + 2, n)).targetMatch && u.targetMatchIndex === t + 1 && u.targetMatch[0].length > 1 && void 0 !== g[u.targetMatch[0]]) && (c = g[u.targetMatch[0]][0]), \n void 0 !== c && (void 0 !== r.validPositions[t + 1] && new RegExp(c).test(i + \"0\") ? (e[t] = i, \n e[t + 1] = \"0\", a = {\n pos: t + 2,\n caret: t\n }) : new RegExp(c).test(\"0\" + i) && (e[t] = \"0\", e[t + 1] = i, a = {\n pos: t + 2\n })), !1 === a)) return a;\n if (a.fuzzy && (e = a.buffer, t = a.pos), (u = O(t, n)).targetMatch && u.targetMatch[0] && void 0 !== g[u.targetMatch[0]]) {\n var f = g[u.targetMatch[0]];\n c = f[0];\n var d = e.slice(u.targetMatchIndex, u.targetMatchIndex + u.targetMatch[0].length);\n if (!1 === new RegExp(c).test(d.join(\"\")) && 2 === u.targetMatch[0].length && r.validPositions[u.targetMatchIndex] && r.validPositions[u.targetMatchIndex + 1] && (r.validPositions[u.targetMatchIndex + 1].input = \"0\"), \n \"year\" == f[2]) for (var p = l.getMaskTemplate.call(this, !1, 1, void 0, !0), h = t + 1; h < e.length; h++) e[h] = p[h], \n delete r.validPositions[h];\n }\n var m = a, k = w(e.join(\"\"), n.inputFormat, n);\n return m && k.date.getTime() == k.date.getTime() && (n.prefillYear && (m = function(e, t, i) {\n if (e.year !== e.rawyear) {\n var a = v.toString(), n = e.rawyear.replace(/[^0-9]/g, \"\"), r = a.slice(0, n.length), o = a.slice(n.length);\n if (2 === n.length && n === r) {\n var l = new Date(v, e.month - 1, e.day);\n e.day == l.getDate() && (!i.max || i.max.date.getTime() >= l.getTime()) && (e.date.setFullYear(v), \n e.year = a, t.insert = [ {\n pos: t.pos + 1,\n c: o[0]\n }, {\n pos: t.pos + 2,\n c: o[1]\n } ]);\n }\n }\n return t;\n }(k, m, n)), m = function(e, t, i, a, n) {\n if (!t) return t;\n if (t && i.min && i.min.date.getTime() == i.min.date.getTime()) {\n var r;\n for (e.reset(), P(i).lastIndex = 0; r = P(i).exec(i.inputFormat); ) {\n var o;\n if ((o = x(r)) && o[3]) {\n for (var l = o[1], s = e[o[2]], u = i.min[o[2]], c = i.max ? i.max[o[2]] : u, f = [], d = !1, p = 0; p < u.length; p++) void 0 !== a.validPositions[p + r.index] || d ? (f[p] = s[p], \n d = d || s[p] > u[p]) : (f[p] = u[p], \"year\" === o[2] && s.length - 1 == p && u != c && (f = (parseInt(f.join(\"\")) + 1).toString().split(\"\")), \n \"ampm\" === o[2] && u != c && i.min.date.getTime() > e.date.getTime() && (f[p] = c[p]));\n l.call(e._date, f.join(\"\"));\n }\n }\n t = i.min.date.getTime() <= e.date.getTime(), e.reInit();\n }\n return t && i.max && i.max.date.getTime() == i.max.date.getTime() && (t = i.max.date.getTime() >= e.date.getTime()), \n t;\n }(k, m = E.call(this, k, m, n), n, r)), void 0 !== t && m && a.pos !== t ? {\n buffer: S(n.inputFormat, k, n).split(\"\"),\n refreshFromBuffer: {\n start: t,\n end: a.pos\n },\n pos: a.caret || a.pos\n } : m;\n },\n onKeyDown: function(e, t, i, a) {\n e.ctrlKey && e.keyCode === n.default.RIGHT && (this.inputmask._valueSet(M(new Date, a)), \n p(this).trigger(\"setvalue\"));\n },\n onUnMask: function(e, t, i) {\n return t ? S(i.outputFormat, w(e, i.inputFormat, i), i, !0) : t;\n },\n casing: function(e, t, i, a) {\n return 0 == t.nativeDef.indexOf(\"[ap]\") ? e.toLowerCase() : 0 == t.nativeDef.indexOf(\"[AP]\") ? e.toUpperCase() : e;\n },\n onBeforeMask: function(e, t) {\n return \"[object Date]\" === Object.prototype.toString.call(e) && (e = M(e, t)), e;\n },\n insertMode: !1,\n shiftPositions: !1,\n keepStatic: !1,\n inputmode: \"numeric\",\n prefillYear: !0\n }\n });\n },\n 3851: function(e, t, i) {\n var a, n = (a = i(2394)) && a.__esModule ? a : {\n default: a\n }, r = i(8711), o = i(4713);\n n.default.extendDefinitions({\n A: {\n validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n casing: \"upper\"\n },\n \"&\": {\n validator: \"[0-9A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n casing: \"upper\"\n },\n \"#\": {\n validator: \"[0-9A-Fa-f]\",\n casing: \"upper\"\n }\n });\n var l = new RegExp(\"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\");\n function s(e, t, i, a, n) {\n return i - 1 > -1 && \".\" !== t.buffer[i - 1] ? (e = t.buffer[i - 1] + e, e = i - 2 > -1 && \".\" !== t.buffer[i - 2] ? t.buffer[i - 2] + e : \"0\" + e) : e = \"00\" + e, \n l.test(e);\n }\n n.default.extendAliases({\n cssunit: {\n regex: \"[+-]?[0-9]+\\\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)\"\n },\n url: {\n regex: \"(https?|ftp)://.*\",\n autoUnmask: !1,\n keepStatic: !1,\n tabThrough: !0\n },\n ip: {\n mask: \"i{1,3}.j{1,3}.k{1,3}.l{1,3}\",\n definitions: {\n i: {\n validator: s\n },\n j: {\n validator: s\n },\n k: {\n validator: s\n },\n l: {\n validator: s\n }\n },\n onUnMask: function(e, t, i) {\n return e;\n },\n inputmode: \"decimal\",\n substitutes: {\n \",\": \".\"\n }\n },\n email: {\n mask: function(e) {\n var t = \"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]\", i = t;\n if (e.separator) for (var a = 0; a < e.quantifier; a++) i += \"[\".concat(e.separator).concat(t, \"]\");\n return i;\n },\n greedy: !1,\n casing: \"lower\",\n separator: null,\n quantifier: 5,\n skipOptionalPartCharacter: \"\",\n onBeforePaste: function(e, t) {\n return (e = e.toLowerCase()).replace(\"mailto:\", \"\");\n },\n definitions: {\n \"*\": {\n validator: \"[0-9\\uff11-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5!#$%&'*+/=?^_`{|}~-]\"\n },\n \"-\": {\n validator: \"[0-9A-Za-z-]\"\n }\n },\n onUnMask: function(e, t, i) {\n return e;\n },\n inputmode: \"email\"\n },\n mac: {\n mask: \"##:##:##:##:##:##\"\n },\n vin: {\n mask: \"V{13}9{4}\",\n definitions: {\n V: {\n validator: \"[A-HJ-NPR-Za-hj-npr-z\\\\d]\",\n casing: \"upper\"\n }\n },\n clearIncomplete: !0,\n autoUnmask: !0\n },\n ssn: {\n mask: \"999-99-9999\",\n postValidation: function(e, t, i, a, n, l, s) {\n var u = o.getMaskTemplate.call(this, !0, r.getLastValidPosition.call(this), !0, !0);\n return /^(?!219-09-9999|078-05-1120)(?!666|000|9.{2}).{3}-(?!00).{2}-(?!0{4}).{4}$/.test(u.join(\"\"));\n }\n }\n });\n },\n 207: function(e, t, i) {\n var a = l(i(2394)), n = l(i(5581)), r = l(i(7184)), o = i(8711);\n function l(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n var s = a.default.dependencyLib;\n function u(e, t) {\n for (var i = \"\", n = 0; n < e.length; n++) a.default.prototype.definitions[e.charAt(n)] || t.definitions[e.charAt(n)] || t.optionalmarker[0] === e.charAt(n) || t.optionalmarker[1] === e.charAt(n) || t.quantifiermarker[0] === e.charAt(n) || t.quantifiermarker[1] === e.charAt(n) || t.groupmarker[0] === e.charAt(n) || t.groupmarker[1] === e.charAt(n) || t.alternatormarker === e.charAt(n) ? i += \"\\\\\" + e.charAt(n) : i += e.charAt(n);\n return i;\n }\n function c(e, t, i, a) {\n if (e.length > 0 && t > 0 && (!i.digitsOptional || a)) {\n var n = e.indexOf(i.radixPoint), r = !1;\n i.negationSymbol.back === e[e.length - 1] && (r = !0, e.length--), -1 === n && (e.push(i.radixPoint), \n n = e.length - 1);\n for (var o = 1; o <= t; o++) isFinite(e[n + o]) || (e[n + o] = \"0\");\n }\n return r && e.push(i.negationSymbol.back), e;\n }\n function f(e, t) {\n var i = 0;\n if (\"+\" === e) {\n for (i in t.validPositions) ;\n i = o.seekNext.call(this, parseInt(i));\n }\n for (var a in t.tests) if ((a = parseInt(a)) >= i) for (var n = 0, r = t.tests[a].length; n < r; n++) if ((void 0 === t.validPositions[a] || \"-\" === e) && t.tests[a][n].match.def === e) return a + (void 0 !== t.validPositions[a] && \"-\" !== e ? 1 : 0);\n return i;\n }\n function d(e, t) {\n var i = -1;\n for (var a in t.validPositions) {\n var n = t.validPositions[a];\n if (n && n.match.def === e) {\n i = parseInt(a);\n break;\n }\n }\n return i;\n }\n function p(e, t, i, a, n) {\n var r = t.buffer ? t.buffer.indexOf(n.radixPoint) : -1, o = (-1 !== r || a && n.jitMasking) && new RegExp(n.definitions[9].validator).test(e);\n return n._radixDance && -1 !== r && o && null == t.validPositions[r] ? {\n insert: {\n pos: r === i ? r + 1 : r,\n c: n.radixPoint\n },\n pos: i\n } : o;\n }\n a.default.extendAliases({\n numeric: {\n mask: function(e) {\n e.repeat = 0, e.groupSeparator === e.radixPoint && e.digits && \"0\" !== e.digits && (\".\" === e.radixPoint ? e.groupSeparator = \",\" : \",\" === e.radixPoint ? e.groupSeparator = \".\" : e.groupSeparator = \"\"), \n \" \" === e.groupSeparator && (e.skipOptionalPartCharacter = void 0), e.placeholder.length > 1 && (e.placeholder = e.placeholder.charAt(0)), \n \"radixFocus\" === e.positionCaretOnClick && \"\" === e.placeholder && (e.positionCaretOnClick = \"lvp\");\n var t = \"0\", i = e.radixPoint;\n !0 === e.numericInput && void 0 === e.__financeInput ? (t = \"1\", e.positionCaretOnClick = \"radixFocus\" === e.positionCaretOnClick ? \"lvp\" : e.positionCaretOnClick, \n e.digitsOptional = !1, isNaN(e.digits) && (e.digits = 2), e._radixDance = !1, i = \",\" === e.radixPoint ? \"?\" : \"!\", \n \"\" !== e.radixPoint && void 0 === e.definitions[i] && (e.definitions[i] = {}, e.definitions[i].validator = \"[\" + e.radixPoint + \"]\", \n e.definitions[i].placeholder = e.radixPoint, e.definitions[i].static = !0, e.definitions[i].generated = !0)) : (e.__financeInput = !1, \n e.numericInput = !0);\n var a, n = \"[+]\";\n if (n += u(e.prefix, e), \"\" !== e.groupSeparator ? (void 0 === e.definitions[e.groupSeparator] && (e.definitions[e.groupSeparator] = {}, \n e.definitions[e.groupSeparator].validator = \"[\" + e.groupSeparator + \"]\", e.definitions[e.groupSeparator].placeholder = e.groupSeparator, \n e.definitions[e.groupSeparator].static = !0, e.definitions[e.groupSeparator].generated = !0), \n n += e._mask(e)) : n += \"9{+}\", void 0 !== e.digits && 0 !== e.digits) {\n var o = e.digits.toString().split(\",\");\n isFinite(o[0]) && o[1] && isFinite(o[1]) ? n += i + t + \"{\" + e.digits + \"}\" : (isNaN(e.digits) || parseInt(e.digits) > 0) && (e.digitsOptional || e.jitMasking ? (a = n + i + t + \"{0,\" + e.digits + \"}\", \n e.keepStatic = !0) : n += i + t + \"{\" + e.digits + \"}\");\n } else e.inputmode = \"numeric\";\n return n += u(e.suffix, e), n += \"[-]\", a && (n = [ a + u(e.suffix, e) + \"[-]\", n ]), \n e.greedy = !1, function(e) {\n void 0 === e.parseMinMaxOptions && (null !== e.min && (e.min = e.min.toString().replace(new RegExp((0, \n r.default)(e.groupSeparator), \"g\"), \"\"), \",\" === e.radixPoint && (e.min = e.min.replace(e.radixPoint, \".\")), \n e.min = isFinite(e.min) ? parseFloat(e.min) : NaN, isNaN(e.min) && (e.min = Number.MIN_VALUE)), \n null !== e.max && (e.max = e.max.toString().replace(new RegExp((0, r.default)(e.groupSeparator), \"g\"), \"\"), \n \",\" === e.radixPoint && (e.max = e.max.replace(e.radixPoint, \".\")), e.max = isFinite(e.max) ? parseFloat(e.max) : NaN, \n isNaN(e.max) && (e.max = Number.MAX_VALUE)), e.parseMinMaxOptions = \"done\");\n }(e), \"\" !== e.radixPoint && (e.substitutes[\".\" == e.radixPoint ? \",\" : \".\"] = e.radixPoint), \n n;\n },\n _mask: function(e) {\n return \"(\" + e.groupSeparator + \"999){+|1}\";\n },\n digits: \"*\",\n digitsOptional: !0,\n enforceDigitsOnBlur: !1,\n radixPoint: \".\",\n positionCaretOnClick: \"radixFocus\",\n _radixDance: !0,\n groupSeparator: \"\",\n allowMinus: !0,\n negationSymbol: {\n front: \"-\",\n back: \"\"\n },\n prefix: \"\",\n suffix: \"\",\n min: null,\n max: null,\n SetMaxOnOverflow: !1,\n step: 1,\n inputType: \"text\",\n unmaskAsNumber: !1,\n roundingFN: Math.round,\n inputmode: \"decimal\",\n shortcuts: {\n k: \"1000\",\n m: \"1000000\"\n },\n placeholder: \"0\",\n greedy: !1,\n rightAlign: !0,\n insertMode: !0,\n autoUnmask: !1,\n skipOptionalPartCharacter: \"\",\n usePrototypeDefinitions: !1,\n stripLeadingZeroes: !0,\n definitions: {\n 0: {\n validator: p\n },\n 1: {\n validator: p,\n definitionSymbol: \"9\"\n },\n 9: {\n validator: \"[0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]\",\n definitionSymbol: \"*\"\n },\n \"+\": {\n validator: function(e, t, i, a, n) {\n return n.allowMinus && (\"-\" === e || e === n.negationSymbol.front);\n }\n },\n \"-\": {\n validator: function(e, t, i, a, n) {\n return n.allowMinus && e === n.negationSymbol.back;\n }\n }\n },\n preValidation: function(e, t, i, a, n, r, o, l) {\n if (!1 !== n.__financeInput && i === n.radixPoint) return !1;\n var s = e.indexOf(n.radixPoint), u = t;\n if (t = function(e, t, i, a, n) {\n return n._radixDance && n.numericInput && t !== n.negationSymbol.back && e <= i && (i > 0 || t == n.radixPoint) && (void 0 === a.validPositions[e - 1] || a.validPositions[e - 1].input !== n.negationSymbol.back) && (e -= 1), \n e;\n }(t, i, s, r, n), \"-\" === i || i === n.negationSymbol.front) {\n if (!0 !== n.allowMinus) return !1;\n var c = !1, p = d(\"+\", r), h = d(\"-\", r);\n return -1 !== p && (c = [ p, h ]), !1 !== c ? {\n remove: c,\n caret: u - n.negationSymbol.back.length\n } : {\n insert: [ {\n pos: f.call(this, \"+\", r),\n c: n.negationSymbol.front,\n fromIsValid: !0\n }, {\n pos: f.call(this, \"-\", r),\n c: n.negationSymbol.back,\n fromIsValid: void 0\n } ],\n caret: u + n.negationSymbol.back.length\n };\n }\n if (i === n.groupSeparator) return {\n caret: u\n };\n if (l) return !0;\n if (-1 !== s && !0 === n._radixDance && !1 === a && i === n.radixPoint && void 0 !== n.digits && (isNaN(n.digits) || parseInt(n.digits) > 0) && s !== t) return {\n caret: n._radixDance && t === s - 1 ? s + 1 : s\n };\n if (!1 === n.__financeInput) if (a) {\n if (n.digitsOptional) return {\n rewritePosition: o.end\n };\n if (!n.digitsOptional) {\n if (o.begin > s && o.end <= s) return i === n.radixPoint ? {\n insert: {\n pos: s + 1,\n c: \"0\",\n fromIsValid: !0\n },\n rewritePosition: s\n } : {\n rewritePosition: s + 1\n };\n if (o.begin < s) return {\n rewritePosition: o.begin - 1\n };\n }\n } else if (!n.showMaskOnHover && !n.showMaskOnFocus && !n.digitsOptional && n.digits > 0 && \"\" === this.__valueGet.call(this.el)) return {\n rewritePosition: s\n };\n return {\n rewritePosition: t\n };\n },\n postValidation: function(e, t, i, a, n, r, o) {\n if (!1 === a) return a;\n if (o) return !0;\n if (null !== n.min || null !== n.max) {\n var l = n.onUnMask(e.slice().reverse().join(\"\"), void 0, s.extend({}, n, {\n unmaskAsNumber: !0\n }));\n if (null !== n.min && l < n.min && (l.toString().length > n.min.toString().length || l < 0)) return !1;\n if (null !== n.max && l > n.max) return !!n.SetMaxOnOverflow && {\n refreshFromBuffer: !0,\n buffer: c(n.max.toString().replace(\".\", n.radixPoint).split(\"\"), n.digits, n).reverse()\n };\n }\n return a;\n },\n onUnMask: function(e, t, i) {\n if (\"\" === t && !0 === i.nullable) return t;\n var a = e.replace(i.prefix, \"\");\n return a = (a = a.replace(i.suffix, \"\")).replace(new RegExp((0, r.default)(i.groupSeparator), \"g\"), \"\"), \n \"\" !== i.placeholder.charAt(0) && (a = a.replace(new RegExp(i.placeholder.charAt(0), \"g\"), \"0\")), \n i.unmaskAsNumber ? (\"\" !== i.radixPoint && -1 !== a.indexOf(i.radixPoint) && (a = a.replace(r.default.call(this, i.radixPoint), \".\")), \n a = (a = a.replace(new RegExp(\"^\" + (0, r.default)(i.negationSymbol.front)), \"-\")).replace(new RegExp((0, \n r.default)(i.negationSymbol.back) + \"$\"), \"\"), Number(a)) : a;\n },\n isComplete: function(e, t) {\n var i = (t.numericInput ? e.slice().reverse() : e).join(\"\");\n return i = (i = (i = (i = (i = i.replace(new RegExp(\"^\" + (0, r.default)(t.negationSymbol.front)), \"-\")).replace(new RegExp((0, \n r.default)(t.negationSymbol.back) + \"$\"), \"\")).replace(t.prefix, \"\")).replace(t.suffix, \"\")).replace(new RegExp((0, \n r.default)(t.groupSeparator) + \"([0-9]{3})\", \"g\"), \"$1\"), \",\" === t.radixPoint && (i = i.replace((0, \n r.default)(t.radixPoint), \".\")), isFinite(i);\n },\n onBeforeMask: function(e, t) {\n var i = t.radixPoint || \",\";\n isFinite(t.digits) && (t.digits = parseInt(t.digits)), \"number\" != typeof e && \"number\" !== t.inputType || \"\" === i || (e = e.toString().replace(\".\", i));\n var a = \"-\" === e.charAt(0) || e.charAt(0) === t.negationSymbol.front, n = e.split(i), o = n[0].replace(/[^\\-0-9]/g, \"\"), l = n.length > 1 ? n[1].replace(/[^0-9]/g, \"\") : \"\", s = n.length > 1;\n e = o + (\"\" !== l ? i + l : l);\n var u = 0;\n if (\"\" !== i && (u = t.digitsOptional ? t.digits < l.length ? t.digits : l.length : t.digits, \n \"\" !== l || !t.digitsOptional)) {\n var f = Math.pow(10, u || 1);\n e = e.replace((0, r.default)(i), \".\"), isNaN(parseFloat(e)) || (e = (t.roundingFN(parseFloat(e) * f) / f).toFixed(u)), \n e = e.toString().replace(\".\", i);\n }\n if (0 === t.digits && -1 !== e.indexOf(i) && (e = e.substring(0, e.indexOf(i))), \n null !== t.min || null !== t.max) {\n var d = e.toString().replace(i, \".\");\n null !== t.min && d < t.min ? e = t.min.toString().replace(\".\", i) : null !== t.max && d > t.max && (e = t.max.toString().replace(\".\", i));\n }\n return a && \"-\" !== e.charAt(0) && (e = \"-\" + e), c(e.toString().split(\"\"), u, t, s).join(\"\");\n },\n onBeforeWrite: function(e, t, i, a) {\n function n(e, t) {\n if (!1 !== a.__financeInput || t) {\n var i = e.indexOf(a.radixPoint);\n -1 !== i && e.splice(i, 1);\n }\n if (\"\" !== a.groupSeparator) for (;-1 !== (i = e.indexOf(a.groupSeparator)); ) e.splice(i, 1);\n return e;\n }\n var o, l;\n if (a.stripLeadingZeroes && (l = function(e, t) {\n var i = new RegExp(\"(^\" + (\"\" !== t.negationSymbol.front ? (0, r.default)(t.negationSymbol.front) + \"?\" : \"\") + (0, \n r.default)(t.prefix) + \")(.*)(\" + (0, r.default)(t.suffix) + (\"\" != t.negationSymbol.back ? (0, \n r.default)(t.negationSymbol.back) + \"?\" : \"\") + \"$)\").exec(e.slice().reverse().join(\"\")), a = i ? i[2] : \"\", n = !1;\n return a && (a = a.split(t.radixPoint.charAt(0))[0], n = new RegExp(\"^[0\" + t.groupSeparator + \"]*\").exec(a)), \n !(!n || !(n[0].length > 1 || n[0].length > 0 && n[0].length < a.length)) && n;\n }(t, a))) for (var u = t.join(\"\").lastIndexOf(l[0].split(\"\").reverse().join(\"\")) - (l[0] == l.input ? 0 : 1), f = l[0] == l.input ? 1 : 0, d = l[0].length - f; d > 0; d--) delete this.maskset.validPositions[u + d], \n delete t[u + d];\n if (e) switch (e.type) {\n case \"blur\":\n case \"checkval\":\n if (null !== a.min) {\n var p = a.onUnMask(t.slice().reverse().join(\"\"), void 0, s.extend({}, a, {\n unmaskAsNumber: !0\n }));\n if (null !== a.min && p < a.min) return {\n refreshFromBuffer: !0,\n buffer: c(a.min.toString().replace(\".\", a.radixPoint).split(\"\"), a.digits, a).reverse()\n };\n }\n if (t[t.length - 1] === a.negationSymbol.front) {\n var h = new RegExp(\"(^\" + (\"\" != a.negationSymbol.front ? (0, r.default)(a.negationSymbol.front) + \"?\" : \"\") + (0, \n r.default)(a.prefix) + \")(.*)(\" + (0, r.default)(a.suffix) + (\"\" != a.negationSymbol.back ? (0, \n r.default)(a.negationSymbol.back) + \"?\" : \"\") + \"$)\").exec(n(t.slice(), !0).reverse().join(\"\"));\n 0 == (h ? h[2] : \"\") && (o = {\n refreshFromBuffer: !0,\n buffer: [ 0 ]\n });\n } else if (\"\" !== a.radixPoint) {\n t.indexOf(a.radixPoint) === a.suffix.length && (o && o.buffer ? o.buffer.splice(0, 1 + a.suffix.length) : (t.splice(0, 1 + a.suffix.length), \n o = {\n refreshFromBuffer: !0,\n buffer: n(t)\n }));\n }\n if (a.enforceDigitsOnBlur) {\n var v = (o = o || {}) && o.buffer || t.slice().reverse();\n o.refreshFromBuffer = !0, o.buffer = c(v, a.digits, a, !0).reverse();\n }\n }\n return o;\n },\n onKeyDown: function(e, t, i, a) {\n var r, o, l = s(this), u = String.fromCharCode(e.keyCode).toLowerCase();\n if ((o = a.shortcuts && a.shortcuts[u]) && o.length > 1) return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) * parseInt(o)), \n l.trigger(\"setvalue\"), !1;\n if (e.ctrlKey) switch (e.keyCode) {\n case n.default.UP:\n return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) + parseInt(a.step)), \n l.trigger(\"setvalue\"), !1;\n\n case n.default.DOWN:\n return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) - parseInt(a.step)), \n l.trigger(\"setvalue\"), !1;\n }\n if (!e.shiftKey && (e.keyCode === n.default.DELETE || e.keyCode === n.default.BACKSPACE || e.keyCode === n.default.BACKSPACE_SAFARI) && i.begin !== t.length) {\n if (t[e.keyCode === n.default.DELETE ? i.begin - 1 : i.end] === a.negationSymbol.front) return r = t.slice().reverse(), \n \"\" !== a.negationSymbol.front && r.shift(), \"\" !== a.negationSymbol.back && r.pop(), \n l.trigger(\"setvalue\", [ r.join(\"\"), i.begin ]), !1;\n if (!0 === a._radixDance) {\n var f = t.indexOf(a.radixPoint);\n if (a.digitsOptional) {\n if (0 === f) return (r = t.slice().reverse()).pop(), l.trigger(\"setvalue\", [ r.join(\"\"), i.begin >= r.length ? r.length : i.begin ]), \n !1;\n } else if (-1 !== f && (i.begin < f || i.end < f || e.keyCode === n.default.DELETE && i.begin === f)) return i.begin !== i.end || e.keyCode !== n.default.BACKSPACE && e.keyCode !== n.default.BACKSPACE_SAFARI || i.begin++, \n (r = t.slice().reverse()).splice(r.length - i.begin, i.begin - i.end + 1), r = c(r, a.digits, a).join(\"\"), \n l.trigger(\"setvalue\", [ r, i.begin >= r.length ? f + 1 : i.begin ]), !1;\n }\n }\n }\n },\n currency: {\n prefix: \"\",\n groupSeparator: \",\",\n alias: \"numeric\",\n digits: 2,\n digitsOptional: !1\n },\n decimal: {\n alias: \"numeric\"\n },\n integer: {\n alias: \"numeric\",\n inputmode: \"numeric\",\n digits: 0\n },\n percentage: {\n alias: \"numeric\",\n min: 0,\n max: 100,\n suffix: \" %\",\n digits: 0,\n allowMinus: !1\n },\n indianns: {\n alias: \"numeric\",\n _mask: function(e) {\n return \"(\" + e.groupSeparator + \"99){*|1}(\" + e.groupSeparator + \"999){1|1}\";\n },\n groupSeparator: \",\",\n radixPoint: \".\",\n placeholder: \"0\",\n digits: 2,\n digitsOptional: !1\n }\n });\n },\n 9380: function(e, t, i) {\n var a;\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0;\n var n = ((a = i(8741)) && a.__esModule ? a : {\n default: a\n }).default ? window : {};\n t.default = n;\n },\n 7760: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.HandleNativePlaceholder = function(e, t) {\n var i = e ? e.inputmask : this;\n if (s.ie) {\n if (e.inputmask._valueGet() !== t && (e.placeholder !== t || \"\" === e.placeholder)) {\n var a = o.getBuffer.call(i).slice(), n = e.inputmask._valueGet();\n if (n !== t) {\n var r = o.getLastValidPosition.call(i);\n -1 === r && n === o.getBufferTemplate.call(i).join(\"\") ? a = [] : -1 !== r && f.call(i, a), \n p(e, a);\n }\n }\n } else e.placeholder !== t && (e.placeholder = t, \"\" === e.placeholder && e.removeAttribute(\"placeholder\"));\n }, t.applyInputValue = c, t.checkVal = d, t.clearOptionalTail = f, t.unmaskedvalue = function(e) {\n var t = e ? e.inputmask : this, i = t.opts, a = t.maskset;\n if (e) {\n if (void 0 === e.inputmask) return e.value;\n e.inputmask && e.inputmask.refreshValue && c(e, e.inputmask._valueGet(!0));\n }\n var n = [], r = a.validPositions;\n for (var l in r) r[l] && r[l].match && (1 != r[l].match.static || Array.isArray(a.metadata) && !0 !== r[l].generatedInput) && n.push(r[l].input);\n var s = 0 === n.length ? \"\" : (t.isRTL ? n.reverse() : n).join(\"\");\n if (\"function\" == typeof i.onUnMask) {\n var u = (t.isRTL ? o.getBuffer.call(t).slice().reverse() : o.getBuffer.call(t)).join(\"\");\n s = i.onUnMask.call(t, u, s, i);\n }\n return s;\n }, t.writeBuffer = p;\n var a, n = (a = i(5581)) && a.__esModule ? a : {\n default: a\n }, r = i(4713), o = i(8711), l = i(7215), s = i(9845), u = i(6030);\n function c(e, t) {\n var i = e ? e.inputmask : this, a = i.opts;\n e.inputmask.refreshValue = !1, \"function\" == typeof a.onBeforeMask && (t = a.onBeforeMask.call(i, t, a) || t), \n d(e, !0, !1, t = t.toString().split(\"\")), i.undoValue = i._valueGet(!0), (a.clearMaskOnLostFocus || a.clearIncomplete) && e.inputmask._valueGet() === o.getBufferTemplate.call(i).join(\"\") && -1 === o.getLastValidPosition.call(i) && e.inputmask._valueSet(\"\");\n }\n function f(e) {\n e.length = 0;\n for (var t, i = r.getMaskTemplate.call(this, !0, 0, !0, void 0, !0); void 0 !== (t = i.shift()); ) e.push(t);\n return e;\n }\n function d(e, t, i, a, n) {\n var s = e ? e.inputmask : this, c = s.maskset, f = s.opts, d = s.dependencyLib, h = a.slice(), v = \"\", m = -1, g = void 0, k = f.skipOptionalPartCharacter;\n f.skipOptionalPartCharacter = \"\", o.resetMaskSet.call(s), c.tests = {}, m = f.radixPoint ? o.determineNewCaretPosition.call(s, {\n begin: 0,\n end: 0\n }, !1, !1 === f.__financeInput ? \"radixFocus\" : void 0).begin : 0, c.p = m, s.caretPos = {\n begin: m\n };\n var y = [], b = s.caretPos;\n if (h.forEach((function(e, t) {\n if (void 0 !== e) {\n var a = new d.Event(\"_checkval\");\n a.keyCode = e.toString().charCodeAt(0), v += e;\n var n = o.getLastValidPosition.call(s, void 0, !0);\n !function(e, t) {\n for (var i = r.getMaskTemplate.call(s, !0, 0).slice(e, o.seekNext.call(s, e, !1, !1)).join(\"\").replace(/'/g, \"\"), a = i.indexOf(t); a > 0 && \" \" === i[a - 1]; ) a--;\n var n = 0 === a && !o.isMask.call(s, e) && (r.getTest.call(s, e).match.nativeDef === t.charAt(0) || !0 === r.getTest.call(s, e).match.static && r.getTest.call(s, e).match.nativeDef === \"'\" + t.charAt(0) || \" \" === r.getTest.call(s, e).match.nativeDef && (r.getTest.call(s, e + 1).match.nativeDef === t.charAt(0) || !0 === r.getTest.call(s, e + 1).match.static && r.getTest.call(s, e + 1).match.nativeDef === \"'\" + t.charAt(0)));\n if (!n && a > 0 && !o.isMask.call(s, e, !1, !0)) {\n var l = o.seekNext.call(s, e);\n s.caretPos.begin < l && (s.caretPos = {\n begin: l\n });\n }\n return n;\n }(m, v) ? (g = u.EventHandlers.keypressEvent.call(s, a, !0, !1, i, s.caretPos.begin)) && (m = s.caretPos.begin + 1, \n v = \"\") : g = u.EventHandlers.keypressEvent.call(s, a, !0, !1, i, n + 1), g ? (void 0 !== g.pos && c.validPositions[g.pos] && !0 === c.validPositions[g.pos].match.static && void 0 === c.validPositions[g.pos].alternation && (y.push(g.pos), \n s.isRTL || (g.forwardPosition = g.pos + 1)), p.call(s, void 0, o.getBuffer.call(s), g.forwardPosition, a, !1), \n s.caretPos = {\n begin: g.forwardPosition,\n end: g.forwardPosition\n }, b = s.caretPos) : void 0 === c.validPositions[t] && h[t] === r.getPlaceholder.call(s, t) && o.isMask.call(s, t, !0) ? s.caretPos.begin++ : s.caretPos = b;\n }\n })), y.length > 0) {\n var x, P, E = o.seekNext.call(s, -1, void 0, !1);\n if (!l.isComplete.call(s, o.getBuffer.call(s)) && y.length <= E || l.isComplete.call(s, o.getBuffer.call(s)) && y.length > 0 && y.length !== E && 0 === y[0]) for (var S = E; void 0 !== (x = y.shift()); ) {\n var _ = new d.Event(\"_checkval\");\n if ((P = c.validPositions[x]).generatedInput = !0, _.keyCode = P.input.charCodeAt(0), \n (g = u.EventHandlers.keypressEvent.call(s, _, !0, !1, i, S)) && void 0 !== g.pos && g.pos !== x && c.validPositions[g.pos] && !0 === c.validPositions[g.pos].match.static) y.push(g.pos); else if (!g) break;\n S++;\n }\n }\n t && p.call(s, e, o.getBuffer.call(s), g ? g.forwardPosition : s.caretPos.begin, n || new d.Event(\"checkval\"), n && (\"input\" === n.type && s.undoValue !== o.getBuffer.call(s).join(\"\") || \"paste\" === n.type)), \n f.skipOptionalPartCharacter = k;\n }\n function p(e, t, i, a, r) {\n var s = e ? e.inputmask : this, u = s.opts, c = s.dependencyLib;\n if (a && \"function\" == typeof u.onBeforeWrite) {\n var f = u.onBeforeWrite.call(s, a, t, i, u);\n if (f) {\n if (f.refreshFromBuffer) {\n var d = f.refreshFromBuffer;\n l.refreshFromBuffer.call(s, !0 === d ? d : d.start, d.end, f.buffer || t), t = o.getBuffer.call(s, !0);\n }\n void 0 !== i && (i = void 0 !== f.caret ? f.caret : i);\n }\n }\n if (void 0 !== e && (e.inputmask._valueSet(t.join(\"\")), void 0 === i || void 0 !== a && \"blur\" === a.type || o.caret.call(s, e, i, void 0, void 0, void 0 !== a && \"keydown\" === a.type && (a.keyCode === n.default.DELETE || a.keyCode === n.default.BACKSPACE)), \n !0 === r)) {\n var p = c(e), h = e.inputmask._valueGet();\n e.inputmask.skipInputEvent = !0, p.trigger(\"input\"), setTimeout((function() {\n h === o.getBufferTemplate.call(s).join(\"\") ? p.trigger(\"cleared\") : !0 === l.isComplete.call(s, t) && p.trigger(\"complete\");\n }), 0);\n }\n }\n },\n 2394: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0, i(7149), i(3194);\n var a = i(157), n = m(i(4963)), r = m(i(9380)), o = i(2391), l = i(4713), s = i(8711), u = i(7215), c = i(7760), f = i(9716), d = m(i(7392)), p = m(i(3976)), h = m(i(8741));\n function v(e) {\n return v = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e;\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n }, v(e);\n }\n function m(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n var g = r.default.document, k = \"_inputmask_opts\";\n function y(e, t, i) {\n if (h.default) {\n if (!(this instanceof y)) return new y(e, t, i);\n this.dependencyLib = n.default, this.el = void 0, this.events = {}, this.maskset = void 0, \n !0 !== i && (\"[object Object]\" === Object.prototype.toString.call(e) ? t = e : (t = t || {}, \n e && (t.alias = e)), this.opts = n.default.extend(!0, {}, this.defaults, t), this.noMasksCache = t && void 0 !== t.definitions, \n this.userOptions = t || {}, b(this.opts.alias, t, this.opts)), this.refreshValue = !1, \n this.undoValue = void 0, this.$el = void 0, this.skipKeyPressEvent = !1, this.skipInputEvent = !1, \n this.validationEvent = !1, this.ignorable = !1, this.maxLength, this.mouseEnter = !1, \n this.originalPlaceholder = void 0, this.isComposing = !1;\n }\n }\n function b(e, t, i) {\n var a = y.prototype.aliases[e];\n return a ? (a.alias && b(a.alias, void 0, i), n.default.extend(!0, i, a), n.default.extend(!0, i, t), \n !0) : (null === i.mask && (i.mask = e), !1);\n }\n y.prototype = {\n dataAttribute: \"data-inputmask\",\n defaults: p.default,\n definitions: d.default,\n aliases: {},\n masksCache: {},\n get isRTL() {\n return this.opts.isRTL || this.opts.numericInput;\n },\n mask: function(e) {\n var t = this;\n return \"string\" == typeof e && (e = g.getElementById(e) || g.querySelectorAll(e)), \n (e = e.nodeName ? [ e ] : Array.isArray(e) ? e : Array.from(e)).forEach((function(e, i) {\n var l = n.default.extend(!0, {}, t.opts);\n if (function(e, t, i, a) {\n function o(t, n) {\n var o = \"\" === a ? t : a + \"-\" + t;\n null !== (n = void 0 !== n ? n : e.getAttribute(o)) && (\"string\" == typeof n && (0 === t.indexOf(\"on\") ? n = r.default[n] : \"false\" === n ? n = !1 : \"true\" === n && (n = !0)), \n i[t] = n);\n }\n if (!0 === t.importDataAttributes) {\n var l, s, u, c, f = e.getAttribute(a);\n if (f && \"\" !== f && (f = f.replace(/'/g, '\"'), s = JSON.parse(\"{\" + f + \"}\")), \n s) for (c in u = void 0, s) if (\"alias\" === c.toLowerCase()) {\n u = s[c];\n break;\n }\n for (l in o(\"alias\", u), i.alias && b(i.alias, i, t), t) {\n if (s) for (c in u = void 0, s) if (c.toLowerCase() === l.toLowerCase()) {\n u = s[c];\n break;\n }\n o(l, u);\n }\n }\n n.default.extend(!0, t, i), (\"rtl\" === e.dir || t.rightAlign) && (e.style.textAlign = \"right\");\n (\"rtl\" === e.dir || t.numericInput) && (e.dir = \"ltr\", e.removeAttribute(\"dir\"), \n t.isRTL = !0);\n return Object.keys(i).length;\n }(e, l, n.default.extend(!0, {}, t.userOptions), t.dataAttribute)) {\n var s = (0, o.generateMaskSet)(l, t.noMasksCache);\n void 0 !== s && (void 0 !== e.inputmask && (e.inputmask.opts.autoUnmask = !0, e.inputmask.remove()), \n e.inputmask = new y(void 0, void 0, !0), e.inputmask.opts = l, e.inputmask.noMasksCache = t.noMasksCache, \n e.inputmask.userOptions = n.default.extend(!0, {}, t.userOptions), e.inputmask.el = e, \n e.inputmask.$el = (0, n.default)(e), e.inputmask.maskset = s, n.default.data(e, k, t.userOptions), \n a.mask.call(e.inputmask));\n }\n })), e && e[0] && e[0].inputmask || this;\n },\n option: function(e, t) {\n return \"string\" == typeof e ? this.opts[e] : \"object\" === v(e) ? (n.default.extend(this.userOptions, e), \n this.el && !0 !== t && this.mask(this.el), this) : void 0;\n },\n unmaskedvalue: function(e) {\n if (this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), \n void 0 === this.el || void 0 !== e) {\n var t = (\"function\" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split(\"\");\n c.checkVal.call(this, void 0, !1, !1, t), \"function\" == typeof this.opts.onBeforeWrite && this.opts.onBeforeWrite.call(this, void 0, s.getBuffer.call(this), 0, this.opts);\n }\n return c.unmaskedvalue.call(this, this.el);\n },\n remove: function() {\n if (this.el) {\n n.default.data(this.el, k, null);\n var e = this.opts.autoUnmask ? (0, c.unmaskedvalue)(this.el) : this._valueGet(this.opts.autoUnmask);\n e !== s.getBufferTemplate.call(this).join(\"\") ? this._valueSet(e, this.opts.autoUnmask) : this._valueSet(\"\"), \n f.EventRuler.off(this.el), Object.getOwnPropertyDescriptor && Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(this.el), \"value\") && this.__valueGet && Object.defineProperty(this.el, \"value\", {\n get: this.__valueGet,\n set: this.__valueSet,\n configurable: !0\n }) : g.__lookupGetter__ && this.el.__lookupGetter__(\"value\") && this.__valueGet && (this.el.__defineGetter__(\"value\", this.__valueGet), \n this.el.__defineSetter__(\"value\", this.__valueSet)), this.el.inputmask = void 0;\n }\n return this.el;\n },\n getemptymask: function() {\n return this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), \n s.getBufferTemplate.call(this).join(\"\");\n },\n hasMaskedValue: function() {\n return !this.opts.autoUnmask;\n },\n isComplete: function() {\n return this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), \n u.isComplete.call(this, s.getBuffer.call(this));\n },\n getmetadata: function() {\n if (this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), \n Array.isArray(this.maskset.metadata)) {\n var e = l.getMaskTemplate.call(this, !0, 0, !1).join(\"\");\n return this.maskset.metadata.forEach((function(t) {\n return t.mask !== e || (e = t, !1);\n })), e;\n }\n return this.maskset.metadata;\n },\n isValid: function(e) {\n if (this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), \n e) {\n var t = (\"function\" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split(\"\");\n c.checkVal.call(this, void 0, !0, !1, t);\n } else e = this.isRTL ? s.getBuffer.call(this).slice().reverse().join(\"\") : s.getBuffer.call(this).join(\"\");\n for (var i = s.getBuffer.call(this), a = s.determineLastRequiredPosition.call(this), n = i.length - 1; n > a && !s.isMask.call(this, n); n--) ;\n return i.splice(a, n + 1 - a), u.isComplete.call(this, i) && e === (this.isRTL ? s.getBuffer.call(this).slice().reverse().join(\"\") : s.getBuffer.call(this).join(\"\"));\n },\n format: function(e, t) {\n this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache);\n var i = (\"function\" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split(\"\");\n c.checkVal.call(this, void 0, !0, !1, i);\n var a = this.isRTL ? s.getBuffer.call(this).slice().reverse().join(\"\") : s.getBuffer.call(this).join(\"\");\n return t ? {\n value: a,\n metadata: this.getmetadata()\n } : a;\n },\n setValue: function(e) {\n this.el && (0, n.default)(this.el).trigger(\"setvalue\", [ e ]);\n },\n analyseMask: o.analyseMask\n }, y.extendDefaults = function(e) {\n n.default.extend(!0, y.prototype.defaults, e);\n }, y.extendDefinitions = function(e) {\n n.default.extend(!0, y.prototype.definitions, e);\n }, y.extendAliases = function(e) {\n n.default.extend(!0, y.prototype.aliases, e);\n }, y.format = function(e, t, i) {\n return y(t).format(e, i);\n }, y.unmask = function(e, t) {\n return y(t).unmaskedvalue(e);\n }, y.isValid = function(e, t) {\n return y(t).isValid(e);\n }, y.remove = function(e) {\n \"string\" == typeof e && (e = g.getElementById(e) || g.querySelectorAll(e)), (e = e.nodeName ? [ e ] : e).forEach((function(e) {\n e.inputmask && e.inputmask.remove();\n }));\n }, y.setValue = function(e, t) {\n \"string\" == typeof e && (e = g.getElementById(e) || g.querySelectorAll(e)), (e = e.nodeName ? [ e ] : e).forEach((function(e) {\n e.inputmask ? e.inputmask.setValue(t) : (0, n.default)(e).trigger(\"setvalue\", [ t ]);\n }));\n }, y.dependencyLib = n.default, r.default.Inputmask = y;\n var x = y;\n t.default = x;\n },\n 5296: function(e, t, i) {\n function a(e) {\n return a = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e;\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n }, a(e);\n }\n var n = h(i(9380)), r = h(i(2394)), o = h(i(8741));\n function l(e, t) {\n for (var i = 0; i < t.length; i++) {\n var a = t[i];\n a.enumerable = a.enumerable || !1, a.configurable = !0, \"value\" in a && (a.writable = !0), \n Object.defineProperty(e, a.key, a);\n }\n }\n function s(e, t) {\n if (t && (\"object\" === a(t) || \"function\" == typeof t)) return t;\n if (void 0 !== t) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return function(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n }(e);\n }\n function u(e) {\n var t = \"function\" == typeof Map ? new Map : void 0;\n return u = function(e) {\n if (null === e || (i = e, -1 === Function.toString.call(i).indexOf(\"[native code]\"))) return e;\n var i;\n if (\"function\" != typeof e) throw new TypeError(\"Super expression must either be null or a function\");\n if (void 0 !== t) {\n if (t.has(e)) return t.get(e);\n t.set(e, a);\n }\n function a() {\n return c(e, arguments, p(this).constructor);\n }\n return a.prototype = Object.create(e.prototype, {\n constructor: {\n value: a,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), d(a, e);\n }, u(e);\n }\n function c(e, t, i) {\n return c = f() ? Reflect.construct : function(e, t, i) {\n var a = [ null ];\n a.push.apply(a, t);\n var n = new (Function.bind.apply(e, a));\n return i && d(n, i.prototype), n;\n }, c.apply(null, arguments);\n }\n function f() {\n if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n if (Reflect.construct.sham) return !1;\n if (\"function\" == typeof Proxy) return !0;\n try {\n return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {}))), \n !0;\n } catch (e) {\n return !1;\n }\n }\n function d(e, t) {\n return d = Object.setPrototypeOf || function(e, t) {\n return e.__proto__ = t, e;\n }, d(e, t);\n }\n function p(e) {\n return p = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {\n return e.__proto__ || Object.getPrototypeOf(e);\n }, p(e);\n }\n function h(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n var v = n.default.document;\n if (o.default && v && v.head && v.head.attachShadow && n.default.customElements && void 0 === n.default.customElements.get(\"input-mask\")) {\n var m = function(e) {\n !function(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n Object.defineProperty(e, \"prototype\", {\n value: Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }),\n writable: !1\n }), t && d(e, t);\n }(c, e);\n var t, i, a, n, o, u = (t = c, i = f(), function() {\n var e, a = p(t);\n if (i) {\n var n = p(this).constructor;\n e = Reflect.construct(a, arguments, n);\n } else e = a.apply(this, arguments);\n return s(this, e);\n });\n function c() {\n var e;\n !function(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, c);\n var t = (e = u.call(this)).getAttributeNames(), i = e.attachShadow({\n mode: \"closed\"\n }), a = v.createElement(\"input\");\n for (var n in a.type = \"text\", i.appendChild(a), t) Object.prototype.hasOwnProperty.call(t, n) && a.setAttribute(t[n], e.getAttribute(t[n]));\n var o = new r.default;\n return o.dataAttribute = \"\", o.mask(a), a.inputmask.shadowRoot = i, e;\n }\n return a = c, n && l(a.prototype, n), o && l(a, o), Object.defineProperty(a, \"prototype\", {\n writable: !1\n }), a;\n }(u(HTMLElement));\n n.default.customElements.define(\"input-mask\", m);\n }\n },\n 2391: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.analyseMask = function(e, t, i) {\n var a, o, l, s, u, c, f = /(?:[?*+]|\\{[0-9+*]+(?:,[0-9+*]*)?(?:\\|[0-9+*]*)?\\})|[^.?*+^${[]()|\\\\]+|./g, d = /\\[\\^?]?(?:[^\\\\\\]]+|\\\\[\\S\\s]?)*]?|\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\\S\\s]?)|\\((?:\\?[:=!]?)?|(?:[?*+]|\\{[0-9]+(?:,[0-9]*)?\\})\\??|[^.?*+^${[()|\\\\]+|./g, p = !1, h = new n.default, v = [], m = [], g = !1;\n function k(e, a, n) {\n n = void 0 !== n ? n : e.matches.length;\n var o = e.matches[n - 1];\n if (t) 0 === a.indexOf(\"[\") || p && /\\\\d|\\\\s|\\\\w/i.test(a) || \".\" === a ? e.matches.splice(n++, 0, {\n fn: new RegExp(a, i.casing ? \"i\" : \"\"),\n static: !1,\n optionality: !1,\n newBlockMarker: void 0 === o ? \"master\" : o.def !== a,\n casing: null,\n def: a,\n placeholder: void 0,\n nativeDef: a\n }) : (p && (a = a[a.length - 1]), a.split(\"\").forEach((function(t, a) {\n o = e.matches[n - 1], e.matches.splice(n++, 0, {\n fn: /[a-z]/i.test(i.staticDefinitionSymbol || t) ? new RegExp(\"[\" + (i.staticDefinitionSymbol || t) + \"]\", i.casing ? \"i\" : \"\") : null,\n static: !0,\n optionality: !1,\n newBlockMarker: void 0 === o ? \"master\" : o.def !== t && !0 !== o.static,\n casing: null,\n def: i.staticDefinitionSymbol || t,\n placeholder: void 0 !== i.staticDefinitionSymbol ? t : void 0,\n nativeDef: (p ? \"'\" : \"\") + t\n });\n }))), p = !1; else {\n var l = i.definitions && i.definitions[a] || i.usePrototypeDefinitions && r.default.prototype.definitions[a];\n l && !p ? e.matches.splice(n++, 0, {\n fn: l.validator ? \"string\" == typeof l.validator ? new RegExp(l.validator, i.casing ? \"i\" : \"\") : new function() {\n this.test = l.validator;\n } : new RegExp(\".\"),\n static: l.static || !1,\n optionality: l.optional || !1,\n newBlockMarker: void 0 === o || l.optional ? \"master\" : o.def !== (l.definitionSymbol || a),\n casing: l.casing,\n def: l.definitionSymbol || a,\n placeholder: l.placeholder,\n nativeDef: a,\n generated: l.generated\n }) : (e.matches.splice(n++, 0, {\n fn: /[a-z]/i.test(i.staticDefinitionSymbol || a) ? new RegExp(\"[\" + (i.staticDefinitionSymbol || a) + \"]\", i.casing ? \"i\" : \"\") : null,\n static: !0,\n optionality: !1,\n newBlockMarker: void 0 === o ? \"master\" : o.def !== a && !0 !== o.static,\n casing: null,\n def: i.staticDefinitionSymbol || a,\n placeholder: void 0 !== i.staticDefinitionSymbol ? a : void 0,\n nativeDef: (p ? \"'\" : \"\") + a\n }), p = !1);\n }\n }\n function y() {\n if (v.length > 0) {\n if (k(s = v[v.length - 1], o), s.isAlternator) {\n u = v.pop();\n for (var e = 0; e < u.matches.length; e++) u.matches[e].isGroup && (u.matches[e].isGroup = !1);\n v.length > 0 ? (s = v[v.length - 1]).matches.push(u) : h.matches.push(u);\n }\n } else k(h, o);\n }\n function b(e) {\n var t = new n.default(!0);\n return t.openGroup = !1, t.matches = e, t;\n }\n function x() {\n if ((l = v.pop()).openGroup = !1, void 0 !== l) if (v.length > 0) {\n if ((s = v[v.length - 1]).matches.push(l), s.isAlternator) {\n for (var e = (u = v.pop()).matches[0].matches ? u.matches[0].matches.length : 1, t = 0; t < u.matches.length; t++) u.matches[t].isGroup = !1, \n u.matches[t].alternatorGroup = !1, null === i.keepStatic && e < (u.matches[t].matches ? u.matches[t].matches.length : 1) && (i.keepStatic = !0), \n e = u.matches[t].matches ? u.matches[t].matches.length : 1;\n v.length > 0 ? (s = v[v.length - 1]).matches.push(u) : h.matches.push(u);\n }\n } else h.matches.push(l); else y();\n }\n function P(e) {\n var t = e.pop();\n return t.isQuantifier && (t = b([ e.pop(), t ])), t;\n }\n t && (i.optionalmarker[0] = void 0, i.optionalmarker[1] = void 0);\n for (;a = t ? d.exec(e) : f.exec(e); ) {\n if (o = a[0], t) {\n switch (o.charAt(0)) {\n case \"?\":\n o = \"{0,1}\";\n break;\n\n case \"+\":\n case \"*\":\n o = \"{\" + o + \"}\";\n break;\n\n case \"|\":\n if (0 === v.length) {\n var E = b(h.matches);\n E.openGroup = !0, v.push(E), h.matches = [], g = !0;\n }\n }\n if (\"\\\\d\" === o) o = \"[0-9]\";\n }\n if (p) y(); else switch (o.charAt(0)) {\n case \"$\":\n case \"^\":\n t || y();\n break;\n\n case i.escapeChar:\n p = !0, t && y();\n break;\n\n case i.optionalmarker[1]:\n case i.groupmarker[1]:\n x();\n break;\n\n case i.optionalmarker[0]:\n v.push(new n.default(!1, !0));\n break;\n\n case i.groupmarker[0]:\n v.push(new n.default(!0));\n break;\n\n case i.quantifiermarker[0]:\n var S = new n.default(!1, !1, !0), _ = (o = o.replace(/[{}?]/g, \"\")).split(\"|\"), w = _[0].split(\",\"), M = isNaN(w[0]) ? w[0] : parseInt(w[0]), O = 1 === w.length ? M : isNaN(w[1]) ? w[1] : parseInt(w[1]), T = isNaN(_[1]) ? _[1] : parseInt(_[1]);\n \"*\" !== M && \"+\" !== M || (M = \"*\" === O ? 0 : 1), S.quantifier = {\n min: M,\n max: O,\n jit: T\n };\n var C = v.length > 0 ? v[v.length - 1].matches : h.matches;\n if ((a = C.pop()).isAlternator) {\n C.push(a), C = a.matches;\n var A = new n.default(!0), D = C.pop();\n C.push(A), C = A.matches, a = D;\n }\n a.isGroup || (a = b([ a ])), C.push(a), C.push(S);\n break;\n\n case i.alternatormarker:\n if (v.length > 0) {\n var j = (s = v[v.length - 1]).matches[s.matches.length - 1];\n c = s.openGroup && (void 0 === j.matches || !1 === j.isGroup && !1 === j.isAlternator) ? v.pop() : P(s.matches);\n } else c = P(h.matches);\n if (c.isAlternator) v.push(c); else if (c.alternatorGroup ? (u = v.pop(), c.alternatorGroup = !1) : u = new n.default(!1, !1, !1, !0), \n u.matches.push(c), v.push(u), c.openGroup) {\n c.openGroup = !1;\n var B = new n.default(!0);\n B.alternatorGroup = !0, v.push(B);\n }\n break;\n\n default:\n y();\n }\n }\n g && x();\n for (;v.length > 0; ) l = v.pop(), h.matches.push(l);\n h.matches.length > 0 && (!function e(a) {\n a && a.matches && a.matches.forEach((function(n, r) {\n var o = a.matches[r + 1];\n (void 0 === o || void 0 === o.matches || !1 === o.isQuantifier) && n && n.isGroup && (n.isGroup = !1, \n t || (k(n, i.groupmarker[0], 0), !0 !== n.openGroup && k(n, i.groupmarker[1]))), \n e(n);\n }));\n }(h), m.push(h));\n (i.numericInput || i.isRTL) && function e(t) {\n for (var a in t.matches = t.matches.reverse(), t.matches) if (Object.prototype.hasOwnProperty.call(t.matches, a)) {\n var n = parseInt(a);\n if (t.matches[a].isQuantifier && t.matches[n + 1] && t.matches[n + 1].isGroup) {\n var r = t.matches[a];\n t.matches.splice(a, 1), t.matches.splice(n + 1, 0, r);\n }\n void 0 !== t.matches[a].matches ? t.matches[a] = e(t.matches[a]) : t.matches[a] = ((o = t.matches[a]) === i.optionalmarker[0] ? o = i.optionalmarker[1] : o === i.optionalmarker[1] ? o = i.optionalmarker[0] : o === i.groupmarker[0] ? o = i.groupmarker[1] : o === i.groupmarker[1] && (o = i.groupmarker[0]), \n o);\n }\n var o;\n return t;\n }(m[0]);\n return m;\n }, t.generateMaskSet = function(e, t) {\n var i;\n function n(e, i, n) {\n var o, l, s = !1;\n if (null !== e && \"\" !== e || ((s = null !== n.regex) ? e = (e = n.regex).replace(/^(\\^)(.*)(\\$)$/, \"$2\") : (s = !0, \n e = \".*\")), 1 === e.length && !1 === n.greedy && 0 !== n.repeat && (n.placeholder = \"\"), \n n.repeat > 0 || \"*\" === n.repeat || \"+\" === n.repeat) {\n var u = \"*\" === n.repeat ? 0 : \"+\" === n.repeat ? 1 : n.repeat;\n e = n.groupmarker[0] + e + n.groupmarker[1] + n.quantifiermarker[0] + u + \",\" + n.repeat + n.quantifiermarker[1];\n }\n return l = s ? \"regex_\" + n.regex : n.numericInput ? e.split(\"\").reverse().join(\"\") : e, \n null !== n.keepStatic && (l = \"ks_\" + n.keepStatic + l), void 0 === r.default.prototype.masksCache[l] || !0 === t ? (o = {\n mask: e,\n maskToken: r.default.prototype.analyseMask(e, s, n),\n validPositions: {},\n _buffer: void 0,\n buffer: void 0,\n tests: {},\n excludes: {},\n metadata: i,\n maskLength: void 0,\n jitOffset: {}\n }, !0 !== t && (r.default.prototype.masksCache[l] = o, o = a.default.extend(!0, {}, r.default.prototype.masksCache[l]))) : o = a.default.extend(!0, {}, r.default.prototype.masksCache[l]), \n o;\n }\n \"function\" == typeof e.mask && (e.mask = e.mask(e));\n if (Array.isArray(e.mask)) {\n if (e.mask.length > 1) {\n null === e.keepStatic && (e.keepStatic = !0);\n var o = e.groupmarker[0];\n return (e.isRTL ? e.mask.reverse() : e.mask).forEach((function(t) {\n o.length > 1 && (o += e.alternatormarker), void 0 !== t.mask && \"function\" != typeof t.mask ? o += t.mask : o += t;\n })), n(o += e.groupmarker[1], e.mask, e);\n }\n e.mask = e.mask.pop();\n }\n i = e.mask && void 0 !== e.mask.mask && \"function\" != typeof e.mask.mask ? n(e.mask.mask, e.mask, e) : n(e.mask, e.mask, e);\n null === e.keepStatic && (e.keepStatic = !1);\n return i;\n };\n var a = o(i(4963)), n = o(i(9695)), r = o(i(2394));\n function o(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n },\n 157: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.mask = function() {\n var e = this, t = this.opts, i = this.el, a = this.dependencyLib;\n l.EventRuler.off(i);\n var f = function(t, i) {\n \"textarea\" !== t.tagName.toLowerCase() && i.ignorables.push(n.default.ENTER);\n var s = t.getAttribute(\"type\"), u = \"input\" === t.tagName.toLowerCase() && i.supportsInputType.includes(s) || t.isContentEditable || \"textarea\" === t.tagName.toLowerCase();\n if (!u) if (\"input\" === t.tagName.toLowerCase()) {\n var c = document.createElement(\"input\");\n c.setAttribute(\"type\", s), u = \"text\" === c.type, c = null;\n } else u = \"partial\";\n return !1 !== u ? function(t) {\n var n, s;\n function u() {\n return this.inputmask ? this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : -1 !== r.getLastValidPosition.call(e) || !0 !== i.nullable ? (this.inputmask.shadowRoot || this.ownerDocument).activeElement === this && i.clearMaskOnLostFocus ? (e.isRTL ? o.clearOptionalTail.call(e, r.getBuffer.call(e).slice()).reverse() : o.clearOptionalTail.call(e, r.getBuffer.call(e).slice())).join(\"\") : n.call(this) : \"\" : n.call(this);\n }\n function c(e) {\n s.call(this, e), this.inputmask && (0, o.applyInputValue)(this, e);\n }\n if (!t.inputmask.__valueGet) {\n if (!0 !== i.noValuePatching) {\n if (Object.getOwnPropertyDescriptor) {\n var f = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(t), \"value\") : void 0;\n f && f.get && f.set ? (n = f.get, s = f.set, Object.defineProperty(t, \"value\", {\n get: u,\n set: c,\n configurable: !0\n })) : \"input\" !== t.tagName.toLowerCase() && (n = function() {\n return this.textContent;\n }, s = function(e) {\n this.textContent = e;\n }, Object.defineProperty(t, \"value\", {\n get: u,\n set: c,\n configurable: !0\n }));\n } else document.__lookupGetter__ && t.__lookupGetter__(\"value\") && (n = t.__lookupGetter__(\"value\"), \n s = t.__lookupSetter__(\"value\"), t.__defineGetter__(\"value\", u), t.__defineSetter__(\"value\", c));\n t.inputmask.__valueGet = n, t.inputmask.__valueSet = s;\n }\n t.inputmask._valueGet = function(t) {\n return e.isRTL && !0 !== t ? n.call(this.el).split(\"\").reverse().join(\"\") : n.call(this.el);\n }, t.inputmask._valueSet = function(t, i) {\n s.call(this.el, null == t ? \"\" : !0 !== i && e.isRTL ? t.split(\"\").reverse().join(\"\") : t);\n }, void 0 === n && (n = function() {\n return this.value;\n }, s = function(e) {\n this.value = e;\n }, function(t) {\n if (a.valHooks && (void 0 === a.valHooks[t] || !0 !== a.valHooks[t].inputmaskpatch)) {\n var n = a.valHooks[t] && a.valHooks[t].get ? a.valHooks[t].get : function(e) {\n return e.value;\n }, l = a.valHooks[t] && a.valHooks[t].set ? a.valHooks[t].set : function(e, t) {\n return e.value = t, e;\n };\n a.valHooks[t] = {\n get: function(t) {\n if (t.inputmask) {\n if (t.inputmask.opts.autoUnmask) return t.inputmask.unmaskedvalue();\n var a = n(t);\n return -1 !== r.getLastValidPosition.call(e, void 0, void 0, t.inputmask.maskset.validPositions) || !0 !== i.nullable ? a : \"\";\n }\n return n(t);\n },\n set: function(e, t) {\n var i = l(e, t);\n return e.inputmask && (0, o.applyInputValue)(e, t), i;\n },\n inputmaskpatch: !0\n };\n }\n }(t.type), function(t) {\n l.EventRuler.on(t, \"mouseenter\", (function() {\n var t = this.inputmask._valueGet(!0);\n t !== (e.isRTL ? r.getBuffer.call(e).reverse() : r.getBuffer.call(e)).join(\"\") && (0, \n o.applyInputValue)(this, t);\n }));\n }(t));\n }\n }(t) : t.inputmask = void 0, u;\n }(i, t);\n if (!1 !== f) {\n e.originalPlaceholder = i.placeholder, e.maxLength = void 0 !== i ? i.maxLength : void 0, \n -1 === e.maxLength && (e.maxLength = void 0), \"inputMode\" in i && null === i.getAttribute(\"inputmode\") && (i.inputMode = t.inputmode, \n i.setAttribute(\"inputmode\", t.inputmode)), !0 === f && (t.showMaskOnFocus = t.showMaskOnFocus && -1 === [ \"cc-number\", \"cc-exp\" ].indexOf(i.autocomplete), \n s.iphone && (t.insertModeVisual = !1), l.EventRuler.on(i, \"submit\", c.EventHandlers.submitEvent), \n l.EventRuler.on(i, \"reset\", c.EventHandlers.resetEvent), l.EventRuler.on(i, \"blur\", c.EventHandlers.blurEvent), \n l.EventRuler.on(i, \"focus\", c.EventHandlers.focusEvent), l.EventRuler.on(i, \"invalid\", c.EventHandlers.invalidEvent), \n l.EventRuler.on(i, \"click\", c.EventHandlers.clickEvent), l.EventRuler.on(i, \"mouseleave\", c.EventHandlers.mouseleaveEvent), \n l.EventRuler.on(i, \"mouseenter\", c.EventHandlers.mouseenterEvent), l.EventRuler.on(i, \"paste\", c.EventHandlers.pasteEvent), \n l.EventRuler.on(i, \"cut\", c.EventHandlers.cutEvent), l.EventRuler.on(i, \"complete\", t.oncomplete), \n l.EventRuler.on(i, \"incomplete\", t.onincomplete), l.EventRuler.on(i, \"cleared\", t.oncleared), \n !0 !== t.inputEventOnly && (l.EventRuler.on(i, \"keydown\", c.EventHandlers.keydownEvent), \n l.EventRuler.on(i, \"keypress\", c.EventHandlers.keypressEvent), l.EventRuler.on(i, \"keyup\", c.EventHandlers.keyupEvent)), \n (s.mobile || t.inputEventOnly) && i.removeAttribute(\"maxLength\"), l.EventRuler.on(i, \"input\", c.EventHandlers.inputFallBackEvent), \n l.EventRuler.on(i, \"compositionend\", c.EventHandlers.compositionendEvent)), l.EventRuler.on(i, \"setvalue\", c.EventHandlers.setValueEvent), \n r.getBufferTemplate.call(e).join(\"\"), e.undoValue = e._valueGet(!0);\n var d = (i.inputmask.shadowRoot || i.ownerDocument).activeElement;\n if (\"\" !== i.inputmask._valueGet(!0) || !1 === t.clearMaskOnLostFocus || d === i) {\n (0, o.applyInputValue)(i, i.inputmask._valueGet(!0), t);\n var p = r.getBuffer.call(e).slice();\n !1 === u.isComplete.call(e, p) && t.clearIncomplete && r.resetMaskSet.call(e), t.clearMaskOnLostFocus && d !== i && (-1 === r.getLastValidPosition.call(e) ? p = [] : o.clearOptionalTail.call(e, p)), \n (!1 === t.clearMaskOnLostFocus || t.showMaskOnFocus && d === i || \"\" !== i.inputmask._valueGet(!0)) && (0, \n o.writeBuffer)(i, p), d === i && r.caret.call(e, i, r.seekNext.call(e, r.getLastValidPosition.call(e)));\n }\n }\n };\n var a, n = (a = i(5581)) && a.__esModule ? a : {\n default: a\n }, r = i(8711), o = i(7760), l = i(9716), s = i(9845), u = i(7215), c = i(6030);\n },\n 9695: function(e, t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = function(e, t, i, a) {\n this.matches = [], this.openGroup = e || !1, this.alternatorGroup = !1, this.isGroup = e || !1, \n this.isOptional = t || !1, this.isQuantifier = i || !1, this.isAlternator = a || !1, \n this.quantifier = {\n min: 1,\n max: 1\n };\n };\n },\n 3194: function() {\n Array.prototype.includes || Object.defineProperty(Array.prototype, \"includes\", {\n value: function(e, t) {\n if (null == this) throw new TypeError('\"this\" is null or not defined');\n var i = Object(this), a = i.length >>> 0;\n if (0 === a) return !1;\n for (var n = 0 | t, r = Math.max(n >= 0 ? n : a - Math.abs(n), 0); r < a; ) {\n if (i[r] === e) return !0;\n r++;\n }\n return !1;\n }\n });\n },\n 7149: function() {\n function e(t) {\n return e = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e;\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n }, e(t);\n }\n \"function\" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = \"object\" === e(\"test\".__proto__) ? function(e) {\n return e.__proto__;\n } : function(e) {\n return e.constructor.prototype;\n });\n },\n 8711: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.caret = function(e, t, i, a, n) {\n var r, o = this, l = this.opts;\n if (void 0 === t) return \"selectionStart\" in e && \"selectionEnd\" in e ? (t = e.selectionStart, \n i = e.selectionEnd) : window.getSelection ? (r = window.getSelection().getRangeAt(0)).commonAncestorContainer.parentNode !== e && r.commonAncestorContainer !== e || (t = r.startOffset, \n i = r.endOffset) : document.selection && document.selection.createRange && (r = document.selection.createRange(), \n t = 0 - r.duplicate().moveStart(\"character\", -e.inputmask._valueGet().length), i = t + r.text.length), \n {\n begin: a ? t : u.call(o, t),\n end: a ? i : u.call(o, i)\n };\n if (Array.isArray(t) && (i = o.isRTL ? t[0] : t[1], t = o.isRTL ? t[1] : t[0]), \n void 0 !== t.begin && (i = o.isRTL ? t.begin : t.end, t = o.isRTL ? t.end : t.begin), \n \"number\" == typeof t) {\n t = a ? t : u.call(o, t), i = \"number\" == typeof (i = a ? i : u.call(o, i)) ? i : t;\n var s = parseInt(((e.ownerDocument.defaultView || window).getComputedStyle ? (e.ownerDocument.defaultView || window).getComputedStyle(e, null) : e.currentStyle).fontSize) * i;\n if (e.scrollLeft = s > e.scrollWidth ? s : 0, e.inputmask.caretPos = {\n begin: t,\n end: i\n }, l.insertModeVisual && !1 === l.insertMode && t === i && (n || i++), e === (e.inputmask.shadowRoot || e.ownerDocument).activeElement) if (\"setSelectionRange\" in e) e.setSelectionRange(t, i); else if (window.getSelection) {\n if (r = document.createRange(), void 0 === e.firstChild || null === e.firstChild) {\n var c = document.createTextNode(\"\");\n e.appendChild(c);\n }\n r.setStart(e.firstChild, t < e.inputmask._valueGet().length ? t : e.inputmask._valueGet().length), \n r.setEnd(e.firstChild, i < e.inputmask._valueGet().length ? i : e.inputmask._valueGet().length), \n r.collapse(!0);\n var f = window.getSelection();\n f.removeAllRanges(), f.addRange(r);\n } else e.createTextRange && ((r = e.createTextRange()).collapse(!0), r.moveEnd(\"character\", i), \n r.moveStart(\"character\", t), r.select());\n }\n }, t.determineLastRequiredPosition = function(e) {\n var t, i, r = this, l = this.maskset, s = this.dependencyLib, u = a.getMaskTemplate.call(r, !0, o.call(r), !0, !0), c = u.length, f = o.call(r), d = {}, p = l.validPositions[f], h = void 0 !== p ? p.locator.slice() : void 0;\n for (t = f + 1; t < u.length; t++) i = a.getTestTemplate.call(r, t, h, t - 1), h = i.locator.slice(), \n d[t] = s.extend(!0, {}, i);\n var v = p && void 0 !== p.alternation ? p.locator[p.alternation] : void 0;\n for (t = c - 1; t > f && (((i = d[t]).match.optionality || i.match.optionalQuantifier && i.match.newBlockMarker || v && (v !== d[t].locator[p.alternation] && 1 != i.match.static || !0 === i.match.static && i.locator[p.alternation] && n.checkAlternationMatch.call(r, i.locator[p.alternation].toString().split(\",\"), v.toString().split(\",\")) && \"\" !== a.getTests.call(r, t)[0].def)) && u[t] === a.getPlaceholder.call(r, t, i.match)); t--) c--;\n return e ? {\n l: c,\n def: d[c] ? d[c].match : void 0\n } : c;\n }, t.determineNewCaretPosition = function(e, t, i) {\n var n = this, u = this.maskset, c = this.opts;\n t && (n.isRTL ? e.end = e.begin : e.begin = e.end);\n if (e.begin === e.end) {\n switch (i = i || c.positionCaretOnClick) {\n case \"none\":\n break;\n\n case \"select\":\n e = {\n begin: 0,\n end: r.call(n).length\n };\n break;\n\n case \"ignore\":\n e.end = e.begin = s.call(n, o.call(n));\n break;\n\n case \"radixFocus\":\n if (function(e) {\n if (\"\" !== c.radixPoint && 0 !== c.digits) {\n var t = u.validPositions;\n if (void 0 === t[e] || t[e].input === a.getPlaceholder.call(n, e)) {\n if (e < s.call(n, -1)) return !0;\n var i = r.call(n).indexOf(c.radixPoint);\n if (-1 !== i) {\n for (var o in t) if (t[o] && i < o && t[o].input !== a.getPlaceholder.call(n, o)) return !1;\n return !0;\n }\n }\n }\n return !1;\n }(e.begin)) {\n var f = r.call(n).join(\"\").indexOf(c.radixPoint);\n e.end = e.begin = c.numericInput ? s.call(n, f) : f;\n break;\n }\n\n default:\n var d = e.begin, p = o.call(n, d, !0), h = s.call(n, -1 !== p || l.call(n, 0) ? p : -1);\n if (d <= h) e.end = e.begin = l.call(n, d, !1, !0) ? d : s.call(n, d); else {\n var v = u.validPositions[p], m = a.getTestTemplate.call(n, h, v ? v.match.locator : void 0, v), g = a.getPlaceholder.call(n, h, m.match);\n if (\"\" !== g && r.call(n)[h] !== g && !0 !== m.match.optionalQuantifier && !0 !== m.match.newBlockMarker || !l.call(n, h, c.keepStatic, !0) && m.match.def === g) {\n var k = s.call(n, h);\n (d >= k || d === h) && (h = k);\n }\n e.end = e.begin = h;\n }\n }\n return e;\n }\n }, t.getBuffer = r, t.getBufferTemplate = function() {\n var e = this.maskset;\n void 0 === e._buffer && (e._buffer = a.getMaskTemplate.call(this, !1, 1), void 0 === e.buffer && (e.buffer = e._buffer.slice()));\n return e._buffer;\n }, t.getLastValidPosition = o, t.isMask = l, t.resetMaskSet = function(e) {\n var t = this.maskset;\n t.buffer = void 0, !0 !== e && (t.validPositions = {}, t.p = 0);\n }, t.seekNext = s, t.seekPrevious = function(e, t) {\n var i = this, n = e - 1;\n if (e <= 0) return 0;\n for (;n > 0 && (!0 === t && (!0 !== a.getTest.call(i, n).match.newBlockMarker || !l.call(i, n, void 0, !0)) || !0 !== t && !l.call(i, n, void 0, !0)); ) n--;\n return n;\n }, t.translatePosition = u;\n var a = i(4713), n = i(7215);\n function r(e) {\n var t = this.maskset;\n return void 0 !== t.buffer && !0 !== e || (t.buffer = a.getMaskTemplate.call(this, !0, o.call(this), !0), \n void 0 === t._buffer && (t._buffer = t.buffer.slice())), t.buffer;\n }\n function o(e, t, i) {\n var a = this.maskset, n = -1, r = -1, o = i || a.validPositions;\n for (var l in void 0 === e && (e = -1), o) {\n var s = parseInt(l);\n o[s] && (t || !0 !== o[s].generatedInput) && (s <= e && (n = s), s >= e && (r = s));\n }\n return -1 === n || n == e ? r : -1 == r || e - n < r - e ? n : r;\n }\n function l(e, t, i) {\n var n = this, r = this.maskset, o = a.getTestTemplate.call(n, e).match;\n if (\"\" === o.def && (o = a.getTest.call(n, e).match), !0 !== o.static) return o.fn;\n if (!0 === i && void 0 !== r.validPositions[e] && !0 !== r.validPositions[e].generatedInput) return !0;\n if (!0 !== t && e > -1) {\n if (i) {\n var l = a.getTests.call(n, e);\n return l.length > 1 + (\"\" === l[l.length - 1].match.def ? 1 : 0);\n }\n var s = a.determineTestTemplate.call(n, e, a.getTests.call(n, e)), u = a.getPlaceholder.call(n, e, s.match);\n return s.match.def !== u;\n }\n return !1;\n }\n function s(e, t, i) {\n var n = this;\n void 0 === i && (i = !0);\n for (var r = e + 1; \"\" !== a.getTest.call(n, r).match.def && (!0 === t && (!0 !== a.getTest.call(n, r).match.newBlockMarker || !l.call(n, r, void 0, !0)) || !0 !== t && !l.call(n, r, void 0, i)); ) r++;\n return r;\n }\n function u(e) {\n var t = this.opts, i = this.el;\n return !this.isRTL || \"number\" != typeof e || t.greedy && \"\" === t.placeholder || !i || (e = Math.abs(this._valueGet().length - e)), \n e;\n }\n },\n 4713: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.determineTestTemplate = u, t.getDecisionTaker = o, t.getMaskTemplate = function(e, t, i, a, n) {\n var r = this, o = this.opts, c = this.maskset, f = o.greedy;\n n && o.greedy && (o.greedy = !1, r.maskset.tests = {});\n t = t || 0;\n var p, h, v, m, g = [], k = 0;\n do {\n if (!0 === e && c.validPositions[k]) v = n && c.validPositions[k].match.optionality && void 0 === c.validPositions[k + 1] && (!0 === c.validPositions[k].generatedInput || c.validPositions[k].input == o.skipOptionalPartCharacter && k > 0) ? u.call(r, k, d.call(r, k, p, k - 1)) : c.validPositions[k], \n h = v.match, p = v.locator.slice(), g.push(!0 === i ? v.input : !1 === i ? h.nativeDef : l.call(r, k, h)); else {\n v = s.call(r, k, p, k - 1), h = v.match, p = v.locator.slice();\n var y = !0 !== a && (!1 !== o.jitMasking ? o.jitMasking : h.jit);\n (m = (m && h.static && h.def !== o.groupSeparator && null === h.fn || c.validPositions[k - 1] && h.static && h.def !== o.groupSeparator && null === h.fn) && c.tests[k] && 1 === c.tests[k].length) || !1 === y || void 0 === y || \"number\" == typeof y && isFinite(y) && y > k ? g.push(!1 === i ? h.nativeDef : l.call(r, k, h)) : m = !1;\n }\n k++;\n } while (!0 !== h.static || \"\" !== h.def || t > k);\n \"\" === g[g.length - 1] && g.pop();\n !1 === i && void 0 !== c.maskLength || (c.maskLength = k - 1);\n return o.greedy = f, g;\n }, t.getPlaceholder = l, t.getTest = c, t.getTestTemplate = s, t.getTests = d, t.isSubsetOf = f;\n var a, n = (a = i(2394)) && a.__esModule ? a : {\n default: a\n };\n function r(e, t) {\n var i = (null != e.alternation ? e.mloc[o(e)] : e.locator).join(\"\");\n if (\"\" !== i) for (;i.length < t; ) i += \"0\";\n return i;\n }\n function o(e) {\n var t = e.locator[e.alternation];\n return \"string\" == typeof t && t.length > 0 && (t = t.split(\",\")[0]), void 0 !== t ? t.toString() : \"\";\n }\n function l(e, t, i) {\n var a = this.opts, n = this.maskset;\n if (void 0 !== (t = t || c.call(this, e).match).placeholder || !0 === i) return \"function\" == typeof t.placeholder ? t.placeholder(a) : t.placeholder;\n if (!0 === t.static) {\n if (e > -1 && void 0 === n.validPositions[e]) {\n var r, o = d.call(this, e), l = [];\n if (o.length > 1 + (\"\" === o[o.length - 1].match.def ? 1 : 0)) for (var s = 0; s < o.length; s++) if (\"\" !== o[s].match.def && !0 !== o[s].match.optionality && !0 !== o[s].match.optionalQuantifier && (!0 === o[s].match.static || void 0 === r || !1 !== o[s].match.fn.test(r.match.def, n, e, !0, a)) && (l.push(o[s]), \n !0 === o[s].match.static && (r = o[s]), l.length > 1 && /[0-9a-bA-Z]/.test(l[0].match.def))) return a.placeholder.charAt(e % a.placeholder.length);\n }\n return t.def;\n }\n return a.placeholder.charAt(e % a.placeholder.length);\n }\n function s(e, t, i) {\n return this.maskset.validPositions[e] || u.call(this, e, d.call(this, e, t ? t.slice() : t, i));\n }\n function u(e, t) {\n var i = this.opts, a = function(e, t) {\n var i = 0, a = !1;\n t.forEach((function(e) {\n e.match.optionality && (0 !== i && i !== e.match.optionality && (a = !0), (0 === i || i > e.match.optionality) && (i = e.match.optionality));\n })), i && (0 == e || 1 == t.length ? i = 0 : a || (i = 0));\n return i;\n }(e, t);\n e = e > 0 ? e - 1 : 0;\n var n, o, l, s = r(c.call(this, e));\n i.greedy && t.length > 1 && \"\" === t[t.length - 1].match.def && t.pop();\n for (var u = 0; u < t.length; u++) {\n var f = t[u];\n n = r(f, s.length);\n var d = Math.abs(n - s);\n (void 0 === o || \"\" !== n && d < o || l && !i.greedy && l.match.optionality && l.match.optionality - a > 0 && \"master\" === l.match.newBlockMarker && (!f.match.optionality || f.match.optionality - a < 1 || !f.match.newBlockMarker) || l && !i.greedy && l.match.optionalQuantifier && !f.match.optionalQuantifier) && (o = d, \n l = f);\n }\n return l;\n }\n function c(e, t) {\n var i = this.maskset;\n return i.validPositions[e] ? i.validPositions[e] : (t || d.call(this, e))[0];\n }\n function f(e, t, i) {\n function a(e) {\n for (var t, i = [], a = -1, n = 0, r = e.length; n < r; n++) if (\"-\" === e.charAt(n)) for (t = e.charCodeAt(n + 1); ++a < t; ) i.push(String.fromCharCode(a)); else a = e.charCodeAt(n), \n i.push(e.charAt(n));\n return i.join(\"\");\n }\n return e.match.def === t.match.nativeDef || !(!(i.regex || e.match.fn instanceof RegExp && t.match.fn instanceof RegExp) || !0 === e.match.static || !0 === t.match.static) && -1 !== a(t.match.fn.toString().replace(/[[\\]/]/g, \"\")).indexOf(a(e.match.fn.toString().replace(/[[\\]/]/g, \"\")));\n }\n function d(e, t, i) {\n var a, r, o = this, l = this.dependencyLib, s = this.maskset, c = this.opts, d = this.el, p = s.maskToken, h = t ? i : 0, v = t ? t.slice() : [ 0 ], m = [], g = !1, k = t ? t.join(\"\") : \"\";\n function y(t, i, r, o) {\n function l(r, o, u) {\n function p(e, t) {\n var i = 0 === t.matches.indexOf(e);\n return i || t.matches.every((function(a, n) {\n return !0 === a.isQuantifier ? i = p(e, t.matches[n - 1]) : Object.prototype.hasOwnProperty.call(a, \"matches\") && (i = p(e, a)), \n !i;\n })), i;\n }\n function v(e, t, i) {\n var a, n;\n if ((s.tests[e] || s.validPositions[e]) && (s.tests[e] || [ s.validPositions[e] ]).every((function(e, r) {\n if (e.mloc[t]) return a = e, !1;\n var o = void 0 !== i ? i : e.alternation, l = void 0 !== e.locator[o] ? e.locator[o].toString().indexOf(t) : -1;\n return (void 0 === n || l < n) && -1 !== l && (a = e, n = l), !0;\n })), a) {\n var r = a.locator[a.alternation];\n return (a.mloc[t] || a.mloc[r] || a.locator).slice((void 0 !== i ? i : a.alternation) + 1);\n }\n return void 0 !== i ? v(e, t) : void 0;\n }\n function b(e, t) {\n var i = e.alternation, a = void 0 === t || i === t.alternation && -1 === e.locator[i].toString().indexOf(t.locator[i]);\n if (!a && i > t.alternation) for (var n = t.alternation; n < i; n++) if (e.locator[n] !== t.locator[n]) {\n i = n, a = !0;\n break;\n }\n if (a) {\n e.mloc = e.mloc || {};\n var r = e.locator[i];\n if (void 0 !== r) {\n if (\"string\" == typeof r && (r = r.split(\",\")[0]), void 0 === e.mloc[r] && (e.mloc[r] = e.locator.slice()), \n void 0 !== t) {\n for (var o in t.mloc) \"string\" == typeof o && (o = o.split(\",\")[0]), void 0 === e.mloc[o] && (e.mloc[o] = t.mloc[o]);\n e.locator[i] = Object.keys(e.mloc).join(\",\");\n }\n return !0;\n }\n e.alternation = void 0;\n }\n return !1;\n }\n function x(e, t) {\n if (e.locator.length !== t.locator.length) return !1;\n for (var i = e.alternation + 1; i < e.locator.length; i++) if (e.locator[i] !== t.locator[i]) return !1;\n return !0;\n }\n if (h > e + c._maxTestPos) throw \"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. \" + s.mask;\n if (h === e && void 0 === r.matches) {\n if (m.push({\n match: r,\n locator: o.reverse(),\n cd: k,\n mloc: {}\n }), !r.optionality || void 0 !== u || !(c.definitions && c.definitions[r.nativeDef] && c.definitions[r.nativeDef].optional || n.default.prototype.definitions[r.nativeDef] && n.default.prototype.definitions[r.nativeDef].optional)) return !0;\n g = !0, h = e;\n } else if (void 0 !== r.matches) {\n if (r.isGroup && u !== r) {\n if (r = l(t.matches[t.matches.indexOf(r) + 1], o, u)) return !0;\n } else if (r.isOptional) {\n var P = r, E = m.length;\n if (r = y(r, i, o, u)) {\n if (m.forEach((function(e, t) {\n t >= E && (e.match.optionality = e.match.optionality ? e.match.optionality + 1 : 1);\n })), a = m[m.length - 1].match, void 0 !== u || !p(a, P)) return !0;\n g = !0, h = e;\n }\n } else if (r.isAlternator) {\n var S, _ = r, w = [], M = m.slice(), O = o.length, T = !1, C = i.length > 0 ? i.shift() : -1;\n if (-1 === C || \"string\" == typeof C) {\n var A, D = h, j = i.slice(), B = [];\n if (\"string\" == typeof C) B = C.split(\",\"); else for (A = 0; A < _.matches.length; A++) B.push(A.toString());\n if (void 0 !== s.excludes[e]) {\n for (var R = B.slice(), L = 0, I = s.excludes[e].length; L < I; L++) {\n var F = s.excludes[e][L].toString().split(\":\");\n o.length == F[1] && B.splice(B.indexOf(F[0]), 1);\n }\n 0 === B.length && (delete s.excludes[e], B = R);\n }\n (!0 === c.keepStatic || isFinite(parseInt(c.keepStatic)) && D >= c.keepStatic) && (B = B.slice(0, 1));\n for (var N = 0; N < B.length; N++) {\n A = parseInt(B[N]), m = [], i = \"string\" == typeof C && v(h, A, O) || j.slice();\n var V = _.matches[A];\n if (V && l(V, [ A ].concat(o), u)) r = !0; else if (0 === N && (T = !0), V && V.matches && V.matches.length > _.matches[0].matches.length) break;\n S = m.slice(), h = D, m = [];\n for (var G = 0; G < S.length; G++) {\n var H = S[G], K = !1;\n H.match.jit = H.match.jit || T, H.alternation = H.alternation || O, b(H);\n for (var U = 0; U < w.length; U++) {\n var $ = w[U];\n if (\"string\" != typeof C || void 0 !== H.alternation && B.includes(H.locator[H.alternation].toString())) {\n if (H.match.nativeDef === $.match.nativeDef) {\n K = !0, b($, H);\n break;\n }\n if (f(H, $, c)) {\n b(H, $) && (K = !0, w.splice(w.indexOf($), 0, H));\n break;\n }\n if (f($, H, c)) {\n b($, H);\n break;\n }\n if (Z = $, !0 === (Q = H).match.static && !0 !== Z.match.static && Z.match.fn.test(Q.match.def, s, e, !1, c, !1)) {\n x(H, $) || void 0 !== d.inputmask.userOptions.keepStatic ? b(H, $) && (K = !0, w.splice(w.indexOf($), 0, H)) : c.keepStatic = !0;\n break;\n }\n }\n }\n K || w.push(H);\n }\n }\n m = M.concat(w), h = e, g = m.length > 0, r = w.length > 0, i = j.slice();\n } else r = l(_.matches[C] || t.matches[C], [ C ].concat(o), u);\n if (r) return !0;\n } else if (r.isQuantifier && u !== t.matches[t.matches.indexOf(r) - 1]) for (var q = r, z = i.length > 0 ? i.shift() : 0; z < (isNaN(q.quantifier.max) ? z + 1 : q.quantifier.max) && h <= e; z++) {\n var W = t.matches[t.matches.indexOf(q) - 1];\n if (r = l(W, [ z ].concat(o), W)) {\n if ((a = m[m.length - 1].match).optionalQuantifier = z >= q.quantifier.min, a.jit = (z + 1) * (W.matches.indexOf(a) + 1) > q.quantifier.jit, \n a.optionalQuantifier && p(a, W)) {\n g = !0, h = e;\n break;\n }\n return a.jit && (s.jitOffset[e] = W.matches.length - W.matches.indexOf(a)), !0;\n }\n } else if (r = y(r, i, o, u)) return !0;\n } else h++;\n var Q, Z;\n }\n for (var u = i.length > 0 ? i.shift() : 0; u < t.matches.length; u++) if (!0 !== t.matches[u].isQuantifier) {\n var p = l(t.matches[u], [ u ].concat(r), o);\n if (p && h === e) return p;\n if (h > e) break;\n }\n }\n if (e > -1) {\n if (void 0 === t) {\n for (var b, x = e - 1; void 0 === (b = s.validPositions[x] || s.tests[x]) && x > -1; ) x--;\n void 0 !== b && x > -1 && (v = function(e, t) {\n var i, a = [];\n return Array.isArray(t) || (t = [ t ]), t.length > 0 && (void 0 === t[0].alternation || !0 === c.keepStatic ? 0 === (a = u.call(o, e, t.slice()).locator.slice()).length && (a = t[0].locator.slice()) : t.forEach((function(e) {\n \"\" !== e.def && (0 === a.length ? (i = e.alternation, a = e.locator.slice()) : e.locator[i] && -1 === a[i].toString().indexOf(e.locator[i]) && (a[i] += \",\" + e.locator[i]));\n }))), a;\n }(x, b), k = v.join(\"\"), h = x);\n }\n if (s.tests[e] && s.tests[e][0].cd === k) return s.tests[e];\n for (var P = v.shift(); P < p.length; P++) {\n if (y(p[P], v, [ P ]) && h === e || h > e) break;\n }\n }\n return (0 === m.length || g) && m.push({\n match: {\n fn: null,\n static: !0,\n optionality: !1,\n casing: null,\n def: \"\",\n placeholder: \"\"\n },\n locator: [],\n mloc: {},\n cd: k\n }), void 0 !== t && s.tests[e] ? r = l.extend(!0, [], m) : (s.tests[e] = l.extend(!0, [], m), \n r = s.tests[e]), m.forEach((function(e) {\n e.match.optionality = !1;\n })), r;\n }\n },\n 7215: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.alternate = s, t.checkAlternationMatch = function(e, t, i) {\n for (var a, n = this.opts.greedy ? t : t.slice(0, 1), r = !1, o = void 0 !== i ? i.split(\",\") : [], l = 0; l < o.length; l++) -1 !== (a = e.indexOf(o[l])) && e.splice(a, 1);\n for (var s = 0; s < e.length; s++) if (n.includes(e[s])) {\n r = !0;\n break;\n }\n return r;\n }, t.handleRemove = function(e, t, i, a, l) {\n var u = this, c = this.maskset, f = this.opts;\n if ((f.numericInput || u.isRTL) && (t === r.default.BACKSPACE ? t = r.default.DELETE : t === r.default.DELETE && (t = r.default.BACKSPACE), \n u.isRTL)) {\n var d = i.end;\n i.end = i.begin, i.begin = d;\n }\n var p, h = o.getLastValidPosition.call(u, void 0, !0);\n i.end >= o.getBuffer.call(u).length && h >= i.end && (i.end = h + 1);\n t === r.default.BACKSPACE ? i.end - i.begin < 1 && (i.begin = o.seekPrevious.call(u, i.begin)) : t === r.default.DELETE && i.begin === i.end && (i.end = o.isMask.call(u, i.end, !0, !0) ? i.end + 1 : o.seekNext.call(u, i.end) + 1);\n if (!1 !== (p = m.call(u, i))) {\n if (!0 !== a && !1 !== f.keepStatic || null !== f.regex && -1 !== n.getTest.call(u, i.begin).match.def.indexOf(\"|\")) {\n var v = s.call(u, !0);\n if (v) {\n var g = void 0 !== v.caret ? v.caret : v.pos ? o.seekNext.call(u, v.pos.begin ? v.pos.begin : v.pos) : o.getLastValidPosition.call(u, -1, !0);\n (t !== r.default.DELETE || i.begin > g) && i.begin;\n }\n }\n !0 !== a && (c.p = t === r.default.DELETE ? i.begin + p : i.begin, c.p = o.determineNewCaretPosition.call(u, {\n begin: c.p,\n end: c.p\n }, !1, !1 === f.insertMode && t === r.default.BACKSPACE ? \"none\" : void 0).begin);\n }\n }, t.isComplete = c, t.isSelection = f, t.isValid = d, t.refreshFromBuffer = h, \n t.revalidateMask = m;\n var a, n = i(4713), r = (a = i(5581)) && a.__esModule ? a : {\n default: a\n }, o = i(8711), l = i(6030);\n function s(e, t, i, a, r, l) {\n var u, c, f, p, h, v, m, g, k, y, b, x = this, P = this.dependencyLib, E = this.opts, S = x.maskset, _ = P.extend(!0, {}, S.validPositions), w = P.extend(!0, {}, S.tests), M = !1, O = !1, T = void 0 !== r ? r : o.getLastValidPosition.call(x);\n if (l && (y = l.begin, b = l.end, l.begin > l.end && (y = l.end, b = l.begin)), \n -1 === T && void 0 === r) u = 0, c = (p = n.getTest.call(x, u)).alternation; else for (;T >= 0; T--) if ((f = S.validPositions[T]) && void 0 !== f.alternation) {\n if (p && p.locator[f.alternation] !== f.locator[f.alternation]) break;\n u = T, c = S.validPositions[u].alternation, p = f;\n }\n if (void 0 !== c) {\n m = parseInt(u), S.excludes[m] = S.excludes[m] || [], !0 !== e && S.excludes[m].push((0, \n n.getDecisionTaker)(p) + \":\" + p.alternation);\n var C = [], A = -1;\n for (h = m; h < o.getLastValidPosition.call(x, void 0, !0) + 1; h++) -1 === A && e <= h && void 0 !== t && (C.push(t), \n A = C.length - 1), (v = S.validPositions[h]) && !0 !== v.generatedInput && (void 0 === l || h < y || h >= b) && C.push(v.input), \n delete S.validPositions[h];\n for (-1 === A && void 0 !== t && (C.push(t), A = C.length - 1); void 0 !== S.excludes[m] && S.excludes[m].length < 10; ) {\n for (S.tests = {}, o.resetMaskSet.call(x, !0), M = !0, h = 0; h < C.length && (g = M.caret || o.getLastValidPosition.call(x, void 0, !0) + 1, \n k = C[h], M = d.call(x, g, k, !1, a, !0)); h++) h === A && (O = M), 1 == e && M && (O = {\n caretPos: h\n });\n if (M) break;\n if (o.resetMaskSet.call(x), p = n.getTest.call(x, m), S.validPositions = P.extend(!0, {}, _), \n S.tests = P.extend(!0, {}, w), !S.excludes[m]) {\n O = s.call(x, e, t, i, a, m - 1, l);\n break;\n }\n var D = (0, n.getDecisionTaker)(p);\n if (-1 !== S.excludes[m].indexOf(D + \":\" + p.alternation)) {\n O = s.call(x, e, t, i, a, m - 1, l);\n break;\n }\n for (S.excludes[m].push(D + \":\" + p.alternation), h = m; h < o.getLastValidPosition.call(x, void 0, !0) + 1; h++) delete S.validPositions[h];\n }\n }\n return O && !1 === E.keepStatic || delete S.excludes[m], O;\n }\n function u(e, t, i) {\n var a = this.opts, n = this.maskset;\n switch (a.casing || t.casing) {\n case \"upper\":\n e = e.toUpperCase();\n break;\n\n case \"lower\":\n e = e.toLowerCase();\n break;\n\n case \"title\":\n var o = n.validPositions[i - 1];\n e = 0 === i || o && o.input === String.fromCharCode(r.default.SPACE) ? e.toUpperCase() : e.toLowerCase();\n break;\n\n default:\n if (\"function\" == typeof a.casing) {\n var l = Array.prototype.slice.call(arguments);\n l.push(n.validPositions), e = a.casing.apply(this, l);\n }\n }\n return e;\n }\n function c(e) {\n var t = this, i = this.opts, a = this.maskset;\n if (\"function\" == typeof i.isComplete) return i.isComplete(e, i);\n if (\"*\" !== i.repeat) {\n var r = !1, l = o.determineLastRequiredPosition.call(t, !0), s = o.seekPrevious.call(t, l.l);\n if (void 0 === l.def || l.def.newBlockMarker || l.def.optionality || l.def.optionalQuantifier) {\n r = !0;\n for (var u = 0; u <= s; u++) {\n var c = n.getTestTemplate.call(t, u).match;\n if (!0 !== c.static && void 0 === a.validPositions[u] && !0 !== c.optionality && !0 !== c.optionalQuantifier || !0 === c.static && e[u] !== n.getPlaceholder.call(t, u, c)) {\n r = !1;\n break;\n }\n }\n }\n return r;\n }\n }\n function f(e) {\n var t = this.opts.insertMode ? 0 : 1;\n return this.isRTL ? e.begin - e.end > t : e.end - e.begin > t;\n }\n function d(e, t, i, a, r, l, p) {\n var g = this, k = this.dependencyLib, y = this.opts, b = g.maskset;\n i = !0 === i;\n var x = e;\n function P(e) {\n if (void 0 !== e) {\n if (void 0 !== e.remove && (Array.isArray(e.remove) || (e.remove = [ e.remove ]), \n e.remove.sort((function(e, t) {\n return t.pos - e.pos;\n })).forEach((function(e) {\n m.call(g, {\n begin: e,\n end: e + 1\n });\n })), e.remove = void 0), void 0 !== e.insert && (Array.isArray(e.insert) || (e.insert = [ e.insert ]), \n e.insert.sort((function(e, t) {\n return e.pos - t.pos;\n })).forEach((function(e) {\n \"\" !== e.c && d.call(g, e.pos, e.c, void 0 === e.strict || e.strict, void 0 !== e.fromIsValid ? e.fromIsValid : a);\n })), e.insert = void 0), e.refreshFromBuffer && e.buffer) {\n var t = e.refreshFromBuffer;\n h.call(g, !0 === t ? t : t.start, t.end, e.buffer), e.refreshFromBuffer = void 0;\n }\n void 0 !== e.rewritePosition && (x = e.rewritePosition, e = !0);\n }\n return e;\n }\n function E(t, i, r) {\n var l = !1;\n return n.getTests.call(g, t).every((function(s, c) {\n var d = s.match;\n if (o.getBuffer.call(g, !0), !1 !== (l = (!d.jit || void 0 !== b.validPositions[o.seekPrevious.call(g, t)]) && (null != d.fn ? d.fn.test(i, b, t, r, y, f.call(g, e)) : (i === d.def || i === y.skipOptionalPartCharacter) && \"\" !== d.def && {\n c: n.getPlaceholder.call(g, t, d, !0) || d.def,\n pos: t\n }))) {\n var p = void 0 !== l.c ? l.c : i, h = t;\n return p = p === y.skipOptionalPartCharacter && !0 === d.static ? n.getPlaceholder.call(g, t, d, !0) || d.def : p, \n !0 !== (l = P(l)) && void 0 !== l.pos && l.pos !== t && (h = l.pos), !0 !== l && void 0 === l.pos && void 0 === l.c ? !1 : (!1 === m.call(g, e, k.extend({}, s, {\n input: u.call(g, p, d, h)\n }), a, h) && (l = !1), !1);\n }\n return !0;\n })), l;\n }\n void 0 !== e.begin && (x = g.isRTL ? e.end : e.begin);\n var S = !0, _ = k.extend(!0, {}, b.validPositions);\n if (!1 === y.keepStatic && void 0 !== b.excludes[x] && !0 !== r && !0 !== a) for (var w = x; w < (g.isRTL ? e.begin : e.end); w++) void 0 !== b.excludes[w] && (b.excludes[w] = void 0, \n delete b.tests[w]);\n if (\"function\" == typeof y.preValidation && !0 !== a && !0 !== l && (S = P(S = y.preValidation.call(g, o.getBuffer.call(g), x, t, f.call(g, e), y, b, e, i || r))), \n !0 === S) {\n if (S = E(x, t, i), (!i || !0 === a) && !1 === S && !0 !== l) {\n var M = b.validPositions[x];\n if (!M || !0 !== M.match.static || M.match.def !== t && t !== y.skipOptionalPartCharacter) {\n if (y.insertMode || void 0 === b.validPositions[o.seekNext.call(g, x)] || e.end > x) {\n var O = !1;\n if (b.jitOffset[x] && void 0 === b.validPositions[o.seekNext.call(g, x)] && !1 !== (S = d.call(g, x + b.jitOffset[x], t, !0, !0)) && (!0 !== r && (S.caret = x), \n O = !0), e.end > x && (b.validPositions[x] = void 0), !O && !o.isMask.call(g, x, y.keepStatic && 0 === x)) for (var T = x + 1, C = o.seekNext.call(g, x, !1, 0 !== x); T <= C; T++) if (!1 !== (S = E(T, t, i))) {\n S = v.call(g, x, void 0 !== S.pos ? S.pos : T) || S, x = T;\n break;\n }\n }\n } else S = {\n caret: o.seekNext.call(g, x)\n };\n }\n !1 !== S || !y.keepStatic || !c.call(g, o.getBuffer.call(g)) && 0 !== x || i || !0 === r ? f.call(g, e) && b.tests[x] && b.tests[x].length > 1 && y.keepStatic && !i && !0 !== r && (S = s.call(g, !0)) : S = s.call(g, x, t, i, a, void 0, e), \n !0 === S && (S = {\n pos: x\n });\n }\n if (\"function\" == typeof y.postValidation && !0 !== a && !0 !== l) {\n var A = y.postValidation.call(g, o.getBuffer.call(g, !0), void 0 !== e.begin ? g.isRTL ? e.end : e.begin : e, t, S, y, b, i, p);\n void 0 !== A && (S = !0 === A ? S : A);\n }\n S && void 0 === S.pos && (S.pos = x), !1 === S || !0 === l ? (o.resetMaskSet.call(g, !0), \n b.validPositions = k.extend(!0, {}, _)) : v.call(g, void 0, x, !0);\n var D = P(S);\n void 0 !== g.maxLength && (o.getBuffer.call(g).length > g.maxLength && !a && (o.resetMaskSet.call(g, !0), \n b.validPositions = k.extend(!0, {}, _), D = !1));\n return D;\n }\n function p(e, t, i) {\n for (var a = this.maskset, r = !1, o = n.getTests.call(this, e), l = 0; l < o.length; l++) {\n if (o[l].match && (o[l].match.nativeDef === t.match[i.shiftPositions ? \"def\" : \"nativeDef\"] && (!i.shiftPositions || !t.match.static) || o[l].match.nativeDef === t.match.nativeDef || i.regex && !o[l].match.static && o[l].match.fn.test(t.input))) {\n r = !0;\n break;\n }\n if (o[l].match && o[l].match.def === t.match.nativeDef) {\n r = void 0;\n break;\n }\n }\n return !1 === r && void 0 !== a.jitOffset[e] && (r = p.call(this, e + a.jitOffset[e], t, i)), \n r;\n }\n function h(e, t, i) {\n var a, n, r = this, s = this.maskset, u = this.opts, c = this.dependencyLib, f = u.skipOptionalPartCharacter, d = r.isRTL ? i.slice().reverse() : i;\n if (u.skipOptionalPartCharacter = \"\", !0 === e) o.resetMaskSet.call(r), s.tests = {}, \n e = 0, t = i.length, n = o.determineNewCaretPosition.call(r, {\n begin: 0,\n end: 0\n }, !1).begin; else {\n for (a = e; a < t; a++) delete s.validPositions[a];\n n = e;\n }\n var p = new c.Event(\"keypress\");\n for (a = e; a < t; a++) {\n p.keyCode = d[a].toString().charCodeAt(0), r.ignorable = !1;\n var h = l.EventHandlers.keypressEvent.call(r, p, !0, !1, !1, n);\n !1 !== h && void 0 !== h && (n = h.forwardPosition);\n }\n u.skipOptionalPartCharacter = f;\n }\n function v(e, t, i) {\n var a = this, r = this.maskset, l = this.dependencyLib;\n if (void 0 === e) for (e = t - 1; e > 0 && !r.validPositions[e]; e--) ;\n for (var s = e; s < t; s++) {\n if (void 0 === r.validPositions[s] && !o.isMask.call(a, s, !1)) if (0 == s ? n.getTest.call(a, s) : r.validPositions[s - 1]) {\n var u = n.getTests.call(a, s).slice();\n \"\" === u[u.length - 1].match.def && u.pop();\n var c, f = n.determineTestTemplate.call(a, s, u);\n if (f && (!0 !== f.match.jit || \"master\" === f.match.newBlockMarker && (c = r.validPositions[s + 1]) && !0 === c.match.optionalQuantifier) && ((f = l.extend({}, f, {\n input: n.getPlaceholder.call(a, s, f.match, !0) || f.match.def\n })).generatedInput = !0, m.call(a, s, f, !0), !0 !== i)) {\n var p = r.validPositions[t].input;\n return r.validPositions[t] = void 0, d.call(a, t, p, !0, !0);\n }\n }\n }\n }\n function m(e, t, i, a) {\n var r = this, l = this.maskset, s = this.opts, u = this.dependencyLib;\n function c(e, t, i) {\n var a = t[e];\n if (void 0 !== a && !0 === a.match.static && !0 !== a.match.optionality && (void 0 === t[0] || void 0 === t[0].alternation)) {\n var n = i.begin <= e - 1 ? t[e - 1] && !0 === t[e - 1].match.static && t[e - 1] : t[e - 1], r = i.end > e + 1 ? t[e + 1] && !0 === t[e + 1].match.static && t[e + 1] : t[e + 1];\n return n && r;\n }\n return !1;\n }\n var f = 0, h = void 0 !== e.begin ? e.begin : e, v = void 0 !== e.end ? e.end : e, m = !0;\n if (e.begin > e.end && (h = e.end, v = e.begin), a = void 0 !== a ? a : h, h !== v || s.insertMode && void 0 !== l.validPositions[a] && void 0 === i || void 0 === t || t.match.optionalQuantifier || t.match.optionality) {\n var g, k = u.extend(!0, {}, l.validPositions), y = o.getLastValidPosition.call(r, void 0, !0);\n for (l.p = h, g = y; g >= h; g--) delete l.validPositions[g], void 0 === t && delete l.tests[g + 1];\n var b, x, P = a, E = P;\n for (t && (l.validPositions[a] = u.extend(!0, {}, t), E++, P++), g = t ? v : v - 1; g <= y; g++) {\n if (void 0 !== (b = k[g]) && !0 !== b.generatedInput && (g >= v || g >= h && c(g, k, {\n begin: h,\n end: v\n }))) {\n for (;\"\" !== n.getTest.call(r, E).match.def; ) {\n if (!1 !== (x = p.call(r, E, b, s)) || \"+\" === b.match.def) {\n \"+\" === b.match.def && o.getBuffer.call(r, !0);\n var S = d.call(r, E, b.input, \"+\" !== b.match.def, !0);\n if (m = !1 !== S, P = (S.pos || E) + 1, !m && x) break;\n } else m = !1;\n if (m) {\n void 0 === t && b.match.static && g === e.begin && f++;\n break;\n }\n if (!m && o.getBuffer.call(r), E > l.maskLength) break;\n E++;\n }\n \"\" == n.getTest.call(r, E).match.def && (m = !1), E = P;\n }\n if (!m) break;\n }\n if (!m) return l.validPositions = u.extend(!0, {}, k), o.resetMaskSet.call(r, !0), \n !1;\n } else t && n.getTest.call(r, a).match.cd === t.match.cd && (l.validPositions[a] = u.extend(!0, {}, t));\n return o.resetMaskSet.call(r, !0), f;\n }\n },\n 5581: function(e) {\n e.exports = JSON.parse('{\"BACKSPACE\":8,\"BACKSPACE_SAFARI\":127,\"DELETE\":46,\"DOWN\":40,\"END\":35,\"ENTER\":13,\"ESCAPE\":27,\"HOME\":36,\"INSERT\":45,\"LEFT\":37,\"PAGE_DOWN\":34,\"PAGE_UP\":33,\"RIGHT\":39,\"SPACE\":32,\"TAB\":9,\"UP\":38,\"X\":88,\"Z\":90,\"CONTROL\":17,\"PAUSE/BREAK\":19,\"WINDOWS_LEFT\":91,\"WINDOWS_RIGHT\":92,\"KEY_229\":229}');\n }\n }, t = {};\n function i(a) {\n var n = t[a];\n if (void 0 !== n) return n.exports;\n var r = t[a] = {\n exports: {}\n };\n return e[a](r, r.exports, i), r.exports;\n }\n var a = {};\n return function() {\n var e, t = a;\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0, i(3851), i(219), i(207), i(5296);\n var n = ((e = i(2394)) && e.__esModule ? e : {\n default: e\n }).default;\n t.default = n;\n }(), a;\n }();\n}));","/*!\n * The Final Countdown for jQuery v2.2.0 (http://hilios.github.io/jQuery.countdown/)\n * Copyright (c) 2016 Edson Hilios\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n(function(factory) {\n \"use strict\";\n if (typeof define === \"function\" && define.amd) {\n define([ \"jquery\" ], factory);\n } else {\n factory(jQuery);\n }\n})(function($) {\n \"use strict\";\n var instances = [], matchers = [], defaultOptions = {\n precision: 100,\n elapse: false,\n defer: false\n };\n matchers.push(/^[0-9]*$/.source);\n matchers.push(/([0-9]{1,2}\\/){2}[0-9]{4}( [0-9]{1,2}(:[0-9]{2}){2})?/.source);\n matchers.push(/[0-9]{4}([\\/\\-][0-9]{1,2}){2}( [0-9]{1,2}(:[0-9]{2}){2})?/.source);\n matchers = new RegExp(matchers.join(\"|\"));\n function parseDateString(dateString) {\n if (dateString instanceof Date) {\n return dateString;\n }\n if (String(dateString).match(matchers)) {\n if (String(dateString).match(/^[0-9]*$/)) {\n dateString = Number(dateString);\n }\n if (String(dateString).match(/\\-/)) {\n dateString = String(dateString).replace(/\\-/g, \"/\");\n }\n return new Date(dateString);\n } else {\n throw new Error(\"Couldn't cast `\" + dateString + \"` to a date object.\");\n }\n }\n var DIRECTIVE_KEY_MAP = {\n Y: \"years\",\n m: \"months\",\n n: \"daysToMonth\",\n d: \"daysToWeek\",\n w: \"weeks\",\n W: \"weeksToMonth\",\n H: \"hours\",\n M: \"minutes\",\n S: \"seconds\",\n D: \"totalDays\",\n I: \"totalHours\",\n N: \"totalMinutes\",\n T: \"totalSeconds\"\n };\n function escapedRegExp(str) {\n var sanitize = str.toString().replace(/([.?*+^$[\\]\\\\(){}|-])/g, \"\\\\$1\");\n return new RegExp(sanitize);\n }\n function strftime(offsetObject) {\n return function(format) {\n var directives = format.match(/%(-|!)?[A-Z]{1}(:[^;]+;)?/gi);\n if (directives) {\n for (var i = 0, len = directives.length; i < len; ++i) {\n var directive = directives[i].match(/%(-|!)?([a-zA-Z]{1})(:[^;]+;)?/), regexp = escapedRegExp(directive[0]), modifier = directive[1] || \"\", plural = directive[3] || \"\", value = null;\n directive = directive[2];\n if (DIRECTIVE_KEY_MAP.hasOwnProperty(directive)) {\n value = DIRECTIVE_KEY_MAP[directive];\n value = Number(offsetObject[value]);\n }\n if (value !== null) {\n if (modifier === \"!\") {\n value = pluralize(plural, value);\n }\n if (modifier === \"\") {\n if (value < 10) {\n value = \"0\" + value.toString();\n }\n }\n format = format.replace(regexp, value.toString());\n }\n }\n }\n format = format.replace(/%%/, \"%\");\n return format;\n };\n }\n function pluralize(format, count) {\n var plural = \"s\", singular = \"\";\n if (format) {\n format = format.replace(/(:|;|\\s)/gi, \"\").split(/\\,/);\n if (format.length === 1) {\n plural = format[0];\n } else {\n singular = format[0];\n plural = format[1];\n }\n }\n if (Math.abs(count) > 1) {\n return plural;\n } else {\n return singular;\n }\n }\n var Countdown = function(el, finalDate, options) {\n this.el = el;\n this.$el = $(el);\n this.interval = null;\n this.offset = {};\n this.options = $.extend({}, defaultOptions);\n this.instanceNumber = instances.length;\n instances.push(this);\n this.$el.data(\"countdown-instance\", this.instanceNumber);\n if (options) {\n if (typeof options === \"function\") {\n this.$el.on(\"update.countdown\", options);\n this.$el.on(\"stoped.countdown\", options);\n this.$el.on(\"finish.countdown\", options);\n } else {\n this.options = $.extend({}, defaultOptions, options);\n }\n }\n this.setFinalDate(finalDate);\n if (this.options.defer === false) {\n this.start();\n }\n };\n $.extend(Countdown.prototype, {\n start: function() {\n if (this.interval !== null) {\n clearInterval(this.interval);\n }\n var self = this;\n this.update();\n this.interval = setInterval(function() {\n self.update.call(self);\n }, this.options.precision);\n },\n stop: function() {\n clearInterval(this.interval);\n this.interval = null;\n this.dispatchEvent(\"stoped\");\n },\n toggle: function() {\n if (this.interval) {\n this.stop();\n } else {\n this.start();\n }\n },\n pause: function() {\n this.stop();\n },\n resume: function() {\n this.start();\n },\n remove: function() {\n this.stop.call(this);\n instances[this.instanceNumber] = null;\n delete this.$el.data().countdownInstance;\n },\n setFinalDate: function(value) {\n this.finalDate = parseDateString(value);\n },\n update: function() {\n if (this.$el.closest(\"html\").length === 0) {\n this.remove();\n return;\n }\n var hasEventsAttached = $._data(this.el, \"events\") !== undefined, now = new Date(), newTotalSecsLeft;\n newTotalSecsLeft = this.finalDate.getTime() - now.getTime();\n newTotalSecsLeft = Math.ceil(newTotalSecsLeft / 1e3);\n newTotalSecsLeft = !this.options.elapse && newTotalSecsLeft < 0 ? 0 : Math.abs(newTotalSecsLeft);\n if (this.totalSecsLeft === newTotalSecsLeft || !hasEventsAttached) {\n return;\n } else {\n this.totalSecsLeft = newTotalSecsLeft;\n }\n this.elapsed = now >= this.finalDate;\n this.offset = {\n seconds: this.totalSecsLeft % 60,\n minutes: Math.floor(this.totalSecsLeft / 60) % 60,\n hours: Math.floor(this.totalSecsLeft / 60 / 60) % 24,\n days: Math.floor(this.totalSecsLeft / 60 / 60 / 24) % 7,\n daysToWeek: Math.floor(this.totalSecsLeft / 60 / 60 / 24) % 7,\n daysToMonth: Math.floor(this.totalSecsLeft / 60 / 60 / 24 % 30.4368),\n weeks: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 7),\n weeksToMonth: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 7) % 4,\n months: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 30.4368),\n years: Math.abs(this.finalDate.getFullYear() - now.getFullYear()),\n totalDays: Math.floor(this.totalSecsLeft / 60 / 60 / 24),\n totalHours: Math.floor(this.totalSecsLeft / 60 / 60),\n totalMinutes: Math.floor(this.totalSecsLeft / 60),\n totalSeconds: this.totalSecsLeft\n };\n if (!this.options.elapse && this.totalSecsLeft === 0) {\n this.stop();\n this.dispatchEvent(\"finish\");\n } else {\n this.dispatchEvent(\"update\");\n }\n },\n dispatchEvent: function(eventName) {\n var event = $.Event(eventName + \".countdown\");\n event.finalDate = this.finalDate;\n event.elapsed = this.elapsed;\n event.offset = $.extend({}, this.offset);\n event.strftime = strftime(this.offset);\n this.$el.trigger(event);\n }\n });\n $.fn.countdown = function() {\n var argumentsArray = Array.prototype.slice.call(arguments, 0);\n return this.each(function() {\n var instanceNumber = $(this).data(\"countdown-instance\");\n if (instanceNumber !== undefined) {\n var instance = instances[instanceNumber], method = argumentsArray[0];\n if (Countdown.prototype.hasOwnProperty(method)) {\n instance[method].apply(instance, argumentsArray.slice(1));\n } else if (String(method).match(/^[$A-Z_][0-9A-Z_$]*$/i) === null) {\n instance.setFinalDate.call(instance, method);\n instance.start();\n } else {\n $.error(\"Method %s does not exist on jQuery.countdown\".replace(/\\%s/gi, method));\n }\n } else {\n new Countdown(this, argumentsArray[0], argumentsArray[1]);\n }\n });\n };\n});","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"