{"version":3,"file":"assets/js/chunk-vendors.4e7cab6e.js","mappings":"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,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,KAAKC,IAAE,KAAKC,IAAE,KAAKC,IAAE,KAAKC,IAAE,KAAKC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,IAAIC,IAAE,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","sources":["webpack://hub-dash-webapp/./node_modules/vue-simplemde/src/index.vue","webpack://hub-dash-webapp/node_modules/vue-simplemde/src/index.vue","webpack://hub-dash-webapp/./node_modules/vue-simplemde/src/index.vue?18df","webpack://hub-dash-webapp/./node_modules/vue-simplemde/src/index.vue?c069","webpack://hub-dash-webapp/./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/bundle.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/dereference.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/index.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/normalize-args.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/options.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parse.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parsers/binary.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parsers/json.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parsers/text.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parsers/yaml.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/pointer.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/ref.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/refs.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/resolve-external.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/resolvers/file.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/resolvers/http.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/convert-path-to-posix.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/errors.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/is-windows.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/maybe.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/next.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/plugins.js","webpack://hub-dash-webapp/./node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/url.js","webpack://hub-dash-webapp/./node_modules/@fingerprintjs/fingerprintjs-pro/dist/fp.esm.min.js","webpack://hub-dash-webapp/./node_modules/@fullstory/snippet/dist/index.esm.js","webpack://hub-dash-webapp/./node_modules/@fullstory/browser/dist/index.esm.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack://hub-dash-webapp/../src/isomorphic.browser.ts","webpack://hub-dash-webapp/../src/stack.ts","webpack://hub-dash-webapp/../src/to-json.ts","webpack://hub-dash-webapp/../src/extend-error.ts","webpack://hub-dash-webapp/../src/normalize.ts","webpack://hub-dash-webapp/../src/constructor.ts","webpack://hub-dash-webapp/../src/singleton.ts","webpack://hub-dash-webapp/../src/index.ts","webpack://hub-dash-webapp/./node_modules/assert/build/assert.js","webpack://hub-dash-webapp/./node_modules/assert/build/internal/assert/assertion_error.js","webpack://hub-dash-webapp/./node_modules/assert/build/internal/errors.js","webpack://hub-dash-webapp/./node_modules/assert/build/internal/util/comparisons.js","webpack://hub-dash-webapp/./node_modules/axios/index.js","webpack://hub-dash-webapp/./node_modules/axios/lib/adapters/xhr.js","webpack://hub-dash-webapp/./node_modules/axios/lib/axios.js","webpack://hub-dash-webapp/./node_modules/axios/lib/cancel/Cancel.js","webpack://hub-dash-webapp/./node_modules/axios/lib/cancel/CancelToken.js","webpack://hub-dash-webapp/./node_modules/axios/lib/cancel/isCancel.js","webpack://hub-dash-webapp/./node_modules/axios/lib/core/Axios.js","webpack://hub-dash-webapp/./node_modules/axios/lib/core/InterceptorManager.js","webpack://hub-dash-webapp/./node_modules/axios/lib/core/buildFullPath.js","webpack://hub-dash-webapp/./node_modules/axios/lib/core/createError.js","webpack://hub-dash-webapp/./node_modules/axios/lib/core/dispatchRequest.js","webpack://hub-dash-webapp/./node_modules/axios/lib/core/enhanceError.js","webpack://hub-dash-webapp/./node_modules/axios/lib/core/mergeConfig.js","webpack://hub-dash-webapp/./node_modules/axios/lib/core/settle.js","webpack://hub-dash-webapp/./node_modules/axios/lib/core/transformData.js","webpack://hub-dash-webapp/./node_modules/axios/lib/defaults.js","webpack://hub-dash-webapp/./node_modules/axios/lib/helpers/bind.js","webpack://hub-dash-webapp/./node_modules/axios/lib/helpers/buildURL.js","webpack://hub-dash-webapp/./node_modules/axios/lib/helpers/combineURLs.js","webpack://hub-dash-webapp/./node_modules/axios/lib/helpers/cookies.js","webpack://hub-dash-webapp/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://hub-dash-webapp/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://hub-dash-webapp/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://hub-dash-webapp/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://hub-dash-webapp/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://hub-dash-webapp/./node_modules/axios/lib/helpers/spread.js","webpack://hub-dash-webapp/./node_modules/axios/lib/helpers/validator.js","webpack://hub-dash-webapp/./node_modules/axios/lib/utils.js","webpack://hub-dash-webapp/./node_modules/base64-js/index.js","webpack://hub-dash-webapp/./node_modules/buffer/index.js","webpack://hub-dash-webapp/./node_modules/call-bind/callBound.js","webpack://hub-dash-webapp/./node_modules/call-bind/index.js","webpack://hub-dash-webapp/./node_modules/codemirror-spell-checker/src/js/spell-checker.js","webpack://hub-dash-webapp/./node_modules/codemirror/addon/display/fullscreen.js","webpack://hub-dash-webapp/./node_modules/codemirror/addon/display/placeholder.js","webpack://hub-dash-webapp/./node_modules/codemirror/addon/edit/continuelist.js","webpack://hub-dash-webapp/./node_modules/codemirror/addon/mode/overlay.js","webpack://hub-dash-webapp/./node_modules/codemirror/addon/selection/mark-selection.js","webpack://hub-dash-webapp/./node_modules/codemirror/lib/codemirror.js","webpack://hub-dash-webapp/./node_modules/codemirror/mode/gfm/gfm.js","webpack://hub-dash-webapp/./node_modules/codemirror/mode/markdown/markdown.js","webpack://hub-dash-webapp/./node_modules/codemirror/mode/meta.js","webpack://hub-dash-webapp/./node_modules/codemirror/mode/xml/xml.js","webpack://hub-dash-webapp/./node_modules/console-browserify/index.js","webpack://hub-dash-webapp/./node_modules/define-data-property/index.js","webpack://hub-dash-webapp/./node_modules/define-properties/index.js","webpack://hub-dash-webapp/./node_modules/for-each/index.js","webpack://hub-dash-webapp/./node_modules/function-bind/implementation.js","webpack://hub-dash-webapp/./node_modules/function-bind/index.js","webpack://hub-dash-webapp/./node_modules/get-intrinsic/index.js","webpack://hub-dash-webapp/./node_modules/gopd/index.js","webpack://hub-dash-webapp/./node_modules/has-property-descriptors/index.js","webpack://hub-dash-webapp/./node_modules/has-proto/index.js","webpack://hub-dash-webapp/./node_modules/has-symbols/index.js","webpack://hub-dash-webapp/./node_modules/has-symbols/shams.js","webpack://hub-dash-webapp/./node_modules/has-tostringtag/shams.js","webpack://hub-dash-webapp/./node_modules/hasown/index.js","webpack://hub-dash-webapp/./node_modules/hub-js/lib/hub.min.js","webpack://hub-dash-webapp/./node_modules/hub-js/lib/index.js","webpack://hub-dash-webapp/./node_modules/ieee754/index.js","webpack://hub-dash-webapp/./node_modules/inherits/inherits_browser.js","webpack://hub-dash-webapp/./node_modules/is-arguments/index.js","webpack://hub-dash-webapp/./node_modules/is-callable/index.js","webpack://hub-dash-webapp/./node_modules/is-generator-function/index.js","webpack://hub-dash-webapp/./node_modules/is-nan/implementation.js","webpack://hub-dash-webapp/./node_modules/is-nan/index.js","webpack://hub-dash-webapp/./node_modules/is-nan/polyfill.js","webpack://hub-dash-webapp/./node_modules/is-nan/shim.js","webpack://hub-dash-webapp/./node_modules/is-typed-array/index.js","webpack://hub-dash-webapp/./node_modules/js-cookie/dist/js.cookie.js","webpack://hub-dash-webapp/./node_modules/js-yaml/index.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/common.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/dumper.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/exception.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/loader.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/schema.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/schema/core.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/schema/default.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/schema/failsafe.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/schema/json.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/snippet.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/type.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/type/binary.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/type/bool.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/type/float.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/type/int.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/type/map.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/type/merge.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/type/null.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/type/omap.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/type/pairs.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/type/seq.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/type/set.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/type/str.js","webpack://hub-dash-webapp/./node_modules/js-yaml/lib/type/timestamp.js","webpack://hub-dash-webapp/./node_modules/lodash.clonedeep/index.js","webpack://hub-dash-webapp/./node_modules/marked/lib/marked.js","webpack://hub-dash-webapp/./node_modules/node-fetch/browser.js","webpack://hub-dash-webapp/./node_modules/object-is/implementation.js","webpack://hub-dash-webapp/./node_modules/object-is/index.js","webpack://hub-dash-webapp/./node_modules/object-is/polyfill.js","webpack://hub-dash-webapp/./node_modules/object-is/shim.js","webpack://hub-dash-webapp/./node_modules/object-keys/implementation.js","webpack://hub-dash-webapp/./node_modules/object-keys/index.js","webpack://hub-dash-webapp/./node_modules/object-keys/isArguments.js","webpack://hub-dash-webapp/./node_modules/object.assign/implementation.js","webpack://hub-dash-webapp/./node_modules/object.assign/polyfill.js","webpack://hub-dash-webapp/./node_modules/path-browserify/index.js","webpack://hub-dash-webapp/./node_modules/process/browser.js","webpack://hub-dash-webapp/ProfileCore/webpack/universalModuleDefinition","webpack://hub-dash-webapp/ProfileCore/src/modules/account/index.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/account/read.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/authorization/delete.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/authorization/index.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/authorization/read.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/default.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/invite/create.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/invite/index.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/invite/read.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/invite/update.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/me/create.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/me/delete.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/me/index.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/me/read.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/me/update.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/merchant/create.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/merchant/index.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/merchant/read.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/mfa/create.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/mfa/index.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/mfa/read.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/onboarding/index.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/onboarding/read.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/onboarding/update.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/support/index.ts","webpack://hub-dash-webapp/ProfileCore/src/modules/support/read.ts","webpack://hub-dash-webapp/ProfileCore/src/shared/dtos/cookie.dto.ts","webpack://hub-dash-webapp/ProfileCore/src/shared/dtos/index.dto.ts","webpack://hub-dash-webapp/ProfileCore/src/shared/services/cookies.ts","webpack://hub-dash-webapp/ProfileCore/src/shared/services/local.ts","webpack://hub-dash-webapp/ProfileCore/src/shared/services/session.ts","webpack://hub-dash-webapp/ProfileCore/src/shared/services/utils.ts","webpack://hub-dash-webapp/ProfileCore/external commonjs \"js-cookie\"","webpack://hub-dash-webapp/ProfileCore/external commonjs \"support-lib\"","webpack://hub-dash-webapp/ProfileCore/external commonjs \"tslib\"","webpack://hub-dash-webapp/ProfileCore/webpack/bootstrap","webpack://hub-dash-webapp/ProfileCore/src/index.ts","webpack://hub-dash-webapp/./node_modules/register-service-worker/index.js","webpack://hub-dash-webapp/./node_modules/set-function-length/index.js","webpack://hub-dash-webapp/./node_modules/simplemde/src/js/codemirror/tablist.js","webpack://hub-dash-webapp/./node_modules/simplemde/src/js/simplemde.js","webpack://hub-dash-webapp/./node_modules/support-lib/lib/index.js","webpack://hub-dash-webapp/HttpLib/webpack/universalModuleDefinition","webpack://hub-dash-webapp/HttpLib/src/modules/auth/connect/create.ts","webpack://hub-dash-webapp/HttpLib/src/modules/commons/index.ts","webpack://hub-dash-webapp/HttpLib/src/modules/commons/read.ts","webpack://hub-dash-webapp/HttpLib/src/modules/http/Settings.ts","webpack://hub-dash-webapp/HttpLib/src/modules/http/http.ts","webpack://hub-dash-webapp/HttpLib/src/modules/http/interceptors/index.ts","webpack://hub-dash-webapp/HttpLib/src/modules/http/interceptors/requestInterceptor.ts","webpack://hub-dash-webapp/HttpLib/src/modules/http/interceptors/responseInterceptor.ts","webpack://hub-dash-webapp/HttpLib/src/modules/http/requests/index.ts","webpack://hub-dash-webapp/HttpLib/src/modules/http/requests/request.ts","webpack://hub-dash-webapp/HttpLib/src/modules/http/requests/requestNoHeader.ts","webpack://hub-dash-webapp/HttpLib/src/modules/http/requests/requestNoRefreshToken.ts","webpack://hub-dash-webapp/HttpLib/src/modules/storage/cookies.ts","webpack://hub-dash-webapp/HttpLib/src/modules/storage/index.ts","webpack://hub-dash-webapp/HttpLib/src/modules/storage/local.ts","webpack://hub-dash-webapp/HttpLib/src/modules/storage/session.ts","webpack://hub-dash-webapp/HttpLib/src/modules/utils/index.ts","webpack://hub-dash-webapp/HttpLib/src/shared/dtos/cookie.dto.ts","webpack://hub-dash-webapp/HttpLib/src/shared/dtos/index.dto.ts","webpack://hub-dash-webapp/HttpLib/external commonjs \"@fingerprintjs/fingerprintjs-pro\"","webpack://hub-dash-webapp/HttpLib/external commonjs \"axios\"","webpack://hub-dash-webapp/HttpLib/external commonjs \"js-cookie\"","webpack://hub-dash-webapp/HttpLib/external commonjs \"tslib\"","webpack://hub-dash-webapp/HttpLib/webpack/bootstrap","webpack://hub-dash-webapp/HttpLib/src/index.ts","webpack://hub-dash-webapp/./node_modules/typo-js/typo.js","webpack://hub-dash-webapp/./node_modules/util/support/isBufferBrowser.js","webpack://hub-dash-webapp/./node_modules/util/support/types.js","webpack://hub-dash-webapp/./node_modules/util/util.js","webpack://hub-dash-webapp/./node_modules/vue-codemirror/dist/vue-codemirror.js","webpack://hub-dash-webapp/./node_modules/vue-gtag/dist/vue-gtag.esm.js","webpack://hub-dash-webapp/./node_modules/vue-i18n/dist/vue-i18n.esm.js","webpack://hub-dash-webapp/./node_modules/vue-router/dist/vue-router.esm.js","webpack://hub-dash-webapp/./node_modules/vue/dist/vue.runtime.esm.js","webpack://hub-dash-webapp/./node_modules/vuex/dist/vuex.esm.js","webpack://hub-dash-webapp/./node_modules/webfontloader/webfontloader.js","webpack://hub-dash-webapp/./node_modules/which-typed-array/index.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/construct.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/createClass.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/createSuper.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/inherits.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/isNativeFunction.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/toPrimitive.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/typeof.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/wrapNativeSuper.js","webpack://hub-dash-webapp/./node_modules/available-typed-arrays/index.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/a-callable.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/a-possible-prototype.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/an-instance.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/an-object.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/array-buffer-basic-detection.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/array-buffer-view-core.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/array-from-constructor-and-list.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/array-includes.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/array-set-length.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/array-slice.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/array-to-reversed.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/array-with.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/classof-raw.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/classof.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/create-property-descriptor.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/define-built-in.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/define-global-property.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/descriptors.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/document-all.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/document-create-element.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/dom-exception-constants.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/engine-is-bun.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/engine-is-ios.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/engine-is-node.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/engine-user-agent.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/engine-v8-version.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/enum-bug-keys.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/error-stack-clear.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/export.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/fails.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/function-apply.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/function-bind-context.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/function-bind-native.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/function-call.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/function-name.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/function-uncurry-this.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/get-built-in.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/get-method.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/global.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/has-own-property.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/hidden-keys.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/html.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/ie8-dom-define.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/indexed-object.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/inherit-if-required.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/inspect-source.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/internal-state.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/is-array.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/is-big-int-array.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/is-callable.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/is-forced.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/is-object.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/is-pure.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/is-symbol.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/length-of-array-like.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/make-built-in.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/math-trunc.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/normalize-string-argument.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/object-define-property.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/object-keys-internal.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/own-keys.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/regexp-flags.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/require-object-coercible.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/schedulers-fix.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/shared-key.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/shared-store.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/shared.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/task.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/to-absolute-index.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/to-big-int.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/to-indexed-object.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/to-length.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/to-object.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/to-primitive.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/to-property-key.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/to-string-tag-support.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/to-string.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/try-to-string.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/uid.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/validate-arguments-length.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://hub-dash-webapp/./node_modules/core-js/internals/well-known-symbol.js","webpack://hub-dash-webapp/./node_modules/core-js/modules/es.array.push.js","webpack://hub-dash-webapp/./node_modules/core-js/modules/es.regexp.flags.js","webpack://hub-dash-webapp/./node_modules/core-js/modules/es.typed-array.to-reversed.js","webpack://hub-dash-webapp/./node_modules/core-js/modules/es.typed-array.to-sorted.js","webpack://hub-dash-webapp/./node_modules/core-js/modules/es.typed-array.with.js","webpack://hub-dash-webapp/./node_modules/core-js/modules/web.clear-immediate.js","webpack://hub-dash-webapp/./node_modules/core-js/modules/web.dom-exception.stack.js","webpack://hub-dash-webapp/./node_modules/core-js/modules/web.immediate.js","webpack://hub-dash-webapp/./node_modules/core-js/modules/web.set-immediate.js","webpack://hub-dash-webapp/./node_modules/core-js/modules/web.url-search-params.delete.js","webpack://hub-dash-webapp/./node_modules/core-js/modules/web.url-search-params.has.js","webpack://hub-dash-webapp/./node_modules/core-js/modules/web.url-search-params.size.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://hub-dash-webapp/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://hub-dash-webapp/./node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"vue-simplemde\"},[_c('textarea',{staticClass:\"vue-simplemde-textarea\",attrs:{\"name\":_vm.name},domProps:{\"value\":_vm.modelValue},on:{\"input\":function($event){return _vm.handleInput($event.target.value)}}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=d9b25848\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=d9b25848&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ref_js_1 = __importDefault(require(\"./ref.js\"));\nconst pointer_js_1 = __importDefault(require(\"./pointer.js\"));\nconst url = __importStar(require(\"./util/url.js\"));\nexports.default = bundle;\n/**\n * Bundles all external JSON references into the main JSON schema, thus resulting in a schema that\n * only has *internal* references, not any *external* references.\n * This method mutates the JSON schema object, adding new references and re-mapping existing ones.\n *\n * @param parser\n * @param options\n */\nfunction bundle(parser, options) {\n // console.log('Bundling $ref pointers in %s', parser.$refs._root$Ref.path);\n // Build an inventory of all $ref pointers in the JSON Schema\n const inventory = [];\n crawl(parser, \"schema\", parser.$refs._root$Ref.path + \"#\", \"#\", 0, inventory, parser.$refs, options);\n // Remap all $ref pointers\n remap(inventory);\n}\n/**\n * Recursively crawls the given value, and inventories all JSON references.\n *\n * @param parent - The object containing the value to crawl. If the value is not an object or array, it will be ignored.\n * @param key - The property key of `parent` to be crawled\n * @param path - The full path of the property being crawled, possibly with a JSON Pointer in the hash\n * @param pathFromRoot - The path of the property being crawled, from the schema root\n * @param inventory - An array of already-inventoried $ref pointers\n * @param $refs\n * @param options\n */\nfunction crawl(parent, key, path, pathFromRoot, indirections, inventory, $refs, options) {\n const obj = key === null ? parent : parent[key];\n if (obj && typeof obj === \"object\" && !ArrayBuffer.isView(obj)) {\n // @ts-expect-error TS(2554): Expected 2 arguments, but got 1.\n if (ref_js_1.default.isAllowed$Ref(obj)) {\n inventory$Ref(parent, key, path, pathFromRoot, indirections, inventory, $refs, options);\n }\n else {\n // Crawl the object in a specific order that's optimized for bundling.\n // This is important because it determines how `pathFromRoot` gets built,\n // which later determines which keys get dereferenced and which ones get remapped\n const keys = Object.keys(obj).sort((a, b) => {\n // Most people will expect references to be bundled into the the \"definitions\" property,\n // so we always crawl that property first, if it exists.\n if (a === \"definitions\") {\n return -1;\n }\n else if (b === \"definitions\") {\n return 1;\n }\n else {\n // Otherwise, crawl the keys based on their length.\n // This produces the shortest possible bundled references\n return a.length - b.length;\n }\n });\n // eslint-disable-next-line no-shadow\n for (const key of keys) {\n const keyPath = pointer_js_1.default.join(path, key);\n const keyPathFromRoot = pointer_js_1.default.join(pathFromRoot, key);\n const value = obj[key];\n // @ts-expect-error TS(2554): Expected 2 arguments, but got 1.\n if (ref_js_1.default.isAllowed$Ref(value)) {\n inventory$Ref(obj, key, path, keyPathFromRoot, indirections, inventory, $refs, options);\n }\n else {\n crawl(obj, key, keyPath, keyPathFromRoot, indirections, inventory, $refs, options);\n }\n }\n }\n }\n}\n/**\n * Inventories the given JSON Reference (i.e. records detailed information about it so we can\n * optimize all $refs in the schema), and then crawls the resolved value.\n *\n * @param $refParent - The object that contains a JSON Reference as one of its keys\n * @param $refKey - The key in `$refParent` that is a JSON Reference\n * @param path - The full path of the JSON Reference at `$refKey`, possibly with a JSON Pointer in the hash\n * @param indirections - unknown\n * @param pathFromRoot - The path of the JSON Reference at `$refKey`, from the schema root\n * @param inventory - An array of already-inventoried $ref pointers\n * @param $refs\n * @param options\n */\nfunction inventory$Ref($refParent, $refKey, path, pathFromRoot, indirections, inventory, $refs, options) {\n const $ref = $refKey === null ? $refParent : $refParent[$refKey];\n const $refPath = url.resolve(path, $ref.$ref);\n const pointer = $refs._resolve($refPath, pathFromRoot, options);\n if (pointer === null) {\n return;\n }\n const depth = pointer_js_1.default.parse(pathFromRoot).length;\n const file = url.stripHash(pointer.path);\n const hash = url.getHash(pointer.path);\n const external = file !== $refs._root$Ref.path;\n const extended = ref_js_1.default.isExtended$Ref($ref);\n indirections += pointer.indirections;\n const existingEntry = findInInventory(inventory, $refParent, $refKey);\n if (existingEntry) {\n // This $Ref has already been inventoried, so we don't need to process it again\n if (depth < existingEntry.depth || indirections < existingEntry.indirections) {\n removeFromInventory(inventory, existingEntry);\n }\n else {\n return;\n }\n }\n inventory.push({\n $ref,\n parent: $refParent,\n key: $refKey,\n pathFromRoot,\n depth,\n file,\n hash,\n value: pointer.value,\n circular: pointer.circular,\n extended,\n external,\n indirections, // The number of indirect references that were traversed to resolve the value\n });\n // Recursively crawl the resolved value\n if (!existingEntry || external) {\n crawl(pointer.value, null, pointer.path, pathFromRoot, indirections + 1, inventory, $refs, options);\n }\n}\n/**\n * Re-maps every $ref pointer, so that they're all relative to the root of the JSON Schema.\n * Each referenced value is dereferenced EXACTLY ONCE. All subsequent references to the same\n * value are re-mapped to point to the first reference.\n *\n * @example: {\n * first: { $ref: somefile.json#/some/part },\n * second: { $ref: somefile.json#/another/part },\n * third: { $ref: somefile.json },\n * fourth: { $ref: somefile.json#/some/part/sub/part }\n * }\n *\n * In this example, there are four references to the same file, but since the third reference points\n * to the ENTIRE file, that's the only one we need to dereference. The other three can just be\n * remapped to point inside the third one.\n *\n * On the other hand, if the third reference DIDN'T exist, then the first and second would both need\n * to be dereferenced, since they point to different parts of the file. The fourth reference does NOT\n * need to be dereferenced, because it can be remapped to point inside the first one.\n *\n * @param inventory\n */\nfunction remap(inventory) {\n // Group & sort all the $ref pointers, so they're in the order that we need to dereference/remap them\n inventory.sort((a, b) => {\n if (a.file !== b.file) {\n // Group all the $refs that point to the same file\n return a.file < b.file ? -1 : +1;\n }\n else if (a.hash !== b.hash) {\n // Group all the $refs that point to the same part of the file\n return a.hash < b.hash ? -1 : +1;\n }\n else if (a.circular !== b.circular) {\n // If the $ref points to itself, then sort it higher than other $refs that point to this $ref\n return a.circular ? -1 : +1;\n }\n else if (a.extended !== b.extended) {\n // If the $ref extends the resolved value, then sort it lower than other $refs that don't extend the value\n return a.extended ? +1 : -1;\n }\n else if (a.indirections !== b.indirections) {\n // Sort direct references higher than indirect references\n return a.indirections - b.indirections;\n }\n else if (a.depth !== b.depth) {\n // Sort $refs by how close they are to the JSON Schema root\n return a.depth - b.depth;\n }\n else {\n // Determine how far each $ref is from the \"definitions\" property.\n // Most people will expect references to be bundled into the the \"definitions\" property if possible.\n const aDefinitionsIndex = a.pathFromRoot.lastIndexOf(\"/definitions\");\n const bDefinitionsIndex = b.pathFromRoot.lastIndexOf(\"/definitions\");\n if (aDefinitionsIndex !== bDefinitionsIndex) {\n // Give higher priority to the $ref that's closer to the \"definitions\" property\n return bDefinitionsIndex - aDefinitionsIndex;\n }\n else {\n // All else is equal, so use the shorter path, which will produce the shortest possible reference\n return a.pathFromRoot.length - b.pathFromRoot.length;\n }\n }\n });\n let file, hash, pathFromRoot;\n for (const entry of inventory) {\n // console.log('Re-mapping $ref pointer \"%s\" at %s', entry.$ref.$ref, entry.pathFromRoot);\n if (!entry.external) {\n // This $ref already resolves to the main JSON Schema file\n entry.$ref.$ref = entry.hash;\n }\n else if (entry.file === file && entry.hash === hash) {\n // This $ref points to the same value as the prevous $ref, so remap it to the same path\n entry.$ref.$ref = pathFromRoot;\n }\n else if (entry.file === file && entry.hash.indexOf(hash + \"/\") === 0) {\n // This $ref points to a sub-value of the prevous $ref, so remap it beneath that path\n entry.$ref.$ref = pointer_js_1.default.join(pathFromRoot, pointer_js_1.default.parse(entry.hash.replace(hash, \"#\")));\n }\n else {\n // We've moved to a new file or new hash\n file = entry.file;\n hash = entry.hash;\n pathFromRoot = entry.pathFromRoot;\n // This is the first $ref to point to this value, so dereference the value.\n // Any other $refs that point to the same value will point to this $ref instead\n entry.$ref = entry.parent[entry.key] = ref_js_1.default.dereference(entry.$ref, entry.value);\n if (entry.circular) {\n // This $ref points to itself\n entry.$ref.$ref = entry.pathFromRoot;\n }\n }\n // console.log(' new value: %s', (entry.$ref && entry.$ref.$ref) ? entry.$ref.$ref : '[object Object]');\n }\n}\n/**\n * TODO\n */\nfunction findInInventory(inventory, $refParent, $refKey) {\n for (let i = 0; i < inventory.length; i++) {\n const existingEntry = inventory[i];\n if (existingEntry.parent === $refParent && existingEntry.key === $refKey) {\n return existingEntry;\n }\n }\n}\nfunction removeFromInventory(inventory, entry) {\n const index = inventory.indexOf(entry);\n inventory.splice(index, 1);\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ref_js_1 = __importDefault(require(\"./ref.js\"));\nconst pointer_js_1 = __importDefault(require(\"./pointer.js\"));\nconst ono_1 = require(\"@jsdevtools/ono\");\nconst url = __importStar(require(\"./util/url.js\"));\nexports.default = dereference;\n/**\n * Crawls the JSON schema, finds all JSON references, and dereferences them.\n * This method mutates the JSON schema object, replacing JSON references with their resolved value.\n *\n * @param parser\n * @param options\n */\nfunction dereference(parser, options) {\n // console.log('Dereferencing $ref pointers in %s', parser.$refs._root$Ref.path);\n const dereferenced = crawl(parser.schema, parser.$refs._root$Ref.path, \"#\", new Set(), new Set(), new Map(), parser.$refs, options);\n parser.$refs.circular = dereferenced.circular;\n parser.schema = dereferenced.value;\n}\n/**\n * Recursively crawls the given value, and dereferences any JSON references.\n *\n * @param obj - The value to crawl. If it's not an object or array, it will be ignored.\n * @param path - The full path of `obj`, possibly with a JSON Pointer in the hash\n * @param pathFromRoot - The path of `obj` from the schema root\n * @param parents - An array of the parent objects that have already been dereferenced\n * @param processedObjects - An array of all the objects that have already been processed\n * @param dereferencedCache - An map of all the dereferenced objects\n * @param $refs\n * @param options\n * @returns\n */\nfunction crawl(obj, path, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options) {\n let dereferenced;\n const result = {\n value: obj,\n circular: false,\n };\n const isExcludedPath = options.dereference.excludedPathMatcher || (() => false);\n if (options.dereference.circular === \"ignore\" || !processedObjects.has(obj)) {\n if (obj && typeof obj === \"object\" && !ArrayBuffer.isView(obj) && !isExcludedPath(pathFromRoot)) {\n parents.add(obj);\n processedObjects.add(obj);\n if (ref_js_1.default.isAllowed$Ref(obj, options)) {\n dereferenced = dereference$Ref(obj, path, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options);\n result.circular = dereferenced.circular;\n result.value = dereferenced.value;\n }\n else {\n for (const key of Object.keys(obj)) {\n const keyPath = pointer_js_1.default.join(path, key);\n const keyPathFromRoot = pointer_js_1.default.join(pathFromRoot, key);\n if (isExcludedPath(keyPathFromRoot)) {\n continue;\n }\n const value = obj[key];\n let circular = false;\n if (ref_js_1.default.isAllowed$Ref(value, options)) {\n dereferenced = dereference$Ref(value, keyPath, keyPathFromRoot, parents, processedObjects, dereferencedCache, $refs, options);\n circular = dereferenced.circular;\n // Avoid pointless mutations; breaks frozen objects to no profit\n if (obj[key] !== dereferenced.value) {\n obj[key] = dereferenced.value;\n if (options.dereference.onDereference) {\n options.dereference.onDereference(value.$ref, obj[key]);\n }\n }\n }\n else {\n if (!parents.has(value)) {\n dereferenced = crawl(value, keyPath, keyPathFromRoot, parents, processedObjects, dereferencedCache, $refs, options);\n circular = dereferenced.circular;\n // Avoid pointless mutations; breaks frozen objects to no profit\n if (obj[key] !== dereferenced.value) {\n obj[key] = dereferenced.value;\n }\n }\n else {\n circular = foundCircularReference(keyPath, $refs, options);\n }\n }\n // Set the \"isCircular\" flag if this or any other property is circular\n result.circular = result.circular || circular;\n }\n }\n parents.delete(obj);\n }\n }\n return result;\n}\n/**\n * Dereferences the given JSON Reference, and then crawls the resulting value.\n *\n * @param $ref - The JSON Reference to resolve\n * @param path - The full path of `$ref`, possibly with a JSON Pointer in the hash\n * @param pathFromRoot - The path of `$ref` from the schema root\n * @param parents - An array of the parent objects that have already been dereferenced\n * @param processedObjects - An array of all the objects that have already been dereferenced\n * @param dereferencedCache - An map of all the dereferenced objects\n * @param $refs\n * @param options\n * @returns\n */\nfunction dereference$Ref($ref, path, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options) {\n // console.log('Dereferencing $ref pointer \"%s\" at %s', $ref.$ref, path);\n const isExternalRef = ref_js_1.default.isExternal$Ref($ref);\n const shouldResolveOnCwd = isExternalRef && options?.dereference.externalReferenceResolution === \"root\";\n const $refPath = url.resolve(shouldResolveOnCwd ? url.cwd() : path, $ref.$ref);\n const cache = dereferencedCache.get($refPath);\n if (cache) {\n const refKeys = Object.keys($ref);\n if (refKeys.length > 1) {\n const extraKeys = {};\n for (const key of refKeys) {\n if (key !== \"$ref\" && !(key in cache.value)) {\n // @ts-expect-error TS(7053): Element implicitly has an 'any' type because expre... Remove this comment to see the full error message\n extraKeys[key] = $ref[key];\n }\n }\n return {\n circular: cache.circular,\n value: Object.assign({}, cache.value, extraKeys),\n };\n }\n return cache;\n }\n const pointer = $refs._resolve($refPath, path, options);\n if (pointer === null) {\n return {\n circular: false,\n value: null,\n };\n }\n // Check for circular references\n const directCircular = pointer.circular;\n let circular = directCircular || parents.has(pointer.value);\n circular && foundCircularReference(path, $refs, options);\n // Dereference the JSON reference\n let dereferencedValue = ref_js_1.default.dereference($ref, pointer.value);\n // Crawl the dereferenced value (unless it's circular)\n if (!circular) {\n // Determine if the dereferenced value is circular\n const dereferenced = crawl(dereferencedValue, pointer.path, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options);\n circular = dereferenced.circular;\n dereferencedValue = dereferenced.value;\n }\n if (circular && !directCircular && options.dereference.circular === \"ignore\") {\n // The user has chosen to \"ignore\" circular references, so don't change the value\n dereferencedValue = $ref;\n }\n if (directCircular) {\n // The pointer is a DIRECT circular reference (i.e. it references itself).\n // So replace the $ref path with the absolute path from the JSON Schema root\n dereferencedValue.$ref = pathFromRoot;\n }\n const dereferencedObject = {\n circular,\n value: dereferencedValue,\n };\n // only cache if no extra properties than $ref\n if (Object.keys($ref).length === 1) {\n dereferencedCache.set($refPath, dereferencedObject);\n }\n return dereferencedObject;\n}\n/**\n * Called when a circular reference is found.\n * It sets the {@link $Refs#circular} flag, and throws an error if options.dereference.circular is false.\n *\n * @param keyPath - The JSON Reference path of the circular reference\n * @param $refs\n * @param options\n * @returns - always returns true, to indicate that a circular reference was found\n */\nfunction foundCircularReference(keyPath, $refs, options) {\n $refs.circular = true;\n if (!options.dereference.circular) {\n throw ono_1.ono.reference(`Circular $ref pointer found at ${keyPath}`);\n }\n return true;\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dereference = exports.bundle = exports.resolve = exports.parse = exports.$RefParser = exports.UnmatchedResolverError = exports.UnmatchedParserError = exports.ParserError = exports.ResolverError = exports.MissingPointerError = exports.InvalidPointerError = exports.JSONParserError = void 0;\nconst refs_js_1 = __importDefault(require(\"./refs.js\"));\nconst parse_js_1 = __importDefault(require(\"./parse.js\"));\nconst normalize_args_js_1 = __importDefault(require(\"./normalize-args.js\"));\nconst resolve_external_js_1 = __importDefault(require(\"./resolve-external.js\"));\nconst bundle_js_1 = __importDefault(require(\"./bundle.js\"));\nconst dereference_js_1 = __importDefault(require(\"./dereference.js\"));\nconst url = __importStar(require(\"./util/url.js\"));\nconst errors_js_1 = require(\"./util/errors.js\");\nObject.defineProperty(exports, \"JSONParserError\", { enumerable: true, get: function () { return errors_js_1.JSONParserError; } });\nObject.defineProperty(exports, \"InvalidPointerError\", { enumerable: true, get: function () { return errors_js_1.InvalidPointerError; } });\nObject.defineProperty(exports, \"MissingPointerError\", { enumerable: true, get: function () { return errors_js_1.MissingPointerError; } });\nObject.defineProperty(exports, \"ResolverError\", { enumerable: true, get: function () { return errors_js_1.ResolverError; } });\nObject.defineProperty(exports, \"ParserError\", { enumerable: true, get: function () { return errors_js_1.ParserError; } });\nObject.defineProperty(exports, \"UnmatchedParserError\", { enumerable: true, get: function () { return errors_js_1.UnmatchedParserError; } });\nObject.defineProperty(exports, \"UnmatchedResolverError\", { enumerable: true, get: function () { return errors_js_1.UnmatchedResolverError; } });\nconst ono_1 = require(\"@jsdevtools/ono\");\nconst maybe_js_1 = __importDefault(require(\"./util/maybe.js\"));\n/**\n * This class parses a JSON schema, builds a map of its JSON references and their resolved values,\n * and provides methods for traversing, manipulating, and dereferencing those references.\n *\n * @class\n */\nclass $RefParser {\n constructor() {\n /**\n * The parsed (and possibly dereferenced) JSON schema object\n *\n * @type {object}\n * @readonly\n */\n this.schema = null;\n /**\n * The resolved JSON references\n *\n * @type {$Refs}\n * @readonly\n */\n this.$refs = new refs_js_1.default();\n }\n async parse() {\n const args = (0, normalize_args_js_1.default)(arguments);\n let promise;\n if (!args.path && !args.schema) {\n const err = (0, ono_1.ono)(`Expected a file path, URL, or object. Got ${args.path || args.schema}`);\n return (0, maybe_js_1.default)(args.callback, Promise.reject(err));\n }\n // Reset everything\n this.schema = null;\n this.$refs = new refs_js_1.default();\n // If the path is a filesystem path, then convert it to a URL.\n // NOTE: According to the JSON Reference spec, these should already be URLs,\n // but, in practice, many people use local filesystem paths instead.\n // So we're being generous here and doing the conversion automatically.\n // This is not intended to be a 100% bulletproof solution.\n // If it doesn't work for your use-case, then use a URL instead.\n let pathType = \"http\";\n if (url.isFileSystemPath(args.path)) {\n args.path = url.fromFileSystemPath(args.path);\n pathType = \"file\";\n }\n else if (!args.path && args.schema && args.schema.$id) {\n // when schema id has defined an URL should use that hostname to request the references,\n // instead of using the current page URL\n const params = url.parse(args.schema.$id);\n const port = params.protocol === \"https:\" ? 443 : 80;\n args.path = `${params.protocol}//${params.hostname}:${port}`;\n }\n // Resolve the absolute path of the schema\n args.path = url.resolve(url.cwd(), args.path);\n if (args.schema && typeof args.schema === \"object\") {\n // A schema object was passed-in.\n // So immediately add a new $Ref with the schema object as its value\n const $ref = this.$refs._add(args.path);\n $ref.value = args.schema;\n $ref.pathType = pathType;\n promise = Promise.resolve(args.schema);\n }\n else {\n // Parse the schema file/url\n promise = (0, parse_js_1.default)(args.path, this.$refs, args.options);\n }\n try {\n const result = await promise;\n if (result !== null && typeof result === \"object\" && !Buffer.isBuffer(result)) {\n this.schema = result;\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(this.schema));\n }\n else if (args.options.continueOnError) {\n this.schema = null; // it's already set to null at line 79, but let's set it again for the sake of readability\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(this.schema));\n }\n else {\n throw ono_1.ono.syntax(`\"${this.$refs._root$Ref.path || result}\" is not a valid JSON Schema`);\n }\n }\n catch (err) {\n if (!args.options.continueOnError || !(0, errors_js_1.isHandledError)(err)) {\n return (0, maybe_js_1.default)(args.callback, Promise.reject(err));\n }\n if (this.$refs._$refs[url.stripHash(args.path)]) {\n this.$refs._$refs[url.stripHash(args.path)].addError(err);\n }\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(null));\n }\n }\n static parse() {\n const parser = new $RefParser();\n return parser.parse.apply(parser, arguments);\n }\n /**\n * Parses the given JSON schema and resolves any JSON references, including references in\n * externally-referenced files.\n *\n * @param [path] - The file path or URL of the JSON schema\n * @param [schema] - A JSON schema object. This object will be used instead of reading from `path`.\n * @param [options] - Options that determine how the schema is parsed and resolved\n * @param [callback]\n * - An error-first callback. The second parameter is a {@link $Refs} object containing the resolved JSON references\n *\n * @returns\n * The returned promise resolves with a {@link $Refs} object containing the resolved JSON references\n */\n async resolve() {\n const args = (0, normalize_args_js_1.default)(arguments);\n try {\n await this.parse(args.path, args.schema, args.options);\n await (0, resolve_external_js_1.default)(this, args.options);\n finalize(this);\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(this.$refs));\n }\n catch (err) {\n return (0, maybe_js_1.default)(args.callback, Promise.reject(err));\n }\n }\n static resolve() {\n const instance = new $RefParser();\n return instance.resolve.apply(instance, arguments);\n }\n static bundle() {\n const instance = new $RefParser();\n return instance.bundle.apply(instance, arguments);\n }\n async bundle() {\n const args = (0, normalize_args_js_1.default)(arguments);\n try {\n await this.resolve(args.path, args.schema, args.options);\n (0, bundle_js_1.default)(this, args.options);\n finalize(this);\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(this.schema));\n }\n catch (err) {\n return (0, maybe_js_1.default)(args.callback, Promise.reject(err));\n }\n }\n static dereference() {\n const instance = new $RefParser();\n return instance.dereference.apply(instance, arguments);\n }\n async dereference() {\n const args = (0, normalize_args_js_1.default)(arguments);\n try {\n await this.resolve(args.path, args.schema, args.options);\n (0, dereference_js_1.default)(this, args.options);\n finalize(this);\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(this.schema));\n }\n catch (err) {\n return (0, maybe_js_1.default)(args.callback, Promise.reject(err));\n }\n }\n}\nexports.$RefParser = $RefParser;\nexports.default = $RefParser;\nfunction finalize(parser) {\n const errors = errors_js_1.JSONParserErrorGroup.getParserErrors(parser);\n if (errors.length > 0) {\n throw new errors_js_1.JSONParserErrorGroup(parser);\n }\n}\nexports.parse = $RefParser.parse;\nexports.resolve = $RefParser.resolve;\nexports.bundle = $RefParser.bundle;\nexports.dereference = $RefParser.dereference;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst options_js_1 = require(\"./options.js\");\nexports.default = normalizeArgs;\n/**\n * Normalizes the given arguments, accounting for optional args.\n */\nfunction normalizeArgs(_args) {\n let path, schema, options, callback;\n const args = Array.prototype.slice.call(_args);\n if (typeof args[args.length - 1] === \"function\") {\n // The last parameter is a callback function\n callback = args.pop();\n }\n if (typeof args[0] === \"string\") {\n // The first parameter is the path\n path = args[0];\n if (typeof args[2] === \"object\") {\n // The second parameter is the schema, and the third parameter is the options\n schema = args[1];\n options = args[2];\n }\n else {\n // The second parameter is the options\n schema = undefined;\n options = args[1];\n }\n }\n else {\n // The first parameter is the schema\n path = \"\";\n schema = args[0];\n options = args[1];\n }\n options = (0, options_js_1.getNewOptions)(options);\n return {\n path,\n schema,\n options,\n callback,\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getNewOptions = void 0;\nconst json_js_1 = __importDefault(require(\"./parsers/json.js\"));\nconst yaml_js_1 = __importDefault(require(\"./parsers/yaml.js\"));\nconst text_js_1 = __importDefault(require(\"./parsers/text.js\"));\nconst binary_js_1 = __importDefault(require(\"./parsers/binary.js\"));\nconst file_js_1 = __importDefault(require(\"./resolvers/file.js\"));\nconst http_js_1 = __importDefault(require(\"./resolvers/http.js\"));\nconst lodash_clonedeep_1 = __importDefault(require(\"lodash.clonedeep\"));\nconst getDefaults = () => {\n const defaults = {\n /**\n * Determines how different types of files will be parsed.\n *\n * You can add additional parsers of your own, replace an existing one with\n * your own implementation, or disable any parser by setting it to false.\n */\n parse: {\n json: json_js_1.default,\n yaml: yaml_js_1.default,\n text: text_js_1.default,\n binary: binary_js_1.default,\n },\n /**\n * Determines how JSON References will be resolved.\n *\n * You can add additional resolvers of your own, replace an existing one with\n * your own implementation, or disable any resolver by setting it to false.\n */\n resolve: {\n file: file_js_1.default,\n http: http_js_1.default,\n /**\n * Determines whether external $ref pointers will be resolved.\n * If this option is disabled, then none of above resolvers will be called.\n * Instead, external $ref pointers will simply be ignored.\n *\n * @type {boolean}\n */\n external: true,\n },\n /**\n * By default, JSON Schema $Ref Parser throws the first error it encounters. Setting `continueOnError` to `true`\n * causes it to keep processing as much as possible and then throw a single error that contains all errors\n * that were encountered.\n */\n continueOnError: false,\n /**\n * Determines the types of JSON references that are allowed.\n */\n dereference: {\n /**\n * Dereference circular (recursive) JSON references?\n * If false, then a {@link ReferenceError} will be thrown if a circular reference is found.\n * If \"ignore\", then circular references will not be dereferenced.\n *\n * @type {boolean|string}\n */\n circular: true,\n /**\n * A function, called for each path, which can return true to stop this path and all\n * subpaths from being dereferenced further. This is useful in schemas where some\n * subpaths contain literal $ref keys that should not be dereferenced.\n *\n * @type {function}\n */\n excludedPathMatcher: () => false,\n referenceResolution: \"relative\",\n },\n };\n return (0, lodash_clonedeep_1.default)(defaults);\n};\nconst getNewOptions = (options) => {\n const newOptions = getDefaults();\n if (options) {\n merge(newOptions, options);\n }\n return newOptions;\n};\nexports.getNewOptions = getNewOptions;\n/**\n * Merges the properties of the source object into the target object.\n *\n * @param target - The object that we're populating\n * @param source - The options that are being merged\n * @returns\n */\nfunction merge(target, source) {\n if (isMergeable(source)) {\n const keys = Object.keys(source);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const sourceSetting = source[key];\n const targetSetting = target[key];\n if (isMergeable(sourceSetting)) {\n // It's a nested object, so merge it recursively\n target[key] = merge(targetSetting || {}, sourceSetting);\n }\n else if (sourceSetting !== undefined) {\n // It's a scalar value, function, or array. No merging necessary. Just overwrite the target value.\n target[key] = sourceSetting;\n }\n }\n }\n return target;\n}\n/**\n * Determines whether the given value can be merged,\n * or if it is a scalar value that should just override the target value.\n *\n * @param val\n * @returns\n */\nfunction isMergeable(val) {\n return val && typeof val === \"object\" && !Array.isArray(val) && !(val instanceof RegExp) && !(val instanceof Date);\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ono_1 = require(\"@jsdevtools/ono\");\nconst url = __importStar(require(\"./util/url.js\"));\nconst plugins = __importStar(require(\"./util/plugins.js\"));\nconst errors_js_1 = require(\"./util/errors.js\");\nexports.default = parse;\n/**\n * Reads and parses the specified file path or URL.\n */\nasync function parse(path, $refs, options) {\n // Remove the URL fragment, if any\n path = url.stripHash(path);\n // Add a new $Ref for this file, even though we don't have the value yet.\n // This ensures that we don't simultaneously read & parse the same file multiple times\n const $ref = $refs._add(path);\n // This \"file object\" will be passed to all resolvers and parsers.\n const file = {\n url: path,\n extension: url.getExtension(path),\n };\n // Read the file and then parse the data\n try {\n const resolver = await readFile(file, options, $refs);\n $ref.pathType = resolver.plugin.name;\n file.data = resolver.result;\n const parser = await parseFile(file, options, $refs);\n $ref.value = parser.result;\n return parser.result;\n }\n catch (err) {\n if ((0, errors_js_1.isHandledError)(err)) {\n $ref.value = err;\n }\n throw err;\n }\n}\n/**\n * Reads the given file, using the configured resolver plugins\n *\n * @param file - An object containing information about the referenced file\n * @param file.url - The full URL of the referenced file\n * @param file.extension - The lowercased file extension (e.g. \".txt\", \".html\", etc.)\n * @param options\n *\n * @returns\n * The promise resolves with the raw file contents and the resolver that was used.\n */\nasync function readFile(file, options, $refs) {\n // console.log('Reading %s', file.url);\n // Find the resolvers that can read this file\n let resolvers = plugins.all(options.resolve);\n resolvers = plugins.filter(resolvers, \"canRead\", file);\n // Run the resolvers, in order, until one of them succeeds\n plugins.sort(resolvers);\n try {\n const data = await plugins.run(resolvers, \"read\", file, $refs);\n return data;\n }\n catch (err) {\n if (!err && options.continueOnError) {\n // No resolver could be matched\n throw new errors_js_1.UnmatchedResolverError(file.url);\n }\n else if (!err || !(\"error\" in err)) {\n // Throw a generic, friendly error.\n throw ono_1.ono.syntax(`Unable to resolve $ref pointer \"${file.url}\"`);\n }\n // Throw the original error, if it's one of our own (user-friendly) errors.\n else if (err.error instanceof errors_js_1.ResolverError) {\n throw err.error;\n }\n else {\n throw new errors_js_1.ResolverError(err, file.url);\n }\n }\n}\n/**\n * Parses the given file's contents, using the configured parser plugins.\n *\n * @param file - An object containing information about the referenced file\n * @param file.url - The full URL of the referenced file\n * @param file.extension - The lowercased file extension (e.g. \".txt\", \".html\", etc.)\n * @param file.data - The file contents. This will be whatever data type was returned by the resolver\n * @param options\n *\n * @returns\n * The promise resolves with the parsed file contents and the parser that was used.\n */\nasync function parseFile(file, options, $refs) {\n // console.log('Parsing %s', file.url);\n // Find the parsers that can read this file type.\n // If none of the parsers are an exact match for this file, then we'll try ALL of them.\n // This handles situations where the file IS a supported type, just with an unknown extension.\n const allParsers = plugins.all(options.parse);\n const filteredParsers = plugins.filter(allParsers, \"canParse\", file);\n const parsers = filteredParsers.length > 0 ? filteredParsers : allParsers;\n // Run the parsers, in order, until one of them succeeds\n plugins.sort(parsers);\n try {\n const parser = await plugins.run(parsers, \"parse\", file, $refs);\n if (!parser.plugin.allowEmpty && isEmpty(parser.result)) {\n throw ono_1.ono.syntax(`Error parsing \"${file.url}\" as ${parser.plugin.name}. \\nParsed value is empty`);\n }\n else {\n return parser;\n }\n }\n catch (err) {\n if (!err && options.continueOnError) {\n // No resolver could be matched\n throw new errors_js_1.UnmatchedParserError(file.url);\n }\n else if (err && err.message && err.message.startsWith(\"Error parsing\")) {\n throw err;\n }\n else if (!err || !(\"error\" in err)) {\n throw ono_1.ono.syntax(`Unable to parse ${file.url}`);\n }\n else if (err.error instanceof errors_js_1.ParserError) {\n throw err.error;\n }\n else {\n throw new errors_js_1.ParserError(err.error.message, file.url);\n }\n }\n}\n/**\n * Determines whether the parsed value is \"empty\".\n *\n * @param value\n * @returns\n */\nfunction isEmpty(value) {\n return (value === undefined ||\n (typeof value === \"object\" && Object.keys(value).length === 0) ||\n (typeof value === \"string\" && value.trim().length === 0) ||\n (Buffer.isBuffer(value) && value.length === 0));\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst BINARY_REGEXP = /\\.(jpeg|jpg|gif|png|bmp|ico)$/i;\nexports.default = {\n /**\n * The order that this parser will run, in relation to other parsers.\n */\n order: 400,\n /**\n * Whether to allow \"empty\" files (zero bytes).\n */\n allowEmpty: true,\n /**\n * Determines whether this parser can parse a given file reference.\n * Parsers that return true will be tried, in order, until one successfully parses the file.\n * Parsers that return false will be skipped, UNLESS all parsers returned false, in which case\n * every parser will be tried.\n */\n canParse(file) {\n // Use this parser if the file is a Buffer, and has a known binary extension\n return Buffer.isBuffer(file.data) && BINARY_REGEXP.test(file.url);\n },\n /**\n * Parses the given data as a Buffer (byte array).\n */\n parse(file) {\n if (Buffer.isBuffer(file.data)) {\n return file.data;\n }\n else {\n // This will reject if data is anything other than a string or typed array\n return Buffer.from(file.data);\n }\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_js_1 = require(\"../util/errors.js\");\nexports.default = {\n /**\n * The order that this parser will run, in relation to other parsers.\n */\n order: 100,\n /**\n * Whether to allow \"empty\" files. This includes zero-byte files, as well as empty JSON objects.\n */\n allowEmpty: true,\n /**\n * Determines whether this parser can parse a given file reference.\n * Parsers that match will be tried, in order, until one successfully parses the file.\n * Parsers that don't match will be skipped, UNLESS none of the parsers match, in which case\n * every parser will be tried.\n */\n canParse: \".json\",\n /**\n * Parses the given file as JSON\n */\n async parse(file) {\n let data = file.data;\n if (Buffer.isBuffer(data)) {\n data = data.toString();\n }\n if (typeof data === \"string\") {\n if (data.trim().length === 0) {\n return; // This mirrors the YAML behavior\n }\n else {\n try {\n return JSON.parse(data);\n }\n catch (e) {\n throw new errors_js_1.ParserError(e.message, file.url);\n }\n }\n }\n else {\n // data is already a JavaScript value (object, array, number, null, NaN, etc.)\n return data;\n }\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_js_1 = require(\"../util/errors.js\");\nconst TEXT_REGEXP = /\\.(txt|htm|html|md|xml|js|min|map|css|scss|less|svg)$/i;\nexports.default = {\n /**\n * The order that this parser will run, in relation to other parsers.\n */\n order: 300,\n /**\n * Whether to allow \"empty\" files (zero bytes).\n */\n allowEmpty: true,\n /**\n * The encoding that the text is expected to be in.\n */\n encoding: \"utf8\",\n /**\n * Determines whether this parser can parse a given file reference.\n * Parsers that return true will be tried, in order, until one successfully parses the file.\n * Parsers that return false will be skipped, UNLESS all parsers returned false, in which case\n * every parser will be tried.\n */\n canParse(file) {\n // Use this parser if the file is a string or Buffer, and has a known text-based extension\n return (typeof file.data === \"string\" || Buffer.isBuffer(file.data)) && TEXT_REGEXP.test(file.url);\n },\n /**\n * Parses the given file as text\n */\n parse(file) {\n if (typeof file.data === \"string\") {\n return file.data;\n }\n else if (Buffer.isBuffer(file.data)) {\n return file.data.toString(this.encoding);\n }\n else {\n throw new errors_js_1.ParserError(\"data is not text\", file.url);\n }\n },\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_js_1 = require(\"../util/errors.js\");\nconst js_yaml_1 = __importDefault(require(\"js-yaml\"));\nconst js_yaml_2 = require(\"js-yaml\");\nexports.default = {\n /**\n * The order that this parser will run, in relation to other parsers.\n */\n order: 200,\n /**\n * Whether to allow \"empty\" files. This includes zero-byte files, as well as empty JSON objects.\n */\n allowEmpty: true,\n /**\n * Determines whether this parser can parse a given file reference.\n * Parsers that match will be tried, in order, until one successfully parses the file.\n * Parsers that don't match will be skipped, UNLESS none of the parsers match, in which case\n * every parser will be tried.\n */\n canParse: [\".yaml\", \".yml\", \".json\"],\n /**\n * Parses the given file as YAML\n *\n * @param file - An object containing information about the referenced file\n * @param file.url - The full URL of the referenced file\n * @param file.extension - The lowercased file extension (e.g. \".txt\", \".html\", etc.)\n * @param file.data - The file contents. This will be whatever data type was returned by the resolver\n * @returns\n */\n async parse(file) {\n // eslint-disable-line require-await\n let data = file.data;\n if (Buffer.isBuffer(data)) {\n data = data.toString();\n }\n if (typeof data === \"string\") {\n try {\n return js_yaml_1.default.load(data, { schema: js_yaml_2.JSON_SCHEMA });\n }\n catch (e) {\n // @ts-expect-error TS(2571): Object is of type 'unknown'.\n throw new errors_js_1.ParserError(e.message, file.url);\n }\n }\n else {\n // data is already a JavaScript value (object, array, number, null, NaN, etc.)\n return data;\n }\n },\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ref_js_1 = __importDefault(require(\"./ref.js\"));\nconst url = __importStar(require(\"./util/url.js\"));\nconst errors_js_1 = require(\"./util/errors.js\");\nconst slashes = /\\//g;\nconst tildes = /~/g;\nconst escapedSlash = /~1/g;\nconst escapedTilde = /~0/g;\n/**\n * This class represents a single JSON pointer and its resolved value.\n *\n * @param $ref\n * @param path\n * @param [friendlyPath] - The original user-specified path (used for error messages)\n * @class\n */\nclass Pointer {\n constructor($ref, path, friendlyPath) {\n this.$ref = $ref;\n this.path = path;\n this.originalPath = friendlyPath || path;\n this.value = undefined;\n this.circular = false;\n this.indirections = 0;\n }\n /**\n * Resolves the value of a nested property within the given object.\n *\n * @param obj - The object that will be crawled\n * @param options\n * @param pathFromRoot - the path of place that initiated resolving\n *\n * @returns\n * Returns a JSON pointer whose {@link Pointer#value} is the resolved value.\n * If resolving this value required resolving other JSON references, then\n * the {@link Pointer#$ref} and {@link Pointer#path} will reflect the resolution path\n * of the resolved value.\n */\n resolve(obj, options, pathFromRoot) {\n const tokens = Pointer.parse(this.path, this.originalPath);\n // Crawl the object, one token at a time\n this.value = unwrapOrThrow(obj);\n for (let i = 0; i < tokens.length; i++) {\n if (resolveIf$Ref(this, options)) {\n // The $ref path has changed, so append the remaining tokens to the path\n this.path = Pointer.join(this.path, tokens.slice(i));\n }\n if (typeof this.value === \"object\" && this.value !== null && \"$ref\" in this.value) {\n return this;\n }\n const token = tokens[i];\n if (this.value[token] === undefined || this.value[token] === null) {\n this.value = null;\n throw new errors_js_1.MissingPointerError(token, decodeURI(this.originalPath));\n }\n else {\n this.value = this.value[token];\n }\n }\n // Resolve the final value\n if (!this.value || (this.value.$ref && url.resolve(this.path, this.value.$ref) !== pathFromRoot)) {\n resolveIf$Ref(this, options);\n }\n return this;\n }\n /**\n * Sets the value of a nested property within the given object.\n *\n * @param obj - The object that will be crawled\n * @param value - the value to assign\n * @param options\n *\n * @returns\n * Returns the modified object, or an entirely new object if the entire object is overwritten.\n */\n set(obj, value, options) {\n const tokens = Pointer.parse(this.path);\n let token;\n if (tokens.length === 0) {\n // There are no tokens, replace the entire object with the new value\n this.value = value;\n return value;\n }\n // Crawl the object, one token at a time\n this.value = unwrapOrThrow(obj);\n for (let i = 0; i < tokens.length - 1; i++) {\n resolveIf$Ref(this, options);\n token = tokens[i];\n if (this.value && this.value[token] !== undefined) {\n // The token exists\n this.value = this.value[token];\n }\n else {\n // The token doesn't exist, so create it\n this.value = setValue(this, token, {});\n }\n }\n // Set the value of the final token\n resolveIf$Ref(this, options);\n token = tokens[tokens.length - 1];\n setValue(this, token, value);\n // Return the updated object\n return obj;\n }\n /**\n * Parses a JSON pointer (or a path containing a JSON pointer in the hash)\n * and returns an array of the pointer's tokens.\n * (e.g. \"schema.json#/definitions/person/name\" => [\"definitions\", \"person\", \"name\"])\n *\n * The pointer is parsed according to RFC 6901\n * {@link https://tools.ietf.org/html/rfc6901#section-3}\n *\n * @param path\n * @param [originalPath]\n * @returns\n */\n static parse(path, originalPath) {\n // Get the JSON pointer from the path's hash\n let pointer = url.getHash(path).substr(1);\n // If there's no pointer, then there are no tokens,\n // so return an empty array\n if (!pointer) {\n return [];\n }\n // Split into an array\n pointer = pointer.split(\"/\");\n // Decode each part, according to RFC 6901\n for (let i = 0; i < pointer.length; i++) {\n pointer[i] = decodeURIComponent(pointer[i].replace(escapedSlash, \"/\").replace(escapedTilde, \"~\"));\n }\n if (pointer[0] !== \"\") {\n throw new errors_js_1.InvalidPointerError(pointer, originalPath === undefined ? path : originalPath);\n }\n return pointer.slice(1);\n }\n /**\n * Creates a JSON pointer path, by joining one or more tokens to a base path.\n *\n * @param base - The base path (e.g. \"schema.json#/definitions/person\")\n * @param tokens - The token(s) to append (e.g. [\"name\", \"first\"])\n * @returns\n */\n static join(base, tokens) {\n // Ensure that the base path contains a hash\n if (base.indexOf(\"#\") === -1) {\n base += \"#\";\n }\n // Append each token to the base path\n tokens = Array.isArray(tokens) ? tokens : [tokens];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Encode the token, according to RFC 6901\n base += \"/\" + encodeURIComponent(token.replace(tildes, \"~0\").replace(slashes, \"~1\"));\n }\n return base;\n }\n}\n/**\n * If the given pointer's {@link Pointer#value} is a JSON reference,\n * then the reference is resolved and {@link Pointer#value} is replaced with the resolved value.\n * In addition, {@link Pointer#path} and {@link Pointer#$ref} are updated to reflect the\n * resolution path of the new value.\n *\n * @param pointer\n * @param options\n * @returns - Returns `true` if the resolution path changed\n */\nfunction resolveIf$Ref(pointer, options) {\n // Is the value a JSON reference? (and allowed?)\n if (ref_js_1.default.isAllowed$Ref(pointer.value, options)) {\n const $refPath = url.resolve(pointer.path, pointer.value.$ref);\n if ($refPath === pointer.path) {\n // The value is a reference to itself, so there's nothing to do.\n pointer.circular = true;\n }\n else {\n const resolved = pointer.$ref.$refs._resolve($refPath, pointer.path, options);\n if (resolved === null) {\n return false;\n }\n pointer.indirections += resolved.indirections + 1;\n if (ref_js_1.default.isExtended$Ref(pointer.value)) {\n // This JSON reference \"extends\" the resolved value, rather than simply pointing to it.\n // So the resolved path does NOT change. Just the value does.\n pointer.value = ref_js_1.default.dereference(pointer.value, resolved.value);\n return false;\n }\n else {\n // Resolve the reference\n pointer.$ref = resolved.$ref;\n pointer.path = resolved.path;\n pointer.value = resolved.value;\n }\n return true;\n }\n }\n}\nexports.default = Pointer;\n/**\n * Sets the specified token value of the {@link Pointer#value}.\n *\n * The token is evaluated according to RFC 6901.\n * {@link https://tools.ietf.org/html/rfc6901#section-4}\n *\n * @param pointer - The JSON Pointer whose value will be modified\n * @param token - A JSON Pointer token that indicates how to modify `obj`\n * @param value - The value to assign\n * @returns - Returns the assigned value\n */\nfunction setValue(pointer, token, value) {\n if (pointer.value && typeof pointer.value === \"object\") {\n if (token === \"-\" && Array.isArray(pointer.value)) {\n pointer.value.push(value);\n }\n else {\n pointer.value[token] = value;\n }\n }\n else {\n throw new errors_js_1.JSONParserError(`Error assigning $ref pointer \"${pointer.path}\". \\nCannot set \"${token}\" of a non-object.`);\n }\n return value;\n}\nfunction unwrapOrThrow(value) {\n if ((0, errors_js_1.isHandledError)(value)) {\n throw value;\n }\n return value;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst pointer_js_1 = __importDefault(require(\"./pointer.js\"));\nconst errors_js_1 = require(\"./util/errors.js\");\nconst url_js_1 = require(\"./util/url.js\");\n/**\n * This class represents a single JSON reference and its resolved value.\n *\n * @class\n */\nclass $Ref {\n constructor($refs) {\n /**\n * List of all errors. Undefined if no errors.\n */\n this.errors = [];\n this.$refs = $refs;\n }\n /**\n * Pushes an error to errors array.\n *\n * @param err - The error to be pushed\n * @returns\n */\n addError(err) {\n if (this.errors === undefined) {\n this.errors = [];\n }\n const existingErrors = this.errors.map(({ footprint }) => footprint);\n // the path has been almost certainly set at this point,\n // but just in case something went wrong, normalizeError injects path if necessary\n // moreover, certain errors might point at the same spot, so filter them out to reduce noise\n if (\"errors\" in err && Array.isArray(err.errors)) {\n this.errors.push(...err.errors.map(errors_js_1.normalizeError).filter(({ footprint }) => !existingErrors.includes(footprint)));\n }\n else if (!(\"footprint\" in err) || !existingErrors.includes(err.footprint)) {\n this.errors.push((0, errors_js_1.normalizeError)(err));\n }\n }\n /**\n * Determines whether the given JSON reference exists within this {@link $Ref#value}.\n *\n * @param path - The full path being resolved, optionally with a JSON pointer in the hash\n * @param options\n * @returns\n */\n exists(path, options) {\n try {\n this.resolve(path, options);\n return true;\n }\n catch (e) {\n return false;\n }\n }\n /**\n * Resolves the given JSON reference within this {@link $Ref#value} and returns the resolved value.\n *\n * @param path - The full path being resolved, optionally with a JSON pointer in the hash\n * @param options\n * @returns - Returns the resolved value\n */\n get(path, options) {\n return this.resolve(path, options)?.value;\n }\n /**\n * Resolves the given JSON reference within this {@link $Ref#value}.\n *\n * @param path - The full path being resolved, optionally with a JSON pointer in the hash\n * @param options\n * @param friendlyPath - The original user-specified path (used for error messages)\n * @param pathFromRoot - The path of `obj` from the schema root\n * @returns\n */\n resolve(path, options, friendlyPath, pathFromRoot) {\n const pointer = new pointer_js_1.default(this, path, friendlyPath);\n try {\n return pointer.resolve(this.value, options, pathFromRoot);\n }\n catch (err) {\n if (!options || !options.continueOnError || !(0, errors_js_1.isHandledError)(err)) {\n throw err;\n }\n if (err.path === null) {\n err.path = (0, url_js_1.safePointerToPath)((0, url_js_1.getHash)(pathFromRoot));\n }\n if (err instanceof errors_js_1.InvalidPointerError) {\n err.source = decodeURI((0, url_js_1.stripHash)(pathFromRoot));\n }\n this.addError(err);\n return null;\n }\n }\n /**\n * Sets the value of a nested property within this {@link $Ref#value}.\n * If the property, or any of its parents don't exist, they will be created.\n *\n * @param path - The full path of the property to set, optionally with a JSON pointer in the hash\n * @param value - The value to assign\n */\n set(path, value) {\n // @ts-expect-error TS(2554): Expected 3 arguments, but got 2.\n const pointer = new pointer_js_1.default(this, path);\n this.value = pointer.set(this.value, value);\n }\n /**\n * Determines whether the given value is a JSON reference.\n *\n * @param value - The value to inspect\n * @returns\n */\n static is$Ref(value) {\n return value && typeof value === \"object\" && typeof value.$ref === \"string\" && value.$ref.length > 0;\n }\n /**\n * Determines whether the given value is an external JSON reference.\n *\n * @param value - The value to inspect\n * @returns\n */\n static isExternal$Ref(value) {\n return $Ref.is$Ref(value) && value.$ref[0] !== \"#\";\n }\n /**\n * Determines whether the given value is a JSON reference, and whether it is allowed by the options.\n * For example, if it references an external file, then options.resolve.external must be true.\n *\n * @param value - The value to inspect\n * @param options\n * @returns\n */\n static isAllowed$Ref(value, options) {\n if (this.is$Ref(value)) {\n if (value.$ref.substring(0, 2) === \"#/\" || value.$ref === \"#\") {\n // It's a JSON Pointer reference, which is always allowed\n return true;\n }\n else if (value.$ref[0] !== \"#\" && (!options || options.resolve.external)) {\n // It's an external reference, which is allowed by the options\n return true;\n }\n }\n }\n /**\n * Determines whether the given value is a JSON reference that \"extends\" its resolved value.\n * That is, it has extra properties (in addition to \"$ref\"), so rather than simply pointing to\n * an existing value, this $ref actually creates a NEW value that is a shallow copy of the resolved\n * value, plus the extra properties.\n *\n * @example: {\n person: {\n properties: {\n firstName: { type: string }\n lastName: { type: string }\n }\n }\n employee: {\n properties: {\n $ref: #/person/properties\n salary: { type: number }\n }\n }\n }\n * In this example, \"employee\" is an extended $ref, since it extends \"person\" with an additional\n * property (salary). The result is a NEW value that looks like this:\n *\n * {\n * properties: {\n * firstName: { type: string }\n * lastName: { type: string }\n * salary: { type: number }\n * }\n * }\n *\n * @param value - The value to inspect\n * @returns\n */\n static isExtended$Ref(value) {\n return $Ref.is$Ref(value) && Object.keys(value).length > 1;\n }\n /**\n * Returns the resolved value of a JSON Reference.\n * If necessary, the resolved value is merged with the JSON Reference to create a new object\n *\n * @example: {\n person: {\n properties: {\n firstName: { type: string }\n lastName: { type: string }\n }\n }\n employee: {\n properties: {\n $ref: #/person/properties\n salary: { type: number }\n }\n }\n } When \"person\" and \"employee\" are merged, you end up with the following object:\n *\n * {\n * properties: {\n * firstName: { type: string }\n * lastName: { type: string }\n * salary: { type: number }\n * }\n * }\n *\n * @param $ref - The JSON reference object (the one with the \"$ref\" property)\n * @param resolvedValue - The resolved value, which can be any type\n * @returns - Returns the dereferenced value\n */\n static dereference($ref, resolvedValue) {\n if (resolvedValue && typeof resolvedValue === \"object\" && $Ref.isExtended$Ref($ref)) {\n const merged = {};\n for (const key of Object.keys($ref)) {\n if (key !== \"$ref\") {\n // @ts-expect-error TS(7053): Element implicitly has an 'any' type because expre... Remove this comment to see the full error message\n merged[key] = $ref[key];\n }\n }\n for (const key of Object.keys(resolvedValue)) {\n if (!(key in merged)) {\n // @ts-expect-error TS(7053): Element implicitly has an 'any' type because expre... Remove this comment to see the full error message\n merged[key] = resolvedValue[key];\n }\n }\n return merged;\n }\n else {\n // Completely replace the original reference with the resolved value\n return resolvedValue;\n }\n }\n}\nexports.default = $Ref;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ono_1 = require(\"@jsdevtools/ono\");\nconst ref_js_1 = __importDefault(require(\"./ref.js\"));\nconst url = __importStar(require(\"./util/url.js\"));\nconst convert_path_to_posix_1 = __importDefault(require(\"./util/convert-path-to-posix\"));\n/**\n * When you call the resolve method, the value that gets passed to the callback function (or Promise) is a $Refs object. This same object is accessible via the parser.$refs property of $RefParser objects.\n *\n * This object is a map of JSON References and their resolved values. It also has several convenient helper methods that make it easy for you to navigate and manipulate the JSON References.\n *\n * See https://apitools.dev/json-schema-ref-parser/docs/refs.html\n */\nclass $Refs {\n /**\n * Returns the paths/URLs of all the files in your schema (including the main schema file).\n *\n * See https://apitools.dev/json-schema-ref-parser/docs/refs.html#pathstypes\n *\n * @param types (optional) Optionally only return certain types of paths (\"file\", \"http\", etc.)\n */\n paths(...types) {\n const paths = getPaths(this._$refs, types);\n return paths.map((path) => {\n return (0, convert_path_to_posix_1.default)(path.decoded);\n });\n }\n /**\n * Returns a map of paths/URLs and their correspond values.\n *\n * See https://apitools.dev/json-schema-ref-parser/docs/refs.html#valuestypes\n *\n * @param types (optional) Optionally only return values from certain locations (\"file\", \"http\", etc.)\n */\n values(...types) {\n const $refs = this._$refs;\n const paths = getPaths($refs, types);\n return paths.reduce((obj, path) => {\n obj[(0, convert_path_to_posix_1.default)(path.decoded)] = $refs[path.encoded].value;\n return obj;\n }, {});\n }\n /**\n * Returns `true` if the given path exists in the schema; otherwise, returns `false`\n *\n * See https://apitools.dev/json-schema-ref-parser/docs/refs.html#existsref\n *\n * @param $ref The JSON Reference path, optionally with a JSON Pointer in the hash\n */\n /**\n * Determines whether the given JSON reference exists.\n *\n * @param path - The path being resolved, optionally with a JSON pointer in the hash\n * @param [options]\n * @returns\n */\n exists(path, options) {\n try {\n this._resolve(path, \"\", options);\n return true;\n }\n catch (e) {\n return false;\n }\n }\n /**\n * Resolves the given JSON reference and returns the resolved value.\n *\n * @param path - The path being resolved, with a JSON pointer in the hash\n * @param [options]\n * @returns - Returns the resolved value\n */\n get(path, options) {\n return this._resolve(path, \"\", options).value;\n }\n /**\n * Sets the value at the given path in the schema. If the property, or any of its parents, don't exist, they will be created.\n *\n * @param $ref The JSON Reference path, optionally with a JSON Pointer in the hash\n * @param value The value to assign. Can be anything (object, string, number, etc.)\n */\n set(path, value) {\n const absPath = url.resolve(this._root$Ref.path, path);\n const withoutHash = url.stripHash(absPath);\n const $ref = this._$refs[withoutHash];\n if (!$ref) {\n throw (0, ono_1.ono)(`Error resolving $ref pointer \"${path}\". \\n\"${withoutHash}\" not found.`);\n }\n $ref.set(absPath, value);\n }\n /**\n * Returns the specified {@link $Ref} object, or undefined.\n *\n * @param path - The path being resolved, optionally with a JSON pointer in the hash\n * @returns\n * @protected\n */\n _get$Ref(path) {\n path = url.resolve(this._root$Ref.path, path);\n const withoutHash = url.stripHash(path);\n return this._$refs[withoutHash];\n }\n /**\n * Creates a new {@link $Ref} object and adds it to this {@link $Refs} object.\n *\n * @param path - The file path or URL of the referenced file\n */\n _add(path) {\n const withoutHash = url.stripHash(path);\n const $ref = new ref_js_1.default(this);\n $ref.path = withoutHash;\n this._$refs[withoutHash] = $ref;\n this._root$Ref = this._root$Ref || $ref;\n return $ref;\n }\n /**\n * Resolves the given JSON reference.\n *\n * @param path - The path being resolved, optionally with a JSON pointer in the hash\n * @param pathFromRoot - The path of `obj` from the schema root\n * @param [options]\n * @returns\n * @protected\n */\n _resolve(path, pathFromRoot, options) {\n const absPath = url.resolve(this._root$Ref.path, path);\n const withoutHash = url.stripHash(absPath);\n const $ref = this._$refs[withoutHash];\n if (!$ref) {\n throw (0, ono_1.ono)(`Error resolving $ref pointer \"${path}\". \\n\"${withoutHash}\" not found.`);\n }\n return $ref.resolve(absPath, options, path, pathFromRoot);\n }\n constructor() {\n /**\n * A map of paths/urls to {@link $Ref} objects\n *\n * @type {object}\n * @protected\n */\n this._$refs = {};\n /**\n * Returns the paths of all the files/URLs that are referenced by the JSON schema,\n * including the schema itself.\n *\n * @param [types] - Only return paths of the given types (\"file\", \"http\", etc.)\n * @returns\n */\n /**\n * Returns the map of JSON references and their resolved values.\n *\n * @param [types] - Only return references of the given types (\"file\", \"http\", etc.)\n * @returns\n */\n /**\n * Returns a POJO (plain old JavaScript object) for serialization as JSON.\n *\n * @returns {object}\n */\n this.toJSON = this.values;\n /**\n * Indicates whether the schema contains any circular references.\n *\n * @type {boolean}\n */\n this.circular = false;\n this._$refs = {};\n // @ts-ignore\n this._root$Ref = null;\n }\n}\nexports.default = $Refs;\n/**\n * Returns the encoded and decoded paths keys of the given object.\n *\n * @param $refs - The object whose keys are URL-encoded paths\n * @param [types] - Only return paths of the given types (\"file\", \"http\", etc.)\n * @returns\n */\nfunction getPaths($refs, types) {\n let paths = Object.keys($refs);\n // Filter the paths by type\n types = Array.isArray(types[0]) ? types[0] : Array.prototype.slice.call(types);\n if (types.length > 0 && types[0]) {\n paths = paths.filter((key) => {\n return types.includes($refs[key].pathType);\n });\n }\n // Decode local filesystem paths\n return paths.map((path) => {\n return {\n encoded: path,\n decoded: $refs[path].pathType === \"file\" ? url.toFileSystemPath(path, true) : path,\n };\n });\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ref_js_1 = __importDefault(require(\"./ref.js\"));\nconst pointer_js_1 = __importDefault(require(\"./pointer.js\"));\nconst parse_js_1 = __importDefault(require(\"./parse.js\"));\nconst url = __importStar(require(\"./util/url.js\"));\nconst errors_js_1 = require(\"./util/errors.js\");\nexports.default = resolveExternal;\n/**\n * Crawls the JSON schema, finds all external JSON references, and resolves their values.\n * This method does not mutate the JSON schema. The resolved values are added to {@link $RefParser#$refs}.\n *\n * NOTE: We only care about EXTERNAL references here. INTERNAL references are only relevant when dereferencing.\n *\n * @returns\n * The promise resolves once all JSON references in the schema have been resolved,\n * including nested references that are contained in externally-referenced files.\n */\nfunction resolveExternal(parser, options) {\n if (!options.resolve.external) {\n // Nothing to resolve, so exit early\n return Promise.resolve();\n }\n try {\n // console.log('Resolving $ref pointers in %s', parser.$refs._root$Ref.path);\n const promises = crawl(parser.schema, parser.$refs._root$Ref.path + \"#\", parser.$refs, options);\n return Promise.all(promises);\n }\n catch (e) {\n return Promise.reject(e);\n }\n}\n/**\n * Recursively crawls the given value, and resolves any external JSON references.\n *\n * @param obj - The value to crawl. If it's not an object or array, it will be ignored.\n * @param path - The full path of `obj`, possibly with a JSON Pointer in the hash\n * @param {boolean} external - Whether `obj` was found in an external document.\n * @param $refs\n * @param options\n * @param seen - Internal.\n *\n * @returns\n * Returns an array of promises. There will be one promise for each JSON reference in `obj`.\n * If `obj` does not contain any JSON references, then the array will be empty.\n * If any of the JSON references point to files that contain additional JSON references,\n * then the corresponding promise will internally reference an array of promises.\n */\nfunction crawl(obj, path, $refs, options, seen, external) {\n seen || (seen = new Set());\n let promises = [];\n if (obj && typeof obj === \"object\" && !ArrayBuffer.isView(obj) && !seen.has(obj)) {\n seen.add(obj); // Track previously seen objects to avoid infinite recursion\n if (ref_js_1.default.isExternal$Ref(obj)) {\n promises.push(resolve$Ref(obj, path, $refs, options));\n }\n const keys = Object.keys(obj);\n for (const key of keys) {\n const keyPath = pointer_js_1.default.join(path, key);\n const value = obj[key];\n promises = promises.concat(crawl(value, keyPath, $refs, options, seen, external));\n }\n }\n return promises;\n}\n/**\n * Resolves the given JSON Reference, and then crawls the resulting value.\n *\n * @param $ref - The JSON Reference to resolve\n * @param path - The full path of `$ref`, possibly with a JSON Pointer in the hash\n * @param $refs\n * @param options\n *\n * @returns\n * The promise resolves once all JSON references in the object have been resolved,\n * including nested references that are contained in externally-referenced files.\n */\nasync function resolve$Ref($ref, path, $refs, options) {\n const shouldResolveOnCwd = options.dereference.externalReferenceResolution === \"root\";\n const resolvedPath = url.resolve(shouldResolveOnCwd ? url.cwd() : path, $ref.$ref);\n const withoutHash = url.stripHash(resolvedPath);\n // $ref.$ref = url.relative($refs._root$Ref.path, resolvedPath);\n // Do we already have this $ref?\n $ref = $refs._$refs[withoutHash];\n if ($ref) {\n // We've already parsed this $ref, so use the existing value\n return Promise.resolve($ref.value);\n }\n // Parse the $referenced file/url\n try {\n const result = await (0, parse_js_1.default)(resolvedPath, $refs, options);\n // Crawl the parsed value\n // console.log('Resolving $ref pointers in %s', withoutHash);\n const promises = crawl(result, withoutHash + \"#\", $refs, options, new Set(), true);\n return Promise.all(promises);\n }\n catch (err) {\n if (!options?.continueOnError || !(0, errors_js_1.isHandledError)(err)) {\n throw err;\n }\n if ($refs._$refs[withoutHash]) {\n err.source = decodeURI(url.stripHash(path));\n err.path = url.safePointerToPath(url.getHash(path));\n }\n return [];\n }\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs_1 = require(\"fs\");\nconst ono_1 = require(\"@jsdevtools/ono\");\nconst url = __importStar(require(\"../util/url.js\"));\nconst errors_js_1 = require(\"../util/errors.js\");\nexports.default = {\n /**\n * The order that this resolver will run, in relation to other resolvers.\n */\n order: 100,\n /**\n * Determines whether this resolver can read a given file reference.\n * Resolvers that return true will be tried, in order, until one successfully resolves the file.\n * Resolvers that return false will not be given a chance to resolve the file.\n */\n canRead(file) {\n return url.isFileSystemPath(file.url);\n },\n /**\n * Reads the given file and returns its raw contents as a Buffer.\n */\n async read(file) {\n let path;\n try {\n path = url.toFileSystemPath(file.url);\n }\n catch (err) {\n throw new errors_js_1.ResolverError(ono_1.ono.uri(err, `Malformed URI: ${file.url}`), file.url);\n }\n try {\n const data = await fs_1.promises.readFile(path);\n return data;\n }\n catch (err) {\n throw new errors_js_1.ResolverError((0, ono_1.ono)(err, `Error opening file \"${path}\"`), path);\n }\n },\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ono_1 = require(\"@jsdevtools/ono\");\nconst url = __importStar(require(\"../util/url.js\"));\nconst errors_js_1 = require(\"../util/errors.js\");\nexports.default = {\n /**\n * The order that this resolver will run, in relation to other resolvers.\n */\n order: 200,\n /**\n * HTTP headers to send when downloading files.\n *\n * @example:\n * {\n * \"User-Agent\": \"JSON Schema $Ref Parser\",\n * Accept: \"application/json\"\n * }\n */\n headers: null,\n /**\n * HTTP request timeout (in milliseconds).\n */\n timeout: 5000,\n /**\n * The maximum number of HTTP redirects to follow.\n * To disable automatic following of redirects, set this to zero.\n */\n redirects: 5,\n /**\n * The `withCredentials` option of XMLHttpRequest.\n * Set this to `true` if you're downloading files from a CORS-enabled server that requires authentication\n */\n withCredentials: false,\n /**\n * Determines whether this resolver can read a given file reference.\n * Resolvers that return true will be tried in order, until one successfully resolves the file.\n * Resolvers that return false will not be given a chance to resolve the file.\n */\n canRead(file) {\n return url.isHttp(file.url);\n },\n /**\n * Reads the given URL and returns its raw contents as a Buffer.\n */\n read(file) {\n const u = url.parse(file.url);\n if (typeof window !== \"undefined\" && !u.protocol) {\n // Use the protocol of the current page\n u.protocol = url.parse(location.href).protocol;\n }\n return download(u, this);\n },\n};\n/**\n * Downloads the given file.\n * @returns\n * The promise resolves with the raw downloaded data, or rejects if there is an HTTP error.\n */\nasync function download(u, httpOptions, _redirects) {\n u = url.parse(u);\n const redirects = _redirects || [];\n redirects.push(u.href);\n try {\n const res = await get(u, httpOptions);\n if (res.status >= 400) {\n throw (0, ono_1.ono)({ status: res.status }, `HTTP ERROR ${res.status}`);\n }\n else if (res.status >= 300) {\n if (!Number.isNaN(httpOptions.redirects) && redirects.length > httpOptions.redirects) {\n throw new errors_js_1.ResolverError((0, ono_1.ono)({ status: res.status }, `Error downloading ${redirects[0]}. \\nToo many redirects: \\n ${redirects.join(\" \\n \")}`));\n }\n else if (!(\"location\" in res.headers) || !res.headers.location) {\n throw (0, ono_1.ono)({ status: res.status }, `HTTP ${res.status} redirect with no location header`);\n }\n else {\n const redirectTo = url.resolve(u.href, res.headers.location);\n return download(redirectTo, httpOptions, redirects);\n }\n }\n else {\n if (res.body) {\n const buf = await res.arrayBuffer();\n return Buffer.from(buf);\n }\n return Buffer.alloc(0);\n }\n }\n catch (err) {\n throw new errors_js_1.ResolverError((0, ono_1.ono)(err, `Error downloading ${u.href}`), u.href);\n }\n}\n/**\n * Sends an HTTP GET request.\n * The promise resolves with the HTTP Response object.\n */\nasync function get(u, httpOptions) {\n let controller;\n let timeoutId;\n if (httpOptions.timeout) {\n controller = new AbortController();\n timeoutId = setTimeout(() => controller.abort(), httpOptions.timeout);\n }\n if (!global.fetch) {\n const { default: fetch, Request, Headers } = await Promise.resolve().then(() => __importStar(require(\"node-fetch\")));\n // @ts-ignore\n global.fetch = fetch;\n // @ts-ignore\n global.Request = Request;\n // @ts-ignore\n global.Headers = Headers;\n }\n const response = await fetch(u, {\n method: \"GET\",\n headers: httpOptions.headers || {},\n credentials: httpOptions.withCredentials ? \"include\" : \"same-origin\",\n signal: controller ? controller.signal : null,\n });\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n return response;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path_1 = __importDefault(require(\"path\"));\nfunction convertPathToPosix(filePath) {\n const isExtendedLengthPath = filePath.startsWith(\"\\\\\\\\?\\\\\");\n if (isExtendedLengthPath) {\n return filePath;\n }\n return filePath.split(path_1.default.win32.sep).join(path_1.default.posix.sep);\n}\nexports.default = convertPathToPosix;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalizeError = exports.isHandledError = exports.InvalidPointerError = exports.MissingPointerError = exports.UnmatchedResolverError = exports.ResolverError = exports.UnmatchedParserError = exports.ParserError = exports.JSONParserErrorGroup = exports.JSONParserError = void 0;\nconst ono_1 = require(\"@jsdevtools/ono\");\nconst url_js_1 = require(\"./url.js\");\nclass JSONParserError extends Error {\n constructor(message, source) {\n super();\n this.code = \"EUNKNOWN\";\n this.name = \"JSONParserError\";\n this.message = message;\n this.source = source;\n this.path = null;\n ono_1.Ono.extend(this);\n }\n get footprint() {\n return `${this.path}+${this.source}+${this.code}+${this.message}`;\n }\n}\nexports.JSONParserError = JSONParserError;\nclass JSONParserErrorGroup extends Error {\n constructor(parser) {\n super();\n this.files = parser;\n this.name = \"JSONParserErrorGroup\";\n this.message = `${this.errors.length} error${this.errors.length > 1 ? \"s\" : \"\"} occurred while reading '${(0, url_js_1.toFileSystemPath)(parser.$refs._root$Ref.path)}'`;\n ono_1.Ono.extend(this);\n }\n static getParserErrors(parser) {\n const errors = [];\n for (const $ref of Object.values(parser.$refs._$refs)) {\n // @ts-expect-error TS(2571): Object is of type 'unknown'.\n if ($ref.errors) {\n // @ts-expect-error TS(2571): Object is of type 'unknown'.\n errors.push(...$ref.errors);\n }\n }\n return errors;\n }\n get errors() {\n return JSONParserErrorGroup.getParserErrors(this.files);\n }\n}\nexports.JSONParserErrorGroup = JSONParserErrorGroup;\nclass ParserError extends JSONParserError {\n constructor(message, source) {\n super(`Error parsing ${source}: ${message}`, source);\n this.code = \"EPARSER\";\n this.name = \"ParserError\";\n }\n}\nexports.ParserError = ParserError;\nclass UnmatchedParserError extends JSONParserError {\n constructor(source) {\n super(`Could not find parser for \"${source}\"`, source);\n this.code = \"EUNMATCHEDPARSER\";\n this.name = \"UnmatchedParserError\";\n }\n}\nexports.UnmatchedParserError = UnmatchedParserError;\nclass ResolverError extends JSONParserError {\n constructor(ex, source) {\n super(ex.message || `Error reading file \"${source}\"`, source);\n this.code = \"ERESOLVER\";\n this.name = \"ResolverError\";\n if (\"code\" in ex) {\n this.ioErrorCode = String(ex.code);\n }\n }\n}\nexports.ResolverError = ResolverError;\nclass UnmatchedResolverError extends JSONParserError {\n constructor(source) {\n super(`Could not find resolver for \"${source}\"`, source);\n this.code = \"EUNMATCHEDRESOLVER\";\n this.name = \"UnmatchedResolverError\";\n }\n}\nexports.UnmatchedResolverError = UnmatchedResolverError;\nclass MissingPointerError extends JSONParserError {\n constructor(token, path) {\n super(`Token \"${token}\" does not exist.`, (0, url_js_1.stripHash)(path));\n this.code = \"EUNMATCHEDRESOLVER\";\n this.name = \"MissingPointerError\";\n }\n}\nexports.MissingPointerError = MissingPointerError;\nclass InvalidPointerError extends JSONParserError {\n constructor(pointer, path) {\n super(`Invalid $ref pointer \"${pointer}\". Pointers must begin with \"#/\"`, (0, url_js_1.stripHash)(path));\n this.code = \"EUNMATCHEDRESOLVER\";\n this.name = \"InvalidPointerError\";\n }\n}\nexports.InvalidPointerError = InvalidPointerError;\nfunction isHandledError(err) {\n return err instanceof JSONParserError || err instanceof JSONParserErrorGroup;\n}\nexports.isHandledError = isHandledError;\nfunction normalizeError(err) {\n if (err.path === null) {\n err.path = [];\n }\n return err;\n}\nexports.normalizeError = normalizeError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWindows = void 0;\nconst isWindowsConst = /^win/.test(globalThis.process ? globalThis.process.platform : \"\");\nconst isWindows = () => isWindowsConst;\nexports.isWindows = isWindows;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst next_js_1 = __importDefault(require(\"./next.js\"));\nfunction maybe(cb, promise) {\n if (cb) {\n promise.then(function (result) {\n (0, next_js_1.default)(function () {\n cb(null, result);\n });\n }, function (err) {\n (0, next_js_1.default)(function () {\n cb(err);\n });\n });\n return undefined;\n }\n else {\n return promise;\n }\n}\nexports.default = maybe;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction makeNext() {\n if (typeof process === \"object\" && typeof process.nextTick === \"function\") {\n return process.nextTick;\n }\n else if (typeof setImmediate === \"function\") {\n return setImmediate;\n }\n else {\n return function next(f) {\n setTimeout(f, 0);\n };\n }\n}\nexports.default = makeNext();\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.run = exports.sort = exports.filter = exports.all = void 0;\n/**\n * Returns the given plugins as an array, rather than an object map.\n * All other methods in this module expect an array of plugins rather than an object map.\n *\n * @returns\n */\nfunction all(plugins) {\n return Object.keys(plugins)\n .filter((key) => {\n return typeof plugins[key] === \"object\";\n })\n .map((key) => {\n plugins[key].name = key;\n return plugins[key];\n });\n}\nexports.all = all;\n/**\n * Filters the given plugins, returning only the ones return `true` for the given method.\n */\nfunction filter(plugins, method, file) {\n return plugins.filter((plugin) => {\n return !!getResult(plugin, method, file);\n });\n}\nexports.filter = filter;\n/**\n * Sorts the given plugins, in place, by their `order` property.\n */\nfunction sort(plugins) {\n for (const plugin of plugins) {\n plugin.order = plugin.order || Number.MAX_SAFE_INTEGER;\n }\n return plugins.sort((a, b) => {\n return a.order - b.order;\n });\n}\nexports.sort = sort;\n/**\n * Runs the specified method of the given plugins, in order, until one of them returns a successful result.\n * Each method can return a synchronous value, a Promise, or call an error-first callback.\n * If the promise resolves successfully, or the callback is called without an error, then the result\n * is immediately returned and no further plugins are called.\n * If the promise rejects, or the callback is called with an error, then the next plugin is called.\n * If ALL plugins fail, then the last error is thrown.\n */\nasync function run(plugins, method, file, $refs) {\n let plugin;\n let lastError;\n let index = 0;\n return new Promise((resolve, reject) => {\n runNextPlugin();\n function runNextPlugin() {\n plugin = plugins[index++];\n if (!plugin) {\n // There are no more functions, so re-throw the last error\n return reject(lastError);\n }\n try {\n // console.log(' %s', plugin.name);\n const result = getResult(plugin, method, file, callback, $refs);\n if (result && typeof result.then === \"function\") {\n // A promise was returned\n result.then(onSuccess, onError);\n }\n else if (result !== undefined) {\n // A synchronous result was returned\n onSuccess(result);\n }\n else if (index === plugins.length) {\n throw new Error(\"No promise has been returned or callback has been called.\");\n }\n }\n catch (e) {\n onError(e);\n }\n }\n function callback(err, result) {\n if (err) {\n onError(err);\n }\n else {\n onSuccess(result);\n }\n }\n function onSuccess(result) {\n // console.log(' success');\n resolve({\n plugin,\n result,\n });\n }\n function onError(error) {\n // console.log(' %s', err.message || err);\n lastError = {\n plugin,\n error,\n };\n runNextPlugin();\n }\n });\n}\nexports.run = run;\n/**\n * Returns the value of the given property.\n * If the property is a function, then the result of the function is returned.\n * If the value is a RegExp, then it will be tested against the file URL.\n * If the value is an array, then it will be compared against the file extension.\n */\nfunction getResult(obj, prop, file, callback, $refs) {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return value.apply(obj, [file, callback, $refs]);\n }\n if (!callback) {\n // The synchronous plugin functions (canParse and canRead)\n // allow a \"shorthand\" syntax, where the user can match\n // files by RegExp or by file extension.\n if (value instanceof RegExp) {\n return value.test(file.url);\n }\n else if (typeof value === \"string\") {\n return value === file.extension;\n }\n else if (Array.isArray(value)) {\n return value.indexOf(file.extension) !== -1;\n }\n }\n return value;\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.relative = exports.safePointerToPath = exports.toFileSystemPath = exports.fromFileSystemPath = exports.isFileSystemPath = exports.isHttp = exports.stripHash = exports.getHash = exports.stripQuery = exports.getExtension = exports.getProtocol = exports.cwd = exports.resolve = exports.parse = void 0;\nconst convert_path_to_posix_1 = __importDefault(require(\"./convert-path-to-posix\"));\nconst path_1 = __importStar(require(\"path\"));\nconst forwardSlashPattern = /\\//g;\nconst protocolPattern = /^(\\w{2,}):\\/\\//i;\nconst jsonPointerSlash = /~1/g;\nconst jsonPointerTilde = /~0/g;\nconst path_2 = require(\"path\");\nconst is_windows_1 = require(\"./is-windows\");\nconst projectDir = (0, path_2.join)(__dirname, \"..\", \"..\");\n// RegExp patterns to URL-encode special characters in local filesystem paths\nconst urlEncodePatterns = [/\\?/g, \"%3F\", /#/g, \"%23\"];\n// RegExp patterns to URL-decode special characters for local filesystem paths\nconst urlDecodePatterns = [/%23/g, \"#\", /%24/g, \"$\", /%26/g, \"&\", /%2C/g, \",\", /%40/g, \"@\"];\nconst parse = (u) => new URL(u);\nexports.parse = parse;\n/**\n * Returns resolved target URL relative to a base URL in a manner similar to that of a Web browser resolving an anchor tag HREF.\n *\n * @returns\n */\nfunction resolve(from, to) {\n const fromUrl = new URL((0, convert_path_to_posix_1.default)(from), \"resolve://\");\n const resolvedUrl = new URL((0, convert_path_to_posix_1.default)(to), fromUrl);\n if (resolvedUrl.protocol === \"resolve:\") {\n // `from` is a relative URL.\n const { pathname, search, hash } = resolvedUrl;\n return pathname + search + hash;\n }\n return resolvedUrl.toString();\n}\nexports.resolve = resolve;\n/**\n * Returns the current working directory (in Node) or the current page URL (in browsers).\n *\n * @returns\n */\nfunction cwd() {\n if (typeof window !== \"undefined\") {\n return location.href;\n }\n const path = process.cwd();\n const lastChar = path.slice(-1);\n if (lastChar === \"/\" || lastChar === \"\\\\\") {\n return path;\n }\n else {\n return path + \"/\";\n }\n}\nexports.cwd = cwd;\n/**\n * Returns the protocol of the given URL, or `undefined` if it has no protocol.\n *\n * @param path\n * @returns\n */\nfunction getProtocol(path) {\n const match = protocolPattern.exec(path || \"\");\n if (match) {\n return match[1].toLowerCase();\n }\n}\nexports.getProtocol = getProtocol;\n/**\n * Returns the lowercased file extension of the given URL,\n * or an empty string if it has no extension.\n *\n * @param path\n * @returns\n */\nfunction getExtension(path) {\n const lastDot = path.lastIndexOf(\".\");\n if (lastDot >= 0) {\n return stripQuery(path.substr(lastDot).toLowerCase());\n }\n return \"\";\n}\nexports.getExtension = getExtension;\n/**\n * Removes the query, if any, from the given path.\n *\n * @param path\n * @returns\n */\nfunction stripQuery(path) {\n const queryIndex = path.indexOf(\"?\");\n if (queryIndex >= 0) {\n path = path.substr(0, queryIndex);\n }\n return path;\n}\nexports.stripQuery = stripQuery;\n/**\n * Returns the hash (URL fragment), of the given path.\n * If there is no hash, then the root hash (\"#\") is returned.\n *\n * @param path\n * @returns\n */\nfunction getHash(path) {\n const hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n return path.substr(hashIndex);\n }\n return \"#\";\n}\nexports.getHash = getHash;\n/**\n * Removes the hash (URL fragment), if any, from the given path.\n *\n * @param path\n * @returns\n */\nfunction stripHash(path) {\n const hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n path = path.substr(0, hashIndex);\n }\n return path;\n}\nexports.stripHash = stripHash;\n/**\n * Determines whether the given path is an HTTP(S) URL.\n *\n * @param path\n * @returns\n */\nfunction isHttp(path) {\n const protocol = getProtocol(path);\n if (protocol === \"http\" || protocol === \"https\") {\n return true;\n }\n else if (protocol === undefined) {\n // There is no protocol. If we're running in a browser, then assume it's HTTP.\n return typeof window !== \"undefined\";\n }\n else {\n // It's some other protocol, such as \"ftp://\", \"mongodb://\", etc.\n return false;\n }\n}\nexports.isHttp = isHttp;\n/**\n * Determines whether the given path is a filesystem path.\n * This includes \"file://\" URLs.\n *\n * @param path\n * @returns\n */\nfunction isFileSystemPath(path) {\n // @ts-ignore\n if (typeof window !== \"undefined\" || process.browser) {\n // We're running in a browser, so assume that all paths are URLs.\n // This way, even relative paths will be treated as URLs rather than as filesystem paths\n return false;\n }\n const protocol = getProtocol(path);\n return protocol === undefined || protocol === \"file\";\n}\nexports.isFileSystemPath = isFileSystemPath;\n/**\n * Converts a filesystem path to a properly-encoded URL.\n *\n * This is intended to handle situations where JSON Schema $Ref Parser is called\n * with a filesystem path that contains characters which are not allowed in URLs.\n *\n * @example\n * The following filesystem paths would be converted to the following URLs:\n *\n * <\"!@#$%^&*+=?'>.json ==> %3C%22!@%23$%25%5E&*+=%3F\\'%3E.json\n * C:\\\\My Documents\\\\File (1).json ==> C:/My%20Documents/File%20(1).json\n * file://Project #42/file.json ==> file://Project%20%2342/file.json\n *\n * @param path\n * @returns\n */\nfunction fromFileSystemPath(path) {\n // Step 1: On Windows, replace backslashes with forward slashes,\n // rather than encoding them as \"%5C\"\n if ((0, is_windows_1.isWindows)()) {\n const upperPath = path.toUpperCase();\n const projectDirPosixPath = (0, convert_path_to_posix_1.default)(projectDir);\n const posixUpper = projectDirPosixPath.toUpperCase();\n const hasProjectDir = upperPath.includes(posixUpper);\n const hasProjectUri = upperPath.includes(posixUpper);\n const isAbsolutePath = path_1.win32.isAbsolute(path);\n if (!(hasProjectDir || hasProjectUri || isAbsolutePath)) {\n path = (0, path_2.join)(projectDir, path);\n }\n path = (0, convert_path_to_posix_1.default)(path);\n }\n // Step 2: `encodeURI` will take care of MOST characters\n path = encodeURI(path);\n // Step 3: Manually encode characters that are not encoded by `encodeURI`.\n // This includes characters such as \"#\" and \"?\", which have special meaning in URLs,\n // but are just normal characters in a filesystem path.\n for (let i = 0; i < urlEncodePatterns.length; i += 2) {\n path = path.replace(urlEncodePatterns[i], urlEncodePatterns[i + 1]);\n }\n return path;\n}\nexports.fromFileSystemPath = fromFileSystemPath;\n/**\n * Converts a URL to a local filesystem path.\n */\nfunction toFileSystemPath(path, keepFileProtocol) {\n // Step 1: `decodeURI` will decode characters such as Cyrillic characters, spaces, etc.\n path = decodeURI(path);\n // Step 2: Manually decode characters that are not decoded by `decodeURI`.\n // This includes characters such as \"#\" and \"?\", which have special meaning in URLs,\n // but are just normal characters in a filesystem path.\n for (let i = 0; i < urlDecodePatterns.length; i += 2) {\n path = path.replace(urlDecodePatterns[i], urlDecodePatterns[i + 1]);\n }\n // Step 3: If it's a \"file://\" URL, then format it consistently\n // or convert it to a local filesystem path\n let isFileUrl = path.substr(0, 7).toLowerCase() === \"file://\";\n if (isFileUrl) {\n // Strip-off the protocol, and the initial \"/\", if there is one\n path = path[7] === \"/\" ? path.substr(8) : path.substr(7);\n // insert a colon (\":\") after the drive letter on Windows\n if ((0, is_windows_1.isWindows)() && path[1] === \"/\") {\n path = path[0] + \":\" + path.substr(1);\n }\n if (keepFileProtocol) {\n // Return the consistently-formatted \"file://\" URL\n path = \"file:///\" + path;\n }\n else {\n // Convert the \"file://\" URL to a local filesystem path.\n // On Windows, it will start with something like \"C:/\".\n // On Posix, it will start with \"/\"\n isFileUrl = false;\n path = (0, is_windows_1.isWindows)() ? path : \"/\" + path;\n }\n }\n // Step 4: Normalize Windows paths (unless it's a \"file://\" URL)\n if ((0, is_windows_1.isWindows)() && !isFileUrl) {\n // Replace forward slashes with backslashes\n path = path.replace(forwardSlashPattern, \"\\\\\");\n // Capitalize the drive letter\n if (path.substr(1, 2) === \":\\\\\") {\n path = path[0].toUpperCase() + path.substr(1);\n }\n }\n return path;\n}\nexports.toFileSystemPath = toFileSystemPath;\n/**\n * Converts a $ref pointer to a valid JSON Path.\n *\n * @param pointer\n * @returns\n */\nfunction safePointerToPath(pointer) {\n if (pointer.length <= 1 || pointer[0] !== \"#\" || pointer[1] !== \"/\") {\n return [];\n }\n return pointer\n .slice(2)\n .split(\"/\")\n .map((value) => {\n return decodeURIComponent(value).replace(jsonPointerSlash, \"/\").replace(jsonPointerTilde, \"~\");\n });\n}\nexports.safePointerToPath = safePointerToPath;\nfunction relative(from, to) {\n if (!isFileSystemPath(from) || !isFileSystemPath(to)) {\n return resolve(from, to);\n }\n const fromDir = path_1.default.dirname(stripHash(from));\n const toPath = stripHash(to);\n const result = path_1.default.relative(fromDir, toPath);\n return result + getHash(to);\n}\nexports.relative = relative;\n","/**\n * FingerprintJS Pro v3.8.5 - Copyright (c) FingerprintJS, Inc, 2023 (https://fingerprint.com)\n *\n * This software contains code from open-source projects:\n * MurmurHash3 by Karan Lyons (https://github.com/karanlyons/murmurHash3.js)\n */\n\nimport{__spreadArray as e,__rest as t,__assign as n}from\"tslib\";function r(e){for(var t=\"\",n=0;n0){var r=e[n].toLowerCase();r!==e[n]?t+=\" \".concat(r):t+=e[n]}else t+=e[n].toUpperCase();return t}function o(e,t){return function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(e,t)?e[t]:void 0}var i={default:\"endpoint\"},u={default:\"tlsEndpoint\"},R=\"Client timeout\",a=\"Network connection error\",c=\"Network request aborted\",E=\"Response cannot be parsed\",s=\"Blocked by CSP\",f=\"The endpoint parameter is not a valid URL\",d=/*#__PURE__*/r(\"WrongRegion\"),l=/*#__PURE__*/r(\"SubscriptionNotActive\"),_=/*#__PURE__*/r(\"UnsupportedVersion\"),p=/*#__PURE__*/r(\"InstallationMethodRestricted\"),O=/*#__PURE__*/r(\"HostnameRestricted\"),v=/*#__PURE__*/r(\"IntegrationFailed\"),I=\"API key required\",h=\"API key not found\",N=\"API key expired\",T=\"Request cannot be parsed\",m=\"Request failed\",A=\"Request failed to process\",w=\"Too many requests, rate limit exceeded\",P=\"Not available for this origin\",D=\"Not available with restricted header\",y=I,S=h,L=N,U=\"3.8.5\",g=\"9319\";function C(t,n){var r=[];return function(t,n){var r=5,o=(E=t,f=e([],E,!0),{current:function(){return f[0]},postpone:function(){var e=f.shift();void 0!==e&&f.push(e)},exclude:function(){f.shift()}}),i=(R=100,a=3e3,c=0,function(){return Math.random()*Math.min(a,R*Math.pow(2,c++))}),u=o.current();var R,a,c;var E,f;if(void 0===u)return Promise.reject(new TypeError(\"The list of script URL patterns is empty\"));var d=function(e,t){return n(e).catch((function(e){if(t+1>=r)throw e;!function(e){if(!(e instanceof Error))return!1;var t=e.message;return t===s||t===g}(e)?o.postpone():o.exclude();var n,u=o.current();if(void 0===u)throw e;return(n=i(),new Promise((function(e){return setTimeout(e,n)}))).then((function(){return d(u,t+1)}))}))};return d(u,0)}(t,(function(e){var t=new Date,o=function(n){return r.push({url:e,startedAt:t,finishedAt:new Date,error:n})},i=n(e);return i.then((function(){return o()}),o),i})).then((function(e){return[e,{attempts:r}]}))}var b=\"https://fpnpmcdn.net/v//loader_v.js\",K=b,M=\"Failed to load the JS script of the agent\";function B(e){var r;e.scriptUrlPattern;var i=e.token,u=e.apiKey,R=void 0===u?i:u,a=t(e,[\"scriptUrlPattern\",\"token\",\"apiKey\"]),c=null!==(r=o(e,\"scriptUrlPattern\"))&&void 0!==r?r:b;return Promise.resolve().then((function(){if(!R||\"string\"!=typeof R)throw new Error(I);var e=function(e,t){return(Array.isArray(e)?e:[e]).map((function(e){return function(e,t){var n=encodeURIComponent;return e.replace(/<[^<>]+>/g,(function(e){return\"\"===e?\"3\":\"\"===e?n(t):\"\"===e?n(U):e}))}(String(e),t)}))}(c,R);return C(e,F).catch(k)})).then((function(e){var t=e[0],r=e[1];return t.load(n(n({},a),{ldi:r}))}))}function F(e){return function(e,t,n,r){var o,i=document,u=\"securitypolicyviolation\",R=function(t){var n=new URL(e,location.href),r=t.blockedURI;r!==n.href&&r!==n.protocol.slice(0,-1)&&r!==n.origin||(o=t,a())};i.addEventListener(u,R);var a=function(){return i.removeEventListener(u,R)};return null==r||r.then(a,a),Promise.resolve().then(t).then((function(e){return a(),e}),(function(e){return new Promise((function(e){return setTimeout(e)})).then((function(){if(a(),o)return n(o);throw e}))}))}(e,(function(){return function(e){return new Promise((function(t,n){var r=document.createElement(\"script\"),o=function(){var e;return null===(e=r.parentNode)||void 0===e?void 0:e.removeChild(r)},i=document.head||document.getElementsByTagName(\"head\")[0];r.onload=function(){o(),t()},r.onerror=function(){o(),n(new Error(M))},r.async=!0,r.src=e,i.appendChild(r)}))}(e)}),(function(){throw new Error(s)})).then(V)}function V(){var e=window,t=\"__fpjs_p_l_b\",n=e[t];if(function(e,t){var n,r=null===(n=Object.getOwnPropertyDescriptor)||void 0===n?void 0:n.call(Object,e,t);(null==r?void 0:r.configurable)?delete e[t]:r&&!r.writable||(e[t]=void 0)}(e,t),\"function\"!=typeof(null==n?void 0:n.load))throw new Error(g);return n}function k(e){throw e instanceof Error&&e.message===g?new Error(M):e}var G={load:B,defaultScriptUrlPattern:K,ERROR_SCRIPT_LOAD_FAIL:M,ERROR_API_KEY_EXPIRED:N,ERROR_API_KEY_INVALID:h,ERROR_API_KEY_MISSING:I,ERROR_BAD_REQUEST_FORMAT:T,ERROR_BAD_RESPONSE_FORMAT:E,ERROR_CLIENT_TIMEOUT:R,ERROR_CSP_BLOCK:s,ERROR_FORBIDDEN_ENDPOINT:O,ERROR_FORBIDDEN_HEADER:D,ERROR_FORBIDDEN_ORIGIN:P,ERROR_GENERAL_SERVER_FAILURE:m,ERROR_INSTALLATION_METHOD_RESTRICTED:p,ERROR_INTEGRATION_FAILURE:v,ERROR_INVALID_ENDPOINT:f,ERROR_NETWORK_ABORT:c,ERROR_NETWORK_CONNECTION:a,ERROR_RATE_LIMIT:w,ERROR_SERVER_TIMEOUT:A,ERROR_SUBSCRIPTION_NOT_ACTIVE:l,ERROR_TOKEN_EXPIRED:L,ERROR_TOKEN_INVALID:S,ERROR_TOKEN_MISSING:y,ERROR_UNSUPPORTED_VERSION:_,ERROR_WRONG_REGION:d,defaultEndpoint:i,defaultTlsEndpoint:u};export{N as ERROR_API_KEY_EXPIRED,h as ERROR_API_KEY_INVALID,I as ERROR_API_KEY_MISSING,T as ERROR_BAD_REQUEST_FORMAT,E as ERROR_BAD_RESPONSE_FORMAT,R as ERROR_CLIENT_TIMEOUT,s as ERROR_CSP_BLOCK,O as ERROR_FORBIDDEN_ENDPOINT,D as ERROR_FORBIDDEN_HEADER,P as ERROR_FORBIDDEN_ORIGIN,m as ERROR_GENERAL_SERVER_FAILURE,p as ERROR_INSTALLATION_METHOD_RESTRICTED,v as ERROR_INTEGRATION_FAILURE,f as ERROR_INVALID_ENDPOINT,c as ERROR_NETWORK_ABORT,a as ERROR_NETWORK_CONNECTION,w as ERROR_RATE_LIMIT,M as ERROR_SCRIPT_LOAD_FAIL,A as ERROR_SERVER_TIMEOUT,l as ERROR_SUBSCRIPTION_NOT_ACTIVE,L as ERROR_TOKEN_EXPIRED,S as ERROR_TOKEN_INVALID,y as ERROR_TOKEN_MISSING,_ as ERROR_UNSUPPORTED_VERSION,d as ERROR_WRONG_REGION,G as default,i as defaultEndpoint,K as defaultScriptUrlPattern,u as defaultTlsEndpoint,B as load};\n","// DO NOT ADD ANY NEW IMPORTS HERE.\n// NOTE: These constants, structs, and functions must match those in rawevents.proto\nvar RawEventKind;\n(function (RawEventKind) {\n RawEventKind.MUT_INSERT = 2;\n RawEventKind.MUT_REMOVE = 3;\n RawEventKind.MUT_ATTR = 4;\n RawEventKind.MUT_TEXT = 6;\n RawEventKind.MOUSEMOVE = 8;\n RawEventKind.MOUSEMOVE_CURVE = 9;\n RawEventKind.SCROLL_LAYOUT = 10;\n RawEventKind.SCROLL_LAYOUT_CURVE = 11;\n RawEventKind.MOUSEDOWN = 12;\n RawEventKind.MOUSEUP = 13;\n RawEventKind.CLICK = 16;\n RawEventKind.FOCUS = 17;\n RawEventKind.VALUECHANGE = 18;\n RawEventKind.RESIZE_LAYOUT = 19;\n RawEventKind.DOMLOADED = 20;\n RawEventKind.LOAD = 21;\n RawEventKind.PLACEHOLDER_SIZE = 22;\n RawEventKind.UNLOAD = 23;\n RawEventKind.BLUR = 24;\n RawEventKind.SET_FRAME_BASE = 25;\n RawEventKind.TOUCHSTART = 32;\n RawEventKind.TOUCHEND = 33;\n RawEventKind.TOUCHCANCEL = 34;\n RawEventKind.TOUCHMOVE = 35;\n RawEventKind.TOUCHMOVE_CURVE = 36;\n RawEventKind.NAVIGATE = 37;\n RawEventKind.PLAY = 38;\n RawEventKind.PAUSE = 39;\n RawEventKind.RESIZE_VISUAL = 40;\n RawEventKind.RESIZE_VISUAL_CURVE = 41;\n RawEventKind.RESIZE_DOCUMENT_CONTENT = 42;\n RawEventKind.RESIZE_SCROLLABLE_ELEMENT_CONTENT = 43;\n RawEventKind.LOG = 48;\n RawEventKind.ERROR = 49;\n RawEventKind.DBL_CLICK = 50;\n RawEventKind.FORM_SUBMIT = 51;\n RawEventKind.WINDOW_FOCUS = 52;\n RawEventKind.WINDOW_BLUR = 53;\n RawEventKind.HEARTBEAT = 54;\n RawEventKind.WATCHED_ELEM = 56;\n RawEventKind.PERF_ENTRY = 57;\n RawEventKind.REC_FEAT_SUPPORTED = 58;\n RawEventKind.SELECT = 59;\n RawEventKind.CSSRULE_INSERT = 60;\n RawEventKind.CSSRULE_DELETE = 61;\n RawEventKind.FAIL_THROTTLED = 62;\n RawEventKind.AJAX_REQUEST = 63;\n RawEventKind.SCROLL_VISUAL_OFFSET = 64;\n RawEventKind.SCROLL_VISUAL_OFFSET_CURVE = 65;\n RawEventKind.MEDIA_QUERY_CHANGE = 66;\n RawEventKind.RESOURCE_TIMING_BUFFER_FULL = 67;\n RawEventKind.MUT_SHADOW = 68;\n RawEventKind.DISABLE_STYLESHEET = 69;\n RawEventKind.FULLSCREEN = 70;\n RawEventKind.FULLSCREEN_ERROR = 71;\n RawEventKind.ADOPTED_STYLESHEETS = 72;\n RawEventKind.CUSTOM_ELEMENT_DEFINED = 73;\n RawEventKind.MODAL_OPEN = 74;\n RawEventKind.MODAL_CLOSE = 75;\n RawEventKind.SLOW_INTERACTION = 76;\n RawEventKind.LONG_FRAME = 77;\n RawEventKind.TIMING = 78;\n RawEventKind.STORAGE_WRITE_FAILURE = 79;\n RawEventKind.DOCUMENT_PROPERTIES = 80;\n RawEventKind.ENTRY_NAVIGATE = 81;\n RawEventKind.STATS = 82;\n RawEventKind.VIEWPORT_INTERSECTION = 83;\n RawEventKind.COPY = 84;\n RawEventKind.PASTE = 85;\n RawEventKind.URL_SALT = 86;\n RawEventKind.URL_ID = 87;\n RawEventKind.FRAME_STATUS = 88;\n RawEventKind.SCRIPT_COMPILED_VERSION = 89;\n RawEventKind.RESET_CSS_SHEET = 90;\n RawEventKind.ANIMATION_CREATED = 91;\n RawEventKind.ANIMATION_METHOD_CALLED = 92;\n RawEventKind.ANIMATION_PROPERTY_SET = 93;\n RawEventKind.DOCUMENT_TIMELINE_CREATED = 94;\n RawEventKind.KEYFRAME_EFFECT_CREATED = 95;\n RawEventKind.KEYFRAME_EFFECT_METHOD_CALLED = 96;\n RawEventKind.KEYFRAME_EFFECT_PROPERTY_SET = 97;\n RawEventKind.CAPTURE_SOURCE = 98;\n RawEventKind.PAGE_DATA = 99;\n RawEventKind.VISIBILITY_STATE = 100;\n RawEventKind.DIALOG = 101;\n RawEventKind.CSSRULE_UPDATE = 102;\n RawEventKind.CANVAS = 103;\n RawEventKind.CANVAS_DETACHED_DIMENSION = 104;\n RawEventKind.INIT_API = 105;\n RawEventKind.DEFERRED_RESOLVED = 106;\n RawEventKind.DEFERRED_MUT_INSERT = 107;\n RawEventKind.DEFERRED_MUT_SHADOW = 108;\n RawEventKind.ELEMENT_PROP = 109;\n RawEventKind.BFCACHE_STATE = 110;\n RawEventKind.SESSION_INFO = 111;\n RawEventKind.KEEP_ELEMENT = 2000;\n RawEventKind.KEEP_URL = 2001;\n RawEventKind.KEEP_BOUNCE = 2002;\n RawEventKind.SYS_SETVAR = 8193;\n RawEventKind.SYS_RESOURCEHASH = 8195;\n RawEventKind.SYS_SETCONSENT = 8196;\n RawEventKind.SYS_CUSTOM = 8197;\n RawEventKind.SYS_REPORTCONSENT = 8198;\n RawEventKind.SYS_LETHE_MOBILE_BUNDLE_SEQ = 8199;\n})(RawEventKind || (RawEventKind = {}));\n// The types of animations that can be recorded\nvar RecAnimationType;\n(function (RecAnimationType) {\n RecAnimationType.Animation = 0;\n RecAnimationType.CSSAnimation = 1;\n RecAnimationType.CSSTransition = 2;\n})(RecAnimationType || (RecAnimationType = {}));\nvar TimingScope;\n(function (TimingScope) {\n TimingScope.Internal = 0;\n TimingScope.Public = 1;\n})(TimingScope || (TimingScope = {}));\nvar TimingCategory;\n(function (TimingCategory) {\n TimingCategory.Unknown = 0;\n TimingCategory.Serialization = 1;\n})(TimingCategory || (TimingCategory = {}));\nvar TimingLabel;\n(function (TimingLabel) {\n TimingLabel.Unknown = 0;\n TimingLabel.DomSnapshot = 1;\n TimingLabel.NodeEncoding = 2;\n TimingLabel.LzEncoding = 3;\n TimingLabel.ApplyRules = 4;\n TimingLabel.ProcessMut = 5;\n})(TimingLabel || (TimingLabel = {}));\nvar FrameStatus;\n(function (FrameStatus) {\n FrameStatus.Unknown = 0;\n FrameStatus.Successful = 1;\n FrameStatus.BlocklistedFrame = 2;\n FrameStatus.PartiallyLoaded = 3;\n FrameStatus.MissingWindowOrDocument = 4;\n FrameStatus.MissingDocumentHead = 5;\n FrameStatus.MissingBodyOrChildren = 6;\n FrameStatus.AlreadyDefined = 7;\n FrameStatus.NoNonScriptElement = 8;\n FrameStatus.Exception = 9;\n})(FrameStatus || (FrameStatus = {}));\nvar BfcacheState;\n(function (BfcacheState) {\n BfcacheState[BfcacheState[\"Unset\"] = 0] = \"Unset\";\n BfcacheState[BfcacheState[\"Entering\"] = 1] = \"Entering\";\n BfcacheState[BfcacheState[\"Restored\"] = 2] = \"Restored\";\n})(BfcacheState || (BfcacheState = {}));\nvar CssRuleIdKind;\n(function (CssRuleIdKind) {\n CssRuleIdKind[CssRuleIdKind[\"Index\"] = 1] = \"Index\";\n CssRuleIdKind[CssRuleIdKind[\"Cached\"] = 2] = \"Cached\";\n})(CssRuleIdKind || (CssRuleIdKind = {}));\nvar ConsentState;\n(function (ConsentState) {\n ConsentState.GrantConsent = true;\n ConsentState.RevokeConsent = false;\n})(ConsentState || (ConsentState = {}));\nvar ConsentScope;\n(function (ConsentScope) {\n ConsentScope.Page = 0;\n ConsentScope.Document = 1;\n})(ConsentScope || (ConsentScope = {}));\n// Constants used in RawEventKind.UNLOAD.\n// todo(clint) comments display legacy reason values, remove after Nov 2019\nvar UnloadReason;\n(function (UnloadReason) {\n UnloadReason.Unknown = 0;\n UnloadReason.Api = 1;\n UnloadReason.FsShutdownFrame = 2;\n UnloadReason.Hibernation = 3;\n UnloadReason.Reidentify = 4;\n UnloadReason.SettingsBlocked = 5;\n UnloadReason.Size = 6;\n UnloadReason.Unload = 7;\n UnloadReason.Hidden = 8;\n})(UnloadReason || (UnloadReason = {}));\n/**\n * Reasons why the Ajax req/res body was empty\n */\nvar AjaxLegibility;\n(function (AjaxLegibility) {\n AjaxLegibility.Unknown = 0;\n AjaxLegibility.NotEmpty = 1;\n AjaxLegibility.EmptyBody = 2;\n})(AjaxLegibility || (AjaxLegibility = {}));\n/**\n * Values from the browser Performance API, for use with\n * RawEventKind.PERF_ENTRY.\n */\nvar PerfEntryType;\n(function (PerfEntryType) {\n PerfEntryType.Timing = 0;\n PerfEntryType.Navigation = 1;\n PerfEntryType.Resource = 2;\n PerfEntryType.Paint = 3;\n PerfEntryType.Mark = 4;\n PerfEntryType.Measure = 5;\n PerfEntryType.Memory = 6;\n PerfEntryType.TimeOrigin = 7;\n PerfEntryType.LayoutShift = 8;\n PerfEntryType.FirstInput = 9;\n PerfEntryType.LargestContentfulPaint = 10;\n PerfEntryType.LongTask = 11;\n PerfEntryType.EventTiming = 12;\n PerfEntryType.EventTimingCount = 13;\n})(PerfEntryType || (PerfEntryType = {}));\n/**\n * Field orders for the various performance entry types.\n * NOTE: Do _not_ change the ordering. They are the sole definition of what's in\n * the args field.\n * TODO(sethf): Change this to a mapped type where the keys are PerfEntryType.\n * We currently can't do this because PerfEntryType is a union of numeric\n * literal types, and we're compiling with keyofStringsOnly because of some\n * difficulties with index signature types elsewhere in the code base.\n * Fortunately, those problems should go away with TypeScript 4.2, thanks to\n * this PR:\n * https://github.com/microsoft/TypeScript/pull/26797\n */\nvar PerfEntryFields;\n(function (PerfEntryFields) {\n PerfEntryFields.Timing = ['navigationStart', 'unloadEventStart', 'unloadEventEnd', 'redirectStart', 'redirectEnd', 'fetchStart', 'domainLookupStart', 'domainLookupEnd', 'connectStart', 'connectEnd', 'secureConnectionStart', 'requestStart', 'responseStart', 'responseEnd', 'domLoading', 'domInteractive', 'domContentLoadedEventStart', 'domContentLoadedEventEnd', 'domComplete', 'loadEventStart', 'loadEventEnd'];\n PerfEntryFields.Navigation = ['name', 'startTime', 'duration', 'initiatorType', 'redirectStart', 'redirectEnd', 'fetchStart', 'domainLookupStart', 'domainLookupEnd', 'connectStart', 'connectEnd', 'secureConnectionStart', 'requestStart', 'responseStart', 'responseEnd', 'unloadEventStart', 'unloadEventEnd', 'domInteractive', 'domContentLoadedEventStart', 'domContentLoadedEventEnd', 'domComplete', 'loadEventStart', 'loadEventEnd', 'type', 'redirectCount',\n // Possibly non-standard, but supported by chrome+firefox (not edge).\n 'decodedBodySize', 'encodedBodySize', 'transferSize', 'activationStart'];\n PerfEntryFields.Resource = ['name', 'startTime', 'duration', 'initiatorType', 'redirectStart', 'redirectEnd', 'fetchStart', 'domainLookupStart', 'domainLookupEnd', 'connectStart', 'connectEnd', 'secureConnectionStart', 'requestStart', 'responseStart', 'responseEnd',\n // Possibly non-standard, but supported by chrome+firefox (not edge).\n 'decodedBodySize', 'encodedBodySize', 'transferSize'];\n PerfEntryFields.Measure = ['name', 'startTime', 'duration'];\n PerfEntryFields.Memory = ['jsHeapSizeLimit', 'totalJSHeapSize', 'usedJSHeapSize'];\n PerfEntryFields.TimeOrigin = ['timeOrigin'];\n PerfEntryFields.LayoutShift = ['startTime', 'value', 'hadRecentInput'];\n PerfEntryFields.FirstInput = ['name', 'startTime', 'duration', 'processingStart'];\n PerfEntryFields.EventTiming = ['name', 'startTime', 'duration', 'processingStart', 'processingEnd', 'interactionId'];\n PerfEntryFields.LargestContentfulPaint = ['name', 'startTime', 'duration', 'renderTime', 'loadTime', 'size'];\n PerfEntryFields.EventTimingCount = ['interactionCount'];\n})(PerfEntryFields || (PerfEntryFields = {}));\n// Feature types for RawEventKind.REC_FEAT_SUPPORTED:\nvar RecFeature;\n(function (RecFeature) {\n RecFeature.Performance = 0;\n RecFeature.PerformanceEntries = 1;\n RecFeature.PerformanceMemory = 2;\n RecFeature.Console = 3;\n RecFeature.Ajax = 4;\n RecFeature.PerformanceObserver = 5;\n RecFeature.PerformanceTimeOrigin = 7;\n RecFeature.WebAnimation = 8;\n RecFeature.LayoutShift = 9;\n RecFeature.FirstInput = 10;\n RecFeature.LargestContentfulPaint = 11;\n RecFeature.LongTask = 12;\n RecFeature.HTMLDialogElement = 13;\n RecFeature.CaptureOnStartupEnabled = 14;\n RecFeature.CanvasWatcherEnabled = 15;\n RecFeature.CanvasScreenShotMode = 16;\n RecFeature.ResizeObserver = 17;\n})(RecFeature || (RecFeature = {}));\nvar SheetOwner;\n(function (SheetOwner) {\n SheetOwner.Node = 1;\n SheetOwner.Sheet = 2;\n})(SheetOwner || (SheetOwner = {}));\n// Throttled task types for RawEventKind.FAIL_THROTTLED.\nvar ThrottledTask;\n(function (ThrottledTask) {\n ThrottledTask.StyleSheetHooks = 0;\n ThrottledTask.SetPropertyHooks = 1;\n})(ThrottledTask || (ThrottledTask = {}));\n// Scopes for RawEventKind.SYS_SETVAR.\nvar VarScope;\n(function (VarScope) {\n VarScope.Document = 'document';\n VarScope.Event = 'evt';\n VarScope.Page = 'page';\n VarScope.User = 'user';\n})(VarScope || (VarScope = {}));\nvar HighlightType;\n(function (HighlightType) {\n HighlightType[\"FsId\"] = 'fsidentity';\n HighlightType[\"NewUid\"] = 'newuid';\n})(HighlightType || (HighlightType = {}));\n// Constants used in AjaxWatch.[ReqRsp]BodyType.\nvar AjaxBodyPolicy;\n(function (AjaxBodyPolicy) {\n AjaxBodyPolicy.Elide = 0;\n AjaxBodyPolicy.Record = 1;\n AjaxBodyPolicy.Allowlist = 2;\n})(AjaxBodyPolicy || (AjaxBodyPolicy = {}));\n// enums used for attribute blocking; these should match the values found in recording.proto\nvar AttributeBlockTarget;\n(function (AttributeBlockTarget) {\n AttributeBlockTarget.Any = 0;\n AttributeBlockTarget.Exclude = 1;\n AttributeBlockTarget.Mask = 2;\n})(AttributeBlockTarget || (AttributeBlockTarget = {}));\n/**\n * List of possible actions to be performed on a blocked attribute\n * NOTE: this must be in descending privacy order; that is, the more strict rules must come first\n * When there are overlapping entries, the lowest value action is used\n */\nvar AttributeBlockAction;\n(function (AttributeBlockAction) {\n AttributeBlockAction.Erase = 0;\n AttributeBlockAction.MaskText = 1;\n AttributeBlockAction.ScrubUrl = 2;\n AttributeBlockAction.ScrubCss = 3;\n})(AttributeBlockAction || (AttributeBlockAction = {}));\nvar AttributeBlockType;\n(function (AttributeBlockType) {\n AttributeBlockType.Static = 0;\n AttributeBlockType.Prefix = 1;\n})(AttributeBlockType || (AttributeBlockType = {}));\nvar BehaviorSignalType;\n(function (BehaviorSignalType) {\n BehaviorSignalType.SignalInvalid = 0;\n BehaviorSignalType.SignalDeadClick = 1;\n BehaviorSignalType.SignalRageClick = 2;\n})(BehaviorSignalType || (BehaviorSignalType = {}));\n// keep in sync with recording.go\nvar BlockReasonType;\n(function (BlockReasonType) {\n BlockReasonType.ReasonNoSuchOrg = 1;\n BlockReasonType.ReasonOrgDisabled = 2;\n BlockReasonType.ReasonOrgOverQuota = 3;\n BlockReasonType.ReasonBlockedDomain = 4;\n BlockReasonType.ReasonBlockedIp = 5;\n BlockReasonType.ReasonBlockedUserAgent = 6;\n BlockReasonType.ReasonBlockedGeo = 7;\n BlockReasonType.ReasonBlockedTrafficRamping = 8;\n BlockReasonType.ReasonInvalidURL = 9;\n BlockReasonType.ReasonUserOptOut = 10;\n BlockReasonType.ReasonInvalidRecScript = 11;\n BlockReasonType.ReasonDeletingUser = 12;\n BlockReasonType.ReasonNativeHookFailure = 13;\n})(BlockReasonType || (BlockReasonType = {}));\n// Constants used in ElementBlock.Type.\n// Keep in sync with fs/model.BlockType.\nvar BlockType;\n(function (BlockType) {\n BlockType.Unset = 0;\n BlockType.Exclude = 1;\n BlockType.Mask = 2;\n BlockType.Unmask = 3;\n BlockType.Watch = 4;\n BlockType.Keep = 5;\n BlockType.Defer = 6;\n})(BlockType || (BlockType = {}));\n// Constants used in ElementKeepType.\n// Keep in sync with fs/model.KeepType.\nvar KeepType;\n(function (KeepType) {\n KeepType.Unset = 0;\n KeepType.Click = 1;\n})(KeepType || (KeepType = {}));\nvar SockRequestCommand;\n(function (SockRequestCommand) {\n SockRequestCommand[SockRequestCommand[\"Page\"] = 1] = \"Page\";\n SockRequestCommand[SockRequestCommand[\"Bundle\"] = 2] = \"Bundle\";\n})(SockRequestCommand || (SockRequestCommand = {}));\nvar SockResponseCommand;\n(function (SockResponseCommand) {\n SockResponseCommand[SockResponseCommand[\"Error\"] = 3] = \"Error\";\n SockResponseCommand[SockResponseCommand[\"Page\"] = 4] = \"Page\";\n SockResponseCommand[SockResponseCommand[\"Bundle\"] = 5] = \"Bundle\";\n SockResponseCommand[SockResponseCommand[\"Settings\"] = 6] = \"Settings\";\n})(SockResponseCommand || (SockResponseCommand = {}));\n///////////////////////////////////////////////////////////////////////////////\n// Recording constants, possibly shared with UI code.\n///////////////////////////////////////////////////////////////////////////////\nvar Constants;\n(function (Constants) {\n var MaxPerfMarksPerPage = Constants.MaxPerfMarksPerPage = 16 * 1024;\n var MaxLogsPerPage = Constants.MaxLogsPerPage = 1024;\n var MaxUrlLength = Constants.MaxUrlLength = 2048;\n var MutationProcessingInterval = Constants.MutationProcessingInterval = 250;\n Constants.CurveSamplingInterval = 142;\n Constants.DefaultBundleUploadInterval = 5000;\n Constants.HeartbeatInterval = 4.27 * 60 * 1000;\n Constants.PageInactivityTimeout = 30 * 60 * 1000;\n Constants.BackoffMax = 5 * 60 * 1000;\n Constants.ScrollSampleInterval = MutationProcessingInterval / 5;\n Constants.InactivityThreshold = 4000;\n var MaxAjaxPayloadLength = Constants.MaxAjaxPayloadLength = 16 * 1024;\n Constants.DefaultOrgSettings = {\n MaxPerfMarksPerPage: MaxPerfMarksPerPage,\n MaxConsoleLogPerPage: MaxLogsPerPage,\n MaxAjaxPayloadLength: MaxAjaxPayloadLength,\n MaxUrlLength: MaxUrlLength,\n RecordPerformanceResourceImg: true,\n RecordPerformanceResourceTiming: true,\n HttpRequestHeadersAllowlist: [],\n HttpResponseHeadersAllowlist: [],\n UrlPrivacyConfig: [{\n Exclude: {\n Hash: [{\n Expression: '#.*'\n }],\n QueryParam: [{\n Expression: '(=)(.*)'\n }]\n }\n }],\n // by default, if no org settings is detected, wipe every attribute\n AttributeBlocklist: [{\n Target: AttributeBlockTarget.Any,\n Tag: '*',\n Name: '',\n Type: AttributeBlockType.Prefix,\n Action: AttributeBlockAction.Erase\n }]\n };\n Constants.DefaultStatsSettings = {\n MaxPayloadLength: 8192,\n // NOTE: Max length is intended to prevent fraudulent data, not to limit the feature. -SN (1/4/22)\n MaxEventTypeLength: 1024\n };\n Constants.BlockedFieldValue = '__fs__redacted';\n Constants.DefaultRecDisabledMessage = 'Capture disabled. Turn on debug mode for more information.';\n Constants.ShutdownMessage = 'Shutdown called.';\n})(Constants || (Constants = {}));\nvar CaptureState;\n(function (CaptureState) {\n CaptureState[CaptureState[\"Shutdown\"] = 1] = \"Shutdown\";\n CaptureState[CaptureState[\"Starting\"] = 2] = \"Starting\";\n CaptureState[CaptureState[\"Started\"] = 3] = \"Started\";\n CaptureState[CaptureState[\"Fatal\"] = 4] = \"Fatal\";\n})(CaptureState || (CaptureState = {}));\nvar CanvasOpType;\n(function (CanvasOpType) {\n CanvasOpType.Set = 0;\n CanvasOpType.Function = 1;\n})(CanvasOpType || (CanvasOpType = {}));\nvar CanvasWatcherMode;\n(function (CanvasWatcherMode) {\n CanvasWatcherMode[CanvasWatcherMode[\"Disabled\"] = 0] = \"Disabled\";\n CanvasWatcherMode[CanvasWatcherMode[\n /**\n * captures the operations done directly to the canvas and replay\n * advantages:\n * 1. for simpler operations this is smaller footprint\n * 2. allows potentially content masking\n * 3. all operations should be captured so nothing gets lost\n * disadvantages:\n * 1. operations done prior to initialization could be missed\n * 2. complex webgl operations do not work well, especially if\n * script manipulates buffers, because each of those buffers must\n * be encoded by us\n */\n \"CaptureCanvasOps\"] = 1] = \"CaptureCanvasOps\";\n CanvasWatcherMode[CanvasWatcherMode[\n /**\n * uses the screenshots of canvases and upload as screenshots\n * the advantages/disadvantages of this is almost entirely inverse of the above\n * advantages:\n * 1. for complex operations this is smaller footprint (esp webgl)\n * 2. captures current state of canvas, regardless of FS initialization\n * disadvantages:\n * 1. does not allow content masking (unless we redraw onto an in memory FS canvas)\n * 2. depends on the rate of refresh, could miss things drawn on canvas that goes away\n * 3. for simpler operation this is larger footprint\n */\n \"ScreenshotCanvas\"] = 2] = \"ScreenshotCanvas\";\n})(CanvasWatcherMode || (CanvasWatcherMode = {}));\nvar Messages;\n(function (Messages) {\n Messages[\"EndPreviewMode\"] = \"EndPreviewMode\";\n Messages[\"EvtBundle\"] = \"EvtBundle\";\n Messages[\"GreetFrame\"] = \"GreetFrame\";\n Messages[\"InitFrameMobile\"] = \"InitFrameMobile\";\n Messages[\"RequestFrameId\"] = \"RequestFrameId\";\n Messages[\"RestartFrame\"] = \"RestartFrame\";\n Messages[\"SetConsent\"] = \"SetConsent\";\n Messages[\n /**\n * Important note! Any changes here must be reflected in the `InitFrameMobile`, as there are\n * long-lived mobile clients in the field that expect the stable interface to work.\n */\n \"SetFrameId\"] = \"SetFrameId\";\n Messages[\"ShutdownFrame\"] = \"ShutdownFrame\";\n Messages[/** Unknown used as fallback, consider this a noop and internal only */\"Unknown\"] = \"Unknown\";\n})(Messages || (Messages = {}));\nMessages.RequestFrameId;\nMessages.EvtBundle;\n\n// @ts-nocheck\nvar SnippetSrcV2 = \"!function(m,n,e,t,l,o,g,y){var s,f,a=function(h){\\nreturn!(h in m)||(m.console&&m.console.log&&m.console.log('FullStory namespace conflict. Please set window[\\\"_fs_namespace\\\"].'),!1)}(e)\\n;function j(b){var h,d=[];function k(){h&&(d.forEach((function(b){var d;try{d=b[h[0]]&&b[h[0]](h[1])}catch(h){return void(b[3]&&b[3](h))}\\nd&&d.then?d.then(b[2],b[3]):b[2]&&b[2](d)})),d.length=0)}function r(b){return function(d){h||(h=[b,d],k())}}return b(r(0),r(1)),{\\nthen:function(b,h){return j((function(r,i){d.push([b,h,r,i]),k()}))}}}a&&(g=m[e]=function(){var b=function(b,d,k,r){function i(i,c){\\nh(b,d,k,i,c,r)}r=r||2;var c,u=/Async$/;return u.test(b)?(b=b.replace(u,\\\"\\\"),\\\"function\\\"==typeof Promise?new Promise(i):j(i)):h(b,d,k,c,c,r)}\\n;function h(h,d,k,r,i,c){return b._api?b._api(h,d,k,r,i,c):(b.q&&b.q.push([h,d,k,r,i,c]),null)}return b.q=[],b}(),y=function(b){function h(h){\\n\\\"function\\\"==typeof h[4]&&h[4](new Error(b))}var d=g.q;if(d){for(var k=0;k 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$wnd = _ref.wnd,\n wnd = _ref$wnd === void 0 ? window : _ref$wnd;\n !function (m, n, e, t, l, o, g, y) {\n var s,\n f,\n a = function (h) {\n return !(h in m) || (m.console && m.console.log && m.console.log('FullStory namespace conflict. Please set window[\"_fs_namespace\"].'), !1);\n }(e);\n function j(b) {\n var h,\n d = [];\n function k() {\n h && (d.forEach(function (b) {\n var d;\n try {\n d = b[h[0]] && b[h[0]](h[1]);\n } catch (h) {\n return void (b[3] && b[3](h));\n }\n d && d.then ? d.then(b[2], b[3]) : b[2] && b[2](d);\n }), d.length = 0);\n }\n function r(b) {\n return function (d) {\n h || (h = [b, d], k());\n };\n }\n return b(r(0), r(1)), {\n then: function then(b, h) {\n return j(function (r, c) {\n d.push([b, h, r, c]), k();\n });\n }\n };\n }\n a && (g = m[e] = function () {\n var b = function b(_b2, d, k, r) {\n function c(c, i) {\n h(_b2, d, k, c, i, r);\n }\n r = r || 2;\n var i,\n u = /Async$/;\n return u.test(_b2) ? (_b2 = _b2.replace(u, \"\"), \"function\" == typeof Promise ? new Promise(c) : j(c)) : h(_b2, d, k, i, i, r);\n };\n function h(h, d, k, r, c, i) {\n return b._api ? b._api(h, d, k, r, c, i) : (b.q && b.q.push([h, d, k, r, c, i]), null);\n }\n return b.q = [], b;\n }(), y = function y(b) {\n function h(h) {\n \"function\" == typeof h[4] && h[4](new Error(b));\n }\n var d = g.q;\n if (d) {\n for (var k = 0; k < d.length; k++) h(d[k]);\n d.length = 0, d.push = h;\n }\n }, function () {\n (o = n.createElement(t)).async = !0, o.crossOrigin = \"anonymous\", o.src = \"https://\" + l, o.onerror = function () {\n y(\"Error loading \" + l);\n };\n var b = n.getElementsByTagName(t)[0];\n b.parentNode.insertBefore(o, b);\n }(), function () {\n function b() {}\n function h(b, h, d) {\n g(b, h, d, 1);\n }\n function d(b, d, k) {\n h(\"setProperties\", {\n type: b,\n properties: d\n }, k);\n }\n function k(b, h) {\n d(\"user\", b, h);\n }\n function r(b, h, d) {\n k({\n uid: b\n }, d), h && k(h, d);\n }\n g.identify = r, g.setUserVars = k, g.identifyAccount = b, g.clearUserCookie = b, g.setVars = d, g.event = function (b, d, k) {\n h(\"trackEvent\", {\n name: b,\n properties: d\n }, k);\n }, g.anonymize = function () {\n r(!1);\n }, g.shutdown = function () {\n h(\"shutdown\");\n }, g.restart = function () {\n h(\"restart\");\n }, g.log = function (b, d) {\n h(\"log\", {\n level: b,\n msg: d\n });\n }, g.consent = function (b) {\n h(\"setIdentity\", {\n consent: !arguments.length || b\n });\n };\n }(), s = \"fetch\", f = \"XMLHttpRequest\", g._w = {}, g._w[f] = m[f], g._w[s] = m[s], m[s] && (m[s] = function () {\n return g._w[s].apply(this, arguments);\n }), g._v = \"2.0.0\");\n }(wnd, wnd.document, wnd._fs_namespace, \"script\", wnd._fs_script);\n};\nvar executeSnippetV1 = function executeSnippetV1() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$wnd = _ref2.wnd,\n wnd = _ref2$wnd === void 0 ? window : _ref2$wnd;\n (function (m, n, e, t, l, o, g, y) {\n if (e in m) {\n if (m.console && m.console.log) {\n m.console.log('FullStory namespace conflict. Please set window[\"_fs_namespace\"].');\n }\n return;\n }\n g = m[e] = function (a, b, s) {\n g.q ? g.q.push([a, b, s]) : g._api(a, b, s);\n };\n g.q = [];\n o = n.createElement(t);\n o.async = 1;\n o.crossOrigin = 'anonymous';\n o.src = 'https://' + _fs_script;\n y = n.getElementsByTagName(t)[0];\n y.parentNode.insertBefore(o, y);\n g.identify = function (i, v, s) {\n g(l, {\n uid: i\n }, s);\n if (v) g(l, v, s);\n };\n g.setUserVars = function (v, s) {\n g(l, v, s);\n };\n g.event = function (i, v, s) {\n g('event', {\n n: i,\n p: v\n }, s);\n };\n g.anonymize = function () {\n g.identify(!!0);\n };\n g.shutdown = function () {\n g(\"rec\", !1);\n };\n g.restart = function () {\n g(\"rec\", !0);\n };\n g.log = function (a, b) {\n g(\"log\", [a, b]);\n };\n g.consent = function (a) {\n g(\"consent\", !arguments.length || a);\n };\n g.identifyAccount = function (i, v) {\n o = 'account';\n v = v || {};\n v.acctId = i;\n g(o, v);\n };\n g.clearUserCookie = function () {};\n g.setVars = function (n, p) {\n g('setVars', [n, p]);\n };\n g._w = {};\n y = 'XMLHttpRequest';\n g._w[y] = m[y];\n y = 'fetch';\n g._w[y] = m[y];\n if (m[y]) m[y] = function () {\n return g._w[y].apply(this, arguments);\n };\n g._v = \"1.3.0\";\n })(wnd, wnd.document, wnd['_fs_namespace'], 'script', 'user');\n};\nvar getDocumentVar = function getDocumentVar(globalVar) {\n return globalVar === 'window' ? 'document' : \"\".concat(globalVar, \".document\");\n};\nvar toV1String = function toV1String() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$shouldInsertScr = _ref3.shouldInsertScript,\n shouldInsertScript = _ref3$shouldInsertScr === void 0 ? true : _ref3$shouldInsertScr,\n _ref3$globalVar = _ref3.globalVar,\n globalVar = _ref3$globalVar === void 0 ? 'window' : _ref3$globalVar,\n _ref3$apiVersion = _ref3.apiVersion,\n apiVersion = _ref3$apiVersion === void 0 ? '1.3.0' : _ref3$apiVersion;\n return \"(function(m,n,e,t,l,o,g,y){\\n if (e in m) {if(m.console && m.console.log) { m.console.log('FullStory namespace conflict. Please set window[\\\"_fs_namespace\\\"].');} return;}\\n g=m[e]=function(a,b,s){g.q?g.q.push([a,b,s]):g._api(a,b,s);};g.q=[];\".concat(shouldInsertScript ? \"\\n o=n.createElement(t);o.async=1;o.crossOrigin='anonymous';o.src='https://'+_fs_script;\\n y=n.getElementsByTagName(t)[0];y.parentNode.insertBefore(o,y);\" : '', \"\\n g.identify=function(i,v,s){g(l,{uid:i},s);if(v)g(l,v,s)};g.setUserVars=function(v,s){g(l,v,s)};g.event=function(i,v,s){g('event',{n:i,p:v},s)};\\n g.anonymize=function(){g.identify(!!0)};\\n g.shutdown=function(){g(\\\"rec\\\",!1)};g.restart=function(){g(\\\"rec\\\",!0)};\\n g.log = function(a,b){g(\\\"log\\\",[a,b])};\\n g.consent=function(a){g(\\\"consent\\\",!arguments.length||a)};\\n g.identifyAccount=function(i,v){o='account';v=v||{};v.acctId=i;g(o,v)};\\n g.clearUserCookie=function(){};\\n g.setVars=function(n, p){g('setVars',[n,p]);};\\n g._w={};y='XMLHttpRequest';g._w[y]=m[y];y='fetch';g._w[y]=m[y];\\n if(m[y])m[y]=function(){return g._w[y].apply(this,arguments)};\\n g._v=\\\"\").concat(apiVersion, \"\\\";\\n})(\").concat(globalVar, \",\").concat(getDocumentVar(globalVar), \",\").concat(globalVar, \"['_fs_namespace'],'script','user');\");\n};\nvar initFS = function initFS(_a) {\n var orgId = _a.orgId,\n _b = _a.namespace,\n namespace = _b === void 0 ? 'FS' : _b,\n _c = _a.host,\n host = _c === void 0 ? 'fullstory.com' : _c,\n _d = _a.script,\n script = _d === void 0 ? 'edge.fullstory.com/s/fs.js' : _d;\n if (!orgId) {\n throw new Error('FullStory orgId is a required parameter');\n }\n window['_fs_host'] = host;\n window['_fs_script'] = script;\n window['_fs_org'] = orgId;\n window['_fs_namespace'] = namespace;\n executeSnippet();\n};\nvar initFSV1 = function initFSV1(_a) {\n var orgId = _a.orgId,\n _b = _a.namespace,\n namespace = _b === void 0 ? 'FS' : _b,\n _c = _a.host,\n host = _c === void 0 ? 'fullstory.com' : _c,\n _d = _a.script,\n script = _d === void 0 ? 'edge.fullstory.com/s/fs.js' : _d;\n if (!orgId) {\n throw new Error('FullStory orgId is a required parameter');\n }\n window['_fs_host'] = host;\n window['_fs_script'] = script;\n window['_fs_org'] = orgId;\n window['_fs_namespace'] = namespace;\n executeSnippetV1();\n};\nvar SnippetSrc = SnippetSrcV2;\nvar SnippetSrcV1 = toV1String();\nvar generateSnippetText = function generateSnippetText(_a) {\n var orgId = _a.orgId,\n _b = _a.namespace,\n namespace = _b === void 0 ? 'FS' : _b,\n _c = _a.host,\n host = _c === void 0 ? 'fullstory.com' : _c,\n _d = _a.script,\n script = _d === void 0 ? 'edge.fullstory.com/s/fs.js' : _d;\n if (!orgId) {\n throw new Error('FullStory orgId is a required parameter');\n }\n return \"window['_fs_host'] = '\".concat(host, \"';\\nwindow['_fs_script'] = '\").concat(script, \"';\\nwindow['_fs_org'] = '\").concat(orgId, \"';\\nwindow['_fs_namespace'] = '\").concat(namespace, \"';\\n\").concat(SnippetSrc, \"\\n\");\n};\nvar generateSnippetTextV1 = function generateSnippetTextV1(_a) {\n var orgId = _a.orgId,\n _b = _a.namespace,\n namespace = _b === void 0 ? 'FS' : _b,\n _c = _a.host,\n host = _c === void 0 ? 'fullstory.com' : _c,\n _d = _a.script,\n script = _d === void 0 ? 'edge.fullstory.com/s/fs.js' : _d;\n if (!orgId) {\n throw new Error('FullStory orgId is a required parameter');\n }\n return \"window['_fs_host'] = '\".concat(host, \"';\\nwindow['_fs_script'] = '\").concat(script, \"';\\nwindow['_fs_org'] = '\").concat(orgId, \"';\\nwindow['_fs_namespace'] = '\").concat(namespace, \"';\\n\").concat(SnippetSrcV1, \"\\n\");\n};\nexport { SnippetSrc, SnippetSrcV1, generateSnippetText, generateSnippetTextV1, initFS, initFSV1 };","import { initFS } from '@fullstory/snippet';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\nvar getFullStory = function () {\n if (window._fs_namespace) {\n return window[window._fs_namespace];\n }\n return undefined;\n};\nvar ensureSnippetLoaded = function () {\n var fs = getFullStory();\n if (!fs) {\n throw Error('FullStory is not loaded, please ensure the init function is invoked before calling FullStory API functions');\n }\n return fs;\n};\nvar _init = function (inputOptions, readyCallback) {\n // Make a copy so we can modify `options` if desired.\n var options = __assign({}, inputOptions);\n if (getFullStory()) {\n console.warn('The FullStory snippet has already been defined elsewhere (likely in the element)');\n return;\n }\n // see README for details on the recordCrossDomainIFrames option\n if (options.recordCrossDomainIFrames) {\n window._fs_run_in_iframe = true;\n }\n if (options.appHost) {\n window._fs_app_host = options.appHost;\n }\n if (options.assetMapId) {\n window._fs_asset_map_id = options.assetMapId;\n }\n if (options.startCaptureManually) {\n window._fs_capture_on_startup = false;\n }\n // record the contents of this iFrame when embedded in a parent site\n if (options.recordOnlyThisIFrame) {\n window._fs_is_outer_script = true;\n }\n // Set cookie domain if it was specified.\n if (options.cookieDomain) {\n window._fs_cookie_domain = options.cookieDomain;\n }\n if (options.debug === true) {\n if (!options.script) {\n options.script = 'edge.fullstory.com/s/fs-debug.js';\n }\n else {\n console.warn('Ignoring `debug = true` because `script` is set');\n }\n }\n initFS(options);\n var fs = getFullStory();\n if (!fs) {\n console.warn('Failed to initialize FS snippet');\n return;\n }\n if (readyCallback) {\n fs('observe', { type: 'start', callback: readyCallback });\n }\n if (options.devMode === true) {\n var message = 'FullStory was initialized in devMode and will stop recording';\n fs('trackEvent', {\n name: 'FullStory Dev Mode',\n properties: {\n message: message,\n }\n });\n fs('shutdown');\n window._fs_dev_mode = true;\n console.warn(message);\n }\n};\nvar initOnce = function (message) { return function (inputOptions, readyCallback) {\n if (window._fs_initialized) {\n if (message)\n console.warn(message);\n return;\n }\n _init(inputOptions, readyCallback);\n window._fs_initialized = true;\n}; };\nvar init = initOnce('FullStory init has already been called once, additional invocations are ignored');\n// normalize undefined into boolean\nvar isInitialized = function () { return !!window._fs_initialized; };\nvar hasFullStoryWithFunction = function () {\n var testNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n testNames[_i] = arguments[_i];\n }\n var fs = ensureSnippetLoaded();\n return testNames.every(function (current) { return fs[current]; });\n};\nvar guard = function (name) { return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (window._fs_dev_mode) {\n var message = \"FullStory is in dev mode and is not recording: \".concat(name, \" method not executed\");\n console.warn(message);\n return message;\n }\n var fs = getFullStory();\n if (hasFullStoryWithFunction(name) && fs) {\n return fs[name].apply(fs, args);\n }\n console.warn(\"FS.\".concat(name, \" not ready\"));\n return null;\n}; };\nvar buildFullStoryShim = function () {\n var FS = function (operation, options, source) {\n var fs = ensureSnippetLoaded();\n if (window._fs_dev_mode) {\n var message = 'FullStory is in dev mode and is not recording: method not executed';\n console.warn(message);\n return undefined;\n }\n return fs(operation, options, source);\n };\n FS.anonymize = guard('anonymize');\n FS.consent = guard('consent');\n FS.disableConsole = guard('disableConsole');\n FS.enableConsole = guard('enableConsole');\n FS.event = guard('event');\n FS.getCurrentSessionURL = guard('getCurrentSessionURL');\n FS.identify = guard('identify');\n FS.log = guard('log');\n FS.restart = guard('restart');\n FS.setUserVars = guard('setUserVars');\n FS.setVars = guard('setVars');\n FS.shutdown = guard('shutdown');\n return FS;\n};\nvar FullStory = buildFullStoryShim();\n\nexport { FullStory, init, isInitialized };\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\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 normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}",null,null,null,null,null,null,null,null,"// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all 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,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nvar _require = require('./internal/errors'),\n _require$codes = _require.codes,\n ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\nvar AssertionError = require('./internal/assert/assertion_error');\nvar _require2 = require('util/'),\n inspect = _require2.inspect;\nvar _require$types = require('util/').types,\n isPromise = _require$types.isPromise,\n isRegExp = _require$types.isRegExp;\nvar objectAssign = require('object.assign/polyfill')();\nvar objectIs = require('object-is/polyfill')();\nvar RegExpPrototypeTest = require('call-bind/callBound')('RegExp.prototype.test');\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\nfunction lazyLoadComparison() {\n var comparison = require('./internal/util/comparisons');\n isDeepEqual = comparison.isDeepEqual;\n isDeepStrictEqual = comparison.isDeepStrictEqual;\n}\n\n// Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = [\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", '\\\\b', '', '', \"\\\\u000b\", '\\\\f', '', \"\\\\u000e\", \"\\\\u000f\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001a\", \"\\\\u001b\", \"\\\\u001c\", \"\\\\u001d\", \"\\\\u001e\", \"\\\\u001f\"];\nvar escapeFn = function escapeFn(str) {\n return meta[str.charCodeAt(0)];\n};\nvar warned = false;\n\n// The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {};\n\n// All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n if (obj.message instanceof Error) throw obj.message;\n throw new AssertionError(obj);\n}\nfunction fail(actual, expected, message, operator, stackStartFn) {\n var argsLen = arguments.length;\n var internalMessage;\n if (argsLen === 0) {\n internalMessage = 'Failed';\n } else if (argsLen === 1) {\n message = actual;\n actual = undefined;\n } else {\n if (warned === false) {\n warned = true;\n var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n }\n if (argsLen === 2) operator = '!=';\n }\n if (message instanceof Error) throw message;\n var errArgs = {\n actual: actual,\n expected: expected,\n operator: operator === undefined ? 'fail' : operator,\n stackStartFn: stackStartFn || fail\n };\n if (message !== undefined) {\n errArgs.message = message;\n }\n var err = new AssertionError(errArgs);\n if (internalMessage) {\n err.message = internalMessage;\n err.generatedMessage = true;\n }\n throw err;\n}\nassert.fail = fail;\n\n// The AssertionError is defined in internal/error.\nassert.AssertionError = AssertionError;\nfunction innerOk(fn, argLen, value, message) {\n if (!value) {\n var generatedMessage = false;\n if (argLen === 0) {\n generatedMessage = true;\n message = 'No value argument passed to `assert.ok()`';\n } else if (message instanceof Error) {\n throw message;\n }\n var err = new AssertionError({\n actual: value,\n expected: true,\n message: message,\n operator: '==',\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n}\n\n// Pure assertion tests whether a value is truthy, as determined\n// by !!value.\nfunction ok() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n innerOk.apply(void 0, [ok, args.length].concat(args));\n}\nassert.ok = ok;\n\n// The equality assertion tests shallow, coercive equality with ==.\n/* eslint-disable no-restricted-properties */\nassert.equal = function equal(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n // eslint-disable-next-line eqeqeq\n if (actual != expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '==',\n stackStartFn: equal\n });\n }\n};\n\n// The non-equality assertion tests for whether two objects are not\n// equal with !=.\nassert.notEqual = function notEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n // eslint-disable-next-line eqeqeq\n if (actual == expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '!=',\n stackStartFn: notEqual\n });\n }\n};\n\n// The equivalence assertion tests a deep equality relation.\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (!isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepEqual',\n stackStartFn: deepEqual\n });\n }\n};\n\n// The non-equivalence assertion tests for any deep inequality.\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepEqual',\n stackStartFn: notDeepEqual\n });\n }\n};\n/* eslint-enable */\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (!isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepStrictEqual',\n stackStartFn: deepStrictEqual\n });\n }\n};\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepStrictEqual',\n stackStartFn: notDeepStrictEqual\n });\n }\n}\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (!objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'strictEqual',\n stackStartFn: strictEqual\n });\n }\n};\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notStrictEqual',\n stackStartFn: notStrictEqual\n });\n }\n};\nvar Comparison = /*#__PURE__*/_createClass(function Comparison(obj, keys, actual) {\n var _this = this;\n _classCallCheck(this, Comparison);\n keys.forEach(function (key) {\n if (key in obj) {\n if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && RegExpPrototypeTest(obj[key], actual[key])) {\n _this[key] = actual[key];\n } else {\n _this[key] = obj[key];\n }\n }\n });\n});\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n if (!message) {\n // Create placeholder objects to create a nice output.\n var a = new Comparison(actual, keys);\n var b = new Comparison(expected, keys, actual);\n var err = new AssertionError({\n actual: a,\n expected: b,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.actual = actual;\n err.expected = expected;\n err.operator = fn.name;\n throw err;\n }\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: fn.name,\n stackStartFn: fn\n });\n }\n}\nfunction expectedException(actual, expected, msg, fn) {\n if (typeof expected !== 'function') {\n if (isRegExp(expected)) return RegExpPrototypeTest(expected, actual);\n // assert.doesNotThrow does not accept objects.\n if (arguments.length === 2) {\n throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n }\n\n // Handle primitives properly.\n if (_typeof(actual) !== 'object' || actual === null) {\n var err = new AssertionError({\n actual: actual,\n expected: expected,\n message: msg,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.operator = fn.name;\n throw err;\n }\n var keys = Object.keys(expected);\n // Special handle errors to make sure the name and the message are compared\n // as well.\n if (expected instanceof Error) {\n keys.push('name', 'message');\n } else if (keys.length === 0) {\n throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n keys.forEach(function (key) {\n if (typeof actual[key] === 'string' && isRegExp(expected[key]) && RegExpPrototypeTest(expected[key], actual[key])) {\n return;\n }\n compareExceptionKey(actual, expected, key, msg, keys, fn);\n });\n return true;\n }\n // Guard instanceof against arrow functions as they don't have a prototype.\n if (expected.prototype !== undefined && actual instanceof expected) {\n return true;\n }\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n return expected.call({}, actual) === true;\n}\nfunction getActual(fn) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n }\n try {\n fn();\n } catch (e) {\n return e;\n }\n return NO_EXCEPTION_SENTINEL;\n}\nfunction checkIsPromise(obj) {\n // Accept native ES6 promises and promises that are implemented in a similar\n // way. Do not accept thenables that use a function as `obj` and that have no\n // `catch` handler.\n\n // TODO: thenables are checked up until they have the correct methods,\n // but according to documentation, the `then` method should receive\n // the `fulfill` and `reject` arguments as well or it may be never resolved.\n\n return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\nfunction waitForActual(promiseFn) {\n return Promise.resolve().then(function () {\n var resultPromise;\n if (typeof promiseFn === 'function') {\n // Return a rejected promise if `promiseFn` throws synchronously.\n resultPromise = promiseFn();\n // Fail in case no promise is returned.\n if (!checkIsPromise(resultPromise)) {\n throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n }\n } else if (checkIsPromise(promiseFn)) {\n resultPromise = promiseFn;\n } else {\n throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n }\n return Promise.resolve().then(function () {\n return resultPromise;\n }).then(function () {\n return NO_EXCEPTION_SENTINEL;\n }).catch(function (e) {\n return e;\n });\n });\n}\nfunction expectsError(stackStartFn, actual, error, message) {\n if (typeof error === 'string') {\n if (arguments.length === 4) {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n if (_typeof(actual) === 'object' && actual !== null) {\n if (actual.message === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n }\n } else if (actual === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n }\n message = error;\n error = undefined;\n } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n if (actual === NO_EXCEPTION_SENTINEL) {\n var details = '';\n if (error && error.name) {\n details += \" (\".concat(error.name, \")\");\n }\n details += message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n innerFail({\n actual: undefined,\n expected: error,\n operator: stackStartFn.name,\n message: \"Missing expected \".concat(fnType).concat(details),\n stackStartFn: stackStartFn\n });\n }\n if (error && !expectedException(actual, error, message, stackStartFn)) {\n throw actual;\n }\n}\nfunction expectsNoError(stackStartFn, actual, error, message) {\n if (actual === NO_EXCEPTION_SENTINEL) return;\n if (typeof error === 'string') {\n message = error;\n error = undefined;\n }\n if (!error || expectedException(actual, error)) {\n var details = message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n innerFail({\n actual: actual,\n expected: error,\n operator: stackStartFn.name,\n message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n stackStartFn: stackStartFn\n });\n }\n throw actual;\n}\nassert.throws = function throws(promiseFn) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\nassert.rejects = function rejects(promiseFn) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return waitForActual(promiseFn).then(function (result) {\n return expectsError.apply(void 0, [rejects, result].concat(args));\n });\n};\nassert.doesNotThrow = function doesNotThrow(fn) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\nassert.doesNotReject = function doesNotReject(fn) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n return waitForActual(fn).then(function (result) {\n return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n });\n};\nassert.ifError = function ifError(err) {\n if (err !== null && err !== undefined) {\n var message = 'ifError got unwanted exception: ';\n if (_typeof(err) === 'object' && typeof err.message === 'string') {\n if (err.message.length === 0 && err.constructor) {\n message += err.constructor.name;\n } else {\n message += err.message;\n }\n } else {\n message += inspect(err);\n }\n var newErr = new AssertionError({\n actual: err,\n expected: null,\n operator: 'ifError',\n message: message,\n stackStartFn: ifError\n });\n\n // Make sure we actually have a stack trace!\n var origStack = err.stack;\n if (typeof origStack === 'string') {\n // This will remove any duplicated frames from the error frames taken\n // from within `ifError` and add the original error frames to the newly\n // created ones.\n var tmp2 = origStack.split('\\n');\n tmp2.shift();\n // Filter all frames existing in err.stack.\n var tmp1 = newErr.stack.split('\\n');\n for (var i = 0; i < tmp2.length; i++) {\n // Find the first occurrence of the frame.\n var pos = tmp1.indexOf(tmp2[i]);\n if (pos !== -1) {\n // Only keep new frames.\n tmp1 = tmp1.slice(0, pos);\n break;\n }\n }\n newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n }\n throw newErr;\n }\n};\n\n// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a871df3dfb8ea663ef5e1f8f62701ec51384ecb\nfunction internalMatch(string, regexp, message, fn, fnName) {\n if (!isRegExp(regexp)) {\n throw new ERR_INVALID_ARG_TYPE('regexp', 'RegExp', regexp);\n }\n var match = fnName === 'match';\n if (typeof string !== 'string' || RegExpPrototypeTest(regexp, string) !== match) {\n if (message instanceof Error) {\n throw message;\n }\n var generatedMessage = !message;\n\n // 'The input was expected to not match the regular expression ' +\n message = message || (typeof string !== 'string' ? 'The \"string\" argument must be of type string. Received type ' + \"\".concat(_typeof(string), \" (\").concat(inspect(string), \")\") : (match ? 'The input did not match the regular expression ' : 'The input was expected to not match the regular expression ') + \"\".concat(inspect(regexp), \". Input:\\n\\n\").concat(inspect(string), \"\\n\"));\n var err = new AssertionError({\n actual: string,\n expected: regexp,\n message: message,\n operator: fnName,\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n}\nassert.match = function match(string, regexp, message) {\n internalMatch(string, regexp, message, match, 'match');\n};\nassert.doesNotMatch = function doesNotMatch(string, regexp, message) {\n internalMatch(string, regexp, message, doesNotMatch, 'doesNotMatch');\n};\n\n// Expose a strict only variant of assert\nfunction strict() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n innerOk.apply(void 0, [strict, args.length].concat(args));\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;","// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n\n'use strict';\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _require = require('util/'),\n inspect = _require.inspect;\nvar _require2 = require('../errors'),\n ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE;\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n return str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\nfunction repeat(str, count) {\n count = Math.floor(count);\n if (str.length == 0 || count == 0) return '';\n var maxCount = str.length * count;\n count = Math.floor(Math.log(count) / Math.log(2));\n while (count) {\n str += str;\n count--;\n }\n str += str.substring(0, maxCount - str.length);\n return str;\n}\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n deepStrictEqual: 'Expected values to be strictly deep-equal:',\n strictEqual: 'Expected values to be strictly equal:',\n strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n deepEqual: 'Expected values to be loosely deep-equal:',\n equal: 'Expected values to be loosely equal:',\n notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n notEqual: 'Expected \"actual\" to be loosely unequal to:',\n notIdentical: 'Values identical but not reference-equal:'\n};\n\n// Comparing short primitives should just show === / !== instead of using the\n// diff.\nvar kMaxShortLength = 10;\nfunction copyError(source) {\n var keys = Object.keys(source);\n var target = Object.create(Object.getPrototypeOf(source));\n keys.forEach(function (key) {\n target[key] = source[key];\n });\n Object.defineProperty(target, 'message', {\n value: source.message\n });\n return target;\n}\nfunction inspectValue(val) {\n // The util.inspect default values could be changed. This makes sure the\n // error messages contain the necessary information nevertheless.\n return inspect(val, {\n compact: false,\n customInspect: false,\n depth: 1000,\n maxArrayLength: Infinity,\n // Assert compares only enumerable properties (with a few exceptions).\n showHidden: false,\n // Having a long line as error is better than wrapping the line for\n // comparison for now.\n // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n // have meta information about the inspected properties (i.e., know where\n // in what line the property starts and ends).\n breakLength: Infinity,\n // Assert does not detect proxies currently.\n showProxy: false,\n sorted: true,\n // Inspect getters as we also check them when comparing entries.\n getters: true\n });\n}\nfunction createErrDiff(actual, expected, operator) {\n var other = '';\n var res = '';\n var lastPos = 0;\n var end = '';\n var skipped = false;\n var actualInspected = inspectValue(actual);\n var actualLines = actualInspected.split('\\n');\n var expectedLines = inspectValue(expected).split('\\n');\n var i = 0;\n var indicator = '';\n\n // In case both values are objects explicitly mark them as not reference equal\n // for the `strictEqual` operator.\n if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n operator = 'strictEqualObject';\n }\n\n // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n // equal, check further special handling.\n if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n var inputLength = actualLines[0].length + expectedLines[0].length;\n // If the character length of \"actual\" and \"expected\" together is less than\n // kMaxShortLength and if neither is an object and at least one of them is\n // not `zero`, use the strict equal comparison to visualize the output.\n if (inputLength <= kMaxShortLength) {\n if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n // -0 === +0\n return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n }\n } else if (operator !== 'strictEqualObject') {\n // If the stderr is a tty and the input length is lower than the current\n // columns per line, add a mismatch indicator below the output. If it is\n // not a tty, use a default value of 80 characters.\n var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n if (inputLength < maxLength) {\n while (actualLines[0][i] === expectedLines[0][i]) {\n i++;\n }\n // Ignore the first characters.\n if (i > 2) {\n // Add position indicator for the first mismatch in case it is a\n // single line and the input length is less than the column length.\n indicator = \"\\n \".concat(repeat(' ', i), \"^\");\n i = 0;\n }\n }\n }\n }\n\n // Remove all ending lines that match (this optimizes the output for\n // readability by reducing the number of total changed lines).\n var a = actualLines[actualLines.length - 1];\n var b = expectedLines[expectedLines.length - 1];\n while (a === b) {\n if (i++ < 2) {\n end = \"\\n \".concat(a).concat(end);\n } else {\n other = a;\n }\n actualLines.pop();\n expectedLines.pop();\n if (actualLines.length === 0 || expectedLines.length === 0) break;\n a = actualLines[actualLines.length - 1];\n b = expectedLines[expectedLines.length - 1];\n }\n var maxLines = Math.max(actualLines.length, expectedLines.length);\n // Strict equal with identical objects that are not identical by reference.\n // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n if (maxLines === 0) {\n // We have to get the result again. The lines were all removed before.\n var _actualLines = actualInspected.split('\\n');\n\n // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n if (_actualLines.length > 30) {\n _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n while (_actualLines.length > 27) {\n _actualLines.pop();\n }\n }\n return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n }\n if (i > 3) {\n end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n skipped = true;\n }\n if (other !== '') {\n end = \"\\n \".concat(other).concat(end);\n other = '';\n }\n var printedLines = 0;\n var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n for (i = 0; i < maxLines; i++) {\n // Only extra expected lines exist\n var cur = i - lastPos;\n if (actualLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(expectedLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(expectedLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the expected line to the cache.\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n printedLines++;\n // Only extra actual lines exist\n } else if (expectedLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the actual line to the result.\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n printedLines++;\n // Lines diverge\n } else {\n var expectedLine = expectedLines[i];\n var actualLine = actualLines[i];\n // If the lines diverge, specifically check for lines that only diverge by\n // a trailing comma. In that case it is actually identical and we should\n // mark it as such.\n var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine);\n // If the expected line has a trailing comma but is otherwise identical,\n // add a comma at the end of the actual line. Otherwise the output could\n // look weird as in:\n //\n // [\n // 1 // No comma at the end!\n // + 2\n // ]\n //\n if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n divergingLines = false;\n actualLine += ',';\n }\n if (divergingLines) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the actual line to the result and cache the expected diverging\n // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n printedLines += 2;\n // Lines are identical\n } else {\n // Add all cached information to the result before adding other things\n // and reset the cache.\n res += other;\n other = '';\n // If the last diverging line is exactly one line above or if it is the\n // very first line, add the line to the result.\n if (cur === 1 || i === 0) {\n res += \"\\n \".concat(actualLine);\n printedLines++;\n }\n }\n }\n // Inspected object to big (Show ~20 rows max)\n if (printedLines > 20 && i < maxLines - 2) {\n return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n }\n }\n return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\nvar AssertionError = /*#__PURE__*/function (_Error, _inspect$custom) {\n _inherits(AssertionError, _Error);\n var _super = _createSuper(AssertionError);\n function AssertionError(options) {\n var _this;\n _classCallCheck(this, AssertionError);\n if (_typeof(options) !== 'object' || options === null) {\n throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n }\n var message = options.message,\n operator = options.operator,\n stackStartFn = options.stackStartFn;\n var actual = options.actual,\n expected = options.expected;\n var limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 0;\n if (message != null) {\n _this = _super.call(this, String(message));\n } else {\n if (process.stderr && process.stderr.isTTY) {\n // Reset on each call to make sure we handle dynamically set environment\n // variables correct.\n if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n blue = \"\\x1B[34m\";\n green = \"\\x1B[32m\";\n white = \"\\x1B[39m\";\n red = \"\\x1B[31m\";\n } else {\n blue = '';\n green = '';\n white = '';\n red = '';\n }\n }\n // Prevent the error stack from being visible by duplicating the error\n // in a very close way to the original in case both sides are actually\n // instances of Error.\n if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n actual = copyError(actual);\n expected = copyError(expected);\n }\n if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n _this = _super.call(this, createErrDiff(actual, expected, operator));\n } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n // In case the objects are equal but the operator requires unequal, show\n // the first object and say A equals B\n var base = kReadableOperator[operator];\n var res = inspectValue(actual).split('\\n');\n\n // In case \"actual\" is an object, it should not be reference equal.\n if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n base = kReadableOperator.notStrictEqualObject;\n }\n\n // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n if (res.length > 30) {\n res[26] = \"\".concat(blue, \"...\").concat(white);\n while (res.length > 27) {\n res.pop();\n }\n }\n\n // Only print a single input.\n if (res.length === 1) {\n _this = _super.call(this, \"\".concat(base, \" \").concat(res[0]));\n } else {\n _this = _super.call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\"));\n }\n } else {\n var _res = inspectValue(actual);\n var other = '';\n var knownOperators = kReadableOperator[operator];\n if (operator === 'notDeepEqual' || operator === 'notEqual') {\n _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n if (_res.length > 1024) {\n _res = \"\".concat(_res.slice(0, 1021), \"...\");\n }\n } else {\n other = \"\".concat(inspectValue(expected));\n if (_res.length > 512) {\n _res = \"\".concat(_res.slice(0, 509), \"...\");\n }\n if (other.length > 512) {\n other = \"\".concat(other.slice(0, 509), \"...\");\n }\n if (operator === 'deepEqual' || operator === 'equal') {\n _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n } else {\n other = \" \".concat(operator, \" \").concat(other);\n }\n }\n _this = _super.call(this, \"\".concat(_res).concat(other));\n }\n }\n Error.stackTraceLimit = limit;\n _this.generatedMessage = !message;\n Object.defineProperty(_assertThisInitialized(_this), 'name', {\n value: 'AssertionError [ERR_ASSERTION]',\n enumerable: false,\n writable: true,\n configurable: true\n });\n _this.code = 'ERR_ASSERTION';\n _this.actual = actual;\n _this.expected = expected;\n _this.operator = operator;\n if (Error.captureStackTrace) {\n // eslint-disable-next-line no-restricted-syntax\n Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n }\n // Create error message including the error code in the name.\n _this.stack;\n // Reset the name.\n _this.name = 'AssertionError';\n return _possibleConstructorReturn(_this);\n }\n _createClass(AssertionError, [{\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n }\n }, {\n key: _inspect$custom,\n value: function value(recurseTimes, ctx) {\n // This limits the `actual` and `expected` property default inspection to\n // the minimum depth. Otherwise those values would be too verbose compared\n // to the actual error message which contains a combined view of these two\n // input values.\n return inspect(this, _objectSpread(_objectSpread({}, ctx), {}, {\n customInspect: false,\n depth: 0\n }));\n }\n }]);\n return AssertionError;\n}( /*#__PURE__*/_wrapNativeSuper(Error), inspect.custom);\nmodule.exports = AssertionError;","// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n/* eslint node-core/alphabetize-errors: \"error\" */\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n\n'use strict';\n\n// The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nvar codes = {};\n\n// Lazy loaded\nvar assert;\nvar util;\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n var NodeError = /*#__PURE__*/function (_Base) {\n _inherits(NodeError, _Base);\n var _super = _createSuper(NodeError);\n function NodeError(arg1, arg2, arg3) {\n var _this;\n _classCallCheck(this, NodeError);\n _this = _super.call(this, getMessage(arg1, arg2, arg3));\n _this.code = code;\n return _this;\n }\n return _createClass(NodeError);\n }(Base);\n codes[code] = NodeError;\n}\n\n// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n return str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\ncreateErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n if (assert === undefined) assert = require('../assert');\n assert(typeof name === 'string', \"'name' must be a string\");\n\n // determiner: 'must be' or 'must not be'\n var determiner;\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n var msg;\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n // TODO(BridgeAR): Improve the output by showing `null` and similar.\n msg += \". Received type \".concat(_typeof(actual));\n return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n if (util === undefined) util = require('util/');\n var inspected = util.inspect(value);\n if (inspected.length > 128) {\n inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n }\n return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n var type;\n if (value && value.constructor && value.constructor.name) {\n type = \"instance of \".concat(value.constructor.name);\n } else {\n type = \"type \".concat(_typeof(value));\n }\n return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (assert === undefined) assert = require('../assert');\n assert(args.length > 0, 'At least one arg needs to be specified');\n var msg = 'The ';\n var len = args.length;\n args = args.map(function (a) {\n return \"\\\"\".concat(a, \"\\\"\");\n });\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n default:\n msg += args.slice(0, len - 1).join(', ');\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;","// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar regexFlagsSupported = /a/g.flags !== undefined;\nvar arrayFromSet = function arrayFromSet(set) {\n var array = [];\n set.forEach(function (value) {\n return array.push(value);\n });\n return array;\n};\nvar arrayFromMap = function arrayFromMap(map) {\n var array = [];\n map.forEach(function (value, key) {\n return array.push([key, value]);\n });\n return array;\n};\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : require('is-nan');\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\nvar _require$types = require('util/').types,\n isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n isArrayBufferView = _require$types.isArrayBufferView,\n isDate = _require$types.isDate,\n isMap = _require$types.isMap,\n isRegExp = _require$types.isRegExp,\n isSet = _require$types.isSet,\n isNativeError = _require$types.isNativeError,\n isBoxedPrimitive = _require$types.isBoxedPrimitive,\n isNumberObject = _require$types.isNumberObject,\n isStringObject = _require$types.isStringObject,\n isBooleanObject = _require$types.isBooleanObject,\n isBigIntObject = _require$types.isBigIntObject,\n isSymbolObject = _require$types.isSymbolObject,\n isFloat32Array = _require$types.isFloat32Array,\n isFloat64Array = _require$types.isFloat64Array;\nfunction isNonIndex(key) {\n if (key.length === 0 || key.length > 10) return true;\n for (var i = 0; i < key.length; i++) {\n var code = key.charCodeAt(i);\n if (code < 48 || code > 57) return true;\n }\n // The maximum size for an array is 2 ** 32 -1.\n return key.length === 10 && key >= Math.pow(2, 32);\n}\nfunction getOwnNonIndexProperties(value) {\n return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n}\n\n// Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n var x = a.length;\n var y = b.length;\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3;\n\n// Check if they have the same source and flags\nfunction areSimilarRegExps(a, b) {\n return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\nfunction areSimilarFloatArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (var offset = 0; offset < a.byteLength; offset++) {\n if (a[offset] !== b[offset]) {\n return false;\n }\n }\n return true;\n}\nfunction areSimilarTypedArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\nfunction areEqualArrayBuffers(buf1, buf2) {\n return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\nfunction isEqualBoxedPrimitive(val1, val2) {\n if (isNumberObject(val1)) {\n return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n }\n if (isStringObject(val1)) {\n return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n }\n if (isBooleanObject(val1)) {\n return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n }\n if (isBigIntObject(val1)) {\n return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n }\n return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n}\n\n// Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n // All identical values are equivalent, as determined by ===.\n if (val1 === val2) {\n if (val1 !== 0) return true;\n return strict ? objectIs(val1, val2) : true;\n }\n\n // Check more closely if val1 and val2 are equal.\n if (strict) {\n if (_typeof(val1) !== 'object') {\n return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n }\n if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n return false;\n }\n if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n return false;\n }\n } else {\n if (val1 === null || _typeof(val1) !== 'object') {\n if (val2 === null || _typeof(val2) !== 'object') {\n // eslint-disable-next-line eqeqeq\n return val1 == val2;\n }\n return false;\n }\n if (val2 === null || _typeof(val2) !== 'object') {\n return false;\n }\n }\n var val1Tag = objectToString(val1);\n var val2Tag = objectToString(val2);\n if (val1Tag !== val2Tag) {\n return false;\n }\n if (Array.isArray(val1)) {\n // Check for sparse arrays and general fast path\n if (val1.length !== val2.length) {\n return false;\n }\n var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n if (keys1.length !== keys2.length) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n }\n // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n // wan't to early return out of the rest of the checks. However we can check\n // if the second value is one of these values and the first isn't.\n if (val1Tag === '[object Object]') {\n // return keyCheck(val1, val2, strict, memos, kNoIterator);\n if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n return false;\n }\n }\n if (isDate(val1)) {\n if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n return false;\n }\n } else if (isRegExp(val1)) {\n if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n return false;\n }\n } else if (isNativeError(val1) || val1 instanceof Error) {\n // Do not compare the stack as it might differ even though the error itself\n // is otherwise identical.\n if (val1.message !== val2.message || val1.name !== val2.name) {\n return false;\n }\n } else if (isArrayBufferView(val1)) {\n if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n if (!areSimilarFloatArrays(val1, val2)) {\n return false;\n }\n } else if (!areSimilarTypedArrays(val1, val2)) {\n return false;\n }\n // Buffer.compare returns true, so val1.length === val2.length. If they both\n // only contain numeric keys, we don't need to exam further than checking\n // the symbols.\n var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n if (_keys.length !== _keys2.length) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n } else if (isSet(val1)) {\n if (!isSet(val2) || val1.size !== val2.size) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsSet);\n } else if (isMap(val1)) {\n if (!isMap(val2) || val1.size !== val2.size) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsMap);\n } else if (isAnyArrayBuffer(val1)) {\n if (!areEqualArrayBuffers(val1, val2)) {\n return false;\n }\n } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\nfunction getEnumerables(val, keys) {\n return keys.filter(function (k) {\n return propertyIsEnumerable(val, k);\n });\n}\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n // For all remaining Object pairs, including Array, objects and Maps,\n // equivalence is determined by having:\n // a) The same number of owned enumerable properties\n // b) The same set of keys/indexes (although not necessarily the same order)\n // c) Equivalent values for every corresponding key/index\n // d) For Sets and Maps, equal contents\n // Note: this accounts for both named and indexed properties on Arrays.\n if (arguments.length === 5) {\n aKeys = Object.keys(val1);\n var bKeys = Object.keys(val2);\n\n // The pair must have the same number of owned properties.\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n }\n\n // Cheap key test\n var i = 0;\n for (; i < aKeys.length; i++) {\n if (!hasOwnProperty(val2, aKeys[i])) {\n return false;\n }\n }\n if (strict && arguments.length === 5) {\n var symbolKeysA = objectGetOwnPropertySymbols(val1);\n if (symbolKeysA.length !== 0) {\n var count = 0;\n for (i = 0; i < symbolKeysA.length; i++) {\n var key = symbolKeysA[i];\n if (propertyIsEnumerable(val1, key)) {\n if (!propertyIsEnumerable(val2, key)) {\n return false;\n }\n aKeys.push(key);\n count++;\n } else if (propertyIsEnumerable(val2, key)) {\n return false;\n }\n }\n var symbolKeysB = objectGetOwnPropertySymbols(val2);\n if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n return false;\n }\n } else {\n var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n return false;\n }\n }\n }\n if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n return true;\n }\n\n // Use memos to handle cycles.\n if (memos === undefined) {\n memos = {\n val1: new Map(),\n val2: new Map(),\n position: 0\n };\n } else {\n // We prevent up to two map.has(x) calls by directly retrieving the value\n // and checking for undefined. The map can only contain numbers, so it is\n // safe to check for undefined only.\n var val2MemoA = memos.val1.get(val1);\n if (val2MemoA !== undefined) {\n var val2MemoB = memos.val2.get(val2);\n if (val2MemoB !== undefined) {\n return val2MemoA === val2MemoB;\n }\n }\n memos.position++;\n }\n memos.val1.set(val1, memos.position);\n memos.val2.set(val2, memos.position);\n var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n memos.val1.delete(val1);\n memos.val2.delete(val2);\n return areEq;\n}\nfunction setHasEqualElement(set, val1, strict, memo) {\n // Go looking.\n var setValues = arrayFromSet(set);\n for (var i = 0; i < setValues.length; i++) {\n var val2 = setValues[i];\n if (innerDeepEqual(val1, val2, strict, memo)) {\n // Remove the matching element to make sure we do not check that again.\n set.delete(val2);\n return true;\n }\n }\n return false;\n}\n\n// See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\nfunction findLooseMatchingPrimitives(prim) {\n switch (_typeof(prim)) {\n case 'undefined':\n return null;\n case 'object':\n // Only pass in null as object!\n return undefined;\n case 'symbol':\n return false;\n case 'string':\n prim = +prim;\n // Loose equal entries exist only if the string is possible to convert to\n // a regular number and not NaN.\n // Fall through\n case 'number':\n if (numberIsNaN(prim)) {\n return false;\n }\n }\n return true;\n}\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) return altValue;\n return b.has(altValue) && !a.has(altValue);\n}\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n var curB = b.get(altValue);\n if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n return false;\n }\n return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\nfunction setEquiv(a, b, strict, memo) {\n // This is a lazily initiated Set of entries which have to be compared\n // pairwise.\n var set = null;\n var aValues = arrayFromSet(a);\n for (var i = 0; i < aValues.length; i++) {\n var val = aValues[i];\n // Note: Checking for the objects first improves the performance for object\n // heavy sets but it is a minor slow down for primitives. As they are fast\n // to check this improves the worst case scenario instead.\n if (_typeof(val) === 'object' && val !== null) {\n if (set === null) {\n set = new Set();\n }\n // If the specified value doesn't exist in the second set its an not null\n // object (or non strict only: a not matching primitive) we'll need to go\n // hunting for something thats deep-(strict-)equal to it. To make this\n // O(n log n) complexity we have to copy these values in a new set first.\n set.add(val);\n } else if (!b.has(val)) {\n if (strict) return false;\n\n // Fast path to detect missing string, symbol, undefined and null values.\n if (!setMightHaveLoosePrim(a, b, val)) {\n return false;\n }\n if (set === null) {\n set = new Set();\n }\n set.add(val);\n }\n }\n if (set !== null) {\n var bValues = arrayFromSet(b);\n for (var _i = 0; _i < bValues.length; _i++) {\n var _val = bValues[_i];\n // We have to check if a primitive value is already\n // matching and only if it's not, go hunting for it.\n if (_typeof(_val) === 'object' && _val !== null) {\n if (!setHasEqualElement(set, _val, strict, memo)) return false;\n } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n return false;\n }\n }\n return set.size === 0;\n }\n return true;\n}\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n // To be able to handle cases like:\n // Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n // ... we need to consider *all* matching keys, not just the first we find.\n var setValues = arrayFromSet(set);\n for (var i = 0; i < setValues.length; i++) {\n var key2 = setValues[i];\n if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n set.delete(key2);\n return true;\n }\n }\n return false;\n}\nfunction mapEquiv(a, b, strict, memo) {\n var set = null;\n var aEntries = arrayFromMap(a);\n for (var i = 0; i < aEntries.length; i++) {\n var _aEntries$i = _slicedToArray(aEntries[i], 2),\n key = _aEntries$i[0],\n item1 = _aEntries$i[1];\n if (_typeof(key) === 'object' && key !== null) {\n if (set === null) {\n set = new Set();\n }\n set.add(key);\n } else {\n // By directly retrieving the value we prevent another b.has(key) check in\n // almost all possible cases.\n var item2 = b.get(key);\n if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n if (strict) return false;\n // Fast path to detect missing string, symbol, undefined and null\n // keys.\n if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n if (set === null) {\n set = new Set();\n }\n set.add(key);\n }\n }\n }\n if (set !== null) {\n var bEntries = arrayFromMap(b);\n for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n _key = _bEntries$_i[0],\n item = _bEntries$_i[1];\n if (_typeof(_key) === 'object' && _key !== null) {\n if (!mapHasEqualEntry(set, a, _key, item, strict, memo)) return false;\n } else if (!strict && (!a.has(_key) || !innerDeepEqual(a.get(_key), item, false, memo)) && !mapHasEqualEntry(set, a, _key, item, false, memo)) {\n return false;\n }\n }\n return set.size === 0;\n }\n return true;\n}\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n // Sets and maps don't have their entries accessible via normal object\n // properties.\n var i = 0;\n if (iterationType === kIsSet) {\n if (!setEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsMap) {\n if (!mapEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsArray) {\n for (; i < a.length; i++) {\n if (hasOwnProperty(a, i)) {\n if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n return false;\n }\n } else if (hasOwnProperty(b, i)) {\n return false;\n } else {\n // Array is sparse.\n var keysA = Object.keys(a);\n for (; i < keysA.length; i++) {\n var key = keysA[i];\n if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n return false;\n }\n }\n if (keysA.length !== Object.keys(b).length) {\n return false;\n }\n return true;\n }\n }\n }\n\n // The pair must have equivalent values for every corresponding key.\n // Possibly expensive deep test:\n for (i = 0; i < keys.length; i++) {\n var _key2 = keys[i];\n if (!innerDeepEqual(a[_key2], b[_key2], strict, memos)) {\n return false;\n }\n }\n return true;\n}\nfunction isDeepEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kLoose);\n}\nfunction isDeepStrictEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kStrict);\n}\nmodule.exports = {\n isDeepEqual: isDeepEqual,\n isDeepStrictEqual: isDeepStrictEqual\n};","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\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/5/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/5/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/5/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/5/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/5/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/5/LICENSE\n\n// This is CodeMirror (https://codemirror.net/5), 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(rootNode) {\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 doc = rootNode.ownerDocument || rootNode;\n var activeElement;\n try {\n activeElement = rootNode.activeElement;\n } catch(e) {\n activeElement = doc.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 doc(cm) { return cm.display.wrapper.ownerDocument }\n\n function root(cm) {\n return rootNode(cm.display.wrapper)\n }\n\n function rootNode(element) {\n // Detect modern browsers (2017+).\n return element.getRootNode ? element.getRootNode() : element.ownerDocument\n }\n\n function win(cm) { return doc(cm).defaultView }\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(doc) {\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 -(doc.body.getBoundingClientRect().left - parseInt(getComputedStyle(doc.body).marginLeft)) }\n return doc.defaultView.pageXOffset || (doc.documentElement || doc.body).scrollLeft\n }\n function pageScrollY(doc) {\n if (chrome && android) { return -(doc.body.getBoundingClientRect().top - parseInt(getComputedStyle(doc.body).marginTop)) }\n return doc.defaultView.pageYOffset || (doc.documentElement || doc.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(doc(cm)));\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX(doc(cm)));\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(doc(cm));\n top -= pageScrollY(doc(cm));\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 var doc = display.wrapper.ownerDocument;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (doc.defaultView.innerHeight || doc.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.visibility = this.vert.style.visibility = \"hidden\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.visibility = \"\";\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.visibility = \"hidden\"; }\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(root(cm));\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(root(cm));\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = win(cm).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(rootNode(snapshot.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 doc = snapshot.activeElt.ownerDocument;\n var sel = doc.defaultView.getSelection(), range = doc.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 // See #6982. FIXME remove when this has been fixed for a while in Chrome\n if (chrome && chrome_version >= 105) { d.wrapper.style.clipPath = \"inset(0px)\"; }\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 = range.head == range.anchor ? newAnchor : 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(root(cm));\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 win(cm).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(root(cm)); }\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(root(cm));\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\\u202d\\u202e\\u2066\\u2067\\u2069\\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 ? \"on\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"on\" : \"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 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(){win(this).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(root(this)) },\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, win(cm).innerHeight || doc(cm).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 disableBrowserMagic(te);\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt(rootNode(div));\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(rootNode(this.div)) == 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(rootNode(this.div)) != 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 this.resetting = false;\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 var opts = this.cm.options;\n disableBrowserMagic(this.textarea, opts.spellcheck, opts.autocorrect, opts.autocapitalize);\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 && typing) { return }\n var cm = this.cm;\n this.resetting = true;\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 this.resetting = false;\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(rootNode(this.textarea)) != 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 || this.resetting || !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 = te.ownerDocument.defaultView.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { te.ownerDocument.defaultView.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(rootNode(textarea));\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.16\";\n\n return CodeMirror;\n\n})));\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/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/5/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/5/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/5/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","/*global window, global*/\nvar util = require(\"util\")\nvar assert = require(\"assert\")\nfunction now() { return new Date().getTime() }\n\nvar slice = Array.prototype.slice\nvar console\nvar times = {}\n\nif (typeof global !== \"undefined\" && global.console) {\n console = global.console\n} else if (typeof window !== \"undefined\" && window.console) {\n console = window.console\n} else {\n console = {}\n}\n\nvar functions = [\n [log, \"log\"],\n [info, \"info\"],\n [warn, \"warn\"],\n [error, \"error\"],\n [time, \"time\"],\n [timeEnd, \"timeEnd\"],\n [trace, \"trace\"],\n [dir, \"dir\"],\n [consoleAssert, \"assert\"]\n]\n\nfor (var i = 0; i < functions.length; i++) {\n var tuple = functions[i]\n var f = tuple[0]\n var name = tuple[1]\n\n if (!console[name]) {\n console[name] = f\n }\n}\n\nmodule.exports = console\n\nfunction log() {}\n\nfunction info() {\n console.log.apply(console, arguments)\n}\n\nfunction warn() {\n console.log.apply(console, arguments)\n}\n\nfunction error() {\n console.warn.apply(console, arguments)\n}\n\nfunction time(label) {\n times[label] = now()\n}\n\nfunction timeEnd(label) {\n var time = times[label]\n if (!time) {\n throw new Error(\"No such label: \" + label)\n }\n\n delete times[label]\n var duration = now() - time\n console.log(label + \": \" + duration + \"ms\")\n}\n\nfunction trace() {\n var err = new Error()\n err.name = \"Trace\"\n err.message = util.format.apply(null, arguments)\n console.error(err.stack)\n}\n\nfunction dir(object) {\n console.log(util.inspect(object) + \"\\n\")\n}\n\nfunction consoleAssert(expression) {\n if (!expression) {\n var arr = slice.call(arguments, 1)\n assert.ok(false, util.format.apply(null, arr))\n }\n}\n","'use strict';\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true);\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar gopd = require('gopd');\n\n/** @type {(obj: Record, property: PropertyKey, value: unknown, nonEnumerable?: boolean | null, nonWritable?: boolean | null, nonConfigurable?: boolean | null, loose?: boolean) => void} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {(o: {}, p: PropertyKey) => p is keyof o} */\nmodule.exports = bind.call(call, $hasOwn);\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"HubCore\",[],t):\"object\"==typeof exports?exports.HubCore=t():e.HubCore=t()}(self,(function(){return(()=>{var e={9669:(e,t,r)=>{e.exports=r(1609)},5448:(e,t,r)=>{\"use strict\";var n=r(4867),o=r(6026),i=r(4372),a=r(5327),s=r(4097),c=r(4109),u=r(7985),f=r(5061);e.exports=function(e){return new Promise((function(t,r){var p=e.data,l=e.headers;n.isFormData(p)&&delete l[\"Content-Type\"];var d=new XMLHttpRequest;if(e.auth){var h=e.auth.username||\"\",m=e.auth.password?unescape(encodeURIComponent(e.auth.password)):\"\";l.Authorization=\"Basic \"+btoa(h+\":\"+m)}var g=s(e.baseURL,e.url);if(d.open(e.method.toUpperCase(),a(g,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d.onreadystatechange=function(){if(d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf(\"file:\"))){var n=\"getAllResponseHeaders\"in d?c(d.getAllResponseHeaders()):null,i={data:e.responseType&&\"text\"!==e.responseType?d.response:d.responseText,status:d.status,statusText:d.statusText,headers:n,config:e,request:d};o(t,r,i),d=null}},d.onabort=function(){d&&(r(f(\"Request aborted\",e,\"ECONNABORTED\",d)),d=null)},d.onerror=function(){r(f(\"Network Error\",e,null,d)),d=null},d.ontimeout=function(){var t=\"timeout of \"+e.timeout+\"ms exceeded\";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(f(t,e,\"ECONNABORTED\",d)),d=null},n.isStandardBrowserEnv()){var v=(e.withCredentials||u(g))&&e.xsrfCookieName?i.read(e.xsrfCookieName):void 0;v&&(l[e.xsrfHeaderName]=v)}if(\"setRequestHeader\"in d&&n.forEach(l,(function(e,t){void 0===p&&\"content-type\"===t.toLowerCase()?delete l[t]:d.setRequestHeader(t,e)})),n.isUndefined(e.withCredentials)||(d.withCredentials=!!e.withCredentials),e.responseType)try{d.responseType=e.responseType}catch(t){if(\"json\"!==e.responseType)throw t}\"function\"==typeof e.onDownloadProgress&&d.addEventListener(\"progress\",e.onDownloadProgress),\"function\"==typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener(\"progress\",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){d&&(d.abort(),r(e),d=null)})),p||(p=null),d.send(p)}))}},1609:(e,t,r)=>{\"use strict\";var n=r(4867),o=r(1849),i=r(321),a=r(7185);function s(e){var t=new i(e),r=o(i.prototype.request,t);return n.extend(r,i.prototype,t),n.extend(r,t),r}var c=s(r(5655));c.Axios=i,c.create=function(e){return s(a(c.defaults,e))},c.Cancel=r(5263),c.CancelToken=r(4972),c.isCancel=r(6502),c.all=function(e){return Promise.all(e)},c.spread=r(8713),c.isAxiosError=r(6268),e.exports=c,e.exports.default=c},5263:e=>{\"use strict\";function t(e){this.message=e}t.prototype.toString=function(){return\"Cancel\"+(this.message?\": \"+this.message:\"\")},t.prototype.__CANCEL__=!0,e.exports=t},4972:(e,t,r)=>{\"use strict\";var n=r(5263);function o(e){if(\"function\"!=typeof e)throw new TypeError(\"executor must be a function.\");var t;this.promise=new Promise((function(e){t=e}));var r=this;e((function(e){r.reason||(r.reason=new n(e),t(r.reason))}))}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var e;return{token:new o((function(t){e=t})),cancel:e}},e.exports=o},6502:e=>{\"use strict\";e.exports=function(e){return!(!e||!e.__CANCEL__)}},321:(e,t,r)=>{\"use strict\";var n=r(4867),o=r(5327),i=r(782),a=r(3572),s=r(7185);function c(e){this.defaults=e,this.interceptors={request:new i,response:new i}}c.prototype.request=function(e){\"string\"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=s(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method=\"get\";var t=[a,void 0],r=Promise.resolve(e);for(this.interceptors.request.forEach((function(e){t.unshift(e.fulfilled,e.rejected)})),this.interceptors.response.forEach((function(e){t.push(e.fulfilled,e.rejected)}));t.length;)r=r.then(t.shift(),t.shift());return r},c.prototype.getUri=function(e){return e=s(this.defaults,e),o(e.url,e.params,e.paramsSerializer).replace(/^\\?/,\"\")},n.forEach([\"delete\",\"get\",\"head\",\"options\"],(function(e){c.prototype[e]=function(t,r){return this.request(s(r||{},{method:e,url:t,data:(r||{}).data}))}})),n.forEach([\"post\",\"put\",\"patch\"],(function(e){c.prototype[e]=function(t,r,n){return this.request(s(n||{},{method:e,url:t,data:r}))}})),e.exports=c},782:(e,t,r)=>{\"use strict\";var n=r(4867);function o(){this.handlers=[]}o.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},o.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},o.prototype.forEach=function(e){n.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=o},4097:(e,t,r)=>{\"use strict\";var n=r(1793),o=r(7303);e.exports=function(e,t){return e&&!n(t)?o(e,t):t}},5061:(e,t,r)=>{\"use strict\";var n=r(481);e.exports=function(e,t,r,o,i){var a=new Error(e);return n(a,t,r,o,i)}},3572:(e,t,r)=>{\"use strict\";var n=r(4867),o=r(8527),i=r(6502),a=r(5655);function s(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return s(e),e.headers=e.headers||{},e.data=o(e.data,e.headers,e.transformRequest),e.headers=n.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),n.forEach([\"delete\",\"get\",\"head\",\"post\",\"put\",\"patch\",\"common\"],(function(t){delete e.headers[t]})),(e.adapter||a.adapter)(e).then((function(t){return s(e),t.data=o(t.data,t.headers,e.transformResponse),t}),(function(t){return i(t)||(s(e),t&&t.response&&(t.response.data=o(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},481:e=>{\"use strict\";e.exports=function(e,t,r,n,o){return e.config=t,r&&(e.code=r),e.request=n,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},7185:(e,t,r)=>{\"use strict\";var n=r(4867);e.exports=function(e,t){t=t||{};var r={},o=[\"url\",\"method\",\"data\"],i=[\"headers\",\"auth\",\"proxy\",\"params\"],a=[\"baseURL\",\"transformRequest\",\"transformResponse\",\"paramsSerializer\",\"timeout\",\"timeoutMessage\",\"withCredentials\",\"adapter\",\"responseType\",\"xsrfCookieName\",\"xsrfHeaderName\",\"onUploadProgress\",\"onDownloadProgress\",\"decompress\",\"maxContentLength\",\"maxBodyLength\",\"maxRedirects\",\"transport\",\"httpAgent\",\"httpsAgent\",\"cancelToken\",\"socketPath\",\"responseEncoding\"],s=[\"validateStatus\"];function c(e,t){return n.isPlainObject(e)&&n.isPlainObject(t)?n.merge(e,t):n.isPlainObject(t)?n.merge({},t):n.isArray(t)?t.slice():t}function u(o){n.isUndefined(t[o])?n.isUndefined(e[o])||(r[o]=c(void 0,e[o])):r[o]=c(e[o],t[o])}n.forEach(o,(function(e){n.isUndefined(t[e])||(r[e]=c(void 0,t[e]))})),n.forEach(i,u),n.forEach(a,(function(o){n.isUndefined(t[o])?n.isUndefined(e[o])||(r[o]=c(void 0,e[o])):r[o]=c(void 0,t[o])})),n.forEach(s,(function(n){n in t?r[n]=c(e[n],t[n]):n in e&&(r[n]=c(void 0,e[n]))}));var f=o.concat(i).concat(a).concat(s),p=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===f.indexOf(e)}));return n.forEach(p,u),r}},6026:(e,t,r)=>{\"use strict\";var n=r(5061);e.exports=function(e,t,r){var o=r.config.validateStatus;r.status&&o&&!o(r.status)?t(n(\"Request failed with status code \"+r.status,r.config,null,r.request,r)):e(r)}},8527:(e,t,r)=>{\"use strict\";var n=r(4867);e.exports=function(e,t,r){return n.forEach(r,(function(r){e=r(e,t)})),e}},5655:(e,t,r)=>{\"use strict\";var n=r(4867),o=r(6016),i={\"Content-Type\":\"application/x-www-form-urlencoded\"};function a(e,t){!n.isUndefined(e)&&n.isUndefined(e[\"Content-Type\"])&&(e[\"Content-Type\"]=t)}var s,c={adapter:((\"undefined\"!=typeof XMLHttpRequest||\"undefined\"!=typeof process&&\"[object process]\"===Object.prototype.toString.call(process))&&(s=r(5448)),s),transformRequest:[function(e,t){return o(t,\"Accept\"),o(t,\"Content-Type\"),n.isFormData(e)||n.isArrayBuffer(e)||n.isBuffer(e)||n.isStream(e)||n.isFile(e)||n.isBlob(e)?e:n.isArrayBufferView(e)?e.buffer:n.isURLSearchParams(e)?(a(t,\"application/x-www-form-urlencoded;charset=utf-8\"),e.toString()):n.isObject(e)?(a(t,\"application/json;charset=utf-8\"),JSON.stringify(e)):e}],transformResponse:[function(e){if(\"string\"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:\"XSRF-TOKEN\",xsrfHeaderName:\"X-XSRF-TOKEN\",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};c.headers={common:{Accept:\"application/json, text/plain, */*\"}},n.forEach([\"delete\",\"get\",\"head\"],(function(e){c.headers[e]={}})),n.forEach([\"post\",\"put\",\"patch\"],(function(e){c.headers[e]=n.merge(i)})),e.exports=c},1849:e=>{\"use strict\";e.exports=function(e,t){return function(){for(var r=new Array(arguments.length),n=0;n{\"use strict\";var n=r(4867);function o(e){return encodeURIComponent(e).replace(/%3A/gi,\":\").replace(/%24/g,\"$\").replace(/%2C/gi,\",\").replace(/%20/g,\"+\").replace(/%5B/gi,\"[\").replace(/%5D/gi,\"]\")}e.exports=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else if(n.isURLSearchParams(t))i=t.toString();else{var a=[];n.forEach(t,(function(e,t){null!=e&&(n.isArray(e)?t+=\"[]\":e=[e],n.forEach(e,(function(e){n.isDate(e)?e=e.toISOString():n.isObject(e)&&(e=JSON.stringify(e)),a.push(o(t)+\"=\"+o(e))})))})),i=a.join(\"&\")}if(i){var s=e.indexOf(\"#\");-1!==s&&(e=e.slice(0,s)),e+=(-1===e.indexOf(\"?\")?\"?\":\"&\")+i}return e}},7303:e=>{\"use strict\";e.exports=function(e,t){return t?e.replace(/\\/+$/,\"\")+\"/\"+t.replace(/^\\/+/,\"\"):e}},4372:(e,t,r)=>{\"use strict\";var n=r(4867);e.exports=n.isStandardBrowserEnv()?{write:function(e,t,r,o,i,a){var s=[];s.push(e+\"=\"+encodeURIComponent(t)),n.isNumber(r)&&s.push(\"expires=\"+new Date(r).toGMTString()),n.isString(o)&&s.push(\"path=\"+o),n.isString(i)&&s.push(\"domain=\"+i),!0===a&&s.push(\"secure\"),document.cookie=s.join(\"; \")},read:function(e){var t=document.cookie.match(new RegExp(\"(^|;\\\\s*)(\"+e+\")=([^;]*)\"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,\"\",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},1793:e=>{\"use strict\";e.exports=function(e){return/^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(e)}},6268:e=>{\"use strict\";e.exports=function(e){return\"object\"==typeof e&&!0===e.isAxiosError}},7985:(e,t,r)=>{\"use strict\";var n=r(4867);e.exports=n.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement(\"a\");function o(e){var n=e;return t&&(r.setAttribute(\"href\",n),n=r.href),r.setAttribute(\"href\",n),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,\"\"):\"\",host:r.host,search:r.search?r.search.replace(/^\\?/,\"\"):\"\",hash:r.hash?r.hash.replace(/^#/,\"\"):\"\",hostname:r.hostname,port:r.port,pathname:\"/\"===r.pathname.charAt(0)?r.pathname:\"/\"+r.pathname}}return e=o(window.location.href),function(t){var r=n.isString(t)?o(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0}},6016:(e,t,r)=>{\"use strict\";var n=r(4867);e.exports=function(e,t){n.forEach(e,(function(r,n){n!==t&&n.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[n])}))}},4109:(e,t,r)=>{\"use strict\";var n=r(4867),o=[\"age\",\"authorization\",\"content-length\",\"content-type\",\"etag\",\"expires\",\"from\",\"host\",\"if-modified-since\",\"if-unmodified-since\",\"last-modified\",\"location\",\"max-forwards\",\"proxy-authorization\",\"referer\",\"retry-after\",\"user-agent\"];e.exports=function(e){var t,r,i,a={};return e?(n.forEach(e.split(\"\\n\"),(function(e){if(i=e.indexOf(\":\"),t=n.trim(e.substr(0,i)).toLowerCase(),r=n.trim(e.substr(i+1)),t){if(a[t]&&o.indexOf(t)>=0)return;a[t]=\"set-cookie\"===t?(a[t]?a[t]:[]).concat([r]):a[t]?a[t]+\", \"+r:r}})),a):a}},8713:e=>{\"use strict\";e.exports=function(e){return function(t){return e.apply(null,t)}}},4867:(e,t,r)=>{\"use strict\";var n=r(1849),o=Object.prototype.toString;function i(e){return\"[object Array]\"===o.call(e)}function a(e){return void 0===e}function s(e){return null!==e&&\"object\"==typeof e}function c(e){if(\"[object Object]\"!==o.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function u(e){return\"[object Function]\"===o.call(e)}function f(e,t){if(null!=e)if(\"object\"!=typeof e&&(e=[e]),i(e))for(var r=0,n=e.length;r{\"use strict\";function n(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(!(Symbol.iterator in Object(e))&&\"[object Arguments]\"!==Object.prototype.toString.call(e))return;var r=[],n=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(e){o=!0,i=e}finally{try{n||null==s.return||s.return()}finally{if(o)throw i}}return r}(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function o(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function i(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.page,r=void 0===t?1:t,n=e.size,i=void 0===n?10:n,a=e.appTypes,s=e.categories,c=(o(e,[\"page\",\"size\",\"appTypes\",\"categories\"]),this.paramSerializer(a)?\"&\"+this.paramSerializer(a):\"\"),u=this.paramSerializer(s)?\"&\"+this.paramSerializer(s):\"\";return this.request.get(\"\".concat(this.url,\"/apps?page_number=\").concat(r,\"&page_size=\").concat(i).concat(c).concat(u))}function a(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.page,r=void 0===t?1:t,n=e.size,i=void 0===n?10:n,a=o(e,[\"page\",\"size\"]),s=this.paramSerializer(a);return s=s?\"&\"+s:\"\",this.request.get(\"\".concat(this.url,\"/apps/installs?page_number=\").concat(r,\"&page_size=\").concat(i).concat(s))}function s(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=r.page,o=void 0===n?1:n,i=r.size,a=void 0===i?10:i;if(t instanceof Array){var s=t.map((function(t){return\"\".concat(e,\"=\").concat(t)})).join(\"&\");return this.request.get(\"\".concat(this.url,\"/apps?\").concat(s,\"&page_number=\").concat(o,\"&page_size=\").concat(a))}return this.request.get(\"\".concat(this.url,\"/apps?\").concat(e,\"=\").concat(t,\"&page_number=\").concat(o,\"&page_size=\").concat(a))}function c(e,t){return s(\"categories\",e,t)}function u(e){return s(\"appTypes\",\"FutureApp\",e)}function f(e,t){return s(\"keywords\",e,t)}function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.page,n=void 0===r?1:r,o=t.size,i=void 0===o?10:o;return this.request.get(\"\".concat(this.url,\"/apps/\").concat(e,\"/comments?page_number=\").concat(n,\"&page_size=\").concat(i))}function l(e){return Promise.all([Se.getInstance().app.getComments(e),Se.getInstance().app.getById(e)]).then((function(e){var t=n(e,2);return{comments:t[0],detail:t[1]}}))}function d(){var e=this;if(null===window.localStorage.getItem(\"\".concat(this.envAcronym,\"mp_hub_categories\")))return this.request.get(\"\".concat(this.url,\"/categories\")).then((function(t){return window.localStorage.setItem(\"\".concat(e.envAcronym,\"mp_hub_categories\"),JSON.stringify(t.items)),t.items}));var t=JSON.parse(window.localStorage.getItem(\"\".concat(this.envAcronym,\"mp_hub_categories\")));return Promise.resolve(t)}function h(e){return this.request.get(\"\".concat(this.url,\"/apps/\").concat(e))}function m(e,t){return\"all\"===t?[]:this.support.toggleItemList(e,t)}function g(e){return 0===e.length?[]:e.map((function(e){return[\"categories\",e]}))}function v(e,t){return this.request.get(\"\".concat(this.url,\"/apps/\").concat(e,\"/account/\").concat(t,\"/eligible\"))}function b(e,t){if(\"string\"==typeof t&&null!==t)return this.request.post(\"\".concat(this.url,\"/apps/\").concat(e,\"/comments\"),{comment:t});throw new TypeError(\"Invalid String\")}function y(e,t){if((t=parseInt(t))>=1&&t<=5)return this.request.post(\"\".concat(this.url,\"/apps/\").concat(e,\"/ratings\"),{rating:t});throw TypeError(\"Invalid Number\")}function _(e,t){if(\"string\"==typeof e&&\"string\"==typeof t)return this.request.delete(\"\".concat(this.url,\"/apps/\").concat(e,\"/comments/\").concat(t));throw new TypeError(\"Invalid params\")}function x(e){return this.request.delete(\"\".concat(this.url,\"/apps/\").concat(e,\"/ratings\"))}function w(){return{getAll:i.bind(this),getByCategory:c.bind(this),getInstalls:a.bind(this),getFutureImplementations:u.bind(this),getComments:p.bind(this),getFullDetails:l.bind(this),getBy:s.bind(this),getCategories:d.bind(this),getEligibility:v.bind(this),search:f.bind(this),getById:h.bind(this),createRate:y.bind(this),createComment:b.bind(this),deleteComment:_.bind(this),deleteRate:x.bind(this),setActiveCategories:m.bind(this),formatListOfCategories:g.bind(this)}}function O(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function j(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.page,r=void 0===t?1:t,n=e.size,o=void 0===n?10:n,i=O(e,[\"page\",\"size\"]),a=this.paramSerializer(i);return a=a?\"&\"+a:\"\",this.request.get(\"\".concat(this.url,\"/accounts?page_number=\").concat(r,\"&page_size=\").concat(o).concat(a))}function I(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.page,r=void 0===t?1:t,n=e.size,o=void 0===n?4:n,i=O(e,[\"page\",\"size\"]),a=this.paramSerializer(i);return a=a?\"&\"+a:\"\",this.request.get(\"\".concat(this.url,\"/merchants?page_number=\").concat(r,\"&page_size=\").concat(o).concat(a))}function S(e){return this.request.get(\"\".concat(this.url,\"/merchants/\").concat(e,\"/trial\"))}function A(){return{getAll:j.bind(this),getMerchants:I.bind(this),getTrial:S.bind(this)}}r.r(t),r.d(t,{default:()=>Se});var k=r(6808),q=r.n(k);function R(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.paramSerializer(e);return t=t?\"?\"+t:\"\",this.request.get(\"\".concat(this.url,\"/users/profile\").concat(t))}function P(){var e=q().getJSON(\"\".concat(this.envAcronym,\"mp_hub_votes\"));return e||[]}function T(e){return Se.getInstance().profile.getVotes().filter((function(t){return t.publicAppKey===e}))}function E(){var e=q().get(\"\".concat(this.envAcronym,\"mp_lg\"),{domain:Se.getInstance().domain})||q().get(\"\".concat(this.envAcronym,\"mp_lg\"));return null!=e?e:window.navigator.language}function C(){return JSON.parse(window.sessionStorage.getItem(\"\".concat(this.envAcronym,\"mp_hub_merchant\")))}function N(){return q().remove(\"\".concat(this.envAcronym,\"mp_tk\")),q().remove(\"\".concat(this.envAcronym,\"mp_tk\"),{domain:Se.getInstance().domain}),window.sessionStorage.removeItem(\"\".concat(this.envAcronym,\"mp_hub_merchant\")),Promise.resolve(!0)}function z(e,t){if(void 0!==e&&\"boolean\"==typeof t){var r=Se.getInstance().profile.getVotedApp(e);return 0===r.length?r.push({publicAppKey:e,voted:t}):r[0].voted=t,q().set(\"\".concat(this.envAcronym,\"mp_hub_votes\"),JSON.stringify(r)),Promise.resolve(r)}throw new TypeError(\"Invalid params\")}function U(e){return window.localStorage.removeItem(\"\".concat(this.envAcronym,\"mp_hub_categories\")),q().set(\"\".concat(this.envAcronym,\"mp_lg\"),e,{domain:Se.getInstance().domain}),q().get(\"\".concat(this.envAcronym,\"mp_lg\"))}function D(e){return window.sessionStorage.setItem(\"\".concat(this.envAcronym,\"mp_hub_merchant\"),JSON.stringify(e)),e}function B(){return{getAuthorization:R.bind(this),getVotes:P.bind(this),getMerchant:C.bind(this),getVotedApp:T,deleteAuthorization:N.bind(this),getLocale:E.bind(this),createLocale:U.bind(this),createVotes:z.bind(this),createMerchant:D.bind(this)}}function L(e){return\"\".concat(this.url,\"/images/\").concat(e)}function M(){return{listById:L.bind(this)}}function H(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],i={account_id:e,public_app_key:t,additional_data:r,optional_events:o,optional_actions:n};return this.request.post(\"\".concat(this.url,\"/auth/apps/internal/access-tokens\"),i)}function F(e,t,r,n,o){var i={account_id:e,public_app_key:t,additional_data:r,optional_actions:o,optional_events:n};return this.request.post(\"\".concat(this.url,\"/auth/apps/external/access-tokens\"),i)}function J(e){return this.request.post(\"\".concat(this.url,\"/auth/apps/access-tokens\"),e)}function Z(e){return this.request.put(\"\".concat(this.url,\"/auth/apps/access-tokens\"),e)}function V(e,t,r){return this.request.delete(\"\".concat(this.url,\"/auth/apps/access-tokens\"),{account_id:e,public_app_key:t,access_token:r})}function G(){return{createInternalApp:H.bind(this),createExternalApp:F.bind(this),createAccessToken:J.bind(this),updateInternalInstall:Z.bind(this),deleteApp:V.bind(this)}}function W(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function X(e){return this.request.get(\"\".concat(this.url,\"/dev/apps/\").concat(e))}function Y(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.page,r=void 0===t?1:t,n=e.size,o=void 0===n?10:n,i=W(e,[\"page\",\"size\"]),a=Object.entries(i),s=\"\";return a.length>0&&(s=(s=a.map((function(e){return\"\".concat(e[0],\"=\").concat(e[1],\"&\")}))).join(\"\")),this.request.get(\"\".concat(this.url,\"/dev/apps?\").concat(s,\"page_number=\").concat(r,\"&page_size=\").concat(o))}function $(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.page,r=void 0===t?1:t,n=e.size,o=void 0===n?10:n,i=W(e,[\"page\",\"size\"]),a=Object.entries(i),s=\"\";return a.length>0&&(s=(s=a.map((function(e){return\"\".concat(e[0],\"=\").concat(e[1],\"&\")}))).join(\"\")),this.request.get(\"\".concat(this.url,\"/dev/apps/installs?\").concat(s,\"page_number=\").concat(r,\"&page_size=\").concat(o))}function K(){return this.request.get(\"\".concat(this.url,\"/events\"))}function Q(){return this.request.get(\"\".concat(this.url,\"/actions\"))}function ee(e){return this.request.get(\"\".concat(this.url,\"/dev/apps/\").concat(e,\"/issues\"))}function te(e,t){return this.request.get(\"\".concat(this.url,\"/dev/apps/\").concat(e,\"/account/\").concat(t,\"/eligible\"))}function re(e){return this.request.post(\"\".concat(this.url,\"/dev/apps/resumed\"),e)}function ne(e,t){return this.request.post(\"\".concat(this.url,\"/dev/apps/\").concat(e,\"/reviews\"),t)}function oe(e,t,r){return this.request.put(\"\".concat(this.url,\"/dev/apps/\").concat(e,\"/\").concat(t),r)}function ie(e,t){return this.request.put(\"\".concat(this.url,\"/dev/apps/\").concat(e,\"/reviews\"),t)}function ae(e,t){return this.request.delete(\"\".concat(this.url,\"/dev/apps/\").concat(e),t)}function se(){return{getDetail:X.bind(this),getAll:Y.bind(this),getInstalls:$.bind(this),getEvents:K.bind(this),getActions:Q.bind(this),getDevEligibility:te.bind(this),create:re.bind(this),createReview:ne.bind(this),updatePartial:oe.bind(this),updateAvaliate:ie.bind(this),deleteDev:ae.bind(this),getReviewIssues:ee.bind(this)}}function ce(e){return this.request.post(\"\".concat(this.url,\"/dev/auth/apps/internal/authorize\"),e)}function ue(e){return this.request.post(\"\".concat(this.url,\"/dev/auth/apps/external/authorize\"),e)}function fe(e){return this.request.post(\"\".concat(this.url,\"/dev/auth/apps/access-tokens\"),e)}function pe(e){return this.request.put(\"\".concat(this.url,\"/dev/auth/apps/authorize\"),e)}function le(e){return this.request.delete(\"\".concat(this.url,\"/dev/auth/apps/access-tokens\"),e)}function de(){return{createInternalInstall:ce.bind(this),createExternalInstall:ue.bind(this),createAccessToken:fe.bind(this),updateInternalInstall:pe.bind(this),deleteAccessToken:le.bind(this)}}function he(e){return this.request.post(\"\".concat(this.url,\"/images/avatar\"),e)}function me(e){return this.request.post(\"\".concat(this.url,\"/images/banner\"),e)}function ge(){return{createAvatar:he.bind(this),createBanner:me.bind(this)}}function ve(){return{app:se.bind(this)(),auth:de.bind(this)(),image:ge.bind(this)()}}var be=r(1982);function ye(e,t){var r;if(Array.isArray(e)){if(r=Array.from(e),t)r.indexOf(t)>-1?r.splice(r.indexOf(t),1):r.push(t);return r}return[]}function _e(){return{toggleItemList:ye.bind(this)}}var xe=r(1865),we=r.n(xe);function Oe(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};return(e=Array.isArray(t)?t:Object.entries(t)).length>0&&(e=e.reduce((function(e,t,r){return 0===r?e+\"\".concat(we()(t[0]),\"=\").concat(t[1]):e+\"&\".concat(we()(t[0]),\"=\").concat(t[1])}),\"\"))}},{key:\"domain\",get:function(){return Ie[this.theme]||\".mundipagg.com\"}},{key:\"url\",get:function(){var e;switch(this._env){case\"staging\":e=\"https://stg-hubapi.mundipagg.com\";break;case\"production\":e=\"https://hubapi.mundipagg.com\";break;case\"development\":e=\"https://stg-hubapi.mundipagg.com\";break;case\"contingency\":e=\"https://ctghubapi.mundipagg.com\";break;default:e=\"https://stg-hubapi.mundipagg.com\"}return e}},{key:\"envAcronym\",get:function(){var e;switch(this._env){case\"staging\":e=\"stg_\";break;case\"contingency\":case\"production\":e=\"\";break;case\"development\":e=\"stg_\";break;default:e=\"stg_\"}return e}}])&&Oe(t.prototype,r),n&&Oe(t,n),e}()},1982:(e,t,r)=>{\"use strict\";t.Zr=t.WY=void 0;var n=r(655),o=r(3929);Object.defineProperty(t,\"WY\",{enumerable:!0,get:function(){return o.request}});var i=n.__importDefault(r(5924));t.Zr=i.default},4308:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.refreshToken=void 0;var n=r(655),o=n.__importDefault(r(982)),i=r(3929),a=r(1685),s=n.__importDefault(r(5924)),c=r(9922);t.refreshToken=function(){var e=s.default.getInstance(),t=e.domain,r=e.envAcronym,u=e.urlAuth,f=JSON.parse(o.default.get(r+\"mp_rt\")),p=c.clientSettings(f),l=a.paramSerializer(p).replace(\"?\",\"\");return i.request.post(u+\"/connect/token\",l).then((function(e){var i=e,a=new Date,s=new Date(a.getTime()+1e3*i.expires_in),c=new Date(a.getTime()+850*i.expires_in),u=Object.assign(n.__assign(n.__assign({},f),{refresh_token:i.refresh_token}));return o.default.set(r+\"mp_tk\",i.access_token,{expires:s,path:\"/\",domain:t}),o.default.set(r+\"mp_rt\",JSON.stringify(u),{expires:s,path:\"/\",domain:t}),o.default.set(r+\"mp_et\",c,{expires:c,path:\"/\",domain:t}),i})).catch((function(e){throw e}))}},9922:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.handleAutoRefresh=t.clientSettings=t.handleBodyRequest=t.handleBaseResponse=t.verifyAuth=void 0;var n=r(655),o=n.__importDefault(r(982)),i=n.__importDefault(r(5924)),a=r(4308);t.verifyAuth=function(e,t){return t&&(e.headers.Authorization=\"Bearer \"+t),e},t.handleBaseResponse=function(e){return{type:\"response\",status:e&&e.response?e.response.status:null,message:e.message,stack:e.stack,body:e&&e.response?e.response.data:null}},t.handleBodyRequest=function(e){return{type:\"request\",status:e.request.status,message:e.message,stack:e.stack}},t.clientSettings=function(e){return\"refresh_token\"===e.type?{grant_type:\"refresh_token\",refresh_token:e.refresh_token,client_id:\"Mundipagg_Id_WebApp\",client_secret:\"csct_eaLpqVghWUEQrmd2\"}:{grant_type:\"refresh_token\",refresh_token:e.refresh_token,client_id:\"Backoffice_Id_WebApp\",client_secret:\"csct_X7834RLi2nun2N6Q\"}},t.handleAutoRefresh=function(){var e=i.default.getInstance().envAcronym,t=void 0===o.default.get(e+\"mp_et\"),r=void 0!==o.default.get(e+\"mp_tk\"),n=void 0!==o.default.get(e+\"mp_rt\");if(!r||!n){return Promise.reject({status:401,response:{status:401}})}var s=\"undefined\"!=typeof window&&JSON.parse(localStorage.getItem(e+\"mp_refreshing\"));return t&&r&&!s?(localStorage.setItem(e+\"mp_refreshing\",\"true\"),a.refreshToken().finally((function(){localStorage.setItem(e+\"mp_refreshing\",\"false\")}))):Promise.resolve()}},5924:(e,t)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r={},n=function(){function e(e,t,n){this.theme=e,this.domain=t,this.env=n,this.theme=e,this.domain=t,this.env=n,r=this}return e.getInstance=function(){if(r)return r},e.setup=function(t,r,n){new e(t,r,n)},Object.defineProperty(e.prototype,\"urlAuth\",{get:function(){var e;switch(this.env){case\"local\":e=\"https://devapi.mundipagg.com/auth/v2\";break;case\"staging\":e=\"https://stgapi.mundipagg.com/auth/v2\";break;case\"production\":e=\"https://api.mundipagg.com/auth/v2\";break;default:e=\"https://api.mundipagg.com/auth/v2\"}return e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"envAcronym\",{get:function(){var e;switch(this.env){case\"local\":e=\"local_\";break;case\"staging\":e=\"stg_\";break;case\"production\":e=\"\";break;default:e=\"\"}return e},enumerable:!1,configurable:!0}),e}();t.default=n},2074:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.http=void 0;var n=r(655).__importDefault(r(9669));t.http=n.default,t.default=t.http},4182:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.errorResponseInterceptorToken=t.responseInterceptorToken=t.errorResponseInterceptor=t.responseInterceptor=t.requestInterceptorNoHeader=t.errorRequestInterceptor=t.requestInterceptor=void 0;var n=r(3219);Object.defineProperty(t,\"requestInterceptor\",{enumerable:!0,get:function(){return n.requestInterceptor}}),Object.defineProperty(t,\"errorRequestInterceptor\",{enumerable:!0,get:function(){return n.errorRequestInterceptor}}),Object.defineProperty(t,\"requestInterceptorNoHeader\",{enumerable:!0,get:function(){return n.requestInterceptorNoHeader}});var o=r(5605);Object.defineProperty(t,\"responseInterceptor\",{enumerable:!0,get:function(){return o.responseInterceptor}}),Object.defineProperty(t,\"errorResponseInterceptor\",{enumerable:!0,get:function(){return o.errorResponseInterceptor}}),Object.defineProperty(t,\"responseInterceptorToken\",{enumerable:!0,get:function(){return o.responseInterceptorToken}}),Object.defineProperty(t,\"errorResponseInterceptorToken\",{enumerable:!0,get:function(){return o.errorResponseInterceptorToken}})},3219:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.requestInterceptorNoHeader=t.errorRequestInterceptor=t.requestInterceptor=void 0;var n=r(655),o=n.__importDefault(r(982)),i=r(9922),a=n.__importDefault(r(5924));t.requestInterceptor=function(e){var t=a.default.getInstance(),r=t.envAcronym,n=t.theme,s=o.default.get(r+\"mp_tk\"),c=i.verifyAuth(e,s),u=o.default.get(r+\"mp_pref\")?JSON.parse(atob(o.default.get(r+\"mp_pref\"))):{timezone:\"E. South America Standard Time\",language:\"pt-BR\",appearance:{theme:\"mundipagg\",mode:\"light\"}};return c.headers[\"Accept-Language\"]=u.language,c.headers[\"X-Theme\"]=n,c.headers.Timezone=u.timezone,c},t.errorRequestInterceptor=function(e){var t=i.handleBodyRequest(e);return Promise.reject(t)},t.requestInterceptorNoHeader=function(e){return e}},5605:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.errorResponseInterceptorToken=t.responseInterceptorToken=t.errorResponseInterceptor=t.responseInterceptor=void 0;var n=r(9922);t.responseInterceptor=function(e){var t=function(){return e.data||e};return n.handleAutoRefresh().then(t).catch(t)},t.errorResponseInterceptor=function(e){var t=n.handleBaseResponse(e);return n.handleAutoRefresh().then((function(){return Promise.reject(t)})).catch((function(){return Promise.reject(t)}))},t.responseInterceptorToken=function(e){return e.data||e},t.errorResponseInterceptorToken=function(e){var t=n.handleBaseResponse(e);return Promise.reject(t)}},3929:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.requestNoRefreshToken=t.requestNoHeader=t.request=void 0;var n=r(347);Object.defineProperty(t,\"request\",{enumerable:!0,get:function(){return n.request}});var o=r(4927);Object.defineProperty(t,\"requestNoHeader\",{enumerable:!0,get:function(){return o.requestNoHeader}});var i=r(2111);Object.defineProperty(t,\"requestNoRefreshToken\",{enumerable:!0,get:function(){return i.requestNoRefreshToken}})},347:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.request=void 0;var n=r(655).__importDefault(r(2074)),o=r(4182);n.default.interceptors.request.use(o.requestInterceptor,o.errorRequestInterceptor),n.default.interceptors.response.use(o.responseInterceptor,o.errorResponseInterceptor),t.request={get:function(e){return n.default.get(e).catch((function(e){return Promise.reject(e)}))},post:function(e,t){return n.default.post(e,t).catch((function(e){return Promise.reject(e)}))},delete:function(e,t){return n.default.delete(e,{data:t}).catch((function(e){return Promise.reject(e)}))},patch:function(e,t){return n.default.patch(e,t).catch((function(e){return Promise.reject(e)}))},put:function(e,t){return n.default.put(e,t).catch((function(e){return Promise.reject(e)}))}}},4927:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.requestNoHeader=t.axiosInstance=void 0;var n=r(655).__importDefault(r(9669)),o=r(4182);t.axiosInstance=n.default.create(),t.axiosInstance.interceptors.request.use(o.requestInterceptorNoHeader,o.errorRequestInterceptor),t.axiosInstance.interceptors.response.use(o.responseInterceptorToken,o.errorResponseInterceptorToken),t.requestNoHeader={get:function(e){return t.axiosInstance.get(e).catch((function(e){return Promise.reject(e)}))},post:function(e,r){return t.axiosInstance.post(e,r).catch((function(e){return Promise.reject(e)}))},delete:function(e,r){return t.axiosInstance.delete(e,{data:r}).catch((function(e){return Promise.reject(e)}))},put:function(e,r){return t.axiosInstance.put(e,r).catch((function(e){return Promise.reject(e)}))},patch:function(e,r){return t.axiosInstance.patch(e,r).catch((function(e){return Promise.reject(e)}))}}},2111:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.requestNoRefreshToken=t.axiosInstance=void 0;var n=r(655).__importDefault(r(9669)),o=r(4182);t.axiosInstance=n.default.create(),t.axiosInstance.interceptors.request.use(o.requestInterceptor,o.errorRequestInterceptor),t.axiosInstance.interceptors.response.use(o.responseInterceptorToken,o.errorResponseInterceptorToken),t.requestNoRefreshToken={get:function(e){return t.axiosInstance.get(e).catch((function(e){return Promise.reject(e)}))},post:function(e,r){return t.axiosInstance.post(e,r).catch((function(e){return Promise.reject(e)}))},delete:function(e,r){return t.axiosInstance.delete(e,{data:r}).catch((function(e){return Promise.reject(e)}))},put:function(e,r){return t.axiosInstance.put(e,r).catch((function(e){return Promise.reject(e)}))},patch:function(e,r){return t.axiosInstance.patch(e,r).catch((function(e){return Promise.reject(e)}))}}},1685:(e,t)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.paramSerializer=void 0,t.paramSerializer=function(e){void 0===e&&(e={});var t=Object.entries(e),r=\"\";return t.length>0&&(r=\"?\"+new URLSearchParams(t)),r}},982:function(e){e.exports=function(){\"use strict\";function e(e){for(var t=1;t{var n,o;\n/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */!function(i){if(void 0===(o=\"function\"==typeof(n=i)?n.call(t,r,t,e):n)||(e.exports=o),!0,e.exports=i(),!!0){var a=window.Cookies,s=window.Cookies=i();s.noConflict=function(){return window.Cookies=a,s}}}((function(){function e(){for(var e=0,t={};e{var n=r(5639).Symbol;e.exports=n},9932:e=>{e.exports=function(e,t){for(var r=-1,n=null==e?0:e.length,o=Array(n);++r{e.exports=function(e,t,r,n){var o=-1,i=null==e?0:e.length;for(n&&i&&(r=e[++o]);++o{var t=/[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;e.exports=function(e){return e.match(t)||[]}},4239:(e,t,r)=>{var n=r(2705),o=r(9607),i=r(2333),a=n?n.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?\"[object Undefined]\":\"[object Null]\":a&&a in Object(e)?o(e):i(e)}},8674:e=>{e.exports=function(e){return function(t){return null==e?void 0:e[t]}}},531:(e,t,r)=>{var n=r(2705),o=r(9932),i=r(1469),a=r(3448),s=n?n.prototype:void 0,c=s?s.toString:void 0;e.exports=function e(t){if(\"string\"==typeof t)return t;if(i(t))return o(t,e)+\"\";if(a(t))return c?c.call(t):\"\";var r=t+\"\";return\"0\"==r&&1/t==-Infinity?\"-0\":r}},5393:(e,t,r)=>{var n=r(2663),o=r(3816),i=r(8748),a=RegExp(\"['’]\",\"g\");e.exports=function(e){return function(t){return n(i(o(t).replace(a,\"\")),e,\"\")}}},9389:(e,t,r)=>{var n=r(8674)({À:\"A\",Á:\"A\",Â:\"A\",Ã:\"A\",Ä:\"A\",Å:\"A\",à:\"a\",á:\"a\",â:\"a\",ã:\"a\",ä:\"a\",å:\"a\",Ç:\"C\",ç:\"c\",Ð:\"D\",ð:\"d\",È:\"E\",É:\"E\",Ê:\"E\",Ë:\"E\",è:\"e\",é:\"e\",ê:\"e\",ë:\"e\",Ì:\"I\",Í:\"I\",Î:\"I\",Ï:\"I\",ì:\"i\",í:\"i\",î:\"i\",ï:\"i\",Ñ:\"N\",ñ:\"n\",Ò:\"O\",Ó:\"O\",Ô:\"O\",Õ:\"O\",Ö:\"O\",Ø:\"O\",ò:\"o\",ó:\"o\",ô:\"o\",õ:\"o\",ö:\"o\",ø:\"o\",Ù:\"U\",Ú:\"U\",Û:\"U\",Ü:\"U\",ù:\"u\",ú:\"u\",û:\"u\",ü:\"u\",Ý:\"Y\",ý:\"y\",ÿ:\"y\",Æ:\"Ae\",æ:\"ae\",Þ:\"Th\",þ:\"th\",ß:\"ss\",Ā:\"A\",Ă:\"A\",Ą:\"A\",ā:\"a\",ă:\"a\",ą:\"a\",Ć:\"C\",Ĉ:\"C\",Ċ:\"C\",Č:\"C\",ć:\"c\",ĉ:\"c\",ċ:\"c\",č:\"c\",Ď:\"D\",Đ:\"D\",ď:\"d\",đ:\"d\",Ē:\"E\",Ĕ:\"E\",Ė:\"E\",Ę:\"E\",Ě:\"E\",ē:\"e\",ĕ:\"e\",ė:\"e\",ę:\"e\",ě:\"e\",Ĝ:\"G\",Ğ:\"G\",Ġ:\"G\",Ģ:\"G\",ĝ:\"g\",ğ:\"g\",ġ:\"g\",ģ:\"g\",Ĥ:\"H\",Ħ:\"H\",ĥ:\"h\",ħ:\"h\",Ĩ:\"I\",Ī:\"I\",Ĭ:\"I\",Į:\"I\",İ:\"I\",ĩ:\"i\",ī:\"i\",ĭ:\"i\",į:\"i\",ı:\"i\",Ĵ:\"J\",ĵ:\"j\",Ķ:\"K\",ķ:\"k\",ĸ:\"k\",Ĺ:\"L\",Ļ:\"L\",Ľ:\"L\",Ŀ:\"L\",Ł:\"L\",ĺ:\"l\",ļ:\"l\",ľ:\"l\",ŀ:\"l\",ł:\"l\",Ń:\"N\",Ņ:\"N\",Ň:\"N\",Ŋ:\"N\",ń:\"n\",ņ:\"n\",ň:\"n\",ŋ:\"n\",Ō:\"O\",Ŏ:\"O\",Ő:\"O\",ō:\"o\",ŏ:\"o\",ő:\"o\",Ŕ:\"R\",Ŗ:\"R\",Ř:\"R\",ŕ:\"r\",ŗ:\"r\",ř:\"r\",Ś:\"S\",Ŝ:\"S\",Ş:\"S\",Š:\"S\",ś:\"s\",ŝ:\"s\",ş:\"s\",š:\"s\",Ţ:\"T\",Ť:\"T\",Ŧ:\"T\",ţ:\"t\",ť:\"t\",ŧ:\"t\",Ũ:\"U\",Ū:\"U\",Ŭ:\"U\",Ů:\"U\",Ű:\"U\",Ų:\"U\",ũ:\"u\",ū:\"u\",ŭ:\"u\",ů:\"u\",ű:\"u\",ų:\"u\",Ŵ:\"W\",ŵ:\"w\",Ŷ:\"Y\",ŷ:\"y\",Ÿ:\"Y\",Ź:\"Z\",Ż:\"Z\",Ž:\"Z\",ź:\"z\",ż:\"z\",ž:\"z\",IJ:\"IJ\",ij:\"ij\",Œ:\"Oe\",œ:\"oe\",ʼn:\"'n\",ſ:\"s\"});e.exports=n},1957:(e,t,r)=>{var n=\"object\"==typeof r.g&&r.g&&r.g.Object===Object&&r.g;e.exports=n},9607:(e,t,r)=>{var n=r(2705),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,s=n?n.toStringTag:void 0;e.exports=function(e){var t=i.call(e,s),r=e[s];try{e[s]=void 0;var n=!0}catch(e){}var o=a.call(e);return n&&(t?e[s]=r:delete e[s]),o}},3157:e=>{var t=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;e.exports=function(e){return t.test(e)}},2333:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},5639:(e,t,r)=>{var n=r(1957),o=\"object\"==typeof self&&self&&self.Object===Object&&self,i=n||o||Function(\"return this\")();e.exports=i},2757:e=>{var t=\"\\\\u2700-\\\\u27bf\",r=\"a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff\",n=\"A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde\",o=\"\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\",i=\"[\"+o+\"]\",a=\"\\\\d+\",s=\"[\\\\u2700-\\\\u27bf]\",c=\"[\"+r+\"]\",u=\"[^\\\\ud800-\\\\udfff\"+o+a+t+r+n+\"]\",f=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",p=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",l=\"[\"+n+\"]\",d=\"(?:\"+c+\"|\"+u+\")\",h=\"(?:\"+l+\"|\"+u+\")\",m=\"(?:['’](?:d|ll|m|re|s|t|ve))?\",g=\"(?:['’](?:D|LL|M|RE|S|T|VE))?\",v=\"(?:[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]|\\\\ud83c[\\\\udffb-\\\\udfff])?\",b=\"[\\\\ufe0e\\\\ufe0f]?\",y=b+v+(\"(?:\\\\u200d(?:\"+[\"[^\\\\ud800-\\\\udfff]\",f,p].join(\"|\")+\")\"+b+v+\")*\"),_=\"(?:\"+[s,f,p].join(\"|\")+\")\"+y,x=RegExp([l+\"?\"+c+\"+\"+m+\"(?=\"+[i,l,\"$\"].join(\"|\")+\")\",h+\"+\"+g+\"(?=\"+[i,l+d,\"$\"].join(\"|\")+\")\",l+\"?\"+d+\"+\"+m,l+\"+\"+g,\"\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])\",\"\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])\",a,_].join(\"|\"),\"g\");e.exports=function(e){return e.match(x)||[]}},3816:(e,t,r)=>{var n=r(9389),o=r(9833),i=/[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g,a=RegExp(\"[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]\",\"g\");e.exports=function(e){return(e=o(e))&&e.replace(i,n).replace(a,\"\")}},1469:e=>{var t=Array.isArray;e.exports=t},7005:e=>{e.exports=function(e){return null!=e&&\"object\"==typeof e}},3448:(e,t,r)=>{var n=r(4239),o=r(7005);e.exports=function(e){return\"symbol\"==typeof e||o(e)&&\"[object Symbol]\"==n(e)}},1865:(e,t,r)=>{var n=r(5393)((function(e,t,r){return e+(r?\"_\":\"\")+t.toLowerCase()}));e.exports=n},9833:(e,t,r)=>{var n=r(531);e.exports=function(e){return null==e?\"\":n(e)}},8748:(e,t,r)=>{var n=r(9029),o=r(3157),i=r(9833),a=r(2757);e.exports=function(e,t,r){return e=i(e),void 0===(t=r?void 0:t)?o(e)?a(e):n(e):e.match(t)||[]}},655:(e,t,r)=>{\"use strict\";r.r(t),r.d(t,{__extends:()=>o,__assign:()=>i,__rest:()=>a,__decorate:()=>s,__param:()=>c,__metadata:()=>u,__awaiter:()=>f,__generator:()=>p,__exportStar:()=>l,__values:()=>d,__read:()=>h,__spread:()=>m,__spreadArrays:()=>g,__await:()=>v,__asyncGenerator:()=>b,__asyncDelegator:()=>y,__asyncValues:()=>_,__makeTemplateObject:()=>x,__importStar:()=>w,__importDefault:()=>O});\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function o(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var i=function(){return(i=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a);return i>3&&a&&Object.defineProperty(t,r,a),a}function c(e,t){return function(r,n){t(r,n,e)}}function u(e,t){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function f(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){e.done?o(e.value):new r((function(t){t(e.value)})).then(a,s)}c((n=n.apply(e,t||[])).next())}))}function p(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}function h(e,t){var r=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}function m(){for(var e=[],t=0;t1||s(e,t)}))})}function s(e,t){try{(r=o[e](t)).value instanceof v?Promise.resolve(r.value.v).then(c,u):f(i[0][2],r)}catch(e){f(i[0][3],e)}var r}function c(e){s(\"next\",e)}function u(e){s(\"throw\",e)}function f(e,t){e(t),i.shift(),i.length&&s(i[0][0],i[0][1])}}function y(e){var t,r;return t={},n(\"next\"),n(\"throw\",(function(e){throw e})),n(\"return\"),t[Symbol.iterator]=function(){return this},t;function n(n,o){t[n]=e[n]?function(t){return(r=!r)?{value:v(e[n](t)),done:\"return\"===n}:o?o(t):t}:o}}function _(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=d(e),t={},n(\"next\"),n(\"throw\"),n(\"return\"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,o){(function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)})(n,o,(t=e[r](t)).done,t.value)}))}}}function x(e,t){return Object.defineProperty?Object.defineProperty(e,\"raw\",{value:t}):e.raw=t,e}function w(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function O(e){return e&&e.__esModule?e:{default:e}}}},t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}return r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(e){if(\"object\"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r(2139)})()}));","module.exports = require('./hub.min.js')\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n","'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","/*! js-cookie v3.0.1 | MIT */\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, (function () {\n var current = global.Cookies;\n var exports = global.Cookies = factory();\n exports.noConflict = function () { global.Cookies = current; return exports; };\n }()));\n}(this, (function () { 'use strict';\n\n /* eslint-disable no-var */\n function assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n }\n /* eslint-enable no-var */\n\n /* eslint-disable no-var */\n var defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n };\n /* eslint-enable no-var */\n\n /* eslint-disable no-var */\n\n function init (converter, defaultAttributes) {\n function set (key, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n key = encodeURIComponent(key)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n key + '=' + converter.write(value, key) + stringifiedAttributes)\n }\n\n function get (key) {\n if (typeof document === 'undefined' || (arguments.length && !key)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var foundKey = decodeURIComponent(parts[0]);\n jar[foundKey] = converter.read(value, foundKey);\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (key, attributes) {\n set(\n key,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n }\n\n var api = init(defaultConverter, { path: '/' });\n /* eslint-enable no-var */\n\n return api;\n\n})));\n","'use strict';\n\n\nvar loader = require('./lib/loader');\nvar dumper = require('./lib/dumper');\n\n\nfunction renamed(from, to) {\n return function () {\n throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' +\n 'Use yaml.' + to + ' instead, which is now safe by default.');\n };\n}\n\n\nmodule.exports.Type = require('./lib/type');\nmodule.exports.Schema = require('./lib/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./lib/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./lib/schema/json');\nmodule.exports.CORE_SCHEMA = require('./lib/schema/core');\nmodule.exports.DEFAULT_SCHEMA = require('./lib/schema/default');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.YAMLException = require('./lib/exception');\n\n// Re-export all types in case user wants to create custom schema\nmodule.exports.types = {\n binary: require('./lib/type/binary'),\n float: require('./lib/type/float'),\n map: require('./lib/type/map'),\n null: require('./lib/type/null'),\n pairs: require('./lib/type/pairs'),\n set: require('./lib/type/set'),\n timestamp: require('./lib/type/timestamp'),\n bool: require('./lib/type/bool'),\n int: require('./lib/type/int'),\n merge: require('./lib/type/merge'),\n omap: require('./lib/type/omap'),\n seq: require('./lib/type/seq'),\n str: require('./lib/type/str')\n};\n\n// Removed functions from JS-YAML 3.0.x\nmodule.exports.safeLoad = renamed('safeLoad', 'load');\nmodule.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll');\nmodule.exports.safeDump = renamed('safeDump', 'dump');\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_SCHEMA = require('./schema/default');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_BOM = 0xFEFF;\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN = 0x0D; /* CR */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_EQUALS = 0x3D; /* = */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nvar DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\n\nvar QUOTING_TYPE_SINGLE = 1,\n QUOTING_TYPE_DOUBLE = 2;\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.noArrayIndent = options['noArrayIndent'] || false;\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.condenseFlow = options['condenseFlow'] || false;\n this.quotingType = options['quotingType'] === '\"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;\n this.forceQuotes = options['forceQuotes'] || false;\n this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// Including s-white (for some reason, examples doesn't match specs in this aspect)\n// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark\nfunction isNsCharOrWhitespace(c) {\n return isPrintable(c)\n && c !== CHAR_BOM\n // - b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out\n// c = flow-in ⇒ ns-plain-safe-in\n// c = block-key ⇒ ns-plain-safe-out\n// c = flow-key ⇒ ns-plain-safe-in\n// [128] ns-plain-safe-out ::= ns-char\n// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator\n// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” )\n// | ( /* An ns-char preceding */ “#” )\n// | ( “:” /* Followed by an ns-plain-safe(c) */ )\nfunction isPlainSafe(c, prev, inblock) {\n var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);\n var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);\n return (\n // ns-plain-safe\n inblock ? // c = flow-in\n cIsNsCharOrWhitespace\n : cIsNsCharOrWhitespace\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n )\n // ns-plain-char\n && c !== CHAR_SHARP // false on '#'\n && !(prev === CHAR_COLON && !cIsNsChar) // false on ': '\n || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#'\n || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]'\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part\n return isPrintable(c) && c !== CHAR_BOM\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_EQUALS\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Simplified test for values allowed as the last character in plain style.\nfunction isPlainSafeLast(c) {\n // just not whitespace or colon, it will be checked to be plain character later\n return !isWhitespace(c) && c !== CHAR_COLON;\n}\n\n// Same as 'string'.codePointAt(pos), but works in older browsers.\nfunction codePointAt(string, pos) {\n var first = string.charCodeAt(pos), second;\n if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) {\n second = string.charCodeAt(pos + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n var leadingSpaceRe = /^\\n* /;\n return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth,\n testAmbiguousType, quotingType, forceQuotes, inblock) {\n\n var i;\n var char = 0;\n var prevChar = null;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(codePointAt(string, 0))\n && isPlainSafeLast(codePointAt(string, string.length - 1));\n\n if (singleLineOnly || forceQuotes) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n if (plain && !forceQuotes && !testAmbiguousType(string)) {\n return STYLE_PLAIN;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n if (!forceQuotes) {\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey, inblock) {\n state.dump = (function () {\n if (string.length === 0) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"\"' : \"''\";\n }\n if (!state.noCompatMode) {\n if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? ('\"' + string + '\"') : (\"'\" + string + \"'\");\n }\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth,\n testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) {\n\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char = 0;\n var escapeSeq;\n\n for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n\n if (!escapeSeq && isPrintable(char)) {\n result += string[i];\n if (char >= 0x10000) result += string[i + 1];\n } else {\n result += escapeSeq || encodeHex(char);\n }\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level, value, false, false) ||\n (typeof value === 'undefined' &&\n writeNode(state, level, null, false, false))) {\n\n if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : '');\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level + 1, value, true, true, false, true) ||\n (typeof value === 'undefined' &&\n writeNode(state, level + 1, null, true, true, false, true))) {\n\n if (!compact || _result !== '') {\n _result += generateNextLine(state, level);\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-';\n } else {\n _result += '- ';\n }\n\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n pairBuffer = '';\n if (_result !== '') pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || _result !== '') {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n if (explicit) {\n if (type.multi && type.representName) {\n state.tag = type.representName(object);\n } else {\n state.tag = type.tag;\n }\n } else {\n state.tag = '?';\n }\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey, isblockseq) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n var inblock = block;\n var tagStr;\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n if (state.noArrayIndent && !isblockseq && level > 0) {\n writeBlockSequence(state, level - 1, state.dump, compact);\n } else {\n writeBlockSequence(state, level, state.dump, compact);\n }\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey, inblock);\n }\n } else if (type === '[object Undefined]') {\n return false;\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n // Need to encode all characters except those allowed by the spec:\n //\n // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */\n // [36] ns-hex-digit ::= ns-dec-digit\n // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */\n // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */\n // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-”\n // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#”\n // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,”\n // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]”\n //\n // Also need to encode '!' because it has special meaning (end of tag prefix).\n //\n tagStr = encodeURI(\n state.tag[0] === '!' ? state.tag.slice(1) : state.tag\n ).replace(/!/g, '%21');\n\n if (state.tag[0] === '!') {\n tagStr = '!' + tagStr;\n } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') {\n tagStr = '!!' + tagStr.slice(18);\n } else {\n tagStr = '!<' + tagStr + '>';\n }\n\n state.dump = tagStr + ' ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n var value = input;\n\n if (state.replacer) {\n value = state.replacer.call({ '': value }, '', value);\n }\n\n if (writeNode(state, 0, value, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nmodule.exports.dump = dump;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\n\nfunction formatError(exception, compact) {\n var where = '', message = exception.reason || '(unknown reason)';\n\n if (!exception.mark) return message;\n\n if (exception.mark.name) {\n where += 'in \"' + exception.mark.name + '\" ';\n }\n\n where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')';\n\n if (!compact && exception.mark.snippet) {\n where += '\\n\\n' + exception.mark.snippet;\n }\n\n return message + ' ' + where;\n}\n\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = formatError(this, false);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n return this.name + ': ' + formatError(this, compact);\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar makeSnippet = require('./snippet');\nvar DEFAULT_SCHEMA = require('./schema/default');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n );\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n // (Hidden) Remove? makes the loader to expect YAML 1.1 documents\n // if such documents have no explicit %YAML directive\n this.legacy = options['legacy'] || false;\n\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n // position of first leading tab in the current line,\n // used to make sure there are no tabs in the indentation\n this.firstTabInLine = -1;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n var mark = {\n name: state.filename,\n buffer: state.input.slice(0, -1), // omit trailing \\0\n position: state.position,\n line: state.line,\n column: state.position - state.lineStart\n };\n\n mark.snippet = makeSnippet(mark);\n\n return new YAMLException(message, mark);\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n try {\n prefix = decodeURIComponent(prefix);\n } catch (err) {\n throwError(state, 'tag prefix is malformed: ' + prefix);\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode,\n startLine, startLineStart, startPos) {\n\n var index, quantity;\n\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.lineStart = startLineStart || state.lineStart;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n\n // used for this specific key only because Object.defineProperty is slow\n if (keyNode === '__proto__') {\n Object.defineProperty(_result, keyNode, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: valueNode\n });\n } else {\n _result[keyNode] = valueNode;\n }\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n state.firstTabInLine = -1;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) {\n state.firstTabInLine = state.position;\n }\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _lineStart,\n _pos,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = Object.create(null),\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n } else if (ch === 0x2C/* , */) {\n // \"flow collection entries can never be completely empty\", as per YAML 1.2, section 7.4\n throwError(state, \"expected the node content, but found ','\");\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line; // Save the current line.\n _lineStart = state.lineStart;\n _pos = state.position;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _keyLine,\n _keyLineStart,\n _keyPos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = Object.create(null),\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (!atExplicitKey && state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n\n if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n // Neither implicit nor explicit notation.\n // Reading is done. Go to the epilogue.\n break;\n }\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (atExplicitKey) {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n }\n\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n try {\n tagName = decodeURIComponent(tagName);\n } catch (err) {\n throwError(state, 'tag name is malformed: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!_hasOwnProperty.call(state.anchorMap, alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag === null) {\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n\n } else if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"! [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for ! tag; it should be \"scalar\", not \"' + state.kind + '\"');\n }\n\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (state.tag !== '!') {\n if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n } else {\n // looking for multi type\n type = null;\n typeList = state.typeMap.multi[state.kind || 'fallback'];\n\n for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n type = typeList[typeIndex];\n break;\n }\n }\n }\n\n if (!type) {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result, state.tag);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = Object.create(null);\n state.anchorMap = Object.create(null);\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n var nullpos = input.indexOf('\\0');\n\n if (nullpos !== -1) {\n state.position = nullpos;\n throwError(state, 'null byte is not allowed in input');\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n var documents = loadDocuments(input, options);\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name) {\n var result = [];\n\n schema[name].forEach(function (currentType) {\n var newIndex = result.length;\n\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag &&\n previousType.kind === currentType.kind &&\n previousType.multi === currentType.multi) {\n\n newIndex = previousIndex;\n }\n });\n\n result[newIndex] = currentType;\n });\n\n return result;\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {},\n multi: {\n scalar: [],\n sequence: [],\n mapping: [],\n fallback: []\n }\n }, index, length;\n\n function collectType(type) {\n if (type.multi) {\n result.multi[type.kind].push(type);\n result.multi['fallback'].push(type);\n } else {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n return this.extend(definition);\n}\n\n\nSchema.prototype.extend = function extend(definition) {\n var implicit = [];\n var explicit = [];\n\n if (definition instanceof Type) {\n // Schema.extend(type)\n explicit.push(definition);\n\n } else if (Array.isArray(definition)) {\n // Schema.extend([ type1, type2, ... ])\n explicit = explicit.concat(definition);\n\n } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] })\n if (definition.implicit) implicit = implicit.concat(definition.implicit);\n if (definition.explicit) explicit = explicit.concat(definition.explicit);\n\n } else {\n throw new YAMLException('Schema.extend argument should be a Type, [ Type ], ' +\n 'or a schema definition ({ implicit: [...], explicit: [...] })');\n }\n\n implicit.forEach(function (type) {\n if (!(type instanceof Type)) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n\n if (type.multi) {\n throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.');\n }\n });\n\n explicit.forEach(function (type) {\n if (!(type instanceof Type)) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n });\n\n var result = Object.create(Schema.prototype);\n\n result.implicit = (this.implicit || []).concat(implicit);\n result.explicit = (this.explicit || []).concat(explicit);\n\n result.compiledImplicit = compileList(result, 'implicit');\n result.compiledExplicit = compileList(result, 'explicit');\n result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n\n return result;\n};\n\n\nmodule.exports = Schema;\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nmodule.exports = require('./json');\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nmodule.exports = require('./core').extend({\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nmodule.exports = require('./failsafe').extend({\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","'use strict';\n\n\nvar common = require('./common');\n\n\n// get snippet for a single line, respecting maxLength\nfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n var head = '';\n var tail = '';\n var maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n\n if (position - lineStart > maxHalfLength) {\n head = ' ... ';\n lineStart = position - maxHalfLength + head.length;\n }\n\n if (lineEnd - position > maxHalfLength) {\n tail = ' ...';\n lineEnd = position + maxHalfLength - tail.length;\n }\n\n return {\n str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, '→') + tail,\n pos: position - lineStart + head.length // relative position\n };\n}\n\n\nfunction padStart(string, max) {\n return common.repeat(' ', max - string.length) + string;\n}\n\n\nfunction makeSnippet(mark, options) {\n options = Object.create(options || null);\n\n if (!mark.buffer) return null;\n\n if (!options.maxLength) options.maxLength = 79;\n if (typeof options.indent !== 'number') options.indent = 1;\n if (typeof options.linesBefore !== 'number') options.linesBefore = 3;\n if (typeof options.linesAfter !== 'number') options.linesAfter = 2;\n\n var re = /\\r?\\n|\\r|\\0/g;\n var lineStarts = [ 0 ];\n var lineEnds = [];\n var match;\n var foundLineNo = -1;\n\n while ((match = re.exec(mark.buffer))) {\n lineEnds.push(match.index);\n lineStarts.push(match.index + match[0].length);\n\n if (mark.position <= match.index && foundLineNo < 0) {\n foundLineNo = lineStarts.length - 2;\n }\n }\n\n if (foundLineNo < 0) foundLineNo = lineStarts.length - 1;\n\n var result = '', i, line;\n var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n\n for (i = 1; i <= options.linesBefore; i++) {\n if (foundLineNo - i < 0) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo - i],\n lineEnds[foundLineNo - i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n maxLineLength\n );\n result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n' + result;\n }\n\n line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\\n';\n\n for (i = 1; i <= options.linesAfter; i++) {\n if (foundLineNo + i >= lineEnds.length) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo + i],\n lineEnds[foundLineNo + i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n maxLineLength\n );\n result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n }\n\n return result.replace(/\\n$/, '');\n}\n\n\nmodule.exports = makeSnippet;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'multi',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'representName',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.options = options; // keep original options in case user wants to extend this type later\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.representName = options['representName'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.multi = options['multi'] || false;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n return new Uint8Array(result);\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(obj) {\n return Object.prototype.toString.call(obj) === '[object Uint8Array]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'o') {\n // base 8\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n }\n\n // base 10 (except 0)\n\n // value should not start with `_`;\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n // Should have digits and should not end with `_`\n if (!hasDigits || ch === '_') return false;\n\n return true;\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch;\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value.slice(2), 16);\n if (value[1] === 'o') return sign * parseInt(value.slice(2), 8);\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); },\n decimal: function (obj) { return obj.toString(10); },\n /* eslint-disable max-len */\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; },\n empty: function () { return ''; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2021, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\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 = typeof globalThis !== 'undefined' ? globalThis : global || self, global.marked = factory());\n})(this, (function () { 'use strict';\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\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\n var defaults$5 = {exports: {}};\n\n function getDefaults$1() {\n return {\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n }\n\n function changeDefaults$1(newDefaults) {\n defaults$5.exports.defaults = newDefaults;\n }\n\n defaults$5.exports = {\n defaults: getDefaults$1(),\n getDefaults: getDefaults$1,\n changeDefaults: changeDefaults$1\n };\n\n /**\n * Helpers\n */\n var escapeTest = /[&<>\"']/;\n var escapeReplace = /[&<>\"']/g;\n var escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\n var escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n var escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n var getEscapeReplacement = function getEscapeReplacement(ch) {\n return escapeReplacements[ch];\n };\n\n function escape$2(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n }\n\n var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n function unescape$1(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n\n return '';\n });\n }\n\n var caret = /(^|[^\\[])\\^/g;\n\n function edit$1(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n var obj = {\n replace: function replace(name, val) {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: function getRegex() {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n }\n\n var nonWordAndColonTest = /[^\\w:]/g;\n var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n function cleanUrl$1(sanitize, base, href) {\n if (sanitize) {\n var prot;\n\n try {\n prot = decodeURIComponent(unescape$1(href)).replace(nonWordAndColonTest, '').toLowerCase();\n } catch (e) {\n return null;\n }\n\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n\n return href;\n }\n\n var baseUrls = {};\n var justDomain = /^[^:]+:\\/*[^/]*$/;\n var protocol = /^([^:]+:)[\\s\\S]*$/;\n var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n function resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim$1(base, '/', true);\n }\n }\n\n base = baseUrls[' ' + base];\n var relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n }\n\n var noopTest$1 = {\n exec: function noopTest() {}\n };\n\n function merge$2(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n }\n\n function splitCells$1(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n\n while (--curr >= 0 && str[curr] === '\\\\') {\n escaped = !escaped;\n }\n\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n var i = 0; // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n\n if (!cells[0].trim()) {\n cells.shift();\n }\n\n if (!cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) {\n cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n\n return cells;\n } // Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n // /c*$/ is vulnerable to REDOS.\n // invert: Remove suffix of non-c chars instead. Default falsey.\n\n\n function rtrim$1(str, c, invert) {\n var l = str.length;\n\n if (l === 0) {\n return '';\n } // Length of suffix matching the invert condition.\n\n\n var suffLen = 0; // Step left until we fail to match the invert condition.\n\n while (suffLen < l) {\n var currChar = str.charAt(l - suffLen - 1);\n\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, l - suffLen);\n }\n\n function findClosingBracket$1(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n var l = str.length;\n var level = 0,\n i = 0;\n\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n\n if (level < 0) {\n return i;\n }\n }\n }\n\n return -1;\n }\n\n function checkSanitizeDeprecation$1(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n } // copied from https://stackoverflow.com/a/5450113/806777\n\n\n function repeatString$1(pattern, count) {\n if (count < 1) {\n return '';\n }\n\n var result = '';\n\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n\n count >>= 1;\n pattern += pattern;\n }\n\n return result + pattern;\n }\n\n var helpers = {\n escape: escape$2,\n unescape: unescape$1,\n edit: edit$1,\n cleanUrl: cleanUrl$1,\n resolveUrl: resolveUrl,\n noopTest: noopTest$1,\n merge: merge$2,\n splitCells: splitCells$1,\n rtrim: rtrim$1,\n findClosingBracket: findClosingBracket$1,\n checkSanitizeDeprecation: checkSanitizeDeprecation$1,\n repeatString: repeatString$1\n };\n\n var defaults$4 = defaults$5.exports.defaults;\n var rtrim = helpers.rtrim,\n splitCells = helpers.splitCells,\n _escape = helpers.escape,\n findClosingBracket = helpers.findClosingBracket;\n\n function outputLink(cap, link, raw, lexer) {\n var href = link.href;\n var title = link.title ? _escape(link.title) : null;\n var text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n var token = {\n type: 'link',\n raw: raw,\n href: href,\n title: title,\n text: text,\n tokens: lexer.inlineTokens(text, [])\n };\n lexer.state.inLink = false;\n return token;\n } else {\n return {\n type: 'image',\n raw: raw,\n href: href,\n title: title,\n text: _escape(text)\n };\n }\n }\n\n function indentCodeCompensation(raw, text) {\n var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n var indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(function (node) {\n var matchIndentInNode = node.match(/^\\s+/);\n\n if (matchIndentInNode === null) {\n return node;\n }\n\n var indentInNode = matchIndentInNode[0];\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n }).join('\\n');\n }\n /**\n * Tokenizer\n */\n\n\n var Tokenizer_1 = /*#__PURE__*/function () {\n function Tokenizer(options) {\n this.options = options || defaults$4;\n }\n\n var _proto = Tokenizer.prototype;\n\n _proto.space = function space(src) {\n var cap = this.rules.block.newline.exec(src);\n\n if (cap) {\n if (cap[0].length > 1) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n\n return {\n raw: '\\n'\n };\n }\n };\n\n _proto.code = function code(src) {\n var cap = this.rules.block.code.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim(text, '\\n') : text\n };\n }\n };\n\n _proto.fences = function fences(src) {\n var cap = this.rules.block.fences.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw: raw,\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: text\n };\n }\n };\n\n _proto.heading = function heading(src) {\n var cap = this.rules.block.heading.exec(src);\n\n if (cap) {\n var text = cap[2].trim(); // remove trailing #s\n\n if (/#$/.test(text)) {\n var trimmed = rtrim(text, '#');\n\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n var token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: text,\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.hr = function hr(src) {\n var cap = this.rules.block.hr.exec(src);\n\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n };\n\n _proto.blockquote = function blockquote(src) {\n var cap = this.rules.block.blockquote.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ *> ?/gm, '');\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens: this.lexer.blockTokens(text, []),\n text: text\n };\n }\n };\n\n _proto.list = function list(src) {\n var cap = this.rules.block.list.exec(src);\n\n if (cap) {\n var raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, lines, itemContents;\n var bull = cap[1].trim();\n var isordered = bull.length > 1;\n var list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? \"\\\\d{1,9}\\\\\" + bull.slice(-1) : \"\\\\\" + bull;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n } // Get next list item\n\n\n var itemRegex = new RegExp(\"^( {0,3}\" + bull + \")((?: [^\\\\n]*| *)(?:\\\\n[^\\\\n]*)*(?:\\\\n|$))\"); // Get each top-level item\n\n while (src) {\n if (this.rules.block.hr.test(src)) {\n // End list if we encounter an HR (possibly move into itemRegex?)\n break;\n }\n\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n lines = cap[2].split('\\n');\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = lines[0].trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n\n indent = cap[1].length + (indent > 4 ? 1 : indent); // intented code blocks after 4 spaces; indent is always 1\n\n itemContents = lines[0].slice(indent - cap[1].length);\n }\n\n blankLine = false;\n raw = cap[0];\n\n if (!lines[0] && /^ *$/.test(lines[1])) {\n // items begin with at most one blank line\n raw = cap[1] + lines.slice(0, 2).join('\\n') + '\\n';\n list.loose = true;\n lines = [];\n }\n\n var nextBulletRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}(?:[*+-]|\\\\d{1,9}[.)])\");\n\n for (i = 1; i < lines.length; i++) {\n line = lines[i];\n\n if (this.options.pedantic) {\n // Re-align to follow commonmark nesting rules\n line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n } // End list item if found start of new bullet\n\n\n if (nextBulletRegex.test(line)) {\n raw = cap[1] + lines.slice(0, i).join('\\n') + '\\n';\n break;\n } // Until we encounter a blank line, item contents do not need indentation\n\n\n if (!blankLine) {\n if (!line.trim()) {\n // Check if current line is empty\n blankLine = true;\n } // Dedent if possible\n\n\n if (line.search(/[^ ]/) >= indent) {\n itemContents += '\\n' + line.slice(indent);\n } else {\n itemContents += '\\n' + line;\n }\n\n continue;\n } // Dedent this line\n\n\n if (line.search(/[^ ]/) >= indent || !line.trim()) {\n itemContents += '\\n' + line.slice(indent);\n continue;\n } else {\n // Line was not properly indented; end of this item\n raw = cap[1] + lines.slice(0, i).join('\\n') + '\\n';\n break;\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n } // Check for task list items\n\n\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n list.raw += raw;\n src = src.slice(raw.length);\n } // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n\n\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n var l = list.items.length; // Item child tokens handled here at end because we needed to have the final item to trim it first\n\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (list.items[i].tokens.some(function (t) {\n return t.type === 'space';\n })) {\n list.loose = true;\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n };\n\n _proto.html = function html(src) {\n var cap = this.rules.block.html.exec(src);\n\n if (cap) {\n var token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n\n if (this.options.sanitize) {\n token.type = 'paragraph';\n token.text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]);\n token.tokens = [];\n this.lexer.inline(token.text, token.tokens);\n }\n\n return token;\n }\n };\n\n _proto.def = function def(src) {\n var cap = this.rules.block.def.exec(src);\n\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n type: 'def',\n tag: tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n };\n\n _proto.table = function table(src) {\n var cap = this.rules.block.table.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1]).map(function (c) {\n return {\n text: c\n };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n var l = item.align.length;\n var i, j, k, row;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.rows.length;\n\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(function (c) {\n return {\n text: c\n };\n });\n } // parse child tokens inside headers and cells\n // header child tokens\n\n\n l = item.header.length;\n\n for (j = 0; j < l; j++) {\n item.header[j].tokens = [];\n this.lexer.inlineTokens(item.header[j].text, item.header[j].tokens);\n } // cell child tokens\n\n\n l = item.rows.length;\n\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n\n for (k = 0; k < row.length; k++) {\n row[k].tokens = [];\n this.lexer.inlineTokens(row[k].text, row[k].tokens);\n }\n }\n\n return item;\n }\n }\n };\n\n _proto.lheading = function lheading(src) {\n var cap = this.rules.block.lheading.exec(src);\n\n if (cap) {\n var token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.paragraph = function paragraph(src) {\n var cap = this.rules.block.paragraph.exec(src);\n\n if (cap) {\n var token = {\n type: 'paragraph',\n raw: cap[0],\n text: cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.text = function text(src) {\n var cap = this.rules.block.text.exec(src);\n\n if (cap) {\n var token = {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.escape = function escape(src) {\n var cap = this.rules.inline.escape.exec(src);\n\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: _escape(cap[1])\n };\n }\n };\n\n _proto.tag = function tag(src) {\n var cap = this.rules.inline.tag.exec(src);\n\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.link = function link(src) {\n var cap = this.rules.inline.link.exec(src);\n\n if (cap) {\n var trimmedUrl = cap[2].trim();\n\n if (!this.options.pedantic && /^$/.test(trimmedUrl)) {\n return;\n } // ending angle bracket cannot be escaped\n\n\n var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n var lastParenIndex = findClosingBracket(cap[2], '()');\n\n if (lastParenIndex > -1) {\n var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n var linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n\n var href = cap[2];\n var title = '';\n\n if (this.options.pedantic) {\n // split pedantic href and title\n var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n\n if (/^$/.test(trimmedUrl)) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n };\n\n _proto.reflink = function reflink(src, links) {\n var cap;\n\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n\n if (!link || !link.href) {\n var text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text: text\n };\n }\n\n return outputLink(cap, link, cap[0], this.lexer);\n }\n };\n\n _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {\n if (prevChar === void 0) {\n prevChar = '';\n }\n\n var match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return; // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n\n if (match[3] && prevChar.match(/(?:[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08C7\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\u9FFC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7BF\\uA7C2-\\uA7CA\\uA7F5-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82C[\\uDC00-\\uDD1E\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDD\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/)) return;\n var nextChar = match[1] || match[2] || '';\n\n if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {\n var lLength = match[0].length - 1;\n var rDelim,\n rLength,\n delimTotal = lLength,\n midDelimTotal = 0;\n var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0; // Clip maskedSrc to same section of string as src (move to lexer?)\n\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) {\n // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); // Create `em` if smallest delimiter has odd char count. *a***\n\n if (Math.min(lLength, rLength) % 2) {\n var _text = src.slice(1, lLength + match.index + rLength);\n\n return {\n type: 'em',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: _text,\n tokens: this.lexer.inlineTokens(_text, [])\n };\n } // Create 'strong' if smallest delimiter has even char count. **a***\n\n\n var text = src.slice(2, lLength + match.index + rLength - 1);\n return {\n type: 'strong',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: text,\n tokens: this.lexer.inlineTokens(text, [])\n };\n }\n }\n };\n\n _proto.codespan = function codespan(src) {\n var cap = this.rules.inline.code.exec(src);\n\n if (cap) {\n var text = cap[2].replace(/\\n/g, ' ');\n var hasNonSpaceChars = /[^ ]/.test(text);\n var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n\n text = _escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.br = function br(src) {\n var cap = this.rules.inline.br.exec(src);\n\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n };\n\n _proto.del = function del(src) {\n var cap = this.rules.inline.del.exec(src);\n\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2], [])\n };\n }\n };\n\n _proto.autolink = function autolink(src, mangle) {\n var cap = this.rules.inline.autolink.exec(src);\n\n if (cap) {\n var text, href;\n\n if (cap[2] === '@') {\n text = _escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = _escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.url = function url(src, mangle) {\n var cap;\n\n if (cap = this.rules.inline.url.exec(src)) {\n var text, href;\n\n if (cap[2] === '@') {\n text = _escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n var prevCapZero;\n\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n\n text = _escape(cap[0]);\n\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.inlineText = function inlineText(src, smartypants) {\n var cap = this.rules.inline.text.exec(src);\n\n if (cap) {\n var text;\n\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0];\n } else {\n text = _escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n\n return {\n type: 'text',\n raw: cap[0],\n text: text\n };\n }\n };\n\n return Tokenizer;\n }();\n\n var noopTest = helpers.noopTest,\n edit = helpers.edit,\n merge$1 = helpers.merge;\n /**\n * Block-Level Grammar\n */\n\n var block$1 = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)( [^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n };\n block$1._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\n block$1._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n block$1.def = edit(block$1.def).replace('label', block$1._label).replace('title', block$1._title).getRegex();\n block$1.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n block$1.listItemStart = edit(/^( *)(bull) */).replace('bull', block$1.bullet).getRegex();\n block$1.list = edit(block$1.list).replace(/bull/g, block$1.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block$1.def.source + ')').getRegex();\n block$1._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\n block$1._comment = /|$)/;\n block$1.html = edit(block$1.html, 'i').replace('comment', block$1._comment).replace('tag', block$1._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\n block$1.paragraph = edit(block$1._paragraph).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block$1._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n block$1.blockquote = edit(block$1.blockquote).replace('paragraph', block$1.paragraph).getRegex();\n /**\n * Normal Block Grammar\n */\n\n block$1.normal = merge$1({}, block$1);\n /**\n * GFM Block Grammar\n */\n\n block$1.gfm = merge$1({}, block$1.normal, {\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n\n });\n block$1.gfm.table = edit(block$1.gfm.table).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block$1._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n /**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\n block$1.pedantic = merge$1({}, block$1.normal, {\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block$1._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n paragraph: edit(block$1.normal._paragraph).replace('hr', block$1.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block$1.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n });\n /**\n * Inline-Level Grammar\n */\n\n var inline$1 = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment' + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^',\n // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan delim inside strong (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^[^_*]*?\\_\\_[^_*]*?\\*[^_*]*?(?=\\_\\_)|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?\\_[^_*]*?(?=\\*\\*)|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\?@\\\\[\\\\]`^{|}~';\n inline$1.punctuation = edit(inline$1.punctuation).replace(/punctuation/g, inline$1._punctuation).getRegex(); // sequences em should skip over [title](link), `code`, \n\n inline$1.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n inline$1.escapedEmSt = /\\\\\\*|\\\\_/g;\n inline$1._comment = edit(block$1._comment).replace('(?:-->|$)', '-->').getRegex();\n inline$1.emStrong.lDelim = edit(inline$1.emStrong.lDelim).replace(/punct/g, inline$1._punctuation).getRegex();\n inline$1.emStrong.rDelimAst = edit(inline$1.emStrong.rDelimAst, 'g').replace(/punct/g, inline$1._punctuation).getRegex();\n inline$1.emStrong.rDelimUnd = edit(inline$1.emStrong.rDelimUnd, 'g').replace(/punct/g, inline$1._punctuation).getRegex();\n inline$1._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n inline$1._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\n inline$1._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\n inline$1.autolink = edit(inline$1.autolink).replace('scheme', inline$1._scheme).replace('email', inline$1._email).getRegex();\n inline$1._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n inline$1.tag = edit(inline$1.tag).replace('comment', inline$1._comment).replace('attribute', inline$1._attribute).getRegex();\n inline$1._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n inline$1._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\n inline$1._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n inline$1.link = edit(inline$1.link).replace('label', inline$1._label).replace('href', inline$1._href).replace('title', inline$1._title).getRegex();\n inline$1.reflink = edit(inline$1.reflink).replace('label', inline$1._label).getRegex();\n inline$1.reflinkSearch = edit(inline$1.reflinkSearch, 'g').replace('reflink', inline$1.reflink).replace('nolink', inline$1.nolink).getRegex();\n /**\n * Normal Inline Grammar\n */\n\n inline$1.normal = merge$1({}, inline$1);\n /**\n * Pedantic Inline Grammar\n */\n\n inline$1.pedantic = merge$1({}, inline$1.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline$1._label).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline$1._label).getRegex()\n });\n /**\n * GFM Inline Grammar\n */\n\n inline$1.gfm = merge$1({}, inline$1.normal, {\n escape: edit(inline$1.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n /**\n * Block Lexer\n */\n\n\n var Lexer_1 = /*#__PURE__*/function () {\n function Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults$3;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer$1();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n var rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n\n\n /**\n * Static Lex Method\n */\n Lexer.lex = function lex(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n ;\n\n Lexer.lexInline = function lexInline(src, options) {\n var lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n ;\n\n var _proto = Lexer.prototype;\n\n _proto.lex = function lex(src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n').replace(/\\t/g, ' ');\n this.blockTokens(src, this.tokens);\n var next;\n\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n /**\n * Lexing\n */\n ;\n\n _proto.blockTokens = function blockTokens(src, tokens) {\n var _this = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (this.options.pedantic) {\n src = src.replace(/^ +$/gm, '');\n }\n\n var token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // newline\n\n\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n\n if (token.type) {\n tokens.push(token);\n }\n\n continue;\n } // code\n\n\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.\n\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // fences\n\n\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // heading\n\n\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // hr\n\n\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // blockquote\n\n\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // list\n\n\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // html\n\n\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // def\n\n\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n\n continue;\n } // table (gfm)\n\n\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // lheading\n\n\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startBlock) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this.options.extensions.startBlock.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n } // text\n\n\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n };\n\n _proto.inline = function inline(src, tokens) {\n this.inlineQueue.push({\n src: src,\n tokens: tokens\n });\n }\n /**\n * Lexing/Compiling\n */\n ;\n\n _proto.inlineTokens = function inlineTokens(src, tokens) {\n var _this2 = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n var token, lastToken, cutSrc; // String with links masked to avoid interference with em and strong\n\n var maskedSrc = src;\n var match;\n var keepPrevChar, prevChar; // Mask out reflinks\n\n if (this.tokens.links) {\n var links = Object.keys(this.tokens.links);\n\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n } // Mask out other blocks\n\n\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n } // Mask out escaped em & strong delimiters\n\n\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n\n keepPrevChar = false; // extensions\n\n if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this2\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // escape\n\n\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // tag\n\n\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // link\n\n\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // reflink, nolink\n\n\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // em & strong\n\n\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // code\n\n\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // br\n\n\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // del (gfm)\n\n\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // autolink\n\n\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // url (gfm)\n\n\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startInline) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this2.options.extensions.startInline.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.slice(-1) !== '_') {\n // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _createClass(Lexer, null, [{\n key: \"rules\",\n get: function get() {\n return {\n block: block,\n inline: inline\n };\n }\n }]);\n\n return Lexer;\n }();\n\n var defaults$2 = defaults$5.exports.defaults;\n var cleanUrl = helpers.cleanUrl,\n escape$1 = helpers.escape;\n /**\n * Renderer\n */\n\n var Renderer_1 = /*#__PURE__*/function () {\n function Renderer(options) {\n this.options = options || defaults$2;\n }\n\n var _proto = Renderer.prototype;\n\n _proto.code = function code(_code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n\n if (this.options.highlight) {\n var out = this.options.highlight(_code, lang);\n\n if (out != null && out !== _code) {\n escaped = true;\n _code = out;\n }\n }\n\n _code = _code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
' + (escaped ? _code : escape$1(_code, true)) + '
\\n';\n }\n\n return '
' + (escaped ? _code : escape$1(_code, true)) + '
\\n';\n };\n\n _proto.blockquote = function blockquote(quote) {\n return '
\\n' + quote + '
\\n';\n };\n\n _proto.html = function html(_html) {\n return _html;\n };\n\n _proto.heading = function heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return '' + text + '\\n';\n } // ignore IDs\n\n\n return '' + text + '\\n';\n };\n\n _proto.hr = function hr() {\n return this.options.xhtml ? '
\\n' : '
\\n';\n };\n\n _proto.list = function list(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n };\n\n _proto.listitem = function listitem(text) {\n return '
  • ' + text + '
  • \\n';\n };\n\n _proto.checkbox = function checkbox(checked) {\n return ' ';\n };\n\n _proto.paragraph = function paragraph(text) {\n return '

    ' + text + '

    \\n';\n };\n\n _proto.table = function table(header, body) {\n if (body) body = '' + body + '';\n return '\\n' + '\\n' + header + '\\n' + body + '
    \\n';\n };\n\n _proto.tablerow = function tablerow(content) {\n return '\\n' + content + '\\n';\n };\n\n _proto.tablecell = function tablecell(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align ? '<' + type + ' align=\"' + flags.align + '\">' : '<' + type + '>';\n return tag + content + '\\n';\n } // span level renderer\n ;\n\n _proto.strong = function strong(text) {\n return '' + text + '';\n };\n\n _proto.em = function em(text) {\n return '' + text + '';\n };\n\n _proto.codespan = function codespan(text) {\n return '' + text + '';\n };\n\n _proto.br = function br() {\n return this.options.xhtml ? '
    ' : '
    ';\n };\n\n _proto.del = function del(text) {\n return '' + text + '';\n };\n\n _proto.link = function link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '
    ';\n return out;\n };\n\n _proto.image = function image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '\"'' : '>';\n return out;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n return Renderer;\n }();\n\n /**\n * TextRenderer\n * returns only the textual part of the token\n */\n\n var TextRenderer_1 = /*#__PURE__*/function () {\n function TextRenderer() {}\n\n var _proto = TextRenderer.prototype;\n\n // no need for block level renderers\n _proto.strong = function strong(text) {\n return text;\n };\n\n _proto.em = function em(text) {\n return text;\n };\n\n _proto.codespan = function codespan(text) {\n return text;\n };\n\n _proto.del = function del(text) {\n return text;\n };\n\n _proto.html = function html(text) {\n return text;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n _proto.link = function link(href, title, text) {\n return '' + text;\n };\n\n _proto.image = function image(href, title, text) {\n return '' + text;\n };\n\n _proto.br = function br() {\n return '';\n };\n\n return TextRenderer;\n }();\n\n /**\n * Slugger generates header id\n */\n\n var Slugger_1 = /*#__PURE__*/function () {\n function Slugger() {\n this.seen = {};\n }\n\n var _proto = Slugger.prototype;\n\n _proto.serialize = function serialize(value) {\n return value.toLowerCase().trim() // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '') // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n }\n /**\n * Finds the next safe (unique) slug to use\n */\n ;\n\n _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {\n var slug = originalSlug;\n var occurenceAccumulator = 0;\n\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n\n return slug;\n }\n /**\n * Convert string to unique id\n * @param {object} options\n * @param {boolean} options.dryrun Generates the next unique slug without updating the internal accumulator.\n */\n ;\n\n _proto.slug = function slug(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n };\n\n return Slugger;\n }();\n\n var Renderer$1 = Renderer_1;\n var TextRenderer$1 = TextRenderer_1;\n var Slugger$1 = Slugger_1;\n var defaults$1 = defaults$5.exports.defaults;\n var unescape = helpers.unescape;\n /**\n * Parsing & Compiling\n */\n\n var Parser_1 = /*#__PURE__*/function () {\n function Parser(options) {\n this.options = options || defaults$1;\n this.options.renderer = this.options.renderer || new Renderer$1();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer$1();\n this.slugger = new Slugger$1();\n }\n /**\n * Static Parse Method\n */\n\n\n Parser.parse = function parse(tokens, options) {\n var parser = new Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n ;\n\n Parser.parseInline = function parseInline(tokens, options) {\n var parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n ;\n\n var _proto = Parser.prototype;\n\n _proto.parse = function parse(tokens, top) {\n if (top === void 0) {\n top = true;\n }\n\n var out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space':\n {\n continue;\n }\n\n case 'hr':\n {\n out += this.renderer.hr();\n continue;\n }\n\n case 'heading':\n {\n out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n\n case 'code':\n {\n out += this.renderer.code(token.text, token.lang, token.escaped);\n continue;\n }\n\n case 'table':\n {\n header = ''; // header\n\n cell = '';\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), {\n header: true,\n align: token.align[j]\n });\n }\n\n header += this.renderer.tablerow(cell);\n body = '';\n l2 = token.rows.length;\n\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n cell = '';\n l3 = row.length;\n\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {\n header: false,\n align: token.align[k]\n });\n }\n\n body += this.renderer.tablerow(cell);\n }\n\n out += this.renderer.table(header, body);\n continue;\n }\n\n case 'blockquote':\n {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n\n case 'list':\n {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n body = '';\n\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n itemBody = '';\n\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n\n case 'html':\n {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n\n case 'paragraph':\n {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n\n case 'text':\n {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n ;\n\n _proto.parseInline = function parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n var out = '',\n i,\n token,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape':\n {\n out += renderer.text(token.text);\n break;\n }\n\n case 'html':\n {\n out += renderer.html(token.text);\n break;\n }\n\n case 'link':\n {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'image':\n {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n\n case 'strong':\n {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'em':\n {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'codespan':\n {\n out += renderer.codespan(token.text);\n break;\n }\n\n case 'br':\n {\n out += renderer.br();\n break;\n }\n\n case 'del':\n {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'text':\n {\n out += renderer.text(token.text);\n break;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n };\n\n return Parser;\n }();\n\n var Lexer = Lexer_1;\n var Parser = Parser_1;\n var Tokenizer = Tokenizer_1;\n var Renderer = Renderer_1;\n var TextRenderer = TextRenderer_1;\n var Slugger = Slugger_1;\n var merge = helpers.merge,\n checkSanitizeDeprecation = helpers.checkSanitizeDeprecation,\n escape = helpers.escape;\n var getDefaults = defaults$5.exports.getDefaults,\n changeDefaults = defaults$5.exports.changeDefaults,\n defaults = defaults$5.exports.defaults;\n /**\n * Marked\n */\n\n function marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n if (callback) {\n var highlight = opt.highlight;\n var tokens;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n var done = function done(err) {\n var out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n return err ? callback(err) : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n if (!tokens.length) return done();\n var pending = 0;\n marked.walkTokens(tokens, function (token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(function () {\n highlight(token.text, token.lang, function (err, code) {\n if (err) {\n return done(err);\n }\n\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n try {\n var _tokens = Lexer.lex(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(_tokens, opt.walkTokens);\n }\n\n return Parser.parse(_tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n }\n /**\n * Options\n */\n\n\n marked.options = marked.setOptions = function (opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n };\n\n marked.getDefaults = getDefaults;\n marked.defaults = defaults;\n /**\n * Use Extension\n */\n\n marked.use = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var opts = merge.apply(void 0, [{}].concat(args));\n var extensions = marked.defaults.extensions || {\n renderers: {},\n childTokens: {}\n };\n var hasExtensions;\n args.forEach(function (pack) {\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n hasExtensions = true;\n pack.extensions.forEach(function (ext) {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n\n if (ext.renderer) {\n // Renderer extensions\n var prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;\n\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var ret = ext.renderer.apply(this, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n\n if (ext.tokenizer) {\n // Tokenizer Extensions\n if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n\n if (ext.start) {\n // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n\n if (ext.childTokens) {\n // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n } // ==-- Parse \"overwrite\" extensions --== //\n\n\n if (pack.renderer) {\n (function () {\n var renderer = marked.defaults.renderer || new Renderer();\n\n var _loop = function _loop(prop) {\n var prevRenderer = renderer[prop]; // Replace renderer with func to run extension, but fall back if false\n\n renderer[prop] = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var ret = pack.renderer[prop].apply(renderer, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.renderer) {\n _loop(prop);\n }\n\n opts.renderer = renderer;\n })();\n }\n\n if (pack.tokenizer) {\n (function () {\n var tokenizer = marked.defaults.tokenizer || new Tokenizer();\n\n var _loop2 = function _loop2(prop) {\n var prevTokenizer = tokenizer[prop]; // Replace tokenizer with func to run extension, but fall back if false\n\n tokenizer[prop] = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n var ret = pack.tokenizer[prop].apply(tokenizer, args);\n\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.tokenizer) {\n _loop2(prop);\n }\n\n opts.tokenizer = tokenizer;\n })();\n } // ==-- Parse WalkTokens extensions --== //\n\n\n if (pack.walkTokens) {\n var walkTokens = marked.defaults.walkTokens;\n\n opts.walkTokens = function (token) {\n pack.walkTokens.call(this, token);\n\n if (walkTokens) {\n walkTokens.call(this, token);\n }\n };\n }\n\n if (hasExtensions) {\n opts.extensions = extensions;\n }\n\n marked.setOptions(opts);\n });\n };\n /**\n * Run callback for every token\n */\n\n\n marked.walkTokens = function (tokens, callback) {\n var _loop3 = function _loop3() {\n var token = _step.value;\n callback.call(marked, token);\n\n switch (token.type) {\n case 'table':\n {\n for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {\n var cell = _step2.value;\n marked.walkTokens(cell.tokens, callback);\n }\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {\n var row = _step3.value;\n\n for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {\n var _cell = _step4.value;\n marked.walkTokens(_cell.tokens, callback);\n }\n }\n\n break;\n }\n\n case 'list':\n {\n marked.walkTokens(token.items, callback);\n break;\n }\n\n default:\n {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {\n // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {\n marked.walkTokens(token[childTokens], callback);\n });\n } else if (token.tokens) {\n marked.walkTokens(token.tokens, callback);\n }\n }\n }\n };\n\n for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n _loop3();\n }\n };\n /**\n * Parse Inline\n */\n\n\n marked.parseInline = function (src, opt) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked.parseInline(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked.parseInline(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n try {\n var tokens = Lexer.lexInline(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n return Parser.parseInline(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n };\n /**\n * Expose\n */\n\n\n marked.Parser = Parser;\n marked.parser = Parser.parse;\n marked.Renderer = Renderer;\n marked.TextRenderer = TextRenderer;\n marked.Lexer = Lexer;\n marked.lexer = Lexer.lex;\n marked.Tokenizer = Tokenizer;\n marked.Slugger = Slugger;\n marked.parse = marked;\n var marked_1 = marked;\n\n return marked_1;\n\n}));\n","\"use strict\";\n\n// ref: https://github.com/tc39/proposal-global\nvar getGlobal = function () {\n\t// the only reliable means to get the global object is\n\t// `Function('return this')()`\n\t// However, this causes CSP violations in Chrome apps.\n\tif (typeof self !== 'undefined') { return self; }\n\tif (typeof window !== 'undefined') { return window; }\n\tif (typeof global !== 'undefined') { return global; }\n\tthrow new Error('unable to locate global object');\n}\n\nvar globalObject = getGlobal();\n\nmodule.exports = exports = globalObject.fetch;\n\n// Needed for TypeScript and Webpack.\nif (globalObject.fetch) {\n\texports.default = globalObject.fetch.bind(globalObject);\n}\n\nexports.Headers = globalObject.Headers;\nexports.Request = globalObject.Request;\nexports.Response = globalObject.Response;\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar objectKeys = require('object-keys');\nvar hasSymbols = require('has-symbols/shams')();\nvar callBound = require('call-bind/callBound');\nvar toObject = Object;\nvar $push = callBound('Array.prototype.push');\nvar $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function assign(target, source1) {\n\tif (target == null) { throw new TypeError('target must be an object'); }\n\tvar to = toObject(target); // step 1\n\tif (arguments.length === 1) {\n\t\treturn to; // step 2\n\t}\n\tfor (var s = 1; s < arguments.length; ++s) {\n\t\tvar from = toObject(arguments[s]); // step 3.a.i\n\n\t\t// step 3.a.ii:\n\t\tvar keys = objectKeys(from);\n\t\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tvar syms = getSymbols(from);\n\t\t\tfor (var j = 0; j < syms.length; ++j) {\n\t\t\t\tvar key = syms[j];\n\t\t\t\tif ($propIsEnumerable(from, key)) {\n\t\t\t\t\t$push(keys, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// step 3.a.iii:\n\t\tfor (var i = 0; i < keys.length; ++i) {\n\t\t\tvar nextKey = keys[i];\n\t\t\tif ($propIsEnumerable(from, nextKey)) { // step 3.a.iii.2\n\t\t\t\tvar propValue = from[nextKey]; // step 3.a.iii.2.a\n\t\t\t\tto[nextKey] = propValue; // step 3.a.iii.2.b\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to; // step 4\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t/*\n\t * v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t * note: this does not detect the bug unless there's 20 characters\n\t */\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t/*\n\t * Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t * which is 72% slower than our shim, and Firefox 40's native implementation.\n\t */\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ProfileCore\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ProfileCore\"] = factory();\n\telse\n\t\troot[\"ProfileCore\"] = factory();\n})(this, () => {\nreturn ","import { Read } from './read';\nimport { ModuleDefault } from '../default';\nimport { ISetUp, account, IResponse, IList } from '@dto';\n\nexport class AccountModule extends ModuleDefault {\n private _read: Read;\n\n // Read\n public getAll: (merchantId: string, params?: account.IParamsGetAll) => Promise>>;\n\n constructor (setup: ISetUp) {\n super(setup);\n this._read = new Read(setup);\n\n this.getAll = this._read.getAll;\n }\n}\n","import { ModuleDefault } from '../default';\nimport { account, IList, IResponse } from '@dto';\n\nexport class Read extends ModuleDefault {\n public getAll (merchantId: string, params: account.IParamsGetAll = { page: 1, size: 30, type: 'production' }) {\n if (params.identifier) {\n const validDocument = /(^\\d{3}\\.\\d{3}\\.\\d{3}-\\d{2}$)|(^\\d{2}\\.\\d{3}\\.\\d{3}\\/\\d{4}-\\d{2}$)/;\n\n if (validDocument.test(params.identifier)) {\n const filteredTerm = params.identifier.replace(/[`.\\- <>{}[\\]\\\\/]/gi, '');\n params.identifier = filteredTerm;\n }\n }\n\n const queryParams = this.utils.paramSerializer(params);\n const url = `${this.setup.urlBase}/merchants/${merchantId}/accounts${queryParams}`;\n return this.request.get>>(url);\n }\n}\n","import { TApplication, cookies } from '@dto';\nimport { ModuleDefault } from '../default';\n\nexport class Delete extends ModuleDefault {\n public deleteCookies (app: TApplication, logout = false) {\n const path = '/';\n const dataUrl: { app: TApplication; path?: string; search?: string } = { app };\n\n if (!logout) {\n dataUrl.path = window.location.pathname;\n dataUrl.search = window.location.search;\n }\n\n this.cookie.set(cookies.EKey.redirect, dataUrl, path);\n\n this.local.clear();\n this.session.clear();\n\n this.cookie.remove(cookies.EKey.token, path);\n this.cookie.remove(cookies.EKey.refresh_token, path);\n\n return true;\n }\n}\n","import { ISetUp, TApplication, authorization, IResponse } from '@dto';\nimport { ModuleDefault } from '../default';\nimport { Read } from './read';\nimport { Delete } from './delete';\n\nexport class AuthorizationModule extends ModuleDefault {\n private _read: Read;\n private _delete: Delete;\n\n // Read\n public get: (params: authorization.ISession, application: TApplication, urlProfile: string) => Promise;\n\n // Delete\n public deleteCookies: (app: TApplication, logout?: boolean) => boolean;\n\n constructor (setup: ISetUp) {\n super(setup);\n this._read = new Read(setup);\n this._delete = new Delete(setup);\n\n this.get = this._read.get;\n this.deleteCookies = this._delete.deleteCookies;\n }\n}\n","import { IResponse, TApplication, authorization } from '@dto';\nimport { ModuleDefault } from '../default';\n\n\nexport class Read extends ModuleDefault {\n public async get (params: authorization.ISession, application: TApplication, urlProfile: string): Promise {\n let newParams: authorization.IParams = {};\n let session: authorization.ISession = {};\n const {ignoreCache, ...patternParams} = params\n\n if (application) {\n session = this.session.getJson(application);\n }\n\n const hasParams = Object.keys(patternParams).length;\n const hasAccInParams = patternParams?.account_id\n const hasSession = Object.keys(session).length;\n const isSameMerchantInParamsAndSession = patternParams?.merchant_id === session?.merchant_id;\n const isSessionBased = hasSession && isSameMerchantInParamsAndSession && !hasAccInParams\n\n if (isSessionBased) {\n const { merchant_id, account_id } = session;\n newParams = { merchants: merchant_id, accounts: account_id };\n } else if (hasParams) {\n const { merchant_id, account_id } = patternParams;\n newParams = { merchants: merchant_id, accounts: account_id };\n }\n\n this.session.clear();\n newParams = this.utils.clean(newParams);\n\n let queryParams = this.utils.paramSerializerURL(newParams);\n\n if (ignoreCache) {\n const ignoreCacheParam = this.utils.paramSerializer({ ignoreCache })\n queryParams+= ignoreCacheParam\n }\n\n const url = `${this.setup.urlBase}/authorization${queryParams}`;\n return this.request.get(url)\n .then((response) => {\n const isRoot = response.user.is_root;\n const isEmployee = response.user.is_employee;\n const isProfile = window.location.href.includes('profile');\n const isID = window.location.href.includes('id');\n const isLocalProfile = window.location.href.includes('910');\n const isLocalID = window.location.href.includes('900');\n\n if (response.merchant) {\n const toSession = {\n merchant_id: response.merchant.id,\n account_id: response.merchant.account.id\n };\n\n if (application) { this.session.setJson(application, toSession); }\n } else if (!isRoot && !isEmployee && !isProfile && !isID && !isLocalID &&!isLocalProfile) {\n window.location.assign(urlProfile);\n }\n\n return Promise.resolve(response);\n })\n .catch(err => Promise.reject(err));\n }\n}\n","import UtilsService from '@services/utils';\nimport CookieService from '@services/cookies';\nimport SessionService from '@services/session';\nimport LocalService from '@services/local';\nimport { IRequest, Settings, request } from 'support-lib';\nimport { ISetUp } from '@dto';\n\nexport class ModuleDefault {\n protected setup: ISetUp;\n protected cookie: CookieService;\n protected request: IRequest;\n protected utils: UtilsService;\n protected session: SessionService;\n protected local: LocalService;\n\n constructor (setup: ISetUp) {\n this.setup = setup;\n this.request = request;\n this.cookie = new CookieService(setup);\n this.session = new SessionService(setup);\n this.local = new LocalService(setup);\n this.utils = new UtilsService();\n Settings.setup(setup.theme, setup.domain, setup.environment);\n }\n}\n","import { ModuleDefault } from '../default';\n\nexport class Create extends ModuleDefault {\n public acceptAll (body = {}) {\n return this.request.post(`${this.setup.urlBase}/invites/accept/all`, body);\n }\n}\n","import { Read } from './read';\nimport { Update } from './update';\nimport { Create } from './create';\nimport { IList, IResponse, ISetUp, invite } from '@dto';\nimport { ModuleDefault } from '../default';\n\nexport class InviteModule extends ModuleDefault {\n private _read: Read;\n private _update: Update;\n private _create: Create;\n\n // Read\n public getMine: (params?: { page: number; size: number; }) => Promise>>;\n\n // Create\n public acceptAll: (body: any) => Promise;\n\n // Update\n public refuse: (inviteId: string) => Promise;\n public accept: (inviteId: string) => Promise;\n\n constructor (setup: ISetUp) {\n super(setup);\n this._read = new Read(setup);\n this._update = new Update(setup);\n this._create = new Create(setup);\n\n this.getMine = this._read.getMine;\n this.acceptAll = this._create.acceptAll;\n this.refuse = this._update.refuse;\n this.accept = this._update.accept;\n }\n}\n","import { IList, IResponse, invite } from '@dto';\nimport { ModuleDefault } from '../default';\n\nexport class Read extends ModuleDefault {\n public getMine (params = { page: 1, size: 10 }): Promise>> {\n const queryParams = this.utils.paramSerializer(params);\n return this.request.get>>(`${this.setup.urlBase}/invites${queryParams}`);\n }\n}\n","import { ModuleDefault } from '../default';\n\nexport class Update extends ModuleDefault {\n public accept (inviteId: string): Promise {\n return this.request.patch(`${this.setup.urlBase}/invites/${inviteId}/accept`, {});\n }\n\n public refuse (inviteId: string): Promise {\n return this.request.patch(`${this.setup.urlBase}/invites/${inviteId}/refuse`, {});\n }\n}\n","import { IResponse, cookies, me } from '@dto';\nimport { ModuleDefault } from '@modules/default';\n\nexport class Create extends ModuleDefault {\n public setPreferences (pref: cookies.IPref): boolean {\n this.cookie.set(cookies.EKey.preference, pref);\n return true;\n }\n\n public createUserMFA (body: me.IBodyCreateUserMFA): Promise> {\n return this.request.post>(`${this.setup.urlBase}/me/security/mfa`, body);\n }\n\n public getActiveUserMFA (body: me.IBodyGetActiveUserMFA): Promise> {\n return this.request.post>(`${this.setup.urlBase}/me/security/mfa/active`, body);\n }\n\n public sendUserMFA (body = {}) {\n return this.request.post(`${this.setup.urlBase}/me/security/mfa/send`, body);\n }\n}\n","import { me } from '@dto';\nimport { ModuleDefault } from '@modules/default';\n\nexport class Delete extends ModuleDefault {\n public deleteUserMFA (body: me.IBodyDeleteUserMFA) {\n return this.request.delete(`${this.setup.urlBase}/me/security/mfa`, body);\n }\n}\n","import { IResponse, ISetUp, cookies, me } from '@dto';\nimport { Read } from './read';\nimport { ModuleDefault } from '@modules/default';\nimport { Create } from './create';\nimport { Update } from './update';\nimport { Delete } from './delete';\n\nexport class MeModule extends ModuleDefault {\n private _read: Read;\n private _create: Create;\n private _update: Update;\n private _delete: Delete;\n\n // Read\n public get: () => Promise>;\n public getPreferences: () => cookies.IPref;\n public permissions: () => Promise>;\n public getDefaultPermission: () => Promise;\n public getUserMFA: () => Promise>;\n\n // Create\n public setPreferences: (pref: cookies.IPref) => boolean;\n public createUserMFA: (body: me.IBodyCreateUserMFA) => Promise>;\n public getActiveUserMFA: (body: me.IBodyGetActiveUserMFA) => Promise>;\n public sendUserMFA: (body: any) => Promise;\n\n // Update\n public update: (body: me.IProfile) => Promise>;\n public setDefault: (params: me.IParamsSetDefault, body: me.IBodySetDefault) => Promise;\n\n // Delete\n public deleteUserMFA: (body: me.IBodyDeleteUserMFA) => Promise;\n\n constructor (setup: ISetUp) {\n super(setup);\n this._read = new Read(setup);\n this._create = new Create(setup);\n this._update = new Update(setup);\n this._delete = new Delete(setup);\n\n this.get = this._read.get;\n this.getPreferences = this._read.getPreferences;\n this.permissions = this._read.permissions;\n this.getDefaultPermission = this._read.getDefaultPermission;\n this.getUserMFA = this._read.getUserMFA;\n\n this.setPreferences = this._create.setPreferences;\n this.createUserMFA = this._create.createUserMFA;\n this.getActiveUserMFA = this._create.getActiveUserMFA;\n this.sendUserMFA = this._create.sendUserMFA;\n\n this.deleteUserMFA = this._delete.deleteUserMFA;\n\n this.update = this._update.update;\n this.setDefault = this._update.setDefault;\n }\n}\n","import { IResponse, cookies, me } from '@dto';\nimport { ModuleDefault } from '../default';\n\nexport class Read extends ModuleDefault {\n public get (): Promise> {\n return this.request.get>(`${this.setup.urlBase}/me`);\n }\n\n public getPreferences (): cookies.IPref {\n let pref: cookies.IPref;\n\n const preferencesObj: cookies.IPref = {\n timezone: 'E. South America Standard Time',\n language: 'pt-BR',\n appearance: {\n theme:\n 'pagarme',\n mode: 'light'\n }\n };\n const preferencesCookie = this.cookie.get(cookies.EKey.preference);\n\n if (preferencesCookie) {\n if (!preferencesCookie.appearance) {\n preferencesCookie.appearance = preferencesObj.appearance;\n pref = Object.assign({}, preferencesCookie);\n this.cookie.set(cookies.EKey.preference, pref);\n } else {\n pref = Object.assign({}, preferencesCookie);\n }\n } else {\n pref = Object.assign({}, preferencesObj);\n this.cookie.set(cookies.EKey.preference, pref);\n }\n\n return pref;\n }\n\n public permissions (): Promise> {\n return this.request.get>(`${this.setup.urlBase}/me/permissions`);\n }\n\n public getDefaultPermission (): Promise {\n return this.request.get(`${this.setup.urlBase}/me/permissions`)\n .then((r) => {\n const allPermissions = [...r.merchants, ...r.companies]\n const permissionDefault: me.IDefaultPermission = allPermissions.find(permission => permission.is_default)\n return Promise.resolve(permissionDefault)\n });\n }\n\n public getUserMFA (): Promise> {\n return this.request.get>(`${this.setup.urlBase}/me/security/mfa`);\n }\n}\n","import { IResponse, me } from '@dto';\nimport { ModuleDefault } from '../default';\n\nexport class Update extends ModuleDefault {\n public update (body: me.IProfile): Promise> {\n return this.request.patch(`${this.setup.urlBase}/me`, body);\n }\n\n public setDefault (params: me.IParamsSetDefault, body: me.IBodySetDefault): Promise {\n const queryParams = this.utils.paramSerializerURL(params);\n return this.request.put(`${this.setup.urlBase}/me${queryParams}/set-default`, body);\n }\n}\n","import { ModuleDefault } from '../default';\nimport { IResponse, merchant } from '@dto';\n\nexport class Create extends ModuleDefault {\n public create (body: merchant.ICreate): Promise> {\n return this.request.post>(`${this.setup.urlBase}/merchants`, body);\n }\n}\n","import { Read } from './read';\nimport { Create } from './create';\nimport { ModuleDefault } from '../default';\nimport { IResponse, ISetUp, merchant } from '@dto';\n\nexport class MerchantModule extends ModuleDefault {\n private _read: Read;\n private _create: Create;\n\n // Read\n public getAll: (data: any) => any;\n\n // Create\n public create: (data: merchant.ICreate) => Promise>;\n\n constructor (setup: ISetUp) {\n super(setup);\n this._read = new Read(setup);\n this._create = new Create(setup);\n\n this.getAll = this._read.getAll;\n this.create = this._create.create;\n }\n}\n","import { ModuleDefault } from '../default';\n\nexport class Read extends ModuleDefault {\n public getAll (params = {}) {\n const queryParams = this.utils.paramSerializer(params);\n return this.request.get(`${this.setup.urlBase}/merchants${queryParams}`);\n }\n}\n","import { ModuleDefault } from '../default';\nimport { mfa, IResponse } from '@dto';\n\nexport class Create extends ModuleDefault {\n public resetMFaUser (email: string, body: mfa.IBodyResetMfa) {\n return this.request.post(`${this.setup.urlBase}/mfa/${email}/reset`, body)\n }\n\n public createUserMFA (email: string, body: mfa.IBodyCreateUserMFA): Promise> {\n return this.request.post>(`${this.setup.urlBase}/mfa/${email}`, body);\n }\n\n public getActiveUserMFA (email: string, body: mfa.IBodyGetActiveUserMFA): Promise> {\n return this.request.post>(`${this.setup.urlBase}/mfa/${email}/active`, body);\n }\n\n public sendUserMFA (email: string, body = {}) {\n return this.request.post(`${this.setup.urlBase}/mfa/${email}/send`, body);\n }\n}\n","import { Create } from './create';\nimport { Read } from './read';\nimport { ModuleDefault } from '../default';\nimport { IResponse, ISetUp, mfa } from '@dto';\n\nexport class MFAModule extends ModuleDefault {\n private _create: Create;\n private _read: Read;\n\n // Read\n public getUserMFA: (email: string) => Promise>;\n\n // Create\n public createUserMFA: (email: string, body: mfa.IBodyCreateUserMFA ) => Promise>;\n public getActiveUserMFA: (email: string, body: object ) => Promise>;\n public sendUserMFA: (email: string, body: mfa.IBodyResetMfa ) => Promise;\n public resetMFaUser: (email: string, body: mfa.IBodyResetMfa ) => Promise;\n\n constructor (setup: ISetUp) {\n super(setup);\n this._create = new Create(setup);\n this._read = new Read(setup);\n\n this.resetMFaUser = this._create.resetMFaUser;\n this.createUserMFA = this._create.createUserMFA;\n this.getActiveUserMFA = this._create.getActiveUserMFA;\n this.sendUserMFA = this._create.sendUserMFA;\n\n this.getUserMFA = this._read.getUserMFA;\n }\n}\n","import { IResponse, mfa } from '@dto';\nimport { ModuleDefault } from '../default';\n\nexport class Read extends ModuleDefault {\n public getUserMFA (email: string): Promise> {\n return this.request.get>(`${this.setup.urlBase}/mfa/${email}`);\n }\n}\n","import { ModuleDefault } from '@modules/default';\nimport { IResponse, ISetUp, TApplication } from '@dto';\nimport { Read } from './read';\nimport { Update } from './update';\n\nexport class OnboardingModule extends ModuleDefault {\n private _read: Read;\n private _update: Update;\n\n // Read\n get: (application: TApplication) => Promise>;\n\n // Update\n update: (application: TApplication, body: T) => Promise;\n\n constructor (setup: ISetUp) {\n super(setup);\n this._read = new Read(setup);\n this._update = new Update(setup);\n\n this.get = this._read.get;\n this.update = this._update.update;\n }\n}\n","import { TApplication, IResponse } from '@dto';\nimport { ModuleDefault } from '@modules/default';\n\nexport class Read extends ModuleDefault {\n public get (application: TApplication): Promise> {\n return this.request.get>(`${this.setup.urlBase}/onboarding/${application}`);\n }\n}\n","import { TApplication } from '@dto';\nimport { ModuleDefault } from '@modules/default';\n\nexport class Update extends ModuleDefault {\n public update (application: TApplication, body: T): Promise {\n return this.request.patch(`${this.setup.urlBase}/onboarding/${application}`, body);\n }\n}\n","import { Read } from './read';\nimport { ISetUp } from '@dto';\nimport { ModuleDefault } from '../default';\n\nexport class SupportModule extends ModuleDefault {\n private _read: Read;\n\n // Read\n public getInitials: (firstName: string, lastName: string) => string;\n\n constructor (setup: ISetUp) {\n super(setup);\n this._read = new Read(setup);\n\n this.getInitials = this._read.getInitials;\n }\n}\n","import { ModuleDefault } from '../default';\n\nexport class Read extends ModuleDefault {\n public getInitials (firstName: string, lastName: string): string {\n const nameSplit = lastName.split(' ');\n const lastNameSplit = nameSplit[nameSplit.length - 1];\n\n return `${firstName.charAt(0).toUpperCase()}${lastNameSplit.charAt(0).toUpperCase()}`;\n }\n}\n","import { TLanguage, TTheme, TThemeMode } from './index.dto';\n\nexport enum EKey {\n preference = 'mp_pref',\n redirect = 'mp_rd',\n token = 'mp_tk',\n refresh_token = 'mp_rt'\n}\nexport interface IPref {\n timezone: string;\n language: TLanguage;\n appearance: {\n theme: TTheme,\n mode: TThemeMode\n };\n}\n","export * as cookies from './cookie.dto';\nexport * as me from './me.dto';\nexport * as onboarding from './onboarding.dto';\nexport * as account from './account.dto';\nexport * as authorization from './authorization.dto';\nexport * as invite from './invite.dto';\nexport * as merchant from './merchant.dto';\nexport * as mfa from './mfa.dto'\n\nexport type TEnv = 'development' | 'staging' | 'production';\nexport type TTheme = 'pagarme' | 'jpmorgan';\nexport type TLanguage = 'pt-BR' | 'en-US';\nexport type TThemeMode = 'light' | 'dark' | 'default';\nexport type TGender = 'Other' | 'Male' | 'Female';\nexport type TRole = 'root' | 'manager' | 'developer' | 'analyst' | 'support' | 'observer' | 'controller' | 'owner' | 'admin';\nexport type TApplication = 'profile' | 'dash' | 'company' | 'shop' | 'finance' | 'hubdash' | 'onboarding' | 'backoffice';\nexport type TAccount = 'production' | 'test';\nexport type TBusinessModel = 'p_s_p' | 'gateway' | 'merchant_business_model' | 'gateway_and_psp';\nexport type TStatus = 'active' | 'inactive' | 'pending';\n\nexport interface IResponse {\n code: number;\n notifications?: any;\n is_valid: boolean;\n data: T;\n}\n\nexport interface IList {\n items: Array;\n pagination: {\n current_page: number;\n page_size: number;\n total_items: number;\n total_page: number;\n };\n}\n\nexport interface IData { environment: TEnv; theme: TTheme; }\n\nexport interface ISetUp {\n theme: TTheme;\n domain: EDomain;\n environment: TEnv;\n urlBase: EUrl;\n acronym: EAcronym;\n}\n\nexport enum EUrl {\n production = 'https://api.mundipagg.com/profile/v2',\n staging = 'https://stgapi.mundipagg.com/profile/v2',\n development = 'https://devapi.mundipagg.com/profile/v2'\n}\n\nexport type EDomain = '.mundipagg.com' | '.pagar.me'\n\nexport enum EAcronym {\n production = '',\n staging = 'stg_',\n development = 'dev_'\n}\n","import Cookies, { CookieAttributes } from 'js-cookie';\nimport { ISetUp, cookies } from '@dto';\nclass CookieService {\n private setup: ISetUp;\n\n constructor (setup: ISetUp) { this.setup = setup; }\n\n private save (key: cookies.EKey, data: any, att: CookieAttributes): void {\n Cookies.set(`${this.setup.acronym}${key}`, data, att);\n }\n\n public remove (key: cookies.EKey, path?: string) {\n Cookies.remove(`${this.setup.acronym}${key}`, { path, domain: this.setup.domain });\n }\n\n public get (key: cookies.EKey): T {\n const data = Cookies.get(`${this.setup.acronym}${key}`);\n return data ? JSON.parse(atob(data)) : data;\n }\n\n public set (key: cookies.EKey, data: any, path?: string) {\n this.save(key, btoa(JSON.stringify(data)), { domain: this.setup.domain, path });\n }\n}\n\nexport default CookieService;\n","import { ISetUp, TApplication } from '@dto';\n\nclass LocalService {\n private setup: ISetUp;\n\n constructor (setup: ISetUp) { this.setup = setup; }\n\n public has (key: TApplication): boolean {\n return key in localStorage;\n }\n\n public get (key: TApplication): string {\n return localStorage.getItem(`${this.setup.acronym}mp_${key}`);\n }\n\n public getJson (key: TApplication): T {\n const data = this.get(key);\n return data ? JSON.parse(atob(data)) : {};\n }\n\n public set (key: TApplication, value: string) {\n localStorage.setItem(`${this.setup.acronym}mp_${key}`, value);\n }\n\n public setJson (key: TApplication, value: any) {\n this.set(key, btoa(JSON.stringify(value)));\n }\n\n public remove (key: TApplication) {\n localStorage.removeItem(`${this.setup.acronym}mp_${key}`);\n }\n\n public clear () {\n localStorage.clear();\n }\n}\n\nexport default LocalService;\n","import { ISetUp, TApplication } from '@dto';\n\nclass SessionService {\n private setup: ISetUp;\n\n constructor (setup: ISetUp) { this.setup = setup; }\n\n get hasWindow (): boolean {\n return typeof window !== 'undefined';\n }\n\n public has (key: TApplication): boolean {\n return key in window.sessionStorage;\n }\n\n public get (key: TApplication): string {\n return this.hasWindow ? sessionStorage.getItem(`${this.setup.acronym}mp_${key}`) : '';\n }\n\n public getJson (key: TApplication): T {\n const data = this.get(key);\n return data ? JSON.parse(atob(data)) : {};\n }\n\n public set (key: TApplication, value: string): void {\n // tslint:disable-next-line\n !this.hasWindow || sessionStorage.setItem(`${this.setup.acronym}mp_${key}`, value);\n }\n\n public setJson (key: TApplication, value: any): void {\n // tslint:disable-next-line\n this.set(key, btoa(JSON.stringify(value)));\n }\n\n public remove (key: TApplication): void {\n // tslint:disable-next-line\n !this.hasWindow || sessionStorage.removeItem(`${this.setup.acronym}mp_${key}`);\n }\n\n public clear (): void {\n // tslint:disable-next-line\n !this.hasWindow || sessionStorage.clear();\n }\n}\n\nexport default SessionService;\n","class UtilsService {\n public paramSerializer (params: any = {}) {\n const queryParams = Object.entries(params) as string[][];\n let query: string;\n if (queryParams.length > 0) {\n query = `?${new URLSearchParams(queryParams)}`;\n }\n\n return query || '';\n }\n\n public paramSerializerURL (params = {}): string {\n let queryParams: any = Object.entries(params);\n if (queryParams.length > 0) {\n queryParams = queryParams.reduce((prev, actual, index) => {\n if (actual[0] === 'merchant_id' || actual[0] === 'merchantId') { actual[0] = 'merchants'; }\n if (actual[0] === 'account_id' || actual[0] === 'accountId') { actual[0] = 'accounts'; }\n return index === 0 ? prev + `${actual[0]}/${actual[1]}` : prev + `/${actual[0]}/${actual[1]}`;\n }, '/');\n }\n return queryParams;\n }\n\n public clean (obj: object): object {\n for (const propName in obj) {\n if (obj[propName] === null || obj[propName] === undefined) {\n delete obj[propName];\n }\n }\n return obj;\n }\n}\n\nexport default UtilsService;\n","module.exports = require(\"js-cookie\");","module.exports = require(\"support-lib\");","module.exports = require(\"tslib\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","import { MeModule } from '@modules/me';\nimport { MFAModule } from '@modules/mfa';\nimport { OnboardingModule } from '@modules/onboarding';\nimport { AccountModule } from '@modules/account';\nimport { AuthorizationModule } from '@modules/authorization';\nimport { InviteModule } from '@modules/invite';\nimport { SupportModule } from '@modules/support';\nimport { MerchantModule } from '@modules/merchant';\nimport { EAcronym, EDomain, EUrl, IData, ISetUp, TEnv, TTheme } from '@dto';\n\nexport class ProfileCore {\n private _env: TEnv;\n private _theme: TTheme;\n\n public me: MeModule;\n public mfa: MFAModule;\n public onboarding: OnboardingModule;\n public account: AccountModule;\n public authorization: AuthorizationModule;\n public invite: InviteModule;\n public support: SupportModule;\n public merchant: MerchantModule;\n\n constructor (data: IData = { environment: 'production', theme: 'pagarme' }) {\n this._env = data.environment;\n this._theme = data.theme;\n\n this.me = new MeModule(this.setup);\n this.mfa = new MFAModule(this.setup);\n this.onboarding = new OnboardingModule(this.setup);\n this.account = new AccountModule(this.setup);\n this.authorization = new AuthorizationModule(this.setup);\n this.invite = new InviteModule(this.setup);\n this.support = new SupportModule(this.setup);\n this.merchant = new MerchantModule(this.setup);\n }\n\n private get setup (): ISetUp {\n return {\n theme: this._theme,\n domain: this.domain,\n environment: this._env,\n urlBase: this.urlBase,\n acronym: this.acronym\n };\n }\n\n public get urlBase (): EUrl {\n return EUrl[this._env];\n }\n\n public get domain (): EDomain {\n const [hostname] = window.location.hostname.match(/(\\.pagar\\.me|\\.mundipagg\\.com)/g) || ['.pagar.me']\n return hostname as EDomain\n }\n\n public get acronym (): EAcronym {\n return EAcronym[this._env];\n }\n}\n","// Register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\nvar isLocalhost = function () { return Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n); }\n\nvar waitWindowLoad\n// https://github.com/yyx990803/register-service-worker/pull/33#discussion_r394181861\nif (typeof window !== 'undefined') {\n // Typically, a browser that supports `serviceWorker` should also have supported\n // `Promise`. But as this package can be used in environments without service\n // worker support (in that case it would do nothing), there's a chance that\n // `Promise` does not exist. So we must check for its existence first.\n if (typeof Promise !== 'undefined') {\n waitWindowLoad = new Promise(function (resolve) { return window.addEventListener('load', resolve); })\n } else {\n waitWindowLoad = { then: function (cb) { return window.addEventListener('load', cb); } }\n }\n}\n\nexport function register (swUrl, hooks) {\n if ( hooks === void 0 ) hooks = {};\n\n var registrationOptions = hooks.registrationOptions; if ( registrationOptions === void 0 ) registrationOptions = {};\n delete hooks.registrationOptions\n\n var emit = function (hook) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n if (hooks && hooks[hook]) {\n hooks[hook].apply(hooks, args)\n }\n }\n\n if ('serviceWorker' in navigator) {\n waitWindowLoad.then(function () {\n if (isLocalhost()) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, emit, registrationOptions)\n navigator.serviceWorker.ready.then(function (registration) {\n emit('ready', registration)\n }).catch(function (error) { return handleError(emit, error); })\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl, emit, registrationOptions)\n navigator.serviceWorker.ready.then(function (registration) {\n emit('ready', registration)\n }).catch(function (error) { return handleError(emit, error); })\n }\n })\n }\n}\n\nfunction handleError (emit, error) {\n if (!navigator.onLine) {\n emit('offline')\n }\n emit('error', error)\n}\n\nfunction registerValidSW (swUrl, emit, registrationOptions) {\n navigator.serviceWorker\n .register(swUrl, registrationOptions)\n .then(function (registration) {\n emit('registered', registration)\n if (registration.waiting) {\n emit('updated', registration)\n return\n }\n registration.onupdatefound = function () {\n emit('updatefound', registration)\n var installingWorker = registration.installing\n installingWorker.onstatechange = function () {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n emit('updated', registration)\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n emit('cached', registration)\n }\n }\n }\n }\n })\n .catch(function (error) { return handleError(emit, error); })\n}\n\nfunction checkValidServiceWorker (swUrl, emit, registrationOptions) {\n // Check if the service worker can be found.\n fetch(swUrl)\n .then(function (response) {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (response.status === 404) {\n // No service worker found.\n emit('error', new Error((\"Service worker not found at \" + swUrl)))\n unregister()\n } else if (response.headers.get('content-type').indexOf('javascript') === -1) {\n emit('error', new Error(\n \"Expected \" + swUrl + \" to have javascript content-type, \" +\n \"but received \" + (response.headers.get('content-type'))))\n unregister()\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, emit, registrationOptions)\n }\n })\n .catch(function (error) { return handleError(emit, error); })\n}\n\nexport function unregister () {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(function (registration) {\n registration.unregister()\n }).catch(function (error) { return handleError(emit, error); })\n }\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $floor = GetIntrinsic('%Math.floor%');\n\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(fn, 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(fn, 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\nvar CodeMirror = require(\"codemirror\");\n\nCodeMirror.commands.tabAndIndentMarkdownList = function (cm) {\n\tvar ranges = cm.listSelections();\n\tvar pos = ranges[0].head;\n\tvar eolState = cm.getStateAfter(pos.line);\n\tvar inList = eolState.list !== false;\n\n\tif (inList) {\n\t\tcm.execCommand(\"indentMore\");\n\t\treturn;\n\t}\n\n\tif (cm.options.indentWithTabs) {\n\t\tcm.execCommand(\"insertTab\");\n\t}\n\telse {\n\t\tvar spaces = Array(cm.options.tabSize + 1).join(\" \");\n\t\tcm.replaceSelection(spaces);\n\t}\n};\n\nCodeMirror.commands.shiftTabAndUnindentMarkdownList = function (cm) {\n\tvar ranges = cm.listSelections();\n\tvar pos = ranges[0].head;\n\tvar eolState = cm.getStateAfter(pos.line);\n\tvar inList = eolState.list !== false;\n\n\tif (inList) {\n\t\tcm.execCommand(\"indentLess\");\n\t\treturn;\n\t}\n\n\tif (cm.options.indentWithTabs) {\n\t\tcm.execCommand(\"insertTab\");\n\t}\n\telse {\n\t\tvar spaces = Array(cm.options.tabSize + 1).join(\" \");\n\t\tcm.replaceSelection(spaces);\n\t}\n};\n","/*global require,module*/\n\"use strict\";\nvar CodeMirror = require(\"codemirror\");\nrequire(\"codemirror/addon/edit/continuelist.js\");\nrequire(\"./codemirror/tablist\");\nrequire(\"codemirror/addon/display/fullscreen.js\");\nrequire(\"codemirror/mode/markdown/markdown.js\");\nrequire(\"codemirror/addon/mode/overlay.js\");\nrequire(\"codemirror/addon/display/placeholder.js\");\nrequire(\"codemirror/addon/selection/mark-selection.js\");\nrequire(\"codemirror/mode/gfm/gfm.js\");\nrequire(\"codemirror/mode/xml/xml.js\");\nvar CodeMirrorSpellChecker = require(\"codemirror-spell-checker\");\nvar marked = require(\"marked\");\n\n\n// Some variables\nvar isMac = /Mac/.test(navigator.platform);\n\n// Mapping of actions that can be bound to keyboard shortcuts or toolbar buttons\nvar bindings = {\n\t\"toggleBold\": toggleBold,\n\t\"toggleItalic\": toggleItalic,\n\t\"drawLink\": drawLink,\n\t\"toggleHeadingSmaller\": toggleHeadingSmaller,\n\t\"toggleHeadingBigger\": toggleHeadingBigger,\n\t\"drawImage\": drawImage,\n\t\"toggleBlockquote\": toggleBlockquote,\n\t\"toggleOrderedList\": toggleOrderedList,\n\t\"toggleUnorderedList\": toggleUnorderedList,\n\t\"toggleCodeBlock\": toggleCodeBlock,\n\t\"togglePreview\": togglePreview,\n\t\"toggleStrikethrough\": toggleStrikethrough,\n\t\"toggleHeading1\": toggleHeading1,\n\t\"toggleHeading2\": toggleHeading2,\n\t\"toggleHeading3\": toggleHeading3,\n\t\"cleanBlock\": cleanBlock,\n\t\"drawTable\": drawTable,\n\t\"drawHorizontalRule\": drawHorizontalRule,\n\t\"undo\": undo,\n\t\"redo\": redo,\n\t\"toggleSideBySide\": toggleSideBySide,\n\t\"toggleFullScreen\": toggleFullScreen\n};\n\nvar shortcuts = {\n\t\"toggleBold\": \"Cmd-B\",\n\t\"toggleItalic\": \"Cmd-I\",\n\t\"drawLink\": \"Cmd-K\",\n\t\"toggleHeadingSmaller\": \"Cmd-H\",\n\t\"toggleHeadingBigger\": \"Shift-Cmd-H\",\n\t\"cleanBlock\": \"Cmd-E\",\n\t\"drawImage\": \"Cmd-Alt-I\",\n\t\"toggleBlockquote\": \"Cmd-'\",\n\t\"toggleOrderedList\": \"Cmd-Alt-L\",\n\t\"toggleUnorderedList\": \"Cmd-L\",\n\t\"toggleCodeBlock\": \"Cmd-Alt-C\",\n\t\"togglePreview\": \"Cmd-P\",\n\t\"toggleSideBySide\": \"F9\",\n\t\"toggleFullScreen\": \"F11\"\n};\n\nvar getBindingName = function(f) {\n\tfor(var key in bindings) {\n\t\tif(bindings[key] === f) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn null;\n};\n\nvar isMobile = function() {\n\tvar check = false;\n\t(function(a) {\n\t\tif(/(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|android|ipad|playbook|silk/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;\n\t})(navigator.userAgent || navigator.vendor || window.opera);\n\treturn check;\n};\n\n\n/**\n * Fix shortcut. Mac use Command, others use Ctrl.\n */\nfunction fixShortcut(name) {\n\tif(isMac) {\n\t\tname = name.replace(\"Ctrl\", \"Cmd\");\n\t} else {\n\t\tname = name.replace(\"Cmd\", \"Ctrl\");\n\t}\n\treturn name;\n}\n\n\n/**\n * Create icon element for toolbar.\n */\nfunction createIcon(options, enableTooltips, shortcuts) {\n\toptions = options || {};\n\tvar el = document.createElement(\"a\");\n\tenableTooltips = (enableTooltips == undefined) ? true : enableTooltips;\n\n\tif(options.title && enableTooltips) {\n\t\tel.title = createTootlip(options.title, options.action, shortcuts);\n\n\t\tif(isMac) {\n\t\t\tel.title = el.title.replace(\"Ctrl\", \"⌘\");\n\t\t\tel.title = el.title.replace(\"Alt\", \"⌥\");\n\t\t}\n\t}\n\n\tel.tabIndex = -1;\n\tel.className = options.className;\n\treturn el;\n}\n\nfunction createSep() {\n\tvar el = document.createElement(\"i\");\n\tel.className = \"separator\";\n\tel.innerHTML = \"|\";\n\treturn el;\n}\n\nfunction createTootlip(title, action, shortcuts) {\n\tvar actionName;\n\tvar tooltip = title;\n\n\tif(action) {\n\t\tactionName = getBindingName(action);\n\t\tif(shortcuts[actionName]) {\n\t\t\ttooltip += \" (\" + fixShortcut(shortcuts[actionName]) + \")\";\n\t\t}\n\t}\n\n\treturn tooltip;\n}\n\n/**\n * The state of CodeMirror at the given position.\n */\nfunction getState(cm, pos) {\n\tpos = pos || cm.getCursor(\"start\");\n\tvar stat = cm.getTokenAt(pos);\n\tif(!stat.type) return {};\n\n\tvar types = stat.type.split(\" \");\n\n\tvar ret = {},\n\t\tdata, text;\n\tfor(var i = 0; i < types.length; i++) {\n\t\tdata = types[i];\n\t\tif(data === \"strong\") {\n\t\t\tret.bold = true;\n\t\t} else if(data === \"variable-2\") {\n\t\t\ttext = cm.getLine(pos.line);\n\t\t\tif(/^\\s*\\d+\\.\\s/.test(text)) {\n\t\t\t\tret[\"ordered-list\"] = true;\n\t\t\t} else {\n\t\t\t\tret[\"unordered-list\"] = true;\n\t\t\t}\n\t\t} else if(data === \"atom\") {\n\t\t\tret.quote = true;\n\t\t} else if(data === \"em\") {\n\t\t\tret.italic = true;\n\t\t} else if(data === \"quote\") {\n\t\t\tret.quote = true;\n\t\t} else if(data === \"strikethrough\") {\n\t\t\tret.strikethrough = true;\n\t\t} else if(data === \"comment\") {\n\t\t\tret.code = true;\n\t\t} else if(data === \"link\") {\n\t\t\tret.link = true;\n\t\t} else if(data === \"tag\") {\n\t\t\tret.image = true;\n\t\t} else if(data.match(/^header(\\-[1-6])?$/)) {\n\t\t\tret[data.replace(\"header\", \"heading\")] = true;\n\t\t}\n\t}\n\treturn ret;\n}\n\n\n// Saved overflow setting\nvar saved_overflow = \"\";\n\n/**\n * Toggle full screen of the editor.\n */\nfunction toggleFullScreen(editor) {\n\t// Set fullscreen\n\tvar cm = editor.codemirror;\n\tcm.setOption(\"fullScreen\", !cm.getOption(\"fullScreen\"));\n\n\n\t// Prevent scrolling on body during fullscreen active\n\tif(cm.getOption(\"fullScreen\")) {\n\t\tsaved_overflow = document.body.style.overflow;\n\t\tdocument.body.style.overflow = \"hidden\";\n\t} else {\n\t\tdocument.body.style.overflow = saved_overflow;\n\t}\n\n\n\t// Update toolbar class\n\tvar wrap = cm.getWrapperElement();\n\n\tif(!/fullscreen/.test(wrap.previousSibling.className)) {\n\t\twrap.previousSibling.className += \" fullscreen\";\n\t} else {\n\t\twrap.previousSibling.className = wrap.previousSibling.className.replace(/\\s*fullscreen\\b/, \"\");\n\t}\n\n\n\t// Update toolbar button\n\tvar toolbarButton = editor.toolbarElements.fullscreen;\n\n\tif(!/active/.test(toolbarButton.className)) {\n\t\ttoolbarButton.className += \" active\";\n\t} else {\n\t\ttoolbarButton.className = toolbarButton.className.replace(/\\s*active\\s*/g, \"\");\n\t}\n\n\n\t// Hide side by side if needed\n\tvar sidebyside = cm.getWrapperElement().nextSibling;\n\tif(/editor-preview-active-side/.test(sidebyside.className))\n\t\ttoggleSideBySide(editor);\n}\n\n\n/**\n * Action for toggling bold.\n */\nfunction toggleBold(editor) {\n\t_toggleBlock(editor, \"bold\", editor.options.blockStyles.bold);\n}\n\n\n/**\n * Action for toggling italic.\n */\nfunction toggleItalic(editor) {\n\t_toggleBlock(editor, \"italic\", editor.options.blockStyles.italic);\n}\n\n\n/**\n * Action for toggling strikethrough.\n */\nfunction toggleStrikethrough(editor) {\n\t_toggleBlock(editor, \"strikethrough\", \"~~\");\n}\n\n/**\n * Action for toggling code block.\n */\nfunction toggleCodeBlock(editor) {\n\tvar fenceCharsToInsert = editor.options.blockStyles.code;\n\n\tfunction fencing_line(line) {\n\t\t/* return true, if this is a ``` or ~~~ line */\n\t\tif(typeof line !== \"object\") {\n\t\t\tthrow \"fencing_line() takes a 'line' object (not a line number, or line text). Got: \" + typeof line + \": \" + line;\n\t\t}\n\t\treturn line.styles && line.styles[2] && line.styles[2].indexOf(\"formatting-code-block\") !== -1;\n\t}\n\n\tfunction token_state(token) {\n\t\t// base goes an extra level deep when mode backdrops are used, e.g. spellchecker on\n\t\treturn token.state.base.base || token.state.base;\n\t}\n\n\tfunction code_type(cm, line_num, line, firstTok, lastTok) {\n\t\t/*\n\t\t * Return \"single\", \"indented\", \"fenced\" or false\n\t\t *\n\t\t * cm and line_num are required. Others are optional for efficiency\n\t\t * To check in the middle of a line, pass in firstTok yourself.\n\t\t */\n\t\tline = line || cm.getLineHandle(line_num);\n\t\tfirstTok = firstTok || cm.getTokenAt({\n\t\t\tline: line_num,\n\t\t\tch: 1\n\t\t});\n\t\tlastTok = lastTok || (!!line.text && cm.getTokenAt({\n\t\t\tline: line_num,\n\t\t\tch: line.text.length - 1\n\t\t}));\n\t\tvar types = firstTok.type ? firstTok.type.split(\" \") : [];\n\t\tif(lastTok && token_state(lastTok).indentedCode) {\n\t\t\t// have to check last char, since first chars of first line aren\"t marked as indented\n\t\t\treturn \"indented\";\n\t\t} else if(types.indexOf(\"comment\") === -1) {\n\t\t\t// has to be after \"indented\" check, since first chars of first indented line aren\"t marked as such\n\t\t\treturn false;\n\t\t} else if(token_state(firstTok).fencedChars || token_state(lastTok).fencedChars || fencing_line(line)) {\n\t\t\treturn \"fenced\";\n\t\t} else {\n\t\t\treturn \"single\";\n\t\t}\n\t}\n\n\tfunction insertFencingAtSelection(cm, cur_start, cur_end, fenceCharsToInsert) {\n\t\tvar start_line_sel = cur_start.line + 1,\n\t\t\tend_line_sel = cur_end.line + 1,\n\t\t\tsel_multi = cur_start.line !== cur_end.line,\n\t\t\trepl_start = fenceCharsToInsert + \"\\n\",\n\t\t\trepl_end = \"\\n\" + fenceCharsToInsert;\n\t\tif(sel_multi) {\n\t\t\tend_line_sel++;\n\t\t}\n\t\t// handle last char including \\n or not\n\t\tif(sel_multi && cur_end.ch === 0) {\n\t\t\trepl_end = fenceCharsToInsert + \"\\n\";\n\t\t\tend_line_sel--;\n\t\t}\n\t\t_replaceSelection(cm, false, [repl_start, repl_end]);\n\t\tcm.setSelection({\n\t\t\tline: start_line_sel,\n\t\t\tch: 0\n\t\t}, {\n\t\t\tline: end_line_sel,\n\t\t\tch: 0\n\t\t});\n\t}\n\n\tvar cm = editor.codemirror,\n\t\tcur_start = cm.getCursor(\"start\"),\n\t\tcur_end = cm.getCursor(\"end\"),\n\t\ttok = cm.getTokenAt({\n\t\t\tline: cur_start.line,\n\t\t\tch: cur_start.ch || 1\n\t\t}), // avoid ch 0 which is a cursor pos but not token\n\t\tline = cm.getLineHandle(cur_start.line),\n\t\tis_code = code_type(cm, cur_start.line, line, tok);\n\tvar block_start, block_end, lineCount;\n\n\tif(is_code === \"single\") {\n\t\t// similar to some SimpleMDE _toggleBlock logic\n\t\tvar start = line.text.slice(0, cur_start.ch).replace(\"`\", \"\"),\n\t\t\tend = line.text.slice(cur_start.ch).replace(\"`\", \"\");\n\t\tcm.replaceRange(start + end, {\n\t\t\tline: cur_start.line,\n\t\t\tch: 0\n\t\t}, {\n\t\t\tline: cur_start.line,\n\t\t\tch: 99999999999999\n\t\t});\n\t\tcur_start.ch--;\n\t\tif(cur_start !== cur_end) {\n\t\t\tcur_end.ch--;\n\t\t}\n\t\tcm.setSelection(cur_start, cur_end);\n\t\tcm.focus();\n\t} else if(is_code === \"fenced\") {\n\t\tif(cur_start.line !== cur_end.line || cur_start.ch !== cur_end.ch) {\n\t\t\t// use selection\n\n\t\t\t// find the fenced line so we know what type it is (tilde, backticks, number of them)\n\t\t\tfor(block_start = cur_start.line; block_start >= 0; block_start--) {\n\t\t\t\tline = cm.getLineHandle(block_start);\n\t\t\t\tif(fencing_line(line)) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar fencedTok = cm.getTokenAt({\n\t\t\t\tline: block_start,\n\t\t\t\tch: 1\n\t\t\t});\n\t\t\tvar fence_chars = token_state(fencedTok).fencedChars;\n\t\t\tvar start_text, start_line;\n\t\t\tvar end_text, end_line;\n\t\t\t// check for selection going up against fenced lines, in which case we don't want to add more fencing\n\t\t\tif(fencing_line(cm.getLineHandle(cur_start.line))) {\n\t\t\t\tstart_text = \"\";\n\t\t\t\tstart_line = cur_start.line;\n\t\t\t} else if(fencing_line(cm.getLineHandle(cur_start.line - 1))) {\n\t\t\t\tstart_text = \"\";\n\t\t\t\tstart_line = cur_start.line - 1;\n\t\t\t} else {\n\t\t\t\tstart_text = fence_chars + \"\\n\";\n\t\t\t\tstart_line = cur_start.line;\n\t\t\t}\n\t\t\tif(fencing_line(cm.getLineHandle(cur_end.line))) {\n\t\t\t\tend_text = \"\";\n\t\t\t\tend_line = cur_end.line;\n\t\t\t\tif(cur_end.ch === 0) {\n\t\t\t\t\tend_line += 1;\n\t\t\t\t}\n\t\t\t} else if(cur_end.ch !== 0 && fencing_line(cm.getLineHandle(cur_end.line + 1))) {\n\t\t\t\tend_text = \"\";\n\t\t\t\tend_line = cur_end.line + 1;\n\t\t\t} else {\n\t\t\t\tend_text = fence_chars + \"\\n\";\n\t\t\t\tend_line = cur_end.line + 1;\n\t\t\t}\n\t\t\tif(cur_end.ch === 0) {\n\t\t\t\t// full last line selected, putting cursor at beginning of next\n\t\t\t\tend_line -= 1;\n\t\t\t}\n\t\t\tcm.operation(function() {\n\t\t\t\t// end line first, so that line numbers don't change\n\t\t\t\tcm.replaceRange(end_text, {\n\t\t\t\t\tline: end_line,\n\t\t\t\t\tch: 0\n\t\t\t\t}, {\n\t\t\t\t\tline: end_line + (end_text ? 0 : 1),\n\t\t\t\t\tch: 0\n\t\t\t\t});\n\t\t\t\tcm.replaceRange(start_text, {\n\t\t\t\t\tline: start_line,\n\t\t\t\t\tch: 0\n\t\t\t\t}, {\n\t\t\t\t\tline: start_line + (start_text ? 0 : 1),\n\t\t\t\t\tch: 0\n\t\t\t\t});\n\t\t\t});\n\t\t\tcm.setSelection({\n\t\t\t\tline: start_line + (start_text ? 1 : 0),\n\t\t\t\tch: 0\n\t\t\t}, {\n\t\t\t\tline: end_line + (start_text ? 1 : -1),\n\t\t\t\tch: 0\n\t\t\t});\n\t\t\tcm.focus();\n\t\t} else {\n\t\t\t// no selection, search for ends of this fenced block\n\t\t\tvar search_from = cur_start.line;\n\t\t\tif(fencing_line(cm.getLineHandle(cur_start.line))) { // gets a little tricky if cursor is right on a fenced line\n\t\t\t\tif(code_type(cm, cur_start.line + 1) === \"fenced\") {\n\t\t\t\t\tblock_start = cur_start.line;\n\t\t\t\t\tsearch_from = cur_start.line + 1; // for searching for \"end\"\n\t\t\t\t} else {\n\t\t\t\t\tblock_end = cur_start.line;\n\t\t\t\t\tsearch_from = cur_start.line - 1; // for searching for \"start\"\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(block_start === undefined) {\n\t\t\t\tfor(block_start = search_from; block_start >= 0; block_start--) {\n\t\t\t\t\tline = cm.getLineHandle(block_start);\n\t\t\t\t\tif(fencing_line(line)) {\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\tif(block_end === undefined) {\n\t\t\t\tlineCount = cm.lineCount();\n\t\t\t\tfor(block_end = search_from; block_end < lineCount; block_end++) {\n\t\t\t\t\tline = cm.getLineHandle(block_end);\n\t\t\t\t\tif(fencing_line(line)) {\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\tcm.operation(function() {\n\t\t\t\tcm.replaceRange(\"\", {\n\t\t\t\t\tline: block_start,\n\t\t\t\t\tch: 0\n\t\t\t\t}, {\n\t\t\t\t\tline: block_start + 1,\n\t\t\t\t\tch: 0\n\t\t\t\t});\n\t\t\t\tcm.replaceRange(\"\", {\n\t\t\t\t\tline: block_end - 1,\n\t\t\t\t\tch: 0\n\t\t\t\t}, {\n\t\t\t\t\tline: block_end,\n\t\t\t\t\tch: 0\n\t\t\t\t});\n\t\t\t});\n\t\t\tcm.focus();\n\t\t}\n\t} else if(is_code === \"indented\") {\n\t\tif(cur_start.line !== cur_end.line || cur_start.ch !== cur_end.ch) {\n\t\t\t// use selection\n\t\t\tblock_start = cur_start.line;\n\t\t\tblock_end = cur_end.line;\n\t\t\tif(cur_end.ch === 0) {\n\t\t\t\tblock_end--;\n\t\t\t}\n\t\t} else {\n\t\t\t// no selection, search for ends of this indented block\n\t\t\tfor(block_start = cur_start.line; block_start >= 0; block_start--) {\n\t\t\t\tline = cm.getLineHandle(block_start);\n\t\t\t\tif(line.text.match(/^\\s*$/)) {\n\t\t\t\t\t// empty or all whitespace - keep going\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tif(code_type(cm, block_start, line) !== \"indented\") {\n\t\t\t\t\t\tblock_start += 1;\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\tlineCount = cm.lineCount();\n\t\t\tfor(block_end = cur_start.line; block_end < lineCount; block_end++) {\n\t\t\t\tline = cm.getLineHandle(block_end);\n\t\t\t\tif(line.text.match(/^\\s*$/)) {\n\t\t\t\t\t// empty or all whitespace - keep going\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tif(code_type(cm, block_end, line) !== \"indented\") {\n\t\t\t\t\t\tblock_end -= 1;\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\t\t// if we are going to un-indent based on a selected set of lines, and the next line is indented too, we need to\n\t\t// insert a blank line so that the next line(s) continue to be indented code\n\t\tvar next_line = cm.getLineHandle(block_end + 1),\n\t\t\tnext_line_last_tok = next_line && cm.getTokenAt({\n\t\t\t\tline: block_end + 1,\n\t\t\t\tch: next_line.text.length - 1\n\t\t\t}),\n\t\t\tnext_line_indented = next_line_last_tok && token_state(next_line_last_tok).indentedCode;\n\t\tif(next_line_indented) {\n\t\t\tcm.replaceRange(\"\\n\", {\n\t\t\t\tline: block_end + 1,\n\t\t\t\tch: 0\n\t\t\t});\n\t\t}\n\n\t\tfor(var i = block_start; i <= block_end; i++) {\n\t\t\tcm.indentLine(i, \"subtract\"); // TODO: this doesn't get tracked in the history, so can't be undone :(\n\t\t}\n\t\tcm.focus();\n\t} else {\n\t\t// insert code formatting\n\t\tvar no_sel_and_starting_of_line = (cur_start.line === cur_end.line && cur_start.ch === cur_end.ch && cur_start.ch === 0);\n\t\tvar sel_multi = cur_start.line !== cur_end.line;\n\t\tif(no_sel_and_starting_of_line || sel_multi) {\n\t\t\tinsertFencingAtSelection(cm, cur_start, cur_end, fenceCharsToInsert);\n\t\t} else {\n\t\t\t_replaceSelection(cm, false, [\"`\", \"`\"]);\n\t\t}\n\t}\n}\n\n/**\n * Action for toggling blockquote.\n */\nfunction toggleBlockquote(editor) {\n\tvar cm = editor.codemirror;\n\t_toggleLine(cm, \"quote\");\n}\n\n/**\n * Action for toggling heading size: normal -> h1 -> h2 -> h3 -> h4 -> h5 -> h6 -> normal\n */\nfunction toggleHeadingSmaller(editor) {\n\tvar cm = editor.codemirror;\n\t_toggleHeading(cm, \"smaller\");\n}\n\n/**\n * Action for toggling heading size: normal -> h6 -> h5 -> h4 -> h3 -> h2 -> h1 -> normal\n */\nfunction toggleHeadingBigger(editor) {\n\tvar cm = editor.codemirror;\n\t_toggleHeading(cm, \"bigger\");\n}\n\n/**\n * Action for toggling heading size 1\n */\nfunction toggleHeading1(editor) {\n\tvar cm = editor.codemirror;\n\t_toggleHeading(cm, undefined, 1);\n}\n\n/**\n * Action for toggling heading size 2\n */\nfunction toggleHeading2(editor) {\n\tvar cm = editor.codemirror;\n\t_toggleHeading(cm, undefined, 2);\n}\n\n/**\n * Action for toggling heading size 3\n */\nfunction toggleHeading3(editor) {\n\tvar cm = editor.codemirror;\n\t_toggleHeading(cm, undefined, 3);\n}\n\n\n/**\n * Action for toggling ul.\n */\nfunction toggleUnorderedList(editor) {\n\tvar cm = editor.codemirror;\n\t_toggleLine(cm, \"unordered-list\");\n}\n\n\n/**\n * Action for toggling ol.\n */\nfunction toggleOrderedList(editor) {\n\tvar cm = editor.codemirror;\n\t_toggleLine(cm, \"ordered-list\");\n}\n\n/**\n * Action for clean block (remove headline, list, blockquote code, markers)\n */\nfunction cleanBlock(editor) {\n\tvar cm = editor.codemirror;\n\t_cleanBlock(cm);\n}\n\n/**\n * Action for drawing a link.\n */\nfunction drawLink(editor) {\n\tvar cm = editor.codemirror;\n\tvar stat = getState(cm);\n\tvar options = editor.options;\n\tvar url = \"http://\";\n\tif(options.promptURLs) {\n\t\turl = prompt(options.promptTexts.link);\n\t\tif(!url) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t_replaceSelection(cm, stat.link, options.insertTexts.link, url);\n}\n\n/**\n * Action for drawing an img.\n */\nfunction drawImage(editor) {\n\tvar cm = editor.codemirror;\n\tvar stat = getState(cm);\n\tvar options = editor.options;\n\tvar url = \"http://\";\n\tif(options.promptURLs) {\n\t\turl = prompt(options.promptTexts.image);\n\t\tif(!url) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t_replaceSelection(cm, stat.image, options.insertTexts.image, url);\n}\n\n/**\n * Action for drawing a table.\n */\nfunction drawTable(editor) {\n\tvar cm = editor.codemirror;\n\tvar stat = getState(cm);\n\tvar options = editor.options;\n\t_replaceSelection(cm, stat.table, options.insertTexts.table);\n}\n\n/**\n * Action for drawing a horizontal rule.\n */\nfunction drawHorizontalRule(editor) {\n\tvar cm = editor.codemirror;\n\tvar stat = getState(cm);\n\tvar options = editor.options;\n\t_replaceSelection(cm, stat.image, options.insertTexts.horizontalRule);\n}\n\n\n/**\n * Undo action.\n */\nfunction undo(editor) {\n\tvar cm = editor.codemirror;\n\tcm.undo();\n\tcm.focus();\n}\n\n\n/**\n * Redo action.\n */\nfunction redo(editor) {\n\tvar cm = editor.codemirror;\n\tcm.redo();\n\tcm.focus();\n}\n\n\n/**\n * Toggle side by side preview\n */\nfunction toggleSideBySide(editor) {\n\tvar cm = editor.codemirror;\n\tvar wrapper = cm.getWrapperElement();\n\tvar preview = wrapper.nextSibling;\n\tvar toolbarButton = editor.toolbarElements[\"side-by-side\"];\n\tvar useSideBySideListener = false;\n\tif(/editor-preview-active-side/.test(preview.className)) {\n\t\tpreview.className = preview.className.replace(\n\t\t\t/\\s*editor-preview-active-side\\s*/g, \"\"\n\t\t);\n\t\ttoolbarButton.className = toolbarButton.className.replace(/\\s*active\\s*/g, \"\");\n\t\twrapper.className = wrapper.className.replace(/\\s*CodeMirror-sided\\s*/g, \" \");\n\t} else {\n\t\t// When the preview button is clicked for the first time,\n\t\t// give some time for the transition from editor.css to fire and the view to slide from right to left,\n\t\t// instead of just appearing.\n\t\tsetTimeout(function() {\n\t\t\tif(!cm.getOption(\"fullScreen\"))\n\t\t\t\ttoggleFullScreen(editor);\n\t\t\tpreview.className += \" editor-preview-active-side\";\n\t\t}, 1);\n\t\ttoolbarButton.className += \" active\";\n\t\twrapper.className += \" CodeMirror-sided\";\n\t\tuseSideBySideListener = true;\n\t}\n\n\t// Hide normal preview if active\n\tvar previewNormal = wrapper.lastChild;\n\tif(/editor-preview-active/.test(previewNormal.className)) {\n\t\tpreviewNormal.className = previewNormal.className.replace(\n\t\t\t/\\s*editor-preview-active\\s*/g, \"\"\n\t\t);\n\t\tvar toolbar = editor.toolbarElements.preview;\n\t\tvar toolbar_div = wrapper.previousSibling;\n\t\ttoolbar.className = toolbar.className.replace(/\\s*active\\s*/g, \"\");\n\t\ttoolbar_div.className = toolbar_div.className.replace(/\\s*disabled-for-preview*/g, \"\");\n\t}\n\n\tvar sideBySideRenderingFunction = function() {\n\t\tpreview.innerHTML = editor.options.previewRender(editor.value(), preview);\n\t};\n\n\tif(!cm.sideBySideRenderingFunction) {\n\t\tcm.sideBySideRenderingFunction = sideBySideRenderingFunction;\n\t}\n\n\tif(useSideBySideListener) {\n\t\tpreview.innerHTML = editor.options.previewRender(editor.value(), preview);\n\t\tcm.on(\"update\", cm.sideBySideRenderingFunction);\n\t} else {\n\t\tcm.off(\"update\", cm.sideBySideRenderingFunction);\n\t}\n\n\t// Refresh to fix selection being off (#309)\n\tcm.refresh();\n}\n\n\n/**\n * Preview action.\n */\nfunction togglePreview(editor) {\n\tvar cm = editor.codemirror;\n\tvar wrapper = cm.getWrapperElement();\n\tvar toolbar_div = wrapper.previousSibling;\n\tvar toolbar = editor.options.toolbar ? editor.toolbarElements.preview : false;\n\tvar preview = wrapper.lastChild;\n\tif(!preview || !/editor-preview/.test(preview.className)) {\n\t\tpreview = document.createElement(\"div\");\n\t\tpreview.className = \"editor-preview\";\n\t\twrapper.appendChild(preview);\n\t}\n\tif(/editor-preview-active/.test(preview.className)) {\n\t\tpreview.className = preview.className.replace(\n\t\t\t/\\s*editor-preview-active\\s*/g, \"\"\n\t\t);\n\t\tif(toolbar) {\n\t\t\ttoolbar.className = toolbar.className.replace(/\\s*active\\s*/g, \"\");\n\t\t\ttoolbar_div.className = toolbar_div.className.replace(/\\s*disabled-for-preview*/g, \"\");\n\t\t}\n\t} else {\n\t\t// When the preview button is clicked for the first time,\n\t\t// give some time for the transition from editor.css to fire and the view to slide from right to left,\n\t\t// instead of just appearing.\n\t\tsetTimeout(function() {\n\t\t\tpreview.className += \" editor-preview-active\";\n\t\t}, 1);\n\t\tif(toolbar) {\n\t\t\ttoolbar.className += \" active\";\n\t\t\ttoolbar_div.className += \" disabled-for-preview\";\n\t\t}\n\t}\n\tpreview.innerHTML = editor.options.previewRender(editor.value(), preview);\n\n\t// Turn off side by side if needed\n\tvar sidebyside = cm.getWrapperElement().nextSibling;\n\tif(/editor-preview-active-side/.test(sidebyside.className))\n\t\ttoggleSideBySide(editor);\n}\n\nfunction _replaceSelection(cm, active, startEnd, url) {\n\tif(/editor-preview-active/.test(cm.getWrapperElement().lastChild.className))\n\t\treturn;\n\n\tvar text;\n\tvar start = startEnd[0];\n\tvar end = startEnd[1];\n\tvar startPoint = cm.getCursor(\"start\");\n\tvar endPoint = cm.getCursor(\"end\");\n\tif(url) {\n\t\tend = end.replace(\"#url#\", url);\n\t}\n\tif(active) {\n\t\ttext = cm.getLine(startPoint.line);\n\t\tstart = text.slice(0, startPoint.ch);\n\t\tend = text.slice(startPoint.ch);\n\t\tcm.replaceRange(start + end, {\n\t\t\tline: startPoint.line,\n\t\t\tch: 0\n\t\t});\n\t} else {\n\t\ttext = cm.getSelection();\n\t\tcm.replaceSelection(start + text + end);\n\n\t\tstartPoint.ch += start.length;\n\t\tif(startPoint !== endPoint) {\n\t\t\tendPoint.ch += start.length;\n\t\t}\n\t}\n\tcm.setSelection(startPoint, endPoint);\n\tcm.focus();\n}\n\n\nfunction _toggleHeading(cm, direction, size) {\n\tif(/editor-preview-active/.test(cm.getWrapperElement().lastChild.className))\n\t\treturn;\n\n\tvar startPoint = cm.getCursor(\"start\");\n\tvar endPoint = cm.getCursor(\"end\");\n\tfor(var i = startPoint.line; i <= endPoint.line; i++) {\n\t\t(function(i) {\n\t\t\tvar text = cm.getLine(i);\n\t\t\tvar currHeadingLevel = text.search(/[^#]/);\n\n\t\t\tif(direction !== undefined) {\n\t\t\t\tif(currHeadingLevel <= 0) {\n\t\t\t\t\tif(direction == \"bigger\") {\n\t\t\t\t\t\ttext = \"###### \" + text;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttext = \"# \" + text;\n\t\t\t\t\t}\n\t\t\t\t} else if(currHeadingLevel == 6 && direction == \"smaller\") {\n\t\t\t\t\ttext = text.substr(7);\n\t\t\t\t} else if(currHeadingLevel == 1 && direction == \"bigger\") {\n\t\t\t\t\ttext = text.substr(2);\n\t\t\t\t} else {\n\t\t\t\t\tif(direction == \"bigger\") {\n\t\t\t\t\t\ttext = text.substr(1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttext = \"#\" + text;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(size == 1) {\n\t\t\t\t\tif(currHeadingLevel <= 0) {\n\t\t\t\t\t\ttext = \"# \" + text;\n\t\t\t\t\t} else if(currHeadingLevel == size) {\n\t\t\t\t\t\ttext = text.substr(currHeadingLevel + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttext = \"# \" + text.substr(currHeadingLevel + 1);\n\t\t\t\t\t}\n\t\t\t\t} else if(size == 2) {\n\t\t\t\t\tif(currHeadingLevel <= 0) {\n\t\t\t\t\t\ttext = \"## \" + text;\n\t\t\t\t\t} else if(currHeadingLevel == size) {\n\t\t\t\t\t\ttext = text.substr(currHeadingLevel + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttext = \"## \" + text.substr(currHeadingLevel + 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif(currHeadingLevel <= 0) {\n\t\t\t\t\t\ttext = \"### \" + text;\n\t\t\t\t\t} else if(currHeadingLevel == size) {\n\t\t\t\t\t\ttext = text.substr(currHeadingLevel + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttext = \"### \" + text.substr(currHeadingLevel + 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcm.replaceRange(text, {\n\t\t\t\tline: i,\n\t\t\t\tch: 0\n\t\t\t}, {\n\t\t\t\tline: i,\n\t\t\t\tch: 99999999999999\n\t\t\t});\n\t\t})(i);\n\t}\n\tcm.focus();\n}\n\n\nfunction _toggleLine(cm, name) {\n\tif(/editor-preview-active/.test(cm.getWrapperElement().lastChild.className))\n\t\treturn;\n\n\tvar stat = getState(cm);\n\tvar startPoint = cm.getCursor(\"start\");\n\tvar endPoint = cm.getCursor(\"end\");\n\tvar repl = {\n\t\t\"quote\": /^(\\s*)\\>\\s+/,\n\t\t\"unordered-list\": /^(\\s*)(\\*|\\-|\\+)\\s+/,\n\t\t\"ordered-list\": /^(\\s*)\\d+\\.\\s+/\n\t};\n\tvar map = {\n\t\t\"quote\": \"> \",\n\t\t\"unordered-list\": \"* \",\n\t\t\"ordered-list\": \"1. \"\n\t};\n\tfor(var i = startPoint.line; i <= endPoint.line; i++) {\n\t\t(function(i) {\n\t\t\tvar text = cm.getLine(i);\n\t\t\tif(stat[name]) {\n\t\t\t\ttext = text.replace(repl[name], \"$1\");\n\t\t\t} else {\n\t\t\t\ttext = map[name] + text;\n\t\t\t}\n\t\t\tcm.replaceRange(text, {\n\t\t\t\tline: i,\n\t\t\t\tch: 0\n\t\t\t}, {\n\t\t\t\tline: i,\n\t\t\t\tch: 99999999999999\n\t\t\t});\n\t\t})(i);\n\t}\n\tcm.focus();\n}\n\nfunction _toggleBlock(editor, type, start_chars, end_chars) {\n\tif(/editor-preview-active/.test(editor.codemirror.getWrapperElement().lastChild.className))\n\t\treturn;\n\n\tend_chars = (typeof end_chars === \"undefined\") ? start_chars : end_chars;\n\tvar cm = editor.codemirror;\n\tvar stat = getState(cm);\n\n\tvar text;\n\tvar start = start_chars;\n\tvar end = end_chars;\n\n\tvar startPoint = cm.getCursor(\"start\");\n\tvar endPoint = cm.getCursor(\"end\");\n\n\tif(stat[type]) {\n\t\ttext = cm.getLine(startPoint.line);\n\t\tstart = text.slice(0, startPoint.ch);\n\t\tend = text.slice(startPoint.ch);\n\t\tif(type == \"bold\") {\n\t\t\tstart = start.replace(/(\\*\\*|__)(?![\\s\\S]*(\\*\\*|__))/, \"\");\n\t\t\tend = end.replace(/(\\*\\*|__)/, \"\");\n\t\t} else if(type == \"italic\") {\n\t\t\tstart = start.replace(/(\\*|_)(?![\\s\\S]*(\\*|_))/, \"\");\n\t\t\tend = end.replace(/(\\*|_)/, \"\");\n\t\t} else if(type == \"strikethrough\") {\n\t\t\tstart = start.replace(/(\\*\\*|~~)(?![\\s\\S]*(\\*\\*|~~))/, \"\");\n\t\t\tend = end.replace(/(\\*\\*|~~)/, \"\");\n\t\t}\n\t\tcm.replaceRange(start + end, {\n\t\t\tline: startPoint.line,\n\t\t\tch: 0\n\t\t}, {\n\t\t\tline: startPoint.line,\n\t\t\tch: 99999999999999\n\t\t});\n\n\t\tif(type == \"bold\" || type == \"strikethrough\") {\n\t\t\tstartPoint.ch -= 2;\n\t\t\tif(startPoint !== endPoint) {\n\t\t\t\tendPoint.ch -= 2;\n\t\t\t}\n\t\t} else if(type == \"italic\") {\n\t\t\tstartPoint.ch -= 1;\n\t\t\tif(startPoint !== endPoint) {\n\t\t\t\tendPoint.ch -= 1;\n\t\t\t}\n\t\t}\n\t} else {\n\t\ttext = cm.getSelection();\n\t\tif(type == \"bold\") {\n\t\t\ttext = text.split(\"**\").join(\"\");\n\t\t\ttext = text.split(\"__\").join(\"\");\n\t\t} else if(type == \"italic\") {\n\t\t\ttext = text.split(\"*\").join(\"\");\n\t\t\ttext = text.split(\"_\").join(\"\");\n\t\t} else if(type == \"strikethrough\") {\n\t\t\ttext = text.split(\"~~\").join(\"\");\n\t\t}\n\t\tcm.replaceSelection(start + text + end);\n\n\t\tstartPoint.ch += start_chars.length;\n\t\tendPoint.ch = startPoint.ch + text.length;\n\t}\n\n\tcm.setSelection(startPoint, endPoint);\n\tcm.focus();\n}\n\nfunction _cleanBlock(cm) {\n\tif(/editor-preview-active/.test(cm.getWrapperElement().lastChild.className))\n\t\treturn;\n\n\tvar startPoint = cm.getCursor(\"start\");\n\tvar endPoint = cm.getCursor(\"end\");\n\tvar text;\n\n\tfor(var line = startPoint.line; line <= endPoint.line; line++) {\n\t\ttext = cm.getLine(line);\n\t\ttext = text.replace(/^[ ]*([# ]+|\\*|\\-|[> ]+|[0-9]+(.|\\)))[ ]*/, \"\");\n\n\t\tcm.replaceRange(text, {\n\t\t\tline: line,\n\t\t\tch: 0\n\t\t}, {\n\t\t\tline: line,\n\t\t\tch: 99999999999999\n\t\t});\n\t}\n}\n\n// Merge the properties of one object into another.\nfunction _mergeProperties(target, source) {\n\tfor(var property in source) {\n\t\tif(source.hasOwnProperty(property)) {\n\t\t\tif(source[property] instanceof Array) {\n\t\t\t\ttarget[property] = source[property].concat(target[property] instanceof Array ? target[property] : []);\n\t\t\t} else if(\n\t\t\t\tsource[property] !== null &&\n\t\t\t\ttypeof source[property] === \"object\" &&\n\t\t\t\tsource[property].constructor === Object\n\t\t\t) {\n\t\t\t\ttarget[property] = _mergeProperties(target[property] || {}, source[property]);\n\t\t\t} else {\n\t\t\t\ttarget[property] = source[property];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn target;\n}\n\n// Merge an arbitrary number of objects into one.\nfunction extend(target) {\n\tfor(var i = 1; i < arguments.length; i++) {\n\t\ttarget = _mergeProperties(target, arguments[i]);\n\t}\n\n\treturn target;\n}\n\n/* The right word count in respect for CJK. */\nfunction wordCount(data) {\n\tvar pattern = /[a-zA-Z0-9_\\u0392-\\u03c9\\u0410-\\u04F9]+|[\\u4E00-\\u9FFF\\u3400-\\u4dbf\\uf900-\\ufaff\\u3040-\\u309f\\uac00-\\ud7af]+/g;\n\tvar m = data.match(pattern);\n\tvar count = 0;\n\tif(m === null) return count;\n\tfor(var i = 0; i < m.length; i++) {\n\t\tif(m[i].charCodeAt(0) >= 0x4E00) {\n\t\t\tcount += m[i].length;\n\t\t} else {\n\t\t\tcount += 1;\n\t\t}\n\t}\n\treturn count;\n}\n\nvar toolbarBuiltInButtons = {\n\t\"bold\": {\n\t\tname: \"bold\",\n\t\taction: toggleBold,\n\t\tclassName: \"fa fa-bold\",\n\t\ttitle: \"Bold\",\n\t\tdefault: true\n\t},\n\t\"italic\": {\n\t\tname: \"italic\",\n\t\taction: toggleItalic,\n\t\tclassName: \"fa fa-italic\",\n\t\ttitle: \"Italic\",\n\t\tdefault: true\n\t},\n\t\"strikethrough\": {\n\t\tname: \"strikethrough\",\n\t\taction: toggleStrikethrough,\n\t\tclassName: \"fa fa-strikethrough\",\n\t\ttitle: \"Strikethrough\"\n\t},\n\t\"heading\": {\n\t\tname: \"heading\",\n\t\taction: toggleHeadingSmaller,\n\t\tclassName: \"fa fa-header\",\n\t\ttitle: \"Heading\",\n\t\tdefault: true\n\t},\n\t\"heading-smaller\": {\n\t\tname: \"heading-smaller\",\n\t\taction: toggleHeadingSmaller,\n\t\tclassName: \"fa fa-header fa-header-x fa-header-smaller\",\n\t\ttitle: \"Smaller Heading\"\n\t},\n\t\"heading-bigger\": {\n\t\tname: \"heading-bigger\",\n\t\taction: toggleHeadingBigger,\n\t\tclassName: \"fa fa-header fa-header-x fa-header-bigger\",\n\t\ttitle: \"Bigger Heading\"\n\t},\n\t\"heading-1\": {\n\t\tname: \"heading-1\",\n\t\taction: toggleHeading1,\n\t\tclassName: \"fa fa-header fa-header-x fa-header-1\",\n\t\ttitle: \"Big Heading\"\n\t},\n\t\"heading-2\": {\n\t\tname: \"heading-2\",\n\t\taction: toggleHeading2,\n\t\tclassName: \"fa fa-header fa-header-x fa-header-2\",\n\t\ttitle: \"Medium Heading\"\n\t},\n\t\"heading-3\": {\n\t\tname: \"heading-3\",\n\t\taction: toggleHeading3,\n\t\tclassName: \"fa fa-header fa-header-x fa-header-3\",\n\t\ttitle: \"Small Heading\"\n\t},\n\t\"separator-1\": {\n\t\tname: \"separator-1\"\n\t},\n\t\"code\": {\n\t\tname: \"code\",\n\t\taction: toggleCodeBlock,\n\t\tclassName: \"fa fa-code\",\n\t\ttitle: \"Code\"\n\t},\n\t\"quote\": {\n\t\tname: \"quote\",\n\t\taction: toggleBlockquote,\n\t\tclassName: \"fa fa-quote-left\",\n\t\ttitle: \"Quote\",\n\t\tdefault: true\n\t},\n\t\"unordered-list\": {\n\t\tname: \"unordered-list\",\n\t\taction: toggleUnorderedList,\n\t\tclassName: \"fa fa-list-ul\",\n\t\ttitle: \"Generic List\",\n\t\tdefault: true\n\t},\n\t\"ordered-list\": {\n\t\tname: \"ordered-list\",\n\t\taction: toggleOrderedList,\n\t\tclassName: \"fa fa-list-ol\",\n\t\ttitle: \"Numbered List\",\n\t\tdefault: true\n\t},\n\t\"clean-block\": {\n\t\tname: \"clean-block\",\n\t\taction: cleanBlock,\n\t\tclassName: \"fa fa-eraser fa-clean-block\",\n\t\ttitle: \"Clean block\"\n\t},\n\t\"separator-2\": {\n\t\tname: \"separator-2\"\n\t},\n\t\"link\": {\n\t\tname: \"link\",\n\t\taction: drawLink,\n\t\tclassName: \"fa fa-link\",\n\t\ttitle: \"Create Link\",\n\t\tdefault: true\n\t},\n\t\"image\": {\n\t\tname: \"image\",\n\t\taction: drawImage,\n\t\tclassName: \"fa fa-picture-o\",\n\t\ttitle: \"Insert Image\",\n\t\tdefault: true\n\t},\n\t\"table\": {\n\t\tname: \"table\",\n\t\taction: drawTable,\n\t\tclassName: \"fa fa-table\",\n\t\ttitle: \"Insert Table\"\n\t},\n\t\"horizontal-rule\": {\n\t\tname: \"horizontal-rule\",\n\t\taction: drawHorizontalRule,\n\t\tclassName: \"fa fa-minus\",\n\t\ttitle: \"Insert Horizontal Line\"\n\t},\n\t\"separator-3\": {\n\t\tname: \"separator-3\"\n\t},\n\t\"preview\": {\n\t\tname: \"preview\",\n\t\taction: togglePreview,\n\t\tclassName: \"fa fa-eye no-disable\",\n\t\ttitle: \"Toggle Preview\",\n\t\tdefault: true\n\t},\n\t\"side-by-side\": {\n\t\tname: \"side-by-side\",\n\t\taction: toggleSideBySide,\n\t\tclassName: \"fa fa-columns no-disable no-mobile\",\n\t\ttitle: \"Toggle Side by Side\",\n\t\tdefault: true\n\t},\n\t\"fullscreen\": {\n\t\tname: \"fullscreen\",\n\t\taction: toggleFullScreen,\n\t\tclassName: \"fa fa-arrows-alt no-disable no-mobile\",\n\t\ttitle: \"Toggle Fullscreen\",\n\t\tdefault: true\n\t},\n\t\"separator-4\": {\n\t\tname: \"separator-4\"\n\t},\n\t\"guide\": {\n\t\tname: \"guide\",\n\t\taction: \"https://simplemde.com/markdown-guide\",\n\t\tclassName: \"fa fa-question-circle\",\n\t\ttitle: \"Markdown Guide\",\n\t\tdefault: true\n\t},\n\t\"separator-5\": {\n\t\tname: \"separator-5\"\n\t},\n\t\"undo\": {\n\t\tname: \"undo\",\n\t\taction: undo,\n\t\tclassName: \"fa fa-undo no-disable\",\n\t\ttitle: \"Undo\"\n\t},\n\t\"redo\": {\n\t\tname: \"redo\",\n\t\taction: redo,\n\t\tclassName: \"fa fa-repeat no-disable\",\n\t\ttitle: \"Redo\"\n\t}\n};\n\nvar insertTexts = {\n\tlink: [\"[\", \"](#url#)\"],\n\timage: [\"![](\", \"#url#)\"],\n\ttable: [\"\", \"\\n\\n| Column 1 | Column 2 | Column 3 |\\n| -------- | -------- | -------- |\\n| Text | Text | Text |\\n\\n\"],\n\thorizontalRule: [\"\", \"\\n\\n-----\\n\\n\"]\n};\n\nvar promptTexts = {\n\tlink: \"URL for the link:\",\n\timage: \"URL of the image:\"\n};\n\nvar blockStyles = {\n\t\"bold\": \"**\",\n\t\"code\": \"```\",\n\t\"italic\": \"*\"\n};\n\n/**\n * Interface of SimpleMDE.\n */\nfunction SimpleMDE(options) {\n\t// Handle options parameter\n\toptions = options || {};\n\n\n\t// Used later to refer to it\"s parent\n\toptions.parent = this;\n\n\n\t// Check if Font Awesome needs to be auto downloaded\n\tvar autoDownloadFA = true;\n\n\tif(options.autoDownloadFontAwesome === false) {\n\t\tautoDownloadFA = false;\n\t}\n\n\tif(options.autoDownloadFontAwesome !== true) {\n\t\tvar styleSheets = document.styleSheets;\n\t\tfor(var i = 0; i < styleSheets.length; i++) {\n\t\t\tif(!styleSheets[i].href)\n\t\t\t\tcontinue;\n\n\t\t\tif(styleSheets[i].href.indexOf(\"//maxcdn.bootstrapcdn.com/font-awesome/\") > -1) {\n\t\t\t\tautoDownloadFA = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tif(autoDownloadFA) {\n\t\tvar link = document.createElement(\"link\");\n\t\tlink.rel = \"stylesheet\";\n\t\tlink.href = \"https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css\";\n\t\tdocument.getElementsByTagName(\"head\")[0].appendChild(link);\n\t}\n\n\n\t// Find the textarea to use\n\tif(options.element) {\n\t\tthis.element = options.element;\n\t} else if(options.element === null) {\n\t\t// This means that the element option was specified, but no element was found\n\t\tconsole.log(\"SimpleMDE: Error. No element was found.\");\n\t\treturn;\n\t}\n\n\n\t// Handle toolbar\n\tif(options.toolbar === undefined) {\n\t\t// Initialize\n\t\toptions.toolbar = [];\n\n\n\t\t// Loop over the built in buttons, to get the preferred order\n\t\tfor(var key in toolbarBuiltInButtons) {\n\t\t\tif(toolbarBuiltInButtons.hasOwnProperty(key)) {\n\t\t\t\tif(key.indexOf(\"separator-\") != -1) {\n\t\t\t\t\toptions.toolbar.push(\"|\");\n\t\t\t\t}\n\n\t\t\t\tif(toolbarBuiltInButtons[key].default === true || (options.showIcons && options.showIcons.constructor === Array && options.showIcons.indexOf(key) != -1)) {\n\t\t\t\t\toptions.toolbar.push(key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\t// Handle status bar\n\tif(!options.hasOwnProperty(\"status\")) {\n\t\toptions.status = [\"autosave\", \"lines\", \"words\", \"cursor\"];\n\t}\n\n\n\t// Add default preview rendering function\n\tif(!options.previewRender) {\n\t\toptions.previewRender = function(plainText) {\n\t\t\t// Note: \"this\" refers to the options object\n\t\t\treturn this.parent.markdown(plainText);\n\t\t};\n\t}\n\n\n\t// Set default options for parsing config\n\toptions.parsingConfig = extend({\n\t\thighlightFormatting: true // needed for toggleCodeBlock to detect types of code\n\t}, options.parsingConfig || {});\n\n\n\t// Merging the insertTexts, with the given options\n\toptions.insertTexts = extend({}, insertTexts, options.insertTexts || {});\n\n\n\t// Merging the promptTexts, with the given options\n\toptions.promptTexts = promptTexts;\n\n\n\t// Merging the blockStyles, with the given options\n\toptions.blockStyles = extend({}, blockStyles, options.blockStyles || {});\n\n\n\t// Merging the shortcuts, with the given options\n\toptions.shortcuts = extend({}, shortcuts, options.shortcuts || {});\n\n\n\t// Change unique_id to uniqueId for backwards compatibility\n\tif(options.autosave != undefined && options.autosave.unique_id != undefined && options.autosave.unique_id != \"\")\n\t\toptions.autosave.uniqueId = options.autosave.unique_id;\n\n\n\t// Update this options\n\tthis.options = options;\n\n\n\t// Auto render\n\tthis.render();\n\n\n\t// The codemirror component is only available after rendering\n\t// so, the setter for the initialValue can only run after\n\t// the element has been rendered\n\tif(options.initialValue && (!this.options.autosave || this.options.autosave.foundSavedValue !== true)) {\n\t\tthis.value(options.initialValue);\n\t}\n}\n\n/**\n * Default markdown render.\n */\nSimpleMDE.prototype.markdown = function(text) {\n\tif(marked) {\n\t\t// Initialize\n\t\tvar markedOptions = {};\n\n\n\t\t// Update options\n\t\tif(this.options && this.options.renderingConfig && this.options.renderingConfig.singleLineBreaks === false) {\n\t\t\tmarkedOptions.breaks = false;\n\t\t} else {\n\t\t\tmarkedOptions.breaks = true;\n\t\t}\n\n\t\tif(this.options && this.options.renderingConfig && this.options.renderingConfig.codeSyntaxHighlighting === true && window.hljs) {\n\t\t\tmarkedOptions.highlight = function(code) {\n\t\t\t\treturn window.hljs.highlightAuto(code).value;\n\t\t\t};\n\t\t}\n\n\n\t\t// Set options\n\t\tmarked.setOptions(markedOptions);\n\n\n\t\t// Return\n\t\treturn marked(text);\n\t}\n};\n\n/**\n * Render editor to the given element.\n */\nSimpleMDE.prototype.render = function(el) {\n\tif(!el) {\n\t\tel = this.element || document.getElementsByTagName(\"textarea\")[0];\n\t}\n\n\tif(this._rendered && this._rendered === el) {\n\t\t// Already rendered.\n\t\treturn;\n\t}\n\n\tthis.element = el;\n\tvar options = this.options;\n\n\tvar self = this;\n\tvar keyMaps = {};\n\n\tfor(var key in options.shortcuts) {\n\t\t// null stands for \"do not bind this command\"\n\t\tif(options.shortcuts[key] !== null && bindings[key] !== null) {\n\t\t\t(function(key) {\n\t\t\t\tkeyMaps[fixShortcut(options.shortcuts[key])] = function() {\n\t\t\t\t\tbindings[key](self);\n\t\t\t\t};\n\t\t\t})(key);\n\t\t}\n\t}\n\n\tkeyMaps[\"Enter\"] = \"newlineAndIndentContinueMarkdownList\";\n\tkeyMaps[\"Tab\"] = \"tabAndIndentMarkdownList\";\n\tkeyMaps[\"Shift-Tab\"] = \"shiftTabAndUnindentMarkdownList\";\n\tkeyMaps[\"Esc\"] = function(cm) {\n\t\tif(cm.getOption(\"fullScreen\")) toggleFullScreen(self);\n\t};\n\n\tdocument.addEventListener(\"keydown\", function(e) {\n\t\te = e || window.event;\n\n\t\tif(e.keyCode == 27) {\n\t\t\tif(self.codemirror.getOption(\"fullScreen\")) toggleFullScreen(self);\n\t\t}\n\t}, false);\n\n\tvar mode, backdrop;\n\tif(options.spellChecker !== false) {\n\t\tmode = \"spell-checker\";\n\t\tbackdrop = options.parsingConfig;\n\t\tbackdrop.name = \"gfm\";\n\t\tbackdrop.gitHubSpice = false;\n\n\t\tCodeMirrorSpellChecker({\n\t\t\tcodeMirrorInstance: CodeMirror\n\t\t});\n\t} else {\n\t\tmode = options.parsingConfig;\n\t\tmode.name = \"gfm\";\n\t\tmode.gitHubSpice = false;\n\t}\n\n\tthis.codemirror = CodeMirror.fromTextArea(el, {\n\t\tmode: mode,\n\t\tbackdrop: backdrop,\n\t\ttheme: \"paper\",\n\t\ttabSize: (options.tabSize != undefined) ? options.tabSize : 2,\n\t\tindentUnit: (options.tabSize != undefined) ? options.tabSize : 2,\n\t\tindentWithTabs: (options.indentWithTabs === false) ? false : true,\n\t\tlineNumbers: false,\n\t\tautofocus: (options.autofocus === true) ? true : false,\n\t\textraKeys: keyMaps,\n\t\tlineWrapping: (options.lineWrapping === false) ? false : true,\n\t\tallowDropFileTypes: [\"text/plain\"],\n\t\tplaceholder: options.placeholder || el.getAttribute(\"placeholder\") || \"\",\n\t\tstyleSelectedText: (options.styleSelectedText != undefined) ? options.styleSelectedText : true\n\t});\n\n\tif(options.forceSync === true) {\n\t\tvar cm = this.codemirror;\n\t\tcm.on(\"change\", function() {\n\t\t\tcm.save();\n\t\t});\n\t}\n\n\tthis.gui = {};\n\n\tif(options.toolbar !== false) {\n\t\tthis.gui.toolbar = this.createToolbar();\n\t}\n\tif(options.status !== false) {\n\t\tthis.gui.statusbar = this.createStatusbar();\n\t}\n\tif(options.autosave != undefined && options.autosave.enabled === true) {\n\t\tthis.autosave();\n\t}\n\n\tthis.gui.sideBySide = this.createSideBySide();\n\n\tthis._rendered = this.element;\n\n\n\t// Fixes CodeMirror bug (#344)\n\tvar temp_cm = this.codemirror;\n\tsetTimeout(function() {\n\t\ttemp_cm.refresh();\n\t}.bind(temp_cm), 0);\n};\n\n// Safari, in Private Browsing Mode, looks like it supports localStorage but all calls to setItem throw QuotaExceededError. We're going to detect this and set a variable accordingly.\nfunction isLocalStorageAvailable() {\n\tif(typeof localStorage === \"object\") {\n\t\ttry {\n\t\t\tlocalStorage.setItem(\"smde_localStorage\", 1);\n\t\t\tlocalStorage.removeItem(\"smde_localStorage\");\n\t\t} catch(e) {\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nSimpleMDE.prototype.autosave = function() {\n\tif(isLocalStorageAvailable()) {\n\t\tvar simplemde = this;\n\n\t\tif(this.options.autosave.uniqueId == undefined || this.options.autosave.uniqueId == \"\") {\n\t\t\tconsole.log(\"SimpleMDE: You must set a uniqueId to use the autosave feature\");\n\t\t\treturn;\n\t\t}\n\n\t\tif(simplemde.element.form != null && simplemde.element.form != undefined) {\n\t\t\tsimplemde.element.form.addEventListener(\"submit\", function() {\n\t\t\t\tlocalStorage.removeItem(\"smde_\" + simplemde.options.autosave.uniqueId);\n\t\t\t});\n\t\t}\n\n\t\tif(this.options.autosave.loaded !== true) {\n\t\t\tif(typeof localStorage.getItem(\"smde_\" + this.options.autosave.uniqueId) == \"string\" && localStorage.getItem(\"smde_\" + this.options.autosave.uniqueId) != \"\") {\n\t\t\t\tthis.codemirror.setValue(localStorage.getItem(\"smde_\" + this.options.autosave.uniqueId));\n\t\t\t\tthis.options.autosave.foundSavedValue = true;\n\t\t\t}\n\n\t\t\tthis.options.autosave.loaded = true;\n\t\t}\n\n\t\tlocalStorage.setItem(\"smde_\" + this.options.autosave.uniqueId, simplemde.value());\n\n\t\tvar el = document.getElementById(\"autosaved\");\n\t\tif(el != null && el != undefined && el != \"\") {\n\t\t\tvar d = new Date();\n\t\t\tvar hh = d.getHours();\n\t\t\tvar m = d.getMinutes();\n\t\t\tvar dd = \"am\";\n\t\t\tvar h = hh;\n\t\t\tif(h >= 12) {\n\t\t\t\th = hh - 12;\n\t\t\t\tdd = \"pm\";\n\t\t\t}\n\t\t\tif(h == 0) {\n\t\t\t\th = 12;\n\t\t\t}\n\t\t\tm = m < 10 ? \"0\" + m : m;\n\n\t\t\tel.innerHTML = \"Autosaved: \" + h + \":\" + m + \" \" + dd;\n\t\t}\n\n\t\tthis.autosaveTimeoutId = setTimeout(function() {\n\t\t\tsimplemde.autosave();\n\t\t}, this.options.autosave.delay || 10000);\n\t} else {\n\t\tconsole.log(\"SimpleMDE: localStorage not available, cannot autosave\");\n\t}\n};\n\nSimpleMDE.prototype.clearAutosavedValue = function() {\n\tif(isLocalStorageAvailable()) {\n\t\tif(this.options.autosave == undefined || this.options.autosave.uniqueId == undefined || this.options.autosave.uniqueId == \"\") {\n\t\t\tconsole.log(\"SimpleMDE: You must set a uniqueId to clear the autosave value\");\n\t\t\treturn;\n\t\t}\n\n\t\tlocalStorage.removeItem(\"smde_\" + this.options.autosave.uniqueId);\n\t} else {\n\t\tconsole.log(\"SimpleMDE: localStorage not available, cannot autosave\");\n\t}\n};\n\nSimpleMDE.prototype.createSideBySide = function() {\n\tvar cm = this.codemirror;\n\tvar wrapper = cm.getWrapperElement();\n\tvar preview = wrapper.nextSibling;\n\n\tif(!preview || !/editor-preview-side/.test(preview.className)) {\n\t\tpreview = document.createElement(\"div\");\n\t\tpreview.className = \"editor-preview-side\";\n\t\twrapper.parentNode.insertBefore(preview, wrapper.nextSibling);\n\t}\n\n\t// Syncs scroll editor -> preview\n\tvar cScroll = false;\n\tvar pScroll = false;\n\tcm.on(\"scroll\", function(v) {\n\t\tif(cScroll) {\n\t\t\tcScroll = false;\n\t\t\treturn;\n\t\t}\n\t\tpScroll = true;\n\t\tvar height = v.getScrollInfo().height - v.getScrollInfo().clientHeight;\n\t\tvar ratio = parseFloat(v.getScrollInfo().top) / height;\n\t\tvar move = (preview.scrollHeight - preview.clientHeight) * ratio;\n\t\tpreview.scrollTop = move;\n\t});\n\n\t// Syncs scroll preview -> editor\n\tpreview.onscroll = function() {\n\t\tif(pScroll) {\n\t\t\tpScroll = false;\n\t\t\treturn;\n\t\t}\n\t\tcScroll = true;\n\t\tvar height = preview.scrollHeight - preview.clientHeight;\n\t\tvar ratio = parseFloat(preview.scrollTop) / height;\n\t\tvar move = (cm.getScrollInfo().height - cm.getScrollInfo().clientHeight) * ratio;\n\t\tcm.scrollTo(0, move);\n\t};\n\treturn preview;\n};\n\nSimpleMDE.prototype.createToolbar = function(items) {\n\titems = items || this.options.toolbar;\n\n\tif(!items || items.length === 0) {\n\t\treturn;\n\t}\n\tvar i;\n\tfor(i = 0; i < items.length; i++) {\n\t\tif(toolbarBuiltInButtons[items[i]] != undefined) {\n\t\t\titems[i] = toolbarBuiltInButtons[items[i]];\n\t\t}\n\t}\n\n\tvar bar = document.createElement(\"div\");\n\tbar.className = \"editor-toolbar\";\n\n\tvar self = this;\n\n\tvar toolbarData = {};\n\tself.toolbar = items;\n\n\tfor(i = 0; i < items.length; i++) {\n\t\tif(items[i].name == \"guide\" && self.options.toolbarGuideIcon === false)\n\t\t\tcontinue;\n\n\t\tif(self.options.hideIcons && self.options.hideIcons.indexOf(items[i].name) != -1)\n\t\t\tcontinue;\n\n\t\t// Fullscreen does not work well on mobile devices (even tablets)\n\t\t// In the future, hopefully this can be resolved\n\t\tif((items[i].name == \"fullscreen\" || items[i].name == \"side-by-side\") && isMobile())\n\t\t\tcontinue;\n\n\n\t\t// Don't include trailing separators\n\t\tif(items[i] === \"|\") {\n\t\t\tvar nonSeparatorIconsFollow = false;\n\n\t\t\tfor(var x = (i + 1); x < items.length; x++) {\n\t\t\t\tif(items[x] !== \"|\" && (!self.options.hideIcons || self.options.hideIcons.indexOf(items[x].name) == -1)) {\n\t\t\t\t\tnonSeparatorIconsFollow = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!nonSeparatorIconsFollow)\n\t\t\t\tcontinue;\n\t\t}\n\n\n\t\t// Create the icon and append to the toolbar\n\t\t(function(item) {\n\t\t\tvar el;\n\t\t\tif(item === \"|\") {\n\t\t\t\tel = createSep();\n\t\t\t} else {\n\t\t\t\tel = createIcon(item, self.options.toolbarTips, self.options.shortcuts);\n\t\t\t}\n\n\t\t\t// bind events, special for info\n\t\t\tif(item.action) {\n\t\t\t\tif(typeof item.action === \"function\") {\n\t\t\t\t\tel.onclick = function(e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\titem.action(self);\n\t\t\t\t\t};\n\t\t\t\t} else if(typeof item.action === \"string\") {\n\t\t\t\t\tel.href = item.action;\n\t\t\t\t\tel.target = \"_blank\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttoolbarData[item.name || item] = el;\n\t\t\tbar.appendChild(el);\n\t\t})(items[i]);\n\t}\n\n\tself.toolbarElements = toolbarData;\n\n\tvar cm = this.codemirror;\n\tcm.on(\"cursorActivity\", function() {\n\t\tvar stat = getState(cm);\n\n\t\tfor(var key in toolbarData) {\n\t\t\t(function(key) {\n\t\t\t\tvar el = toolbarData[key];\n\t\t\t\tif(stat[key]) {\n\t\t\t\t\tel.className += \" active\";\n\t\t\t\t} else if(key != \"fullscreen\" && key != \"side-by-side\") {\n\t\t\t\t\tel.className = el.className.replace(/\\s*active\\s*/g, \"\");\n\t\t\t\t}\n\t\t\t})(key);\n\t\t}\n\t});\n\n\tvar cmWrapper = cm.getWrapperElement();\n\tcmWrapper.parentNode.insertBefore(bar, cmWrapper);\n\treturn bar;\n};\n\nSimpleMDE.prototype.createStatusbar = function(status) {\n\t// Initialize\n\tstatus = status || this.options.status;\n\tvar options = this.options;\n\tvar cm = this.codemirror;\n\n\n\t// Make sure the status variable is valid\n\tif(!status || status.length === 0)\n\t\treturn;\n\n\n\t// Set up the built-in items\n\tvar items = [];\n\tvar i, onUpdate, defaultValue;\n\n\tfor(i = 0; i < status.length; i++) {\n\t\t// Reset some values\n\t\tonUpdate = undefined;\n\t\tdefaultValue = undefined;\n\n\n\t\t// Handle if custom or not\n\t\tif(typeof status[i] === \"object\") {\n\t\t\titems.push({\n\t\t\t\tclassName: status[i].className,\n\t\t\t\tdefaultValue: status[i].defaultValue,\n\t\t\t\tonUpdate: status[i].onUpdate\n\t\t\t});\n\t\t} else {\n\t\t\tvar name = status[i];\n\n\t\t\tif(name === \"words\") {\n\t\t\t\tdefaultValue = function(el) {\n\t\t\t\t\tel.innerHTML = wordCount(cm.getValue());\n\t\t\t\t};\n\t\t\t\tonUpdate = function(el) {\n\t\t\t\t\tel.innerHTML = wordCount(cm.getValue());\n\t\t\t\t};\n\t\t\t} else if(name === \"lines\") {\n\t\t\t\tdefaultValue = function(el) {\n\t\t\t\t\tel.innerHTML = cm.lineCount();\n\t\t\t\t};\n\t\t\t\tonUpdate = function(el) {\n\t\t\t\t\tel.innerHTML = cm.lineCount();\n\t\t\t\t};\n\t\t\t} else if(name === \"cursor\") {\n\t\t\t\tdefaultValue = function(el) {\n\t\t\t\t\tel.innerHTML = \"0:0\";\n\t\t\t\t};\n\t\t\t\tonUpdate = function(el) {\n\t\t\t\t\tvar pos = cm.getCursor();\n\t\t\t\t\tel.innerHTML = pos.line + \":\" + pos.ch;\n\t\t\t\t};\n\t\t\t} else if(name === \"autosave\") {\n\t\t\t\tdefaultValue = function(el) {\n\t\t\t\t\tif(options.autosave != undefined && options.autosave.enabled === true) {\n\t\t\t\t\t\tel.setAttribute(\"id\", \"autosaved\");\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\titems.push({\n\t\t\t\tclassName: name,\n\t\t\t\tdefaultValue: defaultValue,\n\t\t\t\tonUpdate: onUpdate\n\t\t\t});\n\t\t}\n\t}\n\n\n\t// Create element for the status bar\n\tvar bar = document.createElement(\"div\");\n\tbar.className = \"editor-statusbar\";\n\n\n\t// Create a new span for each item\n\tfor(i = 0; i < items.length; i++) {\n\t\t// Store in temporary variable\n\t\tvar item = items[i];\n\n\n\t\t// Create span element\n\t\tvar el = document.createElement(\"span\");\n\t\tel.className = item.className;\n\n\n\t\t// Ensure the defaultValue is a function\n\t\tif(typeof item.defaultValue === \"function\") {\n\t\t\titem.defaultValue(el);\n\t\t}\n\n\n\t\t// Ensure the onUpdate is a function\n\t\tif(typeof item.onUpdate === \"function\") {\n\t\t\t// Create a closure around the span of the current action, then execute the onUpdate handler\n\t\t\tthis.codemirror.on(\"update\", (function(el, item) {\n\t\t\t\treturn function() {\n\t\t\t\t\titem.onUpdate(el);\n\t\t\t\t};\n\t\t\t}(el, item)));\n\t\t}\n\n\n\t\t// Append the item to the status bar\n\t\tbar.appendChild(el);\n\t}\n\n\n\t// Insert the status bar into the DOM\n\tvar cmWrapper = this.codemirror.getWrapperElement();\n\tcmWrapper.parentNode.insertBefore(bar, cmWrapper.nextSibling);\n\treturn bar;\n};\n\n/**\n * Get or set the text content.\n */\nSimpleMDE.prototype.value = function(val) {\n\tif(val === undefined) {\n\t\treturn this.codemirror.getValue();\n\t} else {\n\t\tthis.codemirror.getDoc().setValue(val);\n\t\treturn this;\n\t}\n};\n\n\n/**\n * Bind static methods for exports.\n */\nSimpleMDE.toggleBold = toggleBold;\nSimpleMDE.toggleItalic = toggleItalic;\nSimpleMDE.toggleStrikethrough = toggleStrikethrough;\nSimpleMDE.toggleBlockquote = toggleBlockquote;\nSimpleMDE.toggleHeadingSmaller = toggleHeadingSmaller;\nSimpleMDE.toggleHeadingBigger = toggleHeadingBigger;\nSimpleMDE.toggleHeading1 = toggleHeading1;\nSimpleMDE.toggleHeading2 = toggleHeading2;\nSimpleMDE.toggleHeading3 = toggleHeading3;\nSimpleMDE.toggleCodeBlock = toggleCodeBlock;\nSimpleMDE.toggleUnorderedList = toggleUnorderedList;\nSimpleMDE.toggleOrderedList = toggleOrderedList;\nSimpleMDE.cleanBlock = cleanBlock;\nSimpleMDE.drawLink = drawLink;\nSimpleMDE.drawImage = drawImage;\nSimpleMDE.drawTable = drawTable;\nSimpleMDE.drawHorizontalRule = drawHorizontalRule;\nSimpleMDE.undo = undo;\nSimpleMDE.redo = redo;\nSimpleMDE.togglePreview = togglePreview;\nSimpleMDE.toggleSideBySide = toggleSideBySide;\nSimpleMDE.toggleFullScreen = toggleFullScreen;\n\n/**\n * Bind instance methods for exports.\n */\nSimpleMDE.prototype.toggleBold = function() {\n\ttoggleBold(this);\n};\nSimpleMDE.prototype.toggleItalic = function() {\n\ttoggleItalic(this);\n};\nSimpleMDE.prototype.toggleStrikethrough = function() {\n\ttoggleStrikethrough(this);\n};\nSimpleMDE.prototype.toggleBlockquote = function() {\n\ttoggleBlockquote(this);\n};\nSimpleMDE.prototype.toggleHeadingSmaller = function() {\n\ttoggleHeadingSmaller(this);\n};\nSimpleMDE.prototype.toggleHeadingBigger = function() {\n\ttoggleHeadingBigger(this);\n};\nSimpleMDE.prototype.toggleHeading1 = function() {\n\ttoggleHeading1(this);\n};\nSimpleMDE.prototype.toggleHeading2 = function() {\n\ttoggleHeading2(this);\n};\nSimpleMDE.prototype.toggleHeading3 = function() {\n\ttoggleHeading3(this);\n};\nSimpleMDE.prototype.toggleCodeBlock = function() {\n\ttoggleCodeBlock(this);\n};\nSimpleMDE.prototype.toggleUnorderedList = function() {\n\ttoggleUnorderedList(this);\n};\nSimpleMDE.prototype.toggleOrderedList = function() {\n\ttoggleOrderedList(this);\n};\nSimpleMDE.prototype.cleanBlock = function() {\n\tcleanBlock(this);\n};\nSimpleMDE.prototype.drawLink = function() {\n\tdrawLink(this);\n};\nSimpleMDE.prototype.drawImage = function() {\n\tdrawImage(this);\n};\nSimpleMDE.prototype.drawTable = function() {\n\tdrawTable(this);\n};\nSimpleMDE.prototype.drawHorizontalRule = function() {\n\tdrawHorizontalRule(this);\n};\nSimpleMDE.prototype.undo = function() {\n\tundo(this);\n};\nSimpleMDE.prototype.redo = function() {\n\tredo(this);\n};\nSimpleMDE.prototype.togglePreview = function() {\n\ttogglePreview(this);\n};\nSimpleMDE.prototype.toggleSideBySide = function() {\n\ttoggleSideBySide(this);\n};\nSimpleMDE.prototype.toggleFullScreen = function() {\n\ttoggleFullScreen(this);\n};\n\nSimpleMDE.prototype.isPreviewActive = function() {\n\tvar cm = this.codemirror;\n\tvar wrapper = cm.getWrapperElement();\n\tvar preview = wrapper.lastChild;\n\n\treturn /editor-preview-active/.test(preview.className);\n};\n\nSimpleMDE.prototype.isSideBySideActive = function() {\n\tvar cm = this.codemirror;\n\tvar wrapper = cm.getWrapperElement();\n\tvar preview = wrapper.nextSibling;\n\n\treturn /editor-preview-active-side/.test(preview.className);\n};\n\nSimpleMDE.prototype.isFullscreenActive = function() {\n\tvar cm = this.codemirror;\n\n\treturn cm.getOption(\"fullScreen\");\n};\n\nSimpleMDE.prototype.getState = function() {\n\tvar cm = this.codemirror;\n\n\treturn getState(cm);\n};\n\nSimpleMDE.prototype.toTextArea = function() {\n\tvar cm = this.codemirror;\n\tvar wrapper = cm.getWrapperElement();\n\n\tif(wrapper.parentNode) {\n\t\tif(this.gui.toolbar) {\n\t\t\twrapper.parentNode.removeChild(this.gui.toolbar);\n\t\t}\n\t\tif(this.gui.statusbar) {\n\t\t\twrapper.parentNode.removeChild(this.gui.statusbar);\n\t\t}\n\t\tif(this.gui.sideBySide) {\n\t\t\twrapper.parentNode.removeChild(this.gui.sideBySide);\n\t\t}\n\t}\n\n\tcm.toTextArea();\n\n\tif(this.autosaveTimeoutId) {\n\t\tclearTimeout(this.autosaveTimeoutId);\n\t\tthis.autosaveTimeoutId = undefined;\n\t\tthis.clearAutosavedValue();\n\t}\n};\n\nmodule.exports = SimpleMDE;","module.exports = require('./support.min.js')\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"HttpLib\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"HttpLib\"] = factory();\n\telse\n\t\troot[\"HttpLib\"] = factory();\n})(this, function() {\nreturn ","import Cookies from 'js-cookie'\nimport { request } from '../../http/requests'\nimport UtilsService from '@modules/utils'\nimport Settings from '../../http/Settings'\nimport { clientSettings, generateFingerPrint } from '../../commons/read'\n\nexport async function refreshToken() {\n const { domain, envAcronym, urlAuth } = Settings.getInstance()\n const rt = JSON.parse(Cookies.get(`${envAcronym}mp_rt`))\n const body = clientSettings(rt)\n const utils = new UtilsService()\n const params = utils.paramSerializer(body).replace('?', '')\n\n const fp = await generateFingerPrint()\n const { visitorId : visitorid, requestId: requestid } = { ...fp }\n const headers = { visitorid, requestid }\n\n return request\n .post(`${urlAuth}/connect/token`, params, { headers })\n .then((data) => {\n const res = data\n const path = '/'\n const today = new Date()\n const expires = new Date(today.getTime() + (res.expires_in * 1000))\n const expiresTk = new Date(today.getTime() + (res.expires_in * 850))\n const refreshTk = Object.assign({ ...rt, refresh_token: res.refresh_token })\n Cookies.set(`${envAcronym}mp_tk`, res.access_token, { expires, path, domain })\n Cookies.set(`${envAcronym}mp_rt`, JSON.stringify(refreshTk), { expires, path, domain })\n Cookies.set(`${envAcronym}mp_et`, expiresTk, { expires: expiresTk, path, domain })\n\n return res\n })\n .catch((err) => {\n throw err\n })\n}\n","import { verifyAuth } from './read'\n\nexport { verifyAuth }","import { AxiosRequestConfig } from 'axios'\nimport Cookies from 'js-cookie'\nimport Settings from '../http/Settings'\nimport { refreshToken } from '../auth/connect/create'\nimport * as FingerprintJS from '@fingerprintjs/fingerprintjs-pro'\n\nfunction getError(error) {\n if (error?.response) { return error.response }\n return error\n}\n\nexport function verifyAuth(config, token, session?: string) {\n if (token) {\n config.headers.Authorization = `Bearer ${token}`\n } else if (session) {\n const sessionObject = JSON.parse(session)\n config.headers.Authorization = sessionObject.sessionId\n }\n return config\n}\n\nexport async function generateFingerPrint () {\n try {\n const fpPromise = await FingerprintJS.load({\n apiKey: 'ERNHlECbWU0WtnA25mGS',\n endpoint: 'https://bloodhound.pagar.me/3GvhVO0nDoNApNmM/DXmvjPWvR6rda7DY'\n })\n\n const fp = await fpPromise.get()\n\n return fp\n } catch (_err) {\n return\n }\n}\n\nexport async function verifyFp(config) {\n const instance = Settings.getInstance()\n\n if (!instance.useFingerPrint) return config\n if (!instance.pathsFingerPrint.some(path => config.url.includes(path))) return config\n\n const fp = await generateFingerPrint()\n\n const { visitorId, requestId } = { ...fp }\n\n config.headers.visitorid = visitorId || config.headers.visitorid\n config.headers.requestid = requestId || config.headers.requestid\n\n return config\n}\n\nexport function handleBaseResponse(error) {\n const err = getError(error)\n return {\n type: 'response',\n status: err ? err.status : null,\n message: error.message,\n stack: error.stack,\n body: err.data || err.body || null\n }\n}\n\nexport function handleBodyRequest(error) {\n return {\n type: 'request',\n status: error.request.status,\n message: error.message,\n stack: error.stack\n }\n}\n\nexport function clientSettings(rt) {\n if (rt.type === 'refresh_token') {\n return {\n grant_type: 'refresh_token',\n refresh_token: rt.refresh_token,\n client_id: 'Mundipagg_Id_WebApp',\n client_secret: 'csct_eaLpqVghWUEQrmd2'\n }\n }\n return {\n grant_type: 'refresh_token',\n refresh_token: rt.refresh_token,\n client_id: 'Backoffice_Id_WebApp',\n client_secret: 'csct_X7834RLi2nun2N6Q'\n }\n}\n\nexport function handleAutoRefresh(): Promise {\n const { envAcronym } = Settings.getInstance()\n const autoRefresh = Cookies.get(`${envAcronym}mp_et`) === undefined\n const hasToken = Cookies.get(`${envAcronym}mp_tk`) !== undefined\n const hasRefreshToken = Cookies.get(`${envAcronym}mp_rt`) !== undefined\n if (!hasToken || !hasRefreshToken) {\n const status = 401\n return Promise.reject({\n status,\n response: { status }\n })\n }\n\n const isRefreshing = typeof window !== 'undefined' ? JSON.parse(localStorage.getItem(`${envAcronym}mp_refreshing`)) : false\n if (autoRefresh && hasToken && !isRefreshing) {\n localStorage.setItem(`${envAcronym}mp_refreshing`, 'true')\n return refreshToken().finally(() => {\n localStorage.setItem(`${envAcronym}mp_refreshing`, 'false')\n })\n }\n return Promise.resolve()\n}\n","let instance = {} as Settings\n\nexport default class Settings {\n constructor(public theme: string, public domain: string, private env: string, public useFingerPrint: boolean = false, public pathsFingerPrint: string[] = []) {\n this.theme = theme\n this.domain = domain\n this.env = env\n instance = this\n this.useFingerPrint = useFingerPrint\n this.pathsFingerPrint = [\"connect/token\"].concat(pathsFingerPrint)\n }\n\n static getInstance() {\n if (instance) { return instance }\n }\n\n static setup(theme: string, domain: string, env: string, useFingerPrint: boolean = false, pathsFingerPrint: string[] = []) {\n return new Settings(theme, domain, env, useFingerPrint, pathsFingerPrint)\n }\n\n get urlAuth() {\n let url\n switch (this.env) {\n case 'local':\n url = 'https://devapi.mundipagg.com/auth/v2'\n break\n case 'staging':\n url = 'https://stgapi.mundipagg.com/auth/v2'\n break\n case 'production':\n url = 'https://api.mundipagg.com/auth/v2'\n break\n default:\n url = 'https://api.mundipagg.com/auth/v2'\n }\n return url\n }\n\n get envAcronym() {\n let acronym\n switch (this.env) {\n case 'local':\n acronym = 'local_'\n break\n case 'staging':\n acronym = 'stg_'\n break\n case 'production':\n acronym = ''\n break\n default:\n acronym = ''\n }\n return acronym\n }\n}\n","'use strict'\n\nimport axios from 'axios'\n\nexport const http = axios\n\nexport default http\n","import { requestInterceptor, errorRequestInterceptor, requestInterceptorNoHeader } from './requestInterceptor'\nimport { responseInterceptor, errorResponseInterceptor, responseInterceptorToken, errorResponseInterceptorToken } from './responseInterceptor'\n\nexport {\n requestInterceptor,\n errorRequestInterceptor,\n requestInterceptorNoHeader,\n responseInterceptor,\n errorResponseInterceptor,\n responseInterceptorToken,\n errorResponseInterceptorToken\n}\n","import Cookies from 'js-cookie'\nimport { verifyAuth, verifyFp, handleBodyRequest } from '../../commons/read'\nimport Settings from '../Settings'\n\nexport async function requestInterceptor(config) {\n const { envAcronym, theme } = Settings.getInstance()\n const token = Cookies.get(`${envAcronym}mp_tk`)\n const sessionId = sessionStorage.getItem(`${envAcronym}mp_si`)\n const authConfig = verifyAuth(config, token, sessionId)\n const cookiePreferences = Cookies.get(`${envAcronym}mp_pref`)\n const preferenceDefault = { timezone: 'E. South America Standard Time', language: 'pt-BR', appearance: { theme: 'mundipagg', mode: 'light' } }\n const pref = cookiePreferences ? JSON.parse(atob(cookiePreferences)) : preferenceDefault\n const request = await verifyFp(authConfig)\n\n request.headers['Accept-Language'] = pref.language\n request.headers['X-Theme'] = theme\n request.headers.Timezone = pref.timezone\n\n return request\n}\n\nexport function errorRequestInterceptor(error) {\n const body = handleBodyRequest(error)\n return Promise.reject(body)\n}\n\nexport function requestInterceptorNoHeader(config) {\n return config\n}\n","import { AxiosResponse } from 'axios'\nimport { handleBaseResponse, handleAutoRefresh } from '../../commons/read'\n\nfunction getData(response: any) {\n const values = Object.keys(response)\n return values.includes('data')\n ? getData(response['data'])\n : response;\n}\n\nexport function responseInterceptor(response: AxiosResponse) {\n const firstRequestResponseCallback = () => {\n const result = getData(response)\n return result\n }\n return handleAutoRefresh().then(firstRequestResponseCallback).catch(firstRequestResponseCallback)\n}\n\nexport function errorResponseInterceptor(error) {\n const baseResponse = handleBaseResponse(error)\n return handleAutoRefresh()\n .then(() => Promise.reject(baseResponse))\n .catch(() => Promise.reject(baseResponse))\n}\n\nexport function responseInterceptorToken(response) {\n return response.data || response\n}\n\nexport function errorResponseInterceptorToken(error) {\n const baseResponse = handleBaseResponse(error)\n return Promise.reject(baseResponse)\n}\n","import { IRequest, request } from './request'\nimport { requestNoHeader } from './requestNoHeader'\nimport { requestNoRefreshToken } from './requestNoRefreshToken'\n\nexport {\n request,\n requestNoHeader,\n requestNoRefreshToken,\n IRequest\n}\n","import http from '../http'\nimport { requestInterceptor, errorRequestInterceptor, errorResponseInterceptor, responseInterceptor } from '../interceptors'\n\nhttp.interceptors.request.use(requestInterceptor, errorRequestInterceptor)\nhttp.interceptors.response.use(responseInterceptor, errorResponseInterceptor)\n\nexport interface IRequest {\n get: (endpoint: string, params?: object) => Promise\n post: (endpoint: string, body: any, config?: object) => Promise\n delete: (endpoint: string, body: any) => Promise\n patch: (endpoint: string, body: any) => Promise\n put: (endpoint: string, body: any) => Promise\n}\n\nexport const request: IRequest = {\n get: (endpoint: string, params): Promise => http.get(endpoint, { params }).catch((e) => Promise.reject(e)) as any,\n post: (endpoint: string, body: any, config): Promise => http.post(endpoint, body, { ...config }).catch((e) => Promise.reject(e)) as any,\n delete: (endpoint: string, body: any): Promise => http.delete(endpoint, { data: body }).catch((e) => Promise.reject(e)) as any,\n patch: (endpoint: string, body: any): Promise => http.patch(endpoint, body).catch((e) => Promise.reject(e)) as any,\n put: (endpoint: string, body: any): Promise => http.put(endpoint, body).catch((e) => Promise.reject(e)) as any\n}\n","import axios from 'axios'\nimport { requestInterceptorNoHeader, errorRequestInterceptor, errorResponseInterceptorToken, responseInterceptorToken } from '../interceptors'\n\nexport const axiosInstance = axios.create()\n\naxiosInstance.interceptors.request.use(requestInterceptorNoHeader, errorRequestInterceptor)\naxiosInstance.interceptors.response.use(responseInterceptorToken, errorResponseInterceptorToken)\n\nexport const requestNoHeader = {\n get: (endpoint: string): Promise => axiosInstance.get(endpoint).catch(e => Promise.reject(e)) as any,\n post: (endpoint: string, body: any): Promise => axiosInstance.post(endpoint, body).catch(e => Promise.reject(e)) as any,\n delete: (endpoint: string, body: any): Promise => axiosInstance.delete(endpoint, { data: body }).catch(e => Promise.reject(e)) as any,\n put: (endpoint: string, body: any): Promise => axiosInstance.put(endpoint, body).catch(e => Promise.reject(e)) as any,\n patch: (endpoint: string, body: any): Promise => axiosInstance.patch(endpoint, body).catch(e => Promise.reject(e)) as any\n}\n","import axios from 'axios'\nimport { requestInterceptor, errorRequestInterceptor, errorResponseInterceptorToken, responseInterceptorToken } from '../interceptors'\n\nexport const axiosInstance = axios.create()\n\naxiosInstance.interceptors.request.use(requestInterceptor, errorRequestInterceptor)\naxiosInstance.interceptors.response.use(responseInterceptorToken, errorResponseInterceptorToken)\n\nexport const requestNoRefreshToken = {\n get: (endpoint: string, params?: object): Promise => axiosInstance.get(endpoint, params).catch(e => Promise.reject(e)) as any,\n post: (endpoint: string, body: any, config?: object): Promise => axiosInstance.post(endpoint, body, { ...config }).catch(e => Promise.reject(e)) as any,\n delete: (endpoint: string, body: any): Promise => axiosInstance.delete(endpoint, { data: body }).catch(e => Promise.reject(e)) as any,\n put: (endpoint: string, body: any): Promise => axiosInstance.put(endpoint, body).catch(e => Promise.reject(e)) as any,\n patch: (endpoint: string, body: any): Promise => axiosInstance.patch(endpoint, body).catch(e => Promise.reject(e)) as any\n}\n","import Cookies, { CookieAttributes } from 'js-cookie'\nimport { ISetUp, cookies } from '@dto'\n\nclass CookieService {\n private setup: ISetUp\n\n constructor(setup: ISetUp) { this.setup = setup }\n\n get hasWindow(): boolean {\n return typeof window !== 'undefined'\n }\n\n private save(key: cookies.EKey, data: any, att: CookieAttributes): void {\n Cookies.set(`${this.setup.acronym}${key}`, data, att)\n }\n\n public remove(key: cookies.EKey, path?: string) {\n Cookies.remove(`${this.setup.acronym}${key}`, { path, domain: this.setup.domain })\n }\n\n public get(key: cookies.EKey): T {\n const data = Cookies.get(`${this.setup.acronym}${key}`)\n return data ? JSON.parse(atob(data)) : data\n }\n\n public set(key: cookies.EKey, data: any, path?: string) {\n this.save(key, btoa(JSON.stringify(data)), { domain: this.setup.domain, path })\n }\n}\n\nexport default CookieService\n","import CookieService from './cookies'\nimport LocalService from './local'\nimport SessionService from './session'\nimport { ISetUp, TTheme, EAcronym, EUrl, IData, EDomain, TEnv } from '@dto'\n\nexport class Storage {\n private _env: TEnv\n private _theme: TTheme\n\n public cookie: CookieService\n public localStorage: LocalService\n public sessionStorage: SessionService\n\n constructor(data: IData) {\n this._env = data.environment\n this._theme = data.theme\n\n this.cookie = new CookieService(this.setup)\n this.localStorage = new LocalService(this.setup)\n this.sessionStorage = new SessionService(this.setup)\n }\n\n private get setup(): ISetUp {\n return {\n theme: this._theme,\n domain: this.domain,\n environment: this._env,\n urlBase: this.urlBase,\n acronym: this.acronym\n }\n }\n\n public get urlBase(): EUrl {\n return EUrl[this._env]\n }\n\n public get domain(): EDomain {\n return EDomain[this._theme]\n }\n\n public get acronym(): EAcronym {\n return EAcronym[this._env]\n }\n}\n","import { ISetUp, TApplication } from '@dto'\n\nclass LocalService {\n private setup: ISetUp\n\n constructor(setup: ISetUp) { this.setup = setup }\n\n get hasWindow(): boolean {\n return typeof window !== 'undefined'\n }\n\n public has(key: TApplication): boolean {\n return key in localStorage\n }\n\n public get(key: TApplication): string {\n return this.hasWindow ? localStorage.getItem(`${this.setup.acronym}mp_${key}`) : ''\n }\n\n public getJson(key: TApplication): T {\n const data = this.get(key)\n return data ? JSON.parse(atob(data)) : {}\n }\n\n public set(key: TApplication, value: string) {\n !this.hasWindow || localStorage.setItem(`${this.setup.acronym}mp_${key}`, value)\n }\n\n public setJson(key: TApplication, value: any) {\n this.set(key, btoa(JSON.stringify(value)))\n }\n\n public remove(key: TApplication) {\n !this.hasWindow || localStorage.removeItem(`${this.setup.acronym}mp_${key}`)\n }\n\n public clear() {\n !this.hasWindow || localStorage.clear()\n }\n}\n\nexport default LocalService\n","import { ISetUp, TApplication } from '@dto'\n\nclass SessionService {\n private setup: ISetUp\n\n constructor(setup: ISetUp) { this.setup = setup }\n\n get hasWindow(): boolean {\n return typeof window !== 'undefined'\n }\n\n public has(key: TApplication): boolean {\n return key in window.sessionStorage\n }\n\n public get(key: TApplication): string {\n return this.hasWindow ? sessionStorage.getItem(`${this.setup.acronym}mp_${key}`) : ''\n }\n\n public getJson(key: TApplication): T {\n const data = this.get(key)\n return data ? JSON.parse(atob(data)) : {}\n }\n\n public set(key: TApplication, value: string): void {\n // tslint:disable-next-line\n !this.hasWindow || sessionStorage.setItem(`${this.setup.acronym}mp_${key}`, value)\n }\n\n public setJson(key: TApplication, value: any): void {\n // tslint:disable-next-line\n this.set(key, btoa(JSON.stringify(value)))\n }\n\n public remove(key: TApplication): void {\n // tslint:disable-next-line\n !this.hasWindow || sessionStorage.removeItem(`${this.setup.acronym}mp_${key}`)\n }\n\n public clear(): void {\n // tslint:disable-next-line\n !this.hasWindow || sessionStorage.clear()\n }\n}\n\nexport default SessionService\n","class UtilsService {\n public paramSerializer(params: any = {}) {\n const queryParams = Object.entries(params) as string[][]\n let query: string\n if (queryParams.length > 0) {\n query = `?${new URLSearchParams(queryParams)}`\n }\n\n return query || ''\n }\n\n public paramSerializerURL(params = {}): string {\n let queryParams: any = Object.entries(params)\n if (queryParams.length > 0) {\n queryParams = queryParams.reduce((prev, actual, index) => {\n if (actual[0] === 'merchant_id' || actual[0] === 'merchantId') { actual[0] = 'merchants' }\n if (actual[0] === 'account_id' || actual[0] === 'accountId') { actual[0] = 'accounts' }\n return index === 0 ? prev + `${actual[0]}/${actual[1]}` : prev + `/${actual[0]}/${actual[1]}`\n }, '/')\n }\n return queryParams as string\n }\n}\n\nexport default UtilsService\n","export enum EKey {\n preference = 'mp_pref',\n redirect = 'mp_rd',\n token = 'mp_tk',\n refresh_token = 'mp_rt'\n}\n","export * as cookies from './cookie.dto'\n\nexport type TEnv = 'development' | 'staging' | 'production'\nexport type TApplication = 'profile' | 'dash' | 'company' | 'shop' | 'finance' | 'hubdash' | 'onboarding' | 'backoffice'\nexport type TTheme = 'mundipagg' | 'pagarme' | 'jpmorgan'\n\nexport enum EDomain {\n mundipagg = '.mundipagg.com',\n pagarme = '.pagar.me'\n}\n\nexport enum EUrl {\n production = 'https://api.mundipagg.com',\n staging = 'https://stgapi.mundipagg.com',\n development = 'https://devapi.mundipagg.com'\n}\n\nexport enum EAcronym {\n production = '',\n staging = 'stg_',\n development = 'dev_'\n}\n\nexport interface IData {\n environment: TEnv\n theme: TTheme\n}\n\nexport interface ISetUp {\n theme: TTheme\n domain: EDomain\n environment: TEnv\n urlBase: EUrl\n acronym: EAcronym\n}\n","module.exports = require(\"@fingerprintjs/fingerprintjs-pro\");","module.exports = require(\"axios\");","module.exports = require(\"js-cookie\");","module.exports = require(\"tslib\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","import { verifyAuth } from './modules/commons'\nimport { errorRequestInterceptor, errorResponseInterceptor, errorResponseInterceptorToken, requestInterceptor, requestInterceptorNoHeader, responseInterceptor, responseInterceptorToken } from './modules/http/interceptors'\nimport { request, requestNoRefreshToken, requestNoHeader, IRequest } from './modules/http/requests'\nimport Settings from './modules/http/Settings'\nimport { Storage } from './modules/storage'\nimport Utils from './modules/utils'\n\nexport {\n request,\n requestNoRefreshToken,\n requestNoHeader,\n Settings,\n IRequest,\n Storage,\n Utils,\n verifyAuth,\n requestInterceptor,\n errorRequestInterceptor,\n requestInterceptorNoHeader,\n responseInterceptor,\n errorResponseInterceptor,\n responseInterceptorToken,\n errorResponseInterceptorToken\n}\n","/* globals chrome: false */\n/* globals __dirname: false */\n/* globals require: false */\n/* globals Buffer: false */\n/* globals module: false */\n\n/**\n * Typo is a JavaScript implementation of a spellchecker using hunspell-style \n * dictionaries.\n */\n\nvar Typo;\n\n(function () {\n\"use strict\";\n\n/**\n * Typo constructor.\n *\n * @param {String} [dictionary] The locale code of the dictionary being used. e.g.,\n * \"en_US\". This is only used to auto-load dictionaries.\n * @param {String} [affData] The data from the dictionary's .aff file. If omitted\n * and Typo.js is being used in a Chrome extension, the .aff\n * file will be loaded automatically from\n * lib/typo/dictionaries/[dictionary]/[dictionary].aff\n * In other environments, it will be loaded from\n * [settings.dictionaryPath]/dictionaries/[dictionary]/[dictionary].aff\n * @param {String} [wordsData] The data from the dictionary's .dic file. If omitted\n * and Typo.js is being used in a Chrome extension, the .dic\n * file will be loaded automatically from\n * lib/typo/dictionaries/[dictionary]/[dictionary].dic\n * In other environments, it will be loaded from\n * [settings.dictionaryPath]/dictionaries/[dictionary]/[dictionary].dic\n * @param {Object} [settings] Constructor settings. Available properties are:\n * {String} [dictionaryPath]: path to load dictionary from in non-chrome\n * environment.\n * {Object} [flags]: flag information.\n * {Boolean} [asyncLoad]: If true, affData and wordsData will be loaded\n * asynchronously.\n * {Function} [loadedCallback]: Called when both affData and wordsData\n * have been loaded. Only used if asyncLoad is set to true. The parameter\n * is the instantiated Typo object.\n *\n * @returns {Typo} A Typo object.\n */\n\nTypo = function (dictionary, affData, wordsData, settings) {\n\tsettings = settings || {};\n\n\tthis.dictionary = null;\n\t\n\tthis.rules = {};\n\tthis.dictionaryTable = {};\n\t\n\tthis.compoundRules = [];\n\tthis.compoundRuleCodes = {};\n\t\n\tthis.replacementTable = [];\n\t\n\tthis.flags = settings.flags || {}; \n\t\n\tthis.memoized = {};\n\n\tthis.loaded = false;\n\t\n\tvar self = this;\n\t\n\tvar path;\n\t\n\t// Loop-control variables.\n\tvar i, j, _len, _jlen;\n\t\n\tif (dictionary) {\n\t\tself.dictionary = dictionary;\n\t\t\n\t\t// If the data is preloaded, just setup the Typo object.\n\t\tif (affData && wordsData) {\n\t\t\tsetup();\n\t\t}\n\t\t// Loading data for Chrome extentions.\n\t\telse if (typeof window !== 'undefined' && 'chrome' in window && 'extension' in window.chrome && 'getURL' in window.chrome.extension) {\n\t\t\tif (settings.dictionaryPath) {\n\t\t\t\tpath = settings.dictionaryPath;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tpath = \"typo/dictionaries\";\n\t\t\t}\n\t\t\t\n\t\t\tif (!affData) readDataFile(chrome.extension.getURL(path + \"/\" + dictionary + \"/\" + dictionary + \".aff\"), setAffData);\n\t\t\tif (!wordsData) readDataFile(chrome.extension.getURL(path + \"/\" + dictionary + \"/\" + dictionary + \".dic\"), setWordsData);\n\t\t}\n\t\telse {\n\t\t\tif (settings.dictionaryPath) {\n\t\t\t\tpath = settings.dictionaryPath;\n\t\t\t}\n\t\t\telse if (typeof __dirname !== 'undefined') {\n\t\t\t\tpath = __dirname + '/dictionaries';\n\t\t\t}\n\t\t\telse {\n\t\t\t\tpath = './dictionaries';\n\t\t\t}\n\t\t\t\n\t\t\tif (!affData) readDataFile(path + \"/\" + dictionary + \"/\" + dictionary + \".aff\", setAffData);\n\t\t\tif (!wordsData) readDataFile(path + \"/\" + dictionary + \"/\" + dictionary + \".dic\", setWordsData);\n\t\t}\n\t}\n\t\n\tfunction readDataFile(url, setFunc) {\n\t\tvar response = self._readFile(url, null, settings.asyncLoad);\n\t\t\n\t\tif (settings.asyncLoad) {\n\t\t\tresponse.then(function(data) {\n\t\t\t\tsetFunc(data);\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tsetFunc(response);\n\t\t}\n\t}\n\n\tfunction setAffData(data) {\n\t\taffData = data;\n\n\t\tif (wordsData) {\n\t\t\tsetup();\n\t\t}\n\t}\n\n\tfunction setWordsData(data) {\n\t\twordsData = data;\n\n\t\tif (affData) {\n\t\t\tsetup();\n\t\t}\n\t}\n\n\tfunction setup() {\n\t\tself.rules = self._parseAFF(affData);\n\t\t\n\t\t// Save the rule codes that are used in compound rules.\n\t\tself.compoundRuleCodes = {};\n\t\t\n\t\tfor (i = 0, _len = self.compoundRules.length; i < _len; i++) {\n\t\t\tvar rule = self.compoundRules[i];\n\t\t\t\n\t\t\tfor (j = 0, _jlen = rule.length; j < _jlen; j++) {\n\t\t\t\tself.compoundRuleCodes[rule[j]] = [];\n\t\t\t}\n\t\t}\n\t\t\n\t\t// If we add this ONLYINCOMPOUND flag to self.compoundRuleCodes, then _parseDIC\n\t\t// will do the work of saving the list of words that are compound-only.\n\t\tif (\"ONLYINCOMPOUND\" in self.flags) {\n\t\t\tself.compoundRuleCodes[self.flags.ONLYINCOMPOUND] = [];\n\t\t}\n\t\t\n\t\tself.dictionaryTable = self._parseDIC(wordsData);\n\t\t\n\t\t// Get rid of any codes from the compound rule codes that are never used \n\t\t// (or that were special regex characters). Not especially necessary... \n\t\tfor (i in self.compoundRuleCodes) {\n\t\t\tif (self.compoundRuleCodes[i].length === 0) {\n\t\t\t\tdelete self.compoundRuleCodes[i];\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Build the full regular expressions for each compound rule.\n\t\t// I have a feeling (but no confirmation yet) that this method of \n\t\t// testing for compound words is probably slow.\n\t\tfor (i = 0, _len = self.compoundRules.length; i < _len; i++) {\n\t\t\tvar ruleText = self.compoundRules[i];\n\t\t\t\n\t\t\tvar expressionText = \"\";\n\t\t\t\n\t\t\tfor (j = 0, _jlen = ruleText.length; j < _jlen; j++) {\n\t\t\t\tvar character = ruleText[j];\n\t\t\t\t\n\t\t\t\tif (character in self.compoundRuleCodes) {\n\t\t\t\t\texpressionText += \"(\" + self.compoundRuleCodes[character].join(\"|\") + \")\";\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\texpressionText += character;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tself.compoundRules[i] = new RegExp(expressionText, \"i\");\n\t\t}\n\t\t\n\t\tself.loaded = true;\n\t\t\n\t\tif (settings.asyncLoad && settings.loadedCallback) {\n\t\t\tsettings.loadedCallback(self);\n\t\t}\n\t}\n\t\n\treturn this;\n};\n\nTypo.prototype = {\n\t/**\n\t * Loads a Typo instance from a hash of all of the Typo properties.\n\t *\n\t * @param object obj A hash of Typo properties, probably gotten from a JSON.parse(JSON.stringify(typo_instance)).\n\t */\n\t\n\tload : function (obj) {\n\t\tfor (var i in obj) {\n\t\t\tif (obj.hasOwnProperty(i)) {\n\t\t\t\tthis[i] = obj[i];\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\t\n\t/**\n\t * Read the contents of a file.\n\t * \n\t * @param {String} path The path (relative) to the file.\n\t * @param {String} [charset=\"ISO8859-1\"] The expected charset of the file\n\t * @param {Boolean} async If true, the file will be read asynchronously. For node.js this does nothing, all\n\t * files are read synchronously.\n\t * @returns {String} The file data if async is false, otherwise a promise object. If running node.js, the data is\n\t * always returned.\n\t */\n\t\n\t_readFile : function (path, charset, async) {\n\t\tcharset = charset || \"utf8\";\n\t\t\n\t\tif (typeof XMLHttpRequest !== 'undefined') {\n\t\t\tvar promise;\n\t\t\tvar req = new XMLHttpRequest();\n\t\t\treq.open(\"GET\", path, async);\n\t\t\t\n\t\t\tif (async) {\n\t\t\t\tpromise = new Promise(function(resolve, reject) {\n\t\t\t\t\treq.onload = function() {\n\t\t\t\t\t\tif (req.status === 200) {\n\t\t\t\t\t\t\tresolve(req.responseText);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(req.statusText);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t\n\t\t\t\t\treq.onerror = function() {\n\t\t\t\t\t\treject(req.statusText);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\n\t\t\tif (req.overrideMimeType)\n\t\t\t\treq.overrideMimeType(\"text/plain; charset=\" + charset);\n\t\t\n\t\t\treq.send(null);\n\t\t\t\n\t\t\treturn async ? promise : req.responseText;\n\t\t}\n\t\telse if (typeof require !== 'undefined') {\n\t\t\t// Node.js\n\t\t\tvar fs = require(\"fs\");\n\t\t\t\n\t\t\ttry {\n\t\t\t\tif (fs.existsSync(path)) {\n\t\t\t\t\treturn fs.readFileSync(path, charset);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconsole.log(\"Path \" + path + \" does not exist.\");\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconsole.log(e);\n\t\t\t\treturn '';\n\t\t\t}\n\t\t}\n\t},\n\t\n\t/**\n\t * Parse the rules out from a .aff file.\n\t *\n\t * @param {String} data The contents of the affix file.\n\t * @returns object The rules from the file.\n\t */\n\t\n\t_parseAFF : function (data) {\n\t\tvar rules = {};\n\t\t\n\t\tvar line, subline, numEntries, lineParts;\n\t\tvar i, j, _len, _jlen;\n\t\t\n\t\tvar lines = data.split(/\\r?\\n/);\n\t\t\n\t\tfor (i = 0, _len = lines.length; i < _len; i++) {\n\t\t\t// Remove comment lines\n\t\t\tline = this._removeAffixComments(lines[i]);\n\t\t\tline = line.trim();\n\t\t\t\n\t\t\tif ( ! line ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tvar definitionParts = line.split(/\\s+/);\n\t\t\t\n\t\t\tvar ruleType = definitionParts[0];\n\t\t\t\n\t\t\tif (ruleType == \"PFX\" || ruleType == \"SFX\") {\n\t\t\t\tvar ruleCode = definitionParts[1];\n\t\t\t\tvar combineable = definitionParts[2];\n\t\t\t\tnumEntries = parseInt(definitionParts[3], 10);\n\t\t\t\t\n\t\t\t\tvar entries = [];\n\t\t\t\t\n\t\t\t\tfor (j = i + 1, _jlen = i + 1 + numEntries; j < _jlen; j++) {\n\t\t\t\t\tsubline = lines[j];\n\t\t\t\t\t\n\t\t\t\t\tlineParts = subline.split(/\\s+/);\n\t\t\t\t\tvar charactersToRemove = lineParts[2];\n\t\t\t\t\t\n\t\t\t\t\tvar additionParts = lineParts[3].split(\"/\");\n\t\t\t\t\t\n\t\t\t\t\tvar charactersToAdd = additionParts[0];\n\t\t\t\t\tif (charactersToAdd === \"0\") charactersToAdd = \"\";\n\t\t\t\t\t\n\t\t\t\t\tvar continuationClasses = this.parseRuleCodes(additionParts[1]);\n\t\t\t\t\t\n\t\t\t\t\tvar regexToMatch = lineParts[4];\n\t\t\t\t\t\n\t\t\t\t\tvar entry = {};\n\t\t\t\t\tentry.add = charactersToAdd;\n\t\t\t\t\t\n\t\t\t\t\tif (continuationClasses.length > 0) entry.continuationClasses = continuationClasses;\n\t\t\t\t\t\n\t\t\t\t\tif (regexToMatch !== \".\") {\n\t\t\t\t\t\tif (ruleType === \"SFX\") {\n\t\t\t\t\t\t\tentry.match = new RegExp(regexToMatch + \"$\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tentry.match = new RegExp(\"^\" + regexToMatch);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (charactersToRemove != \"0\") {\n\t\t\t\t\t\tif (ruleType === \"SFX\") {\n\t\t\t\t\t\t\tentry.remove = new RegExp(charactersToRemove + \"$\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tentry.remove = charactersToRemove;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tentries.push(entry);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trules[ruleCode] = { \"type\" : ruleType, \"combineable\" : (combineable == \"Y\"), \"entries\" : entries };\n\t\t\t\t\n\t\t\t\ti += numEntries;\n\t\t\t}\n\t\t\telse if (ruleType === \"COMPOUNDRULE\") {\n\t\t\t\tnumEntries = parseInt(definitionParts[1], 10);\n\t\t\t\t\n\t\t\t\tfor (j = i + 1, _jlen = i + 1 + numEntries; j < _jlen; j++) {\n\t\t\t\t\tline = lines[j];\n\t\t\t\t\t\n\t\t\t\t\tlineParts = line.split(/\\s+/);\n\t\t\t\t\tthis.compoundRules.push(lineParts[1]);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ti += numEntries;\n\t\t\t}\n\t\t\telse if (ruleType === \"REP\") {\n\t\t\t\tlineParts = line.split(/\\s+/);\n\t\t\t\t\n\t\t\t\tif (lineParts.length === 3) {\n\t\t\t\t\tthis.replacementTable.push([ lineParts[1], lineParts[2] ]);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// ONLYINCOMPOUND\n\t\t\t\t// COMPOUNDMIN\n\t\t\t\t// FLAG\n\t\t\t\t// KEEPCASE\n\t\t\t\t// NEEDAFFIX\n\t\t\t\t\n\t\t\t\tthis.flags[ruleType] = definitionParts[1];\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn rules;\n\t},\n\t\n\t/**\n\t * Removes comments.\n\t *\n\t * @param {String} data A line from an affix file.\n\t * @return {String} The cleaned-up line.\n\t */\n\t\n\t_removeAffixComments : function (line) {\n\t\t// This used to remove any string starting with '#' up to the end of the line,\n\t\t// but some COMPOUNDRULE definitions include '#' as part of the rule.\n\t\t// So, only remove lines that begin with a comment, optionally preceded by whitespace.\n\t\tif ( line.match( /^\\s*#/, \"\" ) ) {\n\t\t\treturn '';\n\t\t}\n\t\t\n\t\treturn line;\n\t},\n\t\n\t/**\n\t * Parses the words out from the .dic file.\n\t *\n\t * @param {String} data The data from the dictionary file.\n\t * @returns object The lookup table containing all of the words and\n\t * word forms from the dictionary.\n\t */\n\t\n\t_parseDIC : function (data) {\n\t\tdata = this._removeDicComments(data);\n\t\t\n\t\tvar lines = data.split(/\\r?\\n/);\n\t\tvar dictionaryTable = {};\n\t\t\n\t\tfunction addWord(word, rules) {\n\t\t\t// Some dictionaries will list the same word multiple times with different rule sets.\n\t\t\tif (!dictionaryTable.hasOwnProperty(word)) {\n\t\t\t\tdictionaryTable[word] = null;\n\t\t\t}\n\t\t\t\n\t\t\tif (rules.length > 0) {\n\t\t\t\tif (dictionaryTable[word] === null) {\n\t\t\t\t\tdictionaryTable[word] = [];\n\t\t\t\t}\n\n\t\t\t\tdictionaryTable[word].push(rules);\n\t\t\t}\n\t\t}\n\t\t\n\t\t// The first line is the number of words in the dictionary.\n\t\tfor (var i = 1, _len = lines.length; i < _len; i++) {\n\t\t\tvar line = lines[i];\n\t\t\t\n\t\t\tif (!line) {\n\t\t\t\t// Ignore empty lines.\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar parts = line.split(\"/\", 2);\n\t\t\t\n\t\t\tvar word = parts[0];\n\n\t\t\t// Now for each affix rule, generate that form of the word.\n\t\t\tif (parts.length > 1) {\n\t\t\t\tvar ruleCodesArray = this.parseRuleCodes(parts[1]);\n\t\t\t\t\n\t\t\t\t// Save the ruleCodes for compound word situations.\n\t\t\t\tif (!(\"NEEDAFFIX\" in this.flags) || ruleCodesArray.indexOf(this.flags.NEEDAFFIX) == -1) {\n\t\t\t\t\taddWord(word, ruleCodesArray);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor (var j = 0, _jlen = ruleCodesArray.length; j < _jlen; j++) {\n\t\t\t\t\tvar code = ruleCodesArray[j];\n\t\t\t\t\t\n\t\t\t\t\tvar rule = this.rules[code];\n\t\t\t\t\t\n\t\t\t\t\tif (rule) {\n\t\t\t\t\t\tvar newWords = this._applyRule(word, rule);\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (var ii = 0, _iilen = newWords.length; ii < _iilen; ii++) {\n\t\t\t\t\t\t\tvar newWord = newWords[ii];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\taddWord(newWord, []);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (rule.combineable) {\n\t\t\t\t\t\t\t\tfor (var k = j + 1; k < _jlen; k++) {\n\t\t\t\t\t\t\t\t\tvar combineCode = ruleCodesArray[k];\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tvar combineRule = this.rules[combineCode];\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tif (combineRule) {\n\t\t\t\t\t\t\t\t\t\tif (combineRule.combineable && (rule.type != combineRule.type)) {\n\t\t\t\t\t\t\t\t\t\t\tvar otherNewWords = this._applyRule(newWord, combineRule);\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tfor (var iii = 0, _iiilen = otherNewWords.length; iii < _iiilen; iii++) {\n\t\t\t\t\t\t\t\t\t\t\t\tvar otherNewWord = otherNewWords[iii];\n\t\t\t\t\t\t\t\t\t\t\t\taddWord(otherNewWord, []);\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\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\t\n\t\t\t\t\tif (code in this.compoundRuleCodes) {\n\t\t\t\t\t\tthis.compoundRuleCodes[code].push(word);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\taddWord(word.trim(), []);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn dictionaryTable;\n\t},\n\t\n\t\n\t/**\n\t * Removes comment lines and then cleans up blank lines and trailing whitespace.\n\t *\n\t * @param {String} data The data from a .dic file.\n\t * @return {String} The cleaned-up data.\n\t */\n\t\n\t_removeDicComments : function (data) {\n\t\t// I can't find any official documentation on it, but at least the de_DE\n\t\t// dictionary uses tab-indented lines as comments.\n\t\t\n\t\t// Remove comments\n\t\tdata = data.replace(/^\\t.*$/mg, \"\");\n\t\t\n\t\treturn data;\n\t},\n\t\n\tparseRuleCodes : function (textCodes) {\n\t\tif (!textCodes) {\n\t\t\treturn [];\n\t\t}\n\t\telse if (!(\"FLAG\" in this.flags)) {\n\t\t\t// The flag symbols are single characters\n\t\t\treturn textCodes.split(\"\");\n\t\t}\n\t\telse if (this.flags.FLAG === \"long\") {\n\t\t\t// The flag symbols are two characters long.\n\t\t\tvar flags = [];\n\t\t\t\n\t\t\tfor (var i = 0, _len = textCodes.length; i < _len; i += 2) {\n\t\t\t\tflags.push(textCodes.substr(i, 2));\n\t\t\t}\n\t\t\t\n\t\t\treturn flags;\n\t\t}\n\t\telse if (this.flags.FLAG === \"num\") {\n\t\t\t// The flag symbols are a CSV list of numbers.\n\t\t\treturn textCodes.split(\",\");\n\t\t}\n\t\telse if (this.flags.FLAG === \"UTF-8\") {\n\t\t\t// The flags are single UTF-8 characters.\n\t\t\t// @see https://github.com/cfinke/Typo.js/issues/57\n\t\t\treturn Array.from(textCodes);\n\t\t}\n\t\telse {\n\t\t\t// It's possible that this fallback case will not work for all FLAG values,\n\t\t\t// but I think it's more likely to work than not returning anything at all.\n\t\t\treturn textCodes.split(\"\");\n\t\t}\n\t},\n\t\n\t/**\n\t * Applies an affix rule to a word.\n\t *\n\t * @param {String} word The base word.\n\t * @param {Object} rule The affix rule.\n\t * @returns {String[]} The new words generated by the rule.\n\t */\n\t\n\t_applyRule : function (word, rule) {\n\t\tvar entries = rule.entries;\n\t\tvar newWords = [];\n\t\t\n\t\tfor (var i = 0, _len = entries.length; i < _len; i++) {\n\t\t\tvar entry = entries[i];\n\t\t\t\n\t\t\tif (!entry.match || word.match(entry.match)) {\n\t\t\t\tvar newWord = word;\n\t\t\t\t\n\t\t\t\tif (entry.remove) {\n\t\t\t\t\tnewWord = newWord.replace(entry.remove, \"\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (rule.type === \"SFX\") {\n\t\t\t\t\tnewWord = newWord + entry.add;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnewWord = entry.add + newWord;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tnewWords.push(newWord);\n\t\t\t\t\n\t\t\t\tif (\"continuationClasses\" in entry) {\n\t\t\t\t\tfor (var j = 0, _jlen = entry.continuationClasses.length; j < _jlen; j++) {\n\t\t\t\t\t\tvar continuationRule = this.rules[entry.continuationClasses[j]];\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (continuationRule) {\n\t\t\t\t\t\t\tnewWords = newWords.concat(this._applyRule(newWord, continuationRule));\n\t\t\t\t\t\t}\n\t\t\t\t\t\t/*\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t// This shouldn't happen, but it does, at least in the de_DE dictionary.\n\t\t\t\t\t\t\t// I think the author mistakenly supplied lower-case rule codes instead \n\t\t\t\t\t\t\t// of upper-case.\n\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\t\n\t\treturn newWords;\n\t},\n\t\n\t/**\n\t * Checks whether a word or a capitalization variant exists in the current dictionary.\n\t * The word is trimmed and several variations of capitalizations are checked.\n\t * If you want to check a word without any changes made to it, call checkExact()\n\t *\n\t * @see http://blog.stevenlevithan.com/archives/faster-trim-javascript re:trimming function\n\t *\n\t * @param {String} aWord The word to check.\n\t * @returns {Boolean}\n\t */\n\t\n\tcheck : function (aWord) {\n\t\tif (!this.loaded) {\n\t\t\tthrow \"Dictionary not loaded.\";\n\t\t}\n\t\t\n\t\t// Remove leading and trailing whitespace\n\t\tvar trimmedWord = aWord.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\t\t\n\t\tif (this.checkExact(trimmedWord)) {\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\t// The exact word is not in the dictionary.\n\t\tif (trimmedWord.toUpperCase() === trimmedWord) {\n\t\t\t// The word was supplied in all uppercase.\n\t\t\t// Check for a capitalized form of the word.\n\t\t\tvar capitalizedWord = trimmedWord[0] + trimmedWord.substring(1).toLowerCase();\n\t\t\t\n\t\t\tif (this.hasFlag(capitalizedWord, \"KEEPCASE\")) {\n\t\t\t\t// Capitalization variants are not allowed for this word.\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t\n\t\t\tif (this.checkExact(capitalizedWord)) {\n\t\t\t\t// The all-caps word is a capitalized word spelled correctly.\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (this.checkExact(trimmedWord.toLowerCase())) {\n\t\t\t\t// The all-caps is a lowercase word spelled correctly.\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\tvar uncapitalizedWord = trimmedWord[0].toLowerCase() + trimmedWord.substring(1);\n\t\t\n\t\tif (uncapitalizedWord !== trimmedWord) {\n\t\t\tif (this.hasFlag(uncapitalizedWord, \"KEEPCASE\")) {\n\t\t\t\t// Capitalization variants are not allowed for this word.\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t\n\t\t\t// Check for an uncapitalized form\n\t\t\tif (this.checkExact(uncapitalizedWord)) {\n\t\t\t\t// The word is spelled correctly but with the first letter capitalized.\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t},\n\t\n\t/**\n\t * Checks whether a word exists in the current dictionary.\n\t *\n\t * @param {String} word The word to check.\n\t * @returns {Boolean}\n\t */\n\t\n\tcheckExact : function (word) {\n\t\tif (!this.loaded) {\n\t\t\tthrow \"Dictionary not loaded.\";\n\t\t}\n\n\t\tvar ruleCodes = this.dictionaryTable[word];\n\t\t\n\t\tvar i, _len;\n\t\t\n\t\tif (typeof ruleCodes === 'undefined') {\n\t\t\t// Check if this might be a compound word.\n\t\t\tif (\"COMPOUNDMIN\" in this.flags && word.length >= this.flags.COMPOUNDMIN) {\n\t\t\t\tfor (i = 0, _len = this.compoundRules.length; i < _len; i++) {\n\t\t\t\t\tif (word.match(this.compoundRules[i])) {\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\t\telse if (ruleCodes === null) {\n\t\t\t// a null (but not undefined) value for an entry in the dictionary table\n\t\t\t// means that the word is in the dictionary but has no flags.\n\t\t\treturn true;\n\t\t}\n\t\telse if (typeof ruleCodes === 'object') { // this.dictionary['hasOwnProperty'] will be a function.\n\t\t\tfor (i = 0, _len = ruleCodes.length; i < _len; i++) {\n\t\t\t\tif (!this.hasFlag(word, \"ONLYINCOMPOUND\", ruleCodes[i])) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\t\n\t/**\n\t * Looks up whether a given word is flagged with a given flag.\n\t *\n\t * @param {String} word The word in question.\n\t * @param {String} flag The flag in question.\n\t * @return {Boolean}\n\t */\n\t \n\thasFlag : function (word, flag, wordFlags) {\n\t\tif (!this.loaded) {\n\t\t\tthrow \"Dictionary not loaded.\";\n\t\t}\n\n\t\tif (flag in this.flags) {\n\t\t\tif (typeof wordFlags === 'undefined') {\n\t\t\t\twordFlags = Array.prototype.concat.apply([], this.dictionaryTable[word]);\n\t\t\t}\n\t\t\t\n\t\t\tif (wordFlags && wordFlags.indexOf(this.flags[flag]) !== -1) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t},\n\t\n\t/**\n\t * Returns a list of suggestions for a misspelled word.\n\t *\n\t * @see http://www.norvig.com/spell-correct.html for the basis of this suggestor.\n\t * This suggestor is primitive, but it works.\n\t *\n\t * @param {String} word The misspelling.\n\t * @param {Number} [limit=5] The maximum number of suggestions to return.\n\t * @returns {String[]} The array of suggestions.\n\t */\n\t\n\talphabet : \"\",\n\t\n\tsuggest : function (word, limit) {\n\t\tif (!this.loaded) {\n\t\t\tthrow \"Dictionary not loaded.\";\n\t\t}\n\n\t\tlimit = limit || 5;\n\n\t\tif (this.memoized.hasOwnProperty(word)) {\n\t\t\tvar memoizedLimit = this.memoized[word]['limit'];\n\n\t\t\t// Only return the cached list if it's big enough or if there weren't enough suggestions\n\t\t\t// to fill a smaller limit.\n\t\t\tif (limit <= memoizedLimit || this.memoized[word]['suggestions'].length < memoizedLimit) {\n\t\t\t\treturn this.memoized[word]['suggestions'].slice(0, limit);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (this.check(word)) return [];\n\t\t\n\t\t// Check the replacement table.\n\t\tfor (var i = 0, _len = this.replacementTable.length; i < _len; i++) {\n\t\t\tvar replacementEntry = this.replacementTable[i];\n\t\t\t\n\t\t\tif (word.indexOf(replacementEntry[0]) !== -1) {\n\t\t\t\tvar correctedWord = word.replace(replacementEntry[0], replacementEntry[1]);\n\t\t\t\t\n\t\t\t\tif (this.check(correctedWord)) {\n\t\t\t\t\treturn [ correctedWord ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (!this.alphabet) {\n\t\t\t// Use the English alphabet as the default. Problematic, but backwards-compatible.\n\t\t\tthis.alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\t\t\t\n\t\t\t// Any characters defined in the affix file as substitutions can go in the alphabet too.\n\t\t\t// Note that dictionaries do not include the entire alphabet in the TRY flag when it's there.\n\t\t\t// For example, Q is not in the default English TRY list; that's why having the default\n\t\t\t// alphabet above is useful.\n\t\t\tif ( 'TRY' in this.flags ) {\n\t\t\t\tthis.alphabet += this.flags['TRY'];\n\t\t\t}\n\t\t\t\n\t\t\t// Plus any additional characters specifically defined as being allowed in words.\n\t\t\tif ( 'WORDCHARS' in this.flags ) {\n\t\t\t\tthis.alphabet += this.flags['WORDCHARS'];\n\t\t\t}\n\t\t\t\n\t\t\t// Remove any duplicates.\n\t\t\tvar alphaArray = this.alphabet.split(\"\");\n\t\t\talphaArray.sort();\n\n\t\t\tvar alphaHash = {};\n\t\t\tfor ( var i = 0; i < alphaArray.length; i++ ) {\n\t\t\t\talphaHash[ alphaArray[i] ] = true;\n\t\t\t}\n\t\t\t\n\t\t\tthis.alphabet = '';\n\t\t\t\n\t\t\tfor ( var i in alphaHash ) {\n\t\t\t\tthis.alphabet += i;\n\t\t\t}\n\t\t}\n\t\t\n\t\tvar self = this;\n\n\t\t/**\n\t\t * Returns a hash keyed by all of the strings that can be made by making a single edit to the word (or words in) `words`\n\t\t * The value of each entry is the number of unique ways that the resulting word can be made.\n\t\t *\n\t\t * @arg mixed words Either a hash keyed by words or a string word to operate on.\n\t\t * @arg bool known_only Whether this function should ignore strings that are not in the dictionary.\n\t\t */\n\t\tfunction edits1(words, known_only) {\n\t\t\tvar rv = {};\n\t\t\t\n\t\t\tvar i, j, _iilen, _len, _jlen, _edit;\n\n\t\t\tvar alphabetLength = self.alphabet.length;\n\t\t\t\n\t\t\tif (typeof words == 'string') {\n\t\t\t\tvar word = words;\n\t\t\t\twords = {};\n\t\t\t\twords[word] = true;\n\t\t\t}\n\n\t\t\tfor (var word in words) {\n\t\t\t\tfor (i = 0, _len = word.length + 1; i < _len; i++) {\n\t\t\t\t\tvar s = [ word.substring(0, i), word.substring(i) ];\n\t\t\t\t\n\t\t\t\t\t// Remove a letter.\n\t\t\t\t\tif (s[1]) {\n\t\t\t\t\t\t_edit = s[0] + s[1].substring(1);\n\n\t\t\t\t\t\tif (!known_only || self.check(_edit)) {\n\t\t\t\t\t\t\tif (!(_edit in rv)) {\n\t\t\t\t\t\t\t\trv[_edit] = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\trv[_edit] += 1;\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\t\n\t\t\t\t\t// Transpose letters\n\t\t\t\t\t// Eliminate transpositions of identical letters\n\t\t\t\t\tif (s[1].length > 1 && s[1][1] !== s[1][0]) {\n\t\t\t\t\t\t_edit = s[0] + s[1][1] + s[1][0] + s[1].substring(2);\n\n\t\t\t\t\t\tif (!known_only || self.check(_edit)) {\n\t\t\t\t\t\t\tif (!(_edit in rv)) {\n\t\t\t\t\t\t\t\trv[_edit] = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\trv[_edit] += 1;\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\tif (s[1]) {\n\t\t\t\t\t\t// Replace a letter with another letter.\n\n\t\t\t\t\t\tvar lettercase = (s[1].substring(0,1).toUpperCase() === s[1].substring(0,1)) ? 'uppercase' : 'lowercase';\n\n\t\t\t\t\t\tfor (j = 0; j < alphabetLength; j++) {\n\t\t\t\t\t\t\tvar replacementLetter = self.alphabet[j];\n\n\t\t\t\t\t\t\t// Set the case of the replacement letter to the same as the letter being replaced.\n\t\t\t\t\t\t\tif ( 'uppercase' === lettercase ) {\n\t\t\t\t\t\t\t\treplacementLetter = replacementLetter.toUpperCase();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Eliminate replacement of a letter by itself\n\t\t\t\t\t\t\tif (replacementLetter != s[1].substring(0,1)){\n\t\t\t\t\t\t\t\t_edit = s[0] + replacementLetter + s[1].substring(1);\n\n\t\t\t\t\t\t\t\tif (!known_only || self.check(_edit)) {\n\t\t\t\t\t\t\t\t\tif (!(_edit in rv)) {\n\t\t\t\t\t\t\t\t\t\trv[_edit] = 1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\trv[_edit] += 1;\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}\n\n\t\t\t\t\tif (s[1]) {\n\t\t\t\t\t\t// Add a letter between each letter.\n\t\t\t\t\t\tfor (j = 0; j < alphabetLength; j++) {\n\t\t\t\t\t\t\t// If the letters on each side are capitalized, capitalize the replacement.\n\t\t\t\t\t\t\tvar lettercase = (s[0].substring(-1).toUpperCase() === s[0].substring(-1) && s[1].substring(0,1).toUpperCase() === s[1].substring(0,1)) ? 'uppercase' : 'lowercase';\n\n\t\t\t\t\t\t\tvar replacementLetter = self.alphabet[j];\n\n\t\t\t\t\t\t\tif ( 'uppercase' === lettercase ) {\n\t\t\t\t\t\t\t\treplacementLetter = replacementLetter.toUpperCase();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_edit = s[0] + replacementLetter + s[1];\n\n\t\t\t\t\t\t\tif (!known_only || self.check(_edit)) {\n\t\t\t\t\t\t\t\tif (!(_edit in rv)) {\n\t\t\t\t\t\t\t\t\trv[_edit] = 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\trv[_edit] += 1;\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\t\t\t}\n\t\t\t\n\t\t\treturn rv;\n\t\t}\n\n\t\tfunction correct(word) {\n\t\t\t// Get the edit-distance-1 and edit-distance-2 forms of this word.\n\t\t\tvar ed1 = edits1(word);\n\t\t\tvar ed2 = edits1(ed1, true);\n\t\t\t\n\t\t\t// Sort the edits based on how many different ways they were created.\n\t\t\tvar weighted_corrections = ed2;\n\t\t\t\n\t\t\tfor (var ed1word in ed1) {\n\t\t\t\tif (!self.check(ed1word)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (ed1word in weighted_corrections) {\n\t\t\t\t\tweighted_corrections[ed1word] += ed1[ed1word];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tweighted_corrections[ed1word] = ed1[ed1word];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tvar i, _len;\n\n\t\t\tvar sorted_corrections = [];\n\t\t\t\n\t\t\tfor (i in weighted_corrections) {\n\t\t\t\tif (weighted_corrections.hasOwnProperty(i)) {\n\t\t\t\t\tsorted_corrections.push([ i, weighted_corrections[i] ]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction sorter(a, b) {\n\t\t\t\tvar a_val = a[1];\n\t\t\t\tvar b_val = b[1];\n\t\t\t\tif (a_val < b_val) {\n\t\t\t\t\treturn -1;\n\t\t\t\t} else if (a_val > b_val) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\t// @todo If a and b are equally weighted, add our own weight based on something like the key locations on this language's default keyboard.\n\t\t\t\treturn b[0].localeCompare(a[0]);\n\t\t\t}\n\t\t\t\n\t\t\tsorted_corrections.sort(sorter).reverse();\n\n\t\t\tvar rv = [];\n\n\t\t\tvar capitalization_scheme = \"lowercase\";\n\t\t\t\n\t\t\tif (word.toUpperCase() === word) {\n\t\t\t\tcapitalization_scheme = \"uppercase\";\n\t\t\t}\n\t\t\telse if (word.substr(0, 1).toUpperCase() + word.substr(1).toLowerCase() === word) {\n\t\t\t\tcapitalization_scheme = \"capitalized\";\n\t\t\t}\n\t\t\t\n\t\t\tvar working_limit = limit;\n\n\t\t\tfor (i = 0; i < Math.min(working_limit, sorted_corrections.length); i++) {\n\t\t\t\tif (\"uppercase\" === capitalization_scheme) {\n\t\t\t\t\tsorted_corrections[i][0] = sorted_corrections[i][0].toUpperCase();\n\t\t\t\t}\n\t\t\t\telse if (\"capitalized\" === capitalization_scheme) {\n\t\t\t\t\tsorted_corrections[i][0] = sorted_corrections[i][0].substr(0, 1).toUpperCase() + sorted_corrections[i][0].substr(1);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (!self.hasFlag(sorted_corrections[i][0], \"NOSUGGEST\") && rv.indexOf(sorted_corrections[i][0]) == -1) {\n\t\t\t\t\trv.push(sorted_corrections[i][0]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// If one of the corrections is not eligible as a suggestion , make sure we still return the right number of suggestions.\n\t\t\t\t\tworking_limit++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn rv;\n\t\t}\n\t\t\n\t\tthis.memoized[word] = {\n\t\t\t'suggestions': correct(word),\n\t\t\t'limit': limit\n\t\t};\n\n\t\treturn this.memoized[word]['suggestions'];\n\t}\n};\n})();\n\n// Support for use as a node.js module.\nif (typeof module !== 'undefined') {\n\tmodule.exports = Typo;\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"codemirror\")):\"function\"==typeof define&&define.amd?define([\"codemirror\"],t):\"object\"==typeof exports?exports.VueCodemirror=t(require(\"codemirror\")):e.VueCodemirror=t(e.codemirror)}(this,function(e){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"/\",t(t.s=3)}([function(t,n){t.exports=e},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(0),o=function(e){return e&&e.__esModule?e:{default:e}}(r),i=window.CodeMirror||o.default;\"function\"!=typeof Object.assign&&Object.defineProperty(Object,\"assign\",{value:function(e,t){if(null==e)throw new TypeError(\"Cannot convert undefined or null to object\");for(var n=Object(e),r=1;r 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new Promise(function (resolve, reject) {\n if (typeof document === \"undefined\") {\n return;\n }\n\n var head = document.head || document.getElementsByTagName(\"head\")[0];\n var script = document.createElement(\"script\");\n script.async = true;\n script.src = url;\n script.defer = options.defer;\n\n if (options.preconnectOrigin) {\n var link = document.createElement(\"link\");\n link.href = options.preconnectOrigin;\n link.rel = \"preconnect\";\n head.appendChild(link);\n }\n\n head.appendChild(script);\n script.onload = resolve;\n script.onerror = reject;\n });\n};\nvar isFn = function isFn(fn) {\n return typeof fn === \"function\";\n};\nvar isObject = function isObject(item) {\n return item && _typeof(item) === \"object\" && !Array.isArray(item);\n};\nvar mergeDeep = function mergeDeep(target) {\n for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n if (!sources.length) {\n return target;\n }\n\n var source = sources.shift();\n\n if (!isObject(target) || !isObject(source)) {\n return;\n }\n\n for (var key in source) {\n if (isObject(source[key])) {\n if (!target[key]) {\n Object.assign(target, _defineProperty({}, key, {}));\n }\n\n mergeDeep(target[key], source[key]);\n } else {\n Object.assign(target, _defineProperty({}, key, source[key]));\n }\n }\n\n return mergeDeep.apply(void 0, [target].concat(sources));\n};\nvar isBrowser = function isBrowser() {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return false;\n }\n\n return true;\n};\nvar warn = function warn(text) {\n var shouldLog = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (!isBrowser() || process.env.NODE_ENV === \"production\") {\n return;\n }\n\n if (!shouldLog) {\n return;\n }\n\n console.warn(\"[vue-gtag] \".concat(text));\n};\nvar validateScreenviewShape = function validateScreenviewShape() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n warn(\"Missing \\\"appName\\\" property inside the plugin options.\", obj.app_name == null);\n warn(\"Missing \\\"name\\\" property in the route.\", obj.screen_name == null);\n return obj;\n};\nfunction getPathWithBase() {\n var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n var pathAsArray = path.split(\"/\");\n var baseAsArray = base.split(\"/\");\n\n if (pathAsArray[0] === \"\" && base[base.length - 1] === \"/\") {\n pathAsArray.shift();\n }\n\n return baseAsArray.join(\"/\") + pathAsArray.join(\"/\");\n}\n\nvar getDefaultParams = function getDefaultParams() {\n return {\n bootstrap: true,\n onReady: null,\n onError: null,\n onBeforeTrack: null,\n onAfterTrack: null,\n pageTrackerTemplate: null,\n customResourceURL: \"https://www.googletagmanager.com/gtag/js\",\n customPreconnectOrigin: \"https://www.googletagmanager.com\",\n deferScriptLoad: false,\n pageTrackerExcludedRoutes: [],\n pageTrackerEnabled: true,\n enabled: true,\n disableScriptLoad: false,\n pageTrackerScreenviewEnabled: false,\n appName: null,\n pageTrackerUseFullPath: false,\n pageTrackerPrependBase: true,\n pageTrackerSkipSamePath: true,\n globalDataLayerName: \"dataLayer\",\n globalObjectName: \"gtag\",\n defaultGroupName: \"default\",\n includes: null,\n config: {\n id: null,\n params: {\n send_page_view: false\n }\n }\n };\n};\nvar params = {};\nvar setOptions = function setOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaultParams = getDefaultParams();\n params = mergeDeep(defaultParams, options);\n};\nvar getOptions = function getOptions() {\n return params;\n};\n\nvar query = (function () {\n var _window;\n\n var _getOptions = getOptions(),\n globalObjectName = _getOptions.globalObjectName;\n\n if (!isBrowser() || typeof window[globalObjectName] === \"undefined\") {\n return;\n }\n\n (_window = window)[globalObjectName].apply(_window, arguments);\n});\n\nvar config = (function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _getOptions = getOptions(),\n config = _getOptions.config,\n includes = _getOptions.includes;\n\n query.apply(void 0, [\"config\", config.id].concat(args));\n\n if (Array.isArray(includes)) {\n includes.forEach(function (domain) {\n query.apply(void 0, [\"config\", domain.id].concat(args));\n });\n }\n});\n\nvar assignGlobalProperty = function assignGlobalProperty(id, value) {\n if (!isBrowser()) {\n return;\n }\n\n window[\"ga-disable-\".concat(id)] = value;\n};\n\nvar disable = (function () {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n var _getOptions = getOptions(),\n config = _getOptions.config,\n includes = _getOptions.includes;\n\n assignGlobalProperty(config.id, value);\n\n if (Array.isArray(includes)) {\n includes.forEach(function (domain) {\n return assignGlobalProperty(domain.id, value);\n });\n }\n});\n\nvar optOut = (function () {\n disable(true);\n});\n\nvar optIn = (function () {\n disable(false);\n});\n\nvar router;\nvar setRouter = function setRouter(instance) {\n router = instance;\n};\nvar getRouter = function getRouter() {\n return router;\n};\n\nvar event = (function (name) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var _getOptions = getOptions(),\n includes = _getOptions.includes,\n defaultGroupName = _getOptions.defaultGroupName;\n\n if (params.send_to == null && Array.isArray(includes) && includes.length) {\n params.send_to = includes.map(function (domain) {\n return domain.id;\n }).concat(defaultGroupName);\n }\n\n query(\"event\", name, params);\n});\n\nvar pageview = (function (param) {\n if (!isBrowser()) {\n return;\n }\n\n var template;\n\n if (typeof param === \"string\") {\n template = {\n page_path: param\n };\n } else if (param.path || param.fullPath) {\n var _getOptions = getOptions(),\n useFullPath = _getOptions.pageTrackerUseFullPath,\n useBase = _getOptions.pageTrackerPrependBase;\n\n var router = getRouter();\n var base = router && router.options.base;\n var path = useFullPath ? param.fullPath : param.path;\n template = _objectSpread2(_objectSpread2({}, param.name && {\n page_title: param.name\n }), {}, {\n page_path: useBase ? getPathWithBase(path, base) : path\n });\n } else {\n template = param;\n }\n\n if (template.page_location == null) {\n template.page_location = window.location.href;\n }\n\n if (template.send_page_view == null) {\n template.send_page_view = true;\n }\n\n event(\"page_view\", template);\n});\n\nvar screenview = (function (param) {\n var _getOptions = getOptions(),\n appName = _getOptions.appName;\n\n if (!param) {\n return;\n }\n\n var template;\n\n if (typeof param === \"string\") {\n template = {\n screen_name: param\n };\n } else {\n template = param;\n }\n\n template.app_name = template.app_name || appName;\n event(\"screen_view\", template);\n});\n\nvar exception = (function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n event.apply(void 0, [\"exception\"].concat(args));\n});\n\nvar linker = (function (params) {\n config(\"linker\", params);\n});\n\nvar time = (function (params) {\n event(\"timing_complete\", params);\n});\n\nvar set = (function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n query.apply(void 0, [\"set\"].concat(args));\n});\n\nvar refund = (function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n event.apply(void 0, [\"refund\"].concat(args));\n});\n\nvar purchase = (function (params) {\n event(\"purchase\", params);\n});\n\nvar customMap = (function (map) {\n config({\n custom_map: map\n });\n});\n\nvar api = /*#__PURE__*/Object.freeze({\n __proto__: null,\n query: query,\n config: config,\n optOut: optOut,\n optIn: optIn,\n pageview: pageview,\n screenview: screenview,\n exception: exception,\n linker: linker,\n time: time,\n set: set,\n refund: refund,\n purchase: purchase,\n customMap: customMap,\n event: event\n});\n\nvar attachApi = function attachApi(Vue) {\n return Vue.$gtag = Vue.prototype.$gtag = api;\n};\n\nvar registerGlobals = (function () {\n if (!isBrowser()) {\n return;\n }\n\n var _getOptions = getOptions(),\n enabled = _getOptions.enabled,\n globalObjectName = _getOptions.globalObjectName,\n globalDataLayerName = _getOptions.globalDataLayerName;\n\n if (window[globalObjectName] == null) {\n window[globalDataLayerName] = window[globalDataLayerName] || [];\n\n window[globalObjectName] = function () {\n window[globalDataLayerName].push(arguments);\n };\n }\n\n window[globalObjectName](\"js\", new Date());\n\n if (!enabled) {\n optOut();\n }\n\n return window[globalObjectName];\n});\n\nvar mergeDefaultParams = function mergeDefaultParams(params) {\n return _objectSpread2({\n send_page_view: false\n }, params);\n};\n\nvar addConfiguration = (function () {\n var _getOptions = getOptions(),\n config = _getOptions.config,\n includes = _getOptions.includes;\n\n query(\"config\", config.id, mergeDefaultParams(config.params));\n\n if (Array.isArray(includes)) {\n includes.forEach(function (domain) {\n query(\"config\", domain.id, mergeDefaultParams(domain.params));\n });\n }\n});\n\nvar track = (function () {\n var to = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var _getOptions = getOptions(),\n appName = _getOptions.appName,\n proxy = _getOptions.pageTrackerTemplate,\n useScreenview = _getOptions.pageTrackerScreenviewEnabled,\n skipSamePath = _getOptions.pageTrackerSkipSamePath;\n\n if (skipSamePath && to.path === from.path) {\n return;\n }\n\n var template = to;\n\n if (isFn(proxy)) {\n template = proxy(to, from);\n } else if (useScreenview) {\n template = validateScreenviewShape({\n app_name: appName,\n screen_name: to.name\n });\n }\n\n if (useScreenview) {\n screenview(template);\n return;\n }\n\n pageview(template);\n});\n\nvar isRouteExcluded = function isRouteExcluded(route) {\n var _getOptions = getOptions(),\n routes = _getOptions.pageTrackerExcludedRoutes;\n\n return routes.includes(route.path) || routes.includes(route.name);\n};\n\nvar addRoutesTracker = (function () {\n var _getOptions2 = getOptions(),\n onBeforeTrack = _getOptions2.onBeforeTrack,\n onAfterTrack = _getOptions2.onAfterTrack;\n\n var router = getRouter();\n router.onReady(function () {\n Vue.nextTick().then(function () {\n var currentRoute = router.currentRoute;\n addConfiguration();\n\n if (isRouteExcluded(currentRoute)) {\n return;\n }\n\n track(currentRoute);\n });\n router.afterEach(function (to, from) {\n Vue.nextTick().then(function () {\n if (isRouteExcluded(to)) {\n return;\n }\n\n if (isFn(onBeforeTrack)) {\n onBeforeTrack(to, from);\n }\n\n track(to, from);\n\n if (isFn(onAfterTrack)) {\n onAfterTrack(to, from);\n }\n });\n });\n });\n});\n\nvar bootstrap = (function () {\n var _getOptions = getOptions(),\n onReady = _getOptions.onReady,\n onError = _getOptions.onError,\n globalObjectName = _getOptions.globalObjectName,\n globalDataLayerName = _getOptions.globalDataLayerName,\n config = _getOptions.config,\n customResourceURL = _getOptions.customResourceURL,\n customPreconnectOrigin = _getOptions.customPreconnectOrigin,\n deferScriptLoad = _getOptions.deferScriptLoad,\n pageTrackerEnabled = _getOptions.pageTrackerEnabled,\n disableScriptLoad = _getOptions.disableScriptLoad;\n\n var isPageTrackerEnabled = Boolean(pageTrackerEnabled && getRouter());\n registerGlobals();\n\n if (isPageTrackerEnabled) {\n addRoutesTracker();\n } else {\n addConfiguration();\n }\n\n if (disableScriptLoad) {\n return;\n }\n\n return load(\"\".concat(customResourceURL, \"?id=\").concat(config.id, \"&l=\").concat(globalDataLayerName), {\n preconnectOrigin: customPreconnectOrigin,\n defer: deferScriptLoad\n }).then(function () {\n if (onReady) {\n onReady(window[globalObjectName]);\n }\n }).catch(function (error) {\n if (onError) {\n onError(error);\n }\n\n return error;\n });\n});\n\nvar install = function install(Vue) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var router = arguments.length > 2 ? arguments[2] : undefined;\n attachApi(Vue);\n setOptions(options);\n setRouter(router);\n\n if (getOptions().bootstrap) {\n bootstrap();\n }\n};\n\nexport default install;\nexport { addRoutesTracker, bootstrap, config, customMap, event, exception, install, linker, optIn, optOut, pageview, purchase, query, refund, screenview, set, setOptions, setRouter, time };\n","/*!\n * vue-i18n v8.28.2 \n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\n/* */\n\n/**\n * constants\n */\n\nvar numberFormatKeys = [\n 'compactDisplay',\n 'currency',\n 'currencyDisplay',\n 'currencySign',\n 'localeMatcher',\n 'notation',\n 'numberingSystem',\n 'signDisplay',\n 'style',\n 'unit',\n 'unitDisplay',\n 'useGrouping',\n 'minimumIntegerDigits',\n 'minimumFractionDigits',\n 'maximumFractionDigits',\n 'minimumSignificantDigits',\n 'maximumSignificantDigits'\n];\n\nvar dateTimeFormatKeys = [\n 'dateStyle',\n 'timeStyle',\n 'calendar',\n 'localeMatcher',\n \"hour12\",\n \"hourCycle\",\n \"timeZone\",\n \"formatMatcher\",\n 'weekday',\n 'era',\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'timeZoneName' ];\n\n/**\n * utilities\n */\n\nfunction warn (msg, err) {\n if (typeof console !== 'undefined') {\n console.warn('[vue-i18n] ' + msg);\n /* istanbul ignore if */\n if (err) {\n console.warn(err.stack);\n }\n }\n}\n\nfunction error (msg, err) {\n if (typeof console !== 'undefined') {\n console.error('[vue-i18n] ' + msg);\n /* istanbul ignore if */\n if (err) {\n console.error(err.stack);\n }\n }\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isBoolean (val) {\n return typeof val === 'boolean'\n}\n\nfunction isString (val) {\n return typeof val === 'string'\n}\n\nvar toString = Object.prototype.toString;\nvar OBJECT_STRING = '[object Object]';\nfunction isPlainObject (obj) {\n return toString.call(obj) === OBJECT_STRING\n}\n\nfunction isNull (val) {\n return val === null || val === undefined\n}\n\nfunction isFunction (val) {\n return typeof val === 'function'\n}\n\nfunction parseArgs () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var locale = null;\n var params = null;\n if (args.length === 1) {\n if (isObject(args[0]) || isArray(args[0])) {\n params = args[0];\n } else if (typeof args[0] === 'string') {\n locale = args[0];\n }\n } else if (args.length === 2) {\n if (typeof args[0] === 'string') {\n locale = args[0];\n }\n /* istanbul ignore if */\n if (isObject(args[1]) || isArray(args[1])) {\n params = args[1];\n }\n }\n\n return { locale: locale, params: params }\n}\n\nfunction looseClone (obj) {\n return JSON.parse(JSON.stringify(obj))\n}\n\nfunction remove (arr, item) {\n if (arr.delete(item)) {\n return arr\n }\n}\n\nfunction arrayFrom (arr) {\n var ret = [];\n arr.forEach(function (a) { return ret.push(a); });\n return ret\n}\n\nfunction includes (arr, item) {\n return !!~arr.indexOf(item)\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\nfunction merge (target) {\n var arguments$1 = arguments;\n\n var output = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments$1[i];\n if (source !== undefined && source !== null) {\n var key = (void 0);\n for (key in source) {\n if (hasOwn(source, key)) {\n if (isObject(source[key])) {\n output[key] = merge(output[key], source[key]);\n } else {\n output[key] = source[key];\n }\n }\n }\n }\n }\n return output\n}\n\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = isArray(a);\n var isArrayB = isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Sanitizes html special characters from input strings. For mitigating risk of XSS attacks.\n * @param rawText The raw input from the user that should be escaped.\n */\nfunction escapeHtml(rawText) {\n return rawText\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n}\n\n/**\n * Escapes html tags and special symbols from all provided params which were returned from parseArgs().params.\n * This method performs an in-place operation on the params object.\n *\n * @param {any} params Parameters as provided from `parseArgs().params`.\n * May be either an array of strings or a string->any map.\n *\n * @returns The manipulated `params` object.\n */\nfunction escapeParams(params) {\n if(params != null) {\n Object.keys(params).forEach(function (key) {\n if(typeof(params[key]) == 'string') {\n params[key] = escapeHtml(params[key]);\n }\n });\n }\n return params\n}\n\n/* */\n\nfunction extend (Vue) {\n if (!Vue.prototype.hasOwnProperty('$i18n')) {\n // $FlowFixMe\n Object.defineProperty(Vue.prototype, '$i18n', {\n get: function get () { return this._i18n }\n });\n }\n\n Vue.prototype.$t = function (key) {\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n var i18n = this.$i18n;\n return i18n._t.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))\n };\n\n Vue.prototype.$tc = function (key, choice) {\n var values = [], len = arguments.length - 2;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n\n var i18n = this.$i18n;\n return i18n._tc.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this, choice ].concat( values ))\n };\n\n Vue.prototype.$te = function (key, locale) {\n var i18n = this.$i18n;\n return i18n._te(key, i18n.locale, i18n._getMessages(), locale)\n };\n\n Vue.prototype.$d = function (value) {\n var ref;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n return (ref = this.$i18n).d.apply(ref, [ value ].concat( args ))\n };\n\n Vue.prototype.$n = function (value) {\n var ref;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n return (ref = this.$i18n).n.apply(ref, [ value ].concat( args ))\n };\n}\n\n/* */\n\n/**\n * Mixin\n * \n * If `bridge` mode, empty mixin is returned,\n * else regulary mixin implementation is returned.\n */\nfunction defineMixin (bridge) {\n if ( bridge === void 0 ) bridge = false;\n\n function mounted () {\n if (this !== this.$root && this.$options.__INTLIFY_META__ && this.$el) {\n this.$el.setAttribute('data-intlify', this.$options.__INTLIFY_META__);\n }\n }\n\n return bridge\n ? { mounted: mounted } // delegate `vue-i18n-bridge` mixin implementation\n : { // regulary \n beforeCreate: function beforeCreate () {\n var options = this.$options;\n options.i18n = options.i18n || ((options.__i18nBridge || options.__i18n) ? {} : null);\n\n if (options.i18n) {\n if (options.i18n instanceof VueI18n) {\n // init locale messages via custom blocks\n if ((options.__i18nBridge || options.__i18n)) {\n try {\n var localeMessages = options.i18n && options.i18n.messages ? options.i18n.messages : {};\n var _i18n = options.__i18nBridge || options.__i18n;\n _i18n.forEach(function (resource) {\n localeMessages = merge(localeMessages, JSON.parse(resource));\n });\n Object.keys(localeMessages).forEach(function (locale) {\n options.i18n.mergeLocaleMessage(locale, localeMessages[locale]);\n });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n error(\"Cannot parse locale messages via custom blocks.\", e);\n }\n }\n }\n this._i18n = options.i18n;\n this._i18nWatcher = this._i18n.watchI18nData();\n } else if (isPlainObject(options.i18n)) {\n var rootI18n = this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n\n ? this.$root.$i18n\n : null;\n // component local i18n\n if (rootI18n) {\n options.i18n.root = this.$root;\n options.i18n.formatter = rootI18n.formatter;\n options.i18n.fallbackLocale = rootI18n.fallbackLocale;\n options.i18n.formatFallbackMessages = rootI18n.formatFallbackMessages;\n options.i18n.silentTranslationWarn = rootI18n.silentTranslationWarn;\n options.i18n.silentFallbackWarn = rootI18n.silentFallbackWarn;\n options.i18n.pluralizationRules = rootI18n.pluralizationRules;\n options.i18n.preserveDirectiveContent = rootI18n.preserveDirectiveContent;\n }\n\n // init locale messages via custom blocks\n if ((options.__i18nBridge || options.__i18n)) {\n try {\n var localeMessages$1 = options.i18n && options.i18n.messages ? options.i18n.messages : {};\n var _i18n$1 = options.__i18nBridge || options.__i18n;\n _i18n$1.forEach(function (resource) {\n localeMessages$1 = merge(localeMessages$1, JSON.parse(resource));\n });\n options.i18n.messages = localeMessages$1;\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot parse locale messages via custom blocks.\", e);\n }\n }\n }\n\n var ref = options.i18n;\n var sharedMessages = ref.sharedMessages;\n if (sharedMessages && isPlainObject(sharedMessages)) {\n options.i18n.messages = merge(options.i18n.messages, sharedMessages);\n }\n\n this._i18n = new VueI18n(options.i18n);\n this._i18nWatcher = this._i18n.watchI18nData();\n\n if (options.i18n.sync === undefined || !!options.i18n.sync) {\n this._localeWatcher = this.$i18n.watchLocale();\n }\n\n if (rootI18n) {\n rootI18n.onComponentInstanceCreated(this._i18n);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot be interpreted 'i18n' option.\");\n }\n }\n } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n // root i18n\n this._i18n = this.$root.$i18n;\n } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n // parent i18n\n this._i18n = options.parent.$i18n;\n }\n },\n\n beforeMount: function beforeMount () {\n var options = this.$options;\n options.i18n = options.i18n || ((options.__i18nBridge || options.__i18n) ? {} : null);\n\n if (options.i18n) {\n if (options.i18n instanceof VueI18n) {\n // init locale messages via custom blocks\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else if (isPlainObject(options.i18n)) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot be interpreted 'i18n' option.\");\n }\n }\n } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n }\n },\n\n mounted: mounted,\n\n beforeDestroy: function beforeDestroy () {\n if (!this._i18n) { return }\n\n var self = this;\n this.$nextTick(function () {\n if (self._subscribing) {\n self._i18n.unsubscribeDataChanging(self);\n delete self._subscribing;\n }\n\n if (self._i18nWatcher) {\n self._i18nWatcher();\n self._i18n.destroyVM();\n delete self._i18nWatcher;\n }\n\n if (self._localeWatcher) {\n self._localeWatcher();\n delete self._localeWatcher;\n }\n });\n }\n }\n}\n\n/* */\n\nvar interpolationComponent = {\n name: 'i18n',\n functional: true,\n props: {\n tag: {\n type: [String, Boolean, Object],\n default: 'span'\n },\n path: {\n type: String,\n required: true\n },\n locale: {\n type: String\n },\n places: {\n type: [Array, Object]\n }\n },\n render: function render (h, ref) {\n var data = ref.data;\n var parent = ref.parent;\n var props = ref.props;\n var slots = ref.slots;\n\n var $i18n = parent.$i18n;\n if (!$i18n) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot find VueI18n instance!');\n }\n return\n }\n\n var path = props.path;\n var locale = props.locale;\n var places = props.places;\n var params = slots();\n var children = $i18n.i(\n path,\n locale,\n onlyHasDefaultPlace(params) || places\n ? useLegacyPlaces(params.default, places)\n : params\n );\n\n var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n return tag ? h(tag, data, children) : children\n }\n};\n\nfunction onlyHasDefaultPlace (params) {\n var prop;\n for (prop in params) {\n if (prop !== 'default') { return false }\n }\n return Boolean(prop)\n}\n\nfunction useLegacyPlaces (children, places) {\n var params = places ? createParamsFromPlaces(places) : {};\n\n if (!children) { return params }\n\n // Filter empty text nodes\n children = children.filter(function (child) {\n return child.tag || child.text.trim() !== ''\n });\n\n var everyPlace = children.every(vnodeHasPlaceAttribute);\n if (process.env.NODE_ENV !== 'production' && everyPlace) {\n warn('`place` attribute is deprecated in next major version. Please switch to Vue slots.');\n }\n\n return children.reduce(\n everyPlace ? assignChildPlace : assignChildIndex,\n params\n )\n}\n\nfunction createParamsFromPlaces (places) {\n if (process.env.NODE_ENV !== 'production') {\n warn('`places` prop is deprecated in next major version. Please switch to Vue slots.');\n }\n\n return Array.isArray(places)\n ? places.reduce(assignChildIndex, {})\n : Object.assign({}, places)\n}\n\nfunction assignChildPlace (params, child) {\n if (child.data && child.data.attrs && child.data.attrs.place) {\n params[child.data.attrs.place] = child;\n }\n return params\n}\n\nfunction assignChildIndex (params, child, index) {\n params[index] = child;\n return params\n}\n\nfunction vnodeHasPlaceAttribute (vnode) {\n return Boolean(vnode.data && vnode.data.attrs && vnode.data.attrs.place)\n}\n\n/* */\n\nvar numberComponent = {\n name: 'i18n-n',\n functional: true,\n props: {\n tag: {\n type: [String, Boolean, Object],\n default: 'span'\n },\n value: {\n type: Number,\n required: true\n },\n format: {\n type: [String, Object]\n },\n locale: {\n type: String\n }\n },\n render: function render (h, ref) {\n var props = ref.props;\n var parent = ref.parent;\n var data = ref.data;\n\n var i18n = parent.$i18n;\n\n if (!i18n) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot find VueI18n instance!');\n }\n return null\n }\n\n var key = null;\n var options = null;\n\n if (isString(props.format)) {\n key = props.format;\n } else if (isObject(props.format)) {\n if (props.format.key) {\n key = props.format.key;\n }\n\n // Filter out number format options only\n options = Object.keys(props.format).reduce(function (acc, prop) {\n var obj;\n\n if (includes(numberFormatKeys, prop)) {\n return Object.assign({}, acc, ( obj = {}, obj[prop] = props.format[prop], obj ))\n }\n return acc\n }, null);\n }\n\n var locale = props.locale || i18n.locale;\n var parts = i18n._ntp(props.value, locale, key, options);\n\n var values = parts.map(function (part, index) {\n var obj;\n\n var slot = data.scopedSlots && data.scopedSlots[part.type];\n return slot ? slot(( obj = {}, obj[part.type] = part.value, obj.index = index, obj.parts = parts, obj )) : part.value\n });\n\n var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n return tag\n ? h(tag, {\n attrs: data.attrs,\n 'class': data['class'],\n staticClass: data.staticClass\n }, values)\n : values\n }\n};\n\n/* */\n\nfunction bind (el, binding, vnode) {\n if (!assert(el, vnode)) { return }\n\n t(el, binding, vnode);\n}\n\nfunction update (el, binding, vnode, oldVNode) {\n if (!assert(el, vnode)) { return }\n\n var i18n = vnode.context.$i18n;\n if (localeEqual(el, vnode) &&\n (looseEqual(binding.value, binding.oldValue) &&\n looseEqual(el._localeMessage, i18n.getLocaleMessage(i18n.locale)))) { return }\n\n t(el, binding, vnode);\n}\n\nfunction unbind (el, binding, vnode, oldVNode) {\n var vm = vnode.context;\n if (!vm) {\n warn('Vue instance does not exists in VNode context');\n return\n }\n\n var i18n = vnode.context.$i18n || {};\n if (!binding.modifiers.preserve && !i18n.preserveDirectiveContent) {\n el.textContent = '';\n }\n el._vt = undefined;\n delete el['_vt'];\n el._locale = undefined;\n delete el['_locale'];\n el._localeMessage = undefined;\n delete el['_localeMessage'];\n}\n\nfunction assert (el, vnode) {\n var vm = vnode.context;\n if (!vm) {\n warn('Vue instance does not exists in VNode context');\n return false\n }\n\n if (!vm.$i18n) {\n warn('VueI18n instance does not exists in Vue instance');\n return false\n }\n\n return true\n}\n\nfunction localeEqual (el, vnode) {\n var vm = vnode.context;\n return el._locale === vm.$i18n.locale\n}\n\nfunction t (el, binding, vnode) {\n var ref$1, ref$2;\n\n var value = binding.value;\n\n var ref = parseValue(value);\n var path = ref.path;\n var locale = ref.locale;\n var args = ref.args;\n var choice = ref.choice;\n if (!path && !locale && !args) {\n warn('value type not supported');\n return\n }\n\n if (!path) {\n warn('`path` is required in v-t directive');\n return\n }\n\n var vm = vnode.context;\n if (choice != null) {\n el._vt = el.textContent = (ref$1 = vm.$i18n).tc.apply(ref$1, [ path, choice ].concat( makeParams(locale, args) ));\n } else {\n el._vt = el.textContent = (ref$2 = vm.$i18n).t.apply(ref$2, [ path ].concat( makeParams(locale, args) ));\n }\n el._locale = vm.$i18n.locale;\n el._localeMessage = vm.$i18n.getLocaleMessage(vm.$i18n.locale);\n}\n\nfunction parseValue (value) {\n var path;\n var locale;\n var args;\n var choice;\n\n if (isString(value)) {\n path = value;\n } else if (isPlainObject(value)) {\n path = value.path;\n locale = value.locale;\n args = value.args;\n choice = value.choice;\n }\n\n return { path: path, locale: locale, args: args, choice: choice }\n}\n\nfunction makeParams (locale, args) {\n var params = [];\n\n locale && params.push(locale);\n if (args && (Array.isArray(args) || isPlainObject(args))) {\n params.push(args);\n }\n\n return params\n}\n\nvar Vue;\n\nfunction install (_Vue, options) {\n if ( options === void 0 ) options = { bridge: false };\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && install.installed && _Vue === Vue) {\n warn('already installed.');\n return\n }\n install.installed = true;\n\n Vue = _Vue;\n\n var version = (Vue.version && Number(Vue.version.split('.')[0])) || -1;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && version < 2) {\n warn((\"vue-i18n (\" + (install.version) + \") need to use Vue 2.0 or later (Vue: \" + (Vue.version) + \").\"));\n return\n }\n\n extend(Vue);\n Vue.mixin(defineMixin(options.bridge));\n Vue.directive('t', { bind: bind, update: update, unbind: unbind });\n Vue.component(interpolationComponent.name, interpolationComponent);\n Vue.component(numberComponent.name, numberComponent);\n\n // use simple mergeStrategies to prevent i18n instance lose '__proto__'\n var strats = Vue.config.optionMergeStrategies;\n strats.i18n = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n };\n}\n\n/* */\n\nvar BaseFormatter = function BaseFormatter () {\n this._caches = Object.create(null);\n};\n\nBaseFormatter.prototype.interpolate = function interpolate (message, values) {\n if (!values) {\n return [message]\n }\n var tokens = this._caches[message];\n if (!tokens) {\n tokens = parse(message);\n this._caches[message] = tokens;\n }\n return compile(tokens, values)\n};\n\n\n\nvar RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\nvar RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\n\nfunction parse (format) {\n var tokens = [];\n var position = 0;\n\n var text = '';\n while (position < format.length) {\n var char = format[position++];\n if (char === '{') {\n if (text) {\n tokens.push({ type: 'text', value: text });\n }\n\n text = '';\n var sub = '';\n char = format[position++];\n while (char !== undefined && char !== '}') {\n sub += char;\n char = format[position++];\n }\n var isClosed = char === '}';\n\n var type = RE_TOKEN_LIST_VALUE.test(sub)\n ? 'list'\n : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\n ? 'named'\n : 'unknown';\n tokens.push({ value: sub, type: type });\n } else if (char === '%') {\n // when found rails i18n syntax, skip text capture\n if (format[(position)] !== '{') {\n text += char;\n }\n } else {\n text += char;\n }\n }\n\n text && tokens.push({ type: 'text', value: text });\n\n return tokens\n}\n\nfunction compile (tokens, values) {\n var compiled = [];\n var index = 0;\n\n var mode = Array.isArray(values)\n ? 'list'\n : isObject(values)\n ? 'named'\n : 'unknown';\n if (mode === 'unknown') { return compiled }\n\n while (index < tokens.length) {\n var token = tokens[index];\n switch (token.type) {\n case 'text':\n compiled.push(token.value);\n break\n case 'list':\n compiled.push(values[parseInt(token.value, 10)]);\n break\n case 'named':\n if (mode === 'named') {\n compiled.push((values)[token.value]);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Type of token '\" + (token.type) + \"' and format of value '\" + mode + \"' don't match!\"));\n }\n }\n break\n case 'unknown':\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Detect 'unknown' type of token!\");\n }\n break\n }\n index++;\n }\n\n return compiled\n}\n\n/* */\n\n/**\n * Path parser\n * - Inspired:\n * Vue.js Path parser\n */\n\n// actions\nvar APPEND = 0;\nvar PUSH = 1;\nvar INC_SUB_PATH_DEPTH = 2;\nvar PUSH_SUB_PATH = 3;\n\n// states\nvar BEFORE_PATH = 0;\nvar IN_PATH = 1;\nvar BEFORE_IDENT = 2;\nvar IN_IDENT = 3;\nvar IN_SUB_PATH = 4;\nvar IN_SINGLE_QUOTE = 5;\nvar IN_DOUBLE_QUOTE = 6;\nvar AFTER_PATH = 7;\nvar ERROR = 8;\n\nvar pathStateMachine = [];\n\npathStateMachine[BEFORE_PATH] = {\n 'ws': [BEFORE_PATH],\n 'ident': [IN_IDENT, APPEND],\n '[': [IN_SUB_PATH],\n 'eof': [AFTER_PATH]\n};\n\npathStateMachine[IN_PATH] = {\n 'ws': [IN_PATH],\n '.': [BEFORE_IDENT],\n '[': [IN_SUB_PATH],\n 'eof': [AFTER_PATH]\n};\n\npathStateMachine[BEFORE_IDENT] = {\n 'ws': [BEFORE_IDENT],\n 'ident': [IN_IDENT, APPEND],\n '0': [IN_IDENT, APPEND],\n 'number': [IN_IDENT, APPEND]\n};\n\npathStateMachine[IN_IDENT] = {\n 'ident': [IN_IDENT, APPEND],\n '0': [IN_IDENT, APPEND],\n 'number': [IN_IDENT, APPEND],\n 'ws': [IN_PATH, PUSH],\n '.': [BEFORE_IDENT, PUSH],\n '[': [IN_SUB_PATH, PUSH],\n 'eof': [AFTER_PATH, PUSH]\n};\n\npathStateMachine[IN_SUB_PATH] = {\n \"'\": [IN_SINGLE_QUOTE, APPEND],\n '\"': [IN_DOUBLE_QUOTE, APPEND],\n '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],\n ']': [IN_PATH, PUSH_SUB_PATH],\n 'eof': ERROR,\n 'else': [IN_SUB_PATH, APPEND]\n};\n\npathStateMachine[IN_SINGLE_QUOTE] = {\n \"'\": [IN_SUB_PATH, APPEND],\n 'eof': ERROR,\n 'else': [IN_SINGLE_QUOTE, APPEND]\n};\n\npathStateMachine[IN_DOUBLE_QUOTE] = {\n '\"': [IN_SUB_PATH, APPEND],\n 'eof': ERROR,\n 'else': [IN_DOUBLE_QUOTE, APPEND]\n};\n\n/**\n * Check if an expression is a literal value.\n */\n\nvar literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral (exp) {\n return literalValueRE.test(exp)\n}\n\n/**\n * Strip quotes from a string\n */\n\nfunction stripQuotes (str) {\n var a = str.charCodeAt(0);\n var b = str.charCodeAt(str.length - 1);\n return a === b && (a === 0x22 || a === 0x27)\n ? str.slice(1, -1)\n : str\n}\n\n/**\n * Determine the type of a character in a keypath.\n */\n\nfunction getPathCharType (ch) {\n if (ch === undefined || ch === null) { return 'eof' }\n\n var code = ch.charCodeAt(0);\n\n switch (code) {\n case 0x5B: // [\n case 0x5D: // ]\n case 0x2E: // .\n case 0x22: // \"\n case 0x27: // '\n return ch\n\n case 0x5F: // _\n case 0x24: // $\n case 0x2D: // -\n return 'ident'\n\n case 0x09: // Tab\n case 0x0A: // Newline\n case 0x0D: // Return\n case 0xA0: // No-break space\n case 0xFEFF: // Byte Order Mark\n case 0x2028: // Line Separator\n case 0x2029: // Paragraph Separator\n return 'ws'\n }\n\n return 'ident'\n}\n\n/**\n * Format a subPath, return its plain form if it is\n * a literal string or number. Otherwise prepend the\n * dynamic indicator (*).\n */\n\nfunction formatSubPath (path) {\n var trimmed = path.trim();\n // invalid leading 0\n if (path.charAt(0) === '0' && isNaN(path)) { return false }\n\n return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed\n}\n\n/**\n * Parse a string path into an array of segments\n */\n\nfunction parse$1 (path) {\n var keys = [];\n var index = -1;\n var mode = BEFORE_PATH;\n var subPathDepth = 0;\n var c;\n var key;\n var newChar;\n var type;\n var transition;\n var action;\n var typeMap;\n var actions = [];\n\n actions[PUSH] = function () {\n if (key !== undefined) {\n keys.push(key);\n key = undefined;\n }\n };\n\n actions[APPEND] = function () {\n if (key === undefined) {\n key = newChar;\n } else {\n key += newChar;\n }\n };\n\n actions[INC_SUB_PATH_DEPTH] = function () {\n actions[APPEND]();\n subPathDepth++;\n };\n\n actions[PUSH_SUB_PATH] = function () {\n if (subPathDepth > 0) {\n subPathDepth--;\n mode = IN_SUB_PATH;\n actions[APPEND]();\n } else {\n subPathDepth = 0;\n if (key === undefined) { return false }\n key = formatSubPath(key);\n if (key === false) {\n return false\n } else {\n actions[PUSH]();\n }\n }\n };\n\n function maybeUnescapeQuote () {\n var nextChar = path[index + 1];\n if ((mode === IN_SINGLE_QUOTE && nextChar === \"'\") ||\n (mode === IN_DOUBLE_QUOTE && nextChar === '\"')) {\n index++;\n newChar = '\\\\' + nextChar;\n actions[APPEND]();\n return true\n }\n }\n\n while (mode !== null) {\n index++;\n c = path[index];\n\n if (c === '\\\\' && maybeUnescapeQuote()) {\n continue\n }\n\n type = getPathCharType(c);\n typeMap = pathStateMachine[mode];\n transition = typeMap[type] || typeMap['else'] || ERROR;\n\n if (transition === ERROR) {\n return // parse error\n }\n\n mode = transition[0];\n action = actions[transition[1]];\n if (action) {\n newChar = transition[2];\n newChar = newChar === undefined\n ? c\n : newChar;\n if (action() === false) {\n return\n }\n }\n\n if (mode === AFTER_PATH) {\n return keys\n }\n }\n}\n\n\n\n\n\nvar I18nPath = function I18nPath () {\n this._cache = Object.create(null);\n};\n\n/**\n * External parse that check for a cache hit first\n */\nI18nPath.prototype.parsePath = function parsePath (path) {\n var hit = this._cache[path];\n if (!hit) {\n hit = parse$1(path);\n if (hit) {\n this._cache[path] = hit;\n }\n }\n return hit || []\n};\n\n/**\n * Get path value from path string\n */\nI18nPath.prototype.getPathValue = function getPathValue (obj, path) {\n if (!isObject(obj)) { return null }\n\n var paths = this.parsePath(path);\n if (paths.length === 0) {\n return null\n } else {\n var length = paths.length;\n var last = obj;\n var i = 0;\n while (i < length) {\n var value = last[paths[i]];\n if (value === undefined || value === null) {\n return null\n }\n last = value;\n i++;\n }\n\n return last\n }\n};\n\n/* */\n\n\n\nvar htmlTagMatcher = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nvar linkKeyMatcher = /(?:@(?:\\.[a-zA-Z]+)?:(?:[\\w\\-_|./]+|\\([\\w\\-_:|./]+\\)))/g;\nvar linkKeyPrefixMatcher = /^@(?:\\.([a-zA-Z]+))?:/;\nvar bracketsMatcher = /[()]/g;\nvar defaultModifiers = {\n 'upper': function (str) { return str.toLocaleUpperCase(); },\n 'lower': function (str) { return str.toLocaleLowerCase(); },\n 'capitalize': function (str) { return (\"\" + (str.charAt(0).toLocaleUpperCase()) + (str.substr(1))); }\n};\n\nvar defaultFormatter = new BaseFormatter();\n\nvar VueI18n = function VueI18n (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #290\n /* istanbul ignore if */\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n var locale = options.locale || 'en-US';\n var fallbackLocale = options.fallbackLocale === false\n ? false\n : options.fallbackLocale || 'en-US';\n var messages = options.messages || {};\n var dateTimeFormats = options.dateTimeFormats || options.datetimeFormats || {};\n var numberFormats = options.numberFormats || {};\n\n this._vm = null;\n this._formatter = options.formatter || defaultFormatter;\n this._modifiers = options.modifiers || {};\n this._missing = options.missing || null;\n this._root = options.root || null;\n this._sync = options.sync === undefined ? true : !!options.sync;\n this._fallbackRoot = options.fallbackRoot === undefined\n ? true\n : !!options.fallbackRoot;\n this._fallbackRootWithEmptyString = options.fallbackRootWithEmptyString === undefined\n ? true\n : !!options.fallbackRootWithEmptyString;\n this._formatFallbackMessages = options.formatFallbackMessages === undefined\n ? false\n : !!options.formatFallbackMessages;\n this._silentTranslationWarn = options.silentTranslationWarn === undefined\n ? false\n : options.silentTranslationWarn;\n this._silentFallbackWarn = options.silentFallbackWarn === undefined\n ? false\n : !!options.silentFallbackWarn;\n this._dateTimeFormatters = {};\n this._numberFormatters = {};\n this._path = new I18nPath();\n this._dataListeners = new Set();\n this._componentInstanceCreatedListener = options.componentInstanceCreatedListener || null;\n this._preserveDirectiveContent = options.preserveDirectiveContent === undefined\n ? false\n : !!options.preserveDirectiveContent;\n this.pluralizationRules = options.pluralizationRules || {};\n this._warnHtmlInMessage = options.warnHtmlInMessage || 'off';\n this._postTranslation = options.postTranslation || null;\n this._escapeParameterHtml = options.escapeParameterHtml || false;\n\n if ('__VUE_I18N_BRIDGE__' in options) {\n this.__VUE_I18N_BRIDGE__ = options.__VUE_I18N_BRIDGE__;\n }\n\n /**\n * @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`\n * @param choicesLength {number} an overall amount of available choices\n * @returns a final choice index\n */\n this.getChoiceIndex = function (choice, choicesLength) {\n var thisPrototype = Object.getPrototypeOf(this$1);\n if (thisPrototype && thisPrototype.getChoiceIndex) {\n var prototypeGetChoiceIndex = (thisPrototype.getChoiceIndex);\n return (prototypeGetChoiceIndex).call(this$1, choice, choicesLength)\n }\n\n // Default (old) getChoiceIndex implementation - english-compatible\n var defaultImpl = function (_choice, _choicesLength) {\n _choice = Math.abs(_choice);\n\n if (_choicesLength === 2) {\n return _choice\n ? _choice > 1\n ? 1\n : 0\n : 1\n }\n\n return _choice ? Math.min(_choice, 2) : 0\n };\n\n if (this$1.locale in this$1.pluralizationRules) {\n return this$1.pluralizationRules[this$1.locale].apply(this$1, [choice, choicesLength])\n } else {\n return defaultImpl(choice, choicesLength)\n }\n };\n\n\n this._exist = function (message, key) {\n if (!message || !key) { return false }\n if (!isNull(this$1._path.getPathValue(message, key))) { return true }\n // fallback for flat key\n if (message[key]) { return true }\n return false\n };\n\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n Object.keys(messages).forEach(function (locale) {\n this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n });\n }\n\n this._initVM({\n locale: locale,\n fallbackLocale: fallbackLocale,\n messages: messages,\n dateTimeFormats: dateTimeFormats,\n numberFormats: numberFormats\n });\n};\n\nvar prototypeAccessors = { vm: { configurable: true },messages: { configurable: true },dateTimeFormats: { configurable: true },numberFormats: { configurable: true },availableLocales: { configurable: true },locale: { configurable: true },fallbackLocale: { configurable: true },formatFallbackMessages: { configurable: true },missing: { configurable: true },formatter: { configurable: true },silentTranslationWarn: { configurable: true },silentFallbackWarn: { configurable: true },preserveDirectiveContent: { configurable: true },warnHtmlInMessage: { configurable: true },postTranslation: { configurable: true },sync: { configurable: true } };\n\nVueI18n.prototype._checkLocaleMessage = function _checkLocaleMessage (locale, level, message) {\n var paths = [];\n\n var fn = function (level, locale, message, paths) {\n if (isPlainObject(message)) {\n Object.keys(message).forEach(function (key) {\n var val = message[key];\n if (isPlainObject(val)) {\n paths.push(key);\n paths.push('.');\n fn(level, locale, val, paths);\n paths.pop();\n paths.pop();\n } else {\n paths.push(key);\n fn(level, locale, val, paths);\n paths.pop();\n }\n });\n } else if (isArray(message)) {\n message.forEach(function (item, index) {\n if (isPlainObject(item)) {\n paths.push((\"[\" + index + \"]\"));\n paths.push('.');\n fn(level, locale, item, paths);\n paths.pop();\n paths.pop();\n } else {\n paths.push((\"[\" + index + \"]\"));\n fn(level, locale, item, paths);\n paths.pop();\n }\n });\n } else if (isString(message)) {\n var ret = htmlTagMatcher.test(message);\n if (ret) {\n var msg = \"Detected HTML in message '\" + message + \"' of keypath '\" + (paths.join('')) + \"' at '\" + locale + \"'. Consider component interpolation with '' to avoid XSS. See https://bit.ly/2ZqJzkp\";\n if (level === 'warn') {\n warn(msg);\n } else if (level === 'error') {\n error(msg);\n }\n }\n }\n };\n\n fn(level, locale, message, paths);\n};\n\nVueI18n.prototype._initVM = function _initVM (data) {\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n this._vm = new Vue({ data: data, __VUE18N__INSTANCE__: true });\n Vue.config.silent = silent;\n};\n\nVueI18n.prototype.destroyVM = function destroyVM () {\n this._vm.$destroy();\n};\n\nVueI18n.prototype.subscribeDataChanging = function subscribeDataChanging (vm) {\n this._dataListeners.add(vm);\n};\n\nVueI18n.prototype.unsubscribeDataChanging = function unsubscribeDataChanging (vm) {\n remove(this._dataListeners, vm);\n};\n\nVueI18n.prototype.watchI18nData = function watchI18nData () {\n var this$1 = this;\n return this._vm.$watch('$data', function () {\n var listeners = arrayFrom(this$1._dataListeners);\n var i = listeners.length;\n while(i--) {\n Vue.nextTick(function () {\n listeners[i] && listeners[i].$forceUpdate();\n });\n }\n }, { deep: true })\n};\n\nVueI18n.prototype.watchLocale = function watchLocale (composer) {\n if (!composer) {\n /* istanbul ignore if */\n if (!this._sync || !this._root) { return null }\n var target = this._vm;\n return this._root.$i18n.vm.$watch('locale', function (val) {\n target.$set(target, 'locale', val);\n target.$forceUpdate();\n }, { immediate: true })\n } else {\n // deal with vue-i18n-bridge\n if (!this.__VUE_I18N_BRIDGE__) { return null }\n var self = this;\n var target$1 = this._vm;\n return this.vm.$watch('locale', function (val) {\n target$1.$set(target$1, 'locale', val);\n if (self.__VUE_I18N_BRIDGE__ && composer) {\n composer.locale.value = val;\n }\n target$1.$forceUpdate();\n }, { immediate: true })\n }\n};\n\nVueI18n.prototype.onComponentInstanceCreated = function onComponentInstanceCreated (newI18n) {\n if (this._componentInstanceCreatedListener) {\n this._componentInstanceCreatedListener(newI18n, this);\n }\n};\n\nprototypeAccessors.vm.get = function () { return this._vm };\n\nprototypeAccessors.messages.get = function () { return looseClone(this._getMessages()) };\nprototypeAccessors.dateTimeFormats.get = function () { return looseClone(this._getDateTimeFormats()) };\nprototypeAccessors.numberFormats.get = function () { return looseClone(this._getNumberFormats()) };\nprototypeAccessors.availableLocales.get = function () { return Object.keys(this.messages).sort() };\n\nprototypeAccessors.locale.get = function () { return this._vm.locale };\nprototypeAccessors.locale.set = function (locale) {\n this._vm.$set(this._vm, 'locale', locale);\n};\n\nprototypeAccessors.fallbackLocale.get = function () { return this._vm.fallbackLocale };\nprototypeAccessors.fallbackLocale.set = function (locale) {\n this._localeChainCache = {};\n this._vm.$set(this._vm, 'fallbackLocale', locale);\n};\n\nprototypeAccessors.formatFallbackMessages.get = function () { return this._formatFallbackMessages };\nprototypeAccessors.formatFallbackMessages.set = function (fallback) { this._formatFallbackMessages = fallback; };\n\nprototypeAccessors.missing.get = function () { return this._missing };\nprototypeAccessors.missing.set = function (handler) { this._missing = handler; };\n\nprototypeAccessors.formatter.get = function () { return this._formatter };\nprototypeAccessors.formatter.set = function (formatter) { this._formatter = formatter; };\n\nprototypeAccessors.silentTranslationWarn.get = function () { return this._silentTranslationWarn };\nprototypeAccessors.silentTranslationWarn.set = function (silent) { this._silentTranslationWarn = silent; };\n\nprototypeAccessors.silentFallbackWarn.get = function () { return this._silentFallbackWarn };\nprototypeAccessors.silentFallbackWarn.set = function (silent) { this._silentFallbackWarn = silent; };\n\nprototypeAccessors.preserveDirectiveContent.get = function () { return this._preserveDirectiveContent };\nprototypeAccessors.preserveDirectiveContent.set = function (preserve) { this._preserveDirectiveContent = preserve; };\n\nprototypeAccessors.warnHtmlInMessage.get = function () { return this._warnHtmlInMessage };\nprototypeAccessors.warnHtmlInMessage.set = function (level) {\n var this$1 = this;\n\n var orgLevel = this._warnHtmlInMessage;\n this._warnHtmlInMessage = level;\n if (orgLevel !== level && (level === 'warn' || level === 'error')) {\n var messages = this._getMessages();\n Object.keys(messages).forEach(function (locale) {\n this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n });\n }\n};\n\nprototypeAccessors.postTranslation.get = function () { return this._postTranslation };\nprototypeAccessors.postTranslation.set = function (handler) { this._postTranslation = handler; };\n\nprototypeAccessors.sync.get = function () { return this._sync };\nprototypeAccessors.sync.set = function (val) { this._sync = val; };\n\nVueI18n.prototype._getMessages = function _getMessages () { return this._vm.messages };\nVueI18n.prototype._getDateTimeFormats = function _getDateTimeFormats () { return this._vm.dateTimeFormats };\nVueI18n.prototype._getNumberFormats = function _getNumberFormats () { return this._vm.numberFormats };\n\nVueI18n.prototype._warnDefault = function _warnDefault (locale, key, result, vm, values, interpolateMode) {\n if (!isNull(result)) { return result }\n if (this._missing) {\n var missingRet = this._missing.apply(null, [locale, key, vm, values]);\n if (isString(missingRet)) {\n return missingRet\n }\n } else {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn(\n \"Cannot translate the value of keypath '\" + key + \"'. \" +\n 'Use the value of keypath as default.'\n );\n }\n }\n\n if (this._formatFallbackMessages) {\n var parsedArgs = parseArgs.apply(void 0, values);\n return this._render(key, interpolateMode, parsedArgs.params, key)\n } else {\n return key\n }\n};\n\nVueI18n.prototype._isFallbackRoot = function _isFallbackRoot (val) {\n return (this._fallbackRootWithEmptyString? !val : isNull(val)) && !isNull(this._root) && this._fallbackRoot\n};\n\nVueI18n.prototype._isSilentFallbackWarn = function _isSilentFallbackWarn (key) {\n return this._silentFallbackWarn instanceof RegExp\n ? this._silentFallbackWarn.test(key)\n : this._silentFallbackWarn\n};\n\nVueI18n.prototype._isSilentFallback = function _isSilentFallback (locale, key) {\n return this._isSilentFallbackWarn(key) && (this._isFallbackRoot() || locale !== this.fallbackLocale)\n};\n\nVueI18n.prototype._isSilentTranslationWarn = function _isSilentTranslationWarn (key) {\n return this._silentTranslationWarn instanceof RegExp\n ? this._silentTranslationWarn.test(key)\n : this._silentTranslationWarn\n};\n\nVueI18n.prototype._interpolate = function _interpolate (\n locale,\n message,\n key,\n host,\n interpolateMode,\n values,\n visitedLinkStack\n) {\n if (!message) { return null }\n\n var pathRet = this._path.getPathValue(message, key);\n if (isArray(pathRet) || isPlainObject(pathRet)) { return pathRet }\n\n var ret;\n if (isNull(pathRet)) {\n /* istanbul ignore else */\n if (isPlainObject(message)) {\n ret = message[key];\n if (!(isString(ret) || isFunction(ret))) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n warn((\"Value of key '\" + key + \"' is not a string or function !\"));\n }\n return null\n }\n } else {\n return null\n }\n } else {\n /* istanbul ignore else */\n if (isString(pathRet) || isFunction(pathRet)) {\n ret = pathRet;\n } else {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n warn((\"Value of key '\" + key + \"' is not a string or function!\"));\n }\n return null\n }\n }\n\n // Check for the existence of links within the translated string\n if (isString(ret) && (ret.indexOf('@:') >= 0 || ret.indexOf('@.') >= 0)) {\n ret = this._link(locale, message, ret, host, 'raw', values, visitedLinkStack);\n }\n\n return this._render(ret, interpolateMode, values, key)\n};\n\nVueI18n.prototype._link = function _link (\n locale,\n message,\n str,\n host,\n interpolateMode,\n values,\n visitedLinkStack\n) {\n var ret = str;\n\n // Match all the links within the local\n // We are going to replace each of\n // them with its translation\n var matches = ret.match(linkKeyMatcher);\n\n // eslint-disable-next-line no-autofix/prefer-const\n for (var idx in matches) {\n // ie compatible: filter custom array\n // prototype method\n if (!matches.hasOwnProperty(idx)) {\n continue\n }\n var link = matches[idx];\n var linkKeyPrefixMatches = link.match(linkKeyPrefixMatcher);\n var linkPrefix = linkKeyPrefixMatches[0];\n var formatterName = linkKeyPrefixMatches[1];\n\n // Remove the leading @:, @.case: and the brackets\n var linkPlaceholder = link.replace(linkPrefix, '').replace(bracketsMatcher, '');\n\n if (includes(visitedLinkStack, linkPlaceholder)) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Circular reference found. \\\"\" + link + \"\\\" is already visited in the chain of \" + (visitedLinkStack.reverse().join(' <- '))));\n }\n return ret\n }\n visitedLinkStack.push(linkPlaceholder);\n\n // Translate the link\n var translated = this._interpolate(\n locale, message, linkPlaceholder, host,\n interpolateMode === 'raw' ? 'string' : interpolateMode,\n interpolateMode === 'raw' ? undefined : values,\n visitedLinkStack\n );\n\n if (this._isFallbackRoot(translated)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(linkPlaceholder)) {\n warn((\"Fall back to translate the link placeholder '\" + linkPlaceholder + \"' with root locale.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n var root = this._root.$i18n;\n translated = root._translate(\n root._getMessages(), root.locale, root.fallbackLocale,\n linkPlaceholder, host, interpolateMode, values\n );\n }\n translated = this._warnDefault(\n locale, linkPlaceholder, translated, host,\n isArray(values) ? values : [values],\n interpolateMode\n );\n\n if (this._modifiers.hasOwnProperty(formatterName)) {\n translated = this._modifiers[formatterName](translated);\n } else if (defaultModifiers.hasOwnProperty(formatterName)) {\n translated = defaultModifiers[formatterName](translated);\n }\n\n visitedLinkStack.pop();\n\n // Replace the link with the translated\n ret = !translated ? ret : ret.replace(link, translated);\n }\n\n return ret\n};\n\nVueI18n.prototype._createMessageContext = function _createMessageContext (values, formatter, path, interpolateMode) {\n var this$1 = this;\n\n var _list = isArray(values) ? values : [];\n var _named = isObject(values) ? values : {};\n var list = function (index) { return _list[index]; };\n var named = function (key) { return _named[key]; };\n var messages = this._getMessages();\n var locale = this.locale;\n\n return {\n list: list,\n named: named,\n values: values,\n formatter: formatter,\n path: path,\n messages: messages,\n locale: locale,\n linked: function (linkedKey) { return this$1._interpolate(locale, messages[locale] || {}, linkedKey, null, interpolateMode, undefined, [linkedKey]); }\n }\n};\n\nVueI18n.prototype._render = function _render (message, interpolateMode, values, path) {\n if (isFunction(message)) {\n return message(\n this._createMessageContext(values, this._formatter || defaultFormatter, path, interpolateMode)\n )\n }\n\n var ret = this._formatter.interpolate(message, values, path);\n\n // If the custom formatter refuses to work - apply the default one\n if (!ret) {\n ret = defaultFormatter.interpolate(message, values, path);\n }\n\n // if interpolateMode is **not** 'string' ('row'),\n // return the compiled data (e.g. ['foo', VNode, 'bar']) with formatter\n return interpolateMode === 'string' && !isString(ret) ? ret.join('') : ret\n};\n\nVueI18n.prototype._appendItemToChain = function _appendItemToChain (chain, item, blocks) {\n var follow = false;\n if (!includes(chain, item)) {\n follow = true;\n if (item) {\n follow = item[item.length - 1] !== '!';\n item = item.replace(/!/g, '');\n chain.push(item);\n if (blocks && blocks[item]) {\n follow = blocks[item];\n }\n }\n }\n return follow\n};\n\nVueI18n.prototype._appendLocaleToChain = function _appendLocaleToChain (chain, locale, blocks) {\n var follow;\n var tokens = locale.split('-');\n do {\n var item = tokens.join('-');\n follow = this._appendItemToChain(chain, item, blocks);\n tokens.splice(-1, 1);\n } while (tokens.length && (follow === true))\n return follow\n};\n\nVueI18n.prototype._appendBlockToChain = function _appendBlockToChain (chain, block, blocks) {\n var follow = true;\n for (var i = 0; (i < block.length) && (isBoolean(follow)); i++) {\n var locale = block[i];\n if (isString(locale)) {\n follow = this._appendLocaleToChain(chain, locale, blocks);\n }\n }\n return follow\n};\n\nVueI18n.prototype._getLocaleChain = function _getLocaleChain (start, fallbackLocale) {\n if (start === '') { return [] }\n\n if (!this._localeChainCache) {\n this._localeChainCache = {};\n }\n\n var chain = this._localeChainCache[start];\n if (!chain) {\n if (!fallbackLocale) {\n fallbackLocale = this.fallbackLocale;\n }\n chain = [];\n\n // first block defined by start\n var block = [start];\n\n // while any intervening block found\n while (isArray(block)) {\n block = this._appendBlockToChain(\n chain,\n block,\n fallbackLocale\n );\n }\n\n // last block defined by default\n var defaults;\n if (isArray(fallbackLocale)) {\n defaults = fallbackLocale;\n } else if (isObject(fallbackLocale)) {\n /* $FlowFixMe */\n if (fallbackLocale['default']) {\n defaults = fallbackLocale['default'];\n } else {\n defaults = null;\n }\n } else {\n defaults = fallbackLocale;\n }\n\n // convert defaults to array\n if (isString(defaults)) {\n block = [defaults];\n } else {\n block = defaults;\n }\n if (block) {\n this._appendBlockToChain(\n chain,\n block,\n null\n );\n }\n this._localeChainCache[start] = chain;\n }\n return chain\n};\n\nVueI18n.prototype._translate = function _translate (\n messages,\n locale,\n fallback,\n key,\n host,\n interpolateMode,\n args\n) {\n var chain = this._getLocaleChain(locale, fallback);\n var res;\n for (var i = 0; i < chain.length; i++) {\n var step = chain[i];\n res =\n this._interpolate(step, messages[step], key, host, interpolateMode, args, [key]);\n if (!isNull(res)) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to translate the keypath '\" + key + \"' with '\" + step + \"' locale.\"));\n }\n return res\n }\n }\n return null\n};\n\nVueI18n.prototype._t = function _t (key, _locale, messages, host) {\n var ref;\n\n var values = [], len = arguments.length - 4;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];\n if (!key) { return '' }\n\n var parsedArgs = parseArgs.apply(void 0, values);\n if(this._escapeParameterHtml) {\n parsedArgs.params = escapeParams(parsedArgs.params);\n }\n\n var locale = parsedArgs.locale || _locale;\n\n var ret = this._translate(\n messages, locale, this.fallbackLocale, key,\n host, 'string', parsedArgs.params\n );\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to translate the keypath '\" + key + \"' with root locale.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return (ref = this._root).$t.apply(ref, [ key ].concat( values ))\n } else {\n ret = this._warnDefault(locale, key, ret, host, values, 'string');\n if (this._postTranslation && ret !== null && ret !== undefined) {\n ret = this._postTranslation(ret, key);\n }\n return ret\n }\n};\n\nVueI18n.prototype.t = function t (key) {\n var ref;\n\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n return (ref = this)._t.apply(ref, [ key, this.locale, this._getMessages(), null ].concat( values ))\n};\n\nVueI18n.prototype._i = function _i (key, locale, messages, host, values) {\n var ret =\n this._translate(messages, locale, this.fallbackLocale, key, host, 'raw', values);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn((\"Fall back to interpolate the keypath '\" + key + \"' with root locale.\"));\n }\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.i(key, locale, values)\n } else {\n return this._warnDefault(locale, key, ret, host, [values], 'raw')\n }\n};\n\nVueI18n.prototype.i = function i (key, locale, values) {\n /* istanbul ignore if */\n if (!key) { return '' }\n\n if (!isString(locale)) {\n locale = this.locale;\n }\n\n return this._i(key, locale, this._getMessages(), null, values)\n};\n\nVueI18n.prototype._tc = function _tc (\n key,\n _locale,\n messages,\n host,\n choice\n) {\n var ref;\n\n var values = [], len = arguments.length - 5;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 5 ];\n if (!key) { return '' }\n if (choice === undefined) {\n choice = 1;\n }\n\n var predefined = { 'count': choice, 'n': choice };\n var parsedArgs = parseArgs.apply(void 0, values);\n parsedArgs.params = Object.assign(predefined, parsedArgs.params);\n values = parsedArgs.locale === null ? [parsedArgs.params] : [parsedArgs.locale, parsedArgs.params];\n return this.fetchChoice((ref = this)._t.apply(ref, [ key, _locale, messages, host ].concat( values )), choice)\n};\n\nVueI18n.prototype.fetchChoice = function fetchChoice (message, choice) {\n /* istanbul ignore if */\n if (!message || !isString(message)) { return null }\n var choices = message.split('|');\n\n choice = this.getChoiceIndex(choice, choices.length);\n if (!choices[choice]) { return message }\n return choices[choice].trim()\n};\n\nVueI18n.prototype.tc = function tc (key, choice) {\n var ref;\n\n var values = [], len = arguments.length - 2;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n return (ref = this)._tc.apply(ref, [ key, this.locale, this._getMessages(), null, choice ].concat( values ))\n};\n\nVueI18n.prototype._te = function _te (key, locale, messages) {\n var args = [], len = arguments.length - 3;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 3 ];\n\n var _locale = parseArgs.apply(void 0, args).locale || locale;\n return this._exist(messages[_locale], key)\n};\n\nVueI18n.prototype.te = function te (key, locale) {\n return this._te(key, this.locale, this._getMessages(), locale)\n};\n\nVueI18n.prototype.getLocaleMessage = function getLocaleMessage (locale) {\n return looseClone(this._vm.messages[locale] || {})\n};\n\nVueI18n.prototype.setLocaleMessage = function setLocaleMessage (locale, message) {\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n }\n this._vm.$set(this._vm.messages, locale, message);\n};\n\nVueI18n.prototype.mergeLocaleMessage = function mergeLocaleMessage (locale, message) {\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n }\n this._vm.$set(this._vm.messages, locale, merge(\n typeof this._vm.messages[locale] !== 'undefined' && Object.keys(this._vm.messages[locale]).length\n ? Object.assign({}, this._vm.messages[locale])\n : {},\n message\n ));\n};\n\nVueI18n.prototype.getDateTimeFormat = function getDateTimeFormat (locale) {\n return looseClone(this._vm.dateTimeFormats[locale] || {})\n};\n\nVueI18n.prototype.setDateTimeFormat = function setDateTimeFormat (locale, format) {\n this._vm.$set(this._vm.dateTimeFormats, locale, format);\n this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype.mergeDateTimeFormat = function mergeDateTimeFormat (locale, format) {\n this._vm.$set(this._vm.dateTimeFormats, locale, merge(this._vm.dateTimeFormats[locale] || {}, format));\n this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype._clearDateTimeFormat = function _clearDateTimeFormat (locale, format) {\n // eslint-disable-next-line no-autofix/prefer-const\n for (var key in format) {\n var id = locale + \"__\" + key;\n\n if (!this._dateTimeFormatters.hasOwnProperty(id)) {\n continue\n }\n\n delete this._dateTimeFormatters[id];\n }\n};\n\nVueI18n.prototype._localizeDateTime = function _localizeDateTime (\n value,\n locale,\n fallback,\n dateTimeFormats,\n key,\n options\n) {\n var _locale = locale;\n var formats = dateTimeFormats[_locale];\n\n var chain = this._getLocaleChain(locale, fallback);\n for (var i = 0; i < chain.length; i++) {\n var current = _locale;\n var step = chain[i];\n formats = dateTimeFormats[step];\n _locale = step;\n // fallback locale\n if (isNull(formats) || isNull(formats[key])) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to '\" + step + \"' datetime formats from '\" + current + \"' datetime formats.\"));\n }\n } else {\n break\n }\n }\n\n if (isNull(formats) || isNull(formats[key])) {\n return null\n } else {\n var format = formats[key];\n\n var formatter;\n if (options) {\n formatter = new Intl.DateTimeFormat(_locale, Object.assign({}, format, options));\n } else {\n var id = _locale + \"__\" + key;\n formatter = this._dateTimeFormatters[id];\n if (!formatter) {\n formatter = this._dateTimeFormatters[id] = new Intl.DateTimeFormat(_locale, format);\n }\n }\n\n return formatter.format(value)\n }\n};\n\nVueI18n.prototype._d = function _d (value, locale, key, options) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !VueI18n.availabilities.dateTimeFormat) {\n warn('Cannot format a Date value due to not supported Intl.DateTimeFormat.');\n return ''\n }\n\n if (!key) {\n var dtf = !options ? new Intl.DateTimeFormat(locale) : new Intl.DateTimeFormat(locale, options);\n return dtf.format(value)\n }\n\n var ret =\n this._localizeDateTime(value, locale, this.fallbackLocale, this._getDateTimeFormats(), key, options);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to datetime localization of root: key '\" + key + \"'.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.d(value, key, locale)\n } else {\n return ret || ''\n }\n};\n\nVueI18n.prototype.d = function d (value) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n var locale = this.locale;\n var key = null;\n var options = null;\n\n if (args.length === 1) {\n if (isString(args[0])) {\n key = args[0];\n } else if (isObject(args[0])) {\n if (args[0].locale) {\n locale = args[0].locale;\n }\n if (args[0].key) {\n key = args[0].key;\n }\n }\n\n options = Object.keys(args[0]).reduce(function (acc, key) {\n var obj;\n\n if (includes(dateTimeFormatKeys, key)) {\n return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))\n }\n return acc\n }, null);\n\n } else if (args.length === 2) {\n if (isString(args[0])) {\n key = args[0];\n }\n if (isString(args[1])) {\n locale = args[1];\n }\n }\n\n return this._d(value, locale, key, options)\n};\n\nVueI18n.prototype.getNumberFormat = function getNumberFormat (locale) {\n return looseClone(this._vm.numberFormats[locale] || {})\n};\n\nVueI18n.prototype.setNumberFormat = function setNumberFormat (locale, format) {\n this._vm.$set(this._vm.numberFormats, locale, format);\n this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype.mergeNumberFormat = function mergeNumberFormat (locale, format) {\n this._vm.$set(this._vm.numberFormats, locale, merge(this._vm.numberFormats[locale] || {}, format));\n this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype._clearNumberFormat = function _clearNumberFormat (locale, format) {\n // eslint-disable-next-line no-autofix/prefer-const\n for (var key in format) {\n var id = locale + \"__\" + key;\n\n if (!this._numberFormatters.hasOwnProperty(id)) {\n continue\n }\n\n delete this._numberFormatters[id];\n }\n};\n\nVueI18n.prototype._getNumberFormatter = function _getNumberFormatter (\n value,\n locale,\n fallback,\n numberFormats,\n key,\n options\n) {\n var _locale = locale;\n var formats = numberFormats[_locale];\n\n var chain = this._getLocaleChain(locale, fallback);\n for (var i = 0; i < chain.length; i++) {\n var current = _locale;\n var step = chain[i];\n formats = numberFormats[step];\n _locale = step;\n // fallback locale\n if (isNull(formats) || isNull(formats[key])) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to '\" + step + \"' number formats from '\" + current + \"' number formats.\"));\n }\n } else {\n break\n }\n }\n\n if (isNull(formats) || isNull(formats[key])) {\n return null\n } else {\n var format = formats[key];\n\n var formatter;\n if (options) {\n // If options specified - create one time number formatter\n formatter = new Intl.NumberFormat(_locale, Object.assign({}, format, options));\n } else {\n var id = _locale + \"__\" + key;\n formatter = this._numberFormatters[id];\n if (!formatter) {\n formatter = this._numberFormatters[id] = new Intl.NumberFormat(_locale, format);\n }\n }\n return formatter\n }\n};\n\nVueI18n.prototype._n = function _n (value, locale, key, options) {\n /* istanbul ignore if */\n if (!VueI18n.availabilities.numberFormat) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot format a Number value due to not supported Intl.NumberFormat.');\n }\n return ''\n }\n\n if (!key) {\n var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n return nf.format(value)\n }\n\n var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n var ret = formatter && formatter.format(value);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to number localization of root: key '\" + key + \"'.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.n(value, Object.assign({}, { key: key, locale: locale }, options))\n } else {\n return ret || ''\n }\n};\n\nVueI18n.prototype.n = function n (value) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n var locale = this.locale;\n var key = null;\n var options = null;\n\n if (args.length === 1) {\n if (isString(args[0])) {\n key = args[0];\n } else if (isObject(args[0])) {\n if (args[0].locale) {\n locale = args[0].locale;\n }\n if (args[0].key) {\n key = args[0].key;\n }\n\n // Filter out number format options only\n options = Object.keys(args[0]).reduce(function (acc, key) {\n var obj;\n\n if (includes(numberFormatKeys, key)) {\n return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))\n }\n return acc\n }, null);\n }\n } else if (args.length === 2) {\n if (isString(args[0])) {\n key = args[0];\n }\n if (isString(args[1])) {\n locale = args[1];\n }\n }\n\n return this._n(value, locale, key, options)\n};\n\nVueI18n.prototype._ntp = function _ntp (value, locale, key, options) {\n /* istanbul ignore if */\n if (!VueI18n.availabilities.numberFormat) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot format to parts a Number value due to not supported Intl.NumberFormat.');\n }\n return []\n }\n\n if (!key) {\n var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n return nf.formatToParts(value)\n }\n\n var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n var ret = formatter && formatter.formatToParts(value);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn((\"Fall back to format number to parts of root: key '\" + key + \"' .\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n._ntp(value, locale, key, options)\n } else {\n return ret || []\n }\n};\n\nObject.defineProperties( VueI18n.prototype, prototypeAccessors );\n\nvar availabilities;\n// $FlowFixMe\nObject.defineProperty(VueI18n, 'availabilities', {\n get: function get () {\n if (!availabilities) {\n var intlDefined = typeof Intl !== 'undefined';\n availabilities = {\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n };\n }\n\n return availabilities\n }\n});\n\nVueI18n.install = install;\nVueI18n.version = '8.28.2';\n\nexport default VueI18n;\n","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an
    element. Use the custom prop to remove this warning:\\n\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\" with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","/*!\n * Vue.js v2.7.3\n * (c) 2014-2022 Evan You\n * Released under the MIT License.\n */\nvar emptyObject = Object.freeze({});\r\nvar isArray = Array.isArray;\r\n// These helpers produce better VM code in JS engines due to their\r\n// explicitness and function inlining.\r\nfunction isUndef(v) {\r\n return v === undefined || v === null;\r\n}\r\nfunction isDef(v) {\r\n return v !== undefined && v !== null;\r\n}\r\nfunction isTrue(v) {\r\n return v === true;\r\n}\r\nfunction isFalse(v) {\r\n return v === false;\r\n}\r\n/**\r\n * Check if value is primitive.\r\n */\r\nfunction isPrimitive(value) {\r\n return (typeof value === 'string' ||\r\n typeof value === 'number' ||\r\n // $flow-disable-line\r\n typeof value === 'symbol' ||\r\n typeof value === 'boolean');\r\n}\r\nfunction isFunction(value) {\r\n return typeof value === 'function';\r\n}\r\n/**\r\n * Quick object check - this is primarily used to tell\r\n * objects from primitive values when we know the value\r\n * is a JSON-compliant type.\r\n */\r\nfunction isObject(obj) {\r\n return obj !== null && typeof obj === 'object';\r\n}\r\n/**\r\n * Get the raw type string of a value, e.g., [object Object].\r\n */\r\nvar _toString = Object.prototype.toString;\r\nfunction toRawType(value) {\r\n return _toString.call(value).slice(8, -1);\r\n}\r\n/**\r\n * Strict object type check. Only returns true\r\n * for plain JavaScript objects.\r\n */\r\nfunction isPlainObject(obj) {\r\n return _toString.call(obj) === '[object Object]';\r\n}\r\nfunction isRegExp(v) {\r\n return _toString.call(v) === '[object RegExp]';\r\n}\r\n/**\r\n * Check if val is a valid array index.\r\n */\r\nfunction isValidArrayIndex(val) {\r\n var n = parseFloat(String(val));\r\n return n >= 0 && Math.floor(n) === n && isFinite(val);\r\n}\r\nfunction isPromise(val) {\r\n return (isDef(val) &&\r\n typeof val.then === 'function' &&\r\n typeof val.catch === 'function');\r\n}\r\n/**\r\n * Convert a value to a string that is actually rendered.\r\n */\r\nfunction toString(val) {\r\n return val == null\r\n ? ''\r\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\r\n ? JSON.stringify(val, null, 2)\r\n : String(val);\r\n}\r\n/**\r\n * Convert an input value to a number for persistence.\r\n * If the conversion fails, return original string.\r\n */\r\nfunction toNumber(val) {\r\n var n = parseFloat(val);\r\n return isNaN(n) ? val : n;\r\n}\r\n/**\r\n * Make a map and return a function for checking if a key\r\n * is in that map.\r\n */\r\nfunction makeMap(str, expectsLowerCase) {\r\n var map = Object.create(null);\r\n var list = str.split(',');\r\n for (var i = 0; i < list.length; i++) {\r\n map[list[i]] = true;\r\n }\r\n return expectsLowerCase ? function (val) { return map[val.toLowerCase()]; } : function (val) { return map[val]; };\r\n}\r\n/**\r\n * Check if a tag is a built-in tag.\r\n */\r\nvar isBuiltInTag = makeMap('slot,component', true);\r\n/**\r\n * Check if an attribute is a reserved attribute.\r\n */\r\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\r\n/**\r\n * Remove an item from an array.\r\n */\r\nfunction remove$2(arr, item) {\r\n if (arr.length) {\r\n var index = arr.indexOf(item);\r\n if (index > -1) {\r\n return arr.splice(index, 1);\r\n }\r\n }\r\n}\r\n/**\r\n * Check whether an object has the property.\r\n */\r\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\r\nfunction hasOwn(obj, key) {\r\n return hasOwnProperty.call(obj, key);\r\n}\r\n/**\r\n * Create a cached version of a pure function.\r\n */\r\nfunction cached(fn) {\r\n var cache = Object.create(null);\r\n return function cachedFn(str) {\r\n var hit = cache[str];\r\n return hit || (cache[str] = fn(str));\r\n };\r\n}\r\n/**\r\n * Camelize a hyphen-delimited string.\r\n */\r\nvar camelizeRE = /-(\\w)/g;\r\nvar camelize = cached(function (str) {\r\n return str.replace(camelizeRE, function (_, c) { return (c ? c.toUpperCase() : ''); });\r\n});\r\n/**\r\n * Capitalize a string.\r\n */\r\nvar capitalize = cached(function (str) {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n});\r\n/**\r\n * Hyphenate a camelCase string.\r\n */\r\nvar hyphenateRE = /\\B([A-Z])/g;\r\nvar hyphenate = cached(function (str) {\r\n return str.replace(hyphenateRE, '-$1').toLowerCase();\r\n});\r\n/**\r\n * Simple bind polyfill for environments that do not support it,\r\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\r\n * since native bind is now performant enough in most browsers.\r\n * But removing it would mean breaking code that was able to run in\r\n * PhantomJS 1.x, so this must be kept for backward compatibility.\r\n */\r\n/* istanbul ignore next */\r\nfunction polyfillBind(fn, ctx) {\r\n function boundFn(a) {\r\n var l = arguments.length;\r\n return l\r\n ? l > 1\r\n ? fn.apply(ctx, arguments)\r\n : fn.call(ctx, a)\r\n : fn.call(ctx);\r\n }\r\n boundFn._length = fn.length;\r\n return boundFn;\r\n}\r\nfunction nativeBind(fn, ctx) {\r\n return fn.bind(ctx);\r\n}\r\n// @ts-expect-error bind cannot be `undefined`\r\nvar bind = Function.prototype.bind ? nativeBind : polyfillBind;\r\n/**\r\n * Convert an Array-like object to a real Array.\r\n */\r\nfunction toArray(list, start) {\r\n start = start || 0;\r\n var i = list.length - start;\r\n var ret = new Array(i);\r\n while (i--) {\r\n ret[i] = list[i + start];\r\n }\r\n return ret;\r\n}\r\n/**\r\n * Mix properties into target object.\r\n */\r\nfunction extend(to, _from) {\r\n for (var key in _from) {\r\n to[key] = _from[key];\r\n }\r\n return to;\r\n}\r\n/**\r\n * Merge an Array of Objects into a single Object.\r\n */\r\nfunction toObject(arr) {\r\n var res = {};\r\n for (var i = 0; i < arr.length; i++) {\r\n if (arr[i]) {\r\n extend(res, arr[i]);\r\n }\r\n }\r\n return res;\r\n}\r\n/* eslint-disable no-unused-vars */\r\n/**\r\n * Perform no operation.\r\n * Stubbing args to make Flow happy without leaving useless transpiled code\r\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\r\n */\r\nfunction noop(a, b, c) { }\r\n/**\r\n * Always return false.\r\n */\r\nvar no = function (a, b, c) { return false; };\r\n/* eslint-enable no-unused-vars */\r\n/**\r\n * Return the same value.\r\n */\r\nvar identity = function (_) { return _; };\r\n/**\r\n * Check if two values are loosely equal - that is,\r\n * if they are plain objects, do they have the same shape?\r\n */\r\nfunction looseEqual(a, b) {\r\n if (a === b)\r\n return true;\r\n var isObjectA = isObject(a);\r\n var isObjectB = isObject(b);\r\n if (isObjectA && isObjectB) {\r\n try {\r\n var isArrayA = Array.isArray(a);\r\n var isArrayB = Array.isArray(b);\r\n if (isArrayA && isArrayB) {\r\n return (a.length === b.length &&\r\n a.every(function (e, i) {\r\n return looseEqual(e, b[i]);\r\n }));\r\n }\r\n else if (a instanceof Date && b instanceof Date) {\r\n return a.getTime() === b.getTime();\r\n }\r\n else if (!isArrayA && !isArrayB) {\r\n var keysA = Object.keys(a);\r\n var keysB = Object.keys(b);\r\n return (keysA.length === keysB.length &&\r\n keysA.every(function (key) {\r\n return looseEqual(a[key], b[key]);\r\n }));\r\n }\r\n else {\r\n /* istanbul ignore next */\r\n return false;\r\n }\r\n }\r\n catch (e) {\r\n /* istanbul ignore next */\r\n return false;\r\n }\r\n }\r\n else if (!isObjectA && !isObjectB) {\r\n return String(a) === String(b);\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Return the first index at which a loosely equal value can be\r\n * found in the array (if value is a plain object, the array must\r\n * contain an object of the same shape), or -1 if it is not present.\r\n */\r\nfunction looseIndexOf(arr, val) {\r\n for (var i = 0; i < arr.length; i++) {\r\n if (looseEqual(arr[i], val))\r\n return i;\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Ensure a function is called only once.\r\n */\r\nfunction once(fn) {\r\n var called = false;\r\n return function () {\r\n if (!called) {\r\n called = true;\r\n fn.apply(this, arguments);\r\n }\r\n };\r\n}\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill\r\nfunction hasChanged(x, y) {\r\n if (x === y) {\r\n return x === 0 && 1 / x !== 1 / y;\r\n }\r\n else {\r\n return x === x || y === y;\r\n }\r\n}\n\nvar SSR_ATTR = 'data-server-rendered';\r\nvar ASSET_TYPES = ['component', 'directive', 'filter'];\r\nvar LIFECYCLE_HOOKS = [\r\n 'beforeCreate',\r\n 'created',\r\n 'beforeMount',\r\n 'mounted',\r\n 'beforeUpdate',\r\n 'updated',\r\n 'beforeDestroy',\r\n 'destroyed',\r\n 'activated',\r\n 'deactivated',\r\n 'errorCaptured',\r\n 'serverPrefetch',\r\n 'renderTracked',\r\n 'renderTriggered'\r\n];\n\nvar config = {\r\n /**\r\n * Option merge strategies (used in core/util/options)\r\n */\r\n // $flow-disable-line\r\n optionMergeStrategies: Object.create(null),\r\n /**\r\n * Whether to suppress warnings.\r\n */\r\n silent: false,\r\n /**\r\n * Show production mode tip message on boot?\r\n */\r\n productionTip: process.env.NODE_ENV !== 'production',\r\n /**\r\n * Whether to enable devtools\r\n */\r\n devtools: process.env.NODE_ENV !== 'production',\r\n /**\r\n * Whether to record perf\r\n */\r\n performance: false,\r\n /**\r\n * Error handler for watcher errors\r\n */\r\n errorHandler: null,\r\n /**\r\n * Warn handler for watcher warns\r\n */\r\n warnHandler: null,\r\n /**\r\n * Ignore certain custom elements\r\n */\r\n ignoredElements: [],\r\n /**\r\n * Custom user key aliases for v-on\r\n */\r\n // $flow-disable-line\r\n keyCodes: Object.create(null),\r\n /**\r\n * Check if a tag is reserved so that it cannot be registered as a\r\n * component. This is platform-dependent and may be overwritten.\r\n */\r\n isReservedTag: no,\r\n /**\r\n * Check if an attribute is reserved so that it cannot be used as a component\r\n * prop. This is platform-dependent and may be overwritten.\r\n */\r\n isReservedAttr: no,\r\n /**\r\n * Check if a tag is an unknown element.\r\n * Platform-dependent.\r\n */\r\n isUnknownElement: no,\r\n /**\r\n * Get the namespace of an element\r\n */\r\n getTagNamespace: noop,\r\n /**\r\n * Parse the real tag name for the specific platform.\r\n */\r\n parsePlatformTagName: identity,\r\n /**\r\n * Check if an attribute must be bound using property, e.g. value\r\n * Platform-dependent.\r\n */\r\n mustUseProp: no,\r\n /**\r\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\r\n * This will significantly reduce performance if set to false.\r\n */\r\n async: true,\r\n /**\r\n * Exposed for legacy reasons\r\n */\r\n _lifecycleHooks: LIFECYCLE_HOOKS\r\n};\n\n/**\r\n * unicode letters used for parsing html tags, component names and property paths.\r\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\r\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\r\n */\r\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\r\n/**\r\n * Check if a string starts with $ or _\r\n */\r\nfunction isReserved(str) {\r\n var c = (str + '').charCodeAt(0);\r\n return c === 0x24 || c === 0x5f;\r\n}\r\n/**\r\n * Define a property.\r\n */\r\nfunction def(obj, key, val, enumerable) {\r\n Object.defineProperty(obj, key, {\r\n value: val,\r\n enumerable: !!enumerable,\r\n writable: true,\r\n configurable: true\r\n });\r\n}\r\n/**\r\n * Parse simple path.\r\n */\r\nvar bailRE = new RegExp(\"[^\".concat(unicodeRegExp.source, \".$_\\\\d]\"));\r\nfunction parsePath(path) {\r\n if (bailRE.test(path)) {\r\n return;\r\n }\r\n var segments = path.split('.');\r\n return function (obj) {\r\n for (var i = 0; i < segments.length; i++) {\r\n if (!obj)\r\n return;\r\n obj = obj[segments[i]];\r\n }\r\n return obj;\r\n };\r\n}\n\n// can we use __proto__?\r\nvar hasProto = '__proto__' in {};\r\n// Browser environment sniffing\r\nvar inBrowser = typeof window !== 'undefined';\r\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\r\nvar isIE = UA && /msie|trident/.test(UA);\r\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\r\nvar isEdge = UA && UA.indexOf('edge/') > 0;\r\nUA && UA.indexOf('android') > 0;\r\nvar isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);\r\nUA && /chrome\\/\\d+/.test(UA) && !isEdge;\r\nUA && /phantomjs/.test(UA);\r\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\r\n// Firefox has a \"watch\" function on Object.prototype...\r\n// @ts-expect-error firebox support\r\nvar nativeWatch = {}.watch;\r\nvar supportsPassive = false;\r\nif (inBrowser) {\r\n try {\r\n var opts = {};\r\n Object.defineProperty(opts, 'passive', {\r\n get: function () {\r\n /* istanbul ignore next */\r\n supportsPassive = true;\r\n }\r\n }); // https://github.com/facebook/flow/issues/285\r\n window.addEventListener('test-passive', null, opts);\r\n }\r\n catch (e) { }\r\n}\r\n// this needs to be lazy-evaled because vue may be required before\r\n// vue-server-renderer can set VUE_ENV\r\nvar _isServer;\r\nvar isServerRendering = function () {\r\n if (_isServer === undefined) {\r\n /* istanbul ignore if */\r\n if (!inBrowser && typeof global !== 'undefined') {\r\n // detect presence of vue-server-renderer and avoid\r\n // Webpack shimming the process\r\n _isServer =\r\n global['process'] && global['process'].env.VUE_ENV === 'server';\r\n }\r\n else {\r\n _isServer = false;\r\n }\r\n }\r\n return _isServer;\r\n};\r\n// detect devtools\r\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\r\n/* istanbul ignore next */\r\nfunction isNative(Ctor) {\r\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString());\r\n}\r\nvar hasSymbol = typeof Symbol !== 'undefined' &&\r\n isNative(Symbol) &&\r\n typeof Reflect !== 'undefined' &&\r\n isNative(Reflect.ownKeys);\r\nvar _Set; // $flow-disable-line\r\n/* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) {\r\n // use native Set when available.\r\n _Set = Set;\r\n}\r\nelse {\r\n // a non-standard Set polyfill that only works with primitive keys.\r\n _Set = /** @class */ (function () {\r\n function Set() {\r\n this.set = Object.create(null);\r\n }\r\n Set.prototype.has = function (key) {\r\n return this.set[key] === true;\r\n };\r\n Set.prototype.add = function (key) {\r\n this.set[key] = true;\r\n };\r\n Set.prototype.clear = function () {\r\n this.set = Object.create(null);\r\n };\r\n return Set;\r\n }());\r\n}\n\nvar currentInstance = null;\r\n/**\r\n * This is exposed for compatibility with v3 (e.g. some functions in VueUse\r\n * relies on it). Do not use this internally, just use `currentInstance`.\r\n *\r\n * @internal this function needs manual type declaration because it relies\r\n * on previously manually authored types from Vue 2\r\n */\r\nfunction getCurrentInstance() {\r\n return currentInstance && { proxy: currentInstance };\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction setCurrentInstance(vm) {\r\n if (vm === void 0) { vm = null; }\r\n if (!vm)\r\n currentInstance && currentInstance._scope.off();\r\n currentInstance = vm;\r\n vm && vm._scope.on();\r\n}\n\nvar warn = noop;\r\nvar tip = noop;\r\nvar generateComponentTrace; // work around flow check\r\nvar formatComponentName;\r\nif (process.env.NODE_ENV !== 'production') {\r\n var hasConsole_1 = typeof console !== 'undefined';\r\n var classifyRE_1 = /(?:^|[-_])(\\w)/g;\r\n var classify_1 = function (str) {\r\n return str.replace(classifyRE_1, function (c) { return c.toUpperCase(); }).replace(/[-_]/g, '');\r\n };\r\n warn = function (msg, vm) {\r\n if (vm === void 0) { vm = currentInstance; }\r\n var trace = vm ? generateComponentTrace(vm) : '';\r\n if (config.warnHandler) {\r\n config.warnHandler.call(null, msg, vm, trace);\r\n }\r\n else if (hasConsole_1 && !config.silent) {\r\n console.error(\"[Vue warn]: \".concat(msg).concat(trace));\r\n }\r\n };\r\n tip = function (msg, vm) {\r\n if (hasConsole_1 && !config.silent) {\r\n console.warn(\"[Vue tip]: \".concat(msg) + (vm ? generateComponentTrace(vm) : ''));\r\n }\r\n };\r\n formatComponentName = function (vm, includeFile) {\r\n if (vm.$root === vm) {\r\n return '';\r\n }\r\n var options = isFunction(vm) && vm.cid != null\r\n ? vm.options\r\n : vm._isVue\r\n ? vm.$options || vm.constructor.options\r\n : vm;\r\n var name = options.name || options._componentTag;\r\n var file = options.__file;\r\n if (!name && file) {\r\n var match = file.match(/([^/\\\\]+)\\.vue$/);\r\n name = match && match[1];\r\n }\r\n return ((name ? \"<\".concat(classify_1(name), \">\") : \"\") +\r\n (file && includeFile !== false ? \" at \".concat(file) : ''));\r\n };\r\n var repeat_1 = function (str, n) {\r\n var res = '';\r\n while (n) {\r\n if (n % 2 === 1)\r\n res += str;\r\n if (n > 1)\r\n str += str;\r\n n >>= 1;\r\n }\r\n return res;\r\n };\r\n generateComponentTrace = function (vm) {\r\n if (vm._isVue && vm.$parent) {\r\n var tree = [];\r\n var currentRecursiveSequence = 0;\r\n while (vm) {\r\n if (tree.length > 0) {\r\n var last = tree[tree.length - 1];\r\n if (last.constructor === vm.constructor) {\r\n currentRecursiveSequence++;\r\n vm = vm.$parent;\r\n continue;\r\n }\r\n else if (currentRecursiveSequence > 0) {\r\n tree[tree.length - 1] = [last, currentRecursiveSequence];\r\n currentRecursiveSequence = 0;\r\n }\r\n }\r\n tree.push(vm);\r\n vm = vm.$parent;\r\n }\r\n return ('\\n\\nfound in\\n\\n' +\r\n tree\r\n .map(function (vm, i) {\r\n return \"\".concat(i === 0 ? '---> ' : repeat_1(' ', 5 + i * 2)).concat(isArray(vm)\r\n ? \"\".concat(formatComponentName(vm[0]), \"... (\").concat(vm[1], \" recursive calls)\")\r\n : formatComponentName(vm));\r\n })\r\n .join('\\n'));\r\n }\r\n else {\r\n return \"\\n\\n(found in \".concat(formatComponentName(vm), \")\");\r\n }\r\n };\r\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\nvar uid$2 = 0;\r\n/**\r\n * A dep is an observable that can have multiple\r\n * directives subscribing to it.\r\n * @internal\r\n */\r\nvar Dep = /** @class */ (function () {\r\n function Dep() {\r\n this.id = uid$2++;\r\n this.subs = [];\r\n }\r\n Dep.prototype.addSub = function (sub) {\r\n this.subs.push(sub);\r\n };\r\n Dep.prototype.removeSub = function (sub) {\r\n remove$2(this.subs, sub);\r\n };\r\n Dep.prototype.depend = function (info) {\r\n if (Dep.target) {\r\n Dep.target.addDep(this);\r\n if (process.env.NODE_ENV !== 'production' && info && Dep.target.onTrack) {\r\n Dep.target.onTrack(__assign({ effect: Dep.target }, info));\r\n }\r\n }\r\n };\r\n Dep.prototype.notify = function (info) {\r\n // stabilize the subscriber list first\r\n var subs = this.subs.slice();\r\n if (process.env.NODE_ENV !== 'production' && !config.async) {\r\n // subs aren't sorted in scheduler if not running async\r\n // we need to sort them now to make sure they fire in correct\r\n // order\r\n subs.sort(function (a, b) { return a.id - b.id; });\r\n }\r\n for (var i = 0, l = subs.length; i < l; i++) {\r\n if (process.env.NODE_ENV !== 'production' && info) {\r\n var sub = subs[i];\r\n sub.onTrigger &&\r\n sub.onTrigger(__assign({ effect: subs[i] }, info));\r\n }\r\n subs[i].update();\r\n }\r\n };\r\n return Dep;\r\n}());\r\n// The current target watcher being evaluated.\r\n// This is globally unique because only one watcher\r\n// can be evaluated at a time.\r\nDep.target = null;\r\nvar targetStack = [];\r\nfunction pushTarget(target) {\r\n targetStack.push(target);\r\n Dep.target = target;\r\n}\r\nfunction popTarget() {\r\n targetStack.pop();\r\n Dep.target = targetStack[targetStack.length - 1];\r\n}\n\n/**\r\n * @internal\r\n */\r\nvar VNode = /** @class */ (function () {\r\n function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {\r\n this.tag = tag;\r\n this.data = data;\r\n this.children = children;\r\n this.text = text;\r\n this.elm = elm;\r\n this.ns = undefined;\r\n this.context = context;\r\n this.fnContext = undefined;\r\n this.fnOptions = undefined;\r\n this.fnScopeId = undefined;\r\n this.key = data && data.key;\r\n this.componentOptions = componentOptions;\r\n this.componentInstance = undefined;\r\n this.parent = undefined;\r\n this.raw = false;\r\n this.isStatic = false;\r\n this.isRootInsert = true;\r\n this.isComment = false;\r\n this.isCloned = false;\r\n this.isOnce = false;\r\n this.asyncFactory = asyncFactory;\r\n this.asyncMeta = undefined;\r\n this.isAsyncPlaceholder = false;\r\n }\r\n Object.defineProperty(VNode.prototype, \"child\", {\r\n // DEPRECATED: alias for componentInstance for backwards compat.\r\n /* istanbul ignore next */\r\n get: function () {\r\n return this.componentInstance;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return VNode;\r\n}());\r\nvar createEmptyVNode = function (text) {\r\n if (text === void 0) { text = ''; }\r\n var node = new VNode();\r\n node.text = text;\r\n node.isComment = true;\r\n return node;\r\n};\r\nfunction createTextVNode(val) {\r\n return new VNode(undefined, undefined, undefined, String(val));\r\n}\r\n// optimized shallow clone\r\n// used for static nodes and slot nodes because they may be reused across\r\n// multiple renders, cloning them avoids errors when DOM manipulations rely\r\n// on their elm reference.\r\nfunction cloneVNode(vnode) {\r\n var cloned = new VNode(vnode.tag, vnode.data, \r\n // #7975\r\n // clone children array to avoid mutating original in case of cloning\r\n // a child.\r\n vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);\r\n cloned.ns = vnode.ns;\r\n cloned.isStatic = vnode.isStatic;\r\n cloned.key = vnode.key;\r\n cloned.isComment = vnode.isComment;\r\n cloned.fnContext = vnode.fnContext;\r\n cloned.fnOptions = vnode.fnOptions;\r\n cloned.fnScopeId = vnode.fnScopeId;\r\n cloned.asyncMeta = vnode.asyncMeta;\r\n cloned.isCloned = true;\r\n return cloned;\r\n}\n\n/*\r\n * not type checking this file because flow doesn't play well with\r\n * dynamically accessing methods on Array prototype\r\n */\r\nvar arrayProto = Array.prototype;\r\nvar arrayMethods = Object.create(arrayProto);\r\nvar methodsToPatch = [\r\n 'push',\r\n 'pop',\r\n 'shift',\r\n 'unshift',\r\n 'splice',\r\n 'sort',\r\n 'reverse'\r\n];\r\n/**\r\n * Intercept mutating methods and emit events\r\n */\r\nmethodsToPatch.forEach(function (method) {\r\n // cache original method\r\n var original = arrayProto[method];\r\n def(arrayMethods, method, function mutator() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var result = original.apply(this, args);\r\n var ob = this.__ob__;\r\n var inserted;\r\n switch (method) {\r\n case 'push':\r\n case 'unshift':\r\n inserted = args;\r\n break;\r\n case 'splice':\r\n inserted = args.slice(2);\r\n break;\r\n }\r\n if (inserted)\r\n ob.observeArray(inserted);\r\n // notify change\r\n if (process.env.NODE_ENV !== 'production') {\r\n ob.dep.notify({\r\n type: \"array mutation\" /* TriggerOpTypes.ARRAY_MUTATION */,\r\n target: this,\r\n key: method\r\n });\r\n }\r\n else {\r\n ob.dep.notify();\r\n }\r\n return result;\r\n });\r\n});\n\nfunction reactive(target) {\r\n makeReactive(target, false);\r\n return target;\r\n}\r\n/**\r\n * Return a shallowly-reactive copy of the original object, where only the root\r\n * level properties are reactive. It also does not auto-unwrap refs (even at the\r\n * root level).\r\n */\r\nfunction shallowReactive(target) {\r\n makeReactive(target, true);\r\n def(target, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\r\n return target;\r\n}\r\nfunction makeReactive(target, shallow) {\r\n // if trying to observe a readonly proxy, return the readonly version.\r\n if (!isReadonly(target)) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (isArray(target)) {\r\n warn(\"Avoid using Array as root value for \".concat(shallow ? \"shallowReactive()\" : \"reactive()\", \" as it cannot be tracked in watch() or watchEffect(). Use \").concat(shallow ? \"shallowRef()\" : \"ref()\", \" instead. This is a Vue-2-only limitation.\"));\r\n }\r\n var existingOb = target && target.__ob__;\r\n if (existingOb && existingOb.shallow !== shallow) {\r\n warn(\"Target is already a \".concat(existingOb.shallow ? \"\" : \"non-\", \"shallow reactive object, and cannot be converted to \").concat(shallow ? \"\" : \"non-\", \"shallow.\"));\r\n }\r\n }\r\n var ob = observe(target, shallow, isServerRendering() /* ssr mock reactivity */);\r\n if (process.env.NODE_ENV !== 'production' && !ob) {\r\n if (target == null || isPrimitive(target)) {\r\n warn(\"value cannot be made reactive: \".concat(String(target)));\r\n }\r\n if (isCollectionType(target)) {\r\n warn(\"Vue 2 does not support reactive collection types such as Map or Set.\");\r\n }\r\n }\r\n }\r\n}\r\nfunction isReactive(value) {\r\n if (isReadonly(value)) {\r\n return isReactive(value[\"__v_raw\" /* ReactiveFlags.RAW */]);\r\n }\r\n return !!(value && value.__ob__);\r\n}\r\nfunction isShallow(value) {\r\n return !!(value && value.__v_isShallow);\r\n}\r\nfunction isReadonly(value) {\r\n return !!(value && value.__v_isReadonly);\r\n}\r\nfunction isProxy(value) {\r\n return isReactive(value) || isReadonly(value);\r\n}\r\nfunction toRaw(observed) {\r\n var raw = observed && observed[\"__v_raw\" /* ReactiveFlags.RAW */];\r\n return raw ? toRaw(raw) : observed;\r\n}\r\nfunction markRaw(value) {\r\n def(value, \"__v_skip\" /* ReactiveFlags.SKIP */, true);\r\n return value;\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction isCollectionType(value) {\r\n var type = toRawType(value);\r\n return (type === 'Map' || type === 'WeakMap' || type === 'Set' || type === 'WeakSet');\r\n}\n\n/**\r\n * @internal\r\n */\r\nvar RefFlag = \"__v_isRef\";\r\nfunction isRef(r) {\r\n return !!(r && r.__v_isRef === true);\r\n}\r\nfunction ref$1(value) {\r\n return createRef(value, false);\r\n}\r\nfunction shallowRef(value) {\r\n return createRef(value, true);\r\n}\r\nfunction createRef(rawValue, shallow) {\r\n if (isRef(rawValue)) {\r\n return rawValue;\r\n }\r\n var ref = {};\r\n def(ref, RefFlag, true);\r\n def(ref, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\r\n def(ref, 'dep', defineReactive(ref, 'value', rawValue, null, shallow, isServerRendering()));\r\n return ref;\r\n}\r\nfunction triggerRef(ref) {\r\n if (process.env.NODE_ENV !== 'production' && !ref.dep) {\r\n warn(\"received object is not a triggerable ref.\");\r\n }\r\n if (process.env.NODE_ENV !== 'production') {\r\n ref.dep &&\r\n ref.dep.notify({\r\n type: \"set\" /* TriggerOpTypes.SET */,\r\n target: ref,\r\n key: 'value'\r\n });\r\n }\r\n else {\r\n ref.dep && ref.dep.notify();\r\n }\r\n}\r\nfunction unref(ref) {\r\n return isRef(ref) ? ref.value : ref;\r\n}\r\nfunction proxyRefs(objectWithRefs) {\r\n if (isReactive(objectWithRefs)) {\r\n return objectWithRefs;\r\n }\r\n var proxy = {};\r\n var keys = Object.keys(objectWithRefs);\r\n for (var i = 0; i < keys.length; i++) {\r\n proxyWithRefUnwrap(proxy, objectWithRefs, keys[i]);\r\n }\r\n return proxy;\r\n}\r\nfunction proxyWithRefUnwrap(target, source, key) {\r\n Object.defineProperty(target, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: function () { return unref(source[key]); },\r\n set: function (value) {\r\n var oldValue = source[key];\r\n if (isRef(oldValue) && !isRef(value)) {\r\n oldValue.value = value;\r\n }\r\n else {\r\n source[key] = value;\r\n }\r\n }\r\n });\r\n}\r\nfunction customRef(factory) {\r\n var dep = new Dep();\r\n var _a = factory(function () {\r\n if (process.env.NODE_ENV !== 'production') {\r\n dep.depend({\r\n target: ref,\r\n type: \"get\" /* TrackOpTypes.GET */,\r\n key: 'value'\r\n });\r\n }\r\n else {\r\n dep.depend();\r\n }\r\n }, function () {\r\n if (process.env.NODE_ENV !== 'production') {\r\n dep.notify({\r\n target: ref,\r\n type: \"set\" /* TriggerOpTypes.SET */,\r\n key: 'value'\r\n });\r\n }\r\n else {\r\n dep.notify();\r\n }\r\n }), get = _a.get, set = _a.set;\r\n var ref = {\r\n get value() {\r\n return get();\r\n },\r\n set value(newVal) {\r\n set(newVal);\r\n }\r\n };\r\n def(ref, RefFlag, true);\r\n return ref;\r\n}\r\nfunction toRefs(object) {\r\n if (process.env.NODE_ENV !== 'production' && !isReactive(object)) {\r\n warn(\"toRefs() expects a reactive object but received a plain one.\");\r\n }\r\n var ret = isArray(object) ? new Array(object.length) : {};\r\n for (var key in object) {\r\n ret[key] = toRef(object, key);\r\n }\r\n return ret;\r\n}\r\nfunction toRef(object, key, defaultValue) {\r\n var val = object[key];\r\n if (isRef(val)) {\r\n return val;\r\n }\r\n var ref = {\r\n get value() {\r\n var val = object[key];\r\n return val === undefined ? defaultValue : val;\r\n },\r\n set value(newVal) {\r\n object[key] = newVal;\r\n }\r\n };\r\n def(ref, RefFlag, true);\r\n return ref;\r\n}\n\nvar rawToReadonlyFlag = \"__v_rawToReadonly\";\r\nvar rawToShallowReadonlyFlag = \"__v_rawToShallowReadonly\";\r\nfunction readonly(target) {\r\n return createReadonly(target, false);\r\n}\r\nfunction createReadonly(target, shallow) {\r\n if (!isPlainObject(target)) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (isArray(target)) {\r\n warn(\"Vue 2 does not support readonly arrays.\");\r\n }\r\n else if (isCollectionType(target)) {\r\n warn(\"Vue 2 does not support readonly collection types such as Map or Set.\");\r\n }\r\n else {\r\n warn(\"value cannot be made readonly: \".concat(typeof target));\r\n }\r\n }\r\n return target;\r\n }\r\n // already a readonly object\r\n if (isReadonly(target)) {\r\n return target;\r\n }\r\n // already has a readonly proxy\r\n var existingFlag = shallow ? rawToShallowReadonlyFlag : rawToReadonlyFlag;\r\n var existingProxy = target[existingFlag];\r\n if (existingProxy) {\r\n return existingProxy;\r\n }\r\n var proxy = Object.create(Object.getPrototypeOf(target));\r\n def(target, existingFlag, proxy);\r\n def(proxy, \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */, true);\r\n def(proxy, \"__v_raw\" /* ReactiveFlags.RAW */, target);\r\n if (isRef(target)) {\r\n def(proxy, RefFlag, true);\r\n }\r\n if (shallow || isShallow(target)) {\r\n def(proxy, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\r\n }\r\n var keys = Object.keys(target);\r\n for (var i = 0; i < keys.length; i++) {\r\n defineReadonlyProperty(proxy, target, keys[i], shallow);\r\n }\r\n return proxy;\r\n}\r\nfunction defineReadonlyProperty(proxy, target, key, shallow) {\r\n Object.defineProperty(proxy, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: function () {\r\n var val = target[key];\r\n return shallow || !isPlainObject(val) ? val : readonly(val);\r\n },\r\n set: function () {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\r\n }\r\n });\r\n}\r\n/**\r\n * Returns a reactive-copy of the original object, where only the root level\r\n * properties are readonly, and does NOT unwrap refs nor recursively convert\r\n * returned properties.\r\n * This is used for creating the props proxy object for stateful components.\r\n */\r\nfunction shallowReadonly(target) {\r\n return createReadonly(target, true);\r\n}\n\nvar seenObjects = new _Set();\r\n/**\r\n * Recursively traverse an object to evoke all converted\r\n * getters, so that every nested property inside the object\r\n * is collected as a \"deep\" dependency.\r\n */\r\nfunction traverse(val) {\r\n _traverse(val, seenObjects);\r\n seenObjects.clear();\r\n return val;\r\n}\r\nfunction _traverse(val, seen) {\r\n var i, keys;\r\n var isA = isArray(val);\r\n if ((!isA && !isObject(val)) ||\r\n Object.isFrozen(val) ||\r\n val instanceof VNode) {\r\n return;\r\n }\r\n if (val.__ob__) {\r\n var depId = val.__ob__.dep.id;\r\n if (seen.has(depId)) {\r\n return;\r\n }\r\n seen.add(depId);\r\n }\r\n if (isA) {\r\n i = val.length;\r\n while (i--)\r\n _traverse(val[i], seen);\r\n }\r\n else {\r\n keys = Object.keys(val);\r\n i = keys.length;\r\n while (i--)\r\n _traverse(val[keys[i]], seen);\r\n }\r\n}\n\nvar mark;\r\nvar measure;\r\nif (process.env.NODE_ENV !== 'production') {\r\n var perf_1 = inBrowser && window.performance;\r\n /* istanbul ignore if */\r\n if (perf_1 &&\r\n // @ts-ignore\r\n perf_1.mark &&\r\n // @ts-ignore\r\n perf_1.measure &&\r\n // @ts-ignore\r\n perf_1.clearMarks &&\r\n // @ts-ignore\r\n perf_1.clearMeasures) {\r\n mark = function (tag) { return perf_1.mark(tag); };\r\n measure = function (name, startTag, endTag) {\r\n perf_1.measure(name, startTag, endTag);\r\n perf_1.clearMarks(startTag);\r\n perf_1.clearMarks(endTag);\r\n // perf.clearMeasures(name)\r\n };\r\n }\r\n}\n\nvar normalizeEvent = cached(function (name) {\r\n var passive = name.charAt(0) === '&';\r\n name = passive ? name.slice(1) : name;\r\n var once = name.charAt(0) === '~'; // Prefixed last, checked first\r\n name = once ? name.slice(1) : name;\r\n var capture = name.charAt(0) === '!';\r\n name = capture ? name.slice(1) : name;\r\n return {\r\n name: name,\r\n once: once,\r\n capture: capture,\r\n passive: passive\r\n };\r\n});\r\nfunction createFnInvoker(fns, vm) {\r\n function invoker() {\r\n var fns = invoker.fns;\r\n if (isArray(fns)) {\r\n var cloned = fns.slice();\r\n for (var i = 0; i < cloned.length; i++) {\r\n invokeWithErrorHandling(cloned[i], null, arguments, vm, \"v-on handler\");\r\n }\r\n }\r\n else {\r\n // return handler return value for single handlers\r\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\");\r\n }\r\n }\r\n invoker.fns = fns;\r\n return invoker;\r\n}\r\nfunction updateListeners(on, oldOn, add, remove, createOnceHandler, vm) {\r\n var name, cur, old, event;\r\n for (name in on) {\r\n cur = on[name];\r\n old = oldOn[name];\r\n event = normalizeEvent(name);\r\n if (isUndef(cur)) {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn(\"Invalid handler for event \\\"\".concat(event.name, \"\\\": got \") + String(cur), vm);\r\n }\r\n else if (isUndef(old)) {\r\n if (isUndef(cur.fns)) {\r\n cur = on[name] = createFnInvoker(cur, vm);\r\n }\r\n if (isTrue(event.once)) {\r\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\r\n }\r\n add(event.name, cur, event.capture, event.passive, event.params);\r\n }\r\n else if (cur !== old) {\r\n old.fns = cur;\r\n on[name] = old;\r\n }\r\n }\r\n for (name in oldOn) {\r\n if (isUndef(on[name])) {\r\n event = normalizeEvent(name);\r\n remove(event.name, oldOn[name], event.capture);\r\n }\r\n }\r\n}\n\nfunction mergeVNodeHook(def, hookKey, hook) {\r\n if (def instanceof VNode) {\r\n def = def.data.hook || (def.data.hook = {});\r\n }\r\n var invoker;\r\n var oldHook = def[hookKey];\r\n function wrappedHook() {\r\n hook.apply(this, arguments);\r\n // important: remove merged hook to ensure it's called only once\r\n // and prevent memory leak\r\n remove$2(invoker.fns, wrappedHook);\r\n }\r\n if (isUndef(oldHook)) {\r\n // no existing hook\r\n invoker = createFnInvoker([wrappedHook]);\r\n }\r\n else {\r\n /* istanbul ignore if */\r\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\r\n // already a merged invoker\r\n invoker = oldHook;\r\n invoker.fns.push(wrappedHook);\r\n }\r\n else {\r\n // existing plain hook\r\n invoker = createFnInvoker([oldHook, wrappedHook]);\r\n }\r\n }\r\n invoker.merged = true;\r\n def[hookKey] = invoker;\r\n}\n\nfunction extractPropsFromVNodeData(data, Ctor, tag) {\r\n // we are only extracting raw values here.\r\n // validation and default values are handled in the child\r\n // component itself.\r\n var propOptions = Ctor.options.props;\r\n if (isUndef(propOptions)) {\r\n return;\r\n }\r\n var res = {};\r\n var attrs = data.attrs, props = data.props;\r\n if (isDef(attrs) || isDef(props)) {\r\n for (var key in propOptions) {\r\n var altKey = hyphenate(key);\r\n if (process.env.NODE_ENV !== 'production') {\r\n var keyInLowerCase = key.toLowerCase();\r\n if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) {\r\n tip(\"Prop \\\"\".concat(keyInLowerCase, \"\\\" is passed to component \") +\r\n \"\".concat(formatComponentName(\r\n // @ts-expect-error tag is string\r\n tag || Ctor), \", but the declared prop name is\") +\r\n \" \\\"\".concat(key, \"\\\". \") +\r\n \"Note that HTML attributes are case-insensitive and camelCased \" +\r\n \"props need to use their kebab-case equivalents when using in-DOM \" +\r\n \"templates. You should probably use \\\"\".concat(altKey, \"\\\" instead of \\\"\").concat(key, \"\\\".\"));\r\n }\r\n }\r\n checkProp(res, props, key, altKey, true) ||\r\n checkProp(res, attrs, key, altKey, false);\r\n }\r\n }\r\n return res;\r\n}\r\nfunction checkProp(res, hash, key, altKey, preserve) {\r\n if (isDef(hash)) {\r\n if (hasOwn(hash, key)) {\r\n res[key] = hash[key];\r\n if (!preserve) {\r\n delete hash[key];\r\n }\r\n return true;\r\n }\r\n else if (hasOwn(hash, altKey)) {\r\n res[key] = hash[altKey];\r\n if (!preserve) {\r\n delete hash[altKey];\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\n\n// The template compiler attempts to minimize the need for normalization by\r\n// statically analyzing the template at compile time.\r\n//\r\n// For plain HTML markup, normalization can be completely skipped because the\r\n// generated render function is guaranteed to return Array. There are\r\n// two cases where extra normalization is needed:\r\n// 1. When the children contains components - because a functional component\r\n// may return an Array instead of a single root. In this case, just a simple\r\n// normalization is needed - if any child is an Array, we flatten the whole\r\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\r\n// because functional components already normalize their own children.\r\nfunction simpleNormalizeChildren(children) {\r\n for (var i = 0; i < children.length; i++) {\r\n if (isArray(children[i])) {\r\n return Array.prototype.concat.apply([], children);\r\n }\r\n }\r\n return children;\r\n}\r\n// 2. When the children contains constructs that always generated nested Arrays,\r\n// e.g.